@revfleet/hscli 0.9.0 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,51 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.9.2 - 2026-07-10
6
+
7
+ ### Added — one-command Portal Baseline
8
+
9
+ - Added top-level `hscli baseline` as the default first proof: it executes the
10
+ 12-signal public-API-first baseline, preserves partial coverage by default,
11
+ and writes both signed `revfleet-evidence.json` and human-readable
12
+ `portal-baseline.md` beside the local audit ledger.
13
+ - Added `agent evidence report <run-directory>` to render an existing baseline
14
+ without rerunning HubSpot requests.
15
+ - Markdown reports are deterministic and rendered only from the aggregate
16
+ evidence contract, so raw CRM records, identities, scopes, and asset names
17
+ cannot leak back into the shareable output.
18
+
19
+ ## 0.9.1 - 2026-07-10
20
+
21
+ **RevFleet evidence bridge.** A read-only `portal-baseline` can now produce and
22
+ submit a signed aggregate contract without sending its raw step outputs or
23
+ turning partial coverage into a misleading portal score.
24
+
25
+ ### Added — signed aggregate evidence
26
+
27
+ - Added `agent evidence export <run-directory>` for deterministic
28
+ `revfleet.hscli-evidence/v1` JSON. The export contains only allowlisted
29
+ counts, sampled fill rates, coverage state, portal routing metadata, and a
30
+ SHA-256 digest; HubSpot records, user identities, scopes, and asset names are
31
+ excluded.
32
+ - Added `agent evidence submit <run-directory>`. The RevFleet API key is read
33
+ from `REVFLEET_API_KEY` (or an explicitly named environment variable), never
34
+ from argv. Remote submissions require HTTPS; localhost HTTP remains
35
+ available for development.
36
+ - Evidence coverage records every baseline signal as `collected`, `failed`,
37
+ `missing`, or `invalid`. Submission is explicitly evidence-only and does not
38
+ claim to create the complete RevFleet 53-check score.
39
+
40
+ ### Security and tests
41
+
42
+ - Added strict file-size, schema, property allowlist, backend-origin, API-key
43
+ environment, and PII-exclusion controls around evidence export/submission.
44
+ - Evidence export now rejects incomplete or unattributable runs, and
45
+ `audit timeline` exposes deterministic request/error totals consumed by the
46
+ evidence contract.
47
+ - Added contract, deterministic-digest, partial-coverage, CLI-command,
48
+ transport, and insecure-destination tests.
49
+
5
50
  ## 0.9.0 - 2026-07-09
6
51
 
7
52
  **Agent-safe operator release.** hscli now wraps its broad HubSpot command
package/README.md CHANGED
@@ -73,19 +73,54 @@ hscli --profile oauth-prod auth whoami
73
73
 
74
74
  Run the read-only portal baseline before learning the full command tree. It
75
75
  captures portal identity and API reachability, users and teams, deal pipelines,
76
- data readiness for contacts/companies/deals, and workflow exposure:
76
+ data readiness for contacts/companies/deals, and workflow exposure. Missing
77
+ scopes become explicit coverage gaps instead of stopping the run:
77
78
 
78
79
  ```bash
79
- hscli --profile client-readonly agent run portal-baseline \
80
- --output ./evidence/portal-baseline \
81
- --continue-on-error
80
+ hscli --profile client-readonly baseline \
81
+ --output ./evidence/portal-baseline
82
82
  ```
83
83
 
84
- The output is a portable evidence bundle, not an AI summary: `manifest.json`
85
- records the exact steps and completion state, `requests.jsonl` records redacted
86
- HubSpot request telemetry, `events.jsonl` records runbook progress, and
87
- `steps/*.stdout.jsonl` preserves every deterministic result. Missing scopes are
88
- kept as explicit failed steps while the rest of the baseline continues.
84
+ Open `portal-baseline.md` for the human report. Use
85
+ `revfleet-evidence.json` as the signed, aggregate-only machine contract. The
86
+ same directory keeps the deeper audit trail: `manifest.json` records the exact
87
+ steps and completion state, `requests.jsonl` records redacted HubSpot request
88
+ telemetry, `events.jsonl` records runbook progress, and
89
+ `steps/*.stdout.jsonl` preserves every deterministic result locally.
90
+
91
+ The Markdown report is rendered only from the allowlisted aggregate contract,
92
+ not from raw step files. It cannot reintroduce CRM records, user identities,
93
+ team names, workflow names, scopes, or tokens. Use `--fail-fast` only when a
94
+ missing signal should stop the baseline instead of remaining an explicit gap.
95
+
96
+ Regenerate the human report from an existing completed run without calling
97
+ HubSpot again:
98
+
99
+ ```bash
100
+ hscli agent evidence report ./evidence/portal-baseline
101
+ ```
102
+
103
+ Turn that local bundle into a signed, aggregate-only RevFleet evidence
104
+ contract without uploading raw steps, CRM records, user identities, or tokens:
105
+
106
+ ```bash
107
+ hscli agent evidence export ./evidence/portal-baseline \
108
+ --output ./evidence/revfleet-evidence.json
109
+
110
+ export REVFLEET_API_KEY="<scan:run key from RevFleet>"
111
+ export REVFLEET_BACKEND_URL="https://your-revfleet-origin.example"
112
+ hscli agent evidence submit ./evidence/portal-baseline
113
+ ```
114
+
115
+ `--backend-url <origin>` overrides `REVFLEET_BACKEND_URL`. hscli has no hidden
116
+ hosted default: the destination must be explicit and remote origins must use
117
+ HTTPS.
118
+
119
+ The exported `revfleet.hscli-evidence/v1` document declares coverage for every
120
+ baseline signal and carries a deterministic SHA-256 digest. A missing or failed
121
+ signal remains `missing` or `failed`; it is never converted into a bad portal
122
+ score. RevFleet stores this evidence separately from the complete 53-check
123
+ extension scan.
89
124
 
