sticky-note-cli 3.1.28 → 3.1.30

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/bin/cli.js CHANGED
@@ -1120,9 +1120,11 @@ async function cmdInit() {
1120
1120
  mkdirSafe(path.join(envDir, "agents"));
1121
1121
  mkdirSafe(path.join(envDir, "commands"));
1122
1122
  if (!fs.existsSync(envManifestDest)) {
1123
- // Build manifest from detected MCP servers and skills
1123
+ // Build manifest from detected MCP servers and skills.
1124
+ // Skip permission-detected entries — they are not real server configs and would
1125
+ // be synced back into .mcp.json by session-start.js, breaking Claude Code.
1124
1126
  const manifestData = { version: "1", mcp_servers: {}, permissions: [], env_vars: {} };
1125
- for (const server of mcpServers) {
1127
+ for (const server of mcpServers.filter((s) => s.type !== "permission-detected")) {
1126
1128
  const entry = { type: server.type || "stdio", description: server.name, required: false };
1127
1129
  if (server.command) entry.command = server.command;
1128
1130
  if (server.args) entry.args = server.args;
@@ -1460,7 +1462,8 @@ function cmdUpdate() {
1460
1462
  mkdirSafe(path.join(envDir, "agents"));
1461
1463
  mkdirSafe(path.join(envDir, "commands"));
1462
1464
  if (!fs.existsSync(envManifestDest)) {
1463
- const detectedServers = Array.from(detectMcpServers().values());
1465
+ // Create manifest from scratch, skipping permission-detected entries.
1466
+ const detectedServers = Array.from(detectMcpServers().values()).filter((s) => s.type !== "permission-detected");
1464
1467
  const manifestData = { version: "1", mcp_servers: {}, permissions: [], env_vars: {} };
1465
1468
  for (const server of detectedServers) {
1466
1469
  const entry = { type: server.type || "stdio", description: server.name, required: false };
@@ -1491,6 +1494,19 @@ function cmdUpdate() {
1491
1494
  }
1492
1495
  fs.writeFileSync(envManifestDest, JSON.stringify(manifestData, null, 2) + "\n");
1493
1496
  print(` [OK] Created environment/ in ${envDir} (${detectedServers.length} MCP server(s) detected)`);
1497
+ } else {
1498
+ // Manifest already exists — strip any permission-detected entries that may have
1499
+ // been written by an older version of sticky-note. These are not real server
1500
+ // configs and cause get_environment_status to report false "missing" servers.
1501
+ const manifest = readJsonSafe(envManifestDest, {});
1502
+ const servers = manifest.mcp_servers || {};
1503
+ const stale = Object.keys(servers).filter((k) => servers[k].type === "permission-detected");
1504
+ if (stale.length > 0) {
1505
+ for (const k of stale) delete servers[k];
1506
+ manifest.mcp_servers = servers;
1507
+ fs.writeFileSync(envManifestDest, JSON.stringify(manifest, null, 2) + "\n");
1508
+ print(` [OK] environment/manifest.json: removed ${stale.length} stale permission-detected entry(s)`);
1509
+ }
1494
1510
  }
1495
1511
 
1496
1512
  print(`\n ✨ Scripts updated to v${VERSION}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sticky-note-cli",
3
- "version": "3.1.28",
3
+ "version": "3.1.30",
4
4
  "description": "Human-to-human handoff for AI coding assistants. Git-backed shared memory for Claude Code and Copilot CLI.",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -745,6 +745,7 @@ function ensureEnvironmentProvisioned() {
745
745
  let mcpChanged = false;
746
746
  for (const [name, serverDef] of Object.entries(mcpServers)) {
747
747
  if (mcpConfig.mcpServers[name]) continue; // already present
748
+ if (serverDef.type === "permission-detected") continue; // not a real server config
748
749
  if (hasEnvPlaceholders(serverDef)) {
749
750
  if (debug) process.stderr.write(`[sticky-note] skipping MCP server "${name}" (has placeholders)\n`);
750
751
  continue;