create-snipara 2.0.6 → 2.0.7

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 (3) hide show
  1. package/README.md +21 -14
  2. package/dist/index.js +43 -22
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -12,8 +12,8 @@ npx create-snipara
12
12
 
13
13
  `create-snipara` is the simple onboarding package for the agent path. It
14
14
  creates or reuses auth, writes Hosted MCP config, and prepares the local project
15
- so an LLM client can use Snipara context and reviewed memory. Install once with
16
- `create-snipara`; continue every session with `snipara-companion`.
15
+ so an LLM client can use Snipara context and reviewed memory. The default path is
16
+ hosted-only so the first success is a grounded answer, not a local tooling tour.
17
17
 
18
18
  Use it when the goal is outcome-first agent work: the user asks for judgment,
19
19
  implementation, release, or verification, and the agent handles Snipara context,
@@ -54,7 +54,7 @@ The product surfaces remain:
54
54
  - Hosted MCP for LLM agents, context, and reviewed memory
55
55
  - HTTP API / SDK for apps, integrators, backends, and pipelines
56
56
 
57
- The default CLI path wires the local companion around those surfaces:
57
+ Advanced flags can wire local helpers around those surfaces:
58
58
 
59
59
  - `snipara-companion` for Git-style status, briefs, timelines, phase commits,
60
60
  handoffs, resume, and local workflow commands
@@ -69,12 +69,12 @@ The CLI now works around explicit install profiles:
69
69
 
70
70
  | Profile | What it installs | Best for |
71
71
  | ------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
72
- | `hosted-companion` | MCP + `snipara-companion` | Default: hosted context plus managed local workflow |
73
- | `hosted-only` | Hosted MCP config only | Locked-down or minimal environments |
72
+ | `hosted-only` | Hosted MCP config only | Default: first grounded answer with no local companion, hooks, or sandbox |
73
+ | `hosted-companion` | MCP + `snipara-companion` | Hosted context plus managed local workflow after first value |
74
74
  | `full-stack` | MCP + `snipara-companion` + `snipara-sandbox` | Hosted context plus sandboxed local execution. Does not include orchestrator unless `--with-orchestrator` is passed |
75
75
  | `runtime-only` | `snipara-sandbox` only | Local execution without hosted API |
76
76
 
77
- Default profile: `hosted-companion`
77
+ Default profile: `hosted-only`
78
78
 
79
79
  ## Free Account Fit
80
80
 
@@ -107,10 +107,10 @@ That distinction matters:
107
107
  - opens the browser device-flow free Context + Memory account flow when needed
108
108
  - writes Hosted MCP configuration
109
109
  - detects a GitHub remote and can open the Snipara GitHub App automation path
110
- - activates the current folder locally through `snipara-companion source init` so docs and code overlay context are available before GitHub approval
110
+ - can activate the current folder locally through `snipara-companion source init` after the user opts into Companion
111
111
  - explains the GitHub PR Answer Packs path for AI-assisted pull request workflows
112
- - installs `snipara-companion` by default for local status, briefs, timelines,
113
- phase commits, handoffs, resume, and managed workflows
112
+ - installs `snipara-companion` only with `--advanced`, `--profile hosted-companion`,
113
+ `--profile full-stack`, or `repair --with-companion`
114
114
  - installs optional `snipara-sandbox`
115
115
  - installs optional `snipara-orchestrator` for proof gates, drift checks, and htask workflows when requested
116
116
  - configures `.mcp.json`
@@ -118,8 +118,8 @@ That distinction matters:
118
118
  - creates `AGENTS.md` and `CLAUDE.md` when missing, or appends a marked Snipara section when those files already exist
119
119
  - creates `.cursor/rules/snipara.mdc` and `.codex/config.toml` when those files do not already exist
120
120
  - validates Codex config against Hosted MCP plus `bearer_token_env_var = "SNIPARA_API_KEY"` and tells users to restart Codex after MCP config changes
121
- - installs local code overlay Git hooks by default for Claude Code and Codex
122
- companion setups, unless `--skip-hooks` is passed
121
+ - installs local code overlay Git hooks only for explicit companion/full-stack
122
+ setups unless `--skip-hooks` is passed
123
123
  - runs a real hosted MCP `tools/list` check and warns if the server still advertises legacy `rlm_*` duplicate tools
124
124
  - generates Mistral Le Chat, Mistral Vibe, and LangChain `ChatMistralAI.bindTools` references without embedding secrets
125
125
  - writes client-specific companion packs such as `.snipara/companion/CODEX.md` or `.snipara/companion/GEMINI.md`
@@ -155,9 +155,10 @@ The interactive flow now asks for:
155
155
  - API key path: existing API key, free signup, or add key later
156
156
  - AI client
157
157
 
