terse-cli 0.3.5 → 0.3.6

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 (208) 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/metaAdsScope.d.ts +12 -0
  34. package/dist/commands/metaAdsScope.d.ts.map +1 -0
  35. package/dist/commands/metaAdsScope.js +120 -0
  36. package/dist/commands/metaAdsScope.js.map +1 -0
  37. package/dist/commands/serve.d.ts +1 -0
  38. package/dist/commands/serve.d.ts.map +1 -0
  39. package/dist/commands/serve.js +2 -0
  40. package/dist/commands/serve.js.map +1 -0
  41. package/dist/commands/terseCliTheme.d.ts +28 -0
  42. package/dist/commands/terseCliTheme.d.ts.map +1 -0
  43. package/dist/commands/terseCliTheme.js +68 -0
  44. package/dist/commands/terseCliTheme.js.map +1 -0
  45. package/dist/commands/tool.d.ts +6 -0
  46. package/dist/commands/tool.d.ts.map +1 -0
  47. package/dist/commands/tool.js +34 -0
  48. package/dist/commands/tool.js.map +1 -0
  49. package/dist/data/standardSlackEmoji.d.ts +2 -0
  50. package/dist/data/standardSlackEmoji.d.ts.map +1 -0
  51. package/dist/data/standardSlackEmoji.js +1978 -0
  52. package/dist/data/standardSlackEmoji.js.map +1 -0
  53. package/dist/data/standardSlackEmoji.json +1974 -0
  54. package/dist/deploy.d.ts +2 -1
  55. package/dist/deploy.d.ts.map +1 -1
  56. package/dist/deploy.js +61 -38
  57. package/dist/deploy.js.map +1 -1
  58. package/dist/eventFixture.js +1 -0
  59. package/dist/eventFixture.js.map +1 -1
  60. package/dist/generate.d.ts +2 -1
  61. package/dist/generate.d.ts.map +1 -1
  62. package/dist/generate.js +67 -69
  63. package/dist/generate.js.map +1 -1
  64. package/dist/init.d.ts +2 -1
  65. package/dist/init.d.ts.map +1 -1
  66. package/dist/init.js +45 -96
  67. package/dist/init.js.map +1 -1
  68. package/dist/integrate.d.ts +1 -0
  69. package/dist/integrate.d.ts.map +1 -1
  70. package/dist/integrate.js +191 -11
  71. package/dist/integrate.js.map +1 -1
  72. package/dist/nonInteractive.d.ts +4 -2
  73. package/dist/nonInteractive.d.ts.map +1 -1
  74. package/dist/nonInteractive.js +5 -2
  75. package/dist/nonInteractive.js.map +1 -1
  76. package/dist/perf.d.ts +9 -0
  77. package/dist/perf.d.ts.map +1 -0
  78. package/dist/perf.js +59 -0
  79. package/dist/perf.js.map +1 -0
  80. package/dist/providers/codegen.test.d.ts +2 -0
  81. package/dist/providers/codegen.test.d.ts.map +1 -0
  82. package/dist/providers/codegen.test.js +45 -0
  83. package/dist/providers/codegen.test.js.map +1 -0
  84. package/dist/providers/python/PythonProvider.js +1 -0
  85. package/dist/providers/python/PythonProvider.js.map +1 -1
  86. package/dist/providers/python/PythonProvider.test.d.ts +2 -0
  87. package/dist/providers/python/PythonProvider.test.d.ts.map +1 -0
  88. package/dist/providers/python/PythonProvider.test.js +169 -0
  89. package/dist/providers/python/PythonProvider.test.js.map +1 -0
  90. package/dist/providers/typescript/attioProjection.d.ts +50 -0
  91. package/dist/providers/typescript/attioProjection.d.ts.map +1 -0
  92. package/dist/providers/typescript/attioProjection.js +358 -0
  93. package/dist/providers/typescript/attioProjection.js.map +1 -0
  94. package/dist/providers/typescript/modules/cursor/CursorModule.d.ts +20 -0
  95. package/dist/providers/typescript/modules/cursor/CursorModule.d.ts.map +1 -0
  96. package/dist/providers/typescript/modules/cursor/CursorModule.js +27 -0
  97. package/dist/providers/typescript/modules/cursor/CursorModule.js.map +1 -0
  98. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.d.ts +27 -0
  99. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.d.ts.map +1 -0
  100. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.js +54 -0
  101. package/dist/providers/typescript/modules/google_search_console/GoogleSearchConsoleModule.js.map +1 -0
  102. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.d.ts +20 -0
  103. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.d.ts.map +1 -0
  104. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.js +27 -0
  105. package/dist/providers/typescript/modules/higgsfield/HiggsfieldModule.js.map +1 -0
  106. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.d.ts +24 -0
  107. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.d.ts.map +1 -0
  108. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.js +34 -0
  109. package/dist/providers/typescript/modules/meta_ads/MetaAdsModule.js.map +1 -0
  110. package/dist/providers/typescript/modules/registry.d.ts.map +1 -1
  111. package/dist/providers/typescript/modules/registry.js +7 -1
  112. package/dist/providers/typescript/modules/registry.js.map +1 -1
  113. package/dist/providers/typescript/prepareCodegenData.test.d.ts +2 -0
  114. package/dist/providers/typescript/prepareCodegenData.test.d.ts.map +1 -0
  115. package/dist/providers/typescript/prepareCodegenData.test.js +54 -0
  116. package/dist/providers/typescript/prepareCodegenData.test.js.map +1 -0
  117. package/dist/providers/typescript/projectedTypes.d.ts +11 -0
  118. package/dist/providers/typescript/projectedTypes.d.ts.map +1 -0
  119. package/dist/providers/typescript/projectedTypes.js +53 -0
  120. package/dist/providers/typescript/projectedTypes.js.map +1 -0
  121. package/dist/providers/typescript/projectionPrinter.d.ts +26 -0
  122. package/dist/providers/typescript/projectionPrinter.d.ts.map +1 -0
  123. package/dist/providers/typescript/projectionPrinter.js +110 -0
  124. package/dist/providers/typescript/projectionPrinter.js.map +1 -0
  125. package/dist/providers/typescript/replayLogDedupe.d.ts +6 -0
  126. package/dist/providers/typescript/replayLogDedupe.d.ts.map +1 -0
  127. package/dist/providers/typescript/replayLogDedupe.js +156 -0
  128. package/dist/providers/typescript/replayLogDedupe.js.map +1 -0
  129. package/dist/providers/typescript/triggerPayloads.d.ts +7 -0
  130. package/dist/providers/typescript/triggerPayloads.d.ts.map +1 -0
  131. package/dist/providers/typescript/triggerPayloads.js +60 -0
  132. package/dist/providers/typescript/triggerPayloads.js.map +1 -0
  133. package/dist/providers/typescript/triggerTypeRegistry.d.ts +7 -0
  134. package/dist/providers/typescript/triggerTypeRegistry.d.ts.map +1 -0
  135. package/dist/providers/typescript/triggerTypeRegistry.js +198 -0
  136. package/dist/providers/typescript/triggerTypeRegistry.js.map +1 -0
  137. package/dist/run.d.ts +2 -11
  138. package/dist/run.d.ts.map +1 -1
  139. package/dist/run.js +42 -153
  140. package/dist/run.js.map +1 -1
  141. package/dist/sampleEventId.d.ts +0 -4
  142. package/dist/sampleEventId.d.ts.map +1 -1
  143. package/dist/sampleEventId.js +0 -4
  144. package/dist/sampleEventId.js.map +1 -1
  145. package/dist/shared/ApiRoutes.d.ts +19 -0
  146. package/dist/shared/ApiRoutes.d.ts.map +1 -1
  147. package/dist/shared/ApiRoutes.js +17 -1
  148. package/dist/shared/ApiRoutes.js.map +1 -1
  149. package/dist/shared/Configs.d.ts +24 -2
  150. package/dist/shared/Configs.d.ts.map +1 -1
  151. package/dist/shared/Configs.js +32 -2
  152. package/dist/shared/Configs.js.map +1 -1
  153. package/dist/shared/Integrations.d.ts +18 -1
  154. package/dist/shared/Integrations.d.ts.map +1 -1
  155. package/dist/shared/Integrations.js +10 -1
  156. package/dist/shared/Integrations.js.map +1 -1
  157. package/dist/shared/InvalidationKeys.d.ts +1 -0
  158. package/dist/shared/InvalidationKeys.d.ts.map +1 -1
  159. package/dist/shared/InvalidationKeys.js +3 -0
  160. package/dist/shared/InvalidationKeys.js.map +1 -1
  161. package/dist/shared/ModelEvents.d.ts +9 -0
  162. package/dist/shared/ModelEvents.d.ts.map +1 -1
  163. package/dist/shared/ModelEvents.js +15 -0
  164. package/dist/shared/ModelEvents.js.map +1 -1
  165. package/dist/shared/ToolDisplayUtils.d.ts.map +1 -1
  166. package/dist/shared/ToolDisplayUtils.js +107 -11
  167. package/dist/shared/ToolDisplayUtils.js.map +1 -1
  168. package/dist/shared/types.d.ts +1013 -108
  169. package/dist/shared/types.d.ts.map +1 -1
  170. package/dist/shared/types.js.map +1 -1
  171. package/dist/test.d.ts +2 -1
  172. package/dist/test.d.ts.map +1 -1
  173. package/dist/test.js +43 -23
  174. package/dist/test.js.map +1 -1
  175. package/dist/triggerParseDetail.d.ts +8 -0
  176. package/dist/triggerParseDetail.d.ts.map +1 -0
  177. package/dist/triggerParseDetail.js +30 -0
  178. package/dist/triggerParseDetail.js.map +1 -0
  179. package/dist/util.d.ts +2 -3
  180. package/dist/util.d.ts.map +1 -1
  181. package/dist/util.js +3 -3
  182. package/dist/util.js.map +1 -1
  183. package/package.json +3 -3
  184. package/src/providers/typescript/modules/google_search_console/google_search_console.tools.hbs +16 -0
  185. package/src/providers/typescript/modules/higgsfield/higgsfield.tools.hbs +12 -0
  186. package/src/providers/typescript/modules/meta_ads/meta_ads.tools.hbs +16 -0
  187. package/templates/typescript/codegen/.impeccable/hook.cache.json +1 -0
  188. package/templates/typescript/codegen/sdk-primitives.hbs +6 -0
  189. package/dist/jsonOutput.d.ts +0 -19
  190. package/dist/jsonOutput.d.ts.map +0 -1
  191. package/dist/jsonOutput.js +0 -25
  192. package/dist/jsonOutput.js.map +0 -1
  193. package/dist/providers/typescript/parkSignals.d.ts +0 -7
  194. package/dist/providers/typescript/parkSignals.d.ts.map +0 -1
  195. package/dist/providers/typescript/parkSignals.js +0 -45
  196. package/dist/providers/typescript/parkSignals.js.map +0 -1
  197. package/dist/replay.d.ts +0 -3
  198. package/dist/replay.d.ts.map +0 -1
  199. package/dist/replay.js +0 -20
  200. package/dist/replay.js.map +0 -1
  201. package/dist/testRelay.d.ts +0 -6
  202. package/dist/testRelay.d.ts.map +0 -1
  203. package/dist/testRelay.js +0 -91
  204. package/dist/testRelay.js.map +0 -1
  205. package/dist/urls.d.ts +0 -3
  206. package/dist/urls.d.ts.map +0 -1
  207. package/dist/urls.js +0 -27
  208. package/dist/urls.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaAdsModule.d.ts","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/meta_ads/MetaAdsModule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,aAAa,CAAA;AACvE,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,aAAc,SAAQ,iBAAiB,CAAC,mBAAmB,EAAE,qBAAqB,CAAC;IAC5F,QAAQ,CAAC,IAAI,4BAA2B;IACxC,QAAQ,CAAC,YAAY,cAAa;IAClC,SAAS,CAAC,QAAQ,CAAC,cAAc,WAAwC;IAEnE,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAUpE,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;CAgBjG;AAED,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,gBAAgB,EAAE,CAAA;CACjC;AAED,MAAM,WAAW,qBAAqB;IAClC,EAAE,EAAE,MAAM,CAAA;IACV,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,oBAAoB,CAAA;CACvC"}
