@graph8/sdk 0.308.1 → 0.358.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 (659) 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 +1462 -23
  390. package/dist/index.d.ts +1462 -23
  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 +1362 -20
  400. package/dist/react.d.ts +1362 -20
  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/enrichment.d.ts +18 -0
  615. package/docs/api/enrichment.md +25 -4
  616. package/docs/api/objects.d.ts +72 -5
  617. package/docs/api/objects.md +84 -7
  618. package/docs/api/processLists.d.ts +247 -0
  619. package/docs/api/processLists.md +409 -0
  620. package/docs/api/reports.d.ts +476 -0
  621. package/docs/api/reports.md +539 -0
  622. package/docs/api/revenueLifecycle.d.ts +3 -1
  623. package/docs/api/revenueLifecycle.md +12 -2
  624. package/docs/api/scheduleBuy.d.ts +12 -8
  625. package/docs/api/scheduleBuy.md +13 -10
  626. package/docs/api/seo.d.ts +407 -4
  627. package/docs/api/seo.md +506 -2
  628. package/docs/api/workflows.md +46 -2
  629. package/docs/api/workspaceBackup.d.ts +324 -0
  630. package/docs/api/workspaceBackup.md +427 -0
  631. package/package.json +174 -5
  632. package/stacks/6sense.json +46 -0
  633. package/stacks/README.md +20 -0
  634. package/stacks/apollo.json +128 -0
  635. package/stacks/clay.json +59 -0
  636. package/stacks/gong.json +72 -0
  637. package/stacks/hubspot.json +162 -0
  638. package/stacks/intercom.json +53 -0
  639. package/stacks/mailchimp.json +71 -0
  640. package/stacks/outreach.json +86 -0
  641. package/stacks/salesforce.json +94 -0
  642. package/stacks/stack.schema.json +32 -0
  643. package/stacks/starter.json +22 -0
  644. package/styles/styles.css +2 -0
  645. package/styles/theme.css +181 -0
  646. package/styles/tokens.css +284 -0
  647. package/templates/next-app/README.md.tmpl +35 -0
  648. package/templates/next-app/_pages/redirect-page.tsx.tmpl +5 -0
  649. package/templates/next-app/_pages/route-page.tsx.tmpl +9 -0
  650. package/templates/next-app/app/globals.css.tmpl +8 -0
  651. package/templates/next-app/app/layout.tsx.tmpl +19 -0
  652. package/templates/next-app/components/app-shell.tsx.tmpl +34 -0
  653. package/templates/next-app/dot-env.local.example.tmpl +6 -0
  654. package/templates/next-app/dot-gitignore.tmpl +7 -0
  655. package/templates/next-app/lib/nav.ts.tmpl +2 -0
  656. package/templates/next-app/next.config.mjs.tmpl +4 -0
  657. package/templates/next-app/package.json.tmpl +25 -0
  658. package/templates/next-app/postcss.config.mjs.tmpl +4 -0
  659. package/templates/next-app/tsconfig.json.tmpl +21 -0
@@ -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;
@@ -2,7 +2,7 @@
2
2
 
3
3
  # `g8.api.objects`: Objects
4
4
 
5
- 41 operations (13 read, 22 write, 6 destructive).
5
+ 42 operations (14 read, 22 write, 6 destructive).
6
6
 
7
7
  18 of these also have a hand-written method (`g8.objects`), marked **★** below. Prefer the hand-written method when one exists: it unwraps the `data` envelope and takes friendlier arguments. See [../sdk-clients.md](../sdk-clients.md).
8
8
 
