@graph8/sdk 0.308.1 → 0.357.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (654) hide show
  1. package/README.md +81 -0
  2. package/blocks/README.md +32 -0
  3. package/blocks/_foundation/README.md +78 -0
  4. package/blocks/_foundation/block.json +79 -0
  5. package/blocks/_foundation/components/api-error.tsx +62 -0
  6. package/blocks/_foundation/components/confirm-spend-dialog.tsx +142 -0
  7. package/blocks/_foundation/components/empty-state.tsx +24 -0
  8. package/blocks/_foundation/hooks/use-g8-mutation.ts +88 -0
  9. package/blocks/_foundation/hooks/use-g8-query.ts +87 -0
  10. package/blocks/_foundation/hooks/use-job-poll.ts +130 -0
  11. package/blocks/_foundation/hooks/use-paginated.ts +105 -0
  12. package/blocks/_foundation/lib/g8-client.ts +128 -0
  13. package/blocks/_foundation/recipes/verify-proxy-key.ts +18 -0
  14. package/blocks/_foundation/server/proxy.ts +233 -0
  15. package/blocks/_foundation/server/route.ts +30 -0
  16. package/blocks/agents/README.md +133 -0
  17. package/blocks/agents/block.json +223 -0
  18. package/blocks/agents/components/agent-builder.tsx +199 -0
  19. package/blocks/agents/components/agent-knowledge-panel.tsx +144 -0
  20. package/blocks/agents/components/agent-runs.tsx +175 -0
  21. package/blocks/agents/components/agent-skills-panel.tsx +126 -0
  22. package/blocks/agents/components/agent-test-console.tsx +175 -0
  23. package/blocks/agents/lib/agent-types.ts +114 -0
  24. package/blocks/agents/recipes/create-agent-and-attach-skill.ts +50 -0
  25. package/blocks/agents/recipes/run-and-follow-agent-run.ts +46 -0
  26. package/blocks/agents/recipes/test-agent-before-activating.ts +36 -0
  27. package/blocks/analytics/README.md +73 -0
  28. package/blocks/analytics/block.json +178 -0
  29. package/blocks/analytics/components/funnel-chart.tsx +79 -0
  30. package/blocks/analytics/components/kpi-tiles.tsx +74 -0
  31. package/blocks/analytics/components/leaderboard.tsx +86 -0
  32. package/blocks/analytics/components/report-builder.tsx +200 -0
  33. package/blocks/analytics/hooks/use-report.ts +26 -0
  34. package/blocks/analytics/lib/analytics-types.ts +108 -0
  35. package/blocks/analytics/lib/use-debounced.ts +16 -0
  36. package/blocks/analytics/recipes/01-weekly-outbound-report.ts +32 -0
  37. package/blocks/analytics/recipes/02-revenue-snapshot.ts +22 -0
  38. package/blocks/analytics/recipes/03-saved-report.ts +30 -0
  39. package/blocks/appointments/README.md +80 -0
  40. package/blocks/appointments/block.json +218 -0
  41. package/blocks/appointments/components/availability-editor.tsx +192 -0
  42. package/blocks/appointments/components/booking-page.tsx +154 -0
  43. package/blocks/appointments/components/event-type-editor.tsx +214 -0
  44. package/blocks/appointments/components/meeting-detail.tsx +147 -0
  45. package/blocks/appointments/components/meeting-list.tsx +148 -0
  46. package/blocks/appointments/hooks/use-available-slots.ts +29 -0
  47. package/blocks/appointments/hooks/use-schedules.ts +18 -0
  48. package/blocks/appointments/lib/appointments-types.ts +159 -0
  49. package/blocks/appointments/lib/idempotency.ts +30 -0
  50. package/blocks/appointments/recipes/01-create-event-type-and-hours.ts +27 -0
  51. package/blocks/appointments/recipes/02-find-slots-and-book.ts +34 -0
  52. package/blocks/appointments/recipes/03-bookings-digest.ts +22 -0
  53. package/blocks/appointments/recipes/04-calendar-invite.ts +21 -0
  54. package/blocks/block.schema.json +130 -0
  55. package/blocks/block.types.ts +109 -0
  56. package/blocks/campaigns/README.md +118 -0
  57. package/blocks/campaigns/block.json +361 -0
  58. package/blocks/campaigns/components/campaign-assets.tsx +180 -0
  59. package/blocks/campaigns/components/campaign-audience-step.tsx +91 -0
  60. package/blocks/campaigns/components/campaign-launch-step.tsx +147 -0
  61. package/blocks/campaigns/components/campaign-list.tsx +120 -0
  62. package/blocks/campaigns/components/campaign-metrics.tsx +93 -0
  63. package/blocks/campaigns/components/campaign-select.tsx +52 -0
  64. package/blocks/campaigns/components/campaign-sequence-step.tsx +158 -0
  65. package/blocks/campaigns/components/campaign-wizard.tsx +238 -0
  66. package/blocks/campaigns/components/form-field.tsx +29 -0
  67. package/blocks/campaigns/components/icp-editor.tsx +230 -0
  68. package/blocks/campaigns/components/persona-editor.tsx +210 -0
  69. package/blocks/campaigns/hooks/use-company-profile.ts +34 -0
  70. package/blocks/campaigns/lib/campaigns-utils.ts +155 -0
  71. package/blocks/campaigns/recipes/attach-audience-and-launch.ts +33 -0
  72. package/blocks/campaigns/recipes/campaign-report.ts +22 -0
  73. package/blocks/campaigns/recipes/generate-ideas-and-create-campaign.ts +51 -0
  74. package/blocks/campaigns/recipes/set-up-icp-and-personas.ts +37 -0
  75. package/blocks/coach/README.md +93 -0
  76. package/blocks/coach/block.json +125 -0
  77. package/blocks/coach/components/call-scorecard.tsx +126 -0
  78. package/blocks/coach/components/coaching-feed.tsx +140 -0
  79. package/blocks/coach/lib/coach-types.ts +116 -0
  80. package/blocks/coach/recipes/read-a-scorecard.ts +27 -0
  81. package/blocks/coach/recipes/weekly-coaching-digest.ts +53 -0
  82. package/blocks/copilot/README.md +99 -0
  83. package/blocks/copilot/block.json +151 -0
  84. package/blocks/copilot/components/copilot-memory.tsx +87 -0
  85. package/blocks/copilot/components/copilot-panel.tsx +189 -0
  86. package/blocks/copilot/components/copilot-team-chat.tsx +111 -0
  87. package/blocks/copilot/lib/copilot-types.ts +111 -0
  88. package/blocks/copilot/recipes/ask-the-copilot.ts +35 -0
  89. package/blocks/copilot/recipes/post-in-a-work-channel.ts +33 -0
  90. package/blocks/copilot/recipes/remember-and-recall.ts +19 -0
  91. package/blocks/crm/README.md +122 -0
  92. package/blocks/crm/block.json +378 -0
  93. package/blocks/crm/components/activity-timeline.tsx +99 -0
  94. package/blocks/crm/components/company-detail.tsx +118 -0
  95. package/blocks/crm/components/company-table.tsx +173 -0
  96. package/blocks/crm/components/contact-detail.tsx +135 -0
  97. package/blocks/crm/components/contact-table.tsx +217 -0
  98. package/blocks/crm/components/dedupe-review.tsx +164 -0
  99. package/blocks/crm/components/import-wizard.tsx +193 -0
  100. package/blocks/crm/components/notes-panel.tsx +112 -0
  101. package/blocks/crm/components/record-form.tsx +191 -0
  102. package/blocks/crm/components/task-list.tsx +107 -0
  103. package/blocks/crm/hooks/use-custom-fields.ts +18 -0
  104. package/blocks/crm/hooks/use-debounced.ts +13 -0
  105. package/blocks/crm/hooks/use-page-query.ts +52 -0
  106. package/blocks/crm/lib/crm-types.ts +136 -0
  107. package/blocks/crm/recipes/custom-fields-and-values.ts +28 -0
  108. package/blocks/crm/recipes/dedupe-and-merge.ts +30 -0
  109. package/blocks/crm/recipes/notes-tasks-and-activity.ts +23 -0
  110. package/blocks/crm/recipes/upsert-contact-with-company.ts +33 -0
  111. package/blocks/deals/README.md +78 -0
  112. package/blocks/deals/block.json +198 -0
  113. package/blocks/deals/components/deal-detail.tsx +134 -0
  114. package/blocks/deals/components/forecast-view.tsx +112 -0
  115. package/blocks/deals/components/pipeline-board.tsx +142 -0
  116. package/blocks/deals/components/stage-editor.tsx +96 -0
  117. package/blocks/deals/hooks/use-pipeline-deals.ts +67 -0
  118. package/blocks/deals/hooks/use-pipelines.ts +19 -0
  119. package/blocks/deals/lib/deals-types.ts +128 -0
  120. package/blocks/deals/recipes/01-create-deal-and-advance.ts +32 -0
  121. package/blocks/deals/recipes/02-pipeline-report.ts +35 -0
  122. package/blocks/deals/recipes/03-stale-deals-sweep.ts +20 -0
  123. package/blocks/dialer/README.md +114 -0
  124. package/blocks/dialer/block.json +260 -0
  125. package/blocks/dialer/components/call-log.tsx +78 -0
  126. package/blocks/dialer/components/call-queue.tsx +188 -0
  127. package/blocks/dialer/components/dialer-workspace.tsx +47 -0
  128. package/blocks/dialer/components/disposition-panel.tsx +75 -0
  129. package/blocks/dialer/components/live-calls-table.tsx +107 -0
  130. package/blocks/dialer/components/session-start-form.tsx +111 -0
  131. package/blocks/dialer/components/softphone.tsx +122 -0
  132. package/blocks/dialer/components/transcript-viewer.tsx +82 -0
  133. package/blocks/dialer/hooks/use-dialer-numbers.ts +19 -0
  134. package/blocks/dialer/hooks/use-dialer-session.ts +68 -0
  135. package/blocks/dialer/hooks/use-dispositions.ts +29 -0
  136. package/blocks/dialer/lib/dialer-types.ts +158 -0
  137. package/blocks/dialer/lib/softphone-transport.ts +67 -0
  138. package/blocks/dialer/lib/twilio-transport.ts +74 -0
  139. package/blocks/dialer/recipes/01-create-session-and-dial.ts +39 -0
  140. package/blocks/dialer/recipes/02-disposition-calls.ts +26 -0
  141. package/blocks/dialer/recipes/03-review-a-call.ts +23 -0
  142. package/blocks/enrichment/README.md +105 -0
  143. package/blocks/enrichment/block.json +204 -0
  144. package/blocks/enrichment/components/bulk-enrich-panel.tsx +205 -0
  145. package/blocks/enrichment/components/email-verify-badge.tsx +82 -0
  146. package/blocks/enrichment/components/enrich-button.tsx +136 -0
  147. package/blocks/enrichment/components/waterfall-config.tsx +127 -0
  148. package/blocks/enrichment/hooks/use-providers.ts +18 -0
  149. package/blocks/enrichment/lib/enrichment-types.ts +104 -0
  150. package/blocks/enrichment/recipes/bulk-enrich-and-poll.ts +41 -0
  151. package/blocks/enrichment/recipes/lookup-and-verify.ts +25 -0
  152. package/blocks/enrichment/recipes/waterfall-pipeline.ts +26 -0
  153. package/blocks/forms/README.md +112 -0
  154. package/blocks/forms/block.json +200 -0
  155. package/blocks/forms/components/form-builder.tsx +150 -0
  156. package/blocks/forms/components/form-embed.tsx +103 -0
  157. package/blocks/forms/components/form-mapping-editor.tsx +125 -0
  158. package/blocks/forms/components/site-audit-panel.tsx +73 -0
  159. package/blocks/forms/components/submissions-table.tsx +158 -0
  160. package/blocks/forms/lib/form-types.ts +127 -0
  161. package/blocks/forms/recipes/install-snippet-and-form.ts +21 -0
  162. package/blocks/forms/recipes/retry-failed-deliveries.ts +26 -0
  163. package/blocks/forms/recipes/route-form-to-list.ts +44 -0
  164. package/blocks/inbox/README.md +72 -0
  165. package/blocks/inbox/block.json +194 -0
  166. package/blocks/inbox/components/inbox-list.tsx +156 -0
  167. package/blocks/inbox/components/inbox-screen.tsx +49 -0
  168. package/blocks/inbox/components/reply-composer.tsx +183 -0
  169. package/blocks/inbox/components/tag-and-assign.tsx +189 -0
  170. package/blocks/inbox/components/thread-badge.tsx +17 -0
  171. package/blocks/inbox/components/thread-view.tsx +108 -0
  172. package/blocks/inbox/hooks/use-inbox-thread.ts +24 -0
  173. package/blocks/inbox/hooks/use-inbox-threads.ts +40 -0
  174. package/blocks/inbox/lib/idempotency.ts +30 -0
  175. package/blocks/inbox/lib/inbox-types.ts +100 -0
  176. package/blocks/inbox/recipes/01-triage-and-reply.ts +43 -0
  177. package/blocks/inbox/recipes/02-tag-and-assign.ts +31 -0
  178. package/blocks/inbox/recipes/03-hot-contacts-digest.ts +16 -0
  179. package/blocks/integrations/README.md +75 -0
  180. package/blocks/integrations/block.json +172 -0
  181. package/blocks/integrations/components/integration-list.tsx +165 -0
  182. package/blocks/integrations/components/sync-status.tsx +223 -0
  183. package/blocks/integrations/components/webhook-manager.tsx +300 -0
  184. package/blocks/integrations/lib/integrations-utils.ts +62 -0
  185. package/blocks/integrations/recipes/crm-sync-health.ts +19 -0
  186. package/blocks/integrations/recipes/push-contacts-to-crm.ts +20 -0
  187. package/blocks/integrations/recipes/register-webhook.ts +18 -0
  188. package/blocks/integrations/recipes/verify-webhook-route.ts +33 -0
  189. package/blocks/intent/README.md +57 -0
  190. package/blocks/intent/block.json +138 -0
  191. package/blocks/intent/components/account-intent-score.tsx +91 -0
  192. package/blocks/intent/components/intent-feed.tsx +215 -0
  193. package/blocks/intent/components/intent-keyword-manager.tsx +331 -0
  194. package/blocks/intent/hooks/use-account-intent.ts +46 -0
  195. package/blocks/intent/lib/intent-utils.ts +95 -0
  196. package/blocks/intent/recipes/rank-intent-accounts.ts +36 -0
  197. package/blocks/intent/recipes/track-competitor-domain.ts +23 -0
  198. package/blocks/intent/recipes/who-visited-url.ts +18 -0
  199. package/blocks/lifecycle/README.md +79 -0
  200. package/blocks/lifecycle/block.json +198 -0
  201. package/blocks/lifecycle/components/churn-list.tsx +92 -0
  202. package/blocks/lifecycle/components/customer-table.tsx +119 -0
  203. package/blocks/lifecycle/components/lead-queue.tsx +127 -0
  204. package/blocks/lifecycle/components/lifecycle-board.tsx +102 -0
  205. package/blocks/lifecycle/components/stage-move-dialog.tsx +75 -0
  206. package/blocks/lifecycle/hooks/use-debounced.ts +13 -0
  207. package/blocks/lifecycle/hooks/use-lifecycle-stages.ts +27 -0
  208. package/blocks/lifecycle/lib/lifecycle.ts +99 -0
  209. package/blocks/lifecycle/recipes/customer-brief.ts +23 -0
  210. package/blocks/lifecycle/recipes/move-company-stage.ts +17 -0
  211. package/blocks/lifecycle/recipes/read-lifecycle-board.ts +21 -0
  212. package/blocks/lifecycle/recipes/unlock-stage-contacts.ts +25 -0
  213. package/blocks/lists/README.md +96 -0
  214. package/blocks/lists/block.json +166 -0
  215. package/blocks/lists/components/add-to-list-button.tsx +111 -0
  216. package/blocks/lists/components/list-picker.tsx +94 -0
  217. package/blocks/lists/components/list-table.tsx +160 -0
  218. package/blocks/lists/components/suppression-manager.tsx +153 -0
  219. package/blocks/lists/recipes/create-list-and-add-contacts.ts +35 -0
  220. package/blocks/lists/recipes/refresh-and-check-lists.ts +21 -0
  221. package/blocks/lists/recipes/suppress-and-reinstate.ts +30 -0
  222. package/blocks/mailboxes/README.md +71 -0
  223. package/blocks/mailboxes/block.json +187 -0
  224. package/blocks/mailboxes/components/connect-mailbox.tsx +284 -0
  225. package/blocks/mailboxes/components/domain-purchase.tsx +271 -0
  226. package/blocks/mailboxes/components/mailbox-list.tsx +185 -0
  227. package/blocks/mailboxes/components/warmup-health.tsx +232 -0
  228. package/blocks/mailboxes/lib/mailboxes-utils.ts +69 -0
  229. package/blocks/mailboxes/recipes/buy-domain-and-mailboxes.ts +64 -0
  230. package/blocks/mailboxes/recipes/connect-imap-mailbox.ts +38 -0
  231. package/blocks/mailboxes/recipes/is-it-safe-to-send.ts +17 -0
  232. package/blocks/mailboxes/recipes/warmup-report.ts +31 -0
  233. package/blocks/newsletter/README.md +122 -0
  234. package/blocks/newsletter/block.json +224 -0
  235. package/blocks/newsletter/components/issue-form.tsx +124 -0
  236. package/blocks/newsletter/components/issue-scheduler.tsx +152 -0
  237. package/blocks/newsletter/components/newsletter-editor.tsx +131 -0
  238. package/blocks/newsletter/components/newsletter-stats.tsx +93 -0
  239. package/blocks/newsletter/components/subscriber-table.tsx +173 -0
  240. package/blocks/newsletter/lib/newsletter-types.ts +97 -0
  241. package/blocks/newsletter/recipes/create-newsletter-and-draft-issue.ts +27 -0
  242. package/blocks/newsletter/recipes/import-audience-and-send.ts +43 -0
  243. package/blocks/newsletter/recipes/issue-performance-report.ts +26 -0
  244. package/blocks/nurture/README.md +110 -0
  245. package/blocks/nurture/block.json +191 -0
  246. package/blocks/nurture/components/nurture-builder.tsx +114 -0
  247. package/blocks/nurture/components/nurture-enroll.tsx +107 -0
  248. package/blocks/nurture/components/nurture-form.tsx +120 -0
  249. package/blocks/nurture/components/nurture-stats.tsx +81 -0
  250. package/blocks/nurture/lib/nurture-types.ts +109 -0
  251. package/blocks/nurture/recipes/create-a-nurture.ts +34 -0
  252. package/blocks/nurture/recipes/enroll-contacts-and-launch.ts +24 -0
  253. package/blocks/nurture/recipes/nurture-health-check.ts +28 -0
  254. package/blocks/objects/README.md +120 -0
  255. package/blocks/objects/block.json +243 -0
  256. package/blocks/objects/components/attribute-field-input.tsx +82 -0
  257. package/blocks/objects/components/attribute-form-dialog.tsx +159 -0
  258. package/blocks/objects/components/object-not-found.tsx +34 -0
  259. package/blocks/objects/components/object-record-detail.tsx +143 -0
  260. package/blocks/objects/components/object-schema-editor.tsx +197 -0
  261. package/blocks/objects/components/object-table.tsx +130 -0
  262. package/blocks/objects/components/record-form-dialog.tsx +112 -0
  263. package/blocks/objects/components/record-roles-panel.tsx +106 -0
  264. package/blocks/objects/hooks/use-object-schema.ts +36 -0
  265. package/blocks/objects/lib/object-types.ts +214 -0
  266. package/blocks/objects/recipes/define-object-and-add-records.ts +24 -0
  267. package/blocks/objects/recipes/update-audit-and-archive-records.ts +39 -0
  268. package/blocks/objects/recipes/upsert-records-from-your-system.ts +30 -0
  269. package/blocks/pages/README.md +104 -0
  270. package/blocks/pages/block.json +223 -0
  271. package/blocks/pages/components/brand-kit-editor.tsx +152 -0
  272. package/blocks/pages/components/content-library.tsx +163 -0
  273. package/blocks/pages/components/page-editor.tsx +253 -0
  274. package/blocks/pages/components/page-list.tsx +159 -0
  275. package/blocks/pages/components/seo-report.tsx +159 -0
  276. package/blocks/pages/lib/studio.ts +77 -0
  277. package/blocks/pages/recipes/audit-site-seo.ts +28 -0
  278. package/blocks/pages/recipes/create-and-publish-page.ts +26 -0
  279. package/blocks/pages/recipes/edit-page-section.ts +25 -0
  280. package/blocks/pages/recipes/refresh-brand-kit.ts +22 -0
  281. package/blocks/quotes/README.md +79 -0
  282. package/blocks/quotes/block.json +183 -0
  283. package/blocks/quotes/components/product-picker.tsx +80 -0
  284. package/blocks/quotes/components/quote-builder.tsx +195 -0
  285. package/blocks/quotes/components/quote-list.tsx +79 -0
  286. package/blocks/quotes/components/quote-viewer.tsx +135 -0
  287. package/blocks/quotes/components/signature-status.tsx +77 -0
  288. package/blocks/quotes/hooks/use-debounced.ts +13 -0
  289. package/blocks/quotes/lib/quotes.ts +142 -0
  290. package/blocks/quotes/recipes/create-and-send-quote.ts +44 -0
  291. package/blocks/quotes/recipes/revise-sent-quote.ts +18 -0
  292. package/blocks/quotes/recipes/track-quote-signature.ts +22 -0
  293. package/blocks/radar/README.md +106 -0
  294. package/blocks/radar/block.json +189 -0
  295. package/blocks/radar/components/competitor-battle-card.tsx +53 -0
  296. package/blocks/radar/components/competitor-tracker.tsx +158 -0
  297. package/blocks/radar/components/radar-overview.tsx +67 -0
  298. package/blocks/radar/components/radar-report.tsx +86 -0
  299. package/blocks/radar/hooks/use-competitors.ts +23 -0
  300. package/blocks/radar/lib/radar-types.ts +124 -0
  301. package/blocks/radar/recipes/battle-card.ts +28 -0
  302. package/blocks/radar/recipes/deep-dive-report.ts +32 -0
  303. package/blocks/radar/recipes/marketing-snapshot.ts +18 -0
  304. package/blocks/radar/recipes/track-and-scan.ts +39 -0
  305. package/blocks/search/README.md +129 -0
  306. package/blocks/search/block.json +185 -0
  307. package/blocks/search/components/filter-builder.tsx +149 -0
  308. package/blocks/search/components/prospect-results.tsx +175 -0
  309. package/blocks/search/components/save-to-list-dialog.tsx +135 -0
  310. package/blocks/search/components/saved-searches.tsx +95 -0
  311. package/blocks/search/hooks/use-filter-options.ts +41 -0
  312. package/blocks/search/lib/search-types.ts +149 -0
  313. package/blocks/search/recipes/explore-filter-values.ts +27 -0
  314. package/blocks/search/recipes/saved-searches.ts +34 -0
  315. package/blocks/search/recipes/search-and-save-to-list.ts +37 -0
  316. package/blocks/sequencer/README.md +87 -0
  317. package/blocks/sequencer/block.json +214 -0
  318. package/blocks/sequencer/components/enroll-dialog.tsx +93 -0
  319. package/blocks/sequencer/components/sequence-builder.tsx +306 -0
  320. package/blocks/sequencer/components/sequence-list.tsx +200 -0
  321. package/blocks/sequencer/components/sequence-stats.tsx +256 -0
  322. package/blocks/sequencer/components/step-editor.tsx +213 -0
  323. package/blocks/sequencer/lib/sequencer-utils.ts +168 -0
  324. package/blocks/sequencer/recipes/create-multichannel-sequence.ts +51 -0
  325. package/blocks/sequencer/recipes/launch-and-enroll.ts +44 -0
  326. package/blocks/sequencer/recipes/pause-when-unsafe.ts +30 -0
  327. package/blocks/sequencer/recipes/sequence-report.ts +22 -0
  328. package/blocks/social-ads/README.md +128 -0
  329. package/blocks/social-ads/block.json +256 -0
  330. package/blocks/social-ads/components/ad-campaign-list.tsx +136 -0
  331. package/blocks/social-ads/components/audience-sync.tsx +150 -0
  332. package/blocks/social-ads/components/creative-gallery.tsx +121 -0
  333. package/blocks/social-ads/components/post-composer.tsx +122 -0
  334. package/blocks/social-ads/components/social-post-list.tsx +116 -0
  335. package/blocks/social-ads/hooks/use-social-accounts.ts +16 -0
  336. package/blocks/social-ads/lib/social-ads-types.ts +167 -0
  337. package/blocks/social-ads/recipes/creative-to-gallery.ts +41 -0
  338. package/blocks/social-ads/recipes/schedule-post.ts +51 -0
  339. package/blocks/social-ads/recipes/sync-audience-and-launch.ts +41 -0
  340. package/blocks/visitors/README.md +56 -0
  341. package/blocks/visitors/block.json +139 -0
  342. package/blocks/visitors/components/snippet-install.tsx +169 -0
  343. package/blocks/visitors/components/traffic-chart.tsx +156 -0
  344. package/blocks/visitors/components/visitor-company-card.tsx +92 -0
  345. package/blocks/visitors/components/visitor-feed.tsx +157 -0
  346. package/blocks/visitors/lib/visitors-utils.ts +78 -0
  347. package/blocks/visitors/recipes/check-snippet-installed.ts +24 -0
  348. package/blocks/visitors/recipes/recent-company-visits.ts +27 -0
  349. package/blocks/visitors/recipes/traffic-summary.ts +24 -0
  350. package/blocks/webchat/README.md +87 -0
  351. package/blocks/webchat/block.json +134 -0
  352. package/blocks/webchat/components/chat-widget-config.tsx +160 -0
  353. package/blocks/webchat/components/conversation-list.tsx +74 -0
  354. package/blocks/webchat/lib/webchat-types.ts +83 -0
  355. package/blocks/webchat/recipes/create-bot-and-style-widget.ts +24 -0
  356. package/blocks/webchat/recipes/list-chat-visitors.ts +24 -0
  357. package/blocks/workbench/README.md +135 -0
  358. package/blocks/workbench/block.json +259 -0
  359. package/blocks/workbench/components/column-recipe-editor.tsx +183 -0
  360. package/blocks/workbench/components/run-progress.tsx +132 -0
  361. package/blocks/workbench/components/workbench-add-rows.tsx +100 -0
  362. package/blocks/workbench/components/workbench-grid.tsx +159 -0
  363. package/blocks/workbench/components/workbench-row-actions.tsx +102 -0
  364. package/blocks/workbench/components/workbench-table-list.tsx +105 -0
  365. package/blocks/workbench/hooks/use-workbench-table.ts +30 -0
  366. package/blocks/workbench/lib/waterfall-presets.ts +119 -0
  367. package/blocks/workbench/lib/workbench-types.ts +191 -0
  368. package/blocks/workbench/recipes/build-enriched-table.ts +65 -0
  369. package/blocks/workbench/recipes/import-from-search.ts +42 -0
  370. package/blocks/workbench/recipes/scrape-into-table.ts +36 -0
  371. package/blocks/workbench/recipes/waterfall-column.ts +55 -0
  372. package/blocks/workflows/README.md +100 -0
  373. package/blocks/workflows/block.json +188 -0
  374. package/blocks/workflows/components/run-history.tsx +136 -0
  375. package/blocks/workflows/components/trigger-config.tsx +134 -0
  376. package/blocks/workflows/components/workflow-editor.tsx +142 -0
  377. package/blocks/workflows/components/workflow-list.tsx +153 -0
  378. package/blocks/workflows/hooks/use-workflow.ts +51 -0
  379. package/blocks/workflows/lib/graph.ts +187 -0
  380. package/blocks/workflows/recipes/create-workflow.ts +35 -0
  381. package/blocks/workflows/recipes/find-failed-runs.ts +15 -0
  382. package/blocks/workflows/recipes/run-workflow-and-wait.ts +32 -0
  383. package/blocks/workflows/recipes/set-trigger.ts +22 -0
  384. package/dist/cli.js +5330 -29
  385. package/dist/index.browser.js +7740 -0
  386. package/dist/index.browser.js.map +1 -0
  387. package/dist/index.browser.mjs +7717 -0
  388. package/dist/index.browser.mjs.map +1 -0
  389. package/dist/index.d.mts +1440 -21
  390. package/dist/index.d.ts +1440 -21
  391. package/dist/index.js +42 -3
  392. package/dist/index.js.map +1 -1
  393. package/dist/index.mjs +42 -3
  394. package/dist/index.mjs.map +1 -1
  395. package/dist/react.browser.js +7598 -0
  396. package/dist/react.browser.js.map +1 -0
  397. package/dist/react.browser.mjs +7568 -0
  398. package/dist/react.browser.mjs.map +1 -0
  399. package/dist/react.d.mts +1340 -18
  400. package/dist/react.d.ts +1340 -18
  401. package/dist/react.js +41 -2
  402. package/dist/react.js.map +1 -1
  403. package/dist/react.mjs +41 -2
  404. package/dist/react.mjs.map +1 -1
  405. package/dist/types/agentSetup.d.ts +6 -6
  406. package/dist/types/blocks/add.d.ts +53 -0
  407. package/dist/types/blocks/create.d.ts +46 -0
  408. package/dist/types/blocks/doctor.d.ts +26 -0
  409. package/dist/types/blocks/registry.d.ts +134 -0
  410. package/dist/types/cli.d.ts +16 -0
  411. package/dist/types/core.d.ts +1 -1
  412. package/dist/types/crypto-browser.d.ts +2 -0
  413. package/dist/types/crypto-node.d.ts +6 -0
  414. package/dist/types/react.d.ts +1 -1
  415. package/dist/types/version.d.ts +2 -2
  416. package/dist/types/webhooks.d.ts +2 -2
  417. package/dist/ui/index.d.mts +54 -0
  418. package/dist/ui/index.d.ts +54 -0
  419. package/dist/ui/index.js +105 -0
  420. package/dist/ui/index.js.map +1 -0
  421. package/dist/ui/index.mjs +44 -0
  422. package/dist/ui/index.mjs.map +1 -0
  423. package/dist/ui/lib/compose-refs.d.mts +19 -0
  424. package/dist/ui/lib/compose-refs.d.ts +19 -0
  425. package/dist/ui/lib/compose-refs.js +76 -0
  426. package/dist/ui/lib/compose-refs.js.map +1 -0
  427. package/dist/ui/lib/compose-refs.mjs +41 -0
  428. package/dist/ui/lib/compose-refs.mjs.map +1 -0
  429. package/dist/ui/lib/use-mobile.d.mts +4 -0
  430. package/dist/ui/lib/use-mobile.d.ts +4 -0
  431. package/dist/ui/lib/use-mobile.js +57 -0
  432. package/dist/ui/lib/use-mobile.js.map +1 -0
  433. package/dist/ui/lib/use-mobile.mjs +22 -0
  434. package/dist/ui/lib/use-mobile.mjs.map +1 -0
  435. package/dist/ui/lib/utils.d.mts +10 -0
  436. package/dist/ui/lib/utils.d.ts +10 -0
  437. package/dist/ui/lib/utils.js +33 -0
  438. package/dist/ui/lib/utils.js.map +1 -0
  439. package/dist/ui/lib/utils.mjs +9 -0
  440. package/dist/ui/lib/utils.mjs.map +1 -0
  441. package/dist/ui/primitives/alert-dialog.d.mts +22 -0
  442. package/dist/ui/primitives/alert-dialog.d.ts +22 -0
  443. package/dist/ui/primitives/alert-dialog.js +163 -0
  444. package/dist/ui/primitives/alert-dialog.js.map +1 -0
  445. package/dist/ui/primitives/alert-dialog.mjs +119 -0
  446. package/dist/ui/primitives/alert-dialog.mjs.map +1 -0
  447. package/dist/ui/primitives/avatar.d.mts +8 -0
  448. package/dist/ui/primitives/avatar.d.ts +8 -0
  449. package/dist/ui/primitives/avatar.js +91 -0
  450. package/dist/ui/primitives/avatar.js.map +1 -0
  451. package/dist/ui/primitives/avatar.mjs +55 -0
  452. package/dist/ui/primitives/avatar.mjs.map +1 -0
  453. package/dist/ui/primitives/breadcrumb.d.mts +13 -0
  454. package/dist/ui/primitives/breadcrumb.d.ts +13 -0
  455. package/dist/ui/primitives/breadcrumb.js +127 -0
  456. package/dist/ui/primitives/breadcrumb.js.map +1 -0
  457. package/dist/ui/primitives/breadcrumb.mjs +97 -0
  458. package/dist/ui/primitives/breadcrumb.mjs.map +1 -0
  459. package/dist/ui/primitives/button.d.mts +15 -0
  460. package/dist/ui/primitives/button.d.ts +15 -0
  461. package/dist/ui/primitives/button.js +91 -0
  462. package/dist/ui/primitives/button.js.map +1 -0
  463. package/dist/ui/primitives/button.mjs +56 -0
  464. package/dist/ui/primitives/button.mjs.map +1 -0
  465. package/dist/ui/primitives/card.d.mts +10 -0
  466. package/dist/ui/primitives/card.d.ts +10 -0
  467. package/dist/ui/primitives/card.js +101 -0
  468. package/dist/ui/primitives/card.js.map +1 -0
  469. package/dist/ui/primitives/card.mjs +62 -0
  470. package/dist/ui/primitives/card.mjs.map +1 -0
  471. package/dist/ui/primitives/carousel.d.mts +45 -0
  472. package/dist/ui/primitives/carousel.d.ts +45 -0
  473. package/dist/ui/primitives/carousel.js +300 -0
  474. package/dist/ui/primitives/carousel.js.map +1 -0
  475. package/dist/ui/primitives/carousel.mjs +261 -0
  476. package/dist/ui/primitives/carousel.mjs.map +1 -0
  477. package/dist/ui/primitives/chart.d.mts +68 -0
  478. package/dist/ui/primitives/chart.d.ts +68 -0
  479. package/dist/ui/primitives/chart.js +280 -0
  480. package/dist/ui/primitives/chart.js.map +1 -0
  481. package/dist/ui/primitives/chart.mjs +241 -0
  482. package/dist/ui/primitives/chart.mjs.map +1 -0
  483. package/dist/ui/primitives/collapsible.d.mts +8 -0
  484. package/dist/ui/primitives/collapsible.d.ts +8 -0
  485. package/dist/ui/primitives/collapsible.js +72 -0
  486. package/dist/ui/primitives/collapsible.js.map +1 -0
  487. package/dist/ui/primitives/collapsible.mjs +36 -0
  488. package/dist/ui/primitives/collapsible.mjs.map +1 -0
  489. package/dist/ui/primitives/context-menu.d.mts +29 -0
  490. package/dist/ui/primitives/context-menu.d.ts +29 -0
  491. package/dist/ui/primitives/context-menu.js +203 -0
  492. package/dist/ui/primitives/context-menu.js.map +1 -0
  493. package/dist/ui/primitives/context-menu.mjs +155 -0
  494. package/dist/ui/primitives/context-menu.mjs.map +1 -0
  495. package/dist/ui/primitives/dialog.d.mts +26 -0
  496. package/dist/ui/primitives/dialog.d.ts +26 -0
  497. package/dist/ui/primitives/dialog.js +192 -0
  498. package/dist/ui/primitives/dialog.js.map +1 -0
  499. package/dist/ui/primitives/dialog.mjs +148 -0
  500. package/dist/ui/primitives/dialog.mjs.map +1 -0
  501. package/dist/ui/primitives/drawer.d.mts +26 -0
  502. package/dist/ui/primitives/drawer.d.ts +26 -0
  503. package/dist/ui/primitives/drawer.js +146 -0
  504. package/dist/ui/primitives/drawer.js.map +1 -0
  505. package/dist/ui/primitives/drawer.mjs +103 -0
  506. package/dist/ui/primitives/drawer.mjs.map +1 -0
  507. package/dist/ui/primitives/input.d.mts +5 -0
  508. package/dist/ui/primitives/input.d.ts +5 -0
  509. package/dist/ui/primitives/input.js +46 -0
  510. package/dist/ui/primitives/input.js.map +1 -0
  511. package/dist/ui/primitives/input.mjs +22 -0
  512. package/dist/ui/primitives/input.mjs.map +1 -0
  513. package/dist/ui/primitives/item.d.mts +27 -0
  514. package/dist/ui/primitives/item.d.ts +27 -0
  515. package/dist/ui/primitives/item.js +221 -0
  516. package/dist/ui/primitives/item.js.map +1 -0
  517. package/dist/ui/primitives/item.mjs +188 -0
  518. package/dist/ui/primitives/item.mjs.map +1 -0
  519. package/dist/ui/primitives/kbd.d.mts +15 -0
  520. package/dist/ui/primitives/kbd.d.ts +15 -0
  521. package/dist/ui/primitives/kbd.js +45 -0
  522. package/dist/ui/primitives/kbd.js.map +1 -0
  523. package/dist/ui/primitives/kbd.mjs +21 -0
  524. package/dist/ui/primitives/kbd.mjs.map +1 -0
  525. package/dist/ui/primitives/label.d.mts +6 -0
  526. package/dist/ui/primitives/label.d.ts +6 -0
  527. package/dist/ui/primitives/label.js +55 -0
  528. package/dist/ui/primitives/label.js.map +1 -0
  529. package/dist/ui/primitives/label.mjs +21 -0
  530. package/dist/ui/primitives/label.mjs.map +1 -0
  531. package/dist/ui/primitives/resizable.d.mts +10 -0
  532. package/dist/ui/primitives/resizable.d.ts +10 -0
  533. package/dist/ui/primitives/resizable.js +68 -0
  534. package/dist/ui/primitives/resizable.js.map +1 -0
  535. package/dist/ui/primitives/resizable.mjs +42 -0
  536. package/dist/ui/primitives/resizable.mjs.map +1 -0
  537. package/dist/ui/primitives/save-status.d.mts +31 -0
  538. package/dist/ui/primitives/save-status.d.ts +31 -0
  539. package/dist/ui/primitives/save-status.js +150 -0
  540. package/dist/ui/primitives/save-status.js.map +1 -0
  541. package/dist/ui/primitives/save-status.mjs +126 -0
  542. package/dist/ui/primitives/save-status.mjs.map +1 -0
  543. package/dist/ui/primitives/separator.d.mts +6 -0
  544. package/dist/ui/primitives/separator.d.ts +6 -0
  545. package/dist/ui/primitives/separator.js +62 -0
  546. package/dist/ui/primitives/separator.js.map +1 -0
  547. package/dist/ui/primitives/separator.mjs +28 -0
  548. package/dist/ui/primitives/separator.mjs.map +1 -0
  549. package/dist/ui/primitives/sheet.d.mts +16 -0
  550. package/dist/ui/primitives/sheet.d.ts +16 -0
  551. package/dist/ui/primitives/sheet.js +170 -0
  552. package/dist/ui/primitives/sheet.js.map +1 -0
  553. package/dist/ui/primitives/sheet.mjs +129 -0
  554. package/dist/ui/primitives/sheet.mjs.map +1 -0
  555. package/dist/ui/primitives/sidebar.d.mts +74 -0
  556. package/dist/ui/primitives/sidebar.d.ts +74 -0
  557. package/dist/ui/primitives/sidebar.js +697 -0
  558. package/dist/ui/primitives/sidebar.js.map +1 -0
  559. package/dist/ui/primitives/sidebar.mjs +651 -0
  560. package/dist/ui/primitives/sidebar.mjs.map +1 -0
  561. package/dist/ui/primitives/skeleton.d.mts +5 -0
  562. package/dist/ui/primitives/skeleton.d.ts +5 -0
  563. package/dist/ui/primitives/skeleton.js +40 -0
  564. package/dist/ui/primitives/skeleton.js.map +1 -0
  565. package/dist/ui/primitives/skeleton.mjs +16 -0
  566. package/dist/ui/primitives/skeleton.mjs.map +1 -0
  567. package/dist/ui/primitives/slider.d.mts +20 -0
  568. package/dist/ui/primitives/slider.d.ts +20 -0
  569. package/dist/ui/primitives/slider.js +112 -0
  570. package/dist/ui/primitives/slider.js.map +1 -0
  571. package/dist/ui/primitives/slider.mjs +78 -0
  572. package/dist/ui/primitives/slider.mjs.map +1 -0
  573. package/dist/ui/primitives/sortable.d.mts +50 -0
  574. package/dist/ui/primitives/sortable.d.ts +50 -0
  575. package/dist/ui/primitives/sortable.js +456 -0
  576. package/dist/ui/primitives/sortable.js.map +1 -0
  577. package/dist/ui/primitives/sortable.mjs +435 -0
  578. package/dist/ui/primitives/sortable.mjs.map +1 -0
  579. package/dist/ui/primitives/switch.d.mts +6 -0
  580. package/dist/ui/primitives/switch.d.ts +6 -0
  581. package/dist/ui/primitives/switch.js +67 -0
  582. package/dist/ui/primitives/switch.js.map +1 -0
  583. package/dist/ui/primitives/switch.mjs +33 -0
  584. package/dist/ui/primitives/switch.mjs.map +1 -0
  585. package/dist/ui/primitives/table.d.mts +12 -0
  586. package/dist/ui/primitives/table.d.ts +12 -0
  587. package/dist/ui/primitives/table.js +130 -0
  588. package/dist/ui/primitives/table.js.map +1 -0
  589. package/dist/ui/primitives/table.mjs +89 -0
  590. package/dist/ui/primitives/table.mjs.map +1 -0
  591. package/dist/ui/primitives/tabs.d.mts +9 -0
  592. package/dist/ui/primitives/tabs.d.ts +9 -0
  593. package/dist/ui/primitives/tabs.js +86 -0
  594. package/dist/ui/primitives/tabs.js.map +1 -0
  595. package/dist/ui/primitives/tabs.mjs +49 -0
  596. package/dist/ui/primitives/tabs.mjs.map +1 -0
  597. package/dist/ui/primitives/textarea.d.mts +5 -0
  598. package/dist/ui/primitives/textarea.d.ts +5 -0
  599. package/dist/ui/primitives/textarea.js +43 -0
  600. package/dist/ui/primitives/textarea.js.map +1 -0
  601. package/dist/ui/primitives/textarea.mjs +19 -0
  602. package/dist/ui/primitives/textarea.mjs.map +1 -0
  603. package/dist/ui/primitives/tooltip.d.mts +9 -0
  604. package/dist/ui/primitives/tooltip.d.ts +9 -0
  605. package/dist/ui/primitives/tooltip.js +94 -0
  606. package/dist/ui/primitives/tooltip.js.map +1 -0
  607. package/dist/ui/primitives/tooltip.mjs +57 -0
  608. package/dist/ui/primitives/tooltip.mjs.map +1 -0
  609. package/docs/agents.md +72 -29
  610. package/docs/api/README.md +6 -3
  611. package/docs/api/appObjects.d.ts +1 -1
  612. package/docs/api/appObjects.md +1 -1
  613. package/docs/api/by-path.md +29 -0
  614. package/docs/api/objects.d.ts +72 -5
  615. package/docs/api/objects.md +84 -7
  616. package/docs/api/processLists.d.ts +247 -0
  617. package/docs/api/processLists.md +409 -0
  618. package/docs/api/reports.d.ts +476 -0
  619. package/docs/api/reports.md +539 -0
  620. package/docs/api/scheduleBuy.d.ts +12 -8
  621. package/docs/api/scheduleBuy.md +13 -10
  622. package/docs/api/seo.d.ts +406 -3
  623. package/docs/api/seo.md +505 -1
  624. package/docs/api/workspaceBackup.d.ts +324 -0
  625. package/docs/api/workspaceBackup.md +427 -0
  626. package/package.json +174 -5
  627. package/stacks/6sense.json +46 -0
  628. package/stacks/README.md +20 -0
  629. package/stacks/apollo.json +128 -0
  630. package/stacks/clay.json +59 -0
  631. package/stacks/gong.json +72 -0
  632. package/stacks/hubspot.json +162 -0
  633. package/stacks/intercom.json +53 -0
  634. package/stacks/mailchimp.json +71 -0
  635. package/stacks/outreach.json +86 -0
  636. package/stacks/salesforce.json +94 -0
  637. package/stacks/stack.schema.json +32 -0
  638. package/stacks/starter.json +22 -0
  639. package/styles/styles.css +2 -0
  640. package/styles/theme.css +181 -0
  641. package/styles/tokens.css +284 -0
  642. package/templates/next-app/README.md.tmpl +35 -0
  643. package/templates/next-app/_pages/redirect-page.tsx.tmpl +5 -0
  644. package/templates/next-app/_pages/route-page.tsx.tmpl +9 -0
  645. package/templates/next-app/app/globals.css.tmpl +8 -0
  646. package/templates/next-app/app/layout.tsx.tmpl +19 -0
  647. package/templates/next-app/components/app-shell.tsx.tmpl +34 -0
  648. package/templates/next-app/dot-env.local.example.tmpl +6 -0
  649. package/templates/next-app/dot-gitignore.tmpl +7 -0
  650. package/templates/next-app/lib/nav.ts.tmpl +2 -0
  651. package/templates/next-app/next.config.mjs.tmpl +4 -0
  652. package/templates/next-app/package.json.tmpl +25 -0
  653. package/templates/next-app/postcss.config.mjs.tmpl +4 -0
  654. package/templates/next-app/tsconfig.json.tmpl +21 -0
