@signaliz/cli 1.0.15 → 1.0.16

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 (3) hide show
  1. package/README.md +8 -0
  2. package/dist/bin.js +95 -1
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -66,6 +66,7 @@ signaliz start
66
66
 
67
67
  # 3. Plan something. Pick the surface that matches the job.
68
68
  signaliz campaign-agent kit --strategy-template non-medical-home-care --target-count 250 --use-local-leads --json
69
+ signaliz campaign-agent memory-kit --strategy-template non-medical-home-care --target-count 250 --use-local-leads --source agency --json
69
70
  signaliz campaign build --prompt "VP Sales at B2B SaaS, 50-500 employees" --target-count 100 --dry-run
70
71
  signaliz gtm plan "VP Sales at B2B SaaS, 50-500 employees" --target-count 100 --json > plan.json
71
72
  signaliz ops plan "Build 100 verified VP Sales leads at B2B SaaS companies"
@@ -317,6 +318,13 @@ signaliz campaign-agent init \
317
318
  --with-byo-placeholder \
318
319
  --output-file campaign-request.json
319
320
 
321
+ signaliz campaign-agent memory-kit \
322
+ --strategy-template non-medical-home-care \
323
+ --target-count 250 \
324
+ --use-local-leads \
325
+ --source agency \
326
+ --json
327
+
320
328
  signaliz campaign-agent plan \
321
329
  --goal "Build a strategy-template campaign for mature local operators" \
322
330
  --strategy-template non-medical-home-care \
package/dist/bin.js CHANGED
@@ -860,6 +860,28 @@ function getCampaignBuilderBuildKitFactory() {
860
860
  throw new Error(`Unable to load campaign build kit helper: ${primaryMessage}; fallback failed: ${fallbackError.message}`);
861
861
  }
862
862
  }
