@oxygen-agent/cli 1.1013.27 → 1.1013.38

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 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.1013.27
37
+ Version: 1.1013.38
@@ -4,7 +4,7 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
4
4
  .command("ugc")
5
5
  .description("Manage UGC programs and independent creator participations: voice, posts, approvals, sponsorship and bounded amplification. Requires UGC availability. Start with memberships list in a creator workspace. See the oxygen-ugc skill; JSON reads return web_url for inspection.");
6
6
  const groupDescriptions = {
7
- programs: "Programs you operate or joined; discover public programs from other brands and apply to them. Lifecycle: create, update, duplicate (settings), archive (stops future work, keeps shared history, reversible with restore) and delete (permanent; only while no creator has ever joined).",
7
+ programs: "Programs you operate or joined; discover public programs from other brands and apply to or join them. Lifecycle: create, update, duplicate (settings), archive (stops future work, keeps shared history, reversible with restore) and delete (permanent; only while no creator has ever joined).",
8
8
  creators: "Creator participations: invite, set one creator's own posting deal, revoke an invite, accept in the creator workspace, connect a sender, change approval authority, or revoke.",
9
9
  memberships: "Active programs this creator workspace has joined, each with your deal (posting_target), this period's progress and your published posts. Your own numbers only. Read these before choosing a program for a personal post.",
10
10
  applications: "Applications to public programs: the ones you sent as a creator, or the ones your program received as a brand.",
@@ -83,9 +83,15 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
83
83
  .action((options) => handle("ugc creators invitation", options, () => requestOxygen(`/api/cli/ugc?${new URLSearchParams({ view: "invitation", token: String(options.token) })}`)));
84
84
  group("programs")
85
85
  .command("discover")
86
- .description("Public programs from every brand on Oxygen that you can apply to, with each brand's deal and brief excerpt, and whether you already joined or applied. Free, read-only.")
86
+ .description("Public programs from every brand on Oxygen that you can apply to, with each brand's deal, brief excerpt and join_policy (automatic: you join at once; approval: the brand decides), and whether you already joined or applied. Free, read-only.")
87
+ .option("--program-id <id>", "Only this program, e.g. the id in a join link (…/ugc?join=<id>).")
87
88
  .option("--json", "Print a JSON envelope.")
88
- .action((options) => handle("ugc programs discover", options, () => requestOxygen("/api/cli/ugc?view=discover")));
89
+ .action((options) => handle("ugc programs discover", options, () => {
90
+ const query = new URLSearchParams({ view: "discover" });
91
+ if (options.programId)
92
+ query.set("program_id", String(options.programId));
93
+ return requestOxygen(`/api/cli/ugc?${query}`);
94
+ }));
89
95
  group("applications")
90
96
  .command("list")
91
97
  .description("Applications to public programs. Without --program-id: the ones this creator workspace sent, with status. With --program-id: the ones your program received (brand), pending first. Read-only.")
@@ -336,7 +342,13 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
336
342
  {
337
343
  name: "visibility",
338
344
  kind: "string",
339
- description: "private (default: invitation only) or public (listed in every creator's Discover, where creators apply and you approve).",
345
+ description: "private (default: invitation only) or public (listed in every creator's Discover, where creators apply).",
346
+ required: false,
347
+ },
348
+ {
349
+ name: "join_policy",
350
+ kind: "string",
351
+ description: "Public programs only: approval (default: you approve each application) or automatic (creators join at once, from Discover or the program's join_url). automatic needs --visibility public.",
340
352
  required: false,
341
353
  },
342
354
  ],
@@ -397,7 +409,13 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
397
409
  {
398
410
  name: "visibility",
399
411
  kind: "string",
400
- description: "private (default: invitation only) or public (listed in every creator's Discover, where creators apply and you approve).",
412
+ description: "private (invitation only; also turns automatic join off) or public (listed in every creator's Discover, where creators apply).",
413
+ required: false,
414
+ },
415
+ {
416
+ name: "join_policy",
417
+ kind: "string",
418
+ description: "approval (you approve each application) or automatic (creators join at once, from Discover or the program's join_url). automatic needs a public program. programs get shows join_policy and join_url.",
401
419
  required: false,
402
420
  },