@@ -0,0 +1,57 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as TooltipPrimitive from "@radix-ui/react-tooltip";
4
+ import { cn } from "../lib/utils.mjs";
5
+ function TooltipProvider({
6
+ delayDuration = 0,
7
+ ...props
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ TooltipPrimitive.Provider,
11
+ {
12
+ "data-slot": "tooltip-provider",
13
+ delayDuration,
14
+ ...props
15
+ }
16
+ );
17
+ }
18
+ function Tooltip({
19
+ ...props
20
+ }) {
21
+ return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, { "data-slot": "tooltip", ...props }) });
22
+ }
23
+ function TooltipTrigger({
24
+ ...props
25
+ }) {
26
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, { "data-slot": "tooltip-trigger", ...props });
27
+ }
28
+ function TooltipContent({
29
+ className,
30
+ sideOffset = 0,
31
+ children,
32
+ ...props
33
+ }) {
34
+ return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(
35
+ TooltipPrimitive.Content,
36
+ {
37
+ "data-slot": "tooltip-content",
38
+ sideOffset,
39
+ className: cn(
40
+ "bg-primary text-primary-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",
41
+ className
42
+ ),
43
+ ...props,
44
+ children: [
45
+ children,
46
+ /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })
47
+ ]
48
+ }
49
+ ) });
50
+ }
51
+ export {
52
+ Tooltip,
53
+ TooltipContent,
54
+ TooltipProvider,
55
+ TooltipTrigger
56
+ };
57
+ //# sourceMappingURL=tooltip.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/primitives/tooltip.tsx"],"sourcesContent":["/*\n * @graph8/sdk/ui — GENERATED FROM frontend/components/ui/tooltip.tsx. DO NOT EDIT.\n *\n * Edit the app source, then run: npm run generate:ui --prefix sdk/js\n * Hand edits are overwritten and will fail sdk/js/tests/ui/drift.test.ts.\n */\n\"use client\"\n\nimport * as React from \"react\"\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\"\n\nimport { cn } from \"../lib/utils\"\n\nfunction TooltipProvider({\n delayDuration = 0,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Provider>) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delayDuration={delayDuration}\n {...props}\n />\n )\n}\n\nfunction Tooltip({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />\n </TooltipProvider>\n )\n}\n\nfunction TooltipTrigger({\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Trigger>) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />\n}\n\nfunction TooltipContent({\n className,\n sideOffset = 0,\n children,\n ...props\n}: React.ComponentProps<typeof TooltipPrimitive.Content>) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Content\n data-slot=\"tooltip-content\"\n sideOffset={sideOffset}\n className={cn(\n \"bg-primary text-primary-foreground shadow-md animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance\",\n className\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]\" />\n </TooltipPrimitive.Content>\n </TooltipPrimitive.Portal>\n )\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider }\n"],"mappings":";AAkBI,cAgCE,YAhCF;AATJ,YAAY,sBAAsB;AAElC,SAAS,UAAU;AAEnB,SAAS,gBAAgB;AAAA,EACvB,gBAAgB;AAAA,EAChB,GAAG;AACL,GAA2D;AACzD,SACE;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEA,SAAS,QAAQ;AAAA,EACf,GAAG;AACL,GAAuD;AACrD,SACE,oBAAC,mBACC,8BAAC,iBAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAG,OAAO,GACxD;AAEJ;AAEA,SAAS,eAAe;AAAA,EACtB,GAAG;AACL,GAA0D;AACxD,SAAO,oBAAC,iBAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAG,OAAO;AAC1E;AAEA,SAAS,eAAe;AAAA,EACtB;AAAA,EACA,aAAa;AAAA,EACb;AAAA,EACA,GAAG;AACL,GAA0D;AACxD,SACE,oBAAC,iBAAiB,QAAjB,EACC;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACA,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA;AAAA,QACD,oBAAC,iBAAiB,OAAjB,EAAuB,WAAU,gGAA+F;AAAA;AAAA;AAAA,EACnI,GACF;AAEJ;","names":[]}
package/docs/agents.md CHANGED
@@ -9,8 +9,8 @@ grows every week and your training data is older than this file.
9
9
 
