create-snipara 2.0.1 → 2.0.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.
- package/dist/index.js +58 -30
- 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.
|
|
16
|
+
version: "2.0.3",
|
|
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";
|
|
@@ -1284,6 +1285,11 @@ async function createClaudeCodeConfig(answers) {
|
|
|
1284
1285
|
console.log(chalk.bold("\n\u{1F916} Claude Code MCP\n"));
|
|
1285
1286
|
console.log(chalk.green(" \u2713 Project .mcp.json contains the Snipara Hosted MCP server"));
|
|
1286
1287
|
console.log(chalk.dim(" Claude Code loads project-scoped MCP servers from .mcp.json."));
|
|
1288
|
+
console.log(
|
|
1289
|
+
chalk.dim(
|
|
1290
|
+
" Claude Code does not load project .env files for MCP; export SNIPARA_API_KEY before launching it."
|
|
1291
|
+
)
|
|
1292
|
+
);
|
|
1287
1293
|
console.log(chalk.dim(` Verify with: claude mcp list && claude mcp test snipara`));
|
|
1288
1294
|
}
|
|
1289
1295
|
async function createProjectBinding(answers) {
|
|
@@ -1493,18 +1499,24 @@ Canonical project context is in \`AGENTS.md\`. This file exists for Claude Code
|
|
|
1493
1499
|
Use Snipara Hosted MCP before answering project-specific questions.
|
|
1494
1500
|
|
|
1495
1501
|
- Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
|
|
1496
|
-
-
|
|
1502
|
+
- Auth: use \`SNIPARA_API_KEY\` from the environment. Never commit keys.
|
|
1503
|
+
- 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.
|
|
1504
|
+
- 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
1505
|
|
|
1498
1506
|
${EXPERIENCE_GOAL_SECTION}
|
|
1499
1507
|
|
|
1500
1508
|
- Start substantial work with \`snipara_recall\` and a targeted \`snipara_context_query\`.
|
|
1501
1509
|
- Use \`snipara_context_query\` for source truth and \`snipara_get_chunk\` for exact cited sections.
|
|
1502
1510
|
- When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
|
|
1511
|
+
- 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.
|
|
1512
|
+
- Use \`snipara_plan\` for complex work when exposed; reserve \`snipara_decompose\` for FULL-mode work when the hosted server exposes it.
|
|
1503
1513
|
- Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
|
|
1504
1514
|
- 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.
|
|
1515
|
+
- 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
1516
|
- On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
|
|
1506
1517
|
- Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
|
|
1507
1518
|
- 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.
|
|
1519
|
+
- If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
|
|
1508
1520
|
- 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
1521
|
- 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
1522
|
- 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 +1538,9 @@ alwaysApply: true
|
|
|
1526
1538
|
This workspace uses Snipara Hosted MCP for current project context, business/client context, and reviewed memory.
|
|
1527
1539
|
|
|
1528
1540
|
- 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
1541
|
- Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
|
|
1542
|
+
- 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.
|
|
1543
|
+
- 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
1544
|
|
|
1532
1545
|
${EXPERIENCE_GOAL_SECTION}
|
|
1533
1546
|
|
|
@@ -1535,12 +1548,15 @@ ${EXPERIENCE_GOAL_SECTION}
|
|
|
1535
1548
|
- Use \`snipara_context_query\` for docs, business context, current client/project truth, and narrative source material.
|
|
1536
1549
|
- When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
|
|
1537
1550
|
- Use \`snipara_get_chunk\` before relying on exact cited wording from reference-based results.
|
|
1551
|
+
- 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
1552
|
- Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
|
|
1539
1553
|
- 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.
|
|
1554
|
+
- 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
1555
|
- On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
|
|
1541
1556
|
- Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
|
|
1542
1557
|
- Use \`snipara_plan\` for complex work when available; use \`snipara_decompose\` when deeper decomposition is needed and the hosted server exposes it.
|
|
1543
1558
|
- Use local file reads, \`rg\`, \`git status --short\`, and tests for exact code edits and current working-tree state.
|
|
1559
|
+
- If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
|
|
1544
1560
|
- 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
1561
|
- 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
1562
|
- 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 +2279,9 @@ function getCompanionCommands(answers) {
|
|
|
2263
2279
|
}
|
|
2264
2280
|
] : [
|
|
2265
2281
|
{
|
|
2266
|
-
title: "Enable local
|
|
2267
|
-
command:
|
|
2268
|
-
purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run
|
|
2282
|
+
title: "Enable local companion workflows",
|
|
2283
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`,
|
|
2284
|
+
purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run local source activation, folder onboarding, and managed workflow commands without the dashboard.`
|
|
2269
2285
|
}
|
|
2270
2286
|
];
|
|
2271
2287
|
const businessOnboardingCommands = answers.installCompanion ? [
|
|
@@ -2279,20 +2295,14 @@ function getCompanionCommands(answers) {
|
|
|
2279
2295
|
command: `${COMPANION_NPX_COMMAND} onboard-folder ./client-export --source-provider local_folder --apply`,
|
|
2280
2296
|
purpose: "Upload approved business-context documents to hosted Snipara and trigger document reindexing."
|
|
2281
2297
|
}
|
|
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
|
-
];
|
|
2298
|
+
] : [];
|
|
2289
2299
|
const githubAnswerPacksCommand = answers.githubRepo ? {
|
|
2290
2300
|
title: "Connect GitHub PR Answer Packs",
|
|
2291
|
-
command:
|
|
2301
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} --github${answers.githubPath ? ` --github-path ${answers.githubPath}` : ""}`,
|
|
2292
2302
|
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
2303
|
} : {
|
|
2294
2304
|
title: "Connect a GitHub repo for PR Answer Packs",
|
|
2295
|
-
command:
|
|
2305
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} --github`,
|
|
2296
2306
|
purpose: "Run this from a GitHub-backed repository to approve the Snipara GitHub App and enable repository sync plus PR Answer Packs."
|
|
2297
2307
|
};
|
|
2298
2308
|
return [
|
|
@@ -2303,12 +2313,12 @@ function getCompanionCommands(answers) {
|
|
|
2303
2313
|
},
|
|
2304
2314
|
{
|
|
2305
2315
|
title: "Run doctor for this project",
|
|
2306
|
-
command:
|
|
2316
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} doctor`,
|
|
2307
2317
|
purpose: "Inspect local wiring, hosted reachability, and generated assets."
|
|
2308
2318
|
},
|
|
2309
2319
|
{
|
|
2310
2320
|
title: "Repair local setup",
|
|
2311
|
-
command:
|
|
2321
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} repair`,
|
|
2312
2322
|
purpose: "Rebuild config files, hooks, and the companion pack."
|
|
2313
2323
|
},
|
|
2314
2324
|
...localSourceCommands,
|
|
@@ -2344,7 +2354,7 @@ function getCompanionCommands(answers) {
|
|
|
2344
2354
|
},
|
|
2345
2355
|
{
|
|
2346
2356
|
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` :
|
|
2357
|
+
command: answers.installOrchestrator ? `${ORCHESTRATOR_COMMAND_NAME} check-drift --route /api/health` : `${CREATE_SNIPARA_NPX_COMMAND} repair --with-orchestrator`,
|
|
2348
2358
|
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
2359
|
},
|
|
2350
2360
|
githubAnswerPacksCommand,
|
|
@@ -2505,10 +2515,15 @@ ${guidance.map((line) => `- ${line}`).join("\n")}
|
|
|
2505
2515
|
|
|
2506
2516
|
## Agent Workflow
|
|
2507
2517
|
|
|
2518
|
+
- 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.
|
|
2519
|
+
- 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
2520
|
- Start substantial work with \`snipara_recall\` and \`snipara_context_query\`.
|
|
2509
2521
|
- Use \`answer_pack\` facts, caveats, source maps, and verification checks before making claims.
|
|
2510
|
-
-
|
|
2522
|
+
- 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.
|
|
2523
|
+
- Use \`snipara_plan\` for complex work when exposed; reserve \`snipara_decompose\` for FULL-mode work when the hosted server exposes it.
|
|
2524
|
+
- 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
2525
|
- Use the installed \`snipara-companion\` binary for low-latency hooks; use \`${COMPANION_NPX_COMMAND}\` for one-off terminal commands when freshness matters.
|
|
2526
|
+
- If a broad query is slow, retry once with a narrow keyword query before falling back to local search.
|
|
2512
2527
|
- 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
2528
|
- 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
2529
|
- Persist only durable decisions, learnings, preferences, workflows, and troubleshooting outcomes. Never persist secrets.
|
|
@@ -2566,7 +2581,7 @@ Apply only after reviewing the manifest:
|
|
|
2566
2581
|
|
|
2567
2582
|
\`${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
2583
|
|
|
2569
|
-
|
|
2584
|
+
\`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
|
|
2570
2585
|
|
|
2571
2586
|
## Local Source Activation
|
|
2572
2587
|
|
|
@@ -2586,7 +2601,7 @@ Inspect local drift:
|
|
|
2586
2601
|
|
|
2587
2602
|
\`${COMPANION_NPX_COMMAND} source status --json\`` : `This setup did not install snipara-companion. Enable it before local source activation:
|
|
2588
2603
|
|
|
2589
|
-
|
|
2604
|
+
\`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
|
|
2590
2605
|
|
|
2591
2606
|
GitHub automation remains useful after first value: it gives Snipara a canonical hosted repository
|
|
2592
2607
|
sync and PR Answer Packs. Local source activation is the fallback, not a replacement for explicit
|
|
@@ -2599,7 +2614,7 @@ They attach scoped repository context to pull requests so coding agents can load
|
|
|
2599
2614
|
architecture notes, related history, conventions, and linked documentation without rescanning the
|
|
2600
2615
|
entire repository.
|
|
2601
2616
|
|
|
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
|
|
2617
|
+
${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
2618
|
|
|
2604
2619
|
## GitHub Repository Automation
|
|
2605
2620
|
|
|
@@ -2609,7 +2624,7 @@ Open the Snipara GitHub App setup and connect this repository:
|
|
|
2609
2624
|
|
|
2610
2625
|
\`${buildGitHubAutomationUrl(answers)}\`
|
|
2611
2626
|
|
|
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
|
|
2627
|
+
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
2628
|
|
|
2614
2629
|
## Suggested Commands
|
|
2615
2630
|
|
|
@@ -2741,6 +2756,8 @@ function getClaudeClientChecks(answers, detection) {
|
|
|
2741
2756
|
detail: projectHasSnipara ? "Project .mcp.json contains a Snipara Hosted MCP server" : "Project .mcp.json does not contain a Snipara Hosted MCP server"
|
|
2742
2757
|
});
|
|
2743
2758
|
if (answers.aiClient === "claude-code") {
|
|
2759
|
+
const envFileApiKey = readApiKeyFromEnvFiles();
|
|
2760
|
+
const processHasApiKey = Boolean(process.env.SNIPARA_API_KEY?.trim());
|
|
2744
2761
|
checks.push({
|
|
2745
2762
|
name: "claude_code_settings",
|
|
2746
2763
|
status: hasLegacyCodeSettingsMcp ? "warn" : "pass",
|
|
@@ -2748,10 +2765,15 @@ function getClaudeClientChecks(answers, detection) {
|
|
|
2748
2765
|
", "
|
|
2749
2766
|
)}); Claude Code project MCP should live in .mcp.json or be managed by claude mcp add --scope project` : "Claude settings are not being used as the MCP destination; .claude/settings.json is hooks-only"
|
|
2750
2767
|
});
|
|
2768
|
+
checks.push({
|
|
2769
|
+
name: "claude_env_key_visible",
|
|
2770
|
+
status: processHasApiKey ? "pass" : "warn",
|
|
2771
|
+
detail: processHasApiKey ? "SNIPARA_API_KEY is visible in the current process environment used for MCP diagnostics" : envFileApiKey ? "SNIPARA_API_KEY exists in .env/.env.local, but Claude Code does not load project .env files for MCP servers. Export it in the shell or launch environment before starting Claude Code, then run: claude mcp list && claude mcp test snipara" : "SNIPARA_API_KEY is not visible to this process. Export it in the shell or launch environment before starting Claude Code, then run: claude mcp list && claude mcp test snipara"
|
|
2772
|
+
});
|
|
2751
2773
|
checks.push({
|
|
2752
2774
|
name: "claude_code_hooks",
|
|
2753
2775
|
status: !answers.installHooks || projectHooksConfigured ? "pass" : "warn",
|
|
2754
|
-
detail: answers.installHooks ? projectHooksConfigured ? "Project .claude/settings.json contains Snipara hook commands" :
|
|
2776
|
+
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
2777
|
});
|
|
2756
2778
|
}
|
|
2757
2779
|
if (answers.aiClient === "claude-desktop") {
|
|
@@ -2945,7 +2967,7 @@ async function runValidation(answers, includeHostedCheck, options = {}) {
|
|
|
2945
2967
|
checks.push({
|
|
2946
2968
|
name: "github_answer_packs",
|
|
2947
2969
|
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
|
|
2970
|
+
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
2971
|
});
|
|
2950
2972
|
if (includeHostedCheck && answers.apiKeyType !== "none" && !answers.apiKey.includes("YOUR_")) {
|
|
2951
2973
|
checks.push(...await testHostedConnection(answers));
|
|
@@ -3341,7 +3363,7 @@ function printSuccess(answers, report) {
|
|
|
3341
3363
|
"For Claude Code, start a new session and confirm Snipara appears in Settings -> MCP or ToolSearch."
|
|
3342
3364
|
);
|
|
3343
3365
|
printNextStep(
|
|
3344
|
-
|
|
3366
|
+
`If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-code`
|
|
3345
3367
|
);
|
|
3346
3368
|
}
|
|
3347
3369
|
if (answers.aiClient === "claude-desktop") {
|
|
@@ -3349,7 +3371,7 @@ function printSuccess(answers, report) {
|
|
|
3349
3371
|
"For Claude Desktop, confirm the Snipara server appears in the desktop MCP settings after restart."
|
|
3350
3372
|
);
|
|
3351
3373
|
printNextStep(
|
|
3352
|
-
|
|
3374
|
+
`If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-desktop`
|
|
3353
3375
|
);
|
|
3354
3376
|
}
|
|
3355
3377
|
if (answers.aiClient === "codex") {
|
|
@@ -3378,7 +3400,9 @@ function printSuccess(answers, report) {
|
|
|
3378
3400
|
);
|
|
3379
3401
|
}
|
|
3380
3402
|
printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
|
|
3381
|
-
printNextStep(
|
|
3403
|
+
printNextStep(
|
|
3404
|
+
`Run ${CREATE_SNIPARA_NPX_COMMAND} doctor anytime you want a fresh local validation report.`
|
|
3405
|
+
);
|
|
3382
3406
|
if (answers.installCompanion) {
|
|
3383
3407
|
printNextStep(
|
|
3384
3408
|
`${COMPANION_COMMAND_NAME} ${MIN_COMPANION_VERSION}+ is installed for low-latency local hooks.`
|
|
@@ -3395,7 +3419,7 @@ function printSuccess(answers, report) {
|
|
|
3395
3419
|
);
|
|
3396
3420
|
} else if (answers.profile !== "runtime-only") {
|
|
3397
3421
|
printNextStep(
|
|
3398
|
-
|
|
3422
|
+
`For dashboardless business folder imports, enable companion with: ${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`
|
|
3399
3423
|
);
|
|
3400
3424
|
}
|
|
3401
3425
|
if (answers.installRuntime && !answers.runSandboxInit) {
|
|
@@ -3419,7 +3443,11 @@ function printSuccess(answers, report) {
|
|
|
3419
3443
|
const symbol = check.status === "fail" ? chalk.red("\u2717") : chalk.yellow("!");
|
|
3420
3444
|
console.log(` ${symbol} ${check.name}: ${check.detail}`);
|
|
3421
3445
|
}
|
|
3422
|
-
console.log(
|
|
3446
|
+
console.log(
|
|
3447
|
+
chalk.dim(`
|
|
3448
|
+
Run ${CREATE_SNIPARA_NPX_COMMAND} repair to rebuild local wiring.
|
|
3449
|
+
`)
|
|
3450
|
+
);
|
|
3423
3451
|
} else {
|
|
3424
3452
|
console.log(
|
|
3425
3453
|
chalk.dim(
|
package/package.json
CHANGED