@oxygen-agent/cli 1.365.3 → 1.575.19

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 (99) hide show
  1. package/README.md +1 -1
  2. package/dist/column-run-notices.d.ts +11 -0
  3. package/dist/column-run-notices.js +37 -0
  4. package/dist/command-manifest.js +13 -8
  5. package/dist/help.js +78 -16
  6. package/dist/index.js +3873 -514
  7. package/dist/skills.js +106 -1
  8. package/node_modules/@oxygen/formula/dist/coerce.d.ts +8 -0
  9. package/node_modules/@oxygen/formula/dist/coerce.js +10 -0
  10. package/node_modules/@oxygen/formula/dist/evaluate.d.ts +31 -0
  11. package/node_modules/@oxygen/formula/dist/evaluate.js +248 -0
  12. package/node_modules/@oxygen/formula/dist/expression.d.ts +64 -0
  13. package/node_modules/@oxygen/formula/dist/expression.js +428 -0
  14. package/node_modules/@oxygen/formula/dist/formula-functions.d.ts +71 -0
  15. package/node_modules/@oxygen/formula/dist/formula-functions.js +1100 -0
  16. package/node_modules/@oxygen/formula/dist/index.d.ts +17 -0
  17. package/node_modules/@oxygen/formula/dist/index.js +17 -0
  18. package/node_modules/@oxygen/formula/dist/value-normalizers.d.ts +30 -0
  19. package/node_modules/@oxygen/formula/dist/value-normalizers.js +80 -0
  20. package/node_modules/@oxygen/formula/package.json +26 -0
  21. package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +30 -0
  22. package/node_modules/@oxygen/recipe-sdk/dist/index.js +2 -2
  23. package/node_modules/@oxygen/shared/dist/billing-anchors.d.ts +60 -0
  24. package/node_modules/@oxygen/shared/dist/billing-anchors.js +135 -0
  25. package/node_modules/@oxygen/shared/dist/billing.d.ts +101 -5
  26. package/node_modules/@oxygen/shared/dist/billing.js +192 -8
  27. package/node_modules/@oxygen/shared/dist/call-outcomes.d.ts +59 -0
  28. package/node_modules/@oxygen/shared/dist/call-outcomes.js +73 -0
  29. package/node_modules/@oxygen/shared/dist/cli-result.js +1 -0
  30. package/node_modules/@oxygen/shared/dist/credit-guidance.js +3 -1
  31. package/node_modules/@oxygen/shared/dist/crm-reply-events.d.ts +35 -0
  32. package/node_modules/@oxygen/shared/dist/crm-reply-events.js +31 -0
  33. package/node_modules/@oxygen/shared/dist/dial-guardrail-overrides.d.ts +50 -0
  34. package/node_modules/@oxygen/shared/dist/dial-guardrail-overrides.js +65 -0
  35. package/node_modules/@oxygen/shared/dist/directory.d.ts +1 -1
  36. package/node_modules/@oxygen/shared/dist/directory.js +1 -0
  37. package/node_modules/@oxygen/shared/dist/hosted-ai.d.ts +17 -1
  38. package/node_modules/@oxygen/shared/dist/hosted-ai.js +52 -3
  39. package/node_modules/@oxygen/shared/dist/index.d.ts +11 -0
  40. package/node_modules/@oxygen/shared/dist/index.js +15 -0
  41. package/node_modules/@oxygen/shared/dist/langfuse.d.ts +77 -0
  42. package/node_modules/@oxygen/shared/dist/langfuse.js +231 -0
  43. package/node_modules/@oxygen/shared/dist/linkedin-quota-denial.d.ts +31 -0
  44. package/node_modules/@oxygen/shared/dist/linkedin-quota-denial.js +56 -0
  45. package/node_modules/@oxygen/shared/dist/linkedin-sequences.d.ts +5 -4
  46. package/node_modules/@oxygen/shared/dist/linkedin-sequences.js +5 -4
  47. package/node_modules/@oxygen/shared/dist/linkedin-url.d.ts +22 -0
  48. package/node_modules/@oxygen/shared/dist/linkedin-url.js +7 -4
  49. package/node_modules/@oxygen/shared/dist/log.js +56 -4
  50. package/node_modules/@oxygen/shared/dist/microsoft-consent-url.d.ts +7 -0
  51. package/node_modules/@oxygen/shared/dist/microsoft-consent-url.js +29 -0
  52. package/node_modules/@oxygen/shared/dist/object-storage.d.ts +31 -0
  53. package/node_modules/@oxygen/shared/dist/object-storage.js +61 -0
  54. package/node_modules/@oxygen/shared/dist/plan-limits.d.ts +636 -0
  55. package/node_modules/@oxygen/shared/dist/plan-limits.js +199 -0
  56. package/node_modules/@oxygen/shared/dist/pricing-sheet.d.ts +89 -23
  57. package/node_modules/@oxygen/shared/dist/pricing-sheet.js +88 -24
  58. package/node_modules/@oxygen/shared/dist/sequence-crm-events.d.ts +291 -0
  59. package/node_modules/@oxygen/shared/dist/sequence-crm-events.js +224 -0
  60. package/node_modules/@oxygen/shared/dist/sequence-template.d.ts +42 -1
  61. package/node_modules/@oxygen/shared/dist/sequence-template.js +0 -0
  62. package/node_modules/@oxygen/shared/dist/sequences.d.ts +287 -24
  63. package/node_modules/@oxygen/shared/dist/sequences.js +940 -60
  64. package/node_modules/@oxygen/shared/dist/spend-safety.d.ts +70 -0
  65. package/node_modules/@oxygen/shared/dist/spend-safety.js +106 -0
  66. package/node_modules/@oxygen/shared/dist/tags.d.ts +90 -1
  67. package/node_modules/@oxygen/shared/dist/tags.js +126 -6
  68. package/node_modules/@oxygen/shared/dist/version.d.ts +1 -1
  69. package/node_modules/@oxygen/shared/dist/version.js +1 -1
  70. package/node_modules/@oxygen/shared/dist/workflow-trigger-metadata.d.ts +1 -1
  71. package/node_modules/@oxygen/shared/dist/workflow-trigger-metadata.js +4 -0
  72. package/node_modules/@oxygen/shared/dist/workspace-agents.d.ts +8 -7
  73. package/node_modules/@oxygen/shared/dist/workspace-agents.js +34 -7
  74. package/node_modules/@oxygen/shared/package.json +95 -0
  75. package/node_modules/@oxygen/workflows/dist/event-dispatch.d.ts +126 -0
  76. package/node_modules/@oxygen/workflows/dist/event-dispatch.js +173 -0
  77. package/node_modules/@oxygen/workflows/dist/graph/expression.d.ts +78 -0
  78. package/node_modules/@oxygen/workflows/dist/graph/expression.js +700 -0
  79. package/node_modules/@oxygen/workflows/dist/graph/index.d.ts +20 -0
  80. package/node_modules/@oxygen/workflows/dist/graph/index.js +20 -0
  81. package/node_modules/@oxygen/workflows/dist/graph/lint.d.ts +4 -0
  82. package/node_modules/@oxygen/workflows/dist/graph/lint.js +812 -0
  83. package/node_modules/@oxygen/workflows/dist/graph/manifest-schema.d.ts +501 -0
  84. package/node_modules/@oxygen/workflows/dist/graph/manifest-schema.js +200 -0
  85. package/node_modules/@oxygen/workflows/dist/graph/params.d.ts +86 -0
  86. package/node_modules/@oxygen/workflows/dist/graph/params.js +173 -0
  87. package/node_modules/@oxygen/workflows/dist/graph/remap.d.ts +48 -0
  88. package/node_modules/@oxygen/workflows/dist/graph/remap.js +213 -0
  89. package/node_modules/@oxygen/workflows/dist/graph/topology.d.ts +46 -0
  90. package/node_modules/@oxygen/workflows/dist/graph/topology.js +280 -0
  91. package/node_modules/@oxygen/workflows/dist/graph/types.d.ts +270 -0
  92. package/node_modules/@oxygen/workflows/dist/graph/types.js +93 -0
  93. package/node_modules/@oxygen/workflows/dist/index.d.ts +113 -1
  94. package/node_modules/@oxygen/workflows/dist/index.js +179 -13
  95. package/node_modules/@oxygen/workflows/dist/tool-effects.d.ts +1 -0
  96. package/node_modules/@oxygen/workflows/dist/tool-effects.js +19 -0
  97. package/node_modules/@oxygen/workflows/dist/usage-estimate.js +135 -4
  98. package/node_modules/@oxygen/workflows/package.json +4 -0
  99. package/package.json +10 -5
