@revfleet/hscli 0.8.10 → 0.8.12

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 (63) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +31 -2
  3. package/dist/cli.js +27 -0
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/auth/index.js +46 -11
  6. package/dist/commands/auth/index.js.map +1 -1
  7. package/dist/commands/crm/activities.d.ts +3 -0
  8. package/dist/commands/crm/activities.js +186 -0
  9. package/dist/commands/crm/activities.js.map +1 -0
  10. package/dist/commands/crm/index.js +4 -0
  11. package/dist/commands/crm/index.js.map +1 -1
  12. package/dist/commands/crm/migration.d.ts +3 -0
  13. package/dist/commands/crm/migration.js +155 -0
  14. package/dist/commands/crm/migration.js.map +1 -0
  15. package/dist/commands/crm/properties.js +105 -18
  16. package/dist/commands/crm/properties.js.map +1 -1
  17. package/dist/commands/crm/property-batch.d.ts +34 -0
  18. package/dist/commands/crm/property-batch.js +205 -0
  19. package/dist/commands/crm/property-batch.js.map +1 -0
  20. package/dist/commands/doctor/index.js +119 -1
  21. package/dist/commands/doctor/index.js.map +1 -1
  22. package/dist/commands/forms/index.js +47 -6
  23. package/dist/commands/forms/index.js.map +1 -1
  24. package/dist/commands/forms/legacy-v2.d.ts +6 -0
  25. package/dist/commands/forms/legacy-v2.js +350 -0
  26. package/dist/commands/forms/legacy-v2.js.map +1 -0
  27. package/dist/commands/forms/property-preflight.d.ts +20 -0
  28. package/dist/commands/forms/property-preflight.js +99 -0
  29. package/dist/commands/forms/property-preflight.js.map +1 -0
  30. package/dist/commands/guide/index.d.ts +6 -0
  31. package/dist/commands/guide/index.js +257 -0
  32. package/dist/commands/guide/index.js.map +1 -0
  33. package/dist/commands/settings/index.js +238 -2
  34. package/dist/commands/settings/index.js.map +1 -1
  35. package/dist/commands/ui/index.d.ts +3 -0
  36. package/dist/commands/ui/index.js +412 -0
  37. package/dist/commands/ui/index.js.map +1 -0
  38. package/dist/core/auth.d.ts +7 -1
  39. package/dist/core/auth.js +45 -7
  40. package/dist/core/auth.js.map +1 -1
  41. package/dist/core/http.d.ts +16 -0
  42. package/dist/core/http.js +141 -40
  43. package/dist/core/http.js.map +1 -1
  44. package/dist/core/output.d.ts +2 -0
  45. package/dist/core/output.js +1 -1
  46. package/dist/core/output.js.map +1 -1
  47. package/dist/core/scopes.d.ts +29 -0
  48. package/dist/core/scopes.js +415 -0
  49. package/dist/core/scopes.js.map +1 -0
  50. package/dist/mcp/ext-tools.d.ts +1 -1
  51. package/dist/mcp/ext-tools.js +52 -1
  52. package/dist/mcp/ext-tools.js.map +1 -1
  53. package/dist/mcp/server.js +90 -22
  54. package/dist/mcp/server.js.map +1 -1
  55. package/docs/CAPABILITY_LIBRARY.md +4 -3
  56. package/docs/COMMAND_TREE.md +23 -5
  57. package/docs/COOKBOOK.md +99 -0
  58. package/docs/MARKETING_SETUP.md +8 -2
  59. package/docs/MCP.md +1 -0
  60. package/docs/OPERATIONAL_PLAYBOOKS.md +1 -1
  61. package/docs/PORTAL_SETUP.md +3 -2
  62. package/docs/SAFETY_MODEL.md +3 -0
  63. package/package.json +1 -1
