@oxygen-agent/cli 1.1014.1696 → 1.1014.1763

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 (96) hide show
  1. package/README.md +1 -1
  2. package/dist/command-families/program.js +4 -0
  3. package/dist/command-manifest.js +14 -2
  4. package/dist/command-support.js +1 -1
  5. package/dist/commands/admin.js +82 -1
  6. package/dist/commands/billing.js +1 -1
  7. package/dist/commands/copilot.js +29 -7
  8. package/dist/commands/domains.js +7 -0
  9. package/dist/commands/email-assets.d.ts +3 -0
  10. package/dist/commands/email-assets.js +78 -0
  11. package/dist/commands/email-templates.d.ts +3 -0
  12. package/dist/commands/email-templates.js +101 -0
  13. package/dist/commands/sequences.js +47 -12
  14. package/dist/commands/subscriptions.d.ts +2 -4
  15. package/dist/commands/subscriptions.js +297 -51
  16. package/dist/sequence-start-at.d.ts +7 -0
  17. package/dist/sequence-start-at.js +21 -0
  18. package/dist/sequences-brand-kit-command.d.ts +28 -0
  19. package/dist/sequences-brand-kit-command.js +83 -0
  20. package/dist/sequences-content-commands.d.ts +28 -0
  21. package/dist/sequences-content-commands.js +176 -0
  22. package/dist/sequences-newsletter-commands.d.ts +6 -0
  23. package/dist/sequences-newsletter-commands.js +108 -0
  24. package/dist/sequences-test-send-command.d.ts +3 -0
  25. package/dist/sequences-test-send-command.js +47 -0
  26. package/node_modules/@oxygen/formula/dist/evaluate.js +2 -4
  27. package/node_modules/@oxygen/formula/dist/expression.d.ts +7 -5
  28. package/node_modules/@oxygen/formula/dist/expression.js +26 -4
  29. package/node_modules/@oxygen/formula/dist/formula-functions.d.ts +6 -0
  30. package/node_modules/@oxygen/formula/dist/formula-functions.js +55 -0
  31. package/node_modules/@oxygen/shared/dist/billing.d.ts +2 -2
  32. package/node_modules/@oxygen/shared/dist/billing.js +5 -7
  33. package/node_modules/@oxygen/shared/dist/bulk-email-pacing.d.ts +105 -0
  34. package/node_modules/@oxygen/shared/dist/bulk-email-pacing.js +125 -0
  35. package/node_modules/@oxygen/shared/dist/capability-discovery.d.ts +29 -0
  36. package/node_modules/@oxygen/shared/dist/capability-discovery.js +174 -10
  37. package/node_modules/@oxygen/shared/dist/contracts/clay-migration.d.ts +1 -0
  38. package/node_modules/@oxygen/shared/dist/contracts/clay-migration.js +28 -2
  39. package/node_modules/@oxygen/shared/dist/contracts/copilot-attachment-read.d.ts +24 -0
  40. package/node_modules/@oxygen/shared/dist/contracts/copilot-attachment-read.js +7 -0
  41. package/node_modules/@oxygen/shared/dist/contracts/teammates.js +6 -1
  42. package/node_modules/@oxygen/shared/dist/email-brand-kit.d.ts +108 -0
  43. package/node_modules/@oxygen/shared/dist/email-brand-kit.js +214 -0
  44. package/node_modules/@oxygen/shared/dist/email-delivery.d.ts +10 -0
  45. package/node_modules/@oxygen/shared/dist/email-delivery.js +14 -0
  46. package/node_modules/@oxygen/shared/dist/email-documents.d.ts +61 -0
  47. package/node_modules/@oxygen/shared/dist/email-documents.js +143 -0
  48. package/node_modules/@oxygen/shared/dist/email-dsn.js +52 -10
  49. package/node_modules/@oxygen/shared/dist/email-html-sanitize.d.ts +23 -0
  50. package/node_modules/@oxygen/shared/dist/email-html-sanitize.js +96 -0
  51. package/node_modules/@oxygen/shared/dist/email-subscriptions.d.ts +63 -1
  52. package/node_modules/@oxygen/shared/dist/email-subscriptions.js +149 -1
  53. package/node_modules/@oxygen/shared/dist/email-unsubscribe-token.d.ts +41 -2
  54. package/node_modules/@oxygen/shared/dist/email-unsubscribe-token.js +50 -1
  55. package/node_modules/@oxygen/shared/dist/newsletter-analytics.d.ts +90 -0
  56. package/node_modules/@oxygen/shared/dist/newsletter-analytics.js +28 -0
  57. package/node_modules/@oxygen/shared/dist/newsletter-test-send.d.ts +20 -0
  58. package/node_modules/@oxygen/shared/dist/newsletter-test-send.js +46 -0
  59. package/node_modules/@oxygen/shared/dist/object-storage.d.ts +11 -0
  60. package/node_modules/@oxygen/shared/dist/object-storage.js +12 -0
  61. package/node_modules/@oxygen/shared/dist/plan-band.d.ts +9 -0
  62. package/node_modules/@oxygen/shared/dist/plan-band.js +17 -0
  63. package/node_modules/@oxygen/shared/dist/plan-capabilities.d.ts +4 -2
  64. package/node_modules/@oxygen/shared/dist/plan-capabilities.js +12 -1
  65. package/node_modules/@oxygen/shared/dist/plan-limits-view.d.ts +2 -0
  66. package/node_modules/@oxygen/shared/dist/plan-limits-view.js +3 -0
  67. package/node_modules/@oxygen/shared/dist/pricing-snapshot.generated.d.ts +5 -0
  68. package/node_modules/@oxygen/shared/dist/pricing-snapshot.generated.js +5 -0
  69. package/node_modules/@oxygen/shared/dist/product-analytics-events.d.ts +29 -0
  70. package/node_modules/@oxygen/shared/dist/product-analytics-events.js +29 -0
  71. package/node_modules/@oxygen/shared/dist/sending-domain-faults.d.ts +21 -0
  72. package/node_modules/@oxygen/shared/dist/sending-domain-faults.js +53 -0
  73. package/node_modules/@oxygen/shared/dist/sending-domain-rollout.d.ts +24 -1
  74. package/node_modules/@oxygen/shared/dist/sending-domain-rollout.js +51 -4
  75. package/node_modules/@oxygen/shared/dist/sequence-failures.d.ts +10 -1
  76. package/node_modules/@oxygen/shared/dist/sequence-failures.js +68 -6
  77. package/node_modules/@oxygen/shared/dist/sequence-lifecycle.d.ts +34 -3
  78. package/node_modules/@oxygen/shared/dist/sequence-lifecycle.js +57 -4
  79. package/node_modules/@oxygen/shared/dist/sequence-template.d.ts +17 -0
  80. package/node_modules/@oxygen/shared/dist/sequence-template.js +0 -0
  81. package/node_modules/@oxygen/shared/dist/sequences.d.ts +41 -0
  82. package/node_modules/@oxygen/shared/dist/sequences.js +86 -4
  83. package/node_modules/@oxygen/shared/dist/ses-identity-policy.d.ts +19 -0
  84. package/node_modules/@oxygen/shared/dist/ses-identity-policy.js +54 -0
  85. package/node_modules/@oxygen/shared/dist/skill-play-routing.d.ts +22 -0
  86. package/node_modules/@oxygen/shared/dist/skill-play-routing.js +75 -0
  87. package/node_modules/@oxygen/shared/dist/skill-plays.generated.d.ts +5 -0
  88. package/node_modules/@oxygen/shared/dist/skill-plays.generated.js +269 -0
  89. package/node_modules/@oxygen/shared/dist/spend-safety.d.ts +7 -0
  90. package/node_modules/@oxygen/shared/dist/spend-safety.js +7 -0
  91. package/node_modules/@oxygen/shared/dist/teammates.js +2 -1
  92. package/node_modules/@oxygen/shared/dist/user-capability-routing.js +15 -1
  93. package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
  94. package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
  95. package/node_modules/@oxygen/shared/dist/workspace-event-catalog.js +2 -2
  96. package/package.json +2 -2
