@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.
- package/CHANGELOG.md +197 -1
- package/README.md +243 -10
- package/dist/cli.js +27 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/agent/contracts.d.ts +3 -0
- package/dist/commands/agent/contracts.js +139 -0
- package/dist/commands/agent/contracts.js.map +1 -0
- package/dist/commands/agent/evidence.d.ts +68 -0
- package/dist/commands/agent/evidence.js +358 -0
- package/dist/commands/agent/evidence.js.map +1 -0
- package/dist/commands/agent/index.d.ts +3 -0
- package/dist/commands/agent/index.js +223 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/recipes.d.ts +13 -0
- package/dist/commands/agent/recipes.js +108 -0
- package/dist/commands/agent/recipes.js.map +1 -0
- package/dist/commands/agent/runner.d.ts +16 -0
- package/dist/commands/agent/runner.js +165 -0
- package/dist/commands/agent/runner.js.map +1 -0
- package/dist/commands/audit/index.js +4 -0
- package/dist/commands/audit/index.js.map +1 -1
- package/dist/commands/auth/index.js +64 -7
- package/dist/commands/auth/index.js.map +1 -1
- package/dist/commands/automation/index.js +30 -0
- package/dist/commands/automation/index.js.map +1 -1
- package/dist/commands/backup/index.d.ts +12 -0
- package/dist/commands/backup/index.js +459 -0
- package/dist/commands/backup/index.js.map +1 -0
- package/dist/commands/cms/content-ops.js +1 -1
- package/dist/commands/cms/content-ops.js.map +1 -1
- package/dist/commands/communication-preferences/index.js +207 -7
- package/dist/commands/communication-preferences/index.js.map +1 -1
- package/dist/commands/content-permissions/index.d.ts +22 -0
- package/dist/commands/content-permissions/index.js +141 -0
- package/dist/commands/content-permissions/index.js.map +1 -0
- package/dist/commands/context/index.d.ts +3 -0
- package/dist/commands/context/index.js +182 -0
- package/dist/commands/context/index.js.map +1 -0
- package/dist/commands/crm/associations.js +38 -0
- package/dist/commands/crm/associations.js.map +1 -1
- package/dist/commands/crm/custom-objects.js +39 -2
- package/dist/commands/crm/custom-objects.js.map +1 -1
- package/dist/commands/crm/dated.js +3 -3
- package/dist/commands/crm/dated.js.map +1 -1
- package/dist/commands/crm/migration.js +210 -2
- package/dist/commands/crm/migration.js.map +1 -1
- package/dist/commands/crm/properties.js +2 -1
- package/dist/commands/crm/properties.js.map +1 -1
- package/dist/commands/crm/property-batch.d.ts +1 -0
- package/dist/commands/crm/property-batch.js +44 -5
- package/dist/commands/crm/property-batch.js.map +1 -1
- package/dist/commands/crm/shared.js +21 -2
- package/dist/commands/crm/shared.js.map +1 -1
- package/dist/commands/crm/sync.js +1 -1
- package/dist/commands/crm/sync.js.map +1 -1
- package/dist/commands/doctor/index.js +193 -0
- package/dist/commands/doctor/index.js.map +1 -1
- package/dist/commands/email-tracking/index.d.ts +16 -0
- package/dist/commands/email-tracking/index.js +314 -0
- package/dist/commands/email-tracking/index.js.map +1 -0
- package/dist/commands/extensions/index.js +1 -1
- package/dist/commands/extensions/index.js.map +1 -1
- package/dist/commands/forms/index.js +15 -2
- package/dist/commands/forms/index.js.map +1 -1
- package/dist/commands/forms/legacy-v2.d.ts +7 -2
- package/dist/commands/forms/legacy-v2.js +103 -7
- package/dist/commands/forms/legacy-v2.js.map +1 -1
- package/dist/commands/guide/index.d.ts +1 -1
- package/dist/commands/guide/index.js +37 -4
- package/dist/commands/guide/index.js.map +1 -1
- package/dist/commands/internal/catalog.d.ts +1 -0
- package/dist/commands/internal/catalog.js +2 -0
- package/dist/commands/internal/catalog.js.map +1 -0
- package/dist/commands/internal/index.d.ts +26 -0
- package/dist/commands/internal/index.js +823 -0
- package/dist/commands/internal/index.js.map +1 -0
- package/dist/commands/internal-session.d.ts +15 -0
- package/dist/commands/internal-session.js +152 -0
- package/dist/commands/internal-session.js.map +1 -0
- package/dist/commands/lists/index.js +1 -1
- package/dist/commands/lists/index.js.map +1 -1
- package/dist/commands/marketing/email-audit.d.ts +32 -0
- package/dist/commands/marketing/email-audit.js +121 -0
- package/dist/commands/marketing/email-audit.js.map +1 -0
- package/dist/commands/marketing/index.js +2 -0
- package/dist/commands/marketing/index.js.map +1 -1
- package/dist/commands/mcp.js +5 -3
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/playbooks/index.d.ts +3 -0
- package/dist/commands/playbooks/index.js +228 -0
- package/dist/commands/playbooks/index.js.map +1 -0
- package/dist/commands/portals/index.d.ts +3 -0
- package/dist/commands/portals/index.js +132 -0
- package/dist/commands/portals/index.js.map +1 -0
- package/dist/commands/reports/index.d.ts +3 -0
- package/dist/commands/reports/index.js +479 -0
- package/dist/commands/reports/index.js.map +1 -0
- package/dist/commands/sales-content/index.d.ts +13 -0
- package/dist/commands/sales-content/index.js +59 -0
- package/dist/commands/sales-content/index.js.map +1 -0
- package/dist/commands/sales-templates/index.d.ts +3 -0
- package/dist/commands/sales-templates/index.js +88 -0
- package/dist/commands/sales-templates/index.js.map +1 -0
- package/dist/commands/seed/cms.js +28 -45
- package/dist/commands/seed/cms.js.map +1 -1
- package/dist/commands/sequences/index.d.ts +18 -0
- package/dist/commands/sequences/index.js +263 -0
- package/dist/commands/sequences/index.js.map +1 -0
- package/dist/commands/settings/index.js +450 -102
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/commands/settings/site-settings.d.ts +3 -0
- package/dist/commands/settings/site-settings.js +106 -0
- package/dist/commands/settings/site-settings.js.map +1 -0
- package/dist/commands/ui/index.js +14 -4
- package/dist/commands/ui/index.js.map +1 -1
- package/dist/commands/workflows/index.js +2 -0
- package/dist/commands/workflows/index.js.map +1 -1
- package/dist/commands/workflows/preflight.d.ts +23 -0
- package/dist/commands/workflows/preflight.js +295 -0
- package/dist/commands/workflows/preflight.js.map +1 -0
- package/dist/core/action-contract.d.ts +43 -0
- package/dist/core/action-contract.js +207 -0
- package/dist/core/action-contract.js.map +1 -0
- package/dist/core/auth.d.ts +6 -0
- package/dist/core/auth.js +85 -0
- package/dist/core/auth.js.map +1 -1
- package/dist/core/http.d.ts +8 -0
- package/dist/core/http.js +37 -5
- package/dist/core/http.js.map +1 -1
- package/dist/core/id-maps.d.ts +27 -0
- package/dist/core/id-maps.js +204 -0
- package/dist/core/id-maps.js.map +1 -0
- package/dist/core/output.d.ts +2 -1
- package/dist/core/output.js +34 -0
- package/dist/core/output.js.map +1 -1
- package/dist/mcp/profiles.d.ts +14 -0
- package/dist/mcp/profiles.js +68 -0
- package/dist/mcp/profiles.js.map +1 -0
- package/dist/mcp/server.d.ts +5 -3
- package/dist/mcp/server.js +22 -5
- package/dist/mcp/server.js.map +1 -1
- package/docs/CAPABILITY_LIBRARY.md +29 -8
- package/docs/COMMAND_TREE.md +99 -17
- package/docs/COMPARISON.md +8 -5
- package/docs/COOKBOOK.md +124 -5
- package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +813 -0
- package/docs/INTERNAL-ENDPOINTS.md +371 -0
- package/docs/INTERNAL_ENDPOINTS.md +243 -0
- package/docs/MARKETING_SETUP.md +21 -1
- package/docs/MCP.md +28 -89
- package/docs/MCP_TOOL_CATALOG.md +192 -0
- package/docs/MIGRATION_ADAPTERS.md +115 -0
- package/docs/PORTAL_BACKUP.md +212 -0
- package/docs/PUBLISHING.md +1 -1
- package/docs/SALES_CONTENT_INTERNAL_PUNCH_LIST.md +504 -0
- package/docs/TUTORIALS/secure-agent-writes.md +49 -0
- package/docs/WHY_HOW_WHAT.md +10 -4
- 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,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, "<")
|
|
22
|
+
.replace(/>/g, ">")
|
|
23
|
+
.replace(/"/g, """)
|
|
24
|
+
.replace(/'/g, "'");
|
|
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),
|