@curviate/cli 0.19.0 → 0.21.0

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.
Files changed (29) hide show
  1. package/CHANGELOG.md +133 -0
  2. package/dist/{account-EGJJNBXW.js → account-A3FOYUKC.js} +29 -29
  3. package/dist/{chunk-42VUUKQ3.js → chunk-56ORAZJO.js} +4 -1
  4. package/dist/{chunk-TMU3CSPR.js → chunk-CUTMZWL6.js} +5 -1
  5. package/dist/chunk-HOQ7EUHJ.js +50 -0
  6. package/dist/{chunk-M33MI53G.js → chunk-LMVDURUZ.js} +23 -1
  7. package/dist/{chunk-KVV6LZ7E.js → chunk-Q7XG2VIF.js} +60 -24
  8. package/dist/chunk-ZYURL5VK.js +83 -0
  9. package/dist/cli.js +51 -36
  10. package/dist/{comment-VT6PO4MN.js → comment-RPLZHFJQ.js} +9 -9
  11. package/dist/{company-XEEBBCRZ.js → company-DFJK2RHM.js} +23 -22
  12. package/dist/{config-P5CPF5WC.js → config-FPWWYG7G.js} +3 -2
  13. package/dist/{connect-6PU7QCOL.js → connect-ELSSMOIC.js} +37 -15
  14. package/dist/{feed-KAUDRE5K.js → feed-23Z7OQNL.js} +4 -3
  15. package/dist/{group-LPVVJ2JX.js → group-52MP24W3.js} +8 -7
  16. package/dist/{inbox-BXCWHGWP.js → inbox-G6KNWWLI.js} +10 -9
  17. package/dist/{inboxes-MTPWLP5F.js → inboxes-NTTYCQPM.js} +5 -4
  18. package/dist/{job-EIXBJXLW.js → job-WOPIAHOR.js} +8 -7
  19. package/dist/{login-GDLWR542.js → login-ZLDDIAFW.js} +14 -15
  20. package/dist/{message-UWMRE2SJ.js → message-KJXY5RCD.js} +7 -4
  21. package/dist/{notification-RYFDHM3G.js → notification-MNEABNVW.js} +6 -5
  22. package/dist/{post-HK6HHIKV.js → post-A7YZWBFG.js} +12 -12
  23. package/dist/{profile-PES67647.js → profile-XOMDIYSY.js} +14 -13
  24. package/dist/{recruiter-MVPSTH2V.js → recruiter-CCLG4PM4.js} +38 -35
  25. package/dist/{sales-nav-TMXWDKSE.js → sales-nav-5ZRE2UAQ.js} +20 -19
  26. package/dist/{search-O2LACGHE.js → search-NDESJC3Y.js} +16 -14
  27. package/dist/{webhook-QFSZN3P2.js → webhook-TNZF3FMN.js} +51 -19
  28. package/package.json +2 -2
  29. package/dist/chunk-U7Y4EXHT.js +0 -33
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
+ guardBareMessageForm,
3
4
  messageCommand,
4
5
  runMessageAttachment,
5
6
  runMessageDelete,
@@ -12,15 +13,17 @@ import {
12
13
  runMessageSend,
13
14
  sentAsNotice,
14
15
  willSendAsNotice
15
- } from "./chunk-KVV6LZ7E.js";
16
- import "./chunk-U7Y4EXHT.js";
16
+ } from "./chunk-Q7XG2VIF.js";
17
+ import "./chunk-HOQ7EUHJ.js";
17
18
  import "./chunk-BGZW6B7G.js";
18
19
  import "./chunk-UWO2D4HW.js";
19
20
  import "./chunk-DMQZEPQE.js";
20
21
  import "./chunk-R3VLWLVV.js";
