@lssm/lib.contracts-integrations 9.0.1

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 (850) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +536 -0
  3. package/dist/contracts-integrations.feature.d.ts +1 -0
  4. package/dist/contracts-integrations.feature.js +2 -0
  5. package/dist/index.d.ts +25 -0
  6. package/dist/index.js +22 -0
  7. package/dist/integrations/advertising/index.d.ts +4 -0
  8. package/dist/integrations/advertising/index.js +2 -0
  9. package/dist/integrations/advertising/recipe-schema.d.ts +114 -0
  10. package/dist/integrations/advertising/recipe-schema.js +2 -0
  11. package/dist/integrations/advertising/recipe.d.ts +53 -0
  12. package/dist/integrations/advertising/recipe.js +1 -0
  13. package/dist/integrations/advertising/specs.d.ts +5 -0
  14. package/dist/integrations/advertising/specs.js +2 -0
  15. package/dist/integrations/advertising/types.d.ts +97 -0
  16. package/dist/integrations/advertising/types.js +2 -0
  17. package/dist/integrations/attio/events.d.ts +4 -0
  18. package/dist/integrations/attio/events.js +2 -0
  19. package/dist/integrations/attio/events.test.d.ts +1 -0
  20. package/dist/integrations/attio/index.d.ts +2 -0
  21. package/dist/integrations/attio/index.js +2 -0
  22. package/dist/integrations/attio/operations.d.ts +4 -0
  23. package/dist/integrations/attio/operations.js +2 -0
  24. package/dist/integrations/attio/operations.test.d.ts +1 -0
  25. package/dist/integrations/auth-helpers.d.ts +58 -0
  26. package/dist/integrations/auth-helpers.js +2 -0
  27. package/dist/integrations/auth-helpers.test.d.ts +1 -0
  28. package/dist/integrations/auth.d.ts +96 -0
  29. package/dist/integrations/auth.js +2 -0
  30. package/dist/integrations/auth.test.d.ts +1 -0
  31. package/dist/integrations/binding.d.ts +1 -0
  32. package/dist/integrations/binding.js +1 -0
  33. package/dist/integrations/byok.d.ts +75 -0
  34. package/dist/integrations/byok.js +2 -0
  35. package/dist/integrations/byok.test.d.ts +1 -0
  36. package/dist/integrations/catalog.d.ts +84 -0
  37. package/dist/integrations/catalog.js +2 -0
  38. package/dist/integrations/catalog.test.d.ts +1 -0
  39. package/dist/integrations/clay/events.d.ts +93 -0
  40. package/dist/integrations/clay/events.js +2 -0
  41. package/dist/integrations/clay/events.test.d.ts +1 -0
  42. package/dist/integrations/clay/index.d.ts +2 -0
  43. package/dist/integrations/clay/index.js +2 -0
  44. package/dist/integrations/clay/operations.d.ts +4 -0
  45. package/dist/integrations/clay/operations.js +2 -0
  46. package/dist/integrations/clay/operations.test.d.ts +1 -0
  47. package/dist/integrations/connection.d.ts +68 -0
  48. package/dist/integrations/connection.js +1 -0
  49. package/dist/integrations/credentials.d.ts +56 -0
  50. package/dist/integrations/credentials.js +2 -0
  51. package/dist/integrations/credentials.test.d.ts +1 -0
  52. package/dist/integrations/deployment-topology-model.d.ts +75 -0
  53. package/dist/integrations/deployment-topology-model.js +2 -0
  54. package/dist/integrations/deployment-topology-receipt.d.ts +8 -0
  55. package/dist/integrations/deployment-topology-receipt.js +2 -0
  56. package/dist/integrations/deployment-topology-validation.d.ts +5 -0
  57. package/dist/integrations/deployment-topology-validation.js +2 -0
  58. package/dist/integrations/deployment-topology.d.ts +3 -0
  59. package/dist/integrations/deployment-topology.js +2 -0
  60. package/dist/integrations/deployment-topology.test.d.ts +1 -0
  61. package/dist/integrations/docs/integrations.docblock.d.ts +2 -0
  62. package/dist/integrations/docs/integrations.docblock.js +101 -0
  63. package/dist/integrations/email-operations.d.ts +152 -0
  64. package/dist/integrations/email-operations.js +2 -0
  65. package/dist/integrations/gtm/capability-ledger.d.ts +48 -0
  66. package/dist/integrations/gtm/capability-ledger.fixture-helpers.d.ts +9 -0
  67. package/dist/integrations/gtm/capability-ledger.fixture-helpers.js +2 -0
  68. package/dist/integrations/gtm/capability-ledger.fixtures.d.ts +5 -0
  69. package/dist/integrations/gtm/capability-ledger.fixtures.js +2 -0
  70. package/dist/integrations/gtm/capability-ledger.js +2 -0
  71. package/dist/integrations/gtm/capability-ledger.test.d.ts +1 -0
  72. package/dist/integrations/gtm/hosted-mcp.d.ts +12 -0
  73. package/dist/integrations/gtm/hosted-mcp.js +2 -0
  74. package/dist/integrations/gtm/index.d.ts +5 -0
  75. package/dist/integrations/gtm/index.js +2 -0
  76. package/dist/integrations/gtm/inventory/attio.d.ts +2 -0
  77. package/dist/integrations/gtm/inventory/attio.js +2 -0
  78. package/dist/integrations/gtm/inventory/clay.d.ts +2 -0
  79. package/dist/integrations/gtm/inventory/clay.js +2 -0
  80. package/dist/integrations/gtm/inventory/fullenrich.d.ts +2 -0
  81. package/dist/integrations/gtm/inventory/fullenrich.js +2 -0
  82. package/dist/integrations/gtm/inventory/index.d.ts +4 -0
  83. package/dist/integrations/gtm/inventory/index.js +2 -0
  84. package/dist/integrations/gtm/inventory/inventory.test.d.ts +1 -0
  85. package/dist/integrations/gtm/inventory/types.d.ts +26 -0
  86. package/dist/integrations/gtm/inventory/types.js +1 -0
  87. package/dist/integrations/gtm/preflight.d.ts +20 -0
  88. package/dist/integrations/gtm/preflight.js +2 -0
  89. package/dist/integrations/gtm/preflight.test.d.ts +1 -0
  90. package/dist/integrations/gtm/schemas.d.ts +291 -0
  91. package/dist/integrations/gtm/schemas.js +2 -0
  92. package/dist/integrations/gtm/webhook-ingress.d.ts +37 -0
  93. package/dist/integrations/gtm/webhook-ingress.js +2 -0
  94. package/dist/integrations/gtm/webhook-ingress.test.d.ts +1 -0
  95. package/dist/integrations/health/contracts/activities.d.ts +162 -0
  96. package/dist/integrations/health/contracts/activities.js +2 -0
  97. package/dist/integrations/health/contracts/biometrics.d.ts +156 -0
  98. package/dist/integrations/health/contracts/biometrics.js +2 -0
  99. package/dist/integrations/health/contracts/contracts.test.d.ts +1 -0
  100. package/dist/integrations/health/contracts/index.d.ts +10 -0
  101. package/dist/integrations/health/contracts/index.js +2 -0
  102. package/dist/integrations/health/contracts/nutrition.d.ts +162 -0
  103. package/dist/integrations/health/contracts/nutrition.js +2 -0
  104. package/dist/integrations/health/contracts/sleep.d.ts +166 -0
  105. package/dist/integrations/health/contracts/sleep.js +2 -0
  106. package/dist/integrations/health/contracts/webhooks.d.ts +73 -0
  107. package/dist/integrations/health/contracts/webhooks.js +2 -0
  108. package/dist/integrations/health/contracts/workouts.d.ts +166 -0
  109. package/dist/integrations/health/contracts/workouts.js +2 -0
  110. package/dist/integrations/health/guards.d.ts +8 -0
  111. package/dist/integrations/health/guards.js +2 -0
  112. package/dist/integrations/health/guards.test.d.ts +1 -0
  113. package/dist/integrations/health/health.capability.d.ts +1 -0
  114. package/dist/integrations/health/health.capability.js +2 -0
  115. package/dist/integrations/health/health.feature.d.ts +1 -0
  116. package/dist/integrations/health/health.feature.js +2 -0
  117. package/dist/integrations/health/models.d.ts +361 -0
  118. package/dist/integrations/health/models.js +2 -0
  119. package/dist/integrations/health/telemetry.d.ts +17 -0
  120. package/dist/integrations/health/telemetry.js +2 -0
  121. package/dist/integrations/health/telemetry.test.d.ts +1 -0
  122. package/dist/integrations/health.d.ts +17 -0
  123. package/dist/integrations/health.js +2 -0
  124. package/dist/integrations/health.test.d.ts +1 -0
  125. package/dist/integrations/index.d.ts +30 -0
  126. package/dist/integrations/index.js +22 -0
  127. package/dist/integrations/integrations.capability.d.ts +1 -0
  128. package/dist/integrations/integrations.capability.js +2 -0
  129. package/dist/integrations/integrations.feature.d.ts +5 -0
  130. package/dist/integrations/integrations.feature.js +2 -0
  131. package/dist/integrations/linkedin/advertising.d.ts +52 -0
  132. package/dist/integrations/linkedin/advertising.js +1 -0
  133. package/dist/integrations/linkedin/analytics.d.ts +25 -0
  134. package/dist/integrations/linkedin/analytics.js +1 -0
  135. package/dist/integrations/linkedin/capabilities.d.ts +54 -0
  136. package/dist/integrations/linkedin/capabilities.js +2 -0
  137. package/dist/integrations/linkedin/capability-evaluation.test.d.ts +1 -0
  138. package/dist/integrations/linkedin/community.d.ts +77 -0
  139. package/dist/integrations/linkedin/community.js +1 -0
  140. package/dist/integrations/linkedin/credentials.d.ts +17 -0
  141. package/dist/integrations/linkedin/credentials.js +2 -0
  142. package/dist/integrations/linkedin/host.d.ts +53 -0
  143. package/dist/integrations/linkedin/host.js +2 -0
  144. package/dist/integrations/linkedin/host.test.d.ts +1 -0
  145. package/dist/integrations/linkedin/identity.d.ts +29 -0
  146. package/dist/integrations/linkedin/identity.js +1 -0
  147. package/dist/integrations/linkedin/index.d.ts +16 -0
  148. package/dist/integrations/linkedin/index.js +2 -0
  149. package/dist/integrations/linkedin/installation.d.ts +54 -0
  150. package/dist/integrations/linkedin/installation.js +2 -0
  151. package/dist/integrations/linkedin/linkedin.test.d.ts +1 -0
  152. package/dist/integrations/linkedin/media-job-state.d.ts +70 -0
  153. package/dist/integrations/linkedin/media-job-state.js +2 -0
  154. package/dist/integrations/linkedin/media-job.d.ts +88 -0
  155. package/dist/integrations/linkedin/media-job.js +2 -0
  156. package/dist/integrations/linkedin/media-session.d.ts +37 -0
  157. package/dist/integrations/linkedin/media-session.js +2 -0
  158. package/dist/integrations/linkedin/media.d.ts +51 -0
  159. package/dist/integrations/linkedin/media.js +2 -0
  160. package/dist/integrations/linkedin/messaging.d.ts +70 -0
  161. package/dist/integrations/linkedin/messaging.js +1 -0
  162. package/dist/integrations/linkedin/models.d.ts +42 -0
  163. package/dist/integrations/linkedin/models.js +1 -0
  164. package/dist/integrations/linkedin/native-publication.d.ts +43 -0
  165. package/dist/integrations/linkedin/native-publication.js +2 -0
  166. package/dist/integrations/linkedin/native-withdrawal.d.ts +12 -0
  167. package/dist/integrations/linkedin/native-withdrawal.js +2 -0
  168. package/dist/integrations/linkedin/operation-catalog.d.ts +314 -0
  169. package/dist/integrations/linkedin/operation-catalog.js +2 -0
  170. package/dist/integrations/linkedin/operations.d.ts +66 -0
  171. package/dist/integrations/linkedin/operations.js +2 -0
  172. package/dist/integrations/linkedin/provider.d.ts +72 -0
  173. package/dist/integrations/linkedin/provider.js +2 -0
  174. package/dist/integrations/linkedin/sales.d.ts +57 -0
  175. package/dist/integrations/linkedin/sales.js +1 -0
  176. package/dist/integrations/linkedin/sync.d.ts +41 -0
  177. package/dist/integrations/linkedin/sync.js +1 -0
  178. package/dist/integrations/linkedin/webhooks.d.ts +38 -0
  179. package/dist/integrations/linkedin/webhooks.js +1 -0
  180. package/dist/integrations/meeting-recorder/contracts/index.d.ts +7 -0
  181. package/dist/integrations/meeting-recorder/contracts/index.js +2 -0
  182. package/dist/integrations/meeting-recorder/contracts/meetings.d.ts +451 -0
  183. package/dist/integrations/meeting-recorder/contracts/meetings.js +2 -0
  184. package/dist/integrations/meeting-recorder/contracts/transcripts.d.ts +166 -0
  185. package/dist/integrations/meeting-recorder/contracts/transcripts.js +2 -0
  186. package/dist/integrations/meeting-recorder/contracts/webhooks.d.ts +85 -0
  187. package/dist/integrations/meeting-recorder/contracts/webhooks.js +2 -0
  188. package/dist/integrations/meeting-recorder/meeting-recorder.capability.d.ts +1 -0
  189. package/dist/integrations/meeting-recorder/meeting-recorder.capability.js +2 -0
  190. package/dist/integrations/meeting-recorder/meeting-recorder.feature.d.ts +5 -0
  191. package/dist/integrations/meeting-recorder/meeting-recorder.feature.js +2 -0
  192. package/dist/integrations/meeting-recorder/models.d.ts +402 -0
  193. package/dist/integrations/meeting-recorder/models.js +2 -0
  194. package/dist/integrations/meeting-recorder/telemetry.d.ts +13 -0
  195. package/dist/integrations/meeting-recorder/telemetry.js +2 -0
  196. package/dist/integrations/openbanking/contracts/accounts.d.ts +282 -0
  197. package/dist/integrations/openbanking/contracts/accounts.js +2 -0
  198. package/dist/integrations/openbanking/contracts/balances.d.ts +158 -0
  199. package/dist/integrations/openbanking/contracts/balances.js +2 -0
  200. package/dist/integrations/openbanking/contracts/index.d.ts +7 -0
  201. package/dist/integrations/openbanking/contracts/index.js +2 -0
  202. package/dist/integrations/openbanking/contracts/transactions.d.ts +206 -0
  203. package/dist/integrations/openbanking/contracts/transactions.js +2 -0
  204. package/dist/integrations/openbanking/guards.d.ts +8 -0
  205. package/dist/integrations/openbanking/guards.js +2 -0
  206. package/dist/integrations/openbanking/guards.test.d.ts +1 -0
  207. package/dist/integrations/openbanking/models.d.ts +223 -0
  208. package/dist/integrations/openbanking/models.js +2 -0
  209. package/dist/integrations/openbanking/openbanking.capability.d.ts +1 -0
  210. package/dist/integrations/openbanking/openbanking.capability.js +2 -0
  211. package/dist/integrations/openbanking/openbanking.feature.d.ts +5 -0
  212. package/dist/integrations/openbanking/openbanking.feature.js +2 -0
  213. package/dist/integrations/openbanking/telemetry.d.ts +12 -0
  214. package/dist/integrations/openbanking/telemetry.js +2 -0
  215. package/dist/integrations/operations.d.ts +430 -0
  216. package/dist/integrations/operations.js +22 -0
  217. package/dist/integrations/operations.test.d.ts +1 -0
  218. package/dist/integrations/providers/analytics-reader.d.ts +103 -0
  219. package/dist/integrations/providers/analytics-reader.js +1 -0
  220. package/dist/integrations/providers/analytics-writer.d.ts +6 -0
  221. package/dist/integrations/providers/analytics-writer.js +1 -0
  222. package/dist/integrations/providers/analytics.d.ts +47 -0
  223. package/dist/integrations/providers/analytics.js +1 -0
  224. package/dist/integrations/providers/apify.d.ts +3 -0
  225. package/dist/integrations/providers/apify.js +2 -0
  226. package/dist/integrations/providers/apple-health.d.ts +3 -0
  227. package/dist/integrations/providers/apple-health.js +2 -0
  228. package/dist/integrations/providers/async-media-record.d.ts +26 -0
  229. package/dist/integrations/providers/async-media-record.js +2 -0
  230. package/dist/integrations/providers/async-media.d.ts +112 -0
  231. package/dist/integrations/providers/async-media.js +1 -0
  232. package/dist/integrations/providers/attio.d.ts +4 -0
  233. package/dist/integrations/providers/attio.js +2 -0
  234. package/dist/integrations/providers/bright-data.d.ts +3 -0
  235. package/dist/integrations/providers/bright-data.js +2 -0
  236. package/dist/integrations/providers/browserbase.d.ts +3 -0
  237. package/dist/integrations/providers/browserbase.js +2 -0
  238. package/dist/integrations/providers/calendar.d.js +1 -0
  239. package/dist/integrations/providers/calendar.d.ts +81 -0
  240. package/dist/integrations/providers/calendar.js +1 -0
  241. package/dist/integrations/providers/catalog.d.ts +2 -0
  242. package/dist/integrations/providers/catalog.js +2 -0
  243. package/dist/integrations/providers/clay.d.ts +4 -0
  244. package/dist/integrations/providers/clay.js +2 -0
  245. package/dist/integrations/providers/communication-channel.d.ts +45 -0
  246. package/dist/integrations/providers/communication-channel.js +2 -0
  247. package/dist/integrations/providers/communication-channel.test.d.ts +1 -0
  248. package/dist/integrations/providers/composio.d.ts +3 -0
  249. package/dist/integrations/providers/composio.js +2 -0
  250. package/dist/integrations/providers/crm-external-profiles.test.d.ts +1 -0
  251. package/dist/integrations/providers/crm-fixture-core.d.ts +20 -0
  252. package/dist/integrations/providers/crm-fixture-core.js +2 -0
  253. package/dist/integrations/providers/crm-hubspot-fixture.d.ts +14 -0
  254. package/dist/integrations/providers/crm-hubspot-fixture.js +2 -0
  255. package/dist/integrations/providers/crm-salesforce-fixture.d.ts +17 -0
  256. package/dist/integrations/providers/crm-salesforce-fixture.js +2 -0
  257. package/dist/integrations/providers/crm-write-proposal-types.d.ts +83 -0
  258. package/dist/integrations/providers/crm-write-proposal-types.js +2 -0
  259. package/dist/integrations/providers/crm-write-proposal.d.ts +7 -0
  260. package/dist/integrations/providers/crm-write-proposal.js +2 -0
  261. package/dist/integrations/providers/crm-write-proposal.test.d.ts +1 -0
  262. package/dist/integrations/providers/crm.d.ts +94 -0
  263. package/dist/integrations/providers/crm.js +2 -0
  264. package/dist/integrations/providers/crm.test.d.ts +1 -0
  265. package/dist/integrations/providers/database.d.ts +12 -0
  266. package/dist/integrations/providers/database.js +1 -0
  267. package/dist/integrations/providers/deepgram.d.ts +3 -0
  268. package/dist/integrations/providers/deepgram.js +2 -0
  269. package/dist/integrations/providers/direct-fetch.d.ts +3 -0
  270. package/dist/integrations/providers/direct-fetch.js +2 -0
  271. package/dist/integrations/providers/eightsleep.d.ts +3 -0
  272. package/dist/integrations/providers/eightsleep.js +2 -0
  273. package/dist/integrations/providers/elevenlabs.d.ts +3 -0
  274. package/dist/integrations/providers/elevenlabs.js +2 -0
  275. package/dist/integrations/providers/email-delivery-events.d.ts +22 -0
  276. package/dist/integrations/providers/email-delivery-events.js +1 -0
  277. package/dist/integrations/providers/email.d.ts +187 -0
  278. package/dist/integrations/providers/email.js +1 -0
  279. package/dist/integrations/providers/embedding.d.ts +52 -0
  280. package/dist/integrations/providers/embedding.js +1 -0
  281. package/dist/integrations/providers/embedding.test.d.ts +1 -0
  282. package/dist/integrations/providers/fal-image.d.ts +3 -0
  283. package/dist/integrations/providers/fal-image.js +2 -0
  284. package/dist/integrations/providers/fal.d.ts +3 -0
  285. package/dist/integrations/providers/fal.js +2 -0
  286. package/dist/integrations/providers/fathom.d.ts +3 -0
  287. package/dist/integrations/providers/fathom.js +2 -0
  288. package/dist/integrations/providers/firecrawl.d.ts +3 -0
  289. package/dist/integrations/providers/firecrawl.js +2 -0
  290. package/dist/integrations/providers/fireflies.d.ts +3 -0
  291. package/dist/integrations/providers/fireflies.js +2 -0
  292. package/dist/integrations/providers/fitbit.d.ts +3 -0
  293. package/dist/integrations/providers/fitbit.js +2 -0
  294. package/dist/integrations/providers/fullenrich.d.ts +3 -0
  295. package/dist/integrations/providers/fullenrich.js +2 -0
  296. package/dist/integrations/providers/garmin.d.ts +3 -0
  297. package/dist/integrations/providers/garmin.js +2 -0
  298. package/dist/integrations/providers/gcs-storage.d.ts +3 -0
  299. package/dist/integrations/providers/gcs-storage.js +2 -0
  300. package/dist/integrations/providers/gmail.d.ts +3 -0
  301. package/dist/integrations/providers/gmail.js +2 -0
  302. package/dist/integrations/providers/google-calendar.d.ts +3 -0
  303. package/dist/integrations/providers/google-calendar.js +2 -0
  304. package/dist/integrations/providers/google-drive.d.ts +54 -0
  305. package/dist/integrations/providers/google-drive.js +2 -0
  306. package/dist/integrations/providers/gradium.d.ts +3 -0
  307. package/dist/integrations/providers/gradium.js +2 -0
  308. package/dist/integrations/providers/granola.d.ts +3 -0
  309. package/dist/integrations/providers/granola.js +2 -0
  310. package/dist/integrations/providers/gtm-providers.test.d.ts +1 -0
  311. package/dist/integrations/providers/health-provider-shared.d.ts +28 -0
  312. package/dist/integrations/providers/health-provider-shared.js +2 -0
  313. package/dist/integrations/providers/health-providers.test.d.ts +1 -0
  314. package/dist/integrations/providers/health.d.ts +186 -0
  315. package/dist/integrations/providers/health.js +1 -0
  316. package/dist/integrations/providers/higgsfield.d.ts +3 -0
  317. package/dist/integrations/providers/higgsfield.js +2 -0
  318. package/dist/integrations/providers/image.d.ts +85 -0
  319. package/dist/integrations/providers/image.js +2 -0
  320. package/dist/integrations/providers/index.d.ts +101 -0
  321. package/dist/integrations/providers/index.js +2 -0
  322. package/dist/integrations/providers/jira.d.ts +3 -0
  323. package/dist/integrations/providers/jira.js +2 -0
  324. package/dist/integrations/providers/linear.d.ts +3 -0
  325. package/dist/integrations/providers/linear.js +2 -0
  326. package/dist/integrations/providers/linkedin-community.d.ts +3 -0
  327. package/dist/integrations/providers/linkedin-community.js +2 -0
  328. package/dist/integrations/providers/linkedin-marketing.d.ts +3 -0
  329. package/dist/integrations/providers/linkedin-marketing.js +2 -0
  330. package/dist/integrations/providers/linkedin-member.d.ts +3 -0
  331. package/dist/integrations/providers/linkedin-member.js +2 -0
  332. package/dist/integrations/providers/linkedin-messaging.d.ts +3 -0
  333. package/dist/integrations/providers/linkedin-messaging.js +2 -0
  334. package/dist/integrations/providers/linkedin-providers.test.d.ts +1 -0
  335. package/dist/integrations/providers/linkedin-sales-navigator.d.ts +3 -0
  336. package/dist/integrations/providers/linkedin-sales-navigator.js +2 -0
  337. package/dist/integrations/providers/linkedin-spec-shared.d.ts +16 -0
  338. package/dist/integrations/providers/linkedin-spec-shared.js +2 -0
  339. package/dist/integrations/providers/linkup.d.ts +3 -0
  340. package/dist/integrations/providers/linkup.js +2 -0
  341. package/dist/integrations/providers/llm.d.ts +79 -0
  342. package/dist/integrations/providers/llm.js +1 -0
  343. package/dist/integrations/providers/massive.d.ts +5 -0
  344. package/dist/integrations/providers/massive.js +2 -0
  345. package/dist/integrations/providers/meeting-capture.d.ts +56 -0
  346. package/dist/integrations/providers/meeting-capture.js +1 -0
  347. package/dist/integrations/providers/meeting-recorder.d.ts +129 -0
  348. package/dist/integrations/providers/meeting-recorder.js +1 -0
  349. package/dist/integrations/providers/messaging-github.d.ts +9 -0
  350. package/dist/integrations/providers/messaging-github.js +2 -0
  351. package/dist/integrations/providers/messaging-matrix.d.ts +3 -0
  352. package/dist/integrations/providers/messaging-matrix.js +2 -0
  353. package/dist/integrations/providers/messaging-slack.d.ts +9 -0
  354. package/dist/integrations/providers/messaging-slack.js +2 -0
  355. package/dist/integrations/providers/messaging-teams.d.ts +10 -0
  356. package/dist/integrations/providers/messaging-teams.js +2 -0
  357. package/dist/integrations/providers/messaging-telegram.d.ts +3 -0
  358. package/dist/integrations/providers/messaging-telegram.js +2 -0
  359. package/dist/integrations/providers/messaging-whatsapp-meta.d.ts +3 -0
  360. package/dist/integrations/providers/messaging-whatsapp-meta.js +2 -0
  361. package/dist/integrations/providers/messaging-whatsapp-twilio.d.ts +3 -0
  362. package/dist/integrations/providers/messaging-whatsapp-twilio.js +2 -0
  363. package/dist/integrations/providers/messaging.d.ts +30 -0
  364. package/dist/integrations/providers/messaging.js +1 -0
  365. package/dist/integrations/providers/mistral-conversational.d.ts +3 -0
  366. package/dist/integrations/providers/mistral-conversational.js +2 -0
  367. package/dist/integrations/providers/mistral-stt.d.ts +3 -0
  368. package/dist/integrations/providers/mistral-stt.js +2 -0
  369. package/dist/integrations/providers/mistral.d.ts +3 -0
  370. package/dist/integrations/providers/mistral.js +2 -0
  371. package/dist/integrations/providers/mode-exemptions.d.ts +10 -0
  372. package/dist/integrations/providers/mode-exemptions.js +2 -0
  373. package/dist/integrations/providers/myfitnesspal.d.ts +3 -0
  374. package/dist/integrations/providers/myfitnesspal.js +2 -0
  375. package/dist/integrations/providers/notion.d.ts +9 -0
  376. package/dist/integrations/providers/notion.js +2 -0
  377. package/dist/integrations/providers/openai-image.d.ts +3 -0
  378. package/dist/integrations/providers/openai-image.js +2 -0
  379. package/dist/integrations/providers/openai-realtime.d.ts +3 -0
  380. package/dist/integrations/providers/openai-realtime.js +2 -0
  381. package/dist/integrations/providers/openbanking.d.ts +125 -0
  382. package/dist/integrations/providers/openbanking.js +1 -0
  383. package/dist/integrations/providers/openwearables.d.ts +3 -0
  384. package/dist/integrations/providers/openwearables.js +2 -0
  385. package/dist/integrations/providers/oura.d.ts +3 -0
  386. package/dist/integrations/providers/oura.js +2 -0
  387. package/dist/integrations/providers/oxylabs.d.ts +3 -0
  388. package/dist/integrations/providers/oxylabs.js +2 -0
  389. package/dist/integrations/providers/payments/capabilities-billing.d.ts +67 -0
  390. package/dist/integrations/providers/payments/capabilities-billing.js +1 -0
  391. package/dist/integrations/providers/payments/capabilities-payments.d.ts +57 -0
  392. package/dist/integrations/providers/payments/capabilities-payments.js +1 -0
  393. package/dist/integrations/providers/payments/capabilities.d.ts +2 -0
  394. package/dist/integrations/providers/payments/capabilities.js +1 -0
  395. package/dist/integrations/providers/payments/context.d.ts +75 -0
  396. package/dist/integrations/providers/payments/context.js +2 -0
  397. package/dist/integrations/providers/payments/provider.d.ts +22 -0
  398. package/dist/integrations/providers/payments/provider.js +1 -0
  399. package/dist/integrations/providers/payments/resources.d.ts +97 -0
  400. package/dist/integrations/providers/payments/resources.js +1 -0
  401. package/dist/integrations/providers/payments/shared.d.ts +61 -0
  402. package/dist/integrations/providers/payments/shared.js +2 -0
  403. package/dist/integrations/providers/payments.d.ts +5 -0
  404. package/dist/integrations/providers/payments.js +2 -0
  405. package/dist/integrations/providers/payments.test.d.ts +1 -0
  406. package/dist/integrations/providers/paypal.d.ts +3 -0
  407. package/dist/integrations/providers/paypal.js +2 -0
  408. package/dist/integrations/providers/peloton.d.ts +3 -0
  409. package/dist/integrations/providers/peloton.js +2 -0
  410. package/dist/integrations/providers/posthog-llm-telemetry.d.ts +51 -0
  411. package/dist/integrations/providers/posthog-llm-telemetry.js +2 -0
  412. package/dist/integrations/providers/posthog.d.ts +3 -0
  413. package/dist/integrations/providers/posthog.js +2 -0
  414. package/dist/integrations/providers/postmark.d.ts +3 -0
  415. package/dist/integrations/providers/postmark.js +2 -0
  416. package/dist/integrations/providers/powens.d.ts +3 -0
  417. package/dist/integrations/providers/powens.js +2 -0
  418. package/dist/integrations/providers/project-management.d.ts +196 -0
  419. package/dist/integrations/providers/project-management.js +2 -0
  420. package/dist/integrations/providers/provider-delta.d.ts +45 -0
  421. package/dist/integrations/providers/provider-delta.js +2 -0
  422. package/dist/integrations/providers/provider-delta.test.d.ts +1 -0
  423. package/dist/integrations/providers/provider-modes-coverage.test.d.ts +1 -0
  424. package/dist/integrations/providers/providers.test.d.ts +1 -0
  425. package/dist/integrations/providers/qdrant.d.ts +3 -0
  426. package/dist/integrations/providers/qdrant.js +2 -0
  427. package/dist/integrations/providers/registry.d.ts +24 -0
  428. package/dist/integrations/providers/registry.js +2 -0
  429. package/dist/integrations/providers/reworkd.d.ts +3 -0
  430. package/dist/integrations/providers/reworkd.js +2 -0
  431. package/dist/integrations/providers/serper.d.ts +3 -0
  432. package/dist/integrations/providers/serper.js +2 -0
  433. package/dist/integrations/providers/sillage.d.ts +4 -0
  434. package/dist/integrations/providers/sillage.js +2 -0
  435. package/dist/integrations/providers/slng.d.ts +3 -0
  436. package/dist/integrations/providers/slng.js +2 -0
  437. package/dist/integrations/providers/sms.d.ts +31 -0
  438. package/dist/integrations/providers/sms.js +1 -0
  439. package/dist/integrations/providers/social.d.ts +8 -0
  440. package/dist/integrations/providers/social.js +2 -0
  441. package/dist/integrations/providers/storage.d.ts +65 -0
  442. package/dist/integrations/providers/storage.js +1 -0
  443. package/dist/integrations/providers/strava.d.ts +3 -0
  444. package/dist/integrations/providers/strava.js +2 -0
  445. package/dist/integrations/providers/stripe.d.ts +3 -0
  446. package/dist/integrations/providers/stripe.js +2 -0
  447. package/dist/integrations/providers/supabase-postgres.d.ts +3 -0
  448. package/dist/integrations/providers/supabase-postgres.js +2 -0
  449. package/dist/integrations/providers/supabase-vector.d.ts +3 -0
  450. package/dist/integrations/providers/supabase-vector.js +2 -0
  451. package/dist/integrations/providers/tavily.d.ts +8 -0
  452. package/dist/integrations/providers/tavily.js +2 -0
  453. package/dist/integrations/providers/tldv.d.ts +3 -0
  454. package/dist/integrations/providers/tldv.js +2 -0
  455. package/dist/integrations/providers/twilio-sms.d.ts +3 -0
  456. package/dist/integrations/providers/twilio-sms.js +2 -0
  457. package/dist/integrations/providers/vector-store.d.ts +39 -0
  458. package/dist/integrations/providers/vector-store.js +1 -0
  459. package/dist/integrations/providers/video.d.ts +181 -0
  460. package/dist/integrations/providers/video.js +2 -0
  461. package/dist/integrations/providers/voice-video-sync.d.ts +29 -0
  462. package/dist/integrations/providers/voice-video-sync.js +1 -0
  463. package/dist/integrations/providers/voice.d.ts +180 -0
  464. package/dist/integrations/providers/voice.js +1 -0
  465. package/dist/integrations/providers/web-access-shared.d.ts +18 -0
  466. package/dist/integrations/providers/web-access-shared.js +2 -0
  467. package/dist/integrations/providers/whoop.d.ts +3 -0
  468. package/dist/integrations/providers/whoop.js +2 -0
  469. package/dist/integrations/runtime-transport.test.d.ts +1 -0
  470. package/dist/integrations/runtime.d.ts +140 -0
  471. package/dist/integrations/runtime.js +2 -0
  472. package/dist/integrations/runtime.test.d.ts +1 -0
  473. package/dist/integrations/sales-intelligence/events.d.ts +182 -0
  474. package/dist/integrations/sales-intelligence/events.js +2 -0
  475. package/dist/integrations/sales-intelligence/events.test.d.ts +1 -0
  476. package/dist/integrations/sales-intelligence/fullenrich-cancel-operation.d.ts +39 -0
  477. package/dist/integrations/sales-intelligence/fullenrich-cancel-operation.js +2 -0
  478. package/dist/integrations/sales-intelligence/index.d.ts +7 -0
  479. package/dist/integrations/sales-intelligence/index.js +2 -0
  480. package/dist/integrations/sales-intelligence/operation-helpers.d.ts +4 -0
  481. package/dist/integrations/sales-intelligence/operation-helpers.js +2 -0
  482. package/dist/integrations/sales-intelligence/operations.d.ts +873 -0
  483. package/dist/integrations/sales-intelligence/operations.js +2 -0
  484. package/dist/integrations/sales-intelligence/operations.test.d.ts +1 -0
  485. package/dist/integrations/sales-intelligence/schemas-events.d.ts +78 -0
  486. package/dist/integrations/sales-intelligence/schemas-events.js +2 -0
  487. package/dist/integrations/sales-intelligence/schemas-results.d.ts +69 -0
  488. package/dist/integrations/sales-intelligence/schemas-results.js +2 -0
  489. package/dist/integrations/sales-intelligence/schemas.d.ts +73 -0
  490. package/dist/integrations/sales-intelligence/schemas.js +2 -0
  491. package/dist/integrations/secrets/aws-secret-manager.d.ts +28 -0
  492. package/dist/integrations/secrets/aws-secret-manager.js +2 -0
  493. package/dist/integrations/secrets/env-secret-provider.d.ts +28 -0
  494. package/dist/integrations/secrets/env-secret-provider.js +2 -0
  495. package/dist/integrations/secrets/gcp-secret-manager.d.ts +29 -0
  496. package/dist/integrations/secrets/gcp-secret-manager.js +2 -0
  497. package/dist/integrations/secrets/index.d.ts +6 -0
  498. package/dist/integrations/secrets/index.js +2 -0
  499. package/dist/integrations/secrets/manager.d.ts +44 -0
  500. package/dist/integrations/secrets/manager.js +2 -0
  501. package/dist/integrations/secrets/provider.d.ts +49 -0
  502. package/dist/integrations/secrets/provider.js +2 -0
  503. package/dist/integrations/secrets/provider.test.d.ts +1 -0
  504. package/dist/integrations/secrets/scaleway-secret-manager.d.ts +35 -0
  505. package/dist/integrations/secrets/scaleway-secret-manager.js +2 -0
  506. package/dist/integrations/secrets-types.d.ts +14 -0
  507. package/dist/integrations/secrets-types.js +1 -0
  508. package/dist/integrations/social/index.d.ts +7 -0
  509. package/dist/integrations/social/index.js +2 -0
  510. package/dist/integrations/social/instagram.d.ts +86 -0
  511. package/dist/integrations/social/instagram.js +1 -0
  512. package/dist/integrations/social/models.d.ts +107 -0
  513. package/dist/integrations/social/models.js +1 -0
  514. package/dist/integrations/social/provider.d.ts +46 -0
  515. package/dist/integrations/social/provider.js +2 -0
  516. package/dist/integrations/social/social.test.d.ts +1 -0
  517. package/dist/integrations/social/tracking-models.d.ts +153 -0
  518. package/dist/integrations/social/tracking-models.js +2 -0
  519. package/dist/integrations/social/tracking-provider.d.ts +53 -0
  520. package/dist/integrations/social/tracking-provider.js +1 -0
  521. package/dist/integrations/social/tracking-store.d.ts +78 -0
  522. package/dist/integrations/social/tracking-store.js +1 -0
  523. package/dist/integrations/social/x-publication.d.ts +143 -0
  524. package/dist/integrations/social/x-publication.js +2 -0
  525. package/dist/integrations/social/x-upload-state.d.ts +53 -0
  526. package/dist/integrations/social/x-upload-state.js +2 -0
  527. package/dist/integrations/social/x-upload.d.ts +111 -0
  528. package/dist/integrations/social/x-upload.js +2 -0
  529. package/dist/integrations/social/x-withdrawal.d.ts +13 -0
  530. package/dist/integrations/social/x-withdrawal.js +2 -0
  531. package/dist/integrations/social/x.d.ts +84 -0
  532. package/dist/integrations/social/x.js +1 -0
  533. package/dist/integrations/spec.d.ts +119 -0
  534. package/dist/integrations/spec.js +2 -0
  535. package/dist/integrations/spec.test.d.ts +1 -0
  536. package/dist/integrations/transport.d.ts +115 -0
  537. package/dist/integrations/transport.js +2 -0
  538. package/dist/integrations/transport.test.d.ts +1 -0
  539. package/dist/integrations/versioning.d.ts +51 -0
  540. package/dist/integrations/versioning.js +2 -0
  541. package/dist/integrations/versioning.test.d.ts +1 -0
  542. package/dist/integrations/web-access/browser-automation.d.ts +134 -0
  543. package/dist/integrations/web-access/browser-automation.js +2 -0
  544. package/dist/integrations/web-access/capability-ledger.d.ts +50 -0
  545. package/dist/integrations/web-access/capability-ledger.js +2 -0
  546. package/dist/integrations/web-access/capability-ledger.test.d.ts +1 -0
  547. package/dist/integrations/web-access/events.d.ts +105 -0
  548. package/dist/integrations/web-access/events.js +2 -0
  549. package/dist/integrations/web-access/index.d.ts +16 -0
  550. package/dist/integrations/web-access/index.js +22 -0
  551. package/dist/integrations/web-access/inventory-definitions-expanded.d.ts +2 -0
  552. package/dist/integrations/web-access/inventory-definitions-expanded.js +2 -0
  553. package/dist/integrations/web-access/inventory-definitions.d.ts +17 -0
  554. package/dist/integrations/web-access/inventory-definitions.js +2 -0
  555. package/dist/integrations/web-access/inventory-evidence.d.ts +24 -0
  556. package/dist/integrations/web-access/inventory-evidence.js +2 -0
  557. package/dist/integrations/web-access/inventory-mappings-browserbase.d.ts +2 -0
  558. package/dist/integrations/web-access/inventory-mappings-browserbase.js +2 -0
  559. package/dist/integrations/web-access/inventory-mappings.d.ts +54 -0
  560. package/dist/integrations/web-access/inventory-mappings.js +2 -0
  561. package/dist/integrations/web-access/inventory.d.ts +4 -0
  562. package/dist/integrations/web-access/inventory.js +2 -0
  563. package/dist/integrations/web-access/models.d.ts +145 -0
  564. package/dist/integrations/web-access/models.js +2 -0
  565. package/dist/integrations/web-access/operation-definitions.d.ts +19 -0
  566. package/dist/integrations/web-access/operation-definitions.js +2 -0
  567. package/dist/integrations/web-access/operation-errors.d.ts +56 -0
  568. package/dist/integrations/web-access/operation-errors.js +2 -0
  569. package/dist/integrations/web-access/operation-output-models.d.ts +177 -0
  570. package/dist/integrations/web-access/operation-output-models.js +2 -0
  571. package/dist/integrations/web-access/operation-schema-models.d.ts +453 -0
  572. package/dist/integrations/web-access/operation-schema-models.js +2 -0
  573. package/dist/integrations/web-access/operation-schemas.d.ts +165 -0
  574. package/dist/integrations/web-access/operation-schemas.js +2 -0
  575. package/dist/integrations/web-access/operations.d.ts +22 -0
  576. package/dist/integrations/web-access/operations.js +22 -0
  577. package/dist/integrations/web-access/operations.test.d.ts +1 -0
  578. package/dist/integrations/web-access/providers.d.ts +56 -0
  579. package/dist/integrations/web-access/providers.js +1 -0
  580. package/dist/integrations/web-access/providers.test.d.ts +1 -0
  581. package/dist/integrations/web-access/schemas.d.ts +118 -0
  582. package/dist/integrations/web-access/schemas.js +2 -0
  583. package/dist/node/contracts-integrations.feature.js +1 -0
  584. package/dist/node/index.js +21 -0
  585. package/dist/node/integrations/advertising/index.js +1 -0
  586. package/dist/node/integrations/advertising/recipe-schema.js +1 -0
  587. package/dist/node/integrations/advertising/recipe.js +0 -0
  588. package/dist/node/integrations/advertising/specs.js +1 -0
  589. package/dist/node/integrations/advertising/types.js +1 -0
  590. package/dist/node/integrations/attio/events.js +1 -0
  591. package/dist/node/integrations/attio/index.js +1 -0
  592. package/dist/node/integrations/attio/operations.js +1 -0
  593. package/dist/node/integrations/auth-helpers.js +1 -0
  594. package/dist/node/integrations/auth.js +1 -0
  595. package/dist/node/integrations/binding.js +0 -0
  596. package/dist/node/integrations/byok.js +1 -0
  597. package/dist/node/integrations/catalog.js +1 -0
  598. package/dist/node/integrations/clay/events.js +1 -0
  599. package/dist/node/integrations/clay/index.js +1 -0
  600. package/dist/node/integrations/clay/operations.js +1 -0
  601. package/dist/node/integrations/connection.js +0 -0
  602. package/dist/node/integrations/credentials.js +1 -0
  603. package/dist/node/integrations/deployment-topology-model.js +1 -0
  604. package/dist/node/integrations/deployment-topology-receipt.js +1 -0
  605. package/dist/node/integrations/deployment-topology-validation.js +1 -0
  606. package/dist/node/integrations/deployment-topology.js +1 -0
  607. package/dist/node/integrations/docs/integrations.docblock.js +100 -0
  608. package/dist/node/integrations/email-operations.js +1 -0
  609. package/dist/node/integrations/gtm/capability-ledger.fixture-helpers.js +1 -0
  610. package/dist/node/integrations/gtm/capability-ledger.fixtures.js +1 -0
  611. package/dist/node/integrations/gtm/capability-ledger.js +1 -0
  612. package/dist/node/integrations/gtm/hosted-mcp.js +1 -0
  613. package/dist/node/integrations/gtm/index.js +1 -0
  614. package/dist/node/integrations/gtm/inventory/attio.js +1 -0
  615. package/dist/node/integrations/gtm/inventory/clay.js +1 -0
  616. package/dist/node/integrations/gtm/inventory/fullenrich.js +1 -0
  617. package/dist/node/integrations/gtm/inventory/index.js +1 -0
  618. package/dist/node/integrations/gtm/inventory/types.js +0 -0
  619. package/dist/node/integrations/gtm/preflight.js +1 -0
  620. package/dist/node/integrations/gtm/schemas.js +1 -0
  621. package/dist/node/integrations/gtm/webhook-ingress.js +1 -0
  622. package/dist/node/integrations/health/contracts/activities.js +1 -0
  623. package/dist/node/integrations/health/contracts/biometrics.js +1 -0
  624. package/dist/node/integrations/health/contracts/index.js +1 -0
  625. package/dist/node/integrations/health/contracts/nutrition.js +1 -0
  626. package/dist/node/integrations/health/contracts/sleep.js +1 -0
  627. package/dist/node/integrations/health/contracts/webhooks.js +1 -0
  628. package/dist/node/integrations/health/contracts/workouts.js +1 -0
  629. package/dist/node/integrations/health/guards.js +1 -0
  630. package/dist/node/integrations/health/health.capability.js +1 -0
  631. package/dist/node/integrations/health/health.feature.js +1 -0
  632. package/dist/node/integrations/health/models.js +1 -0
  633. package/dist/node/integrations/health/telemetry.js +1 -0
  634. package/dist/node/integrations/health.js +1 -0
  635. package/dist/node/integrations/index.js +21 -0
  636. package/dist/node/integrations/integrations.capability.js +1 -0
  637. package/dist/node/integrations/integrations.feature.js +1 -0
  638. package/dist/node/integrations/linkedin/advertising.js +0 -0
  639. package/dist/node/integrations/linkedin/analytics.js +0 -0
  640. package/dist/node/integrations/linkedin/capabilities.js +1 -0
  641. package/dist/node/integrations/linkedin/community.js +0 -0
  642. package/dist/node/integrations/linkedin/credentials.js +1 -0
  643. package/dist/node/integrations/linkedin/host.js +1 -0
  644. package/dist/node/integrations/linkedin/identity.js +0 -0
  645. package/dist/node/integrations/linkedin/index.js +1 -0
  646. package/dist/node/integrations/linkedin/installation.js +1 -0
  647. package/dist/node/integrations/linkedin/media-job-state.js +1 -0
  648. package/dist/node/integrations/linkedin/media-job.js +1 -0
  649. package/dist/node/integrations/linkedin/media-session.js +1 -0
  650. package/dist/node/integrations/linkedin/media.js +1 -0
  651. package/dist/node/integrations/linkedin/messaging.js +0 -0
  652. package/dist/node/integrations/linkedin/models.js +0 -0
  653. package/dist/node/integrations/linkedin/native-publication.js +1 -0
  654. package/dist/node/integrations/linkedin/native-withdrawal.js +1 -0
  655. package/dist/node/integrations/linkedin/operation-catalog.js +1 -0
  656. package/dist/node/integrations/linkedin/operations.js +1 -0
  657. package/dist/node/integrations/linkedin/provider.js +1 -0
  658. package/dist/node/integrations/linkedin/sales.js +0 -0
  659. package/dist/node/integrations/linkedin/sync.js +0 -0
  660. package/dist/node/integrations/linkedin/webhooks.js +0 -0
  661. package/dist/node/integrations/meeting-recorder/contracts/index.js +1 -0
  662. package/dist/node/integrations/meeting-recorder/contracts/meetings.js +1 -0
  663. package/dist/node/integrations/meeting-recorder/contracts/transcripts.js +1 -0
  664. package/dist/node/integrations/meeting-recorder/contracts/webhooks.js +1 -0
  665. package/dist/node/integrations/meeting-recorder/meeting-recorder.capability.js +1 -0
  666. package/dist/node/integrations/meeting-recorder/meeting-recorder.feature.js +1 -0
  667. package/dist/node/integrations/meeting-recorder/models.js +1 -0
  668. package/dist/node/integrations/meeting-recorder/telemetry.js +1 -0
  669. package/dist/node/integrations/openbanking/contracts/accounts.js +1 -0
  670. package/dist/node/integrations/openbanking/contracts/balances.js +1 -0
  671. package/dist/node/integrations/openbanking/contracts/index.js +1 -0
  672. package/dist/node/integrations/openbanking/contracts/transactions.js +1 -0
  673. package/dist/node/integrations/openbanking/guards.js +1 -0
  674. package/dist/node/integrations/openbanking/models.js +1 -0
  675. package/dist/node/integrations/openbanking/openbanking.capability.js +1 -0
  676. package/dist/node/integrations/openbanking/openbanking.feature.js +1 -0
  677. package/dist/node/integrations/openbanking/telemetry.js +1 -0
  678. package/dist/node/integrations/operations.js +21 -0
  679. package/dist/node/integrations/providers/analytics-reader.js +0 -0
  680. package/dist/node/integrations/providers/analytics-writer.js +0 -0
  681. package/dist/node/integrations/providers/analytics.js +0 -0
  682. package/dist/node/integrations/providers/apify.js +1 -0
  683. package/dist/node/integrations/providers/apple-health.js +1 -0
  684. package/dist/node/integrations/providers/async-media-record.js +1 -0
  685. package/dist/node/integrations/providers/async-media.js +0 -0
  686. package/dist/node/integrations/providers/attio.js +1 -0
  687. package/dist/node/integrations/providers/bright-data.js +1 -0
  688. package/dist/node/integrations/providers/browserbase.js +1 -0
  689. package/dist/node/integrations/providers/calendar.d.js +0 -0
  690. package/dist/node/integrations/providers/calendar.js +0 -0
  691. package/dist/node/integrations/providers/catalog.js +1 -0
  692. package/dist/node/integrations/providers/clay.js +1 -0
  693. package/dist/node/integrations/providers/communication-channel.js +1 -0
  694. package/dist/node/integrations/providers/composio.js +1 -0
  695. package/dist/node/integrations/providers/crm-fixture-core.js +1 -0
  696. package/dist/node/integrations/providers/crm-hubspot-fixture.js +1 -0
  697. package/dist/node/integrations/providers/crm-salesforce-fixture.js +1 -0
  698. package/dist/node/integrations/providers/crm-write-proposal-types.js +1 -0
  699. package/dist/node/integrations/providers/crm-write-proposal.js +1 -0
  700. package/dist/node/integrations/providers/crm.js +1 -0
  701. package/dist/node/integrations/providers/database.js +0 -0
  702. package/dist/node/integrations/providers/deepgram.js +1 -0
  703. package/dist/node/integrations/providers/direct-fetch.js +1 -0
  704. package/dist/node/integrations/providers/eightsleep.js +1 -0
  705. package/dist/node/integrations/providers/elevenlabs.js +1 -0
  706. package/dist/node/integrations/providers/email-delivery-events.js +0 -0
  707. package/dist/node/integrations/providers/email.js +0 -0
  708. package/dist/node/integrations/providers/embedding.js +0 -0
  709. package/dist/node/integrations/providers/fal-image.js +1 -0
  710. package/dist/node/integrations/providers/fal.js +1 -0
  711. package/dist/node/integrations/providers/fathom.js +1 -0
  712. package/dist/node/integrations/providers/firecrawl.js +1 -0
  713. package/dist/node/integrations/providers/fireflies.js +1 -0
  714. package/dist/node/integrations/providers/fitbit.js +1 -0
  715. package/dist/node/integrations/providers/fullenrich.js +1 -0
  716. package/dist/node/integrations/providers/garmin.js +1 -0
  717. package/dist/node/integrations/providers/gcs-storage.js +1 -0
  718. package/dist/node/integrations/providers/gmail.js +1 -0
  719. package/dist/node/integrations/providers/google-calendar.js +1 -0
  720. package/dist/node/integrations/providers/google-drive.js +1 -0
  721. package/dist/node/integrations/providers/gradium.js +1 -0
  722. package/dist/node/integrations/providers/granola.js +1 -0
  723. package/dist/node/integrations/providers/health-provider-shared.js +1 -0
  724. package/dist/node/integrations/providers/health.js +0 -0
  725. package/dist/node/integrations/providers/higgsfield.js +1 -0
  726. package/dist/node/integrations/providers/image.js +1 -0
  727. package/dist/node/integrations/providers/index.js +1 -0
  728. package/dist/node/integrations/providers/jira.js +1 -0
  729. package/dist/node/integrations/providers/linear.js +1 -0
  730. package/dist/node/integrations/providers/linkedin-community.js +1 -0
  731. package/dist/node/integrations/providers/linkedin-marketing.js +1 -0
  732. package/dist/node/integrations/providers/linkedin-member.js +1 -0
  733. package/dist/node/integrations/providers/linkedin-messaging.js +1 -0
  734. package/dist/node/integrations/providers/linkedin-sales-navigator.js +1 -0
  735. package/dist/node/integrations/providers/linkedin-spec-shared.js +1 -0
  736. package/dist/node/integrations/providers/linkup.js +1 -0
  737. package/dist/node/integrations/providers/llm.js +0 -0
  738. package/dist/node/integrations/providers/massive.js +1 -0
  739. package/dist/node/integrations/providers/meeting-capture.js +0 -0
  740. package/dist/node/integrations/providers/meeting-recorder.js +0 -0
  741. package/dist/node/integrations/providers/messaging-github.js +1 -0
  742. package/dist/node/integrations/providers/messaging-matrix.js +1 -0
  743. package/dist/node/integrations/providers/messaging-slack.js +1 -0
  744. package/dist/node/integrations/providers/messaging-teams.js +1 -0
  745. package/dist/node/integrations/providers/messaging-telegram.js +1 -0
  746. package/dist/node/integrations/providers/messaging-whatsapp-meta.js +1 -0
  747. package/dist/node/integrations/providers/messaging-whatsapp-twilio.js +1 -0
  748. package/dist/node/integrations/providers/messaging.js +0 -0
  749. package/dist/node/integrations/providers/mistral-conversational.js +1 -0
  750. package/dist/node/integrations/providers/mistral-stt.js +1 -0
  751. package/dist/node/integrations/providers/mistral.js +1 -0
  752. package/dist/node/integrations/providers/mode-exemptions.js +1 -0
  753. package/dist/node/integrations/providers/myfitnesspal.js +1 -0
  754. package/dist/node/integrations/providers/notion.js +1 -0
  755. package/dist/node/integrations/providers/openai-image.js +1 -0
  756. package/dist/node/integrations/providers/openai-realtime.js +1 -0
  757. package/dist/node/integrations/providers/openbanking.js +0 -0
  758. package/dist/node/integrations/providers/openwearables.js +1 -0
  759. package/dist/node/integrations/providers/oura.js +1 -0
  760. package/dist/node/integrations/providers/oxylabs.js +1 -0
  761. package/dist/node/integrations/providers/payments/capabilities-billing.js +0 -0
  762. package/dist/node/integrations/providers/payments/capabilities-payments.js +0 -0
  763. package/dist/node/integrations/providers/payments/capabilities.js +0 -0
  764. package/dist/node/integrations/providers/payments/context.js +1 -0
  765. package/dist/node/integrations/providers/payments/provider.js +0 -0
  766. package/dist/node/integrations/providers/payments/resources.js +0 -0
  767. package/dist/node/integrations/providers/payments/shared.js +1 -0
  768. package/dist/node/integrations/providers/payments.js +1 -0
  769. package/dist/node/integrations/providers/paypal.js +1 -0
  770. package/dist/node/integrations/providers/peloton.js +1 -0
  771. package/dist/node/integrations/providers/posthog-llm-telemetry.js +1 -0
  772. package/dist/node/integrations/providers/posthog.js +1 -0
  773. package/dist/node/integrations/providers/postmark.js +1 -0
  774. package/dist/node/integrations/providers/powens.js +1 -0
  775. package/dist/node/integrations/providers/project-management.js +1 -0
  776. package/dist/node/integrations/providers/provider-delta.js +1 -0
  777. package/dist/node/integrations/providers/qdrant.js +1 -0
  778. package/dist/node/integrations/providers/registry.js +1 -0
  779. package/dist/node/integrations/providers/reworkd.js +1 -0
  780. package/dist/node/integrations/providers/serper.js +1 -0
  781. package/dist/node/integrations/providers/sillage.js +1 -0
  782. package/dist/node/integrations/providers/slng.js +1 -0
  783. package/dist/node/integrations/providers/sms.js +0 -0
  784. package/dist/node/integrations/providers/social.js +1 -0
  785. package/dist/node/integrations/providers/storage.js +0 -0
  786. package/dist/node/integrations/providers/strava.js +1 -0
  787. package/dist/node/integrations/providers/stripe.js +1 -0
  788. package/dist/node/integrations/providers/supabase-postgres.js +1 -0
  789. package/dist/node/integrations/providers/supabase-vector.js +1 -0
  790. package/dist/node/integrations/providers/tavily.js +1 -0
  791. package/dist/node/integrations/providers/tldv.js +1 -0
  792. package/dist/node/integrations/providers/twilio-sms.js +1 -0
  793. package/dist/node/integrations/providers/vector-store.js +0 -0
  794. package/dist/node/integrations/providers/video.js +1 -0
  795. package/dist/node/integrations/providers/voice-video-sync.js +0 -0
  796. package/dist/node/integrations/providers/voice.js +0 -0
  797. package/dist/node/integrations/providers/web-access-shared.js +1 -0
  798. package/dist/node/integrations/providers/whoop.js +1 -0
  799. package/dist/node/integrations/runtime.js +1 -0
  800. package/dist/node/integrations/sales-intelligence/events.js +1 -0
  801. package/dist/node/integrations/sales-intelligence/fullenrich-cancel-operation.js +1 -0
  802. package/dist/node/integrations/sales-intelligence/index.js +1 -0
  803. package/dist/node/integrations/sales-intelligence/operation-helpers.js +1 -0
  804. package/dist/node/integrations/sales-intelligence/operations.js +1 -0
  805. package/dist/node/integrations/sales-intelligence/schemas-events.js +1 -0
  806. package/dist/node/integrations/sales-intelligence/schemas-results.js +1 -0
  807. package/dist/node/integrations/sales-intelligence/schemas.js +1 -0
  808. package/dist/node/integrations/secrets/aws-secret-manager.js +1 -0
  809. package/dist/node/integrations/secrets/env-secret-provider.js +1 -0
  810. package/dist/node/integrations/secrets/gcp-secret-manager.js +1 -0
  811. package/dist/node/integrations/secrets/index.js +1 -0
  812. package/dist/node/integrations/secrets/manager.js +1 -0
  813. package/dist/node/integrations/secrets/provider.js +1 -0
  814. package/dist/node/integrations/secrets/scaleway-secret-manager.js +1 -0
  815. package/dist/node/integrations/secrets-types.js +0 -0
  816. package/dist/node/integrations/social/index.js +1 -0
  817. package/dist/node/integrations/social/instagram.js +0 -0
  818. package/dist/node/integrations/social/models.js +0 -0
  819. package/dist/node/integrations/social/provider.js +1 -0
  820. package/dist/node/integrations/social/tracking-models.js +1 -0
  821. package/dist/node/integrations/social/tracking-provider.js +0 -0
  822. package/dist/node/integrations/social/tracking-store.js +0 -0
  823. package/dist/node/integrations/social/x-publication.js +1 -0
  824. package/dist/node/integrations/social/x-upload-state.js +1 -0
  825. package/dist/node/integrations/social/x-upload.js +1 -0
  826. package/dist/node/integrations/social/x-withdrawal.js +1 -0
  827. package/dist/node/integrations/social/x.js +0 -0
  828. package/dist/node/integrations/spec.js +1 -0
  829. package/dist/node/integrations/transport.js +1 -0
  830. package/dist/node/integrations/versioning.js +1 -0
  831. package/dist/node/integrations/web-access/browser-automation.js +1 -0
  832. package/dist/node/integrations/web-access/capability-ledger.js +1 -0
  833. package/dist/node/integrations/web-access/events.js +1 -0
  834. package/dist/node/integrations/web-access/index.js +21 -0
  835. package/dist/node/integrations/web-access/inventory-definitions-expanded.js +1 -0
  836. package/dist/node/integrations/web-access/inventory-definitions.js +1 -0
  837. package/dist/node/integrations/web-access/inventory-evidence.js +1 -0
  838. package/dist/node/integrations/web-access/inventory-mappings-browserbase.js +1 -0
  839. package/dist/node/integrations/web-access/inventory-mappings.js +1 -0
  840. package/dist/node/integrations/web-access/inventory.js +1 -0
  841. package/dist/node/integrations/web-access/models.js +1 -0
  842. package/dist/node/integrations/web-access/operation-definitions.js +1 -0
  843. package/dist/node/integrations/web-access/operation-errors.js +1 -0
  844. package/dist/node/integrations/web-access/operation-output-models.js +1 -0
  845. package/dist/node/integrations/web-access/operation-schema-models.js +1 -0
  846. package/dist/node/integrations/web-access/operation-schemas.js +1 -0
  847. package/dist/node/integrations/web-access/operations.js +21 -0
  848. package/dist/node/integrations/web-access/providers.js +0 -0
  849. package/dist/node/integrations/web-access/schemas.js +1 -0
  850. package/package.json +3606 -0
