create-snipara 1.3.29 → 1.3.31

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 +21 -37
  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.29",
16
+ version: "1.3.31",
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,7 +1199,7 @@ 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
@@ -1233,14 +1229,13 @@ Agent task lifecycle:
1233
1229
  is installed, run \`snipara-companion workflow start --goal "<goal>" --plan-file
1234
1230
  <plan_file>\`, then use \`workflow phase-start\`, \`workflow phase-commit\`,
1235
1231
  \`workflow resume\`, and \`final-commit\` so compaction cannot lose the next
1236
- phase. Legacy \`rlm-hook\` commands remain compatible.
1232
+ phase.
1237
1233
  10. Use local file reads, \`rg\`, git commands, and test commands for exact edits,
1238
1234
  current working-tree state, and verification.
1239
1235
  11. Treat every \`snipara_code_*\` response as indexed context: check indexed
1240
1236
  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.
1237
+ and sync guidance before relying on it. If \`git status --short\` is dirty,
1238
+ warn that the indexed graph may not include local edits.
1244
1239
  12. Use Snipara Sandbox only when sandboxed execution, repeatable validation, or
1245
1240
  isolated transformations materially help.
1246
1241
  13. If a broad query is slow, retry once with a narrow keyword query before
@@ -1272,9 +1267,9 @@ Use Snipara Hosted MCP before answering project-specific questions.
1272
1267
  - When \`snipara_context_query\` returns \`answer_pack\`, use its facts, caveats, source map, and verification checklist before drafting claims.
1273
1268
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for structural code questions.
1274
1269
  - 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.
1270
+ - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1276
1271
  - 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.
1272
+ - 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
1273
  - 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
1274
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps.
1280
1275
  - 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\`.
@@ -1301,10 +1296,10 @@ This workspace uses Snipara Hosted MCP for current project context, business/cli
1301
1296
  - Use \`snipara_get_chunk\` before relying on exact cited wording from reference-based results.
1302
1297
  - Use \`snipara_code_callers\`, \`snipara_code_imports\`, \`snipara_code_neighbors\`, or \`snipara_code_shortest_path\` for structural code questions.
1303
1298
  - 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.
1299
+ - Check every \`snipara_code_*\` response for indexed commit SHA, indexing time, included files, coverage, and freshness warnings.
1305
1300
  - Use \`snipara_plan\` or \`snipara_decompose\` only for complex work and only when available.
1306
1301
  - 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.
1302
+ - 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
1303
  - 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
1304
  - Use Snipara Sandbox only when sandboxed execution or repeatable validation materially helps.
1310
1305
  - 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 +1493,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1498
1493
  SNIPARA_COMPANION_BIN=""
1499
1494
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1500
1495
  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
1496
  fi
1504
1497
 
1505
1498
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1518,8 +1511,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1518
1511
  SNIPARA_COMPANION_BIN=""
1519
1512
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1520
1513
  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
1514
  fi
1524
1515
 
1525
1516
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1541,8 +1532,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1541
1532
  SNIPARA_COMPANION_BIN=""
1542
1533
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1543
1534
  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
1535
  fi
1547
1536
 
1548
1537
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1561,8 +1550,6 @@ ${answers.projectId ? `export SNIPARA_PROJECT_ID="${answers.projectId}"` : ""}
1561
1550
  SNIPARA_COMPANION_BIN=""
1562
1551
  if command -v ${COMPANION_COMMAND_NAME} >/dev/null 2>&1; then
1563
1552
  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
1553
  fi
1567
1554
 
1568
1555
  if [ -n "$SNIPARA_COMPANION_BIN" ]; then
@@ -1659,7 +1646,7 @@ async function createCompanionConfig(answers) {
1659
1646
  apiUrl: API_URL
1660
1647
  };
1661
1648
  const workspaceConfig = {
1662
- projectId: answers.projectId || (typeof existingWorkspaceConfig.projectId === "string" && existingWorkspaceConfig.projectId ? existingWorkspaceConfig.projectId : answers.projectSlug),
1649
+ projectId: answers.projectSlug,
1663
1650
  sessionId: typeof existingWorkspaceConfig.sessionId === "string" && existingWorkspaceConfig.sessionId ? existingWorkspaceConfig.sessionId : `sess_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`
1664
1651
  };
1665
1652
  fs.writeFileSync(globalConfigPath, JSON.stringify(globalConfig, null, 2) + "\n");
@@ -1746,7 +1733,7 @@ function getClientGuidance(client) {
1746
1733
  ];
1747
1734
  }
1748
1735
  function getCompanionCommands(answers) {
1749
- const projectIdFlag = answers.projectId ? ` --project-id ${answers.projectId}` : "";
1736
+ const projectFlag = answers.projectSlug ? ` --project ${answers.projectSlug}` : "";
1750
1737
  const clientFlag = getCompanionInitClientFlag(answers.aiClient);
1751
1738
  const businessOnboardingCommands = answers.installCompanion ? [
1752
1739
  {
@@ -1778,7 +1765,7 @@ function getCompanionCommands(answers) {
1778
1765
  return [
1779
1766
  {
1780
1767
  title: "Bootstrap local companion",
1781
- command: `${COMPANION_COMMAND_NAME} init${clientFlag}${projectIdFlag}`,
1768
+ command: `${COMPANION_COMMAND_NAME} init${clientFlag}${projectFlag}`,
1782
1769
  purpose: "Re-run local companion setup if this workstation needs to refresh browser login or project selection."
1783
1770
  },
1784
1771
  {
@@ -2431,7 +2418,6 @@ async function testHostedConnection(answers) {
2431
2418
  spinner.succeed("Connected to Snipara Hosted MCP.");
2432
2419
  const toolNames = extractMcpToolNames(toolsResponse.data);
2433
2420
  const hasSniparaTools = toolNames.some((name) => name.startsWith("snipara_"));
2434
- const hasLegacyTools = toolNames.some((name) => name.startsWith("rlm_"));
2435
2421
  const checks = [
2436
2422
  {
2437
2423
  name: "hosted_connection",
@@ -2440,11 +2426,11 @@ async function testHostedConnection(answers) {
2440
2426
  },
2441
2427
  {
2442
2428
  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"
2429
+ status: hasSniparaTools ? "pass" : "warn",
2430
+ detail: hasSniparaTools ? "snipara_* tools are exposed by Hosted MCP" : "tools/list succeeded, but expected snipara_* tools were not detected"
2445
2431
  }
2446
2432
  ];
2447
- const settingsTool = hasSniparaTools ? "snipara_settings" : hasLegacyTools ? "rlm_settings" : "snipara_settings";
2433
+ const settingsTool = "snipara_settings";
2448
2434
  const settingsResponse = await callHostedMcp(answers, "tools/call", {
2449
2435
  name: settingsTool,
2450
2436
  arguments: {}
@@ -2639,9 +2625,7 @@ function printSuccess(answers, report) {
2639
2625
  printNextStep("Open .snipara/companion/README.md for local commands and repair flow.");
2640
2626
  printNextStep("Run create-snipara doctor anytime you want a fresh local validation report.");
2641
2627
  if (answers.installCompanion) {
2642
- printNextStep(
2643
- `${COMPANION_COMMAND_NAME} is the primary companion command; legacy ${LEGACY_COMPANION_COMMAND_NAME} remains compatible.`
2644
- );
2628
+ printNextStep(`${COMPANION_COMMAND_NAME} is the companion command for local workflow helpers.`);
2645
2629
  printNextStep(
2646
2630
  `Use ${COMPANION_COMMAND_NAME} query / plan / upload / task-commit for explicit local workflows.`
2647
2631
  );
@@ -2797,7 +2781,7 @@ function resolveMaintenanceProfile(detection, explicitProfile) {
2797
2781
  function readApiKeyFromEnvFiles() {
2798
2782
  const candidates = [".env.local", ".env"];
2799
2783
  for (const file of candidates) {
2800
- const value = readEnvValueFromFile(file, ["SNIPARA_API_KEY", "RLM_API_KEY"]);
2784
+ const value = readEnvValueFromFile(file, ["SNIPARA_API_KEY"]);
2801
2785
  if (value) {
2802
2786
  return value;
2803
2787
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-snipara",
3
- "version": "1.3.29",
3
+ "version": "1.3.31",
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",