@revfleet/hscli 0.10.0 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +31 -1
  3. package/dist/cli.js +2 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/cloud/cloud-run-caller-contract.d.ts +28 -0
  6. package/dist/cloud/cloud-run-caller-contract.js +35 -0
  7. package/dist/cloud/cloud-run-caller-contract.js.map +1 -0
  8. package/dist/cloud/main.d.ts +1 -0
  9. package/dist/cloud/main.js +15 -0
  10. package/dist/cloud/main.js.map +1 -0
  11. package/dist/cloud/server.d.ts +5 -0
  12. package/dist/cloud/server.js +133 -0
  13. package/dist/cloud/server.js.map +1 -0
  14. package/dist/commands/agent/access-baseline.d.ts +47 -0
  15. package/dist/commands/agent/access-baseline.js +238 -0
  16. package/dist/commands/agent/access-baseline.js.map +1 -0
  17. package/dist/commands/agent/index.js +99 -11
  18. package/dist/commands/agent/index.js.map +1 -1
  19. package/dist/commands/agent/recipes.d.ts +7 -1
  20. package/dist/commands/agent/recipes.js +57 -1
  21. package/dist/commands/agent/recipes.js.map +1 -1
  22. package/dist/commands/agent/reporting-joinability.d.ts +129 -0
  23. package/dist/commands/agent/reporting-joinability.js +412 -0
  24. package/dist/commands/agent/reporting-joinability.js.map +1 -0
  25. package/dist/commands/agent/runner.d.ts +1 -0
  26. package/dist/commands/agent/runner.js +181 -27
  27. package/dist/commands/agent/runner.js.map +1 -1
  28. package/dist/commands/audit/index.js +2 -1
  29. package/dist/commands/audit/index.js.map +1 -1
  30. package/dist/commands/auth/index.js +25 -18
  31. package/dist/commands/auth/index.js.map +1 -1
  32. package/dist/commands/backup/index.js +6 -8
  33. package/dist/commands/backup/index.js.map +1 -1
  34. package/dist/commands/crm/shared.d.ts +1 -0
  35. package/dist/commands/crm/shared.js +7 -3
  36. package/dist/commands/crm/shared.js.map +1 -1
  37. package/dist/commands/crm/sync.js +170 -27
  38. package/dist/commands/crm/sync.js.map +1 -1
  39. package/dist/commands/sales/index.js +2 -0
  40. package/dist/commands/sales/index.js.map +1 -1
  41. package/dist/commands/sales/views.d.ts +3 -0
  42. package/dist/commands/sales/views.js +263 -0
  43. package/dist/commands/sales/views.js.map +1 -0
  44. package/dist/commands/trace/index.js +11 -4
  45. package/dist/commands/trace/index.js.map +1 -1
  46. package/dist/core/bounded-response.d.ts +2 -0
  47. package/dist/core/bounded-response.js +37 -0
  48. package/dist/core/bounded-response.js.map +1 -0
  49. package/dist/core/http.d.ts +14 -4
  50. package/dist/core/http.js +145 -40
  51. package/dist/core/http.js.map +1 -1
  52. package/dist/core/policy.js +8 -0
  53. package/dist/core/policy.js.map +1 -1
  54. package/dist/core/request-path.d.ts +13 -0
  55. package/dist/core/request-path.js +90 -0
  56. package/dist/core/request-path.js.map +1 -0
  57. package/dist/core/version.d.ts +1 -0
  58. package/dist/core/version.js +3 -0
  59. package/dist/core/version.js.map +1 -0
  60. package/dist/mcp/compat-hubspot.js +2 -2
  61. package/dist/mcp/compat-hubspot.js.map +1 -1
  62. package/dist/mcp/diagnostics.js +2 -1
  63. package/dist/mcp/diagnostics.js.map +1 -1
  64. package/dist/mcp/server.js +3 -3
  65. package/dist/mcp/server.js.map +1 -1
  66. package/docs/CAPABILITY_LIBRARY.md +6 -0
  67. package/docs/CLOUD_RUN.md +188 -0
  68. package/docs/COMMAND_TREE.md +12 -2
  69. package/docs/INTERNAL_ENDPOINTS.md +1 -1
  70. package/docs/PORTAL_BACKUP.md +26 -2
  71. package/docs/RELEASE_GOVERNANCE.md +7 -0
  72. package/docs/SAFETY_MODEL.md +23 -4
  73. package/docs/TUTORIALS/secure-agent-writes.md +3 -2
  74. package/docs/VALIDATION_BOUNDARIES.md +101 -0
  75. package/docs/policy-templates/compliance-strict.json +7 -0
  76. package/examples/cloud-run-mcp-caller.mjs +71 -0
  77. package/package.json +11 -8
