@vm0/cli 9.225.5 → 9.226.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 (86) hide show
  1. package/{agent-ZHZ5ZXPE.js → agent-3GMWC54K.js} +4 -4
  2. package/{banking-D3DOFV5W.js → banking-ZXRD655Y.js} +2 -2
  3. package/{chat-GDK4MYTX.js → chat-TTTI5WPT.js} +2 -2
  4. package/{chunk-ABTGOAID.js → chunk-3QZLVBCI.js} +3 -3
  5. package/{chunk-XRDLFBPU.js → chunk-5TLECTXB.js} +3 -3
  6. package/{chunk-GTEVOYBW.js → chunk-EI775O5W.js} +4 -9
  7. package/chunk-EI775O5W.js.map +1 -0
  8. package/{chunk-QIYCR6SX.js → chunk-GJCZPNMR.js} +2 -2
  9. package/{chunk-7CKYSFOQ.js → chunk-NDJBLBZG.js} +2 -2
  10. package/{chunk-MFZEY4E5.js → chunk-Q6RTC7BD.js} +2 -2
  11. package/{chunk-WB6G3XAE.js → chunk-QUS7ZBVO.js} +723 -616
  12. package/chunk-QUS7ZBVO.js.map +1 -0
  13. package/{chunk-TOAIXNXB.js → chunk-VHPBG7WA.js} +2 -2
  14. package/{chunk-WQGXVVFA.js → chunk-YYR5LIJY.js} +60 -1
  15. package/chunk-YYR5LIJY.js.map +1 -0
  16. package/{chunk-MTZK6FU7.js → chunk-Z3YDGXEK.js} +2 -2
  17. package/{computer-use-TI56K3EM.js → computer-use-VD6O5YS3.js} +2 -2
  18. package/{connector-6N5X7LC7.js → connector-56JRAXJA.js} +2 -2
  19. package/{credit-V6RDX4BJ.js → credit-UXZMOJKE.js} +2 -2
  20. package/{developer-support-UUANZAMK.js → developer-support-GSYENMAZ.js} +2 -2
  21. package/{doctor-ZQSZH4W5.js → doctor-INR7IMPB.js} +5 -5
  22. package/{generate-A4TBKOVU.js → generate-7ETJONU2.js} +3 -3
  23. package/{github-HCK3RWPZ.js → github-BVHAPFZ6.js} +2 -2
  24. package/{goal-5WGMDM3E.js → goal-GVDE2ZOV.js} +2 -2
  25. package/{host-UITQXMRM.js → host-QMBHRLRU.js} +2 -2
  26. package/index.js +14 -14
  27. package/{logs-KA57I3HZ.js → logs-SI3C4YS5.js} +7 -7
  28. package/{maps-3QTDW2QN.js → maps-BNLJNCI2.js} +2 -2
  29. package/{model-RYCTX7N5.js → model-ZD3SD2MO.js} +3 -3
  30. package/{model-provider-G4SSF6BL.js → model-provider-FF2TSSP5.js} +3 -3
  31. package/{org-Q2VMYULK.js → org-WTFC35FE.js} +2 -2
  32. package/package.json +1 -1
  33. package/{phone-6XJSWOSS.js → phone-5GVMFUET.js} +2 -2
  34. package/{preference-YZRIHIYD.js → preference-EUZ5RTWU.js} +2 -2
  35. package/{relationship-SWKHJR4S.js → relationship-YLZN73CU.js} +2 -2
  36. package/{resource-VTSHSLCE.js → resource-NO7BTNOQ.js} +6 -5
  37. package/resource-NO7BTNOQ.js.map +1 -0
  38. package/{search-B36FZYHO.js → search-6ZAM6QG4.js} +7 -7
  39. package/{secret-NFXUAVSS.js → secret-DXSVJFMY.js} +3 -3
  40. package/{slack-5J3ZGBFN.js → slack-3JCYQJ6N.js} +2 -2
  41. package/{telegram-C4CNOZ25.js → telegram-ZW7FMNJH.js} +2 -2
  42. package/{variable-UUTYRXZL.js → variable-N6ATBXDZ.js} +2 -2
  43. package/{web-USCANYFT.js → web-2V5DPZ3R.js} +2 -2
  44. package/{whoami-3GAL3VL4.js → whoami-LQXKJYUY.js} +4 -4
  45. package/{workflow-64UTTZDX.js → workflow-L5R3M56D.js} +62 -6
  46. package/workflow-L5R3M56D.js.map +1 -0
  47. package/zero.js +31 -31
  48. package/chunk-GTEVOYBW.js.map +0 -1
  49. package/chunk-WB6G3XAE.js.map +0 -1
  50. package/chunk-WQGXVVFA.js.map +0 -1
  51. package/resource-VTSHSLCE.js.map +0 -1
  52. package/workflow-64UTTZDX.js.map +0 -1
  53. /package/{agent-ZHZ5ZXPE.js.map → agent-3GMWC54K.js.map} +0 -0
  54. /package/{banking-D3DOFV5W.js.map → banking-ZXRD655Y.js.map} +0 -0
  55. /package/{chat-GDK4MYTX.js.map → chat-TTTI5WPT.js.map} +0 -0
  56. /package/{chunk-ABTGOAID.js.map → chunk-3QZLVBCI.js.map} +0 -0
  57. /package/{chunk-XRDLFBPU.js.map → chunk-5TLECTXB.js.map} +0 -0
  58. /package/{chunk-QIYCR6SX.js.map → chunk-GJCZPNMR.js.map} +0 -0
  59. /package/{chunk-7CKYSFOQ.js.map → chunk-NDJBLBZG.js.map} +0 -0
  60. /package/{chunk-MFZEY4E5.js.map → chunk-Q6RTC7BD.js.map} +0 -0
  61. /package/{chunk-TOAIXNXB.js.map → chunk-VHPBG7WA.js.map} +0 -0
  62. /package/{chunk-MTZK6FU7.js.map → chunk-Z3YDGXEK.js.map} +0 -0
  63. /package/{computer-use-TI56K3EM.js.map → computer-use-VD6O5YS3.js.map} +0 -0
  64. /package/{connector-6N5X7LC7.js.map → connector-56JRAXJA.js.map} +0 -0
  65. /package/{credit-V6RDX4BJ.js.map → credit-UXZMOJKE.js.map} +0 -0
  66. /package/{developer-support-UUANZAMK.js.map → developer-support-GSYENMAZ.js.map} +0 -0
  67. /package/{doctor-ZQSZH4W5.js.map → doctor-INR7IMPB.js.map} +0 -0
  68. /package/{generate-A4TBKOVU.js.map → generate-7ETJONU2.js.map} +0 -0
  69. /package/{github-HCK3RWPZ.js.map → github-BVHAPFZ6.js.map} +0 -0
  70. /package/{goal-5WGMDM3E.js.map → goal-GVDE2ZOV.js.map} +0 -0
  71. /package/{host-UITQXMRM.js.map → host-QMBHRLRU.js.map} +0 -0
  72. /package/{logs-KA57I3HZ.js.map → logs-SI3C4YS5.js.map} +0 -0
  73. /package/{maps-3QTDW2QN.js.map → maps-BNLJNCI2.js.map} +0 -0
  74. /package/{model-RYCTX7N5.js.map → model-ZD3SD2MO.js.map} +0 -0
  75. /package/{model-provider-G4SSF6BL.js.map → model-provider-FF2TSSP5.js.map} +0 -0
  76. /package/{org-Q2VMYULK.js.map → org-WTFC35FE.js.map} +0 -0
  77. /package/{phone-6XJSWOSS.js.map → phone-5GVMFUET.js.map} +0 -0
  78. /package/{preference-YZRIHIYD.js.map → preference-EUZ5RTWU.js.map} +0 -0
  79. /package/{relationship-SWKHJR4S.js.map → relationship-YLZN73CU.js.map} +0 -0
  80. /package/{search-B36FZYHO.js.map → search-6ZAM6QG4.js.map} +0 -0
  81. /package/{secret-NFXUAVSS.js.map → secret-DXSVJFMY.js.map} +0 -0
  82. /package/{slack-5J3ZGBFN.js.map → slack-3JCYQJ6N.js.map} +0 -0
  83. /package/{telegram-C4CNOZ25.js.map → telegram-ZW7FMNJH.js.map} +0 -0
  84. /package/{variable-UUTYRXZL.js.map → variable-N6ATBXDZ.js.map} +0 -0
  85. /package/{web-USCANYFT.js.map → web-2V5DPZ3R.js.map} +0 -0
  86. /package/{whoami-3GAL3VL4.js.map → whoami-LQXKJYUY.js.map} +0 -0
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  listVideoTemplates
6
- } from "./chunk-WQGXVVFA.js";
6
+ } from "./chunk-YYR5LIJY.js";
7
7
  import {
8
8
  authHeadersSchema,
9
9
  composeListItemSchema,
@@ -21,7 +21,7 @@ import {
21
21
  upsertModelProviderRequestSchema,
22
22
  upsertModelProviderResponseSchema,
23
23
  zeroAgentVisibilitySchema
24
- } from "./chunk-GTEVOYBW.js";
24
+ } from "./chunk-EI775O5W.js";
25
25
  import {
26
26
  apiErrorSchema,
27
27
  external_exports
@@ -719,9 +719,9 @@ var require_Alias = __commonJS({
719
719
  } else if (identity.isCollection(node)) {
720
720
  let count = 0;
721
721
  for (const item of node.items) {
722
- const c89 = getAliasCount(doc, item, anchors2);
723
- if (c89 > count)
724
- count = c89;
722
+ const c88 = getAliasCount(doc, item, anchors2);
723
+ if (c88 > count)
724
+ count = c88;
725
725
  }
726
726
  return count;
727
727
  } else if (identity.isPair(node)) {
@@ -9880,9 +9880,6 @@ function toVideoTemplateItem(entry) {
9880
9880
  }
9881
9881
  var VIDEO_TEMPLATE_ITEMS = listVideoTemplates().map(toVideoTemplateItem);
9882
9882
 
9883
- // ../../packages/core/src/website-template-items.ts
9884
- init_esm_shims();
9885
-
9886
9883
  // ../../packages/core/src/workflow-template-items.ts
9887
9884
  init_esm_shims();
9888
9885
  function defineWorkflowTemplate(args) {
@@ -9890,6 +9887,7 @@ function defineWorkflowTemplate(args) {
9890
9887
  id: args.id,
9891
9888
  title: args.title,
9892
9889
  description: args.description,
9890
+ category: args.category,
9893
9891
  connectors: args.connectors,
9894
9892
  promptGuidance: [
9895
9893
  "# Workflow Template Context",
@@ -9910,6 +9908,7 @@ function defineWorkflowTemplate(args) {
9910
9908
  var WORKFLOW_TEMPLATE_ITEMS = [
9911
9909
  defineWorkflowTemplate({
9912
9910
  id: "workflow-template:auto-inbox-label",
9911
+ category: "General",
9913
9912
  title: "Auto-inbox label",
9914
9913
  description: "Create a workflow that runs when a Gmail label is applied and handles the labeled inbox item.",
9915
9914
  connectors: ["gmail"],
@@ -9923,6 +9922,7 @@ var WORKFLOW_TEMPLATE_ITEMS = [
9923
9922
  }),
9924
9923
  defineWorkflowTemplate({
9925
9924
  id: "workflow-template:daily-standup-report",
9925
+ category: "Engineering",
9926
9926
  title: "Daily standup report",
9927
9927
  description: "Pull product and engineering signals each morning, create a short report, and post it to Slack.",
9928
9928
  connectors: ["github", "sentry", "axiom", "plausible", "slack"],
@@ -9934,34 +9934,9 @@ var WORKFLOW_TEMPLATE_ITEMS = [
9934
9934
  ],
9935
9935
  missingInfo: "Before creating anything, ask for the schedule, timezone, Slack channel, metric scope, and any required report sections if they are missing."
9936
9936
  }),
9937
- defineWorkflowTemplate({
9938
- id: "workflow-template:personal-weekly-digest",
9939
- title: "Personal weekly digest",
9940
- description: "Summarize GitHub, Gmail, and Calendar activity into one weekly Slack update.",
9941
- connectors: ["github", "gmail", "google-calendar", "slack"],
9942
- behavior: [
9943
- "Create a weekly scheduled workflow for the selected owner.",
9944
- "Collect recent pull requests, important inbox threads, and upcoming or completed calendar events.",
9945
- "Group the digest into accomplishments, pending decisions, follow-ups, and upcoming commitments.",
9946
- "Send the digest to the user's chosen Slack destination."
9947
- ],
9948
- missingInfo: "Before creating anything, ask for the day/time, timezone, GitHub scope, Gmail filters, calendar scope, and Slack destination if they are missing."
9949
- }),
9950
- defineWorkflowTemplate({
9951
- id: "workflow-template:morning-brief",
9952
- title: "Morning brief",
9953
- description: "Turn Gmail, Calendar, and Notion updates into a short daily plan in Slack.",
9954
- connectors: ["gmail", "google-calendar", "notion", "slack"],
9955
- behavior: [
9956
- "Create a daily scheduled workflow that prepares a morning planning brief.",
9957
- "Review important email, calendar events, and relevant Notion updates.",
9958
- "Prioritize the day into meetings, decisions, follow-ups, and focus blocks.",
9959
- "Post the brief to Slack or another destination the user chooses."
9960
- ],
9961
- missingInfo: "Before creating anything, ask for the schedule, timezone, Slack destination, Gmail scope, calendar scope, and Notion sources if they are missing."
9962
- }),
9963
9937
  defineWorkflowTemplate({
9964
9938
  id: "workflow-template:github-pr-summarizer",
9939
+ category: "Engineering",
9965
9940
  title: "GitHub PR summarizer",
9966
9941
  description: "Collect merged pull requests, save a structured report in Notion, and optionally post to Slack.",
9967
9942
  connectors: ["github", "notion", "slack"],
@@ -9975,6 +9950,7 @@ var WORKFLOW_TEMPLATE_ITEMS = [
9975
9950
  }),
9976
9951
  defineWorkflowTemplate({
9977
9952
  id: "workflow-template:sentry-issue-digest",
9953
+ category: "Engineering",
9978
9954
  title: "Sentry issue digest",
9979
9955
  description: "Send a daily digest of critical and high-severity Sentry issues to Slack.",
9980
9956
  connectors: ["sentry", "slack"],
@@ -9988,6 +9964,7 @@ var WORKFLOW_TEMPLATE_ITEMS = [
9988
9964
  }),
9989
9965
  defineWorkflowTemplate({
9990
9966
  id: "workflow-template:vercel-deploy-digest",
9967
+ category: "Engineering",
9991
9968
  title: "Vercel deploy digest",
9992
9969
  description: "Monitor Vercel deployments, link them to GitHub commits, and alert Slack on failures.",
9993
9970
  connectors: ["vercel", "github", "slack"],
@@ -10000,33 +9977,86 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10000
9977
  missingInfo: "Before creating anything, ask for the Vercel projects, GitHub repositories, alert rules, cadence, and Slack channel if they are missing."
10001
9978
  }),
10002
9979
  defineWorkflowTemplate({
10003
- id: "workflow-template:revenuecat-subscription-digest",
10004
- title: "RevenueCat subscription digest",
10005
- description: "Track subscriptions in Sheets and alert Slack when churn or cancellation patterns change.",
10006
- connectors: ["revenuecat", "google-sheets", "slack"],
9980
+ id: "workflow-template:auto-merge-github-prs",
9981
+ category: "Engineering",
9982
+ title: "Auto-merge GitHub PRs",
9983
+ description: "Review PRs labeled ready-to-merge, wait for CI, then merge and post to Slack.",
9984
+ connectors: ["github", "vercel", "slack"],
10007
9985
  behavior: [
10008
- "Create a daily scheduled workflow that pulls RevenueCat subscription activity.",
10009
- "Log new subscriptions, renewals, cancellations, and notable churn signals in Google Sheets.",
10010
- "Compare recent movement against the user's alert thresholds.",
10011
- "Post a Slack summary and send urgent alerts when churn spikes."
9986
+ "A PR is labeled ready-to-merge",
9987
+ "Zero reviews and waits on CI",
9988
+ "Merged and posted to Slack"
10012
9989
  ],
10013
- missingInfo: "Before creating anything, ask for the RevenueCat project, schedule, timezone, Sheets destination, Slack channel, and alert thresholds if they are missing."
9990
+ missingInfo: "Connectors: github required; vercel, slack optional.\nSuggested trigger: Add a github-label-applied event trigger on the ready-to-merge label so it runs the moment a PR is labeled.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10014
9991
  }),
10015
9992
  defineWorkflowTemplate({
10016
- id: "workflow-template:support-ticket-router",
10017
- title: "Support ticket router",
10018
- description: "Classify support emails, create Notion records, and alert Slack for critical tickets.",
10019
- connectors: ["gmail", "notion", "slack"],
9993
+ id: "workflow-template:file-sentry-crashes-github",
9994
+ category: "Engineering",
9995
+ title: "File Sentry crashes as GitHub issues",
9996
+ description: "Rank new Sentry errors by user impact and file the worst as GitHub issues.",
9997
+ connectors: ["sentry", "github", "linear", "slack"],
10020
9998
  behavior: [
10021
- "Create a workflow that runs from a Gmail trigger or scheduled inbox scan.",
10022
- "Classify support messages by category, priority, customer, and requested action.",
10023
- "Create or update structured Notion records for each qualifying ticket.",
10024
- "Alert Slack when a ticket is urgent, blocked, or needs human follow-up."
9999
+ "Zero pulls new Sentry errors",
10000
+ "Ranked by user impact",
10001
+ "Issues filed and owner pinged"
10025
10002
  ],
10026
- missingInfo: "Before creating anything, ask for the inbox or label, triage rules, Notion database, Slack channel, and escalation criteria if they are missing."
10003
+ missingInfo: "Connectors: sentry, github required; linear, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. hourly). Sentry has no native event trigger yet, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10004
+ }),
10005
+ defineWorkflowTemplate({
10006
+ id: "workflow-template:watch-sentry-after-release",
10007
+ category: "Engineering",
10008
+ title: "Watch Sentry after a release",
10009
+ description: "Compare the crash-free rate after each release and flag regressions.",
10010
+ connectors: ["sentry", "github", "vercel", "slack"],
10011
+ behavior: [
10012
+ "Zero watches the new release",
10013
+ "Compared against baseline",
10014
+ "Regression flagged with a rollback tip"
10015
+ ],
10016
+ missingInfo: "Connectors: sentry, github required; vercel, slack optional.\nSuggested trigger: Add a schedule trigger that runs shortly after each release. Sentry has no native event trigger, so poll and compare against the prior baseline.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10017
+ }),
10018
+ defineWorkflowTemplate({
10019
+ id: "workflow-template:post-github-updates-slack",
10020
+ category: "Engineering",
10021
+ title: "Post GitHub updates to Slack",
10022
+ description: "Summarize your merged and in-progress GitHub work into a Slack update.",
10023
+ connectors: ["github", "linear", "sentry", "slack"],
10024
+ behavior: [
10025
+ "Zero collects your activity",
10026
+ "Summarized into an update",
10027
+ "Posted to Slack"
10028
+ ],
10029
+ missingInfo: "Connectors: github required; linear, sentry, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. every weekday at end of day).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10030
+ }),
10031
+ defineWorkflowTemplate({
10032
+ id: "workflow-template:draft-github-release-notes-notion",
10033
+ category: "Engineering",
10034
+ title: "Draft GitHub release notes in Notion",
10035
+ description: "Turn the PRs merged since the last release into clean notes in Notion.",
10036
+ connectors: ["github", "notion", "slack"],
10037
+ behavior: [
10038
+ "A PR is labeled shipped",
10039
+ "Zero gathers merged PRs",
10040
+ "Release notes saved to Notion"
10041
+ ],
10042
+ missingInfo: "Connectors: github, notion required; slack optional.\nSuggested trigger: Add a github-label-applied event trigger on a release label, or a schedule trigger you run per release.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10043
+ }),
10044
+ defineWorkflowTemplate({
10045
+ id: "workflow-template:report-ai-model-costs-slack",
10046
+ category: "Engineering",
10047
+ title: "Report AI model costs to Slack",
10048
+ description: "Report LLM token spend and latency per model and route to Slack.",
10049
+ connectors: ["langfuse", "slack"],
10050
+ behavior: [
10051
+ "Zero reads Langfuse",
10052
+ "Broken down by model and route",
10053
+ "Posted to Slack"
10054
+ ],
10055
+ missingInfo: "Connectors: langfuse required; slack optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Langfuse has no native event trigger, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10027
10056
  }),
10028
10057
  defineWorkflowTemplate({
10029
10058
  id: "workflow-template:feedback-router",
10059
+ category: "Product",
10030
10060
  title: "Feedback router",
10031
10061
  description: "Watch a Slack channel and route product feedback into Notion with labels and owners.",
10032
10062
  connectors: ["slack", "notion"],
@@ -10038,8 +10068,166 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10038
10068
  ],
10039
10069
  missingInfo: "Before creating anything, ask for the Slack channel, Notion database, taxonomy, owner mapping, and run cadence if they are missing."
10040
10070
  }),
10071
+ defineWorkflowTemplate({
10072
+ id: "workflow-template:github-idea-to-notion-spec",
10073
+ category: "Product",
10074
+ title: "Turn a GitHub idea into a Notion spec",
10075
+ description: "Expand a labeled GitHub issue into a structured product spec in Notion.",
10076
+ connectors: ["github", "notion", "figma"],
10077
+ behavior: [
10078
+ "An issue is labeled needs-spec",
10079
+ "Zero expands it into a PRD",
10080
+ "Saved to Notion"
10081
+ ],
10082
+ missingInfo: "Connectors: github, notion required; figma optional.\nSuggested trigger: Add a github-label-applied event trigger on the needs-spec label.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10083
+ }),
10084
+ defineWorkflowTemplate({
10085
+ id: "workflow-template:post-release-notes-slack",
10086
+ category: "Product",
10087
+ title: "Post release notes to Slack",
10088
+ description: "Draft a changelog from recently shipped work and post it to Slack.",
10089
+ connectors: ["github", "slack", "notion"],
10090
+ behavior: [
10091
+ "A PR is labeled release",
10092
+ "Zero drafts the changelog",
10093
+ "Posted to Slack and Notion"
10094
+ ],
10095
+ missingInfo: "Connectors: github, slack required; notion optional.\nSuggested trigger: Add a github-label-applied event trigger on the release label.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10096
+ }),
10097
+ defineWorkflowTemplate({
10098
+ id: "workflow-template:sync-linear-roadmap-notion",
10099
+ category: "Product",
10100
+ title: "Sync the Linear roadmap to Notion",
10101
+ description: "Keep a Notion roadmap in sync with your Linear issue status.",
10102
+ connectors: ["linear", "notion"],
10103
+ behavior: [
10104
+ "Zero reads Linear status",
10105
+ "Mapped to Now / Next / Later",
10106
+ "Board updated in Notion"
10107
+ ],
10108
+ missingInfo: "Connectors: linear, notion required.\nSuggested trigger: Add a schedule trigger (e.g. daily). Linear has no native event trigger here, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10109
+ }),
10110
+ defineWorkflowTemplate({
10111
+ id: "workflow-template:track-feature-usage-posthog",
10112
+ category: "Product",
10113
+ title: "Track feature usage with PostHog",
10114
+ description: "Surface the biggest weekly shifts in feature usage from PostHog.",
10115
+ connectors: ["posthog", "slack"],
10116
+ behavior: [
10117
+ "Zero reads PostHog",
10118
+ "Compared week over week",
10119
+ "Shifts posted to Slack"
10120
+ ],
10121
+ missingInfo: "Connectors: posthog required; slack optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly). PostHog has no native event trigger, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10122
+ }),
10123
+ defineWorkflowTemplate({
10124
+ id: "workflow-template:flag-figma-designs-no-task",
10125
+ category: "Product",
10126
+ title: "Flag Figma designs without a task",
10127
+ description: "Flag Figma designs that have no linked Linear task yet.",
10128
+ connectors: ["figma", "linear", "slack"],
10129
+ behavior: [
10130
+ "Zero scans Figma frames",
10131
+ "Finds frames without a task",
10132
+ "Gaps posted to Slack"
10133
+ ],
10134
+ missingInfo: "Connectors: figma required; linear, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Figma has no native event trigger, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10135
+ }),
10136
+ defineWorkflowTemplate({
10137
+ id: "workflow-template:revenuecat-subscription-digest",
10138
+ category: "Data",
10139
+ title: "RevenueCat subscription digest",
10140
+ description: "Track subscriptions in Sheets and alert Slack when churn or cancellation patterns change.",
10141
+ connectors: ["revenuecat", "google-sheets", "slack"],
10142
+ behavior: [
10143
+ "Create a daily scheduled workflow that pulls RevenueCat subscription activity.",
10144
+ "Log new subscriptions, renewals, cancellations, and notable churn signals in Google Sheets.",
10145
+ "Compare recent movement against the user's alert thresholds.",
10146
+ "Post a Slack summary and send urgent alerts when churn spikes."
10147
+ ],
10148
+ missingInfo: "Before creating anything, ask for the RevenueCat project, schedule, timezone, Sheets destination, Slack channel, and alert thresholds if they are missing."
10149
+ }),
10150
+ defineWorkflowTemplate({
10151
+ id: "workflow-template:post-daily-metrics-slack",
10152
+ category: "Data",
10153
+ title: "Post daily metrics to Slack",
10154
+ description: "Post daily visitors, signups, and activation numbers to Slack.",
10155
+ connectors: ["plausible", "slack", "posthog", "clerk"],
10156
+ behavior: [
10157
+ "Zero pulls the metrics",
10158
+ "Assembled into a KPI snapshot",
10159
+ "Posted to Slack"
10160
+ ],
10161
+ missingInfo: "Connectors: plausible, slack required; posthog, clerk optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10162
+ }),
10163
+ defineWorkflowTemplate({
10164
+ id: "workflow-template:run-daily-query-sheets",
10165
+ category: "Data",
10166
+ title: "Run a daily query into Google Sheets",
10167
+ description: "Run your saved SQL on a schedule and append the results to a Sheet.",
10168
+ connectors: ["snowflake", "google-sheets", "slack"],
10169
+ behavior: [
10170
+ "Zero runs the query",
10171
+ "Results formatted",
10172
+ "Written to Google Sheets"
10173
+ ],
10174
+ missingInfo: "Connectors: snowflake, google-sheets required; slack optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10175
+ }),
10176
+ defineWorkflowTemplate({
10177
+ id: "workflow-template:check-posthog-signup-funnel",
10178
+ category: "Data",
10179
+ title: "Check the PostHog signup funnel",
10180
+ description: "Track the signup funnel and post the biggest drop-off to Slack.",
10181
+ connectors: ["posthog", "slack"],
10182
+ behavior: [
10183
+ "Zero runs the funnel",
10184
+ "Biggest drop-off identified",
10185
+ "Posted to Slack"
10186
+ ],
10187
+ missingInfo: "Connectors: posthog required; slack optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10188
+ }),
10189
+ defineWorkflowTemplate({
10190
+ id: "workflow-template:alert-metric-moves-slack",
10191
+ category: "Data",
10192
+ title: "Alert when a metric moves",
10193
+ description: "Watch your key metrics and alert Slack when one moves sharply.",
10194
+ connectors: ["plausible", "slack", "posthog"],
10195
+ behavior: [
10196
+ "Zero checks the metric",
10197
+ "Compared to normal range",
10198
+ "Alert posted to Slack"
10199
+ ],
10200
+ missingInfo: "Connectors: plausible, slack required; posthog optional.\nSuggested trigger: Add a schedule trigger on a tight cadence (e.g. hourly) so anomalies surface quickly.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10201
+ }),
10202
+ defineWorkflowTemplate({
10203
+ id: "workflow-template:track-signup-sources-sheets",
10204
+ category: "Data",
10205
+ title: "Track signup sources in Google Sheets",
10206
+ description: "Attribute each new signup to its source in a tracking Sheet.",
10207
+ connectors: ["clerk", "google-sheets", "plausible"],
10208
+ behavior: [
10209
+ "Zero reads new signups",
10210
+ "Attributed to a channel",
10211
+ "Logged to Google Sheets"
10212
+ ],
10213
+ missingInfo: "Connectors: clerk, google-sheets required; plausible optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Clerk has no native event trigger here, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10214
+ }),
10215
+ defineWorkflowTemplate({
10216
+ id: "workflow-template:build-weekly-deck-gamma",
10217
+ category: "Data",
10218
+ title: "Build the weekly deck in Gamma",
10219
+ description: "Turn the week's metrics into a ready-to-present deck in Gamma.",
10220
+ connectors: ["google-sheets", "gamma", "plausible", "slack"],
10221
+ behavior: [
10222
+ "Zero gathers the numbers",
10223
+ "Deck built in Gamma",
10224
+ "Posted to Slack"
10225
+ ],
10226
+ missingInfo: "Connectors: google-sheets, gamma required; plausible, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10227
+ }),
10041
10228
  defineWorkflowTemplate({
10042
10229
  id: "workflow-template:competitive-intel-monitor",
10230
+ category: "Marketing",
10043
10231
  title: "Competitive intel monitor",
10044
10232
  description: "Monitor competitor sites for pricing and feature changes, save findings to Notion, and alert Slack.",
10045
10233
  connectors: ["firecrawl", "notion", "slack"],
@@ -10053,6 +10241,7 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10053
10241
  }),
10054
10242
  defineWorkflowTemplate({
10055
10243
  id: "workflow-template:x-brand-monitor",
10244
+ category: "Marketing",
10056
10245
  title: "X brand monitor",
10057
10246
  description: "Track brand mentions on X, save relevant posts in Notion, and alert Slack on high-signal mentions.",
10058
10247
  connectors: ["x", "notion", "slack"],
@@ -10064,8 +10253,74 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10064
10253
  ],
10065
10254
  missingInfo: "Before creating anything, ask for the keywords or accounts, cadence, Notion database, Slack channel, and alert thresholds if they are missing."
10066
10255
  }),
10256
+ defineWorkflowTemplate({
10257
+ id: "workflow-template:track-keyword-ranks-ahrefs",
10258
+ category: "Marketing",
10259
+ title: "Track keyword ranks with Ahrefs",
10260
+ description: "Track keyword rankings in Ahrefs and report the movers in Notion.",
10261
+ connectors: ["ahrefs", "similarweb", "notion"],
10262
+ behavior: [
10263
+ "Zero reads keyword positions",
10264
+ "Movers identified",
10265
+ "Reported in Notion"
10266
+ ],
10267
+ missingInfo: "Connectors: ahrefs required; similarweb, notion optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10268
+ }),
10269
+ defineWorkflowTemplate({
10270
+ id: "workflow-template:publish-scheduled-posts-buffer",
10271
+ category: "Marketing",
10272
+ title: "Publish scheduled posts to Buffer",
10273
+ description: "Publish the day's scheduled content and queue the social posts.",
10274
+ connectors: ["notion", "strapi", "buffer"],
10275
+ behavior: [
10276
+ "Zero reads today's calendar",
10277
+ "Published to the CMS",
10278
+ "Social queued in Buffer"
10279
+ ],
10280
+ missingInfo: "Connectors: notion, strapi required; buffer optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning) to publish the day's scheduled content.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10281
+ }),
10282
+ defineWorkflowTemplate({
10283
+ id: "workflow-template:blog-posts-to-x",
10284
+ category: "Marketing",
10285
+ title: "Turn blog posts into X posts",
10286
+ description: "Turn each new blog post into social variants queued via Buffer.",
10287
+ connectors: ["strapi", "buffer", "x"],
10288
+ behavior: [
10289
+ "Zero finds new posts",
10290
+ "Cut into social variants",
10291
+ "Queued in Buffer"
10292
+ ],
10293
+ missingInfo: "Connectors: strapi, buffer required; x optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Publishing has no native event trigger, so poll for newly published posts.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10294
+ }),
10295
+ defineWorkflowTemplate({
10296
+ id: "workflow-template:draft-newsletter-mailchimp",
10297
+ category: "Marketing",
10298
+ title: "Draft the newsletter in Mailchimp",
10299
+ description: "Assemble recent updates into a newsletter draft in Mailchimp.",
10300
+ connectors: ["github", "mailchimp"],
10301
+ behavior: [
10302
+ "Zero gathers what shipped",
10303
+ "Newsletter drafted",
10304
+ "Staged in Mailchimp"
10305
+ ],
10306
+ missingInfo: "Connectors: github, mailchimp required.\nSuggested trigger: Add a schedule trigger (e.g. monthly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10307
+ }),
10308
+ defineWorkflowTemplate({
10309
+ id: "workflow-template:compare-google-ads-last-month",
10310
+ category: "Marketing",
10311
+ title: "Compare Google Ads vs last month",
10312
+ description: "Compare ad spend and ROAS to last month and flag anomalies in Slack.",
10313
+ connectors: ["google-ads", "slack", "meta-ads"],
10314
+ behavior: [
10315
+ "Zero reads ad performance",
10316
+ "Compared to prior period",
10317
+ "Anomalies flagged in Slack"
10318
+ ],
10319
+ missingInfo: "Connectors: google-ads, slack required; meta-ads optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10320
+ }),
10067
10321
  defineWorkflowTemplate({
10068
10322
  id: "workflow-template:salesforce-pipeline-digest",
10323
+ category: "Sales",
10069
10324
  title: "Salesforce pipeline digest",
10070
10325
  description: "Summarize Salesforce opportunity changes and close-date risks in Slack each week.",
10071
10326
  connectors: ["salesforce", "slack"],
@@ -10077,8 +10332,101 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10077
10332
  ],
10078
10333
  missingInfo: "Before creating anything, ask for the Salesforce object scope, cadence, timezone, Slack channel, and pipeline rules if they are missing."
10079
10334
  }),
10335
+ defineWorkflowTemplate({
10336
+ id: "workflow-template:catch-leads-gmail",
10337
+ category: "Sales",
10338
+ title: "Catch leads from Gmail",
10339
+ description: "Spot buying signals in new email and log the qualified leads.",
10340
+ connectors: ["gmail", "apollo", "google-sheets", "slack"],
10341
+ behavior: [
10342
+ "Zero scans new mail",
10343
+ "Lead enriched and logged",
10344
+ "Next step suggested"
10345
+ ],
10346
+ missingInfo: "Connectors: gmail required; apollo, google-sheets, slack optional.\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10347
+ }),
10348
+ defineWorkflowTemplate({
10349
+ id: "workflow-template:new-gmail-contacts-hubspot",
10350
+ category: "Sales",
10351
+ title: "Add new Gmail contacts to HubSpot",
10352
+ description: "Add and enrich unknown email senders as HubSpot contacts.",
10353
+ connectors: ["gmail", "hubspot", "apollo"],
10354
+ behavior: [
10355
+ "Zero spots an unknown sender",
10356
+ "Contact created and enriched",
10357
+ "Logged for follow-up"
10358
+ ],
10359
+ missingInfo: "Connectors: gmail, hubspot required; apollo optional.\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10360
+ }),
10361
+ defineWorkflowTemplate({
10362
+ id: "workflow-template:research-new-signups-apollo",
10363
+ category: "Sales",
10364
+ title: "Research new signups with Apollo",
10365
+ description: "Research each new signup with Apollo and post a quick snapshot.",
10366
+ connectors: ["clerk", "slack", "apollo"],
10367
+ behavior: [
10368
+ "Zero reads new signups",
10369
+ "Researched with Apollo",
10370
+ "Snapshot posted to Slack"
10371
+ ],
10372
+ missingInfo: "Connectors: clerk, slack required; apollo optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Clerk signups have no native event trigger, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10373
+ }),
10374
+ defineWorkflowTemplate({
10375
+ id: "workflow-template:gmail-followups-auto",
10376
+ category: "Sales",
10377
+ title: "Send Gmail follow-ups automatically",
10378
+ description: "Find contacts who didn't reply and draft the next follow-up.",
10379
+ connectors: ["instantly", "gmail", "apollo"],
10380
+ behavior: [
10381
+ "Zero checks sequence status",
10382
+ "Next touch drafted",
10383
+ "Ready in Gmail"
10384
+ ],
10385
+ missingInfo: "Connectors: instantly, gmail required; apollo optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning). Instantly has no native event trigger, so poll for non-repliers.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10386
+ }),
10387
+ defineWorkflowTemplate({
10388
+ id: "workflow-template:prep-google-calendar-meetings",
10389
+ category: "Sales",
10390
+ title: "Prep for Google Calendar meetings",
10391
+ description: "Research external attendees and send a prep brief before meetings.",
10392
+ connectors: ["google-calendar", "apollo", "gong", "slack"],
10393
+ behavior: [
10394
+ "A meeting is added",
10395
+ "Attendee researched",
10396
+ "Prep brief sent to Slack"
10397
+ ],
10398
+ missingInfo: "Connectors: google-calendar required; apollo, gong, slack optional.\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day's meetings.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10399
+ }),
10400
+ defineWorkflowTemplate({
10401
+ id: "workflow-template:log-gong-calls-hubspot",
10402
+ category: "Sales",
10403
+ title: "Log Gong calls to HubSpot",
10404
+ description: "Pull notes and next steps from a Gong call into the HubSpot deal.",
10405
+ connectors: ["gong", "hubspot", "slack"],
10406
+ behavior: [
10407
+ "Zero reads the transcript",
10408
+ "Summary and next steps drafted",
10409
+ "Logged to HubSpot"
10410
+ ],
10411
+ missingInfo: "Connectors: gong, hubspot required; slack optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Gong has no native event trigger, so poll for new call transcripts.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10412
+ }),
10413
+ defineWorkflowTemplate({
10414
+ id: "workflow-template:support-ticket-router",
10415
+ category: "Support",
10416
+ title: "Support ticket router",
10417
+ description: "Classify support emails, create Notion records, and alert Slack for critical tickets.",
10418
+ connectors: ["gmail", "notion", "slack"],
10419
+ behavior: [
10420
+ "Create a workflow that runs from a Gmail trigger or scheduled inbox scan.",
10421
+ "Classify support messages by category, priority, customer, and requested action.",
10422
+ "Create or update structured Notion records for each qualifying ticket.",
10423
+ "Alert Slack when a ticket is urgent, blocked, or needs human follow-up."
10424
+ ],
10425
+ missingInfo: "Before creating anything, ask for the inbox or label, triage rules, Notion database, Slack channel, and escalation criteria if they are missing."
10426
+ }),
10080
10427
  defineWorkflowTemplate({
10081
10428
  id: "workflow-template:zendesk-knowledge-base",
10429
+ category: "Support",
10082
10430
  title: "Zendesk knowledge base",
10083
10431
  description: "Find recurring Zendesk questions, draft FAQ entries, and save them to Notion.",
10084
10432
  connectors: ["zendesk", "notion", "slack"],
@@ -10090,8 +10438,139 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10090
10438
  ],
10091
10439
  missingInfo: "Before creating anything, ask for the Zendesk scope, cadence, Notion destination, Slack channel, and publishing/review rules if they are missing."
10092
10440
  }),
10441
+ defineWorkflowTemplate({
10442
+ id: "workflow-template:draft-replies-notion-faq",
10443
+ category: "Support",
10444
+ title: "Draft replies from your Notion FAQ",
10445
+ description: "Draft ticket replies grounded in your Notion FAQ.",
10446
+ connectors: ["intercom", "notion", "gmail"],
10447
+ behavior: [
10448
+ "A question arrives",
10449
+ "Zero checks the Notion FAQ",
10450
+ "Reply drafted for review"
10451
+ ],
10452
+ missingInfo: "Connectors: intercom, notion required; gmail optional.\nSuggested trigger: Add a schedule trigger on a tight cadence (e.g. every 15 minutes), or a webhook-received trigger if Intercom can post to a webhook.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10453
+ }),
10454
+ defineWorkflowTemplate({
10455
+ id: "workflow-template:send-bugs-github-slack",
10456
+ category: "Support",
10457
+ title: "Send bugs to GitHub and Slack",
10458
+ description: "File bug-tagged reports as GitHub issues and alert the team on Slack.",
10459
+ connectors: ["github", "slack", "linear"],
10460
+ behavior: [
10461
+ "An issue is labeled bug",
10462
+ "Repro and impact packaged",
10463
+ "Sent to engineering"
10464
+ ],
10465
+ missingInfo: "Connectors: github, slack required; linear optional.\nSuggested trigger: Add a github-label-applied event trigger on the bug label.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10466
+ }),
10467
+ defineWorkflowTemplate({
10468
+ id: "workflow-template:spot-churn-risk-stripe-zendesk",
10469
+ category: "Support",
10470
+ title: "Spot churn risk in Stripe and Zendesk",
10471
+ description: "Flag accounts at risk of churn and draft a recovery email.",
10472
+ connectors: ["clerk", "stripe", "zendesk", "resend", "slack"],
10473
+ behavior: [
10474
+ "Zero scans accounts",
10475
+ "At-risk accounts flagged",
10476
+ "Recovery email drafted"
10477
+ ],
10478
+ missingInfo: "Connectors: clerk required; stripe, zendesk, resend, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Stripe and Zendesk have no native event trigger here, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10479
+ }),
10480
+ defineWorkflowTemplate({
10481
+ id: "workflow-template:summarize-zendesk-tickets-daily",
10482
+ category: "Support",
10483
+ title: "Summarize Zendesk tickets daily",
10484
+ description: "Summarize the last day of Zendesk tickets and post it to Slack.",
10485
+ connectors: ["zendesk", "slack"],
10486
+ behavior: [
10487
+ "Zero reads the queue",
10488
+ "Grouped by severity and age",
10489
+ "Posted to Slack"
10490
+ ],
10491
+ missingInfo: "Connectors: zendesk, slack required.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10492
+ }),
10493
+ defineWorkflowTemplate({
10494
+ id: "workflow-template:daily-company-brief-slack",
10495
+ category: "CEO",
10496
+ title: "Post a daily company brief to Slack",
10497
+ description: "Pull product, growth, and revenue into a daily brief on Slack.",
10498
+ connectors: ["plausible", "slack", "clerk", "stripe", "github", "sentry"],
10499
+ behavior: [
10500
+ "Zero gathers the signals",
10501
+ "Assembled into a pulse",
10502
+ "Posted to Slack"
10503
+ ],
10504
+ missingInfo: "Connectors: plausible, slack required; clerk, stripe, github, sentry optional.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10505
+ }),
10506
+ defineWorkflowTemplate({
10507
+ id: "workflow-template:daily-industry-news-slack",
10508
+ category: "CEO",
10509
+ title: "Post daily industry news to Slack",
10510
+ description: "Round up the day's relevant industry news into a Slack brief.",
10511
+ connectors: ["exa", "slack"],
10512
+ behavior: [
10513
+ "Zero scans the news",
10514
+ "Distilled into a brief",
10515
+ "Posted to Slack"
10516
+ ],
10517
+ missingInfo: "Connectors: exa, slack required.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10518
+ }),
10519
+ defineWorkflowTemplate({
10520
+ id: "workflow-template:business-review-gamma",
10521
+ category: "CEO",
10522
+ title: "Build the business review in Gamma",
10523
+ description: "Turn the month's metrics into a business review deck in Gamma.",
10524
+ connectors: ["stripe", "gamma", "clerk"],
10525
+ behavior: [
10526
+ "Zero pulls the numbers",
10527
+ "Deck built in Gamma",
10528
+ "Ready to present"
10529
+ ],
10530
+ missingInfo: "Connectors: stripe, gamma required; clerk optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10531
+ }),
10532
+ defineWorkflowTemplate({
10533
+ id: "workflow-template:highlight-key-emails-gmail",
10534
+ category: "CEO",
10535
+ title: "Highlight key emails in Gmail",
10536
+ description: "Surface the few emails that actually need your attention.",
10537
+ connectors: ["gmail", "slack"],
10538
+ behavior: [
10539
+ "Zero reads the inbox",
10540
+ "Priorities identified",
10541
+ "Posted to Slack"
10542
+ ],
10543
+ missingInfo: "Connectors: gmail, slack required.\nSuggested trigger: Add a gmail-new-message event trigger, or a schedule trigger that runs a few times a day.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10544
+ }),
10545
+ defineWorkflowTemplate({
10546
+ id: "workflow-template:investor-update-google-docs",
10547
+ category: "CEO",
10548
+ title: "Draft the investor update in Google Docs",
10549
+ description: "Assemble metrics and highlights into an investor update in Docs.",
10550
+ connectors: ["stripe", "google-docs", "google-sheets"],
10551
+ behavior: [
10552
+ "Zero gathers KPIs",
10553
+ "Update drafted",
10554
+ "Editable in Google Docs"
10555
+ ],
10556
+ missingInfo: "Connectors: stripe, google-docs required; google-sheets optional.\nSuggested trigger: Add a schedule trigger (e.g. monthly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10557
+ }),
10558
+ defineWorkflowTemplate({
10559
+ id: "workflow-template:gmail-reconnect-reminders",
10560
+ category: "CEO",
10561
+ title: "Get Gmail reconnect reminders",
10562
+ description: "Surface important contacts you haven't emailed in a while.",
10563
+ connectors: ["gmail", "google-calendar", "slack"],
10564
+ behavior: [
10565
+ "Zero reviews your contacts",
10566
+ "Quiet relationships surfaced",
10567
+ "Openers suggested"
10568
+ ],
10569
+ missingInfo: "Connectors: gmail required; google-calendar, slack optional.\nSuggested trigger: Add a schedule trigger (e.g. weekly).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10570
+ }),
10093
10571
  defineWorkflowTemplate({
10094
10572
  id: "workflow-template:clickup-slack-standup",
10573
+ category: "Operations",
10095
10574
  title: "ClickUp Slack standup",
10096
10575
  description: "Pull ClickUp tasks each morning and post a team standup summary to Slack.",
10097
10576
  connectors: ["clickup", "slack"],
@@ -10102,6 +10581,161 @@ var WORKFLOW_TEMPLATE_ITEMS = [
10102
10581
  "Post the standup summary to the selected Slack channel."
10103
10582
  ],
10104
10583
  missingInfo: "Before creating anything, ask for the ClickUp scope, schedule, timezone, grouping preference, and Slack channel if they are missing."
10584
+ }),
10585
+ defineWorkflowTemplate({
10586
+ id: "workflow-template:sync-asana-projects-notion",
10587
+ category: "Operations",
10588
+ title: "Sync Asana projects to Notion",
10589
+ description: "Roll up Asana project status into a single board in Notion.",
10590
+ connectors: ["asana", "notion"],
10591
+ behavior: ["Zero reads Asana", "Rolled into one board", "Digest posted"],
10592
+ missingInfo: "Connectors: asana, notion required.\nSuggested trigger: Add a schedule trigger (e.g. every morning). Asana has no native event trigger, so poll on a cadence.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10593
+ }),
10594
+ defineWorkflowTemplate({
10595
+ id: "workflow-template:meeting-notes-asana-tasks",
10596
+ category: "Operations",
10597
+ title: "Turn meeting notes into Asana tasks",
10598
+ description: "Turn meeting notes into assigned, due-dated tasks in Asana.",
10599
+ connectors: ["fireflies", "asana"],
10600
+ behavior: [
10601
+ "Zero reads the transcript",
10602
+ "Action items extracted",
10603
+ "Tasks created in Asana"
10604
+ ],
10605
+ missingInfo: "Connectors: fireflies, asana required.\nSuggested trigger: Add a google-meet-transcript-generated event trigger if you meet on Google Meet; otherwise a schedule trigger, since Fireflies has no native event trigger.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10606
+ }),
10607
+ defineWorkflowTemplate({
10608
+ id: "workflow-template:file-gmail-invoices-drive",
10609
+ category: "Operations",
10610
+ title: "File Gmail invoices to Google Drive",
10611
+ description: "File invoice emails to Drive and log each one in a Sheet.",
10612
+ connectors: ["gmail", "google-drive", "google-sheets"],
10613
+ behavior: [
10614
+ "An invoice is labeled",
10615
+ "Filed to Google Drive",
10616
+ "Logged in a sheet"
10617
+ ],
10618
+ missingInfo: "Connectors: gmail, google-drive required; google-sheets optional.\nSuggested trigger: Add a gmail-label-applied event trigger on the label you use for invoices.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10619
+ }),
10620
+ defineWorkflowTemplate({
10621
+ id: "workflow-template:onboard-new-hires-asana",
10622
+ category: "Operations",
10623
+ title: "Onboard new hires in Asana",
10624
+ description: "Create the onboarding task checklist for each new hire in Asana.",
10625
+ connectors: ["deel", "asana", "google-drive"],
10626
+ behavior: [
10627
+ "A new hire is added",
10628
+ "Checklist created in Asana",
10629
+ "Docs provisioned"
10630
+ ],
10631
+ missingInfo: "Connectors: deel, asana required; google-drive optional.\nSuggested trigger: Add a schedule trigger (e.g. daily). Deel has no native event trigger, so poll for new hires.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10632
+ }),
10633
+ defineWorkflowTemplate({
10634
+ id: "workflow-template:chase-overdue-asana-tasks",
10635
+ category: "Operations",
10636
+ title: "Chase overdue Asana tasks",
10637
+ description: "Find overdue Asana tasks and nudge their owners on Slack.",
10638
+ connectors: ["asana", "slack"],
10639
+ behavior: ["Zero scans Asana", "Owners identified", "Nudges sent in Slack"],
10640
+ missingInfo: "Connectors: asana, slack required.\nSuggested trigger: Add a schedule trigger (e.g. every morning).\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10641
+ }),
10642
+ defineWorkflowTemplate({
10643
+ id: "workflow-template:catch-calendar-conflicts",
10644
+ category: "Operations",
10645
+ title: "Catch Google Calendar conflicts",
10646
+ description: "Scan your calendar for double-bookings and alert you early.",
10647
+ connectors: ["cal-com", "google-calendar", "slack"],
10648
+ behavior: [
10649
+ "An event is created",
10650
+ "Checked for conflicts",
10651
+ "Conflict flagged in Slack"
10652
+ ],
10653
+ missingInfo: "Connectors: cal-com, google-calendar required; slack optional.\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day for conflicts.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10654
+ }),
10655
+ defineWorkflowTemplate({
10656
+ id: "workflow-template:personal-weekly-digest",
10657
+ category: "Everyone",
10658
+ title: "Personal weekly digest",
10659
+ description: "Summarize GitHub, Gmail, and Calendar activity into one weekly Slack update.",
10660
+ connectors: ["github", "gmail", "google-calendar", "slack"],
10661
+ behavior: [
10662
+ "Create a weekly scheduled workflow for the selected owner.",
10663
+ "Collect recent pull requests, important inbox threads, and upcoming or completed calendar events.",
10664
+ "Group the digest into accomplishments, pending decisions, follow-ups, and upcoming commitments.",
10665
+ "Send the digest to the user's chosen Slack destination."
10666
+ ],
10667
+ missingInfo: "Before creating anything, ask for the day/time, timezone, GitHub scope, Gmail filters, calendar scope, and Slack destination if they are missing."
10668
+ }),
10669
+ defineWorkflowTemplate({
10670
+ id: "workflow-template:morning-brief",
10671
+ category: "Everyone",
10672
+ title: "Morning brief",
10673
+ description: "Turn Gmail, Calendar, and Notion updates into a short daily plan in Slack.",
10674
+ connectors: ["gmail", "google-calendar", "notion", "slack"],
10675
+ behavior: [
10676
+ "Create a daily scheduled workflow that prepares a morning planning brief.",
10677
+ "Review important email, calendar events, and relevant Notion updates.",
10678
+ "Prioritize the day into meetings, decisions, follow-ups, and focus blocks.",
10679
+ "Post the brief to Slack or another destination the user chooses."
10680
+ ],
10681
+ missingInfo: "Before creating anything, ask for the schedule, timezone, Slack destination, Gmail scope, calendar scope, and Notion sources if they are missing."
10682
+ }),
10683
+ defineWorkflowTemplate({
10684
+ id: "workflow-template:sort-gmail-draft-replies",
10685
+ category: "Everyone",
10686
+ title: "Sort Gmail and draft replies",
10687
+ description: "Sort your inbox and draft replies to the emails that need them.",
10688
+ connectors: ["gmail"],
10689
+ behavior: ["Zero reads new mail", "Sorted by urgency", "Replies drafted"],
10690
+ missingInfo: "Connectors: gmail required.\nSuggested trigger: Add a gmail-new-message event trigger so it runs on each new incoming email.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10691
+ }),
10692
+ defineWorkflowTemplate({
10693
+ id: "workflow-template:research-calendar-meetings",
10694
+ category: "Everyone",
10695
+ title: "Research your calendar meetings",
10696
+ description: "Research the people you're meeting before each calendar event.",
10697
+ connectors: ["google-calendar", "exa", "slack"],
10698
+ behavior: [
10699
+ "A meeting is added",
10700
+ "Attendees researched",
10701
+ "Dossier delivered"
10702
+ ],
10703
+ missingInfo: "Connectors: google-calendar required; exa, slack optional.\nSuggested trigger: Add a google-calendar-event-created event trigger, or a morning schedule that scans the day's meetings.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10704
+ }),
10705
+ defineWorkflowTemplate({
10706
+ id: "workflow-template:summarize-gmail-newsletters",
10707
+ category: "Everyone",
10708
+ title: "Summarize Gmail newsletters",
10709
+ description: "Digest the newsletters in your inbox into one short summary.",
10710
+ connectors: ["gmail", "slack"],
10711
+ behavior: [
10712
+ "Zero collects newsletters",
10713
+ "Digested into one summary",
10714
+ "Posted to Slack"
10715
+ ],
10716
+ missingInfo: "Connectors: gmail, slack required.\nSuggested trigger: Add a schedule trigger (e.g. weekly) to digest the newsletters, or a gmail-label-applied trigger on your newsletter label.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10717
+ }),
10718
+ defineWorkflowTemplate({
10719
+ id: "workflow-template:meeting-recaps-slack",
10720
+ category: "Everyone",
10721
+ title: "Get meeting recaps in Slack",
10722
+ description: "Share a recap with decisions and action items after each meeting.",
10723
+ connectors: ["fireflies", "gmail", "slack"],
10724
+ behavior: ["Zero reads the transcript", "Recap written", "Sent to you"],
10725
+ missingInfo: "Connectors: fireflies required; gmail, slack optional.\nSuggested trigger: Add a google-meet-transcript-generated event trigger if you meet on Google Meet; otherwise a schedule trigger, since Fireflies has no native event trigger.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10726
+ }),
10727
+ defineWorkflowTemplate({
10728
+ id: "workflow-template:flagged-gmail-todoist-tasks",
10729
+ category: "Everyone",
10730
+ title: "Turn flagged Gmail into Todoist tasks",
10731
+ description: "Turn the emails you flag into Todoist tasks automatically.",
10732
+ connectors: ["gmail", "todoist"],
10733
+ behavior: [
10734
+ "You flag an email",
10735
+ "Zero researches it",
10736
+ "Task filed in Todoist"
10737
+ ],
10738
+ missingInfo: "Connectors: gmail, todoist required.\nSuggested trigger: Add a gmail-label-applied event trigger on the label you apply to flag an email.\n\nBefore creating anything, confirm the trigger details, the destination (channel, doc, or sheet), and any labels, names, or thresholds referenced above, then connect any missing required connectors."
10105
10739
  })
10106
10740
  ];
10107
10741
 
@@ -10894,139 +11528,15 @@ var c18 = initContract();
10894
11528
  var testAutomationsStateErrorSchema = external_exports.object({
10895
11529
  error: external_exports.string()
10896
11530
  });
10897
- var testAutomationsStateSeedSchema = external_exports.object({
10898
- name: external_exports.string(),
10899
- prompt: external_exports.string(),
10900
- description: external_exports.string().nullable().optional(),
10901
- cronExpression: external_exports.string().optional(),
10902
- atTime: external_exports.string().optional(),
10903
- intervalSeconds: external_exports.number().int().positive().optional(),
10904
- triggerType: external_exports.enum(["cron", "once", "loop"]).optional(),
10905
- enabled: external_exports.boolean().optional(),
10906
- nextRunAt: external_exports.string().nullable().optional(),
10907
- lastRunId: external_exports.string().nullable().optional(),
10908
- appendSystemPrompt: external_exports.string().nullable().optional(),
10909
- timezone: external_exports.string().optional(),
10910
- consecutiveFailures: external_exports.number().int().nonnegative().optional()
10911
- });
10912
- var testAutomationsStatePostBodySchema = external_exports.object({
10913
- automations: external_exports.array(testAutomationsStateSeedSchema),
10914
- displayName: external_exports.string().optional(),
10915
- agentName: external_exports.string().optional(),
10916
- userName: external_exports.string().nullable().optional(),
10917
- userEmail: external_exports.string().nullable().optional(),
10918
- timezone: external_exports.string().nullable().optional(),
10919
- framework: external_exports.enum(["claude-code", "codex"]).optional()
10920
- });
10921
- var testAutomationsStatePostResponseSchema = external_exports.object({
10922
- org_id: external_exports.string(),
10923
- user_id: external_exports.string(),
10924
- compose_id: external_exports.string(),
10925
- automation_ids: external_exports.array(external_exports.string())
10926
- });
10927
- var testAutomationsStateDeleteResponseSchema = external_exports.object({
10928
- ok: external_exports.literal(true)
10929
- });
10930
- var testAutomationsStateTriggerRowSchema = external_exports.object({
10931
- id: external_exports.string(),
10932
- automation_id: external_exports.string(),
10933
- kind: external_exports.enum(["cron", "once", "loop"]),
10934
- cron_expression: external_exports.string().nullable(),
10935
- at_time: external_exports.string().nullable(),
10936
- interval_seconds: external_exports.number().nullable(),
10937
- timezone: external_exports.string(),
10938
- enabled: external_exports.boolean(),
10939
- next_run_at: external_exports.string().nullable(),
10940
- last_run_id: external_exports.string().nullable(),
10941
- consecutive_failures: external_exports.number()
10942
- });
10943
- var testAutomationsStateReadResponseSchema = external_exports.object({
10944
- automation: external_exports.object({
10945
- id: external_exports.string(),
10946
- org_id: external_exports.string(),
10947
- enabled: external_exports.boolean(),
10948
- interpreter_kind: external_exports.string(),
10949
- chat_thread_id: external_exports.string(),
10950
- chat_thread: external_exports.object({
10951
- title: external_exports.string().nullable(),
10952
- user_id: external_exports.string(),
10953
- agent_compose_id: external_exports.string()
10954
- }).nullable()
10955
- }).nullable(),
10956
- triggers: external_exports.array(testAutomationsStateTriggerRowSchema),
10957
- runs: external_exports.array(
10958
- external_exports.object({
10959
- id: external_exports.string(),
10960
- automation_id: external_exports.string().nullable()
10961
- })
10962
- ),
10963
- run: external_exports.object({
10964
- zero_run: external_exports.object({
10965
- trigger_source: external_exports.string().nullable(),
10966
- automation_id: external_exports.string().nullable(),
10967
- trigger_id: external_exports.string().nullable(),
10968
- chat_thread_id: external_exports.string().nullable()
10969
- }).nullable(),
10970
- agent_run: external_exports.object({
10971
- prompt: external_exports.string().nullable(),
10972
- append_system_prompt: external_exports.string().nullable()
10973
- }).nullable(),
10974
- callbacks: external_exports.array(
10975
- external_exports.object({
10976
- url: external_exports.string().nullable(),
10977
- internal_kind: external_exports.string().nullable(),
10978
- payload: external_exports.unknown()
10979
- })
10980
- ),
10981
- messages: external_exports.array(
10982
- external_exports.object({
10983
- role: external_exports.string(),
10984
- content: external_exports.string(),
10985
- automation_title: external_exports.string().nullable(),
10986
- automation_snapshot: external_exports.unknown()
10987
- })
10988
- )
10989
- }).nullable()
10990
- });
10991
- var testAutomationsStatePatchBodySchema = external_exports.object({
10992
- trigger_id: external_exports.string().optional(),
10993
- automation_id: external_exports.string().optional(),
10994
- at_time: external_exports.string().nullable().optional(),
10995
- next_run_at: external_exports.string().nullable().optional(),
10996
- enabled: external_exports.boolean().optional(),
10997
- last_run_id: external_exports.string().nullable().optional(),
10998
- consecutive_failures: external_exports.number().int().nonnegative().optional()
10999
- });
11000
11531
  var testAutomationsStateActionBodySchema = external_exports.discriminatedUnion(
11001
11532
  "action",
11002
- [
11003
- external_exports.object({
11004
- action: external_exports.literal("cleanup-created-automations"),
11005
- org_id: external_exports.string()
11006
- }),
11533
+ [
11007
11534
  external_exports.object({
11008
11535
  action: external_exports.literal("seed-compose"),
11009
11536
  org_id: external_exports.string(),
11010
11537
  user_id: external_exports.string(),
11011
11538
  compose_id: external_exports.string().optional()
11012
11539
  }),
11013
- external_exports.object({
11014
- action: external_exports.literal("delete-compose"),
11015
- compose_id: external_exports.string()
11016
- }),
11017
- external_exports.object({
11018
- action: external_exports.literal("seed-run"),
11019
- org_id: external_exports.string(),
11020
- user_id: external_exports.string(),
11021
- compose_id: external_exports.string(),
11022
- status: external_exports.string().optional(),
11023
- prompt: external_exports.string().optional()
11024
- }),
11025
- external_exports.object({
11026
- action: external_exports.literal("delete-org-member"),
11027
- org_id: external_exports.string(),
11028
- user_id: external_exports.string()
11029
- }),
11030
11540
  external_exports.object({
11031
11541
  action: external_exports.literal("read-compose-head-version"),
11032
11542
  compose_id: external_exports.string()
@@ -11051,49 +11561,11 @@ var testAutomationsStateActionBodySchema = external_exports.discriminatedUnion(
11051
11561
  var testAutomationsStateActionResponseSchema = external_exports.object({
11052
11562
  ok: external_exports.literal(true),
11053
11563
  compose_id: external_exports.string().optional(),
11054
- run_id: external_exports.string().optional(),
11055
11564
  head_version_id: external_exports.string().nullable().optional(),
11056
11565
  selected_model: external_exports.string().optional(),
11057
11566
  decrypt_call_count: external_exports.number().optional()
11058
11567
  });
11059
11568
  var testAutomationsStateContract = c18.router({
11060
- post: {
11061
- method: "POST",
11062
- path: "/api/test/automations-state",
11063
- body: testAutomationsStatePostBodySchema,
11064
- responses: {
11065
- 200: testAutomationsStatePostResponseSchema,
11066
- 400: testAutomationsStateErrorSchema,
11067
- 404: external_exports.string()
11068
- },
11069
- summary: "Seed automations API test state"
11070
- },
11071
- get: {
11072
- method: "GET",
11073
- path: "/api/test/automations-state/read",
11074
- query: external_exports.object({
11075
- automation_id: external_exports.string().optional(),
11076
- automation_ids: external_exports.string().optional(),
11077
- run_id: external_exports.string().optional(),
11078
- org_id: external_exports.string().optional()
11079
- }),
11080
- responses: {
11081
- 200: testAutomationsStateReadResponseSchema,
11082
- 404: external_exports.string()
11083
- },
11084
- summary: "Read automations API test state"
11085
- },
11086
- patch: {
11087
- method: "PATCH",
11088
- path: "/api/test/automations-state/trigger",
11089
- body: testAutomationsStatePatchBodySchema,
11090
- responses: {
11091
- 200: testAutomationsStateDeleteResponseSchema,
11092
- 400: testAutomationsStateErrorSchema,
11093
- 404: external_exports.string()
11094
- },
11095
- summary: "Patch automation trigger runtime state"
11096
- },
11097
11569
  action: {
11098
11570
  method: "POST",
11099
11571
  path: "/api/test/automations-state/action",
@@ -11103,23 +11575,7 @@ var testAutomationsStateContract = c18.router({
11103
11575
  400: testAutomationsStateErrorSchema,
11104
11576
  404: external_exports.string()
11105
11577
  },
11106
- summary: "Mutate automations API test support state"
11107
- },
11108
- delete: {
11109
- method: "DELETE",
11110
- path: "/api/test/automations-state",
11111
- query: external_exports.object({
11112
- org_id: external_exports.string().optional(),
11113
- user_id: external_exports.string().optional(),
11114
- compose_id: external_exports.string().optional(),
11115
- automation_ids: external_exports.string().optional()
11116
- }),
11117
- responses: {
11118
- 200: testAutomationsStateDeleteResponseSchema,
11119
- 400: testAutomationsStateErrorSchema,
11120
- 404: external_exports.string()
11121
- },
11122
- summary: "Clear automations API test state"
11578
+ summary: "Mutate API test support state"
11123
11579
  }
11124
11580
  });
11125
11581
 
@@ -11899,14 +12355,6 @@ var testUsageInsightStateFixtureSchema = external_exports.object({
11899
12355
  user_id: external_exports.string()
11900
12356
  });
11901
12357
  var usageInsightFixtureInputSchema = testUsageInsightStateFixtureSchema;
11902
- var bonusUsageEventSchema = external_exports.object({
11903
- kind: external_exports.string(),
11904
- provider: external_exports.string(),
11905
- category: external_exports.string(),
11906
- quantity: external_exports.number(),
11907
- credits_charged: external_exports.number(),
11908
- status: external_exports.string()
11909
- });
11910
12358
  var testUsageInsightStateActionBodySchema = external_exports.discriminatedUnion(
11911
12359
  "action",
11912
12360
  [
@@ -11931,7 +12379,6 @@ var testUsageInsightStateActionBodySchema = external_exports.discriminatedUnion(
11931
12379
  user_id: external_exports.string(),
11932
12380
  compose_id: external_exports.string(),
11933
12381
  trigger_source: external_exports.string().optional(),
11934
- automation_id: external_exports.string().optional(),
11935
12382
  chat_thread_id: external_exports.string().optional(),
11936
12383
  status: external_exports.string().optional(),
11937
12384
  prompt: external_exports.string().optional(),
@@ -11945,14 +12392,6 @@ var testUsageInsightStateActionBodySchema = external_exports.discriminatedUnion(
11945
12392
  last_event_sequence: external_exports.number().nullable().optional(),
11946
12393
  selected_model: external_exports.string().nullable().optional()
11947
12394
  }),
11948
- external_exports.object({
11949
- action: external_exports.literal("seed-automation"),
11950
- org_id: external_exports.string(),
11951
- user_id: external_exports.string(),
11952
- agent_id: external_exports.string(),
11953
- name: external_exports.string().optional(),
11954
- description: external_exports.string().optional()
11955
- }),
11956
12395
  external_exports.object({
11957
12396
  action: external_exports.literal("seed-chat-thread"),
11958
12397
  user_id: external_exports.string(),
@@ -11991,18 +12430,6 @@ var testUsageInsightStateActionBodySchema = external_exports.discriminatedUnion(
11991
12430
  action: external_exports.literal("set-usage-event-created-at"),
11992
12431
  id: external_exports.string(),
11993
12432
  created_at: external_exports.string()
11994
- }),
11995
- external_exports.object({
11996
- action: external_exports.literal("seed-automation-batch"),
11997
- org_id: external_exports.string(),
11998
- user_id: external_exports.string(),
11999
- compose_id: external_exports.string(),
12000
- entries: external_exports.array(
12001
- external_exports.object({
12002
- credits: external_exports.number(),
12003
- bonus: bonusUsageEventSchema.nullable().optional()
12004
- })
12005
- )
12006
12433
  })
12007
12434
  ]
12008
12435
  );
@@ -12012,10 +12439,8 @@ var testUsageInsightStateActionResponseSchema = external_exports.object({
12012
12439
  compose_id: external_exports.string().optional(),
12013
12440
  agent_id: external_exports.string().optional(),
12014
12441
  run_id: external_exports.string().optional(),
12015
- automation_id: external_exports.string().optional(),
12016
12442
  chat_thread_id: external_exports.string().optional(),
12017
- usage_event_id: external_exports.string().optional(),
12018
- automation_ids: external_exports.array(external_exports.string()).optional()
12443
+ usage_event_id: external_exports.string().optional()
12019
12444
  });
12020
12445
  var testUsageInsightStateContract = c26.router({
12021
12446
  action: {
@@ -13957,35 +14382,6 @@ var zeroComposesListContract = c50.router({
13957
14382
  }
13958
14383
  });
13959
14384
 
13960
- // ../../packages/api-contracts/src/contracts/automation-view.ts
13961
- init_esm_shims();
13962
- var automationViewSchema = external_exports.object({
13963
- id: external_exports.string().uuid(),
13964
- agentId: external_exports.string().uuid(),
13965
- displayName: external_exports.string().nullable(),
13966
- userId: external_exports.string(),
13967
- name: external_exports.string(),
13968
- triggerType: external_exports.enum(["cron", "once", "loop"]),
13969
- cronExpression: external_exports.string().nullable(),
13970
- atTime: external_exports.string().nullable(),
13971
- intervalSeconds: external_exports.number().nullable(),
13972
- timezone: external_exports.string(),
13973
- prompt: external_exports.string(),
13974
- description: external_exports.string().nullable(),
13975
- appendSystemPrompt: external_exports.string().nullable(),
13976
- enabled: external_exports.boolean(),
13977
- nextRunAt: external_exports.string().nullable(),
13978
- lastRunAt: external_exports.string().nullable(),
13979
- retryStartedAt: external_exports.string().nullable(),
13980
- consecutiveFailures: external_exports.number(),
13981
- // Linked chat thread. Set at creation and immutable after (any chatThreadId
13982
- // supplied on update is ignored). Every automation is linked to a chat
13983
- // thread, so this is always present.
13984
- chatThreadId: external_exports.string().uuid(),
13985
- createdAt: external_exports.string(),
13986
- updatedAt: external_exports.string()
13987
- });
13988
-
13989
14385
  // ../../packages/api-contracts/src/contracts/zero-personal-model-providers.ts
13990
14386
  init_esm_shims();
13991
14387
  var c51 = initContract();
@@ -15726,310 +16122,15 @@ var zeroVideoIoGenerateContract = c81.router({
15726
16122
  }
15727
16123
  });
15728
16124
 
15729
- // ../../packages/api-contracts/src/contracts/automations.ts
15730
- init_esm_shims();
15731
- var c82 = initContract();
15732
- var triggerBaseShape = {
15733
- id: external_exports.string().uuid(),
15734
- automationId: external_exports.string().uuid(),
15735
- enabled: external_exports.boolean(),
15736
- createdAt: external_exports.string(),
15737
- updatedAt: external_exports.string()
15738
- };
15739
- var timeTriggerRuntimeShape = {
15740
- timezone: external_exports.string(),
15741
- nextRunAt: external_exports.string().nullable(),
15742
- lastRunAt: external_exports.string().nullable(),
15743
- consecutiveFailures: external_exports.number()
15744
- };
15745
- var automationTriggerResponseSchema = external_exports.discriminatedUnion("kind", [
15746
- external_exports.object({
15747
- ...triggerBaseShape,
15748
- kind: external_exports.literal("cron"),
15749
- cronExpression: external_exports.string(),
15750
- ...timeTriggerRuntimeShape
15751
- }),
15752
- external_exports.object({
15753
- ...triggerBaseShape,
15754
- kind: external_exports.literal("once"),
15755
- atTime: external_exports.string(),
15756
- ...timeTriggerRuntimeShape
15757
- }),
15758
- external_exports.object({
15759
- ...triggerBaseShape,
15760
- kind: external_exports.literal("loop"),
15761
- intervalSeconds: external_exports.number(),
15762
- ...timeTriggerRuntimeShape
15763
- })
15764
- ]);
15765
- var automationResponseSchema = external_exports.object({
15766
- id: external_exports.string().uuid(),
15767
- agentId: external_exports.string().uuid(),
15768
- displayName: external_exports.string().nullable(),
15769
- userId: external_exports.string(),
15770
- name: external_exports.string(),
15771
- description: external_exports.string().nullable(),
15772
- instruction: external_exports.string(),
15773
- appendSystemPrompt: external_exports.string().nullable(),
15774
- enabled: external_exports.boolean(),
15775
- chatThreadId: external_exports.string().uuid(),
15776
- createdAt: external_exports.string(),
15777
- updatedAt: external_exports.string(),
15778
- triggers: external_exports.array(automationTriggerResponseSchema)
15779
- });
15780
- var automationListResponseSchema = external_exports.object({
15781
- automations: external_exports.array(automationResponseSchema)
15782
- });
15783
- var cronTriggerConfigSchema = external_exports.object({
15784
- kind: external_exports.literal("cron"),
15785
- cronExpression: external_exports.string().min(1),
15786
- timezone: external_exports.string().optional()
15787
- });
15788
- var onceTriggerConfigSchema = external_exports.object({
15789
- kind: external_exports.literal("once"),
15790
- atTime: external_exports.string().min(1),
15791
- timezone: external_exports.string().optional()
15792
- });
15793
- var loopTriggerConfigSchema = external_exports.object({
15794
- kind: external_exports.literal("loop"),
15795
- intervalSeconds: external_exports.number().int().positive()
15796
- });
15797
- var createTriggerRequestSchema = external_exports.discriminatedUnion("kind", [
15798
- cronTriggerConfigSchema,
15799
- onceTriggerConfigSchema,
15800
- loopTriggerConfigSchema
15801
- ]);
15802
- var updateTriggerRequestSchema = external_exports.discriminatedUnion("kind", [
15803
- cronTriggerConfigSchema,
15804
- onceTriggerConfigSchema,
15805
- loopTriggerConfigSchema
15806
- ]);
15807
- var createAutomationRequestSchema = external_exports.object({
15808
- name: external_exports.string().min(1).max(64, "Automation name max 64 chars"),
15809
- agentId: external_exports.string().uuid("Invalid agent ID"),
15810
- instruction: external_exports.string().min(1, "Instruction required"),
15811
- description: external_exports.string().optional(),
15812
- appendSystemPrompt: external_exports.string().optional(),
15813
- enabled: external_exports.boolean().optional(),
15814
- // Chat-thread linkage, honored only on creation. When provided, links the
15815
- // automation to an existing owned chat thread; when omitted, the server
15816
- // creates a web chat thread and links it.
15817
- chatThreadId: external_exports.string().uuid("Invalid chat thread ID").optional(),
15818
- trigger: createTriggerRequestSchema
15819
- });
15820
- var updateAutomationRequestSchema = external_exports.object({
15821
- name: external_exports.string().min(1).max(64).optional(),
15822
- instruction: external_exports.string().min(1).optional(),
15823
- description: external_exports.string().nullable().optional(),
15824
- appendSystemPrompt: external_exports.string().nullable().optional()
15825
- });
15826
- var automationMutationResponseSchema = external_exports.object({
15827
- automation: automationResponseSchema
15828
- });
15829
- var triggerMutationResponseSchema = external_exports.object({
15830
- trigger: automationTriggerResponseSchema
15831
- });
15832
- var automationRunResponseSchema = external_exports.object({
15833
- runId: external_exports.string()
15834
- });
15835
- var refParamsSchema = external_exports.object({
15836
- // Automation id (UUID) or unique name within the org/user scope.
15837
- ref: external_exports.string().min(1)
15838
- });
15839
- var triggerIdParamsSchema = external_exports.object({
15840
- id: external_exports.string().uuid("Invalid trigger ID")
15841
- });
15842
- var automationsMainContract = c82.router({
15843
- create: {
15844
- method: "POST",
15845
- path: "/api/automations",
15846
- headers: authHeadersSchema,
15847
- body: createAutomationRequestSchema,
15848
- responses: {
15849
- 201: automationMutationResponseSchema,
15850
- 400: apiErrorSchema,
15851
- 401: apiErrorSchema,
15852
- 403: apiErrorSchema,
15853
- 404: apiErrorSchema
15854
- },
15855
- summary: "Create an automation with its schedule trigger"
15856
- },
15857
- list: {
15858
- method: "GET",
15859
- path: "/api/automations",
15860
- headers: authHeadersSchema,
15861
- responses: {
15862
- 200: automationListResponseSchema,
15863
- 401: apiErrorSchema,
15864
- 403: apiErrorSchema,
15865
- 404: apiErrorSchema
15866
- },
15867
- summary: "List automations with their triggers"
15868
- }
15869
- });
15870
- var automationsByRefContract = c82.router({
15871
- show: {
15872
- method: "GET",
15873
- path: "/api/automations/:ref",
15874
- headers: authHeadersSchema,
15875
- pathParams: refParamsSchema,
15876
- responses: {
15877
- 200: automationResponseSchema,
15878
- 400: apiErrorSchema,
15879
- 401: apiErrorSchema,
15880
- 403: apiErrorSchema,
15881
- 404: apiErrorSchema
15882
- },
15883
- summary: "Show an automation and its triggers"
15884
- },
15885
- update: {
15886
- method: "PATCH",
15887
- path: "/api/automations/:ref",
15888
- headers: authHeadersSchema,
15889
- pathParams: refParamsSchema,
15890
- body: updateAutomationRequestSchema,
15891
- responses: {
15892
- 200: automationResponseSchema,
15893
- 400: apiErrorSchema,
15894
- 401: apiErrorSchema,
15895
- 403: apiErrorSchema,
15896
- 404: apiErrorSchema
15897
- },
15898
- summary: "Update an automation's identity/intent fields"
15899
- },
15900
- delete: {
15901
- method: "DELETE",
15902
- path: "/api/automations/:ref",
15903
- headers: authHeadersSchema,
15904
- pathParams: refParamsSchema,
15905
- responses: {
15906
- 204: c82.noBody(),
15907
- 400: apiErrorSchema,
15908
- 401: apiErrorSchema,
15909
- 403: apiErrorSchema,
15910
- 404: apiErrorSchema
15911
- },
15912
- summary: "Delete an automation (its triggers cascade)"
15913
- },
15914
- enable: {
15915
- method: "POST",
15916
- path: "/api/automations/:ref/enable",
15917
- headers: authHeadersSchema,
15918
- pathParams: refParamsSchema,
15919
- body: external_exports.object({}).optional(),
15920
- responses: {
15921
- 200: automationResponseSchema,
15922
- 400: apiErrorSchema,
15923
- 401: apiErrorSchema,
15924
- 403: apiErrorSchema,
15925
- 404: apiErrorSchema
15926
- },
15927
- summary: "Enable an automation"
15928
- },
15929
- disable: {
15930
- method: "POST",
15931
- path: "/api/automations/:ref/disable",
15932
- headers: authHeadersSchema,
15933
- pathParams: refParamsSchema,
15934
- body: external_exports.object({}).optional(),
15935
- responses: {
15936
- 200: automationResponseSchema,
15937
- 400: apiErrorSchema,
15938
- 401: apiErrorSchema,
15939
- 403: apiErrorSchema,
15940
- 404: apiErrorSchema
15941
- },
15942
- summary: "Disable an automation"
15943
- },
15944
- run: {
15945
- method: "POST",
15946
- path: "/api/automations/:ref/run",
15947
- headers: authHeadersSchema,
15948
- pathParams: refParamsSchema,
15949
- body: external_exports.object({}).optional(),
15950
- responses: {
15951
- 201: automationRunResponseSchema,
15952
- 400: apiErrorSchema,
15953
- 401: apiErrorSchema,
15954
- 402: apiErrorSchema,
15955
- 403: apiErrorSchema,
15956
- 404: apiErrorSchema,
15957
- 409: apiErrorSchema,
15958
- 429: apiErrorSchema,
15959
- 503: apiErrorSchema
15960
- },
15961
- summary: "Manually fire an automation (instruction-only, no event)"
15962
- }
15963
- });
15964
- var automationTriggersContract = c82.router({
15965
- show: {
15966
- method: "GET",
15967
- path: "/api/automation-triggers/:id",
15968
- headers: authHeadersSchema,
15969
- pathParams: triggerIdParamsSchema,
15970
- responses: {
15971
- 200: automationTriggerResponseSchema,
15972
- 401: apiErrorSchema,
15973
- 403: apiErrorSchema,
15974
- 404: apiErrorSchema
15975
- },
15976
- summary: "Show a trigger"
15977
- },
15978
- update: {
15979
- method: "PATCH",
15980
- path: "/api/automation-triggers/:id",
15981
- headers: authHeadersSchema,
15982
- pathParams: triggerIdParamsSchema,
15983
- body: updateTriggerRequestSchema,
15984
- responses: {
15985
- 200: automationTriggerResponseSchema,
15986
- 400: apiErrorSchema,
15987
- 401: apiErrorSchema,
15988
- 403: apiErrorSchema,
15989
- 404: apiErrorSchema
15990
- },
15991
- summary: "Replace a time trigger's schedule config (kind may switch among cron/once/loop)"
15992
- },
15993
- enable: {
15994
- method: "POST",
15995
- path: "/api/automation-triggers/:id/enable",
15996
- headers: authHeadersSchema,
15997
- pathParams: triggerIdParamsSchema,
15998
- body: external_exports.object({}).optional(),
15999
- responses: {
16000
- 200: automationTriggerResponseSchema,
16001
- 400: apiErrorSchema,
16002
- 401: apiErrorSchema,
16003
- 403: apiErrorSchema,
16004
- 404: apiErrorSchema
16005
- },
16006
- summary: "Enable a single trigger"
16007
- },
16008
- disable: {
16009
- method: "POST",
16010
- path: "/api/automation-triggers/:id/disable",
16011
- headers: authHeadersSchema,
16012
- pathParams: triggerIdParamsSchema,
16013
- body: external_exports.object({}).optional(),
16014
- responses: {
16015
- 200: automationTriggerResponseSchema,
16016
- 401: apiErrorSchema,
16017
- 403: apiErrorSchema,
16018
- 404: apiErrorSchema
16019
- },
16020
- summary: "Disable a single trigger"
16021
- }
16022
- });
16023
-
16024
16125
  // ../../packages/api-contracts/src/contracts/zero-voice-io-quota.ts
16025
16126
  init_esm_shims();
16026
- var c83 = initContract();
16127
+ var c82 = initContract();
16027
16128
  var audioInputQuotaResponseSchema = external_exports.object({
16028
16129
  allowed: external_exports.boolean(),
16029
16130
  count: external_exports.number().int().nonnegative(),
16030
16131
  limit: external_exports.number().int().nonnegative().nullable()
16031
16132
  });
16032
- var zeroVoiceIoQuotaContract = c83.router({
16133
+ var zeroVoiceIoQuotaContract = c82.router({
16033
16134
  get: {
16034
16135
  method: "GET",
16035
16136
  path: "/api/zero/voice-io/quota",
@@ -16045,7 +16146,7 @@ var zeroVoiceIoQuotaContract = c83.router({
16045
16146
 
16046
16147
  // ../../packages/api-contracts/src/contracts/zero-voice-io-speech.ts
16047
16148
  init_esm_shims();
16048
- var c84 = initContract();
16149
+ var c83 = initContract();
16049
16150
  var zeroVoiceIoSpeechRequestSchema = external_exports.object({
16050
16151
  text: external_exports.string().optional(),
16051
16152
  voice: external_exports.string().optional(),
@@ -16062,7 +16163,7 @@ var zeroVoiceIoSpeechResponseSchema = external_exports.object({
16062
16163
  model: external_exports.string(),
16063
16164
  voice: external_exports.string()
16064
16165
  });
16065
- var zeroVoiceIoSpeechContract = c84.router({
16166
+ var zeroVoiceIoSpeechContract = c83.router({
16066
16167
  post: {
16067
16168
  method: "POST",
16068
16169
  path: "/api/zero/voice-io/speech",
@@ -16084,7 +16185,7 @@ var zeroVoiceIoSpeechContract = c84.router({
16084
16185
 
16085
16186
  // ../../packages/api-contracts/src/contracts/zero-voice-io-stt.ts
16086
16187
  init_esm_shims();
16087
- var c85 = initContract();
16188
+ var c84 = initContract();
16088
16189
  var zeroVoiceIoSttSegmentSchema = external_exports.object({
16089
16190
  start: external_exports.number(),
16090
16191
  end: external_exports.number(),
@@ -16100,13 +16201,13 @@ var zeroVoiceIoSttQuotaErrorSchema = apiErrorSchema.extend({
16100
16201
  limit: external_exports.number().nullable()
16101
16202
  }).optional()
16102
16203
  });
16103
- var zeroVoiceIoSttContract = c85.router({
16204
+ var zeroVoiceIoSttContract = c84.router({
16104
16205
  post: {
16105
16206
  method: "POST",
16106
16207
  path: "/api/zero/voice-io/stt",
16107
16208
  headers: authHeadersSchema,
16108
16209
  contentType: "multipart/form-data",
16109
- body: c85.type(),
16210
+ body: c84.type(),
16110
16211
  query: external_exports.object({
16111
16212
  verbose: external_exports.coerce.boolean().optional().default(false)
16112
16213
  }),
@@ -16126,7 +16227,7 @@ var zeroVoiceIoSttContract = c85.router({
16126
16227
 
16127
16228
  // ../../packages/api-contracts/src/contracts/zero-uploads.ts
16128
16229
  init_esm_shims();
16129
- var c86 = initContract();
16230
+ var c85 = initContract();
16130
16231
  var prepareRequestSchema = external_exports.object({
16131
16232
  filename: external_exports.string().min(1).max(255),
16132
16233
  contentType: external_exports.string().min(1).max(200),
@@ -16160,7 +16261,7 @@ var completeResponseSchema = external_exports.object({
16160
16261
  size: external_exports.number(),
16161
16262
  url: external_exports.string().url()
16162
16263
  });
16163
- var zeroUploadsContract = c86.router({
16264
+ var zeroUploadsContract = c85.router({
16164
16265
  prepare: {
16165
16266
  method: "POST",
16166
16267
  path: "/api/zero/uploads/prepare",
@@ -16227,7 +16328,7 @@ var zeroUploadsContract = c86.router({
16227
16328
 
16228
16329
  // ../../packages/api-contracts/src/contracts/zero-integrations-telegram.ts
16229
16330
  init_esm_shims();
16230
- var c87 = initContract();
16331
+ var c86 = initContract();
16231
16332
  var telegramEnvironmentSchema = external_exports.object({
16232
16333
  requiredSecrets: external_exports.array(external_exports.string()),
16233
16334
  requiredVars: external_exports.array(external_exports.string()),
@@ -16326,7 +16427,7 @@ var telegramSetupStatusSchema = external_exports.object({
16326
16427
  var telegramWebhookPathParamsSchema = external_exports.object({
16327
16428
  telegramBotId: external_exports.string().min(1)
16328
16429
  });
16329
- var zeroIntegrationsTelegramContract = c87.router({
16430
+ var zeroIntegrationsTelegramContract = c86.router({
16330
16431
  list: {
16331
16432
  method: "GET",
16332
16433
  path: "/api/integrations/telegram",
@@ -16369,9 +16470,9 @@ var zeroIntegrationsTelegramContract = c87.router({
16369
16470
  path: "/api/integrations/telegram/:botId",
16370
16471
  headers: authHeadersSchema,
16371
16472
  pathParams: external_exports.object({ botId: external_exports.string().min(1) }),
16372
- body: c87.noBody(),
16473
+ body: c86.noBody(),
16373
16474
  responses: {
16374
- 204: c87.noBody(),
16475
+ 204: c86.noBody(),
16375
16476
  401: apiErrorSchema,
16376
16477
  403: apiErrorSchema,
16377
16478
  404: apiErrorSchema
@@ -16382,10 +16483,10 @@ var zeroIntegrationsTelegramContract = c87.router({
16382
16483
  method: "DELETE",
16383
16484
  path: "/api/integrations/telegram/link",
16384
16485
  headers: authHeadersSchema,
16385
- body: c87.noBody(),
16486
+ body: c86.noBody(),
16386
16487
  query: external_exports.object({ botId: external_exports.string().optional() }),
16387
16488
  responses: {
16388
- 204: c87.noBody(),
16489
+ 204: c86.noBody(),
16389
16490
  401: apiErrorSchema,
16390
16491
  404: apiErrorSchema
16391
16492
  },
@@ -16416,7 +16517,7 @@ var zeroIntegrationsTelegramContract = c87.router({
16416
16517
  sig: external_exports.string().optional()
16417
16518
  }),
16418
16519
  responses: {
16419
- 200: c87.otherResponse({
16520
+ 200: c86.otherResponse({
16420
16521
  contentType: "application/octet-stream",
16421
16522
  body: external_exports.unknown()
16422
16523
  }),
@@ -16431,7 +16532,7 @@ var zeroIntegrationsTelegramContract = c87.router({
16431
16532
  method: "GET",
16432
16533
  path: "/api/integrations/telegram/auth-callback",
16433
16534
  responses: {
16434
- 200: c87.otherResponse({
16535
+ 200: c86.otherResponse({
16435
16536
  contentType: "text/html",
16436
16537
  body: external_exports.unknown()
16437
16538
  })
@@ -16490,19 +16591,19 @@ var zeroIntegrationsTelegramContract = c87.router({
16490
16591
  pathParams: telegramWebhookPathParamsSchema,
16491
16592
  body: external_exports.unknown(),
16492
16593
  responses: {
16493
- 200: c87.otherResponse({
16594
+ 200: c86.otherResponse({
16494
16595
  contentType: "text/plain",
16495
16596
  body: external_exports.string()
16496
16597
  }),
16497
- 400: c87.otherResponse({
16598
+ 400: c86.otherResponse({
16498
16599
  contentType: "text/plain",
16499
16600
  body: external_exports.string()
16500
16601
  }),
16501
- 401: c87.otherResponse({
16602
+ 401: c86.otherResponse({
16502
16603
  contentType: "text/plain",
16503
16604
  body: external_exports.string()
16504
16605
  }),
16505
- 404: c87.otherResponse({
16606
+ 404: c86.otherResponse({
16506
16607
  contentType: "text/plain",
16507
16608
  body: external_exports.string()
16508
16609
  })
@@ -16528,7 +16629,7 @@ var zeroIntegrationsTelegramContract = c87.router({
16528
16629
 
16529
16630
  // ../../packages/api-contracts/src/contracts/zero-integrations-agentphone.ts
16530
16631
  init_esm_shims();
16531
- var c88 = initContract();
16632
+ var c87 = initContract();
16532
16633
  var agentPhoneConnectBodySchema = external_exports.object({
16533
16634
  phoneHandle: external_exports.string().min(1),
16534
16635
  agentphoneAgentId: external_exports.string().min(1),
@@ -16565,7 +16666,7 @@ var agentPhoneStartLinkResponseSchema = external_exports.object({
16565
16666
  phoneHandle: external_exports.string(),
16566
16667
  verificationSent: external_exports.literal(true)
16567
16668
  });
16568
- var zeroIntegrationsAgentPhoneContract = c88.router({
16669
+ var zeroIntegrationsAgentPhoneContract = c87.router({
16569
16670
  connectAgentPhone: {
16570
16671
  method: "POST",
16571
16672
  path: "/api/agentphone/connect",
@@ -16583,7 +16684,7 @@ var zeroIntegrationsAgentPhoneContract = c88.router({
16583
16684
  method: "POST",
16584
16685
  path: "/api/agentphone/webhook",
16585
16686
  headers: agentPhoneWebhookHeadersSchema,
16586
- body: c88.type(),
16687
+ body: c87.type(),
16587
16688
  responses: {
16588
16689
  200: external_exports.string(),
16589
16690
  400: external_exports.string(),
@@ -16621,9 +16722,9 @@ var zeroIntegrationsAgentPhoneContract = c88.router({
16621
16722
  method: "DELETE",
16622
16723
  path: "/api/integrations/agentphone/link",
16623
16724
  headers: authHeadersSchema,
16624
- body: c88.noBody(),
16725
+ body: c87.noBody(),
16625
16726
  responses: {
16626
- 204: c88.noBody(),
16727
+ 204: c87.noBody(),
16627
16728
  401: apiErrorSchema,
16628
16729
  404: apiErrorSchema
16629
16730
  },
@@ -16960,7 +17061,7 @@ var FEATURE_SWITCHES = {
16960
17061
  ["agentsPageRedesign" /* AgentsPageRedesign */]: {
16961
17062
  maintainer: "ming@vm0.ai",
16962
17063
  description: "New Agents page with Public/Private tabs, a public-slot indicator, a Created by footer on every card, a name-first create dialog with a visibility select, and a private empty state.",
16963
- enabled: false
17064
+ enabled: true
16964
17065
  },
16965
17066
  ["sidebarManageIconCollapse" /* SidebarManageIconCollapse */]: {
16966
17067
  maintainer: "ming@vm0.ai",
@@ -16997,6 +17098,12 @@ var FEATURE_SWITCHES = {
16997
17098
  enabled: false,
16998
17099
  enabledOrgIdHashes: STAFF_ORG_ID_HASHES
16999
17100
  },
17101
+ ["workflowTemplateCatalog" /* WorkflowTemplateCatalog */]: {
17102
+ maintainer: "ming@vm0.ai",
17103
+ description: "Show the full persona-grouped built-in workflow template catalog in the chat composer template picker. Off shows only the General starter template.",
17104
+ enabled: false,
17105
+ enabledOrgIdHashes: STAFF_ORG_ID_HASHES
17106
+ },
17000
17107
  ["websiteTemplates" /* WebsiteTemplates */]: {
17001
17108
  maintainer: "bingjie@vm0.ai",
17002
17109
  description: "Enable the built-in R2-backed website template picker and generation-template flow.",
@@ -19322,4 +19429,4 @@ export {
19322
19429
  collectLogItems,
19323
19430
  parseSearchQuery
19324
19431
  };
19325
- //# sourceMappingURL=chunk-WB6G3XAE.js.map
19432
+ //# sourceMappingURL=chunk-QUS7ZBVO.js.map