90
125
  ## Operator workflows
91
126
 
@@ -93,6 +128,7 @@ Start from intent instead of memorizing the whole command tree:
93
128
 
94
129
  ```bash
95
130
  hscli ui # terminal home: profiles, safety, next action, workflows
131
+ hscli baseline # one-command read-only baseline + Markdown + signed JSON
96
132
  hscli /setup # auth, hublet routing, scopes, capabilities
97
133
  hscli /migration # portal/schema migration sequence
98
134
  hscli /read # source-portal read workflow
@@ -109,6 +145,7 @@ instead of open-ended portal access:
109
145
  ```bash
110
146
  hscli agent list
111
147
  hscli agent plan portal-baseline --json
148
+ hscli agent evidence export ./evidence/portal-baseline --output ./evidence/revfleet-evidence.json
112
149
  hscli agent plan automation-risk --json
113
150
  hscli --profile sandbox agent run automation-risk --output ./evidence/automation-risk
114
151
  hscli --profile sandbox agent run automation-risk --output ./evidence/automation-risk --resume
@@ -0,0 +1,70 @@
1
+ type SignalStatus = "collected" | "failed" | "missing" | "invalid";
2
+ interface FillRateSummary {
3
+ sampled: number;
4
+ propertyFillRates: Record<string, number>;
5
+ }
6
+ export interface RevFleetEvidence {
7
+ schema: "revfleet.hscli-evidence/v1";
8
+ source: {
9
+ product: "hscli";
10
+ recipe: "portal-baseline";
11
+ };
12
+ portal: {
13
+ id: string;
14
+ hublet: string | null;
15
+ };
16
+ run: {
17
+ id: string;
18
+ status: "completed" | "completed_with_errors";
19
+ startedAt: string;
20
+ completedAt: string;
21
+ totalSteps: number;
22
+ completedSteps: number;
23
+ failedSteps: number;
24
+ };
25
+ coverage: {
26
+ status: "complete" | "partial";
27
+ total: number;
28
+ collected: number;
29
+ failed: number;
30
+ missing: number;
31
+ invalid: number;
32
+ signals: Array<{
33
+ id: string;
34
+ step: number;
35
+ status: SignalStatus;
36
+ }>;
37
+ };
38
+ modules: {
39
+ settings: Record<string, number>;
40
+ sales: Record<string, number>;
41
+ crmCore: {
42
+ contacts?: FillRateSummary;
43
+ companies?: FillRateSummary;
44
+ deals?: FillRateSummary;
45
+ };
46
+ marketing: Record<string, number>;
47
+ audit: Record<string, number>;
48
+ };
49
+ privacy: {
50
+ aggregateOnly: true;
51
+ containsContactRecords: false;
52
+ containsUserIdentities: false;
53
+ };
54
+ generatedAt: string;
55
+ digest: {
56
+ algorithm: "sha256";
57
+ value: string;
58
+ };
59
+ }
60
+ export interface SubmitRevFleetEvidenceOptions {
61
+ backendUrl?: string;
62
+ apiKeyEnv?: string;
63
+ }
64
+ export declare function resolveRevFleetBackendUrl(explicit?: string): string;
65
+ export declare function buildRevFleetEvidence(runDirectory: string): RevFleetEvidence;
66
+ export declare function writeRevFleetEvidence(runDirectory: string, outputFile: string): RevFleetEvidence;
67
+ export declare function renderRevFleetEvidenceMarkdown(evidence: RevFleetEvidence): string;
68
+ export declare function writeRevFleetEvidenceReport(evidence: RevFleetEvidence, outputFile: string): string;
69
+ export declare function submitRevFleetEvidence(runDirectory: string, options: SubmitRevFleetEvidenceOptions): Promise<Record<string, unknown>>;
70
+ export {};
@@ -0,0 +1,421 @@
1
+ import { createHash } from "node:crypto";
2
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { CliError } from "../../core/output.js";
5
+ const MAX_EVIDENCE_FILE_BYTES = 25 * 1024 * 1024;
6
+ const MAX_EVIDENCE_COUNT = 10_000_000;
7
+ const PORTAL_BASELINE_PROPERTIES = {
8
+ contacts: new Set(["email", "firstname", "lastname", "company", "hubspot_owner_id", "country"]),
9
+ companies: new Set(["name", "domain", "hubspot_owner_id", "lifecyclestage"]),
10
+ deals: new Set(["dealname", "dealstage", "hubspot_owner_id", "amount", "closedate"]),
11
+ };
12
+ const PORTAL_BASELINE_SIGNALS = [
13
+ "portal_identity",
14
+ "api_capabilities",
15
+ "account_metadata",
16
+ "users_sample",
17
+ "teams_inventory",
18
+ "deal_pipeline_inventory",
19
+ "contacts_fill_rate",
20
+ "companies_fill_rate",
21
+ "deals_fill_rate",
22
+ "workflows_v4_sample",
23
+ "workflows_v3_sample",
24
+ "request_audit",
25
+ ];
26
+ export function resolveRevFleetBackendUrl(explicit) {
27
+ const backendUrl = explicit?.trim() || process.env.REVFLEET_BACKEND_URL?.trim();
28
+ if (!backendUrl) {
29
+ throw new CliError("AGENT_EVIDENCE_BACKEND_URL_MISSING", "Pass --backend-url or set REVFLEET_BACKEND_URL to your RevFleet origin.");
30
+ }
31
+ return backendUrl;
32
+ }
33
+ export function buildRevFleetEvidence(runDirectory) {
34
+ const root = resolve(runDirectory);
35
+ const manifest = readJson(join(root, "manifest.json"), "run manifest");
36
+ const checkpoint = readJson(join(root, "checkpoint.json"), "run checkpoint");
37
+ validateRun(manifest, checkpoint);
38
+ const parsedSteps = PORTAL_BASELINE_SIGNALS.map((_signal, index) => (parseStep(root, index, checkpoint)));
39
+ const portalIdentity = firstRecord(parsedSteps[0]);
40
+ const portalId = normalizePortalId(portalIdentity?.portalId);
41
+ if (!portalId) {
42
+ throw new CliError("AGENT_EVIDENCE_PORTAL_ID_MISSING", "RevFleet evidence requires a numeric portal ID from the portal-baseline identity step.");
43
+ }
44
+ const hublet = normalizeHublet(portalIdentity?.hublet);
45
+ const settings = {};
46
+ if (parsedSteps[3].status === "collected")
47
+ settings.usersSampled = recordCount(parsedSteps[3]);
48
+ if (parsedSteps[4].status === "collected")
49
+ settings.teamsSampled = recordCount(parsedSteps[4]);
50
+ const sales = {};
51
+ if (parsedSteps[5].status === "collected") {
52
+ const pipelines = records(parsedSteps[5]);
53
+ sales.dealPipelinesSampled = pipelines.length;
54
+ sales.dealStagesSampled = pipelines.reduce((sum, pipeline) => (sum + (Array.isArray(pipeline.stages) ? pipeline.stages.length : 0)), 0);
55
+ }
56
+ const crmCore = {};
57
+ const crmSteps = [
58
+ ["contacts", parsedSteps[6]],
59
+ ["companies", parsedSteps[7]],
60
+ ["deals", parsedSteps[8]],
61
+ ];
62
+ for (const [objectType, step] of crmSteps) {
63
+ if (step.status === "collected")
64
+ crmCore[objectType] = summarizeFillRates(step, PORTAL_BASELINE_PROPERTIES[objectType]);
65
+ }
66
+ const marketing = {};
67
+ if (parsedSteps[9].status === "collected") {
68
+ marketing.workflowsV4Sampled = recordCount(parsedSteps[9]);
69
+ }
70
+ if (parsedSteps[10].status === "collected") {
71
+ const report = firstRecord(parsedSteps[10]);
72
+ marketing.workflowsV3Reported = evidenceCount(report?.total) ?? recordCount(parsedSteps[10]);
73
+ }
74
+ const audit = {};
75
+ if (parsedSteps[11].status === "collected") {
76
+ const report = firstRecord(parsedSteps[11]);
77
+ const summary = asRecord(report?.summary);
78
+ const requests = evidenceCount(summary?.requests) ?? evidenceCount(report?.totalLoaded);
79
+ const errors = evidenceCount(summary?.errors);
80
+ if (requests !== null)
81
+ audit.requestsReported = requests;
82
+ if (errors !== null)
83
+ audit.errorsReported = errors;
84
+ if (requests === null)
85
+ parsedSteps[11].status = "invalid";
86
+ }
87
+ const signalCoverage = PORTAL_BASELINE_SIGNALS.map((id, index) => ({
88
+ id,
89
+ step: index + 1,
90
+ status: parsedSteps[index].status,
91
+ }));
92
+ const statusCounts = countStatuses(signalCoverage);
93
+ const unsigned = {
94
+ schema: "revfleet.hscli-evidence/v1",
95
+ source: { product: "hscli", recipe: "portal-baseline" },
96
+ portal: { id: portalId, hublet },
97
+ run: {
98
+ id: manifest.runId,
99
+ status: manifest.status,
100
+ startedAt: manifest.startedAt,
101
+ completedAt: manifest.completedAt,
102
+ totalSteps: manifest.totalSteps,
103
+ completedSteps: checkpoint.completedSteps.length,
104
+ failedSteps: checkpoint.failedSteps.length,
105
+ },
106
+ coverage: {
107
+ status: statusCounts.collected === PORTAL_BASELINE_SIGNALS.length ? "complete" : "partial",
108
+ total: PORTAL_BASELINE_SIGNALS.length,
109
+ ...statusCounts,
110
+ signals: signalCoverage,
111
+ },
112
+ modules: { settings, sales, crmCore, marketing, audit },
113
+ privacy: {
114
+ aggregateOnly: true,
115
+ containsContactRecords: false,
116
+ containsUserIdentities: false,
117
+ },
118
+ generatedAt: manifest.completedAt,
119
+ };
120
+ return {
121
+ ...unsigned,
122
+ digest: {
123
+ algorithm: "sha256",
124
+ value: createHash("sha256").update(stableStringify(unsigned)).digest("hex"),
125
+ },
126
+ };
127
+ }
128
+ export function writeRevFleetEvidence(runDirectory, outputFile) {
129
+ const evidence = buildRevFleetEvidence(runDirectory);
130
+ const destination = resolve(outputFile);
131
+ mkdirSync(dirname(destination), { recursive: true, mode: 0o700 });
132
+ writeFileSync(destination, `${JSON.stringify(evidence, null, 2)}\n`, { mode: 0o600 });
133
+ return evidence;
134
+ }
135
+ export function renderRevFleetEvidenceMarkdown(evidence) {
136
+ const coverageLabel = evidence.coverage.status === "complete" ? "Complete" : "Partial";
137
+ const lines = [
138
+ "# HubSpot Portal Baseline",
139
+ "",
140
+ "> Deterministic, read-only evidence generated by hscli. This is not an AI summary or a portal score.",
141
+ "",
142
+ "## Snapshot",
143
+ "",
144
+ `**Portal:** ${evidence.portal.id} (${evidence.portal.hublet}) `,
145
+ `**Run:** ${evidence.run.id} `,
146
+ `**Completed:** ${evidence.run.completedAt} `,
147
+ `**Coverage:** ${coverageLabel} (${evidence.coverage.collected}/${evidence.coverage.total} signals collected)`,
148
+ "",
149
+ "## Data readiness",
150
+ "",
151
+ "| Object | Sampled | Property | Fill rate |",
152
+ "| --- | ---: | --- | ---: |",
153
+ ];
154
+ const crmModules = [
155
+ ["Contacts", evidence.modules.crmCore.contacts],
156
+ ["Companies", evidence.modules.crmCore.companies],
157
+ ["Deals", evidence.modules.crmCore.deals],
158
+ ];
159
+ for (const [label, summary] of crmModules) {
160
+ if (!summary) {
161
+ lines.push(`| ${label} | — | Not collected | — |`);
162
+ continue;
163
+ }
164
+ const properties = Object.entries(summary.propertyFillRates).sort(([left], [right]) => left.localeCompare(right));
165
+ if (properties.length === 0) {
166
+ lines.push(`| ${label} | ${formatEvidenceNumber(summary.sampled)} | Not collected | — |`);
167
+ continue;
168
+ }
169
+ for (const [property, fillRate] of properties) {
170
+ lines.push(`| ${label} | ${formatEvidenceNumber(summary.sampled)} | ${property} | ${formatEvidencePercent(fillRate)} |`);
171
+ }
172
+ }
173
+ lines.push("", "## Operating surface", "", "| Signal | Aggregate |", "| --- | ---: |", `| Users sampled | ${formatEvidenceNumber(evidence.modules.settings.usersSampled)} |`, `| Teams sampled | ${formatEvidenceNumber(evidence.modules.settings.teamsSampled)} |`, `| Deal pipelines sampled | ${formatEvidenceNumber(evidence.modules.sales.dealPipelinesSampled)} |`, `| Deal stages sampled | ${formatEvidenceNumber(evidence.modules.sales.dealStagesSampled)} |`, `| Workflows v4 sampled | ${formatEvidenceNumber(evidence.modules.marketing.workflowsV4Sampled)} |`, `| Workflows v3 reported | ${formatEvidenceNumber(evidence.modules.marketing.workflowsV3Reported)} |`, `| Requests reported | ${formatEvidenceNumber(evidence.modules.audit.requestsReported)} |`, `| Request errors reported | ${formatEvidenceNumber(evidence.modules.audit.errorsReported)} |`, "", "## Coverage ledger", "", "| Step | Signal | Status |", "| ---: | --- | --- |");
174
+ for (const signal of evidence.coverage.signals) {
175
+ lines.push(`| ${signal.step} | ${signal.id} | ${signal.status} |`);
176
+ }
177
+ lines.push("", "## Evidence and privacy", "", `- Schema: \`${evidence.schema}\``, `- SHA-256: \`${evidence.digest.value}\``, `- Aggregate only: ${evidence.privacy.aggregateOnly ? "yes" : "no"}`, `- Contact records included: ${evidence.privacy.containsContactRecords ? "yes" : "no"}`, `- User identities included: ${evidence.privacy.containsUserIdentities ? "yes" : "no"}`, "", evidence.coverage.status === "complete"
178
+ ? "All baseline signals were collected. Review the aggregate values before planning any portal change."
179
+ : "Coverage is partial. Missing or failed signals are unknown, not negative findings; resolve access gaps before drawing conclusions.", "", "To import this signed aggregate evidence into RevFleet, configure an explicit `REVFLEET_BACKEND_URL` and run:", "", "```bash", "hscli agent evidence submit <run-directory>", "```", "");
180
+ return lines.join("\n");
181
+ }
182
+ export function writeRevFleetEvidenceReport(evidence, outputFile) {
183
+ const report = renderRevFleetEvidenceMarkdown(evidence);
184
+ const destination = resolve(outputFile);
185
+ mkdirSync(dirname(destination), { recursive: true, mode: 0o700 });
186
+ writeFileSync(destination, report, { mode: 0o600 });
187
+ return report;
188
+ }
189
+ export async function submitRevFleetEvidence(runDirectory, options) {
190
+ const evidence = buildRevFleetEvidence(runDirectory);
191
+ const apiKeyEnv = options.apiKeyEnv ?? "REVFLEET_API_KEY";
192
+ if (!/^[A-Z][A-Z0-9_]{1,100}$/.test(apiKeyEnv)) {
193
+ throw new CliError("AGENT_EVIDENCE_API_KEY_ENV_INVALID", "--api-key-env must be an uppercase environment variable name.");
194
+ }
195
+ const apiKey = process.env[apiKeyEnv]?.trim();
196
+ if (!apiKey || !/^rvft_[A-Za-z0-9_-]{8,}$/.test(apiKey)) {
197
+ throw new CliError("AGENT_EVIDENCE_API_KEY_MISSING", `Set ${apiKeyEnv} to a RevFleet API key with scan:run scope.`);
198
+ }
199
+ const endpoint = resolveRevFleetEvidenceEndpoint(resolveRevFleetBackendUrl(options.backendUrl));
200
+ const response = await fetch(endpoint, {
201
+ method: "POST",
202
+ headers: {
203
+ authorization: `Bearer ${apiKey}`,
204
+ "content-type": "application/json",
205
+ accept: "application/json",
206
+ "user-agent": "hscli-agent-evidence/v1",
207
+ },
208
+ body: JSON.stringify(evidence),
209
+ signal: AbortSignal.timeout(30_000),
210
+ });
211
+ const responseText = await response.text();
212
+ let result = {};
213
+ if (responseText) {
214
+ try {
215
+ const parsed = JSON.parse(responseText);
216
+ result = asRecord(parsed) ?? { message: responseText.slice(0, 2_000) };
217
+ }
218
+ catch {
219
+ result = { message: responseText.slice(0, 2_000) };
220
+ }
221
+ }
222
+ if (!response.ok) {
223
+ throw new CliError("AGENT_EVIDENCE_SUBMIT_FAILED", `RevFleet evidence import returned HTTP ${response.status}.`, response.status, result);
224
+ }
225
+ return result;
226
+ }
227
+ function validateRun(manifest, checkpoint) {
228
+ if (manifest.schema !== "hscli.agent-run/v1" || checkpoint.schema !== "hscli.agent-checkpoint/v1") {
229
+ throw new CliError("AGENT_EVIDENCE_SCHEMA_INVALID", "Expected hscli agent-run/checkpoint v1 files.");
230
+ }
231
+ if (manifest.recipe !== "portal-baseline" || checkpoint.recipe !== "portal-baseline") {
232
+ throw new CliError("AGENT_EVIDENCE_RECIPE_UNSUPPORTED", "RevFleet evidence export currently requires a portal-baseline run.");
233
+ }
234
+ if (manifest.totalSteps !== PORTAL_BASELINE_SIGNALS.length) {
235
+ throw new CliError("AGENT_EVIDENCE_STEP_COUNT_MISMATCH", `Portal baseline expected ${PORTAL_BASELINE_SIGNALS.length} steps, received ${manifest.totalSteps}.`);
236
+ }
237
+ if (!/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|run-[A-Za-z0-9_-]{1,100})$/i.test(manifest.runId)) {
238
+ throw new CliError("AGENT_EVIDENCE_RUN_ID_INVALID", "Portal-baseline run ID is not a supported UUID or run-* identifier.");
239
+ }
240
+ if (!isIsoDateTime(manifest.startedAt) || !manifest.completedAt || !isIsoDateTime(manifest.completedAt)
241
+ || !["completed", "completed_with_errors"].includes(manifest.status)) {
242
+ throw new CliError("AGENT_EVIDENCE_RUN_INCOMPLETE", "RevFleet evidence export requires a completed portal-baseline run.");
243
+ }
244
+ validateCheckpointSteps(checkpoint.completedSteps, "completedSteps");
245
+ validateCheckpointSteps(checkpoint.failedSteps, "failedSteps");
246
+ if (checkpoint.failedSteps.some((step) => checkpoint.completedSteps.includes(step))) {
247
+ throw new CliError("AGENT_EVIDENCE_CHECKPOINT_INVALID", "Checkpoint completedSteps and failedSteps must not overlap.");
248
+ }
249
+ if (!isIsoDateTime(checkpoint.updatedAt)) {
250
+ throw new CliError("AGENT_EVIDENCE_CHECKPOINT_INVALID", "Checkpoint updatedAt must be an ISO timestamp.");
251
+ }
252
+ }
253
+ function resolveRevFleetEvidenceEndpoint(rawUrl) {
254
+ let base;
255
+ try {
256
+ base = new URL(rawUrl);
257
+ }
258
+ catch {
259
+ throw new CliError("AGENT_EVIDENCE_BACKEND_URL_INVALID", "--backend-url must be a valid absolute URL.");
260
+ }
261
+ const localHttp = base.protocol === "http:" && ["localhost", "127.0.0.1", "::1"].includes(base.hostname);
262
+ if (base.protocol !== "https:" && !localHttp) {
263
+ throw new CliError("AGENT_EVIDENCE_BACKEND_URL_INVALID", "RevFleet evidence submission requires HTTPS (HTTP is allowed only for localhost).");
264
+ }
265
+ if (base.username || base.password || base.hash || (base.pathname !== "/" && base.pathname !== "")) {
266
+ throw new CliError("AGENT_EVIDENCE_BACKEND_URL_INVALID", "--backend-url must be an origin without credentials, fragment, or path.");
267
+ }
268
+ return new URL("/api/evidence/hscli", base).toString();
269
+ }
270
+ function formatEvidenceNumber(value) {
271
+ if (typeof value !== "number" || !Number.isFinite(value))
272
+ return "Not collected";
273
+ return new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 }).format(value);
274
+ }
275
+ function formatEvidencePercent(value) {
276
+ const percent = Math.round(value * 1_000) / 10;
277
+ return `${Number.isInteger(percent) ? percent.toFixed(0) : percent.toFixed(1)}%`;
278
+ }
279
+ function parseStep(root, index, checkpoint) {
280
+ if (checkpoint.failedSteps.includes(index))
281
+ return { status: "failed", envelopes: [] };
282
+ const file = join(root, "steps", `${String(index + 1).padStart(3, "0")}.stdout.jsonl`);
283
+ if (!checkpoint.completedSteps.includes(index) || !existsSync(file)) {
284
+ return { status: "missing", envelopes: [] };
285
+ }
286
+ try {
287
+ assertReadableSize(file);
288
+ const lines = readFileSync(file, "utf8").split("\n").map((line) => line.trim()).filter(Boolean);
289
+ if (lines.length === 0)
290
+ return { status: "invalid", envelopes: [] };
291
+ const envelopes = lines.map((line) => JSON.parse(line));
292
+ if (envelopes.some((envelope) => envelope.ok !== true || envelope.data === undefined)) {
293
+ return { status: "invalid", envelopes: [] };
294
+ }
295
+ return { status: "collected", envelopes };
296
+ }
297
+ catch {
298
+ return { status: "invalid", envelopes: [] };
299
+ }
300
+ }
301
+ function summarizeFillRates(step, allowedProperties) {
302
+ const propertyFillRates = {};
303
+ let sampled = 0;
304
+ for (const envelope of step.envelopes) {
305
+ const data = asRecord(envelope.data);
306
+ const meta = asRecord(envelope.meta);
307
+ const property = normalizePropertyName(data?.property);
308
+ const fillRate = finiteRatio(data?.fillRate);
309
+ if (property && allowedProperties.has(property) && fillRate !== null)
310
+ propertyFillRates[property] = fillRate;
311
+ sampled = Math.max(sampled, evidenceCount(meta?.sampled) ?? evidenceCount(data?.sampled) ?? 0);
312
+ }
313
+ return { sampled, propertyFillRates };
314
+ }
315
+ function records(step) {
316
+ const out = [];
317
+ for (const envelope of step.envelopes) {
318
+ if (Array.isArray(envelope.data)) {
319
+ for (const value of envelope.data) {
320
+ const record = asRecord(value);
321
+ if (record)
322
+ out.push(record);
323
+ }
324
+ continue;
325
+ }
326
+ const data = asRecord(envelope.data);
327
+ if (!data)
328
+ continue;
329
+ if (Array.isArray(data.results)) {
330
+ for (const value of data.results) {
331
+ const record = asRecord(value);
332
+ if (record)
333
+ out.push(record);
334
+ }
335
+ }
336
+ else {
337
+ out.push(data);
338
+ }
339
+ }
340
+ return out;
341
+ }
342
+ function firstRecord(step) {
343
+ return records(step)[0];
344
+ }
345
+ function recordCount(step) {
346
+ return records(step).length;
347
+ }
348
+ function countStatuses(signals) {
349
+ return signals.reduce((counts, signal) => {
350
+ counts[signal.status] += 1;
351
+ return counts;
352
+ }, { collected: 0, failed: 0, missing: 0, invalid: 0 });
353
+ }
354
+ function readJson(file, label) {
355
+ if (!existsSync(file))
356
+ throw new CliError("AGENT_EVIDENCE_FILE_MISSING", `Missing ${label}: ${file}`);
357
+ try {
358
+ assertReadableSize(file);
359
+ return JSON.parse(readFileSync(file, "utf8"));
360
+ }
361
+ catch (error) {
362
+ if (error instanceof CliError)
363
+ throw error;
364
+ throw new CliError("AGENT_EVIDENCE_FILE_INVALID", `Invalid ${label}: ${file}`);
365
+ }
366
+ }
367
+ function assertReadableSize(file) {
368
+ if (statSync(file).size > MAX_EVIDENCE_FILE_BYTES) {
369
+ throw new CliError("AGENT_EVIDENCE_FILE_TOO_LARGE", `Evidence file exceeds ${MAX_EVIDENCE_FILE_BYTES} bytes: ${file}`);
370
+ }
371
+ }
372
+ function normalizePortalId(value) {
373
+ const normalized = typeof value === "number" ? String(value) : typeof value === "string" ? value.trim() : "";
374
+ return /^\d+$/.test(normalized) ? normalized : null;
375
+ }
376
+ function normalizeHublet(value) {
377
+ if (typeof value !== "string")
378
+ return null;
379
+ const normalized = value.trim().toLowerCase();
380
+ return ["us", "na", "na1", "na2", "eu1", "ap1"].includes(normalized)
381
+ ? normalized
382
+ : null;
383
+ }
384
+ function normalizePropertyName(value) {
385
+ if (typeof value !== "string")
386
+ return null;
387
+ return /^[A-Za-z0-9_]{1,120}$/.test(value) ? value : null;
388
+ }
389
+ function finiteRatio(value) {
390
+ return typeof value === "number" && Number.isFinite(value) && value >= 0 && value <= 1 ? value : null;
391
+ }
392
+ function evidenceCount(value) {
393
+ return typeof value === "number" && Number.isInteger(value) && value >= 0 && value <= MAX_EVIDENCE_COUNT
394
+ ? value
395
+ : null;
396
+ }
397
+ function isIsoDateTime(value) {
398
+ return typeof value === "string" && !Number.isNaN(Date.parse(value)) && value.includes("T");
399
+ }
400
+ function validateCheckpointSteps(steps, label) {
401
+ if (!Array.isArray(steps)
402
+ || new Set(steps).size !== steps.length
403
+ || steps.some((step) => !Number.isInteger(step) || step < 0 || step >= PORTAL_BASELINE_SIGNALS.length)) {
404
+ throw new CliError("AGENT_EVIDENCE_CHECKPOINT_INVALID", `Checkpoint ${label} must contain unique portal-baseline step indexes.`);
405
+ }
406
+ }
407
+ function asRecord(value) {
408
+ return value !== null && typeof value === "object" && !Array.isArray(value)
409
+ ? value
410
+ : undefined;
411
+ }
412
+ function stableStringify(value) {
413
+ if (Array.isArray(value))
414
+ return `[${value.map(stableStringify).join(",")}]`;
415
+ if (value !== null && typeof value === "object") {
416
+ const record = value;
417
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(",")}}`;
418
+ }
419
+ return JSON.stringify(value);
420
+ }
421
+ //# sourceMappingURL=evidence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/commands/agent/evidence.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
+ import { join, resolve } from "node:path";
1
2
  import { CliError, printResult } from "../../core/output.js";
2
3
  import { registerActionContractCommands } from "./contracts.js";
4
+ import { buildRevFleetEvidence, writeRevFleetEvidenceReport, submitRevFleetEvidence, writeRevFleetEvidence, } from "./evidence.js";
3
5
  import { AGENT_PRINCIPLES, recipeIds, resolveRecipe } from "./recipes.js";
4
6
  import { runAgentRecipe } from "./runner.js";
5
7
  function shellQuoteArg(value) {
@@ -118,6 +120,31 @@ export function registerAgent(program, getCtx) {
118
120
  const agent = program
119
121
  .command("agent")
120
122
  .description("Agent-safe HubSpot operator runbooks: public API first, scheduled, auditable, policy-aware");
123
+ program
124
+ .command("baseline")
125
+ .description("Run the read-only Portal Baseline and write signed aggregate evidence plus a human report")
126
+ .option("--output <dir>", "Evidence directory (default: ~/.revfleet/agent-runs/portal-baseline/<run>)")
127
+ .option("--resume", "Resume from checkpoint in the output directory")
128
+ .option("--fail-fast", "Stop at the first inaccessible signal instead of preserving partial coverage")
129
+ .action(async (opts) => {
130
+ const ctx = getCtx();
131
+ const result = await runAgentRecipe(ctx, "portal-baseline", {
132
+ output: opts.output ? String(opts.output) : undefined,
133
+ resume: Boolean(opts.resume),
134
+ continueOnError: !opts.failFast,
135
+ });
136
+ const evidenceFile = join(result.outputDir, "revfleet-evidence.json");
137
+ const reportFile = join(result.outputDir, "portal-baseline.md");
138
+ const evidence = writeRevFleetEvidence(result.outputDir, evidenceFile);
139
+ writeRevFleetEvidenceReport(evidence, reportFile);
140
+ printResult(ctx, {
141
+ ...result,
142
+ coverage: evidence.coverage.status,
143
+ evidenceFile,
144
+ reportFile,
145
+ privacy: evidence.privacy,
146
+ });
147
+ });
121
148
  registerActionContractCommands(agent, getCtx);
122
149
  agent
123
150
  .command("list")
@@ -162,6 +189,57 @@ export function registerAgent(program, getCtx) {
162
189
  });
163
190
  printResult(ctx, result);
164
191
  });
192
+ const evidence = agent
193
+ .command("evidence")
194
+ .description("Export aggregate, PII-free evidence from an hscli agent run");
195
+ evidence
196
+ .command("export")
197
+ .argument("<run-directory>", "Completed portal-baseline evidence directory")
198
+ .option("--output <file>", "Write revfleet.hscli-evidence/v1 JSON to this file")
199
+ .description("Build a deterministic RevFleet evidence contract without uploading raw records or user identities")
200
+ .action((runDirectory, opts) => {
201
+ const ctx = getCtx();
202
+ const outputFile = opts.output ? resolve(String(opts.output)) : null;
203
+ const exported = outputFile
204
+ ? writeRevFleetEvidence(String(runDirectory), outputFile)
205
+ : buildRevFleetEvidence(String(runDirectory));
206
+ printResult(ctx, {
207
+ outputFile,
208
+ evidence: exported,
209
+ });
210
+ });
211
+ evidence
212
+ .command("report")
213
+ .argument("<run-directory>", "Completed portal-baseline evidence directory")
214
+ .option("--output <file>", "Write the Markdown report to this file")
215
+ .description("Render a human-readable report from signed aggregate evidence only")
216
+ .action((runDirectory, opts) => {
217
+ const ctx = getCtx();
218
+ const root = resolve(String(runDirectory));
219
+ const outputFile = opts.output ? resolve(String(opts.output)) : join(root, "portal-baseline.md");
220
+ const evidenceValue = buildRevFleetEvidence(root);
221
+ writeRevFleetEvidenceReport(evidenceValue, outputFile);
222
+ printResult(ctx, {
223
+ outputFile,
224
+ coverage: evidenceValue.coverage.status,
225
+ digest: evidenceValue.digest,
226
+ privacy: evidenceValue.privacy,
227
+ });
228
+ });
229
+ evidence
230
+ .command("submit")
231
+ .argument("<run-directory>", "Completed portal-baseline evidence directory")
232
+ .option("--backend-url <url>", "RevFleet origin (or set REVFLEET_BACKEND_URL)")
233
+ .option("--api-key-env <name>", "Environment variable holding a scan:run RevFleet API key", "REVFLEET_API_KEY")
234
+ .description("Submit only the signed aggregate evidence contract; raw step files remain local")
235
+ .action(async (runDirectory, opts) => {
236
+ const ctx = getCtx();
237
+ const result = await submitRevFleetEvidence(String(runDirectory), {
238
+ backendUrl: opts.backendUrl ? String(opts.backendUrl) : undefined,
239
+ apiKeyEnv: String(opts.apiKeyEnv),
240
+ });
241
+ printResult(ctx, result);
242
+ });
165
243
  const schedule = agent.command("schedule").description("Render schedule artifacts for agent runbooks");
166
244
  schedule
167
245
  .command("render")
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAmB,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAuB,MAAM,cAAc,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAW7C,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACzD,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,IAAc;IAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;AAC1C,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAW;IACzC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,QAAQ,CAAC,6BAA6B,EAAE,yDAAyD,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IACjC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,GAAG,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IAChE,IAAI,GAAG,CAAC,YAAY;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;IACtE,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,GAAe,EAAE,IAAc;IACpD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,mBAAmB,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1G,OAAO,SAAS,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,YAAY,CAAC,GAAe,EAAE,QAAgB;IACrD,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,GAAe,EAAE,QAAgB;IACnD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACL,aAAa,EAAE,WAAW;QAC1B,MAAM,EAAE,MAAM,CAAC,EAAE;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;QAClC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACtC,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE;YACV,yCAAyC;YACzC,8CAA8C;YAC9C,uDAAuD;YACvD,6DAA6D;YAC7D,6DAA6D;YAC7D,6FAA6F;SAC9F;QACD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,GAAe,EACf,QAAgB,EAChB,MAAsB,EACtB,OAAe;IAEf,MAAM,IAAI,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxF,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;IACvC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,GAAG,IAAI,IAAI,OAAO,mBAAmB,QAAQ,aAAa,CAAC;IACpE,CAAC;IACD,IAAI,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAChC,OAAO;YACL,2BAA2B;YAC3B,KAAK;YACL,aAAa;YACb,gBAAgB,IAAI,GAAG;YACvB,OAAO;YACP,YAAY;YACZ,4BAA4B;YAC5B,YAAY;YACZ,qCAAqC;YACrC,eAAe;YACf,8BAA8B;YAC9B,6CAA6C;YAC7C,gBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE;SAC3C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,eAAe,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvF,OAAO;QACL,4CAA4C;QAC5C,4GAA4G;QAC5G,yBAAyB;QACzB,QAAQ;QACR,4DAA4D;QAC5D,+BAA+B;QAC/B,WAAW;QACX,GAAG,WAAW;QACd,YAAY;QACZ,oCAAoC;QACpC,yFAAyF;QACzF,SAAS;QACT,UAAU;KACX,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAgB,EAAE,MAAwB;IACtE,MAAM,KAAK,GAAG,OAAO;SAClB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,4FAA4F,CAAC,CAAC;IAE7G,8BAA8B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAE9C,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,gDAAgD,CAAC;SAC7D,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,GAAG,EAAE;YACf,UAAU,EAAE,gBAAgB;YAC5B,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC;gBACjC,OAAO;oBACL,EAAE,EAAE,MAAM,CAAC,EAAE;oBACb,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;iBAClD,CAAC;YACJ,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,MAAM,CAAC;SACf,QAAQ,CAAC,UAAU,EAAE,4DAA4D,CAAC;SAClF,WAAW,CAAC,+DAA+D,CAAC;SAC5E,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;QACjB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,WAAW,CAAC,GAAG,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEL,KAAK;SACF,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,UAAU,EAAE,4DAA4D,CAAC;SAClF,MAAM,CAAC,gBAAgB,EAAE,qEAAqE,CAAC;SAC/F,MAAM,CAAC,UAAU,EAAE,gDAAgD,CAAC;SACpE,MAAM,CAAC,qBAAqB,EAAE,sDAAsD,CAAC;SACrF,WAAW,CAAC,uEAAuE,CAAC;SACpF,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE;YAC/C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;YACrD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5B,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;SAC/C,CAAC,CAAC;QACH,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEL,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,8CAA8C,CAAC,CAAC;IACvG,QAAQ;SACL,OAAO,CAAC,QAAQ,CAAC;SACjB,QAAQ,CAAC,UAAU,EAAE,4DAA4D,CAAC;SAClF,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,EAAE,MAAM,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,iDAAiD,EAAE,WAAW,CAAC;SACvF,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;QACrB,aAAa,CAAC,MAAM,CAAC,CAAC;QACtB,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAmB,CAAC;QAC/D,IAAI,CAAC,CAAC,MAAM,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,+CAA+C,CAAC,CAAC;QACvG,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;QAC9C,WAAW,CAAC,GAAG,EAAE;YACf,MAAM;YACN,MAAM;YACN,eAAe,EAAE,IAAI;YACrB,QAAQ,EAAE,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC;SAC5D,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
@@ -83,6 +83,10 @@ export function registerAudit(program, getCtx) {
83
83
  totalLoaded: all.length,
84
84
  afterFilters: events.length,
85
85
  showing: Math.min(events.length, limit),
86
+ summary: {
87
+ requests: all.length,
88
+ errors: all.filter((event) => Boolean(event.error) || (event.status !== undefined && event.status >= 400)).length,
89
+ },
86
90
  filters: {
87
91
  since: opts.since ?? "(none)",
88
92
  writesOnly: Boolean(opts.writesOnly),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/audit/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/audit/index.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  # COMMAND_TREE
2
2
 
3
- > Updated: 2026-07-09 for 0.9.0
3
+ > Updated: 2026-07-10 for 0.9.1
4
4
  > See also: [COMMAND_COMPATIBILITY.md](COMMAND_COMPATIBILITY.md) · [ARCHITECTURE.md](ARCHITECTURE.md) · [MCP.md](MCP.md)
5
5
 
6
6
  High-level map of every hscli command. For detailed args and examples per command, run `hscli <domain> <cmd> --help`.
@@ -54,8 +54,13 @@ High-level map of every hscli command. For detailed args and examples per comman
54
54
 
55
55
  ## Agent
56
56
 
57
- - `hscli agent list` — list deterministic operator recipes (`data-cleanup`, `pipeline-risk`, `automation-risk`)
57
+ - `hscli baseline [--output <dir>] [--resume] [--fail-fast]` — run the 12-signal read-only Portal Baseline and write `portal-baseline.md`, signed aggregate `revfleet-evidence.json`, and the local audit ledger; partial coverage is the default
58
+ - `hscli agent list` — list deterministic operator recipes (`portal-baseline`, `data-cleanup`, `pipeline-risk`, `automation-risk`)
58
59
  - `hscli agent plan <recipe>` — render a public-API-first, audit-friendly runbook without executing HubSpot requests
60
+ - `hscli agent run <recipe> [--output <dir>] [--resume] [--continue-on-error]` — execute a read-only runbook into a resumable local evidence directory
61
+ - `hscli agent evidence export <run-directory> [--output <file>]` — create signed aggregate-only `revfleet.hscli-evidence/v1` JSON; raw steps and identities remain local
62
+ - `hscli agent evidence report <run-directory> [--output <file>]` — render the deterministic Markdown report from aggregate evidence only
63
+ - `hscli agent evidence submit <run-directory> [--backend-url <origin>] [--api-key-env <name>]` — submit signed aggregate evidence to an explicit RevFleet origin (`REVFLEET_BACKEND_URL` is the fallback); does not create a full scan score
59
64
  - `hscli agent schedule render <recipe> [--target cron|github-actions|launchd] [--cron "0 8 * * 1"]` — render a schedule artifact; does not install it
60
65
 
61
66
  ## Context
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revfleet/hscli",
3
- "version": "0.9.0",
3
+ "version": "0.9.2",
4
4
  "description": "HubSpot operations and migration control plane for humans and agents, with deterministic runbooks, policy guardrails, and auditable evidence.",
5
5
  "type": "module",
6
6
  "bin": {