10
10
  graph8 is a B2B go-to-market platform: CRM (contacts, companies, deals, custom objects), a 700M-person
11
11
  data index with enrichment, intent signals, sequences and campaigns across email/SMS/LinkedIn/voice, a unified
12
- inbox, meetings, workflows and more. This SDK reaches all of it: **3286 Developer API
13
- operations** in 142 areas.
12
+ inbox, meetings, workflows and more. This SDK reaches all of it: **3315 Developer API
13
+ operations** in 145 areas.
14
14
 
15
15
  ## 1. The short version
16
16
 
@@ -47,6 +47,7 @@ node_modules/@graph8/sdk/
47
47
  docs/api/<ns>.d.ts that area's exact TypeScript types, self-contained (small: read it)
48
48
  dist/types/<module>.d.ts one hand-written client's types, e.g. dist/types/contacts.d.ts
49
49
  dist/index.d.ts the bundled types the compiler uses (large: search it, do not read it whole)
50
+ blocks/ stacks/ editable UI blocks to copy into an app (section 13)
50
51
  ```
51
52
 
52
53
  Search the docs directly. Some good searches:
@@ -92,7 +93,7 @@ g8.init({ apiKey: process.env.G8_API_KEY! });
92
93
  | | Hand-written clients | `g8.api` (generated) |
93
94
  |---|---|---|
94
95
  | Example | `g8.contacts.upsert({ list_id, work_email })` | `g8.api.assertUpsert.assertContact({ body: { list_id, work_email } })` |
95
- | Coverage | 289 methods, reaching 258 operations | all 3286 operations |
96
+ | Coverage | 289 methods, reaching 258 operations | all 3315 operations |
96
97
  | Returns | the unwrapped value (usually `data`) | the full envelope; read `result.data` |
97
98
  | Arguments | positional / friendly names | `{ path?, query?, headers?, body? }`, exactly as the contract names them |
98
99
  | Reference | [sdk-clients.md](sdk-clients.md) | [api/README.md](api/README.md) |
@@ -141,7 +142,7 @@ Hand-written modules:
141
142
  | [`g8.webhooks`](sdk-clients.md#g8-webhooks) | 1 | API key |
142
143
  | [`g8.workflows`](sdk-clients.md#g8-workflows) | 21 | API key |
143
144
 
144
- `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `dataPipelines` (5), `deals` (48), `deliverability` (17), `desk` (71), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (41), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (14), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59).
145
+ `g8.api` namespaces (operation counts): `accounts` (16), `adCampaigns` (19), `adCreatives` (40), `agency` (24), `agent` (8), `agents` (65), `aiInbox` (79), `analytics` (51), `apiKeys` (6), `appDeployments` (7), `appDomains` (5), `appLogs` (2), `appObjects` (10), `appPages` (16), `appPlatformTokens` (3), `appointments` (92), `apps` (22), `assertUpsert` (6), `audienceSyncs` (8), `brandKit` (30), `bugReports` (7), `calendarInvites` (3), `campaignWorkflows` (5), `campaigns` (29), `channels` (5), `cliCampaigns` (6), `cliPipelines` (12), `clickHouse` (2), `companies` (50), `companyIntelligence` (14), `contacts` (70), `content` (41), `contentGridSkills` (6), `copilot` (39), `crmSyncs` (6), `customerSuccess` (19), `dataPipelines` (5), `deals` (48), `deliverability` (17), `desk` (71), `dialer` (46), `dialerAnalytics` (6), `documents` (35), `duplicates` (7), `eSign` (1), `eSignature` (7), `enrichment` (115), `events` (1), `fields` (8), `forms` (35), `gtmCampaigns` (22), `gtmContext` (51), `gtmDeliverability` (1), `gtmKnowledgeBase` (2), `gtmLaunchHelpers` (2), `gtmLibrary` (20), `health` (1), `imageLibrary` (14), `imports` (3), `inbox` (22), `install` (6), `installedApps` (4), `integrationStatus` (6), `integrations` (83), `intent` (16), `knowledge` (21), `knowledgeBase` (2), `landingPages` (59), `leads` (4), `library` (9), `linkedIn` (5), `linkedInOutreach` (20), `lists` (36), `logs` (1), `mailboxes` (38), `marketingIntelligence` (10), `marketplace` (142), `mcp` (1), `me` (1), `meetings` (17), `newsletter` (61), `notes` (19), `notifications` (2), `objects` (42), `openSearch` (4), `ops` (5), `orgGovernance` (17), `orgVideos` (6), `organizationSettings` (22), `phoneNumbers` (16), `processLists` (6), `profile` (14), `programmaticPages` (15), `providerDomains` (34), `providerUsage` (5), `public` (1), `publicCopilot` (1), `publicSignals` (1), `publicVisitors` (2), `quotes` (56), `radar` (42), `radarReports` (8), `recordRoles` (4), `reports` (7), `repos` (4), `research` (13), `revenue` (14), `revenueAnalytics` (6), `revenueLifecycle` (5), `revenueRecords` (15), `roles` (21), `salesCoach` (37), `sandbox` (9), `scans` (2), `scheduleBuy` (9), `scraping` (10), `sdrAnalytics` (5), `search` (19), `seo` (22), `sequenceLifecycle` (8), `sequences` (71), `settings` (18), `signals` (56), `signatures` (24), `skills` (12), `snippet` (3), `socialPublishing` (22), `studioDocuments` (9), `support` (1), `suppressions` (6), `surveys` (21), `tasks` (25), `teamMembers` (21), `teams` (35), `usage` (9), `visitors` (26), `voice` (187), `webAnalytics` (38), `webChat` (46), `webhooks` (8), `websiteEditor` (12), `work` (59), `workbench` (107), `workflows` (59), `workspaceBackup` (7).
145
146
 
