@whisperr/wizard 0.1.2 → 0.1.3

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 (2) hide show
  1. package/dist/index.js +27 -11
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -687,7 +687,6 @@ async function runIntegrationAgent(opts) {
687
687
  let costUsd = 0;
688
688
  const summaries = [];
689
689
  progress?.onPhase?.("Installing the SDK & wiring identify()");
690
- const verifyHint = playbook.verifyCommand ? ` Finish with a single \`${playbook.verifyCommand}\` and fix only what it flags.` : "";
691
690
  const corePrompt = [
692
691
  `Integrate the Whisperr ${playbook.target.displayName} SDK \u2014 CORE SETUP ONLY.`,
693
692
  `Project root: ${repoPath}`,
@@ -695,10 +694,16 @@ async function runIntegrationAgent(opts) {
695
694
  "Do exactly these, then stop:",
696
695
  `1. Add the Whisperr SDK dependency and install it (${playbook.packageRef}).`,
697
696
  "2. Initialize it once at app startup with the key + base URL below.",
698
- "3. Wire identify() where the end-user becomes known (login / signup /",
699
- " session restore), and reset() on logout.",
697
+ "3. Wire identify() at the PRIMARY place the user becomes authenticated",
698
+ " (after a successful login) and on session restore at app startup; call",
699
+ " reset() on logout. Do NOT enumerate every auth method \u2014 one primary",
700
+ " login path plus session restore is enough. Keep channels minimal: pass",
701
+ " email if it's readily at hand; phone/push are optional, skip them if not",
702
+ " obvious. Do not go hunting through every auth file.",
700
703
  "",
701
- "Do NOT instrument product events yet \u2014 that is a separate step." + verifyHint,
704
+ "This is a real app \u2014 be quick and decisive, aim to finish in ~15 steps.",
705
+ "Do NOT instrument product events yet \u2014 that is a separate step. Do not run",
706
+ "the analyzer or build; the human will review the diff.",
702
707
  "",
703
708
  "----- IDENTIFY -----",
704
709
  renderIdentifyBrief(manifest),
@@ -709,7 +714,7 @@ async function runIntegrationAgent(opts) {
709
714
  systemPrompt: systemPrompt6,
710
715
  repoPath,
711
716
  model: config.model,
712
- maxTurns: 20,
717
+ maxTurns: 35,
713
718
  progress
714
719
  });
715
720
  costUsd += core.costUsd;
@@ -991,7 +996,15 @@ Flutter is live today; ${theme.bright(
991
996
  }
992
997
  const spin = p.spinner();
993
998
  let phaseLabel = "Integrating";
994
- spin.start(theme.bright(phaseLabel) + theme.muted(" \u2014 the agent is working in your code"));
999
+ let lastLine = "";
1000
+ const startedAt = Date.now();
1001
+ spin.start(theme.bright(phaseLabel));
1002
+ const tick = setInterval(() => {
1003
+ const secs = Math.round((Date.now() - startedAt) / 1e3);
1004
+ spin.message(
1005
+ theme.bright(phaseLabel) + theme.muted(` \xB7 ${secs}s`) + (lastLine ? theme.muted(` \u2014 ${lastLine}`) : "")
1006
+ );
1007
+ }, 1e3);
995
1008
  const outcome = await runIntegrationAgent({
996
1009
  repoPath,
997
1010
  config,
@@ -1001,18 +1014,21 @@ Flutter is live today; ${theme.bright(
1001
1014
  progress: {
1002
1015
  onPhase(label) {
1003
1016
  phaseLabel = label;
1004
- spin.message(theme.bright(label));
1017
+ lastLine = "";
1005
1018
  },
1006
1019
  onActivity(line) {
1007
- spin.message(theme.bright(phaseLabel) + theme.muted(` \u2014 ${line}`));
1020
+ lastLine = line;
1008
1021
  }
1009
1022
  }
1010
1023
  }).catch((err) => {
1011
- spin.stop(theme.alert("Integration stopped"));
1012
1024
  p.log.error(err.message);
1013
1025
  return null;
1014
1026
  });
1015
- if (!outcome) return 1;
1027
+ clearInterval(tick);
1028
+ if (!outcome) {
1029
+ spin.stop(theme.alert("Integration stopped"));
1030
+ return 1;
1031
+ }
1016
1032
  const stopLabel = !outcome.coreOk ? theme.warn("Stopped early \u2014 partial setup is in your working tree") : outcome.eventsComplete ? theme.success("Integration complete") : theme.success("Core integration done") + theme.muted(" \u2014 some events left as follow-ups");
1017
1033
  spin.stop(stopLabel);
1018
1034
  const files = await changedFiles(repoPath, checkpoint);
@@ -1193,7 +1209,7 @@ async function main() {
1193
1209
  return;
1194
1210
  }
1195
1211
  if ("version" in parsed) {
1196
- console.log("0.1.2");
1212
+ console.log("0.1.3");
1197
1213
  return;
1198
1214
  }
1199
1215
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whisperr/wizard",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Whisperr Wizard — one command to integrate the Whisperr SDK into your app. Authenticates with your onboarded account and uses an AI coding agent to wire up identify() and your business events automatically.",
5
5
  "license": "UNLICENSED",
6
6
  "private": false,