package/README.md CHANGED
@@ -34,4 +34,4 @@ oxygen update
34
34
 
35
35
  For product documentation, visit https://oxygen-agent.com/docs. For support, visit https://oxygen-agent.com.
36
36
 
37
- Version: 1.365.3
37
+ Version: 1.575.19
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `columns run --dry-run` on an AI column renders the prompt the model would
3
+ * actually receive for one real row. The human (non `--json`) output is a JSON
4
+ * dump, where that prompt is one long \n-escaped string — unreadable exactly
5
+ * where it matters. Render it for a terminal with real line breaks, naming the
6
+ * row it used so the reader can judge whether that row is representative.
7
+ *
8
+ * Returns null when the envelope carries no prompt preview (non-AI column,
9
+ * live run, or a preview the server could not produce).
10
+ */
11
+ export declare function formatAiPromptPreviewNotice(data: unknown): string | null;
@@ -0,0 +1,37 @@
1
+ import { readRecordString } from "./cli-values.js";
2
+ import { isRecord } from "./util.js";
3
+ /**
4
+ * `columns run --dry-run` on an AI column renders the prompt the model would
5
+ * actually receive for one real row. The human (non `--json`) output is a JSON
6
+ * dump, where that prompt is one long \n-escaped string — unreadable exactly
7
+ * where it matters. Render it for a terminal with real line breaks, naming the
8
+ * row it used so the reader can judge whether that row is representative.
9
+ *
10
+ * Returns null when the envelope carries no prompt preview (non-AI column,
11
+ * live run, or a preview the server could not produce).
12
+ */
13
+ export function formatAiPromptPreviewNotice(data) {
14
+ if (!isRecord(data) || data.dry_run !== true)
15
+ return null;
16
+ const ai = isRecord(data.ai) ? data.ai : null;
17
+ const preview = ai && isRecord(ai.prompt_preview) ? ai.prompt_preview : null;
18
+ if (!preview)
19
+ return null;
20
+ if (preview.status !== "rendered") {
21
+ const message = readRecordString(preview, "message") ?? "no sample row was available.";
22
+ return `prompt preview unavailable: ${message}`;
23
+ }
24
+ const rowId = readRecordString(preview, "row_id") ?? "unknown";
25
+ const source = preview.row_source === "requested_row"
26
+ ? "the row you asked for"
27
+ : "first row in scope";
28
+ const shown = readRecordString(preview, "prompt") ?? "";
29
+ const chars = typeof preview.prompt_chars === "number" ? preview.prompt_chars : shown.length;
30
+ const truncation = preview.truncated === true
31
+ ? ` — truncated to ${shown.length} of ${chars} chars`
32
+ : "";
33
+ return [
34
+ `prompt preview — row ${rowId} (${source}), before grounding${truncation}:`,
35
+ shown,
36
+ ].join("\n");
37
+ }
@@ -7,25 +7,30 @@ import { CLI_EXIT_CODE_TABLE, OXYGEN_VERSION } from "@oxygen/shared";
7
7
  // deliberately excluded so a read is never mislabeled — e.g. `repair`
