@oxygen-agent/cli 1.1011.487 → 1.1011.493

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.1011.487
37
+ Version: 1.1011.493
package/dist/index.js CHANGED
@@ -4880,7 +4880,7 @@ fixed scan; watermark_cursor starts a later bounded replay. Consumers must retai
4880
4880
  .option("--composio-action <slug>", "Override the Composio action slug for this scheduled post.")
4881
4881
  .option("--publish-at <iso>", "When the post publishes. With Z or an offset it is that exact instant; without one it is wall-clock time in --timezone, else the post's own timezone.")
4882
4882
  .option("--timezone <tz>", "IANA zone the post is shown in and a --publish-at without an offset is read in. Unchanged when omitted.")
4883
- .option("--status <status>", "draft or scheduled.")
4883
+ .option("--status <status>", "draft or scheduled. Setting scheduled does not itself approve the post.")
4884
4884
  .option("--thread-post <text>", "X: text of the next post in a thread (posts 2, 3, ... in order). Repeatable.", collectRepeatable, [])
4885
4885
  .option("--thread-media <position=media_id>", "X: attach an uploaded media id to thread post N (2 or later), e.g. 2=<media_id>. Repeatable.", collectRepeatable, [])
4886
4886
  .option("--poll-option <text>", "X: a poll option on the first post (2-4 options, 25 characters each). Repeatable.", collectRepeatable, [])
@@ -4901,8 +4901,8 @@ fixed scan; watermark_cursor starts a later bounded replay. Consumers must retai
4901
4901
  }));
4902
4902
  }))
