@plotday/twister 0.28.0 → 0.30.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 (174) hide show
  1. package/bin/commands/deploy.js +1 -1
  2. package/bin/commands/deploy.js.map +1 -1
  3. package/dist/common/calendar.d.ts +24 -15
  4. package/dist/common/calendar.d.ts.map +1 -1
  5. package/dist/common/messaging.d.ts +17 -13
  6. package/dist/common/messaging.d.ts.map +1 -1
  7. package/dist/common/projects.d.ts +23 -18
  8. package/dist/common/projects.d.ts.map +1 -1
  9. package/dist/docs/assets/hierarchy.js +1 -1
  10. package/dist/docs/assets/navigation.js +1 -1
  11. package/dist/docs/assets/search.js +1 -1
  12. package/dist/docs/classes/tool.ITool.html +1 -1
  13. package/dist/docs/classes/tool.Tool.html +34 -35
  14. package/dist/docs/classes/tools_ai.AI.html +1 -1
  15. package/dist/docs/classes/tools_callbacks.Callbacks.html +21 -12
  16. package/dist/docs/classes/tools_integrations.Integrations.html +6 -6
  17. package/dist/docs/classes/tools_network.Network.html +12 -12
  18. package/dist/docs/classes/tools_plot.Plot.html +40 -30
  19. package/dist/docs/classes/tools_store.Store.html +29 -18
  20. package/dist/docs/classes/tools_tasks.Tasks.html +5 -5
  21. package/dist/docs/classes/tools_twists.Twists.html +1 -1
  22. package/dist/docs/classes/twist.Twist.html +39 -27
  23. package/dist/docs/enums/plot.ActivityLinkType.html +5 -5
  24. package/dist/docs/enums/plot.ActivityType.html +4 -4
  25. package/dist/docs/enums/plot.ActorType.html +4 -4
  26. package/dist/docs/enums/plot.ConferencingProvider.html +6 -6
  27. package/dist/docs/enums/tools_integrations.AuthLevel.html +3 -3
  28. package/dist/docs/enums/tools_integrations.AuthProvider.html +11 -11
  29. package/dist/docs/enums/tools_plot.ActivityAccess.html +3 -3
  30. package/dist/docs/enums/tools_plot.ContactAccess.html +3 -3
  31. package/dist/docs/enums/tools_plot.PriorityAccess.html +3 -3
  32. package/dist/docs/hierarchy.html +1 -1
  33. package/dist/docs/interfaces/tools_ai.AIResponse.html +2 -2
  34. package/dist/docs/interfaces/tools_ai.FilePart.html +2 -2
  35. package/dist/docs/interfaces/tools_ai.ImagePart.html +2 -2
  36. package/dist/docs/interfaces/utils_types.ToolShed.html +5 -5
  37. package/dist/docs/modules/common_calendar.html +1 -1
  38. package/dist/docs/modules/index.html +1 -1
  39. package/dist/docs/modules/plot.html +1 -1
  40. package/dist/docs/modules/tools_callbacks.html +1 -1
  41. package/dist/docs/modules/utils_types.html +1 -1
  42. package/dist/docs/{interfaces → types}/common_calendar.Calendar.html +2 -2
  43. package/dist/docs/types/common_calendar.CalendarTool.html +71 -0
  44. package/dist/docs/{interfaces → types}/common_calendar.SyncOptions.html +2 -2
  45. package/dist/docs/types/index.Serializable.html +17 -0
  46. package/dist/docs/types/plot.Activity.html +1 -1
  47. package/dist/docs/types/plot.ActivityCommon.html +8 -10
  48. package/dist/docs/types/plot.ActivityLink.html +1 -1
  49. package/dist/docs/types/plot.ActivityMeta.html +5 -3
  50. package/dist/docs/types/plot.ActivityUpdate.html +2 -2
  51. package/dist/docs/types/plot.ActivityWithNotes.html +1 -1
  52. package/dist/docs/types/plot.Actor.html +15 -5
  53. package/dist/docs/types/plot.ActorId.html +1 -1
  54. package/dist/docs/types/plot.ContentType.html +1 -1
  55. package/dist/docs/types/plot.NewActivity.html +1 -1
  56. package/dist/docs/types/plot.NewActivityWithNotes.html +1 -1
  57. package/dist/docs/types/plot.NewActor.html +1 -1
  58. package/dist/docs/types/plot.NewContact.html +4 -4
  59. package/dist/docs/types/plot.NewNote.html +1 -1
  60. package/dist/docs/types/plot.NewPriority.html +15 -5
  61. package/dist/docs/types/plot.NewTags.html +1 -1
  62. package/dist/docs/types/plot.Note.html +1 -1
  63. package/dist/docs/types/plot.NoteUpdate.html +2 -2
  64. package/dist/docs/types/plot.PickPriorityConfig.html +3 -3
  65. package/dist/docs/types/plot.Priority.html +9 -4
  66. package/dist/docs/types/plot.PriorityUpdate.html +3 -0
  67. package/dist/docs/types/plot.SyncUpdate.html +1 -1
  68. package/dist/docs/types/plot.Tags.html +1 -1
  69. package/dist/docs/types/tools_callbacks.Callback.html +3 -2
  70. package/dist/docs/types/tools_integrations.AuthToken.html +4 -4
  71. package/dist/docs/types/tools_integrations.Authorization.html +4 -4
  72. package/dist/docs/types/tools_network.WebhookRequest.html +6 -6
  73. package/dist/docs/types/tools_plot.NoteIntentHandler.html +4 -4
  74. package/dist/docs/types/utils_types.BuiltInTools.html +2 -2
  75. package/dist/docs/types/utils_types.ExtractBuildReturn.html +1 -1
  76. package/dist/docs/types/utils_types.InferOptions.html +1 -1
  77. package/dist/docs/types/utils_types.InferTools.html +1 -1
  78. package/dist/docs/types/utils_types.JSONValue.html +7 -0
  79. package/dist/docs/types/utils_types.PromiseValues.html +1 -1
  80. package/dist/docs/types/utils_types.ToolBuilder.html +1 -1
  81. package/dist/index.d.ts +1 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +1 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/llm-docs/common/calendar.d.ts +1 -1
  86. package/dist/llm-docs/common/calendar.d.ts.map +1 -1
  87. package/dist/llm-docs/common/calendar.js +1 -1
  88. package/dist/llm-docs/common/calendar.js.map +1 -1
  89. package/dist/llm-docs/common/messaging.d.ts +1 -1
  90. package/dist/llm-docs/common/messaging.d.ts.map +1 -1
  91. package/dist/llm-docs/common/messaging.js +1 -1
  92. package/dist/llm-docs/common/messaging.js.map +1 -1
  93. package/dist/llm-docs/common/projects.d.ts +1 -1
  94. package/dist/llm-docs/common/projects.d.ts.map +1 -1
  95. package/dist/llm-docs/common/projects.js +1 -1
  96. package/dist/llm-docs/common/projects.js.map +1 -1
  97. package/dist/llm-docs/plot.d.ts +1 -1
  98. package/dist/llm-docs/plot.d.ts.map +1 -1
  99. package/dist/llm-docs/plot.js +1 -1
  100. package/dist/llm-docs/plot.js.map +1 -1
  101. package/dist/llm-docs/tool.d.ts +1 -1
  102. package/dist/llm-docs/tool.d.ts.map +1 -1
  103. package/dist/llm-docs/tool.js +1 -1
  104. package/dist/llm-docs/tool.js.map +1 -1
  105. package/dist/llm-docs/tools/callbacks.d.ts +1 -1
  106. package/dist/llm-docs/tools/callbacks.d.ts.map +1 -1
  107. package/dist/llm-docs/tools/callbacks.js +1 -1
  108. package/dist/llm-docs/tools/callbacks.js.map +1 -1
  109. package/dist/llm-docs/tools/integrations.d.ts +1 -1
  110. package/dist/llm-docs/tools/integrations.d.ts.map +1 -1
  111. package/dist/llm-docs/tools/integrations.js +1 -1
  112. package/dist/llm-docs/tools/integrations.js.map +1 -1
  113. package/dist/llm-docs/tools/network.d.ts +1 -1
  114. package/dist/llm-docs/tools/network.d.ts.map +1 -1
  115. package/dist/llm-docs/tools/network.js +1 -1
  116. package/dist/llm-docs/tools/network.js.map +1 -1
  117. package/dist/llm-docs/tools/plot.d.ts +1 -1
  118. package/dist/llm-docs/tools/plot.d.ts.map +1 -1
  119. package/dist/llm-docs/tools/plot.js +1 -1
  120. package/dist/llm-docs/tools/plot.js.map +1 -1
  121. package/dist/llm-docs/tools/store.d.ts +1 -1
  122. package/dist/llm-docs/tools/store.d.ts.map +1 -1
  123. package/dist/llm-docs/tools/store.js +1 -1
  124. package/dist/llm-docs/tools/store.js.map +1 -1
  125. package/dist/llm-docs/tools/tasks.d.ts +1 -1
  126. package/dist/llm-docs/tools/tasks.d.ts.map +1 -1
  127. package/dist/llm-docs/tools/tasks.js +1 -1
  128. package/dist/llm-docs/tools/tasks.js.map +1 -1
  129. package/dist/llm-docs/twist.d.ts +1 -1
  130. package/dist/llm-docs/twist.d.ts.map +1 -1
  131. package/dist/llm-docs/twist.js +1 -1
  132. package/dist/llm-docs/twist.js.map +1 -1
  133. package/dist/plot.d.ts +125 -16
  134. package/dist/plot.d.ts.map +1 -1
  135. package/dist/plot.js.map +1 -1
  136. package/dist/tool.d.ts +28 -20
  137. package/dist/tool.d.ts.map +1 -1
  138. package/dist/tool.js +25 -17
  139. package/dist/tool.js.map +1 -1
  140. package/dist/tools/callbacks.d.ts +10 -8
  141. package/dist/tools/callbacks.d.ts.map +1 -1
  142. package/dist/tools/callbacks.js.map +1 -1
  143. package/dist/tools/integrations.d.ts +3 -4
  144. package/dist/tools/integrations.d.ts.map +1 -1
  145. package/dist/tools/integrations.js.map +1 -1
  146. package/dist/tools/network.d.ts +20 -17
  147. package/dist/tools/network.d.ts.map +1 -1
  148. package/dist/tools/network.js +6 -4
  149. package/dist/tools/network.js.map +1 -1
  150. package/dist/tools/plot.d.ts +91 -24
  151. package/dist/tools/plot.d.ts.map +1 -1
  152. package/dist/tools/plot.js +45 -0
  153. package/dist/tools/plot.js.map +1 -1
  154. package/dist/tools/store.d.ts +43 -18
  155. package/dist/tools/store.d.ts.map +1 -1
  156. package/dist/tools/store.js +12 -1
  157. package/dist/tools/store.js.map +1 -1
  158. package/dist/tools/tasks.d.ts +4 -4
  159. package/dist/tools/tasks.js +4 -4
  160. package/dist/twist.d.ts +45 -12
  161. package/dist/twist.d.ts.map +1 -1
  162. package/dist/twist.js +40 -6
  163. package/dist/twist.js.map +1 -1
  164. package/dist/utils/serializable.d.ts +40 -0
  165. package/dist/utils/serializable.d.ts.map +1 -0
  166. package/dist/utils/serializable.js +2 -0
  167. package/dist/utils/serializable.js.map +1 -0
  168. package/dist/utils/types.d.ts +18 -16
  169. package/dist/utils/types.d.ts.map +1 -1
  170. package/package.json +1 -1
  171. package/dist/docs/interfaces/common_calendar.CalendarTool.html +0 -65
  172. package/dist/docs/types/utils_types.CallbackMethods.html +0 -3
  173. package/dist/docs/types/utils_types.NoFunctions.html +0 -3
  174. package/dist/docs/types/utils_types.NonFunction.html +0 -2