146
147
  ## 5. How to find the right call
147
148
 
@@ -196,9 +197,9 @@ Every operation carries a tier:
196
197
 
197
198
  | Tier | What it means | Count |
198
199
  |---|---|---|
199
- | `read` | reads data; safe to call and to retry | 1524 |
200
- | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 825 |
201
- | `destructive` | deletes or archives data; confirm with a human before calling | 303 |
200
+ | `read` | reads data; safe to call and to retry | 1540 |
201
+ | `write` | creates or changes records; the SDK sends an Idempotency-Key and retries transient failures | 836 |
202
+ | `destructive` | deletes or archives data; confirm with a human before calling | 305 |
202
203
  | `billable` | spends credits; the SDK never blindly retries it; confirm cost before bulk use | 383 |
203
204
  | `external` | reaches real people (sends email/SMS, places a call, launches a send); the SDK never blindly retries it; confirm with a human first | 251 |
204
205
 
@@ -342,34 +343,37 @@ if (contacts.length > 0) {
342
343
 
343
344
  ### Prospect in the graph8 index, then save the people you want
344
345
 
345
- Building a list of new prospects. `enrich.search` queries graph8's contact index (not your CRM) and can spend credits depending on the plan, so keep pages small and confirm the cost with a human before bulk runs. Results are plain records: write the ones you keep into a list with `contacts.upsert`.
346
+ Building a list of new prospects. `search.contacts` queries graph8's contact index (not your CRM). It needs an active subscription and does not spend credits, but contact details come back LOCKED: a field whose value exists reads `"***"` and is named in `locked_fields`. Never import a search row directly. Save the matches into a list with `search.saveContacts`, which reveals them as real CRM contacts, then read the list. Enrich or enroll from the list afterwards.
346
347
 
347
348
  ```ts
348
349
  import { g8 } from "@graph8/sdk";
349
350
 
350
351
  g8.init({ apiKey: process.env.G8_API_KEY! });
351
352
 
352
- const results = await g8.enrich.search(
353
- [
354
- { field: "seniority_level", operator: "any_of", value: ["VP", "Director"] },
355
- { field: "company_industry", operator: "contains", value: ["SaaS"] },
356
- ],
357
- 1, // page
358
- 25, // page size
359
- );
360
- console.log(`${results.total} matches; showing ${results.contacts.length}`);
361
-
362
- const list = await g8.lists.create("Q4 SaaS VPs", "contacts");
363
- for (const person of results.contacts) {
364
- const email = typeof person.work_email === "string" ? person.work_email : undefined;
365
- if (!email) continue;
366
- await g8.contacts.upsert({
367
- list_id: list.id,
368
- work_email: email,
369
- first_name: typeof person.first_name === "string" ? person.first_name : undefined,
370
- last_name: typeof person.last_name === "string" ? person.last_name : undefined,
371
- });
353
+ const filters = [
354
+ { field: "seniority_level", operator: "any_of" as const, value: ["VP", "Director"] },
355
+ { field: "company_industry", operator: "contains" as const, value: ["SaaS"] },
356
+ ];
357
+
358
+ // 1. Preview: free, masked. Use it to check the filters and the size before saving.
359
+ const preview = await g8.search.contacts({ filters, limit: 25 });
360
+ console.log(`${preview.pagination?.total ?? preview.data.length} matches`);
361
+ const withEmail = preview.data.filter((p) => p.locked_fields?.includes("work_email")).length;
362
+ console.log(`${withEmail} of the first ${preview.data.length} have a (locked) work email`);
363
+
364
+ // 2. Save: creates a list and reveals the contacts into your CRM. Confirm the size with a human first.
365
+ const saved = await g8.search.saveContacts({ filters, list_title: "Q4 SaaS VPs", max_results: 100 });
366
+
367
+ // 3. The save runs in the background and fills the list in batches: a first non-empty read can be partial.
368
+ // Read until the total stops changing (or reaches the cap), then use the list.
369
+ let page = await g8.lists.contacts(saved.list_id, 1, 50);
370
+ for (let attempt = 0, previous = -1; attempt < 20 && page.total < 100; attempt++) {
371
+ if (page.total > 0 && page.total === previous) break;
372
+ previous = page.total;
373
+ await new Promise((resolve) => setTimeout(resolve, 3000));
374
+ page = await g8.lists.contacts(saved.list_id, 1, 50);
372
375
  }
376
+ for (const contact of page.data) console.log(contact.id, contact.work_email);
373
377
  ```
374
378
 
375
379
  <a id="recipe-enrich"></a>
@@ -726,7 +730,10 @@ setTimeout(stop, 60_000);
726
730
  `full_name`, `personal_emails`, `company`, ...) in bulk, use `g8.contacts.listDetailed(filters)` or
