@revfleet/hscli 0.8.12 → 0.9.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.
Files changed (158) hide show
  1. package/CHANGELOG.md +197 -1
  2. package/README.md +243 -10
  3. package/dist/cli.js +27 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/agent/contracts.d.ts +3 -0
  6. package/dist/commands/agent/contracts.js +139 -0
  7. package/dist/commands/agent/contracts.js.map +1 -0
  8. package/dist/commands/agent/evidence.d.ts +68 -0
  9. package/dist/commands/agent/evidence.js +358 -0
  10. package/dist/commands/agent/evidence.js.map +1 -0
  11. package/dist/commands/agent/index.d.ts +3 -0
  12. package/dist/commands/agent/index.js +223 -0
  13. package/dist/commands/agent/index.js.map +1 -0
  14. package/dist/commands/agent/recipes.d.ts +13 -0
  15. package/dist/commands/agent/recipes.js +108 -0
  16. package/dist/commands/agent/recipes.js.map +1 -0
  17. package/dist/commands/agent/runner.d.ts +16 -0
  18. package/dist/commands/agent/runner.js +165 -0
  19. package/dist/commands/agent/runner.js.map +1 -0
  20. package/dist/commands/audit/index.js +4 -0
  21. package/dist/commands/audit/index.js.map +1 -1
  22. package/dist/commands/auth/index.js +64 -7
  23. package/dist/commands/auth/index.js.map +1 -1
  24. package/dist/commands/automation/index.js +30 -0
  25. package/dist/commands/automation/index.js.map +1 -1
  26. package/dist/commands/backup/index.d.ts +12 -0
  27. package/dist/commands/backup/index.js +459 -0
  28. package/dist/commands/backup/index.js.map +1 -0
  29. package/dist/commands/cms/content-ops.js +1 -1
  30. package/dist/commands/cms/content-ops.js.map +1 -1
  31. package/dist/commands/communication-preferences/index.js +207 -7
  32. package/dist/commands/communication-preferences/index.js.map +1 -1
  33. package/dist/commands/content-permissions/index.d.ts +22 -0
  34. package/dist/commands/content-permissions/index.js +141 -0
  35. package/dist/commands/content-permissions/index.js.map +1 -0
  36. package/dist/commands/context/index.d.ts +3 -0
  37. package/dist/commands/context/index.js +182 -0
  38. package/dist/commands/context/index.js.map +1 -0
  39. package/dist/commands/crm/associations.js +38 -0
  40. package/dist/commands/crm/associations.js.map +1 -1
  41. package/dist/commands/crm/custom-objects.js +39 -2
  42. package/dist/commands/crm/custom-objects.js.map +1 -1
  43. package/dist/commands/crm/dated.js +3 -3
  44. package/dist/commands/crm/dated.js.map +1 -1
  45. package/dist/commands/crm/migration.js +210 -2
  46. package/dist/commands/crm/migration.js.map +1 -1
  47. package/dist/commands/crm/properties.js +2 -1
  48. package/dist/commands/crm/properties.js.map +1 -1
  49. package/dist/commands/crm/property-batch.d.ts +1 -0
  50. package/dist/commands/crm/property-batch.js +44 -5
  51. package/dist/commands/crm/property-batch.js.map +1 -1
  52. package/dist/commands/crm/shared.js +21 -2
  53. package/dist/commands/crm/shared.js.map +1 -1
  54. package/dist/commands/crm/sync.js +1 -1
  55. package/dist/commands/crm/sync.js.map +1 -1
  56. package/dist/commands/doctor/index.js +193 -0
  57. package/dist/commands/doctor/index.js.map +1 -1
  58. package/dist/commands/email-tracking/index.d.ts +16 -0
  59. package/dist/commands/email-tracking/index.js +314 -0
  60. package/dist/commands/email-tracking/index.js.map +1 -0
  61. package/dist/commands/extensions/index.js +1 -1
  62. package/dist/commands/extensions/index.js.map +1 -1
  63. package/dist/commands/forms/index.js +15 -2
  64. package/dist/commands/forms/index.js.map +1 -1
  65. package/dist/commands/forms/legacy-v2.d.ts +7 -2
  66. package/dist/commands/forms/legacy-v2.js +103 -7
  67. package/dist/commands/forms/legacy-v2.js.map +1 -1
  68. package/dist/commands/guide/index.d.ts +1 -1
  69. package/dist/commands/guide/index.js +37 -4
  70. package/dist/commands/guide/index.js.map +1 -1
  71. package/dist/commands/internal/catalog.d.ts +1 -0
  72. package/dist/commands/internal/catalog.js +2 -0
  73. package/dist/commands/internal/catalog.js.map +1 -0
  74. package/dist/commands/internal/index.d.ts +26 -0
  75. package/dist/commands/internal/index.js +823 -0
  76. package/dist/commands/internal/index.js.map +1 -0
  77. package/dist/commands/internal-session.d.ts +15 -0
  78. package/dist/commands/internal-session.js +152 -0
  79. package/dist/commands/internal-session.js.map +1 -0
  80. package/dist/commands/lists/index.js +1 -1
  81. package/dist/commands/lists/index.js.map +1 -1
  82. package/dist/commands/marketing/email-audit.d.ts +32 -0
  83. package/dist/commands/marketing/email-audit.js +121 -0
  84. package/dist/commands/marketing/email-audit.js.map +1 -0
  85. package/dist/commands/marketing/index.js +2 -0
  86. package/dist/commands/marketing/index.js.map +1 -1
  87. package/dist/commands/mcp.js +5 -3
  88. package/dist/commands/mcp.js.map +1 -1
  89. package/dist/commands/playbooks/index.d.ts +3 -0
  90. package/dist/commands/playbooks/index.js +228 -0
  91. package/dist/commands/playbooks/index.js.map +1 -0
  92. package/dist/commands/portals/index.d.ts +3 -0
  93. package/dist/commands/portals/index.js +132 -0
  94. package/dist/commands/portals/index.js.map +1 -0
  95. package/dist/commands/reports/index.d.ts +3 -0
  96. package/dist/commands/reports/index.js +479 -0
  97. package/dist/commands/reports/index.js.map +1 -0
  98. package/dist/commands/sales-content/index.d.ts +13 -0
  99. package/dist/commands/sales-content/index.js +59 -0
  100. package/dist/commands/sales-content/index.js.map +1 -0
  101. package/dist/commands/sales-templates/index.d.ts +3 -0
  102. package/dist/commands/sales-templates/index.js +88 -0
  103. package/dist/commands/sales-templates/index.js.map +1 -0
  104. package/dist/commands/seed/cms.js +28 -45
  105. package/dist/commands/seed/cms.js.map +1 -1
  106. package/dist/commands/sequences/index.d.ts +18 -0
  107. package/dist/commands/sequences/index.js +263 -0
  108. package/dist/commands/sequences/index.js.map +1 -0
  109. package/dist/commands/settings/index.js +450 -102
  110. package/dist/commands/settings/index.js.map +1 -1
  111. package/dist/commands/settings/site-settings.d.ts +3 -0
  112. package/dist/commands/settings/site-settings.js +106 -0
  113. package/dist/commands/settings/site-settings.js.map +1 -0
  114. package/dist/commands/ui/index.js +14 -4
  115. package/dist/commands/ui/index.js.map +1 -1
  116. package/dist/commands/workflows/index.js +2 -0
  117. package/dist/commands/workflows/index.js.map +1 -1
  118. package/dist/commands/workflows/preflight.d.ts +23 -0
  119. package/dist/commands/workflows/preflight.js +295 -0
  120. package/dist/commands/workflows/preflight.js.map +1 -0
  121. package/dist/core/action-contract.d.ts +43 -0
  122. package/dist/core/action-contract.js +207 -0
  123. package/dist/core/action-contract.js.map +1 -0
  124. package/dist/core/auth.d.ts +6 -0
  125. package/dist/core/auth.js +85 -0
  126. package/dist/core/auth.js.map +1 -1
  127. package/dist/core/http.d.ts +8 -0
  128. package/dist/core/http.js +37 -5
  129. package/dist/core/http.js.map +1 -1
  130. package/dist/core/id-maps.d.ts +27 -0
  131. package/dist/core/id-maps.js +204 -0
  132. package/dist/core/id-maps.js.map +1 -0
  133. package/dist/core/output.d.ts +2 -1
  134. package/dist/core/output.js +34 -0
  135. package/dist/core/output.js.map +1 -1
  136. package/dist/mcp/profiles.d.ts +14 -0
  137. package/dist/mcp/profiles.js +68 -0
  138. package/dist/mcp/profiles.js.map +1 -0
  139. package/dist/mcp/server.d.ts +5 -3
  140. package/dist/mcp/server.js +22 -5
  141. package/dist/mcp/server.js.map +1 -1
  142. package/docs/CAPABILITY_LIBRARY.md +29 -8
  143. package/docs/COMMAND_TREE.md +99 -17
  144. package/docs/COMPARISON.md +8 -5
  145. package/docs/COOKBOOK.md +124 -5
  146. package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +813 -0
  147. package/docs/INTERNAL-ENDPOINTS.md +371 -0
  148. package/docs/INTERNAL_ENDPOINTS.md +243 -0
  149. package/docs/MARKETING_SETUP.md +21 -1
  150. package/docs/MCP.md +28 -89
  151. package/docs/MCP_TOOL_CATALOG.md +192 -0
  152. package/docs/MIGRATION_ADAPTERS.md +115 -0
  153. package/docs/PORTAL_BACKUP.md +212 -0
  154. package/docs/PUBLISHING.md +1 -1
  155. package/docs/SALES_CONTENT_INTERNAL_PUNCH_LIST.md +504 -0
  156. package/docs/TUTORIALS/secure-agent-writes.md +49 -0
  157. package/docs/WHY_HOW_WHAT.md +10 -4
  158. package/package.json +4 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../../src/commands/agent/evidence.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import { type CliContext } from "../../core/output.js";