@@ -63,6 +63,7 @@ Exact TypeScript types for every operation on this page, and every schema they u
63
63
  | [`updateObjectRecord`](#op-updateobjectrecord) ★ | `PATCH /api/v1/objects/{object_slug}/records/{record_id}` | write | `objects:write` | Update Object Record |
64
64
  | [`updateObjectView`](#op-updateobjectview) | `PUT /api/v1/objects/{object_slug}/views/{view_id}` | write | `objects:write` | Update Object View |
65
65
  | [`upsertObjectRecord`](#op-upsertobjectrecord) ★ | `POST /api/v1/objects/{object_slug}/records/upsert` | write | `objects:write` | Upsert Object Record |
66
+ | [`validateFormula`](#op-validateformula) | `POST /api/v1/objects/{object_slug}/attributes/formula/validate` | read | `objects:read` | Validate Formula |
66
67
 
67
68
  ---
68
69
 
@@ -78,7 +79,8 @@ Exact TypeScript types for every operation on this page, and every schema they u
78
79
  - API-key scope: `objects:manage`
79
80
  - ★ Hand-written: [`g8.objects.archiveAttribute()`](../sdk-clients.md#g8-objects-archiveattribute)
80
81
 
81
- Archive a custom field, retaining its values. Restore with PATCH is_archived=false.
82
+ Archive a custom field, retaining its values. Restore with PATCH is_archived=false. Refused (409
83
+ `formula_dependency`) while a computed field reads it, with every dependent the credential may see.
82
84
 
83
85
  **Input**
84
86
 
@@ -134,7 +136,8 @@ const result = await g8.api.objects.archiveAttribute({ path: { object_slug: "exa
134
136
 
135
137
  PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
136
138
 
137
- Archive a custom object without deleting data; restore with PATCH is_archived=false.
139
+ Archive a custom object without deleting data; restore with PATCH is_archived=false. Refused (409
140
+ `formula_dependency`) while a computed field elsewhere reads it, naming every dependent the credential may see.
138
141
 
139
142
  **Input**
140
143
 
@@ -366,7 +369,9 @@ const result = await g8.api.objects.commitObjectCsvImport({
366
369
 
367
370
  PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
368
371
 
369
- Create a typed CRM field. Requires objects:manage and current Admin access.
372
+ Create a typed CRM field. Requires objects:manage and current Admin access. A computed field is checked against
373
+ the schema the credential may see (an admin key included): a field it cannot see or an object it cannot read is
374
+ `unknown_field` / `unknown_relationship` (422), exactly as validate answers.
370
375
 
371
376
  **Input**
372
377
 
@@ -1940,7 +1945,8 @@ const result = await g8.api.objects.setDefaultObjectView({ path: { object_slug:
1940
1945
  - API-key scope: `objects:manage`
1941
1946
  - ★ Hand-written: [`g8.objects.updateAttribute()`](../sdk-clients.md#g8-objects-updateattribute)
1942
1947
 
1943
- Edit or restore a field; omitted values remain unchanged. Type and slug are immutable.
1948
+ Edit or restore a field; omitted values remain unchanged. Type and slug are immutable. A change that would
1949
+ break a computed field is refused (409 `formula_dependency`) with every dependent the credential may see.
1944
1950
 
1945
1951
  **Input**
1946
1952
 
@@ -2012,7 +2018,8 @@ const result = await g8.api.objects.updateAttribute({ path: { object_slug: "exam
2012
2018
 
2013
2019
  PREVIEW. This endpoint is deployed but gated: it returns 404 unless the hosted app platform is enabled for your organization. It is published here so the contract describes the whole surface, not so it can be called today.
2014
2020
 
2015
- Rename, archive or restore a custom object while retaining its slug and data.
2021
+ Rename, archive or restore a custom object while retaining its slug and data. Archiving is refused (409
2022
+ `formula_dependency`) while a computed field elsewhere reads it, naming every dependent the credential may see.
2016
2023
 
2017
2024
  **Input**
2018
2025
 
@@ -2314,6 +2321,64 @@ const result = await g8.api.objects.upsertObjectRecord({
2314
2321
 
2315
2322
  ---
2316
2323
 
2324
+ <a id="op-validateformula"></a>
2325
+
2326
+ ### `g8.api.objects.validateFormula(input)`
2327
+
2328
+ **Validate Formula**
2329
+
2330
+ - HTTP: `POST /api/v1/objects/{object_slug}/attributes/formula/validate`
2331
+ - operationId: `validate_formula_objects__object_slug__attributes_formula_validate_post` (also callable as `g8.api.call("validate_formula_objects__object_slug__attributes_formula_validate_post", input)`)
2332
+ - Tier: `read`: reads data; safe to call and to retry
2333
+ - API-key scope: `objects:read`
2334
+
2335
+ Dry-run type-check and cycle-check of a typed formula expression, optionally evaluated on one record.
2336
+ Nothing is stored. Read-only (`objects:read`) despite the POST verb: the expression travels in the body. The
2337
+ check uses YOUR view of the schema: a field you cannot see or an object you cannot read is unknown, and a preview
2338
+ that names one is `valid: false` with `unknown_field` (200), exactly like a name that does not exist. An admin key
2339
+ is held to the same object grants: API keys never bypass them.
2340
+
2341
+ **Input**
2342
+
2343
+ | Field | Type | Required | Description |
2344
+ |---|---|---|---|
2345
+ | `path.object_slug` | `string` | yes | |
2346
+ | `body` | `FormulaValidateRequest` | yes | Request body; fields below. |
2347
+
2348
+ Body fields (`FormulaValidateRequest`):
2349
+
2350
+ | Field | Type | Required | Description |
2351
+ |---|---|---|---|
2352
+ | `body.expression` | `Record<string, unknown>` | yes | The typed JSON expression (a node tree; a rollup is a `rollup` node). |
2353
+ | `body.attribute_slug` | `string \| null` | no | Slug of the computed field being EDITED (checked against its own place in the dependency graph); omit for a new one. max length 100 |
2354
+ | `body.preview_record_id` | `string \| null` | no | Evaluate the expression against this record's current values. max length 64 |
2355
+
2356
+ **Returns** `ApiResponse_FormulaValidateResponse_`: the envelope `{ data: FormulaValidateResponse, ... }`. `g8.api` returns the envelope as-is, so read `result.data`.
2357
+
2358
+ Other envelope fields: `pagination` (PaginationMeta).
2359
+
2360
+ `FormulaValidateResponse` fields:
2361
+
2362
+ | Field | Type | Required | Description |
2363
+ |---|---|---|---|
2364
+ | `valid` | `boolean` | yes | |
2365
+ | `currency_code` | `string \| null` | no | |
2366
+ | `depends_on` | `Array<Record<string, unknown>>` | no | |
2367
+ | `errors` | `Array<Record<string, unknown>>` | no | Field-level problems (`reason` is a stable code). |
2368
+ | `preview_error` | `string \| null` | no | Why the preview record could not be evaluated (a code, never a value). |
2369
+ | `preview_rollups` | `Array<PreviewRollup>` | no | With a preview record: one entry per rollup in the expression, counted over the records the caller may read. |
2370
+ | `preview_value` | `unknown` | no | |
2371
+ | `referenced_object_slugs` | `Array<string>` | no | |
2372
+ | `result_type` | `string \| null` | no | number, currency, text, checkbox, date or timestamp. |
2373
+
2374
+ **Example**
2375
+
2376
+ ```ts
2377
+ const result = await g8.api.objects.validateFormula({ path: { object_slug: "example" }, body: { expression: {} } });
2378
+ ```
2379
+
2380
+ ---
2381
+
2317
2382
  ## Referenced types
2318
2383
 
2319
2384
  Named types that appear in the tables above. Full TypeScript definitions: `G8Contract.<Name>` (`import type { G8Contract } from "@graph8/sdk"`).
@@ -2327,6 +2392,7 @@ Configuration for specific attribute types.
2327
2392
  | Field | Type | Required | Description |
2328
2393
  |---|---|---|---|
2329
2394
  | `currency_code` | `string \| null` | no | |
2395
+ | `formula` | `FormulaInput \| null` | no | |
2330
2396
  | `max_value` | `integer \| null` | no | |
2331
2397
  | `options` | `Array<Record<string, unknown>> \| null` | no | |
2332
2398
  | `referenced_object` | `string \| null` | no | |
@@ -2406,6 +2472,17 @@ Column mapping (CSV header -> field slug) and match mode. May be incomplete whil
2406
2472
  | `matching_attribute` | `string \| null` | no | max length 100 |
2407
2473
  | `mode` | `"create" \| "upsert"` | no | default `"create"` |
2408
2474
 
2475
+ <a id="type-previewrollup"></a>
2476
+
2477
+ ### `PreviewRollup`
2478
+
2479
+ How many linked records one rollup of a previewed expression counted.
2480
+
2481
+ | Field | Type | Required | Description |
2482
+ |---|---|---|---|
2483
+ | `matched_count` | `integer` | yes | Linked records the rollup counted for the preview record (the ones its filters keep). |
2484
+ | `node_path` | `string` | yes | Where the rollup sits in the expression: `$` is the root, `$.left`, `$.args[1]`, `$.then_branch`. |
2485
+
2409
2486
  <a id="type-recordbulkupdatefailure"></a>
2410
2487
 
2411
2488
  ### `RecordBulkUpdateFailure`
@@ -2471,7 +2548,7 @@ One generation of one attribute's value. Values are TEMPORAL rather than mutable
2471
2548
 
2472
2549
  | Field | Type | Required | Description |
2473
2550
  |---|---|---|---|
2474
- | `action` | `"created" \| "updated" \| "archived" \| "restored"` | yes | |
2551
+ | `action` | `"created" \| "updated" \| "archived" \| "restored" \| "recalculated"` | yes | |
2475
2552
  | `actor_id` | `string \| null` | yes | |
2476
2553
  | `actor_type` | `"user" \| "api" \| "app" \| "integration" \| "system"` | yes | |
2477
2554
  | `changes` | `Record<string, RecordMutationValueChange>` | yes | |
@@ -0,0 +1,247 @@
1
+ /* Generated by sdk/js/scripts/generate-agent-docs.ts from developer-contract/openapi.json. Regenerated on every build. */
2
+
3
+ /**
4
+ * Types for `g8.api.processLists` (Process Lists): 6 operations.
5
+ *
6
+ * For reading. In code, import from the package instead:
7
+ * import type { ApiInput, ApiOutput, G8Contract } from "@graph8/sdk";
8
+ * type In = ApiInput<"archive_process_list_api_process_lists__slug__delete">;
9
+ *
10
+ * Reference with examples: processLists.md
11
+ */
12
+ /* eslint-disable */
13
+
14
+ /** `g8.api.processLists.<member>` -> the operationId it calls. */
15
+ export interface ProcessListsMembers {
16
+ archiveProcessListApi: "archive_process_list_api_process_lists__slug__delete";
17
+ createProcessListApi: "create_process_list_api_process_lists_post";
18
+ createProcessListEntryApi: "create_process_list_entry_api_process_lists__slug__entries_post";
19
+ getProcessListApi: "get_process_list_api_process_lists__slug__get";
20
+ listProcessListsApi: "list_process_lists_api_process_lists_get";
21
+ updateProcessListApi: "update_process_list_api_process_lists__slug__patch";
22
+ }
23
+
24
+ /** Input and output of every `g8.api.processLists` operation, keyed by operationId. */
25
+ export interface ProcessListsOperations {
26
+ /**
27
+ * DELETE /process-lists/{slug}
28
+ * Archive Process List Api
29
+ * tier: destructive · scope: objects:manage
30
+ */
31
+ archive_process_list_api_process_lists__slug__delete: {
32
+ input: {
33
+ path: {
34
+ slug: string;
35
+ };
36
+ headers?: {
37
+ "X-Target-Org-Id"?: string | null;
38
+ };
39
+ };
40
+ output: ApiResponse_ProcessListResponse_;
41
+ };
42
+ /**
43
+ * POST /process-lists
44
+ * Create Process List Api
45
+ * tier: write · scope: objects:manage
46
+ */
47
+ create_process_list_api_process_lists_post: {
48
+ input: {
49
+ headers?: {
50
+ "X-Target-Org-Id"?: string | null;
51
+ };
52
+ body: ProcessListCreate;
53
+ };
54
+ output: ApiResponse_ProcessListResponse_;
55
+ };
56
+ /**
57
+ * POST /process-lists/{slug}/entries
58
+ * Create Process List Entry Api
59
+ * tier: write · scope: objects:write
60
+ */
61
+ create_process_list_entry_api_process_lists__slug__entries_post: {
62
+ input: {
63
+ path: {
64
+ slug: string;
65
+ };
66
+ headers?: {
67
+ "X-Target-Org-Id"?: string | null;
68
+ };
69
+ body: ProcessListEntryCreate;
70
+ };
71
+ output: ApiResponse_ProcessListEntryResponse_;
72
+ };
73
+ /**
74
+ * GET /process-lists/{slug}
75
+ * Get Process List Api
76
+ * tier: read · scope: objects:read
77
+ */
78
+ get_process_list_api_process_lists__slug__get: {
79
+ input: {
80
+ path: {
81
+ slug: string;
82
+ };
83
+ headers?: {
84
+ "X-Target-Org-Id"?: string | null;
85
+ };
86
+ };
87
+ output: ApiResponse_ProcessListResponse_;
88
+ };
89
+ /**
90
+ * GET /process-lists
91
+ * List Process Lists Api
92
+ * tier: read · scope: objects:read
93
+ */
94
+ list_process_lists_api_process_lists_get: {
95
+ input: {
96
+ query?: {
97
+ include_archived?: boolean;
98
+ };
99
+ headers?: {
100
+ "X-Target-Org-Id"?: string | null;
101
+ };
102
+ };
103
+ output: ApiResponse_ProcessListListResponse_;
104
+ };
105
+ /**
106
+ * PATCH /process-lists/{slug}
107
+ * Update Process List Api
108
+ * tier: write · scope: objects:manage
109
+ */
110
+ update_process_list_api_process_lists__slug__patch: {
111
+ input: {
112
+ path: {
113
+ slug: string;
114
+ };
115
+ headers?: {
116
+ "X-Target-Org-Id"?: string | null;
117
+ };
118
+ body: ProcessListUpdate;
119
+ };
120
+ output: ApiResponse_ProcessListResponse_;
121
+ };
122
+ }
123
+
124
+ // 13 schemas referenced above (the same as G8Contract.<Name>).
125
+
126
+ export interface ApiResponse_ProcessListEntryResponse_ {
127
+ data: ProcessListEntryResponse;
128
+ pagination?: PaginationMeta | null;
129
+ }
130
+
131
+ export interface ApiResponse_ProcessListListResponse_ {
132
+ data: ProcessListListResponse;
133
+ pagination?: PaginationMeta | null;
134
+ }
135
+
136
+ export interface ApiResponse_ProcessListResponse_ {
137
+ data: ProcessListResponse;
138
+ pagination?: PaginationMeta | null;
139
+ }
140
+
141
+ export interface PaginationMeta {
142
+ /** Whether there are more pages */
143
+ has_next: boolean;
144
+ /** Items per page */
145
+ limit: number;
146
+ /** Opaque cursor for the next page; null when there are no more items. Pass it back as the `cursor` query param to fetch the following page without computing page numbers. */
147
+ next_cursor?: string | null;
148
+ /** Search endpoints only: plain-language notes about the result, e.g. that more records match than can be paged, or that a reversed `between` range was put in order. */
149
+ notes?: Array<string> | null;
150
+ /** Current page number (1-indexed) */
151
+ page: number;
152
+ /** Total number of items */
153
+ total: number;
154
+ /** Search endpoints only: how many records really match, when known. Can be larger than `total`, which is capped at the 10,000 results that can be paged. For company search this is a distinct-company estimate. Null when unknown; absent outside search. */
155
+ total_available?: number | null;
156
+ /** Search endpoints only: true when more records match than `total` shows (the result set is larger than the 10,000 results that can be paged). Absent outside search. */
157
+ total_is_lower_bound?: boolean | null;
158
+ }
159
+
160
+ export interface ProcessListCreate {
161
+ api_slug: string;
162
+ description?: string | null;
163
+ entries_label: string;
164
+ icon?: ("box" | "briefcase" | "building" | "calendar" | "flag" | "folder" | "globe" | "heart" | "layers" | "package" | "target" | "users") | null;
165
+ parent: RelationshipTarget;
166
+ parent_label: string;
167
+ plural_noun: string;
168
+ singular_noun: string;
169
+ }
170
+
171
+ /**
172
+ * Create one entry (a record of the list's object) and link it to its parent, atomically.
173
+ *
174
+ * The parent KIND is not repeated: the list's own relationship definition fixes it.
175
+ */
176
+ export interface ProcessListEntryCreate {
177
+ expected_parent_revision?: number | null;
178
+ idempotency_key?: string | null;
179
+ parent_record_id: string;
180
+ values?: Record<string, unknown>;
181
+ }
182
+
183
+ export interface ProcessListEntryResponse {
184
+ parent: ProcessListParentSummary;
185
+ record: RecordResponse;
186
+ relationship_id: string;
187
+ replayed?: boolean;
188
+ }
189
+
190
+ export interface ProcessListListResponse {
191
+ process_lists: Array<ProcessListResponse>;
192
+ total: number;
193
+ }
194
+
195
+ export interface ProcessListParentSummary {
196
+ kind: "custom" | "contacts" | "companies" | "deals";
197
+ label?: string | null;
198
+ object_slug?: string | null;
199
+ record_id: string;
200
+ revision?: number | null;
201
+ }
202
+
203
+ export interface ProcessListResponse {
204
+ api_slug: string;
205
+ created_at: string;
206
+ description?: string | null;
207
+ display_attribute_slug?: string | null;
208
+ entries_label: string;
209
+ icon?: string | null;
210
+ id: string;
211
+ is_archived: boolean;
212
+ parent_kind: "custom" | "contacts" | "companies" | "deals";
213
+ parent_label: string;
214
+ parent_object_id?: string | null;
215
+ parent_object_slug?: string | null;
216
+ parent_relationship_definition_id: string;
217
+ plural_noun: string;
218
+ singular_noun: string;
219
+ updated_at: string;
220
+ }
221
+
222
+ /** Rename, describe or archive a list. The parent binding is never accepted here. */
223
+ export interface ProcessListUpdate {
224
+ description?: string | null;
225
+ display_attribute_slug?: string | null;
226
+ icon?: ("box" | "briefcase" | "building" | "calendar" | "flag" | "folder" | "globe" | "heart" | "layers" | "package" | "target" | "users") | null;
227
+ is_archived?: boolean | null;
228
+ plural_noun?: string | null;
229
+ singular_noun?: string | null;
230
+ }
231
+
232
+ /** Response for a record with its current attribute values. */
233
+ export interface RecordResponse {
234
+ created_at: string;
235
+ id: string;
236
+ is_archived: boolean;
237
+ object_definition_id: string;
238
+ organization_id: string;
239
+ revision?: number;
240
+ updated_at: string;
241
+ values: Record<string, unknown>;
242
+ }
243
+
244
+ export interface RelationshipTarget {
245
+ kind: "custom" | "contacts" | "companies" | "deals";
246
+ object_id?: string | null;
247
+ }