@signaliz/cli 1.0.9 → 1.0.11
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/dist/bin.js +120 -0
- package/package.json +1 -1
package/dist/bin.js
CHANGED
|
@@ -1077,6 +1077,14 @@ Campaign Builder:
|
|
|
1077
1077
|
campaign-agent dry-run Execute build_campaign with dry_run=true
|
|
1078
1078
|
campaign-agent build-approved
|
|
1079
1079
|
Launch only after explicit approval metadata
|
|
1080
|
+
campaign-agent status <id>
|
|
1081
|
+
Inspect a campaign-agent build
|
|
1082
|
+
campaign-agent rows <id>
|
|
1083
|
+
Retrieve reviewable rows
|
|
1084
|
+
campaign-agent artifacts <id>
|
|
1085
|
+
List generated artifacts
|
|
1086
|
+
campaign-agent approve <id>
|
|
1087
|
+
Approve a reviewed delivery destination
|
|
1080
1088
|
|
|
1081
1089
|
campaign scope Scope a workspace/account campaign into a markdown brief + dry-run args
|
|
1082
1090
|
--prompt "..." Campaign request or outcome (required)
|
|
@@ -2785,6 +2793,10 @@ Strategy-template campaign builder:
|
|
|
2785
2793
|
commit-plan Dry-run or write a reviewed GTM campaign object
|
|
2786
2794
|
dry-run Execute build_campaign with dry_run=true
|
|
2787
2795
|
build-approved Launch only after explicit approval metadata
|
|
2796
|
+
status Inspect a campaign-agent build
|
|
2797
|
+
rows Retrieve reviewable campaign-agent rows
|
|
2798
|
+
artifacts List generated artifacts
|
|
2799
|
+
approve Approve a reviewed delivery destination
|
|
2788
2800
|
|
|
2789
2801
|
Examples:
|
|
2790
2802
|
signaliz campaign-agent init --strategy-template non-medical-home-care --target-count 250 --use-local-leads --json > campaign-request.json
|
|
@@ -2794,6 +2806,8 @@ Examples:
|
|
|
2794
2806
|
signaliz campaign-agent dry-run --goal "Build a local services campaign" --target-count 250 --use-local-leads --json
|
|
2795
2807
|
signaliz campaign-agent build-approved --goal "Build a strategy-template campaign" --confirm-launch --approve-all --approved-by operator@example.com --spend-limit 500
|
|
2796
2808
|
signaliz campaign-agent build-approved --request-file campaign-builder-agent-request.json --confirm-launch --approve-all --approved-by operator@example.com --spend-limit 500 --wait --approve-delivery --delivery-destination-type json
|
|
2809
|
+
signaliz campaign-agent status <campaign_build_id> --json
|
|
2810
|
+
signaliz campaign-agent rows <campaign_build_id> --limit 100 --json
|
|
2797
2811
|
|
|
2798
2812
|
Plan options:
|
|
2799
2813
|
--goal TEXT Campaign goal or brief
|
|
@@ -2846,6 +2860,10 @@ async function campaignAgent(sub, rest) {
|
|
|
2846
2860
|
process.stdout.write(CAMPAIGN_AGENT_HELP);
|
|
2847
2861
|
return;
|
|
2848
2862
|
}
|
|
2863
|
+
if (["status", "rows", "artifacts", "approve", "approve-delivery"].includes(sub)) {
|
|
2864
|
+
await campaignAgentReview(sub, rest);
|
|
2865
|
+
return;
|
|
2866
|
+
}
|
|
2849
2867
|
if (!["init", "template", "request-template", "new", "plan", "proof", "smoke", "commit-plan", "dry-run", "build-approved", "launch-approved"].includes(sub)) {
|
|
2850
2868
|
process.stdout.write(CAMPAIGN_AGENT_HELP);
|
|
2851
2869
|
return;
|
|
@@ -2949,6 +2967,64 @@ async function campaignAgent(sub, rest) {
|
|
|
2949
2967
|
}
|
|
2950
2968
|
return output(plan, () => printCampaignAgentPlan(plan));
|
|
2951
2969
|
}
|
|
2970
|
+
async function campaignAgentReview(sub, rest) {
|
|
2971
|
+
const flags = parseCommandFlags(rest);
|
|
2972
|
+
const buildId = rest[0] && !rest[0].startsWith("--") ? rest[0] : commandStringFlag(flags, "campaign-build-id", "build-id");
|
|
2973
|
+
if (!buildId) die(`campaign-agent ${sub} requires <campaign_build_id> or --campaign-build-id`);
|
|
2974
|
+
const sdk = getSdk();
|
|
2975
|
+
const agent = sdk.campaignBuilderAgent;
|
|
2976
|
+
const campaigns = sdk.campaigns || {};
|
|
2977
|
+
if (sub === "status") {
|
|
2978
|
+
const status = await (agent.getBuildStatus?.bind(agent) || campaigns.status?.bind(campaigns) || campaigns.getCampaignBuildStatus?.bind(campaigns))?.(buildId);
|
|
2979
|
+
if (!status) die("campaign-agent status requires a compatible @signaliz/sdk campaign status API");
|
|
2980
|
+
return output(status, () => printCampaignAgentBuildStatus(status));
|
|
2981
|
+
}
|
|
2982
|
+
if (sub === "rows") {
|
|
2983
|
+
const rowOptions = {
|
|
2984
|
+
limit: commandNumberFlag(flags, "limit"),
|
|
2985
|
+
cursor: commandStringFlag(flags, "cursor"),
|
|
2986
|
+
segment: commandStringFlag(flags, "segment"),
|
|
2987
|
+
rowStatus: commandStringFlag(flags, "row-status"),
|
|
2988
|
+
qualified: commandBooleanFlag(flags, "qualified") ? true : commandBooleanFlag(flags, "disqualified") ? false : void 0
|
|
2989
|
+
};
|
|
2990
|
+
const result2 = await (agent.getBuildRows?.bind(agent) || campaigns.rows?.bind(campaigns) || campaigns.getCampaignBuildRows?.bind(campaigns))?.(buildId, rowOptions);
|
|
2991
|
+
if (!result2) die("campaign-agent rows requires a compatible @signaliz/sdk campaign rows API");
|
|
2992
|
+
const operatorResult = {
|
|
2993
|
+
...result2,
|
|
2994
|
+
rows: formatCampaignRowsForOperator(result2.rows)
|
|
2995
|
+
};
|
|
2996
|
+
return output(operatorResult, () => printCampaignAgentRows(operatorResult));
|
|
2997
|
+
}
|
|
2998
|
+
if (sub === "artifacts") {
|
|
2999
|
+
const artifacts = await (agent.listBuildArtifacts?.bind(agent) || campaigns.artifacts?.bind(campaigns) || campaigns.listCampaignBuildArtifacts?.bind(campaigns))?.(buildId);
|
|
3000
|
+
if (!artifacts) die("campaign-agent artifacts requires a compatible @signaliz/sdk campaign artifacts API");
|
|
3001
|
+
return output(artifacts, () => {
|
|
3002
|
+
if (artifacts.length === 0) {
|
|
3003
|
+
console.log("No artifacts yet.");
|
|
3004
|
+
hint(`signaliz campaign-agent status ${buildId}`);
|
|
3005
|
+
return;
|
|
3006
|
+
}
|
|
3007
|
+
for (const artifact of artifacts) {
|
|
3008
|
+
console.log(`${artifact.artifactType || "artifact"} - ${artifact.rowCount} rows${artifact.signedUrl ? `
|
|
3009
|
+
${artifact.signedUrl}` : ""}`);
|
|
3010
|
+
}
|
|
3011
|
+
});
|
|
3012
|
+
}
|
|
3013
|
+
const destinationType = commandStringFlag(flags, "destination-type", "delivery-destination-type", "type");
|
|
3014
|
+
if (!destinationType || !["json", "csv", "webhook"].includes(destinationType)) {
|
|
3015
|
+
die("campaign-agent approve requires --destination-type json|csv|webhook");
|
|
3016
|
+
}
|
|
3017
|
+
const deliveryOptions = {
|
|
3018
|
+
destinationId: commandStringFlag(flags, "destination-id", "delivery-destination-id"),
|
|
3019
|
+
destinationConfig: campaignAgentJsonObjectInput(flags, ["destination-config", "delivery-config"], ["destination-config-file", "delivery-config-file"])
|
|
3020
|
+
};
|
|
3021
|
+
const result = await (agent.approveDelivery?.bind(agent) || campaigns.approveCampaignDelivery?.bind(campaigns))?.(buildId, destinationType, deliveryOptions);
|
|
3022
|
+
if (!result) die("campaign-agent approve requires a compatible @signaliz/sdk campaign delivery API");
|
|
3023
|
+
return output(result, () => {
|
|
3024
|
+
console.log(`Delivery ${result.status}: ${result.destinationType}`);
|
|
3025
|
+
if (result.message) console.log(result.message);
|
|
3026
|
+
});
|
|
3027
|
+
}
|
|
2952
3028
|
function campaignAgentRequestTemplateFromFlags(flags, rest) {
|
|
2953
3029
|
const goal = commandStringFlag(flags, "goal", "brief") || promptArg(rest) || "Build a strategy-template campaign for mature operators in the target ICP.";
|
|
2954
3030
|
const request = campaignAgentRequestFromFlags(goal, flags, { includeDefaults: true });
|
|
@@ -3257,6 +3333,50 @@ function printCampaignAgentExecution(plan, result) {
|
|
|
3257
3333
|
console.log("\nResult:");
|
|
3258
3334
|
console.log(JSON.stringify(result, null, 2));
|
|
3259
3335
|
}
|
|
3336
|
+
function printCampaignAgentBuildStatus(status) {
|
|
3337
|
+
console.log(`Campaign: ${status.name || status.campaignBuildId}`);
|
|
3338
|
+
if (status.campaignId) console.log(`Campaign ID: ${status.campaignId}`);
|
|
3339
|
+
console.log(`Status: ${status.status}`);
|
|
3340
|
+
console.log(`Phase: ${status.currentPhase || "N/A"}`);
|
|
3341
|
+
console.log(`Rows: ${status.recordsSucceeded}/${status.recordsTotal} succeeded, ${status.recordsFailed} failed`);
|
|
3342
|
+
console.log(`Artifacts: ${status.artifactCount}`);
|
|
3343
|
+
if (status.triggerRunId) console.log(`Trigger: ${status.triggerRunId}`);
|
|
3344
|
+
if (Array.isArray(status.warnings) && status.warnings.length) {
|
|
3345
|
+
console.log(`Warnings: ${status.warnings.length}`);
|
|
3346
|
+
for (const warning of status.warnings.slice(0, 3)) console.log(` - ${warning}`);
|
|
3347
|
+
}
|
|
3348
|
+
if (Array.isArray(status.errors) && status.errors.length) {
|
|
3349
|
+
console.log(`Errors: ${status.errors.length}`);
|
|
3350
|
+
for (const error of status.errors.slice(0, 3)) console.log(` - ${error}`);
|
|
3351
|
+
}
|
|
3352
|
+
if (status.status === "completed") {
|
|
3353
|
+
hint(`signaliz campaign-agent rows ${status.campaignBuildId} --limit 100`);
|
|
3354
|
+
} else if (status.status === "pending_approval") {
|
|
3355
|
+
hint(`signaliz campaign-agent approve ${status.campaignBuildId} --destination-type webhook`);
|
|
3356
|
+
} else if ((status.status === "running" || status.status === "queued") && status.triggerRunId) {
|
|
3357
|
+
hint(`signaliz ops run-status ${status.triggerRunId} --watch`);
|
|
3358
|
+
}
|
|
3359
|
+
}
|
|
3360
|
+
function printCampaignAgentRows(result) {
|
|
3361
|
+
if (!Array.isArray(result.rows) || result.rows.length === 0) {
|
|
3362
|
+
console.log("No rows found.");
|
|
3363
|
+
return;
|
|
3364
|
+
}
|
|
3365
|
+
console.table(result.rows.map((row) => ({
|
|
3366
|
+
email: row.email || "",
|
|
3367
|
+
name: row.name || "",
|
|
3368
|
+
title: row.title || "",
|
|
3369
|
+
company: row.company || row.domain || "",
|
|
3370
|
+
segment: row.segment || "",
|
|
3371
|
+
status: row.status || "",
|
|
3372
|
+
score: row.score ?? ""
|
|
3373
|
+
})));
|
|
3374
|
+
console.log(`
|
|
3375
|
+
Showing ${result.rows.length} row(s)${result.hasMore ? " (more available)" : ""}`);
|
|
3376
|
+
if (result.nextCursor) {
|
|
3377
|
+
hint(`signaliz campaign-agent rows ${result.campaignBuildId} --limit ${result.pageSize || 50} --cursor ${result.nextCursor}`);
|
|
3378
|
+
}
|
|
3379
|
+
}
|
|
3260
3380
|
function createCampaignAgentProofReceipt(plan, result) {
|
|
3261
3381
|
const strategyMemory = record(plan.strategyMemoryStatus);
|
|
3262
3382
|
const dryRunResult = record(result);
|