8
8
  // (→ `db repair-preview`). Approval-gated commands count as mutating even
9
9
  // though their bare form previews (`rotate`, `request` — `egress dedicated
10
- // request --approve` places a real $400/mo order). Object nouns that front
10
+ // request --approve` places a real $15/mo order). Object nouns that front
11
11
  // paid *reads* (`find company`, `find email`) stay out too: those are flagged
12
- // by spends_credits, not mutates. When you add a leaf command, verify its verb
13
- // here against the self-index before trusting the default.
12
+ // by spends_credits, not mutates. Hyphenated writes are listed as the EXACT
13
+ // leaf (`mark-read`, `mark-all-read`, `warm-send`) rather than as their prefix,
14
+ // because the prefix would also claim every future leaf sharing it — a bare
15
+ // `mark` entry would mislabel a read-only `mark …` command as a write. When you
16
+ // add a leaf command, verify its verb here against the self-index before
17
+ // trusting the default.
14
18
  const MUTATING_VERBS = new Set([
15
19
  "accept", "ack", "add", "adopt", "apply", "approve", "archive",
16
- "assign", "attach", "backfill", "buy", "call", "cancel", "clear",
20
+ "assign", "attach", "backfill", "bind", "buy", "call", "cancel", "chat-action", "clear",
17
21
  "comment", "configure", "connect", "create", "delete", "delist", "disable",
18
22
  "disconnect", "dispatch", "draft", "duplicate", "edit", "emit", "enable", "enroll",
19
- "file", "grant", "harvest", "import", "insert", "invite", "launch",
20
- "log", "login", "logout", "mark-read", "materialize", "merge", "migrate",
21
- "move", "note", "onboard", "order", "pause", "pin", "provision",
23
+ "file", "forward", "grant", "harvest", "history", "import", "insert", "interrupt", "invite",
24
+ "launch", "log", "login", "logout", "mark-all-read", "mark-read", "materialize", "merge",
25
+ "migrate",
26
+ "move", "note", "off", "onboard", "order", "pause", "pin", "provision",
22
27
  "publish", "purchase", "purge", "push", "react", "reconcile", "record", "recover-pending",
23
28
  "register", "reject", "relink", "remove", "rename", "reorder", "reply", "request",
24
29
  "rerun", "rescan", "resend", "reset", "resolve", "restore", "resume",
25
30
  "retry", "retype", "revoke", "rotate", "run", "save", "schedule",
26
31
  "seed", "select", "send", "set", "setup", "share", "solve",
27
32
  "start", "stop", "subscribe", "sync", "synthesize", "tag", "unarchive", "unpublish", "unshare",
28
- "unsubscribe", "update", "upload", "upsert", "use", "warm-send", "warmup",
33
+ "unbind", "unsubscribe", "update", "upload", "upsert", "use", "warm-send", "warmup",
29
34
  "withdraw", "write",
30
35
  ]);