3
+ export declare function registerAgent(program: Command, getCtx: () => CliContext): void;
@@ -0,0 +1,223 @@
1
+ import { resolve } from "node:path";
2
+ import { CliError, printResult } from "../../core/output.js";
3
+ import { registerActionContractCommands } from "./contracts.js";
4
+ import { buildRevFleetEvidence, submitRevFleetEvidence, writeRevFleetEvidence, } from "./evidence.js";
5
+ import { AGENT_PRINCIPLES, recipeIds, resolveRecipe } from "./recipes.js";
6
+ import { runAgentRecipe } from "./runner.js";
7
+ function shellQuoteArg(value) {
8
+ if (/^[A-Za-z0-9_/:=.,@%+-]+$/.test(value))
9
+ return value;
10
+ return `'${value.replace(/'/g, "'\\''")}'`;
11
+ }
12
+ function shellJoin(argv) {
13
+ return argv.map(shellQuoteArg).join(" ");
14
+ }
15
+ function yamlSingleQuote(value) {
16
+ return `'${value.replace(/'/g, "''")}'`;
17
+ }
18
+ function xmlEscape(value) {
19
+ return value
20
+ .replace(/&/g, "&")
21
+ .replace(/</g, "&lt;")
22
+ .replace(/>/g, "&gt;")
23
+ .replace(/"/g, "&quot;")
24
+ .replace(/'/g, "&apos;");
25
+ }
26
+ function validateCronExpression(raw) {
27
+ const cron = raw.trim().replace(/\s+/g, " ");
28
+ if (/[\r\n]/.test(raw) || cron.split(" ").length !== 5) {
29
+ throw new CliError("AGENT_SCHEDULE_CRON_INVALID", "--cron must be a single-line five-field cron expression");
30
+ }
31
+ return cron;
32
+ }
33
+ function globalArgv(ctx) {
34
+ const parts = ["hscli", "--profile", ctx.profile];
35
+ if (ctx.policyFile)
36
+ parts.push("--policy-file", ctx.policyFile);
37
+ if (ctx.changeTicket)
38
+ parts.push("--change-ticket", ctx.changeTicket);
39
+ return parts;
40
+ }
41
+ function renderCommand(ctx, argv) {
42
+ const renderedArgv = argv.map((arg) => arg === "{{telemetryFile}}" ? "<run-output>/requests.jsonl" : arg);
43
+ return shellJoin([...globalArgv(ctx), ...renderedArgv]);
44
+ }
45
+ function renderRecipe(ctx, recipeId) {
46
+ const recipe = resolveRecipe(recipeId);
47
+ return {
48
+ id: recipe.id,
49
+ title: recipe.title,
50
+ purpose: recipe.purpose,
51
+ cadence: recipe.cadence,
52
+ deterministicSignals: recipe.deterministicSignals,
53
+ commands: recipe.commandArgv.map((argv) => renderCommand(ctx, argv)),
54
+ };
55
+ }
56
+ function renderPlan(ctx, recipeId) {
57
+ const recipe = renderRecipe(ctx, recipeId);
58
+ return {
59
+ executionMode: "plan-only",
60
+ recipe: recipe.id,
61
+ title: recipe.title,
62
+ profile: ctx.profile,
63
+ policyFile: ctx.policyFile ?? null,
64
+ changeTicket: ctx.changeTicket ?? null,
65
+ principles: AGENT_PRINCIPLES,
66
+ guardrails: [
67
+ "No writes are executed by `agent plan`.",
68
+ "Runbooks use public HubSpot APIs by default.",
69
+ "Every write-capable follow-up must still use --force.",
70
+ "Use --policy-file and --change-ticket for governed portals.",
71
+ "Use trace/audit commands to make agent activity reviewable.",
72
+ "Internal migration adapters remain explicit allowlisted commands, not generic passthroughs.",
73
+ ],
74
+ deterministicSignals: recipe.deterministicSignals,
75
+ commands: recipe.commands,
76
+ };
77
+ }
78
+ function renderScheduleArtifact(ctx, recipeId, target, rawCron) {
79
+ const cron = validateCronExpression(rawCron);
80
+ const commandArgv = [...globalArgv(ctx), "--format", "jsonl", "agent", "run", recipeId];
81
+ const command = shellJoin(commandArgv);
82
+ if (target === "cron") {
83
+ return `${cron} ${command} >> hscli-agent-${recipeId}.jsonl 2>&1`;
84
+ }
85
+ if (target === "github-actions") {
86
+ return [
87
+ "name: hscli agent runbook",
88
+ "on:",
89
+ " schedule:",
90
+ ` - cron: '${cron}'`,
91
+ "jobs:",
92
+ " runbook:",
93
+ " runs-on: ubuntu-latest",
94
+ " steps:",
95
+ " - uses: actions/setup-node@v4",
96
+ " with:",
97
+ " node-version: '20'",
98
+ " - run: npm install -g @revfleet/hscli",
99
+ ` - run: ${yamlSingleQuote(command)}`,
100
+ ].join("\n");
101
+ }
102
+ const launchdArgs = commandArgv.map((arg) => ` <string>${xmlEscape(arg)}</string>`);
103
+ return [
104
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
105
+ "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">",
106
+ "<plist version=\"1.0\">",
107
+ "<dict>",
108
+ " <key>Label</key><string>ai.revfleet.hscli.agent</string>",
109
+ " <key>ProgramArguments</key>",
110
+ " <array>",
111
+ ...launchdArgs,
112
+ " </array>",
113
+ " <key>StartCalendarInterval</key>",
114
+ " <dict><key>Hour</key><integer>8</integer><key>Minute</key><integer>0</integer></dict>",
115
+ "</dict>",
116
+ "</plist>",
117
+ ].join("\n");
118
+ }
119
+ export function registerAgent(program, getCtx) {
120
+ const agent = program
121
+ .command("agent")
122
+ .description("Agent-safe HubSpot operator runbooks: public API first, scheduled, auditable, policy-aware");
123
+ registerActionContractCommands(agent, getCtx);
124
+ agent
125
+ .command("list")
126
+ .description("List deterministic agent-safe operator recipes")
127
+ .action(() => {
128
+ const ctx = getCtx();
129
+ printResult(ctx, {
130
+ principles: AGENT_PRINCIPLES,
131
+ recipes: recipeIds().map((id) => {
132
+ const recipe = resolveRecipe(id);
133
+ return {
134
+ id: recipe.id,
135
+ title: recipe.title,
136
+ purpose: recipe.purpose,
137
+ cadence: recipe.cadence,
138
+ deterministicSignals: recipe.deterministicSignals,
139
+ };
140
+ }),
141
+ });
142
+ });
143
+ agent
144
+ .command("plan")
145
+ .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
146
+ .description("Render a safe runbook plan without executing HubSpot requests")
147
+ .action((recipe) => {
148
+ const ctx = getCtx();
149
+ printResult(ctx, renderPlan(ctx, recipe));
150
+ });
151
+ agent
152
+ .command("run")
153
+ .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
154
+ .option("--output <dir>", "Evidence directory (default: ~/.revfleet/agent-runs/<recipe>/<run>)")
155
+ .option("--resume", "Resume from checkpoint in the output directory")
156
+ .option("--continue-on-error", "Run remaining steps and report completed_with_errors")
157
+ .description("Execute a deterministic read-only recipe and write resumable evidence")
158
+ .action(async (recipe, opts) => {
159
+ const ctx = getCtx();
160
+ const result = await runAgentRecipe(ctx, recipe, {
161
+ output: opts.output ? String(opts.output) : undefined,
162
+ resume: Boolean(opts.resume),
163
+ continueOnError: Boolean(opts.continueOnError),
164
+ });
165
+ printResult(ctx, result);
166
+ });
167
+ const evidence = agent
168
+ .command("evidence")
169
+ .description("Export aggregate, PII-free evidence from an hscli agent run");
170
+ evidence
171
+ .command("export")
172
+ .argument("<run-directory>", "Completed portal-baseline evidence directory")
173
+ .option("--output <file>", "Write revfleet.hscli-evidence/v1 JSON to this file")
174
+ .description("Build a deterministic RevFleet evidence contract without uploading raw records or user identities")
175
+ .action((runDirectory, opts) => {
176
+ const ctx = getCtx();
177
+ const outputFile = opts.output ? resolve(String(opts.output)) : null;
178
+ const exported = outputFile
179
+ ? writeRevFleetEvidence(String(runDirectory), outputFile)
180
+ : buildRevFleetEvidence(String(runDirectory));
181
+ printResult(ctx, {
182
+ outputFile,
183
+ evidence: exported,
184
+ });
185
+ });
186
+ evidence
187
+ .command("submit")
188
+ .argument("<run-directory>", "Completed portal-baseline evidence directory")
189
+ .option("--backend-url <url>", "RevFleet origin (or set REVFLEET_BACKEND_URL)")
190
+ .option("--api-key-env <name>", "Environment variable holding a scan:run RevFleet API key", "REVFLEET_API_KEY")
191
+ .description("Submit only the signed aggregate evidence contract; raw step files remain local")
192
+ .action(async (runDirectory, opts) => {
193
+ const ctx = getCtx();
194
+ const result = await submitRevFleetEvidence(String(runDirectory), {
195
+ backendUrl: opts.backendUrl ? String(opts.backendUrl) : undefined,
196
+ apiKeyEnv: String(opts.apiKeyEnv),
197
+ });
198
+ printResult(ctx, result);
199
+ });
200
+ const schedule = agent.command("schedule").description("Render schedule artifacts for agent runbooks");
201
+ schedule
202
+ .command("render")
203
+ .argument("<recipe>", "portal-baseline|data-cleanup|pipeline-risk|automation-risk")
204
+ .option("--target <target>", "cron|github-actions|launchd", "cron")
205
+ .option("--cron <expr>", "Cron expression for cron/github-actions targets", "0 8 * * 1")
206
+ .description("Render a schedule artifact; does not install or execute it")
207
+ .action((recipe, opts) => {
208
+ const ctx = getCtx();
209
+ resolveRecipe(recipe);
210
+ const target = String(opts.target ?? "cron");
211
+ if (!["cron", "github-actions", "launchd"].includes(target)) {
212
+ throw new CliError("AGENT_SCHEDULE_TARGET_UNKNOWN", "Expected --target cron|github-actions|launchd");
213
+ }
214
+ const cron = String(opts.cron ?? "0 8 * * 1");
215
+ printResult(ctx, {
216
+ recipe,
217
+ target,
218
+ installsNothing: true,
219
+ artifact: renderScheduleArtifact(ctx, recipe, target, cron),
220
+ });
221
+ });
222
+ }
223
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type AgentRecipeId = "portal-baseline" | "data-cleanup" | "pipeline-risk" | "automation-risk";
2
+ export type ScheduleTarget = "cron" | "github-actions" | "launchd";
3
+ export interface AgentRecipe {
4
+ id: AgentRecipeId;
5
+ title: string;
6
+ purpose: string;
7
+ cadence: string;
8
+ deterministicSignals: string[];
9
+ commandArgv: string[][];
10
+ }
11
+ export declare const AGENT_PRINCIPLES: string[];
12
+ export declare function recipeIds(): AgentRecipeId[];
13
+ export declare function resolveRecipe(id: string): AgentRecipe;
@@ -0,0 +1,108 @@
1
+ import { CliError } from "../../core/output.js";
2
+ export const AGENT_PRINCIPLES = [
3
+ "public-api-first",
4
+ "mcp-compatible",
5
+ "scheduled-runbooks",
6
+ "audit-trail",
7
+ "explicit-migration-adapters",
8
+ "deterministic-scoring",
9
+ "writes-require-force",
10
+ ];
11
+ const RECIPES = {
12
+ "portal-baseline": {
13
+ id: "portal-baseline",
14
+ title: "Portal baseline",
15
+ purpose: "Create one evidence-first snapshot of portal identity, access topology, CRM readiness, pipeline structure, and automation exposure for a first audit or recurring review.",
16
+ cadence: "monthly-or-before-change",
17
+ deterministicSignals: [
18
+ "portal identity and API reachability",
19
+ "users and teams",
20
+ "deal pipeline inventory",
21
+ "contact, company, and deal data readiness",
22
+ "workflow exposure",
23
+ "request and error evidence",
24
+ ],
25
+ commandArgv: [
26
+ ["--format", "jsonl", "auth", "whoami"],
27
+ ["--format", "jsonl", "doctor", "capabilities"],
28
+ ["--format", "jsonl", "account", "info"],
29
+ ["--format", "jsonl", "settings", "users", "list", "--limit", "100"],
30
+ ["--format", "jsonl", "settings", "teams", "list"],
31
+ ["--format", "jsonl", "crm", "pipelines", "list", "deals"],
32
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "contacts", "--properties", "email,firstname,lastname,company,hubspot_owner_id,country", "--limit", "5000"],
33
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "companies", "--properties", "name,domain,hubspot_owner_id,lifecyclestage", "--limit", "5000"],
34
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "deals", "--properties", "dealname,dealstage,hubspot_owner_id,amount,closedate", "--limit", "5000"],
35
+ ["--format", "jsonl", "workflows", "flows", "list", "--limit", "100"],
36
+ ["--format", "jsonl", "workflows", "v3", "list", "--limit", "100"],
37
+ ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
38
+ ],
39
+ },
40
+ "data-cleanup": {
41
+ id: "data-cleanup",
42
+ title: "Data cleanup review",
43
+ purpose: "Find missing contact/account fields, lifecycle gaps, and records that need owner or company context before AI or reporting work.",
44
+ cadence: "weekly",
45
+ deterministicSignals: [
46
+ "contact fill rate",
47
+ "company fill rate",
48
+ "lifecycle distribution",
49
+ "unassigned records",
50
+ "recent write/error audit",
51
+ ],
52
+ commandArgv: [
53
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "contacts", "--limit", "5000"],
54
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "companies", "--limit", "5000"],
55
+ ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "contacts", "--property", "lifecyclestage", "--limit", "5000"],
56
+ ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
57
+ ],
58
+ },
59
+ "pipeline-risk": {
60
+ id: "pipeline-risk",
61
+ title: "Pipeline risk review",
62
+ purpose: "Review deal pipeline health, stage metadata, owner coverage, and stale high-value opportunities.",
63
+ cadence: "weekday-morning",
64
+ deterministicSignals: [
65
+ "pipeline/stage inventory",
66
+ "deal owner coverage",
67
+ "stage distribution",
68
+ "close-date coverage",
69
+ "amount coverage",
70
+ ],
71
+ commandArgv: [
72
+ ["--format", "jsonl", "crm", "pipelines", "list", "deals"],
73
+ ["--format", "jsonl", "reports", "pull", "object-fill-rate", "--object", "deals", "--properties", "dealname,dealstage,hubspot_owner_id,closedate,amount", "--limit", "5000"],
74
+ ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "deals", "--property", "dealstage", "--limit", "5000"],
75
+ ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
76
+ ],
77
+ },
78
+ "automation-risk": {
79
+ id: "automation-risk",
80
+ title: "Automation risk review",
81
+ purpose: "Inspect workflow sprawl, error surfaces, missing documentation, email actions, and dependencies before agents operate on the portal.",
82
+ cadence: "daily",
83
+ deterministicSignals: [
84
+ "workflow inventory",
85
+ "workflow errors",
86
+ "missing descriptions/goals",
87
+ "email action exposure",
88
+ "audit activity by tool",
89
+ ],
90
+ commandArgv: [
91
+ ["--format", "jsonl", "workflows", "flows", "list", "--limit", "100"],
92
+ ["--format", "jsonl", "workflows", "v3", "list", "--limit", "100"],
93
+ ["--format", "jsonl", "reports", "pull", "property-distribution", "--object", "contacts", "--property", "hs_email_optout", "--limit", "5000"],
94
+ ["--format", "jsonl", "audit", "timeline", "--file", "{{telemetryFile}}"],
95
+ ],
96
+ },
97
+ };
98
+ export function recipeIds() {
99
+ return ["portal-baseline", "data-cleanup", "pipeline-risk", "automation-risk"];
100
+ }
101
+ export function resolveRecipe(id) {
102
+ const recipe = RECIPES[id];
103
+ if (!recipe) {
104
+ throw new CliError("AGENT_RECIPE_UNKNOWN", `Unknown agent recipe '${id}'. Expected one of: ${recipeIds().join(", ")}`);
105
+ }
106
+ return recipe;
107
+ }
108
+ //# sourceMappingURL=recipes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipes.js","sourceRoot":"","sources":["../../../src/commands/agent/recipes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type CliContext } from "../../core/output.js";
2
+ export interface AgentRunOptions {
3
+ output?: string;
4
+ resume?: boolean;
5
+ continueOnError?: boolean;
6
+ }
7
+ export interface AgentRunResult {
8
+ status: "completed" | "completed_with_errors";
9
+ recipe: string;
10
+ profile: string;
11
+ completedSteps: number;
12
+ failedSteps: number;
13
+ outputDir: string;
14
+ runId: string;
15
+ }
16
+ export declare function runAgentRecipe(ctx: CliContext, recipeId: string, options: AgentRunOptions): Promise<AgentRunResult>;
@@ -0,0 +1,165 @@
1
+ import { spawn } from "node:child_process";
2
+ import { randomUUID } from "node:crypto";
3
+ import { appendFileSync, existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync, } from "node:fs";
4
+ import { join, resolve } from "node:path";
5
+ import { getHscliHomeDir } from "../../core/auth.js";
6
+ import { CliError, redactSensitive } from "../../core/output.js";
7
+ import { resolveRecipe } from "./recipes.js";
8
+ export async function runAgentRecipe(ctx, recipeId, options) {
9
+ const recipe = resolveRecipe(recipeId);
10
+ const runId = randomUUID();
11
+ const startedAt = new Date().toISOString();
12
+ const outputDir = resolve(options.output ?? defaultOutputDir(recipe.id, startedAt, runId));
13
+ prepareOutputDir(outputDir, Boolean(options.resume));
14
+ const stepsDir = join(outputDir, "steps");
15
+ mkdirSync(stepsDir, { recursive: true, mode: 0o700 });
16
+ const eventsFile = join(outputDir, "events.jsonl");
17
+ const checkpointFile = join(outputDir, "checkpoint.json");
18
+ const manifestFile = join(outputDir, "manifest.json");
19
+ const checkpoint = loadCheckpoint(checkpointFile, recipe.id, ctx.profile, Boolean(options.resume));
20
+ const resolvedCommands = recipe.commandArgv.map((argv) => resolveCommandArgv(argv, outputDir));
21
+ const manifest = {
22
+ schema: "hscli.agent-run/v1",
23
+ runId,
24
+ recipe: recipe.id,
25
+ title: recipe.title,
26
+ profile: ctx.profile,
27
+ startedAt,
28
+ completedAt: null,
29
+ status: "running",
30
+ totalSteps: resolvedCommands.length,
31
+ policyFile: ctx.policyFile ?? null,
32
+ changeTicket: ctx.changeTicket ?? null,
33
+ commands: resolvedCommands,
34
+ };
35
+ writeJson(manifestFile, manifest);
36
+ appendEvent(eventsFile, { event: "run-started", runId, recipe: recipe.id, profile: ctx.profile, ts: startedAt });
37
+ for (let index = 0; index < resolvedCommands.length; index += 1) {
38
+ if (checkpoint.completedSteps.includes(index)) {
39
+ appendEvent(eventsFile, { event: "step-skipped", runId, step: index, reason: "checkpoint-completed", ts: new Date().toISOString() });
40
+ continue;
41
+ }
42
+ const commandArgv = resolvedCommands[index];
43
+ appendEvent(eventsFile, { event: "step-started", runId, step: index, argv: commandArgv, ts: new Date().toISOString() });
44
+ const result = await executeStep(ctx, commandArgv, outputDir, runId);
45
+ writeText(join(stepsDir, `${stepNumber(index)}.stdout.jsonl`), result.stdout);
46
+ writeText(join(stepsDir, `${stepNumber(index)}.stderr.log`), result.stderr);
47
+ if (result.code === 0) {
48
+ checkpoint.completedSteps.push(index);
49
+ checkpoint.failedSteps = checkpoint.failedSteps.filter((step) => step !== index);
50
+ checkpoint.updatedAt = new Date().toISOString();
51
+ writeJson(checkpointFile, checkpoint);
52
+ appendEvent(eventsFile, { event: "step-completed", runId, step: index, code: 0, ts: checkpoint.updatedAt });
53
+ continue;
54
+ }
55
+ if (!checkpoint.failedSteps.includes(index))
56
+ checkpoint.failedSteps.push(index);
57
+ checkpoint.updatedAt = new Date().toISOString();
58
+ writeJson(checkpointFile, checkpoint);
59
+ appendEvent(eventsFile, {
60
+ event: "step-failed",
61
+ runId,
62
+ step: index,
63
+ code: result.code,
64
+ signal: result.signal,
65
+ ts: checkpoint.updatedAt,
66
+ });
67
+ if (!options.continueOnError) {
68
+ manifest.status = "failed";
69
+ manifest.completedAt = new Date().toISOString();
70
+ writeJson(manifestFile, manifest);
71
+ appendEvent(eventsFile, { event: "run-failed", runId, step: index, ts: manifest.completedAt });
72
+ throw new CliError("AGENT_RUN_STEP_FAILED", `Recipe '${recipe.id}' failed at step ${index + 1}.`, result.code, {
73
+ outputDir,
74
+ step: index,
75
+ });
76
+ }
77
+ }
78
+ manifest.status = checkpoint.failedSteps.length > 0 ? "completed_with_errors" : "completed";
79
+ manifest.completedAt = new Date().toISOString();
80
+ writeJson(manifestFile, manifest);
81
+ appendEvent(eventsFile, { event: "run-completed", runId, status: manifest.status, ts: manifest.completedAt });
82
+ return {
83
+ status: manifest.status,
84
+ recipe: recipe.id,
85
+ profile: ctx.profile,
86
+ completedSteps: checkpoint.completedSteps.length,
87
+ failedSteps: checkpoint.failedSteps.length,
88
+ outputDir,
89
+ runId,
90
+ };
91
+ }
92
+ function resolveCommandArgv(argv, outputDir) {
93
+ const telemetryFile = join(outputDir, "requests.jsonl");
94
+ return argv.map((arg) => arg === "{{telemetryFile}}" ? telemetryFile : arg);
95
+ }
96
+ function defaultOutputDir(recipe, startedAt, runId) {
97
+ const timestamp = startedAt.replace(/[:.]/g, "-");
98
+ return join(getHscliHomeDir(), "agent-runs", recipe, `${timestamp}-${runId.slice(0, 8)}`);
99
+ }
100
+ function prepareOutputDir(outputDir, resume) {
101
+ if (existsSync(outputDir)) {
102
+ const entries = readdirSync(outputDir);
103
+ if (entries.length > 0 && !resume) {
104
+ throw new CliError("AGENT_RUN_OUTPUT_EXISTS", `Output directory '${outputDir}' is not empty. Use --resume or choose another directory.`);
105
+ }
106
+ }
107
+ mkdirSync(outputDir, { recursive: true, mode: 0o700 });
108
+ }
109
+ function loadCheckpoint(file, recipe, profile, resume) {
110
+ if (resume && existsSync(file)) {
111
+ const value = JSON.parse(readFileSync(file, "utf8"));
112
+ if (value.schema !== "hscli.agent-checkpoint/v1" || value.recipe !== recipe || value.profile !== profile) {
113
+ throw new CliError("AGENT_RUN_CHECKPOINT_MISMATCH", "Checkpoint recipe/profile does not match the requested run.");
114
+ }
115
+ return value;
116
+ }
117
+ return {
118
+ schema: "hscli.agent-checkpoint/v1",
119
+ recipe,
120
+ profile,
121
+ completedSteps: [],
122
+ failedSteps: [],
123
+ updatedAt: new Date().toISOString(),
124
+ };
125
+ }
126
+ async function executeStep(ctx, commandArgv, outputDir, runId) {
127
+ const argv = [
128
+ process.argv[1] ?? "hscli",
129
+ "--profile",
130
+ ctx.profile,
131
+ ...(ctx.policyFile ? ["--policy-file", ctx.policyFile] : []),
132
+ ...(ctx.changeTicket ? ["--change-ticket", ctx.changeTicket] : []),
133
+ "--telemetry-file",
134
+ join(outputDir, "requests.jsonl"),
135
+ ...commandArgv,
136
+ ];
137
+ return new Promise((resolvePromise, reject) => {
138
+ const child = spawn(process.execPath, argv, {
139
+ shell: false,
140
+ stdio: ["ignore", "pipe", "pipe"],
141
+ env: { ...process.env, HSCLI_AGENT_RUN_ID: runId },
142
+ });
143
+ let stdout = "";
144
+ let stderr = "";
145
+ child.stdout?.on("data", (chunk) => { stdout += String(chunk); });
146
+ child.stderr?.on("data", (chunk) => { stderr += String(chunk); });
147
+ child.once("error", (error) => reject(new CliError("AGENT_RUN_SPAWN_FAILED", error.message)));
148
+ child.once("close", (code, signal) => {
149
+ resolvePromise({ code: code ?? 1, signal, stdout, stderr });
150
+ });
151
+ });
152
+ }
153
+ function stepNumber(index) {
154
+ return String(index + 1).padStart(3, "0");
155
+ }
156
+ function writeJson(path, value) {
157
+ writeFileSync(path, `${JSON.stringify(redactSensitive(value), null, 2)}\n`, { mode: 0o600 });
158
+ }
159
+ function writeText(path, value) {
160
+ writeFileSync(path, redactSensitive(value), { mode: 0o600 });
161
+ }
162
+ function appendEvent(path, value) {
163
+ appendFileSync(path, `${JSON.stringify(redactSensitive(value))}\n`, { mode: 0o600 });
164
+ }
165
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/commands/agent/runner.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),