863
+ function getCampaignBuilderMemoryKitFactory() {
864
+ let primaryError;
865
+ try {
866
+ const sdk = require("@signaliz/sdk");
867
+ if (typeof sdk.createCampaignBuilderMemoryKit === "function") {
868
+ return sdk.createCampaignBuilderMemoryKit;
869
+ }
870
+ primaryError = new Error("SDK missing createCampaignBuilderMemoryKit");
871
+ } catch (err) {
872
+ primaryError = err;
873
+ }
874
+ try {
875
+ const sdk = require((0, import_node_path.join)(__dirname, "..", "..", "sdk", "dist", "index.js"));
876
+ if (typeof sdk.createCampaignBuilderMemoryKit === "function") {
877
+ return sdk.createCampaignBuilderMemoryKit;
878
+ }
879
+ throw new Error("local SDK missing createCampaignBuilderMemoryKit");
880
+ } catch (fallbackError) {
881
+ const primaryMessage = primaryError instanceof Error ? primaryError.message : String(primaryError || "SDK missing campaign memory kit helper");
882
+ throw new Error(`Unable to load campaign memory kit helper: ${primaryMessage}; fallback failed: ${fallbackError.message}`);
883
+ }
884
+ }
863
885
  function prompt(question) {
864
886
  const rl = (0, import_node_readline.createInterface)({ input: process.stdin, output: process.stderr });
865
887
  return new Promise((resolve) => {
@@ -1088,6 +1110,8 @@ Campaign Builder:
1088
1110
  --output-file FILE Optional request file to write
1089
1111
  campaign-agent kit Emit request JSON, CLI commands, MCP calls, SDK example, and BYO pattern
1090
1112
  --kit-file FILE Optional kit JSON file to write
1113
+ campaign-agent memory-kit
1114
+ Emit memory readiness, seed runner, MCP calls, and proof commands
1091
1115
  campaign-agent plan Compose an approval-gated strategy-template MCP flow
1092
1116
  --goal "..." Campaign goal or brief
1093
1117
  --request-file FILE Reusable JSON CampaignBuilderAgentRequest
@@ -2816,6 +2840,7 @@ var CAMPAIGN_AGENT_HELP = `signaliz campaign-agent <command> [options]
2816
2840
  Strategy-template campaign builder:
2817
2841
  init Emit reusable CampaignBuilderAgentRequest JSON
2818
2842
  kit Emit request JSON, CLI commands, MCP calls, SDK example, and BYO pattern
2843
+ memory-kit Emit memory readiness, seed runner, MCP calls, and proof commands
2819
2844
  plan Compose an approval-gated strategy-template MCP flow
2820
2845
  doctor Inspect built-in lanes, BYO routes, Memory, Brain, and approvals
2821
2846
  proof Prove memory, plan, approvals, and build dry-run without spend
@@ -2831,6 +2856,7 @@ Strategy-template campaign builder:
2831
2856
  Examples:
2832
2857
  signaliz campaign-agent init --strategy-template non-medical-home-care --target-count 250 --use-local-leads --json > campaign-request.json
2833
2858
  signaliz campaign-agent kit --strategy-template non-medical-home-care --target-count 250 --use-local-leads --json
2859
+ signaliz campaign-agent memory-kit --strategy-template non-medical-home-care --target-count 250 --use-local-leads --json
2834
2860
  signaliz campaign-agent doctor --request-file campaign-request.json --json
2835
2861
  signaliz campaign-agent plan --goal "Build a strategy-template campaign for my ICP" --strategy-template non-medical-home-care --target-count 500 --builtins lead_generation,email_finding,email_verification,signals
2836
2862
  signaliz campaign-agent proof --goal "Build a strategy-template campaign for my ICP" --strategy-template non-medical-home-care --target-count 100 --json
@@ -2846,6 +2872,9 @@ Plan options:
2846
2872
  --goal TEXT Campaign goal or brief
2847
2873
  --output-file FILE Write init output to a reusable request JSON file
2848
2874
  --kit-file FILE Write campaign-agent kit output to a JSON file
2875
+ --seed-manifest-file FILE
2876
+ Manifest path for memory-kit seed dry-runs
2877
+ --source NAME memory-kit seed source: agency, workflow-patterns, instantly-feedback, or all
2849
2878
  --request-output-file FILE
2850
2879
  Request filename to reference inside kit commands
2851
2880
  --request-file FILE Reusable JSON CampaignBuilderAgentRequest; flags override file fields
@@ -2900,7 +2929,7 @@ async function campaignAgent(sub, rest) {
2900
2929
  await campaignAgentReview(sub, rest);
2901
2930
  return;
2902
2931
  }
2903
- if (!["init", "template", "request-template", "new", "kit", "build-kit", "blueprint", "plan", "doctor", "readiness", "preflight", "proof", "smoke", "commit-plan", "dry-run", "build-approved", "launch-approved"].includes(sub)) {
2932
+ if (!["init", "template", "request-template", "new", "kit", "build-kit", "blueprint", "memory-kit", "seed-kit", "memory", "plan", "doctor", "readiness", "preflight", "proof", "smoke", "commit-plan", "dry-run", "build-approved", "launch-approved"].includes(sub)) {
2904
2933
  process.stdout.write(CAMPAIGN_AGENT_HELP);
2905
2934
  return;
2906
2935
  }
@@ -2946,6 +2975,38 @@ async function campaignAgent(sub, rest) {
2946
2975
  if (proof?.command) console.log(`Next: ${proof.command}`);
2947
2976
  return;
2948
2977
  }
2978
+ if (["memory-kit", "seed-kit", "memory"].includes(sub)) {
2979
+ const requestFromFile2 = campaignAgentRequestFileFromFlags(flags);
2980
+ const goal2 = commandStringFlag(flags, "goal", "brief") || promptArg(rest) || campaignAgentStringValue(requestFromFile2?.goal) || "Build a strategy-template campaign for mature operators in the target ICP.";
2981
+ const request2 = requestFromFile2 ? mergeCampaignAgentRequests(
2982
+ requestFromFile2,
2983
+ campaignAgentRequestFromFlags(goal2, flags, { includeDefaults: false })
2984
+ ) : campaignAgentRequestTemplateFromFlags(flags, rest);
2985
+ const createMemoryKit = getCampaignBuilderMemoryKitFactory();
2986
+ const kit = createMemoryKit({
2987
+ ...request2,
2988
+ includeLocalLeads: commandBooleanFlag(flags, "use-local-leads"),
2989
+ includeCustomToolPlaceholder: commandBooleanFlag(flags, "with-byo-placeholder") || commandBooleanFlag(flags, "include-custom-tool-placeholder") || commandBooleanFlag(flags, "include-byo-placeholder"),
2990
+ includeNango: !commandBooleanFlag(flags, "no-nango-catalog"),
2991
+ requestFile: commandStringFlag(flags, "request-output-file", "request-file-name") || commandStringFlag(flags, "request-file") || "campaign-request.json",
2992
+ seedManifestFile: commandStringFlag(flags, "seed-manifest-file", "manifest") || ".gtm-kernel-import-state/campaign-memory-dry-run.json",
2993
+ source: commandStringFlag(flags, "source", "memory-source", "seed-source"),
2994
+ workspaceId: commandStringFlag(flags, "workspace-id"),
2995
+ cliPackage: commandStringFlag(flags, "cli-package"),
2996
+ sdkPackage: commandStringFlag(flags, "sdk-package")
2997
+ });
2998
+ const outputFile = commandStringFlag(flags, "kit-file", "output-file", "out");
2999
+ if (outputFile) {
3000
+ (0, import_node_fs.writeFileSync)(outputFile, `${JSON.stringify(kit, null, 2)}
3001
+ `, "utf8");
3002
+ }
3003
+ if (!outputFile || jsonMode()) return output(kit, () => printCampaignAgentMemoryKit(kit));
3004
+ console.log(`Campaign memory kit written: ${outputFile}`);
3005
+ const commands = firstArray(kit.cli_commands);
3006
+ const status = commands.find((command) => command.id === "memory_status");
3007
+ if (status?.command) console.log(`Next: ${status.command}`);
3008
+ return;
3009
+ }
2949
3010
  const requestFromFile = campaignAgentRequestFileFromFlags(flags);
2950
3011
  const isDoctor = sub === "doctor" || sub === "readiness" || sub === "preflight";
2951
3012
  const goal = commandStringFlag(flags, "goal", "brief") || promptArg(rest) || campaignAgentStringValue(requestFromFile?.goal) || (isDoctor ? "Build a strategy-template campaign for the target ICP." : void 0);
@@ -3604,6 +3665,39 @@ function printCampaignAgentBuildKit(kit) {
3604
3665
  for (const action of nextActions.slice(0, 4)) console.log(`- ${action}`);
3605
3666
  }
3606
3667
  }
3668
+ function printCampaignAgentMemoryKit(kit) {
3669
+ console.log(`Campaign memory kit: ${kit.strategy_template || "custom strategy"}`);
3670
+ if (kit.request_file) console.log(`Request file: ${kit.request_file}`);
3671
+ if (kit.seed_manifest_file) console.log(`Seed manifest: ${kit.seed_manifest_file}`);
3672
+ const sources = firstArray(kit.memory_sources);
3673
+ console.log(`Sources: ${sources.map((source) => source.id || source.seed_source).filter(Boolean).join(", ") || "none"}`);
3674
+ console.log(`Playbooks: ${firstArray(kit.operating_playbooks).join(", ") || "none"}`);
3675
+ const commands = firstArray(kit.cli_commands);
3676
+ if (commands.length) {
3677
+ console.log("\nCLI:");
3678
+ for (const command of commands.slice(0, 4)) {
3679
+ console.log(`- ${command.label || command.id}: ${command.command}`);
3680
+ }
3681
+ }
3682
+ const calls = firstArray(kit.mcp_calls);
3683
+ if (calls.length) {
3684
+ console.log("\nMCP:");
3685
+ for (const call of calls.slice(0, 3)) {
3686
+ console.log(`- ${call.tool}: ${call.safety}`);
3687
+ }
3688
+ }
3689
+ const seedRunner = record(kit.seed_runner);
3690
+ if (seedRunner.dry_run_command) {
3691
+ console.log("\nSeed runner:");
3692
+ console.log(`- Dry run: ${seedRunner.dry_run_command}`);
3693
+ if (seedRunner.verify_manifest_command) console.log(`- Verify: ${seedRunner.verify_manifest_command}`);
3694
+ }
3695
+ const nextActions = firstArray(kit.next_actions);
3696
+ if (nextActions.length) {
3697
+ console.log("\nNext:");
3698
+ for (const action of nextActions.slice(0, 4)) console.log(`- ${action}`);
3699
+ }
3700
+ }
3607
3701
  function printCampaignAgentPlan(plan) {
3608
3702
  console.log(`Plan: ${plan.campaignName || plan.goal || plan.planId}`);
3609
3703
  if (plan.planId) console.log(`Plan ID: ${plan.planId}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@signaliz/cli",
3
- "version": "1.0.15",
3
+ "version": "1.0.16",
4
4
  "description": "Signaliz CLI — GTM Kernel, Nango routes, MCP, and enrichment operations.",
5
5
  "bin": {
6
6
  "signaliz": "dist/bin.js"