@revfleet/hscli 0.8.11 → 0.9.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 (154) hide show
  1. package/CHANGELOG.md +186 -0
  2. package/README.md +223 -10
  3. package/dist/cli.js +29 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agent/contracts.d.ts +3 -0
  6. package/dist/commands/agent/contracts.js +139 -0
  7. package/dist/commands/agent/contracts.js.map +1 -0
  8. package/dist/commands/agent/index.d.ts +3 -0
  9. package/dist/commands/agent/index.js +188 -0
  10. package/dist/commands/agent/index.js.map +1 -0
  11. package/dist/commands/agent/recipes.d.ts +13 -0
  12. package/dist/commands/agent/recipes.js +108 -0
  13. package/dist/commands/agent/recipes.js.map +1 -0
  14. package/dist/commands/agent/runner.d.ts +16 -0
  15. package/dist/commands/agent/runner.js +165 -0
  16. package/dist/commands/agent/runner.js.map +1 -0
  17. package/dist/commands/auth/index.js +64 -7
  18. package/dist/commands/auth/index.js.map +1 -1
  19. package/dist/commands/automation/index.js +30 -0
  20. package/dist/commands/automation/index.js.map +1 -1
  21. package/dist/commands/backup/index.d.ts +12 -0
  22. package/dist/commands/backup/index.js +459 -0
  23. package/dist/commands/backup/index.js.map +1 -0
  24. package/dist/commands/cms/content-ops.js +1 -1
  25. package/dist/commands/cms/content-ops.js.map +1 -1
  26. package/dist/commands/communication-preferences/index.js +207 -7
  27. package/dist/commands/communication-preferences/index.js.map +1 -1
  28. package/dist/commands/content-permissions/index.d.ts +22 -0
  29. package/dist/commands/content-permissions/index.js +141 -0
  30. package/dist/commands/content-permissions/index.js.map +1 -0
  31. package/dist/commands/context/index.d.ts +3 -0
  32. package/dist/commands/context/index.js +182 -0
  33. package/dist/commands/context/index.js.map +1 -0
  34. package/dist/commands/crm/associations.js +38 -0
  35. package/dist/commands/crm/associations.js.map +1 -1
  36. package/dist/commands/crm/custom-objects.js +39 -2
  37. package/dist/commands/crm/custom-objects.js.map +1 -1
  38. package/dist/commands/crm/dated.js +3 -3
  39. package/dist/commands/crm/dated.js.map +1 -1
  40. package/dist/commands/crm/migration.js +210 -2
  41. package/dist/commands/crm/migration.js.map +1 -1
  42. package/dist/commands/crm/properties.js +2 -1
  43. package/dist/commands/crm/properties.js.map +1 -1
  44. package/dist/commands/crm/property-batch.d.ts +1 -0
  45. package/dist/commands/crm/property-batch.js +44 -5
  46. package/dist/commands/crm/property-batch.js.map +1 -1
  47. package/dist/commands/crm/shared.js +21 -2
  48. package/dist/commands/crm/shared.js.map +1 -1
  49. package/dist/commands/crm/sync.js +1 -1
  50. package/dist/commands/crm/sync.js.map +1 -1
  51. package/dist/commands/doctor/index.js +193 -0
  52. package/dist/commands/doctor/index.js.map +1 -1
  53. package/dist/commands/email-tracking/index.d.ts +16 -0
  54. package/dist/commands/email-tracking/index.js +314 -0
  55. package/dist/commands/email-tracking/index.js.map +1 -0
  56. package/dist/commands/extensions/index.js +1 -1
  57. package/dist/commands/extensions/index.js.map +1 -1
  58. package/dist/commands/forms/index.js +15 -2
  59. package/dist/commands/forms/index.js.map +1 -1
  60. package/dist/commands/forms/legacy-v2.d.ts +7 -2
  61. package/dist/commands/forms/legacy-v2.js +103 -7
  62. package/dist/commands/forms/legacy-v2.js.map +1 -1
  63. package/dist/commands/guide/index.d.ts +3 -0
  64. package/dist/commands/guide/index.js +75 -16
  65. package/dist/commands/guide/index.js.map +1 -1
  66. package/dist/commands/internal/catalog.d.ts +1 -0
  67. package/dist/commands/internal/catalog.js +2 -0
  68. package/dist/commands/internal/catalog.js.map +1 -0
  69. package/dist/commands/internal/index.d.ts +26 -0
  70. package/dist/commands/internal/index.js +823 -0
  71. package/dist/commands/internal/index.js.map +1 -0
  72. package/dist/commands/internal-session.d.ts +15 -0
  73. package/dist/commands/internal-session.js +152 -0
  74. package/dist/commands/internal-session.js.map +1 -0
  75. package/dist/commands/lists/index.js +1 -1
  76. package/dist/commands/lists/index.js.map +1 -1
  77. package/dist/commands/marketing/email-audit.d.ts +32 -0
  78. package/dist/commands/marketing/email-audit.js +121 -0
  79. package/dist/commands/marketing/email-audit.js.map +1 -0
  80. package/dist/commands/marketing/index.js +2 -0
  81. package/dist/commands/marketing/index.js.map +1 -1
  82. package/dist/commands/mcp.js +5 -3
  83. package/dist/commands/mcp.js.map +1 -1
  84. package/dist/commands/playbooks/index.d.ts +3 -0
  85. package/dist/commands/playbooks/index.js +228 -0
  86. package/dist/commands/playbooks/index.js.map +1 -0
  87. package/dist/commands/portals/index.d.ts +3 -0
  88. package/dist/commands/portals/index.js +132 -0
  89. package/dist/commands/portals/index.js.map +1 -0
  90. package/dist/commands/reports/index.d.ts +3 -0
  91. package/dist/commands/reports/index.js +479 -0
  92. package/dist/commands/reports/index.js.map +1 -0
  93. package/dist/commands/sales-content/index.d.ts +13 -0
  94. package/dist/commands/sales-content/index.js +59 -0
  95. package/dist/commands/sales-content/index.js.map +1 -0
  96. package/dist/commands/sales-templates/index.d.ts +3 -0
  97. package/dist/commands/sales-templates/index.js +88 -0
  98. package/dist/commands/sales-templates/index.js.map +1 -0
  99. package/dist/commands/seed/cms.js +28 -45
  100. package/dist/commands/seed/cms.js.map +1 -1
  101. package/dist/commands/sequences/index.d.ts +18 -0
  102. package/dist/commands/sequences/index.js +263 -0
  103. package/dist/commands/sequences/index.js.map +1 -0
  104. package/dist/commands/settings/index.js +450 -102
  105. package/dist/commands/settings/index.js.map +1 -1
  106. package/dist/commands/settings/site-settings.d.ts +3 -0
  107. package/dist/commands/settings/site-settings.js +106 -0
  108. package/dist/commands/settings/site-settings.js.map +1 -0
  109. package/dist/commands/ui/index.d.ts +3 -0
  110. package/dist/commands/ui/index.js +422 -0
  111. package/dist/commands/ui/index.js.map +1 -0
  112. package/dist/commands/workflows/index.js +2 -0
  113. package/dist/commands/workflows/index.js.map +1 -1
  114. package/dist/commands/workflows/preflight.d.ts +23 -0
  115. package/dist/commands/workflows/preflight.js +295 -0
  116. package/dist/commands/workflows/preflight.js.map +1 -0
  117. package/dist/core/action-contract.d.ts +43 -0
  118. package/dist/core/action-contract.js +207 -0
  119. package/dist/core/action-contract.js.map +1 -0
  120. package/dist/core/auth.d.ts +6 -0
  121. package/dist/core/auth.js +85 -0
  122. package/dist/core/auth.js.map +1 -1
  123. package/dist/core/http.d.ts +8 -0
  124. package/dist/core/http.js +37 -5
  125. package/dist/core/http.js.map +1 -1
  126. package/dist/core/id-maps.d.ts +27 -0
  127. package/dist/core/id-maps.js +204 -0
  128. package/dist/core/id-maps.js.map +1 -0
  129. package/dist/core/output.d.ts +2 -1
  130. package/dist/core/output.js +34 -0
  131. package/dist/core/output.js.map +1 -1
  132. package/dist/mcp/profiles.d.ts +14 -0
  133. package/dist/mcp/profiles.js +68 -0
  134. package/dist/mcp/profiles.js.map +1 -0
  135. package/dist/mcp/server.d.ts +5 -3
  136. package/dist/mcp/server.js +22 -5
  137. package/dist/mcp/server.js.map +1 -1
  138. package/docs/CAPABILITY_LIBRARY.md +29 -8
  139. package/docs/COMMAND_TREE.md +98 -17
  140. package/docs/COMPARISON.md +8 -5
  141. package/docs/COOKBOOK.md +127 -5
  142. package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +813 -0
  143. package/docs/INTERNAL-ENDPOINTS.md +371 -0
  144. package/docs/INTERNAL_ENDPOINTS.md +243 -0
  145. package/docs/MARKETING_SETUP.md +21 -1
  146. package/docs/MCP.md +28 -89
  147. package/docs/MCP_TOOL_CATALOG.md +192 -0
  148. package/docs/MIGRATION_ADAPTERS.md +115 -0
  149. package/docs/PORTAL_BACKUP.md +212 -0
  150. package/docs/PUBLISHING.md +1 -1
  151. package/docs/SALES_CONTENT_INTERNAL_PUNCH_LIST.md +504 -0
  152. package/docs/TUTORIALS/secure-agent-writes.md +49 -0
  153. package/docs/WHY_HOW_WHAT.md +10 -4
  154. package/package.json +4 -2