727
731
  `g8.contacts.getMany(ids)` (100 per request), not a `get()` per contact.
728
732
  - **The CRM and the data index are different things.** `g8.contacts.*` reads YOUR workspace;
729
- `g8.enrich.search` searches graph8's 700M-person index, which can spend credits depending on the plan.
733
+ `g8.search.contacts` (and the older `g8.enrich.search`) searches graph8's 700M-person index. It needs an
734
+ active subscription and does not spend credits, but contact details come back **locked**: a value that
735
+ exists reads `"***"` and is named in `locked_fields`. Never import a search row. Save matches with
736
+ `g8.search.saveContacts` (that reveals them as CRM contacts), then read the list; enrich after that.
730
737
  - **Ids have types.** Contact and list ids are numbers; deal, task, note, sequence and campaign ids are
731
738
  strings. The types enforce this, so read them.
732
739
  - **Parameter names differ per endpoint** (`limit` vs `take` vs `page_size`). Take them from the types or
@@ -747,3 +754,39 @@ setTimeout(stop, 60_000);
747
754
  - **REST**: `https://be.graph8.com/api/v1/...` with `Authorization: Bearer <api key>`. Every route is in
748
755
  [api/by-path.md](api/by-path.md).
749
756
  - **Web docs**: https://docs.graph8.com (index for agents: https://docs.graph8.com/llms.txt).
