create-snipara 1.3.30 → 1.3.32

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 +7 -8
  2. package/dist/index.js +24 -34
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -50,7 +50,7 @@ The product surfaces remain:
50
50
 
51
51
  The default CLI path wires the local companion around those surfaces:
52
52
 
53
- - `snipara-companion` for local workflow commands and managed phase commits; legacy `rlm-hook` commands remain compatible
53
+ - `snipara-companion` for local workflow commands and managed phase commits
54
54
  - `snipara-sandbox` for optional local code execution
55
55
  - `snipara-orchestrator` only when explicitly requested with `--with-orchestrator`
56
56
  - local config, env files, hook scripts, and a project companion pack
@@ -140,8 +140,7 @@ The interactive flow now asks for:
140
140
  - AI client
141
141
 
142
142
  By default, this uses the recommended `hosted-companion` setup: hosted MCP plus
143
- the local `snipara-companion` workflow helper. Legacy `rlm-hook` commands remain
144
- compatible. Add `--advanced` when you want profile selection, project id entry,
143
+ the local `snipara-companion` workflow helper. Add `--advanced` when you want profile selection, project id entry,
145
144
  hook prompts, GitHub automation prompts, or sandbox provider prompts.
146
145
  Use `--with-orchestrator` only when you explicitly need the advanced production
147
146
  validation and htask package; it is not part of `full-stack` by default.
@@ -198,7 +197,7 @@ Writes `.snipara/companion/doctor.json` and validates:
198
197
  - Snipara Sandbox CLI presence
199
198
  - environment files
200
199
  - hosted MCP reachability when a live API key is available
201
- - exposed Hosted MCP tool aliases (`snipara_*`, with `rlm_*` reported as legacy)
200
+ - exposed Hosted MCP tool aliases (`snipara_*`)
202
201
  - client-specific loading gaps that the terminal cannot prove
203
202
 
204
203
  For Claude-specific support, run:
@@ -322,7 +321,7 @@ The intended split is:
322
321
 
323
322
  - `create-snipara`: Context + Memory onboarding, auth, config, inspect, repair, and upgrade
324
323
  - `snipara-openclaw-install`: OpenClaw-only setup wrapper that remains narrower than `create-snipara`
325
- - `snipara-companion`: default local workflow helper; legacy `rlm-hook` commands remain compatible
324
+ - `snipara-companion`: default local workflow helper
326
325
  - `snipara-mcp`: local stdio bridge, client-package development, compatibility, and testing
327
326
  - `snipara-sandbox`: optional local execution engine
328
327
 
@@ -414,9 +413,9 @@ Recommended explanation to users:
414
413
 
415
414
  ## API Key Requirements
416
415
 
417
- Existing manual API keys passed to `create-snipara --api-key` should start with `snp-`;
418
- legacy `rlm_` keys remain accepted for migration. When `create-snipara` provisions a
419
- new account through the browser flow, Snipara returns a new `snp-` key from the current hosted API.
416
+ Existing manual API keys passed to `create-snipara --api-key` must start with `snp-`.
417
+ When `create-snipara` provisions a new account through the browser flow, Snipara returns
418
+ a new `snp-` key from the current hosted API.
420
419
  Prefer `SNIPARA_API_KEY` or the interactive prompt over `--api-key`; CLI
421
420
  arguments can be visible in shell history and process listings.
422
421
 
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: "1.3.30",
16
+ version: "1.3.32",
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",
@@ -88,7 +88,6 @@ var BASE_URL = "https://www.snipara.com";
88
88
  var API_URL = "https://api.snipara.com";
89
89
  var COMPANION_PACKAGE_NAME = "snipara-companion";
90
90
  var COMPANION_COMMAND_NAME = "snipara-companion";
91
- var LEGACY_COMPANION_COMMAND_NAME = "rlm-hook";
92
91
  var GITHUB_ANSWER_PACKS_LABEL = "GitHub PR Answer Packs";
93
92
  var MCP_PACKAGE_NAME = "snipara-mcp";
94
93
  var SANDBOX_PACKAGE_NAME = "snipara-sandbox[all]";
