@curviate/cli 0.23.3 → 0.24.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.
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,43 @@ a new command or flag is a minor; a breaking command/flag/exit-code change is a
|
|
|
8
8
|
|
|
9
9
|
## [Unreleased]
|
|
10
10
|
|
|
11
|
+
## [0.24.0] - 2026-08-18
|
|
12
|
+
|
|
13
|
+
### Changed
|
|
14
|
+
|
|
15
|
+
- **Corrected flag-to-body-field drift across `search`, `sales-nav`, and
|
|
16
|
+
`recruiter`.** Named filter flags were hand-mapped to request-body field
|
|
17
|
+
names with no compiler coupling, so several server-side field
|
|
18
|
+
renames/removals left flags pointing at fields the body schema now rejects
|
|
19
|
+
with a 400. Every one of these previously produced a 400, so nothing that
|
|
20
|
+
worked is being taken away:
|
|
21
|
+
- `search people`: `--company` -> `current_company` (was: `company`)
|
|
22
|
+
- `search companies`: `--has-job-offers` -> `has_job_postings` (was:
|
|
23
|
+
`has_job_offers`); `--network-distance` **removed** (field no longer
|
|
24
|
+
accepted on this endpoint)
|
|
25
|
+
- `search companies --filters` help text corrected: the request body is
|
|
26
|
+
`.strict()` and rejects unknown fields with a 400, it does not
|
|
27
|
+
validate-and-strip them
|
|
28
|
+
- `sales-nav search people`: `--groups` -> `group` (was: `groups`, plural)
|
|
29
|
+
- `sales-nav search companies`: `--technologies` / `--recent-activities` /
|
|
30
|
+
`--network-distance` **removed** (none is an accepted field on this
|
|
31
|
+
endpoint)
|
|
32
|
+
- `recruiter search people`: `--function` -> `job_function` (was:
|
|
33
|
+
`function`); `--locale` **removed** (no accepted field exists for it)
|
|
34
|
+
- Adds a guard test that checks every command's real body output against
|
|
35
|
+
the accepted request-body properties in the SDK's OpenAPI fixture, so a
|
|
36
|
+
future rename/removal reds a test instead of shipping silently.
|
|
37
|
+
- **`@curviate/sdk` dependency floor raised to `^0.23.0`** (was `^0.22.0`),
|
|
38
|
+
matching the SDK regeneration the fixes above were verified against.
|
|
39
|
+
|
|
40
|
+
### Removed
|
|
41
|
+
|
|
42
|
+
- `--locale` (recruiter search people), `--technologies` and
|
|
43
|
+
`--recent-activities` (sales-nav search companies). All three previously
|
|
44
|
+
produced a 400 on every call; a script passing them now fails at argument
|
|
45
|
+
parsing instead. Breaking to the command surface even though the flags
|
|
46
|
+
were non-functional, hence a minor bump rather than a patch.
|
|
47
|
+
|
|
11
48
|
## [0.23.3] - 2026-08-17
|
|
12
49
|
|
|
13
50
|
### Changed
|
package/dist/cli.js
CHANGED
|
@@ -342,7 +342,7 @@ var main = defineCommand({
|
|
|
342
342
|
company: () => import("./company-3UB4P77N.js").then((m) => m.companyCommand),
|
|
343
343
|
job: () => import("./job-URLZ4GU7.js").then((m) => m.jobCommand),
|
|
344
344
|
connect: () => import("./connect-DFZEYMLV.js").then((m) => m.connectCommand),
|
|
345
|
-
search: () => import("./search-
|
|
345
|
+
search: () => import("./search-GBMRH4LG.js").then((m) => m.searchCommand),
|
|
346
346
|
inbox: () => import("./inbox-E6ME3ROZ.js").then((m) => m.inboxCommand),
|
|
347
347
|
inboxes: () => import("./inboxes-JRX3J32A.js").then((m) => m.inboxesCommand),
|
|
348
348
|
message: () => import("./message-NPX7UX46.js").then((m) => m.messageCommand),
|
|
@@ -350,8 +350,8 @@ var main = defineCommand({
|
|
|
350
350
|
comment: () => import("./comment-SXYTJPXI.js").then((m) => m.commentCommand),
|
|
351
351
|
account: () => import("./account-JBSYX6D2.js").then((m) => m.accountCommand),
|
|
352
352
|
webhook: () => import("./webhook-C43C5BK7.js").then((m) => m.webhookCommand),
|
|
353
|
-
"sales-nav": () => import("./sales-nav-
|
|
354
|
-
recruiter: () => import("./recruiter-
|
|
353
|
+
"sales-nav": () => import("./sales-nav-7EE4UGNF.js").then((m) => m.salesNavCommand),
|
|
354
|
+
recruiter: () => import("./recruiter-UKBLQ2PE.js").then((m) => m.recruiterCommand),
|
|
355
355
|
group: () => import("./group-DBE25EID.js").then((m) => m.groupCommand),
|
|
356
356
|
feed: () => import("./feed-ZY27EY52.js").then((m) => m.feedCommand),
|
|
357
357
|
notification: () => import("./notification-XSSA5QOJ.js").then((m) => m.notificationCommand)
|
|
@@ -280,9 +280,8 @@ async function runRecruiterSearchPeople(client, flags, out, readers = DEFAULT_FI
|
|
|
280
280
|
}
|
|
281
281
|
const body = assembled.body;
|
|
282
282
|
if (flags.keywords) body["keywords"] = flags.keywords;
|
|
283
|
-
if (flags.locale) body["locale"] = flags.locale;
|
|
284
283
|
if (flags["employment-type"]) body["employment_type"] = splitCsv(flags["employment-type"]);
|
|
285
|
-
if (flags.function) body["
|
|
284
|
+
if (flags.function) body["job_function"] = splitCsv(flags.function);
|
|
286
285
|
if (flags["profile-language"]) body["profile_language"] = splitCsv(flags["profile-language"]);
|
|
287
286
|
const params = {};
|
|
288
287
|
if (limit !== void 0) params["limit"] = limit;
|
|
@@ -963,9 +962,8 @@ var recruiterSearchPeopleCommand = defineCommand({
|
|
|
963
962
|
keywords: { type: "string", description: "Keyword search string." },
|
|
964
963
|
filters: { type: "string", stdinArg: true, description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
|
|
965
964
|
"filters-file": { type: "string", description: "Path to a JSON file with the filter body." },
|
|
966
|
-
locale: { type: "string", description: "Result locale, e.g. en." },
|
|
967
965
|
"employment-type": { type: "string", description: "Employment type ids (comma-separated)." },
|
|
968
|
-
function: { type: "string", description: "Job function ids (comma-separated)." },
|
|
966
|
+
function: { type: "string", description: "Job function ids (comma-separated); maps to the API's job_function." },
|
|
969
967
|
"profile-language": { type: "string", description: "Profile language codes (comma-separated)." }
|
|
970
968
|
},
|
|
971
969
|
async run({ args }) {
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
DEFAULT_FILTER_READERS,
|
|
4
4
|
assembleFilters,
|
|
5
|
-
splitCsv
|
|
6
|
-
splitCsvNumbers
|
|
5
|
+
splitCsv
|
|
7
6
|
} from "./chunk-LCIUD7S2.js";
|
|
8
7
|
import {
|
|
9
8
|
AttachError,
|
|
@@ -92,7 +91,7 @@ async function runSalesNavSearchPeople(client, flags, out, readers = DEFAULT_FIL
|
|
|
92
91
|
if (flags.keywords) body["keywords"] = flags.keywords;
|
|
93
92
|
if (flags["first-name"]) body["first_name"] = flags["first-name"];
|
|
94
93
|
if (flags["last-name"]) body["last_name"] = flags["last-name"];
|
|
95
|
-
if (flags.groups) body["
|
|
94
|
+
if (flags.groups) body["group"] = splitCsv(flags.groups);
|
|
96
95
|
if (flags["profile-language"]) body["profile_language"] = splitCsv(flags["profile-language"]);
|
|
97
96
|
const params = {};
|
|
98
97
|
if (limit !== void 0) params["limit"] = limit;
|
|
@@ -140,9 +139,6 @@ async function runSalesNavSearchCompanies(client, flags, out, readers = DEFAULT_
|
|
|
140
139
|
}
|
|
141
140
|
const body = assembled.body;
|
|
142
141
|
if (flags.keywords) body["keywords"] = flags.keywords;
|
|
143
|
-
if (flags.technologies) body["technologies"] = splitCsv(flags.technologies);
|
|
144
|
-
if (flags["recent-activities"]) body["recent_activities"] = splitCsv(flags["recent-activities"]);
|
|
145
|
-
if (flags["network-distance"]) body["network_distance"] = splitCsvNumbers(flags["network-distance"]);
|
|
146
142
|
const params = {};
|
|
147
143
|
if (limit !== void 0) params["limit"] = limit;
|
|
148
144
|
if (cursor) params["cursor"] = cursor;
|
|
@@ -559,10 +555,7 @@ var salesNavSearchCompaniesCommand = defineCommand({
|
|
|
559
555
|
...GLOBAL_FLAGS,
|
|
560
556
|
keywords: { type: "string", description: "Keyword search string." },
|
|
561
557
|
filters: { type: "string", stdinArg: true, description: "Filter body as a JSON object (escape hatch for the full filter surface); '-' reads JSON from stdin." },
|
|
562
|
-
"filters-file": { type: "string", description: "Path to a JSON file with the filter body." }
|
|
563
|
-
technologies: { type: "string", description: "Technology tags (comma-separated)." },
|
|
564
|
-
"recent-activities": { type: "string", description: "Recent activity ids (comma-separated)." },
|
|
565
|
-
"network-distance": { type: "string", description: "Network distance, 1-3 (comma-separated)." }
|
|
558
|
+
"filters-file": { type: "string", description: "Path to a JSON file with the filter body." }
|
|
566
559
|
},
|
|
567
560
|
async run({ args }) {
|
|
568
561
|
const flags = args;
|
|
@@ -51,7 +51,7 @@ var FILTER_FLAGS = {
|
|
|
51
51
|
filters: {
|
|
52
52
|
type: "string",
|
|
53
53
|
stdinArg: true,
|
|
54
|
-
description: "Filter body as a JSON object (named flags win on conflict; server
|
|
54
|
+
description: "Filter body as a JSON object (named flags win on conflict; the server body schema is strict and rejects unknown fields with a 400); '-' reads JSON from stdin."
|
|
55
55
|
},
|
|
56
56
|
"filters-file": {
|
|
57
57
|
type: "string",
|
|
@@ -97,7 +97,7 @@ var NAMED_FLAG_MAPPERS = {
|
|
|
97
97
|
people(body, flags) {
|
|
98
98
|
if (flags.industry) body["industry"] = splitCsv(flags.industry);
|
|
99
99
|
if (flags.location) body["location"] = splitCsv(flags.location);
|
|
100
|
-
if (flags.company) body["
|
|
100
|
+
if (flags.company) body["current_company"] = splitCsv(flags.company);
|
|
101
101
|
if (flags["past-company"]) body["past_company"] = splitCsv(flags["past-company"]);
|
|
102
102
|
if (flags.school) body["school"] = splitCsv(flags.school);
|
|
103
103
|
if (flags["network-distance"]) body["network_distance"] = splitCsvNumbers(flags["network-distance"]);
|
|
@@ -112,8 +112,7 @@ var NAMED_FLAG_MAPPERS = {
|
|
|
112
112
|
companies(body, flags) {
|
|
113
113
|
if (flags.industry) body["industry"] = splitCsv(flags.industry);
|
|
114
114
|
if (flags.location) body["location"] = splitCsv(flags.location);
|
|
115
|
-
if (flags["
|
|
116
|
-
if (flags["has-job-offers"]) body["has_job_offers"] = true;
|
|
115
|
+
if (flags["has-job-offers"]) body["has_job_postings"] = true;
|
|
117
116
|
if (flags.headcount) {
|
|
118
117
|
const buckets = splitCsv(flags.headcount);
|
|
119
118
|
const mapped = [];
|
|
@@ -573,7 +572,6 @@ var searchCompaniesCommand = defineCommand({
|
|
|
573
572
|
...FILTER_FLAGS,
|
|
574
573
|
industry: { type: "string", description: "Industry ids (comma-separated)." },
|
|
575
574
|
location: { type: "string", description: "Location ids (comma-separated)." },
|
|
576
|
-
"network-distance": { type: "string", description: "Network distance, 1-3 (comma-separated)." },
|
|
577
575
|
"has-job-offers": { type: "boolean", description: "only companies with active job listings" },
|
|
578
576
|
headcount: {
|
|
579
577
|
type: "string",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curviate/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Official command-line interface for the Curviate API.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"clean": "rm -rf dist *.tsbuildinfo"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@curviate/sdk": "^0.
|
|
45
|
+
"@curviate/sdk": "^0.23.0",
|
|
46
46
|
"citty": "^0.1.6",
|
|
47
47
|
"open": "^10.1.0"
|
|
48
48
|
},
|