@@ -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 MetaAdsModule extends IntegrationModule {
6
+ type = IntegrationType.META_ADS;
7
+ summaryLabel = "Meta Ads";
8
+ sectionImports = ["MetaAdsOutputConfig", "TypedSkill"];
9
+ async fetchInstances(apiKey) {
10
+ const instances = await fetchWithAuth(ApiRoutes.META_ADS.INTEGRATIONS, apiKey);
11
+ return Promise.all(instances.map(async (inst) => {
12
+ const adAccounts = await fetchWithAuth(buildRoute(ApiRoutes.META_ADS.AD_ACCOUNTS, { integrationId: inst.id }), apiKey).catch(() => []);
13
+ return { id: inst.id, displayName: inst.accountName || inst.id, adAccounts };
14
+ }));
15
+ }
16
+ instanceId(instance) {
17
+ return instance.id;
18
+ }
19
+ get skillsAggregateLines() {
20
+ return [" /** Meta Ads — read campaign performance, sync custom audiences, send offline conversions */", " metaAds: metaAdsSkill,"];
21
+ }
22
+ prepareSection(input) {
23
+ const inst = this.requireInstance(input);
24
+ return {
25
+ id: inst.id,
26
+ skillToolType: buildSkillToolType(input.tools),
27
+ adAccountClass: buildResourceClassContext("MetaAdsAdAccount", [
28
+ { classField: "accountId", type: "string", sourceField: "accountId" },
29
+ { classField: "name", type: "string", sourceField: "name" }
30
+ ], "name", inst.adAccounts)
31
+ };
32
+ }
33
+ }
34
+ //# sourceMappingURL=MetaAdsModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MetaAdsModule.js","sourceRoot":"","sources":["../../../../../src/providers/typescript/modules/meta_ads/MetaAdsModule.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,aAAc,SAAQ,iBAA6D;IACnF,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAA;IAC/B,YAAY,GAAG,UAAU,CAAA;IACf,cAAc,GAAG,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAA;IAEzE,KAAK,CAAC,cAAc,CAAC,MAAc;QAC/B,MAAM,SAAS,GAAG,MAAM,aAAa,CAAuB,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAA;QACpG,OAAO,OAAO,CAAC,GAAG,CACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAgC,EAAE;YACvD,MAAM,UAAU,GAAG,MAAM,aAAa,CAAqB,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAwB,CAAC,CAAA;YAChL,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,CAAA;QAChF,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED,UAAU,CAAC,QAA6B;QACpC,OAAO,QAAQ,CAAC,EAAE,CAAA;IACtB,CAAC;IAED,IAAc,oBAAoB;QAC9B,OAAO,CAAC,kGAAkG,EAAE,4BAA4B,CAAC,CAAA;IAC7I,CAAC;IAES,cAAc,CAAC,KAA6C;QAClE,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,cAAc,EAAE,yBAAyB,CACrC,kBAAkB,EAClB;gBACI,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE;gBACrE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE;aAC9D,EACD,MAAM,EACN,IAAI,CAAC,UAAU,CAClB;SACJ,CAAA;IACL,CAAC;CACJ"}
@@ -1 +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;AAc/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAexF,CAAA;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA"}
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;AAiB/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAGpD;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAkBxF,CAAA;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA"}
@@ -4,9 +4,12 @@ import { AttioModule } from "./attio/AttioModule.js";
4
4
  import { DatadogModule } from "./datadog/DatadogModule.js";
