@revfleet/hscli 0.5.3
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 +466 -0
- package/LICENSE +21 -0
- package/README.md +287 -0
- package/SECURITY.md +68 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.js +192 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/account/index.d.ts +3 -0
- package/dist/commands/account/index.js +65 -0
- package/dist/commands/account/index.js.map +1 -0
- package/dist/commands/api/index.d.ts +3 -0
- package/dist/commands/api/index.js +35 -0
- package/dist/commands/api/index.js.map +1 -0
- package/dist/commands/auth/index.d.ts +3 -0
- package/dist/commands/auth/index.js +229 -0
- package/dist/commands/auth/index.js.map +1 -0
- package/dist/commands/automation/index.d.ts +3 -0
- package/dist/commands/automation/index.js +119 -0
- package/dist/commands/automation/index.js.map +1 -0
- package/dist/commands/cms/blog-settings.d.ts +3 -0
- package/dist/commands/cms/blog-settings.js +70 -0
- package/dist/commands/cms/blog-settings.js.map +1 -0
- package/dist/commands/cms/content-ops.d.ts +13 -0
- package/dist/commands/cms/content-ops.js +262 -0
- package/dist/commands/cms/content-ops.js.map +1 -0
- package/dist/commands/cms/hubdb.d.ts +3 -0
- package/dist/commands/cms/hubdb.js +55 -0
- package/dist/commands/cms/hubdb.js.map +1 -0
- package/dist/commands/cms/index.d.ts +3 -0
- package/dist/commands/cms/index.js +119 -0
- package/dist/commands/cms/index.js.map +1 -0
- package/dist/commands/cms/source-code.d.ts +3 -0
- package/dist/commands/cms/source-code.js +101 -0
- package/dist/commands/cms/source-code.js.map +1 -0
- package/dist/commands/communication-preferences/index.d.ts +3 -0
- package/dist/commands/communication-preferences/index.js +107 -0
- package/dist/commands/communication-preferences/index.js.map +1 -0
- package/dist/commands/conversations/index.d.ts +3 -0
- package/dist/commands/conversations/index.js +233 -0
- package/dist/commands/conversations/index.js.map +1 -0
- package/dist/commands/crm/associations.d.ts +3 -0
- package/dist/commands/crm/associations.js +180 -0
- package/dist/commands/crm/associations.js.map +1 -0
- package/dist/commands/crm/cards.d.ts +3 -0
- package/dist/commands/crm/cards.js +72 -0
- package/dist/commands/crm/cards.js.map +1 -0
- package/dist/commands/crm/carts.d.ts +3 -0
- package/dist/commands/crm/carts.js +5 -0
- package/dist/commands/crm/carts.js.map +1 -0
- package/dist/commands/crm/communications.d.ts +3 -0
- package/dist/commands/crm/communications.js +5 -0
- package/dist/commands/crm/communications.js.map +1 -0
- package/dist/commands/crm/companies.d.ts +3 -0
- package/dist/commands/crm/companies.js +5 -0
- package/dist/commands/crm/companies.js.map +1 -0
- package/dist/commands/crm/contacts.d.ts +3 -0
- package/dist/commands/crm/contacts.js +5 -0
- package/dist/commands/crm/contacts.js.map +1 -0
- package/dist/commands/crm/custom-objects.d.ts +3 -0
- package/dist/commands/crm/custom-objects.js +83 -0
- package/dist/commands/crm/custom-objects.js.map +1 -0
- package/dist/commands/crm/dated.d.ts +9 -0
- package/dist/commands/crm/dated.js +247 -0
- package/dist/commands/crm/dated.js.map +1 -0
- package/dist/commands/crm/deals.d.ts +3 -0
- package/dist/commands/crm/deals.js +5 -0
- package/dist/commands/crm/deals.js.map +1 -0
- package/dist/commands/crm/describe.d.ts +3 -0
- package/dist/commands/crm/describe.js +89 -0
- package/dist/commands/crm/describe.js.map +1 -0
- package/dist/commands/crm/discounts.d.ts +3 -0
- package/dist/commands/crm/discounts.js +5 -0
- package/dist/commands/crm/discounts.js.map +1 -0
- package/dist/commands/crm/engagements.d.ts +3 -0
- package/dist/commands/crm/engagements.js +8 -0
- package/dist/commands/crm/engagements.js.map +1 -0
- package/dist/commands/crm/fees.d.ts +3 -0
- package/dist/commands/crm/fees.js +5 -0
- package/dist/commands/crm/fees.js.map +1 -0
- package/dist/commands/crm/goals.d.ts +3 -0
- package/dist/commands/crm/goals.js +30 -0
- package/dist/commands/crm/goals.js.map +1 -0
- package/dist/commands/crm/imports.d.ts +3 -0
- package/dist/commands/crm/imports.js +45 -0
- package/dist/commands/crm/imports.js.map +1 -0
- package/dist/commands/crm/index.d.ts +3 -0
- package/dist/commands/crm/index.js +64 -0
- package/dist/commands/crm/index.js.map +1 -0
- package/dist/commands/crm/invoices.d.ts +3 -0
- package/dist/commands/crm/invoices.js +5 -0
- package/dist/commands/crm/invoices.js.map +1 -0
- package/dist/commands/crm/leads.d.ts +3 -0
- package/dist/commands/crm/leads.js +5 -0
- package/dist/commands/crm/leads.js.map +1 -0
- package/dist/commands/crm/line-items.d.ts +3 -0
- package/dist/commands/crm/line-items.js +5 -0
- package/dist/commands/crm/line-items.js.map +1 -0
- package/dist/commands/crm/orders.d.ts +3 -0
- package/dist/commands/crm/orders.js +5 -0
- package/dist/commands/crm/orders.js.map +1 -0
- package/dist/commands/crm/owners.d.ts +3 -0
- package/dist/commands/crm/owners.js +22 -0
- package/dist/commands/crm/owners.js.map +1 -0
- package/dist/commands/crm/payments.d.ts +3 -0
- package/dist/commands/crm/payments.js +5 -0
- package/dist/commands/crm/payments.js.map +1 -0
- package/dist/commands/crm/pipelines.d.ts +3 -0
- package/dist/commands/crm/pipelines.js +70 -0
- package/dist/commands/crm/pipelines.js.map +1 -0
- package/dist/commands/crm/products.d.ts +3 -0
- package/dist/commands/crm/products.js +5 -0
- package/dist/commands/crm/products.js.map +1 -0
- package/dist/commands/crm/properties.d.ts +3 -0
- package/dist/commands/crm/properties.js +103 -0
- package/dist/commands/crm/properties.js.map +1 -0
- package/dist/commands/crm/quotes.d.ts +3 -0
- package/dist/commands/crm/quotes.js +5 -0
- package/dist/commands/crm/quotes.js.map +1 -0
- package/dist/commands/crm/shared.d.ts +17 -0
- package/dist/commands/crm/shared.js +256 -0
- package/dist/commands/crm/shared.js.map +1 -0
- package/dist/commands/crm/subscriptions.d.ts +3 -0
- package/dist/commands/crm/subscriptions.js +5 -0
- package/dist/commands/crm/subscriptions.js.map +1 -0
- package/dist/commands/crm/sync.d.ts +3 -0
- package/dist/commands/crm/sync.js +116 -0
- package/dist/commands/crm/sync.js.map +1 -0
- package/dist/commands/crm/taxes.d.ts +3 -0
- package/dist/commands/crm/taxes.js +5 -0
- package/dist/commands/crm/taxes.js.map +1 -0
- package/dist/commands/crm/tickets.d.ts +3 -0
- package/dist/commands/crm/tickets.js +5 -0
- package/dist/commands/crm/tickets.js.map +1 -0
- package/dist/commands/crm/users.d.ts +3 -0
- package/dist/commands/crm/users.js +5 -0
- package/dist/commands/crm/users.js.map +1 -0
- package/dist/commands/doctor/index.d.ts +3 -0
- package/dist/commands/doctor/index.js +232 -0
- package/dist/commands/doctor/index.js.map +1 -0
- package/dist/commands/domains/shared.d.ts +13 -0
- package/dist/commands/domains/shared.js +56 -0
- package/dist/commands/domains/shared.js.map +1 -0
- package/dist/commands/email-events/index.d.ts +3 -0
- package/dist/commands/email-events/index.js +77 -0
- package/dist/commands/email-events/index.js.map +1 -0
- package/dist/commands/events/index.d.ts +3 -0
- package/dist/commands/events/index.js +80 -0
- package/dist/commands/events/index.js.map +1 -0
- package/dist/commands/exports/index.d.ts +3 -0
- package/dist/commands/exports/index.js +45 -0
- package/dist/commands/exports/index.js.map +1 -0
- package/dist/commands/extensions/index.d.ts +3 -0
- package/dist/commands/extensions/index.js +118 -0
- package/dist/commands/extensions/index.js.map +1 -0
- package/dist/commands/feature-flags/index.d.ts +3 -0
- package/dist/commands/feature-flags/index.js +65 -0
- package/dist/commands/feature-flags/index.js.map +1 -0
- package/dist/commands/files/folders.d.ts +3 -0
- package/dist/commands/files/folders.js +74 -0
- package/dist/commands/files/folders.js.map +1 -0
- package/dist/commands/files/index.d.ts +3 -0
- package/dist/commands/files/index.js +30 -0
- package/dist/commands/files/index.js.map +1 -0
- package/dist/commands/forms/index.d.ts +3 -0
- package/dist/commands/forms/index.js +37 -0
- package/dist/commands/forms/index.js.map +1 -0
- package/dist/commands/integrations/index.d.ts +3 -0
- package/dist/commands/integrations/index.js +64 -0
- package/dist/commands/integrations/index.js.map +1 -0
- package/dist/commands/integrators/index.d.ts +3 -0
- package/dist/commands/integrators/index.js +79 -0
- package/dist/commands/integrators/index.js.map +1 -0
- package/dist/commands/legacy/index.d.ts +13 -0
- package/dist/commands/legacy/index.js +254 -0
- package/dist/commands/legacy/index.js.map +1 -0
- package/dist/commands/legacy-v1/index.d.ts +29 -0
- package/dist/commands/legacy-v1/index.js +568 -0
- package/dist/commands/legacy-v1/index.js.map +1 -0
- package/dist/commands/lists/index.d.ts +3 -0
- package/dist/commands/lists/index.js +148 -0
- package/dist/commands/lists/index.js.map +1 -0
- package/dist/commands/marketing/ads.d.ts +3 -0
- package/dist/commands/marketing/ads.js +45 -0
- package/dist/commands/marketing/ads.js.map +1 -0
- package/dist/commands/marketing/behavioral-events.d.ts +3 -0
- package/dist/commands/marketing/behavioral-events.js +38 -0
- package/dist/commands/marketing/behavioral-events.js.map +1 -0
- package/dist/commands/marketing/events.d.ts +3 -0
- package/dist/commands/marketing/events.js +69 -0
- package/dist/commands/marketing/events.js.map +1 -0
- package/dist/commands/marketing/index.d.ts +3 -0
- package/dist/commands/marketing/index.js +55 -0
- package/dist/commands/marketing/index.js.map +1 -0
- package/dist/commands/marketing/landing-pages.d.ts +3 -0
- package/dist/commands/marketing/landing-pages.js +48 -0
- package/dist/commands/marketing/landing-pages.js.map +1 -0
- package/dist/commands/marketing/seo.d.ts +3 -0
- package/dist/commands/marketing/seo.js +35 -0
- package/dist/commands/marketing/seo.js.map +1 -0
- package/dist/commands/marketing/social.d.ts +3 -0
- package/dist/commands/marketing/social.js +45 -0
- package/dist/commands/marketing/social.js.map +1 -0
- package/dist/commands/marketing/subscriptions.d.ts +3 -0
- package/dist/commands/marketing/subscriptions.js +27 -0
- package/dist/commands/marketing/subscriptions.js.map +1 -0
- package/dist/commands/marketing/transactional.d.ts +3 -0
- package/dist/commands/marketing/transactional.js +30 -0
- package/dist/commands/marketing/transactional.js.map +1 -0
- package/dist/commands/marketing-emails-v1/index.d.ts +3 -0
- package/dist/commands/marketing-emails-v1/index.js +72 -0
- package/dist/commands/marketing-emails-v1/index.js.map +1 -0
- package/dist/commands/mcp.d.ts +2 -0
- package/dist/commands/mcp.js +10 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/media-bridge/index.d.ts +3 -0
- package/dist/commands/media-bridge/index.js +209 -0
- package/dist/commands/media-bridge/index.js.map +1 -0
- package/dist/commands/reporting/index.d.ts +3 -0
- package/dist/commands/reporting/index.js +73 -0
- package/dist/commands/reporting/index.js.map +1 -0
- package/dist/commands/sales/calling.d.ts +3 -0
- package/dist/commands/sales/calling.js +32 -0
- package/dist/commands/sales/calling.js.map +1 -0
- package/dist/commands/sales/index.d.ts +3 -0
- package/dist/commands/sales/index.js +10 -0
- package/dist/commands/sales/index.js.map +1 -0
- package/dist/commands/sales/meetings.d.ts +3 -0
- package/dist/commands/sales/meetings.js +37 -0
- package/dist/commands/sales/meetings.js.map +1 -0
- package/dist/commands/sales/sequences.d.ts +3 -0
- package/dist/commands/sales/sequences.js +78 -0
- package/dist/commands/sales/sequences.js.map +1 -0
- package/dist/commands/seed/cms.d.ts +6 -0
- package/dist/commands/seed/cms.js +204 -0
- package/dist/commands/seed/cms.js.map +1 -0
- package/dist/commands/seed/commerce.d.ts +3 -0
- package/dist/commands/seed/commerce.js +117 -0
- package/dist/commands/seed/commerce.js.map +1 -0
- package/dist/commands/seed/context.d.ts +8 -0
- package/dist/commands/seed/context.js +76 -0
- package/dist/commands/seed/context.js.map +1 -0
- package/dist/commands/seed/crm-core.d.ts +3 -0
- package/dist/commands/seed/crm-core.js +137 -0
- package/dist/commands/seed/crm-core.js.map +1 -0
- package/dist/commands/seed/data.d.ts +73 -0
- package/dist/commands/seed/data.js +49 -0
- package/dist/commands/seed/data.js.map +1 -0
- package/dist/commands/seed/engagements.d.ts +3 -0
- package/dist/commands/seed/engagements.js +89 -0
- package/dist/commands/seed/engagements.js.map +1 -0
- package/dist/commands/seed/index.d.ts +3 -0
- package/dist/commands/seed/index.js +95 -0
- package/dist/commands/seed/index.js.map +1 -0
- package/dist/commands/seed/infra.d.ts +6 -0
- package/dist/commands/seed/infra.js +163 -0
- package/dist/commands/seed/infra.js.map +1 -0
- package/dist/commands/seed/marketing.d.ts +3 -0
- package/dist/commands/seed/marketing.js +172 -0
- package/dist/commands/seed/marketing.js.map +1 -0
- package/dist/commands/seed/shared.d.ts +8 -0
- package/dist/commands/seed/shared.js +37 -0
- package/dist/commands/seed/shared.js.map +1 -0
- package/dist/commands/seed/types.d.ts +44 -0
- package/dist/commands/seed/types.js +2 -0
- package/dist/commands/seed/types.js.map +1 -0
- package/dist/commands/service/chatflows.d.ts +3 -0
- package/dist/commands/service/chatflows.js +30 -0
- package/dist/commands/service/chatflows.js.map +1 -0
- package/dist/commands/service/index.d.ts +3 -0
- package/dist/commands/service/index.js +25 -0
- package/dist/commands/service/index.js.map +1 -0
- package/dist/commands/service/knowledge-base.d.ts +3 -0
- package/dist/commands/service/knowledge-base.js +19 -0
- package/dist/commands/service/knowledge-base.js.map +1 -0
- package/dist/commands/service/pipelines.d.ts +3 -0
- package/dist/commands/service/pipelines.js +36 -0
- package/dist/commands/service/pipelines.js.map +1 -0
- package/dist/commands/settings/index.d.ts +3 -0
- package/dist/commands/settings/index.js +149 -0
- package/dist/commands/settings/index.js.map +1 -0
- package/dist/commands/site-search/index.d.ts +3 -0
- package/dist/commands/site-search/index.js +36 -0
- package/dist/commands/site-search/index.js.map +1 -0
- package/dist/commands/timeline/index.d.ts +3 -0
- package/dist/commands/timeline/index.js +32 -0
- package/dist/commands/timeline/index.js.map +1 -0
- package/dist/commands/webhooks/index.d.ts +3 -0
- package/dist/commands/webhooks/index.js +41 -0
- package/dist/commands/webhooks/index.js.map +1 -0
- package/dist/commands/workflows/index.d.ts +3 -0
- package/dist/commands/workflows/index.js +13 -0
- package/dist/commands/workflows/index.js.map +1 -0
- package/dist/core/auth.d.ts +33 -0
- package/dist/core/auth.js +137 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/capabilities.d.ts +60 -0
- package/dist/core/capabilities.js +559 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/http.d.ts +47 -0
- package/dist/core/http.js +433 -0
- package/dist/core/http.js.map +1 -0
- package/dist/core/output.d.ts +23 -0
- package/dist/core/output.js +197 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/permissions.d.ts +9 -0
- package/dist/core/permissions.js +27 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/plugins.d.ts +42 -0
- package/dist/core/plugins.js +94 -0
- package/dist/core/plugins.js.map +1 -0
- package/dist/core/policy.d.ts +2 -0
- package/dist/core/policy.js +38 -0
- package/dist/core/policy.js.map +1 -0
- package/dist/core/schema-cache.d.ts +56 -0
- package/dist/core/schema-cache.js +338 -0
- package/dist/core/schema-cache.js.map +1 -0
- package/dist/core/schemas.d.ts +96 -0
- package/dist/core/schemas.js +104 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/urls.d.ts +50 -0
- package/dist/core/urls.js +122 -0
- package/dist/core/urls.js.map +1 -0
- package/dist/core/vault.d.ts +37 -0
- package/dist/core/vault.js +143 -0
- package/dist/core/vault.js.map +1 -0
- package/dist/mcp/server.d.ts +5 -0
- package/dist/mcp/server.js +680 -0
- package/dist/mcp/server.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema-cache.js","sourceRoot":"","sources":["../../src/core/schema-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for HubSpot API response validation.
|
|
3
|
+
*
|
|
4
|
+
* These schemas validate response shapes to detect API drift.
|
|
5
|
+
* By default, validation failures log a warning but don't break the CLI.
|
|
6
|
+
* Set HSCLI_STRICT_SCHEMAS=1 to throw on validation errors.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
export declare const HubSpotRecord: z.ZodObject<{
|
|
10
|
+
id: z.ZodString;
|
|
11
|
+
properties: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNull]>>;
|
|
12
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
13
|
+
updatedAt: z.ZodOptional<z.ZodString>;
|
|
14
|
+
archived: z.ZodOptional<z.ZodBoolean>;
|
|
15
|
+
}, z.core.$loose>;
|
|
16
|
+
export declare const HubSpotPaging: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
18
|
+
after: z.ZodString;
|
|
19
|
+
}, z.core.$strip>>;
|
|
20
|
+
}, z.core.$loose>>;
|
|
21
|
+
export declare const HubSpotListResponse: z.ZodObject<{
|
|
22
|
+
results: z.ZodArray<z.ZodUnknown>;
|
|
23
|
+
paging: z.ZodOptional<z.ZodObject<{
|
|
24
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
25
|
+
after: z.ZodString;
|
|
26
|
+
}, z.core.$strip>>;
|
|
27
|
+
}, z.core.$loose>>;
|
|
28
|
+
}, z.core.$loose>;
|
|
29
|
+
export declare const HubSpotSearchResponse: z.ZodObject<{
|
|
30
|
+
total: z.ZodNumber;
|
|
31
|
+
results: z.ZodArray<z.ZodUnknown>;
|
|
32
|
+
paging: z.ZodOptional<z.ZodObject<{
|
|
33
|
+
next: z.ZodOptional<z.ZodObject<{
|
|
34
|
+
after: z.ZodString;
|
|
35
|
+
}, z.core.$strip>>;
|
|
36
|
+
}, z.core.$loose>>;
|
|
37
|
+
}, z.core.$loose>;
|
|
38
|
+
export declare const HubSpotOwner: z.ZodObject<{
|
|
39
|
+
id: z.ZodString;
|
|
40
|
+
email: z.ZodOptional<z.ZodString>;
|
|
41
|
+
firstName: z.ZodOptional<z.ZodString>;
|
|
42
|
+
lastName: z.ZodOptional<z.ZodString>;
|
|
43
|
+
userId: z.ZodOptional<z.ZodNumber>;
|
|
44
|
+
}, z.core.$loose>;
|
|
45
|
+
export declare const HubSpotPipelineStage: z.ZodObject<{
|
|
46
|
+
id: z.ZodString;
|
|
47
|
+
label: z.ZodString;
|
|
48
|
+
}, z.core.$loose>;
|
|
49
|
+
export declare const HubSpotPipeline: z.ZodObject<{
|
|
50
|
+
id: z.ZodString;
|
|
51
|
+
label: z.ZodString;
|
|
52
|
+
stages: z.ZodArray<z.ZodObject<{
|
|
53
|
+
id: z.ZodString;
|
|
54
|
+
label: z.ZodString;
|
|
55
|
+
}, z.core.$loose>>;
|
|
56
|
+
}, z.core.$loose>;
|
|
57
|
+
export declare const HubSpotProperty: z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
label: z.ZodString;
|
|
60
|
+
type: z.ZodString;
|
|
61
|
+
fieldType: z.ZodString;
|
|
62
|
+
groupName: z.ZodString;
|
|
63
|
+
}, z.core.$loose>;
|
|
64
|
+
export declare const HubSpotAssociationType: z.ZodObject<{
|
|
65
|
+
category: z.ZodString;
|
|
66
|
+
typeId: z.ZodNumber;
|
|
67
|
+
label: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, z.core.$loose>;
|
|
69
|
+
export declare const HubSpotAssociation: z.ZodObject<{
|
|
70
|
+
toObjectId: z.ZodNumber;
|
|
71
|
+
associationTypes: z.ZodArray<z.ZodObject<{
|
|
72
|
+
category: z.ZodString;
|
|
73
|
+
typeId: z.ZodNumber;
|
|
74
|
+
label: z.ZodOptional<z.ZodString>;
|
|
75
|
+
}, z.core.$loose>>;
|
|
76
|
+
}, z.core.$loose>;
|
|
77
|
+
export declare const HubSpotError: z.ZodObject<{
|
|
78
|
+
status: z.ZodString;
|
|
79
|
+
message: z.ZodString;
|
|
80
|
+
correlationId: z.ZodOptional<z.ZodString>;
|
|
81
|
+
category: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$loose>;
|
|
83
|
+
export declare const AccountInfo: z.ZodObject<{
|
|
84
|
+
portalId: z.ZodNumber;
|
|
85
|
+
uiDomain: z.ZodOptional<z.ZodString>;
|
|
86
|
+
timeZone: z.ZodOptional<z.ZodString>;
|
|
87
|
+
companyCurrency: z.ZodOptional<z.ZodString>;
|
|
88
|
+
}, z.core.$loose>;
|
|
89
|
+
/**
|
|
90
|
+
* Validate an API response against a Zod schema.
|
|
91
|
+
*
|
|
92
|
+
* - On success: returns the parsed (and passthrough'd) data.
|
|
93
|
+
* - On failure (non-strict): logs a warning and returns raw data as-is.
|
|
94
|
+
* - On failure (strict / HSCLI_STRICT_SCHEMAS=1): throws CliError.
|
|
95
|
+
*/
|
|
96
|
+
export declare function parseResponse<T>(schema: z.ZodType<T>, data: unknown, context?: string): T;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Zod schemas for HubSpot API response validation.
|
|
3
|
+
*
|
|
4
|
+
* These schemas validate response shapes to detect API drift.
|
|
5
|
+
* By default, validation failures log a warning but don't break the CLI.
|
|
6
|
+
* Set HSCLI_STRICT_SCHEMAS=1 to throw on validation errors.
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
import { CliError } from "./output.js";
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
// Shared primitives
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
export const HubSpotRecord = z.object({
|
|
14
|
+
id: z.string(),
|
|
15
|
+
properties: z.record(z.string(), z.union([z.string(), z.null()])),
|
|
16
|
+
createdAt: z.string().optional(),
|
|
17
|
+
updatedAt: z.string().optional(),
|
|
18
|
+
archived: z.boolean().optional(),
|
|
19
|
+
}).passthrough();
|
|
20
|
+
export const HubSpotPaging = z.object({
|
|
21
|
+
next: z.object({ after: z.string() }).optional(),
|
|
22
|
+
}).passthrough().optional();
|
|
23
|
+
export const HubSpotListResponse = z.object({
|
|
24
|
+
results: z.array(z.unknown()),
|
|
25
|
+
paging: HubSpotPaging,
|
|
26
|
+
}).passthrough();
|
|
27
|
+
export const HubSpotSearchResponse = z.object({
|
|
28
|
+
total: z.number(),
|
|
29
|
+
results: z.array(z.unknown()),
|
|
30
|
+
paging: HubSpotPaging,
|
|
31
|
+
}).passthrough();
|
|
32
|
+
export const HubSpotOwner = z.object({
|
|
33
|
+
id: z.string(),
|
|
34
|
+
email: z.string().optional(),
|
|
35
|
+
firstName: z.string().optional(),
|
|
36
|
+
lastName: z.string().optional(),
|
|
37
|
+
userId: z.number().optional(),
|
|
38
|
+
}).passthrough();
|
|
39
|
+
export const HubSpotPipelineStage = z.object({
|
|
40
|
+
id: z.string(),
|
|
41
|
+
label: z.string(),
|
|
42
|
+
}).passthrough();
|
|
43
|
+
export const HubSpotPipeline = z.object({
|
|
44
|
+
id: z.string(),
|
|
45
|
+
label: z.string(),
|
|
46
|
+
stages: z.array(HubSpotPipelineStage),
|
|
47
|
+
}).passthrough();
|
|
48
|
+
export const HubSpotProperty = z.object({
|
|
49
|
+
name: z.string(),
|
|
50
|
+
label: z.string(),
|
|
51
|
+
type: z.string(),
|
|
52
|
+
fieldType: z.string(),
|
|
53
|
+
groupName: z.string(),
|
|
54
|
+
}).passthrough();
|
|
55
|
+
export const HubSpotAssociationType = z.object({
|
|
56
|
+
category: z.string(),
|
|
57
|
+
typeId: z.number(),
|
|
58
|
+
label: z.string().optional(),
|
|
59
|
+
}).passthrough();
|
|
60
|
+
export const HubSpotAssociation = z.object({
|
|
61
|
+
toObjectId: z.number(),
|
|
62
|
+
associationTypes: z.array(HubSpotAssociationType),
|
|
63
|
+
}).passthrough();
|
|
64
|
+
export const HubSpotError = z.object({
|
|
65
|
+
status: z.string(),
|
|
66
|
+
message: z.string(),
|
|
67
|
+
correlationId: z.string().optional(),
|
|
68
|
+
category: z.string().optional(),
|
|
69
|
+
}).passthrough();
|
|
70
|
+
export const AccountInfo = z.object({
|
|
71
|
+
portalId: z.number(),
|
|
72
|
+
uiDomain: z.string().optional(),
|
|
73
|
+
timeZone: z.string().optional(),
|
|
74
|
+
companyCurrency: z.string().optional(),
|
|
75
|
+
}).passthrough();
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
// parseResponse helper
|
|
78
|
+
// ---------------------------------------------------------------------------
|
|
79
|
+
/**
|
|
80
|
+
* Validate an API response against a Zod schema.
|
|
81
|
+
*
|
|
82
|
+
* - On success: returns the parsed (and passthrough'd) data.
|
|
83
|
+
* - On failure (non-strict): logs a warning and returns raw data as-is.
|
|
84
|
+
* - On failure (strict / HSCLI_STRICT_SCHEMAS=1): throws CliError.
|
|
85
|
+
*/
|
|
86
|
+
export function parseResponse(schema, data, context) {
|
|
87
|
+
const result = schema.safeParse(data);
|
|
88
|
+
if (result.success) {
|
|
89
|
+
return result.data;
|
|
90
|
+
}
|
|
91
|
+
const label = context ? ` (${context})` : "";
|
|
92
|
+
const issues = result.error.issues.map((i) => ` ${i.path.join(".")}: ${i.message}`).join("\n");
|
|
93
|
+
const strict = isStrictSchemas();
|
|
94
|
+
if (strict) {
|
|
95
|
+
throw new CliError("SCHEMA_VALIDATION_ERROR", `API response validation failed${label}:\n${issues}`);
|
|
96
|
+
}
|
|
97
|
+
console.warn(`[hubcli] Schema warning${label}:\n${issues}`);
|
|
98
|
+
return data;
|
|
99
|
+
}
|
|
100
|
+
function isStrictSchemas() {
|
|
101
|
+
const v = process.env.HSCLI_STRICT_SCHEMAS?.trim().toLowerCase();
|
|
102
|
+
return v === "1" || v === "true" || v === "yes";
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface PortalContext {
|
|
2
|
+
portalId: string;
|
|
3
|
+
uiDomain: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Resolve portal context (portalId + uiDomain) from stored profile.
|
|
7
|
+
* Returns null if either value is missing — no API calls are made.
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolvePortalContext(profile: string): PortalContext | null;
|
|
10
|
+
/**
|
|
11
|
+
* Get the HubSpot object type ID for a standard object type name.
|
|
12
|
+
* Returns undefined for custom objects — those already carry their own type ID.
|
|
13
|
+
*/
|
|
14
|
+
export declare function getObjectTypeId(objectTypeName: string): string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Build a URL to a CRM record in the HubSpot web UI.
|
|
17
|
+
*
|
|
18
|
+
* Standard objects: https://app-eu1.hubspot.com/contacts/147975758/record/0-1/12345
|
|
19
|
+
* Custom objects: https://app-eu1.hubspot.com/contacts/147975758/record/2-199622513/12345
|
|
20
|
+
*/
|
|
21
|
+
export declare function buildRecordUrl(portal: PortalContext, objectTypeId: string, recordId: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Build a URL to the object-type settings page for a custom object.
|
|
24
|
+
*
|
|
25
|
+
* Example: https://app-eu1.hubspot.com/object-type-settings/147975758/object/2-199622513
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildObjectSettingsUrl(portal: PortalContext, objectTypeId: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Build a URL to the pipeline board in the HubSpot web UI.
|
|
30
|
+
*
|
|
31
|
+
* Example: https://app-eu1.hubspot.com/contacts/147975758/objects/0-3/views/all/board
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildPipelineUrl(portal: PortalContext, objectType: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Enrich a single CRM record object with a `url` field.
|
|
36
|
+
* If the record already has a `url`, it is left untouched.
|
|
37
|
+
*/
|
|
38
|
+
export declare function enrichRecordUrl(record: Record<string, unknown>, portal: PortalContext | null, objectTypeName: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Enrich a single custom-object record with a `url` field.
|
|
41
|
+
*/
|
|
42
|
+
export declare function enrichCustomRecordUrl(record: Record<string, unknown>, portal: PortalContext | null, objectTypeId: string): void;
|
|
43
|
+
/**
|
|
44
|
+
* Enrich a list response (with `results` array) by adding `url` to each record.
|
|
45
|
+
*/
|
|
46
|
+
export declare function enrichListResponse(data: unknown, portal: PortalContext | null, objectTypeName: string): void;
|
|
47
|
+
/**
|
|
48
|
+
* Enrich a list response for custom objects.
|
|
49
|
+
*/
|
|
50
|
+
export declare function enrichCustomListResponse(data: unknown, portal: PortalContext | null, objectTypeId: string): void;
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { getProfile } from "./auth.js";
|
|
2
|
+
/** Standard CRM object type IDs used in HubSpot web UI URLs. */
|
|
3
|
+
const OBJECT_TYPE_IDS = {
|
|
4
|
+
contacts: "0-1",
|
|
5
|
+
companies: "0-2",
|
|
6
|
+
deals: "0-3",
|
|
7
|
+
tickets: "0-5",
|
|
8
|
+
notes: "0-46",
|
|
9
|
+
tasks: "0-27",
|
|
10
|
+
calls: "0-48",
|
|
11
|
+
emails: "0-49",
|
|
12
|
+
meetings: "0-47",
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Resolve portal context (portalId + uiDomain) from stored profile.
|
|
16
|
+
* Returns null if either value is missing — no API calls are made.
|
|
17
|
+
*/
|
|
18
|
+
export function resolvePortalContext(profile) {
|
|
19
|
+
try {
|
|
20
|
+
const data = getProfile(profile);
|
|
21
|
+
if (!data.portalId || !data.uiDomain)
|
|
22
|
+
return null;
|
|
23
|
+
return { portalId: data.portalId, uiDomain: data.uiDomain };
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Get the HubSpot object type ID for a standard object type name.
|
|
31
|
+
* Returns undefined for custom objects — those already carry their own type ID.
|
|
32
|
+
*/
|
|
33
|
+
export function getObjectTypeId(objectTypeName) {
|
|
34
|
+
return OBJECT_TYPE_IDS[objectTypeName.toLowerCase()];
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Build a URL to a CRM record in the HubSpot web UI.
|
|
38
|
+
*
|
|
39
|
+
* Standard objects: https://app-eu1.hubspot.com/contacts/147975758/record/0-1/12345
|
|
40
|
+
* Custom objects: https://app-eu1.hubspot.com/contacts/147975758/record/2-199622513/12345
|
|
41
|
+
*/
|
|
42
|
+
export function buildRecordUrl(portal, objectTypeId, recordId) {
|
|
43
|
+
return `https://${portal.uiDomain}/contacts/${portal.portalId}/record/${objectTypeId}/${recordId}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Build a URL to the object-type settings page for a custom object.
|
|
47
|
+
*
|
|
48
|
+
* Example: https://app-eu1.hubspot.com/object-type-settings/147975758/object/2-199622513
|
|
49
|
+
*/
|
|
50
|
+
export function buildObjectSettingsUrl(portal, objectTypeId) {
|
|
51
|
+
return `https://${portal.uiDomain}/object-type-settings/${portal.portalId}/object/${objectTypeId}`;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Build a URL to the pipeline board in the HubSpot web UI.
|
|
55
|
+
*
|
|
56
|
+
* Example: https://app-eu1.hubspot.com/contacts/147975758/objects/0-3/views/all/board
|
|
57
|
+
*/
|
|
58
|
+
export function buildPipelineUrl(portal, objectType) {
|
|
59
|
+
const typeId = getObjectTypeId(objectType) ?? objectType;
|
|
60
|
+
return `https://${portal.uiDomain}/contacts/${portal.portalId}/objects/${typeId}/views/all/board`;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Enrich a single CRM record object with a `url` field.
|
|
64
|
+
* If the record already has a `url`, it is left untouched.
|
|
65
|
+
*/
|
|
66
|
+
export function enrichRecordUrl(record, portal, objectTypeName) {
|
|
67
|
+
if (!portal)
|
|
68
|
+
return;
|
|
69
|
+
if (record.url)
|
|
70
|
+
return; // API-provided URL takes precedence
|
|
71
|
+
const id = record.id ?? record.hs_object_id ?? record.properties?.hs_object_id;
|
|
72
|
+
if (!id)
|
|
73
|
+
return;
|
|
74
|
+
const typeId = getObjectTypeId(objectTypeName);
|
|
75
|
+
if (!typeId)
|
|
76
|
+
return; // Custom objects handled separately
|
|
77
|
+
record.url = buildRecordUrl(portal, typeId, String(id));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Enrich a single custom-object record with a `url` field.
|
|
81
|
+
*/
|
|
82
|
+
export function enrichCustomRecordUrl(record, portal, objectTypeId) {
|
|
83
|
+
if (!portal)
|
|
84
|
+
return;
|
|
85
|
+
if (record.url)
|
|
86
|
+
return;
|
|
87
|
+
const id = record.id ?? record.hs_object_id ?? record.properties?.hs_object_id;
|
|
88
|
+
if (!id)
|
|
89
|
+
return;
|
|
90
|
+
record.url = buildRecordUrl(portal, objectTypeId, String(id));
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Enrich a list response (with `results` array) by adding `url` to each record.
|
|
94
|
+
*/
|
|
95
|
+
export function enrichListResponse(data, portal, objectTypeName) {
|
|
96
|
+
if (!portal || !data || typeof data !== "object")
|
|
97
|
+
return;
|
|
98
|
+
const obj = data;
|
|
99
|
+
if (!Array.isArray(obj.results))
|
|
100
|
+
return;
|
|
101
|
+
for (const record of obj.results) {
|
|
102
|
+
if (record && typeof record === "object") {
|
|
103
|
+
enrichRecordUrl(record, portal, objectTypeName);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Enrich a list response for custom objects.
|
|
109
|
+
*/
|
|
110
|
+
export function enrichCustomListResponse(data, portal, objectTypeId) {
|
|
111
|
+
if (!portal || !data || typeof data !== "object")
|
|
112
|
+
return;
|
|
113
|
+
const obj = data;
|
|
114
|
+
if (!Array.isArray(obj.results))
|
|
115
|
+
return;
|
|
116
|
+
for (const record of obj.results) {
|
|
117
|
+
if (record && typeof record === "object") {
|
|
118
|
+
enrichCustomRecordUrl(record, portal, objectTypeId);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=urls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"urls.js","sourceRoot":"","sources":["../../src/core/urls.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Encrypt plaintext data with a passphrase.
|
|
3
|
+
* Returns: salt(32) + iv(16) + authTag(16) + ciphertext
|
|
4
|
+
*/
|
|
5
|
+
export declare function encryptVault(data: string, passphrase: string): Buffer;
|
|
6
|
+
/**
|
|
7
|
+
* Decrypt encrypted vault data with a passphrase.
|
|
8
|
+
* Throws on wrong passphrase or tampered data.
|
|
9
|
+
*/
|
|
10
|
+
export declare function decryptVault(encrypted: Buffer, passphrase: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Check if the vault is encrypted (auth.enc exists).
|
|
13
|
+
*/
|
|
14
|
+
export declare function isVaultEncrypted(hubcliHome: string): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Get the vault passphrase from environment.
|
|
17
|
+
* Returns undefined if not set (plain-text mode).
|
|
18
|
+
*/
|
|
19
|
+
export declare function getVaultPassphrase(): string | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Read vault data — plain JSON or encrypted, depending on what exists.
|
|
22
|
+
* Priority: if auth.enc exists and passphrase is available, decrypt it.
|
|
23
|
+
* Otherwise, fall back to auth.json.
|
|
24
|
+
*/
|
|
25
|
+
export declare function readVaultData(hubcliHome: string, passphrase?: string): object;
|
|
26
|
+
/**
|
|
27
|
+
* Write vault data — encrypted if passphrase is provided, plain JSON otherwise.
|
|
28
|
+
*/
|
|
29
|
+
export declare function writeVaultData(hubcliHome: string, data: object, passphrase?: string): void;
|
|
30
|
+
/**
|
|
31
|
+
* Encrypt existing auth.json → auth.enc and remove the plain file.
|
|
32
|
+
*/
|
|
33
|
+
export declare function encryptExistingVault(hubcliHome: string, passphrase: string): void;
|
|
34
|
+
/**
|
|
35
|
+
* Decrypt auth.enc → auth.json and remove the encrypted file.
|
|
36
|
+
*/
|
|
37
|
+
export declare function decryptExistingVault(hubcliHome: string, passphrase: string): void;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Optional encrypted token vault for ~/.hscli/auth.json.
|
|
3
|
+
*
|
|
4
|
+
* Uses AES-256-GCM with PBKDF2 key derivation — Node.js built-in crypto only.
|
|
5
|
+
* Passphrase is read from HSCLI_VAULT_PASSPHRASE env var.
|
|
6
|
+
*
|
|
7
|
+
* File format (auth.enc): salt(32) | iv(16) | authTag(16) | ciphertext
|
|
8
|
+
*/
|
|
9
|
+
import { createCipheriv, createDecipheriv, pbkdf2Sync, randomBytes } from "node:crypto";
|
|
10
|
+
import { readFileSync, writeFileSync, existsSync, unlinkSync } from "node:fs";
|
|
11
|
+
import { join } from "node:path";
|
|
12
|
+
const ALGORITHM = "aes-256-gcm";
|
|
13
|
+
const KEY_LENGTH = 32;
|
|
14
|
+
const IV_LENGTH = 16;
|
|
15
|
+
const SALT_LENGTH = 32;
|
|
16
|
+
const AUTH_TAG_LENGTH = 16;
|
|
17
|
+
const PBKDF2_ITERATIONS = 600_000;
|
|
18
|
+
const PBKDF2_DIGEST = "sha512";
|
|
19
|
+
const AUTH_JSON = "auth.json";
|
|
20
|
+
const AUTH_ENC = "auth.enc";
|
|
21
|
+
function deriveKey(passphrase, salt) {
|
|
22
|
+
return pbkdf2Sync(passphrase, salt, PBKDF2_ITERATIONS, KEY_LENGTH, PBKDF2_DIGEST);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Encrypt plaintext data with a passphrase.
|
|
26
|
+
* Returns: salt(32) + iv(16) + authTag(16) + ciphertext
|
|
27
|
+
*/
|
|
28
|
+
export function encryptVault(data, passphrase) {
|
|
29
|
+
const salt = randomBytes(SALT_LENGTH);
|
|
30
|
+
const iv = randomBytes(IV_LENGTH);
|
|
31
|
+
const key = deriveKey(passphrase, salt);
|
|
32
|
+
const cipher = createCipheriv(ALGORITHM, key, iv);
|
|
33
|
+
const encrypted = Buffer.concat([cipher.update(data, "utf8"), cipher.final()]);
|
|
34
|
+
const authTag = cipher.getAuthTag();
|
|
35
|
+
return Buffer.concat([salt, iv, authTag, encrypted]);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Decrypt encrypted vault data with a passphrase.
|
|
39
|
+
* Throws on wrong passphrase or tampered data.
|
|
40
|
+
*/
|
|
41
|
+
export function decryptVault(encrypted, passphrase) {
|
|
42
|
+
if (encrypted.length < SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH + 1) {
|
|
43
|
+
throw new Error("Encrypted vault data is too short — file may be corrupted.");
|
|
44
|
+
}
|
|
45
|
+
const salt = encrypted.subarray(0, SALT_LENGTH);
|
|
46
|
+
const iv = encrypted.subarray(SALT_LENGTH, SALT_LENGTH + IV_LENGTH);
|
|
47
|
+
const authTag = encrypted.subarray(SALT_LENGTH + IV_LENGTH, SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);
|
|
48
|
+
const ciphertext = encrypted.subarray(SALT_LENGTH + IV_LENGTH + AUTH_TAG_LENGTH);
|
|
49
|
+
const key = deriveKey(passphrase, salt);
|
|
50
|
+
const decipher = createDecipheriv(ALGORITHM, key, iv);
|
|
51
|
+
decipher.setAuthTag(authTag);
|
|
52
|
+
try {
|
|
53
|
+
return Buffer.concat([decipher.update(ciphertext), decipher.final()]).toString("utf8");
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
throw new Error("Decryption failed — wrong passphrase or corrupted vault.");
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if the vault is encrypted (auth.enc exists).
|
|
61
|
+
*/
|
|
62
|
+
export function isVaultEncrypted(hubcliHome) {
|
|
63
|
+
return existsSync(join(hubcliHome, AUTH_ENC));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get the vault passphrase from environment.
|
|
67
|
+
* Returns undefined if not set (plain-text mode).
|
|
68
|
+
*/
|
|
69
|
+
export function getVaultPassphrase() {
|
|
70
|
+
const v = process.env.HSCLI_VAULT_PASSPHRASE?.trim();
|
|
71
|
+
return v || undefined;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Read vault data — plain JSON or encrypted, depending on what exists.
|
|
75
|
+
* Priority: if auth.enc exists and passphrase is available, decrypt it.
|
|
76
|
+
* Otherwise, fall back to auth.json.
|
|
77
|
+
*/
|
|
78
|
+
export function readVaultData(hubcliHome, passphrase) {
|
|
79
|
+
const encPath = join(hubcliHome, AUTH_ENC);
|
|
80
|
+
const jsonPath = join(hubcliHome, AUTH_JSON);
|
|
81
|
+
if (existsSync(encPath)) {
|
|
82
|
+
const pp = passphrase ?? getVaultPassphrase();
|
|
83
|
+
if (!pp) {
|
|
84
|
+
throw new Error("Vault is encrypted but HSCLI_VAULT_PASSPHRASE is not set.");
|
|
85
|
+
}
|
|
86
|
+
const encrypted = readFileSync(encPath);
|
|
87
|
+
const plaintext = decryptVault(encrypted, pp);
|
|
88
|
+
return JSON.parse(plaintext);
|
|
89
|
+
}
|
|
90
|
+
if (existsSync(jsonPath)) {
|
|
91
|
+
return JSON.parse(readFileSync(jsonPath, "utf8"));
|
|
92
|
+
}
|
|
93
|
+
return { profiles: {} };
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Write vault data — encrypted if passphrase is provided, plain JSON otherwise.
|
|
97
|
+
*/
|
|
98
|
+
export function writeVaultData(hubcliHome, data, passphrase) {
|
|
99
|
+
const pp = passphrase ?? getVaultPassphrase();
|
|
100
|
+
const jsonPath = join(hubcliHome, AUTH_JSON);
|
|
101
|
+
const encPath = join(hubcliHome, AUTH_ENC);
|
|
102
|
+
if (pp) {
|
|
103
|
+
const plaintext = JSON.stringify(data, null, 2);
|
|
104
|
+
const encrypted = encryptVault(plaintext, pp);
|
|
105
|
+
writeFileSync(encPath, encrypted);
|
|
106
|
+
// Remove plain-text version for security
|
|
107
|
+
if (existsSync(jsonPath)) {
|
|
108
|
+
unlinkSync(jsonPath);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
writeFileSync(jsonPath, JSON.stringify(data, null, 2), "utf8");
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Encrypt existing auth.json → auth.enc and remove the plain file.
|
|
117
|
+
*/
|
|
118
|
+
export function encryptExistingVault(hubcliHome, passphrase) {
|
|
119
|
+
const jsonPath = join(hubcliHome, AUTH_JSON);
|
|
120
|
+
if (!existsSync(jsonPath)) {
|
|
121
|
+
throw new Error("No auth.json found to encrypt.");
|
|
122
|
+
}
|
|
123
|
+
const data = readFileSync(jsonPath, "utf8");
|
|
124
|
+
const encrypted = encryptVault(data, passphrase);
|
|
125
|
+
writeFileSync(join(hubcliHome, AUTH_ENC), encrypted);
|
|
126
|
+
unlinkSync(jsonPath);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Decrypt auth.enc → auth.json and remove the encrypted file.
|
|
130
|
+
*/
|
|
131
|
+
export function decryptExistingVault(hubcliHome, passphrase) {
|
|
132
|
+
const encPath = join(hubcliHome, AUTH_ENC);
|
|
133
|
+
if (!existsSync(encPath)) {
|
|
134
|
+
throw new Error("No auth.enc found to decrypt.");
|
|
135
|
+
}
|
|
136
|
+
const encrypted = readFileSync(encPath);
|
|
137
|
+
const plaintext = decryptVault(encrypted, passphrase);
|
|
138
|
+
// Validate it's valid JSON
|
|
139
|
+
JSON.parse(plaintext);
|
|
140
|
+
writeFileSync(join(hubcliHome, AUTH_JSON), plaintext, "utf8");
|
|
141
|
+
unlinkSync(encPath);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/core/vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
export declare function resolveProfile(requested?: string): string;
|
|
3
|
+
export declare function registerHubSpotTools(server: McpServer): void;
|
|
4
|
+
export declare function createMcpServer(): McpServer;
|
|
5
|
+
export declare function runMcpServer(): Promise<void>;
|