create-snipara 2.0.0 → 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.
- package/README.md +8 -3
- package/dist/index.js +68 -31
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -15,9 +15,14 @@ creates or reuses auth, writes Hosted MCP config, and prepares the local project
|
|
|
15
15
|
so an LLM client can use Snipara context and reviewed memory. Install once with
|
|
16
16
|
`create-snipara`; continue every session with `snipara-companion`.
|
|
17
17
|
|
|
18
|
+
Use it when the goal is outcome-first agent work: the user asks for judgment,
|
|
19
|
+
implementation, release, or verification, and the agent handles Snipara context,
|
|
20
|
+
workflow state, package checks, Git operations, deployment, and smoke checks
|
|
21
|
+
behind the scenes.
|
|
22
|
+
|
|
18
23
|
Use it for:
|
|
19
24
|
|
|
20
|
-
- Hosted MCP onboarding for Claude Code, Cursor, Windsurf, Codex, Gemini, Mistral, VS Code/Copilot, Continue, ChatGPT Desktop, and similar clients
|
|
25
|
+
- Hosted MCP onboarding for Claude Code, Cursor, Windsurf, Codex, Gemini, Mistral, VS Code/Copilot, Continue, ChatGPT Desktop, Orca-style MCP clients, LM Studio-backed local stacks, and similar clients
|
|
21
26
|
- free account signup with reviewed Context + Memory
|
|
22
27
|
- local project wiring, `doctor`, `repair`, and `upgrade`
|
|
23
28
|
- local source activation without GitHub, plus optional GitHub repository sync and PR Answer Packs approval when the current folder is a GitHub repo
|
|
@@ -34,7 +39,7 @@ flowchart LR
|
|
|
34
39
|
CLI --> Auth["Snipara auth and project key"]
|
|
35
40
|
CLI --> MCP["Hosted MCP config"]
|
|
36
41
|
CLI --> Templates["AGENTS.md, CLAUDE.md, Cursor, Codex, MCP references"]
|
|
37
|
-
MCP --> Agents["Claude Code, Cursor, Codex, Gemini, Mistral, VS Code, ChatGPT"]
|
|
42
|
+
MCP --> Agents["Claude Code, Cursor, Codex, Gemini, Mistral, VS Code, ChatGPT, Orca, LM Studio stacks"]
|
|
38
43
|
Templates --> Agents
|
|
39
44
|
Agents --> Context["Snipara context and memory"]
|
|
40
45
|
```
|
|
@@ -77,7 +82,7 @@ Free onboarding is now **Context + Memory**, not Context-only:
|
|
|
77
82
|
|
|
78
83
|
- Context Free: three projects and 1,000 context queries/month
|
|
79
84
|
- Memory Free: reviewed hosted memories for continuity across sessions
|
|
80
|
-
- Hosted MCP: direct connection for Claude Code, Cursor, Windsurf, Codex, Gemini, Mistral, VS Code/Copilot, Continue, ChatGPT Desktop, and other MCP clients
|
|
85
|
+
- Hosted MCP: direct connection for Claude Code, Cursor, Windsurf, Codex, Gemini, Mistral, VS Code/Copilot, Continue, ChatGPT Desktop, Orca-style MCP clients, LM Studio-backed local stacks, and other MCP clients
|
|
81
86
|
|
|
82
87
|
The CLI opens a browser device-flow login when the user does not already have a key, auto-provisions the free Context + Memory account when needed, then writes the returned API key into the local MCP config.
|
|
83
88
|
|
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.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",
|
|
@@ -48,6 +48,8 @@ var package_default = {
|
|
|
48
48
|
"windsurf",
|
|
49
49
|
"gemini",
|
|
50
50
|
"mistral",
|
|
51
|
+
"orca",
|
|
52
|
+
"lm-studio",
|
|
51
53
|
"vscode",
|
|
52
54
|
"continue",
|
|
53
55
|
"claude-desktop"
|
|
@@ -90,6 +92,7 @@ var API_URL = "https://api.snipara.com";
|
|
|
90
92
|
var COMPANION_PACKAGE_NAME = "snipara-companion";
|
|
91
93
|
var COMPANION_COMMAND_NAME = "snipara-companion";
|
|
92
94
|
var COMPANION_NPX_COMMAND = "npx -y snipara-companion@latest";
|
|
95
|
+
var CREATE_SNIPARA_NPX_COMMAND = "npx -y create-snipara@latest";
|
|
93
96
|
var MIN_COMPANION_VERSION = "3.0.0";
|
|
94
97
|
var GITHUB_ANSWER_PACKS_LABEL = "GitHub PR Answer Packs";
|
|
95
98
|
var MCP_PACKAGE_NAME = "snipara-mcp";
|
|
@@ -101,6 +104,17 @@ var SANDBOX_COMMAND_NAME = "snipara-sandbox";
|
|
|
101
104
|
var LEGACY_SANDBOX_COMMAND_NAME = "rlm";
|
|
102
105
|
var ORCHESTRATOR_COMMAND_NAME = "snipara-orchestrator";
|
|
103
106
|
var DEVICE_CLIENT_ID = "create-snipara";
|
|
107
|
+
var EXPERIENCE_GOAL_SECTION = `## Experience Goal
|
|
108
|
+
|
|
109
|
+
The target experience is outcome-first agent work across supported clients:
|
|
110
|
+
Codex, Claude Code, Cursor, Orca, LM Studio-backed local stacks, or another
|
|
111
|
+
MCP-capable environment. The user should be able to state an outcome, ask for
|
|
112
|
+
engineering judgment, or request a release while the agent handles Snipara
|
|
113
|
+
context retrieval, workflow state, verification, package checks, Git operations,
|
|
114
|
+
deployment, and production smoke checks behind the scenes. Surface important
|
|
115
|
+
decisions, blockers, and evidence, but do not make the user manually orchestrate
|
|
116
|
+
routine Snipara or release mechanics.`;
|
|
117
|
+
var UNIVERSAL_CLIENT_GUIDANCE = "The target experience is outcome-first: the user can ask for engineering judgment or a release, and the agent should use Snipara context, workflow state, verification, package checks, Git, deploy, and smoke checks without making the user orchestrate routine mechanics.";
|
|
104
118
|
var DeviceAuthorizationAborted = class extends Error {
|
|
105
119
|
};
|
|
106
120
|
var AI_CLIENT_CHOICES = [
|
|
@@ -1414,6 +1428,8 @@ This project uses Snipara Hosted MCP for project context and reviewed memory.
|
|
|
1414
1428
|
\`snipara-companion task-commit\` as the reliable local fallback, then restart
|
|
1415
1429
|
or reload Codex after MCP config changes.
|
|
1416
1430
|
|
|
1431
|
+
${EXPERIENCE_GOAL_SECTION}
|
|
1432
|
+
|
|
1417
1433
|
Agent task lifecycle:
|
|
1418
1434
|
|
|
1419
1435
|
1. Start every new thread by validating hosted MCP availability, then use
|
|
@@ -1478,15 +1494,24 @@ Canonical project context is in \`AGENTS.md\`. This file exists for Claude Code
|
|
|
1478
1494
|
Use Snipara Hosted MCP before answering project-specific questions.
|
|
1479
1495
|
|
|
1480
1496
|
- Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
|
|
1481
|
-
-
|
|
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.
|
|
1500
|
+
|
|
1501
|
+
${EXPERIENCE_GOAL_SECTION}
|
|
1502
|
+
|
|
1482
1503
|
- Start substantial work with \`snipara_recall\` and a targeted \`snipara_context_query\`.
|
|
1483
1504
|
- Use \`snipara_context_query\` for source truth and \`snipara_get_chunk\` for exact cited sections.
|
|
1484
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.
|
|
1485
1508
|
- Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
|
|
1486
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.
|
|
1487
1511
|
- On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
|
|
1488
1512
|
- Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
|
|
1489
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.
|
|
1490
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.
|
|
1491
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.
|
|
1492
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.
|
|
@@ -1508,18 +1533,25 @@ alwaysApply: true
|
|
|
1508
1533
|
This workspace uses Snipara Hosted MCP for current project context, business/client context, and reviewed memory.
|
|
1509
1534
|
|
|
1510
1535
|
- Check the configured Snipara MCP server before answering project-specific questions.
|
|
1511
|
-
- If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` before concluding a tool is unavailable.
|
|
1512
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.
|
|
1539
|
+
|
|
1540
|
+
${EXPERIENCE_GOAL_SECTION}
|
|
1541
|
+
|
|
1513
1542
|
- Use \`snipara_recall\` for durable decisions, preferences, and validated learnings.
|
|
1514
1543
|
- Use \`snipara_context_query\` for docs, business context, current client/project truth, and narrative source material.
|
|
1515
1544
|
- When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
|
|
1516
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.
|
|
1517
1547
|
- Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for canonical structural code questions.
|
|
1518
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.
|
|
1519
1550
|
- On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols.
|
|
1520
1551
|
- Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
|
|
1521
1552
|
- Use \`snipara_plan\` for complex work when available; use \`snipara_decompose\` when deeper decomposition is needed and the hosted server exposes it.
|
|
1522
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.
|
|
1523
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.
|
|
1524
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.
|
|
1525
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.
|
|
@@ -2242,9 +2274,9 @@ function getCompanionCommands(answers) {
|
|
|
2242
2274
|
}
|
|
2243
2275
|
] : [
|
|
2244
2276
|
{
|
|
2245
|
-
title: "Enable local
|
|
2246
|
-
command:
|
|
2247
|
-
purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run
|
|
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.`
|
|
2248
2280
|
}
|
|
2249
2281
|
];
|
|
2250
2282
|
const businessOnboardingCommands = answers.installCompanion ? [
|
|
@@ -2258,20 +2290,14 @@ function getCompanionCommands(answers) {
|
|
|
2258
2290
|
command: `${COMPANION_NPX_COMMAND} onboard-folder ./client-export --source-provider local_folder --apply`,
|
|
2259
2291
|
purpose: "Upload approved business-context documents to hosted Snipara and trigger document reindexing."
|
|
2260
2292
|
}
|
|
2261
|
-
] : [
|
|
2262
|
-
{
|
|
2263
|
-
title: "Enable business folder onboarding",
|
|
2264
|
-
command: "npx create-snipara repair --with-companion",
|
|
2265
|
-
purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run ${COMPANION_NPX_COMMAND} onboard-folder without using the dashboard.`
|
|
2266
|
-
}
|
|
2267
|
-
];
|
|
2293
|
+
] : [];
|
|
2268
2294
|
const githubAnswerPacksCommand = answers.githubRepo ? {
|
|
2269
2295
|
title: "Connect GitHub PR Answer Packs",
|
|
2270
|
-
command:
|
|
2296
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} --github${answers.githubPath ? ` --github-path ${answers.githubPath}` : ""}`,
|
|
2271
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.`
|
|
2272
2298
|
} : {
|
|
2273
2299
|
title: "Connect a GitHub repo for PR Answer Packs",
|
|
2274
|
-
command:
|
|
2300
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} --github`,
|
|
2275
2301
|
purpose: "Run this from a GitHub-backed repository to approve the Snipara GitHub App and enable repository sync plus PR Answer Packs."
|
|
2276
2302
|
};
|
|
2277
2303
|
return [
|
|
@@ -2282,12 +2308,12 @@ function getCompanionCommands(answers) {
|
|
|
2282
2308
|
},
|
|
2283
2309
|
{
|
|
2284
2310
|
title: "Run doctor for this project",
|
|
2285
|
-
command:
|
|
2311
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} doctor`,
|
|
2286
2312
|
purpose: "Inspect local wiring, hosted reachability, and generated assets."
|
|
2287
2313
|
},
|
|
2288
2314
|
{
|
|
2289
2315
|
title: "Repair local setup",
|
|
2290
|
-
command:
|
|
2316
|
+
command: `${CREATE_SNIPARA_NPX_COMMAND} repair`,
|
|
2291
2317
|
purpose: "Rebuild config files, hooks, and the companion pack."
|
|
2292
2318
|
},
|
|
2293
2319
|
...localSourceCommands,
|
|
@@ -2323,7 +2349,7 @@ function getCompanionCommands(answers) {
|
|
|
2323
2349
|
},
|
|
2324
2350
|
{
|
|
2325
2351
|
title: answers.installOrchestrator ? "Run an explicit production orchestration gate" : "Enable explicit production orchestration",
|
|
2326
|
-
command: answers.installOrchestrator ? `${ORCHESTRATOR_COMMAND_NAME} check-drift --route /api/health` :
|
|
2352
|
+
command: answers.installOrchestrator ? `${ORCHESTRATOR_COMMAND_NAME} check-drift --route /api/health` : `${CREATE_SNIPARA_NPX_COMMAND} repair --with-orchestrator`,
|
|
2327
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."
|
|
2328
2354
|
},
|
|
2329
2355
|
githubAnswerPacksCommand,
|
|
@@ -2484,10 +2510,15 @@ ${guidance.map((line) => `- ${line}`).join("\n")}
|
|
|
2484
2510
|
|
|
2485
2511
|
## Agent Workflow
|
|
2486
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.
|
|
2487
2515
|
- Start substantial work with \`snipara_recall\` and \`snipara_context_query\`.
|
|
2488
2516
|
- Use \`answer_pack\` facts, caveats, source maps, and verification checks before making claims.
|
|
2489
|
-
-
|
|
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.
|
|
2490
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.
|
|
2491
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.
|
|
2492
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\`.
|
|
2493
2524
|
- Persist only durable decisions, learnings, preferences, workflows, and troubleshooting outcomes. Never persist secrets.
|
|
@@ -2497,7 +2528,7 @@ async function createCompanionPack(answers) {
|
|
|
2497
2528
|
console.log(chalk.bold("\n\u{1F5C2}\uFE0F Generating Companion Pack\n"));
|
|
2498
2529
|
const packDir = path.join(process.cwd(), ".snipara", "companion");
|
|
2499
2530
|
const commands = getCompanionCommands(answers);
|
|
2500
|
-
const guidance = getClientGuidance(answers.aiClient);
|
|
2531
|
+
const guidance = [UNIVERSAL_CLIENT_GUIDANCE, ...getClientGuidance(answers.aiClient)];
|
|
2501
2532
|
const detection = detectEnvironment();
|
|
2502
2533
|
const clientPackFilename = getClientPackFilename(answers.aiClient);
|
|
2503
2534
|
fs.mkdirSync(packDir, { recursive: true });
|
|
@@ -2545,7 +2576,7 @@ Apply only after reviewing the manifest:
|
|
|
2545
2576
|
|
|
2546
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:
|
|
2547
2578
|
|
|
2548
|
-
|
|
2579
|
+
\`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
|
|
2549
2580
|
|
|
2550
2581
|
## Local Source Activation
|
|
2551
2582
|
|
|
@@ -2565,7 +2596,7 @@ Inspect local drift:
|
|
|
2565
2596
|
|
|
2566
2597
|
\`${COMPANION_NPX_COMMAND} source status --json\`` : `This setup did not install snipara-companion. Enable it before local source activation:
|
|
2567
2598
|
|
|
2568
|
-
|
|
2599
|
+
\`${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion\``}
|
|
2569
2600
|
|
|
2570
2601
|
GitHub automation remains useful after first value: it gives Snipara a canonical hosted repository
|
|
2571
2602
|
sync and PR Answer Packs. Local source activation is the fallback, not a replacement for explicit
|
|
@@ -2578,7 +2609,7 @@ They attach scoped repository context to pull requests so coding agents can load
|
|
|
2578
2609
|
architecture notes, related history, conventions, and linked documentation without rescanning the
|
|
2579
2610
|
entire repository.
|
|
2580
2611
|
|
|
2581
|
-
${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
|
|
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.`}
|
|
2582
2613
|
|
|
2583
2614
|
## GitHub Repository Automation
|
|
2584
2615
|
|
|
@@ -2588,7 +2619,7 @@ Open the Snipara GitHub App setup and connect this repository:
|
|
|
2588
2619
|
|
|
2589
2620
|
\`${buildGitHubAutomationUrl(answers)}\`
|
|
2590
2621
|
|
|
2591
|
-
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
|
|
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.`}
|
|
2592
2623
|
|
|
2593
2624
|
## Suggested Commands
|
|
2594
2625
|
|
|
@@ -2730,7 +2761,7 @@ function getClaudeClientChecks(answers, detection) {
|
|
|
2730
2761
|
checks.push({
|
|
2731
2762
|
name: "claude_code_hooks",
|
|
2732
2763
|
status: !answers.installHooks || projectHooksConfigured ? "pass" : "warn",
|
|
2733
|
-
detail: answers.installHooks ? projectHooksConfigured ? "Project .claude/settings.json contains Snipara hook commands" :
|
|
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"
|
|
2734
2765
|
});
|
|
2735
2766
|
}
|
|
2736
2767
|
if (answers.aiClient === "claude-desktop") {
|
|
@@ -2924,7 +2955,7 @@ async function runValidation(answers, includeHostedCheck, options = {}) {
|
|
|
2924
2955
|
checks.push({
|
|
2925
2956
|
name: "github_answer_packs",
|
|
2926
2957
|
status: answers.configureGitHub ? "pass" : githubRepo ? "warn" : "pass",
|
|
2927
|
-
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
|
|
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"
|
|
2928
2959
|
});
|
|
2929
2960
|
if (includeHostedCheck && answers.apiKeyType !== "none" && !answers.apiKey.includes("YOUR_")) {
|
|
2930
2961
|
checks.push(...await testHostedConnection(answers));
|
|
@@ -3320,7 +3351,7 @@ function printSuccess(answers, report) {
|
|
|
3320
3351
|
"For Claude Code, start a new session and confirm Snipara appears in Settings -> MCP or ToolSearch."
|
|
3321
3352
|
);
|
|
3322
3353
|
printNextStep(
|
|
3323
|
-
|
|
3354
|
+
`If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-code`
|
|
3324
3355
|
);
|
|
3325
3356
|
}
|
|
3326
3357
|
if (answers.aiClient === "claude-desktop") {
|
|
@@ -3328,7 +3359,7 @@ function printSuccess(answers, report) {
|
|
|
3328
3359
|
"For Claude Desktop, confirm the Snipara server appears in the desktop MCP settings after restart."
|
|
3329
3360
|
);
|
|
3330
3361
|
printNextStep(
|
|
3331
|
-
|
|
3362
|
+
`If Snipara tools are missing, run: ${CREATE_SNIPARA_NPX_COMMAND} doctor --client claude-desktop`
|
|
3332
3363
|
);
|
|
3333
3364
|
}
|
|
3334
3365
|
if (answers.aiClient === "codex") {
|
|
@@ -3357,7 +3388,9 @@ function printSuccess(answers, report) {
|
|
|
3357
3388
|
);
|
|
3358
3389
|
}
|
|
3359
3390
|
printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
|
|
3360
|
-
printNextStep(
|
|
3391
|
+
printNextStep(
|
|
3392
|
+
`Run ${CREATE_SNIPARA_NPX_COMMAND} doctor anytime you want a fresh local validation report.`
|
|
3393
|
+
);
|
|
3361
3394
|
if (answers.installCompanion) {
|
|
3362
3395
|
printNextStep(
|
|
3363
3396
|
`${COMPANION_COMMAND_NAME} ${MIN_COMPANION_VERSION}+ is installed for low-latency local hooks.`
|
|
@@ -3374,7 +3407,7 @@ function printSuccess(answers, report) {
|
|
|
3374
3407
|
);
|
|
3375
3408
|
} else if (answers.profile !== "runtime-only") {
|
|
3376
3409
|
printNextStep(
|
|
3377
|
-
|
|
3410
|
+
`For dashboardless business folder imports, enable companion with: ${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`
|
|
3378
3411
|
);
|
|
3379
3412
|
}
|
|
3380
3413
|
if (answers.installRuntime && !answers.runSandboxInit) {
|
|
@@ -3398,7 +3431,11 @@ function printSuccess(answers, report) {
|
|
|
3398
3431
|
const symbol = check.status === "fail" ? chalk.red("\u2717") : chalk.yellow("!");
|
|
3399
3432
|
console.log(` ${symbol} ${check.name}: ${check.detail}`);
|
|
3400
3433
|
}
|
|
3401
|
-
console.log(
|
|
3434
|
+
console.log(
|
|
3435
|
+
chalk.dim(`
|
|
3436
|
+
Run ${CREATE_SNIPARA_NPX_COMMAND} repair to rebuild local wiring.
|
|
3437
|
+
`)
|
|
3438
|
+
);
|
|
3402
3439
|
} else {
|
|
3403
3440
|
console.log(
|
|
3404
3441
|
chalk.dim(
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-snipara",
|
|
3
|
-
"version": "2.0.
|
|
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",
|
|
@@ -35,6 +35,8 @@
|
|
|
35
35
|
"windsurf",
|
|
36
36
|
"gemini",
|
|
37
37
|
"mistral",
|
|
38
|
+
"orca",
|
|
39
|
+
"lm-studio",
|
|
38
40
|
"vscode",
|
|
39
41
|
"continue",
|
|
40
42
|
"claude-desktop"
|