403
421
  {
@@ -544,10 +562,10 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
544
562
  {
545
563
  action: "application_create",
546
564
  command: "programs apply",
547
- description: "Apply to a public program from programs discover, with a short note to the brand. The brand approves or declines; approval makes you a creator in the program and emails you. Free: 0 credits.",
565
+ description: "Join or apply to a public program from programs discover or a join link: with join_policy automatic you join at once (joined: true, with your participation); otherwise the brand approves or declines (joined: false), and approval makes you a creator and emails you. Free: 0 credits.",
548
566
  fields: [
549
- { name: "program_id", kind: "string", description: "Public program ID from programs discover.", required: true },
550
- { name: "message", kind: "string", description: "Your note to the brand (up to 600 characters).", required: true },
567
+ { name: "program_id", kind: "string", description: "Public program ID from programs discover or a join link (…/ugc?join=<id>).", required: true },
568
+ { name: "message", kind: "string", description: "Your note to the brand (up to 600 characters). Required unless the program's join_policy is automatic.", required: false },
551
569
  { name: "linkedin_url", kind: "string", description: "Your LinkedIn profile URL; passing it also saves it to your profile. Omit to use the one on your profile (ugc profile get); if neither exists, ask the person rather than guess.", required: false },
552
570
  ],
553
571
  },
@@ -8,6 +8,13 @@ export type UgcPostingTarget = {
8
8
  };
9
9
  export declare const UGC_POSTING_TARGET_MAX = 100;
10
10
  export declare const UGC_POSTING_TARGET_PERIODS: readonly ["week", "month", "total"];
11
+ /**
12
+ * How creators get into a public program (Tim, 2026-10-09): the brand approves
13
+ * each application, or an application joins at once. Private programs are
14
+ * joined by invitation only, so they are always `approval`.
15
+ */
16
+ export declare const UGC_JOIN_POLICIES: readonly ["approval", "automatic"];
17
+ export type UgcJoinPolicy = (typeof UGC_JOIN_POLICIES)[number];
11
18
  /**
12
19
  * The operator-written creator brief: one page, not a document (Philipp, 2026-09-23;
13
20
  * raised from 1,200 on 2026-09-29, when a natural founder brief ran 1,298 and blind
@@ -44,6 +51,8 @@ export type UgcProgram = {
44
51
  /** Posts each creator is expected to publish per period; both null when unset. */
45
52
  postingTargetCount?: number | null;
46
53
  postingTargetPeriod?: UgcPostingTargetPeriod | null;
54
+ /** How creators join while the program is public; older rows read as approval. */
55
+ joinPolicy?: UgcJoinPolicy;
47
56
  status: "active" | "archived";
48
57
  createdAt: Date;
49
58
  updatedAt: Date;
@@ -1,5 +1,11 @@
1
1
  export const UGC_POSTING_TARGET_MAX = 100;
2
2
  export const UGC_POSTING_TARGET_PERIODS = ["week", "month", "total"];
3
+ /**
4
+ * How creators get into a public program (Tim, 2026-10-09): the brand approves
5
+ * each application, or an application joins at once. Private programs are
6
+ * joined by invitation only, so they are always `approval`.
7
+ */
8
+ export const UGC_JOIN_POLICIES = ["approval", "automatic"];
3
9
  /**
4
10
  * The operator-written creator brief: one page, not a document (Philipp, 2026-09-23;
5
11
  * raised from 1,200 on 2026-09-29, when a natural founder brief ran 1,298 and blind
@@ -1 +1 @@
1
- export declare const OXYGEN_BUILD_VERSION = "1.1013.27";
1
+ export declare const OXYGEN_BUILD_VERSION = "1.1013.38";
@@ -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.27";
2
+ export const OXYGEN_BUILD_VERSION = "1.1013.38";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxygen-agent/cli",
3
- "version": "1.1013.27",
3
+ "version": "1.1013.38",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",