158
- By default, this uses the recommended `hosted-companion` setup: hosted MCP plus
159
- the local `snipara-companion` workflow helper. Add `--advanced` when you want profile selection, project id entry,
160
- hook prompts, GitHub automation prompts, or sandbox provider prompts.
158
+ By default, this uses the minimal `hosted-only` setup: hosted MCP config and a
159
+ doctor report, with no local Companion install, hooks, GitHub approval prompt, or
160
+ sandbox prompt. Add `--advanced` when you want profile selection, project id
161
+ entry, hook prompts, GitHub automation prompts, or sandbox provider prompts.
161
162
  Use `--with-orchestrator` only when you explicitly need the advanced production
162
163
  validation and htask package; it is not part of `full-stack` by default.
163
164
 
@@ -204,6 +205,12 @@ compaction-safe managed workflow and Git-style agent work commands. Keep the
204
205
  machine plan in JSON for stable phase ids; an optional Markdown file can remain
205
206
  the human-facing contract.
206
207
 
208
+ Enable those local helpers later with:
209
+
210
+ ```bash
211
+ npx create-snipara repair --with-companion
212
+ ```
213
+
207
214
  ```bash
208
215
  snipara-companion status
209
216
  snipara-companion source init .
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.6",
16
+ version: "2.0.7",
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",
@@ -197,7 +197,7 @@ function shouldInstallDefaultHooks(aiClient) {
197
197
  }
198
198
  function buildProgram() {
199
199
  const program = new Command();
200
- program.name("create-snipara").description("Scaffold hosted Snipara MCP config plus companion workflow helpers").version(VERSION);
200
+ program.name("create-snipara").description("Scaffold hosted Snipara MCP config; advanced flags add local helpers").version(VERSION);
201
201
  program.command("init").description("Install and configure Snipara for this project").option("--api-key <key>", "Snipara API key").option("--slug <slug>", "Project slug").option("--project-id <id>", "Project ID").option(
202
202
  "--client <client>",
203
203
  "AI client: claude-code, cursor, windsurf, codex, gemini, mistral, chatgpt, vscode, continue, claude-desktop, other"
@@ -543,9 +543,9 @@ function printBanner() {
543
543
  \u2551 \u2551
544
544
  \u2551 \u2022 Hosted MCP for LLM agents \u2551
545
545
  \u2551 \u2022 Free account path with hosted context and reviewed memory \u2551
546
- \u2551 \u2022 Local source activation before GitHub approval \u2551
546
+ \u2551 \u2022 First grounded answer before local workflow setup \u2551
547
547
  \u2551 \u2022 API / SDK for product integrations \u2551
548
- \u2551 \u2022 Optional local companion and Snipara Sandbox helpers \u2551
548
+ \u2551 \u2022 Optional advanced companion, hooks, and Snipara Sandbox helpers \u2551
549
549
  \u2551 \u2022 One CLI for auth, config, doctor, repair, and upgrade \u2551
550
550
  \u2551 \u2551
551
551
  \u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
@@ -784,7 +784,7 @@ function resolveRequestedProfile(options) {
784
784
  if (options.profile && isInstallProfile(options.profile)) {
785
785
  return options.profile;
786
786
  }
787
- return "hosted-companion";
787
+ return "hosted-only";
788
788
  }
789
789
  function isInstallProfile(value) {
790
790
  return ["hosted-only", "hosted-companion", "full-stack", "runtime-only"].includes(value);
@@ -828,15 +828,15 @@ function normalizeClientOption(value) {
828
828
  }
829
829
  function installProfileChoices() {
830
830
  return [
831
- {
832
- title: "Hosted + Companion",
833
- value: "hosted-companion",
834
- description: "Default: hosted MCP config plus managed local workflow commands"
835
- },
836
831
  {
837
832
  title: "Hosted only",
838
833
  value: "hosted-only",
839
- description: "Minimal setup: hosted MCP config, no local companion or sandbox"
834
+ description: "Default: hosted MCP config, no local companion, hooks, or sandbox"
835
+ },
836
+ {
837
+ title: "Hosted + Companion",
838
+ value: "hosted-companion",
839
+ description: "Add managed local workflow commands after first value"
840
840
  },
841
841
  {
842
842
  title: "Hosted + Companion + Sandbox",
@@ -2587,6 +2587,26 @@ function getClientGuidance(client) {
2587
2587
  function getCompanionCommands(answers) {
2588
2588
  const projectFlag = answers.projectSlug ? ` --project ${answers.projectSlug}` : "";
2589
2589
  const clientFlag = getCompanionInitClientFlag(answers.aiClient);
2590
+ if (!answers.installCompanion) {
2591
+ const commands = [
2592
+ {
2593
+ title: "Run doctor for this project",
2594
+ command: `${CREATE_SNIPARA_NPX_COMMAND} doctor`,
2595
+ purpose: "Inspect local wiring and hosted MCP reachability after the AI client restarts."
2596
+ },
2597
+ {
2598
+ title: "Enable local companion later",
2599
+ command: `${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`,
2600
+ purpose: "Opt into local source activation, managed workflows, guards, and task commits after the first hosted answer works."
2601
+ }
2602
+ ];
2603
+ commands.push({
2604
+ title: answers.githubRepo ? "Connect GitHub PR Answer Packs later" : "Connect a GitHub repo for PR Answer Packs",
2605
+ command: `${CREATE_SNIPARA_NPX_COMMAND} --github${answers.githubPath ? ` --github-path ${answers.githubPath}` : ""}`,
2606
+ purpose: "Open the Snipara GitHub App flow only when the user is ready to approve repository access."
2607
+ });
2608
+ return commands;
2609
+ }
2590
2610
  const localSourceCommands = answers.installCompanion ? [
2591
2611
  {
2592
2612
  title: "Activate this folder locally",
@@ -2598,13 +2618,7 @@ function getCompanionCommands(answers) {
2598
2618
  command: `${COMPANION_NPX_COMMAND} source sync --json`,
2599
2619
  purpose: "Refresh the local snapshot, document dry-run, and code overlay cache after files change."
2600
2620
  }
2601
- ] : [
2602
- {
2603
- title: "Enable local companion workflows",
2604
- command: `${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`,
2605
- purpose: `Install ${COMPANION_PACKAGE_NAME} so this project can run local source activation, folder onboarding, and managed workflow commands without the dashboard.`
2606
- }
2607
- ];
2621
+ ] : [];
2608
2622
  const businessOnboardingCommands = answers.installCompanion ? [
2609
2623
  {
2610
2624
  title: "Preview a business folder import",
@@ -3674,7 +3688,9 @@ function printSuccess(answers, report) {
3674
3688
  chalk.green(" \u2713 Claude Code") + chalk.dim(" - .mcp.json MCP config, .claude/settings.json hooks when enabled")
3675
3689
  );
3676
3690
  }
3677
- console.log(chalk.green(" \u2713 .snipara/companion") + chalk.dim(" - Local pack + doctor report"));
3691
+ console.log(
3692
+ chalk.green(" \u2713 .snipara/companion") + chalk.dim(" - Doctor report and optional command references")
3693
+ );
3678
3694
  const failedChecks = report.checks.filter((check) => check.status === "fail");
3679
3695
  const warnedChecks = report.checks.filter((check) => check.status === "warn");
3680
3696
  console.log(chalk.bold("\nNext steps:\n"));
@@ -3684,6 +3700,11 @@ function printSuccess(answers, report) {
3684
3700
  nextStep += 1;
3685
3701
  };
3686
3702
  printNextStep("Restart your AI client if you created or changed hosted MCP config.");
3703
+ if (!answers.installCompanion && answers.profile !== "runtime-only") {
3704
+ printNextStep(
3705
+ "Ask your AI client for a first grounded answer using snipara_context_query before enabling local workflow helpers."
3706
+ );
3707
+ }
3687
3708
  if (answers.aiClient === "claude-code") {
3688
3709
  printNextStep(
3689
3710
  "For Claude Code, start a new session and confirm Snipara appears in Settings -> MCP or ToolSearch."
@@ -3725,11 +3746,11 @@ function printSuccess(answers, report) {
3725
3746
  "For LangChain JavaScript, adapt .snipara/templates/mistral-langchain-tools.ts to bind Snipara recall, context_query, and settings tools to ChatMistralAI."
3726
3747
  );
3727
3748
  }
3728
- printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
3729
3749
  printNextStep(
3730
3750
  `Run ${CREATE_SNIPARA_NPX_COMMAND} doctor anytime you want a fresh local validation report.`
3731
3751
  );
3732
3752
  if (answers.installCompanion) {
3753
+ printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
3733
3754
  printNextStep(
3734
3755
  `${COMPANION_COMMAND_NAME} ${MIN_COMPANION_VERSION}+ is installed for low-latency local hooks.`
3735
3756
  );
@@ -3745,7 +3766,7 @@ function printSuccess(answers, report) {
3745
3766
  );
3746
3767
  } else if (answers.profile !== "runtime-only") {
3747
3768
  printNextStep(
3748
- `For dashboardless business folder imports, enable companion with: ${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`
3769
+ `Enable Companion, guards, managed workflows, and local folder helpers later with: ${CREATE_SNIPARA_NPX_COMMAND} repair --with-companion`
3749
3770
  );
3750
3771
  }
3751
3772
  if (answers.installRuntime && !answers.runSandboxInit) {
@@ -3892,7 +3913,7 @@ function resolveMaintenanceProfile(detection, explicitProfile) {
3892
3913
  if (detection.existingConfig.hasSniparaServer) {
3893
3914
  return "hosted-only";
3894
3915
  }
3895
- return "hosted-companion";
3916
+ return "hosted-only";
3896
3917
  }
3897
3918
  function readApiKeyFromEnvFiles() {
3898
3919
  const candidates = [".env.local", ".env"];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-snipara",
3
- "version": "2.0.6",
3
+ "version": "2.0.7",
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",