21
- import "./chunk-M33MI53G.js";
22
- import "./chunk-TMU3CSPR.js";
22
+ import "./chunk-LMVDURUZ.js";
23
+ import "./chunk-CUTMZWL6.js";
24
+ import "./chunk-ZYURL5VK.js";
23
25
  export {
26
+ guardBareMessageForm,
24
27
  messageCommand,
25
28
  runMessageAttachment,
26
29
  runMessageDelete,
@@ -12,11 +12,12 @@ import {
12
12
  renderSuccess,
13
13
  renderUnexpectedError,
14
14
  resolveEffectiveConfig
15
- } from "./chunk-M33MI53G.js";
15
+ } from "./chunk-LMVDURUZ.js";
16
16
  import {
17
17
  GLOBAL_FLAGS,
18
18
  WRITE_SINGLE_FLAGS
19
- } from "./chunk-TMU3CSPR.js";
19
+ } from "./chunk-CUTMZWL6.js";
20
+ import "./chunk-ZYURL5VK.js";
20
21
 
21
22
  // src/commands/notification.ts
22
23
  import { defineCommand } from "citty";
@@ -139,7 +140,7 @@ var notificationListCommand = defineCommand({
139
140
  profile: flags.profile
140
141
  });
141
142
  if (!cfg.apiKey) {
142
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
143
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
143
144
  process.exit(3);
144
145
  }
145
146
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -163,7 +164,7 @@ var notificationDeleteCommand = defineCommand({
163
164
  profile: flags.profile
164
165
  });
165
166
  if (!cfg.apiKey) {
166
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
167
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
167
168
  process.exit(3);
168
169
  }
169
170
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -190,7 +191,7 @@ var notificationShowLessCommand = defineCommand({
190
191
  profile: flags.profile
191
192
  });
192
193
  if (!cfg.apiKey) {
193
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
194
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
194
195
  process.exit(3);
195
196
  }
196
197
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -2,9 +2,6 @@
2
2
  import {
3
3
  resolveMemberOrMeProviderId
4
4
  } from "./chunk-QJZ3LWOX.js";
5
- import {
6
- resolveTextOrStdin
7
- } from "./chunk-U7Y4EXHT.js";
8
5
  import {
9
6
  AttachError,
10
7
  readAttachment,
@@ -24,12 +21,15 @@ import {
24
21
  renderSuccess,
25
22
  renderUnexpectedError,
26
23
  resolveEffectiveConfig
27
- } from "./chunk-M33MI53G.js";
24
+ } from "./chunk-LMVDURUZ.js";
28
25
  import {
29
26
  GLOBAL_FLAGS,
30
27
  WRITE_FLAGS,
31
28
  WRITE_SINGLE_FLAGS
32
- } from "./chunk-TMU3CSPR.js";
29
+ } from "./chunk-CUTMZWL6.js";
30
+ import {
31
+ resolveTextOrStdin
32
+ } from "./chunk-ZYURL5VK.js";
33
33
 
34
34
  // src/commands/post.ts
35
35
  import { defineCommand } from "citty";
@@ -399,7 +399,7 @@ var postGetCommand = defineCommand({
399
399
  profile: flags.profile
400
400
  });
401
401
  if (!cfg.apiKey) {
402
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
402
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
403
403
  process.exit(3);
404
404
  }