4903
4903
  .addCommand(new Command("approve")
4904
- .description("Approve a scheduled post so the worker can publish it when due. LinkedIn approval resolves every inline @<public-identifier> and blocks with inspectable details if any mention cannot be verified.")
4905
- .argument("<post_id>", "Scheduled post id.")
4904
+ .description("Approve a draft or scheduled post; drafts become scheduled for their saved publish time. Costs 0 credits. LinkedIn tags require numeric company IDs and matching resolved person handles; reuses current verified previews or performs free sender lookups. queued_at records first arming; publish_at controls publication. Program drafts require UGC approval.")
4905
+ .argument("<post_id>", "Draft or scheduled post id.")
4906
4906
  .option("--json", "Print a JSON envelope.")
4907
4907
  .action(async (postId, options) => {
4908
4908
  await handleAsyncAction("publishing posts approve", options, () => requestOxygen(`/api/cli/publishing/posts/${encodeURIComponent(postId)}/approve`, {
@@ -471,7 +471,7 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
471
471
  {
472
472
  action: "invite_create",
473
473
  command: "creators invite",
474
- description: "Preview an invitation email (0 credits) for one creator (--email) or up to 50 at once (--emails); send with --approved --preview-token from that preview and the same recipients. Use --link-only to create links without email. Placeholder addresses (example.com, .test, .invalid) are refused on every path, --link-only included, and nothing is created. The default email names the program and carries the join link, not the brief or posting target; add those with --email-message. A refused email ends ugc_invitation_email_not_sent; the created invitation and its link are in error.details.",
474
+ description: "Preview an invitation email (0 credits) for one creator (--email) or up to 50 at once (--emails); send with --approved --preview-token from that preview and the same recipients. Use --link-only to create links without email. Add --sponsor to sponsor each creator's LinkedIn account when they accept: the preview shows the monthly credit reservation, approving the invitation approves it, and it needs a signed-in administrator (not an org API key). Placeholder addresses (example.com, .test, .invalid) are refused on every path, --link-only included, and nothing is created. The default email names the program and carries the join link, not the brief or posting target; add those with --email-message. A refused email ends ugc_invitation_email_not_sent; the created invitation and its link are in error.details.",
475
475
  fields: [
476
476
  {
477
477
  name: "program_id",
@@ -509,16 +509,22 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
509
509
  description: "Your own message (up to 3,000 characters); the Accept button and join link are always added below it. Omit for the default.",
510
510
  required: false,
511
511
  },
512
+ {
513
+ name: "sponsor",
514
+ kind: "boolean",
515
+ description: "Sponsor each creator's LinkedIn account when they accept: your workspace pays its monthly credit reservation (shown in the preview), from when they connect LinkedIn. With --link-only, preview first, then create the links with --approved --preview-token.",
516
+ required: false,
517
+ },
512
518
  {
513
519
  name: "approved",
514
520
  kind: "boolean",
515
- description: "Authorize sending the exact previewed invitation email.",
521
+ description: "Authorize sending the exact previewed invitation email, or creating the previewed sponsored links.",
516
522
  required: false,
517
523
  },
518
524
  {
519
525
  name: "preview_token",
520
526
  kind: "string",
521
- description: "Exact token from the invitation email preview.",
527
+ description: "Exact token from the invitation preview.",
522
528
  required: false,
523
529
  },
524
530
  ],
@@ -1245,14 +1251,14 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
1245
1251
  if (spec.help)
1246
1252
  command.addHelpText("after", spec.help);
1247
1253
  for (const field of spec.fields) {
1248
- const flag = `--${(field.flag ?? field.name).replaceAll("_", "-")}${field.name === "approved" || field.name === "risk_acknowledged" ? "" : ` <${field.kind === "array" || field.kind === "object" ? "json" : field.kind === "boolean" ? "true|false" : field.kind === "posting_target" ? "n/month|n/week|n/total|none" : field.kind === "email_list" ? "emails" : field.kind === "text_list" ? "a, b" : "value"}>`}`;
1254
+ const flag = `--${(field.flag ?? field.name).replaceAll("_", "-")}${field.name === "approved" || field.name === "risk_acknowledged" || field.name === "sponsor" ? "" : ` <${field.kind === "array" || field.kind === "object" ? "json" : field.kind === "boolean" ? "true|false" : field.kind === "posting_target" ? "n/month|n/week|n/total|none" : field.kind === "email_list" ? "emails" : field.kind === "text_list" ? "a, b" : "value"}>`}`;
1249
1255
  if (field.required)
1250
1256
  command.requiredOption(flag, field.description);
1251
1257
  else
1252
1258
  command.option(flag, field.description);
1253
1259
  }
1254
1260
  if (spec.action === "invite_create")
1255
- command.option("--link-only", "Create the invitation now and return its shareable link: no preview or approval token, no email, 0 credits.");
1261
+ command.option("--link-only", "Create the invitation now and return its shareable link: no email, 0 credits. No preview or approval token, unless you add --sponsor.");
1256
1262
  command
1257
1263
  .option("--json", "Print a JSON envelope.")
1258
1264
  .action((options) => handle(`ugc ${spec.command}`, options, () => {
@@ -1269,8 +1275,8 @@ export function registerUgcCommands(program, { request: requestOxygen, handle })
1269
1275
  if ((body.email === undefined) === (body.emails === undefined))
1270
1276
  throw new UgcUsageError("Pass exactly one of --email or --emails.");
1271
1277
  body.send_email = options.linkOnly !== true;
1272
- if (options.linkOnly && (body.approved || body.preview_token))
1273
- throw new UgcUsageError("--link-only cannot be combined with --approved or --preview-token.");
1278
+ if (options.linkOnly && !body.sponsor && (body.approved || body.preview_token))
1279
+ throw new UgcUsageError("--link-only cannot be combined with --approved or --preview-token, unless you add --sponsor.");
1274
1280
  }
1275
1281
  return requestOxygen("/api/cli/ugc", {
1276
1282
  method: "POST",
@@ -1 +1 @@
1
- export declare const OXYGEN_BUILD_VERSION = "1.1011.487";
1
+ export declare const OXYGEN_BUILD_VERSION = "1.1011.493";
@@ -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.1011.487";
2
+ export const OXYGEN_BUILD_VERSION = "1.1011.493";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxygen-agent/cli",
3
- "version": "1.1011.487",
3
+ "version": "1.1011.493",
4
4
  "private": false,
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",