757
+
758
+ ## 13. Blocks and stacks
759
+
760
+ For a whole screen or app (a contacts table, a sequence builder, an inbox) do not hand-write every
761
+ component: this package ships **blocks**, editable source you copy into the customer's Next.js app.
762
+
763
+ ```
764
+ node_modules/@graph8/sdk/
765
+ blocks/block.schema.json the block.json format (blocks/block.types.ts is the same as TypeScript)
766
+ blocks/_foundation/ block "foundation": hooks, browser client, API proxy route, shared components
767
+ blocks/<id>/block.json manifest: summary, operations, per-component tiers, scopes, prerequisites, defaults
768
+ blocks/<id>/README.md the flow: what happens in what order, which ids pass where
769
+ blocks/<id>/components/ React components, copied into the app and then yours to edit
770
+ blocks/<id>/hooks/ data hooks
771
+ blocks/<id>/recipes/ server-side SDK recipes
772
+ stacks/<id>.json a named, ordered set of blocks plus the navigation between their screens
773
+ ```
774
+
775
+ - **Blocks are copied, not imported.** After copying, the code belongs to the app: change it freely.
776
+ Read a block's `README.md` and `block.json` before copying it.
777
+ - **Every block depends on `foundation`.** Its browser client calls the app's own `/api/g8/...` route,
778
+ which adds the server-side API key. Never put an API key in client code. The route refuses to run
779
+ until its `authorize` and `allowedPrefixes` are set (it is as powerful as the key), so ask the person how
780
+ their app knows who is signed in.
781
+ - **`block.json` is derived from the API contract and checked in CI**: `operations` are real operation ids,
782
+ each component's `tiers` are the tiers of its operations, `scopes` is the key scopes they need. Use them
783
+ to decide which screens need a confirmation (`billable`, `external`, `destructive`) and which key to
784
+ create. Where `defaults` says `askHuman: true`, ask the person before using the default.
785
+ - **Search the catalog** with `grep -h '"summary"' node_modules/@graph8/sdk/blocks/*/block.json`.
786
+ - **Start a whole app with one command**: `npx @graph8/sdk create <stack> <dir>` scaffolds a Next.js App Router +
787
+ TypeScript + Tailwind v4 app, installs the stack's blocks (the same code as `add`), puts every screen of
788
+ the stack in a sidebar with one route each, and installs dependencies (`--no-install`, `--dry-run`,
789
+ `--package-manager`, `--force`). Then set `G8_API_KEY` in `.env.local` and run
790
+ `npx @graph8/sdk doctor --stack <id>`. `stacks/<id>.json` has `status`: only `available` stacks (every block
791
+ shipped) can be created; a `planned` stack is refused with the list of missing blocks. `starter` is an
792
+ empty app (foundation only) you grow with `add`. Run `npx @graph8/sdk list` for the stacks and their status.
@@ -2,7 +2,7 @@
2
2
 
3
3
  # `g8.api`: every Developer API operation
4
4
 
5
- `g8.api` is generated from the published OpenAPI contract, so it covers all 3286 operations across 142 namespaces (1524 read, 825 write, 303 destructive, 383 billable, 251 external).
5
+ `g8.api` is generated from the published OpenAPI contract, so it covers all 3315 operations across 145 namespaces (1540 read, 836 write, 305 destructive, 383 billable, 251 external).
6
6
 
7
7
  - Found a REST path in a curl example or the web docs? Look it up in [by-path.md](by-path.md).
8
8
  - Prefer a hand-written method where one exists: [../sdk-clients.md](../sdk-clients.md).
@@ -105,13 +105,14 @@
105
105
  | `g8.api.newsletter` | Newsletter | 61 | 15 | [newsletter.md](newsletter.md) | [newsletter.d.ts](newsletter.d.ts) |
106
106
  | `g8.api.notes` | Notes | 19 | 8 | [notes.md](notes.md) | [notes.d.ts](notes.d.ts) |
107
107
  | `g8.api.notifications` | Notifications | 2 | none | [notifications.md](notifications.md) | [notifications.d.ts](notifications.d.ts) |
108
- | `g8.api.objects` | Objects | 41 | 18 | [objects.md](objects.md) | [objects.d.ts](objects.d.ts) |
108
+ | `g8.api.objects` | Objects | 42 | 18 | [objects.md](objects.md) | [objects.d.ts](objects.d.ts) |
109
109
  | `g8.api.openSearch` | OpenSearch | 4 | none | [openSearch.md](openSearch.md) | [openSearch.d.ts](openSearch.d.ts) |
110
110
  | `g8.api.ops` | Ops (internal, cross-tenant, read-only) | 5 | none | [ops.md](ops.md) | [ops.d.ts](ops.d.ts) |
111
111
  | `g8.api.orgGovernance` | Org Governance | 17 | none | [orgGovernance.md](orgGovernance.md) | [orgGovernance.d.ts](orgGovernance.d.ts) |
112
112
  | `g8.api.orgVideos` | Org Videos | 6 | none | [orgVideos.md](orgVideos.md) | [orgVideos.d.ts](orgVideos.d.ts) |
113
113
  | `g8.api.organizationSettings` | Organization Settings | 22 | none | [organizationSettings.md](organizationSettings.md) | [organizationSettings.d.ts](organizationSettings.d.ts) |
114
114
  | `g8.api.phoneNumbers` | Phone Numbers | 16 | none | [phoneNumbers.md](phoneNumbers.md) | [phoneNumbers.d.ts](phoneNumbers.d.ts) |
115
+ | `g8.api.processLists` | Process Lists | 6 | none | [processLists.md](processLists.md) | [processLists.d.ts](processLists.d.ts) |
115
116
  | `g8.api.profile` | Profile | 14 | none | [profile.md](profile.md) | [profile.d.ts](profile.d.ts) |
116
117
  | `g8.api.programmaticPages` | Programmatic Pages | 15 | none | [programmaticPages.md](programmaticPages.md) | [programmaticPages.d.ts](programmaticPages.d.ts) |
117
118
  | `g8.api.providerDomains` | Provider Domains | 34 | none | [providerDomains.md](providerDomains.md) | [providerDomains.d.ts](providerDomains.d.ts) |
@@ -124,6 +125,7 @@
124
125
  | `g8.api.radar` | Radar | 42 | none | [radar.md](radar.md) | [radar.d.ts](radar.d.ts) |
125
126
  | `g8.api.radarReports` | Radar Reports | 8 | none | [radarReports.md](radarReports.md) | [radarReports.d.ts](radarReports.d.ts) |
126
127
  | `g8.api.recordRoles` | Record Roles | 4 | none | [recordRoles.md](recordRoles.md) | [recordRoles.d.ts](recordRoles.d.ts) |
128
+ | `g8.api.reports` | Reports | 7 | none | [reports.md](reports.md) | [reports.d.ts](reports.d.ts) |
127
129
  | `g8.api.repos` | Repos | 4 | none | [repos.md](repos.md) | [repos.d.ts](repos.d.ts) |