@@ -520,7 +519,7 @@ async function gatherConfiguration(options) {
520
519
  {
521
520
  title: "I have an API key",
522
521
  value: "api",
523
- description: "Paste an API key that starts with snp- or legacy rlm_"
522
+ description: "Paste an API key that starts with snp-"
524
523
  },
525
524
  {
526
525
  title: "Create free Context + Memory account",
@@ -889,10 +888,10 @@ function sleep(ms) {
889
888
  }
890
889
  function isManualApiKey(value) {
891
890
  const trimmed = value.trim();
892
- return trimmed.startsWith("snp-") || trimmed.startsWith("rlm_");
891
+ return trimmed.startsWith("snp-");
893
892
  }
894
893
  function manualApiKeyValidationMessage() {
895
- return "API key should start with snp- or legacy rlm_";
894
+ return "API key should start with snp-";
896
895
  }
897
896
  function warnApiKeyCliExposure() {
898
897
  console.log(
@@ -911,9 +910,6 @@ function detectCompanionCommand() {
911
910
  if (commandExists(COMPANION_COMMAND_NAME)) {
912
911
  return COMPANION_COMMAND_NAME;
913
912
  }
914
- if (commandExists(LEGACY_COMPANION_COMMAND_NAME)) {
915
- return LEGACY_COMPANION_COMMAND_NAME;
916
- }
917
913
  return null;
918
914
  }
919
915
  function detectSandboxCommand() {
@@ -1041,7 +1037,7 @@ async function installNodeCompanion(upgrade) {
1041
1037
  return;
1042
1038
  }
1043
1039
  failures.push(
1044
- `${packageManager}: command completed but ${COMPANION_COMMAND_NAME} is still not available on PATH (legacy ${LEGACY_COMPANION_COMMAND_NAME} is also accepted)`
1040
+ `${packageManager}: command completed but ${COMPANION_COMMAND_NAME} is still not available on PATH`
1045
1041
  );
1046
1042
  } catch (error) {
1047
1043
  const detail = error instanceof Error && "message" in error ? error.message.split("\n")[0] : "unknown error";
@@ -1203,11 +1199,15 @@ This project uses Snipara Hosted MCP for project context and reviewed memory.
1203
1199
  - Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
1204
1200
  - Auth: use \`SNIPARA_API_KEY\` from the environment. Never commit keys.
1205
1201
  - For Codex, expose the endpoint as a streamable HTTP MCP server and load the
1206
- key from an environment variable such as \`SNIPARA_API_KEY\` or \`RLM_API_KEY\`.
1202
+ key from \`SNIPARA_API_KEY\`.
1207
1203
  - At the start of every new thread, validate hosted MCP with a tool-oriented
1208
1204
  call such as \`snipara_settings\`, \`tools/list\`, or a lightweight
1209
1205
  \`snipara_context_query\`. Do not treat empty MCP resources/templates as an
1210
1206
  outage because Snipara may be tool-only.
1207
+ - If a session appears to expose only a subset of expected Snipara tools, call
1208
+ \`snipara_help(list_all=true)\` and compare exact tool names before concluding
1209
+ that a tool is unavailable. Do not infer absence from one broad discovery
1210
+ pass or a ranked tool-search result.
1211
1211
 
1212
1212
  Agent task lifecycle:
1213
1213
 
@@ -1233,14 +1233,13 @@ Agent task lifecycle:
1233
1233
  is installed, run \`snipara-companion workflow start --goal "<goal>" --plan-file
1234
1234
  <plan_file>\`, then use \`workflow phase-start\`, \`workflow phase-commit\`,
1235
1235
  \`workflow resume\`, and \`final-commit\` so compaction cannot lose the next
1236
- phase. Legacy \`rlm-hook\` commands remain compatible.
1236
+ phase.
1237
1237
  10. Use local file reads, \`rg\`, git commands, and test commands for exact edits,
1238
1238
  current working-tree state, and verification.
1239
1239
  11. Treat every \`snipara_code_*\` response as indexed context: check indexed
1240
1240
  commit SHA, indexing time, included file sample, coverage, freshness warnings,
1241
- and sync guidance before relying on it. Legacy \`rlm_code_*\` tool IDs return
1242
- the same payloads. If \`git status --short\` is dirty, warn that the indexed
1243
- graph may not include local edits.
1241
+ and sync guidance before relying on it. If \`git status --short\` is dirty,
1242
+ warn that the indexed graph may not include local edits.
1244
1243
  12. Use Snipara Sandbox only when sandboxed execution, repeatable validation, or
1245
1244
  isolated transformations materially help.
1246
1245
  13. If a broad query is slow, retry once with a narrow keyword query before
@@ -1267,14 +1266,15 @@ Canonical project context is in \`AGENTS.md\`. This file exists for Claude Code
1267
1266
  Use Snipara Hosted MCP before answering project-specific questions.
1268
1267
 
1269
1268
  - Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
1269
+ - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` before concluding a tool is unavailable.
1270
1270
  - Start substantial work with \`snipara_recall\` and a targeted \`snipara_context_query\`.
1271
1271
  - Use \`snipara_context_query\` for source truth and \`snipara_get_chunk\` for exact cited sections.
1272
1272
  - When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
1273
1273
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for structural code questions.
1274
1274
  - On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols and \`snipara_code_impact\` before risky multi-file changes or PR reviews.
1275
- - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings. Legacy \`rlm_code_*\` IDs return the same payloads.
1275
+ - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1276
1276
  - 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.
1277
- - When the plan is visible and \`snipara-companion\` is installed, use \`snipara-companion workflow start\`, \`phase-start\`, \`phase-commit\`, \`workflow resume\`, and \`final-commit\` to keep phase state durable across compaction. Legacy \`rlm-hook\` commands remain compatible.
1277
+ - When the plan is visible and \`snipara-companion\` is installed, use \`snipara-companion workflow start\`, \`phase-start\`, \`phase-commit\`, \`workflow resume\`, and \`final-commit\` to keep phase state durable across compaction.
1278
1278
  - 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.
1279
1279
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps.
1280
1280
  - End substantial work with \`snipara_end_of_task_commit\` when available; for managed workflows, end every phase with \`snipara-companion workflow phase-commit\` and the task with \`snipara-companion final-commit\`.
@@ -1294,6 +1294,7 @@ alwaysApply: true
1294
1294
  This workspace uses Snipara Hosted MCP for current project context, business/client context, and reviewed memory.
1295
1295
 
1296
1296
  - Check the configured Snipara MCP server before answering project-specific questions.
1297
+ - If a session exposes only a subset of expected Snipara tools, call \`snipara_help(list_all=true)\` before concluding a tool is unavailable.
1297
1298
  - Endpoint: \`${buildHostedMcpEndpoint(answers)}\`
1298
1299
  - Use \`snipara_recall\` for durable decisions, preferences, and validated learnings.
1299
1300
  - Use \`snipara_context_query\` for docs, business context, current client/project truth, and narrative source material.
@@ -1301,10 +1302,10 @@ This workspace uses Snipara Hosted MCP for current project context, business/cli
1301
1302
  - Use \`snipara_get_chunk\` before relying on exact cited wording from reference-based results.
1302
1303
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for structural code questions.
1303
1304
  - On paid Context plans, use \`snipara_code_symbol_card\` before editing important symbols and \`snipara_code_impact\` before risky multi-file changes or PR reviews.
1304
- - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings. Legacy \`rlm_code_*\` IDs return the same payloads.
1305
+ - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1305
1306
  - Use \`snipara_plan\` or \`snipara_decompose\` only for complex work and only when available.
1306
1307
  - Use local file reads, \`rg\`, \`git status --short\`, and tests for exact code edits and current working-tree state.
1307
- - When \`snipara-companion\` is installed and the LLM has a visible multi-phase plan, use \`snipara-companion workflow start\`, \`phase-start\`, \`phase-commit\`, \`workflow resume\`, and \`final-commit\` so the next phase survives compaction. Legacy \`rlm-hook\` commands remain compatible.
1308
+ - When \`snipara-companion\` is installed and the LLM has a visible multi-phase plan, use \`snipara-companion workflow start\`, \`phase-start\`, \`phase-commit\`, \`workflow resume\`, and \`final-commit\` so the next phase survives compaction.
1308
1309
  - 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.
1309
1310
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps.
1310
1311
  - End substantial work with \`snipara_end_of_task_commit\` when available; for managed workflows, end every phase with \`snipara-companion workflow phase-commit\` and the task with \`snipara-companion final-commit\`. Use \`snipara_remember_if_novel\` or \`snipara_remember\` only for narrow durable memories. Never store secrets.
@@ -1498,8 +1499,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1498
1499
  SNIPARA_COMPANION_BIN=""
1499
1500
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1500
1501
  SNIPARA_COMPANION_BIN="${COMPANION_COMMAND_NAME}"
1501
- elif command -v ${LEGACY_COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1502
- SNIPARA_COMPANION_BIN="${LEGACY_COMPANION_COMMAND_NAME}"
1503
1502
  fi
1504
1503
 
1505
1504
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1518,8 +1517,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1518
1517
  SNIPARA_COMPANION_BIN=""
1519
1518
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1520
1519
  SNIPARA_COMPANION_BIN="${COMPANION_COMMAND_NAME}"
1521
- elif command -v ${LEGACY_COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1522
- SNIPARA_COMPANION_BIN="${LEGACY_COMPANION_COMMAND_NAME}"
1523
1520
  fi
1524
1521
 
1525
1522
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1541,8 +1538,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1541
1538
  SNIPARA_COMPANION_BIN=""
1542
1539
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1543
1540
  SNIPARA_COMPANION_BIN="${COMPANION_COMMAND_NAME}"
1544
- elif command -v ${LEGACY_COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1545
- SNIPARA_COMPANION_BIN="${LEGACY_COMPANION_COMMAND_NAME}"
1546
1541
  fi
1547
1542
 
1548
1543
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1561,8 +1556,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1561
1556
  SNIPARA_COMPANION_BIN=""
1562
1557
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1563
1558
  SNIPARA_COMPANION_BIN="${COMPANION_COMMAND_NAME}"
1564
- elif command -v ${LEGACY_COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1565
- SNIPARA_COMPANION_BIN="${LEGACY_COMPANION_COMMAND_NAME}"
1566
1559
  fi
1567
1560
 
1568
1561
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -2431,7 +2424,6 @@ async function testHostedConnection(answers) {
2431
2424
  spinner.succeed("Connected to Snipara Hosted MCP.");
2432
2425
  const toolNames = extractMcpToolNames(toolsResponse.data);
2433
2426
  const hasSniparaTools = toolNames.some((name) => name.startsWith("snipara_"));
2434
- const hasLegacyTools = toolNames.some((name) => name.startsWith("rlm_"));
2435
2427
  const checks = [
2436
2428
  {
2437
2429
  name: "hosted_connection",
@@ -2440,11 +2432,11 @@ async function testHostedConnection(answers) {
2440
2432
  },
2441
2433
  {
2442
2434
  name: "hosted_tool_aliases",
2443
- status: hasSniparaTools ? "pass" : hasLegacyTools ? "warn" : "warn",
2444
- detail: hasSniparaTools ? "snipara_* tools are exposed by Hosted MCP" : hasLegacyTools ? "Only legacy rlm_* tool aliases were detected; Hosted MCP is usable but naming is stale" : "tools/list succeeded, but expected snipara_* tools were not detected"
2435
+ status: hasSniparaTools ? "pass" : "warn",
2436
+ detail: hasSniparaTools ? "snipara_* tools are exposed by Hosted MCP" : "tools/list succeeded, but expected snipara_* tools were not detected"
2445
2437
  }
2446
2438
  ];
2447
- const settingsTool = hasSniparaTools ? "snipara_settings" : hasLegacyTools ? "rlm_settings" : "snipara_settings";
2439
+ const settingsTool = "snipara_settings";
2448
2440
  const settingsResponse = await callHostedMcp(answers, "tools/call", {
2449
2441
  name: settingsTool,
2450
2442
  arguments: {}
@@ -2639,9 +2631,7 @@ function printSuccess(answers, report) {
2639
2631
  printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
2640
2632
  printNextStep("Run create-snipara doctor anytime you want a fresh local validation report.");
2641
2633
  if (answers.installCompanion) {
2642
- printNextStep(
2643
- `${COMPANION_COMMAND_NAME} is the primary companion command; legacy ${LEGACY_COMPANION_COMMAND_NAME} remains compatible.`
2644
- );
2634
+ printNextStep(`${COMPANION_COMMAND_NAME} is the companion command for local workflow helpers.`);
2645
2635
  printNextStep(
2646
2636
  `Use ${COMPANION_COMMAND_NAME} query / plan / upload / task-commit for explicit local workflows.`
2647
2637
  );
@@ -2797,7 +2787,7 @@ function resolveMaintenanceProfile(detection, explicitProfile) {
2797
2787
  function readApiKeyFromEnvFiles() {
2798
2788
  const candidates = [".env.local", ".env"];
2799
2789
  for (const file of candidates) {
2800
- const value = readEnvValueFromFile(file, ["SNIPARA_API_KEY", "RLM_API_KEY"]);
2790
+ const value = readEnvValueFromFile(file, ["SNIPARA_API_KEY"]);
2801
2791
  if (value) {
2802
2792
  return value;
2803
2793
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-snipara",
3
- "version": "1.3.30",
3
+ "version": "1.3.32",
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",