@revfleet/hscli 0.6.0 → 0.7.1
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 +165 -0
- package/README.md +95 -33
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/audit/index.d.ts +3 -0
- package/dist/commands/audit/index.js +226 -0
- package/dist/commands/audit/index.js.map +1 -0
- package/dist/commands/auth/index.js +3 -4
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/policy/index.d.ts +3 -0
- package/dist/commands/policy/index.js +217 -0
- package/dist/commands/policy/index.js.map +1 -0
- package/dist/commands/trace/index.js +1 -1
- package/dist/commands/trace/index.js.map +1 -1
- package/dist/core/auth.js +8 -4
- package/dist/core/auth.js.map +1 -1
- package/dist/core/http.d.ts +2 -0
- package/dist/core/http.js +58 -14
- package/dist/core/http.js.map +1 -1
- package/dist/core/policy.d.ts +75 -0
- package/dist/core/policy.js +143 -6
- package/dist/core/policy.js.map +1 -1
- package/dist/mcp/server.js +90 -68
- package/dist/mcp/server.js.map +1 -1
- package/docs/policy-templates/business-hours.json +21 -0
- package/docs/policy-templates/change-ticket-required.json +35 -0
- package/docs/policy-templates/compliance-strict.json +36 -0
- package/docs/policy-templates/no-deletes.json +17 -0
- package/docs/policy-templates/read-only.json +17 -0
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,170 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.7.1 - 2026-04-22
|
|
4
|
+
|
|
5
|
+
**Stabilization release.** Hardens v0.7.0 with a test suite, tutorials,
|
|
6
|
+
README updates, and a round of bug fixes surfaced by Codex review —
|
|
7
|
+
including two P1 auth-routing bugs that silently routed users to stale
|
|
8
|
+
plaintext stores.
|
|
9
|
+
|
|
10
|
+
### Fixes (Codex review)
|
|
11
|
+
|
|
12
|
+
- **P1: `getHubcliHomeDir` — auth.enc was not a primary marker.** The
|
|
13
|
+
resolver only checked for `auth.json` to pick `~/.revfleet`, so a user
|
|
14
|
+
who migrated to the new home and encrypted the vault could be silently
|
|
15
|
+
routed back to a stale `~/.hubcli/auth.json`. Now both `auth.json` and
|
|
16
|
+
`auth.enc` anchor a location. ([src/core/auth.ts](src/core/auth.ts))
|
|
17
|
+
- **P1: `auth encrypt` / `auth decrypt` bypassed the home-dir resolver.**
|
|
18
|
+
The commands hard-coded `HSCLI_HOME || ~/.revfleet`, so users still on
|
|
19
|
+
the legacy `~/.hubcli` fallback hit `No auth.json found to encrypt`
|
|
20
|
+
even though their active store existed. Now both commands go through
|
|
21
|
+
`getHubcliHomeDir()`. ([src/commands/auth/index.ts](src/commands/auth/index.ts))
|
|
22
|
+
- **P2: Policy windows evaluated in UTC.** `isWithinWindow` used
|
|
23
|
+
`getUTCDay`/`getUTCHours` regardless of `window.tz`. `mon-fri,
|
|
24
|
+
US/Eastern` could allow a write late Friday Eastern (Saturday UTC) or
|
|
25
|
+
block early Monday Eastern (Sunday UTC). Both days and hours are now
|
|
26
|
+
resolved in `window.tz` (or system local when omitted) using
|
|
27
|
+
`Intl.DateTimeFormat`. ([src/core/policy.ts](src/core/policy.ts))
|
|
28
|
+
- **P2: MCP telemetry never recorded `toolName`.** `executeTool` accepted
|
|
29
|
+
a third `toolName` argument but no callsite passed it, so
|
|
30
|
+
`hscli trace stats` / `hscli audit by-tool` couldn't break MCP
|
|
31
|
+
activity down by tool. Fixed structurally: a new `registerMcpTool`
|
|
32
|
+
wrapper sets `HUBCLI_MCP_TOOL_NAME` around every handler, so every
|
|
33
|
+
request made during an MCP tool call is automatically tagged.
|
|
34
|
+
([src/mcp/server.ts](src/mcp/server.ts))
|
|
35
|
+
- **P2: Trace session `includeBodies` + `scope` were written but never
|
|
36
|
+
enforced.** The HTTP client read only the session's `file` path.
|
|
37
|
+
`hscli trace start --scope write` still recorded GETs;
|
|
38
|
+
`--include-bodies` captured nothing. The client now consumes the full
|
|
39
|
+
session (file + scope + includeBodies) and filters telemetry by scope
|
|
40
|
+
+ attaches request/response bodies when requested.
|
|
41
|
+
([src/core/http.ts](src/core/http.ts))
|
|
42
|
+
- **Minor: `hscli trace tail` required `<file>` even with an active
|
|
43
|
+
session.** Help text said the arg was optional; implementation
|
|
44
|
+
disagreed. `<file>` is now `[file]`.
|
|
45
|
+
([src/commands/trace/index.ts](src/commands/trace/index.ts))
|
|
46
|
+
- **Minor: README mixed `hubcli`/`hscli` + `HUBCLI_*`/`HSCLI_*`.** All
|
|
47
|
+
user-facing examples now use the current names.
|
|
48
|
+
|
|
49
|
+
### Tests
|
|
50
|
+
|
|
51
|
+
### Tests
|
|
52
|
+
|
|
53
|
+
- **`tests/bugfixes-v0.7.1.test.ts`** — 13 regression tests for every
|
|
54
|
+
fix listed above (auth.enc detection, legacy-fallback encryption,
|
|
55
|
+
tz-correct windows across the UTC boundary, MCP toolName tagging +
|
|
56
|
+
env cleanup, scope filtering read/write/all, includeBodies on/off).
|
|
57
|
+
- **`tests/policy.test.ts`** — 20 tests covering `readPolicyFile`,
|
|
58
|
+
glob matching (`*` vs `**`, method `*`, first-match-wins), v2 rule
|
|
59
|
+
evaluation (`defaultAction`, `action: deny`, `requireChangeTicket`,
|
|
60
|
+
`requireApproval`, `window.days`), v1 legacy back-compat
|
|
61
|
+
(`allowWrite: false`, `blockedMethodPathPrefixes`), per-profile
|
|
62
|
+
override, `HSCLI_POLICY_FILE` env var, Saturday-outside-window path.
|
|
63
|
+
- **`tests/trace.test.ts`** — 16 tests covering session lifecycle
|
|
64
|
+
(`start`/`stop`/`status`), `show` + filter operators (`>=`, `<=`,
|
|
65
|
+
`!`, substring), `stats` (percentiles + write/read counts),
|
|
66
|
+
`errors`, `diff` (structural divergence, `/{id}` path
|
|
67
|
+
normalization), `replay` dry-run-by-default, malformed JSONL
|
|
68
|
+
tolerance.
|
|
69
|
+
- **`tests/audit.test.ts`** — 13 tests covering `timeline` +
|
|
70
|
+
`--writes-only` + `--since`, `who` (byMethod/byStatus/byPathRoot),
|
|
71
|
+
`what` (path substring + byProfile + byTool), `writes`
|
|
72
|
+
(success/fail counts + `--limit`), `by-tool` (error rate + avg
|
|
73
|
+
latency + sort), since-parsing (`30m`/`24h`/`7d`), malformed JSONL.
|
|
74
|
+
|
|
75
|
+
### Docs
|
|
76
|
+
|
|
77
|
+
- **`docs/TUTORIALS/secure-agent-writes.md`** — end-to-end walkthrough
|
|
78
|
+
of setting up policy-as-code for an MCP agent: extract template →
|
|
79
|
+
tighten → validate → dry-run matching → enforce → hook into MCP.
|
|
80
|
+
- **`docs/TUTORIALS/trace-replay-repro.md`** — bug reproduction
|
|
81
|
+
workflow using `trace start` / `stop` / `diff` / `replay`.
|
|
82
|
+
- **`docs/TUTORIALS/audit-portal-writes.md`** — operator audit guide
|
|
83
|
+
with `jq` recipes and CI integration patterns.
|
|
84
|
+
- **README** — expanded Quickstart with three collapsible sections for
|
|
85
|
+
policy / trace / audit. Corrected MCP config (`hscli` binary,
|
|
86
|
+
`HSCLI_MCP_PROFILE` env var). Updated caches section to reflect
|
|
87
|
+
`~/.revfleet/` primary location with `~/.hubcli/` legacy fallback.
|
|
88
|
+
|
|
89
|
+
### Fixes
|
|
90
|
+
|
|
91
|
+
- **`package.json:scripts.test:contract`** — env var name corrected
|
|
92
|
+
from `HUBCLI_ENABLE_SANDBOX_CONTRACT` to `HSCLI_ENABLE_SANDBOX_CONTRACT`
|
|
93
|
+
(the test file expects the latter).
|
|
94
|
+
- **`tests/contract.sandbox.test.ts`** — harness now uses `~/.revfleet/`
|
|
95
|
+
and unwraps the `{ ok, data }` JSON envelope. Tests were silently
|
|
96
|
+
broken for anyone actually opting in to the contract run.
|
|
97
|
+
|
|
98
|
+
## 0.7.0 - 2026-04-21
|
|
99
|
+
|
|
100
|
+
**Trust plane.** New `hscli policy` + `hscli audit` command groups give
|
|
101
|
+
hscli the same operational-trust posture as Salesforce Agent Fabric —
|
|
102
|
+
policy-as-code + audit-over-trace — but in open JSONL + JSON instead
|
|
103
|
+
of a vendor-locked UI. Direct counter to the enterprise moat pillar.
|
|
104
|
+
|
|
105
|
+
### New: hscli policy command group
|
|
106
|
+
|
|
107
|
+
- `hscli policy list` — parse + summarize the active policy file.
|
|
108
|
+
- `hscli policy show-matching <method> <path>` — which rule fires for a
|
|
109
|
+
given request? Use before shipping to verify intent.
|
|
110
|
+
- `hscli policy validate [file]` — syntax + semantic check (invalid
|
|
111
|
+
enums, malformed windows, unnamed rules, etc.).
|
|
112
|
+
- `hscli policy templates list|show|extract` — 5 built-in templates:
|
|
113
|
+
- `read-only` — denies all writes (default action: deny + allow-all-
|
|
114
|
+
reads rule).
|
|
115
|
+
- `business-hours` — writes only 9-17 Mon-Fri in a given timezone.
|
|
116
|
+
- `change-ticket-required` — every write needs `--change-ticket <id>`.
|
|
117
|
+
- `no-deletes` — POST/PATCH/PUT allowed, DELETE always denied.
|
|
118
|
+
- `compliance-strict` — combines the above (business hours + change
|
|
119
|
+
ticket + no deletes + GDPR endpoints require approval).
|
|
120
|
+
|
|
121
|
+
### Enhanced policy schema (v2)
|
|
122
|
+
|
|
123
|
+
Legacy v1 policy files still work. v2 adds:
|
|
124
|
+
- **Glob path matching** — `"path": "**/gdpr-delete**"` matches anywhere.
|
|
125
|
+
`*` matches within a segment, `**` across segments.
|
|
126
|
+
- **Time windows** — `"window": { "tz": "US/Eastern", "hours": "09-17",
|
|
127
|
+
"days": "mon-fri" }`. Enforced in the portal's declared timezone.
|
|
128
|
+
- **`defaultAction`** — `"allow"` (current behavior) or `"deny"` (no-
|
|
129
|
+
rule-match → block). Enables zero-trust policy files.
|
|
130
|
+
- **`requireApproval`** — marks paths as needing out-of-band approval.
|
|
131
|
+
Currently emits `POLICY_APPROVAL_REQUIRED` error; webhook/Slack
|
|
132
|
+
fulfillment lands in v0.7.1.
|
|
133
|
+
- **Rate limit hooks** — `"rateLimit": { "maxPerHour": 10 }` schema
|
|
134
|
+
reserved. Enforcement lands in v0.7.1 alongside approvals.
|
|
135
|
+
|
|
136
|
+
### New: hscli audit command group
|
|
137
|
+
|
|
138
|
+
Reads any trace JSONL (single file or all `~/.revfleet/trace-*.jsonl`)
|
|
139
|
+
and aggregates:
|
|
140
|
+
- `hscli audit timeline` — chronological events, `--since 24h`,
|
|
141
|
+
`--writes-only`, `--limit N`.
|
|
142
|
+
- `hscli audit who <profile>` — breakdown of what a profile did
|
|
143
|
+
(byMethod, byStatus, byPathRoot, last 10).
|
|
144
|
+
- `hscli audit what <path-pattern>` — who touched an endpoint
|
|
145
|
+
(byProfile, byTool — MCP tool names — byMethod, recent writes).
|
|
146
|
+
- `hscli audit writes [--since]` — all write ops, most security-relevant
|
|
147
|
+
view.
|
|
148
|
+
- `hscli audit by-tool` — MCP tool breakdown: calls, writes, errors,
|
|
149
|
+
error rate, avg + max latency. Answers "which agent is chatty/buggy".
|
|
150
|
+
|
|
151
|
+
### Package publishes `docs/policy-templates/`
|
|
152
|
+
|
|
153
|
+
Templates are bundled in the npm tarball so `hscli policy templates
|
|
154
|
+
list` works for any user with just `npm install @revfleet/hscli`.
|
|
155
|
+
|
|
156
|
+
### Validation
|
|
157
|
+
|
|
158
|
+
- 162 tests pass
|
|
159
|
+
- 0 npm audit vulnerabilities
|
|
160
|
+
- Policy enforcement verified end-to-end: `read-only` template
|
|
161
|
+
correctly blocks POST with `POLICY_DEFAULT_DENY` error.
|
|
162
|
+
- Glob matching works (`**/gdpr-delete**`, `/crm/v3/objects/*`).
|
|
163
|
+
- Time-window enforcement works via Intl.DateTimeFormat.
|
|
164
|
+
- Audit timeline/who/what tested on live 3-event trace.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
3
168
|
## 0.6.0 - 2026-04-21
|
|
4
169
|
|
|
5
170
|
**Session tracing + replay.** New `hscli trace` command group brings
|
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# hscli
|
|
2
2
|
|
|
3
3
|
[](https://github.com/revfleet/hscli/actions/workflows/ci.yml)
|
|
4
4
|
[](https://www.npmjs.com/package/@revfleet/hscli)
|
|
@@ -35,7 +35,7 @@ That's the whole thing. For the full picture of what's available, read on.
|
|
|
35
35
|
<details>
|
|
36
36
|
<summary><strong>Full coverage map (55+ domains)</strong></summary>
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
hscli gives you one TypeScript binary that covers **every** endpoint of HubSpot's public API surface — verified against a scrape of HubSpot's own dev docs (1,178 source files, 1,180 endpoints). Whether an endpoint actually returns data on *your* portal depends on the HubSpot tier you're on (see [docs/TIERS.md](docs/TIERS.md)). hscli exposes them all.
|
|
39
39
|
|
|
40
40
|
- **Full CRM** — contacts, companies, deals, tickets, leads, quotes, products, line items, orders, carts, discounts, fees, taxes, invoices, subscriptions, payments, goals, communications, users, feedback-submissions, custom objects, properties (+ legacy v1/v2), pipelines, associations v4 (+ labels CRUD + dated 2025-09), owners, imports, exports, engagements (notes/tasks/calls/meetings), sync, describe/validate, timeline, CRM Cards (UI Extensions), filter + count primitives on every object
|
|
41
41
|
- **Marketing** — emails (v3 + legacy v1, per-email stats), campaigns, ads, social, SEO, landing pages, transactional, subscriptions, events (+ attendance + participations), behavioral events, forms, form integrations, legacy email events stream (per-recipient)
|
|
@@ -57,28 +57,16 @@ Enterprise-grade from day one: `--dry-run`, `--force`, policy files, change tick
|
|
|
57
57
|
</details>
|
|
58
58
|
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## What hscli focuses on
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
- **[Composio](https://composio.dev/toolkits/hubspot)** — hosted SaaS MCP at `connect.composio.dev/mcp`, part of their 850-app adapter platform. Proprietary, they hold your token on their infra (SOC 2 Type 2).
|
|
67
|
-
- **Community OSS MCP servers** — [peakmojo/mcp-hubspot](https://github.com/peakmojo/mcp-hubspot), [lkm1developer/hubspot-mcp-server](https://github.com/lkm1developer/hubspot-mcp-server), [shinzo-labs/hubspot-mcp](https://github.com/shinzo-labs/hubspot-mcp), [CData's hubspot-mcp-server](https://github.com/CDataSoftware/hubspot-mcp-server-by-cdata), and ~15 others on GitHub.
|
|
68
|
-
|
|
69
|
-
hubcli's emphasis:
|
|
70
|
-
|
|
71
|
-
1. **CLI-first with MCP as a peer surface.** Every MCP tool has a matching `hubcli` command — same write gates, same redaction, same capability probing in both.
|
|
72
|
-
2. **Self-hosted and token-sovereign.** Your HubSpot private app token never leaves your machine. Contrast with Composio.
|
|
73
|
-
3. **Enterprise safety gates.** `--dry-run`, `--force`, policy files, change tickets, path scope allowlisting, idempotency keys. Most community MCP servers don't have these.
|
|
74
|
-
4. **HubSpot-native engineering.** Reads HubSpot's `X-HubSpot-RateLimit-*` headers, proactive throttling, capability probing by `portalId + scopes`, offline schema validation, idempotency-key on every write.
|
|
75
|
-
5. **Used in production.** Powers [CRMforge](https://crmforge.ai), the AI HubSpot consultant.
|
|
76
|
-
|
|
77
|
-
Full landscape: [docs/LAUNCH/COMPETITIVE-LANDSCAPE.md](docs/LAUNCH/COMPETITIVE-LANDSCAPE.md).
|
|
62
|
+
1. **CLI-first with MCP as a peer surface.** Every MCP tool has a matching `hscli` command — same write gates, same redaction, same capability probing in both.
|
|
63
|
+
2. **Self-hosted and token-sovereign.** Your HubSpot private app token stays on your machine.
|
|
64
|
+
3. **Safety gates by default.** `--dry-run`, `--force`, policy files, change tickets, path scope allowlisting, idempotency keys on every write.
|
|
65
|
+
4. **HubSpot-native engineering.** Reads HubSpot's `X-HubSpot-RateLimit-*` headers, proactive throttling, capability probing by `portalId + scopes`, offline schema validation.
|
|
78
66
|
|
|
79
67
|
## "100% coverage" — what that means
|
|
80
68
|
|
|
81
|
-
|
|
69
|
+
hscli's coverage claim is precise: **every one of HubSpot's 1,180 documented public API endpoints has a corresponding CLI subcommand.** This is verified against an automated scrape of HubSpot's developer documentation (committed at [docs/TESTING/PORTAL-147975758-COVERAGE.md](docs/TESTING/PORTAL-147975758-COVERAGE.md) and [PORTAL-147975758-WRITES.md](docs/TESTING/PORTAL-147975758-WRITES.md)).
|
|
82
70
|
|
|
83
71
|
It does **not** mean every endpoint returns 2xx on your portal — HubSpot tier-locks hundreds of endpoints behind paid plans:
|
|
84
72
|
|
|
@@ -107,7 +95,7 @@ From source:
|
|
|
107
95
|
|
|
108
96
|
```bash
|
|
109
97
|
git clone https://github.com/revfleet/hscli.git
|
|
110
|
-
cd
|
|
98
|
+
cd hscli
|
|
111
99
|
npm install
|
|
112
100
|
npm run build
|
|
113
101
|
```
|
|
@@ -131,8 +119,8 @@ Read:
|
|
|
131
119
|
```bash
|
|
132
120
|
hscli crm contacts list --limit 5
|
|
133
121
|
hscli marketing emails stats 123456
|
|
134
|
-
|
|
135
|
-
|
|
122
|
+
hscli sales sequences list
|
|
123
|
+
hscli reporting dashboards list
|
|
136
124
|
hscli settings teams list
|
|
137
125
|
```
|
|
138
126
|
|
|
@@ -155,6 +143,81 @@ hscli --force --policy-file docs/POLICY_EXAMPLE.json --change-ticket CHG-123 \
|
|
|
155
143
|
crm contacts delete 123
|
|
156
144
|
```
|
|
157
145
|
|
|
146
|
+
<details>
|
|
147
|
+
<summary><strong>Policy-as-code (v0.7)</strong> — glob matching, time windows, approval gates, built-in templates</summary>
|
|
148
|
+
|
|
149
|
+
Policy files let ops define *what* an agent is allowed to do — not just *whether* it can write. Rule matching is first-match-wins: method + path glob (`*` within a segment, `**` across segments), optional time window (`window.hours`, `window.days`, `window.tz`), optional change-ticket requirement, optional approval gate.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# List built-in templates (read-only, no-deletes, business-hours, compliance-strict, change-ticket-required)
|
|
153
|
+
hscli policy templates list
|
|
154
|
+
|
|
155
|
+
# Copy a template to edit locally
|
|
156
|
+
hscli policy templates extract no-deletes --to ./policy.json
|
|
157
|
+
|
|
158
|
+
# Validate before shipping
|
|
159
|
+
hscli policy validate ./policy.json
|
|
160
|
+
|
|
161
|
+
# Dry-run which rule would fire for a hypothetical request
|
|
162
|
+
hscli --policy-file ./policy.json \
|
|
163
|
+
policy show-matching DELETE /crm/v3/objects/contacts/123
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Enforcement is automatic once `--policy-file` is set (or `HSCLI_POLICY_FILE` env var). Error codes (`POLICY_RULE_DENY`, `POLICY_DEFAULT_DENY`, `POLICY_CHANGE_TICKET_REQUIRED`, `POLICY_APPROVAL_REQUIRED`, `POLICY_OUT_OF_WINDOW`) are machine-readable.
|
|
167
|
+
|
|
168
|
+
Tutorial: [docs/TUTORIALS/secure-agent-writes.md](docs/TUTORIALS/secure-agent-writes.md).
|
|
169
|
+
|
|
170
|
+
</details>
|
|
171
|
+
|
|
172
|
+
<details>
|
|
173
|
+
<summary><strong>Trace + replay (v0.6+)</strong> — observability of every request, human + MCP</summary>
|
|
174
|
+
|
|
175
|
+
`hscli trace` records every request to a JSONL file — method, path, status, latency, profile, `toolName` (when invoked from an MCP tool), optional request/response bodies. Useful for reproducibility, regression detection between portals, debugging agent behavior.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
# Start recording to ~/.revfleet/trace-<ts>.jsonl (or pass --out)
|
|
179
|
+
hscli trace start --include-bodies --scope all
|
|
180
|
+
|
|
181
|
+
# Run anything. Every request appends.
|
|
182
|
+
hscli crm contacts list
|
|
183
|
+
hscli mcp # MCP requests tagged with toolName
|
|
184
|
+
|
|
185
|
+
# Stop; the file stays, session state clears.
|
|
186
|
+
hscli trace stop
|
|
187
|
+
|
|
188
|
+
# Inspect
|
|
189
|
+
hscli trace show ./trace-<ts>.jsonl --filter status=>=400
|
|
190
|
+
hscli trace stats ./trace-<ts>.jsonl # p50/p95/p99 latency, method breakdown
|
|
191
|
+
hscli trace errors ./trace-<ts>.jsonl # only errors
|
|
192
|
+
hscli trace diff ./run-a.jsonl ./run-b.jsonl # detect reproducibility divergence
|
|
193
|
+
|
|
194
|
+
# Replay GETs (safe-by-default: dry-run unless --force)
|
|
195
|
+
hscli trace replay ./trace-<ts>.jsonl
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Writes (`POST/PUT/PATCH/DELETE`) are intentionally not replayable to prevent accidental re-mutation.
|
|
199
|
+
|
|
200
|
+
Tutorial: [docs/TUTORIALS/trace-replay-repro.md](docs/TUTORIALS/trace-replay-repro.md).
|
|
201
|
+
|
|
202
|
+
</details>
|
|
203
|
+
|
|
204
|
+
<details>
|
|
205
|
+
<summary><strong>Audit (v0.7)</strong> — “who did what when” across every recorded session</summary>
|
|
206
|
+
|
|
207
|
+
`hscli audit` reads trace JSONL files (single file or an entire directory of `trace-*.jsonl`) and answers operational audit questions. Pairs with `trace` for full provenance.
|
|
208
|
+
|
|
209
|
+
```bash
|
|
210
|
+
hscli audit timeline --since 24h # chronological event list, last 24h
|
|
211
|
+
hscli audit who alice --since 7d # what has profile 'alice' done?
|
|
212
|
+
hscli audit what /crm/v3/objects/contacts --since 7d # who touched this path?
|
|
213
|
+
hscli audit writes --since 24h # all writes in the last 24h (+ failures)
|
|
214
|
+
hscli audit by-tool # per-MCP-tool call count, error rate, avg latency
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
Tutorial: [docs/TUTORIALS/audit-portal-writes.md](docs/TUTORIALS/audit-portal-writes.md).
|
|
218
|
+
|
|
219
|
+
</details>
|
|
220
|
+
|
|
158
221
|
## Output modes
|
|
159
222
|
|
|
160
223
|
```bash
|
|
@@ -165,7 +228,7 @@ hscli --format yaml crm deals get 123 # YAML
|
|
|
165
228
|
|
|
166
229
|
## MCP: AI agents as first-class consumers
|
|
167
230
|
|
|
168
|
-
|
|
231
|
+
hscli ships a built-in MCP server over stdio with ~125 tools exposing the full surface:
|
|
169
232
|
|
|
170
233
|
```bash
|
|
171
234
|
hscli mcp
|
|
@@ -176,18 +239,18 @@ For Claude Desktop, add to `claude_desktop_config.json`:
|
|
|
176
239
|
```json
|
|
177
240
|
{
|
|
178
241
|
"mcpServers": {
|
|
179
|
-
"
|
|
180
|
-
"command": "
|
|
242
|
+
"hscli": {
|
|
243
|
+
"command": "hscli",
|
|
181
244
|
"args": ["mcp"],
|
|
182
245
|
"env": {
|
|
183
|
-
"
|
|
246
|
+
"HSCLI_MCP_PROFILE": "default"
|
|
184
247
|
}
|
|
185
248
|
}
|
|
186
249
|
}
|
|
187
250
|
}
|
|
188
251
|
```
|
|
189
252
|
|
|
190
|
-
Restart Claude. Now Claude can list contacts, search deals, inspect workflows, and — with `--force` passed at tool-call time — perform safe writes. All CLI safety rails apply to MCP calls. Secrets are redacted from every tool response. `
|
|
253
|
+
Restart Claude. Now Claude can list contacts, search deals, inspect workflows, and — with `--force` passed at tool-call time — perform safe writes. All CLI safety rails apply to MCP calls. Secrets are redacted from every tool response. `HSCLI_MCP_PROFILE` locks the stdio server to one auth profile to prevent cross-tenant access.
|
|
191
254
|
|
|
192
255
|
See [docs/MCP.md](docs/MCP.md) for the full tool catalog.
|
|
193
256
|
|
|
@@ -196,7 +259,7 @@ See [docs/MCP.md](docs/MCP.md) for the full tool catalog.
|
|
|
196
259
|
Probe portal capabilities and cache them by `portalId + scopes`:
|
|
197
260
|
|
|
198
261
|
```bash
|
|
199
|
-
|
|
262
|
+
hscli doctor capabilities --refresh
|
|
200
263
|
```
|
|
201
264
|
|
|
202
265
|
Fail fast when a command hits an unsupported endpoint:
|
|
@@ -229,12 +292,14 @@ Full threat model: [SECURITY.md](SECURITY.md).
|
|
|
229
292
|
|
|
230
293
|
## Caches
|
|
231
294
|
|
|
232
|
-
Under `
|
|
295
|
+
Under `HSCLI_HOME` (default: `~/.revfleet`; legacy `~/.hubcli` is still honored for existing installs):
|
|
233
296
|
|
|
234
297
|
- `auth.json` — profile tokens (0600 permissions, 0700 directory)
|
|
235
298
|
- `capabilities.json` — portal/tier capability cache
|
|
236
299
|
- `schema-cache.json` — CRM schema cache for describe/validate
|
|
237
300
|
- `auth.enc` — optional encrypted vault (when passphrase is set)
|
|
301
|
+
- `trace-session.json` — active trace session state (v0.6+)
|
|
302
|
+
- `trace-*.jsonl` — recorded request traces (v0.6+)
|
|
238
303
|
|
|
239
304
|
## Documentation
|
|
240
305
|
|
|
@@ -282,6 +347,3 @@ Issues and PRs welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the workflow,
|
|
|
282
347
|
|
|
283
348
|
MIT — see [LICENSE](LICENSE).
|
|
284
349
|
|
|
285
|
-
---
|
|
286
|
-
|
|
287
|
-
**Built as the foundation for [CRMforge](https://crmforge.ai)**, the AI HubSpot consultant. hubcli is open source so the ecosystem can build on it.
|
package/dist/cli.js
CHANGED
|
@@ -15,6 +15,8 @@ import { registerService } from "./commands/service/index.js";
|
|
|
15
15
|
import { registerWebhooks } from "./commands/webhooks/index.js";
|
|
16
16
|
import { registerSeed } from "./commands/seed/index.js";
|
|
17
17
|
import { registerTrace } from "./commands/trace/index.js";
|
|
18
|
+
import { registerPolicy } from "./commands/policy/index.js";
|
|
19
|
+
import { registerAudit } from "./commands/audit/index.js";
|
|
18
20
|
import { registerLists } from "./commands/lists/index.js";
|
|
19
21
|
import { registerSales } from "./commands/sales/index.js";
|
|
20
22
|
import { registerReporting } from "./commands/reporting/index.js";
|
|
@@ -90,6 +92,8 @@ export function createProgram() {
|
|
|
90
92
|
registerApi(program, () => ctx);
|
|
91
93
|
registerSeed(program, () => ctx);
|
|
92
94
|
registerTrace(program, () => ctx);
|
|
95
|
+
registerPolicy(program, () => ctx);
|
|
96
|
+
registerAudit(program, () => ctx);
|
|
93
97
|
registerLists(program, () => ctx);
|
|
94
98
|
registerSales(program, () => ctx);
|
|
95
99
|
registerReporting(program, () => ctx);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|