128
130
  | `g8.api.research` | Research | 13 | none | [research.md](research.md) | [research.d.ts](research.d.ts) |
129
131
  | `g8.api.revenue` | Revenue | 14 | none | [revenue.md](revenue.md) | [revenue.d.ts](revenue.d.ts) |
@@ -138,7 +140,7 @@
138
140
  | `g8.api.scraping` | Scraping | 10 | none | [scraping.md](scraping.md) | [scraping.d.ts](scraping.d.ts) |
139
141
  | `g8.api.sdrAnalytics` | SDR Analytics | 5 | none | [sdrAnalytics.md](sdrAnalytics.md) | [sdrAnalytics.d.ts](sdrAnalytics.d.ts) |
140
142
  | `g8.api.search` | Search | 19 | 4 | [search.md](search.md) | [search.d.ts](search.d.ts) |
141
- | `g8.api.seo` | SEO | 14 | none | [seo.md](seo.md) | [seo.d.ts](seo.d.ts) |
143
+ | `g8.api.seo` | SEO | 22 | none | [seo.md](seo.md) | [seo.d.ts](seo.d.ts) |
142
144
  | `g8.api.sequenceLifecycle` | Sequence Lifecycle | 8 | 6 | [sequenceLifecycle.md](sequenceLifecycle.md) | [sequenceLifecycle.d.ts](sequenceLifecycle.d.ts) |
143
145
  | `g8.api.sequences` | Sequences | 71 | 6 | [sequences.md](sequences.md) | [sequences.d.ts](sequences.d.ts) |
144
146
  | `g8.api.settings` | Settings | 18 | none | [settings.md](settings.md) | [settings.d.ts](settings.d.ts) |
@@ -164,3 +166,4 @@
164
166
  | `g8.api.work` | Work | 59 | none | [work.md](work.md) | [work.d.ts](work.d.ts) |
165
167
  | `g8.api.workbench` | Workbench | 107 | none | [workbench.md](workbench.md) | [workbench.d.ts](workbench.d.ts) |
166
168
  | `g8.api.workflows` | Workflows | 59 | 21 | [workflows.md](workflows.md) | [workflows.d.ts](workflows.d.ts) |
169
+ | `g8.api.workspaceBackup` | Workspace backup | 7 | none | [workspaceBackup.md](workspaceBackup.md) | [workspaceBackup.d.ts](workspaceBackup.d.ts) |
@@ -371,7 +371,7 @@ export interface RecordHistoryResponse {
371
371
  }
372
372
 