@@ -1,2 +1,2 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ExtractBuildReturn | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">ExtractBuildReturn</a></li></ul><h1>Type Alias ExtractBuildReturn&lt;T&gt;</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">ExtractBuildReturn</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">build</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">[]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-keyword">infer</span> <span class="tsd-kind-type-parameter">R</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">R</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{}</span></div><div class="tsd-comment tsd-typography"><p>Extracts the return type from an instance build method.</p>
2
- </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L30">utils/types.ts:30</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
2
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L32">utils/types.ts:32</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,2 +1,2 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>InferOptions | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">InferOptions</a></li></ul><h1>Type Alias InferOptions&lt;T&gt;</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">InferOptions</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">Options</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-keyword">infer</span> <span class="tsd-kind-type-parameter">O</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">O</span> <span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">unknown</span></div><div class="tsd-comment tsd-typography"><p>Infers the options type from a constructor's second parameter.</p>
2
- </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L54">utils/types.ts:54</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
2
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L56">utils/types.ts:56</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,3 +1,3 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>InferTools | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">InferTools</a></li></ul><h1>Type Alias InferTools&lt;T&gt;</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">InferTools</span><span class="tsd-signature-symbol">:</span> <a href="utils_types.PromiseValues.html" class="tsd-signature-type tsd-kind-type-alias">PromiseValues</a><span class="tsd-signature-symbol">&lt;</span><a href="utils_types.ExtractBuildReturn.html" class="tsd-signature-type tsd-kind-type-alias">ExtractBuildReturn</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">&amp;</span> <a href="utils_types.BuiltInTools.html" class="tsd-signature-type tsd-kind-type-alias">BuiltInTools</a></div><div class="tsd-comment tsd-typography"><p>Infers the complete set of tools available to an twist or tool,
2
2
  combining tools declared in build with built-in tools.</p>
