@oxygen-agent/cli 1.1013.15 → 1.1013.27
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/index.js +1 -1
- package/node_modules/@oxygen/cli-ugc/dist/commands.js +14 -2
- package/node_modules/@oxygen/shared/dist/column-operation.d.ts +5 -0
- package/node_modules/@oxygen/shared/dist/column-operation.js +6 -0
- package/node_modules/@oxygen/shared/dist/contracts/customer-operations.js +1 -0
- package/node_modules/@oxygen/shared/dist/future-signup-events.d.ts +7 -0
- package/node_modules/@oxygen/shared/dist/future-signup-events.js +11 -0
- package/node_modules/@oxygen/shared/dist/knowledge-constants.d.ts +7 -0
- package/node_modules/@oxygen/shared/dist/knowledge-constants.js +9 -0
- package/node_modules/@oxygen/shared/dist/product-analytics-events.d.ts +7 -0
- package/node_modules/@oxygen/shared/dist/product-analytics-events.js +7 -0
- package/node_modules/@oxygen/shared/dist/ugc.d.ts +9 -0
- package/node_modules/@oxygen/shared/dist/ugc.js +12 -0
- package/node_modules/@oxygen/shared/dist/version.generated.d.ts +1 -1
- package/node_modules/@oxygen/shared/dist/version.generated.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/index.js
CHANGED
|
@@ -11928,7 +11928,7 @@ Examples:
|
|
|
11928
11928
|
.command("admin")
|
|
11929
11929
|
.description("Staff-only commands.")
|
|
11930
11930
|
.addCommand(new Command("kpis")
|
|
11931
|
-
.description("Show the company conversion funnel (visitors → signups →
|
|
11931
|
+
.description("Show the company conversion funnel (visitors → signups → activation on any surface, web, CLI or MCP → paid, with step rates and agent connected beside it), self-reported signup-channel attribution, new and positive-paid MRR/ARR, and paid churn separated from trial loss. OXYGEN staff only; workspace admin role alone does not grant access.")
|
|
11932
11932
|
.addOption(new Option("--range <range>", "Range for acquisition, the funnel's signup cohort, new revenue, and churn; current MRR/ARR and scheduled cancellations remain point-in-time.")
|
|
11933
11933
|
.choices(["7d", "30d", "90d"])
|
|
11934
11934
|
.default("30d"))
|
|
@@ -318,7 +318,13 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
|
|
|
318
318
|
{
|
|
319
319
|
name: "knowledge_slugs",
|
|
320
320
|
kind: "array",
|
|
321
|
-
description: "
|
|
321
|
+
description: "Knowledge file slugs, skills included, shared live with creators and loaded into their AI context (up to 30); empty array clears sharing.",
|
|
322
|
+
required: false,
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
name: "knowledge_folder_ids",
|
|
326
|
+
kind: "array",
|
|
327
|
+
description: "Knowledge folder ids (from knowledge folders list) shared live with creators, skill folders included: files added to them later reach existing creators too (up to 10); empty array clears.",
|
|
322
328
|
required: false,
|
|
323
329
|
},
|
|
324
330
|
{
|
|
@@ -373,7 +379,13 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
|
|
|
373
379
|
{
|
|
374
380
|
name: "knowledge_slugs",
|
|
375
381
|
kind: "array",
|
|
376
|
-
description: "
|
|
382
|
+
description: "Knowledge file slugs, skills included, shared live with creators and loaded into their AI context (up to 30); empty array clears sharing.",
|
|
383
|
+
required: false,
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
name: "knowledge_folder_ids",
|
|
387
|
+
kind: "array",
|
|
388
|
+
description: "Knowledge folder ids (from knowledge folders list) shared live with creators, skill folders included: files added to them later reach existing creators too (up to 10); empty array clears.",
|
|
377
389
|
required: false,
|
|
378
390
|
},
|
|
379
391
|
{
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** A named column operation constrains execution; it never grants authority. */
|
|
2
|
+
export declare const COLUMN_OPERATION_HEADER = "X-Oxygen-Column-Operation";
|
|
3
|
+
export declare const COLUMN_OPERATIONS: readonly ["ai", "research", "formula", "enrichment", "bind", "lookup"];
|
|
4
|
+
export type ColumnOperation = typeof COLUMN_OPERATIONS[number];
|
|
5
|
+
export declare function isColumnOperation(value: unknown): value is ColumnOperation;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** A named column operation constrains execution; it never grants authority. */
|
|
2
|
+
export const COLUMN_OPERATION_HEADER = "X-Oxygen-Column-Operation";
|
|
3
|
+
export const COLUMN_OPERATIONS = ["ai", "research", "formula", "enrichment", "bind", "lookup"];
|
|
4
|
+
export function isColumnOperation(value) {
|
|
5
|
+
return typeof value === "string" && COLUMN_OPERATIONS.includes(value);
|
|
6
|
+
}
|
|
@@ -27,6 +27,7 @@ const mcpOnly = { generated: { cli: false, mcp: true } };
|
|
|
27
27
|
const cliOnly = { generated: { cli: true, mcp: false } };
|
|
28
28
|
export const CUSTOMER_OPERATIONS = [
|
|
29
29
|
operation("activation.state", "/api/cli/activation/state", "GET", "activation state", "oxygen_activation_state", "workspace", "Read this workspace's onboarding activation state and next available actions.", {}, [], mcpOnly),
|
|
30
|
+
operation("activation.checklist", "/api/cli/activation/checklist", "GET", "activation checklist", "oxygen_activation_checklist", "workspace", "Read this workspace's getting-started checklist: leads in a table, a first sequence, a connected sending account and a launched sequence, each with whether it is done and a link to do it; eligible says whether the sidebar shows it. Read-only, 0 credits."),
|
|
30
31
|
operation("api_keys.list", "/api/cli/api-keys", "GET", "api-keys list", "oxygen_api_keys_list", "workspace", "List workspace API keys without revealing their tokens.", {}, [], mcpOnly),
|
|
31
32
|
operation("api_keys.create", "/api/cli/api-keys", "POST", "api-keys create", "oxygen_api_keys_create", "workspace", "Create a workspace API key; requires the caller's personal user session. The token is returned once.", { name: text(), expires_at: text("ISO timestamp; omit for no expiry.") }, [], mcpOnly),
|
|
32
33
|
operation("api_keys.revoke", "/api/cli/api-keys/{key_id}", "DELETE", "api-keys revoke", "oxygen_api_keys_revoke", "workspace", "Revoke a workspace API key; requires the caller's personal user session.", {}, [], mcpOnly),
|
|
@@ -13,6 +13,13 @@ export declare const FUTURE_SIGNUP_LIFECYCLE_PROJECTION_CONTRACT_VERSION: "futur
|
|
|
13
13
|
export declare const FUTURE_SIGNUP_CRM_DESTINATION = "oxygen_company_crm";
|
|
14
14
|
export declare const FUTURE_SIGNUP_ACTIVATION_COMMANDS: readonly ["agent create", "crm activity log", "crm assert", "crm object add-attr", "crm object create", "crm objects add-attr", "crm objects create", "crm relationships define", "crm relationships upsert", "knowledge page upsert", "publishing posts create", "sequences create", "tables create", "tables duplicate", "tables import-csv", "tables import-file", "tables import-staged", "tables import-url", "tables insert", "tables relate", "tables update", "tables upsert", "workflows apply"];
|
|
15
15
|
export declare function isFutureSignupActivationCommand(command: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* The browser resource routes (`/api/cli/tables/{table}/rows…`) report their own command
|
|
18
|
+
* names, and the web grid and record panel write through them. Each is the same creation as
|
|
19
|
+
* its flat twin in the set above, so it counts as that: in the first-record marker and in the
|
|
20
|
+
* staff KPI board's web activation.
|
|
21
|
+
*/
|
|
22
|
+
export declare const FUTURE_SIGNUP_ACTIVATION_COMMAND_ALIASES: Readonly<Record<string, string>>;
|
|
16
23
|
export declare function futureSignupJourneyId(clerkUserId: string): string;
|
|
17
24
|
export declare function futureSignupFactId(clerkUserId: string): string;
|
|
18
25
|
export declare function futureSignupOperationFactId(operationEventId: string): string;
|
|
@@ -42,6 +42,17 @@ const ACTIVATION_COMMAND_SET = new Set(FUTURE_SIGNUP_ACTIVATION_COMMANDS);
|
|
|
42
42
|
export function isFutureSignupActivationCommand(command) {
|
|
43
43
|
return ACTIVATION_COMMAND_SET.has(command.trim().toLowerCase());
|
|
44
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* The browser resource routes (`/api/cli/tables/{table}/rows…`) report their own command
|
|
47
|
+
* names, and the web grid and record panel write through them. Each is the same creation as
|
|
48
|
+
* its flat twin in the set above, so it counts as that: in the first-record marker and in the
|
|
49
|
+
* staff KPI board's web activation.
|
|
50
|
+
*/
|
|
51
|
+
export const FUTURE_SIGNUP_ACTIVATION_COMMAND_ALIASES = {
|
|
52
|
+
"tables rows insert": "tables insert",
|
|
53
|
+
"tables rows edit": "tables update",
|
|
54
|
+
"tables rows relationship-set": "tables relate",
|
|
55
|
+
};
|
|
45
56
|
export function futureSignupJourneyId(clerkUserId) {
|
|
46
57
|
return `future_signup:v1:clerk_user:${requiredId(clerkUserId, "clerkUserId")}`;
|
|
47
58
|
}
|
|
@@ -41,3 +41,10 @@ export declare const KNOWLEDGE_STUB_MARKER = "Stub \u2014 fill me.";
|
|
|
41
41
|
export declare const KNOWLEDGE_BOOTSTRAP_COMMAND = "oxygen knowledge bootstrap";
|
|
42
42
|
export declare const KNOWLEDGE_BOOTSTRAP_AVAILABLE = true;
|
|
43
43
|
export declare const RESERVED_KNOWLEDGE_FRONTMATTER_KEYS: readonly ["oxygen_page", "id", "slug", "type", "title", "status", "tags", "canonical", "summary", "revision", "updated_at", "web_url"];
|
|
44
|
+
/**
|
|
45
|
+
* A Knowledge folder is a skill when it holds the skill's entry file, named
|
|
46
|
+
* SKILL (the Agent Skills SKILL.md convention); its other files are the
|
|
47
|
+
* skill's supporting files. Shared by the program file picker and the reads
|
|
48
|
+
* that load a creator's program files.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isKnowledgeSkillEntryTitle(title: string): boolean;
|
|
@@ -159,3 +159,12 @@ export const RESERVED_KNOWLEDGE_FRONTMATTER_KEYS = [
|
|
|
159
159
|
"updated_at",
|
|
160
160
|
"web_url",
|
|
161
161
|
];
|
|
162
|
+
/**
|
|
163
|
+
* A Knowledge folder is a skill when it holds the skill's entry file, named
|
|
164
|
+
* SKILL (the Agent Skills SKILL.md convention); its other files are the
|
|
165
|
+
* skill's supporting files. Shared by the program file picker and the reads
|
|
166
|
+
* that load a creator's program files.
|
|
167
|
+
*/
|
|
168
|
+
export function isKnowledgeSkillEntryTitle(title) {
|
|
169
|
+
return /^skill(\.md)?$/i.test(title.trim());
|
|
170
|
+
}
|
|
@@ -44,6 +44,13 @@ export declare const PRODUCT_EVENTS: {
|
|
|
44
44
|
readonly FIRST_PLAY_STARTED: "first_play_started";
|
|
45
45
|
readonly FIRST_PLAY_STEP_COMPLETED: "first_play_step_completed";
|
|
46
46
|
readonly FIRST_PLAY_COMPLETED: "first_play_completed";
|
|
47
|
+
/**
|
|
48
|
+
* The getting-started checklist (2026-10-09): one event per workspace and step, the
|
|
49
|
+
* first time any surface's read sees it done, gated by a stamp on the organization
|
|
50
|
+
* (apps/web `lib/activation/getting-started.ts`). `step` is first_leads,
|
|
51
|
+
* first_sequence, first_account or first_launch.
|
|
52
|
+
*/
|
|
53
|
+
readonly GETTING_STARTED_STEP_COMPLETED: "getting_started_step_completed";
|
|
47
54
|
/**
|
|
48
55
|
* Usage — what was ASKED for. `mcp_tool_called` used to sit here as the
|
|
49
56
|
* second highest-volume event; it was REPLACED (not joined) by the reserved
|
|
@@ -44,6 +44,13 @@ export const PRODUCT_EVENTS = {
|
|
|
44
44
|
FIRST_PLAY_STARTED: "first_play_started",
|
|
45
45
|
FIRST_PLAY_STEP_COMPLETED: "first_play_step_completed",
|
|
46
46
|
FIRST_PLAY_COMPLETED: "first_play_completed",
|
|
47
|
+
/**
|
|
48
|
+
* The getting-started checklist (2026-10-09): one event per workspace and step, the
|
|
49
|
+
* first time any surface's read sees it done, gated by a stamp on the organization
|
|
50
|
+
* (apps/web `lib/activation/getting-started.ts`). `step` is first_leads,
|
|
51
|
+
* first_sequence, first_account or first_launch.
|
|
52
|
+
*/
|
|
53
|
+
GETTING_STARTED_STEP_COMPLETED: "getting_started_step_completed",
|
|
47
54
|
/**
|
|
48
55
|
* Usage — what was ASKED for. `mcp_tool_called` used to sit here as the
|
|
49
56
|
* second highest-volume event; it was REPLACED (not joined) by the reserved
|
|
@@ -14,6 +14,13 @@ export declare const UGC_POSTING_TARGET_PERIODS: readonly ["week", "month", "tot
|
|
|
14
14
|
* operators either trimmed it or left the program without one).
|
|
15
15
|
*/
|
|
16
16
|
export declare const UGC_PROGRAM_BRIEF_MAX_CHARS = 4000;
|
|
17
|
+
/**
|
|
18
|
+
* A creator's live, read-only handle on one file a program shares:
|
|
19
|
+
* `ugc:<programId>:<page id or slug>`. Every surface that lists or opens a
|
|
20
|
+
* shared file builds and reads it here, so web, worker and agents agree.
|
|
21
|
+
*/
|
|
22
|
+
export declare function ugcKnowledgeReference(programId: string, key: string): string;
|
|
23
|
+
export declare function isUgcKnowledgeReference(value: string): boolean;
|
|
17
24
|
/** The program's target as its API shape, or null when none is set. */
|
|
18
25
|
export declare function ugcPostingTarget(program: {
|
|
19
26
|
postingTargetCount?: number | null | undefined;
|
|
@@ -25,6 +32,8 @@ export type UgcProgram = {
|
|
|
25
32
|
productUrl: string;
|
|
26
33
|
description: string;
|
|
27
34
|
knowledgePageSlugs: string[];
|
|
35
|
+
/** Folders shared live with creators (skills included); absent before migration 0482. */
|
|
36
|
+
knowledgeFolderIds?: string[];
|
|
28
37
|
peerEngagementEnabled?: boolean;
|
|
29
38
|
peerEngagementVersion?: number;
|
|
30
39
|
peerEngagementEffectiveAt?: Date | null;
|
|
@@ -6,6 +6,18 @@ export const UGC_POSTING_TARGET_PERIODS = ["week", "month", "total"];
|
|
|
6
6
|
* operators either trimmed it or left the program without one).
|
|
7
7
|
*/
|
|
8
8
|
export const UGC_PROGRAM_BRIEF_MAX_CHARS = 4000;
|
|
9
|
+
const UGC_KNOWLEDGE_REFERENCE_PREFIX = "ugc:";
|
|
10
|
+
/**
|
|
11
|
+
* A creator's live, read-only handle on one file a program shares:
|
|
12
|
+
* `ugc:<programId>:<page id or slug>`. Every surface that lists or opens a
|
|
13
|
+
* shared file builds and reads it here, so web, worker and agents agree.
|
|
14
|
+
*/
|
|
15
|
+
export function ugcKnowledgeReference(programId, key) {
|
|
16
|
+
return `${UGC_KNOWLEDGE_REFERENCE_PREFIX}${programId}:${key}`;
|
|
17
|
+
}
|
|
18
|
+
export function isUgcKnowledgeReference(value) {
|
|
19
|
+
return value.startsWith(UGC_KNOWLEDGE_REFERENCE_PREFIX);
|
|
20
|
+
}
|
|
9
21
|
/** The program's target as its API shape, or null when none is set. */
|
|
10
22
|
export function ugcPostingTarget(program) {
|
|
11
23
|
return program.postingTargetCount && program.postingTargetPeriod
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const OXYGEN_BUILD_VERSION = "1.1013.
|
|
1
|
+
export declare const OXYGEN_BUILD_VERSION = "1.1013.27";
|
|
@@ -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.1013.
|
|
2
|
+
export const OXYGEN_BUILD_VERSION = "1.1013.27";
|