5
5
  import { GithubModule } from "./github/GithubModule.js";
6
6
  import { GmailModule } from "./gmail/GmailModule.js";
7
+ import { GoogleSearchConsoleModule } from "./google_search_console/GoogleSearchConsoleModule.js";
7
8
  import { HeyReachModule } from "./hey_reach/HeyReachModule.js";
9
+ import { HiggsfieldModule } from "./higgsfield/HiggsfieldModule.js";
8
10
  import { LaunchDarklyModule } from "./launchdarkly/LaunchDarklyModule.js";
9
11
  import { LinearModule } from "./linear/LinearModule.js";
12
+ import { MetaAdsModule } from "./meta_ads/MetaAdsModule.js";
10
13
  import { NotionModule } from "./notion/NotionModule.js";
11
14
  import { PosthogModule } from "./posthog/PosthogModule.js";
12
15
  import { ResendModule } from "./resend/ResendModule.js";
@@ -33,7 +36,10 @@ export const integrationModuleRegistry = {
33
36
  [IntegrationType.WORKOS]: new WorkOSModule(),
34
37
  [IntegrationType.ATTIO]: new AttioModule(),
35
38
  [IntegrationType.SNOWFLAKE]: new SnowflakeModule(),
36
- [IntegrationType.APOLLO]: new ApolloModule()
39
+ [IntegrationType.APOLLO]: new ApolloModule(),
40
+ [IntegrationType.GOOGLE_SEARCH_CONSOLE]: new GoogleSearchConsoleModule(),
41
+ [IntegrationType.META_ADS]: new MetaAdsModule(),
42
+ [IntegrationType.HIGGSFIELD]: new HiggsfieldModule()
37
43
  };
