@oxygen-agent/cli 1.1011.493 → 1.1011.607
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/command-manifest.js +7 -0
- package/dist/crm-file-read-commands.d.ts +6 -0
- package/dist/crm-file-read-commands.js +16 -0
- package/dist/feed-read-flags.d.ts +3 -0
- package/dist/feed-read-flags.js +9 -0
- package/dist/functions-commands.js +2 -1
- package/dist/help.js +18 -5
- package/dist/index.js +168 -107
- package/dist/sender-limits-flags.js +6 -4
- package/dist/settings-commands.js +11 -11
- package/dist/whatsapp-account-flags.d.ts +4 -0
- package/dist/whatsapp-account-flags.js +18 -0
- package/node_modules/@oxygen/cli-ugc/dist/commands.js +2 -2
- package/node_modules/@oxygen/shared/dist/billing.d.ts +41 -0
- package/node_modules/@oxygen/shared/dist/billing.js +56 -0
- package/node_modules/@oxygen/shared/dist/capability-discovery.d.ts +21 -0
- package/node_modules/@oxygen/shared/dist/capability-discovery.js +254 -21
- package/node_modules/@oxygen/shared/dist/contracts/billing-owner-read.d.ts +6 -0
- package/node_modules/@oxygen/shared/dist/contracts/billing-owner-read.js +7 -0
- package/node_modules/@oxygen/shared/dist/contracts/browser-operations.js +4 -2
- package/node_modules/@oxygen/shared/dist/contracts/copilot-sessions.d.ts +11 -0
- package/node_modules/@oxygen/shared/dist/contracts/copilot-sessions.js +7 -0
- package/node_modules/@oxygen/shared/dist/contracts/crm-file-bytes.d.ts +33 -0
- package/node_modules/@oxygen/shared/dist/contracts/crm-file-bytes.js +12 -0
- package/node_modules/@oxygen/shared/dist/contracts/customer-operations.js +6 -3
- package/node_modules/@oxygen/shared/dist/contracts/function-library-read.d.ts +14 -0
- package/node_modules/@oxygen/shared/dist/contracts/function-library-read.js +16 -0
- package/node_modules/@oxygen/shared/dist/contracts/inbox-drafts-read.d.ts +45 -0
- package/node_modules/@oxygen/shared/dist/contracts/inbox-drafts-read.js +21 -0
- package/node_modules/@oxygen/shared/dist/contracts/limits-read.d.ts +29 -0
- package/node_modules/@oxygen/shared/dist/contracts/limits-read.js +121 -0
- package/node_modules/@oxygen/shared/dist/contracts/linkedin-invites-list.js +1 -1
- package/node_modules/@oxygen/shared/dist/contracts/pipedrive-catalog.d.ts +18 -0
- package/node_modules/@oxygen/shared/dist/contracts/pipedrive-catalog.js +29 -0
- package/node_modules/@oxygen/shared/dist/contracts/publishing-reads.d.ts +181 -0
- package/node_modules/@oxygen/shared/dist/contracts/publishing-reads.js +62 -0
- package/node_modules/@oxygen/shared/dist/contracts/sender-limits.js +7 -5
- package/node_modules/@oxygen/shared/dist/contracts/sequence-list.d.ts +3 -0
- package/node_modules/@oxygen/shared/dist/contracts/sequence-list.js +8 -0
- package/node_modules/@oxygen/shared/dist/contracts/stored-read-window.d.ts +17 -0
- package/node_modules/@oxygen/shared/dist/contracts/stored-read-window.js +8 -0
- package/node_modules/@oxygen/shared/dist/contracts/table-feed-read.d.ts +67 -0
- package/node_modules/@oxygen/shared/dist/contracts/table-feed-read.js +19 -0
- package/node_modules/@oxygen/shared/dist/contracts/table-row-read.d.ts +30 -0
- package/node_modules/@oxygen/shared/dist/contracts/table-row-read.js +9 -0
- package/node_modules/@oxygen/shared/dist/contracts/whatsapp-reads.d.ts +111 -0
- package/node_modules/@oxygen/shared/dist/contracts/whatsapp-reads.js +33 -0
- package/node_modules/@oxygen/shared/dist/contracts/workspace-pages.d.ts +6 -5
- package/node_modules/@oxygen/shared/dist/contracts/workspace-pages.js +5 -5
- package/node_modules/@oxygen/shared/dist/copilot-playbooks.d.ts +4 -1
- package/node_modules/@oxygen/shared/dist/copilot-playbooks.generated.d.ts +17 -0
- package/node_modules/@oxygen/shared/dist/copilot-playbooks.generated.js +26 -0
- package/node_modules/@oxygen/shared/dist/copilot-playbooks.js +2 -32
- package/node_modules/@oxygen/shared/dist/feature-gates.d.ts +5 -0
- package/node_modules/@oxygen/shared/dist/feature-gates.js +6 -0
- package/node_modules/@oxygen/shared/dist/first-month-offer-window.d.ts +34 -0
- package/node_modules/@oxygen/shared/dist/first-month-offer-window.js +41 -0
- package/node_modules/@oxygen/shared/dist/first-month-offer.d.ts +42 -0
- package/node_modules/@oxygen/shared/dist/first-month-offer.js +56 -0
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.d.ts +32 -1
- package/node_modules/@oxygen/shared/dist/linkedin-sequences.js +68 -4
- package/node_modules/@oxygen/shared/dist/otlp-log-sink.d.ts +6 -2
- package/node_modules/@oxygen/shared/dist/otlp-log-sink.js +6 -1
- package/node_modules/@oxygen/shared/dist/sql-error.js +13 -2
- package/node_modules/@oxygen/shared/dist/stripe-price-catalog.d.ts +3 -0
- package/node_modules/@oxygen/shared/dist/stripe-price-catalog.js +17 -1
- package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
- package/node_modules/@oxygen/shared/dist/workspace-file-storage.d.ts +11 -1
- package/node_modules/@oxygen/shared/dist/workspace-file-storage.js +29 -3
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/command-manifest.js
CHANGED
|
@@ -147,6 +147,10 @@ const ZERO_CREDIT_APPROVAL_COMMANDS = new Set([
|
|
|
147
147
|
// Both previews without --approved; approval cancels or archives, never charges.
|
|
148
148
|
"domains delete",
|
|
149
149
|
"mailboxes delete",
|
|
150
|
+
// Consent setup creates links without an execution debit; sync controls and
|
|
151
|
+
// progress are covered by the existing monthly mailbox commitment.
|
|
152
|
+
"mailboxes connect-oauth",
|
|
153
|
+
"mailboxes sync",
|
|
150
154
|
// Previews without --approved; with it, removes a program no creator ever
|
|
151
155
|
// joined. No provider call, no credits.
|
|
152
156
|
"ugc programs delete",
|
|
@@ -201,6 +205,9 @@ const PREVIEW_BY_DEFAULT_COMMANDS = new Set([
|
|
|
201
205
|
"mailboxes emailguard auto-enroll",
|
|
202
206
|
"domains delete",
|
|
203
207
|
"mailboxes delete",
|
|
208
|
+
"mailboxes connect-oauth",
|
|
209
|
+
// No action reads progress; an action previews until --approved.
|
|
210
|
+
"mailboxes sync",
|
|
204
211
|
"sequences recover-capacity",
|
|
205
212
|
"support admin done",
|
|
206
213
|
"support admin reply",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CRM_FILE_BYTES_MAX, CRM_FILE_BYTES_QUERY_CONTRACT } from "@oxygen/shared/contracts/crm-file-bytes";
|
|
2
|
+
import { addContractFlags, readContractFlags } from "./contract-flags.js";
|
|
3
|
+
import { requestOxygen } from "./http-client.js";
|
|
4
|
+
export function registerCrmFileReadCommands(program, handle) {
|
|
5
|
+
const files = program.commands.find(command => command.name() === "crm")?.commands.find(command => command.name() === "files");
|
|
6
|
+
if (!files)
|
|
7
|
+
throw new Error("CRM files must be registered first.");
|
|
8
|
+
const read = files.command("read <attachment-id>").description("Read a bounded chunk of original file bytes, separate from extracted text. Follow next_offset with the same sha256. No credits.").option("--json", "Print a JSON envelope.");
|
|
9
|
+
addContractFlags(read, CRM_FILE_BYTES_QUERY_CONTRACT);
|
|
10
|
+
read.action((attachmentId, options) => handle("crm files read", options, () => {
|
|
11
|
+
const params = new URLSearchParams({ format: "json", limit: String(CRM_FILE_BYTES_MAX), max_chars: "10000" });
|
|
12
|
+
for (const [key, value] of Object.entries(readContractFlags(options, CRM_FILE_BYTES_QUERY_CONTRACT)))
|
|
13
|
+
params.set(key, String(value));
|
|
14
|
+
return requestOxygen(`/api/cli/crm/files/${encodeURIComponent(attachmentId)}/download?${params}`);
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TABLE_FEED_GET_WINDOW_CONTRACT, TABLE_FEED_LIST_WINDOW_CONTRACT } from "@oxygen/shared/contracts/table-feed-read";
|
|
2
|
+
import { addContractFlags, readContractFlags } from "./contract-flags.js";
|
|
3
|
+
export function addFeedReadFlags(command, detail = false) {
|
|
4
|
+
return addContractFlags(command, detail ? TABLE_FEED_GET_WINDOW_CONTRACT : TABLE_FEED_LIST_WINDOW_CONTRACT);
|
|
5
|
+
}
|
|
6
|
+
export function feedReadWindowParams(options, detail = false) {
|
|
7
|
+
const fields = readContractFlags(options, detail ? TABLE_FEED_GET_WINDOW_CONTRACT : TABLE_FEED_LIST_WINDOW_CONTRACT);
|
|
8
|
+
return new URLSearchParams(Object.entries(fields).map(([key, value]) => [key, String(value)]));
|
|
9
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { OxygenError } from "@oxygen/shared";
|
|
2
|
+
import { FUNCTION_LIBRARY_FILTER } from "@oxygen/shared/contracts/function-library-read";
|
|
2
3
|
import { parseJsonObject } from "./cli-values.js";
|
|
3
4
|
import { requestOxygen } from "./http-client.js";
|
|
4
5
|
export function registerFunctionsCommands(program, handle) {
|
|
@@ -12,7 +13,7 @@ export function registerFunctionsCommands(program, handle) {
|
|
|
12
13
|
.action((options) => handle("functions list", options, () => {
|
|
13
14
|
if (options.managed && options.favorites)
|
|
14
15
|
throw new OxygenError("invalid_request", "Pass --managed or --favorites, not both.", { exitCode: 1 });
|
|
15
|
-
const filter = options.managed ?
|
|
16
|
+
const filter = options.managed ? FUNCTION_LIBRARY_FILTER.managed : options.favorites ? FUNCTION_LIBRARY_FILTER.favorites : null;
|
|
16
17
|
return requestOxygen(filter ? `/api/cli/functions?${new URLSearchParams({ filter })}` : "/api/cli/functions");
|
|
17
18
|
}));
|
|
18
19
|
for (const [command, label] of [["favorite", "Favourite a Function so it appears under `functions list --favorites` and the Favorites tab; per user, per workspace."], ["unfavorite", "Remove a Function from your favourites."]]) {
|
package/dist/help.js
CHANGED
|
@@ -147,19 +147,19 @@ export function applyOxygenHelp(program, binaryName) {
|
|
|
147
147
|
` 2. ${binaryName} skills install --json load the skills that teach the GTM loops (automatic after login)`,
|
|
148
148
|
" Add --project to keep the skills inside the current project, including confined agent sessions.",
|
|
149
149
|
` 3. ${binaryName} context resolve --json load workspace context before operating primitives`,
|
|
150
|
-
//
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
` New or thin workspace? load the onboarding consultant first: ${binaryName} skills get oxygen-onboarding --json`,
|
|
150
|
+
// Populated workspaces need the same first-win guidance as empty ones.
|
|
151
|
+
` Getting started or choosing what to do next? ${binaryName} skills get oxygen-onboarding --json`,
|
|
152
|
+
" It maps your company, running campaigns and connected accounts, then suggests plays to build.",
|
|
154
153
|
` 4. ${binaryName} capabilities search "<goal>" --json route the goal, then hydrate one exact command`,
|
|
155
154
|
` ${binaryName} commands search "<term>" --json find a command by name or purpose instead of dumping the manifest`,
|
|
156
|
-
` 5. ${binaryName} recipes list --json
|
|
155
|
+
` 5. ${binaryName} recipes list "<goal>" --view summary --json choose a play from the Recipe catalog for your goal`,
|
|
157
156
|
` Provider inventory: ${binaryName} tools search <brand> --json, then ${binaryName} tools search --provider <provider-id> --all --json (Blitz uses blitzapi).`,
|
|
158
157
|
` Installable systems and recurring monitors: ${binaryName} blueprints list --json.`,
|
|
159
158
|
" Docs: https://oxygen-agent.com/docs",
|
|
160
159
|
"",
|
|
161
160
|
"Conventions:",
|
|
162
161
|
" --json prints a stable envelope {ok, data|error, meta}; errors always print it.",
|
|
162
|
+
" Free Sequence launch previews omit --approved and --max-credits.",
|
|
163
163
|
" Credit-spending commands require --approved --max-credits <n>; zero-credit",
|
|
164
164
|
" external writes require --approved plus the command's preview-bound plan token.",
|
|
165
165
|
" State-changing responses include a web_url deep-link to inspect the result.",
|
|
@@ -248,6 +248,19 @@ const COMMAND_SYNONYMS = {
|
|
|
248
248
|
// guess was `oxygen campaigns` (Plain T-220 baseline, 2026-09-30).
|
|
249
249
|
campaign: ["sequences"],
|
|
250
250
|
campaigns: ["sequences"],
|
|
251
|
+
// Hiding sidebar pages lives under `settings pages`; the blind agent's first
|
|
252
|
+
// guess was `oxygen sidebar` (personal-sidebar baseline, 2026-10-02).
|
|
253
|
+
sidebar: ["settings"],
|
|
254
|
+
// Creator programs live under `ugc`; a blind agent's first guess was
|
|
255
|
+
// `oxygen creator` (invite-sponsorship acceptance, 2026-10-02).
|
|
256
|
+
creator: ["ugc"],
|
|
257
|
+
creators: ["ugc"],
|
|
258
|
+
influencer: ["ugc"],
|
|
259
|
+
influencers: ["ugc"],
|
|
260
|
+
navigation: ["settings"],
|
|
261
|
+
nav: ["settings"],
|
|
262
|
+
customise: ["settings"],
|
|
263
|
+
customize: ["settings"],
|
|
251
264
|
};
|
|
252
265
|
/**
|
|
253
266
|
* The extra line printed after `error: unknown command '<x>'`.
|