create-snipara 2.0.1 → 2.0.2

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 +46 -30
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -13,7 +13,7 @@ import { homedir } from "os";
13
13
  // package.json
14
14
  var package_default = {
15
15
  name: "create-snipara",
16
- version: "2.0.1",
16
+ version: "2.0.2",
17
17
  description: "Onboard Snipara Hosted MCP Context + Memory with auth, companion workflows, and optional Snipara Sandbox",
18
18
  main: "dist/index.js",
19
19
  type: "module",
@@ -92,6 +92,7 @@ var API_URL = "https://api.snipara.com";
92
92
  var COMPANION_PACKAGE_NAME = "snipara-companion";
93
93
  var COMPANION_COMMAND_NAME = "snipara-companion";
94
94
  var COMPANION_NPX_COMMAND = "npx -y snipara-companion@latest";
95
+ var CREATE_SNIPARA_NPX_COMMAND = "npx -y create-snipara@latest";
95
96
  var MIN_COMPANION_VERSION = "3.0.0";
96
97
  var GITHUB_ANSWER_PACKS_LABEL = "GitHub PR Answer Packs";
97
98
  var MCP_PACKAGE_NAME = "snipara-mcp";
@@ -1493,18 +1494,24 @@ Canonical project context is in \`AGENTS.md\`. This file exists for Claude Code
1493
1494
  Use Snipara Hosted MCP before answering project-specific questions.
1494
1495
 
1495
1496
  - Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
1496
- - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` before concluding a tool is unavailable.
1497
+ - Auth: use \`SNIPARA_API_KEY\` from the environment. Never commit keys.
1498
+ - At the start of every new thread, validate hosted MCP with a tool-oriented call such as \`snipara_settings\`, \`tools/list\`, or a lightweight \`snipara_context_query\`. Do not treat empty MCP resources/templates as an outage because Snipara may be tool-only.
1499
+ - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` and compare exact tool names before concluding a tool is unavailable. If only a partial surface remains after exact discovery, use \`snipara-companion recall\`, \`snipara-companion query\`, and \`snipara-companion task-commit\` as a reliable local fallback.
1497
1500
 
1498
1501
  ${EXPERIENCE_GOAL_SECTION}
1499
1502
 
1500
1503
  - Start substantial work with \`snipara_recall\` and a targeted \`snipara_context_query\`.
1501
1504
  - Use \`snipara_context_query\` for source truth and \`snipara_get_chunk\` for exact cited sections.
1502
1505
  - When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
1506
+ - For coding tasks, choose a workflow mode before editing: LITE for small single-phase changes, FULL managed workflow for multi-file, risky, release/deploy, architectural, compaction-prone, or future-maintainer-sensitive work.
1507
+ - Use \`snipara_plan\` for complex work when exposed; reserve \`snipara_decompose\` for FULL-mode work when the hosted server exposes it.
1503
1508
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
1504
1509
  - For code impact and structural code questions, use \`snipara-companion code callers/imports/neighbors/shortest-path/impact\` first when \`snipara-companion\` is installed; it auto-selects hosted MCP for clean indexed code or the local overlay for dirty/ahead worktrees and reports \`sourceSelection\`. Use hosted \`snipara_code_impact\` only when companion is unavailable or after push/reindex for canonical graph impact.
1510
+ - Run \`snipara-companion code impact\` before risky multi-file changes, PR reviews, routes, services, jobs, auth, billing, deployment, schema, migrations, or explicit "what is missing" assessments.
1505
1511
  - On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
1506
1512
  - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1507
1513
  - Use local file reads, \`rg\`, \`git status --short\`, and tests for exact edits/current working tree; use Snipara for architecture and indexed code graph context.
1514
+ - If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
1508
1515
  - When the plan is visible and \`snipara-companion\` is installed, keep the machine plan in JSON, use \`snipara-companion workflow start\`, \`phase-start\`, and \`phase-commit\` per phase, and after \`workflow resume\` rerun \`workflow phase-start\` before editing again.
1509
1516
  - If generated hooks are enabled, \`snipara-companion pre-tool\`, \`post-tool\`, and \`stuck-guard status\` provide runtime Rescue Pack checks when the agent loops on failures or empty searches.
1510
1517
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps. For runtime-bound phases, capture compact rehydratable state with \`workflow runtime-checkpoint <phase_id> --summary "<state>" --rehydrate-file <state.json>\`. Then \`workflow resume\` restores workflow and memory continuity plus the recorded Sandbox binding and prints a reattach or rehydrate plan. It does not snapshot or exactly restore a live Snipara Sandbox or REPL process.
@@ -1526,8 +1533,9 @@ alwaysApply: true
1526
1533
  This workspace uses Snipara Hosted MCP for current project context, business/client context, and reviewed memory.
1527
1534
 
1528
1535
  - Check the configured Snipara MCP server before answering project-specific questions.
1529
- - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` before concluding a tool is unavailable.
1530
1536
  - Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
1537
+ - At the start of every new thread, validate hosted MCP with a tool-oriented call such as \`snipara_settings\`, \`tools/list\`, or a lightweight \`snipara_context_query\`. Do not treat empty MCP resources/templates as an outage because Snipara may be tool-only.
1538
+ - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` and compare exact tool names before concluding a tool is unavailable. If only a partial surface remains after exact discovery, use \`snipara-companion recall\`, \`snipara-companion query\`, and \`snipara-companion task-commit\` as a reliable local fallback.
1531
1539
 
1532
1540
  ${EXPERIENCE_GOAL_SECTION}
1533
1541
 
@@ -1535,12 +1543,15 @@ ${EXPERIENCE_GOAL_SECTION}
1535
1543
  - Use \`snipara_context_query\` for docs, business context, current client/project truth, and narrative source material.
1536
1544
  - When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
1537
1545
  - Use \`snipara_get_chunk\` before relying on exact cited wording from reference-based results.
1546
+ - For coding tasks, choose a workflow mode before editing: LITE for small single-phase changes, FULL managed workflow for multi-file, risky, release/deploy, architectural, compaction-prone, or future-maintainer-sensitive work.
1538
1547
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
1539
1548
  - For code impact and structural code questions, use \`snipara-companion code callers/imports/neighbors/shortest-path/impact\` first when \`snipara-companion\` is installed; it auto-selects hosted MCP for clean indexed code or the local overlay for dirty/ahead worktrees and reports \`sourceSelection\`. Use hosted \`snipara_code_impact\` only when companion is unavailable or after push/reindex for canonical graph impact.
1549
+ - Run \`snipara-companion code impact\` before risky multi-file changes, PR reviews, routes, services, jobs, auth, billing, deployment, schema, migrations, or explicit "what is missing" assessments.
1540
1550
  - On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
1541
1551
  - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1542
1552
  - Use \`snipara_plan\` for complex work when available; use \`snipara_decompose\` when deeper decomposition is needed and the hosted server exposes it.
1543
1553
  - Use local file reads, \`rg\`, \`git status --short\`, and tests for exact code edits and current working-tree state.
1554
+ - If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
1544
1555
  - When \`snipara-companion\` is installed and the LLM has a visible multi-phase plan, keep the machine plan in JSON, use \`snipara-companion workflow start\`, \`phase-start\`, and \`phase-commit\` per phase, and after \`workflow resume\` rerun \`workflow phase-start\` before editing again.
1545
1556
  - Generated hooks can call \`snipara-companion pre-tool\`, \`post-tool\`, and \`stuck-guard status\` so Rescue Packs are runtime-triggered rather than relying only on instructions.
1546
1557
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps. For runtime-bound phases, capture compact rehydratable state with \`workflow runtime-checkpoint <phase_id> --summary "<state>" --rehydrate-file <state.json>\`. Then \`workflow resume\` restores workflow and memory continuity plus the recorded Sandbox binding and prints a reattach or rehydrate plan. It does not snapshot or exactly restore a live Snipara Sandbox or REPL process.
@@ -2263,9 +2274,9 @@ function getCompanionCommands(answers) {
2263
2274
  }
2264
2275
  ] : [
2265
2276
  {
2266
- title: "Enable local source activation",
2267
- command: "npx create-snipara repair --with-companion",
2268
- purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run ${COMPANION_NPX_COMMAND} source init without GitHub.`
2277
+ title: "Enable local companion workflows",
2278
+ command: `${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`,
2279
+ purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run local source activation, folder onboarding, and managed workflow commands without the dashboard.`
2269
2280
  }
2270
2281
  ];
2271
2282
  const businessOnboardingCommands = answers.installCompanion ? [
@@ -2279,20 +2290,14 @@ function getCompanionCommands(answers) {
2279
2290
  command: `${COMPANION_NPX_COMMAND} onboard-folder ./client-export --source-provider local_folder --apply`,
2280
2291
  purpose: "Upload approved business-context documents to hosted Snipara and trigger document reindexing."
2281
2292
  }
2282
- ] : [
2283
- {
2284
- title: "Enable business folder onboarding",
2285
- command: "npx create-snipara repair --with-companion",
2286
- purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run ${COMPANION_NPX_COMMAND} onboard-folder without using the dashboard.`
2287
- }
2288
- ];
2293
+ ] : [];
2289
2294
  const githubAnswerPacksCommand = answers.githubRepo ? {
2290
2295
  title: "Connect GitHub PR Answer Packs",
2291
- command: `npx create-snipara --github${answers.githubPath ? ` --github-path ${answers.githubPath}` : ""}`,
2296
+ command: `${CREATE_SNIPARA_NPX_COMMAND} --github${answers.githubPath ? ` --github-path ${answers.githubPath}` : ""}`,
2292
2297
  purpose: `Open the Snipara GitHub App flow for ${answers.githubRepo.fullName}. After the repo is connected, Snipara can generate scoped PR Answer Packs for GitHub-native agent workflows.`
2293
2298
  } : {
2294
2299
  title: "Connect a GitHub repo for PR Answer Packs",
2295
- command: "npx create-snipara --github",
2300
+ command: `${CREATE_SNIPARA_NPX_COMMAND} --github`,
2296
2301
  purpose: "Run this from a GitHub-backed repository to approve the Snipara GitHub App and enable repository sync plus PR Answer Packs."
2297
2302
  };
