fullstackgtm 0.52.3 → 0.52.4

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 CHANGED
@@ -7,6 +7,13 @@ The path to 1.0 is planned in [docs/roadmap-to-1.0.md](https://github.com/fullst
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.52.4] — 2026-07-11
11
+
12
+ ### Fixed
13
+
14
+ - Saving an interactively reviewed website-derived ICP no longer prints a
15
+ duplicate copy of the card below the file-written confirmation.
16
+
10
17
  ## [0.52.3] — 2026-07-11
11
18
 
12
19
  ### Changed
package/dist/cli/icp.js CHANGED
@@ -225,6 +225,7 @@ ops. Develop one by interview, then \`enrich acquire\` picks up ./icp.json.
225
225
  finally {
226
226
  status.done();
227
227
  }
228
+ const reviewedInteractively = !rest.includes("--json") && !rest.includes("--no-interactive") && Boolean(process.stdin.isTTY && process.stdout.isTTY);
228
229
  if (!rest.includes("--json") && !rest.includes("--no-interactive")) {
229
230
  const reviewed = await reviewDerivedIcp(derived);
230
231
  if (!reviewed)
@@ -237,7 +238,10 @@ ops. Develop one by interview, then \`enrich acquire\` picks up ./icp.json.
237
238
  writeFileSync(path, `${JSON.stringify(derived.icp, null, 2)}\n`);
238
239
  console.error(`Wrote reviewed ICP to ${path}. Next: fullstackgtm enrich acquire --source clay --icp ${path}`);
239
240
  }
240
- console.log(rest.includes("--json") ? JSON.stringify(derived, null, 2) : renderDerivedIcp(derived));
241
+ if (rest.includes("--json"))
242
+ console.log(JSON.stringify(derived, null, 2));
243
+ else if (!reviewedInteractively)
244
+ console.log(renderDerivedIcp(derived));
241
245
  return;
242
246
  }
243
247
  if (sub === "set") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fullstackgtm",
3
- "version": "0.52.3",
3
+ "version": "0.52.4",
4
4
  "description": "Open-source agentic GTM ops framework: canonical GTM data model, pluggable deterministic audits, reviewable dry-run patch plans, approval-gated write-back with conflict detection, and cross-system entity resolution. HubSpot, Salesforce, and Stripe connectors included.",
5
5
  "license": "Apache-2.0",
6
6
  "author": "Full Stack GTM LLC <ryan@fullstackgtm.com> (https://fullstackgtm.com)",
package/src/cli/icp.ts CHANGED
@@ -216,6 +216,7 @@ ops. Develop one by interview, then \`enrich acquire\` picks up ./icp.json.
216
216
  } finally {
217
217
  status.done();
218
218
  }
219
+ const reviewedInteractively = !rest.includes("--json") && !rest.includes("--no-interactive") && Boolean(process.stdin.isTTY && process.stdout.isTTY);
219
220
  if (!rest.includes("--json") && !rest.includes("--no-interactive")) {
220
221
  const reviewed = await reviewDerivedIcp(derived);
221
222
  if (!reviewed) throw new Error("ICP review cancelled; no file was written.");
@@ -227,7 +228,8 @@ ops. Develop one by interview, then \`enrich acquire\` picks up ./icp.json.
227
228
  writeFileSync(path, `${JSON.stringify(derived.icp, null, 2)}\n`);
228
229
  console.error(`Wrote reviewed ICP to ${path}. Next: fullstackgtm enrich acquire --source clay --icp ${path}`);
229
230
  }
230
- console.log(rest.includes("--json") ? JSON.stringify(derived, null, 2) : renderDerivedIcp(derived));
231
+ if (rest.includes("--json")) console.log(JSON.stringify(derived, null, 2));
232
+ else if (!reviewedInteractively) console.log(renderDerivedIcp(derived));
231
233
  return;
232
234
  }
233
235
  if (sub === "set") {