@@ -0,0 +1 @@
1
+ import{StabilityEnum as g}from"@lssm/lib.contracts-spec/ownership";import{SpecContractRegistry as s}from"@lssm/lib.contracts-spec/registry";var p=(e)=>`${e.key}.v${e.version}`;class c extends s{constructor(e){super("integration",e)}getByCategory(e){return this.list().filter((t)=>t.meta.category===e)}}function u(e){return p(e)}var i=(e)=>e;var o=["official-api","official-mcp","aggregator-api","aggregator-mcp","unofficial"],l=[{key:"health.activities.read",version:"1.0.0"},{key:"health.workouts.read",version:"1.0.0"},{key:"health.sleep.read",version:"1.0.0"},{key:"health.biometrics.read",version:"1.0.0"}],d=[{type:"rest"},{type:"mcp",transport:"http"},{type:"webhook",inbound:{signatureHeader:"x-webhook-signature",signingAlgorithm:"hmac-sha256"}}],n=[{type:"oauth2",grantType:"authorization_code",tokenUrl:"",scopes:[]},{type:"api-key"},{type:"bearer"},{type:"basic"}];function a(e){let t=e.supportedAuthMethods??y(e);return i({meta:{key:e.key,version:"1.0.0",category:"health",title:e.title,description:e.description,domain:"health",owners:["platform.integrations"],tags:["health","wearables",...e.tags],stability:e.stability??g.Experimental},supportedModes:e.supportedModes??["managed","byok"],transports:e.transports??d,preferredTransport:"rest",supportedAuthMethods:t,capabilities:{provides:e.capabilities??[...l]},configSchema:{schema:{type:"object",properties:{apiBaseUrl:{type:"string",description:"Optional API base URL override for provider-specific regional or partner endpoints."},mcpUrl:{type:"string",description:"Optional MCP endpoint URL for provider tool transport."},oauthTokenUrl:{type:"string",description:"Optional OAuth token endpoint override used for access-token refresh flows."},defaultTransport:{type:"string",enum:[...o],description:"Preferred transport strategy used before fallbacks are attempted."},strategyOrder:{type:"array",items:{type:"string",enum:[...o]},description:"Ordered transport fallback strategy. Defaults to official API -> official MCP -> aggregator API -> aggregator MCP -> unofficial."},allowUnofficial:{type:"boolean",description:"Must be true to allow unofficial/automation connectors as fallback."},unofficialAllowList:{type:"array",items:{type:"string"},description:"Optional allowlist of provider keys allowed to use unofficial connectors."}}},example:{defaultTransport:e.defaultTransport??"official-api",strategyOrder:[...o],allowUnofficial:!1,unofficialAllowList:[]}},secretSchema:{schema:{type:"object",properties:{apiKey:{type:"string"},accessToken:{type:"string"},refreshToken:{type:"string"},tokenExpiresAt:{type:"string"},clientId:{type:"string"},clientSecret:{type:"string"},mcpAccessToken:{type:"string"},username:{type:"string"},password:{type:"string"}}},example:{apiKey:"provider-api-key",accessToken:"oauth-access-token",refreshToken:"oauth-refresh-token"}},healthCheck:{method:"list",timeoutMs:1e4},docsUrl:e.docsUrl,byokSetup:{setupInstructions:e.byokSetupInstructions??"Create provider credentials, set allowed scopes, and store credentials in secret provider.",requiredScopes:e.byokScopes,keyRotationSupported:!1,quotaTrackingSupported:!1}})}function y(e){if(e.oauthTokenUrl){let t=e.oauthTokenUrl;return n.map((r)=>{if(r.type==="oauth2")return{...r,tokenUrl:t,scopes:e.byokScopes??[]};return r})}return[...n]}var f=a({key:"health.whoop",title:"Whoop",description:"Whoop integration for sleep, recovery, workouts, and physiological metrics.",docsUrl:"https://developer.whoop.com/",tags:["whoop","official-api"],byokScopes:["read:recovery","read:workout","read:sleep","read:profile"]});function T(e){return e.register(f)}export{T as registerWhoopIntegration,f as whoopIntegrationSpec};
@@ -0,0 +1 @@
1
+ import{performance as c}from"node:perf_hooks";function v(e,t){return e.find((n)=>n.type===t)}function f(e,t){return e.some((n)=>n.type===t)}function k(e,t){return e.find((n)=>n.type===t)}function d(e,t){return e.some((n)=>n.type===t)}function m(e,t){if(!e)return;return t??e.currentVersion}function I(e,t){return e.supportedVersions.find((n)=>n.version===t)}function S(e,t){let n=I(e,t);return n?.status==="deprecated"||n?.status==="sunset"}function V(e){return e.supportedVersions.filter((t)=>t.status==="stable"||t.status==="beta")}var T=3,b=250;class x{secretProvider;telemetry;maxAttempts;backoffMs;shouldRetry;sleep;now;constructor(e,t={}){this.secretProvider=e;this.telemetry=t.telemetry,this.maxAttempts=Math.max(1,t.maxAttempts??T),this.backoffMs=t.backoffMs??b,this.shouldRetry=t.shouldRetry??((n)=>typeof n==="object"&&n!==null&&("retryable"in n)&&Boolean(n.retryable)),this.sleep=t.sleep??((n)=>n<=0?Promise.resolve():new Promise((r)=>setTimeout(r,n))),this.now=t.now??(()=>new Date)}async executeWithGuards(e,t,n,r,s){let o=this.findIntegration(e,r);if(!o)return this.failure({tenantId:r.tenantId,appId:r.appId,environment:r.environment,blueprintName:r.blueprintName,blueprintVersion:r.blueprintVersion,configVersion:r.configVersion,slotId:e,operation:t},void 0,{code:"SLOT_NOT_BOUND",message:`Integration slot "${e}" is not bound for tenant "${r.tenantId}".`,retryable:!1},0);let g=o.connection.status;if(g==="disconnected"||g==="error")return this.failure(this.makeContext(e,t,r),o,{code:"CONNECTION_NOT_READY",message:`Integration connection "${o.connection.meta.label}" is in status "${g}".`,retryable:!1},0);let h=await this.fetchSecrets(o.connection),a=0,u=c.now();while(a<this.maxAttempts){a+=1;try{let i=await s(o.connection,h),p=c.now()-u;return this.emitTelemetry(this.makeContext(e,t,r),o,"success",p),{success:!0,data:i,metadata:{latencyMs:p,connectionId:o.connection.meta.id,ownershipMode:o.connection.ownershipMode,attempts:a}}}catch(i){let p=c.now()-u;this.emitTelemetry(this.makeContext(e,t,r),o,"error",p,this.errorCodeFor(i),i instanceof Error?i.message:String(i));let l=this.shouldRetry(i,a);if(!l||a>=this.maxAttempts)return{success:!1,error:{code:this.errorCodeFor(i),message:i instanceof Error?i.message:String(i),retryable:l,cause:i},metadata:{latencyMs:p,connectionId:o.connection.meta.id,ownershipMode:o.connection.ownershipMode,attempts:a}};await this.sleep(this.backoffMs)}}return{success:!1,error:{code:"UNKNOWN_ERROR",message:"Integration call failed after retries.",retryable:!1},metadata:{latencyMs:c.now()-u,connectionId:o.connection.meta.id,ownershipMode:o.connection.ownershipMode,attempts:this.maxAttempts}}}findIntegration(e,t){return t.integrations.find((n)=>n.slot.slotId===e)}async fetchSecrets(e){if(!this.secretProvider.canHandle(e.secretRef))throw Error(`Secret provider "${this.secretProvider.id}" cannot handle reference "${e.secretRef}".`);let t=await this.secretProvider.getSecret(e.secretRef);return this.parseSecret(t)}parseSecret(e){let t=new TextDecoder().decode(e.data);try{let n=JSON.parse(t);if(n&&typeof n==="object"&&!Array.isArray(n)){let r=Object.entries(n).filter(([,s])=>typeof s==="string"||typeof s==="number"||typeof s==="boolean");return Object.fromEntries(r.map(([s,o])=>[s,String(o)]))}}catch{}return{secret:t}}emitTelemetry(e,t,n,r,s,o){if(!this.telemetry||!t)return;this.telemetry.record({tenantId:e.tenantId,appId:e.appId,environment:e.environment,slotId:e.slotId,integrationKey:t.connection.meta.integrationKey,integrationVersion:t.connection.meta.integrationVersion,connectionId:t.connection.meta.id,status:n,durationMs:r,errorCode:s,errorMessage:o,occurredAt:this.now(),metadata:{blueprint:`${e.blueprintName}.v${e.blueprintVersion}`,configVersion:e.configVersion,operation:e.operation}})}failure(e,t,n,r){if(t)this.emitTelemetry(e,t,"error",0,n.code,n.message);return{success:!1,error:n,metadata:{latencyMs:0,connectionId:t?.connection.meta.id??"unknown",ownershipMode:t?.connection.ownershipMode??"managed",attempts:r}}}makeContext(e,t,n){return{tenantId:n.tenantId,appId:n.appId,environment:n.environment,blueprintName:n.blueprintName,blueprintVersion:n.blueprintVersion,configVersion:n.configVersion,slotId:e,operation:t}}errorCodeFor(e){if(typeof e==="object"&&e!==null&&"code"in e&&typeof e.code==="string")return e.code;return"PROVIDER_ERROR"}}class y{resolve(e,t,n){if(n&&d(e,n))return n;if(t&&d(e,t))return t;let r=e[0];if(r)return r.type;return"rest"}}function A(e,t){if(!e||e.length===0)return t;if(t&&f(e,t))return t;return e[0]?.type}function N(e,t){return{transport:new y().resolve(e.transports??[],e.preferredTransport,t.activeTransport),authMethod:A(e.supportedAuthMethods,t.authMethod),apiVersion:m(e.versionPolicy,t.apiVersion)}}var C=["official-api","official-mcp","aggregator-api","aggregator-mcp","unofficial"];function _(e){let t=e?.strategyOrder&&e.strategyOrder.length>0?e.strategyOrder:[...C];if(e?.allowUnofficial)return[...t];return t.filter((n)=>n!=="unofficial")}function D(e,t){if(!t?.allowUnofficial)return!1;if(!t.unofficialAllowList||t.unofficialAllowList.length===0)return!0;return t.unofficialAllowList.includes(e)}function U(e){let t=e.connection.status;if(t==="disconnected"||t==="error")throw Error(`Integration connection "${e.connection.meta.label}" is in status "${t}".`)}function F(e){switch(e){case"connected":return"connected";case"disconnected":return"disconnected";case"error":return"error";case"unknown":default:return"unknown"}}export{C as DEFAULT_HEALTH_STRATEGY_ORDER,y as DefaultTransportResolver,x as IntegrationCallGuard,F as connectionStatusLabel,U as ensureConnectionReady,D as isUnofficialHealthProviderAllowed,A as resolveAuthMethod,_ as resolveHealthStrategyOrder,N as resolveIntegrationRequestContext};
@@ -0,0 +1 @@
1
+ import{defineEvent as n}from"@lssm/lib.contracts-spec/events";import{ScalarTypeEnum as t,SchemaModel as i}from"@lssm/lib.schema";var e=t.NonEmptyString(),l={connectionId:{type:e,isOptional:!1},deliveryId:{type:e,isOptional:!1},jobId:{type:e,isOptional:!1},correlationId:{type:e,isOptional:!0},receivedAt:{type:t.DateTime(),isOptional:!1},payload:{type:t.JSONObject(),isOptional:!1}},c=new i({name:"FullEnrichBatchCompletePayload",fields:{...l,batchId:{type:e,isOptional:!1}}}),r=new i({name:"FullEnrichContactFinishedPayload",fields:{...l,contactId:{type:e,isOptional:!1}}}),p=n({meta:{key:"sales-intelligence.fullenrich.webhook.batch-complete",version:"1.0.0",description:"A FullEnrich enrichment batch reached a terminal result.",stability:"experimental",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","webhook"]},pii:["payload"],payload:c}),h=n({meta:{key:"sales-intelligence.fullenrich.webhook.contact-finished",version:"1.0.0",description:"A FullEnrich contact enrichment result became available.",stability:"experimental",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","webhook"]},pii:["payload"],payload:r}),d=[p,h];function u(o){return d.reduce((a,s)=>a.register(s),o)}export{p as FullEnrichBatchCompleteEvent,c as FullEnrichBatchCompletePayload,h as FullEnrichContactFinishedEvent,r as FullEnrichContactFinishedPayload,d as fullEnrichWebhookEvents,u as registerFullEnrichWebhookEvents};
@@ -0,0 +1 @@
1
+ import{defineCommand as h}from"@lssm/lib.contracts-spec/operations";import{defaultRestPath as f}from"@lssm/lib.contracts-spec/jsonschema";var o="1.0.0";function r(t){return f(t,o)}function d(t){return`${t.replace(/\./g,"_")}-v1_0_0`}function a(t){return`fullenrich_${t}-v1_0_0`}import{ScalarTypeEnum as i,SchemaModel as l}from"@lssm/lib.schema";var n=i.JSONObject(),p=i.String_unsecure(),e=i.NonEmptyString(),s=new l({name:"FullEnrichResultInput",fields:{connectionId:{type:e,isOptional:!1},jobId:{type:e,isOptional:!1},correlationId:{type:e,isOptional:!0}}}),g=new l({name:"FullEnrichWebhookInput",fields:{connectionId:{type:e,isOptional:!1},headers:{type:n,isOptional:!0},payload:{type:n,isOptional:!1},receivedAt:{type:i.DateTime(),isOptional:!0}}}),c=new l({name:"FullEnrichReceiptOutput",fields:{providerKey:{type:e,isOptional:!1},jobId:{type:e,isOptional:!0},correlationId:{type:e,isOptional:!0},status:{type:p,isOptional:!1},data:{type:n,isOptional:!0},rawRedacted:{type:n,isOptional:!0}}}),E=new l({name:"FullEnrichRemoteMcpOutput",fields:{providerKey:{type:e,isOptional:!1},url:{type:e,isOptional:!1},auth:{type:e,isOptional:!1},toolCategories:{type:p,isOptional:!1,isArray:!0}}});var u="sales-intelligence.fullenrich.contact.enrichment.cancel",w=h({meta:{key:u,version:o,title:"Cancel FullEnrich Contact Enrichment",description:"Cancel a pending FullEnrich contact enrichment job.",goal:"Stop pending credit-bearing work when the provider still permits it.",context:"Cancellation is terminal and requires scoped human approval.",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","pii-safe"],stability:"experimental"},io:{input:s,output:c},policy:{auth:"user",policies:[],escalate:"human_review"},execution:{effects:["write","external-side-effect"],approval:{required:!0,effects:["write","external-side-effect"]}},transport:{rest:{method:"POST",path:r(u)},mcp:{toolName:a("contact_enrichment_cancel")}}});export{w as FullEnrichContactEnrichmentCancel};
@@ -0,0 +1 @@
1
+ import{defineEvent as M}from"@lssm/lib.contracts-spec/events";import{ScalarTypeEnum as I,SchemaModel as _}from"@lssm/lib.schema";var a=I.NonEmptyString(),j={connectionId:{type:a,isOptional:!1},deliveryId:{type:a,isOptional:!1},jobId:{type:a,isOptional:!1},correlationId:{type:a,isOptional:!0},receivedAt:{type:I.DateTime(),isOptional:!1},payload:{type:I.JSONObject(),isOptional:!1}},Q=new _({name:"FullEnrichBatchCompletePayload",fields:{...j,batchId:{type:a,isOptional:!1}}}),Y=new _({name:"FullEnrichContactFinishedPayload",fields:{...j,contactId:{type:a,isOptional:!1}}}),H=M({meta:{key:"sales-intelligence.fullenrich.webhook.batch-complete",version:"1.0.0",description:"A FullEnrich enrichment batch reached a terminal result.",stability:"experimental",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","webhook"]},pii:["payload"],payload:Q}),X=M({meta:{key:"sales-intelligence.fullenrich.webhook.contact-finished",version:"1.0.0",description:"A FullEnrich contact enrichment result became available.",stability:"experimental",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","webhook"]},pii:["payload"],payload:Y}),Z=[H,X];function ge(e){return Z.reduce((p,u)=>p.register(u),e)}import{defineCommand as te}from"@lssm/lib.contracts-spec/operations";import{defaultRestPath as ee}from"@lssm/lib.contracts-spec/jsonschema";var h="1.0.0";function f(e){return ee(e,h)}function L(e){return`${e.replace(/\./g,"_")}-v1_0_0`}function E(e){return`fullenrich_${e}-v1_0_0`}import{ScalarTypeEnum as O,SchemaModel as F}from"@lssm/lib.schema";var g=O.JSONObject(),G=O.String_unsecure(),l=O.NonEmptyString(),m=new F({name:"FullEnrichResultInput",fields:{connectionId:{type:l,isOptional:!1},jobId:{type:l,isOptional:!1},correlationId:{type:l,isOptional:!0}}}),N=new F({name:"FullEnrichWebhookInput",fields:{connectionId:{type:l,isOptional:!1},headers:{type:g,isOptional:!0},payload:{type:g,isOptional:!1},receivedAt:{type:O.DateTime(),isOptional:!0}}}),s=new F({name:"FullEnrichReceiptOutput",fields:{providerKey:{type:l,isOptional:!1},jobId:{type:l,isOptional:!0},correlationId:{type:l,isOptional:!0},status:{type:G,isOptional:!1},data:{type:g,isOptional:!0},rawRedacted:{type:g,isOptional:!0}}}),K=new F({name:"FullEnrichRemoteMcpOutput",fields:{providerKey:{type:l,isOptional:!1},url:{type:l,isOptional:!1},auth:{type:l,isOptional:!1},toolCategories:{type:G,isOptional:!1,isArray:!0}}});var W="sales-intelligence.fullenrich.contact.enrichment.cancel",V=te({meta:{key:W,version:h,title:"Cancel FullEnrich Contact Enrichment",description:"Cancel a pending FullEnrich contact enrichment job.",goal:"Stop pending credit-bearing work when the provider still permits it.",context:"Cancellation is terminal and requires scoped human approval.",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","pii-safe"],stability:"experimental"},io:{input:m,output:s},policy:{auth:"user",policies:[],escalate:"human_review"},execution:{effects:["write","external-side-effect"],approval:{required:!0,effects:["write","external-side-effect"]}},transport:{rest:{method:"POST",path:f(W)},mcp:{toolName:E("contact_enrichment_cancel")}}});import{defineCommand as A,defineQuery as o}from"@lssm/lib.contracts-spec/operations";import{ScalarTypeEnum as x,SchemaModel as v}from"@lssm/lib.schema";var q=x.JSONObject(),D=x.String_unsecure(),i=x.NonEmptyString(),k=new v({name:"FullEnrichCorrelationInput",fields:{connectionId:{type:i,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),w=new v({name:"FullEnrichSearchInput",fields:{connectionId:{type:i,isOptional:!1},query:{type:i,isOptional:!0},filters:{type:q,isOptional:!0},limit:{type:x.Int_unsecure(),isOptional:!0},correlationId:{type:i,isOptional:!0}}}),R=new v({name:"FullEnrichLookupInput",fields:{connectionId:{type:i,isOptional:!1},identifier:{type:i,isOptional:!1},identifierType:{type:D,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),C=new v({name:"FullEnrichAsyncStartInput",fields:{connectionId:{type:i,isOptional:!1},request:{type:q,isOptional:!1},correlationId:{type:i,isOptional:!0},webhookUrl:{type:D,isOptional:!0}}});import{ScalarTypeEnum as d,SchemaModel as S}from"@lssm/lib.schema";var B=d.JSONObject(),P=d.String_unsecure(),r=d.NonEmptyString(),U=new S({name:"FullEnrichCreditOutput",fields:{providerKey:{type:r,isOptional:!1},creditsRemaining:{type:d.Float_unsecure(),isOptional:!0},raw:{type:B,isOptional:!0},correlationId:{type:r,isOptional:!0}}}),J=new S({name:"FullEnrichValidationOutput",fields:{valid:{type:d.Boolean(),isOptional:!1},providerKey:{type:r,isOptional:!1},message:{type:P,isOptional:!0}}}),y=new S({name:"FullEnrichResultListOutput",fields:{providerKey:{type:r,isOptional:!1},items:{type:B,isOptional:!1},correlationId:{type:r,isOptional:!0}}}),T=new S({name:"FullEnrichAsyncStartOutput",fields:{providerKey:{type:r,isOptional:!1},jobId:{type:r,isOptional:!0},correlationId:{type:r,isOptional:!0},status:{type:P,isOptional:!1},expectedWebhookPath:{type:P,isOptional:!0}}});var ie=["@platform.integrations"],t={version:h,owners:ie,tags:["sales-intelligence","fullenrich","pii-safe"],stability:"experimental"},c={effects:["read"]},b={effects:["write","cost-bearing","external-side-effect"],approval:{required:!0}};function n(e,p,u){return{rest:{method:p,path:f(e)},mcp:{toolName:u??L(e)}}}var ne=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.credits.get",title:"Get FullEnrich Credits",description:"Read FullEnrich credit balance without exposing API keys.",goal:"Preflight enrichment usage and quota availability.",context:"Uses the documented FullEnrich credits API via a secret-backed runtime adapter."},io:{input:k,output:U},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.credits.get","GET")}),le=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.api-key.validate",title:"Validate FullEnrich API Key",description:"Validate configured FullEnrich credentials with redacted output.",goal:"Fail fast on invalid BYOK setup without logging key material.",context:"Uses provider key-validation endpoint through runtime secrets only."},io:{input:k,output:J},policy:{auth:"admin",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.api-key.validate","GET")}),oe=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.people.search",title:"Search FullEnrich People",description:"Search people through FullEnrich Search API.",goal:"Find candidate contacts with synthetic-test-safe result handling.",context:"Synchronous FullEnrich people search; no live calls in tests."},io:{input:w,output:y},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.people.search","POST")}),re=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.companies.search",title:"Search FullEnrich Companies",description:"Search companies through FullEnrich Search API.",goal:"Find candidate company records.",context:"Synchronous FullEnrich company search; no live calls in tests."},io:{input:w,output:y},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.companies.search","POST")}),ce=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.people.lookup",title:"Lookup FullEnrich Person",description:"Lookup/enrich a known person record.",goal:"Resolve a known person identifier through FullEnrich.",context:"Uses lookup/search surface only when provider supports the identifier type."},io:{input:R,output:y},policy:{auth:"user",policies:[]},execution:b,transport:n("sales-intelligence.fullenrich.people.lookup","POST")}),ae=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.companies.lookup",title:"Lookup FullEnrich Company",description:"Lookup/enrich a known company record.",goal:"Resolve a known company identifier through FullEnrich.",context:"Uses lookup/search surface only when provider supports the identifier type."},io:{input:R,output:y},policy:{auth:"user",policies:[]},execution:b,transport:n("sales-intelligence.fullenrich.companies.lookup","POST")}),se=A({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.contact.enrichment.start",title:"Start FullEnrich Contact Enrichment",description:"Start async FullEnrich contact enrichment.",goal:"Start enrichment and return correlation/job metadata.",context:"Webhook-first async flow; polling is fallback only."},io:{input:C,output:T},policy:{auth:"user",policies:[]},execution:b,transport:n("sales-intelligence.fullenrich.contact.enrichment.start","POST")}),pe=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.contact.enrichment.result.get",title:"Get FullEnrich Contact Enrichment Result",description:"Slow polling fallback for async enrichment results.",goal:"Retrieve a result when webhook delivery is unavailable.",context:"Fallback-only because FullEnrich recommends webhooks for async results."},io:{input:m,output:s},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.contact.enrichment.result.get","GET",E("contact_result_get"))}),ue=A({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.reverse-email.start",title:"Start FullEnrich Reverse Email Lookup",description:"Start async reverse-email lookup.",goal:"Resolve a contact from an email address with correlation metadata.",context:"Webhook-first async reverse-email flow."},io:{input:C,output:T},policy:{auth:"user",policies:[]},execution:b,transport:n("sales-intelligence.fullenrich.reverse-email.start","POST")}),he=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.reverse-email.result.get",title:"Get FullEnrich Reverse Email Result",description:"Slow polling fallback for reverse-email results.",goal:"Retrieve a reverse-email result when webhook delivery is unavailable.",context:"Fallback-only; callers should prefer webhook receipt."},io:{input:m,output:s},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.reverse-email.result.get","GET")}),me=A({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.webhook.enrichment.received",title:"Receive FullEnrich Enrichment Webhook",description:"Normalize inbound enrichment webhook payloads.",goal:"Produce an idempotent receipt without leaking raw PII or secrets.",context:"Signature verification is only enabled when official signing docs exist."},io:{input:N,output:s},policy:{auth:"admin",policies:[]},execution:{effects:["external-side-effect"]}}),de=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.mcp.remote.describe",title:"Describe FullEnrich Remote MCP",description:"Describe the official FullEnrich remote MCP endpoint and auth.",goal:"Let agents discover remote MCP metadata without proxying OAuth secrets.",context:"Declares https://mcp.fullenrich.com/mcp with OAuth metadata."},io:{input:k,output:K},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.mcp.remote.describe","GET")}),z=[ne,le,oe,re,ce,ae,se,pe,V,ue,he,me,de],Ne=Object.fromEntries(z.map((e)=>[e.meta.key,e]));function Ke(e){return z.reduce((p,u)=>p.register(u),e)}export{le as FullEnrichApiKeyValidate,C as FullEnrichAsyncStartInput,T as FullEnrichAsyncStartOutput,H as FullEnrichBatchCompleteEvent,Q as FullEnrichBatchCompletePayload,ae as FullEnrichCompaniesLookup,re as FullEnrichCompaniesSearch,V as FullEnrichContactEnrichmentCancel,pe as FullEnrichContactEnrichmentResultGet,se as FullEnrichContactEnrichmentStart,X as FullEnrichContactFinishedEvent,Y as FullEnrichContactFinishedPayload,k as FullEnrichCorrelationInput,U as FullEnrichCreditOutput,ne as FullEnrichCreditsGet,R as FullEnrichLookupInput,de as FullEnrichMcpRemoteDescribe,ce as FullEnrichPeopleLookup,oe as FullEnrichPeopleSearch,s as FullEnrichReceiptOutput,K as FullEnrichRemoteMcpOutput,m as FullEnrichResultInput,y as FullEnrichResultListOutput,he as FullEnrichReverseEmailResultGet,ue as FullEnrichReverseEmailStart,w as FullEnrichSearchInput,J as FullEnrichValidationOutput,me as FullEnrichWebhookEnrichmentReceived,N as FullEnrichWebhookInput,L as defaultSalesIntelligenceMcpTool,f as defaultSalesIntelligenceRestPath,z as fullEnrichSalesIntelligenceOperations,Z as fullEnrichWebhookEvents,ge as registerFullEnrichWebhookEvents,Ke as registerSalesIntelligenceContracts,h as salesIntelligenceOperationVersion,Ne as salesIntelligenceOperations,E as shortFullEnrichMcpTool};
@@ -0,0 +1 @@
1
+ import{defaultRestPath as e}from"@lssm/lib.contracts-spec/jsonschema";var n="1.0.0";function l(t){return e(t,n)}function i(t){return`${t.replace(/\./g,"_")}-v1_0_0`}function o(t){return`fullenrich_${t}-v1_0_0`}export{i as defaultSalesIntelligenceMcpTool,l as defaultSalesIntelligenceRestPath,n as salesIntelligenceOperationVersion,o as shortFullEnrichMcpTool};
@@ -0,0 +1 @@
1
+ import{defineCommand as P,defineQuery as o}from"@lssm/lib.contracts-spec/operations";import{defineCommand as U}from"@lssm/lib.contracts-spec/operations";import{defaultRestPath as D}from"@lssm/lib.contracts-spec/jsonschema";var a="1.0.0";function m(e){return D(e,a)}function T(e){return`${e.replace(/\./g,"_")}-v1_0_0`}function d(e){return`fullenrich_${e}-v1_0_0`}import{ScalarTypeEnum as f,SchemaModel as E}from"@lssm/lib.schema";var y=f.JSONObject(),A=f.String_unsecure(),l=f.NonEmptyString(),p=new E({name:"FullEnrichResultInput",fields:{connectionId:{type:l,isOptional:!1},jobId:{type:l,isOptional:!1},correlationId:{type:l,isOptional:!0}}}),_=new E({name:"FullEnrichWebhookInput",fields:{connectionId:{type:l,isOptional:!1},headers:{type:y,isOptional:!0},payload:{type:y,isOptional:!1},receivedAt:{type:f.DateTime(),isOptional:!0}}}),s=new E({name:"FullEnrichReceiptOutput",fields:{providerKey:{type:l,isOptional:!1},jobId:{type:l,isOptional:!0},correlationId:{type:l,isOptional:!0},status:{type:A,isOptional:!1},data:{type:y,isOptional:!0},rawRedacted:{type:y,isOptional:!0}}}),M=new E({name:"FullEnrichRemoteMcpOutput",fields:{providerKey:{type:l,isOptional:!1},url:{type:l,isOptional:!1},auth:{type:l,isOptional:!1},toolCategories:{type:A,isOptional:!1,isArray:!0}}});var L="sales-intelligence.fullenrich.contact.enrichment.cancel",j=U({meta:{key:L,version:a,title:"Cancel FullEnrich Contact Enrichment",description:"Cancel a pending FullEnrich contact enrichment job.",goal:"Stop pending credit-bearing work when the provider still permits it.",context:"Cancellation is terminal and requires scoped human approval.",owners:["@platform.integrations"],tags:["sales-intelligence","fullenrich","pii-safe"],stability:"experimental"},io:{input:p,output:s},policy:{auth:"user",policies:[],escalate:"human_review"},execution:{effects:["write","external-side-effect"],approval:{required:!0,effects:["write","external-side-effect"]}},transport:{rest:{method:"POST",path:m(L)},mcp:{toolName:d("contact_enrichment_cancel")}}});import{ScalarTypeEnum as g,SchemaModel as O}from"@lssm/lib.schema";var G=g.JSONObject(),K=g.String_unsecure(),i=g.NonEmptyString(),F=new O({name:"FullEnrichCorrelationInput",fields:{connectionId:{type:i,isOptional:!1},correlationId:{type:i,isOptional:!0},idempotencyKey:{type:i,isOptional:!0}}}),I=new O({name:"FullEnrichSearchInput",fields:{connectionId:{type:i,isOptional:!1},query:{type:i,isOptional:!0},filters:{type:G,isOptional:!0},limit:{type:g.Int_unsecure(),isOptional:!0},correlationId:{type:i,isOptional:!0}}}),w=new O({name:"FullEnrichLookupInput",fields:{connectionId:{type:i,isOptional:!1},identifier:{type:i,isOptional:!1},identifierType:{type:K,isOptional:!1},correlationId:{type:i,isOptional:!0}}}),b=new O({name:"FullEnrichAsyncStartInput",fields:{connectionId:{type:i,isOptional:!1},request:{type:G,isOptional:!1},correlationId:{type:i,isOptional:!0},webhookUrl:{type:K,isOptional:!0}}});import{ScalarTypeEnum as u,SchemaModel as x}from"@lssm/lib.schema";var N=u.JSONObject(),R=u.String_unsecure(),r=u.NonEmptyString(),V=new x({name:"FullEnrichCreditOutput",fields:{providerKey:{type:r,isOptional:!1},creditsRemaining:{type:u.Float_unsecure(),isOptional:!0},raw:{type:N,isOptional:!0},correlationId:{type:r,isOptional:!0}}}),W=new x({name:"FullEnrichValidationOutput",fields:{valid:{type:u.Boolean(),isOptional:!1},providerKey:{type:r,isOptional:!1},message:{type:R,isOptional:!0}}}),h=new x({name:"FullEnrichResultListOutput",fields:{providerKey:{type:r,isOptional:!1},items:{type:N,isOptional:!1},correlationId:{type:r,isOptional:!0}}}),C=new x({name:"FullEnrichAsyncStartOutput",fields:{providerKey:{type:r,isOptional:!1},jobId:{type:r,isOptional:!0},correlationId:{type:r,isOptional:!0},status:{type:R,isOptional:!1},expectedWebhookPath:{type:R,isOptional:!0}}});var J=["@platform.integrations"],t={version:a,owners:J,tags:["sales-intelligence","fullenrich","pii-safe"],stability:"experimental"},c={effects:["read"]},v={effects:["write","cost-bearing","external-side-effect"],approval:{required:!0}};function n(e,S,k){return{rest:{method:S,path:m(e)},mcp:{toolName:k??T(e)}}}var B=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.credits.get",title:"Get FullEnrich Credits",description:"Read FullEnrich credit balance without exposing API keys.",goal:"Preflight enrichment usage and quota availability.",context:"Uses the documented FullEnrich credits API via a secret-backed runtime adapter."},io:{input:F,output:V},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.credits.get","GET")}),z=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.api-key.validate",title:"Validate FullEnrich API Key",description:"Validate configured FullEnrich credentials with redacted output.",goal:"Fail fast on invalid BYOK setup without logging key material.",context:"Uses provider key-validation endpoint through runtime secrets only."},io:{input:F,output:W},policy:{auth:"admin",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.api-key.validate","GET")}),Q=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.people.search",title:"Search FullEnrich People",description:"Search people through FullEnrich Search API.",goal:"Find candidate contacts with synthetic-test-safe result handling.",context:"Synchronous FullEnrich people search; no live calls in tests."},io:{input:I,output:h},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.people.search","POST")}),Y=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.companies.search",title:"Search FullEnrich Companies",description:"Search companies through FullEnrich Search API.",goal:"Find candidate company records.",context:"Synchronous FullEnrich company search; no live calls in tests."},io:{input:I,output:h},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.companies.search","POST")}),H=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.people.lookup",title:"Lookup FullEnrich Person",description:"Lookup/enrich a known person record.",goal:"Resolve a known person identifier through FullEnrich.",context:"Uses lookup/search surface only when provider supports the identifier type."},io:{input:w,output:h},policy:{auth:"user",policies:[]},execution:v,transport:n("sales-intelligence.fullenrich.people.lookup","POST")}),X=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.companies.lookup",title:"Lookup FullEnrich Company",description:"Lookup/enrich a known company record.",goal:"Resolve a known company identifier through FullEnrich.",context:"Uses lookup/search surface only when provider supports the identifier type."},io:{input:w,output:h},policy:{auth:"user",policies:[]},execution:v,transport:n("sales-intelligence.fullenrich.companies.lookup","POST")}),Z=P({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.contact.enrichment.start",title:"Start FullEnrich Contact Enrichment",description:"Start async FullEnrich contact enrichment.",goal:"Start enrichment and return correlation/job metadata.",context:"Webhook-first async flow; polling is fallback only."},io:{input:b,output:C},policy:{auth:"user",policies:[]},execution:v,transport:n("sales-intelligence.fullenrich.contact.enrichment.start","POST")}),ee=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.contact.enrichment.result.get",title:"Get FullEnrich Contact Enrichment Result",description:"Slow polling fallback for async enrichment results.",goal:"Retrieve a result when webhook delivery is unavailable.",context:"Fallback-only because FullEnrich recommends webhooks for async results."},io:{input:p,output:s},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.contact.enrichment.result.get","GET",d("contact_result_get"))}),te=P({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.reverse-email.start",title:"Start FullEnrich Reverse Email Lookup",description:"Start async reverse-email lookup.",goal:"Resolve a contact from an email address with correlation metadata.",context:"Webhook-first async reverse-email flow."},io:{input:b,output:C},policy:{auth:"user",policies:[]},execution:v,transport:n("sales-intelligence.fullenrich.reverse-email.start","POST")}),ie=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.reverse-email.result.get",title:"Get FullEnrich Reverse Email Result",description:"Slow polling fallback for reverse-email results.",goal:"Retrieve a reverse-email result when webhook delivery is unavailable.",context:"Fallback-only; callers should prefer webhook receipt."},io:{input:p,output:s},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.reverse-email.result.get","GET")}),ne=P({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.webhook.enrichment.received",title:"Receive FullEnrich Enrichment Webhook",description:"Normalize inbound enrichment webhook payloads.",goal:"Produce an idempotent receipt without leaking raw PII or secrets.",context:"Signature verification is only enabled when official signing docs exist."},io:{input:_,output:s},policy:{auth:"admin",policies:[]},execution:{effects:["external-side-effect"]}}),le=o({meta:{...t,version:"1.0.0",key:"sales-intelligence.fullenrich.mcp.remote.describe",title:"Describe FullEnrich Remote MCP",description:"Describe the official FullEnrich remote MCP endpoint and auth.",goal:"Let agents discover remote MCP metadata without proxying OAuth secrets.",context:"Declares https://mcp.fullenrich.com/mcp with OAuth metadata."},io:{input:F,output:M},policy:{auth:"user",policies:[]},execution:c,transport:n("sales-intelligence.fullenrich.mcp.remote.describe","GET")}),q=[B,z,Q,Y,H,X,Z,ee,j,te,ie,ne,le],Se=Object.fromEntries(q.map((e)=>[e.meta.key,e]));function ke(e){return q.reduce((S,k)=>S.register(k),e)}export{z as FullEnrichApiKeyValidate,X as FullEnrichCompaniesLookup,Y as FullEnrichCompaniesSearch,ee as FullEnrichContactEnrichmentResultGet,Z as FullEnrichContactEnrichmentStart,B as FullEnrichCreditsGet,le as FullEnrichMcpRemoteDescribe,H as FullEnrichPeopleLookup,Q as FullEnrichPeopleSearch,ie as FullEnrichReverseEmailResultGet,te as FullEnrichReverseEmailStart,ne as FullEnrichWebhookEnrichmentReceived,q as fullEnrichSalesIntelligenceOperations,ke as registerSalesIntelligenceContracts,Se as salesIntelligenceOperations};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as i,SchemaModel as n}from"@lssm/lib.schema";var e=i.JSONObject(),p=i.String_unsecure(),t=i.NonEmptyString(),o=new n({name:"FullEnrichResultInput",fields:{connectionId:{type:t,isOptional:!1},jobId:{type:t,isOptional:!1},correlationId:{type:t,isOptional:!0}}}),a=new n({name:"FullEnrichWebhookInput",fields:{connectionId:{type:t,isOptional:!1},headers:{type:e,isOptional:!0},payload:{type:e,isOptional:!1},receivedAt:{type:i.DateTime(),isOptional:!0}}}),s=new n({name:"FullEnrichReceiptOutput",fields:{providerKey:{type:t,isOptional:!1},jobId:{type:t,isOptional:!0},correlationId:{type:t,isOptional:!0},status:{type:p,isOptional:!1},data:{type:e,isOptional:!0},rawRedacted:{type:e,isOptional:!0}}}),r=new n({name:"FullEnrichRemoteMcpOutput",fields:{providerKey:{type:t,isOptional:!1},url:{type:t,isOptional:!1},auth:{type:t,isOptional:!1},toolCategories:{type:p,isOptional:!1,isArray:!0}}});export{s as FullEnrichReceiptOutput,r as FullEnrichRemoteMcpOutput,o as FullEnrichResultInput,a as FullEnrichWebhookInput};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,SchemaModel as i}from"@lssm/lib.schema";var l=e.JSONObject(),n=e.String_unsecure(),t=e.NonEmptyString(),o=new i({name:"FullEnrichCreditOutput",fields:{providerKey:{type:t,isOptional:!1},creditsRemaining:{type:e.Float_unsecure(),isOptional:!0},raw:{type:l,isOptional:!0},correlationId:{type:t,isOptional:!0}}}),s=new i({name:"FullEnrichValidationOutput",fields:{valid:{type:e.Boolean(),isOptional:!1},providerKey:{type:t,isOptional:!1},message:{type:n,isOptional:!0}}}),r=new i({name:"FullEnrichResultListOutput",fields:{providerKey:{type:t,isOptional:!1},items:{type:l,isOptional:!1},correlationId:{type:t,isOptional:!0}}}),a=new i({name:"FullEnrichAsyncStartOutput",fields:{providerKey:{type:t,isOptional:!1},jobId:{type:t,isOptional:!0},correlationId:{type:t,isOptional:!0},status:{type:n,isOptional:!1},expectedWebhookPath:{type:n,isOptional:!0}}});export{a as FullEnrichAsyncStartOutput,o as FullEnrichCreditOutput,r as FullEnrichResultListOutput,s as FullEnrichValidationOutput};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as e,SchemaModel as n}from"@lssm/lib.schema";var i=e.JSONObject(),o=e.String_unsecure(),t=e.NonEmptyString(),p=new n({name:"FullEnrichCorrelationInput",fields:{connectionId:{type:t,isOptional:!1},correlationId:{type:t,isOptional:!0},idempotencyKey:{type:t,isOptional:!0}}}),r=new n({name:"FullEnrichSearchInput",fields:{connectionId:{type:t,isOptional:!1},query:{type:t,isOptional:!0},filters:{type:i,isOptional:!0},limit:{type:e.Int_unsecure(),isOptional:!0},correlationId:{type:t,isOptional:!0}}}),s=new n({name:"FullEnrichLookupInput",fields:{connectionId:{type:t,isOptional:!1},identifier:{type:t,isOptional:!1},identifierType:{type:o,isOptional:!1},correlationId:{type:t,isOptional:!0}}}),a=new n({name:"FullEnrichAsyncStartInput",fields:{connectionId:{type:t,isOptional:!1},request:{type:i,isOptional:!1},correlationId:{type:t,isOptional:!0},webhookUrl:{type:o,isOptional:!0}}});export{a as FullEnrichAsyncStartInput,p as FullEnrichCorrelationInput,s as FullEnrichLookupInput,r as FullEnrichSearchInput};
@@ -0,0 +1 @@
1
+ import{Buffer as f}from"node:buffer";import{CreateSecretCommand as w,DeleteSecretCommand as v,GetSecretValueCommand as y,PutSecretValueCommand as R,SecretsManagerClient as I}from"@aws-sdk/client-secrets-manager";import{Buffer as g}from"node:buffer";class c extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function S(e){if(!e)throw new c({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[r,t]=e.split("://");if(!r||!t)throw new c({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let n=t.indexOf("?");if(n===-1)return{provider:r,path:t};let s=t.slice(0,n),i=t.slice(n+1),o=Object.fromEntries(i.split("&").filter(Boolean).map((a)=>{let[p,u]=a.split("="),m=p??"",h=u??"";return[decodeURIComponent(m),decodeURIComponent(h)]}));return{provider:r,path:s,extras:o}}function l(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return g.from(e.data,"base64");if(e.encoding==="binary")return g.from(e.data,"binary");return g.from(e.data,"utf-8")}var A=7;class C{id="aws-secrets-manager";explicitRegion;injectedClient;clientConfig;clientsByRegion=new Map;constructor(e={}){this.explicitRegion=e.region,this.injectedClient=e.client,this.clientConfig=e.clientConfig}canHandle(e){try{let r=S(e);return r.provider==="aws"&&(r.path==="secretsmanager"||r.path.startsWith("secretsmanager/"))}catch{return!1}}async getSecret(e,r){let t=this.parseReference(e),n=this.getClient(t.region),s=r?.version??t.stage??t.version,i={SecretId:t.secretId,...this.buildVersionSelector(s)};try{let o=await n.send(new y(i));return{data:N(o,e,this.id),version:typeof o.VersionId==="string"&&o.VersionId?o.VersionId:s,metadata:{region:t.region,secretId:t.secretId,...s?{requestedVersion:s}:{}},retrievedAt:new Date}}catch(o){throw d({error:o,provider:this.id,reference:e,operation:"getSecret"})}}async setSecret(e,r){let t=this.parseReference(e),n=this.getClient(t.region),s=l(r);try{let i=await n.send(new R({SecretId:t.secretId,SecretBinary:s})),o=typeof i.VersionId==="string"&&i.VersionId?i.VersionId:"latest";return{reference:this.buildReference(t.region,t.secretId,{version:o}),version:o}}catch(i){if(!V(i))throw d({error:i,provider:this.id,reference:e,operation:"putSecretValue"});if(P(t.secretId))throw new c({message:`Secret not found: ${t.secretId}`,provider:this.id,reference:e,code:"NOT_FOUND",cause:i});try{let o=await n.send(new w({Name:t.secretId,SecretBinary:s})),a=typeof o.VersionId==="string"&&o.VersionId?o.VersionId:"latest";return{reference:this.buildReference(t.region,t.secretId,{version:a}),version:a}}catch(o){throw d({error:o,provider:this.id,reference:e,operation:"createSecret"})}}}async rotateSecret(e,r){return this.setSecret(e,r)}async deleteSecret(e){let r=this.parseReference(e),t=this.getClient(r.region);try{await t.send(new v({SecretId:r.secretId,RecoveryWindowInDays:A}))}catch(n){throw d({error:n,provider:this.id,reference:e,operation:"deleteSecret"})}}getClient(e){if(this.injectedClient)return this.injectedClient;let r=this.clientsByRegion.get(e);if(r)return r;let t=new I({...this.clientConfig??{},region:e});return this.clientsByRegion.set(e,t),t}parseReference(e){let r=S(e);if(r.provider!=="aws")throw new c({message:`Unsupported secret provider: ${r.provider}`,provider:this.id,reference:e,code:"INVALID"});let t=r.path.split("/").filter(Boolean);if(t.length<3||t[0]!=="secretsmanager")throw new c({message:"Expected secret reference format aws://secretsmanager/{region}/{secretIdOrArn}[?version=...]",provider:this.id,reference:e,code:"INVALID"});let n=t[1],s=this.resolveRegion(n),i=t.slice(2).join("/");if(!i)throw new c({message:`Unable to resolve secret id from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});return{region:s,secretId:i,version:r.extras?.version,stage:r.extras?.stage}}resolveRegion(e){let r=e??this.explicitRegion??process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION;if(!r)throw new c({message:"AWS region must be provided either in reference (aws://secretsmanager/{region}/...) or via AWS_REGION/AWS_DEFAULT_REGION.",provider:this.id,reference:"aws://secretsmanager//",code:"INVALID"});return r}buildVersionSelector(e){if(!e)return{};if(e==="latest"||e==="current")return{VersionStage:"AWSCURRENT"};if(e.startsWith("AWS"))return{VersionStage:e};return{VersionId:e}}buildReference(e,r,t){let n=`aws://secretsmanager/${e}/${r}`,s=t?Object.entries(t).filter(([,i])=>Boolean(i)).map(([i,o])=>`${encodeURIComponent(i)}=${encodeURIComponent(o)}`).join("&"):"";return s?`${n}?${s}`:n}}function N(e,r,t){if(!e||typeof e!=="object")throw new c({message:"Invalid AWS Secrets Manager response",provider:t,reference:r,code:"UNKNOWN",cause:e});let n=e;if(n.SecretBinary instanceof Uint8Array)return n.SecretBinary;if(typeof n.SecretBinary==="string")return f.from(n.SecretBinary,"base64");if(typeof n.SecretString==="string")return f.from(n.SecretString,"utf-8");throw new c({message:"AWS secret value is empty",provider:t,reference:r,code:"NOT_FOUND",cause:e})}function P(e){return e.startsWith("arn:aws:secretsmanager:")}function V(e){if(!e||typeof e!=="object")return!1;let r=e;if(typeof r.$metadata?.httpStatusCode==="number")return r.$metadata.httpStatusCode===404;return r.name==="ResourceNotFoundException"}function d(e){let{error:r,provider:t,reference:n,operation:s}=e;if(r instanceof c)return r;let i=typeof r==="object"&&r!==null&&"$metadata"in r&&typeof r.$metadata==="object"&&r.$metadata?.httpStatusCode,o=i===404?"NOT_FOUND":i===401||i===403?"FORBIDDEN":i===400?"INVALID":"UNKNOWN",a=r instanceof Error?r.message:`Unknown error during ${s}`;return new c({message:a,provider:t,reference:n,code:o,cause:r})}export{C as AwsSecretsManagerProvider};
@@ -0,0 +1 @@
1
+ import{Buffer as i}from"node:buffer";class n extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function c(e){if(!e)throw new n({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[r,t]=e.split("://");if(!r||!t)throw new n({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let o=t.indexOf("?");if(o===-1)return{provider:r,path:t};let s=t.slice(0,o),a=t.slice(o+1),d=Object.fromEntries(a.split("&").filter(Boolean).map((f)=>{let[l,v]=f.split("="),S=l??"",u=v??"";return[decodeURIComponent(S),decodeURIComponent(u)]}));return{provider:r,path:s,extras:d}}function g(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return i.from(e.data,"base64");if(e.encoding==="binary")return i.from(e.data,"binary");return i.from(e.data,"utf-8")}class p{id="env";aliases;constructor(e={}){this.aliases=e.aliases??{}}canHandle(e){let r=this.resolveEnvKey(e);return r!==void 0&&process.env[r]!==void 0}async getSecret(e){let r=this.resolveEnvKey(e);if(!r)throw new n({message:`Unable to resolve environment variable for reference "${e}".`,provider:this.id,reference:e,code:"INVALID"});let t=process.env[r];if(t===void 0)throw new n({message:`Environment variable "${r}" not found for reference "${e}".`,provider:this.id,reference:e,code:"NOT_FOUND"});return{data:Buffer.from(t,"utf-8"),version:"current",metadata:{source:"env",envKey:r},retrievedAt:new Date}}async setSecret(e,r){throw this.forbiddenError("setSecret",e)}async rotateSecret(e,r){throw this.forbiddenError("rotateSecret",e)}async deleteSecret(e){throw this.forbiddenError("deleteSecret",e)}resolveEnvKey(e){if(!e)return;if(this.aliases[e])return this.aliases[e];if(!e.includes("://"))return e;try{let r=c(e);if(r.provider==="env")return r.path;if(r.extras?.env)return r.extras.env;return this.deriveEnvKey(r.path)}catch{return e}}deriveEnvKey(e){if(!e)return;return e.split(/[\/:\-\.]/).filter(Boolean).map((r)=>r.replace(/[^a-zA-Z0-9]/g,"_").replace(/_{2,}/g,"_").toUpperCase()).join("_")}forbiddenError(e,r){return new n({message:`EnvSecretProvider is read-only. "${e}" is not allowed for ${r}.`,provider:this.id,reference:r,code:"FORBIDDEN"})}}export{p as EnvSecretProvider};
@@ -0,0 +1 @@
1
+ import{SecretManagerServiceClient as m}from"@google-cloud/secret-manager";import{Buffer as f}from"node:buffer";class s extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function S(e){if(!e)throw new s({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[t,r]=e.split("://");if(!t||!r)throw new s({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let o=r.indexOf("?");if(o===-1)return{provider:t,path:r};let c=r.slice(0,o),n=r.slice(o+1),a=Object.fromEntries(n.split("&").filter(Boolean).map((i)=>{let[d,l]=i.split("="),u=d??"",h=l??"";return[decodeURIComponent(u),decodeURIComponent(h)]}));return{provider:t,path:c,extras:a}}function g(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return f.from(e.data,"base64");if(e.encoding==="binary")return f.from(e.data,"binary");return f.from(e.data,"utf-8")}var N={automatic:{}};class I{id="gcp-secret-manager";client;explicitProjectId;replication;constructor(e={}){this.client=e.client??new m(e.clientOptions??{}),this.explicitProjectId=e.projectId,this.replication=e.defaultReplication??N}canHandle(e){try{return S(e).provider==="gcp"}catch{return!1}}async getSecret(e,t,r){let o=this.parseReference(e),c=this.buildVersionName(o,t?.version);try{let n=await this.client.accessSecretVersion({name:c},r??{}),[a]=n,i=a.payload;if(!i?.data)throw new s({message:`Secret payload empty for ${c}`,provider:this.id,reference:e,code:"UNKNOWN"});let d=v(a.name??c);return{data:i.data,version:d,metadata:i.dataCrc32c?{crc32c:i.dataCrc32c.toString()}:void 0,retrievedAt:new Date}}catch(n){throw p({error:n,provider:this.id,reference:e,operation:"access"})}}async setSecret(e,t){let r=this.parseReference(e),{secretName:o}=this.buildNames(r),c=g(t);await this.ensureSecretExists(r,t);try{let n=await this.client.addSecretVersion({parent:o,payload:{data:c}});if(!n)throw new s({message:`No version returned when adding secret version for ${o}`,provider:this.id,reference:e,code:"UNKNOWN"});let[a]=n,i=a?.name??`${o}/versions/latest`;return{reference:`gcp://${i}`,version:v(i)??"latest"}}catch(n){throw p({error:n,provider:this.id,reference:e,operation:"addSecretVersion"})}}async rotateSecret(e,t){return this.setSecret(e,t)}async deleteSecret(e){let t=this.parseReference(e),{secretName:r}=this.buildNames(t);try{await this.client.deleteSecret({name:r})}catch(o){throw p({error:o,provider:this.id,reference:e,operation:"delete"})}}parseReference(e){let t=S(e);if(t.provider!=="gcp")throw new s({message:`Unsupported secret provider: ${t.provider}`,provider:this.id,reference:e,code:"INVALID"});let r=t.path.split("/").filter(Boolean);if(r.length<4||r[0]!=="projects")throw new s({message:`Expected secret reference format gcp://projects/{project}/secrets/{secret}[(/versions/{version})] but received "${t.path}"`,provider:this.id,reference:e,code:"INVALID"});let o=r[1]??this.explicitProjectId;if(!o)throw new s({message:`Unable to resolve project or secret from reference "${t.path}"`,provider:this.id,reference:e,code:"INVALID"});let c=r.indexOf("secrets");if(c===-1||c+1>=r.length)throw new s({message:`Unable to resolve project or secret from reference "${t.path}"`,provider:this.id,reference:e,code:"INVALID"});let n=o,a=r[c+1];if(!a)throw new s({message:`Unable to resolve secret ID from reference "${t.path}"`,provider:this.id,reference:e,code:"INVALID"});let i=a,d=r.indexOf("versions"),l=t.extras?.version??(d!==-1&&d+1<r.length?r[d+1]:void 0);return{projectId:n,secretId:i,version:l}}buildNames(e){let t=e.projectId??this.explicitProjectId;if(!t)throw new s({message:"Project ID must be provided either in reference or provider configuration",provider:this.id,reference:`gcp://projects//secrets/${e.secretId}`,code:"INVALID"});let r=`projects/${t}`,o=`${r}/secrets/${e.secretId}`;return{projectParent:r,secretName:o}}buildVersionName(e,t){let{secretName:r}=this.buildNames(e),o=t??e.version??"latest";return`${r}/versions/${o}`}async ensureSecretExists(e,t){let{secretName:r,projectParent:o}=this.buildNames(e);try{await this.client.getSecret({name:r})}catch(c){let n=p({error:c,provider:this.id,reference:`gcp://${r}`,operation:"getSecret",suppressThrow:!0});if(!n||n.code!=="NOT_FOUND"){if(n)throw n;throw c}try{await this.client.createSecret({parent:o,secretId:e.secretId,secret:{replication:this.replication,labels:t.labels}})}catch(a){throw p({error:a,provider:this.id,reference:`gcp://${r}`,operation:"createSecret"})}}}}function v(e){let t=e.split("/").filter(Boolean),r=t.indexOf("versions");if(r===-1||r+1>=t.length)return;return t[r+1]}function p(e){let{error:t,provider:r,reference:o,operation:c,suppressThrow:n}=e;if(t instanceof s)return t;let a=y(t),i=t instanceof Error?t.message:`Unknown error during ${c}`,d=new s({message:i,provider:r,reference:o,code:a,cause:t});if(n)return d;throw d}function y(e){if(typeof e!=="object"||e===null)return"UNKNOWN";let r=e.code;if(r===5||r==="NOT_FOUND")return"NOT_FOUND";if(r===6||r==="ALREADY_EXISTS")return"INVALID";if(r===7||r==="PERMISSION_DENIED"||r===403)return"FORBIDDEN";if(r===3||r==="INVALID_ARGUMENT")return"INVALID";return"UNKNOWN"}export{I as GcpSecretManagerProvider};
@@ -0,0 +1 @@
1
+ import{Buffer as y}from"node:buffer";import{CreateSecretCommand as E,DeleteSecretCommand as N,GetSecretValueCommand as C,PutSecretValueCommand as O,SecretsManagerClient as A}from"@aws-sdk/client-secrets-manager";import{Buffer as v}from"node:buffer";class s extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function d(e){if(!e)throw new s({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[r,t]=e.split("://");if(!r||!t)throw new s({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let n=t.indexOf("?");if(n===-1)return{provider:r,path:t};let i=t.slice(0,n),o=t.slice(n+1),c=Object.fromEntries(o.split("&").filter(Boolean).map((a)=>{let[p,u]=a.split("="),I=p??"",P=u??"";return[decodeURIComponent(I),decodeURIComponent(P)]}));return{provider:r,path:i,extras:c}}function l(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return v.from(e.data,"base64");if(e.encoding==="binary")return v.from(e.data,"binary");return v.from(e.data,"utf-8")}var b=7;class D{id="aws-secrets-manager";explicitRegion;injectedClient;clientConfig;clientsByRegion=new Map;constructor(e={}){this.explicitRegion=e.region,this.injectedClient=e.client,this.clientConfig=e.clientConfig}canHandle(e){try{let r=d(e);return r.provider==="aws"&&(r.path==="secretsmanager"||r.path.startsWith("secretsmanager/"))}catch{return!1}}async getSecret(e,r){let t=this.parseReference(e),n=this.getClient(t.region),i=r?.version??t.stage??t.version,o={SecretId:t.secretId,...this.buildVersionSelector(i)};try{let c=await n.send(new C(o));return{data:U(c,e,this.id),version:typeof c.VersionId==="string"&&c.VersionId?c.VersionId:i,metadata:{region:t.region,secretId:t.secretId,...i?{requestedVersion:i}:{}},retrievedAt:new Date}}catch(c){throw g({error:c,provider:this.id,reference:e,operation:"getSecret"})}}async setSecret(e,r){let t=this.parseReference(e),n=this.getClient(t.region),i=l(r);try{let o=await n.send(new O({SecretId:t.secretId,SecretBinary:i})),c=typeof o.VersionId==="string"&&o.VersionId?o.VersionId:"latest";return{reference:this.buildReference(t.region,t.secretId,{version:c}),version:c}}catch(o){if(!_(o))throw g({error:o,provider:this.id,reference:e,operation:"putSecretValue"});if(V(t.secretId))throw new s({message:`Secret not found: ${t.secretId}`,provider:this.id,reference:e,code:"NOT_FOUND",cause:o});try{let c=await n.send(new E({Name:t.secretId,SecretBinary:i})),a=typeof c.VersionId==="string"&&c.VersionId?c.VersionId:"latest";return{reference:this.buildReference(t.region,t.secretId,{version:a}),version:a}}catch(c){throw g({error:c,provider:this.id,reference:e,operation:"createSecret"})}}}async rotateSecret(e,r){return this.setSecret(e,r)}async deleteSecret(e){let r=this.parseReference(e),t=this.getClient(r.region);try{await t.send(new N({SecretId:r.secretId,RecoveryWindowInDays:b}))}catch(n){throw g({error:n,provider:this.id,reference:e,operation:"deleteSecret"})}}getClient(e){if(this.injectedClient)return this.injectedClient;let r=this.clientsByRegion.get(e);if(r)return r;let t=new A({...this.clientConfig??{},region:e});return this.clientsByRegion.set(e,t),t}parseReference(e){let r=d(e);if(r.provider!=="aws")throw new s({message:`Unsupported secret provider: ${r.provider}`,provider:this.id,reference:e,code:"INVALID"});let t=r.path.split("/").filter(Boolean);if(t.length<3||t[0]!=="secretsmanager")throw new s({message:"Expected secret reference format aws://secretsmanager/{region}/{secretIdOrArn}[?version=...]",provider:this.id,reference:e,code:"INVALID"});let n=t[1],i=this.resolveRegion(n),o=t.slice(2).join("/");if(!o)throw new s({message:`Unable to resolve secret id from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});return{region:i,secretId:o,version:r.extras?.version,stage:r.extras?.stage}}resolveRegion(e){let r=e??this.explicitRegion??process.env.AWS_REGION??process.env.AWS_DEFAULT_REGION;if(!r)throw new s({message:"AWS region must be provided either in reference (aws://secretsmanager/{region}/...) or via AWS_REGION/AWS_DEFAULT_REGION.",provider:this.id,reference:"aws://secretsmanager//",code:"INVALID"});return r}buildVersionSelector(e){if(!e)return{};if(e==="latest"||e==="current")return{VersionStage:"AWSCURRENT"};if(e.startsWith("AWS"))return{VersionStage:e};return{VersionId:e}}buildReference(e,r,t){let n=`aws://secretsmanager/${e}/${r}`,i=t?Object.entries(t).filter(([,o])=>Boolean(o)).map(([o,c])=>`${encodeURIComponent(o)}=${encodeURIComponent(c)}`).join("&"):"";return i?`${n}?${i}`:n}}function U(e,r,t){if(!e||typeof e!=="object")throw new s({message:"Invalid AWS Secrets Manager response",provider:t,reference:r,code:"UNKNOWN",cause:e});let n=e;if(n.SecretBinary instanceof Uint8Array)return n.SecretBinary;if(typeof n.SecretBinary==="string")return y.from(n.SecretBinary,"base64");if(typeof n.SecretString==="string")return y.from(n.SecretString,"utf-8");throw new s({message:"AWS secret value is empty",provider:t,reference:r,code:"NOT_FOUND",cause:e})}function V(e){return e.startsWith("arn:aws:secretsmanager:")}function _(e){if(!e||typeof e!=="object")return!1;let r=e;if(typeof r.$metadata?.httpStatusCode==="number")return r.$metadata.httpStatusCode===404;return r.name==="ResourceNotFoundException"}function g(e){let{error:r,provider:t,reference:n,operation:i}=e;if(r instanceof s)return r;let o=typeof r==="object"&&r!==null&&"$metadata"in r&&typeof r.$metadata==="object"&&r.$metadata?.httpStatusCode,c=o===404?"NOT_FOUND":o===401||o===403?"FORBIDDEN":o===400?"INVALID":"UNKNOWN",a=r instanceof Error?r.message:`Unknown error during ${i}`;return new s({message:a,provider:t,reference:n,code:c,cause:r})}class x{id="env";aliases;constructor(e={}){this.aliases=e.aliases??{}}canHandle(e){let r=this.resolveEnvKey(e);return r!==void 0&&process.env[r]!==void 0}async getSecret(e){let r=this.resolveEnvKey(e);if(!r)throw new s({message:`Unable to resolve environment variable for reference "${e}".`,provider:this.id,reference:e,code:"INVALID"});let t=process.env[r];if(t===void 0)throw new s({message:`Environment variable "${r}" not found for reference "${e}".`,provider:this.id,reference:e,code:"NOT_FOUND"});return{data:Buffer.from(t,"utf-8"),version:"current",metadata:{source:"env",envKey:r},retrievedAt:new Date}}async setSecret(e,r){throw this.forbiddenError("setSecret",e)}async rotateSecret(e,r){throw this.forbiddenError("rotateSecret",e)}async deleteSecret(e){throw this.forbiddenError("deleteSecret",e)}resolveEnvKey(e){if(!e)return;if(this.aliases[e])return this.aliases[e];if(!e.includes("://"))return e;try{let r=d(e);if(r.provider==="env")return r.path;if(r.extras?.env)return r.extras.env;return this.deriveEnvKey(r.path)}catch{return e}}deriveEnvKey(e){if(!e)return;return e.split(/[\/:\-\.]/).filter(Boolean).map((r)=>r.replace(/[^a-zA-Z0-9]/g,"_").replace(/_{2,}/g,"_").toUpperCase()).join("_")}forbiddenError(e,r){return new s({message:`EnvSecretProvider is read-only. "${e}" is not allowed for ${r}.`,provider:this.id,reference:r,code:"FORBIDDEN"})}}import{SecretManagerServiceClient as W}from"@google-cloud/secret-manager";var j={automatic:{}};class T{id="gcp-secret-manager";client;explicitProjectId;replication;constructor(e={}){this.client=e.client??new W(e.clientOptions??{}),this.explicitProjectId=e.projectId,this.replication=e.defaultReplication??j}canHandle(e){try{return d(e).provider==="gcp"}catch{return!1}}async getSecret(e,r,t){let n=this.parseReference(e),i=this.buildVersionName(n,r?.version);try{let o=await this.client.accessSecretVersion({name:i},t??{}),[c]=o,a=c.payload;if(!a?.data)throw new s({message:`Secret payload empty for ${i}`,provider:this.id,reference:e,code:"UNKNOWN"});let p=w(c.name??i);return{data:a.data,version:p,metadata:a.dataCrc32c?{crc32c:a.dataCrc32c.toString()}:void 0,retrievedAt:new Date}}catch(o){throw S({error:o,provider:this.id,reference:e,operation:"access"})}}async setSecret(e,r){let t=this.parseReference(e),{secretName:n}=this.buildNames(t),i=l(r);await this.ensureSecretExists(t,r);try{let o=await this.client.addSecretVersion({parent:n,payload:{data:i}});if(!o)throw new s({message:`No version returned when adding secret version for ${n}`,provider:this.id,reference:e,code:"UNKNOWN"});let[c]=o,a=c?.name??`${n}/versions/latest`;return{reference:`gcp://${a}`,version:w(a)??"latest"}}catch(o){throw S({error:o,provider:this.id,reference:e,operation:"addSecretVersion"})}}async rotateSecret(e,r){return this.setSecret(e,r)}async deleteSecret(e){let r=this.parseReference(e),{secretName:t}=this.buildNames(r);try{await this.client.deleteSecret({name:t})}catch(n){throw S({error:n,provider:this.id,reference:e,operation:"delete"})}}parseReference(e){let r=d(e);if(r.provider!=="gcp")throw new s({message:`Unsupported secret provider: ${r.provider}`,provider:this.id,reference:e,code:"INVALID"});let t=r.path.split("/").filter(Boolean);if(t.length<4||t[0]!=="projects")throw new s({message:`Expected secret reference format gcp://projects/{project}/secrets/{secret}[(/versions/{version})] but received "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});let n=t[1]??this.explicitProjectId;if(!n)throw new s({message:`Unable to resolve project or secret from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});let i=t.indexOf("secrets");if(i===-1||i+1>=t.length)throw new s({message:`Unable to resolve project or secret from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});let o=n,c=t[i+1];if(!c)throw new s({message:`Unable to resolve secret ID from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});let a=c,p=t.indexOf("versions"),u=r.extras?.version??(p!==-1&&p+1<t.length?t[p+1]:void 0);return{projectId:o,secretId:a,version:u}}buildNames(e){let r=e.projectId??this.explicitProjectId;if(!r)throw new s({message:"Project ID must be provided either in reference or provider configuration",provider:this.id,reference:`gcp://projects//secrets/${e.secretId}`,code:"INVALID"});let t=`projects/${r}`,n=`${t}/secrets/${e.secretId}`;return{projectParent:t,secretName:n}}buildVersionName(e,r){let{secretName:t}=this.buildNames(e),n=r??e.version??"latest";return`${t}/versions/${n}`}async ensureSecretExists(e,r){let{secretName:t,projectParent:n}=this.buildNames(e);try{await this.client.getSecret({name:t})}catch(i){let o=S({error:i,provider:this.id,reference:`gcp://${t}`,operation:"getSecret",suppressThrow:!0});if(!o||o.code!=="NOT_FOUND"){if(o)throw o;throw i}try{await this.client.createSecret({parent:n,secretId:e.secretId,secret:{replication:this.replication,labels:r.labels}})}catch(c){throw S({error:c,provider:this.id,reference:`gcp://${t}`,operation:"createSecret"})}}}}function w(e){let r=e.split("/").filter(Boolean),t=r.indexOf("versions");if(t===-1||t+1>=r.length)return;return r[t+1]}function S(e){let{error:r,provider:t,reference:n,operation:i,suppressThrow:o}=e;if(r instanceof s)return r;let c=k(r),a=r instanceof Error?r.message:`Unknown error during ${i}`,p=new s({message:a,provider:t,reference:n,code:c,cause:r});if(o)return p;throw p}function k(e){if(typeof e!=="object"||e===null)return"UNKNOWN";let t=e.code;if(t===5||t==="NOT_FOUND")return"NOT_FOUND";if(t===6||t==="ALREADY_EXISTS")return"INVALID";if(t===7||t==="PERMISSION_DENIED"||t===403)return"FORBIDDEN";if(t===3||t==="INVALID_ARGUMENT")return"INVALID";return"UNKNOWN"}class L{id;providers=[];registrationCounter=0;constructor(e={}){this.id=e.id??"secret-provider-manager";let r=e.providers??[];for(let t of r)this.register(t.provider,{priority:t.priority})}register(e,r={}){return this.providers.push({provider:e,priority:r.priority??0,order:this.registrationCounter++}),this.providers.sort((t,n)=>{if(t.priority!==n.priority)return n.priority-t.priority;return t.order-n.order}),this}canHandle(e){return this.providers.some(({provider:r})=>h(r,e))}async getSecret(e,r){let t=[];for(let{provider:n}of this.providers){if(!h(n,e))continue;try{return await n.getSecret(e,r)}catch(i){if(i instanceof s){if(t.push(i),i.code!=="NOT_FOUND")break;continue}throw i}}throw this.composeError("getSecret",e,t,r?.version)}async setSecret(e,r){return this.delegateToFirst("setSecret",e,(t)=>t.setSecret(e,r))}async rotateSecret(e,r){return this.delegateToFirst("rotateSecret",e,(t)=>t.rotateSecret(e,r))}async deleteSecret(e){await this.delegateToFirst("deleteSecret",e,(r)=>r.deleteSecret(e))}async delegateToFirst(e,r,t){let n=[];for(let{provider:i}of this.providers){if(!h(i,r))continue;try{return await t(i)}catch(o){if(o instanceof s){n.push(o);continue}throw o}}throw this.composeError(e,r,n)}composeError(e,r,t,n){if(t.length===1){let[o]=t;if(o)return o}let i=[`No registered secret provider could ${e}`,`reference "${r}"`];if(n)i.push(`(version: ${n})`);if(t.length>1)i.push(`Attempts: ${t.map((o)=>`${o.provider}:${o.code}`).join(", ")}`);return new s({message:i.join(" "),provider:this.id,reference:r,code:t.length>0?t[t.length-1]?.code??"UNKNOWN":"UNKNOWN",cause:t})}}function h(e,r){try{return e.canHandle(r)}catch{return!1}}import{Buffer as R}from"node:buffer";var m=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;class F{id="scaleway-secret-manager";token;defaultRegion;defaultProjectId;baseUrl;fetchFn;constructor(e={}){this.token=e.token??process.env.SCW_SECRET_KEY??process.env.SCALEWAY_SECRET_KEY??"",this.defaultRegion=e.defaultRegion??process.env.SCW_DEFAULT_REGION??process.env.SCW_REGION,this.defaultProjectId=e.defaultProjectId??process.env.SCW_DEFAULT_PROJECT_ID??process.env.SCW_PROJECT_ID,this.baseUrl=e.baseUrl??"https://api.scaleway.com",this.fetchFn=e.fetch??fetch}canHandle(e){try{let r=d(e);return r.provider==="scw"&&(r.path==="secret-manager"||r.path.startsWith("secret-manager/"))}catch{return!1}}async getSecret(e,r){let t=this.parseReference(e);if(!this.token)throw new s({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});if(!m.test(t.secretIdOrName))throw new s({message:"Scaleway getSecret requires a secretId (uuid) reference, not a secret name.",provider:this.id,reference:e,code:"INVALID"});let n=r?.version??t.revision??"latest",i=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(t.region)}/secrets/${encodeURIComponent(t.secretIdOrName)}/versions/${encodeURIComponent(n)}/access`,o=await this.fetchFn(i,{method:"GET",headers:{"X-Auth-Token":this.token}});if(!o.ok)throw await f({response:o,provider:this.id,reference:e,operation:"getSecret"});let c=await o.json(),a=B(c);return{data:R.from(a,"base64"),version:n,metadata:{region:t.region,secretId:t.secretIdOrName},retrievedAt:new Date}}async setSecret(e,r){let t=this.parseReference(e);if(!this.token)throw new s({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});let n=l(r),i=R.from(n).toString("base64"),o=m.test(t.secretIdOrName)?t.secretIdOrName:await this.createSecret({region:t.region,name:t.secretIdOrName,reference:e}),c=await this.createSecretVersion({region:t.region,secretId:o,dataB64:i,reference:e});return{reference:this.buildReference(t.region,o,{version:c}),version:c}}async rotateSecret(e,r){return this.setSecret(e,r)}async deleteSecret(e){let r=this.parseReference(e);if(!this.token)throw new s({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});if(!m.test(r.secretIdOrName))throw new s({message:"Scaleway deleteSecret requires a secretId (uuid) reference, not a secret name.",provider:this.id,reference:e,code:"INVALID"});let t=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(r.region)}/secrets/${encodeURIComponent(r.secretIdOrName)}`,n=await this.fetchFn(t,{method:"DELETE",headers:{"X-Auth-Token":this.token}});if(!n.ok)throw await f({response:n,provider:this.id,reference:e,operation:"deleteSecret"})}parseReference(e){let r=d(e);if(r.provider!=="scw")throw new s({message:`Unsupported secret provider: ${r.provider}`,provider:this.id,reference:e,code:"INVALID"});let t=r.path.split("/").filter(Boolean);if(t.length<2||t[0]!=="secret-manager")throw new s({message:"Expected secret reference format scw://secret-manager/{region}/{secretIdOrName}[?version=...]",provider:this.id,reference:e,code:"INVALID"});let n=t[1]??this.defaultRegion;if(!n)throw new s({message:"Scaleway region must be provided either in reference (scw://secret-manager/{region}/...) or via SCW_DEFAULT_REGION/SCW_REGION.",provider:this.id,reference:e,code:"INVALID"});let i=t.slice(2).join("/");if(!i)throw new s({message:`Unable to resolve secret id/name from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});return{region:n,secretIdOrName:i,revision:r.extras?.version}}async createSecret(e){let r=this.defaultProjectId;if(!r)throw new s({message:"Scaleway project id is required to create secrets by name (set SCW_DEFAULT_PROJECT_ID/SCW_PROJECT_ID).",provider:this.id,reference:e.reference,code:"INVALID"});let t=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(e.region)}/secrets`,n=await this.fetchFn(t,{method:"POST",headers:{"Content-Type":"application/json","X-Auth-Token":this.token},body:JSON.stringify({name:e.name,project_id:r})});if(!n.ok)throw await f({response:n,provider:this.id,reference:e.reference,operation:"createSecret"});let i=await n.json();return M(i)}async createSecretVersion(e){let r=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(e.region)}/secrets/${encodeURIComponent(e.secretId)}/versions`,t=await this.fetchFn(r,{method:"POST",headers:{"Content-Type":"application/json","X-Auth-Token":this.token},body:JSON.stringify({data:e.dataB64})});if(!t.ok)throw await f({response:t,provider:this.id,reference:e.reference,operation:"createSecretVersion"});let n=await t.json();return K(n)??"latest"}buildReference(e,r,t){let n=`scw://secret-manager/${e}/${r}`,i=t?Object.entries(t).filter(([,o])=>Boolean(o)).map(([o,c])=>`${encodeURIComponent(o)}=${encodeURIComponent(c)}`).join("&"):"";return i?`${n}?${i}`:n}}function B(e){if(!e||typeof e!=="object")throw Error("Invalid scaleway secret payload");let r=e;if(typeof r.data==="string"&&r.data)return r.data;throw Error("Scaleway secret payload is missing data")}function M(e){if(!e||typeof e!=="object")throw Error("Invalid scaleway createSecret payload");let r=e;if(typeof r.id==="string"&&r.id)return r.id;throw Error("Scaleway createSecret response is missing id")}function K(e){if(!e||typeof e!=="object")return;let r=e;if(typeof r.revision==="number")return String(r.revision);if(typeof r.revision==="string"&&r.revision)return r.revision;if(typeof r.id==="string"&&r.id)return r.id;return}async function f(e){let{response:r,provider:t,reference:n,operation:i}=e,o=r.status===404?"NOT_FOUND":r.status===401||r.status===403?"FORBIDDEN":r.status>=400&&r.status<500?"INVALID":"UNKNOWN",c=await G(r),a=c?`Scaleway Secret Manager ${i} failed (${r.status}): ${c}`:`Scaleway Secret Manager ${i} failed (${r.status})`;return new s({message:a,provider:t,reference:n,code:o})}async function G(e){try{let t=(await e.text()).trim();return t.length?t:void 0}catch{return}}export{D as AwsSecretsManagerProvider,x as EnvSecretProvider,T as GcpSecretManagerProvider,F as ScalewaySecretManagerProvider,s as SecretProviderError,L as SecretProviderManager,l as normalizeSecretPayload,d as parseSecretUri};
@@ -0,0 +1 @@
1
+ import{Buffer as s}from"node:buffer";class c extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function y(e){if(!e)throw new c({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[t,r]=e.split("://");if(!t||!r)throw new c({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let o=r.indexOf("?");if(o===-1)return{provider:t,path:r};let i=r.slice(0,o),n=r.slice(o+1),d=Object.fromEntries(n.split("&").filter(Boolean).map((p)=>{let[S,f]=p.split("="),u=S??"",l=f??"";return[decodeURIComponent(u),decodeURIComponent(l)]}));return{provider:t,path:i,extras:d}}function h(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return s.from(e.data,"base64");if(e.encoding==="binary")return s.from(e.data,"binary");return s.from(e.data,"utf-8")}class v{id;providers=[];registrationCounter=0;constructor(e={}){this.id=e.id??"secret-provider-manager";let t=e.providers??[];for(let r of t)this.register(r.provider,{priority:r.priority})}register(e,t={}){return this.providers.push({provider:e,priority:t.priority??0,order:this.registrationCounter++}),this.providers.sort((r,o)=>{if(r.priority!==o.priority)return o.priority-r.priority;return r.order-o.order}),this}canHandle(e){return this.providers.some(({provider:t})=>a(t,e))}async getSecret(e,t){let r=[];for(let{provider:o}of this.providers){if(!a(o,e))continue;try{return await o.getSecret(e,t)}catch(i){if(i instanceof c){if(r.push(i),i.code!=="NOT_FOUND")break;continue}throw i}}throw this.composeError("getSecret",e,r,t?.version)}async setSecret(e,t){return this.delegateToFirst("setSecret",e,(r)=>r.setSecret(e,t))}async rotateSecret(e,t){return this.delegateToFirst("rotateSecret",e,(r)=>r.rotateSecret(e,t))}async deleteSecret(e){await this.delegateToFirst("deleteSecret",e,(t)=>t.deleteSecret(e))}async delegateToFirst(e,t,r){let o=[];for(let{provider:i}of this.providers){if(!a(i,t))continue;try{return await r(i)}catch(n){if(n instanceof c){o.push(n);continue}throw n}}throw this.composeError(e,t,o)}composeError(e,t,r,o){if(r.length===1){let[n]=r;if(n)return n}let i=[`No registered secret provider could ${e}`,`reference "${t}"`];if(o)i.push(`(version: ${o})`);if(r.length>1)i.push(`Attempts: ${r.map((n)=>`${n.provider}:${n.code}`).join(", ")}`);return new c({message:i.join(" "),provider:this.id,reference:t,code:r.length>0?r[r.length-1]?.code??"UNKNOWN":"UNKNOWN",cause:r})}}function a(e,t){try{return e.canHandle(t)}catch{return!1}}export{v as SecretProviderManager};
@@ -0,0 +1 @@
1
+ import{Buffer as o}from"node:buffer";class c extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function g(e){if(!e)throw new c({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[t,r]=e.split("://");if(!t||!r)throw new c({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let n=r.indexOf("?");if(n===-1)return{provider:t,path:r};let i=r.slice(0,n),s=r.slice(n+1),a=Object.fromEntries(s.split("&").filter(Boolean).map((d)=>{let[f,S]=d.split("="),p=f??"",u=S??"";return[decodeURIComponent(p),decodeURIComponent(u)]}));return{provider:t,path:i,extras:a}}function R(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return o.from(e.data,"base64");if(e.encoding==="binary")return o.from(e.data,"binary");return o.from(e.data,"utf-8")}export{c as SecretProviderError,R as normalizeSecretPayload,g as parseSecretUri};
@@ -0,0 +1 @@
1
+ import{Buffer as l}from"node:buffer";import{Buffer as f}from"node:buffer";class i extends Error{provider;reference;code;cause;constructor(e){super(e.message);this.name="SecretProviderError",this.provider=e.provider,this.reference=e.reference,this.code=e.code??"UNKNOWN",this.cause=e.cause}}function S(e){if(!e)throw new i({message:"Secret reference cannot be empty",provider:"unknown",reference:e,code:"INVALID"});let[r,t]=e.split("://");if(!r||!t)throw new i({message:`Invalid secret reference: ${e}`,provider:"unknown",reference:e,code:"INVALID"});let n=t.indexOf("?");if(n===-1)return{provider:r,path:t};let o=t.slice(0,n),s=t.slice(n+1),c=Object.fromEntries(s.split("&").filter(Boolean).map((a)=>{let[u,h]=a.split("="),m=u??"",w=h??"";return[decodeURIComponent(m),decodeURIComponent(w)]}));return{provider:r,path:o,extras:c}}function p(e){if(e.data instanceof Uint8Array)return e.data;if(e.encoding==="base64")return f.from(e.data,"base64");if(e.encoding==="binary")return f.from(e.data,"binary");return f.from(e.data,"utf-8")}var g=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;class v{id="scaleway-secret-manager";token;defaultRegion;defaultProjectId;baseUrl;fetchFn;constructor(e={}){this.token=e.token??process.env.SCW_SECRET_KEY??process.env.SCALEWAY_SECRET_KEY??"",this.defaultRegion=e.defaultRegion??process.env.SCW_DEFAULT_REGION??process.env.SCW_REGION,this.defaultProjectId=e.defaultProjectId??process.env.SCW_DEFAULT_PROJECT_ID??process.env.SCW_PROJECT_ID,this.baseUrl=e.baseUrl??"https://api.scaleway.com",this.fetchFn=e.fetch??fetch}canHandle(e){try{let r=S(e);return r.provider==="scw"&&(r.path==="secret-manager"||r.path.startsWith("secret-manager/"))}catch{return!1}}async getSecret(e,r){let t=this.parseReference(e);if(!this.token)throw new i({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});if(!g.test(t.secretIdOrName))throw new i({message:"Scaleway getSecret requires a secretId (uuid) reference, not a secret name.",provider:this.id,reference:e,code:"INVALID"});let n=r?.version??t.revision??"latest",o=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(t.region)}/secrets/${encodeURIComponent(t.secretIdOrName)}/versions/${encodeURIComponent(n)}/access`,s=await this.fetchFn(o,{method:"GET",headers:{"X-Auth-Token":this.token}});if(!s.ok)throw await d({response:s,provider:this.id,reference:e,operation:"getSecret"});let c=await s.json(),a=y(c);return{data:l.from(a,"base64"),version:n,metadata:{region:t.region,secretId:t.secretIdOrName},retrievedAt:new Date}}async setSecret(e,r){let t=this.parseReference(e);if(!this.token)throw new i({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});let n=p(r),o=l.from(n).toString("base64"),s=g.test(t.secretIdOrName)?t.secretIdOrName:await this.createSecret({region:t.region,name:t.secretIdOrName,reference:e}),c=await this.createSecretVersion({region:t.region,secretId:s,dataB64:o,reference:e});return{reference:this.buildReference(t.region,s,{version:c}),version:c}}async rotateSecret(e,r){return this.setSecret(e,r)}async deleteSecret(e){let r=this.parseReference(e);if(!this.token)throw new i({message:"Scaleway secret manager token is missing (set SCW_SECRET_KEY / SCALEWAY_SECRET_KEY).",provider:this.id,reference:e,code:"FORBIDDEN"});if(!g.test(r.secretIdOrName))throw new i({message:"Scaleway deleteSecret requires a secretId (uuid) reference, not a secret name.",provider:this.id,reference:e,code:"INVALID"});let t=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(r.region)}/secrets/${encodeURIComponent(r.secretIdOrName)}`,n=await this.fetchFn(t,{method:"DELETE",headers:{"X-Auth-Token":this.token}});if(!n.ok)throw await d({response:n,provider:this.id,reference:e,operation:"deleteSecret"})}parseReference(e){let r=S(e);if(r.provider!=="scw")throw new i({message:`Unsupported secret provider: ${r.provider}`,provider:this.id,reference:e,code:"INVALID"});let t=r.path.split("/").filter(Boolean);if(t.length<2||t[0]!=="secret-manager")throw new i({message:"Expected secret reference format scw://secret-manager/{region}/{secretIdOrName}[?version=...]",provider:this.id,reference:e,code:"INVALID"});let n=t[1]??this.defaultRegion;if(!n)throw new i({message:"Scaleway region must be provided either in reference (scw://secret-manager/{region}/...) or via SCW_DEFAULT_REGION/SCW_REGION.",provider:this.id,reference:e,code:"INVALID"});let o=t.slice(2).join("/");if(!o)throw new i({message:`Unable to resolve secret id/name from reference "${r.path}"`,provider:this.id,reference:e,code:"INVALID"});return{region:n,secretIdOrName:o,revision:r.extras?.version}}async createSecret(e){let r=this.defaultProjectId;if(!r)throw new i({message:"Scaleway project id is required to create secrets by name (set SCW_DEFAULT_PROJECT_ID/SCW_PROJECT_ID).",provider:this.id,reference:e.reference,code:"INVALID"});let t=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(e.region)}/secrets`,n=await this.fetchFn(t,{method:"POST",headers:{"Content-Type":"application/json","X-Auth-Token":this.token},body:JSON.stringify({name:e.name,project_id:r})});if(!n.ok)throw await d({response:n,provider:this.id,reference:e.reference,operation:"createSecret"});let o=await n.json();return R(o)}async createSecretVersion(e){let r=`${this.baseUrl}/secret-manager/v1beta1/regions/${encodeURIComponent(e.region)}/secrets/${encodeURIComponent(e.secretId)}/versions`,t=await this.fetchFn(r,{method:"POST",headers:{"Content-Type":"application/json","X-Auth-Token":this.token},body:JSON.stringify({data:e.dataB64})});if(!t.ok)throw await d({response:t,provider:this.id,reference:e.reference,operation:"createSecretVersion"});let n=await t.json();return I(n)??"latest"}buildReference(e,r,t){let n=`scw://secret-manager/${e}/${r}`,o=t?Object.entries(t).filter(([,s])=>Boolean(s)).map(([s,c])=>`${encodeURIComponent(s)}=${encodeURIComponent(c)}`).join("&"):"";return o?`${n}?${o}`:n}}function y(e){if(!e||typeof e!=="object")throw Error("Invalid scaleway secret payload");let r=e;if(typeof r.data==="string"&&r.data)return r.data;throw Error("Scaleway secret payload is missing data")}function R(e){if(!e||typeof e!=="object")throw Error("Invalid scaleway createSecret payload");let r=e;if(typeof r.id==="string"&&r.id)return r.id;throw Error("Scaleway createSecret response is missing id")}function I(e){if(!e||typeof e!=="object")return;let r=e;if(typeof r.revision==="number")return String(r.revision);if(typeof r.revision==="string"&&r.revision)return r.revision;if(typeof r.id==="string"&&r.id)return r.id;return}async function d(e){let{response:r,provider:t,reference:n,operation:o}=e,s=r.status===404?"NOT_FOUND":r.status===401||r.status===403?"FORBIDDEN":r.status>=400&&r.status<500?"INVALID":"UNKNOWN",c=await E(r),a=c?`Scaleway Secret Manager ${o} failed (${r.status}): ${c}`:`Scaleway Secret Manager ${o} failed (${r.status})`;return new i({message:a,provider:t,reference:n,code:s})}async function E(e){try{let t=(await e.text()).trim();return t.length?t:void 0}catch{return}}export{v as ScalewaySecretManagerProvider};
File without changes
@@ -0,0 +1 @@
1
+ var n=["profile.get","content.get","content.list","content.sync","webhook.event.normalize"],a=["analytics.query","content.track","creator.track"];class t extends Error{code;retryable;providerStatus;constructor(i,e,r=!1,o){super(e);this.code=i;this.retryable=r;this.providerStatus=o;this.name="SocialProviderError"}}var l={thirtyMinuteDays:90,hourlyDays:548,dailyDays:1826};export{l as DEFAULT_SOCIAL_RETENTION_POLICY,n as SOCIAL_READ_OPERATION_SUFFIXES,a as SOCIAL_TRACKING_OPERATION_SUFFIXES,t as SocialProviderError};
File without changes
File without changes
@@ -0,0 +1 @@
1
+ var i=["profile.get","content.get","content.list","content.sync","webhook.event.normalize"],a=["analytics.query","content.track","creator.track"];class o extends Error{code;retryable;providerStatus;constructor(t,e,r=!1,n){super(e);this.code=t;this.retryable=r;this.providerStatus=n;this.name="SocialProviderError"}}export{i as SOCIAL_READ_OPERATION_SUFFIXES,a as SOCIAL_TRACKING_OPERATION_SUFFIXES,o as SocialProviderError};
@@ -0,0 +1 @@
1
+ var e={thirtyMinuteDays:90,hourlyDays:548,dailyDays:1826};export{e as DEFAULT_SOCIAL_RETENTION_POLICY};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";var a=e.string().trim().min(1).max(200),c=e.string().regex(/^[0-9]{1,30}$/),d=e.string().regex(/^sha256:[a-f0-9]{64}$/),u=e.strictObject({id:c,key:a}),p=e.strictObject({text:e.string().max(25000),madeWithAi:e.boolean(),paidPartnership:e.boolean(),media:e.discriminatedUnion("kind",[e.strictObject({kind:e.literal("images"),assets:e.array(u).min(1).max(4)}),e.strictObject({kind:e.literal("video"),asset:u}),e.strictObject({kind:e.literal("gif"),asset:u})]).optional()}).refine((i)=>i.text.trim().length>0||!!i.media,"A post requires text or media."),m=e.strictObject({tenantId:a,accountId:a,contentRevisionId:a,contentDigest:d,authorId:c,qualificationRef:a,parts:e.array(p).min(1).max(25)}),y=e.strictObject({schemaVersion:e.literal(1),id:a,key:a,plan:m,planDigest:d,version:e.number().int().positive(),parts:e.array(e.strictObject({state:e.enum(["pending","dispatching","created","confirmed","unknown"]),postId:c.optional(),requestDigest:d.optional(),authorityRef:a.optional(),grantRef:a.optional(),evidenceRef:a.optional(),submittedAt:e.iso.datetime().optional(),confirmation:e.strictObject({postId:c,authorId:c,authorityRef:a,replyToId:c.optional(),observedAt:e.iso.datetime(),responseDigest:d,mediaKeys:e.array(a).max(4),media:e.array(e.strictObject({key:a,type:e.enum(["photo","video","animated_gif"])})).max(4)}).optional()})).min(1).max(25)}).superRefine((i,n)=>{if(i.parts.length!==i.plan.parts.length)n.addIssue({code:"custom",message:"Part count changed."});for(let t of i.parts){if(t.state==="pending"&&(t.postId||t.requestDigest||t.authorityRef||t.grantRef||t.submittedAt||t.evidenceRef||t.confirmation))n.addIssue({code:"custom",message:"Pending parts cannot carry execution evidence."});if(t.state!=="pending"&&(!t.requestDigest||!t.authorityRef||!t.submittedAt||!t.grantRef))n.addIssue({code:"custom",message:"Dispatched parts require authority and request evidence."});if(["created","confirmed"].includes(t.state)&&!t.postId)n.addIssue({code:"custom",message:"Created parts require native identity."});if(t.state==="confirmed"&&(!t.evidenceRef||!t.confirmation))n.addIssue({code:"custom",message:"Confirmed parts require read evidence."})}});async function l(i){let n=(r)=>Array.isArray(r)?r.map(n):r&&typeof r==="object"?Object.fromEntries(Object.entries(r).sort(([o],[s])=>o<s?-1:o>s?1:0).map(([o,s])=>[o,n(s)])):r,t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(JSON.stringify(n(i))));return`sha256:${Array.from(new Uint8Array(t),(r)=>r.toString(16).padStart(2,"0")).join("")}`}function f(i,n){let t=i.plan.parts[n];if(!t)throw Error("X_PART_MISSING");let r=n>0?i.parts[n-1]?.postId:void 0;if(n>0&&!r)throw Error("X_PREDECESSOR_UNRESOLVED");let o=t.media?b(i,n).map((s)=>s.id):void 0;return{text:t.text,made_with_ai:t.madeWithAi,paid_partnership:t.paidPartnership,...o?{media:{media_ids:o}}:{},...r?{reply:{in_reply_to_tweet_id:r}}:{}}}function b(i,n){let t=i.plan.parts[n]?.media;return!t?[]:("assets"in t)?t.assets:[t.asset]}function h(i,n){return l({tenantId:i.plan.tenantId,accountId:i.plan.accountId,authorId:i.plan.authorId,publicationKey:i.key,partIndex:n,method:"POST",path:"/2/tweets",body:f(i,n)})}export{p as XPublicationPartSchema,m as XPublicationPlanSchema,y as XPublicationRecordSchema,f as xPublicationBody,l as xPublicationDigest,b as xPublicationMedia,h as xPublicationRequestDigest};
@@ -0,0 +1 @@
1
+ import{z as n}from"zod";var r=n.string().trim().min(1).max(200),p=n.string().regex(/^[0-9]{1,30}$/),g=n.string().regex(/^sha256:[a-f0-9]{64}$/),y=n.strictObject({id:p,key:r}),R=n.strictObject({text:n.string().max(25000),madeWithAi:n.boolean(),paidPartnership:n.boolean(),media:n.discriminatedUnion("kind",[n.strictObject({kind:n.literal("images"),assets:n.array(y).min(1).max(4)}),n.strictObject({kind:n.literal("video"),asset:y}),n.strictObject({kind:n.literal("gif"),asset:y})]).optional()}).refine((e)=>e.text.trim().length>0||!!e.media,"A post requires text or media."),b=n.strictObject({tenantId:r,accountId:r,contentRevisionId:r,contentDigest:g,authorId:p,qualificationRef:r,parts:n.array(R).min(1).max(25)}),U=n.strictObject({schemaVersion:n.literal(1),id:r,key:r,plan:b,planDigest:g,version:n.number().int().positive(),parts:n.array(n.strictObject({state:n.enum(["pending","dispatching","created","confirmed","unknown"]),postId:p.optional(),requestDigest:g.optional(),authorityRef:r.optional(),grantRef:r.optional(),evidenceRef:r.optional(),submittedAt:n.iso.datetime().optional(),confirmation:n.strictObject({postId:p,authorId:p,authorityRef:r,replyToId:p.optional(),observedAt:n.iso.datetime(),responseDigest:g,mediaKeys:n.array(r).max(4),media:n.array(n.strictObject({key:r,type:n.enum(["photo","video","animated_gif"])})).max(4)}).optional()})).min(1).max(25)}).superRefine((e,i)=>{if(e.parts.length!==e.plan.parts.length)i.addIssue({code:"custom",message:"Part count changed."});for(let t of e.parts){if(t.state==="pending"&&(t.postId||t.requestDigest||t.authorityRef||t.grantRef||t.submittedAt||t.evidenceRef||t.confirmation))i.addIssue({code:"custom",message:"Pending parts cannot carry execution evidence."});if(t.state!=="pending"&&(!t.requestDigest||!t.authorityRef||!t.submittedAt||!t.grantRef))i.addIssue({code:"custom",message:"Dispatched parts require authority and request evidence."});if(["created","confirmed"].includes(t.state)&&!t.postId)i.addIssue({code:"custom",message:"Created parts require native identity."});if(t.state==="confirmed"&&(!t.evidenceRef||!t.confirmation))i.addIssue({code:"custom",message:"Confirmed parts require read evidence."})}});async function u(e){let i=(o)=>Array.isArray(o)?o.map(i):o&&typeof o==="object"?Object.fromEntries(Object.entries(o).sort(([a],[d])=>a<d?-1:a>d?1:0).map(([a,d])=>[a,i(d)])):o,t=await crypto.subtle.digest("SHA-256",new TextEncoder().encode(JSON.stringify(i(e))));return`sha256:${Array.from(new Uint8Array(t),(o)=>o.toString(16).padStart(2,"0")).join("")}`}function v(e,i){let t=e.plan.parts[i];if(!t)throw Error("X_PART_MISSING");let o=i>0?e.parts[i-1]?.postId:void 0;if(i>0&&!o)throw Error("X_PREDECESSOR_UNRESOLVED");let a=t.media?I(e,i).map((d)=>d.id):void 0;return{text:t.text,made_with_ai:t.madeWithAi,paid_partnership:t.paidPartnership,...a?{media:{media_ids:a}}:{},...o?{reply:{in_reply_to_tweet_id:o}}:{}}}function I(e,i){let t=e.plan.parts[i]?.media;return!t?[]:("assets"in t)?t.assets:[t.asset]}function _(e,i){return u({tenantId:e.plan.tenantId,accountId:e.plan.accountId,authorId:e.plan.authorId,publicationKey:e.key,partIndex:i,method:"POST",path:"/2/tweets",body:v(e,i)})}import{z as s}from"zod";var c=s.string().trim().min(1).max(200),m=s.string().regex(/^sha256:[a-f0-9]{64}$/),P=s.strictObject({tenantId:c,workspaceId:c,accountId:c,key:c,assetRevisionRef:c,assetDigest:m,rightsGrantRef:c,qualificationRef:c,category:s.enum(["tweet_image","tweet_video","tweet_gif"]),mediaType:s.enum(["image/jpeg","image/png","image/webp","image/gif","video/mp4","video/webm","video/quicktime"]),chunks:s.array(s.strictObject({bytes:s.number().int().positive().max(5000000),digest:m})).min(1).max(500)}).superRefine((e,i)=>{if(!(e.category==="tweet_gif"?e.mediaType==="image/gif":e.category==="tweet_video"?e.mediaType.startsWith("video/"):e.mediaType.startsWith("image/")&&e.mediaType!=="image/gif"))i.addIssue({code:"custom",message:"Media type/category mismatch."})}),h=s.strictObject({schemaVersion:s.literal(1),plan:P,planDigest:m,version:s.number().int().positive(),state:s.enum(["uploading","processing","ready","failed","expired"]),steps:s.array(s.strictObject({state:s.enum(["pending","dispatching","unknown","confirmed"]),requestDigest:m.optional(),authorityRef:c.optional(),submittedAt:s.iso.datetime().optional(),evidenceRef:c.optional()})).min(3).max(502),native:s.strictObject({id:s.string().regex(/^[0-9]{1,19}$/),key:c,expiresAt:s.iso.datetime()}).optional(),nextPollAt:s.iso.datetime().optional(),processingEvidence:s.strictObject({observedAt:s.iso.datetime(),responseDigest:m,authorityRef:c}).optional()}).superRefine((e,i)=>{let t=(a)=>i.addIssue({code:"custom",message:a});if(e.steps.length!==e.plan.chunks.length+2)t("Upload step count changed.");let o=!1;for(let a of e.steps){if(o&&a.state!=="pending")t("Upload steps must execute sequentially.");if(a.state!=="confirmed")o=!0;if(a.state==="pending"&&Object.keys(a).length!==1)t("Pending steps have no dispatch evidence.");if(a.state!=="pending"&&(!a.requestDigest||!a.authorityRef||!a.submittedAt))t("Dispatched steps require evidence.");if(a.state==="confirmed"&&!a.evidenceRef)t("Confirmed steps require evidence.")}if(e.steps[0]?.state==="confirmed"&&!e.native)t("Initialized uploads require native identity.");if(["processing","ready"].includes(e.state)&&e.steps.some((a)=>a.state!=="confirmed"))t("Processing requires completed upload.");if(e.state==="ready"&&!e.processingEvidence)t("Ready media requires processing evidence.")});function x(e,i){return i===0?"initialize":i===e.steps.length-1?"finalize":"append"}async function w(e,i){return u({planDigest:e.planDigest,index:i,action:x(e,i),nativeId:i?e.native?.id:void 0})}async function T(e,i){let t=h.parse(i);if(t.version!==e.version+1||t.planDigest!==e.planDigest||await u(t.plan)!==e.planDigest)throw Error("X_UPLOAD_IMMUTABLE");if(e.native&&JSON.stringify(e.native)!==JSON.stringify(t.native))throw Error("X_UPLOAD_NATIVE_IMMUTABLE");if(["ready","failed","expired"].includes(e.state)){if(!(e.state==="ready"&&t.state==="expired"))throw Error("X_UPLOAD_TERMINAL")}let o=[];for(let a=0;a<e.steps.length;a++){let d=e.steps[a],l=t.steps[a];if(await u(d)===await u(l))continue;if(o.push(a),!{pending:["dispatching"],dispatching:["unknown","confirmed"],unknown:["confirmed"],confirmed:[]}[d.state].includes(l.state)||l.requestDigest!==await w(e,a))throw Error("X_UPLOAD_TRANSITION");for(let f of["requestDigest","authorityRef","submittedAt"])if(d[f]&&d[f]!==l[f])throw Error("X_UPLOAD_EVIDENCE_IMMUTABLE")}if(o.length>1||!e.native&&t.native&&!(o[0]===0&&t.steps[0]?.state==="confirmed"))throw Error("X_UPLOAD_TRANSITION");if(e.state==="processing"&&!["processing","ready","failed","expired"].includes(t.state))throw Error("X_UPLOAD_TRANSITION");if(!o.length&&t.state==="uploading")throw Error("X_UPLOAD_TRANSITION");return t}function q(e,i,t){if(h.parse(e),e.plan.tenantId!==i.tenantId||e.plan.accountId!==i.accountId||e.plan.assetRevisionRef!==i.assetRevisionRef||e.state!=="ready"||!e.native||!Number.isFinite(t.getTime())||Date.parse(e.native.expiresAt)<=t.getTime())throw Error("X_UPLOAD_NOT_READY");return{id:e.native.id,key:e.native.key}}export{T as validateXUploadTransition,x as xUploadAction,w as xUploadRequestDigest,q as xUploadedAsset};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";var s=e.string().trim().min(1).max(200),n=e.string().regex(/^sha256:[a-f0-9]{64}$/),d=e.strictObject({tenantId:s,workspaceId:s,accountId:s,key:s,assetRevisionRef:s,assetDigest:n,rightsGrantRef:s,qualificationRef:s,category:e.enum(["tweet_image","tweet_video","tweet_gif"]),mediaType:e.enum(["image/jpeg","image/png","image/webp","image/gif","video/mp4","video/webm","video/quicktime"]),chunks:e.array(e.strictObject({bytes:e.number().int().positive().max(5000000),digest:n})).min(1).max(500)}).superRefine((t,o)=>{if(!(t.category==="tweet_gif"?t.mediaType==="image/gif":t.category==="tweet_video"?t.mediaType.startsWith("video/"):t.mediaType.startsWith("image/")&&t.mediaType!=="image/gif"))o.addIssue({code:"custom",message:"Media type/category mismatch."})}),c=e.strictObject({schemaVersion:e.literal(1),plan:d,planDigest:n,version:e.number().int().positive(),state:e.enum(["uploading","processing","ready","failed","expired"]),steps:e.array(e.strictObject({state:e.enum(["pending","dispatching","unknown","confirmed"]),requestDigest:n.optional(),authorityRef:s.optional(),submittedAt:e.iso.datetime().optional(),evidenceRef:s.optional()})).min(3).max(502),native:e.strictObject({id:e.string().regex(/^[0-9]{1,19}$/),key:s,expiresAt:e.iso.datetime()}).optional(),nextPollAt:e.iso.datetime().optional(),processingEvidence:e.strictObject({observedAt:e.iso.datetime(),responseDigest:n,authorityRef:s}).optional()}).superRefine((t,o)=>{let a=(i)=>o.addIssue({code:"custom",message:i});if(t.steps.length!==t.plan.chunks.length+2)a("Upload step count changed.");let r=!1;for(let i of t.steps){if(r&&i.state!=="pending")a("Upload steps must execute sequentially.");if(i.state!=="confirmed")r=!0;if(i.state==="pending"&&Object.keys(i).length!==1)a("Pending steps have no dispatch evidence.");if(i.state!=="pending"&&(!i.requestDigest||!i.authorityRef||!i.submittedAt))a("Dispatched steps require evidence.");if(i.state==="confirmed"&&!i.evidenceRef)a("Confirmed steps require evidence.")}if(t.steps[0]?.state==="confirmed"&&!t.native)a("Initialized uploads require native identity.");if(["processing","ready"].includes(t.state)&&t.steps.some((i)=>i.state!=="confirmed"))a("Processing requires completed upload.");if(t.state==="ready"&&!t.processingEvidence)a("Ready media requires processing evidence.")});export{d as XUploadPlanSchema,c as XUploadRecordSchema};
@@ -0,0 +1 @@
1
+ import{z as t}from"zod";var i=t.strictObject({tenantId:t.string().min(1),workspaceId:t.string().min(1),accountId:t.string().min(1),useId:t.string().min(1),publicationRef:t.string().min(1),postId:t.string().regex(/^[0-9]{1,19}$/),authorId:t.string().regex(/^[0-9]{1,19}$/),ownershipEvidenceRef:t.string().min(1)});export{i as XWithdrawalTargetSchema};
File without changes
@@ -0,0 +1 @@
1
+ import{SpecContractRegistry as r}from"@lssm/lib.contracts-spec/registry";var n=(t)=>`${t.key}.v${t.version}`;class i extends r{constructor(t){super("integration",t)}getByCategory(t){return this.list().filter((e)=>e.meta.category===t)}}function o(t){return n(t)}var p=(t)=>t;export{i as IntegrationSpecRegistry,p as defineIntegration,o as makeIntegrationSpecKey};
@@ -0,0 +1 @@
1
+ function e(r,t){return r.find((o)=>o.type===t)}function n(r,t){return r.some((o)=>o.type===t)}export{e as findTransportConfig,n as supportsTransport};
@@ -0,0 +1 @@
1
+ function i(e,n){if(!e)return;return n??e.currentVersion}function r(e,n){return e.supportedVersions.find((t)=>t.version===n)}function s(e,n){let t=r(e,n);return t?.status==="deprecated"||t?.status==="sunset"}function o(e){return e.supportedVersions.filter((n)=>n.status==="stable"||n.status==="beta")}export{o as getActiveVersions,r as getVersionInfo,s as isVersionDeprecated,i as resolveApiVersion};
@@ -0,0 +1 @@
1
+ import{ScalarTypeEnum as r,SchemaModel as e}from"@lssm/lib.schema";var c=["browser.act","browser.observe","browser.extract"],s=r.String_unsecure(),t=r.NonEmptyString(),o={sessionId:{type:t,isOptional:!1},pageId:{type:s,isOptional:!0}},i=new e({name:"WebAccessBrowserActPayload",fields:{...o,instruction:{type:t,isOptional:!1},elementRef:{type:s,isOptional:!0},variables:{type:r.JSONObject(),isOptional:!0}}}),l=new e({name:"WebAccessBrowserObservePayload",fields:{...o,instruction:{type:s,isOptional:!0}}}),d=new e({name:"WebAccessBrowserExtractPayload",fields:{...o,instruction:{type:t,isOptional:!1},resultSchema:{type:r.JSONObject(),isOptional:!0}}}),p=new e({name:"WebAccessBrowserActDataRecord",fields:{action:{type:t,isOptional:!1},performed:{type:r.Boolean(),isOptional:!1}}}),n=new e({name:"WebAccessBrowserActionCandidateRecord",fields:{description:{type:t,isOptional:!1},elementRef:{type:t,isOptional:!1}}}),u=new e({name:"WebAccessBrowserObserveDataRecord",fields:{candidates:{type:n,isOptional:!1,isArray:!0}}}),w=new e({name:"WebAccessBrowserExtractDataRecord",fields:{value:{type:r.JSONObject(),isOptional:!1}}});export{p as WebAccessBrowserActDataRecord,i as WebAccessBrowserActPayload,n as WebAccessBrowserActionCandidateRecord,w as WebAccessBrowserExtractDataRecord,d as WebAccessBrowserExtractPayload,u as WebAccessBrowserObserveDataRecord,l as WebAccessBrowserObservePayload,c as browserAutomationOperationSuffixes};
@@ -0,0 +1 @@
1
+ var d=["rest","sdk","x402","webhook","websocket","sse","hostedMcp","localMcp","contractspecMcp","httpProxy","httpsProxy","socksProxy"];function h(s){let t=new Set,r=new Set;for(let[c,e]of s.entries()){if(t.add(e.provider),!e.capabilityId||!e.adapterKey)throw Error(`web-access ledger row ${c} is missing identity`);for(let o of d){let n=e.surfaces[o];if(!n)throw Error(`${e.provider}.${o} is missing`);if(n.state==="unsupported"&&!n.reason)throw Error(`${e.provider}.${o} requires a reason`);if(n.state!=="unsupported")p(e.provider,o,n.evidence)}if(e.operationKeys.length===0)throw Error(`${e.provider} must map ContractSpec operations`);if(e.testIds.length===0)throw Error(`${e.provider} must map fixture tests`);let i=e.browserAutomation;if(i){if(i.operationKeys.length===0)throw Error(`${e.provider} browser automation requires operations`);for(let o of i.operationKeys)if(!e.operationKeys.includes(o))throw Error(`${e.provider} browser automation operation is missing`);if(i.state==="contract-ready"&&!i.reason)throw Error(`${e.provider} contract-ready automation requires a reason`);if(i.state==="supported"&&(!i.adapterRef||!i.testIds||i.testIds.length===0))throw Error(`${e.provider} supported automation requires adapter tests`)}for(let o of e.operationKeys){if(r.has(o))throw Error(`duplicate web-access operation ${o}`);r.add(o)}if(a(e.provider,"provider",e.evidence),!/^[a-f0-9]{64}$/.test(e.evidence.snapshotSha256))throw Error(`${e.provider} evidence digest is invalid`);if(!/^[a-f0-9]{64}$/.test(e.evidence.retrievedContentSha256))throw Error(`${e.provider} retrieved-content digest is invalid`);if(e.evidence.sourceUrlSha256!==e.evidence.snapshotSha256)throw Error(`${e.provider} legacy digest must pin the snapshot`);if(!/^\d{4}-\d{2}-\d{2}$/.test(e.evidence.retrievedAt))throw Error(`${e.provider} evidence date is invalid`)}if(t.size!==11)throw Error("web-access ledger must cover all eleven shipped providers")}function p(s,t,r){if(!r||r.contractRefs.length===0||!r.adapterRef||r.testIds.length===0)throw Error(`${s}.${t} requires claim-level evidence`);if(a(s,t,r),!r.snapshotPath||!/^[a-f0-9]{64}$/.test(r.snapshotSha256))throw Error(`${s}.${t} evidence digest is invalid`);if(!/^[a-f0-9]{64}$/.test(r.retrievedContentSha256))throw Error(`${s}.${t} retrieved-content digest is invalid`);if(r.sourceUrlSha256!==r.snapshotSha256)throw Error(`${s}.${t} legacy digest must pin the snapshot`);if(!/^\d{4}-\d{2}-\d{2}$/.test(r.retrievedAt))throw Error(`${s}.${t} evidence date is invalid`)}function a(s,t,r){if(r.sourceUrl?.startsWith("https://")||r.sourcePath)return;throw Error(`${s}.${t} evidence source is invalid`)}export{h as assertWebAccessCapabilityLedger,d as webAccessSurfaceNames};
@@ -0,0 +1 @@
1
+ import{defineEvent as o}from"@lssm/lib.contracts-spec/events";import{ScalarTypeEnum as e,SchemaModel as i}from"@lssm/lib.schema";var t=e.NonEmptyString(),c=new i({name:"WebAccessOperationInput",fields:{provider:{type:t,isOptional:!1},tenantId:{type:e.ID(),isOptional:!1},workspaceId:{type:e.ID(),isOptional:!0},connectionId:{type:e.ID(),isOptional:!1},correlationId:{type:t,isOptional:!1},policyMode:{type:t,isOptional:!1},authorization:{type:e.JSONObject(),isOptional:!0},budget:{type:e.JSONObject(),isOptional:!0},payload:{type:e.JSONObject(),isOptional:!1}}}),y=new i({name:"WebAccessOperationOutput",fields:{status:{type:t,isOptional:!1},data:{type:e.JSONObject(),isOptional:!0},sources:{type:e.JSONObject(),isOptional:!1,isArray:!0},usage:{type:e.JSONObject(),isOptional:!0},provenance:{type:e.JSONObject(),isOptional:!1},rawRedacted:{type:e.JSONObject(),isOptional:!0}}}),a=new i({name:"BrightDataDeliveryPayload",fields:{connectionId:{type:e.ID(),isOptional:!1},deliveryId:{type:t,isOptional:!1},jobId:{type:t,isOptional:!0},receivedAt:{type:e.DateTime(),isOptional:!1},contentEncoding:{type:t,isOptional:!0},payload:{type:e.JSONObject(),isOptional:!1}}}),s=new i({name:"MassiveDeliveryPayload",fields:{connectionId:{type:e.ID(),isOptional:!1},deliveryId:{type:t,isOptional:!1},jobId:{type:t,isOptional:!0},kind:{type:t,isOptional:!1},receivedAt:{type:e.DateTime(),isOptional:!1},payload:{type:e.JSONObject(),isOptional:!1}}});var n=o({meta:{key:"web-access.bright-data.delivery.received",version:"1.0.0",description:"Normalized Bright Data asynchronous delivery received.",stability:"experimental",owners:["@platform.integrations"],tags:["web-access","bright-data","webhook"]},pii:["payload"],payload:a}),p=o({meta:{key:"web-access.massive.delivery.received",version:"1.0.0",description:"Normalized Massive asynchronous callback received.",stability:"experimental",owners:["@platform.integrations"],tags:["web-access","massive","webhook"]},pii:["payload"],payload:s}),f=[n,p];function m(r){return r.register(n).register(p)}export{n as BrightDataDeliveryReceivedEvent,p as MassiveDeliveryReceivedEvent,m as registerWebAccessEvents,f as webAccessEvents};
@@ -0,0 +1,21 @@
1
+ import{ScalarTypeEnum as I,SchemaModel as D}from"@lssm/lib.schema";var ie=["browser.act","browser.observe","browser.extract"],z=I.String_unsecure(),C=I.NonEmptyString(),H={sessionId:{type:C,isOptional:!1},pageId:{type:z,isOptional:!0}},ne=new D({name:"WebAccessBrowserActPayload",fields:{...H,instruction:{type:C,isOptional:!1},elementRef:{type:z,isOptional:!0},variables:{type:I.JSONObject(),isOptional:!0}}}),pe=new D({name:"WebAccessBrowserObservePayload",fields:{...H,instruction:{type:z,isOptional:!0}}}),de=new D({name:"WebAccessBrowserExtractPayload",fields:{...H,instruction:{type:C,isOptional:!1},resultSchema:{type:I.JSONObject(),isOptional:!0}}}),be=new D({name:"WebAccessBrowserActDataRecord",fields:{action:{type:C,isOptional:!1},performed:{type:I.Boolean(),isOptional:!1}}}),kt=new D({name:"WebAccessBrowserActionCandidateRecord",fields:{description:{type:C,isOptional:!1},elementRef:{type:C,isOptional:!1}}}),le=new D({name:"WebAccessBrowserObserveDataRecord",fields:{candidates:{type:kt,isOptional:!1,isArray:!0}}}),ue=new D({name:"WebAccessBrowserExtractDataRecord",fields:{value:{type:I.JSONObject(),isOptional:!1}}});var Pt=["rest","sdk","x402","webhook","websocket","sse","hostedMcp","localMcp","contractspecMcp","httpProxy","httpsProxy","socksProxy"];function ss(e){let t=new Set,s=new Set;for(let[p,a]of e.entries()){if(t.add(a.provider),!a.capabilityId||!a.adapterKey)throw Error(`web-access ledger row ${p} is missing identity`);for(let g of Pt){let M=a.surfaces[g];if(!M)throw Error(`${a.provider}.${g} is missing`);if(M.state==="unsupported"&&!M.reason)throw Error(`${a.provider}.${g} requires a reason`);if(M.state!=="unsupported")Mt(a.provider,g,M.evidence)}if(a.operationKeys.length===0)throw Error(`${a.provider} must map ContractSpec operations`);if(a.testIds.length===0)throw Error(`${a.provider} must map fixture tests`);let y=a.browserAutomation;if(y){if(y.operationKeys.length===0)throw Error(`${a.provider} browser automation requires operations`);for(let g of y.operationKeys)if(!a.operationKeys.includes(g))throw Error(`${a.provider} browser automation operation is missing`);if(y.state==="contract-ready"&&!y.reason)throw Error(`${a.provider} contract-ready automation requires a reason`);if(y.state==="supported"&&(!y.adapterRef||!y.testIds||y.testIds.length===0))throw Error(`${a.provider} supported automation requires adapter tests`)}for(let g of a.operationKeys){if(s.has(g))throw Error(`duplicate web-access operation ${g}`);s.add(g)}if(fe(a.provider,"provider",a.evidence),!/^[a-f0-9]{64}$/.test(a.evidence.snapshotSha256))throw Error(`${a.provider} evidence digest is invalid`);if(!/^[a-f0-9]{64}$/.test(a.evidence.retrievedContentSha256))throw Error(`${a.provider} retrieved-content digest is invalid`);if(a.evidence.sourceUrlSha256!==a.evidence.snapshotSha256)throw Error(`${a.provider} legacy digest must pin the snapshot`);if(!/^\d{4}-\d{2}-\d{2}$/.test(a.evidence.retrievedAt))throw Error(`${a.provider} evidence date is invalid`)}if(t.size!==11)throw Error("web-access ledger must cover all eleven shipped providers")}function Mt(e,t,s){if(!s||s.contractRefs.length===0||!s.adapterRef||s.testIds.length===0)throw Error(`${e}.${t} requires claim-level evidence`);if(fe(e,t,s),!s.snapshotPath||!/^[a-f0-9]{64}$/.test(s.snapshotSha256))throw Error(`${e}.${t} evidence digest is invalid`);if(!/^[a-f0-9]{64}$/.test(s.retrievedContentSha256))throw Error(`${e}.${t} retrieved-content digest is invalid`);if(s.sourceUrlSha256!==s.snapshotSha256)throw Error(`${e}.${t} legacy digest must pin the snapshot`);if(!/^\d{4}-\d{2}-\d{2}$/.test(s.retrievedAt))throw Error(`${e}.${t} evidence date is invalid`)}function fe(e,t,s){if(s.sourceUrl?.startsWith("https://")||s.sourcePath)return;throw Error(`${e}.${t} evidence source is invalid`)}import{defineEvent as me}from"@lssm/lib.contracts-spec/events";import{ScalarTypeEnum as d,SchemaModel as L}from"@lssm/lib.schema";var x=d.NonEmptyString(),ye=new L({name:"WebAccessOperationInput",fields:{provider:{type:x,isOptional:!1},tenantId:{type:d.ID(),isOptional:!1},workspaceId:{type:d.ID(),isOptional:!0},connectionId:{type:d.ID(),isOptional:!1},correlationId:{type:x,isOptional:!1},policyMode:{type:x,isOptional:!1},authorization:{type:d.JSONObject(),isOptional:!0},budget:{type:d.JSONObject(),isOptional:!0},payload:{type:d.JSONObject(),isOptional:!1}}}),he=new L({name:"WebAccessOperationOutput",fields:{status:{type:x,isOptional:!1},data:{type:d.JSONObject(),isOptional:!0},sources:{type:d.JSONObject(),isOptional:!1,isArray:!0},usage:{type:d.JSONObject(),isOptional:!0},provenance:{type:d.JSONObject(),isOptional:!1},rawRedacted:{type:d.JSONObject(),isOptional:!0}}}),ge=new L({name:"BrightDataDeliveryPayload",fields:{connectionId:{type:d.ID(),isOptional:!1},deliveryId:{type:x,isOptional:!1},jobId:{type:x,isOptional:!0},receivedAt:{type:d.DateTime(),isOptional:!1},contentEncoding:{type:x,isOptional:!0},payload:{type:d.JSONObject(),isOptional:!1}}}),we=new L({name:"MassiveDeliveryPayload",fields:{connectionId:{type:d.ID(),isOptional:!1},deliveryId:{type:x,isOptional:!1},jobId:{type:x,isOptional:!0},kind:{type:x,isOptional:!1},receivedAt:{type:d.DateTime(),isOptional:!1},payload:{type:d.JSONObject(),isOptional:!1}}});var ve=me({meta:{key:"web-access.bright-data.delivery.received",version:"1.0.0",description:"Normalized Bright Data asynchronous delivery received.",stability:"experimental",owners:["@platform.integrations"],tags:["web-access","bright-data","webhook"]},pii:["payload"],payload:ge}),xe=me({meta:{key:"web-access.massive.delivery.received",version:"1.0.0",description:"Normalized Massive asynchronous callback received.",stability:"experimental",owners:["@platform.integrations"],tags:["web-access","massive","webhook"]},pii:["payload"],payload:we}),ps=[ve,xe];function ds(e){return e.register(ve).register(xe)}function A(e,t,s,p="2026-08-09"){return Object.fromEntries(Object.entries(s).map(([a,y])=>[a,{sourceUrl:y.sourceUrl,snapshotPath:`packages/libs/contracts-integrations/evidence/web-access/${e}`,snapshotSha256:t,retrievedContentSha256:y.retrievedContentSha256,retrievedAt:p}]))}function c(e,t){return{sourceUrl:e,retrievedContentSha256:t}}var Ae={sourcePath:"packages/integrations/provider-web-access/src/operation-bindings.ts",snapshotPath:"packages/libs/contracts-integrations/evidence/web-access/contractspec-mcp.json",snapshotSha256:"3d126c23506ff7441dd2c7e5386dee563fb0f3083fc642c239a42b030ba034a8",retrievedContentSha256:"4b5143367e7a6daf5da5d2faf359ff00416040c3421d37bf2610d95390a05fe3",retrievedAt:"2026-08-09"},X={sourcePath:"packages/integrations/provider-web-access/src/x402.ts",snapshotPath:"packages/libs/contracts-integrations/evidence/web-access/x402.json",snapshotSha256:"a044a37c3bb58cbc7e297b63c7ee7b32a2e96c037f04b8442c65da9843e85de6",retrievedContentSha256:"df7339295593b098e9fa29d7c34c2d9abdc8a44965c23b5f2989bbfa69469c79",retrievedAt:"2026-08-11"},Oe=A("bright-data.json","6710dfb60f411afbc0845411a05675c04b575409ecd346f6ef7abace245c1cff",{rest:c("https://docs.brightdata.com/api-reference/scrapers/synchronous-requests","25cfad0b8ef373e2317eeed5785d6ecda17457f54700f9d5a90fcb3eefd45e0c"),sdk:c("https://docs.brightdata.com/api-reference/SDK-JS","9a218cd9d4dda0dfbb1143f89c9894a7a214c226ffe219c91b5e6dae1e77e3e4"),webhook:c("https://docs.brightdata.com/datasets/scrapers/scrapers-library/delivery-options","e2f29df4c3849c50a51c153c28ba414cfa4ef07c5268df71f558ac7f62c0b8fb"),websocket:c("https://docs.brightdata.com/scraping-automation/scraping-browser/faqs","5af32930306491b4106cfb36abfbe49ddb8ddf83b3661f4e3c5e60861b67d6bc"),hostedMcp:c("https://docs.brightdata.com/ai/mcp-server/faqs","0808b1ca0c8bba58217b389dc5ab979fb0de2364cf4ad833519c86592df7a13f"),localMcp:c("https://docs.brightdata.com/ai/mcp-server/faqs","0808b1ca0c8bba58217b389dc5ab979fb0de2364cf4ad833519c86592df7a13f"),httpProxy:c("https://docs.brightdata.com/proxy-networks/socks5","92d7adeb49eb6645c5d6b8d891a226ae27dfc10d17c433cb2e50416b10ad6d52"),httpsProxy:c("https://docs.brightdata.com/proxy-networks/socks5","92d7adeb49eb6645c5d6b8d891a226ae27dfc10d17c433cb2e50416b10ad6d52"),socksProxy:c("https://docs.brightdata.com/proxy-networks/socks5","92d7adeb49eb6645c5d6b8d891a226ae27dfc10d17c433cb2e50416b10ad6d52")}),We=A("massive.json","a3a22c4db25c35e9e5375dab42e05d9575d24105df596069fe9216315128965d",{rest:c("https://docs.joinmassive.com/web-render/openapi.json","d953a3ea44fd623183654b2965850d8f5a20a6773ffaf3a78f1de03c10f7f0cd"),webhook:c("https://docs.joinmassive.com/web-render/openapi.json","5a0fcfac73bdfbbdeab4ec7cb23543e5a31179b8c39f848fcd1856fc71cf64a3"),websocket:c("https://docs.joinmassive.com/web-render/openapi.json","04892c265dd7be02cd9ffd6920d261b8c623d6e68685e9b603700cb9512e4516"),httpProxy:c("https://docs.joinmassive.com/residential/authentication","a965f1d82100645f862ba5577bb30b37e395bc875e352538cb9a18ebb845b7bc"),httpsProxy:c("https://docs.joinmassive.com/residential/authentication","a965f1d82100645f862ba5577bb30b37e395bc875e352538cb9a18ebb845b7bc"),socksProxy:c("https://docs.joinmassive.com/residential/authentication","a965f1d82100645f862ba5577bb30b37e395bc875e352538cb9a18ebb845b7bc")}),Se=A("browserbase.json","6e829ed21adafceac4991cfb057d94d81b839498312cd49065031a597a83eba1",{rest:c("https://docs.browserbase.com/reference/api/overview","02488d77e46bbfdd8ced05eee472b881f962ab464317f358f1398b2c2ee70ccb"),sdk:c("https://docs.browserbase.com/reference/sdk/nodejs","fee6de0318a5e532b6fef8075444fe64805c8fbfe4a577a8453d6516c70f6a88"),websocket:c("https://docs.browserbase.com/reference/api/get-a-session","f1decad96262a632bcdcbb8aba6eb104611c6ce575b103c548f43cb0894792e5"),hostedMcp:c("https://docs.browserbase.com/integrations/mcp/setup","2bb5c042790eed16422dabf0316400d4dedc596446a166b7f67a9ff01128d06a"),localMcp:c("https://docs.browserbase.com/integrations/mcp/setup","2bb5c042790eed16422dabf0316400d4dedc596446a166b7f67a9ff01128d06a"),httpProxy:c("https://docs.browserbase.com/platform/identity/proxies","d2531a8c733e5351f47627b003253a2ab71ceda1566643a8d6739efea4f47deb"),httpsProxy:c("https://docs.browserbase.com/platform/identity/proxies","d2531a8c733e5351f47627b003253a2ab71ceda1566643a8d6739efea4f47deb")}),Re=A("serper.json","3d6dcba2dcc65c0edb58a4705f46188f2bb847e3ed75dcc957c288d1461bf4a8",{rest:c("https://serper.dev/","9774a63bdce81a83928f5315f81a4907b1f9a989230beb2aed8e8a68fbb8ef1f")}),ke=A("linkup.json","06ccfac9b5a6511f7e7bd4ba87c3157f8c939aaa8aa0d1147bab7a10d78da013",{rest:c("https://docs.linkup.so/pages/documentation/get-started/introduction","afe8793642d5b07d314e1e72eb4d961c6ed4a3ac38496fcbc5c2fbfe78e9a545"),sdk:c("https://docs.linkup.so/pages/sdk/js/js","a8346e04b37853a872fe39dbac2f70ce7899e36fe31c5bab50a1bdf73947a39f"),hostedMcp:c("https://docs.linkup.so/pages/integrations/mcp/mcp","3aa26f65df3ec245a0ae5dcd7c546a887dc65fd4b7daf1a953ff3ba810a46848"),localMcp:c("https://docs.linkup.so/pages/integrations/mcp/mcp","3aa26f65df3ec245a0ae5dcd7c546a887dc65fd4b7daf1a953ff3ba810a46848")}),Pe=A("tavily.json","2c44d4c405e0d1c724e4168bbec0a43cd970371b666b8ed49c6334d8bcaf75a2",{rest:c("https://docs.tavily.com/documentation/api-reference/introduction","edfe94a9df217ed8c3c874db71a0e5ccbb7cadaa3090a656eb7ab5ba91d17465"),sdk:c("https://docs.tavily.com/sdk/javascript/quick-start","745ebd8f0f1f6666aa6828a6ab3290232e309ab2fcc55970d0e3d1d4b7300784"),sse:c("https://docs.tavily.com/documentation/api-reference/endpoint/research-streaming","2068dd8cc4dc7f7201b3b45a6f2519bdd09b2e34d13efe6daac67a55e4bd2ebd"),hostedMcp:c("https://docs.tavily.com/documentation/mcp","6da3d29cc336ebc0d7449f5ab3801470a250316014cdbeef81356dddabf4aa86"),localMcp:c("https://docs.tavily.com/documentation/mcp","58d6f37c96a1b9cb4a333003986c1a8cc2be7af26d244db81c1df7b09c059aa3")}),Me={rest:{sourcePath:"packages/integrations/provider-web-access/src/adapters/direct-fetch.ts",snapshotPath:"packages/libs/contracts-integrations/evidence/web-access/direct-fetch.json",snapshotSha256:"b21a3651f2c86f98cd2164666ae7aa7a03393990e0c09255af0db3bd5075a48a",retrievedContentSha256:"8509df28f3ac1c63c4f4e6c56f783f2088dce87141b741bd4d5ed34a47053865",retrievedAt:"2026-08-14"}},De=A("reworkd.json","d7d2b08427347152dbe80ab8273d55943247451e2b81a5d663c42ed115293e68",{rest:c("https://docs.reworkd.ai/api-reference/public/get-outputs-for-a-scraping-group","50cbd49697ef9457b90af8d5bba9cde0021f9b2cbb8fd53f146f0161d2cad86c")},"2026-08-14"),Ee=A("firecrawl.json","ff9e24cda941141c9fdb1b7678dc066d5d20fe5bdcae5dec61b2f2d6df2212b8",{rest:c("https://docs.firecrawl.dev/api-reference/v2-introduction","b6801bd5fcc58878977c7ff9573ef70166e6440453e0e47bb4caebb85430dcc2")},"2026-08-14"),Ce=A("apify.json","ea75073a123c2d6e031886a8bb79129cd705b0d21fedce7887c601fd6183e707",{rest:c("https://docs.apify.com/api/v2","f5b212c6da3d4d5878eac0b00dec82bf70f87bdc794cccaeb9c89e22c89b3cbf")},"2026-08-14"),Ie=A("oxylabs.json","c71efcd2e8fad341f8d26946d8b7f5f7025c20270594df1110bc4c2892c6ea74",{rest:c("https://developers.oxylabs.io/scraper-apis/web-scraper-api","5ff7526054c5df0731e4dce8bdfd6859f0eb157976bb77640137848890f9518e"),httpProxy:c("https://developers.oxylabs.io/proxies/residential-proxies/protocols","0f76b6b485eff8bf8d7b620cfb11d1f081e38824d63a0ebbd3f0506ac7972915"),httpsProxy:c("https://developers.oxylabs.io/proxies/residential-proxies/protocols","0f76b6b485eff8bf8d7b620cfb11d1f081e38824d63a0ebbd3f0506ac7972915"),socksProxy:c("https://developers.oxylabs.io/proxies/residential-proxies/protocols","0f76b6b485eff8bf8d7b620cfb11d1f081e38824d63a0ebbd3f0506ac7972915")},"2026-08-14");var b="packages/integrations/provider-web-access/src",Dt=`${b}/operation-bindings.test.ts`,B=`${b}/adapters/browserbase.test.ts`,Be=`${b}/adapters/browserbase-stagehand.test.ts`,Q=["search.execute","fetch.execute","session.create","session.get","session.close","connection.describe","context.create","context.get","context.delete"],$e=[...Q,...ie],qe={operationSuffixes:["session.create","proxy.describe"],adapterRef:`${b}/adapters/browserbase-resources.ts#BrowserbaseResourceService`,testIds:[B,`${b}/connection-boundaries.test.ts`]},Y={rest:{operationSuffixes:Q,adapterRef:`${b}/adapters/browserbase-rest.ts#BrowserbaseRestApi`,testIds:[`${b}/adapters/browserbase-rest.test.ts`]},sdk:{operationSuffixes:$e,adapterRef:`${b}/adapters/browserbase.ts#BrowserbaseAdapter`,testIds:[B,Be]},x402:{operationSuffixes:Q,adapterRef:`${b}/adapters/browserbase.ts#BrowserbaseAdapter`,testIds:[B]},websocket:{operationSuffixes:["connection.describe"],adapterRef:`${b}/cdp.ts#PlaywrightCdpConnector`,testIds:[`${b}/connection-boundaries.test.ts`,B]},hostedMcp:{operationSuffixes:["mcp.describe"],adapterRef:`${b}/mcp.ts#AiSdkNativeMcpConnector`,testIds:[`${b}/mcp.test.ts`,B]},localMcp:{operationSuffixes:["mcp.describe"],adapterRef:`${b}/mcp.ts#AiSdkNativeMcpConnector`,testIds:[`${b}/mcp.test.ts`,B]},contractspecMcp:{operationSuffixes:$e,adapterRef:`${b}/operation-bindings.ts#bindWebAccessOperations`,testIds:[Dt,Be]},httpProxy:qe,httpsProxy:qe};var i="packages/integrations/provider-web-access/src",Et=`${i}/operation-bindings.test.ts`,R=()=>({allProviderOperations:!0,adapterRef:`${i}/operation-bindings.ts#bindWebAccessOperations`,testIds:[Et]}),G=(e)=>({operationSuffixes:["mcp.describe"],adapterRef:`${i}/mcp.ts#AiSdkNativeMcpConnector`,testIds:[`${i}/mcp.test.ts`,e]}),Te=["search.execute","fetch.execute","extract.execute","scraper.run","scraper.trigger","scraper.job.get","job.get","dataset.get","crawl.start","crawl.get"],Ct=[...Te,"browser.session.create","browser.session.get","browser.session.close","browser.connection.describe"],E=`${i}/adapters/bright-data.test.ts`,W=[`${i}/connection-boundaries.test.ts`,`${i}/transports.test.ts`],je={rest:{operationSuffixes:Te,adapterRef:`${i}/adapters/bright-data-rest.ts#BrightDataRestApi`,testIds:[`${i}/adapters/bright-data-rest.test.ts`]},sdk:{operationSuffixes:Ct,adapterRef:`${i}/adapters/bright-data.ts#BrightDataAdapter`,testIds:[E]},webhook:{eventKeys:["web-access.bright-data.delivery.received"],adapterRef:`${i}/bright-data-webhook.ts#BrightDataWebhookReceiver`,testIds:[`${i}/webhook.test.ts`]},websocket:{operationSuffixes:["browser.connection.describe"],adapterRef:`${i}/cdp.ts#PlaywrightCdpConnector`,testIds:[`${i}/connection-boundaries.test.ts`,E]},hostedMcp:G(E),localMcp:G(E),contractspecMcp:R(),httpProxy:S(E,W),httpsProxy:S(E,W),socksProxy:S(E,W)},N=`${i}/adapters/rest-adapters.test.ts`,Ne={rest:{operationSuffixes:["search.execute","render.execute","job.get","usage.get"],adapterRef:`${i}/adapters/massive.ts#MassiveAdapter`,testIds:[N]},webhook:{eventKeys:["web-access.massive.delivery.received"],adapterRef:`${i}/massive-webhook.ts#MassiveWebhookReceiver`,testIds:[`${i}/webhook.test.ts`]},websocket:{operationSuffixes:["browser.connection.describe"],adapterRef:`${i}/cdp.ts#PlaywrightCdpConnector`,testIds:[`${i}/connection-boundaries.test.ts`,N]},contractspecMcp:R(),httpProxy:S(N,W),httpsProxy:S(N,W),socksProxy:S(N,W)},_e={rest:{operationSuffixes:["search.execute","images.execute","news.execute","maps.execute","places.execute","videos.execute","shopping.execute","scholar.execute","patents.execute","autocomplete.execute"],adapterRef:`${i}/adapters/serper.ts#SerperAdapter`,testIds:[`${i}/adapters/rest-adapters.test.ts`]},contractspecMcp:R()},Ke={...He("linkup",["search.execute","fetch.execute","research.start","task.get"]),x402:{operationSuffixes:["search.execute","fetch.execute","research.start"],adapterRef:`${i}/x402.ts#executeX402Request`,testIds:[`${i}/adapters/research-adapters.test.ts`]}},Ue={...He("tavily",["search.execute","extract.execute","map.execute","crawl.execute","crawl.start","research.start","research.get"]),sse:{operationSuffixes:["research.stream"],adapterRef:`${i}/sse.ts#collectSseEvents`,testIds:[`${i}/adapters/research-adapters.test.ts`,`${i}/transports.test.ts`]}},q=`${i}/adapters/expanded-adapters.test.ts`,Fe=`${i}/adapters/direct-reworkd.test.ts`,Je={rest:{operationSuffixes:["fetch.execute"],adapterRef:`${i}/adapters/direct-fetch.ts#DirectFetchAdapter`,testIds:[Fe]},contractspecMcp:R()},Le={rest:{operationSuffixes:["dataset.get"],adapterRef:`${i}/adapters/reworkd.ts#ReworkdAdapter`,testIds:[Fe]},contractspecMcp:R()},Ge={rest:{operationSuffixes:["search.execute","fetch.execute","extract.execute","map.execute","crawl.start","crawl.get","crawl.cancel"],adapterRef:`${i}/adapters/firecrawl.ts#FirecrawlAdapter`,testIds:[q]},contractspecMcp:R()},Ve={rest:{operationSuffixes:["scraper.run","job.get","job.cancel","dataset.get"],adapterRef:`${i}/adapters/apify.ts#ApifyAdapter`,testIds:[q]},contractspecMcp:R()},ze={rest:{operationSuffixes:["search.execute","fetch.execute"],adapterRef:`${i}/adapters/oxylabs.ts#OxylabsAdapter`,testIds:[q]},contractspecMcp:R(),httpProxy:S(q,W),httpsProxy:S(q,W),socksProxy:S(q,W)};function S(e,t){return{operationSuffixes:["proxy.request","proxy.describe"],adapterRef:`${i}/proxy.ts#NodeProxyExecutor`,testIds:[...t,e]}}function He(e,t){let s=`${i}/adapters/research-adapters.test.ts`;return{rest:{operationSuffixes:t,adapterRef:`${i}/adapters/${e}-rest.ts#${e==="linkup"?"LinkupRestApi":"TavilyRestApi"}`,testIds:[`${i}/adapters/research-rest.test.ts`]},sdk:{operationSuffixes:t,adapterRef:`${i}/adapters/${e}.ts#${e==="linkup"?"LinkupAdapter":"TavilyAdapter"}`,testIds:[s]},hostedMcp:G(s),localMcp:G(s),contractspecMcp:R()}}var Z="packages/integrations/provider-web-access/src/adapters/expanded-adapters.test.ts",Xe="packages/integrations/provider-web-access/src/adapters/direct-reworkd.test.ts",Qe=[{provider:"direct-fetch",supported:["rest","contractspecMcp"],reasons:_("Direct fetch is a local HTTP adapter without a vendor-native"),evidence:Me,mappings:Je,testIds:[Xe]},{provider:"reworkd",supported:["rest","contractspecMcp"],reasons:{..._("Reworkd REST output access does not expose a"),sdk:"Reworkd Harambe is a generated scraper runtime, not a TypeScript API client bound by this package."},evidence:De,mappings:Le,testIds:[Xe]},{provider:"firecrawl",supported:["rest","contractspecMcp"],reasons:{..._("The REST-first Firecrawl adapter does not bind a"),sdk:"Official Firecrawl SDKs exist, but this package intentionally binds REST without adding an SDK dependency.",webhook:"Firecrawl webhooks are documented but no verified receiver is implemented in this package.",hostedMcp:"Firecrawl hosted MCP embeds credentials in its documented URL and is not projected into opaque handles here.",localMcp:"Firecrawl local MCP is documented but is not bound by this REST-first checkpoint."},evidence:Ee,mappings:Ge,testIds:[Z]},{provider:"apify",supported:["rest","contractspecMcp"],reasons:{..._("The REST-first Apify adapter does not bind a"),sdk:"The official apify-client exists, but this package intentionally binds REST without adding the dependency.",webhook:"Apify webhooks are documented but no verified receiver is implemented in this package.",hostedMcp:"Apify hosted MCP is documented but not bound by this REST-first checkpoint.",localMcp:"Apify local MCP is documented but not bound by this REST-first checkpoint."},evidence:Ce,mappings:Ve,testIds:[Z]},{provider:"oxylabs",supported:["rest","contractspecMcp","httpProxy","httpsProxy","socksProxy"],reasons:{..._("Oxylabs does not expose a bound"),localMcp:"Oxylabs local MCP is documented but not bound by this REST-first checkpoint."},evidence:Ie,mappings:ze,testIds:[Z,"packages/integrations/provider-web-access/src/connection-boundaries.test.ts"]}];function _(e){return Object.fromEntries(["rest","sdk","x402","webhook","websocket","sse","hostedMcp","localMcp","contractspecMcp","httpProxy","httpsProxy","socksProxy"].map((t)=>[t,`${e} ${t} surface.`]))}var It=["packages/integrations/provider-web-access/src/adapters/bright-data.test.ts","packages/integrations/provider-web-access/src/adapters/bright-data-rest.test.ts","packages/integrations/provider-web-access/src/adapters/browserbase.test.ts","packages/integrations/provider-web-access/src/adapters/browserbase-rest.test.ts","packages/integrations/provider-web-access/src/adapters/browserbase-stagehand.test.ts","packages/integrations/provider-web-access/src/compatibility.test.ts","packages/integrations/provider-web-access/src/connection-boundaries.test.ts","packages/integrations/provider-web-access/src/adapters/research-adapters.test.ts","packages/integrations/provider-web-access/src/adapters/research-rest.test.ts","packages/integrations/provider-web-access/src/adapters/rest-adapters.test.ts","packages/integrations/provider-web-access/src/webhook.test.ts","packages/integrations/provider-web-access/src/transports.test.ts","packages/integrations/provider-web-access/src/mcp.test.ts","packages/integrations/provider-web-access/src/operation-bindings.test.ts","packages/integrations/provider-web-access/src/stagehand-tools.test.ts","packages/integrations/provider-web-access/src/adapters/expanded-adapters.test.ts","packages/integrations/provider-web-access/src/adapters/direct-reworkd.test.ts"],Ye=[{provider:"bright-data",supported:["rest","sdk","webhook","websocket","hostedMcp","localMcp","contractspecMcp","httpProxy","httpsProxy","socksProxy"],reasons:{x402:"Bright Data does not expose an x402 payment transport.",sse:"Bright Data documents job delivery and CDP rather than SSE."},evidence:Oe,mappings:je,eventKeys:["web-access.bright-data.delivery.received"],testIds:["packages/integrations/provider-web-access/src/adapters/bright-data.test.ts","packages/integrations/provider-web-access/src/adapters/bright-data-rest.test.ts","packages/integrations/provider-web-access/src/webhook.test.ts","packages/integrations/provider-web-access/src/transports.test.ts"]},{provider:"massive",supported:["rest","webhook","websocket","contractspecMcp","httpProxy","httpsProxy","socksProxy"],reasons:{x402:"Massive does not expose an x402 payment transport.",sdk:"The device-monetization SDK is outside the web-access product scope.",sse:"Massive documents polling and CDP rather than SSE.",hostedMcp:"No vendor-hosted MCP is advertised.",localMcp:"No vendor-local MCP is advertised."},evidence:We,mappings:Ne,eventKeys:["web-access.massive.delivery.received"],testIds:["packages/integrations/provider-web-access/src/adapters/rest-adapters.test.ts","packages/integrations/provider-web-access/src/adapters/research-rest.test.ts","packages/integrations/provider-web-access/src/webhook.test.ts","packages/integrations/provider-web-access/src/transports.test.ts","packages/integrations/provider-web-access/src/compatibility.test.ts"]},{provider:"browserbase",supported:["rest","sdk","websocket","hostedMcp","localMcp","contractspecMcp"],accountGated:["x402","httpProxy","httpsProxy"],reasons:{webhook:"No vendor-native webhook is advertised.",sse:"Browser sessions use CDP WebSocket rather than SSE.",socksProxy:"Browserbase session proxy configuration does not expose SOCKS."},evidence:{...Se,x402:X},mappings:Y,testIds:["packages/integrations/provider-web-access/src/adapters/browserbase.test.ts","packages/integrations/provider-web-access/src/adapters/browserbase-rest.test.ts","packages/integrations/provider-web-access/src/transports.test.ts"],browserAutomation:{profile:"stagehand-v4",state:"supported",operationKeys:["web-access.browserbase.browser.act","web-access.browserbase.browser.observe","web-access.browserbase.browser.extract"],adapterRef:"packages/integrations/provider-web-access/src/adapters/browserbase-stagehand.ts#BrowserbaseStagehandAdapter",testIds:["packages/integrations/provider-web-access/src/adapters/browserbase-stagehand.test.ts","packages/integrations/provider-web-access/src/stagehand-tools.test.ts"]}},{provider:"serper",supported:["rest","contractspecMcp"],reasons:{x402:"Serper does not expose an x402 payment transport.",sdk:"No official JavaScript SDK is advertised.",webhook:"No vendor-native webhook is advertised.",websocket:"No vendor-native WebSocket is advertised.",sse:"No vendor-native SSE is advertised.",hostedMcp:"No vendor-hosted MCP is advertised.",localMcp:"No vendor-local MCP is advertised.",httpProxy:"Serper is a search API, not a proxy network.",httpsProxy:"Serper is a search API, not a proxy network.",socksProxy:"Serper is a search API, not a proxy network."},evidence:Re,mappings:_e,testIds:["packages/integrations/provider-web-access/src/adapters/rest-adapters.test.ts"]},{provider:"linkup",supported:["rest","sdk","hostedMcp","localMcp","contractspecMcp"],accountGated:["x402"],reasons:{webhook:"Linkup asynchronous work is retrieved through Tasks.",websocket:"No vendor-native WebSocket is advertised.",sse:"No vendor-native SSE is advertised.",httpProxy:"Linkup is a search/research API, not a proxy network.",httpsProxy:"Linkup is a search/research API, not a proxy network.",socksProxy:"Linkup is a search/research API, not a proxy network."},evidence:{...ke,x402:X},mappings:Ke,testIds:["packages/integrations/provider-web-access/src/adapters/research-adapters.test.ts","packages/integrations/provider-web-access/src/adapters/research-rest.test.ts","packages/integrations/provider-web-access/src/mcp.test.ts","packages/integrations/provider-web-access/src/compatibility.test.ts"]},{provider:"tavily",supported:["rest","sdk","sse","hostedMcp","localMcp","contractspecMcp"],reasons:{x402:"Tavily does not expose an x402 payment transport.",webhook:"Tavily asynchronous research uses polling or SSE.",websocket:"Tavily streaming is SSE, not WebSocket.",httpProxy:"Tavily is a web research API, not a proxy network.",httpsProxy:"Tavily is a web research API, not a proxy network.",socksProxy:"Tavily is a web research API, not a proxy network."},evidence:Pe,mappings:Ue,testIds:["packages/integrations/provider-web-access/src/adapters/research-adapters.test.ts","packages/integrations/provider-web-access/src/adapters/research-rest.test.ts","packages/integrations/provider-web-access/src/mcp.test.ts","packages/integrations/provider-web-access/src/compatibility.test.ts"]},...Qe];var r=(e,t,s,p=!0)=>({provider:e,suffix:t,title:s,kind:"command",costBearing:p}),n=(e,t,s,p=!1)=>({provider:e,suffix:t,title:s,kind:"query",costBearing:p}),Ze=[r("bright-data","search.execute","Search with Bright Data"),r("bright-data","fetch.execute","Fetch with Bright Data"),r("bright-data","extract.execute","Extract with Bright Data"),r("bright-data","scraper.run","Run Bright Data scraper"),r("bright-data","scraper.trigger","Trigger Bright Data scraper"),n("bright-data","scraper.job.get","Get Bright Data scraper job"),n("bright-data","job.get","Get Bright Data job"),r("bright-data","job.cancel","Cancel Bright Data job",!1),n("bright-data","dataset.get","Get Bright Data dataset"),r("bright-data","crawl.start","Start Bright Data crawl"),n("bright-data","crawl.get","Get Bright Data crawl"),r("bright-data","crawl.cancel","Cancel Bright Data crawl",!1),r("bright-data","browser.session.create","Create Bright Data browser session"),n("bright-data","browser.session.get","Get Bright Data browser session"),r("bright-data","browser.session.close","Close Bright Data browser session",!1),n("bright-data","browser.connection.describe","Describe Bright Data CDP connection"),r("bright-data","proxy.request","Request through Bright Data proxy"),n("bright-data","proxy.describe","Describe Bright Data proxy"),n("bright-data","mcp.describe","Describe Bright Data native MCP"),r("massive","search.execute","Search with Massive"),r("massive","render.execute","Render with Massive"),n("massive","job.get","Get Massive render job"),r("massive","job.cancel","Cancel Massive render job",!1),r("massive","browser.session.create","Create Massive browser session"),n("massive","browser.session.get","Get Massive browser session"),r("massive","browser.session.close","Close Massive browser session",!1),n("massive","browser.connection.describe","Describe Massive CDP connection"),r("massive","proxy.request","Request through Massive proxy"),n("massive","proxy.describe","Describe Massive proxy"),n("massive","usage.get","Get Massive usage"),n("massive","mcp.describe","Describe Massive MCP projection"),r("browserbase","search.execute","Search with Browserbase"),r("browserbase","fetch.execute","Fetch with Browserbase"),r("browserbase","session.create","Create Browserbase session"),n("browserbase","session.get","Get Browserbase session"),r("browserbase","session.close","Close Browserbase session",!1),n("browserbase","connection.describe","Describe Browserbase CDP connection"),r("browserbase","context.create","Create Browserbase context"),n("browserbase","context.get","Get Browserbase context"),r("browserbase","context.delete","Delete Browserbase context",!1),n("browserbase","proxy.describe","Describe Browserbase session proxy"),n("browserbase","mcp.describe","Describe Browserbase native MCP"),...["search","images","news","maps","places","videos","shopping","scholar","patents","autocomplete"].map((e)=>r("serper",`${e}.execute`,`Run Serper ${e}`)),n("serper","mcp.describe","Describe Serper MCP projection"),r("linkup","search.execute","Search with Linkup"),r("linkup","fetch.execute","Fetch with Linkup"),r("linkup","research.start","Start Linkup research"),n("linkup","task.get","Get Linkup task"),r("linkup","task.cancel","Cancel Linkup task",!1),n("linkup","mcp.describe","Describe Linkup native MCP"),r("tavily","search.execute","Search with Tavily"),r("tavily","extract.execute","Extract with Tavily"),r("tavily","map.execute","Map with Tavily"),r("tavily","crawl.execute","Crawl with Tavily"),r("tavily","crawl.start","Start Tavily crawl"),n("tavily","crawl.get","Get Tavily crawl"),r("tavily","crawl.cancel","Cancel Tavily crawl",!1),r("tavily","research.start","Start Tavily research"),n("tavily","research.get","Get Tavily research"),n("tavily","research.stream","Stream Tavily research"),r("tavily","research.cancel","Cancel Tavily research",!1),n("tavily","mcp.describe","Describe Tavily native MCP")],Bt=[r("direct-fetch","fetch.execute","Fetch a public URL directly",!1),n("direct-fetch","mcp.describe","Describe direct-fetch MCP projection"),n("reworkd","dataset.get","Get Reworkd group outputs"),n("reworkd","mcp.describe","Describe Reworkd MCP projection"),r("firecrawl","search.execute","Search with Firecrawl"),r("firecrawl","fetch.execute","Scrape with Firecrawl"),r("firecrawl","extract.execute","Extract with Firecrawl"),r("firecrawl","map.execute","Map with Firecrawl"),r("firecrawl","crawl.start","Start Firecrawl crawl"),n("firecrawl","crawl.get","Get Firecrawl crawl"),r("firecrawl","crawl.cancel","Cancel Firecrawl crawl",!1),n("firecrawl","mcp.describe","Describe Firecrawl MCP projection"),r("apify","scraper.run","Run Apify Actor"),n("apify","job.get","Get Apify Actor run"),r("apify","job.cancel","Abort Apify Actor run",!1),n("apify","dataset.get","Get Apify dataset items"),n("apify","mcp.describe","Describe Apify MCP projection"),r("oxylabs","search.execute","Search with Oxylabs"),r("oxylabs","fetch.execute","Fetch with Oxylabs"),r("oxylabs","proxy.request","Request through Oxylabs proxy"),n("oxylabs","proxy.describe","Describe Oxylabs proxy"),n("oxylabs","mcp.describe","Describe Oxylabs MCP projection")],$t=[r("browserbase","browser.act","Act on a browser page"),n("browserbase","browser.observe","Observe actionable browser elements",!0),n("browserbase","browser.extract","Extract structured browser page data",!0)],qt=new Set(["bright-data:scraper.trigger","bright-data:scraper.job.get","bright-data:crawl.start","bright-data:crawl.get","bright-data:crawl.cancel","tavily:crawl.execute"]),ee=Ze.filter((e)=>!qt.has(`${e.provider}:${e.suffix}`)),Ws=ee,te=Ze,se=[...te,...Bt],K=[...se,...$t];function U(e){return`web-access.${e.provider}.${e.suffix}`}var Tt=(e)=>({state:"unsupported",reason:e});function jt(e){return Object.fromEntries(["rest","sdk","x402","webhook","websocket","sse","hostedMcp","localMcp","contractspecMcp","httpProxy","httpsProxy","socksProxy"].map((t)=>[t,e.supported.includes(t)?et(e,t,"supported"):e.accountGated?.includes(t)?et(e,t,"account-gated"):Tt(e.reasons[t]??`${t} is not supported.`)]))}function et(e,t,s){let p=t==="contractspecMcp"?Ae:e.evidence[t];if(!p)throw Error(`${e.provider}.${t} is missing source evidence`);let a=e.mappings[t];if(!a)throw Error(`${e.provider}.${t} is missing implementation mapping`);return{state:s,evidence:{contractRefs:Nt(e,t),adapterRef:a.adapterRef,testIds:a.testIds,sourceUrl:p.sourceUrl,sourcePath:p.sourcePath,snapshotPath:p.snapshotPath,snapshotSha256:p.snapshotSha256,retrievedContentSha256:p.retrievedContentSha256,sourceUrlSha256:p.snapshotSha256,retrievedAt:p.retrievedAt}}}function Nt(e,t){let s=e.mappings[t];if(!s)return[];if(s.eventKeys)return[...s.eventKeys];let p=new Set(s.operationSuffixes??[]);return K.filter((a)=>a.provider===e.provider).filter((a)=>s.allProviderOperations||p.has(a.suffix)).map(U)}var Ms=Ye.map((e)=>{let t=e.evidence.rest;if(!t)throw Error(`${e.provider} is missing primary evidence`);return{provider:e.provider,capabilityId:`web-access.${e.provider}`,surfaces:jt(e),operationKeys:K.filter((s)=>s.provider===e.provider).map(U),eventKeys:e.eventKeys??[],adapterKey:e.provider,testIds:e.testIds,browserAutomation:e.browserAutomation,evidence:{sourceUrl:t.sourceUrl,sourcePath:t.sourcePath,snapshotPath:t.snapshotPath,snapshotSha256:t.snapshotSha256,retrievedContentSha256:t.retrievedContentSha256,sourceUrlSha256:t.snapshotSha256,retrievedAt:t.retrievedAt}}});var Es=["bright-data","massive","browserbase","serper","linkup","tavily","direct-fetch","reworkd","firecrawl","apify","oxylabs"];var re={policyDenied:{code:"WEB_ACCESS_POLICY_DENIED",http:403,description:"Authorization, evidence, or network policy denied execution."},authFailed:{code:"WEB_ACCESS_AUTH_FAILED",http:401,description:"The provider rejected the configured credential."},quotaExceeded:{code:"WEB_ACCESS_QUOTA_EXCEEDED",http:429,description:"The atomic request or monetary budget was exhausted."},rateLimited:{code:"WEB_ACCESS_RATE_LIMITED",http:429,retryable:!0,description:"Provider or local concurrency limits were reached."},timedOut:{code:"WEB_ACCESS_TIMEOUT",http:504,retryable:!0,description:"The bounded execution deadline elapsed."},unsupported:{code:"WEB_ACCESS_UNSUPPORTED",http:422,description:"The provider does not expose the requested native behavior."},cancelled:{code:"WEB_ACCESS_CANCELLED",http:499,description:"Execution was cancelled before provider completion."},notFound:{code:"WEB_ACCESS_NOT_FOUND",http:404,description:"The requested provider resource was not found."},providerUnavailable:{code:"WEB_ACCESS_PROVIDER_UNAVAILABLE",http:503,retryable:!0,description:"The provider is temporarily unavailable."},providerError:{code:"WEB_ACCESS_PROVIDER_ERROR",http:502,description:"The provider returned an unclassified failure."}},Is=Object.values(re).map((e)=>e.code);import{ScalarTypeEnum as v,SchemaModel as j}from"@lssm/lib.schema";import{ScalarTypeEnum as f,SchemaModel as l}from"@lssm/lib.schema";var o=f.String_unsecure(),u=f.NonEmptyString(),m=f.Int_unsecure(),_t=f.Float_unsecure(),k=f.Boolean(),O=f.URL(),tt=new l({name:"WebAccessAuthorizationRecord",fields:{decision:{type:u,isOptional:!1},evidenceRefs:{type:u,isOptional:!1,isArray:!0},expiresAt:{type:f.DateTime(),isOptional:!0}}}),st=new l({name:"WebAccessBudgetRecord",fields:{currency:{type:f.Currency(),isOptional:!0},maximumAmountMinor:{type:m,isOptional:!0},maximumRequests:{type:m,isOptional:!0},estimatedAmountMinor:{type:m,isOptional:!0}}}),rt=new l({name:"WebAccessSearchPayload",fields:{query:{type:u,isOptional:!1},limit:{type:m,isOptional:!0},page:{type:m,isOptional:!0},language:{type:o,isOptional:!0},country:{type:o,isOptional:!0},category:{type:o,isOptional:!0},mode:{type:o,isOptional:!0},callback:{type:O,isOptional:!0},includeDomains:{type:u,isOptional:!0,isArray:!0},excludeDomains:{type:u,isOptional:!0,isArray:!0},transport:{type:o,isOptional:!0},useX402:{type:k,isOptional:!0}}}),at=new l({name:"WebAccessFetchPayload",fields:{url:{type:O,isOptional:!1},format:{type:o,isOptional:!0},headers:{type:f.JSONObject(),isOptional:!0},renderJs:{type:k,isOptional:!0},includeRawContent:{type:k,isOptional:!0},extractImages:{type:k,isOptional:!0},country:{type:o,isOptional:!0},city:{type:o,isOptional:!0},mode:{type:o,isOptional:!0},callback:{type:O,isOptional:!0},transport:{type:o,isOptional:!0},useX402:{type:k,isOptional:!0}}}),ot=new l({name:"WebAccessExtractPayload",fields:{urls:{type:O,isOptional:!1,isArray:!0},query:{type:o,isOptional:!0},format:{type:o,isOptional:!0},includeImages:{type:k,isOptional:!0},transport:{type:o,isOptional:!0}}}),ct=new l({name:"WebAccessCrawlPayload",fields:{url:{type:O,isOptional:!0},urls:{type:O,isOptional:!0,isArray:!0},instructions:{type:o,isOptional:!0},limit:{type:m,isOptional:!0},maxDepth:{type:m,isOptional:!0},allowExternal:{type:k,isOptional:!0},format:{type:o,isOptional:!0},transport:{type:o,isOptional:!0}}}),it=new l({name:"WebAccessResearchPayload",fields:{query:{type:u,isOptional:!1},model:{type:o,isOptional:!0},mode:{type:o,isOptional:!0},reasoningDepth:{type:o,isOptional:!0},maxEvents:{type:m,isOptional:!0},includeDomains:{type:u,isOptional:!0,isArray:!0},excludeDomains:{type:u,isOptional:!0,isArray:!0},transport:{type:o,isOptional:!0},useX402:{type:k,isOptional:!0}}}),nt=new l({name:"WebAccessScraperPayload",fields:{collector:{type:u,isOptional:!1},input:{type:f.JSONObject(),isOptional:!0},transport:{type:o,isOptional:!0}}}),pt=new l({name:"WebAccessDatasetPayload",fields:{datasetId:{type:u,isOptional:!1},limit:{type:m,isOptional:!0},cursor:{type:m,isOptional:!0},createdAfter:{type:f.DateTime(),isOptional:!0},jobId:{type:o,isOptional:!0},url:{type:O,isOptional:!0},transport:{type:o,isOptional:!0}}}),Kt=new l({name:"WebAccessBrowserProxyPayload",fields:{mode:{type:u,isOptional:!1},country:{type:o,isOptional:!0},region:{type:o,isOptional:!0},city:{type:o,isOptional:!0},secretReference:{type:o,isOptional:!0}}}),dt=new l({name:"WebAccessBrowserCreatePayload",fields:{projectId:{type:o,isOptional:!0},contextId:{type:o,isOptional:!0},timeoutSeconds:{type:m,isOptional:!0},keepAlive:{type:k,isOptional:!0},country:{type:o,isOptional:!0},proxy:{type:Kt,isOptional:!0},transport:{type:o,isOptional:!0}}}),bt=new l({name:"WebAccessProxyPayload",fields:{url:{type:O,isOptional:!1},method:{type:o,isOptional:!0},headers:{type:f.JSONObject(),isOptional:!0},body:{type:o,isOptional:!0},protocol:{type:o,isOptional:!0},country:{type:o,isOptional:!0},region:{type:o,isOptional:!0},city:{type:o,isOptional:!0},stickySessionId:{type:o,isOptional:!0}}}),lt=new l({name:"WebAccessUsagePayload",fields:{start:{type:f.DateTime(),isOptional:!0},end:{type:f.DateTime(),isOptional:!0}}}),ut=new l({name:"WebAccessEmptyPayload",fields:{}}),F=new l({name:"WebAccessSourceRecord",fields:{url:{type:O,isOptional:!1},title:{type:o,isOptional:!0},snippet:{type:o,isOptional:!0},publishedAt:{type:f.DateTime(),isOptional:!0},score:{type:_t,isOptional:!0}}}),ft=new l({name:"NativeMcpDescriptorRecord",fields:{provider:{type:u,isOptional:!1},transport:{type:u,isOptional:!1},endpoint:{type:O,isOptional:!0},command:{type:o,isOptional:!0},args:{type:o,isOptional:!0,isArray:!0},auth:{type:u,isOptional:!1},toolPrefix:{type:u,isOptional:!1}}});var h=v.String_unsecure(),T=v.NonEmptyString(),yt=new j({name:"WebAccessSearchDataRecord",fields:{query:{type:h,isOptional:!0},answer:{type:h,isOptional:!0},results:{type:F,isOptional:!0,isArray:!0}}}),ht=new j({name:"WebAccessContentDataRecord",fields:{url:{type:v.URL(),isOptional:!0},title:{type:h,isOptional:!0},content:{type:h,isOptional:!0},answer:{type:h,isOptional:!0},results:{type:F,isOptional:!0,isArray:!0}}}),gt=new j({name:"WebAccessJobDataRecord",fields:{provider:{type:T,isOptional:!0},jobId:{type:T,isOptional:!0},kind:{type:h,isOptional:!0},status:{type:h,isOptional:!0}}}),wt=new j({name:"WebAccessBrowserDataRecord",fields:{provider:{type:T,isOptional:!0},sessionId:{type:T,isOptional:!0},contextId:{type:T,isOptional:!0},status:{type:h,isOptional:!0},protocol:{type:h,isOptional:!0},connectHandle:{type:T,isOptional:!0},expiresAt:{type:v.DateTime(),isOptional:!0}}}),mt=new j({name:"WebAccessProxyDataRecord",fields:{status:{type:v.Int_unsecure(),isOptional:!0},finalUrl:{type:v.URL(),isOptional:!0},host:{type:h,isOptional:!0},remoteDns:{type:v.Boolean(),isOptional:!0},geoTargeting:{type:v.Boolean(),isOptional:!0},stickySessions:{type:v.Boolean(),isOptional:!0}}}),vt=new j({name:"WebAccessResourceDataRecord",fields:{id:{type:h,isOptional:!0},name:{type:h,isOptional:!0},status:{type:h,isOptional:!0},credits:{type:v.Float_unsecure(),isOptional:!0},requestCount:{type:v.Int_unsecure(),isOptional:!0}}});import{ScalarTypeEnum as w,SchemaModel as J}from"@lssm/lib.schema";var P=w.NonEmptyString();function xt(e){let t=zt(e),s=Lt(e,t),p=e.suffix==="mcp.describe",a=p?ft:Jt(e);return{input:Ut(`${t}Input`,s),output:Ft(`${t}Output`,a,p)}}function Ut(e,t){return new J({name:e,fields:{provider:{type:P,isOptional:!1},tenantId:{type:w.ID(),isOptional:!1},workspaceId:{type:w.ID(),isOptional:!0},connectionId:{type:w.ID(),isOptional:!1},correlationId:{type:P,isOptional:!1},policyMode:{type:P,isOptional:!1},authorization:{type:tt,isOptional:!0},budget:{type:st,isOptional:!0},payload:{type:t,isOptional:!1}}})}function Ft(e,t,s){return new J({name:e,fields:{status:{type:P,isOptional:!1},data:s?{type:t,isOptional:!0,isArray:!0}:{type:t,isOptional:!0},sources:{type:F,isOptional:!1,isArray:!0},usage:{type:Gt(e),isOptional:!0},provenance:{type:Vt(e),isOptional:!1}}})}function Jt(e){let t=e.suffix;if(t==="browser.act")return be;if(t==="browser.observe")return le;if(t==="browser.extract")return ue;if(t.startsWith("proxy."))return mt;if(t.includes("session.")||t.startsWith("context.")||t.includes("connection.describe"))return wt;if(t==="dataset.get"||t==="usage.get")return vt;if(At(t)||t.endsWith(".trigger"))return gt;if(t==="fetch.execute"||t==="extract.execute"||t==="render.execute"||t.startsWith("scraper.")||t.startsWith("crawl.")||t.startsWith("research.")||t==="map.execute")return ht;return yt}function Lt(e,t){let s=e.suffix;if(s==="browser.act")return ne;if(s==="browser.observe")return pe;if(s==="browser.extract")return de;if(s==="mcp.describe"||s==="proxy.describe")return ut;if(s==="usage.get")return lt;if(s==="proxy.request")return bt;if(s.includes("session.create")||s==="context.create")return dt;if(s.includes("session.")||s==="connection.describe")return ae(t,"sessionId");if(s.startsWith("context."))return ae(t,"contextId");if(s==="dataset.get")return pt;if(s.startsWith("scraper.")&&!s.includes(".job."))return nt;if(At(s))return ae(t,e.provider==="linkup"?"taskId":"jobId");if(s==="research.stream"||s==="research.start")return it;if(s==="map.execute"||s.startsWith("crawl."))return ct;if(s==="extract.execute")return ot;if(s==="fetch.execute"||s==="render.execute")return at;return rt}function ae(e,t){return new J({name:`${e}Payload`,fields:{[t]:{type:P,isOptional:!1},kind:{type:w.String_unsecure(),isOptional:!0},transport:{type:w.String_unsecure(),isOptional:!0}}})}function Gt(e){return new J({name:`${e}Usage`,fields:{requestCount:{type:w.Int_unsecure(),isOptional:!0},credits:{type:w.Float_unsecure(),isOptional:!0},costAmountMinor:{type:w.Int_unsecure(),isOptional:!0},currency:{type:w.Currency(),isOptional:!0},providerReported:{type:w.Boolean(),isOptional:!1}}})}function Vt(e){return new J({name:`${e}Provenance`,fields:{provider:{type:P,isOptional:!1},providerRequestId:{type:P,isOptional:!0},retrievedAt:{type:w.DateTime(),isOptional:!1},transport:{type:P,isOptional:!1},policyMode:{type:P,isOptional:!1}}})}function At(e){return e.endsWith(".get")||e.endsWith(".cancel")||e==="scraper.job.get"}function zt(e){return`${e.provider}-${e.suffix}`.split(/[^a-zA-Z0-9]+/).filter(Boolean).map((t)=>`${t[0]?.toUpperCase()}${t.slice(1)}`).join("")}import{docRef as Ht}from"@lssm/lib.contracts-spec/docs";import{defineCommand as Ot,defineQuery as Wt}from"@lssm/lib.contracts-spec/operations";var Xt={id:"docs.integrations.web-access-operations",title:"Governed web-access provider operations",summary:"Normalized scraping, research, browser automation, MCP, callback, streaming, and residential-proxy contracts for eleven providers.",kind:"reference",visibility:"public",route:"/docs/integrations/web-access",tags:["integrations","scraping","research","browser","proxy","mcp"],body:`# Governed web-access provider operations
2
+
3
+ The web-access contract normalizes Bright Data, Massive, Browserbase, Serper,
4
+ Linkup, Tavily, direct fetch, Reworkd, Firecrawl, Apify, and Oxylabs without
5
+ inventing vendor-native transports. Provider-neutral browser act, observe, and
6
+ structured extract contracts form the Stagehand v4 compatibility profile. The
7
+ capability ledger reports that profile as supported by the separately owned
8
+ Browserbase Stagehand adapter and executable adapter/tool tests. Every operation has a
9
+ concrete payload family, normalized result/provenance, and typed failure catalog.
10
+ The original generic 1.0 envelopes remain exported unchanged for pinned consumers.
11
+
12
+ Governed execution fails closed unless an unexpired allow decision carries at
13
+ least one evidence reference. Configured request or monetary budgets require an
14
+ atomic budget port. Secrets remain behind SecretProvider references; MCP and CDP
15
+ connectors accept only immutable provider manifests; proxy and fetch targets are
16
+ subject to SSRF and redirect validation.
17
+
18
+ Legacy operation keys remain callable for compatibility. Where a provider does
19
+ not expose the formerly declared cancellation or polling behavior, execution
20
+ returns WEB_ACCESS_UNSUPPORTED instead of emulating a native surface.
21
+ `};function V(e,t,s){let p=U(e),a=xt(e),y=t.replaceAll(".","_"),g=e.kind==="query"?e.costBearing?["read","cost-bearing"]:["read"]:e.costBearing?["read","cost-bearing","external-side-effect"]:["write","external-side-effect"],M={meta:{key:p,version:t,title:e.title,description:`${e.title} through the governed web-access provider port.`,goal:e.title,context:"Network and secret safety are mandatory in every policy mode; provider availability remains connection and account dependent.",owners:["@platform.integrations"],tags:["integration","web-access",e.provider],stability:"experimental",docId:[Ht(Xt.id)]},policy:{auth:"user",policies:[{key:"platform.web-access.execute",version:t}],idempotent:e.kind==="query",escalate:null},execution:{effects:g},economicEvidence:e.costBearing?{required:!0,modelVersion:"provider-reported-v1",refs:[{id:`usage:${e.provider}:${e.suffix}`,kind:"usage",source:"@lssm/integration.provider-web-access"}]}:void 0,transport:{rest:{method:e.kind==="query"?"GET":"POST",path:`/api/contracts/${p}/v${t}`},mcp:{toolName:`${p.replaceAll(".","_")}-v${y}`}}};if(s){let ce={...M,io:{input:a.input,output:a.output,errors:re}};return e.kind==="command"?Ot(ce):Wt(ce)}let oe={...M,io:{input:ye,output:he}};return e.kind==="command"?Ot(oe):Wt(oe)}var St=ee.map((e)=>V(e,"1.0.0",!1)),Qt=te.map((e)=>V(e,"1.1.0",!0)),Yt=se.map((e)=>V(e,"1.2.0",!0)),Rt=K.map((e)=>V(e,"1.3.0",!0)),Qs=St,Ys=Rt,Zt=[...St,...Qt,...Yt,...Rt];function Zs(e){return Zt.reduce((t,s)=>t.register(s),e)}export{ge as BrightDataDeliveryPayload,ve as BrightDataDeliveryReceivedEvent,we as MassiveDeliveryPayload,xe as MassiveDeliveryReceivedEvent,ft as NativeMcpDescriptorRecord,tt as WebAccessAuthorizationRecord,be as WebAccessBrowserActDataRecord,ne as WebAccessBrowserActPayload,kt as WebAccessBrowserActionCandidateRecord,dt as WebAccessBrowserCreatePayload,wt as WebAccessBrowserDataRecord,ue as WebAccessBrowserExtractDataRecord,de as WebAccessBrowserExtractPayload,le as WebAccessBrowserObserveDataRecord,pe as WebAccessBrowserObservePayload,Kt as WebAccessBrowserProxyPayload,st as WebAccessBudgetRecord,ht as WebAccessContentDataRecord,ct as WebAccessCrawlPayload,pt as WebAccessDatasetPayload,ut as WebAccessEmptyPayload,ot as WebAccessExtractPayload,at as WebAccessFetchPayload,gt as WebAccessJobDataRecord,ye as WebAccessOperationInput,he as WebAccessOperationOutput,Xt as WebAccessOperationsDocBlock,mt as WebAccessProxyDataRecord,bt as WebAccessProxyPayload,it as WebAccessResearchPayload,vt as WebAccessResourceDataRecord,nt as WebAccessScraperPayload,yt as WebAccessSearchDataRecord,rt as WebAccessSearchPayload,F as WebAccessSourceRecord,lt as WebAccessUsagePayload,Ce as apifyEvidence,Ve as apifyMappings,ss as assertWebAccessCapabilityLedger,Oe as brightDataEvidence,je as brightDataMappings,ie as browserAutomationOperationSuffixes,Se as browserbaseEvidence,Y as browserbaseMappings,Ae as contractspecMcpEvidence,Ys as currentWebAccessOperations,Me as directFetchEvidence,Je as directFetchMappings,Ee as firecrawlEvidence,Ge as firecrawlMappings,ke as linkupEvidence,Ke as linkupMappings,We as massiveEvidence,Ne as massiveMappings,Ie as oxylabsEvidence,ze as oxylabsMappings,ds as registerWebAccessEvents,Zs as registerWebAccessOperations,De as reworkdEvidence,Le as reworkdMappings,Re as serperEvidence,_e as serperMappings,Pe as tavilyEvidence,Ue as tavilyMappings,Ms as webAccessCapabilityLedger,ps as webAccessEvents,It as webAccessEvidenceTestIds,Ye as webAccessInventoryDefinitions,Ws as webAccessOperationDefinitions,ee as webAccessOperationDefinitionsV1,te as webAccessOperationDefinitionsV1_1,se as webAccessOperationDefinitionsV1_2,K as webAccessOperationDefinitionsV1_3,Is as webAccessOperationErrorCodes,re as webAccessOperationErrors,U as webAccessOperationKey,xt as webAccessOperationSchemas,Zt as webAccessOperationVersions,Qs as webAccessOperations,St as webAccessOperationsV1,Qt as webAccessOperationsV1_1,Yt as webAccessOperationsV1_2,Rt as webAccessOperationsV1_3,Es as webAccessProviderKeys,Pt as webAccessSurfaceNames,X as x402Evidence};