terse-cli 0.2.16 → 0.3.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 (331) hide show
  1. package/dist/_tmp_create_project.d.ts +2 -0
  2. package/dist/_tmp_create_project.d.ts.map +1 -0
  3. package/dist/_tmp_create_project.js +17 -0
  4. package/dist/_tmp_create_project.js.map +1 -0
  5. package/dist/_tmp_delete_agent.d.ts +2 -0
  6. package/dist/_tmp_delete_agent.d.ts.map +1 -0
  7. package/dist/_tmp_delete_agent.js +14 -0
  8. package/dist/_tmp_delete_agent.js.map +1 -0
  9. package/dist/_tmp_manual_trigger.d.ts +2 -0
  10. package/dist/_tmp_manual_trigger.d.ts.map +1 -0
  11. package/dist/_tmp_manual_trigger.js +17 -0
  12. package/dist/_tmp_manual_trigger.js.map +1 -0
  13. package/dist/_tmp_patch_active.d.ts +2 -0
  14. package/dist/_tmp_patch_active.d.ts.map +1 -0
  15. package/dist/_tmp_patch_active.js +21 -0
  16. package/dist/_tmp_patch_active.js.map +1 -0
  17. package/dist/codegen.d.ts +15 -0
  18. package/dist/codegen.d.ts.map +1 -1
  19. package/dist/codegen.js +466 -81
  20. package/dist/codegen.js.map +1 -1
  21. package/dist/commands/deployTheme.d.ts +28 -0
  22. package/dist/commands/deployTheme.d.ts.map +1 -0
  23. package/dist/commands/deployTheme.js +68 -0
  24. package/dist/commands/deployTheme.js.map +1 -0
  25. package/dist/commands/dev.d.ts +3 -0
  26. package/dist/commands/dev.d.ts.map +1 -0
  27. package/dist/commands/dev.js +47 -0
  28. package/dist/commands/dev.js.map +1 -0
  29. package/dist/commands/fsExec.d.ts +8 -0
  30. package/dist/commands/fsExec.d.ts.map +1 -0
  31. package/dist/commands/fsExec.js +46 -0
  32. package/dist/commands/fsExec.js.map +1 -0
  33. package/dist/commands/generate.d.ts.map +1 -1
  34. package/dist/commands/generate.js +36 -267
  35. package/dist/commands/generate.js.map +1 -1
  36. package/dist/commands/serve.d.ts +1 -0
  37. package/dist/commands/serve.d.ts.map +1 -0
  38. package/dist/commands/serve.js +2 -0
  39. package/dist/commands/serve.js.map +1 -0
  40. package/dist/commands/terseCliTheme.d.ts +28 -0
  41. package/dist/commands/terseCliTheme.d.ts.map +1 -0
  42. package/dist/commands/terseCliTheme.js +68 -0
  43. package/dist/commands/terseCliTheme.js.map +1 -0
  44. package/dist/commands/tool.d.ts +6 -0
  45. package/dist/commands/tool.d.ts.map +1 -0
  46. package/dist/commands/tool.js +34 -0
  47. package/dist/commands/tool.js.map +1 -0
  48. package/dist/commands/toolRun.js +1 -1
  49. package/dist/commands/toolRun.js.map +1 -1
  50. package/dist/data/standardSlackEmoji.d.ts +2 -0
  51. package/dist/data/standardSlackEmoji.d.ts.map +1 -0
  52. package/dist/data/standardSlackEmoji.js +1978 -0
  53. package/dist/data/standardSlackEmoji.js.map +1 -0
  54. package/dist/data/standardSlackEmoji.json +1974 -0
  55. package/dist/deploy.d.ts +2 -1
  56. package/dist/deploy.d.ts.map +1 -1
  57. package/dist/deploy.js +61 -38
  58. package/dist/deploy.js.map +1 -1
  59. package/dist/generate.d.ts +2 -1
  60. package/dist/generate.d.ts.map +1 -1
  61. package/dist/generate.js +67 -69
  62. package/dist/generate.js.map +1 -1
  63. package/dist/index.js +1 -1
  64. package/dist/index.js.map +1 -1
  65. package/dist/init.d.ts +2 -1
  66. package/dist/init.d.ts.map +1 -1
  67. package/dist/init.js +45 -96
  68. package/dist/init.js.map +1 -1
  69. package/dist/integrate.d.ts +1 -0
  70. package/dist/integrate.d.ts.map +1 -1
  71. package/dist/integrate.js +191 -11
  72. package/dist/integrate.js.map +1 -1
  73. package/dist/nonInteractive.d.ts +4 -2
  74. package/dist/nonInteractive.d.ts.map +1 -1
  75. package/dist/nonInteractive.js +5 -2
  76. package/dist/nonInteractive.js.map +1 -1
  77. package/dist/perf.d.ts +9 -0
  78. package/dist/perf.d.ts.map +1 -0
  79. package/dist/perf.js +59 -0
  80. package/dist/perf.js.map +1 -0
  81. package/dist/providers/LanguageProvider.d.ts +6 -2
  82. package/dist/providers/LanguageProvider.d.ts.map +1 -1
  83. package/dist/providers/codegen.test.d.ts +2 -0
  84. package/dist/providers/codegen.test.d.ts.map +1 -0
  85. package/dist/providers/codegen.test.js +45 -0
  86. package/dist/providers/codegen.test.js.map +1 -0
  87. package/dist/providers/codegenTypes.d.ts +16 -134
  88. package/dist/providers/codegenTypes.d.ts.map +1 -1
  89. package/dist/providers/python/PythonProvider.js +1 -0
  90. package/dist/providers/python/PythonProvider.js.map +1 -1
  91. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  92. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  93. package/dist/providers/python/PythonProvider.test.js +169 -0
  94. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  95. package/dist/providers/typescript/TypeScriptProvider.d.ts +2 -2
  96. package/dist/providers/typescript/TypeScriptProvider.d.ts.map +1 -1
  97. package/dist/providers/typescript/TypeScriptProvider.js +53 -4
  98. package/dist/providers/typescript/TypeScriptProvider.js.map +1 -1
  99. package/dist/providers/typescript/attioProjection.d.ts +50 -0
  100. package/dist/providers/typescript/attioProjection.d.ts.map +1 -0
  101. package/dist/providers/typescript/attioProjection.js +358 -0
  102. package/dist/providers/typescript/attioProjection.js.map +1 -0
  103. package/dist/providers/typescript/modules/IntegrationModule.d.ts +82 -0
  104. package/dist/providers/typescript/modules/IntegrationModule.d.ts.map +1 -0
  105. package/dist/providers/typescript/modules/IntegrationModule.js +184 -0
  106. package/dist/providers/typescript/modules/IntegrationModule.js.map +1 -0
  107. package/dist/providers/typescript/modules/attio/AttioModule.d.ts +55 -0
  108. package/dist/providers/typescript/modules/attio/AttioModule.d.ts.map +1 -0
  109. package/dist/providers/typescript/modules/attio/AttioModule.js +163 -0
  110. package/dist/providers/typescript/modules/attio/AttioModule.js.map +1 -0
  111. package/dist/providers/typescript/modules/attio/attioProjection.d.ts +50 -0
  112. package/dist/providers/typescript/modules/attio/attioProjection.d.ts.map +1 -0
  113. package/dist/providers/typescript/modules/attio/attioProjection.js +358 -0
  114. package/dist/providers/typescript/modules/attio/attioProjection.js.map +1 -0
  115. package/dist/providers/typescript/modules/attio/attioToolMethods.d.ts +4 -0
  116. package/dist/providers/typescript/modules/attio/attioToolMethods.d.ts.map +1 -0
  117. package/dist/providers/typescript/modules/attio/attioToolMethods.js +295 -0
  118. package/dist/providers/typescript/modules/attio/attioToolMethods.js.map +1 -0
  119. package/dist/providers/typescript/modules/attio/attioTypes.d.ts +36 -0
  120. package/dist/providers/typescript/modules/attio/attioTypes.d.ts.map +1 -0
  121. package/dist/providers/typescript/modules/attio/attioTypes.js +2 -0
  122. package/dist/providers/typescript/modules/attio/attioTypes.js.map +1 -0
  123. package/dist/providers/typescript/modules/datadog/DatadogModule.d.ts +25 -0
  124. package/dist/providers/typescript/modules/datadog/DatadogModule.d.ts.map +1 -0
  125. package/dist/providers/typescript/modules/datadog/DatadogModule.js +33 -0
  126. package/dist/providers/typescript/modules/datadog/DatadogModule.js.map +1 -0
  127. package/dist/providers/typescript/modules/github/GithubModule.d.ts +44 -0
  128. package/dist/providers/typescript/modules/github/GithubModule.d.ts.map +1 -0
  129. package/dist/providers/typescript/modules/github/GithubModule.js +111 -0
  130. package/dist/providers/typescript/modules/github/GithubModule.js.map +1 -0
  131. package/dist/providers/typescript/modules/gmail/GmailModule.d.ts +17 -0
  132. package/dist/providers/typescript/modules/gmail/GmailModule.d.ts.map +1 -0
  133. package/dist/providers/typescript/modules/gmail/GmailModule.js +30 -0
  134. package/dist/providers/typescript/modules/gmail/GmailModule.js.map +1 -0
  135. package/dist/providers/typescript/modules/hey_reach/HeyReachModule.d.ts +25 -0
  136. package/dist/providers/typescript/modules/hey_reach/HeyReachModule.d.ts.map +1 -0
  137. package/dist/providers/typescript/modules/hey_reach/HeyReachModule.js +33 -0
  138. package/dist/providers/typescript/modules/hey_reach/HeyReachModule.js.map +1 -0
  139. package/dist/providers/typescript/modules/launchdarkly/LaunchDarklyModule.d.ts +26 -0
  140. package/dist/providers/typescript/modules/launchdarkly/LaunchDarklyModule.d.ts.map +1 -0
  141. package/dist/providers/typescript/modules/launchdarkly/LaunchDarklyModule.js +34 -0
  142. package/dist/providers/typescript/modules/launchdarkly/LaunchDarklyModule.js.map +1 -0
  143. package/dist/providers/typescript/modules/linear/LinearModule.d.ts +35 -0
  144. package/dist/providers/typescript/modules/linear/LinearModule.d.ts.map +1 -0
  145. package/dist/providers/typescript/modules/linear/LinearModule.js +48 -0
  146. package/dist/providers/typescript/modules/linear/LinearModule.js.map +1 -0
  147. package/dist/providers/typescript/modules/moduleHelpers.d.ts +23 -0
  148. package/dist/providers/typescript/modules/moduleHelpers.d.ts.map +1 -0
  149. package/dist/providers/typescript/modules/moduleHelpers.js +74 -0
  150. package/dist/providers/typescript/modules/moduleHelpers.js.map +1 -0
  151. package/dist/providers/typescript/modules/notion/NotionModule.d.ts +33 -0
  152. package/dist/providers/typescript/modules/notion/NotionModule.d.ts.map +1 -0
  153. package/dist/providers/typescript/modules/notion/NotionModule.js +44 -0
  154. package/dist/providers/typescript/modules/notion/NotionModule.js.map +1 -0
  155. package/dist/providers/typescript/modules/posthog/PosthogModule.d.ts +30 -0
  156. package/dist/providers/typescript/modules/posthog/PosthogModule.d.ts.map +1 -0
  157. package/dist/providers/typescript/modules/posthog/PosthogModule.js +60 -0
  158. package/dist/providers/typescript/modules/posthog/PosthogModule.js.map +1 -0
  159. package/dist/providers/typescript/modules/registry.d.ts +11 -0
  160. package/dist/providers/typescript/modules/registry.d.ts.map +1 -0
  161. package/dist/providers/typescript/modules/registry.js +37 -0
  162. package/dist/providers/typescript/modules/registry.js.map +1 -0
  163. package/dist/providers/typescript/modules/resend/ResendModule.d.ts +32 -0
  164. package/dist/providers/typescript/modules/resend/ResendModule.d.ts.map +1 -0
  165. package/dist/providers/typescript/modules/resend/ResendModule.js +71 -0
  166. package/dist/providers/typescript/modules/resend/ResendModule.js.map +1 -0
  167. package/dist/providers/typescript/modules/slack/SlackModule.d.ts +32 -0
  168. package/dist/providers/typescript/modules/slack/SlackModule.d.ts.map +1 -0
  169. package/dist/providers/typescript/modules/slack/SlackModule.js +51 -0
  170. package/dist/providers/typescript/modules/slack/SlackModule.js.map +1 -0
  171. package/dist/providers/typescript/modules/snowflake/SnowflakeModule.d.ts +20 -0
  172. package/dist/providers/typescript/modules/snowflake/SnowflakeModule.d.ts.map +1 -0
  173. package/dist/providers/typescript/modules/snowflake/SnowflakeModule.js +27 -0
  174. package/dist/providers/typescript/modules/snowflake/SnowflakeModule.js.map +1 -0
  175. package/dist/providers/typescript/modules/templateRenderer.d.ts +17 -0
  176. package/dist/providers/typescript/modules/templateRenderer.d.ts.map +1 -0
  177. package/dist/providers/typescript/modules/templateRenderer.js +64 -0
  178. package/dist/providers/typescript/modules/templateRenderer.js.map +1 -0
  179. package/dist/providers/typescript/modules/terse/TerseModule.d.ts +20 -0
  180. package/dist/providers/typescript/modules/terse/TerseModule.d.ts.map +1 -0
  181. package/dist/providers/typescript/modules/terse/TerseModule.js +61 -0
  182. package/dist/providers/typescript/modules/terse/TerseModule.js.map +1 -0
  183. package/dist/providers/typescript/modules/workos/WorkOSModule.d.ts +17 -0
  184. package/dist/providers/typescript/modules/workos/WorkOSModule.d.ts.map +1 -0
  185. package/dist/providers/typescript/modules/workos/WorkOSModule.js +30 -0
  186. package/dist/providers/typescript/modules/workos/WorkOSModule.js.map +1 -0
  187. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  188. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  189. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  190. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  191. package/dist/providers/typescript/projectedTypes.d.ts +11 -0
  192. package/dist/providers/typescript/projectedTypes.d.ts.map +1 -0
  193. package/dist/providers/typescript/projectedTypes.js +53 -0
  194. package/dist/providers/typescript/projectedTypes.js.map +1 -0
  195. package/dist/providers/typescript/projectionPrinter.d.ts +26 -0
  196. package/dist/providers/typescript/projectionPrinter.d.ts.map +1 -0
  197. package/dist/providers/typescript/projectionPrinter.js +110 -0
  198. package/dist/providers/typescript/projectionPrinter.js.map +1 -0
  199. package/dist/providers/typescript/replayLogDedupe.d.ts +6 -0
  200. package/dist/providers/typescript/replayLogDedupe.d.ts.map +1 -0
  201. package/dist/providers/typescript/replayLogDedupe.js +156 -0
  202. package/dist/providers/typescript/replayLogDedupe.js.map +1 -0
  203. package/dist/providers/typescript/templateEngine.d.ts +8 -2
  204. package/dist/providers/typescript/templateEngine.d.ts.map +1 -1
  205. package/dist/providers/typescript/templateEngine.js +241 -29
  206. package/dist/providers/typescript/templateEngine.js.map +1 -1
  207. package/dist/providers/typescript/triggerPayloads.d.ts +7 -0
  208. package/dist/providers/typescript/triggerPayloads.d.ts.map +1 -0
  209. package/dist/providers/typescript/triggerPayloads.js +60 -0
  210. package/dist/providers/typescript/triggerPayloads.js.map +1 -0
  211. package/dist/providers/typescript/triggerTypeDeclarations.d.ts +7 -0
  212. package/dist/providers/typescript/triggerTypeDeclarations.d.ts.map +1 -0
  213. package/dist/providers/typescript/triggerTypeDeclarations.js +42 -0
  214. package/dist/providers/typescript/triggerTypeDeclarations.js.map +1 -0
  215. package/dist/providers/typescript/triggerTypeRegistry.d.ts +7 -0
  216. package/dist/providers/typescript/triggerTypeRegistry.d.ts.map +1 -0
  217. package/dist/providers/typescript/triggerTypeRegistry.js +198 -0
  218. package/dist/providers/typescript/triggerTypeRegistry.js.map +1 -0
  219. package/dist/providers/typescript/typePrinter.d.ts +23 -0
  220. package/dist/providers/typescript/typePrinter.d.ts.map +1 -0
  221. package/dist/providers/typescript/typePrinter.js +123 -0
  222. package/dist/providers/typescript/typePrinter.js.map +1 -0
  223. package/dist/run.d.ts +2 -11
  224. package/dist/run.d.ts.map +1 -1
  225. package/dist/run.js +42 -153
  226. package/dist/run.js.map +1 -1
  227. package/dist/sampleEventId.d.ts +0 -4
  228. package/dist/sampleEventId.d.ts.map +1 -1
  229. package/dist/sampleEventId.js +0 -4
  230. package/dist/sampleEventId.js.map +1 -1
  231. package/dist/shared/ApiRoutes.d.ts +19 -0
  232. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  233. package/dist/shared/ApiRoutes.js +17 -1
  234. package/dist/shared/ApiRoutes.js.map +1 -1
  235. package/dist/shared/Configs.d.ts +24 -2
  236. package/dist/shared/Configs.d.ts.map +1 -1
  237. package/dist/shared/Configs.js +32 -2
  238. package/dist/shared/Configs.js.map +1 -1
  239. package/dist/shared/Integrations.d.ts +18 -1
  240. package/dist/shared/Integrations.d.ts.map +1 -1
  241. package/dist/shared/Integrations.js +10 -1
  242. package/dist/shared/Integrations.js.map +1 -1
  243. package/dist/shared/InvalidationKeys.d.ts +1 -0
  244. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  245. package/dist/shared/InvalidationKeys.js +3 -0
  246. package/dist/shared/InvalidationKeys.js.map +1 -1
  247. package/dist/shared/ModelEvents.d.ts +9 -0
  248. package/dist/shared/ModelEvents.d.ts.map +1 -1
  249. package/dist/shared/ModelEvents.js +15 -0
  250. package/dist/shared/ModelEvents.js.map +1 -1
  251. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  252. package/dist/shared/ToolDisplayUtils.js +107 -11
  253. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  254. package/dist/shared/types.d.ts +1013 -108
  255. package/dist/shared/types.d.ts.map +1 -1
  256. package/dist/shared/types.js.map +1 -1
  257. package/dist/test.d.ts +2 -1
  258. package/dist/test.d.ts.map +1 -1
  259. package/dist/test.js +43 -23
  260. package/dist/test.js.map +1 -1
  261. package/dist/triggerParseDetail.d.ts +8 -0
  262. package/dist/triggerParseDetail.d.ts.map +1 -0
  263. package/dist/triggerParseDetail.js +30 -0
  264. package/dist/triggerParseDetail.js.map +1 -0
  265. package/dist/util.d.ts +2 -3
  266. package/dist/util.d.ts.map +1 -1
  267. package/dist/util.js +3 -3
  268. package/dist/util.js.map +1 -1
  269. package/package.json +7 -5
  270. package/src/providers/typescript/modules/attio/attio.schemas.hbs +150 -0
  271. package/src/providers/typescript/modules/attio/attio.tools.hbs +192 -0
  272. package/src/providers/typescript/modules/attio/attio.triggers.hbs +130 -0
  273. package/src/providers/typescript/modules/datadog/datadog.tools.hbs +16 -0
  274. package/src/providers/typescript/modules/github/github.tools.hbs +68 -0
  275. package/src/providers/typescript/modules/github/github.triggers.hbs +40 -0
  276. package/src/providers/typescript/modules/gmail/gmail.tools.hbs +17 -0
  277. package/src/providers/typescript/modules/gmail/gmail.triggers.hbs +16 -0
  278. package/src/providers/typescript/modules/hey_reach/hey_reach.tools.hbs +9 -0
  279. package/src/providers/typescript/modules/hey_reach/hey_reach.triggers.hbs +56 -0
  280. package/src/providers/typescript/modules/launchdarkly/launchdarkly.tools.hbs +16 -0
  281. package/src/providers/typescript/modules/linear/linear.tools.hbs +23 -0
  282. package/src/providers/typescript/modules/linear/linear.triggers.hbs +24 -0
  283. package/src/providers/typescript/modules/notion/notion.tools.hbs +20 -0
  284. package/src/providers/typescript/modules/posthog/posthog.tools.hbs +28 -0
  285. package/{templates/typescript/codegen/partials/resend-section.hbs → src/providers/typescript/modules/resend/resend.tools.hbs} +17 -5
  286. package/src/providers/typescript/modules/slack/slack.tools.hbs +18 -0
  287. package/src/providers/typescript/modules/slack/slack.triggers.hbs +28 -0
  288. package/src/providers/typescript/modules/snowflake/snowflake.tools.hbs +12 -0
  289. package/src/providers/typescript/modules/terse/terse.tools.hbs +22 -0
  290. package/src/providers/typescript/modules/terse/terse.triggers.hbs +33 -0
  291. package/src/providers/typescript/modules/workos/workos.tools.hbs +12 -0
  292. package/src/providers/typescript/modules/workos/workos.triggers.hbs +64 -0
  293. package/templates/typescript/codegen/.impeccable/hook.cache.json +1 -0
  294. package/templates/typescript/codegen/common.hbs +6 -0
  295. package/templates/typescript/codegen/partials/tools-slice.hbs +18 -0
  296. package/templates/typescript/codegen/root.hbs +72 -0
  297. package/templates/typescript/codegen/sdk-primitives.hbs +42 -0
  298. package/dist/jsonOutput.d.ts +0 -19
  299. package/dist/jsonOutput.d.ts.map +0 -1
  300. package/dist/jsonOutput.js +0 -25
  301. package/dist/jsonOutput.js.map +0 -1
  302. package/dist/providers/typescript/parkSignals.d.ts +0 -7
  303. package/dist/providers/typescript/parkSignals.d.ts.map +0 -1
  304. package/dist/providers/typescript/parkSignals.js +0 -45
  305. package/dist/providers/typescript/parkSignals.js.map +0 -1
  306. package/dist/replay.d.ts +0 -3
  307. package/dist/replay.d.ts.map +0 -1
  308. package/dist/replay.js +0 -20
  309. package/dist/replay.js.map +0 -1
  310. package/dist/testRelay.d.ts +0 -6
  311. package/dist/testRelay.d.ts.map +0 -1
  312. package/dist/testRelay.js +0 -91
  313. package/dist/testRelay.js.map +0 -1
  314. package/dist/urls.d.ts +0 -3
  315. package/dist/urls.d.ts.map +0 -1
  316. package/dist/urls.js +0 -27
  317. package/dist/urls.js.map +0 -1
  318. package/templates/typescript/codegen/generated.hbs +0 -15
  319. package/templates/typescript/codegen/partials/attio-section.hbs +0 -86
  320. package/templates/typescript/codegen/partials/datadog-section.hbs +0 -3
  321. package/templates/typescript/codegen/partials/github-section.hbs +0 -30
  322. package/templates/typescript/codegen/partials/header.hbs +0 -17
  323. package/templates/typescript/codegen/partials/hey-reach-section.hbs +0 -3
  324. package/templates/typescript/codegen/partials/launchdarkly-section.hbs +0 -3
  325. package/templates/typescript/codegen/partials/linear-section.hbs +0 -5
  326. package/templates/typescript/codegen/partials/notion-section.hbs +0 -5
  327. package/templates/typescript/codegen/partials/posthog-section.hbs +0 -15
  328. package/templates/typescript/codegen/partials/skills-section.hbs +0 -105
  329. package/templates/typescript/codegen/partials/slack-section.hbs +0 -5
  330. package/templates/typescript/codegen/partials/tools-section.hbs +0 -94
  331. package/templates/typescript/codegen/partials/triggers-section.hbs +0 -353