@@ -0,0 +1,269 @@
1
+ // GENERATED by apps/web/scripts/generate-copilot-playbooks.ts from the play
2
+ // catalog (`skill`, `title`, `trigger_phrases` in apps/web/src/lib/agent-skill-plays.ts).
3
+ // Do not edit by hand — run `npm run skills:metadata -w @oxygen/web`.
4
+ export const SKILL_PLAY_TRIGGERS_GENERATED = [
5
+ {
6
+ skill: "oxygen-clay-migration",
7
+ slug: "migrate-from-clay",
8
+ phrases: [
9
+ "Migrate from Clay",
10
+ "Move my whole Clay workspace into Oxygen",
11
+ "Clay is too expensive — what's the switch cost?",
12
+ "Rebuild my Clay waterfalls here",
13
+ "Import a Clay CSV and re-enrich it",
14
+ "How do I replace Claygent with Oxygen?",
15
+ "Bring my Clay company list over and score it",
16
+ ],
17
+ },
18
+ {
19
+ skill: "oxygen-crm",
20
+ slug: "website-visitor-outreach",
21
+ phrases: [
22
+ "Turn de-anonymized website visitors into warm pipeline",
23
+ "People visit our website but never convert",
24
+ "Who is on my site right now — and can we contact them?",
25
+ "Which companies visited our website this week?",
26
+ "Turn website traffic into leads",
27
+ "Set up visitor de-anonymization",
28
+ "Connect RB2B to OXYGEN",
29
+ ],
30
+ },
31
+ {
32
+ skill: "oxygen-diagnostics",
33
+ slug: "day-30-review",
34
+ phrases: [
35
+ "Day 30: review, scale, or kill",
36
+ "What worked this month and what did it cost?",
37
+ "Review my GTM runs and decide what to scale",
38
+ "Monthly review of sequences and spend",
39
+ "Should I kill or scale this play?",
40
+ "Where did my credits go this month?",
41
+ ],
42
+ },
43
+ {
44
+ skill: "oxygen-email-infra",
45
+ slug: "email-infra-setup",
46
+ phrases: [
47
+ "Set up cold email infrastructure",
48
+ "Set up cold email infrastructure",
49
+ "I need sending domains and mailboxes for outbound",
50
+ "How do I send cold email without burning my domain?",
51
+ "Buy me some inboxes for a cold email campaign",
52
+ "Stand up a warmed mailbox pool for outreach",
53
+ "What do sending inboxes cost per month?",
54
+ ],
55
+ },
56
+ {
57
+ skill: "oxygen-knowledge",
58
+ slug: "client-workspace-launch",
59
+ phrases: [
60
+ "Stand up a new client workspace",
61
+ "Onboard a new client into Oxygen",
62
+ "Set up a workspace for a new client",
63
+ "How do I run Oxygen for multiple clients?",
64
+ "Stand up a client account from scratch",
65
+ "Repeatable client onboarding for my agency",
66
+ ],
67
+ },
68
+ {
69
+ skill: "oxygen-onboarding",
70
+ slug: "day-1-first-win",
71
+ phrases: [
72
+ "Day 1: from your offer to your warmest leads",
73
+ "I just signed up — what do I actually do with this?",
74
+ "Where do I start with Oxygen?",
75
+ "Who should I contact first?",
76
+ "Find my warmest leads",
77
+ "What should I do in my first session?",
78
+ ],
79
+ },
80
+ {
81
+ skill: "oxygen-publishing",
82
+ slug: "founder-posting-system",
83
+ phrases: [
84
+ "A founder posting system grounded in your knowledge base",
85
+ "I should be posting on LinkedIn but never do",
86
+ "Draft LinkedIn posts in my voice",
87
+ "Plan my LinkedIn content for the week",
88
+ "Set up a content calendar",
89
+ "I can't post consistently — schedule my posts for me",
90
+ "Turn my company knowledge into LinkedIn posts",
91
+ ],
92
+ },
93
+ {
94
+ skill: "oxygen-sequencer",
95
+ slug: "inbound-led-outbound",
96
+ phrases: [
97
+ "Inbound-led outbound: post engagers into a capped warm sequence",
98
+ "Turn the people who engage with my LinkedIn posts into pipeline",
99
+ "Who is engaging with my competitors' or my niche creators' posts?",
100
+ "Reach the people engaging with LinkedIn posts about my topic",
101
+ "Turn my LinkedIn connections and followers into pipeline",
102
+ "Turn my LinkedIn profile viewers into leads",
103
+ "I have no lead list. Where do I start on LinkedIn?",
104
+ ],
105
+ },
106
+ {
107
+ skill: "oxygen-sequencer",
108
+ slug: "multichannel-top-tier",
109
+ phrases: [
110
+ "Email + LinkedIn for top-tier leads",
111
+ "Combine email and LinkedIn for our best accounts",
112
+ "Run a multichannel sequence for top-tier leads",
113
+ "Email plus a LinkedIn invite for high-fit accounts",
114
+ "LinkedIn first for warm leads, email as the fallback",
115
+ ],
116
+ },
117
+ {
118
+ skill: "oxygen-sequencer",
119
+ slug: "outbound-pilot-50",
120
+ phrases: [
121
+ "Launch a 50-lead outbound pilot",
122
+ "I need outbound running this week",
123
+ "Build me a cold outreach pilot",
124
+ "Find 50 leads and draft first emails for me to review",
125
+ "I have no pipeline — start outbound",
126
+ ],
127
+ },
128
+ {
129
+ skill: "oxygen-sequencer",
130
+ slug: "signal-outbound",
131
+ phrases: [
132
+ "Signal-based email outbound",
133
+ "Email companies that are hiring for this role",
134
+ "Reach people who just showed buying intent",
135
+ "Turn hiring signals into cold email",
136
+ "Email our website visitors and signups who fit",
137
+ ],
138
+ },
139
+ {
140
+ skill: "oxygen-sequencer",
141
+ slug: "whole-tam-email",
142
+ phrases: [
143
+ "Whole-market cold email",
144
+ "Run cold email across our whole market",
145
+ "Set up evergreen cold email at full capacity",
146
+ "A/B test our cold email CTAs and subject lines",
147
+ "Re-contact the people who never replied",
148
+ "The pilot worked — how do I scale cold email?",
149
+ "Build a repeatable cold email system",
150
+ ],
151
+ },
152
+ {
153
+ skill: "oxygen-signals",
154
+ slug: "daily-warm-lead-queue",
155
+ phrases: [
156
+ "A daily ranked queue of your warmest leads",
157
+ "Who should I reach out to today?",
158
+ "Give me one ranked list of my warmest leads every morning",
159
+ "Turn all my intent signals into a daily to-do list",
160
+ "Make Oxygen do something while I'm not looking",
161
+ "What should I set up in my first week?",
162
+ "Set up a weekly CRM cleanup routine",
163
+ ],
164
+ },
165
+ {
166
+ skill: "oxygen-signals",
167
+ slug: "existing-network",
168
+ phrases: [
169
+ "Hand-written first messages to buyers already in your network",
170
+ "Work my network",
171
+ "Reactivate my connections",
172
+ "Message the buyers I'm already connected to",
173
+ "Write personal messages to my LinkedIn connections",
174
+ ],
175
+ },
176
+ {
177
+ skill: "oxygen-signals",
178
+ slug: "new-connections",
179
+ phrases: [
180
+ "Message the buyers among your new connections",
181
+ "Follow up with my new LinkedIn connections",
182
+ "Message the people who just connected with me",
183
+ "Which of my new connections are buyers?",
184
+ "Start conversations with my recent connections",
185
+ ],
186
+ },
187
+ {
188
+ skill: "oxygen-signals",
189
+ slug: "post-engagers",
190
+ phrases: [
191
+ "Start conversations with the buyers who engage with your posts",
192
+ "Reach the people who engage with my LinkedIn posts",
193
+ "Message the people who commented on my post",
194
+ "Who reacted to my post, and are they buyers?",
195
+ "Turn my post engagers into conversations",
196
+ ],
197
+ },
198
+ {
199
+ skill: "oxygen-signals",
200
+ slug: "profile-viewers-and-followers",
201
+ phrases: [
202
+ "Invite the buyers who view your profile or follow you",
203
+ "Reach out to the people who viewed my LinkedIn profile",
204
+ "Turn my LinkedIn followers into conversations",
205
+ "Invite my followers who aren't connected yet",
206
+ "Who viewed my profile, and should I contact them?",
207
+ ],
208
+ },
209
+ {
210
+ skill: "oxygen-sourcing",
211
+ slug: "icp-to-account-map",
212
+ phrases: [
213
+ "Turn your ICP into a scored account map",
214
+ "Turn my ICP into a list of target accounts",
215
+ "Find B2B SaaS accounts that match our ideal customer profile",
216
+ "Who should we actually be selling to?",
217
+ "Map my market and score the companies by fit",
218
+ "Pull the companies off this VC portfolio, partner directory or event page",
219
+ "I have a list of companies, which ones fit us best?",
220
+ ],
221
+ },
222
+ {
223
+ skill: "oxygen-sourcing",
224
+ slug: "local-business-maps",
225
+ phrases: [
226
+ "Local businesses from Google Maps",
227
+ "Find local businesses in my cities",
228
+ "Get a list of clinics or restaurants by city",
229
+ "Pull businesses from Google Maps",
230
+ "Our buyers are local businesses with a physical location",
231
+ ],
232
+ },
233
+ {
234
+ skill: "oxygen-sourcing",
235
+ slug: "lookalike-tam",
236
+ phrases: [
237
+ "Lookalike TAM",
238
+ "Find more companies like our best customers",
239
+ "Build a lookalike list from our customers",
240
+ "Who else looks like the customers we already have?",
241
+ "Use our customers as seeds to map our market",
242
+ ],
243
+ },
244
+ {
245
+ skill: "oxygen-tables",
246
+ slug: "speed-to-lead",
247
+ phrases: [
248
+ "Answer inbound leads in minutes",
249
+ "New signups sit for days before anyone reaches out",
250
+ "Route my inbound leads into the CRM automatically",
251
+ "Answer trial signups the same day they arrive",
252
+ "Set up speed-to-lead for my demo requests",
253
+ "Enrich and follow up on form fills without me watching",
254
+ ],
255
+ },
256
+ {
257
+ skill: "oxygen-unibox",
258
+ slug: "reply-to-meeting",
259
+ phrases: [
260
+ "Turn replies into booked meetings",
261
+ "I get replies but they never turn into meetings",
262
+ "Help me handle my inbound replies faster",
263
+ "Book more meetings from the replies I already have",
264
+ "Log booked calls in my CRM automatically",
265
+ "What do I do with 'circle back next quarter' replies?",
266
+ "Bring deferred leads back when they're ready",
267
+ ],
268
+ },
269
+ ];
@@ -158,6 +158,13 @@ export type CopilotApprovalFreeAllowance = {
158
158
  * largest session allowance stays below the attended turn backstop above.
159
159
  */
160
160
  export declare const COPILOT_APPROVAL_FREE_ALLOWANCE_BY_PLAN_BAND: Readonly<Record<PlanBand, CopilotApprovalFreeAllowance>>;
161
+ /**
162
+ * On every plan, an Oxygent call whose declared ceiling (`max_credits`, the
163
+ * maximum quote, never the estimate) is strictly BELOW this runs without an
164
+ * approval card (Philipp, 2026-10-21). It only adds to the per-call allowance
165
+ * above, never lowers one, and the per-session allowance still applies.
166
+ */
167
+ export declare const OXYGENT_APPROVAL_FREE_BELOW_CREDITS = 100;
161
168
  /** A plan size's approval-free Copilot allowance. */
162
169
  export declare function copilotApprovalFreeAllowanceForBand(band: PlanBand): CopilotApprovalFreeAllowance;
163
170
  export declare function resolveDefaultByokColumnRunMaxRows(tier: SpendSafetyPlanTier): number | null;
@@ -191,6 +191,13 @@ export const COPILOT_APPROVAL_FREE_ALLOWANCE_BY_PLAN_BAND = Object.freeze({
191
191
  "999": Object.freeze({ perCallCredits: 300, perSessionCredits: 1_500 }),
192
192
  "1999": Object.freeze({ perCallCredits: 500, perSessionCredits: 2_500 }),
193
193
  });
194
+ /**
195
+ * On every plan, an Oxygent call whose declared ceiling (`max_credits`, the
196
+ * maximum quote, never the estimate) is strictly BELOW this runs without an
197
+ * approval card (Philipp, 2026-10-21). It only adds to the per-call allowance
198
+ * above, never lowers one, and the per-session allowance still applies.
199
+ */
200
+ export const OXYGENT_APPROVAL_FREE_BELOW_CREDITS = 100;
194
201
  /** A plan size's approval-free Copilot allowance. */
195
202
  export function copilotApprovalFreeAllowanceForBand(band) {
196
203
  return COPILOT_APPROVAL_FREE_ALLOWANCE_BY_PLAN_BAND[band];
@@ -169,5 +169,6 @@ export function teammateSlugFromName(name) {
169
169
  */
170
170
  export const TEAMMATE_STARTER_INSTRUCTIONS = [
171
171
  "You are an Oxygent on the team. Do the job your profile and the person give you, and hand work that is another Oxygent's job to them.",
172
- "Read whatever you need from the workspace; ask before anything that writes, sends or spends.",
172
+ "Read whatever you need from the workspace; ask before anything that writes, sends or spends 100 credits or more.",
173
+ "A paid step quoted under 100 credits, such as a sample lead list, runs without asking, rows it writes included: say what it cost in one plain line.",
173
174
  ].join("\n");
@@ -1,4 +1,5 @@
1
1
  import { getCapabilityRoute, getCapabilityRouteMatch, inferCapabilityRoute, } from "./capability-discovery.js";
2
+ const GROUP_CHAT_CHANNEL_PATTERN = /\b(?:whatsapp|teams|slack|telegram|linkedin|discord|signal|sms|e ?mail|inbox|unibox)\b/;
2
3
  /** A null route has no command to hydrate yet. Keep recovery bounded and executable. */
3
4
  export function capabilityDiscoveryRecovery(query, surface) {
4
5
  if (surface === "mcp") {
@@ -166,6 +167,19 @@ export function inferUserCapabilityRoute(query) {
166
167
  exactMcpCall: { tool: "oxygen_agent_session_list", arguments: { slug: "workspace" } },
167
168
  };
168
169
  }
170
+ if (/\b(?:files?|attachments?|documents?|uploads?)\b/.test(normalized)
171
+ && /\b(?:group\s+(?:chats?|conversations?)|team\s+(?:chats?|conversations?))\b/.test(normalized)
172
+ && !GROUP_CHAT_CHANNEL_PATTERN.test(normalized)
173
+ && !/\b(?:support|external)\b/.test(normalized)) {
174
+ const route = getCapabilityRouteMatch("agents");
175
+ if (route) {
176
+ const tools = ["oxygen_oxygents_group", "oxygen_oxygents_group_message", "oxygen_copilot_attachments", "oxygen_copilot_get"];
177
+ const commands = ["oxygents group", "copilot attach", "copilot attachments", "oxygents group-message", "copilot get"];
178
+ return { ...route, recommendedTools: tools, recommendedCommands: commands,
179
+ card: { ...route.card, endpointSections: [...route.card.endpointSections, "copilot"], gatewayTools: tools, gatewayCommands: commands,
180
+ execution: "A group_id is its Copilot session id. Upload your file with oxygen copilot attach <group_id> <path>, list its ready ids with copilot attachments (oxygen_copilot_attachments), then send attachment_ids with oxygents group-message (oxygen_oxygents_group_message). Read messages and bound files with copilot get (oxygen_copilot_get). Existing uploader, session, readiness and group-access checks apply. A message mentioning only a person goes to them; Oxygent answers are billed turns." } };
181
+ }
182
+ }
169
183
  const oxygents = oxygentsRoute(normalized);
170
184
  if (oxygents)
171
185
  return oxygents;
@@ -335,7 +349,7 @@ const OXYGENT_GROUP_VERBS = [
335
349
  */
336
350
  function oxygentsRoute(normalized) {
337
351
  const groupChat = /\bgroup chats?\b/.test(normalized)
338
- && !/\b(?:whatsapp|teams|slack|telegram|linkedin|discord|signal|sms|e ?mail|inbox|unibox)\b/.test(normalized);
352
+ && !GROUP_CHAT_CHANNEL_PATTERN.test(normalized);
339
353
  const nativeTeammate = /^\s*teammates?\s*$/.test(normalized)
340
354
  || (/\bteammates?\b/.test(normalized) && /\b(?:routines?|schedul\w*|private chat)\b/.test(normalized)
341
355
  && !/\b(?:invite|membership|permissions?|roles?|human|colleague|coworker|slack|teams|whatsapp)\b/.test(normalized));
@@ -1 +1 @@
1
- export declare const OXYGEN_BUILD_VERSION = "1.1014.1696";
1
+ export declare const OXYGEN_BUILD_VERSION = "1.1014.1763";
@@ -1,2 +1,2 @@
1
1
  // GENERATED by scripts/ci/version-stamp.mjs from VERSION + git history. Do not edit; do not commit.
2
- export const OXYGEN_BUILD_VERSION = "1.1014.1696";
2
+ export const OXYGEN_BUILD_VERSION = "1.1014.1763";
@@ -144,10 +144,10 @@ function sequenceActivityDescription(key, label) {
144
144
  }
145
145
  function crmActivityDescription(key, label) {
146
146
  if (key === "email_bounced") {
147
- return "An email-bounce activity was added to a CRM record timeline, regardless of which producer logged it. Use the Sequencer preset for an outreach enrollment's own bounce outcome.";
147
+ return "An email-bounce activity was added to a CRM record timeline by anything except a workflow. Use the Sequencer preset for an outreach enrollment's own bounce outcome.";
148
148
  }
149
149
  if (key === "meeting_booked") {
150
- return "A meeting-booked activity was added to a CRM record timeline, regardless of which producer logged it. Use the Sequencer preset for an outreach enrollment's own meeting outcome.";
150
+ return "A meeting-booked activity was added to a CRM record timeline by anything except a workflow (a workflow-logged meeting, such as from the Cal.com router, never fires it). Use the Sequencer preset for an outreach enrollment's own meeting outcome.";
151
151
  }
152
152
  if (key === "placement_changed") {
153
153
  return "Inbox placement for a sender domain at one receiver provider changed (inbox rate drop or Gmail Primary to Promotions). A workspace Signal with no CRM record; placement never pauses a sender.";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxygen-agent/cli",
3
- "version": "1.1014.1696",
3
+ "version": "1.1014.1763",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -42,7 +42,7 @@
42
42
  "@opentelemetry/resources": "2.10.0",
43
43
  "@opentelemetry/sdk-trace-base": "2.10.0",
44
44
  "commander": "14.0.3",
45
- "esbuild": "0.27.7",
45
+ "esbuild": "0.28.2",
46
46
  "read-excel-file": "6.0.3",
47
47
  "typescript": "npm:@typescript/typescript6@6.0.2",
48
48
  "yaml": "2.9.0",