@@ -0,0 +1,257 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { stdin as input, stdout as output } from "node:process";
3
+ import { printResult } from "../../core/output.js";
4
+ const GOAL_ALIASES = {
5
+ "1": "portal-migration",
6
+ "/migration": "portal-migration",
7
+ migration: "portal-migration",
8
+ "portal-migration": "portal-migration",
9
+ "2": "setup",
10
+ "/setup": "setup",
11
+ setup: "setup",
12
+ "3": "read",
13
+ "/read": "read",
14
+ read: "read",
15
+ "4": "fetch",
16
+ "/fetch": "fetch",
17
+ fetch: "fetch",
18
+ "/get": "fetch",
19
+ get: "fetch",
20
+ "5": "write",
21
+ "/write": "write",
22
+ write: "write",
23
+ "6": "guardrails",
24
+ "/guardrails": "guardrails",
25
+ guardrails: "guardrails",
26
+ safety: "guardrails",
27
+ policy: "guardrails",
28
+ properties: "property-preflight",
29
+ "property-preflight": "property-preflight",
30
+ "7": "property-preflight",
31
+ audit: "audit-trace",
32
+ trace: "audit-trace",
33
+ "audit-trace": "audit-trace",
34
+ "8": "audit-trace",
35
+ explore: "explore",
36
+ help: "explore",
37
+ "9": "explore",
38
+ };
39
+ export function resolveGoal(raw) {
40
+ const value = raw?.trim().toLowerCase();
41
+ if (!value)
42
+ return "portal-migration";
43
+ return GOAL_ALIASES[value] ?? "portal-migration";
44
+ }
45
+ async function askGoal() {
46
+ if (!input.isTTY)
47
+ return "portal-migration";
48
+ const rl = createInterface({ input, output });
49
+ try {
50
+ const answer = await rl.question([
51
+ "What do you want to do with hscli?",
52
+ "1) Prepare a portal/schema migration",
53
+ "2) Set up auth, hublet routing, scopes, and capabilities",
54
+ "3) Read safely from a source portal",
55
+ "4) Fetch/get records or metadata",
56
+ "5) Write safely to a target portal",
57
+ "6) Configure guardrails",
58
+ "7) Preflight property migration payloads",
59
+ "8) Trace/audit writes",
60
+ "9) Explore available commands",
61
+ "Choose 1-9: ",
62
+ ].join("\n"));
63
+ return resolveGoal(answer);
64
+ }
65
+ finally {
66
+ rl.close();
67
+ }
68
+ }
69
+ export function guidePayload(goal) {
70
+ if (goal === "setup") {
71
+ return {
72
+ goal,
73
+ purpose: "Create a safe profile, confirm hublet routing, then inspect portal capabilities before any migration work.",
74
+ nextCommands: [
75
+ "hscli auth login --profile live --token-stdin --hublet eu1",
76
+ "hscli auth set-mode live read-only",
77
+ "hscli --profile live doctor hublet-check",
78
+ "hscli --profile live doctor scopes diff --required real-mirror-read",
79
+ "hscli --profile live doctor capabilities --refresh",
80
+ ],
81
+ decisions: [
82
+ "Use read-only mode for live/source portals.",
83
+ "Use a separate read-write profile for sandbox/target portals.",
84
+ "Use --hublet eu1|na1|na2|ap1 when token metadata is not enough to infer routing.",
85
+ ],
86
+ };
87
+ }
88
+ if (goal === "read") {
89
+ return {
90
+ goal,
91
+ purpose: "Read from a source portal without accidental writes.",
92
+ nextCommands: [
93
+ "hscli auth set-mode live read-only",
94
+ "hscli --profile live crm migration export-metadata --out migration-metadata.json",
95
+ "hscli --profile live crm activities export contacts <contactId> --out contact-activities.json",
96
+ "hscli --profile live crm properties list contacts --format json > contacts-properties.json",
97
+ "hscli --profile live trace start --scope read",
98
+ ],
99
+ guardrails: [
100
+ "Profile read-only mode blocks POST/PATCH/PUT/DELETE even if the token has write scopes.",
101
+ "Use separate source/target profiles instead of switching tokens in place.",
102
+ ],
103
+ };
104
+ }
105
+ if (goal === "fetch") {
106
+ return {
107
+ goal,
108
+ purpose: "Fetch one record, list a small sample, or pull metadata without mutating the portal.",
109
+ nextCommands: [
110
+ "hscli --profile live account info",
111
+ "hscli --profile live crm contacts get <contactId>",
112
+ "hscli --profile live crm companies list --limit 10",
113
+ "hscli --profile live crm properties list contacts --format json > contacts-properties.json",
114
+ "hscli --profile live crm activities export contacts <contactId> --out contact-activities.json",
115
+ "hscli --profile live api request --path /crm/v3/objects/contacts/<contactId>",
116
+ ],
117
+ guardrails: [
118
+ "Use this for read-only inspection and spot checks.",
119
+ "For source portals, run `hscli auth set-mode live read-only` first.",
120
+ ],
121
+ };
122
+ }
123
+ if (goal === "write") {
124
+ return {
125
+ goal,
126
+ purpose: "Write to a sandbox or target portal with dry-runs, change tickets, and traceability.",
127
+ nextCommands: [
128
+ "hscli auth set-mode sandbox read-write",
129
+ "hscli --profile sandbox trace start --scope write --include-bodies",
130
+ "hscli --profile sandbox --dry-run crm properties batch-create contacts --skip-existing --data @contacts-properties.json",
131
+ "hscli --profile sandbox --force --change-ticket CHG-123 crm properties batch-create contacts --skip-existing --data @contacts-properties.json",
132
+ "hscli --profile sandbox trace stop",
133
+ ],
134
+ guardrails: [
135
+ "Writes still require --force.",
136
+ "Use --dry-run first, then rerun the same command with --force.",
137
+ "Use --change-ticket when policy requires audited writes.",
138
+ ],
139
+ };
140
+ }
141
+ if (goal === "guardrails") {
142
+ return {
143
+ goal,
144
+ purpose: "Turn on the safety rails before a client migration or production-adjacent run.",
145
+ nextCommands: [
146
+ "hscli auth set-mode live read-only",
147
+ "hscli policy templates extract read-only --to ./policy.json",
148
+ "export HSCLI_POLICY_FILE=./policy.json",
149
+ "hscli trace start --scope all --include-bodies",
150
+ "hscli --profile live doctor hublet-check",
151
+ "hscli --profile live doctor scopes diff --required real-mirror-read",
152
+ ],
153
+ checks: [
154
+ "Live/source profiles should be read-only.",
155
+ "Target profiles can be read-write but still need --force.",
156
+ "Trace/audit entries include request id, profile, tool name, and change ticket when provided.",
157
+ ],
158
+ };
159
+ }
160
+ if (goal === "property-preflight") {
161
+ return {
162
+ goal,
163
+ nextCommands: [
164
+ "hscli --json crm properties list contacts > contacts-properties.json",
165
+ "hscli --dry-run crm properties batch-create contacts --skip-existing --skip-label-collisions --data @contacts-properties.json",
166
+ "hscli --dry-run crm properties batch-create contacts --empty-enum demote --data @contacts-properties.json",
167
+ ],
168
+ checks: [
169
+ "Reserved hs_* names are skipped unless --include-reserved is set.",
170
+ "Read-only/HubSpot-defined properties are skipped unless --include-readonly is set.",
171
+ "Enum options with blank labels/values are removed before write.",
172
+ ],
173
+ };
174
+ }
175
+ if (goal === "audit-trace") {
176
+ return {
177
+ goal,
178
+ nextCommands: [
179
+ "hscli trace start --scope write --include-bodies",
180
+ "hscli --force --change-ticket CHG-123 crm contacts update <id> --data '{...}'",
181
+ "hscli trace stop",
182
+ "hscli audit by-ticket --ticket CHG-123",
183
+ ],
184
+ checks: [
185
+ "Use --change-ticket when policy requires traceable writes.",
186
+ "Trace bodies are redacted before being written.",
187
+ ],
188
+ };
189
+ }
190
+ if (goal === "explore") {
191
+ return {
192
+ goal,
193
+ nextCommands: [
194
+ "hscli doctor capabilities --refresh",
195
+ "hscli crm describe contacts --refresh-cache",
196
+ "hscli crm migration export-metadata --out migration-metadata.json",
197
+ "hscli --help",
198
+ ],
199
+ };
200
+ }
201
+ return {
202
+ goal,
203
+ nextCommands: [
204
+ "hscli crm migration export-metadata --out migration-metadata.json",
205
+ "hscli crm activities export contacts <contactId> --out contact-activities.json",
206
+ "hscli --json crm properties list contacts > contacts-properties.json",
207
+ "hscli --dry-run crm properties batch-create contacts --skip-existing --skip-label-collisions --data @contacts-properties.json",
208
+ "hscli crm pipelines list deals",
209
+ "hscli crm pipelines get deals <pipelineId>",
210
+ ],
211
+ capturedByMigrationExport: [
212
+ "property groups with labels/displayOrder",
213
+ "property definitions",
214
+ "deal/ticket pipelines with stage detail",
215
+ "custom object schemas",
216
+ "owners, teams, business units, currencies",
217
+ "standard association labels",
218
+ "recoverable record activities via crm activities export",
219
+ ],
220
+ replayOrder: [
221
+ "custom schemas",
222
+ "property groups",
223
+ "properties",
224
+ "pipelines and stages",
225
+ "association labels",
226
+ "owner/team remapping",
227
+ "records and associations",
228
+ ],
229
+ };
230
+ }
231
+ export function registerGuide(program, getCtx) {
232
+ program
233
+ .command("guide")
234
+ .description("Guided workflows for migration, preflight, and audit tasks")
235
+ .option("--goal <goal>", "portal-migration|property-preflight|audit-trace|explore")
236
+ .action(async (opts) => {
237
+ const ctx = getCtx();
238
+ const goal = opts.goal ? resolveGoal(opts.goal) : await askGoal();
239
+ printResult(ctx, guidePayload(goal));
240
+ });
241
+ registerSlashGuide(program, getCtx, "/migration", "portal-migration", "Portal/schema migration workflow");
242
+ registerSlashGuide(program, getCtx, "/setup", "setup", "Initial profile, hublet, scope, and capability setup");
243
+ registerSlashGuide(program, getCtx, "/read", "read", "Safe source-portal read workflow");
244
+ registerSlashGuide(program, getCtx, "/fetch", "fetch", "Fetch records or metadata without mutating the portal");
245
+ registerSlashGuide(program, getCtx, "/get", "fetch", "Get records or metadata without mutating the portal");
246
+ registerSlashGuide(program, getCtx, "/write", "write", "Target-portal write workflow with dry-run and trace");
247
+ registerSlashGuide(program, getCtx, "/guardrails", "guardrails", "Safety policy, read-only, and trace workflow");
248
+ }
249
+ function registerSlashGuide(program, getCtx, name, goal, description) {
250
+ const action = () => {
251
+ const ctx = getCtx();
252
+ printResult(ctx, guidePayload(goal));
253
+ };
254
+ program.command(name).description(description).action(action);
255
+ program.command(name.slice(1)).description(`${description} (alias for ${name})`).action(action);
256
+ }
257
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/guide/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,183 @@
1
- import { createClient } from "../../core/http.js";
2
- import { printResult } from "../../core/output.js";
1
+ import { readFileSync } from "node:fs";
2
+ import { getProfile } from "../../core/auth.js";
3
+ import { createBrowserSessionClient, createClient } from "../../core/http.js";
4
+ import { CliError, printResult } from "../../core/output.js";
3
5
  import { encodePathSegment, maybeWrite, parseJsonPayload, parseNumberFlag } from "../crm/shared.js";