405
405
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -412,7 +412,7 @@ var postCreateCommand = defineCommand({
412
412
  args: {
413
413
  // Write command: WRITE_FLAGS omits pagination/projection flags
414
414
  ...WRITE_FLAGS,
415
- text: { type: "positional", description: "Post body text. Pass - to read from stdin (enables multiline via heredoc or pipe)." },
415
+ text: { type: "positional", stdinArg: true, description: "Post body text. Pass - to read from stdin (enables multiline via heredoc or pipe)." },
416
416
  attach: {
417
417
  type: "string",
418
418
  description: "Image/video/document to attach (repeatable for images; a single PDF produces a document post). Supported: jpg, png, gif, mp4, pdf."
@@ -428,7 +428,7 @@ var postCreateCommand = defineCommand({
428
428
  profile: flags.profile
429
429
  });
430
430
  if (!cfg.apiKey) {
431
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
431
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
432
432
  process.exit(3);
433
433
  }
434
434
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -457,7 +457,7 @@ var postReactCommand = defineCommand({
457
457
  },
458
458
  "as-organization": {
459
459
  type: "string",
460
- description: "React on behalf of an organization/company page you administer \u2014 pass that page's numeric id or URN."
460
+ description: "React on behalf of an organization/company page you administer. Pass that page's numeric id or URN."
461
461
  }
462
462
  },
463
463
  async run({ args }) {
@@ -470,7 +470,7 @@ var postReactCommand = defineCommand({
470
470
  profile: flags.profile
471
471
  });
472
472
  if (!cfg.apiKey) {
473
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
473
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
474
474
  process.exit(3);
475
475
  }
476
476
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -497,7 +497,7 @@ var postReactionsCommand = defineCommand({
497
497
  profile: flags.profile
498
498
  });
499
499
  if (!cfg.apiKey) {
500
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
500
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
501
501
  process.exit(3);
502
502
  }
503
503
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -514,7 +514,7 @@ async function withClient(flags, fn) {
514
514
  profile: flags.profile
515
515
  });
516
516
  if (!cfg.apiKey) {
517
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
517
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
518
518
  process.exit(3);
519
519
  }
520
520
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -28,12 +28,13 @@ import {
28
28
  renderSuccess,
29
29
  renderUnexpectedError,
30
30
  resolveEffectiveConfig
31
- } from "./chunk-M33MI53G.js";
31
+ } from "./chunk-LMVDURUZ.js";
32
32
  import {
33
33
  GLOBAL_FLAGS,
34
34
  READ_SINGLE_FLAGS,
35
35
  WRITE_SINGLE_FLAGS
36
- } from "./chunk-TMU3CSPR.js";
36
+ } from "./chunk-CUTMZWL6.js";
37
+ import "./chunk-ZYURL5VK.js";
37
38
 
38
39
  // src/commands/profile.ts
39
40
  import { defineCommand } from "citty";
@@ -523,7 +524,7 @@ async function runProfileUpdate(client, flags, out) {
523
524
  throw err;
524
525
  }
525
526
  if (Object.keys(body).length === 0) {
526
- out.stderr.write("error: nothing to update \u2014 pass at least one of --first-name, --last-name, --headline, --bio, --skills, --picture, --background-picture.\n");
527
+ out.stderr.write("error: nothing to update. Pass at least one of --first-name, --last-name, --headline, --bio, --skills, --picture, --background-picture.\n");
527
528
  process.exit(2);
528
529
  }
529
530
  if (flags.preview) {
@@ -653,7 +654,7 @@ var profileMeCommand = defineCommand({
653
654
  ...GLOBAL_FLAGS,
654
655
  sections: {
655
656
  type: "string",
656
- description: "Comma-separated LinkedIn sections to fetch \u2014 linkedin_experience, linkedin_education, linkedin_languages, linkedin_skills, linkedin_certifications, linkedin_volunteer_experience, linkedin_projects, linkedin_recommendations, linkedin_interests, or linkedin_* for all (each also has a _preview variant). A bare value (e.g. skills) is auto-prefixed to linkedin_skills. Only applies to the base getMe call (no activity flag)."
657
+ description: "Comma-separated LinkedIn sections to fetch: linkedin_experience, linkedin_education, linkedin_languages, linkedin_skills, linkedin_certifications, linkedin_volunteer_experience, linkedin_projects, linkedin_recommendations, linkedin_interests, or linkedin_* for all (each also has a _preview variant). A bare value (e.g. skills) is auto-prefixed to linkedin_skills. Only applies to the base getMe call (no activity flag)."
657
658
  },
658
659
  posts: {
659
660
  type: "boolean",
@@ -686,7 +687,7 @@ var profileMeCommand = defineCommand({
686
687
  profile: flags.profile
687
688
  });
688
689
  if (!cfg.apiKey) {
689
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
690
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
690
691
  process.exit(3);
691
692
  }
692
693
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -707,7 +708,7 @@ var profileRelationsCommand = defineCommand({
707
708
  profile: flags.profile
708
709
  });
709
710
  if (!cfg.apiKey) {
710
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
711
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
711
712
  process.exit(3);
712
713
  }
713
714
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -722,7 +723,7 @@ var profileEndorseCommand = defineCommand({
722
723
  id: { type: "positional", description: "Member identifier (URL, slug, or provider id). A URL/slug is resolved to the provider id automatically (a slug is not accepted directly by the endorse endpoint)." },
723
724
  "endorsement-id": {
724
725
  type: "string",
725
- description: "Endorsement ID to endorse \u2014 get it from the target's skills section via `profile <id> --sections linkedin_skills`.",
726
+ description: "Endorsement ID to endorse. Get it from the target's skills section via `profile <id> --sections linkedin_skills`.",
726
727
  required: true
727
728
  }
728
729
  },
@@ -736,7 +737,7 @@ var profileEndorseCommand = defineCommand({
736
737
  profile: args.profile
737
738
  });
738
739
  if (!cfg.apiKey) {
739
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
740
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
740
741
  process.exit(3);
741
742
  }
742
743
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -753,7 +754,7 @@ async function withClient(flags, fn) {
753
754
  profile: flags.profile
754
755
  });
755
756
  if (!cfg.apiKey) {
756
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
757
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
757
758
  process.exit(3);
758
759
  }
759
760
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -769,8 +770,8 @@ var profileUpdateCommand = defineCommand({
769
770
  "first-name": { type: "string", description: "New first name." },
770
771
  "last-name": { type: "string", description: "New last name." },
771
772
  skills: { type: "string", description: "Comma-separated skill names to add (add-only)." },
772
- picture: { type: "string", description: "New profile photo \u2014 path to an image file." },
773
- "background-picture": { type: "string", description: "New cover/banner photo \u2014 path to an image file." }
773
+ picture: { type: "string", description: "New profile photo: path to an image file." },
774
+ "background-picture": { type: "string", description: "New cover/banner photo: path to an image file." }
774
775
  },
775
776
  async run({ args }) {
776
777
  await withClient(args, runProfileUpdate);
@@ -856,7 +857,7 @@ var profileCommand = defineCommand({
856
857
  "is-company": { type: "boolean", description: "When listing posts, treat the profile as a company page.", default: false },
857
858
  sections: {
858
859
  type: "string",
859
- description: "Comma-separated LinkedIn sections to fetch \u2014 linkedin_experience, linkedin_education, linkedin_languages, linkedin_skills, linkedin_certifications, linkedin_volunteer_experience, linkedin_projects, linkedin_recommendations, linkedin_interests, or linkedin_* for all (each also has a _preview variant). A bare value (e.g. skills) is auto-prefixed to linkedin_skills."
860
+ description: "Comma-separated LinkedIn sections to fetch: linkedin_experience, linkedin_education, linkedin_languages, linkedin_skills, linkedin_certifications, linkedin_volunteer_experience, linkedin_projects, linkedin_recommendations, linkedin_interests, or linkedin_* for all (each also has a _preview variant). A bare value (e.g. skills) is auto-prefixed to linkedin_skills."
860
861
  }
861
862
  },
862
863
  subCommands: {
@@ -889,7 +890,7 @@ var profileCommand = defineCommand({
889
890
  profile: flags.profile
890
891
  });
891
892
  if (!cfg.apiKey) {
892
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
893
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
893
894
  process.exit(3);
894
895
  }
895
896
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -3,7 +3,7 @@ import {
3
3
  DEFAULT_FILTER_READERS,
4
4
  assembleFilters,
5
5
  splitCsv
6
- } from "./chunk-42VUUKQ3.js";
6
+ } from "./chunk-56ORAZJO.js";
7
7
  import {
8
8
  AttachError,
9
9
  readAttachment,
@@ -33,13 +33,16 @@ import {
33
33
  renderSuccess,
34
34
  renderUnexpectedError,
35
35
  resolveEffectiveConfig
36
- } from "./chunk-M33MI53G.js";
36
+ } from "./chunk-LMVDURUZ.js";
37
37
  import {
38
38
  GLOBAL_FLAGS,
39
39
  READ_SINGLE_FLAGS,
40
40
  WRITE_FLAGS,
41
41
  WRITE_SINGLE_FLAGS
42
- } from "./chunk-TMU3CSPR.js";
42
+ } from "./chunk-CUTMZWL6.js";
43
+ import {
44
+ isStdinToken
45
+ } from "./chunk-ZYURL5VK.js";
43
46
 
44
47
  // src/commands/recruiter.ts
45
48
  import { defineCommand } from "citty";
@@ -112,7 +115,7 @@ async function assembleRecruiterJobBody(flags, readers) {
112
115
  } catch {
113
116
  return { error: `cannot read ${source}` };
114
117
  }
115
- } else if (flags.body === "-") {
118
+ } else if (isStdinToken(flags.body)) {
116
119
  source = "--body - (stdin)";
117
120
  raw = await readers.readStdin();
118
121
  } else if (flags.body !== void 0) {
@@ -894,7 +897,7 @@ var recruiterMessageNewCommand = defineCommand({
894
897
  ...WRITE_FLAGS,
895
898
  to: {
896
899
  type: "string",
897
- description: "Recipient's LinkedIn provider ID (AE\u2026 format, e.g. from a Recruiter search result or profile). Not resolved from a URL/slug \u2014 pass the provider ID directly.",
900
+ description: "Recipient's LinkedIn provider ID (AE\u2026 format, e.g. from a Recruiter search result or profile). Not resolved from a URL/slug. Pass the provider ID directly.",
898
901
  required: true
899
902
  },
900
903
  subject: { type: "string", description: "Message subject line (required for Recruiter InMail).", required: true },
@@ -914,7 +917,7 @@ var recruiterMessageNewCommand = defineCommand({
914
917
  profile: flags.profile
915
918
  });
916
919
  if (!cfg.apiKey) {
917
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
920
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
918
921
  process.exit(3);
919
922
  }
920
923
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -949,7 +952,7 @@ var recruiterProfileCommand = defineCommand({
949
952
  profile: flags.profile
950
953
  });
951
954
  if (!cfg.apiKey) {
952
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
955
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
953
956
  process.exit(3);
954
957
  }
955
958
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -962,7 +965,7 @@ var recruiterSearchPeopleCommand = defineCommand({
962
965
  args: {
963
966
  ...GLOBAL_FLAGS,
964
967
  keywords: { type: "string", description: "Keyword search string." },
965
- filters: { type: "string", description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
968
+ filters: { type: "string", stdinArg: true, description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
966
969
  "filters-file": { type: "string", description: "Path to a JSON file with the filter body." },
967
970
  locale: { type: "string", description: "Result locale, e.g. en." },
968
971
  "employment-type": { type: "string", description: "Employment type ids (comma-separated)." },
@@ -979,7 +982,7 @@ var recruiterSearchPeopleCommand = defineCommand({
979
982
  profile: flags.profile
980
983
  });
981
984
  if (!cfg.apiKey) {
982
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
985
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
983
986
  process.exit(3);
984
987
  }
985
988
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -988,7 +991,7 @@ var recruiterSearchPeopleCommand = defineCommand({
988
991
  }
989
992
  });
990
993
  var recruiterSearchParametersCommand = defineCommand({
991
- meta: { name: "parameters", description: "Resolve Recruiter filter parameter IDs (POST \u2014 source-scoped)." },
994
+ meta: { name: "parameters", description: "Resolve Recruiter filter parameter IDs (POST, source-scoped)." },
992
995
  args: {
993
996
  ...GLOBAL_FLAGS,
994
997
  source: {
@@ -1015,7 +1018,7 @@ var recruiterSearchParametersCommand = defineCommand({
1015
1018
  profile: flags.profile
1016
1019
  });
1017
1020
  if (!cfg.apiKey) {
1018
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1021
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1019
1022
  process.exit(3);
1020
1023
  }
1021
1024
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1053,7 +1056,7 @@ var recruiterSearchCommand = defineCommand({
1053
1056
  profile: flags.profile
1054
1057
  });
1055
1058
  if (!cfg.apiKey) {
1056
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1059
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1057
1060
  process.exit(3);
1058
1061
  }
1059
1062
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1074,7 +1077,7 @@ var recruiterProjectsCommand = defineCommand({
1074
1077
  profile: flags.profile
1075
1078
  });
1076
1079
  if (!cfg.apiKey) {
1077
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1080
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1078
1081
  process.exit(3);
1079
1082
  }
1080
1083
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1083,7 +1086,7 @@ var recruiterProjectsCommand = defineCommand({
1083
1086
  }
1084
1087
  });
1085
1088
  var recruiterProjectUpdateCommand = defineCommand({
1086
- meta: { name: "update", description: "Edit a Recruiter project's config. All fields optional \u2014 omitted fields are left unchanged." },
1089
+ meta: { name: "update", description: "Edit a Recruiter project's config. All fields optional; omitted fields are left unchanged." },
1087
1090
  args: {
1088
1091
  // Write command: WRITE_SINGLE_FLAGS omits pagination flags, keeps --fields
1089
1092
  ...WRITE_SINGLE_FLAGS,
@@ -1108,7 +1111,7 @@ var recruiterProjectUpdateCommand = defineCommand({
1108
1111
  profile: flags.profile
1109
1112
  });
1110
1113
  if (!cfg.apiKey) {
1111
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1114
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1112
1115
  process.exit(3);
1113
1116
  }
1114
1117
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1142,7 +1145,7 @@ var recruiterProjectCommand = defineCommand({
1142
1145
  profile: flags.profile
1143
1146
  });
1144
1147
  if (!cfg.apiKey) {
1145
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1148
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1146
1149
  process.exit(3);
1147
1150
  }
1148
1151
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1170,7 +1173,7 @@ var recruiterPipelineCommand = defineCommand({
1170
1173
  profile: flags.profile
1171
1174
  });
1172
1175
  if (!cfg.apiKey) {
1173
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1176
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1174
1177
  process.exit(3);
1175
1178
  }
1176
1179
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1197,7 +1200,7 @@ var recruiterSaveCandidateCommand = defineCommand({
1197
1200
  profile: flags.profile
1198
1201
  });
1199
1202
  if (!cfg.apiKey) {
1200
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1203
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1201
1204
  process.exit(3);
1202
1205
  }
1203
1206
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1218,7 +1221,7 @@ var recruiterJobsCommand = defineCommand({
1218
1221
  profile: flags.profile
1219
1222
  });
1220
1223
  if (!cfg.apiKey) {
1221
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1224
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1222
1225
  process.exit(3);
1223
1226
  }
1224
1227
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1228,7 +1231,7 @@ var recruiterJobsCommand = defineCommand({
1228
1231
  });
1229
1232
  var RECRUITER_JOB_BODY_FLAGS = {
1230
1233
  "body-file": { type: "string", description: "Path to a JSON file with the full job body." },
1231
- body: { type: "string", description: "Read the JSON job body from stdin (pass '-')." },
1234
+ body: { type: "string", stdinArg: true, description: "Read the JSON job body from stdin (pass '-')." },
1232
1235
  "job-title-id": { type: "string", description: "Resolved job-title parameter id (merged with --job-title into job_title:{id,name})." },
1233
1236
  "job-title": { type: "string", description: "Job title display name (merged with --job-title-id into job_title:{id,name})." },
1234
1237
  "company-id": { type: "string", description: "Resolved company id (or use --company-name for free text)." },
@@ -1262,7 +1265,7 @@ var recruiterJobCreateCommand = defineCommand({
1262
1265
  profile: flags.profile
1263
1266
  });
1264
1267
  if (!cfg.apiKey) {
1265
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1268
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1266
1269
  process.exit(3);
1267
1270
  }
1268
1271
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1271,7 +1274,7 @@ var recruiterJobCreateCommand = defineCommand({
1271
1274
  }
1272
1275
  });
1273
1276
  var recruiterJobPublishCommand = defineCommand({
1274
- meta: { name: "publish", description: "Publish a Recruiter job posting draft. PROMOTED/PROMOTED_PLUS spend real money and require --budget-*." },
1277
+ meta: { name: "publish", description: "Publish a Recruiter job posting draft. PROMOTED/PROMOTED_PLUS spend real money and require --budget-amount, --budget-currency, and --budget-scope." },
1275
1278
  args: {
1276
1279
  // Write command: WRITE_SINGLE_FLAGS omits pagination flags, keeps --fields
1277
1280
  ...WRITE_SINGLE_FLAGS,
@@ -1292,7 +1295,7 @@ var recruiterJobPublishCommand = defineCommand({
1292
1295
  profile: flags.profile
1293
1296
  });
1294
1297
  if (!cfg.apiKey) {
1295
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1298
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1296
1299
  process.exit(3);
1297
1300
  }
1298
1301
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1317,7 +1320,7 @@ var recruiterApplicantsCommand = defineCommand({
1317
1320
  profile: flags.profile
1318
1321
  });
1319
1322
  if (!cfg.apiKey) {
1320
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1323
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1321
1324
  process.exit(3);
1322
1325
  }
1323
1326
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1341,7 +1344,7 @@ var recruiterJobGetCommand = defineCommand({
1341
1344
  profile: flags.profile
1342
1345
  });
1343
1346
  if (!cfg.apiKey) {
1344
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1347
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1345
1348
  process.exit(3);
1346
1349
  }
1347
1350
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1367,7 +1370,7 @@ var recruiterJobCloseCommand = defineCommand({
1367
1370
  profile: flags.profile
1368
1371
  });
1369
1372
  if (!cfg.apiKey) {
1370
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1373
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1371
1374
  process.exit(3);
1372
1375
  }
1373
1376
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1407,7 +1410,7 @@ var recruiterProjectJobGetCommand = defineCommand({
1407
1410
  profile: flags.profile
1408
1411
  });
1409
1412
  if (!cfg.apiKey) {
1410
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1413
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1411
1414
  process.exit(3);
1412
1415
  }
1413
1416
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1433,7 +1436,7 @@ var recruiterProjectJobCreateCommand = defineCommand({
1433
1436
  profile: flags.profile
1434
1437
  });
1435
1438
  if (!cfg.apiKey) {
1436
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1439
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1437
1440
  process.exit(3);
1438
1441
  }
1439
1442
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1459,7 +1462,7 @@ var recruiterProjectJobBudgetCommand = defineCommand({
1459
1462
  profile: flags.profile
1460
1463
  });
1461
1464
  if (!cfg.apiKey) {
1462
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1465
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1463
1466
  process.exit(3);
1464
1467
  }
1465
1468
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1486,7 +1489,7 @@ var recruiterProjectJobUpdateCommand = defineCommand({
1486
1489
  profile: flags.profile
1487
1490
  });
1488
1491
  if (!cfg.apiKey) {
1489
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1492
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1490
1493
  process.exit(3);
1491
1494
  }
1492
1495
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1522,7 +1525,7 @@ var recruiterProjectJobCommand = defineCommand({
1522
1525
  profile: flags.profile
1523
1526
  });
1524
1527
  if (!cfg.apiKey) {
1525
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1528
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1526
1529
  process.exit(3);
1527
1530
  }
1528
1531
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1537,7 +1540,7 @@ var recruiterTalentSearchCommand = defineCommand({
1537
1540
  projectId: { type: "positional", description: "Recruiter project ID." },
1538
1541
  "channel-id": { type: "string", description: "The project's RECRUITER_SEARCH talent-pool channel ID (required).", required: true },
1539
1542
  keywords: { type: "string", description: "Free-text keyword search." },
1540
- filters: { type: "string", description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
1543
+ filters: { type: "string", stdinArg: true, description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
1541
1544
  "filters-file": { type: "string", description: "Path to a JSON file with the filter body." }
1542
1545
  },
1543
1546
  async run({ args }) {
@@ -1550,7 +1553,7 @@ var recruiterTalentSearchCommand = defineCommand({
1550
1553
  profile: flags.profile
1551
1554
  });
1552
1555
  if (!cfg.apiKey) {
1553
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1556
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1554
1557
  process.exit(3);
1555
1558
  }
1556
1559
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1577,7 +1580,7 @@ var recruiterApplicantResumeCommand = defineCommand({
1577
1580
  profile: flags.profile
1578
1581
  });
1579
1582
  if (!cfg.apiKey) {
1580
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1583
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1581
1584
  process.exit(3);
1582
1585
  }
1583
1586
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });
@@ -1617,7 +1620,7 @@ var recruiterApplicantCommand = defineCommand({
1617
1620
  profile: flags.profile
1618
1621
  });
1619
1622
  if (!cfg.apiKey) {
1620
- process.stderr.write("error: no API key \u2014 run `curviate login` or pass --api-key.\n");
1623
+ process.stderr.write("error: no API key, run `curviate login` or pass --api-key.\n");
1621
1624
  process.exit(3);
1622
1625
  }
1623
1626
  const client = createClient({ apiKey: cfg.apiKey, baseUrl: cfg.baseUrl, timeout: cfg.timeout });