@@ -0,0 +1,238 @@
1
+ import { createHash } from "node:crypto";
2
+ import { chmodSync, existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
3
+ import { dirname, join, resolve } from "node:path";
4
+ import { listEndpointCapabilities } from "../../core/capabilities.js";
5
+ import { CliError } from "../../core/output.js";
6
+ const MAX_STEP_OUTPUT_BYTES = 1024 * 1024;
7
+ const READ_ONLY_RECHECK = [
8
+ "hscli agent plan access-baseline",
9
+ "hscli --profile <approved-profile> agent run access-baseline --confirm-read-only",
10
+ ];
11
+ const DECISIONS = {
12
+ reachable: "This family is reachable for a separate, scoped read-only review; it does not prove data completeness or authority to write.",
13
+ missingScopeOrPermission: "Ask an authorized administrator to review the least-privilege scope and permission path; do not retry automatically.",
14
+ unsupportedEndpointOrSubscription: "Confirm endpoint and subscription availability manually; do not treat this as a portal defect.",
15
+ apiFailure: "Resolve the authentication, service, or network condition before drawing an access conclusion; do not retry automatically.",
16
+ notProbed: "Review the no-network plan, obtain approval for the listed public reads, then run the explicit re-check.",
17
+ };
18
+ const MISSING_EVIDENCE = {
19
+ missingScopeOrPermission: "A missing declared scope or HTTP 403 does not distinguish OAuth/private-app scope, user permission, or product prerequisite.",
20
+ unsupportedEndpointOrSubscription: "HTTP 404 does not distinguish an unavailable endpoint from a product or subscription prerequisite.",
21
+ apiFailure: "The probe did not return usable availability evidence for this endpoint family.",
22
+ notProbed: "No completed capability probe was recorded for this endpoint family.",
23
+ };
24
+ export function buildAccessBaselineEvidence(runDirectory) {
25
+ const root = resolve(runDirectory);
26
+ const manifest = readJson(join(root, "manifest.json"), "run manifest");
27
+ const checkpoint = readJson(join(root, "checkpoint.json"), "run checkpoint");
28
+ validateRun(manifest, checkpoint);
29
+ const probe = readProbe(root, checkpoint);
30
+ const definitions = listEndpointCapabilities();
31
+ const capabilities = definitions.map((definition) => buildRow(definition.id, definition.pathPrefix, definition.requiredScopes, probe?.capabilities.get(definition.id), probe?.scopes ?? null));
32
+ const collected = definitions.filter((definition) => probe?.capabilities.has(definition.id)).length;
33
+ const failed = checkpoint.failedSteps.includes(0) ? 1 : 0;
34
+ const missing = definitions.length - collected;
35
+ const unsigned = {
36
+ schema: "hscli.access-baseline/v1",
37
+ source: { product: "hscli", recipe: "access-baseline" },
38
+ run: {
39
+ id: manifest.runId,
40
+ status: manifest.status,
41
+ startedAt: manifest.startedAt,
42
+ completedAt: manifest.completedAt,
43
+ },
44
+ coverage: {
45
+ status: collected === definitions.length && failed === 0 ? "complete" : "partial",
46
+ collected,
47
+ missing,
48
+ failed,
49
+ },
50
+ capabilities,
51
+ privacy: {
52
+ aggregateStatusOnly: true,
53
+ containsPortalIdentity: false,
54
+ containsScopes: false,
55
+ containsResponseBodies: false,
56
+ containsCredentials: false,
57
+ },
58
+ };
59
+ return {
60
+ ...unsigned,
61
+ digest: {
62
+ algorithm: "sha256",
63
+ value: createHash("sha256").update(stableStringify(unsigned)).digest("hex"),
64
+ },
65
+ };
66
+ }
67
+ export function writeAccessBaselineEvidence(runDirectory, outputFile) {
68
+ const evidence = buildAccessBaselineEvidence(runDirectory);
69
+ writeRestrictedFile(resolve(outputFile), `${JSON.stringify(evidence, null, 2)}\n`);
70
+ return evidence;
71
+ }
72
+ export function renderAccessBaselineMarkdown(evidence) {
73
+ const coverage = evidence.coverage.status === "complete" ? "Complete" : "Partial";
74
+ const lines = [
75
+ "# Integration and Access Readiness",
76
+ "",
77
+ "> Unscored, read-only, local aggregate-only availability evidence. This is not a portal score, permission grant, or authorization to write.",
78
+ "",
79
+ `**Coverage:** ${coverage} (${evidence.coverage.collected}/${evidence.capabilities.length} endpoint families collected)`,
80
+ "",
81
+ "| Endpoint family | Observed status | Missing evidence | Human decision |",
82
+ "| --- | --- | --- | --- |",
83
+ ];
84
+ for (const row of evidence.capabilities) {
85
+ lines.push([
86
+ `| ${row.endpointFamily}`,
87
+ row.observedStatus,
88
+ row.missingEvidence.join("<br>") || "—",
89
+ row.humanDecision,
90
+ "|",
91
+ ].join(" "));
92
+ }
93
+ lines.push("", "## Read-only re-check", "", "```bash", ...READ_ONLY_RECHECK, "```", "", "The matrix is local only: it contains no CRM rows, portal or profile identifiers, scope names, tokens, raw response bodies, or request URLs.", "");
94
+ return lines.join("\n");
95
+ }
96
+ export function writeAccessBaselineReport(evidence, outputFile) {
97
+ const report = renderAccessBaselineMarkdown(evidence);
98
+ writeRestrictedFile(resolve(outputFile), report);
99
+ return report;
100
+ }
101
+ function buildRow(capabilityId, endpointFamily, requiredScopes, observed, scopes) {
102
+ const statusCode = observed?.statusCode ?? null;
103
+ const missingDeclaredScope = scopes !== null && requiredScopes.some((scope) => !scopes.has(normalizeScope(scope)));
104
+ if (statusCode !== null && statusCode >= 200 && statusCode < 300) {
105
+ return completeRow(capabilityId, endpointFamily, "reachable", [], DECISIONS.reachable);
106
+ }
107
+ if (missingDeclaredScope || statusCode === 403) {
108
+ return completeRow(capabilityId, endpointFamily, "missing_scope_or_permission", [MISSING_EVIDENCE.missingScopeOrPermission], DECISIONS.missingScopeOrPermission);
109
+ }
110
+ if (statusCode === 404) {
111
+ return completeRow(capabilityId, endpointFamily, "unsupported_endpoint_or_subscription", [MISSING_EVIDENCE.unsupportedEndpointOrSubscription], DECISIONS.unsupportedEndpointOrSubscription);
112
+ }
113
+ if (observed) {
114
+ return completeRow(capabilityId, endpointFamily, "api_failure", [MISSING_EVIDENCE.apiFailure], DECISIONS.apiFailure);
115
+ }
116
+ return completeRow(capabilityId, endpointFamily, "not_probed", [MISSING_EVIDENCE.notProbed], DECISIONS.notProbed);
117
+ }
118
+ function completeRow(capabilityId, endpointFamily, observedStatus, missingEvidence, humanDecision) {
119
+ return {
120
+ capabilityId,
121
+ endpointFamily,
122
+ observedStatus,
123
+ missingEvidence,
124
+ humanDecision,
125
+ readOnlyRecheck: READ_ONLY_RECHECK,
126
+ };
127
+ }
128
+ function readProbe(root, checkpoint) {
129
+ if (checkpoint.failedSteps.includes(0) || !checkpoint.completedSteps.includes(0))
130
+ return null;
131
+ const file = join(root, "steps", "001.stdout.jsonl");
132
+ if (!existsSync(file) || statSync(file).size > MAX_STEP_OUTPUT_BYTES)
133
+ return null;
134
+ let latest = null;
135
+ try {
136
+ for (const line of readFileSync(file, "utf8").split("\n")) {
137
+ const trimmed = line.trim();
138
+ if (!trimmed)
139
+ continue;
140
+ try {
141
+ const envelope = asRecord(JSON.parse(trimmed));
142
+ const data = asRecord(envelope?.data);
143
+ if (envelope?.ok === true && Array.isArray(data?.capabilities))
144
+ latest = data;
145
+ }
146
+ catch {
147
+ // Individual JSONL lines are untrusted and may be incomplete.
148
+ }
149
+ }
150
+ }
151
+ catch {
152
+ return null;
153
+ }
154
+ if (!latest)
155
+ return null;
156
+ const capabilities = new Map();
157
+ for (const value of latest.capabilities) {
158
+ const row = asRecord(value);
159
+ const id = normalizeCapabilityId(row?.id);
160
+ if (!id || typeof row?.status !== "string")
161
+ continue;
162
+ capabilities.set(id, { statusCode: validStatusCode(row.statusCode) });
163
+ }
164
+ const scopes = Array.isArray(latest.scopes)
165
+ ? new Set(latest.scopes.filter((scope) => typeof scope === "string").map(normalizeScope))
166
+ : null;
167
+ return { capabilities, scopes };
168
+ }
169
+ function validateRun(manifest, checkpoint) {
170
+ if (manifest.schema !== "hscli.agent-run/v1" || checkpoint.schema !== "hscli.agent-checkpoint/v1") {
171
+ throw new CliError("ACCESS_BASELINE_SCHEMA_INVALID", "Expected hscli agent-run/checkpoint v1 files.");
172
+ }
173
+ if (manifest.recipe !== "access-baseline" || checkpoint.recipe !== "access-baseline" || manifest.totalSteps !== 1) {
174
+ throw new CliError("ACCESS_BASELINE_RECIPE_INVALID", "Access baseline requires a completed one-step access-baseline run.");
175
+ }
176
+ if (!isIsoDateTime(manifest.startedAt) || !isIsoDateTime(manifest.completedAt)
177
+ || !["completed", "completed_with_errors"].includes(manifest.status)) {
178
+ throw new CliError("ACCESS_BASELINE_RUN_INCOMPLETE", "Access baseline requires a completed access-baseline run.");
179
+ }
180
+ if (!isIsoDateTime(checkpoint.updatedAt) || !validSteps(checkpoint.completedSteps) || !validSteps(checkpoint.failedSteps)
181
+ || checkpoint.completedSteps.some((step) => checkpoint.failedSteps.includes(step))) {
182
+ throw new CliError("ACCESS_BASELINE_CHECKPOINT_INVALID", "Access-baseline checkpoint must contain valid, non-overlapping step indexes.");
183
+ }
184
+ }
185
+ function readJson(file, label) {
186
+ if (!existsSync(file))
187
+ throw new CliError("ACCESS_BASELINE_FILE_MISSING", `Missing ${label}: ${file}`);
188
+ try {
189
+ if (statSync(file).size > MAX_STEP_OUTPUT_BYTES) {
190
+ throw new CliError("ACCESS_BASELINE_FILE_TOO_LARGE", `Access-baseline file exceeds ${MAX_STEP_OUTPUT_BYTES} bytes: ${file}`);
191
+ }
192
+ return JSON.parse(readFileSync(file, "utf8"));
193
+ }
194
+ catch (error) {
195
+ if (error instanceof CliError)
196
+ throw error;
197
+ throw new CliError("ACCESS_BASELINE_FILE_INVALID", `Invalid ${label}: ${file}`);
198
+ }
199
+ }
200
+ function writeRestrictedFile(destination, contents) {
201
+ mkdirSync(dirname(destination), { recursive: true, mode: 0o700 });
202
+ if (process.platform !== "win32")
203
+ chmodSync(dirname(destination), 0o700);
204
+ writeFileSync(destination, contents, { mode: 0o600 });
205
+ if (process.platform !== "win32")
206
+ chmodSync(destination, 0o600);
207
+ }
208
+ function asRecord(value) {
209
+ return value !== null && typeof value === "object" && !Array.isArray(value)
210
+ ? value
211
+ : undefined;
212
+ }
213
+ function normalizeCapabilityId(value) {
214
+ return typeof value === "string" && /^[a-z0-9-]{1,120}$/.test(value) ? value : null;
215
+ }
216
+ function validStatusCode(value) {
217
+ return typeof value === "number" && Number.isInteger(value) && value >= 100 && value <= 599 ? value : null;
218
+ }
219
+ function normalizeScope(scope) {
220
+ return scope.trim().toLowerCase();
221
+ }
222
+ function isIsoDateTime(value) {
223
+ return typeof value === "string" && value.includes("T") && !Number.isNaN(Date.parse(value));
224
+ }
225
+ function validSteps(value) {
226
+ return Array.isArray(value) && new Set(value).size === value.length
227
+ && value.every((step) => Number.isInteger(step) && step === 0);
228
+ }
229
+ function stableStringify(value) {
230
+ if (Array.isArray(value))
231
+ return `[${value.map(stableStringify).join(",")}]`;
232
+ if (value !== null && typeof value === "object") {
233
+ const record = value;
234
+ return `{${Object.keys(record).sort().map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`).join(",")}}`;
235
+ }
236
+ return JSON.stringify(value);
237
+ }
238
+ //# sourceMappingURL=access-baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-baseline.js","sourceRoot":"","sources":["../../../src/commands/agent/access-baseline.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  import { join, resolve } from "node:path";
2
2
  import { CliError, printResult } from "../../core/output.js";
3
+ import { buildAccessBaselineEvidence, writeAccessBaselineEvidence, writeAccessBaselineReport, } from "./access-baseline.js";
4
+ import { readReportingJoinabilityEvidence, runReportingJoinability, writeReportingJoinabilityReport, } from "./reporting-joinability.js";
3
5
  import { registerActionContractCommands } from "./contracts.js";
4
6
  import { buildRevFleetEvidence, writeRevFleetEvidenceReport, submitRevFleetEvidence, writeRevFleetEvidence, } from "./evidence.js";
5
7
  import { AGENT_PRINCIPLES, recipeIds, resolveRecipe } from "./recipes.js";
@@ -50,29 +52,39 @@ function renderRecipe(ctx, recipeId) {
50
52
  purpose: recipe.purpose,
51
53
  cadence: recipe.cadence,
52
54
  deterministicSignals: recipe.deterministicSignals,
53
- commands: recipe.commandArgv.map((argv) => renderCommand(ctx, argv)),
55
+ commands: recipe.planCommands ?? recipe.commandArgv.map((argv) => renderCommand(ctx, argv)),
56
+ readConfirmationRequired: recipe.requiresReadConfirmation,
57
+ schedulingAllowed: recipe.schedulingAllowed,
54
58
  };
55
59
  }
56
60
  function renderPlan(ctx, recipeId) {
57
61
  const recipe = renderRecipe(ctx, recipeId);
62
+ const definition = resolveRecipe(recipeId);
58
63
  return {
59
64
  executionMode: "plan-only",
60
65
  recipe: recipe.id,
61
66
  title: recipe.title,
62
- profile: ctx.profile,
63
- policyFile: ctx.policyFile ?? null,
64
- changeTicket: ctx.changeTicket ?? null,
65
- principles: AGENT_PRINCIPLES,
66
- guardrails: [
67
+ ...(definition.includeExecutionContextInPlan === false ? {} : {
68
+ profile: ctx.profile,
69
+ policyFile: ctx.policyFile ?? null,
70
+ changeTicket: ctx.changeTicket ?? null,
71
+ }),
72
+ principles: definition.principles ?? AGENT_PRINCIPLES,
73
+ guardrails: definition.guardrails ?? [
67
74
  "No writes are executed by `agent plan`.",
68
75
  "Runbooks use public HubSpot APIs by default.",
69
76
  "Every write-capable follow-up must still use --force.",
70
77
  "Use --policy-file and --change-ticket for governed portals.",
71
78
  "Use trace/audit commands to make agent activity reviewable.",
72
79
  "Internal migration adapters remain explicit allowlisted commands, not generic passthroughs.",
80
+ ...(recipe.readConfirmationRequired
81
+ ? ["This recipe requires --confirm-read-only and cannot be scheduled."]
82
+ : []),
73
83
  ],
74
84
  deterministicSignals: recipe.deterministicSignals,
75
85
  commands: recipe.commands,
86
+ readConfirmationRequired: recipe.readConfirmationRequired,
87
+ schedulingAllowed: recipe.schedulingAllowed,
76
88
  };
77
89
  }
78
90
  function renderScheduleArtifact(ctx, recipeId, target, rawCron) {
@@ -177,7 +189,7 @@ export function registerAgent(program, getCtx) {
177
189
  });
178
190
  agent
179
191
  .command("plan")
180
- .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
192
+ .argument("<recipe>", "portal-baseline|access-baseline|reporting-joinability|data-cleanup|pipeline-risk|automation-risk")
181
193
  .description("Render a safe runbook plan without executing HubSpot requests")
182
194
  .action((recipe) => {
183
195
  const ctx = getCtx();
@@ -185,20 +197,93 @@ export function registerAgent(program, getCtx) {
185
197
  });
186
198
  agent
187
199
  .command("run")
188
- .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
200
+ .argument("<recipe>", "portal-baseline|access-baseline|reporting-joinability|data-cleanup|pipeline-risk|automation-risk")
189
201
  .option("--output <dir>", "Evidence directory (default: ~/.revfleet/agent-runs/<recipe>/<run>)")
190
202
  .option("--resume", "Resume from checkpoint in the output directory")
191
203
  .option("--continue-on-error", "Run remaining steps and report completed_with_errors")
204
+ .option("--confirm-read-only", "Confirm the reviewed recipe may perform public API reads")
192
205
  .description("Execute a deterministic read-only recipe and write resumable evidence")
193
206
  .action(async (recipe, opts) => {
194
207
  const ctx = getCtx();
195
- const result = await runAgentRecipe(ctx, recipe, {
208
+ const selectedRecipe = resolveRecipe(recipe);
209
+ if (selectedRecipe.id === "reporting-joinability") {
210
+ if (opts.resume || opts.continueOnError) {
211
+ throw new CliError("REPORTING_JOINABILITY_RUN_OPTION_UNSUPPORTED", "Reporting joinability is a one-shot explicit re-check; --resume and --continue-on-error are not supported.");
212
+ }
213
+ const result = await runReportingJoinability(ctx, {
214
+ output: opts.output ? String(opts.output) : undefined,
215
+ confirmReadOnly: Boolean(opts.confirmReadOnly),
216
+ });
217
+ printResult(ctx, result);
218
+ return;
219
+ }
220
+ const result = await runAgentRecipe(ctx, selectedRecipe.id, {
196
221
  output: opts.output ? String(opts.output) : undefined,
197
222
  resume: Boolean(opts.resume),
198
223
  continueOnError: Boolean(opts.continueOnError),
224
+ confirmReadOnly: Boolean(opts.confirmReadOnly),
199
225
  });
226
+ if (selectedRecipe.id === "access-baseline") {
227
+ const evidenceFile = join(result.outputDir, "access-baseline.json");
228
+ const reportFile = join(result.outputDir, "access-baseline.md");
229
+ const evidence = writeAccessBaselineEvidence(result.outputDir, evidenceFile);
230
+ writeAccessBaselineReport(evidence, reportFile);
231
+ printResult(ctx, {
232
+ ...result,
233
+ evidenceFile,
234
+ reportFile,
235
+ coverage: evidence.coverage.status,
236
+ privacy: evidence.privacy,
237
+ submitted: false,
238
+ });
239
+ return;
240
+ }
200
241
  printResult(ctx, result);
201
242
  });
243
+ const accessBaseline = agent
244
+ .command("access-baseline")
245
+ .description("Render local aggregate-only Integration and Access Readiness evidence");
246
+ accessBaseline
247
+ .command("report")
248
+ .argument("<run-directory>", "Completed access-baseline evidence directory")
249
+ .option("--output <file>", "Write the Markdown report to this file")
250
+ .description("Regenerate the local access matrix without calling HubSpot or RevFleet")
251
+ .action((runDirectory, opts) => {
252
+ const ctx = getCtx();
253
+ const root = resolve(String(runDirectory));
254
+ const outputFile = opts.output ? resolve(String(opts.output)) : join(root, "access-baseline.md");
255
+ const evidence = buildAccessBaselineEvidence(root);
256
+ writeAccessBaselineReport(evidence, outputFile);
257
+ printResult(ctx, {
258
+ outputFile,
259
+ coverage: evidence.coverage.status,
260
+ privacy: evidence.privacy,
261
+ submitted: false,
262
+ });
263
+ });
264
+ const reportingJoinability = agent
265
+ .command("reporting-joinability")
266
+ .description("Render local aggregate-only reporting joinability evidence; never audits report/dashboard UI");
267
+ reportingJoinability
268
+ .command("report")
269
+ .argument("<run-directory>", "Completed reporting-joinability evidence directory")
270
+ .option("--output <file>", "Write the Markdown report to this file")
271
+ .description("Regenerate the local reporting joinability report without calling HubSpot")
272
+ .action((runDirectory, opts) => {
273
+ const ctx = getCtx();
274
+ const root = resolve(String(runDirectory));
275
+ const outputFile = opts.output ? resolve(String(opts.output)) : join(root, "reporting-joinability.md");
276
+ const evidence = readReportingJoinabilityEvidence(root);
277
+ writeReportingJoinabilityReport(evidence, outputFile);
278
+ printResult(ctx, {
279
+ outputFile,
280
+ coverage: evidence.coverage.status,
281
+ privacy: evidence.privacy,
282
+ submitted: false,
283
+ schedulingAllowed: false,
284
+ mcpExposed: false,
285
+ });
286
+ });
202
287
  const evidence = agent
203
288
  .command("evidence")
204
289
  .description("Export aggregate, PII-free evidence from an hscli agent run");
@@ -253,13 +338,16 @@ export function registerAgent(program, getCtx) {
253
338
  const schedule = agent.command("schedule").description("Render schedule artifacts for agent runbooks");
254
339
  schedule
255
340
  .command("render")
256
- .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
341
+ .argument("<recipe>", "portal-baseline|access-baseline|reporting-joinability|data-cleanup|pipeline-risk|automation-risk")
257
342
  .option("--target <target>", "cron|github-actions|launchd", "cron")
258
343
  .option("--cron <expr>", "Cron expression for cron/github-actions targets", "0 8 * * 1")
259
344
  .description("Render a schedule artifact; does not install or execute it")
260
345
  .action((recipe, opts) => {
261
346
  const ctx = getCtx();
262
- resolveRecipe(recipe);
347
+ const selectedRecipe = resolveRecipe(recipe);
348
+ if (!selectedRecipe.schedulingAllowed) {
349
+ throw new CliError("AGENT_SCHEDULE_NOT_ALLOWED", `Recipe '${selectedRecipe.id}' must be reviewed and confirmed for each read-only run; scheduling is not allowed.`);
350
+ }
263
351
  const target = String(opts.target ?? "cron");
264
352
  if (!["cron", "github-actions", "launchd"].includes(target)) {
265
353
  throw new CliError("AGENT_SCHEDULE_TARGET_UNKNOWN", "Expected --target cron|github-actions|launchd");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type AgentRecipeId = "portal-baseline" | "data-cleanup" | "pipeline-risk" | "automation-risk";
1
+ export type AgentRecipeId = "portal-baseline" | "access-baseline" | "reporting-joinability" | "data-cleanup" | "pipeline-risk" | "automation-risk";
2
2
  export type ScheduleTarget = "cron" | "github-actions" | "launchd";
3
3
  export interface AgentRecipe {
4
4
  id: AgentRecipeId;
@@ -7,6 +7,12 @@ export interface AgentRecipe {
7
7
  cadence: string;
8
8
  deterministicSignals: string[];
9
9
  commandArgv: string[][];
10
+ requiresReadConfirmation: boolean;
11
+ schedulingAllowed: boolean;
12
+ principles?: string[];
13
+ guardrails?: string[];
14
+ planCommands?: string[];
15
+ includeExecutionContextInPlan?: boolean;
10
16
  }
11
17
  export declare const AGENT_PRINCIPLES: string[];
12
18
  export declare function recipeIds(): AgentRecipeId[];
@@ -36,6 +36,56 @@ const RECIPES = {
36
36
  ["--format", "jsonl", "workflows", "v3", "list", "--limit", "100"],
37
37
  ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
38
38
  ],
39
+ requiresReadConfirmation: false,
40
+ schedulingAllowed: true,
41
+ },
42
+ "access-baseline": {
43
+ id: "access-baseline",
44
+ title: "Integration and access readiness",
45
+ purpose: "Produce a local, unscored matrix of the existing public endpoint-family probes without collecting CRM rows or attempting remediation.",
46
+ cadence: "before a scoped read-only review",
47
+ deterministicSignals: [
48
+ "endpoint-family reachability",
49
+ "scope or permission evidence gaps",
50
+ "endpoint or subscription evidence gaps",
51
+ "probe failure and not-probed evidence",
52
+ ],
53
+ commandArgv: [["--format", "jsonl", "doctor", "capabilities", "--refresh"]],
54
+ requiresReadConfirmation: true,
55
+ schedulingAllowed: false,
56
+ },
57
+ "reporting-joinability": {
58
+ id: "reporting-joinability",
59
+ title: "Reporting joinability",
60
+ purpose: "Produce a local, unscored contract for the narrow sequence-to-meeting-to-deal API evidence chain without reading CRM rows or assessing HubSpot report UI.",
61
+ cadence: "manual-before-reporting-design",
62
+ deterministicSignals: [
63
+ "sequence surface explicitly not probed because documented sequence listing requires an identity",
64
+ "meeting and deal metadata reachability",
65
+ "meeting-to-deal association-definition reachability",
66
+ "explicit sequence-to-meeting and native-report evidence gaps",
67
+ ],
68
+ commandArgv: [["agent", "run", "reporting-joinability", "--confirm-read-only"]],
69
+ requiresReadConfirmation: true,
70
+ schedulingAllowed: false,
71
+ planCommands: ["hscli --profile <approved-profile> agent run reporting-joinability --confirm-read-only"],
72
+ includeExecutionContextInPlan: false,
73
+ principles: [
74
+ "public-api-read-only",
75
+ "aggregate-only",
76
+ "manual-confirmation",
77
+ "not-schedulable",
78
+ "no-mcp",
79
+ "no-submission",
80
+ ],
81
+ guardrails: [
82
+ "No network calls are executed by `agent plan`.",
83
+ "The run requires --confirm-read-only before public API reads.",
84
+ "The sequence surface is explicitly not probed: the documented list request requires an identity, which this contract never derives, stores, or sends.",
85
+ "The run stores aggregate status only; it stores no CRM rows, record IDs, response bodies, scopes, profile identity, tokens, or cookies.",
86
+ "The run performs no writes, automatic remediation, scheduling, MCP exposure, or submission.",
87
+ "HubSpot native report/dashboard UI, report inventory, and attribution correctness are unavailable and never inferred.",
88
+ ],
39
89
  },
40
90
  "data-cleanup": {
41
91
  id: "data-cleanup",
@@ -55,6 +105,8 @@ const RECIPES = {
55
105
  ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "contacts", "--property", "lifecyclestage", "--limit", "5000"],
56
106
  ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
57
107
  ],
108
+ requiresReadConfirmation: false,
109
+ schedulingAllowed: true,
58
110
  },
59
111
  "pipeline-risk": {
60
112
  id: "pipeline-risk",
@@ -74,6 +126,8 @@ const RECIPES = {
74
126
  ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "deals", "--property", "dealstage", "--limit", "5000"],
75
127
  ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
76
128
  ],
129
+ requiresReadConfirmation: false,
130
+ schedulingAllowed: true,
77
131
  },
78
132
  "automation-risk": {
79
133
  id: "automation-risk",
@@ -93,10 +147,12 @@ const RECIPES = {
93
147
  ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "contacts", "--property", "hs_email_optout", "--limit", "5000"],
94
148
  ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
95
149
  ],
150
+ requiresReadConfirmation: false,
151
+ schedulingAllowed: true,
96
152
  },
97
153
  };
98
154
  export function recipeIds() {
99
- return ["portal-baseline", "data-cleanup", "pipeline-risk", "automation-risk"];
155
+ return ["portal-baseline", "access-baseline", "reporting-joinability", "data-cleanup", "pipeline-risk", "automation-risk"];
100
156
  }
101
157
  export function resolveRecipe(id) {
102
158
  const recipe = RECIPES[id];
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../src/commands/agent/recipes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../src/commands/agent/recipes.ts"],"names":[],"mappings":"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"}