@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.
- package/README.md +1 -1
- package/dist/column-run-notices.d.ts +11 -0
- package/dist/column-run-notices.js +37 -0
- package/dist/command-manifest.js +13 -8
- package/dist/help.js +78 -16
- package/dist/index.js +3873 -514
- package/dist/skills.js +106 -1
- package/node_modules/@oxygen/formula/dist/coerce.d.ts +8 -0
- package/node_modules/@oxygen/formula/dist/coerce.js +10 -0
- package/node_modules/@oxygen/formula/dist/evaluate.d.ts +31 -0
- package/node_modules/@oxygen/formula/dist/evaluate.js +248 -0
- package/node_modules/@oxygen/formula/dist/expression.d.ts +64 -0
- package/node_modules/@oxygen/formula/dist/expression.js +428 -0
- package/node_modules/@oxygen/formula/dist/formula-functions.d.ts +71 -0
- package/node_modules/@oxygen/formula/dist/formula-functions.js +1100 -0
- package/node_modules/@oxygen/formula/dist/index.d.ts +17 -0
- package/node_modules/@oxygen/formula/dist/index.js +17 -0
- package/node_modules/@oxygen/formula/dist/value-normalizers.d.ts +30 -0
- package/node_modules/@oxygen/formula/dist/value-normalizers.js +80 -0
- package/node_modules/@oxygen/formula/package.json +26 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.d.ts +30 -0
- package/node_modules/@oxygen/recipe-sdk/dist/index.js +2 -2
- package/node_modules/@oxygen/shared/dist/billing-anchors.d.ts +60 -0
- package/node_modules/@oxygen/shared/dist/billing-anchors.js +135 -0
- package/node_modules/@oxygen/shared/dist/billing.d.ts +101 -5
- package/node_modules/@oxygen/shared/dist/billing.js +192 -8
- package/node_modules/@oxygen/shared/dist/call-outcomes.d.ts +59 -0
- package/node_modules/@oxygen/shared/dist/call-outcomes.js +73 -0
- package/node_modules/@oxygen/shared/dist/cli-result.js +1 -0
- package/node_modules/@oxygen/shared/dist/credit-guidance.js +3 -1
- package/node_modules/@oxygen/shared/dist/crm-reply-events.d.ts +35 -0
- package/node_modules/@oxygen/shared/dist/crm-reply-events.js +31 -0
- package/node_modules/@oxygen/shared/dist/dial-guardrail-overrides.d.ts +50 -0
- package/node_modules/@oxygen/shared/dist/dial-guardrail-overrides.js +65 -0
- package/node_modules/@oxygen/shared/dist/directory.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/directory.js +1 -0
- package/node_modules/@oxygen/shared/dist/hosted-ai.d.ts +17 -1
- package/node_modules/@oxygen/shared/dist/hosted-ai.js +52 -3
- package/node_modules/@oxygen/shared/dist/index.d.ts +11 -0
- package/node_modules/@oxygen/shared/dist/index.js +15 -0
- package/node_modules/@oxygen/shared/dist/langfuse.d.ts +77 -0
- package/node_modules/@oxygen/shared/dist/langfuse.js +231 -0
- package/node_modules/@oxygen/shared/dist/linkedin-quota-denial.d.ts +31 -0
- package/node_modules/@oxygen/shared/dist/linkedin-quota-denial.js +56 -0
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.d.ts +5 -4
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.js +5 -4
- package/node_modules/@oxygen/shared/dist/linkedin-url.d.ts +22 -0
- package/node_modules/@oxygen/shared/dist/linkedin-url.js +7 -4
- package/node_modules/@oxygen/shared/dist/log.js +56 -4
- package/node_modules/@oxygen/shared/dist/microsoft-consent-url.d.ts +7 -0
- package/node_modules/@oxygen/shared/dist/microsoft-consent-url.js +29 -0
- package/node_modules/@oxygen/shared/dist/object-storage.d.ts +31 -0
- package/node_modules/@oxygen/shared/dist/object-storage.js +61 -0
- package/node_modules/@oxygen/shared/dist/plan-limits.d.ts +636 -0
- package/node_modules/@oxygen/shared/dist/plan-limits.js +199 -0
- package/node_modules/@oxygen/shared/dist/pricing-sheet.d.ts +89 -23
- package/node_modules/@oxygen/shared/dist/pricing-sheet.js +88 -24
- package/node_modules/@oxygen/shared/dist/sequence-crm-events.d.ts +291 -0
- package/node_modules/@oxygen/shared/dist/sequence-crm-events.js +224 -0
- package/node_modules/@oxygen/shared/dist/sequence-template.d.ts +42 -1
- package/node_modules/@oxygen/shared/dist/sequence-template.js +0 -0
- package/node_modules/@oxygen/shared/dist/sequences.d.ts +287 -24
- package/node_modules/@oxygen/shared/dist/sequences.js +940 -60
- package/node_modules/@oxygen/shared/dist/spend-safety.d.ts +70 -0
- package/node_modules/@oxygen/shared/dist/spend-safety.js +106 -0
- package/node_modules/@oxygen/shared/dist/tags.d.ts +90 -1
- package/node_modules/@oxygen/shared/dist/tags.js +126 -6
- package/node_modules/@oxygen/shared/dist/version.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/version.js +1 -1
- package/node_modules/@oxygen/shared/dist/workflow-trigger-metadata.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/workflow-trigger-metadata.js +4 -0
- package/node_modules/@oxygen/shared/dist/workspace-agents.d.ts +8 -7
- package/node_modules/@oxygen/shared/dist/workspace-agents.js +34 -7
- package/node_modules/@oxygen/shared/package.json +95 -0
- package/node_modules/@oxygen/workflows/dist/event-dispatch.d.ts +126 -0
- package/node_modules/@oxygen/workflows/dist/event-dispatch.js +173 -0
- package/node_modules/@oxygen/workflows/dist/graph/expression.d.ts +78 -0
- package/node_modules/@oxygen/workflows/dist/graph/expression.js +700 -0
- package/node_modules/@oxygen/workflows/dist/graph/index.d.ts +20 -0
- package/node_modules/@oxygen/workflows/dist/graph/index.js +20 -0
- package/node_modules/@oxygen/workflows/dist/graph/lint.d.ts +4 -0
- package/node_modules/@oxygen/workflows/dist/graph/lint.js +812 -0
- package/node_modules/@oxygen/workflows/dist/graph/manifest-schema.d.ts +501 -0
- package/node_modules/@oxygen/workflows/dist/graph/manifest-schema.js +200 -0
- package/node_modules/@oxygen/workflows/dist/graph/params.d.ts +86 -0
- package/node_modules/@oxygen/workflows/dist/graph/params.js +173 -0
- package/node_modules/@oxygen/workflows/dist/graph/remap.d.ts +48 -0
- package/node_modules/@oxygen/workflows/dist/graph/remap.js +213 -0
- package/node_modules/@oxygen/workflows/dist/graph/topology.d.ts +46 -0
- package/node_modules/@oxygen/workflows/dist/graph/topology.js +280 -0
- package/node_modules/@oxygen/workflows/dist/graph/types.d.ts +270 -0
- package/node_modules/@oxygen/workflows/dist/graph/types.js +93 -0
- package/node_modules/@oxygen/workflows/dist/index.d.ts +113 -1
- package/node_modules/@oxygen/workflows/dist/index.js +179 -13
- package/node_modules/@oxygen/workflows/dist/tool-effects.d.ts +1 -0
- package/node_modules/@oxygen/workflows/dist/tool-effects.js +19 -0
- package/node_modules/@oxygen/workflows/dist/usage-estimate.js +135 -4
- package/node_modules/@oxygen/workflows/package.json +4 -0
- package/package.json +10 -5
package/README.md
CHANGED
|
@@ -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
|
+
}
|
package/dist/command-manifest.js
CHANGED
|
@@ -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 $
|
|
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.
|
|
13
|
-
//
|
|
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", "
|
|
20
|
-
"log", "login", "logout", "mark-read", "
|
|
21
|
-
"
|
|
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",
|
|
13
|
-
"
|
|
14
|
-
"
|
|
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",
|
|
25
|
-
|
|
26
|
-
|
|
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: [
|
|
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",
|
|
37
|
-
"
|
|
38
|
-
"
|
|
39
|
-
"
|
|
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",
|
|
55
|
-
"
|
|
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
|
-
`
|
|
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
|
-
"
|
|
82
|
-
" require --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}`,
|