2298
2303
  return [
@@ -2303,12 +2308,12 @@ function getCompanionCommands(answers) {
2303
2308
  },
2304
2309
  {
2305
2310
  title: "Run doctor for this project",
2306
- command: "create-snipara doctor",
2311
+ command: `${CREATE_SNIPARA_NPX_COMMAND} doctor`,
2307
2312
  purpose: "Inspect local wiring, hosted reachability, and generated assets."
2308
2313
  },
2309
2314
  {
2310
2315
  title: "Repair local setup",
2311
- command: "create-snipara repair",
2316
+ command: `${CREATE_SNIPARA_NPX_COMMAND} repair`,
2312
2317
  purpose: "Rebuild config files, hooks, and the companion pack."
2313
2318
  },
2314
2319
  ...localSourceCommands,
@@ -2344,7 +2349,7 @@ function getCompanionCommands(answers) {
2344
2349
  },
2345
2350
  {
2346
2351
  title: answers.installOrchestrator ? "Run an explicit production orchestration gate" : "Enable explicit production orchestration",
2347
- command: answers.installOrchestrator ? `${ORCHESTRATOR_COMMAND_NAME} check-drift --route /api/health` : "npx create-snipara repair --with-orchestrator",
2352
+ command: answers.installOrchestrator ? `${ORCHESTRATOR_COMMAND_NAME} check-drift --route /api/health` : `${CREATE_SNIPARA_NPX_COMMAND} repair --with-orchestrator`,
2348
2353
  purpose: answers.installOrchestrator ? "Use snipara-orchestrator only for proof-based validation, drift checks, htasks, or multi-agent coordination." : "Install snipara-orchestrator only when production gates, drift checks, htasks, or multi-agent coordination are required."
2349
2354
  },
2350
2355
  githubAnswerPacksCommand,
@@ -2505,10 +2510,15 @@ ${guidance.map((line) => `- ${line}`).join("\n")}
2505
2510
 
2506
2511
  ## Agent Workflow
2507
2512
 
2513
+ - At the start of every new thread, validate hosted MCP with a tool-oriented call such as \`snipara_settings\`, \`tools/list\`, or a lightweight \`snipara_context_query\`. Do not treat empty MCP resources/templates as an outage because Snipara may be tool-only.
2514
+ - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` and compare exact tool names before concluding a tool is unavailable. If only a partial surface remains after exact discovery, use \`snipara-companion recall\`, \`snipara-companion query\`, and \`snipara-companion task-commit\` as a reliable local fallback.
2508
2515
  - Start substantial work with \`snipara_recall\` and \`snipara_context_query\`.
2509
2516
  - Use \`answer_pack\` facts, caveats, source maps, and verification checks before making claims.
2510
- - Use \`snipara_code_symbol_card\` for important symbols. For risky multi-file changes, use \`snipara-companion code impact\` first when companion is available; use hosted \`snipara_code_impact\` only when companion is unavailable or after push/reindex for canonical graph impact.
2517
+ - For coding tasks, choose a workflow mode before editing: LITE for small single-phase changes, FULL managed workflow for multi-file, risky, release/deploy, architectural, compaction-prone, or future-maintainer-sensitive work.
2518
+ - Use \`snipara_plan\` for complex work when exposed; reserve \`snipara_decompose\` for FULL-mode work when the hosted server exposes it.
2519
+ - Use \`snipara_code_symbol_card\` for important symbols. For risky multi-file changes, PR reviews, routes, services, jobs, auth, billing, deployment, schema, migrations, or explicit "what is missing" assessments, use \`snipara-companion code impact\` first when companion is available; use hosted \`snipara_code_impact\` only when companion is unavailable or after push/reindex for canonical graph impact.
2511
2520
  - Use the installed \`snipara-companion\` binary for low-latency hooks; use \`${COMPANION_NPX_COMMAND}\` for one-off terminal commands when freshness matters.
2521
+ - If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
2512
2522
  - Use a JSON machine plan plus \`snipara-companion workflow start\`, \`phase-start\`, \`phase-commit\`, \`workflow resume\`, and \`final-commit\` for multi-phase work. After \`workflow resume\`, rerun \`workflow phase-start <phase_id>\` before editing again.
2513
2523
  - When remembered knowledge is obsolete or replaced, use \`snipara-companion memory invalidate <memory-id>\` or \`snipara-companion memory supersede <old-memory-id> <new-memory-id>\` when companion is installed; otherwise use hosted \`snipara_memory_invalidate\` or \`snipara_memory_supersede\`.
2514
2524
  - Persist only durable decisions, learnings, preferences, workflows, and troubleshooting outcomes. Never persist secrets.
@@ -2566,7 +2576,7 @@ Apply only after reviewing the manifest:
2566
2576
 
2567
2577
  \`${COMPANION_NPX_COMMAND} onboard-folder ./client-export --source-provider local_folder --apply\`` : `This setup did not install snipara-companion. Enable it before business folder imports:
2568
2578
 
2569
- \`npx create-snipara repair --with-companion\``}
2579
+ \`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
2570
2580
 
2571
2581
  ## Local Source Activation
2572
2582
 
@@ -2586,7 +2596,7 @@ Inspect local drift:
2586
2596
 
2587
2597
  \`${COMPANION_NPX_COMMAND} source status --json\`` : `This setup did not install snipara-companion. Enable it before local source activation:
2588
2598
 
2589
- \`npx create-snipara repair --with-companion\``}
2599
+ \`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
2590
2600
 
2591
2601
  GitHub automation remains useful after first value: it gives Snipara a canonical hosted repository
2592
2602
  sync and PR Answer Packs. Local source activation is the fallback, not a replacement for explicit
@@ -2599,7 +2609,7 @@ They attach scoped repository context to pull requests so coding agents can load
2599
2609
  architecture notes, related history, conventions, and linked documentation without rescanning the
2600
2610
  entire repository.
2601
2611
 
2602
- ${answers.githubRepo ? `This folder maps to \`${answers.githubRepo.fullName}\`. Use the GitHub App setup link below to connect the repo and enable PR Answer Packs for new or updated pull requests.` : `Run \`npx create-snipara --github\` from a GitHub-backed repository to open the approval flow for repository sync and PR Answer Packs.`}
2612
+ ${answers.githubRepo ? `This folder maps to \`${answers.githubRepo.fullName}\`. Use the GitHub App setup link below to connect the repo and enable PR Answer Packs for new or updated pull requests.` : `Run \`${CREATE_SNIPARA_NPX_COMMAND} --github\` from a GitHub-backed repository to open the approval flow for repository sync and PR Answer Packs.`}
2603
2613
 