38
44
  export const terseModule = new TerseModule();
39
45
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/providers/typescript/modules/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAuD;IACzF,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,cAAc,EAAE;IACjD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,aAAa,EAAE;IAC9C,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,aAAa,EAAE;IAC9C,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,kBAAkB,EAAE;IACxD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,eAAe,EAAE;IAClD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;CAC/C,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/providers/typescript/modules/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAG7C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,sDAAsD,CAAA;AAChG,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAA;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD;;;;GAIG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAuD;IACzF,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,cAAc,EAAE;IACjD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,aAAa,EAAE;IAC9C,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,IAAI,aAAa,EAAE;IAC9C,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,kBAAkB,EAAE;IACxD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,IAAI,WAAW,EAAE;IAC1C,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,IAAI,eAAe,EAAE;IAClD,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,IAAI,YAAY,EAAE;IAC5C,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,IAAI,yBAAyB,EAAE;IACxE,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,IAAI,aAAa,EAAE;IAC/C,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,IAAI,gBAAgB,EAAE;CACvD,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prepareCodegenData.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareCodegenData.test.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/prepareCodegenData.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import assert from "node:assert/strict";
2
+ import test from "node:test";
3
+ import { jsonSchemaToTs } from "./prepareCodegenData.js";
4
+ test("required nullable properties render as optional while preserving null", () => {
5
+ const schema = {
6
+ type: "object",
7
+ properties: {
8
+ thread_ts: {
9
+ anyOf: [{ type: "string" }, { type: "null" }],
10
+ },
11
+ blocks: {
12
+ anyOf: [{ type: "string" }, { type: "null" }],
13
+ },
14
+ message: {
15
+ type: "string",
16
+ },
17
+ },
18
+ required: ["thread_ts", "blocks", "message"],
19
+ };
20
+ assert.equal(jsonSchemaToTs(schema, 0), `{
21
+ thread_ts?: string | null
22
+ blocks?: string | null
23
+ message: string
24
+ }`);
25
+ });
26
+ test("optional nullable properties stay optional", () => {
27
+ const schema = {
28
+ type: "object",
29
+ properties: {
30
+ cursor: {
31
+ anyOf: [{ type: "string" }, { type: "null" }],
32
+ },
33
+ },
34
+ required: [],
35
+ };
36
+ assert.equal(jsonSchemaToTs(schema, 0), `{
37
+ cursor?: string | null
38
+ }`);
39
+ });
40
+ test("required non-nullable properties stay required", () => {
41
+ const schema = {
42
+ type: "object",
43
+ properties: {
44
+ channelId: {
45
+ type: "string",
46
+ },
47
+ },
48
+ required: ["channelId"],
49
+ };
50
+ assert.equal(jsonSchemaToTs(schema, 0), `{
51
+ channelId: string
52
+ }`);
53
+ });
54
+ //# sourceMappingURL=prepareCodegenData.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prepareCodegenData.test.js","sourceRoot":"","sources":["../../../src/providers/typescript/prepareCodegenData.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,IAAI,MAAM,WAAW,CAAA;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAExD,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IAC/E,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,SAAS,EAAE;gBACP,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;YACD,MAAM,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC;KAC/C,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;;;EAIN,CACG,CAAA;AACL,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACpD,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,MAAM,EAAE;gBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAChD;SACJ;QACD,QAAQ,EAAE,EAAE;KACf,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;EAEN,CACG,CAAA;AACL,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gDAAgD,EAAE,GAAG,EAAE;IACxD,MAAM,MAAM,GAAe;QACvB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,SAAS,EAAE;gBACP,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC;KAC1B,CAAA;IAED,MAAM,CAAC,KAAK,CACR,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,EACzB;;EAEN,CACG,CAAA;AACL,CAAC,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ export declare function projectSchemaToTsDeclaration(options: ProjectSchemaOptions): Promise<string>;
3
+ export interface ProjectSchemaOptions {
4
+ typeName: string;
5
+ schema: z.core.$ZodType;
6
+ io: "input" | "output";
7
+ omitProperties?: readonly string[];
8
+ fieldTypeOverrides?: ReadonlyMap<z.core.$ZodType, string>;
9
+ propertyTypeOverrides?: Readonly<Record<string, string>>;
10
+ }
11
+ //# sourceMappingURL=projectedTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectedTypes.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/projectedTypes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAQjG;AA8CD,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAA;IACvB,EAAE,EAAE,OAAO,GAAG,QAAQ,CAAA;IACtB,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,kBAAkB,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzD,qBAAqB,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC3D"}
@@ -0,0 +1,53 @@
1
+ import { compile } from "json-schema-to-typescript";
2
+ import { z } from "zod";
3
+ export async function projectSchemaToTsDeclaration(options) {
4
+ const jsonSchema = toCompilableJsonSchema(options);
5
+ const declaration = await compile(jsonSchema, options.typeName, {
6
+ bannerComment: "",
7
+ additionalProperties: false,
8
+ style: { tabWidth: 4, semi: false, printWidth: 120 }
9
+ });
10
+ return declaration.trimEnd();
11
+ }
12
+ function toCompilableJsonSchema(options) {
13
+ const rawSchema = z.toJSONSchema(options.schema, {
14
+ io: options.io,
15
+ unrepresentable: "any",
16
+ reused: "inline",
17
+ override: ctx => {
18
+ const tsType = options.fieldTypeOverrides?.get(ctx.zodSchema) ?? dateTsType(ctx.zodSchema);
19
+ if (tsType !== undefined) {
20
+ const jsonSchema = ctx.jsonSchema;
21
+ jsonSchema.tsType = tsType;
22
+ }
23
+ }
24
+ });
25
+ // JSON roundtrip converts zod's JSON Schema type to json-schema-to-typescript's without a cast
26
+ const jsonSchema = JSON.parse(JSON.stringify(rawSchema));
27
+ for (const property of options.omitProperties ?? []) {
28
+ omitProperty(jsonSchema, property);
29
+ }
30
+ for (const [property, tsType] of Object.entries(options.propertyTypeOverrides ?? {})) {
31
+ overridePropertyType(jsonSchema, property, tsType);
32
+ }
33
+ return jsonSchema;
34
+ }
35
+ // z.date() is unrepresentable in JSON Schema; the nonstandard tsType keyword tells the compiler to print Date
36
+ function dateTsType(schema) {
37
+ return schema._zod.def.type === "date" ? "Date" : undefined;
38
+ }
39
+ function omitProperty(jsonSchema, property) {
40
+ if (jsonSchema.properties) {
41
+ delete jsonSchema.properties[property];
42
+ }
43
+ if (Array.isArray(jsonSchema.required)) {
44
+ jsonSchema.required = jsonSchema.required.filter(name => name !== property);
45
+ }
46
+ }
47
+ function overridePropertyType(jsonSchema, property, tsType) {
48
+ const existing = jsonSchema.properties?.[property];
49
+ if (!jsonSchema.properties || existing === undefined)
50
+ return;
51
+ jsonSchema.properties[property] = typeof existing === "object" && existing.description ? { description: existing.description, tsType } : { tsType };
52
+ }
53
+ //# sourceMappingURL=projectedTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectedTypes.js","sourceRoot":"","sources":["../../../src/providers/typescript/projectedTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Prints a zod schema as a fully resolved, human-readable TypeScript declaration
4
+ * ("projected type") for terse.generated.ts. Field `.describe()` texts survive as JSDoc.
5
+ */
6
+ export declare function printProjectedType(options: ProjectionOptions): Promise<string>;
7
+ export declare function projectionTypeName(toolName: string, suffix: "Params" | "Result"): string;
8
+ export interface HoistedProjection {
9
+ name: string;
10
+ schema: z.ZodType;
11
+ }
12
+ export interface ProjectionOptions {
13
+ typeName: string;
14
+ schema: z.ZodType;
15
+ io: "input" | "output";
16
+ description?: string;
17
+ /** Top-level fields removed from the projection (e.g. auto-filled integrationId). */
18
+ omitFields?: string[];
19
+ /** Dot-path within the schema -> TypeScript type expression printed instead. */
20
+ fieldOverrides?: Record<string, string>;
21
+ /** Printed verbatim after the type name, e.g. "<TBody = unknown>". */
22
+ typeParams?: string;
23
+ /** Shared shapes replaced by a reference to their hoisted declaration. */
24
+ hoisted?: HoistedProjection[];
25
+ }
26
+ //# sourceMappingURL=projectionPrinter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionPrinter.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/projectionPrinter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAkBpF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAOxF;AA2FD,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAA;IACjB,EAAE,EAAE,OAAO,GAAG,QAAQ,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACvC,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,iBAAiB,EAAE,CAAA;CAChC"}
@@ -0,0 +1,110 @@
1
+ import { compile } from "json-schema-to-typescript";
2
+ import { z } from "zod";
3
+ /**
4
+ * Prints a zod schema as a fully resolved, human-readable TypeScript declaration
5
+ * ("projected type") for terse.generated.ts. Field `.describe()` texts survive as JSDoc.
6
+ */
7
+ export async function printProjectedType(options) {
8
+ const jsonSchema = toJsonSchema(options.schema, options.io);
9
+ if (options.omitFields)
10
+ omitFields(jsonSchema, options.omitFields);
11
+ if (options.hoisted)
12
+ replaceHoistedShapes(jsonSchema, buildHoistedMatchers(options.hoisted, options.io));
13
+ if (options.fieldOverrides)
14
+ applyFieldOverrides(jsonSchema, options.fieldOverrides);
15
+ const compiled = await compile(structuredClone(jsonSchema), options.typeName, {
16
+ bannerComment: "",
17
+ additionalProperties: false,
18
+ format: true,
19
+ style: { tabWidth: 4, semi: false, printWidth: 120 }
20
+ });
21
+ let declaration = compiled.trim();
22
+ if (options.typeParams)
23
+ declaration = addTypeParams(declaration, options.typeName, options.typeParams);
24
+ if (options.description)
25
+ declaration = `/** ${options.description} */\n${declaration}`;
26
+ return declaration;
27
+ }
28
+ export function projectionTypeName(toolName, suffix) {
29
+ return (toolName
30
+ .split("_")
31
+ .map(word => word.charAt(0).toUpperCase() + word.slice(1))
32
+ .join("") + suffix);
33
+ }
34
+ function toJsonSchema(schema, io) {
35
+ const jsonSchema = z.toJSONSchema(schema, {
36
+ io,
37
+ unrepresentable: "any",
38
+ reused: "inline",
39
+ override: ctx => {
40
+ if (ctx.zodSchema._zod.def.type === "date") {
41
+ ctx.jsonSchema.tsType = "Date";
42
+ }
43
+ }
44
+ });
45
+ delete jsonSchema.$schema;
46
+ return jsonSchema;
47
+ }
48
+ function omitFields(jsonSchema, fields) {
49
+ const properties = jsonSchema.properties;
50
+ if (!properties)
51
+ return;
52
+ for (const field of fields) {
53
+ delete properties[field];
54
+ }
55
+ if (jsonSchema.required) {
56
+ jsonSchema.required = jsonSchema.required.filter(name => !fields.includes(name));
57
+ }
58
+ }
59
+ function buildHoistedMatchers(hoisted, io) {
60
+ return hoisted.map(entry => ({ name: entry.name, matcher: stableStringify(toJsonSchema(entry.schema, io)) }));
61
+ }
62
+ function replaceHoistedShapes(node, matchers) {
63
+ if (typeof node !== "object" || node === null)
64
+ return;
65
+ for (const [key, child] of Object.entries(node)) {
66
+ if (typeof child !== "object" || child === null)
67
+ continue;
68
+ const match = matchers.find(entry => stableStringify(child) === entry.matcher);
69
+ if (match) {
70
+ ;
71
+ node[key] = { tsType: match.name };
72
+ }
73
+ else {
74
+ replaceHoistedShapes(child, matchers);
75
+ }
76
+ }
77
+ }
78
+ function applyFieldOverrides(jsonSchema, overrides) {
79
+ for (const [path, tsType] of Object.entries(overrides)) {
80
+ const segments = path.split(".");
81
+ const leaf = segments.pop();
82
+ if (!leaf)
83
+ continue;
84
+ let node = jsonSchema;
85
+ for (const segment of segments) {
86
+ node = node?.properties?.[segment];
87
+ }
88
+ const properties = node?.properties;
89
+ if (properties?.[leaf]) {
90
+ const description = properties[leaf].description;
91
+ properties[leaf] = description ? { tsType, description } : { tsType };
92
+ }
93
+ }
94
+ }
95
+ function addTypeParams(declaration, typeName, typeParams) {
96
+ return declaration.replace(`interface ${typeName} `, `interface ${typeName}${typeParams} `).replace(`type ${typeName} =`, `type ${typeName}${typeParams} =`);
97
+ }
98
+ function stableStringify(value) {
99
+ if (Array.isArray(value)) {
100
+ return `[${value.map(stableStringify).join(",")}]`;
101
+ }
102
+ if (typeof value === "object" && value !== null) {
103
+ const entries = Object.entries(value)
104
+ .sort(([left], [right]) => left.localeCompare(right))
105
+ .map(([key, child]) => `${JSON.stringify(key)}:${stableStringify(child)}`);
106
+ return `{${entries.join(",")}}`;
107
+ }
108
+ return JSON.stringify(value);
109
+ }
110
+ //# sourceMappingURL=projectionPrinter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionPrinter.js","sourceRoot":"","sources":["../../../src/providers/typescript/projectionPrinter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DirectHandler } from "@workflow/world-local";
2
+ import type { TerseWorld } from "../../terseWorld.js";
3
+ export declare function withReplayLogDedupe(handler: DirectHandler): DirectHandler;
4
+ export declare function withoutReplayLogDedupe(handler: DirectHandler): DirectHandler;
5
+ export declare function withReplayPassSignals(world: TerseWorld): TerseWorld;
6
+ //# sourceMappingURL=replayLogDedupe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayLogDedupe.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/replayLogDedupe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAK1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAMrD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAMzE;AAKD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAE5E;AAMD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAEnE"}
@@ -0,0 +1,156 @@
1
+ import { AsyncLocalStorage } from "node:async_hooks";
2
+ import { format } from "node:util";
3
+ import { z } from "zod";
4
+ // The runtime drives a whole run inside one queue delivery: it replays the
5
+ // workflow body top-down once per step suspension, so console calls outside
6
+ // steps repeat once per replay pass. Each pass re-emits a prefix of the
7
+ // previous pass's calls; suppressing that matching prefix prints each line once.
8
+ export function withReplayLogDedupe(handler) {
9
+ return async (req) => {
10
+ const runId = await peekRunId(req);
11
+ if (!runId)
12
+ return handler(req);
13
+ return ReplayLogDeduper.getInstance().runWithDedupe(runId, () => handler(req));
14
+ };
15
+ }
16
+ // Steps run once (results are journaled), so their logs must never be deduped.
17
+ // The local queue invokes handlers inside the async context that enqueued the
18
+ // message (for steps that is the workflow delivery itself), so exit it explicitly.
19
+ export function withoutReplayLogDedupe(handler) {
20
+ return async (req) => ReplayLogDeduper.getInstance().runOutsideDedupe(() => handler(req));
21
+ }
22
+ // The runtime reloads the run's event journal at the start of every replay
23
+ // pass, and writes journal events only once a pass is past replay (committing
24
+ // a suspension, starting a step). Those two world calls delimit exactly the
25
+ // replayed portion of each pass, which is the only output dedupe may touch.
26
+ export function withReplayPassSignals(world) {
27
+ return { ...world, events: tapEvents(world.events) };
28
+ }
29
+ const WorkflowInvokePayload = z.object({ runId: z.string() });
30
+ async function peekRunId(req) {
31
+ try {
32
+ const payload = WorkflowInvokePayload.safeParse(await req.clone().json());
33
+ return payload.success ? payload.data.runId : null;
34
+ }
35
+ catch {
36
+ return null;
37
+ }
38
+ }
39
+ function tapEvents(events) {
40
+ return {
41
+ ...events,
42
+ list: params => {
43
+ ReplayLogDeduper.getInstance().markReplayPassStart(params.runId);
44
+ return events.list(params);
45
+ },
46
+ create: (runId, data, params) => {
47
+ if (data.eventType === "run_created")
48
+ return events.create(runId, data, params);
49
+ if (runId === null)
50
+ throw new Error(`events.create requires a runId for "${data.eventType}" events`);
51
+ // run_started is the first delivery's bootstrap write and precedes
52
+ // the first replay; every other event commits post-replay work.
53
+ if (data.eventType !== "run_started")
54
+ ReplayLogDeduper.getInstance().markPastReplay(runId);
55
+ return events.create(runId, data, params);
56
+ }
57
+ };
58
+ }
59
+ const CONSOLE_LEVELS = ["log", "info", "warn", "error"];
60
+ const MAX_TRACKED_RUNS = 256;
61
+ class ReplayLogDeduper {
62
+ static instance = null;
63
+ static getInstance() {
64
+ return (ReplayLogDeduper.instance ??= new ReplayLogDeduper());
65
+ }
66
+ deliveryStorage = new AsyncLocalStorage();
67
+ seenCallsByRun = new Map();
68
+ activeDeliveries = 0;
69
+ restoreConsole = null;
70
+ constructor() { }
71
+ async runWithDedupe(runId, fn) {
72
+ this.enterDelivery();
73
+ try {
74
+ const state = { runId, seenCalls: this.seenCallsFor(runId), cursor: 0, pastReplay: false };
75
+ return await this.deliveryStorage.run(state, fn);
76
+ }
77
+ finally {
78
+ this.leaveDelivery();
79
+ }
80
+ }
81
+ runOutsideDedupe(fn) {
82
+ return this.deliveryStorage.exit(fn);
83
+ }
84
+ markReplayPassStart(runId) {
85
+ const state = this.deliveryStorage.getStore();
86
+ if (!state || state.runId !== runId)
87
+ return;
88
+ state.cursor = 0;
89
+ state.pastReplay = false;
90
+ }
91
+ markPastReplay(runId) {
92
+ const state = this.deliveryStorage.getStore();
93
+ if (!state || state.runId !== runId)
94
+ return;
95
+ state.pastReplay = true;
96
+ }
97
+ // The console filter is installed only while a delivery is in flight, and
98
+ // over whatever methods are current: `terse test` intercepts console for
99
+ // its spinner UI, and dedupe must wrap that interception, not replace it.
100
+ enterDelivery() {
101
+ this.activeDeliveries++;
102
+ if (this.restoreConsole)
103
+ return;
104
+ const original = { log: console.log, info: console.info, warn: console.warn, error: console.error };
105
+ CONSOLE_LEVELS.forEach(level => {
106
+ console[level] = (...args) => {
107
+ if (this.shouldSuppress(level, format(...args)))
108
+ return;
109
+ original[level](...args);
110
+ };
111
+ });
112
+ this.restoreConsole = () => {
113
+ CONSOLE_LEVELS.forEach(level => {
114
+ console[level] = original[level];
115
+ });
116
+ };
117
+ }
118
+ leaveDelivery() {
119
+ this.activeDeliveries--;
120
+ if (this.activeDeliveries > 0)
121
+ return;
122
+ this.restoreConsole?.();
123
+ this.restoreConsole = null;
124
+ }
125
+ shouldSuppress(level, text) {
126
+ const state = this.deliveryStorage.getStore();
127
+ if (!state || state.pastReplay)
128
+ return false;
129
+ const expected = state.seenCalls[state.cursor];
130
+ if (expected && expected.level === level && expected.text === text) {
131
+ state.cursor++;
132
+ return true;
133
+ }
134
+ // A mismatch means the pass diverged from the recorded sequence
135
+ // (e.g. a non-deterministic log); print from here on and re-record.
136
+ if (state.cursor < state.seenCalls.length)
137
+ state.seenCalls.length = state.cursor;
138
+ state.seenCalls.push({ level, text });
139
+ state.cursor++;
140
+ return false;
141
+ }
142
+ seenCallsFor(runId) {
143
+ const existing = this.seenCallsByRun.get(runId);
144
+ if (existing)
145
+ return existing;
146
+ if (this.seenCallsByRun.size >= MAX_TRACKED_RUNS) {
147
+ const oldestRunId = this.seenCallsByRun.keys().next().value;
148
+ if (oldestRunId !== undefined)
149
+ this.seenCallsByRun.delete(oldestRunId);
150
+ }
151
+ const seenCalls = [];
152
+ this.seenCallsByRun.set(runId, seenCalls);
153
+ return seenCalls;
154
+ }
155
+ }
156
+ //# sourceMappingURL=replayLogDedupe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayLogDedupe.js","sourceRoot":"","sources":["../../../src/providers/typescript/replayLogDedupe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function buildTriggerPayloadSection(importedNames: ReadonlySet<string>): Promise<TriggerPayloadSection>;
2
+ export interface TriggerPayloadSection {
3
+ declarations: string[];
4
+ projectedNames: ReadonlySet<string>;
5
+ extraImports: ReadonlySet<string>;
6
+ }
7
+ //# sourceMappingURL=triggerPayloads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"triggerPayloads.d.ts","sourceRoot":"","sources":["../../../src/providers/typescript/triggerPayloads.ts"],"names":[],"mappings":"AAMA,wBAAsB,0BAA0B,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC,CASnH;AAqDD,MAAM,WAAW,qBAAqB;IAClC,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,cAAc,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CACpC"}
@@ -0,0 +1,60 @@
1
+ import { triggerPayloadProjections } from "terse-types";
2
+ import { CliError } from "../../cliError.js";
3
+ import { projectSchemaToTsDeclaration } from "./projectedTypes.js";
4
+ export async function buildTriggerPayloadSection(importedNames) {
5
+ const projectedNames = collectProjectedNames(importedNames);
6
+ const orderedNames = Object.keys(triggerPayloadProjections).filter(name => projectedNames.has(name));
7
+ const declarations = await Promise.all(orderedNames.map(name => buildDeclaration(name, triggerPayloadProjections[name])));
8
+ return {
9
+ declarations,
10
+ projectedNames,
11
+ extraImports: collectExtraImports(orderedNames)
12
+ };
13
+ }
14
+ function collectProjectedNames(importedNames) {
15
+ const projected = new Set();
16
+ const visit = (name) => {
17
+ const projection = triggerPayloadProjections[name];
18
+ if (!projection || projected.has(name))
19
+ return;
20
+ projected.add(name);
21
+ if (projection.kind === "union")
22
+ projection.members.forEach(visit);
23
+ };
24
+ importedNames.forEach(visit);
25
+ return projected;
26
+ }
27
+ async function buildDeclaration(name, projection) {
28
+ switch (projection.kind) {
29
+ case "union":
30
+ return `export type ${name} = ${projection.members.join(" | ")}`;
31
+ case "schema":
32
+ return wrapInSdkTrigger(name, projection.typeParams ?? "", await projectSchemaToTsDeclaration({
33
+ typeName: name,
34
+ schema: projection.schema,
35
+ io: "output",
36
+ propertyTypeOverrides: projection.fieldTypes
37
+ }));
38
+ default:
39
+ throw projection;
40
+ }
41
+ }
42
+ function wrapInSdkTrigger(name, typeParams, declaration) {
43
+ const interfacePrefix = `export interface ${name} `;
44
+ if (!declaration.startsWith(interfacePrefix)) {
45
+ throw new CliError("trigger_projection_shape", `Projected trigger payload ${name} did not compile to an interface declaration.`);
46
+ }
47
+ return `export type ${name}${typeParams} = SDKTrigger<${declaration.slice(interfacePrefix.length)}>`;
48
+ }
49
+ function collectExtraImports(projectedNames) {
50
+ const extraImports = new Set();
51
+ for (const name of projectedNames) {
52
+ const projection = triggerPayloadProjections[name];
53
+ if (projection.kind !== "schema")
54
+ continue;
55
+ extraImports.add("SDKTrigger");
56
+ projection.importTypes?.forEach(importType => extraImports.add(importType));
57
+ }
58
+ return extraImports;
59
+ }
60
+ //# sourceMappingURL=triggerPayloads.js.map