@@ -0,0 +1,30 @@
1
+ import { ApiRoutes, IntegrationType } from "terse-types";
2
+ import { fetchWithAuth } from "../../../../api.js";
3
+ import { IntegrationModule } from "../IntegrationModule.js";
4
+ import { buildSkillToolType } from "../moduleHelpers.js";
5
+ export class GmailModule extends IntegrationModule {
6
+ type = IntegrationType.GMAIL;
7
+ summaryLabel = "Gmail";
8
+ sectionImports = ["GmailConfig", "GmailOutputConfig", "GmailDraftOutputConfig", "TypedSkill", "TypedTrigger", "GmailEventType"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.GMAIL.INTEGRATIONS, apiKey);
11
+ return instances.map(inst => ({ id: inst.id, displayName: inst.email || inst.id }));
12
+ }
13
+ instanceId(instance) {
14
+ return instance.id;
15
+ }
16
+ get triggersAggregateLines() {
17
+ return [" gmail: gmailTriggers,"];
18
+ }
19
+ get skillsAggregateLines() {
20
+ return [" /** Gmail — send emails */", " gmail: gmailSkill,", " /** Gmail — create draft emails (no auto-send) */", " gmailDraft: gmailDraftSkill,"];
21
+ }
22
+ prepareSection(input) {
23
+ const inst = this.requireInstance(input);
24
+ return {
25
+ id: inst.id,
26
+ skillToolType: buildSkillToolType(input.tools)
27
+ };
28
+ }
29
+ }
30
+ //# sourceMappingURL=GmailModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GmailModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/gmail/GmailModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAgC,iBAAiB,EAA0B,MAAM,yBAAyB,CAAA;AACjH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAExD,MAAM,OAAO,WAAY,SAAQ,iBAA+D;IACnF,IAAI,GAAG,eAAe,CAAC,KAAK,CAAA;IAC5B,YAAY,GAAG,OAAO,CAAA;IACZ,cAAc,GAAG,CAAC,aAAa,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,YAAY,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAA;IAElJ,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAqB,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC/F,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IACvF,CAAC;IAED,UAAU,CAAC,QAAiC;QACxC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,sBAAsB;QAChC,OAAO,CAAC,2BAA2B,CAAC,CAAA;IACxC,CAAC;IAED,IAAc,oBAAoB;QAC9B,OAAO,CAAC,gCAAgC,EAAE,wBAAwB,EAAE,uDAAuD,EAAE,kCAAkC,CAAC,CAAA;IACpK,CAAC;IAES,cAAc,CAAC,KAAiD;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;SACjD,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,25 @@
1
+ import { IntegrationType } from "terse-types";
2
+ import { IntegrationModule, type ModuleRenderInput } from "../IntegrationModule.js";
3
+ import { type ResourceClassContext } from "../moduleHelpers.js";
4
+ export declare class HeyReachModule extends IntegrationModule<HeyReachInstanceData, HeyReachSectionContext> {
5
+ readonly type = IntegrationType.HEY_REACH;
6
+ readonly summaryLabel = "HeyReach";
7
+ protected readonly sectionImports: string[];
8
+ fetchInstances(apiKey: string): Promise<HeyReachInstanceData[]>;
9
+ instanceId(instance: HeyReachInstanceData): string;
10
+ protected get triggersAggregateLines(): readonly string[];
11
+ protected prepareSection(input: ModuleRenderInput<HeyReachInstanceData>): HeyReachSectionContext;
12
+ }
13
+ export interface HeyReachInstanceData {
14
+ id: string;
15
+ displayName: string;
16
+ campaigns: Array<{
17
+ id: string;
18
+ name: string;
19
+ }>;
20
+ }
21
+ export interface HeyReachSectionContext {
22
+ id: string;
23
+ campaignClass: ResourceClassContext;
24
+ }
25
+ //# sourceMappingURL=HeyReachModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeyReachModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/hey_reach/HeyReachModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,oBAAoB,EAA6B,MAAM,qBAAqB,CAAA;AAE1F,qBAAa,cAAe,SAAQ,iBAAiB,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;IAC/F,QAAQ,CAAC,IAAI,6BAA4B;IACzC,QAAQ,CAAC,YAAY,cAAa;IAClC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAA+D;IAE1F,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAYrE,UAAU,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM;IAIlD,SAAS,KAAK,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAExD;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,GAAG,sBAAsB;CAenG;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,sBAAsB;IACnC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,oBAAoB,CAAA;CACtC"}
@@ -0,0 +1,33 @@
1
+ import { ApiRoutes, IntegrationType } from "terse-types";
2
+ import { fetchWithAuth } from "../../../../api.js";
3
+ import { IntegrationModule } from "../IntegrationModule.js";
4
+ import { buildResourceClassContext } from "../moduleHelpers.js";
5
+ export class HeyReachModule extends IntegrationModule {
6
+ type = IntegrationType.HEY_REACH;
7
+ summaryLabel = "HeyReach";
8
+ sectionImports = ["HeyReachInputConfig", "HeyReachEventType", "TypedTrigger"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.HEY_REACH.INTEGRATIONS, apiKey);
11
+ return Promise.all(instances.map(async (inst) => {
12
+ const resp = await fetchWithAuth(`${ApiRoutes.HEY_REACH.CAMPAIGNS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({ campaigns: [] }));
13
+ return { id: inst.id, displayName: inst.id, campaigns: resp.campaigns || [] };
14
+ }));
15
+ }
16
+ instanceId(instance) {
17
+ return instance.id;
18
+ }
19
+ get triggersAggregateLines() {
20
+ return [" heyReach: heyReachTriggers,"];
21
+ }
22
+ prepareSection(input) {
23
+ const inst = this.requireInstance(input);
24
+ return {
25
+ id: inst.id,
26
+ campaignClass: buildResourceClassContext("HeyReachCampaign", [
27
+ { classField: "campaignId", type: "string", sourceField: "id" },
28
+ { classField: "name", type: "string", sourceField: "name" }
29
+ ], "name", inst.campaigns)
30
+ };
31
+ }
32
+ }
33
+ //# sourceMappingURL=HeyReachModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeyReachModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/hey_reach/HeyReachModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAA6B,yBAAyB,EAAE,MAAM,qBAAqB,CAAA;AAE1F,MAAM,OAAO,cAAe,SAAQ,iBAA+D;IACtF,IAAI,GAAG,eAAe,CAAC,SAAS,CAAA;IAChC,YAAY,GAAG,UAAU,CAAA;IACf,cAAc,GAAG,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAA;IAEhG,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAwB,SAAS,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACtG,OAAO,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAiC,EAAE;YACxD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAqD,GAAG,SAAS,CAAC,SAAS,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CAC/K,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAC5B,CAAA;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE,EAAE,CAAA;QACjF,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,UAAU,CAAC,QAA8B;QACrC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,sBAAsB;QAChC,OAAO,CAAC,iCAAiC,CAAC,CAAA;IAC9C,CAAC;IAES,cAAc,CAAC,KAA8C;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,yBAAyB,CACpC,kBAAkB,EAClB;gBACI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC/D,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;aAC9D,EACD,MAAM,EACN,IAAI,CAAC,SAAS,CACjB;SACJ,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,26 @@
1
+ import { IntegrationType } from "terse-types";
2
+ import { IntegrationModule, type ModuleRenderInput } from "../IntegrationModule.js";
3
+ import { type ResourceClassContext } from "../moduleHelpers.js";
4
+ export declare class LaunchDarklyModule extends IntegrationModule<LaunchDarklyInstanceData, LaunchDarklySectionContext> {
5
+ readonly type = IntegrationType.LAUNCHDARKLY;
6
+ readonly summaryLabel = "LaunchDarkly";
7
+ protected readonly sectionImports: string[];
8
+ fetchInstances(apiKey: string): Promise<LaunchDarklyInstanceData[]>;
9
+ instanceId(instance: LaunchDarklyInstanceData): string;
10
+ protected get skillsAggregateLines(): readonly string[];
11
+ protected prepareSection(input: ModuleRenderInput<LaunchDarklyInstanceData>): LaunchDarklySectionContext;
12
+ }
13
+ export interface LaunchDarklyInstanceData {
14
+ id: string;
15
+ displayName: string;
16
+ projects: Array<{
17
+ key: string;
18
+ name: string;
19
+ }>;
20
+ }
21
+ export interface LaunchDarklySectionContext {
22
+ id: string;
23
+ skillToolType: string;
24
+ projectClass: ResourceClassContext;
25
+ }
26
+ //# sourceMappingURL=LaunchDarklyModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaunchDarklyModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/launchdarkly/LaunchDarklyModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAc,MAAM,aAAa,CAAA;AAGpE,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,oBAAoB,EAAiD,MAAM,qBAAqB,CAAA;AAE9G,qBAAa,kBAAmB,SAAQ,iBAAiB,CAAC,wBAAwB,EAAE,0BAA0B,CAAC;IAC3G,QAAQ,CAAC,IAAI,gCAA+B;IAC5C,QAAQ,CAAC,YAAY,kBAAiB;IACtC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAAuC;IAElE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC;IAazE,UAAU,CAAC,QAAQ,EAAE,wBAAwB,GAAG,MAAM;IAItD,SAAS,KAAK,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAEtD;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,wBAAwB,CAAC,GAAG,0BAA0B;CAgB3G;AAED,MAAM,WAAW,wBAAwB;IACrC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,0BAA0B;IACvC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,oBAAoB,CAAA;CACrC"}
@@ -0,0 +1,34 @@
1
+ import { ApiRoutes, IntegrationType, buildRoute } from "terse-types";
2
+ import { fetchWithAuth } from "../../../../api.js";
3
+ import { IntegrationModule } from "../IntegrationModule.js";
4
+ import { buildResourceClassContext, buildSkillToolType } from "../moduleHelpers.js";
5
+ export class LaunchDarklyModule extends IntegrationModule {
6
+ type = IntegrationType.LAUNCHDARKLY;
7
+ summaryLabel = "LaunchDarkly";
8
+ sectionImports = ["LaunchDarklyConfig", "TypedSkill"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.LAUNCHDARKLY.INTEGRATIONS, apiKey);
11
+ return Promise.all(instances.map(async (inst) => {
12
+ const resp = await fetchWithAuth(buildRoute(ApiRoutes.LAUNCHDARKLY.PROJECTS_BY_INTEGRATION_ID, { integrationId: inst.id }), apiKey).catch(() => ({ projects: [] }));
13
+ return { id: inst.id, displayName: inst.tokenName || inst.email || inst.id, projects: resp.projects || [] };
14
+ }));
15
+ }
16
+ instanceId(instance) {
17
+ return instance.id;
18
+ }
19
+ get skillsAggregateLines() {
20
+ return [" /** LaunchDarkly — read and toggle feature flags in a project + environments */", " launchDarkly: launchDarklySkill,"];
21
+ }
22
+ prepareSection(input) {
23
+ const inst = this.requireInstance(input);
24
+ return {
25
+ id: inst.id,
26
+ skillToolType: buildSkillToolType(input.tools),
27
+ projectClass: buildResourceClassContext("LaunchDarklyProject", [
28
+ { classField: "projectKey", type: "string", sourceField: "key" },
29
+ { classField: "name", type: "string", sourceField: "name" }
30
+ ], "name", inst.projects)
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=LaunchDarklyModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LaunchDarklyModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/launchdarkly/LaunchDarklyModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAEpE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAA6B,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE9G,MAAM,OAAO,kBAAmB,SAAQ,iBAAuE;IAClG,IAAI,GAAG,eAAe,CAAC,YAAY,CAAA;IACnC,YAAY,GAAG,cAAc,CAAA;IACnB,cAAc,GAAG,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAA;IAExE,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAA4B,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QAC7G,OAAO,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAqC,EAAE;YAC5D,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,UAAU,CAAC,SAAS,CAAC,YAAY,CAAC,0BAA0B,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EACzF,MAAM,CACT,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YACjC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAA;QAC/G,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,UAAU,CAAC,QAAkC;QACzC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,oBAAoB;QAC9B,OAAO,CAAC,qFAAqF,EAAE,sCAAsC,CAAC,CAAA;IAC1I,CAAC;IAES,cAAc,CAAC,KAAkD;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9C,YAAY,EAAE,yBAAyB,CACnC,qBAAqB,EACrB;gBACI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;gBAChE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;aAC9D,EACD,MAAM,EACN,IAAI,CAAC,QAAQ,CAChB;SACJ,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,35 @@
1
+ import { IntegrationType } from "terse-types";
2
+ import { IntegrationModule, type ModuleRenderInput } from "../IntegrationModule.js";
3
+ import { type ResourceClassContext } from "../moduleHelpers.js";
4
+ export declare class LinearModule extends IntegrationModule<LinearInstanceData, LinearSectionContext> {
5
+ readonly type = IntegrationType.LINEAR;
6
+ readonly summaryLabel = "Linear";
7
+ protected readonly sectionImports: string[];
8
+ fetchInstances(apiKey: string): Promise<LinearInstanceData[]>;
9
+ instanceId(instance: LinearInstanceData): string;
10
+ protected get triggersAggregateLines(): readonly string[];
11
+ protected get skillsAggregateLines(): readonly string[];
12
+ protected prepareSection(input: ModuleRenderInput<LinearInstanceData>): LinearSectionContext;
13
+ }
14
+ export interface LinearInstanceData {
15
+ id: string;
16
+ displayName: string;
17
+ teams: Array<{
18
+ id: string;
19
+ name: string;
20
+ key: string;
21
+ }>;
22
+ projects: Array<{
23
+ id: string;
24
+ name: string;
25
+ description?: string;
26
+ teamId: string;
27
+ }>;
28
+ }
29
+ export interface LinearSectionContext {
30
+ id: string;
31
+ skillToolType: string;
32
+ teamClass: ResourceClassContext;
33
+ projectClass: ResourceClassContext;
34
+ }
35
+ //# sourceMappingURL=LinearModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/linear/LinearModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,oBAAoB,EAAiD,MAAM,qBAAqB,CAAA;AAE9G,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IACzF,QAAQ,CAAC,IAAI,0BAAyB;IACtC,QAAQ,CAAC,YAAY,YAAW;IAChC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAA+F;IAE1H,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAqBnE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM;IAIhD,SAAS,KAAK,sBAAsB,IAAI,SAAS,MAAM,EAAE,CAExD;IAED,SAAS,KAAK,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAEtD;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,oBAAoB;CA0B/F;AAED,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvD,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACtF;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,oBAAoB,CAAA;IAC/B,YAAY,EAAE,oBAAoB,CAAA;CACrC"}
@@ -0,0 +1,48 @@
1
+ import { ApiRoutes, IntegrationType } from "terse-types";
2
+ import { fetchWithAuth } from "../../../../api.js";
3
+ import { IntegrationModule } from "../IntegrationModule.js";
4
+ import { buildResourceClassContext, buildSkillToolType } from "../moduleHelpers.js";
5
+ export class LinearModule extends IntegrationModule {
6
+ type = IntegrationType.LINEAR;
7
+ summaryLabel = "Linear";
8
+ sectionImports = ["LinearInputConfig", "LinearOutputConfig", "TypedSkill", "TypedTrigger", "LinearEventType"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.LINEAR.INTEGRATIONS, apiKey);
11
+ return Promise.all(instances.map(async (inst) => {
12
+ const teams = await fetchWithAuth(`${ApiRoutes.LINEAR.TEAMS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => []);
13
+ const projects = await fetchWithAuth(`${ApiRoutes.LINEAR.PROJECTS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => []);
14
+ return {
15
+ id: inst.id,
16
+ displayName: inst.workspaceName || inst.id,
17
+ teams: Array.isArray(teams) ? teams : [],
18
+ projects: Array.isArray(projects) ? projects : []
19
+ };
20
+ }));
21
+ }
22
+ instanceId(instance) {
23
+ return instance.id;
24
+ }
25
+ get triggersAggregateLines() {
26
+ return [" linear: linearTriggers,"];
27
+ }
28
+ get skillsAggregateLines() {
29
+ return [" /** Linear — read and write issues, optionally scoped to a team or project */", " linear: linearSkill,"];
30
+ }
31
+ prepareSection(input) {
32
+ const inst = this.requireInstance(input);
33
+ return {
34
+ id: inst.id,
35
+ skillToolType: buildSkillToolType(input.tools),
36
+ teamClass: buildResourceClassContext("LinearTeam", [
37
+ { classField: "teamId", type: "string", sourceField: "id" },
38
+ { classField: "name", type: "string", sourceField: "name" },
39
+ { classField: "key", type: "string", sourceField: "key" }
40
+ ], "name", inst.teams),
41
+ projectClass: buildResourceClassContext("LinearProject", [
42
+ { classField: "projectId", type: "string", sourceField: "id" },
43
+ { classField: "name", type: "string", sourceField: "name" }
44
+ ], "name", inst.projects)
45
+ };
46
+ }
47
+ }
48
+ //# sourceMappingURL=LinearModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinearModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/linear/LinearModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAA6B,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE9G,MAAM,OAAO,YAAa,SAAQ,iBAA2D;IAChF,IAAI,GAAG,eAAe,CAAC,MAAM,CAAA;IAC7B,YAAY,GAAG,QAAQ,CAAA;IACb,cAAc,GAAG,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,CAAC,CAAA;IAEhI,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACjG,OAAO,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;YACtD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAmD,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,CACvK,GAAG,EAAE,CAAC,EAAsD,CAC/D,CAAA;YACD,MAAM,QAAQ,GAAG,MAAM,aAAa,CAChC,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAC3E,MAAM,CACT,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAA+E,CAAC,CAAA;YAC9F,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;gBAC1C,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;gBACxC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;aACpD,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,UAAU,CAAC,QAA4B;QACnC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,sBAAsB;QAChC,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAC1C,CAAC;IAED,IAAc,oBAAoB;QAC9B,OAAO,CAAC,mFAAmF,EAAE,0BAA0B,CAAC,CAAA;IAC5H,CAAC;IAES,cAAc,CAAC,KAA4C;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9C,SAAS,EAAE,yBAAyB,CAChC,YAAY,EACZ;gBACI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC3D,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;gBAC3D,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE;aAC5D,EACD,MAAM,EACN,IAAI,CAAC,KAAK,CACb;YACD,YAAY,EAAE,yBAAyB,CACnC,eAAe,EACf;gBACI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC9D,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;aAC9D,EACD,MAAM,EACN,IAAI,CAAC,QAAQ,CAChB;SACJ,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,23 @@
1
+ import type { ToolDefinition } from "terse-types";
2
+ export declare function toPascalCase(value: string): string;
3
+ export declare function toCamelCase(value: string): string;
4
+ export declare function escapeString(value: string): string;
5
+ export declare function toGeneratedIdentifier(raw: string, fallback: string): string;
6
+ export declare function toolNameToTypeName(name: string, suffix: "Params" | "Result"): string;
7
+ export declare function renderStringLiteralUnion(values: string[]): string;
8
+ export declare function buildSkillToolType(tools: readonly ToolDefinition[]): string;
9
+ export declare function buildResourceClassContext(className: string, fields: ResourceFieldMapping[], staticNameField: string, items: object[]): ResourceClassContext;
10
+ export interface ResourceFieldMapping {
11
+ classField: string;
12
+ type: string;
13
+ sourceField: string;
14
+ }
15
+ export interface ResourceClassContext {
16
+ className: string;
17
+ constructorParams: string;
18
+ items: Array<{
19
+ staticName: string;
20
+ argsText: string;
21
+ }>;
22
+ }
23
+ //# sourceMappingURL=moduleHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleHelpers.d.ts","sourceRoot":"","sources":["../../../../src/providers/typescript/modules/moduleHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQlD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK3E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAOpF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAGjE;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,GAAG,MAAM,CAO3E;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAgC3J;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,oBAAoB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB,EAAE,MAAM,CAAA;IACzB,KAAK,EAAE,KAAK,CAAC;QACT,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;KACnB,CAAC,CAAA;CACL"}
@@ -0,0 +1,74 @@
1
+ export function toPascalCase(value) {
2
+ return value
3
+ .replace(/[^a-zA-Z0-9]+/g, " ")
4
+ .trim()
5
+ .split(/\s+/)
6
+ .filter(Boolean)
7
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
8
+ .join("");
9
+ }
10
+ export function toCamelCase(value) {
11
+ const pascal = toPascalCase(value);
12
+ return pascal.charAt(0).toLowerCase() + pascal.slice(1);
13
+ }
14
+ export function escapeString(value) {
15
+ return value.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
16
+ }
17
+ export function toGeneratedIdentifier(raw, fallback) {
18
+ let name = toPascalCase(raw || fallback);
19
+ if (!name)
20
+ name = fallback;
21
+ if (/^\d/.test(name))
22
+ name = `_${name}`;
23
+ return name;
24
+ }
25
+ export function toolNameToTypeName(name, suffix) {
26
+ return (name
27
+ .split("_")
28
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
29
+ .join("") + suffix);
30
+ }
31
+ export function renderStringLiteralUnion(values) {
32
+ if (values.length === 0)
33
+ return "never";
34
+ return values.map(value => `"${escapeString(value)}"`).join(" | ");
35
+ }
36
+ export function buildSkillToolType(tools) {
37
+ const toolNames = tools
38
+ .filter(tool => !tool.isReadOnly || tool.supportsApproval)
39
+ .map(tool => tool.name)
40
+ .sort();
41
+ return renderStringLiteralUnion(toolNames);
42
+ }
43
+ export function buildResourceClassContext(className, fields, staticNameField, items) {
44
+ const constructorParams = fields.map(field => `public readonly ${field.classField}: ${field.type}`).join(", ");
45
+ const entries = [];
46
+ const usedNames = new Set();
47
+ for (const item of items) {
48
+ const source = item;
49
+ let name = toPascalCase(String(source[staticNameField] || "Unknown"));
50
+ if (!name || /^\d/.test(name))
51
+ name = `_${name}`;
52
+ while (usedNames.has(name))
53
+ name += "_";
54
+ usedNames.add(name);
55
+ const argsText = fields
56
+ .map(field => {
57
+ const value = source[field.sourceField];
58
+ if (typeof value === "number")
59
+ return String(value);
60
+ return `"${escapeString(String(value ?? ""))}"`;
61
+ })
62
+ .join(", ");
63
+ entries.push({
64
+ staticName: name,
65
+ argsText
66
+ });
67
+ }
68
+ return {
69
+ className,
70
+ constructorParams,
71
+ items: entries
72
+ };
73
+ }
74
+ //# sourceMappingURL=moduleHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moduleHelpers.js","sourceRoot":"","sources":["../../../../src/providers/typescript/modules/moduleHelpers.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,KAAK;SACP,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,IAAI,EAAE;SACN,KAAK,CAAC,KAAK,CAAC;SACZ,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;AAC5D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAW,EAAE,QAAgB;IAC/D,IAAI,IAAI,GAAG,YAAY,CAAC,GAAG,IAAI,QAAQ,CAAC,CAAA;IACxC,IAAI,CAAC,IAAI;QAAE,IAAI,GAAG,QAAQ,CAAA;IAC1B,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;IACvC,OAAO,IAAI,CAAA;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,MAA2B;IACxE,OAAO,CACH,IAAI;SACC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACzD,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CACzB,CAAA;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAgB;IACrD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAgC;IAC/D,MAAM,SAAS,GAAG,KAAK;SAClB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC;SACzD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACtB,IAAI,EAAE,CAAA;IAEX,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,SAAiB,EAAE,MAA8B,EAAE,eAAuB,EAAE,KAAe;IACjI,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAE9G,MAAM,OAAO,GAAkC,EAAE,CAAA;IACjD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAA+B,CAAA;QAC9C,IAAI,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,SAAS,CAAC,CAAC,CAAA;QACrE,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,IAAI,EAAE,CAAA;QAChD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,IAAI,IAAI,GAAG,CAAA;QACvC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAEnB,MAAM,QAAQ,GAAG,MAAM;aAClB,GAAG,CAAC,KAAK,CAAC,EAAE;YACT,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YACvC,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;YACnD,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAA;QACnD,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAA;QAEf,OAAO,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,IAAI;YAChB,QAAQ;SACX,CAAC,CAAA;IACN,CAAC;IAED,OAAO;QACH,SAAS;QACT,iBAAiB;QACjB,KAAK,EAAE,OAAO;KACjB,CAAA;AACL,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { IntegrationType } from "terse-types";
2
+ import { IntegrationModule, type ModuleRenderInput } from "../IntegrationModule.js";
3
+ import { type ResourceClassContext } from "../moduleHelpers.js";
4
+ export declare class NotionModule extends IntegrationModule<NotionInstanceData, NotionSectionContext> {
5
+ readonly type = IntegrationType.NOTION;
6
+ readonly summaryLabel = "Notion";
7
+ protected readonly sectionImports: string[];
8
+ fetchInstances(apiKey: string): Promise<NotionInstanceData[]>;
9
+ instanceId(instance: NotionInstanceData): string;
10
+ protected get skillsAggregateLines(): readonly string[];
11
+ protected prepareSection(input: ModuleRenderInput<NotionInstanceData>): NotionSectionContext;
12
+ }
13
+ export interface NotionInstanceData {
14
+ id: string;
15
+ displayName: string;
16
+ databases: Array<{
17
+ id: string;
18
+ title: string;
19
+ type: string;
20
+ }>;
21
+ pages: Array<{
22
+ id: string;
23
+ title: string;
24
+ type: string;
25
+ }>;
26
+ }
27
+ export interface NotionSectionContext {
28
+ id: string;
29
+ skillToolType: string;
30
+ databaseClass: ResourceClassContext;
31
+ pageClass: ResourceClassContext;
32
+ }
33
+ //# sourceMappingURL=NotionModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/notion/NotionModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,eAAe,EAAE,MAAM,aAAa,CAAA;AAGxD,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAAE,KAAK,oBAAoB,EAAiD,MAAM,qBAAqB,CAAA;AAE9G,qBAAa,YAAa,SAAQ,iBAAiB,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;IACzF,QAAQ,CAAC,IAAI,0BAAyB;IACtC,QAAQ,CAAC,YAAY,YAAW;IAChC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAAiC;IAE5D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAmBnE,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM;IAIhD,SAAS,KAAK,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAEtD;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,oBAAoB;CAyB/F;AAED,MAAM,WAAW,kBAAkB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7D,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC5D;AAED,MAAM,WAAW,oBAAoB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,oBAAoB,CAAA;IACnC,SAAS,EAAE,oBAAoB,CAAA;CAClC"}
@@ -0,0 +1,44 @@
1
+ import { ApiRoutes, IntegrationType } from "terse-types";
2
+ import { fetchWithAuth } from "../../../../api.js";
3
+ import { IntegrationModule } from "../IntegrationModule.js";
4
+ import { buildResourceClassContext, buildSkillToolType } from "../moduleHelpers.js";
5
+ export class NotionModule extends IntegrationModule {
6
+ type = IntegrationType.NOTION;
7
+ summaryLabel = "Notion";
8
+ sectionImports = ["NotionConfig", "TypedSkill"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.NOTION.INTEGRATIONS, apiKey);
11
+ return Promise.all(instances.map(async (inst) => {
12
+ const resp = await fetchWithAuth(`${ApiRoutes.NOTION.RESOURCES}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({ resources: [] }));
13
+ const resources = resp.resources || [];
14
+ return {
15
+ id: inst.id,
16
+ displayName: inst.workspaceName || inst.id,
17
+ databases: resources.filter(r => r.type === "database"),
18
+ pages: resources.filter(r => r.type === "page")
19
+ };
20
+ }));
21
+ }
22
+ instanceId(instance) {
23
+ return instance.id;
24
+ }
25
+ get skillsAggregateLines() {
26
+ return [" /** Notion — read and write to the given databases or pages */", " notion: notionSkill,"];
27
+ }
28
+ prepareSection(input) {
29
+ const inst = this.requireInstance(input);
30
+ return {
31
+ id: inst.id,
32
+ skillToolType: buildSkillToolType(input.tools),
33
+ databaseClass: buildResourceClassContext("NotionDatabase", [
34
+ { classField: "databaseId", type: "string", sourceField: "id" },
35
+ { classField: "title", type: "string", sourceField: "title" }
36
+ ], "title", inst.databases),
37
+ pageClass: buildResourceClassContext("NotionPage", [
38
+ { classField: "pageId", type: "string", sourceField: "id" },
39
+ { classField: "title", type: "string", sourceField: "title" }
40
+ ], "title", inst.pages)
41
+ };
42
+ }
43
+ }
44
+ //# sourceMappingURL=NotionModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/notion/NotionModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,yBAAyB,CAAA;AACnF,OAAO,EAA6B,yBAAyB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE9G,MAAM,OAAO,YAAa,SAAQ,iBAA2D;IAChF,IAAI,GAAG,eAAe,CAAC,MAAM,CAAA;IAC7B,YAAY,GAAG,QAAQ,CAAA;IACb,cAAc,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAA;IAElE,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAsB,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACjG,OAAO,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;YACtD,MAAM,IAAI,GAAG,MAAM,aAAa,CAC5B,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAC5E,MAAM,CACT,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAA;YACtC,OAAO;gBACH,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,WAAW,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE;gBAC1C,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC;gBACvD,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;aAClD,CAAA;QACL,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,UAAU,CAAC,QAA4B;QACnC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,oBAAoB;QAC9B,OAAO,CAAC,oEAAoE,EAAE,0BAA0B,CAAC,CAAA;IAC7G,CAAC;IAES,cAAc,CAAC,KAA4C;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAA;QACxC,OAAO;YACH,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,aAAa,EAAE,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC;YAC9C,aAAa,EAAE,yBAAyB,CACpC,gBAAgB,EAChB;gBACI,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC/D,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;aAChE,EACD,OAAO,EACP,IAAI,CAAC,SAAS,CACjB;YACD,SAAS,EAAE,yBAAyB,CAChC,YAAY,EACZ;gBACI,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE;gBAC3D,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE;aAChE,EACD,OAAO,EACP,IAAI,CAAC,KAAK,CACb;SACJ,CAAA;IACL,CAAC;CACJ"}
@@ -0,0 +1,30 @@
1
+ import type { ToolDefinition } from "terse-types";
2
+ import { IntegrationType } from "terse-types";
3
+ import { IntegrationModule, type ModuleRenderInput, type ToolParamsPrintOptions } from "../IntegrationModule.js";
4
+ import { type ResourceClassContext } from "../moduleHelpers.js";
5
+ export declare class PosthogModule extends IntegrationModule<PosthogInstanceData, PosthogSectionContext> {
6
+ readonly type = IntegrationType.POSTHOG;
7
+ readonly summaryLabel = "PostHog";
8
+ protected readonly sectionImports: string[];
9
+ fetchInstances(apiKey: string): Promise<PosthogInstanceData[]>;
10
+ instanceId(instance: PosthogInstanceData): string;
11
+ protected get skillsAggregateLines(): readonly string[];
12
+ protected prepareSection(input: ModuleRenderInput<PosthogInstanceData>): PosthogSectionContext;
13
+ protected toolParamsPrintOptions(tool: ToolDefinition, input: ModuleRenderInput<PosthogInstanceData>): ToolParamsPrintOptions;
14
+ }
15
+ export interface PosthogInstanceData {
16
+ id: string;
17
+ displayName: string;
18
+ projects: Array<{
19
+ id: string;
20
+ name: string;
21
+ events: string[];
22
+ }>;
23
+ }
24
+ export interface PosthogSectionContext {
25
+ id: string;
26
+ skillToolType: string;
27
+ projectClass: ResourceClassContext;
28
+ eventNames: string[];
29
+ }
30
+ //# sourceMappingURL=PosthogModule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PosthogModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/posthog/PosthogModule.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,cAAc,EAAE,MAAM,aAAa,CAAA;AACrE,OAAO,EAAa,eAAe,EAAsC,MAAM,aAAa,CAAA;AAG5F,OAAO,EAAE,iBAAiB,EAAE,KAAK,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChH,OAAO,EAAE,KAAK,oBAAoB,EAAiD,MAAM,qBAAqB,CAAA;AAE9G,qBAAa,aAAc,SAAQ,iBAAiB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IAC5F,QAAQ,CAAC,IAAI,2BAA0B;IACvC,QAAQ,CAAC,YAAY,aAAY;IACjC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAAkC;IAE7D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAkBpE,UAAU,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM;IAIjD,SAAS,KAAK,oBAAoB,IAAI,SAAS,MAAM,EAAE,CAEtD;IAED,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,qBAAqB;IAkB9F,SAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,CAAC,mBAAmB,CAAC,GAAG,sBAAsB;CAQhI;AAYD,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAClE;AAED,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,oBAAoB,CAAA;IAClC,UAAU,EAAE,MAAM,EAAE,CAAA;CACvB"}
@@ -0,0 +1,60 @@
1
+ import { log } from "@clack/prompts";
2
+ import { ApiRoutes, IntegrationType, posthogProjectEventsResponseSchema } from "terse-types";
3
+ import { fetchWithAuth } from "../../../../api.js";
4
+ import { IntegrationModule } from "../IntegrationModule.js";
5
+ import { buildResourceClassContext, buildSkillToolType } from "../moduleHelpers.js";
6
+ export class PosthogModule extends IntegrationModule {
7
+ type = IntegrationType.POSTHOG;
8
+ summaryLabel = "PostHog";
9
+ sectionImports = ["PosthogConfig", "TypedSkill"];
10
+ async fetchInstances(apiKey) {
11
+ const instances = await fetchWithAuth(ApiRoutes.POSTHOG.INTEGRATIONS, apiKey);
12
+ return Promise.all(instances.map(async (inst) => {
13
+ const resp = await fetchWithAuth(`${ApiRoutes.POSTHOG.PROJECTS}?integrationId=${encodeURIComponent(inst.id)}`, apiKey).catch(() => ({
14
+ projects: []
15
+ }));
16
+ const projects = await Promise.all((resp.projects || []).map(async (project) => {
17
+ const events = await fetchPosthogProjectEventNames(inst.id, project.id, apiKey);
18
+ return { ...project, events };
19
+ }));
20
+ return { id: inst.id, displayName: inst.orgName || inst.email || inst.id, projects };
21
+ }));
22
+ }
23
+ instanceId(instance) {
24
+ return instance.id;
25
+ }
26
+ get skillsAggregateLines() {
27
+ return [" /** PostHog — query analytics for a specific project */", " posthog: posthogSkill,"];
28
+ }
29
+ prepareSection(input) {
30
+ const inst = this.requireInstance(input);
31
+ return {
32
+ id: inst.id,
33
+ skillToolType: buildSkillToolType(input.tools),
34
+ projectClass: buildResourceClassContext("PosthogProject", [
35
+ { classField: "projectId", type: "string", sourceField: "id" },
36
+ { classField: "name", type: "string", sourceField: "name" }
37
+ ], "name", inst.projects),
38
+ eventNames: [...new Set(inst.projects.flatMap(project => project.events))]
39
+ };
40
+ }
41
+ toolParamsPrintOptions(tool, input) {
42
+ const hasEventNames = (input.instances[0]?.projects ?? []).some(project => project.events.length > 0);
43
+ if (tool.name === "searchPosthogEvents" && hasEventNames) {
44
+ // Custom events type-check against the generated union; $-prefixed builtins are always allowed
45
+ return { fieldOverrides: { eventName: "PosthogEventName | `$${string}` | null" } };
46
+ }
47
+ return {};
48
+ }
49
+ }
50
+ async function fetchPosthogProjectEventNames(integrationId, projectId, apiKey) {
51
+ try {
52
+ const raw = await fetchWithAuth(`${ApiRoutes.POSTHOG.EVENTS}?integrationId=${encodeURIComponent(integrationId)}&projectId=${encodeURIComponent(projectId)}`, apiKey);
53
+ return posthogProjectEventsResponseSchema.parse(raw).events.map(event => event.name);
54
+ }
55
+ catch {
56
+ log.warn(`Could not fetch PostHog event names for project ${projectId}; eventName stays untyped until the next successful terse generate`);
57
+ return [];
58
+ }
59
+ }
60
+ //# sourceMappingURL=PosthogModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PosthogModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/posthog/PosthogModule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ExternalIntegrationType } from "terse-types";
2
+ import type { IntegrationModule } from "./IntegrationModule.js";
3
+ import { TerseModule } from "./terse/TerseModule.js";
4
+ /**
5
+ * Exhaustive by construction: adding an IntegrationType won't compile until its
6
+ * module exists here. The terse module lives outside the record because built-ins
7
+ * are always active and never fetched.
8
+ */
9
+ export declare const integrationModuleRegistry: Record<ExternalIntegrationType, IntegrationModule>;
10
+ export declare const terseModule: TerseModule;
11
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/providers/typescript/modules/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAG1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAa/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAcxF,CAAA;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA"}