2604
2614
  ## GitHub Repository Automation
2605
2615
 
@@ -2609,7 +2619,7 @@ Open the Snipara GitHub App setup and connect this repository:
2609
2619
 
2610
2620
  \`${buildGitHubAutomationUrl(answers)}\`
2611
2621
 
2612
- After connection, Snipara creates or reuses the repository project, enables push sync, starts the first documentation sync, and can publish PR Answer Packs through GitHub-native PR surfaces. Hosted memory stays available through the same account.` : `No GitHub repository was detected for this folder. Run \`npx create-snipara --github\` from a GitHub-backed git repository to open the repo automation path.`}
2622
+ After connection, Snipara creates or reuses the repository project, enables push sync, starts the first documentation sync, and can publish PR Answer Packs through GitHub-native PR surfaces. Hosted memory stays available through the same account.` : `No GitHub repository was detected for this folder. Run \`${CREATE_SNIPARA_NPX_COMMAND} --github\` from a GitHub-backed git repository to open the repo automation path.`}
2613
2623
 
2614
2624
  ## Suggested Commands
2615
2625
 
@@ -2751,7 +2761,7 @@ function getClaudeClientChecks(answers, detection) {
2751
2761
  checks.push({
2752
2762
  name: "claude_code_hooks",
2753
2763
  status: !answers.installHooks || projectHooksConfigured ? "pass" : "warn",
2754
- detail: answers.installHooks ? projectHooksConfigured ? "Project .claude/settings.json contains Snipara hook commands" : "Project .claude/settings.json hooks missing; run create-snipara repair --with-hooks" : "Claude hooks not requested"
2764
+ detail: answers.installHooks ? projectHooksConfigured ? "Project .claude/settings.json contains Snipara hook commands" : `Project .claude/settings.json hooks missing; run ${CREATE_SNIPARA_NPX_COMMAND} repair --with-hooks` : "Claude hooks not requested"
2755
2765
  });
2756
2766
  }