6
+ function addBrowserSessionOptions(command) {
7
+ return command
8
+ .option("--portal-id <id>", "HubSpot portal ID (or HSCLI_PORTAL_ID / profile.portalId)")
9
+ .option("--ui-domain <domain>", "HubSpot app domain, e.g. app.hubspot.com or app-eu1.hubspot.com")
10
+ .option("--cookie <header>", "Browser Cookie header for app.hubspot.com")
11
+ .option("--cookie-file <path>", "Cookie header, Netscape cookie jar, or JSON cookie export")
12
+ .option("--csrf <token>", "x-hubspot-csrf-hubspotapi header value");
13
+ }
14
+ function resolvePermissionSetSession(ctx, opts) {
15
+ const profile = safeProfile(ctx.profile);
16
+ const portalId = firstString(opts.portalId, process.env.HSCLI_PORTAL_ID, profile?.portalId);
17
+ if (!portalId) {
18
+ throw new CliError("SESSION_PORTAL_ID_REQUIRED", "Permission-set commands require --portal-id, HSCLI_PORTAL_ID, or profile.portalId.");
19
+ }
20
+ const uiDomain = normalizeUiDomain(firstString(opts.uiDomain, process.env.HSCLI_HUBSPOT_UI_DOMAIN, profile?.uiDomain, "app.hubspot.com") ?? "app.hubspot.com");
21
+ const cookie = firstString(opts.cookie, process.env.HSCLI_HUBSPOT_COOKIE) ?? readCookieFile(firstString(opts.cookieFile, process.env.HSCLI_HUBSPOT_COOKIE_FILE));
22
+ if (!cookie) {
23
+ throw new CliError("SESSION_COOKIE_REQUIRED", "Permission-set commands require --cookie, --cookie-file, HSCLI_HUBSPOT_COOKIE, or HSCLI_HUBSPOT_COOKIE_FILE.");
24
+ }
25
+ const csrfToken = firstString(opts.csrf, process.env.HSCLI_HUBSPOT_CSRF, extractCsrfToken(cookie));
26
+ if (!csrfToken) {
27
+ throw new CliError("SESSION_CSRF_REQUIRED", "Permission-set commands require --csrf or HSCLI_HUBSPOT_CSRF. A csrf.app cookie is also accepted when present.");
28
+ }
29
+ return {
30
+ portalId,
31
+ client: createBrowserSessionClient(ctx.profile, {
32
+ apiBaseUrl: `https://${uiDomain}`,
33
+ cookie,
34
+ csrfToken,
35
+ telemetryFile: ctx.telemetryFile,
36
+ strictCapabilities: ctx.strictCapabilities,
37
+ }),
38
+ };
39
+ }
40
+ function permissionSetsPath(portalId) {
41
+ return `/api/app-users/v1/permission-sets?portalId=${encodeURIComponent(portalId)}`;
42
+ }
43
+ function permissionSetPath(portalId, id) {
44
+ return `/api/app-users/v1/permission-sets/${encodePathSegment(id, "permissionSetId")}?portalId=${encodeURIComponent(portalId)}`;
45
+ }
46
+ async function maybeWritePermissionSetWithRoleRetry(ctx, client, method, path, body, stripUnknownRoles) {
47
+ try {
48
+ return await maybeWrite(ctx, client, method, path, body);
49
+ }
50
+ catch (error) {
51
+ const missingRoles = stripUnknownRoles ? extractMissingRoles(error) : [];
52
+ const strippedBody = missingRoles.length > 0 ? stripRoles(body, missingRoles) : undefined;
53
+ if (!strippedBody)
54
+ throw error;
55
+ const result = await maybeWrite(ctx, client, method, path, strippedBody);
56
+ return {
57
+ result,
58
+ strippedRoleNames: missingRoles,
59
+ };
60
+ }
61
+ }
62
+ async function findExistingPermissionSetByName(client, portalId, name) {
63
+ const response = await client.request(permissionSetsPath(portalId));
64
+ return extractPermissionSets(response).find((item) => item.name === name);
65
+ }
66
+ function extractPermissionSets(response) {
67
+ if (Array.isArray(response))
68
+ return response.filter(isRecord);
69
+ if (!isRecord(response))
70
+ return [];
71
+ for (const key of ["results", "permissionSets", "items"]) {
72
+ const value = response[key];
73
+ if (Array.isArray(value))
74
+ return value.filter(isRecord);
75
+ }
76
+ return [];
77
+ }
78
+ function extractMissingRoles(error) {
79
+ if (!(error instanceof CliError) || error.status !== 400)
80
+ return [];
81
+ const details = error.details === undefined ? error.message : JSON.stringify(error.details);
82
+ const match = details.match(/Cannot find roles\s*\[([^\]]+)\]/i);
83
+ if (!match)
84
+ return [];
85
+ return match[1]
86
+ .split(",")
87
+ .map((role) => role.trim().replace(/^["']|["']$/g, ""))
88
+ .filter(Boolean);
89
+ }
90
+ function stripRoles(body, rolesToStrip) {
91
+ const roles = Array.isArray(body.roleNames) ? body.roleNames.filter((role) => typeof role === "string") : [];
92
+ if (roles.length === 0)
93
+ return undefined;
94
+ const missing = new Set(rolesToStrip);
95
+ const kept = roles.filter((role) => !missing.has(role));
96
+ if (kept.length === roles.length)
97
+ return undefined;
98
+ return { ...body, roleNames: kept };
99
+ }
100
+ function safeProfile(profile) {
101
+ try {
102
+ return getProfile(profile);
103
+ }
104
+ catch {
105
+ return undefined;
106
+ }
107
+ }
108
+ function firstString(...values) {
109
+ for (const value of values) {
110
+ const trimmed = value?.trim();
111
+ if (trimmed)
112
+ return trimmed;
113
+ }
114
+ return undefined;
115
+ }
116
+ function normalizeUiDomain(raw) {
117
+ return raw.replace(/^https?:\/\//, "").replace(/\/.*$/, "");
118
+ }
119
+ function readCookieFile(path) {
120
+ if (!path)
121
+ return undefined;
122
+ const raw = readFileSync(path, "utf8").trim();
123
+ if (!raw)
124
+ return undefined;
125
+ return normalizeCookieFile(raw);
126
+ }
127
+ function normalizeCookieFile(raw) {
128
+ const parsed = parseCookieJson(raw);
129
+ if (parsed)
130
+ return parsed;
131
+ const lines = raw.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
132
+ const netscapeCookies = lines
133
+ .filter((line) => !line.startsWith("#"))
134
+ .map((line) => line.split(/\t+/))
135
+ .filter((parts) => parts.length >= 7)
136
+ .map((parts) => `${parts[5]}=${parts.slice(6).join("\t")}`);
137
+ if (netscapeCookies.length > 0)
138
+ return netscapeCookies.join("; ");
139
+ return lines.filter((line) => !line.startsWith("#")).join("; ");
140
+ }
141
+ function parseCookieJson(raw) {
142
+ try {
143
+ const parsed = JSON.parse(raw);
144
+ if (typeof parsed === "string")
145
+ return parsed;
146
+ if (isRecord(parsed) && typeof parsed.cookie === "string")
147
+ return parsed.cookie;
148
+ const cookies = Array.isArray(parsed) ? parsed : isRecord(parsed) && Array.isArray(parsed.cookies) ? parsed.cookies : undefined;
149
+ if (!cookies)
150
+ return undefined;
151
+ const pairs = cookies
152
+ .filter(isRecord)
153
+ .map((cookie) => {
154
+ const name = typeof cookie.name === "string" ? cookie.name.trim() : "";
155
+ const value = typeof cookie.value === "string" ? cookie.value : "";
156
+ return name ? `${name}=${value}` : "";
157
+ })
158
+ .filter(Boolean);
159
+ return pairs.length > 0 ? pairs.join("; ") : undefined;
160
+ }
161
+ catch {
162
+ return undefined;
163
+ }
164
+ }
165
+ function extractCsrfToken(cookieHeader) {
166
+ const candidates = new Set(["csrf.app", "csrf", "hubspotapi-csrf", "hs-csrf"]);
167
+ for (const part of cookieHeader.split(";")) {
168
+ const [rawName, ...rawValue] = part.trim().split("=");
169
+ if (!rawName || rawValue.length === 0)
170
+ continue;
171
+ if (candidates.has(rawName.trim().toLowerCase())) {
172
+ const value = rawValue.join("=").trim();
173
+ return value ? decodeURIComponent(value) : undefined;
174
+ }
175
+ }
176
+ return undefined;
177
+ }
178
+ function isRecord(value) {
179
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
180
+ }
4
181
  export function registerSettings(program, getCtx) {
5
182
  const settings = program.command("settings").description("HubSpot Settings APIs");
6
183
  // Users
@@ -90,6 +267,65 @@ export function registerSettings(program, getCtx) {
90
267
  const res = await client.request("/settings/v3/users/teams");
91
268
  printResult(ctx, res);
92
269
  });
270
+ // Permission sets — internal HubSpot endpoint, requires browser session cookies.
271
+ const permissionSets = settings.command("permission-sets").description("Permission-set management via internal HubSpot session-auth endpoint");
272
+ addBrowserSessionOptions(permissionSets.command("list"))
273
+ .action(async (opts) => {
274
+ const ctx = getCtx();
275
+ const { client, portalId } = resolvePermissionSetSession(ctx, opts);
276
+ const res = await client.request(permissionSetsPath(portalId));
277
+ printResult(ctx, res);
278
+ });
279
+ addBrowserSessionOptions(permissionSets.command("get").argument("<id>"))
280
+ .action(async (id, opts) => {
281
+ const ctx = getCtx();
282
+ const { client, portalId } = resolvePermissionSetSession(ctx, opts);
283
+ const res = await client.request(permissionSetPath(portalId, id));
284
+ printResult(ctx, res);
285
+ });
286
+ addBrowserSessionOptions(permissionSets.command("create")
287
+ .requiredOption("--data <payload>", "Permission-set payload JSON: { name, description?, roleNames[] }")
288
+ .option("--skip-existing", "Fetch existing permission sets first and skip when name already exists")
289
+ .option("--no-strip-unknown-roles", "Do not auto-retry after removing roles rejected by HubSpot")).action(async (opts) => {
290
+ const ctx = getCtx();
291
+ const { client, portalId } = resolvePermissionSetSession(ctx, opts);
292
+ const payload = parseJsonPayload(opts.data);
293
+ const path = permissionSetsPath(portalId);
294
+ if (!ctx.dryRun && opts.skipExisting) {
295
+ const name = typeof payload.name === "string" ? payload.name.trim() : "";
296
+ if (!name)
297
+ throw new CliError("PERMISSION_SET_NAME_REQUIRED", "--skip-existing requires payload.name.");
298
+ const existing = await findExistingPermissionSetByName(client, portalId, name);
299
+ if (existing) {
300
+ printResult(ctx, { skipped: true, reason: "permission-set-exists", existing });
301
+ return;
302
+ }
303
+ }
304
+ const res = await maybeWritePermissionSetWithRoleRetry(ctx, client, "POST", path, payload, opts.stripUnknownRoles !== false);
305
+ printResult(ctx, res);
306
+ });
307
+ addBrowserSessionOptions(permissionSets.command("update")
308
+ .argument("<id>")
309
+ .requiredOption("--data <payload>", "Permission-set update payload JSON")
310
+ .option("--method <method>", "HTTP method for update: PUT|PATCH", "PUT")
311
+ .option("--no-strip-unknown-roles", "Do not auto-retry after removing roles rejected by HubSpot")).action(async (id, opts) => {
312
+ const ctx = getCtx();
313
+ const method = String(opts.method).trim().toUpperCase();
314
+ if (method !== "PUT" && method !== "PATCH") {
315
+ throw new CliError("INVALID_FLAG", "--method must be PUT or PATCH");
316
+ }
317
+ const { client, portalId } = resolvePermissionSetSession(ctx, opts);
318
+ const payload = parseJsonPayload(opts.data);
319
+ const res = await maybeWritePermissionSetWithRoleRetry(ctx, client, method, permissionSetPath(portalId, id), payload, opts.stripUnknownRoles !== false);
320
+ printResult(ctx, res);
321
+ });
322
+ addBrowserSessionOptions(permissionSets.command("delete").argument("<id>"))
323
+ .action(async (id, opts) => {
324
+ const ctx = getCtx();
325
+ const { client, portalId } = resolvePermissionSetSession(ctx, opts);
326
+ const res = await maybeWrite(ctx, client, "DELETE", permissionSetPath(portalId, id));
327
+ printResult(ctx, res);
328
+ });
93
329
  // Currencies
94
330
  const currencies = settings.command("currencies").description("Multi-currency management");
95
331
  currencies
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/settings/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/settings/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import type { CliContext } from "../../core/output.js";
3
+ export declare function registerUi(program: Command, getCtx: () => CliContext): void;