373
373
  export interface RecordMutationEntry {
374
- action: "created" | "updated" | "archived" | "restored";
374
+ action: "created" | "updated" | "archived" | "restored" | "recalculated";
375
375
  actor_id: string | null;
376
376
  actor_type: "user" | "api" | "app" | "integration" | "system";
377
377
  app_id?: string | null;
@@ -556,7 +556,7 @@ One generation of one attribute's value. Values are TEMPORAL rather than mutable
556
556
 
557
557
  | Field | Type | Required | Description |
558
558
  |---|---|---|---|
559
- | `action` | `"created" \| "updated" \| "archived" \| "restored"` | yes | |
559
+ | `action` | `"created" \| "updated" \| "archived" \| "restored" \| "recalculated"` | yes | |
560
560
  | `actor_id` | `string \| null` | yes | |
561
561
  | `actor_type` | `"user" \| "api" \| "app" \| "integration" \| "system"` | yes | |
562
562
  | `changes` | `Record<string, RecordMutationValueChange>` | yes | |
@@ -2025,6 +2025,7 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
2025
2025
  | PATCH | `/api/v1/objects/{object_slug}` | [`g8.api.objects.updateObject`](objects.md#op-updateobject) or `g8.objects.update()` | write |
2026
2026
  | GET | `/api/v1/objects/{object_slug}/attributes` | [`g8.api.objects.listObjectAttributes`](objects.md#op-listobjectattributes) or `g8.objects.listAttributes()` | read |
2027
2027
  | POST | `/api/v1/objects/{object_slug}/attributes` | [`g8.api.objects.createAttribute`](objects.md#op-createattribute) or `g8.objects.createAttribute()` | write |
2028
+ | POST | `/api/v1/objects/{object_slug}/attributes/formula/validate` | [`g8.api.objects.validateFormula`](objects.md#op-validateformula) | read |
2028
2029
  | DELETE | `/api/v1/objects/{object_slug}/attributes/{attr_slug}` | [`g8.api.objects.archiveAttribute`](objects.md#op-archiveattribute) or `g8.objects.archiveAttribute()` | destructive |
2029
2030
  | PATCH | `/api/v1/objects/{object_slug}/attributes/{attr_slug}` | [`g8.api.objects.updateAttribute`](objects.md#op-updateattribute) or `g8.objects.updateAttribute()` | write |
2030
2031
  | POST | `/api/v1/objects/{object_slug}/exports` | [`g8.api.objects.exportObjectRecords`](objects.md#op-exportobjectrecords) | write |
@@ -2175,6 +2176,12 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
2175
2176
  | POST | `/api/v1/placement/tests` | [`g8.api.mailboxes.createPlacementTest`](mailboxes.md#op-createplacementtest) | billable |
2176
2177
  | POST | `/api/v1/placement/tests/estimate` | [`g8.api.mailboxes.estimatePlacementTestCost`](mailboxes.md#op-estimateplacementtestcost) | read |
2177
2178
  | GET | `/api/v1/placement/tests/{test_id}` | [`g8.api.mailboxes.getPlacementTest`](mailboxes.md#op-getplacementtest) | read |
2179
+ | GET | `/api/v1/process-lists` | [`g8.api.processLists.listProcessListsApi`](processLists.md#op-listprocesslistsapi) | read |
2180
+ | POST | `/api/v1/process-lists` | [`g8.api.processLists.createProcessListApi`](processLists.md#op-createprocesslistapi) | write |
2181
+ | DELETE | `/api/v1/process-lists/{slug}` | [`g8.api.processLists.archiveProcessListApi`](processLists.md#op-archiveprocesslistapi) | destructive |
2182
+ | GET | `/api/v1/process-lists/{slug}` | [`g8.api.processLists.getProcessListApi`](processLists.md#op-getprocesslistapi) | read |
2183
+ | PATCH | `/api/v1/process-lists/{slug}` | [`g8.api.processLists.updateProcessListApi`](processLists.md#op-updateprocesslistapi) | write |
2184
+ | POST | `/api/v1/process-lists/{slug}/entries` | [`g8.api.processLists.createProcessListEntryApi`](processLists.md#op-createprocesslistentryapi) | write |
2178
2185
  | POST | `/api/v1/profile/avatar` | [`g8.api.profile.uploadProfileAvatar`](profile.md#op-uploadprofileavatar) | write |
2179
2186
  | GET | `/api/v1/profile/deal-automations` | [`g8.api.profile.getDealAutomations`](profile.md#op-getdealautomations) | read |
2180
2187
  | PUT | `/api/v1/profile/deal-automations` | [`g8.api.profile.updateDealAutomations`](profile.md#op-updatedealautomations) | write |
@@ -2338,6 +2345,13 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
2338
2345
  | DELETE | `/api/v1/records/{entity_type}/{entity_id}/role-assignments/{role_slot}` | [`g8.api.recordRoles.clearRecordRole`](recordRoles.md#op-clearrecordrole) | destructive |
2339
2346
  | GET | `/api/v1/records/{entity_type}/{entity_id}/role-history` | [`g8.api.recordRoles.getRecordRoleHistory`](recordRoles.md#op-getrecordrolehistory) | read |
2340
2347
  | GET | `/api/v1/records/{entity_type}/{entity_id}/role-slots` | [`g8.api.recordRoles.getRecordRoleSlots`](recordRoles.md#op-getrecordroleslots) | read |
2348
+ | GET | `/api/v1/reports` | [`g8.api.reports.listObjectReportsApi`](reports.md#op-listobjectreportsapi) | read |
2349
+ | POST | `/api/v1/reports` | [`g8.api.reports.createObjectReportApi`](reports.md#op-createobjectreportapi) | write |
2350
+ | POST | `/api/v1/reports/preview` | [`g8.api.reports.previewObjectReportApi`](reports.md#op-previewobjectreportapi) | write |
2351
+ | DELETE | `/api/v1/reports/{report_id}` | [`g8.api.reports.archiveObjectReportApi`](reports.md#op-archiveobjectreportapi) | destructive |
2352
+ | GET | `/api/v1/reports/{report_id}` | [`g8.api.reports.getObjectReportApi`](reports.md#op-getobjectreportapi) | read |
2353
+ | PATCH | `/api/v1/reports/{report_id}` | [`g8.api.reports.updateObjectReportApi`](reports.md#op-updateobjectreportapi) | write |
2354
+ | POST | `/api/v1/reports/{report_id}/execute` | [`g8.api.reports.executeObjectReportApi`](reports.md#op-executeobjectreportapi) | write |
2341
2355
  | GET | `/api/v1/repos` | [`g8.api.repos.listRepos`](repos.md#op-listrepos) | read |
2342
2356
  | POST | `/api/v1/repos` | [`g8.api.repos.connectRepo`](repos.md#op-connectrepo) | write |
2343
2357
  | DELETE | `/api/v1/repos/{repo_id}` | [`g8.api.repos.deleteRepo`](repos.md#op-deleterepo) | destructive |
@@ -2499,11 +2513,19 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
2499
2513
  | GET | `/api/v1/seo/domains/tracked/{domain}/pages` | [`g8.api.seo.listSeoDomainPages`](seo.md#op-listseodomainpages) | read |
2500
2514
  | GET | `/api/v1/seo/domains/{domain}/backlinks` | [`g8.api.seo.getSeoDomainBacklinks`](seo.md#op-getseodomainbacklinks) | billable |
2501
2515
  | GET | `/api/v1/seo/domains/{domain}/overview` | [`g8.api.seo.getSeoDomainOverview`](seo.md#op-getseodomainoverview) | billable |
2516
+ | GET | `/api/v1/seo/fixes` | [`g8.api.seo.listSeoFixes`](seo.md#op-listseofixes) | read |
2517
+ | GET | `/api/v1/seo/fixes/agent-handoff` | [`g8.api.seo.getSeoAgentHandoff`](seo.md#op-getseoagenthandoff) | read |
2518
+ | POST | `/api/v1/seo/fixes/{fix_id}/claim` | [`g8.api.seo.claimSeoFix`](seo.md#op-claimseofix) | write |
2519
+ | POST | `/api/v1/seo/fixes/{fix_id}/complete` | [`g8.api.seo.completeSeoFix`](seo.md#op-completeseofix) | write |
2520
+ | GET | `/api/v1/seo/fixes/{fix_id}/pack` | [`g8.api.seo.getSeoFixPack`](seo.md#op-getseofixpack) | read |
2502
2521
  | POST | `/api/v1/seo/keywords/research` | [`g8.api.seo.researchSeoKeywords`](seo.md#op-researchseokeywords) | billable |
2522
+ | GET | `/api/v1/seo/pages/360` | [`g8.api.seo.listSeoPages360`](seo.md#op-listseopages360) | read |
2523
+ | GET | `/api/v1/seo/pages/360/detail` | [`g8.api.seo.getSeoPage360`](seo.md#op-getseopage360) | read |
2503
2524
  | GET | `/api/v1/seo/rank-tracking` | [`g8.api.seo.listSeoTrackedKeywords`](seo.md#op-listseotrackedkeywords) | read |
2504
2525
  | POST | `/api/v1/seo/rank-tracking/keywords` | [`g8.api.seo.saveSeoTrackedKeywords`](seo.md#op-saveseotrackedkeywords) | write |
2505
2526
  | POST | `/api/v1/seo/rank-tracking/keywords/remove` | [`g8.api.seo.removeSeoTrackedKeywords`](seo.md#op-removeseotrackedkeywords) | write |
2506
2527
  | GET | `/api/v1/seo/rank-tracking/{keyword_id}/history` | [`g8.api.seo.getSeoRankHistory`](seo.md#op-getseorankhistory) | read |
2528
+ | GET | `/api/v1/seo/today` | [`g8.api.seo.getSeoToday`](seo.md#op-getseotoday) | read |
2507
2529
  | GET | `/api/v1/sequence-jobs/{job_id}` | [`g8.api.sequences.getSequenceJob`](sequences.md#op-getsequencejob) | read |
2508
2530
  | GET | `/api/v1/sequencer/agents/textual` | [`g8.api.sequences.listSequencerTextualAgents`](sequences.md#op-listsequencertextualagents) | read |
2509
2531
  | GET | `/api/v1/sequencer/agents/voice` | [`g8.api.sequences.listSequencerVoiceAgents`](sequences.md#op-listsequencervoiceagents) | read |
@@ -3292,3 +3314,10 @@ Every Developer API route, sorted by path, with the SDK call that reaches it. Th
3292
3314
  | GET | `/api/v1/workflows/{action_id}/runs/recent` | [`g8.api.workflows.listRecentWorkflowRuns`](workflows.md#op-listrecentworkflowruns) | read |
3293
3315
  | POST | `/api/v1/workflows/{action_id}/trigger-reset` | [`g8.api.workflows.resetTriggerCursor`](workflows.md#op-resettriggercursor) or `g8.workflows.resetTrigger()` | external |
3294
3316
  | GET | `/api/v1/workflows/{action_id}/trigger-status` | [`g8.api.workflows.getTriggerStatus`](workflows.md#op-gettriggerstatus) or `g8.workflows.getTriggerStatus()` | read |
3317
+ | GET | `/api/v1/workspace/backup` | [`g8.api.workspaceBackup.listWorkspaceBackupsApi`](workspaceBackup.md#op-listworkspacebackupsapi) | read |
3318
+ | POST | `/api/v1/workspace/backup` | [`g8.api.workspaceBackup.createWorkspaceBackupApi`](workspaceBackup.md#op-createworkspacebackupapi) | write |
3319
+ | GET | `/api/v1/workspace/backup/{backup_id}` | [`g8.api.workspaceBackup.getWorkspaceBackupApi`](workspaceBackup.md#op-getworkspacebackupapi) | read |
3320
+ | GET | `/api/v1/workspace/backup/{backup_id}/download` | [`g8.api.workspaceBackup.downloadWorkspaceBackupApi`](workspaceBackup.md#op-downloadworkspacebackupapi) | read |
3321
+ | GET | `/api/v1/workspace/restore` | [`g8.api.workspaceBackup.listWorkspaceRestoresApi`](workspaceBackup.md#op-listworkspacerestoresapi) | read |
3322
+ | POST | `/api/v1/workspace/restore` | [`g8.api.workspaceBackup.createWorkspaceRestoreApi`](workspaceBackup.md#op-createworkspacerestoreapi) | write |
3323
+ | GET | `/api/v1/workspace/restore/{restore_id}` | [`g8.api.workspaceBackup.getWorkspaceRestoreApi`](workspaceBackup.md#op-getworkspacerestoreapi) | read |
@@ -1,7 +1,7 @@
1
1
  /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
2
 
3
3
  /**
4
- * Types for `g8.api.objects` (Objects): 41 operations.
4
+ * Types for `g8.api.objects` (Objects): 42 operations.
5
5
  *
6
6
  * For reading. In code, import from the package instead:
7
7
  * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
@@ -54,6 +54,7 @@ export interface ObjectsMembers {
54
54
  updateObjectRecord: "update_object_record_objects__object_slug__records__record_id__patch";
55
55
  updateObjectView: "update_object_view_objects__object_slug__views__view_id__put";
56
56
  upsertObjectRecord: "upsert_object_record_objects__object_slug__records_upsert_post";
57
+ validateFormula: "validate_formula_objects__object_slug__attributes_formula_validate_post";
57
58
  }
58
59
 
59
60
  /** Input and output of every `g8.api.objects` operation, keyed by operationId. */
@@ -790,15 +791,37 @@ export interface ObjectsOperations {
790
791
  };
791
792
  output: ApiResponse_ObjectRecordResponse_;
792
793
  };
794
+ /**
795
+ * POST /objects/{object_slug}/attributes/formula/validate
796
+ * Validate Formula
797
+ * tier: read · scope: objects:read
798
+ */
799
+ validate_formula_objects__object_slug__attributes_formula_validate_post: {
800
+ input: {
801
+ path: {
802
+ object_slug: string;
803
+ };
804
+ headers?: {
805
+ "X-Target-Org-Id"?: string | null;
806
+ };
807
+ body: FormulaValidateRequest;
808
+ };
809
+ output: ApiResponse_FormulaValidateResponse_;
810
+ };
793
811
  }
794
812
 
795
- // 84 schemas referenced above (the same as G8Contract.<Name>).
813
+ // 89 schemas referenced above (the same as G8Contract.<Name>).
796
814
 
797
815
  export interface ApiResponse_AttributeDefinitionResponse_ {
798
816
  data: AttributeDefinitionResponse;
799
817
  pagination?: PaginationMeta | null;
800
818
  }
801
819
 
820
+ export interface ApiResponse_FormulaValidateResponse_ {
821
+ data: FormulaValidateResponse;
822
+ pagination?: PaginationMeta | null;
823
+ }
824
+
802
825
  export interface ApiResponse_NoneType_ {
803
826
  data: null;
804
827
  pagination?: PaginationMeta | null;
@@ -922,6 +945,7 @@ export interface ApiResponse_list_SavedViewResponse__ {
922
945
  /** Configuration for specific attribute types. */
923
946
  export interface AttributeConfig {
924
947
  currency_code?: string | null;
948
+ formula?: FormulaInput | null;
925
949
  max_value?: number | null;
926
950
  options?: Array<Record<string, unknown>> | null;
927
951
  referenced_object?: string | null;
@@ -975,7 +999,7 @@ export interface AttributeDefinitionResponse {
975
999
  }
976
1000
 
977
1001
  /** Valid attribute types for the Custom Objects type system. */
978
- export type AttributeType = "text" | "number" | "currency" | "date" | "timestamp" | "checkbox" | "select" | "status" | "email_address" | "phone_number" | "domain" | "location" | "personal_name" | "record_reference" | "rating" | "actor_reference";
1002
+ export type AttributeType = "text" | "number" | "currency" | "date" | "timestamp" | "checkbox" | "select" | "status" | "email_address" | "phone_number" | "domain" | "location" | "personal_name" | "record_reference" | "rating" | "actor_reference" | "formula";
979
1003
 
980
1004
  export interface AttributeUpdateRequest {
981
1005
  config?: AttributeConfig | null;
@@ -1018,6 +1042,41 @@ export interface AttributeUpdateRequest {
1018
1042
  */
1019
1043
  export type EntityType = "custom_objects" | "contacts" | "companies" | "deals" | "leads" | "lists" | "contacts_view" | "companies_view" | "list_contacts" | "list_companies" | "search_people" | "search_companies" | "abm_companies" | "enrichment_workbench" | "enrichment_workbenches";
1020
1044
 
1045
+ /**
1046
+ * Guided-builder input for a computed field (CRM-06): only the typed JSON expression. The result type,
1047
+ * currency, dependencies, input closure and rollup flag are computed and stored server side at save time --
1048
+ * never accepted from a client. A rollup is a ``rollup`` node (the whole expression, or nested).
1049
+ */
1050
+ export interface FormulaInput {
1051
+ expression: Record<string, unknown>;
1052
+ }
1053
+
1054
+ /** Dry-run check of a typed formula expression. Nothing is persisted or locked. */
1055
+ export interface FormulaValidateRequest {
1056
+ /** Slug of the computed field being EDITED (checked against its own place in the dependency graph); omit for a new one. */
1057
+ attribute_slug?: string | null;
1058
+ /** The typed JSON expression (a node tree; a rollup is a `rollup` node). */
1059
+ expression: Record<string, unknown>;
1060
+ /** Evaluate the expression against this record's current values. */
1061
+ preview_record_id?: string | null;
1062
+ }
1063
+
1064
+ export interface FormulaValidateResponse {
1065
+ currency_code?: string | null;
1066
+ depends_on?: Array<Record<string, unknown>>;
1067
+ /** Field-level problems (`reason` is a stable code). */
1068
+ errors?: Array<Record<string, unknown>>;
1069
+ /** Why the preview record could not be evaluated (a code, never a value). */
1070
+ preview_error?: string | null;
1071
+ /** With a preview record: one entry per rollup in the expression, counted over the records the caller may read. */
1072
+ preview_rollups?: Array<PreviewRollup>;
1073
+ preview_value?: unknown;
1074
+ referenced_object_slugs?: Array<string>;
1075
+ /** number, currency, text, checkbox, date or timestamp. */
1076
+ result_type?: string | null;
1077
+ valid: boolean;
1078
+ }
1079
+
1021
1080
  export interface ImportPage {
1022
1081
  limit?: number;
1023
1082
  offset?: number;
@@ -1280,6 +1339,14 @@ export interface PaginationMeta {
1280
1339
  total_is_lower_bound?: boolean | null;
1281
1340
  }
1282
1341
 
1342
+ /** How many linked records one rollup of a previewed expression counted. */
1343
+ export interface PreviewRollup {
1344
+ /** Linked records the rollup counted for the preview record (the ones its filters keep). */
1345
+ matched_count: number;
1346
+ /** Where the rollup sits in the expression: `$` is the root, `$.left`, `$.args[1]`, `$.then_branch`. */
1347
+ node_path: string;
1348
+ }
1349
+
1283
1350
  /**
1284
1351
  * Bulk-update body: exactly one scope (explicit ids or a filtered set),
1285
1352
  * plus the values to apply to every record in that scope.
@@ -1321,7 +1388,7 @@ export interface RecordBulkUpdateResponse {
1321
1388
  /** Filter parameters for listing records. */
1322
1389
  export interface RecordFilter {
1323
1390
  attribute_slug: string;
1324
- operator: "eq" | "ne" | "gt" | "gte" | "lt" | "lte" | "contains" | "starts_with" | "is_null" | "is_not_null";
1391
+ operator: "eq" | "ne" | "gt" | "gte" | "lt" | "lte" | "contains" | "starts_with" | "in" | "is_null" | "is_not_null";
1325
1392
  value?: unknown | null;
1326
1393
  }
1327
1394
 
@@ -1390,7 +1457,7 @@ export interface RecordMergeResponse {
1390
1457
  }
1391
1458
 
1392
1459
  export interface RecordMutationEntry {
1393
- action: "created" | "updated" | "archived" | "restored";
1460
+ action: "created" | "updated" | "archived" | "restored" | "recalculated";
1394
1461
  actor_id: string | null;
1395
1462
  actor_type: "user" | "api" | "app" | "integration" | "system";
1396
1463
  app_id?: string | null;