@@ -0,0 +1,27 @@
1
+ export type FlatIdMap = Record<string, string>;
2
+ export interface PipelineIdMap {
3
+ target_pipelineId?: string;
4
+ stageMap: FlatIdMap;
5
+ }
6
+ export interface MigrationIdMaps {
7
+ subscriptionTypes: FlatIdMap;
8
+ businessUnits: FlatIdMap;
9
+ emails: FlatIdMap;
10
+ lists: FlatIdMap;
11
+ campaigns: FlatIdMap;
12
+ workflows: FlatIdMap;
13
+ users: FlatIdMap;
14
+ owners: FlatIdMap;
15
+ sequences: FlatIdMap;
16
+ customObjects: FlatIdMap;
17
+ associations: FlatIdMap;
18
+ pipelines: Record<string, PipelineIdMap>;
19
+ }
20
+ export declare function loadJsonFile(path: string): unknown;
21
+ export declare function loadFlatIdMapFile(path: string): FlatIdMap;
22
+ export declare function loadOptionalFlatIdMapFile(path: string): FlatIdMap;
23
+ export declare function flattenIdMap(input: unknown): FlatIdMap;
24
+ export declare function loadMigrationIdMaps(dir: string): MigrationIdMaps;
25
+ export declare function findPipelineStageTarget(pipelines: Record<string, PipelineIdMap>, sourceStageId: unknown): string | undefined;
26
+ export declare function isStandardObjectTypeId(value: unknown): boolean;
27
+ export declare function stringifyId(value: unknown): string | undefined;
@@ -0,0 +1,204 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { CliError } from "./output.js";
4
+ export function loadJsonFile(path) {
5
+ if (!existsSync(path)) {
6
+ throw new CliError("ID_MAP_NOT_FOUND", `ID map file not found: ${path}`);
7
+ }
8
+ try {
9
+ return JSON.parse(readFileSync(path, "utf8"));
10
+ }
11
+ catch {
12
+ throw new CliError("ID_MAP_INVALID_JSON", `Invalid ID map JSON: ${path}`);
13
+ }
14
+ }
15
+ export function loadFlatIdMapFile(path) {
16
+ return flattenIdMap(loadJsonFile(path));
17
+ }
18
+ export function loadOptionalFlatIdMapFile(path) {
19
+ if (!existsSync(path))
20
+ return {};
21
+ return loadFlatIdMapFile(path);
22
+ }
23
+ export function flattenIdMap(input) {
24
+ const out = {};
25
+ const root = asRecord(input);
26
+ if (!root)
27
+ return out;
28
+ const hasExplicitCollection = root.mapping !== undefined || root.mappings !== undefined || root.records !== undefined;
29
+ const candidates = hasExplicitCollection
30
+ ? [root.mapping, root.mappings, root.records]
31
+ : [root];
32
+ for (const candidate of candidates) {
33
+ if (Array.isArray(candidate)) {
34
+ for (const item of candidate)
35
+ addArrayMapping(out, item);
36
+ }
37
+ else if (candidate && typeof candidate === "object") {
38
+ for (const [source, target] of Object.entries(candidate)) {
39
+ const resolved = resolveTargetId(target);
40
+ if (resolved !== undefined)
41
+ out[String(source)] = resolved;
42
+ }
43
+ }
44
+ }
45
+ return out;
46
+ }
47
+ export function loadMigrationIdMaps(dir) {
48
+ return {
49
+ subscriptionTypes: loadOptionalFlatIdMapFile(join(dir, "subscription-types.json")),
50
+ businessUnits: loadOptionalFlatIdMapFile(join(dir, "business-units.json")),
51
+ emails: loadOptionalFlatIdMapFile(join(dir, "marketing-emails.json")),
52
+ lists: loadOptionalFlatIdMapFile(join(dir, "lists.json")),
53
+ campaigns: loadOptionalFlatIdMapFile(join(dir, "marketing-campaigns.json")),
54
+ workflows: loadOptionalFlatIdMapFile(join(dir, "workflows.json")),
55
+ users: loadOptionalFlatIdMapFile(join(dir, "users.json")),
56
+ owners: loadOptionalFlatIdMapFile(join(dir, "owners.json")),
57
+ sequences: loadOptionalFlatIdMapFile(join(dir, "sequences.json")),
58
+ customObjects: loadCustomObjectIdMap(join(dir, "custom-objects.json")),
59
+ associations: loadAssociationIdMap(join(dir, "associations.json")),
60
+ pipelines: loadPipelineIdMap(join(dir, "pipelines.json")),
61
+ };
62
+ }
63
+ export function findPipelineStageTarget(pipelines, sourceStageId) {
64
+ const source = stringifyId(sourceStageId);
65
+ if (!source)
66
+ return undefined;
67
+ for (const pipeline of Object.values(pipelines)) {
68
+ const target = pipeline.stageMap[source];
69
+ if (target !== undefined)
70
+ return target;
71
+ }
72
+ return undefined;
73
+ }
74
+ export function isStandardObjectTypeId(value) {
75
+ const text = stringifyId(value);
76
+ return Boolean(text && /^0-\d+$/.test(text));
77
+ }
78
+ export function stringifyId(value) {
79
+ if (value === undefined || value === null)
80
+ return undefined;
81
+ if (typeof value === "string") {
82
+ const trimmed = value.trim();
83
+ return trimmed ? trimmed : undefined;
84
+ }
85
+ if (typeof value === "number" && Number.isFinite(value))
86
+ return String(value);
87
+ return undefined;
88
+ }
89
+ function addArrayMapping(out, item) {
90
+ const record = asRecord(item);
91
+ if (!record)
92
+ return;
93
+ const source = stringifyId(record.source_id
94
+ ?? record.sourceId
95
+ ?? record.src_id
96
+ ?? record.src
97
+ ?? record.source_objectTypeId
98
+ ?? record.src_pipelineId
99
+ ?? record.source);
100
+ const target = resolveTargetId(record);
101
+ if (source && target)
102
+ out[source] = target;
103
+ }
104
+ function resolveTargetId(value) {
105
+ const primitive = stringifyId(value);
106
+ if (primitive)
107
+ return primitive;
108
+ const record = asRecord(value);
109
+ if (!record)
110
+ return undefined;
111
+ const arrayTarget = Array.isArray(record.target_typeIds) ? record.target_typeIds[0] : undefined;
112
+ return stringifyId(record.target_id
113
+ ?? record.targetId
114
+ ?? record.target
115
+ ?? record.target_objectTypeId
116
+ ?? record.target_pipelineId
117
+ ?? record.target_typeId
118
+ ?? arrayTarget
119
+ ?? record.tgt);
120
+ }
121
+ function loadCustomObjectIdMap(path) {
122
+ if (!existsSync(path))
123
+ return {};
124
+ const json = loadJsonFile(path);
125
+ const root = asRecord(json);
126
+ if (!root)
127
+ return {};
128
+ const out = flattenIdMap(json);
129
+ const mapping = root.mapping;
130
+ if (Array.isArray(mapping)) {
131
+ for (const entry of mapping) {
132
+ const record = asRecord(entry);
133
+ const source = stringifyId(record?.source_objectTypeId);
134
+ const target = stringifyId(record?.target_objectTypeId);
135
+ if (source && target)
136
+ out[source] = target;
137
+ }
138
+ }
139
+ return out;
140
+ }
141
+ function loadAssociationIdMap(path) {
142
+ if (!existsSync(path))
143
+ return {};
144
+ const json = loadJsonFile(path);
145
+ const out = flattenIdMap(json);
146
+ const root = asRecord(json);
147
+ for (const collection of [root?.mapping, root?.mappings]) {
148
+ if (!Array.isArray(collection))
149
+ continue;
150
+ for (const entry of collection) {
151
+ const record = asRecord(entry);
152
+ const source = stringifyId(record?.src_id ?? record?.source_id);
153
+ const target = stringifyId(record?.target_typeId)
154
+ ?? (Array.isArray(record?.target_typeIds) ? stringifyId(record?.target_typeIds[0]) : undefined);
155
+ if (source && target)
156
+ out[source] = target;
157
+ }
158
+ }
159
+ return out;
160
+ }
161
+ function loadPipelineIdMap(path) {
162
+ if (!existsSync(path))
163
+ return {};
164
+ const json = loadJsonFile(path);
165
+ const root = asRecord(json);
166
+ if (!root)
167
+ return {};
168
+ const out = {};
169
+ for (const key of ["deals", "tickets"]) {
170
+ const entries = root[key];
171
+ if (!Array.isArray(entries))
172
+ continue;
173
+ for (const entry of entries) {
174
+ const record = asRecord(entry);
175
+ const source = stringifyId(record?.src_pipelineId ?? record?.source_pipelineId);
176
+ if (!source)
177
+ continue;
178
+ out[source] = {
179
+ target_pipelineId: stringifyId(record?.target_pipelineId),
180
+ stageMap: normalizeStageMap(record?.stageMap ?? record?.stages),
181
+ };
182
+ }
183
+ }
184
+ return out;
185
+ }
186
+ function normalizeStageMap(raw) {
187
+ const record = asRecord(raw);
188
+ if (!record)
189
+ return {};
190
+ const out = {};
191
+ for (const [source, target] of Object.entries(record)) {
192
+ const resolved = resolveTargetId(target);
193
+ if (resolved !== undefined)
194
+ out[source] = resolved;
195
+ }
196
+ return out;
197
+ }
198
+ function asRecord(value) {
199
+ if (value && typeof value === "object" && !Array.isArray(value)) {
200
+ return value;
201
+ }
202
+ return undefined;
203
+ }
204
+ //# sourceMappingURL=id-maps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-maps.js","sourceRoot":"","sources":["../../src/core/id-maps.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Output layer — printResult / printError, JSON / table / CSV / YAML formatting, secret redaction.
3
3
  */