3
- </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L49">utils/types.ts:49</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
3
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L51">utils/types.ts:51</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -0,0 +1,7 @@
1
+ <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>JSONValue | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">JSONValue</a></li></ul><h1>Type Alias JSONValue</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">JSONValue</span><span class="tsd-signature-symbol">:</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">string</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">boolean</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">null</span><br/>    <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-signature-symbol">[</span><span class="tsd-kind-index-signature">key</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">]:</span> <a href="" class="tsd-signature-type tsd-kind-type-alias">JSONValue</a> <span class="tsd-signature-symbol">}</span><br/>    <span class="tsd-signature-symbol">|</span> <a href="" class="tsd-signature-type tsd-kind-type-alias">JSONValue</a><span class="tsd-signature-symbol">[]</span></div><div class="tsd-comment tsd-typography"><p>Represents a valid JSON value.</p>
2
+ <p>This type ensures type safety for data that needs to be serialized to JSON,
3
+ such as metadata fields, webhook payloads, and stored data.</p>
4
+ </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="typescript"><span class="hl-4">const</span><span class="hl-1"> </span><span class="hl-8">meta</span><span class="hl-1">: </span><span class="hl-5">JSONValue</span><span class="hl-1"> = {</span><br/><span class="hl-1"> </span><span class="hl-2">name:</span><span class="hl-1"> </span><span class="hl-3">&quot;Example&quot;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">count:</span><span class="hl-1"> </span><span class="hl-14">42</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-2">tags:</span><span class="hl-1"> [</span><span class="hl-3">&quot;foo&quot;</span><span class="hl-1">, </span><span class="hl-3">&quot;bar&quot;</span><span class="hl-1">],</span><br/><span class="hl-1"> </span><span class="hl-2">nested:</span><span class="hl-1"> { </span><span class="hl-2">value:</span><span class="hl-1"> </span><span class="hl-4">true</span><span class="hl-1"> }</span><br/><span class="hl-1">};</span>
5
+ </code><button type="button">Copy</button></pre>
6
+
7
+ </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L117">utils/types.ts:117</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,3 +1,3 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>PromiseValues | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">PromiseValues</a></li></ul><h1>Type Alias PromiseValues&lt;T&gt;</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">PromiseValues</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-signature-symbol">[</span><span class="tsd-kind-type-parameter">K</span> <span class="tsd-signature-keyword">in</span> <span class="tsd-signature-keyword">keyof</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type tsd-kind-type-parameter">K</span><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-keyword">infer</span> <span class="tsd-kind-type-parameter">U</span><span class="tsd-signature-symbol">&gt;</span> <span class="tsd-signature-symbol">?</span> <span class="tsd-signature-type tsd-kind-type-parameter">U</span> <span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#t">T</a><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type tsd-kind-type-parameter">K</span><span class="tsd-signature-symbol">]</span> <span class="tsd-signature-symbol">}</span></div><div class="tsd-comment tsd-typography"><p>Unwraps Promise types to their resolved values.
2
2
  Converts { foo: Promise<string> } to { foo: string }</p>
3
- </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L23">utils/types.ts:23</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
3
+ </div><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="t"><span class="tsd-kind-type-parameter">T</span></span></li></ul></section><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L25">utils/types.ts:25</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
@@ -1,3 +1,3 @@
1
1
  <!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>ToolBuilder | Creating Plot Twists</title><link rel="icon" href="../assets/favicon.svg" type="image/svg+xml"/><meta name="description" content="Documentation for Creating Plot Twists"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="/" class="title">Creating Plot Twists</a><div id="tsd-toolbar-links"><a href="https://plot.day">Plot</a><a href="https://github.com/plotday/plot">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister">NPM</a></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../modules/utils_types.html">utils/types</a></li><li><a href="" aria-current="page">ToolBuilder</a></li></ul><h1>Type Alias ToolBuilder</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">ToolBuilder</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-keyword">abstract</span> <span class="tsd-signature-keyword">new</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">ToolClass</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="utils_types.InferOptions.html" class="tsd-signature-type tsd-kind-type-alias">InferOptions</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">InstanceType</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></div><div class="tsd-comment tsd-typography"><p>Function type for building tool dependencies.
2
2
  Used in build methods to request tool instances.</p>
3
- </div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-keyword">abstract</span> <span class="tsd-signature-keyword">new</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">ToolClass</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="utils_types.InferOptions.html" class="tsd-signature-type tsd-kind-type-alias">InferOptions</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">InstanceType</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="__typetc"><span class="tsd-kind-type-parameter">TC</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-keyword">abstract</span> <span class="tsd-signature-keyword">new</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">any</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">ToolClass</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">options</span>: <a href="utils_types.InferOptions.html" class="tsd-signature-type tsd-kind-type-alias">InferOptions</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">InstanceType</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L64">utils/types.ts:64</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
3
+ </div><div class="tsd-type-declaration"><h4>Type Declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-keyword">abstract</span> <span class="tsd-signature-keyword">new</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">(</span><br/>    <span class="tsd-kind-parameter">ToolClass</span><span class="tsd-signature-symbol">:</span> <a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">,</span><br/>    <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="utils_types.InferOptions.html" class="tsd-signature-type tsd-kind-type-alias">InferOptions</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">InstanceType</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></li><li class="tsd-description"><section class="tsd-panel"><h4>Type Parameters</h4><ul class="tsd-type-parameter-list"><li><span id="__typetc"><span class="tsd-kind-type-parameter">TC</span> <span class="tsd-signature-keyword">extends</span> <span class="tsd-signature-keyword">abstract</span> <span class="tsd-signature-keyword">new</span> <span class="tsd-signature-symbol">(</span><span class="tsd-signature-symbol">...</span><span class="tsd-kind-parameter">args</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">any</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">any</span></span></li></ul></section><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">ToolClass</span>: <a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a></span></li><li><span><code class="tsd-tag">Optional</code><span class="tsd-kind-parameter">options</span>: <a href="utils_types.InferOptions.html" class="tsd-signature-type tsd-kind-type-alias">InferOptions</a><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">InstanceType</span><span class="tsd-signature-symbol">&lt;</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#__typetc">TC</a><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></h4></li></ul></li></ul></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/plotday/plot/blob/main/twist/twister/src/utils/types.ts#L66">utils/types.ts:66</a></li></ul></aside></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav id="tsd-sidebar-links" class="tsd-navigation"><a href="https://plot.day" class="tsd-nav-link">Plot</a><a href="https://github.com/plotday/plot" class="tsd-nav-link">GitHub</a><a href="https://www.npmjs.com/package/@plotday/twister" class="tsd-nav-link">NPM</a></nav><nav class="tsd-navigation"><a href="../modules.html">Creating Plot Twists</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
package/dist/index.d.ts CHANGED
@@ -3,5 +3,6 @@ export * from "./plot";
3
3
  export * from "./tag";
4
4
  export * from "./tool";
5
5
  export * from "./tools";
6
+ export * from "./utils/types";
6
7
  export { getBuilderDocumentation } from "./creator-docs";
7
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -3,5 +3,6 @@ export * from "./plot";
3
3
  export * from "./tag";
4
4
  export * from "./tool";
5
5
  export * from "./tools";
6
+ export * from "./utils/types";
6
7
  export { getBuilderDocumentation } from "./creator-docs";
7
8
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -4,6 +4,6 @@
4
4
  * This file is auto-generated during build. Do not edit manually.
5
5
  * Generated from: prebuild.ts
6
6
  */
7
- declare const _default: "import type { ActivityLink, NewActivityWithNotes, SyncUpdate } from \"../index\";\n\n/**\n * Represents successful calendar authorization.\n *\n * Returned by calendar tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * calendar operations.\n */\nexport type CalendarAuth = {\n /** Opaque token for calendar operations */\n authToken: string;\n};\n\n/**\n * Represents a calendar from an external calendar service.\n *\n * Contains metadata about a specific calendar that can be synced\n * with Plot. Different calendar providers may have additional\n * provider-specific properties.\n */\nexport interface Calendar {\n /** Unique identifier for the calendar within the provider */\n id: string;\n /** Human-readable name of the calendar */\n name: string;\n /** Optional description or additional details about the calendar */\n description: string | null;\n /** Whether this is the user's primary/default calendar */\n primary: boolean;\n}\n\n/**\n * Configuration options for calendar synchronization.\n *\n * Controls the time range and other parameters for calendar sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface SyncOptions {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n /** Latest date to sync events to (exclusive) */\n timeMax?: Date;\n}\n\n/**\n * Base interface for calendar integration tools.\n *\n * Defines the standard operations that all calendar tools must implement\n * to integrate with external calendar services like Google Calendar,\n * Outlook Calendar, etc.\n *\n * **Implementation Pattern:**\n * 1. Request an ActivityLink for authorization\n * 2. Create an Activity with the ActivityLink to prompt user\n * 3. Receive a CalendarAuth in the specified callback\n * 4. Fetch list of available calendars\n * 5. Start sync for selected calendars\n * 6. Process incoming events via callbacks\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source and Note.key for automatic upserts without manual ID tracking.\n * See SYNC_STRATEGIES.md for detailed patterns and when to use alternative approaches.\n *\n * @example\n * ```typescript\n * // Typical calendar integration flow using source/key upserts\n * class MyCalendarTwist extends Twist {\n * private googleCalendar: GoogleCalendar;\n *\n * async activate() {\n * // Step 1: Request authorization\n * const authLink = await this.googleCalendar.requestAuth(\"onAuthComplete\");\n * await this.plot.createActivity({\n * type: ActivityType.Action,\n * title: \"Connect Google Calendar\",\n * links: [authLink],\n * });\n * }\n *\n * async onAuthComplete(auth: CalendarAuth) {\n * // Step 2: Get available calendars\n * const calendars = await this.googleCalendar.getCalendars(auth.authToken);\n *\n * // Step 3: Start sync for primary calendar\n * const primaryCalendar = calendars.find(c => c.primary);\n * if (primaryCalendar) {\n * await this.googleCalendar.startSync(\n * auth.authToken,\n * primaryCalendar.id,\n * \"onCalendarEvent\"\n * );\n * }\n * }\n *\n * async onCalendarEvent(\n * syncUpdate: SyncUpdate,\n * syncMeta: { initialSync: boolean }\n * ) {\n * // Step 4: Process synced events using source/key pattern\n * // The sync update will automatically use the event's URL as the source\n * // for deduplication - no manual ID tracking needed\n * await this.plot.createActivity(syncUpdate);\n * }\n * }\n * ```\n */\nexport interface CalendarTool {\n /**\n * Initiates the authorization flow for the calendar service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: CalendarAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of calendars accessible to the authenticated user.\n *\n * Returns metadata for all calendars the user has access to, including\n * their primary calendar and any shared calendars. This list can be\n * presented to users for calendar selection.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available calendars\n * @throws When the auth token is invalid or expired\n */\n getCalendars(authToken: string): Promise<Calendar[]>;\n\n /**\n * Begins synchronizing events from a specific calendar.\n *\n * Sets up real-time sync for the specified calendar, including initial\n * event import and ongoing change notifications. The callback function\n * will be invoked for each synced event.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the event's canonical URL (e.g., event.htmlLink)\n * - Use Note.key for event details (description, attendees, etc.) to enable upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all events (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per event\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced event\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n * @throws When auth token is invalid or calendar doesn't exist\n */\n startSync<\n TCallback extends (\n syncUpdate: SyncUpdate,\n ...args: any[]\n ) => any\n >(\n authToken: string,\n calendarId: string,\n callback: TCallback,\n ...extraArgs: TCallback extends (\n syncUpdate: any,\n ...rest: infer R\n ) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing events from a specific calendar.\n *\n * Disables real-time sync and cleans up any webhooks or polling\n * mechanisms for the specified calendar. No further events will\n * be synced after this call.\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, calendarId: string): Promise<void>;\n}\n";
7
+ declare const _default: "import type { ActivityLink, Serializable, SyncUpdate } from \"../index\";\n\n/**\n * Represents successful calendar authorization.\n *\n * Returned by calendar tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * calendar operations.\n */\nexport type CalendarAuth = {\n /** Opaque token for calendar operations */\n authToken: string;\n};\n\n/**\n * Represents a calendar from an external calendar service.\n *\n * Contains metadata about a specific calendar that can be synced\n * with Plot. Different calendar providers may have additional\n * provider-specific properties.\n */\nexport type Calendar = {\n /** Unique identifier for the calendar within the provider */\n id: string;\n /** Human-readable name of the calendar */\n name: string;\n /** Optional description or additional details about the calendar */\n description: string | null;\n /** Whether this is the user's primary/default calendar */\n primary: boolean;\n};\n\n/**\n * Configuration options for calendar synchronization.\n *\n * Controls the time range and other parameters for calendar sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type SyncOptions = {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n /** Latest date to sync events to (exclusive) */\n timeMax?: Date;\n};\n\n/**\n * Base interface for calendar integration tools.\n *\n * Defines the standard operations that all calendar tools must implement\n * to integrate with external calendar services like Google Calendar,\n * Outlook Calendar, etc.\n *\n * **Implementation Pattern:**\n * 1. Request an ActivityLink for authorization\n * 2. Create an Activity with the ActivityLink to prompt user\n * 3. Receive a CalendarAuth in the specified callback\n * 4. Fetch list of available calendars\n * 5. Start sync for selected calendars\n * 6. Process incoming events via callbacks\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source and Note.key for automatic upserts without manual ID tracking.\n * See SYNC_STRATEGIES.md for detailed patterns and when to use alternative approaches.\n *\n * @example\n * ```typescript\n * // Typical calendar integration flow using source/key upserts\n * class MyCalendarTwist extends Twist {\n * private googleCalendar: GoogleCalendar;\n *\n * async activate() {\n * // Step 1: Request authorization\n * const authLink = await this.googleCalendar.requestAuth(\"onAuthComplete\");\n * await this.plot.createActivity({\n * type: ActivityType.Action,\n * title: \"Connect Google Calendar\",\n * links: [authLink],\n * });\n * }\n *\n * async onAuthComplete(auth: CalendarAuth) {\n * // Step 2: Get available calendars\n * const calendars = await this.googleCalendar.getCalendars(auth.authToken);\n *\n * // Step 3: Start sync for primary calendar\n * const primaryCalendar = calendars.find(c => c.primary);\n * if (primaryCalendar) {\n * await this.googleCalendar.startSync(\n * {\n * authToken: auth.authToken,\n * calendarId: primaryCalendar.id\n * },\n * this.onCalendarEvent,\n * { initialSync: true }\n * );\n * }\n * }\n *\n * async onCalendarEvent(\n * syncUpdate: SyncUpdate,\n * syncMeta: { initialSync: boolean }\n * ) {\n * // Step 4: Process synced events using source/key pattern\n * // The sync update will automatically use the event's URL as the source\n * // for deduplication - no manual ID tracking needed\n * await this.plot.createActivity(syncUpdate);\n * }\n * }\n * ```\n */\nexport type CalendarTool = {\n /**\n * Initiates the authorization flow for the calendar service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: CalendarAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of calendars accessible to the authenticated user.\n *\n * Returns metadata for all calendars the user has access to, including\n * their primary calendar and any shared calendars. This list can be\n * presented to users for calendar selection.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available calendars\n * @throws When the auth token is invalid or expired\n */\n getCalendars(authToken: string): Promise<Calendar[]>;\n\n /**\n * Begins synchronizing events from a specific calendar.\n *\n * Sets up real-time sync for the specified calendar, including initial\n * event import and ongoing change notifications. The callback function\n * will be invoked for each synced event.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the event's canonical URL (e.g., event.htmlLink)\n * - Use Note.key for event details (description, attendees, etc.) to enable upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all events (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per event\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for calendar access\n * @param options.calendarId - ID of the calendar to sync\n * @param options.timeMin - Earliest date to sync events from (inclusive)\n * @param options.timeMax - Latest date to sync events to (exclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced event\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n * @throws When auth token is invalid or calendar doesn't exist\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n calendarId: string;\n } & SyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing events from a specific calendar.\n *\n * Disables real-time sync and cleans up any webhooks or polling\n * mechanisms for the specified calendar. No further events will\n * be synced after this call.\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, calendarId: string): Promise<void>;\n};\n";
8
8
  export default _default;
9
9
  //# sourceMappingURL=calendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,k3NAAk3N;AAAj4N,wBAAk4N"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,umOAAumO;AAAtnO,wBAAunO"}
@@ -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 type { ActivityLink, NewActivityWithNotes, SyncUpdate } from \"../index\";\n\n/**\n * Represents successful calendar authorization.\n *\n * Returned by calendar tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * calendar operations.\n */\nexport type CalendarAuth = {\n /** Opaque token for calendar operations */\n authToken: string;\n};\n\n/**\n * Represents a calendar from an external calendar service.\n *\n * Contains metadata about a specific calendar that can be synced\n * with Plot. Different calendar providers may have additional\n * provider-specific properties.\n */\nexport interface Calendar {\n /** Unique identifier for the calendar within the provider */\n id: string;\n /** Human-readable name of the calendar */\n name: string;\n /** Optional description or additional details about the calendar */\n description: string | null;\n /** Whether this is the user's primary/default calendar */\n primary: boolean;\n}\n\n/**\n * Configuration options for calendar synchronization.\n *\n * Controls the time range and other parameters for calendar sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface SyncOptions {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n /** Latest date to sync events to (exclusive) */\n timeMax?: Date;\n}\n\n/**\n * Base interface for calendar integration tools.\n *\n * Defines the standard operations that all calendar tools must implement\n * to integrate with external calendar services like Google Calendar,\n * Outlook Calendar, etc.\n *\n * **Implementation Pattern:**\n * 1. Request an ActivityLink for authorization\n * 2. Create an Activity with the ActivityLink to prompt user\n * 3. Receive a CalendarAuth in the specified callback\n * 4. Fetch list of available calendars\n * 5. Start sync for selected calendars\n * 6. Process incoming events via callbacks\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source and Note.key for automatic upserts without manual ID tracking.\n * See SYNC_STRATEGIES.md for detailed patterns and when to use alternative approaches.\n *\n * @example\n * ```typescript\n * // Typical calendar integration flow using source/key upserts\n * class MyCalendarTwist extends Twist {\n * private googleCalendar: GoogleCalendar;\n *\n * async activate() {\n * // Step 1: Request authorization\n * const authLink = await this.googleCalendar.requestAuth(\"onAuthComplete\");\n * await this.plot.createActivity({\n * type: ActivityType.Action,\n * title: \"Connect Google Calendar\",\n * links: [authLink],\n * });\n * }\n *\n * async onAuthComplete(auth: CalendarAuth) {\n * // Step 2: Get available calendars\n * const calendars = await this.googleCalendar.getCalendars(auth.authToken);\n *\n * // Step 3: Start sync for primary calendar\n * const primaryCalendar = calendars.find(c => c.primary);\n * if (primaryCalendar) {\n * await this.googleCalendar.startSync(\n * auth.authToken,\n * primaryCalendar.id,\n * \"onCalendarEvent\"\n * );\n * }\n * }\n *\n * async onCalendarEvent(\n * syncUpdate: SyncUpdate,\n * syncMeta: { initialSync: boolean }\n * ) {\n * // Step 4: Process synced events using source/key pattern\n * // The sync update will automatically use the event's URL as the source\n * // for deduplication - no manual ID tracking needed\n * await this.plot.createActivity(syncUpdate);\n * }\n * }\n * ```\n */\nexport interface CalendarTool {\n /**\n * Initiates the authorization flow for the calendar service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: CalendarAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of calendars accessible to the authenticated user.\n *\n * Returns metadata for all calendars the user has access to, including\n * their primary calendar and any shared calendars. This list can be\n * presented to users for calendar selection.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available calendars\n * @throws When the auth token is invalid or expired\n */\n getCalendars(authToken: string): Promise<Calendar[]>;\n\n /**\n * Begins synchronizing events from a specific calendar.\n *\n * Sets up real-time sync for the specified calendar, including initial\n * event import and ongoing change notifications. The callback function\n * will be invoked for each synced event.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the event's canonical URL (e.g., event.htmlLink)\n * - Use Note.key for event details (description, attendees, etc.) to enable upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all events (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per event\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced event\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n * @throws When auth token is invalid or calendar doesn't exist\n */\n startSync<\n TCallback extends (\n syncUpdate: SyncUpdate,\n ...args: any[]\n ) => any\n >(\n authToken: string,\n calendarId: string,\n callback: TCallback,\n ...extraArgs: TCallback extends (\n syncUpdate: any,\n ...rest: infer R\n ) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing events from a specific calendar.\n *\n * Disables real-time sync and cleans up any webhooks or polling\n * mechanisms for the specified calendar. No further events will\n * be synced after this call.\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, calendarId: string): Promise<void>;\n}\n";
7
+ export default "import type { ActivityLink, Serializable, SyncUpdate } from \"../index\";\n\n/**\n * Represents successful calendar authorization.\n *\n * Returned by calendar tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * calendar operations.\n */\nexport type CalendarAuth = {\n /** Opaque token for calendar operations */\n authToken: string;\n};\n\n/**\n * Represents a calendar from an external calendar service.\n *\n * Contains metadata about a specific calendar that can be synced\n * with Plot. Different calendar providers may have additional\n * provider-specific properties.\n */\nexport type Calendar = {\n /** Unique identifier for the calendar within the provider */\n id: string;\n /** Human-readable name of the calendar */\n name: string;\n /** Optional description or additional details about the calendar */\n description: string | null;\n /** Whether this is the user's primary/default calendar */\n primary: boolean;\n};\n\n/**\n * Configuration options for calendar synchronization.\n *\n * Controls the time range and other parameters for calendar sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type SyncOptions = {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n /** Latest date to sync events to (exclusive) */\n timeMax?: Date;\n};\n\n/**\n * Base interface for calendar integration tools.\n *\n * Defines the standard operations that all calendar tools must implement\n * to integrate with external calendar services like Google Calendar,\n * Outlook Calendar, etc.\n *\n * **Implementation Pattern:**\n * 1. Request an ActivityLink for authorization\n * 2. Create an Activity with the ActivityLink to prompt user\n * 3. Receive a CalendarAuth in the specified callback\n * 4. Fetch list of available calendars\n * 5. Start sync for selected calendars\n * 6. Process incoming events via callbacks\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source and Note.key for automatic upserts without manual ID tracking.\n * See SYNC_STRATEGIES.md for detailed patterns and when to use alternative approaches.\n *\n * @example\n * ```typescript\n * // Typical calendar integration flow using source/key upserts\n * class MyCalendarTwist extends Twist {\n * private googleCalendar: GoogleCalendar;\n *\n * async activate() {\n * // Step 1: Request authorization\n * const authLink = await this.googleCalendar.requestAuth(\"onAuthComplete\");\n * await this.plot.createActivity({\n * type: ActivityType.Action,\n * title: \"Connect Google Calendar\",\n * links: [authLink],\n * });\n * }\n *\n * async onAuthComplete(auth: CalendarAuth) {\n * // Step 2: Get available calendars\n * const calendars = await this.googleCalendar.getCalendars(auth.authToken);\n *\n * // Step 3: Start sync for primary calendar\n * const primaryCalendar = calendars.find(c => c.primary);\n * if (primaryCalendar) {\n * await this.googleCalendar.startSync(\n * {\n * authToken: auth.authToken,\n * calendarId: primaryCalendar.id\n * },\n * this.onCalendarEvent,\n * { initialSync: true }\n * );\n * }\n * }\n *\n * async onCalendarEvent(\n * syncUpdate: SyncUpdate,\n * syncMeta: { initialSync: boolean }\n * ) {\n * // Step 4: Process synced events using source/key pattern\n * // The sync update will automatically use the event's URL as the source\n * // for deduplication - no manual ID tracking needed\n * await this.plot.createActivity(syncUpdate);\n * }\n * }\n * ```\n */\nexport type CalendarTool = {\n /**\n * Initiates the authorization flow for the calendar service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: CalendarAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of calendars accessible to the authenticated user.\n *\n * Returns metadata for all calendars the user has access to, including\n * their primary calendar and any shared calendars. This list can be\n * presented to users for calendar selection.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available calendars\n * @throws When the auth token is invalid or expired\n */\n getCalendars(authToken: string): Promise<Calendar[]>;\n\n /**\n * Begins synchronizing events from a specific calendar.\n *\n * Sets up real-time sync for the specified calendar, including initial\n * event import and ongoing change notifications. The callback function\n * will be invoked for each synced event.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the event's canonical URL (e.g., event.htmlLink)\n * - Use Note.key for event details (description, attendees, etc.) to enable upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all events (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per event\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for calendar access\n * @param options.calendarId - ID of the calendar to sync\n * @param options.timeMin - Earliest date to sync events from (inclusive)\n * @param options.timeMax - Latest date to sync events to (exclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced event\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n * @throws When auth token is invalid or calendar doesn't exist\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n calendarId: string;\n } & SyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing events from a specific calendar.\n *\n * Disables real-time sync and cleans up any webhooks or polling\n * mechanisms for the specified calendar. No further events will\n * be synced after this call.\n *\n * @param authToken - Authorization token for calendar access\n * @param calendarId - ID of the calendar to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, calendarId: string): Promise<void>;\n};\n";
8
8
  //# sourceMappingURL=calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/llm-docs/common/calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,k3NAAk3N,CAAC"}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/llm-docs/common/calendar.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,umOAAumO,CAAC"}
@@ -4,6 +4,6 @@
4
4
  * This file is auto-generated during build. Do not edit manually.
5
5
  * Generated from: prebuild.ts
6
6
  */
7
- declare const _default: "import type { ActivityLink, NewActivityWithNotes, SyncUpdate } from \"../index\";\n\n/**\n * Represents a successful messaging service authorization.\n *\n * Returned by messaging tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * messaging operations.\n */\nexport type MessagingAuth = {\n /** Opaque token for messaging operations */\n authToken: string;\n};\n\n/**\n * Represents a channel from an external messaging service.\n *\n * Contains metadata about a specific channel that can be synced\n * with Plot.\n */\nexport interface MessageChannel {\n /** Unique identifier for the channel within the provider */\n id: string;\n /** Human-readable name of the channel (e.g., \"Inbox\", \"#general\", \"My Team Thread\") */\n name: string;\n /** Optional description or additional details about the channel */\n description: string | null;\n /** Whether this is the user's primary/default channel (e.g. email inbox) */\n primary: boolean;\n}\n\n/**\n * Configuration options for messaging synchronization.\n *\n * Controls the time range and other parameters for messaging sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface MessageSyncOptions {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n}\n\n/**\n * Base interface for email and chat integration tools.\n *\n * All synced messages/emails are converted to ActivityWithNotes objects.\n * Each email thread or chat conversation becomes an Activity with Notes for each message.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (thread URL or ID) and Note.key (message ID) for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport interface MessagingTool {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: MessagingAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of conversation channels (inboxes, channels) accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available conversation channels\n */\n getChannels(authToken: string): Promise<MessageChannel[]>;\n\n /**\n * Begins synchronizing messages from a specific channel.\n *\n * Email threads and chat conversations are converted to SyncUpdate objects,\n * which can be either new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the thread/conversation URL or stable ID (e.g., \"slack:{channelId}:{threadTs}\")\n * - Use Note.key for individual messages (e.g., \"message-{messageId}\")\n * - Each message becomes a separate note with unique key for upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all threads (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per thread\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel (e.g., channel, inbox) to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced conversation\n * @param options - Optional configuration for limiting the sync scope (e.g., time range)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TCallback extends (syncUpdate: SyncUpdate, ...args: any[]) => any\n >(\n authToken: string,\n channelId: string,\n callback: TCallback,\n options?: MessageSyncOptions,\n ...extraArgs: TCallback extends (syncUpdate: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing messages from a specific channel.\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, channelId: string): Promise<void>;\n}\n";
7
+ declare const _default: "import type { ActivityLink, Serializable, SyncUpdate } from \"../index\";\n\n/**\n * Represents a successful messaging service authorization.\n *\n * Returned by messaging tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * messaging operations.\n */\nexport type MessagingAuth = {\n /** Opaque token for messaging operations */\n authToken: string;\n};\n\n/**\n * Represents a channel from an external messaging service.\n *\n * Contains metadata about a specific channel that can be synced\n * with Plot.\n */\nexport type MessageChannel = {\n /** Unique identifier for the channel within the provider */\n id: string;\n /** Human-readable name of the channel (e.g., \"Inbox\", \"#general\", \"My Team Thread\") */\n name: string;\n /** Optional description or additional details about the channel */\n description: string | null;\n /** Whether this is the user's primary/default channel (e.g. email inbox) */\n primary: boolean;\n};\n\n/**\n * Configuration options for messaging synchronization.\n *\n * Controls the time range and other parameters for messaging sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type MessageSyncOptions = {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n};\n\n/**\n * Base interface for email and chat integration tools.\n *\n * All synced messages/emails are converted to ActivityWithNotes objects.\n * Each email thread or chat conversation becomes an Activity with Notes for each message.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (thread URL or ID) and Note.key (message ID) for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport type MessagingTool = {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: MessagingAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of conversation channels (inboxes, channels) accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available conversation channels\n */\n getChannels(authToken: string): Promise<MessageChannel[]>;\n\n /**\n * Begins synchronizing messages from a specific channel.\n *\n * Email threads and chat conversations are converted to SyncUpdate objects,\n * which can be either new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the thread/conversation URL or stable ID (e.g., \"slack:{channelId}:{threadTs}\")\n * - Use Note.key for individual messages (e.g., \"message-{messageId}\")\n * - Each message becomes a separate note with unique key for upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all threads (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per thread\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for access\n * @param options.channelId - ID of the channel (e.g., channel, inbox) to sync\n * @param options.timeMin - Earliest date to sync events from (inclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced conversation\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n channelId: string;\n } & MessageSyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing messages from a specific channel.\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, channelId: string): Promise<void>;\n};\n";
8
8
  export default _default;
9
9
  //# sourceMappingURL=messaging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/messaging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,6vJAA6vJ;AAA5wJ,wBAA6wJ"}
1
+ {"version":3,"file":"messaging.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/messaging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,+vJAA+vJ;AAA9wJ,wBAA+wJ"}
@@ -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 type { ActivityLink, NewActivityWithNotes, SyncUpdate } from \"../index\";\n\n/**\n * Represents a successful messaging service authorization.\n *\n * Returned by messaging tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * messaging operations.\n */\nexport type MessagingAuth = {\n /** Opaque token for messaging operations */\n authToken: string;\n};\n\n/**\n * Represents a channel from an external messaging service.\n *\n * Contains metadata about a specific channel that can be synced\n * with Plot.\n */\nexport interface MessageChannel {\n /** Unique identifier for the channel within the provider */\n id: string;\n /** Human-readable name of the channel (e.g., \"Inbox\", \"#general\", \"My Team Thread\") */\n name: string;\n /** Optional description or additional details about the channel */\n description: string | null;\n /** Whether this is the user's primary/default channel (e.g. email inbox) */\n primary: boolean;\n}\n\n/**\n * Configuration options for messaging synchronization.\n *\n * Controls the time range and other parameters for messaging sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface MessageSyncOptions {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n}\n\n/**\n * Base interface for email and chat integration tools.\n *\n * All synced messages/emails are converted to ActivityWithNotes objects.\n * Each email thread or chat conversation becomes an Activity with Notes for each message.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (thread URL or ID) and Note.key (message ID) for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport interface MessagingTool {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: MessagingAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of conversation channels (inboxes, channels) accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available conversation channels\n */\n getChannels(authToken: string): Promise<MessageChannel[]>;\n\n /**\n * Begins synchronizing messages from a specific channel.\n *\n * Email threads and chat conversations are converted to SyncUpdate objects,\n * which can be either new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the thread/conversation URL or stable ID (e.g., \"slack:{channelId}:{threadTs}\")\n * - Use Note.key for individual messages (e.g., \"message-{messageId}\")\n * - Each message becomes a separate note with unique key for upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all threads (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per thread\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel (e.g., channel, inbox) to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced conversation\n * @param options - Optional configuration for limiting the sync scope (e.g., time range)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TCallback extends (syncUpdate: SyncUpdate, ...args: any[]) => any\n >(\n authToken: string,\n channelId: string,\n callback: TCallback,\n options?: MessageSyncOptions,\n ...extraArgs: TCallback extends (syncUpdate: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing messages from a specific channel.\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, channelId: string): Promise<void>;\n}\n";
7
+ export default "import type { ActivityLink, Serializable, SyncUpdate } from \"../index\";\n\n/**\n * Represents a successful messaging service authorization.\n *\n * Returned by messaging tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * messaging operations.\n */\nexport type MessagingAuth = {\n /** Opaque token for messaging operations */\n authToken: string;\n};\n\n/**\n * Represents a channel from an external messaging service.\n *\n * Contains metadata about a specific channel that can be synced\n * with Plot.\n */\nexport type MessageChannel = {\n /** Unique identifier for the channel within the provider */\n id: string;\n /** Human-readable name of the channel (e.g., \"Inbox\", \"#general\", \"My Team Thread\") */\n name: string;\n /** Optional description or additional details about the channel */\n description: string | null;\n /** Whether this is the user's primary/default channel (e.g. email inbox) */\n primary: boolean;\n};\n\n/**\n * Configuration options for messaging synchronization.\n *\n * Controls the time range and other parameters for messaging sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type MessageSyncOptions = {\n /** Earliest date to sync events from (inclusive) */\n timeMin?: Date;\n};\n\n/**\n * Base interface for email and chat integration tools.\n *\n * All synced messages/emails are converted to ActivityWithNotes objects.\n * Each email thread or chat conversation becomes an Activity with Notes for each message.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (thread URL or ID) and Note.key (message ID) for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport type MessagingTool = {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: MessagingAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of conversation channels (inboxes, channels) accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available conversation channels\n */\n getChannels(authToken: string): Promise<MessageChannel[]>;\n\n /**\n * Begins synchronizing messages from a specific channel.\n *\n * Email threads and chat conversations are converted to SyncUpdate objects,\n * which can be either new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the thread/conversation URL or stable ID (e.g., \"slack:{channelId}:{threadTs}\")\n * - Use Note.key for individual messages (e.g., \"message-{messageId}\")\n * - Each message becomes a separate note with unique key for upserts\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all threads (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per thread\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for access\n * @param options.channelId - ID of the channel (e.g., channel, inbox) to sync\n * @param options.timeMin - Earliest date to sync events from (inclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced conversation\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n channelId: string;\n } & MessageSyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing messages from a specific channel.\n *\n * @param authToken - Authorization token for access\n * @param channelId - ID of the channel to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, channelId: string): Promise<void>;\n};\n";
8
8
  //# sourceMappingURL=messaging.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../src/llm-docs/common/messaging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,6vJAA6vJ,CAAC"}
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../../src/llm-docs/common/messaging.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,+vJAA+vJ,CAAC"}
@@ -4,6 +4,6 @@
4
4
  * This file is auto-generated during build. Do not edit manually.
5
5
  * Generated from: prebuild.ts
6
6
  */
7
- declare const _default: "import type {\n ActivityLink,\n ActivityUpdate,\n NewActivityWithNotes,\n SyncUpdate,\n} from \"../index\";\n\n/**\n * Represents a successful project management service authorization.\n *\n * Returned by project management tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * project operations.\n */\nexport type ProjectAuth = {\n /** Opaque token for project management operations */\n authToken: string;\n};\n\n/**\n * Represents a project from an external project management service.\n *\n * Contains metadata about a specific project/board/workspace that can be synced\n * with Plot.\n */\nexport interface Project {\n /** Unique identifier for the project within the provider */\n id: string;\n /** Human-readable name of the project (e.g., \"Q1 Roadmap\", \"Engineering\") */\n name: string;\n /** Optional description or additional details about the project */\n description: string | null;\n /** Optional project key/abbreviation (e.g., \"PROJ\" in Jira, \"ENG\" in Linear) */\n key: string | null;\n}\n\n/**\n * Configuration options for project synchronization.\n *\n * Controls the time range and other parameters for project sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface ProjectSyncOptions {\n /** Earliest date to sync issues from (inclusive) */\n timeMin?: Date;\n}\n\n/**\n * Base interface for project management integration tools.\n *\n * All synced issues/tasks are converted to ActivityWithNotes objects.\n * Each issue becomes an Activity with Notes for the description and comments.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (issue URL) and Note.key for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport interface ProjectTool {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: ProjectAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of projects accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available projects\n */\n getProjects(authToken: string): Promise<Project[]>;\n\n /**\n * Begins synchronizing issues from a specific project.\n *\n * Issues and tasks are converted to SyncUpdate objects, which can be either\n * new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the issue's canonical URL (e.g., Linear issue URL, Jira issue URL)\n * - Use Note.key for issue details:\n * - key: \"description\" for issue description (upserts on changes)\n * - key: \"metadata\" for status, priority, assignee, etc.\n * - key: \"comment-{commentId}\" for individual comments (unique per comment)\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all issues (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per issue\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced issue\n * @param options - Optional configuration for limiting the sync scope (e.g., time range)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TCallback extends (\n syncUpdate: SyncUpdate,\n ...args: any[]\n ) => any\n >(\n authToken: string,\n projectId: string,\n callback: TCallback,\n options?: ProjectSyncOptions,\n ...extraArgs: TCallback extends (\n syncUpdate: any,\n ...rest: infer R\n ) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing issues from a specific project.\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, projectId: string): Promise<void>;\n\n /**\n * Updates an issue/task with new values.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync activity updates back to the external service.\n *\n * The update object contains only the fields that changed, plus id and source.\n * Uses the combination of start and done to determine workflow state:\n * - done set \u2192 Completed/Done state\n * - done null + start set \u2192 In Progress/Active state\n * - done null + start null \u2192 Backlog/Todo state\n *\n * @param authToken - Authorization token for access\n * @param update - ActivityUpdate with changed fields (includes id and source)\n * @returns Promise that resolves when the update is synced\n */\n updateIssue?(authToken: string, update: ActivityUpdate): Promise<void>;\n\n /**\n * Adds a comment to an issue/task.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync notes added to activities back as comments on the external service.\n *\n * @param authToken - Authorization token for access\n * @param issueId - ID or key of the issue/task to comment on\n * @param body - The comment text content\n * @returns Promise that resolves when the comment is added\n */\n addIssueComment?(\n authToken: string,\n issueId: string,\n body: string\n ): Promise<void>;\n}\n";
7
+ declare const _default: "import type {\n Activity,\n ActivityLink,\n ActivityMeta,\n Serializable,\n SyncUpdate,\n} from \"../index\";\n\n/**\n * Represents a successful project management service authorization.\n *\n * Returned by project management tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * project operations.\n */\nexport type ProjectAuth = {\n /** Opaque token for project management operations */\n authToken: string;\n};\n\n/**\n * Represents a project from an external project management service.\n *\n * Contains metadata about a specific project/board/workspace that can be synced\n * with Plot.\n */\nexport type Project = {\n /** Unique identifier for the project within the provider */\n id: string;\n /** Human-readable name of the project (e.g., \"Q1 Roadmap\", \"Engineering\") */\n name: string;\n /** Optional description or additional details about the project */\n description: string | null;\n /** Optional project key/abbreviation (e.g., \"PROJ\" in Jira, \"ENG\" in Linear) */\n key: string | null;\n};\n\n/**\n * Configuration options for project synchronization.\n *\n * Controls the time range and other parameters for project sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type ProjectSyncOptions = {\n /** Earliest date to sync issues from (inclusive) */\n timeMin?: Date;\n};\n\n/**\n * Base interface for project management integration tools.\n *\n * All synced issues/tasks are converted to ActivityWithNotes objects.\n * Each issue becomes an Activity with Notes for the description and comments.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (issue URL) and Note.key for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport type ProjectTool = {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: ProjectAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of projects accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available projects\n */\n getProjects(authToken: string): Promise<Project[]>;\n\n /**\n * Begins synchronizing issues from a specific project.\n *\n * Issues and tasks are converted to SyncUpdate objects, which can be either\n * new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the issue's canonical URL (e.g., Linear issue URL, Jira issue URL)\n * - Use Note.key for issue details:\n * - key: \"description\" for issue description (upserts on changes)\n * - key: \"metadata\" for status, priority, assignee, etc.\n * - key: \"comment-{commentId}\" for individual comments (unique per comment)\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all issues (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per issue\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for access\n * @param options.projectId - ID of the project to sync\n * @param options.timeMin - Earliest date to sync issues from (inclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced issue\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n projectId: string;\n } & ProjectSyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing issues from a specific project.\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, projectId: string): Promise<void>;\n\n /**\n * Updates an issue/task with new values.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync activity updates back to the external service.\n *\n * Uses the combination of start and done to determine workflow state:\n * - done set \u2192 Completed/Done state\n * - done null + start set \u2192 In Progress/Active state\n * - done null + start null \u2192 Backlog/Todo state\n *\n * @param authToken - Authorization token for access\n * @param activity - The updated activity\n * @returns Promise that resolves when the update is synced\n */\n updateIssue?(authToken: string, activity: Activity): Promise<void>;\n\n /**\n * Adds a comment to an issue/task.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync notes added to activities back as comments on the external service.\n *\n * The tool should extract its own ID from meta (e.g., linearId, taskGid, issueKey).\n *\n * @param authToken - Authorization token for access\n * @param meta - Activity metadata containing the tool's issue/task identifier\n * @param body - The comment text content\n * @returns Promise that resolves when the comment is added\n */\n addIssueComment?(\n authToken: string,\n meta: ActivityMeta,\n body: string\n ): Promise<void>;\n};\n";
8
8
  export default _default;
9
9
  //# sourceMappingURL=projects.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,upMAAwoM;AAAvpM,wBAAwpM"}
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/llm-docs/common/projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;wBAEY,gnMAAimM;AAAhnM,wBAAinM"}
@@ -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 type {\n ActivityLink,\n ActivityUpdate,\n NewActivityWithNotes,\n SyncUpdate,\n} from \"../index\";\n\n/**\n * Represents a successful project management service authorization.\n *\n * Returned by project management tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * project operations.\n */\nexport type ProjectAuth = {\n /** Opaque token for project management operations */\n authToken: string;\n};\n\n/**\n * Represents a project from an external project management service.\n *\n * Contains metadata about a specific project/board/workspace that can be synced\n * with Plot.\n */\nexport interface Project {\n /** Unique identifier for the project within the provider */\n id: string;\n /** Human-readable name of the project (e.g., \"Q1 Roadmap\", \"Engineering\") */\n name: string;\n /** Optional description or additional details about the project */\n description: string | null;\n /** Optional project key/abbreviation (e.g., \"PROJ\" in Jira, \"ENG\" in Linear) */\n key: string | null;\n}\n\n/**\n * Configuration options for project synchronization.\n *\n * Controls the time range and other parameters for project sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport interface ProjectSyncOptions {\n /** Earliest date to sync issues from (inclusive) */\n timeMin?: Date;\n}\n\n/**\n * Base interface for project management integration tools.\n *\n * All synced issues/tasks are converted to ActivityWithNotes objects.\n * Each issue becomes an Activity with Notes for the description and comments.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (issue URL) and Note.key for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport interface ProjectTool {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<TCallback extends (auth: ProjectAuth, ...args: any[]) => any>(\n callback: TCallback,\n ...extraArgs: TCallback extends (auth: any, ...rest: infer R) => any\n ? R\n : []\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of projects accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available projects\n */\n getProjects(authToken: string): Promise<Project[]>;\n\n /**\n * Begins synchronizing issues from a specific project.\n *\n * Issues and tasks are converted to SyncUpdate objects, which can be either\n * new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the issue's canonical URL (e.g., Linear issue URL, Jira issue URL)\n * - Use Note.key for issue details:\n * - key: \"description\" for issue description (upserts on changes)\n * - key: \"metadata\" for status, priority, assignee, etc.\n * - key: \"comment-{commentId}\" for individual comments (unique per comment)\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all issues (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per issue\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to sync\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced issue\n * @param options - Optional configuration for limiting the sync scope (e.g., time range)\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TCallback extends (\n syncUpdate: SyncUpdate,\n ...args: any[]\n ) => any\n >(\n authToken: string,\n projectId: string,\n callback: TCallback,\n options?: ProjectSyncOptions,\n ...extraArgs: TCallback extends (\n syncUpdate: any,\n ...rest: infer R\n ) => any\n ? R\n : []\n ): Promise<void>;\n\n /**\n * Stops synchronizing issues from a specific project.\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, projectId: string): Promise<void>;\n\n /**\n * Updates an issue/task with new values.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync activity updates back to the external service.\n *\n * The update object contains only the fields that changed, plus id and source.\n * Uses the combination of start and done to determine workflow state:\n * - done set → Completed/Done state\n * - done null + start set → In Progress/Active state\n * - done null + start null → Backlog/Todo state\n *\n * @param authToken - Authorization token for access\n * @param update - ActivityUpdate with changed fields (includes id and source)\n * @returns Promise that resolves when the update is synced\n */\n updateIssue?(authToken: string, update: ActivityUpdate): Promise<void>;\n\n /**\n * Adds a comment to an issue/task.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync notes added to activities back as comments on the external service.\n *\n * @param authToken - Authorization token for access\n * @param issueId - ID or key of the issue/task to comment on\n * @param body - The comment text content\n * @returns Promise that resolves when the comment is added\n */\n addIssueComment?(\n authToken: string,\n issueId: string,\n body: string\n ): Promise<void>;\n}\n";
7
+ export default "import type {\n Activity,\n ActivityLink,\n ActivityMeta,\n Serializable,\n SyncUpdate,\n} from \"../index\";\n\n/**\n * Represents a successful project management service authorization.\n *\n * Returned by project management tools when authorization completes successfully.\n * The auth token is an opaque identifier that can be used for subsequent\n * project operations.\n */\nexport type ProjectAuth = {\n /** Opaque token for project management operations */\n authToken: string;\n};\n\n/**\n * Represents a project from an external project management service.\n *\n * Contains metadata about a specific project/board/workspace that can be synced\n * with Plot.\n */\nexport type Project = {\n /** Unique identifier for the project within the provider */\n id: string;\n /** Human-readable name of the project (e.g., \"Q1 Roadmap\", \"Engineering\") */\n name: string;\n /** Optional description or additional details about the project */\n description: string | null;\n /** Optional project key/abbreviation (e.g., \"PROJ\" in Jira, \"ENG\" in Linear) */\n key: string | null;\n};\n\n/**\n * Configuration options for project synchronization.\n *\n * Controls the time range and other parameters for project sync operations.\n * Used to limit sync scope and optimize performance.\n */\nexport type ProjectSyncOptions = {\n /** Earliest date to sync issues from (inclusive) */\n timeMin?: Date;\n};\n\n/**\n * Base interface for project management integration tools.\n *\n * All synced issues/tasks are converted to ActivityWithNotes objects.\n * Each issue becomes an Activity with Notes for the description and comments.\n *\n * **Recommended Data Sync Strategy:**\n * Use Activity.source (issue URL) and Note.key for automatic upserts.\n * See SYNC_STRATEGIES.md for detailed patterns.\n */\nexport type ProjectTool = {\n /**\n * Initiates the authorization flow for the service.\n *\n * @param callback - Function receiving (auth, ...extraArgs) when auth completes\n * @param extraArgs - Additional arguments to pass to the callback (type-checked)\n * @returns Promise resolving to an ActivityLink to initiate the auth flow\n */\n requestAuth<\n TArgs extends Serializable[],\n TCallback extends (auth: ProjectAuth, ...args: TArgs) => any\n >(\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<ActivityLink>;\n\n /**\n * Retrieves the list of projects accessible to the user.\n *\n * @param authToken - Authorization token from successful auth flow\n * @returns Promise resolving to array of available projects\n */\n getProjects(authToken: string): Promise<Project[]>;\n\n /**\n * Begins synchronizing issues from a specific project.\n *\n * Issues and tasks are converted to SyncUpdate objects, which can be either\n * new items or updates to existing items.\n *\n * **Recommended Implementation** (Strategy 2 - Upsert via Source/Key):\n * - Set Activity.source to the issue's canonical URL (e.g., Linear issue URL, Jira issue URL)\n * - Use Note.key for issue details:\n * - key: \"description\" for issue description (upserts on changes)\n * - key: \"metadata\" for status, priority, assignee, etc.\n * - key: \"comment-{commentId}\" for individual comments (unique per comment)\n * - No manual ID tracking needed - Plot handles deduplication automatically\n * - Send NewActivityWithNotes for all issues (creates new or updates existing)\n * - Set activity.unread = false for initial sync, true for incremental updates\n *\n * **Alternative** (Strategy 3 - Advanced cases):\n * - Use Uuid.Generate() and store ID mappings when creating multiple activities per issue\n * - See SYNC_STRATEGIES.md for when this is appropriate\n *\n * @param options - Sync configuration options\n * @param options.authToken - Authorization token for access\n * @param options.projectId - ID of the project to sync\n * @param options.timeMin - Earliest date to sync issues from (inclusive)\n * @param callback - Function receiving (syncUpdate, ...extraArgs) for each synced issue\n * @param extraArgs - Additional arguments to pass to the callback (type-checked, no functions allowed)\n * @returns Promise that resolves when sync setup is complete\n */\n startSync<\n TArgs extends Serializable[],\n TCallback extends (syncUpdate: SyncUpdate, ...args: TArgs) => any\n >(\n options: {\n authToken: string;\n projectId: string;\n } & ProjectSyncOptions,\n callback: TCallback,\n ...extraArgs: TArgs\n ): Promise<void>;\n\n /**\n * Stops synchronizing issues from a specific project.\n *\n * @param authToken - Authorization token for access\n * @param projectId - ID of the project to stop syncing\n * @returns Promise that resolves when sync is stopped\n */\n stopSync(authToken: string, projectId: string): Promise<void>;\n\n /**\n * Updates an issue/task with new values.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync activity updates back to the external service.\n *\n * Uses the combination of start and done to determine workflow state:\n * - done set → Completed/Done state\n * - done null + start set → In Progress/Active state\n * - done null + start null → Backlog/Todo state\n *\n * @param authToken - Authorization token for access\n * @param activity - The updated activity\n * @returns Promise that resolves when the update is synced\n */\n updateIssue?(authToken: string, activity: Activity): Promise<void>;\n\n /**\n * Adds a comment to an issue/task.\n *\n * Optional method for bidirectional sync. When implemented, allows Plot to\n * sync notes added to activities back as comments on the external service.\n *\n * The tool should extract its own ID from meta (e.g., linearId, taskGid, issueKey).\n *\n * @param authToken - Authorization token for access\n * @param meta - Activity metadata containing the tool's issue/task identifier\n * @param body - The comment text content\n * @returns Promise that resolves when the comment is added\n */\n addIssueComment?(\n authToken: string,\n meta: ActivityMeta,\n body: string\n ): Promise<void>;\n};\n";
8
8
  //# sourceMappingURL=projects.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/llm-docs/common/projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,woMAAwoM,CAAC"}
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/llm-docs/common/projects.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAe,imMAAimM,CAAC"}