2757
2767
  if (answers.aiClient === "claude-desktop") {
@@ -2945,7 +2955,7 @@ async function runValidation(answers, includeHostedCheck, options = {}) {
2945
2955
  checks.push({
2946
2956
  name: "github_answer_packs",
2947
2957
  status: answers.configureGitHub ? "pass" : githubRepo ? "warn" : "pass",
2948
- detail: answers.configureGitHub ? `GitHub App setup link generated for ${githubRepo?.fullName || "detected repo"}; PR Answer Packs are enabled after browser approval` : githubRepo ? `GitHub repo ${githubRepo.fullName} detected; run npx create-snipara --github to connect PR Answer Packs` : "No GitHub repo detected; PR Answer Packs require the GitHub App setup path"
2958
+ detail: answers.configureGitHub ? `GitHub App setup link generated for ${githubRepo?.fullName || "detected repo"}; PR Answer Packs are enabled after browser approval` : githubRepo ? `GitHub repo ${githubRepo.fullName} detected; run ${CREATE_SNIPARA_NPX_COMMAND} --github to connect PR Answer Packs` : "No GitHub repo detected; PR Answer Packs require the GitHub App setup path"
2949
2959
  });
2950
2960
  if (includeHostedCheck && answers.apiKeyType !== "none" && !answers.apiKey.includes("YOUR_")) {
2951
2961
  checks.push(...await testHostedConnection(answers));
@@ -3341,7 +3351,7 @@ function printSuccess(answers, report) {
3341
3351
  "For Claude Code, start a new session and confirm Snipara appears in Settings -> MCP or ToolSearch."
3342
3352
  );
3343
3353
  printNextStep(
3344
- "If Snipara tools are missing, run: npx create-snipara doctor --client claude-code"
3354
+ `If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-code`
3345
3355
  );
3346
3356
  }
3347
3357
  if (answers.aiClient === "claude-desktop") {
@@ -3349,7 +3359,7 @@ function printSuccess(answers, report) {
3349
3359
  "For Claude Desktop, confirm the Snipara server appears in the desktop MCP settings after restart."
3350
3360
  );
3351
3361
  printNextStep(
3352
- "If Snipara tools are missing, run: npx create-snipara doctor --client claude-desktop"
3362
+ `If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-desktop`
3353
3363
  );
3354
3364
  }
3355
3365
  if (answers.aiClient === "codex") {
@@ -3378,7 +3388,9 @@ function printSuccess(answers, report) {
3378
3388
  );
3379
3389
  }
3380
3390
  printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
3381
- printNextStep("Run create-snipara doctor anytime you want a fresh local validation report.");
3391
+ printNextStep(
3392
+ `Run ${CREATE_SNIPARA_NPX_COMMAND} doctor anytime you want a fresh local validation report.`
3393
+ );
3382
3394
  if (answers.installCompanion) {
3383
3395
  printNextStep(
3384
3396
  `${COMPANION_COMMAND_NAME} ${MIN_COMPANION_VERSION}+ is installed for low-latency local hooks.`
@@ -3395,7 +3407,7 @@ function printSuccess(answers, report) {
3395
3407
  );
3396
3408
  } else if (answers.profile !== "runtime-only") {
3397
3409
  printNextStep(
3398
- "For dashboardless business folder imports, enable companion with: npx create-snipara repair --with-companion"
3410
+ `For dashboardless business folder imports, enable companion with: ${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`
3399
3411
  );
3400
3412
  }
3401
3413
  if (answers.installRuntime && !answers.runSandboxInit) {
@@ -3419,7 +3431,11 @@ function printSuccess(answers, report) {
3419
3431
  const symbol = check.status === "fail" ? chalk.red("\u2717") : chalk.yellow("!");
3420
3432
  console.log(` ${symbol} ${check.name}: ${check.detail}`);
3421
3433
  }
3422
- console.log(chalk.dim("\n Run create-snipara repair to rebuild local wiring.\n"));
3434
+ console.log(
3435
+ chalk.dim(`
3436
+ Run ${CREATE_SNIPARA_NPX_COMMAND} repair to rebuild local wiring.
3437
+ `)
3438
+ );
3423
3439
  } else {
3424
3440
  console.log(
3425
3441
  chalk.dim(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-snipara",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "description": "Onboard Snipara Hosted MCP Context + Memory with auth, companion workflows, and optional Snipara Sandbox",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",