4
4
  export type OutputMode = "human" | "json";
5
- export type OutputFormat = "json" | "table" | "csv" | "yaml";
5
+ export type OutputFormat = "json" | "jsonl" | "table" | "csv" | "yaml";
6
6
  export interface CliContext {
7
7
  profile: string;
8
8
  json: boolean;
@@ -26,3 +26,4 @@ export declare class CliError extends Error {
26
26
  export declare function redactSensitive<T>(input: T): T;
27
27
  export declare function printResult(ctx: CliContext, data: unknown): void;
28
28
  export declare function printError(ctx: CliContext, err: unknown): void;
29
+ export declare function toJsonLines(data: unknown): string;
@@ -59,6 +59,14 @@ export function printResult(ctx, data) {
59
59
  console.log(JSON.stringify({ ok: true, data: safeData }, null, 2));
60
60
  return;
61
61
  }
62
+ if (selectedFormat === "jsonl") {
63
+ const lines = toJsonLines(safeData);
64
+ if (lines) {
65
+ // eslint-disable-next-line no-console
66
+ console.log(lines);
67
+ }
68
+ return;
69
+ }
62
70
  if (selectedFormat === "csv") {
63
71
  // eslint-disable-next-line no-console
64
72
  console.log(toCsv(safeData));
@@ -82,6 +90,9 @@ export function printError(ctx, err) {
82
90
  if (selectedFormat === "json") {
83
91
  console.error(JSON.stringify({ ok: false, error: { code: e.code, message: safeMessage, status: e.status, details: safeDetails } }, null, 2));
84
92
  }
93
+ else if (selectedFormat === "jsonl") {
94
+ console.error(JSON.stringify({ ok: false, error: { code: e.code, message: safeMessage, status: e.status, details: safeDetails } }));
95
+ }
85
96
  else {
86
97
  console.error(`[${e.code}] ${safeMessage}`);
87
98
  if (e.status)
@@ -90,6 +101,29 @@ export function printError(ctx, err) {
90
101
  console.error(JSON.stringify(safeDetails, null, 2));
91
102
  }
92
103
  }
104
+ export function toJsonLines(data) {
105
+ const safeData = redactSensitive(data);
106
+ if (Array.isArray(safeData)) {
107
+ return safeData
108
+ .map((item) => JSON.stringify({ ok: true, data: item }))
109
+ .join("\n");
110
+ }
111
+ if (safeData && typeof safeData === "object") {
112
+ const record = safeData;
113
+ if (Array.isArray(record.results)) {
114
+ const { results, ...meta } = record;
115
+ const hasMeta = Object.keys(meta).length > 0;
116
+ return results
117
+ .map((item) => JSON.stringify({
118
+ ok: true,
119
+ data: item,
120
+ ...(hasMeta ? { meta } : {}),
121
+ }))
122
+ .join("\n");
123
+ }
124
+ }
125
+ return JSON.stringify({ ok: true, data: safeData });
126
+ }
93
127
  function toTabularRows(data) {
94
128
  if (Array.isArray(data)) {
95
129
  return data
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/core/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export type McpSurfaceProfile = "minimal" | "crm" | "migration" | "full";
2
+ export type McpToolRisk = "read" | "write" | "delete";
3
+ export interface McpToolCatalogEntry {
4
+ name: string;
5
+ description: string;
6
+ domain: string;
7
+ risk: McpToolRisk;
8
+ surfaces: McpSurfaceProfile[];
9
+ }
10
+ export declare function parseMcpSurface(input: unknown, fallback?: McpSurfaceProfile): McpSurfaceProfile;
11
+ export declare function isToolAllowed(name: string, surface: McpSurfaceProfile): boolean;
12
+ export declare function classifyToolRisk(name: string): McpToolRisk;
13
+ export declare function classifyToolDomain(name: string): string;
14
+ export declare function surfacesForTool(name: string): McpSurfaceProfile[];
@@ -0,0 +1,68 @@
1
+ import { CliError } from "../core/output.js";
2
+ const SURFACES = ["minimal", "crm", "migration", "full"];
3
+ const MINIMAL_EXACT = new Set([
4
+ "crm_associations_list",
5
+ "crm_owners_list",
6
+ "crm_pipelines_get",
7
+ "crm_pipelines_list",
8
+ "crm_pipelines_stages",
9
+ "crm_properties_get",
10
+ "crm_properties_list",
11
+ "get_crm_objects",
12
+ "get_properties",
13
+ "get_user_details",
14
+ "search_crm_objects",
15
+ "search_owners",
16
+ "search_properties",
17
+ ]);
18
+ const CRM_COMPAT = new Set([
19
+ "get_crm_objects",
20
+ "get_properties",
21
+ "get_user_details",
22
+ "manage_crm_objects",
23
+ "search_crm_objects",
24
+ "search_owners",
25
+ "search_properties",
26
+ ]);
27
+ export function parseMcpSurface(input, fallback = "minimal") {
28
+ const value = input === undefined || input === null || String(input).trim() === ""
29
+ ? fallback
30
+ : String(input).trim().toLowerCase();
31
+ if (!SURFACES.includes(value)) {
32
+ throw new CliError("MCP_SURFACE_INVALID", `MCP surface must be one of: ${SURFACES.join(", ")}.`);
33
+ }
34
+ return value;
35
+ }
36
+ export function isToolAllowed(name, surface) {
37
+ if (surface === "full")
38
+ return true;
39
+ if (name === "hub_api_request")
40
+ return false;
41
+ if (surface === "migration")
42
+ return true;
43
+ if (surface === "crm")
44
+ return name.startsWith("crm_") || CRM_COMPAT.has(name);
45
+ if (MINIMAL_EXACT.has(name))
46
+ return true;
47
+ return /^crm_(contacts|companies|deals|tickets)_(list|get|search|batch_read)$/.test(name);
48
+ }
49
+ export function classifyToolRisk(name) {
50
+ if (/(?:^|_)(?:delete|archive|remove|gdpr)(?:_|$)/i.test(name))
51
+ return "delete";
52
+ if (/(?:^|_)(?:create|update|upsert|merge|write|publish|send|submit|enroll|assign|upload)(?:_|$)/i.test(name))
53
+ return "write";
54
+ if (name === "manage_crm_objects" || name === "hub_api_request")
55
+ return "write";
56
+ return "read";
57
+ }
58
+ export function classifyToolDomain(name) {
59
+ if (/^(?:get|manage|search)_/.test(name))
60
+ return "compat";
61
+ if (name.startsWith("hubspot_module_"))
62
+ return "modules";
63
+ return name.split("_")[0] || "other";
64
+ }
65
+ export function surfacesForTool(name) {
66
+ return SURFACES.filter((surface) => isToolAllowed(name, surface));
67
+ }
68
+ //# sourceMappingURL=profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/mcp/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAa7C,MAAM,QAAQ,GAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AAE9E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,uBAAuB;IACvB,iBAAiB;IACjB,mBAAmB;IACnB,oBAAoB;IACpB,sBAAsB;IACtB,oBAAoB;IACpB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,eAAe;IACf,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,iBAAiB;IACjB,gBAAgB;IAChB,kBAAkB;IAClB,oBAAoB;IACpB,oBAAoB;IACpB,eAAe;IACf,mBAAmB;CACpB,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,KAAc,EAAE,WAA8B,SAAS;IACrF,MAAM,KAAK,GAAG,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE;QAChF,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAA0B,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,+BAA+B,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,KAA0B,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,OAA0B;IACpE,IAAI,OAAO,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,OAAO,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,uEAAuE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5F,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,IAAI,+CAA+C,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChF,IAAI,8FAA8F,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAC9H,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,iBAAiB;QAAE,OAAO,OAAO,CAAC;IAChF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QAAE,OAAO,SAAS,CAAC;IACzD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AACpE,CAAC"}
@@ -2,6 +2,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { z } from "zod";
3
3
  import { HubSpotClient } from "../core/http.js";
4
4
  import { type CliContext } from "../core/output.js";
5
+ import { type McpSurfaceProfile, type McpToolCatalogEntry } from "./profiles.js";
5
6
  export interface McpBaseArgs {
6
7
  profile?: string;
7
8
  force?: boolean;
@@ -40,6 +41,7 @@ export declare function executeTool(args: McpBaseArgs, fn: (ctx: CliContext, cli
40
41
  * config/handler with the right shape.
41
42
  */
42
43
  export declare function registerMcpTool(server: McpServer, name: string, config: any, handler: (...args: any[]) => any): void;
43
- export declare function registerHubSpotTools(server: McpServer): void;
44
- export declare function createMcpServer(): McpServer;
45
- export declare function runMcpServer(): Promise<void>;
44
+ export declare function registerHubSpotTools(server: McpServer, surface?: McpSurfaceProfile): void;
45
+ export declare function getMcpToolCatalog(): McpToolCatalogEntry[];
46
+ export declare function createMcpServer(surface?: McpSurfaceProfile): McpServer;
47
+ export declare function runMcpServer(surface?: McpSurfaceProfile): Promise<void>;
@@ -10,6 +10,9 @@ import { resolvePortalContext, enrichListResponse, enrichRecordUrl, enrichCustom
10
10
  import { registerHubspotCompatTools } from "./compat-hubspot.js";
11
11
  import { registerExtensionTools } from "./ext-tools.js";
12
12
  import { registerHubspotModuleTools } from "./hubspot-modules.js";
13
+ import { classifyToolDomain, classifyToolRisk, isToolAllowed, parseMcpSurface, surfacesForTool, } from "./profiles.js";
14
+ let activeRegistrationSurface = "full";
15
+ const toolCatalog = new Map();
13
16
  export const baseArgsSchema = {
14
17
  profile: z.string().min(1).optional(),
15
18
  force: z.boolean().optional(),
@@ -113,6 +116,15 @@ export async function executeTool(args, fn) {
113
116
  */
114
117
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
115
118
  export function registerMcpTool(server, name, config, handler) {
119
+ toolCatalog.set(name, {
120
+ name,
121
+ description: typeof config?.description === "string" ? config.description : "",
122
+ domain: classifyToolDomain(name),
123
+ risk: classifyToolRisk(name),
124
+ surfaces: surfacesForTool(name),
125
+ });
126
+ if (!isToolAllowed(name, activeRegistrationSurface))
127
+ return;
116
128
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
129
  const wrapped = (...handlerArgs) => {
118
130
  // AsyncLocalStorage scopes toolName to this invocation's async chain.
@@ -241,7 +253,8 @@ function registerStandardObjectTools(server, objectType) {
241
253
  inputSchema: { ...baseArgsSchema, data: z.record(z.string(), z.unknown()) },
242
254
  }, (args) => executeTool(args, (ctx, client) => maybeWrite(ctx, client, "POST", `/crm/v3/objects/${objectType}/batch/archive`, args.data)));
243
255
  }
244
- export function registerHubSpotTools(server) {
256
+ export function registerHubSpotTools(server, surface = "full") {
257
+ activeRegistrationSurface = surface;
245
258
  for (const objectType of OBJECT_COMMAND_TYPES) {
246
259
  registerStandardObjectTools(server, objectType);
247
260
  }
@@ -786,13 +799,17 @@ export function registerHubSpotTools(server) {
786
799
  return maybeWrite(ctx, client, "PATCH", `/crm/v3/properties/${objectTypeSegment}/groups/${groupNameSegment}`, args.data);
787
800
  }));
788
801
  }
789
- export function createMcpServer() {
802
+ export function getMcpToolCatalog() {
803
+ return [...toolCatalog.values()].sort((a, b) => a.name.localeCompare(b.name));
804
+ }
805
+ export function createMcpServer(surface = "full") {
790
806
  const server = new McpServer({ name: "hscli", version: "0.1.0" });
791
- registerHubSpotTools(server);
807
+ registerHubSpotTools(server, surface);
792
808
  return server;
793
809
  }
794
- export async function runMcpServer() {
795
- const server = createMcpServer();
810
+ export async function runMcpServer(surface) {
811
+ const selectedSurface = surface ?? parseMcpSurface(process.env.HSCLI_MCP_SURFACE, "minimal");
812
+ const server = createMcpServer(selectedSurface);
796
813
  const transport = new StdioServerTransport();
797
814
  await server.connect(transport);
798
815
  }