31
36
  export function buildCommandManifest(program, binaryName) {
package/dist/help.js CHANGED
@@ -9,9 +9,20 @@ const HELP_GROUPS = [
9
9
  {
10
10
  heading: "Get started & account:",
11
11
  commands: [
12
- "login", "auth", "profiles", "logout", "update", "api-keys", "whoami",
13
- "onboarding", "status", "orgs", "commands", "skills", "session",
14
- "support", "feedback",
12
+ "login",
13
+ "auth",
14
+ "profiles",
15
+ "logout",
16
+ "update",
17
+ "api-keys",
18
+ "whoami",
19
+ "status",
20
+ "orgs",
21
+ "commands",
22
+ "skills",
23
+ "session",
24
+ "support",
25
+ "feedback",
15
26
  ],
16
27
  },
17
28
  {
@@ -21,22 +32,62 @@ const HELP_GROUPS = [
21
32
  {
22
33
  heading: "Data (tables, CRM, dashboards):",
23
34
  commands: [
24
- "tables", "rows", "cells", "columns", "action-column", "enrich-column",
25
- "enrichment", "table-runs", "table-ingestions", "runs", "crm", "signals",
26
- "dashboards", "projects", "signup-leads",
35
+ "tables",
36
+ // A feed is part of Tables (ADR 0016), not an eleventh primitive — it sits
37
+ // beside `tables` so the live half of a table is found next to the table.
38
+ "feeds",
39
+ "rows",
40
+ "cells",
41
+ "columns",
42
+ "action-column",
43
+ "enrich-column",
44
+ "enrichment",
45
+ "table-runs",
46
+ "table-ingestions",
47
+ "runs",
48
+ "crm",
49
+ "signals",
50
+ "dashboards",
51
+ "projects",
52
+ "signup-leads",
27
53
  ],
28
54
  },
29
55
  {
30
56
  heading: "Sourcing & search:",
31
- commands: ["sourcing", "lead-sourcing", "search", "companies", "people", "find", "tools"],
57
+ commands: [
58
+ "sourcing",
59
+ "lead-sourcing",
60
+ "search",
61
+ "companies",
62
+ "people",
63
+ "find",
64
+ "tools",
65
+ ],
32
66
  },
33
67
  {
34
68
  heading: "Outbound & channels:",
35
69
  commands: [
36
- "sequences", "senders", "inbox", "messages", "mailboxes",
37
- "managed-inboxes", "deliverability", "domains", "email", "schedules",
38
- "suppressions", "egress", "linkedin", "connections", "followers",
39
- "viewers", "posts", "engagement", "whatsapp", "publishing", "notetaker",
70
+ "sequences",
71
+ "senders",
72
+ "inbox",
73
+ "messages",
74
+ "mailboxes",
75
+ "managed-inboxes",
76
+ "deliverability",
77
+ "domains",
78
+ "email",
79
+ "schedules",
80
+ "suppressions",
81
+ "egress",
82
+ "linkedin",
83
+ "connections",
84
+ "followers",
85
+ "viewers",
86
+ "posts",
87
+ "engagement",
88
+ "whatsapp",
89
+ "publishing",
90
+ "notetaker",
40
91
  "reviews",
41
92
  ],
42
93
  },
@@ -51,8 +102,16 @@ const HELP_GROUPS = [
51
102
  {
52
103
  heading: "Automation, billing & admin:",
53
104
  commands: [
54
- "workflows", "integrations", "custom-integrations", "billing", "budget",
55
- "observability", "worker", "db", "admin", "directory",
105
+ "workflows",
106
+ "integrations",
107
+ "custom-integrations",
108
+ "billing",
109
+ "budget",
110
+ "observability",
111
+ "worker",
112
+ "db",
113
+ "admin",
114
+ "directory",
56
115
  ],
57
116
  },
58
117
  ];
@@ -73,13 +132,16 @@ export function applyOxygenHelp(program, binaryName) {
73
132
  "",
74
133
  "Agent quickstart:",
75
134
  ` 1. ${binaryName} login connect this terminal (or set OXYGEN_API_KEY)`,
76
- ` 2. ${binaryName} onboarding start --json load workspace context + the skill that teaches the GTM loops`,
135
+ // `login` auto-installs the skills, but an agent authenticating with
136
+ // OXYGEN_API_KEY never runs it — without this step nothing on any
137
+ // first-touch surface names the skill that teaches the GTM loops.
138
+ ` 2. ${binaryName} skills install --json load the skills that teach the GTM loops (automatic after login)`,
77
139
  ` 3. ${binaryName} commands --json full machine-readable command grammar (this CLI's self-index)`,
78
140
  "",
79
141
  "Conventions:",
80
142
  " --json prints a stable envelope {ok, data|error, meta}; errors always print it.",
81
- " Commands that spend credits or write to external platforms are gated: live runs",
82
- " require --approved --max-credits <n> and fail with a typed error until approved.",
143
+ " Credit-spending commands require --approved --max-credits <n>; zero-credit",
144
+ " external writes require --approved plus the command's preview-bound plan token.",
83
145
  " State-changing responses include a web_url deep-link to inspect the result.",
84
146
  "",
85
147
  `Exit codes: ${exitCodeLine}`,