prism-mcp-server 20.17.0 → 20.17.1

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 CHANGED
@@ -138,21 +138,29 @@ or by re-enabling after each run.
138
138
  <details>
139
139
  <summary>Release history (optional)</summary>
140
140
 
141
+ ## What's New in v20.17.1
142
+
143
+ - **Fixes a broken CLI in 20.17.0** — a command-name collision made every
144
+ `prism` CLI invocation exit with a commander error at startup (the MCP
145
+ server was unaffected). The handoff-sync command is `prism handoff …`;
146
+ `prism sync` remains cross-backend data synchronization. If you installed
147
+ 20.17.0, update.
148
+
141
149
  ## What's New in v20.17.0
142
150
 
143
151
  ### Cross-Machine Session Handoff — End-to-End Encrypted
144
152
 
145
- - **Resume a session on any of your machines.** With `prism sync enable` (paid,
153
+ - **Resume a session on any of your machines.** With `prism handoff enable` (paid,
146
154
  off by default), each `session_save_handoff` seals the handoff to all your
147
155
  account's device keys and relays the CIPHERTEXT; another machine pulls with
148
- `sync_pull_handoff` (or `prism sync pull <project>`) and opens it locally.
156
+ `sync_pull_handoff` (or `prism handoff pull <project>`) and opens it locally.
149
157
  - **The relay stores ciphertext only** — X25519 + AES-256-GCM sealed
150
158
  envelopes. No key that opens a handoff ever exists server-side. The channel
151
159
  is deliberately separate from savings sync, which carries counters only.
152
160
  - **TOFU device pinning** surfaces a compromised relay: sealing to a key this
153
161
  machine has never seen warns loudly, keyed on the client-derived recipient
154
162
  id so a swapped key can't hide behind a familiar device name.
155
- - `prism sync status|devices` to inspect; revoke a lost machine from the portal.
163
+ - `prism handoff status|devices` to inspect; revoke a lost machine from the portal.
156
164
 
157
165
  ## What's New in v20.16.0
158
166
 
package/dist/cli.js CHANGED
@@ -1134,12 +1134,14 @@ program
1134
1134
  process.exit(1);
1135
1135
  }
1136
1136
  });
1137
- // ─── prism sync ───────────────────────────────────────────────
1138
- // Cross-machine handoff sync controls. Push happens automatically on
1139
- // session_save_handoff once enabled; everything E2E lives in src/crypto/.
1137
+ // ─── prism handoff ────────────────────────────────────────────
1138
+ // Cross-machine handoff sync controls ('sync' was taken by cross-backend
1139
+ // data synchronization above a collision the stale local dist hid until
1140
+ // CI built fresh). Push happens automatically on session_save_handoff once
1141
+ // enabled; everything E2E lives in src/crypto/.
1140
1142
  program
1141
- .command('sync <action> [project]')
1142
- .description('Cross-machine handoff sync: enable | disable | status | pull <project> | devices')
1143
+ .command('handoff <action> [project]')
1144
+ .description('Cross-machine handoff sync (E2E): enable | disable | status | pull <project> | devices')
1143
1145
  .action(async (action, project) => {
1144
1146
  try {
1145
1147
  switch (action) {
@@ -1150,7 +1152,7 @@ program
1150
1152
  console.log(action === 'enable'
1151
1153
  ? 'Handoff sync enabled. On each session_save_handoff, the handoff is sealed to your '
1152
1154
  + 'account devices (end-to-end encrypted — the relay stores ciphertext only) and uploaded. '
1153
- + 'Paid plans; disable anytime with: prism sync disable'
1155
+ + 'Paid plans; disable anytime with: prism handoff disable'
1154
1156
  : 'Handoff sync disabled. Nothing further leaves this machine on this channel.');
1155
1157
  return;
1156
1158
  }
@@ -1166,7 +1168,7 @@ program
1166
1168
  }
1167
1169
  case 'pull': {
1168
1170
  if (!project) {
1169
- console.error('Usage: prism sync pull <project>');
1171
+ console.error('Usage: prism handoff pull <project>');
1170
1172
  process.exit(1);
1171
1173
  }
1172
1174
  const { pullHandoff, renderPulledHandoff } = await import('./sync/handoffSync.js');
@@ -232,7 +232,7 @@ export async function pushHandoffFromArgs(args) {
232
232
  const result = await pushHandoff(project, o);
233
233
  if (result.pushed && result.new_devices?.length) {
234
234
  console.error(`[handoff-sync] ⚠ NEW sync device(s) on your account: ${result.new_devices.join(", ")}. ` +
235
- `If you did not add a machine, revoke it: prism sync devices`);
235
+ `If you did not add a machine, revoke it: prism handoff devices`);
236
236
  }
237
237
  }
238
238
  export async function pullHandoff(project, fetchImpl = fetch) {
@@ -289,7 +289,7 @@ export async function pullHandoff(project, fetchImpl = fetch) {
289
289
  export function renderPulledHandoff(r) {
290
290
  if (!r.ok || !r.payload) {
291
291
  const why = {
292
- disabled: "Handoff sync is off on this machine. Enable: prism sync enable",
292
+ disabled: "Handoff sync is off on this machine. Enable: prism handoff enable",
293
293
  no_blob: "No synced handoff exists for this project yet.",
294
294
  not_recipient: "A handoff exists but was sealed before this device joined — it will include this machine after the next save elsewhere.",
295
295
  not_entitled: "Cross-machine sync needs a paid plan and a signed-in account.",
@@ -1958,7 +1958,7 @@ export const SYNC_PULL_HANDOFF_TOOL = {
1958
1958
  description: "Pulls this account's synced handoff for a project from the E2E relay and " +
1959
1959
  "opens it with THIS machine's device key. The relay stores ciphertext only; " +
1960
1960
  "a handoff is readable here only if it was sealed to this device. Requires " +
1961
- "handoff sync enabled (prism sync enable), a paid plan, and a signed-in " +
1961
+ "handoff sync enabled (prism handoff enable), a paid plan, and a signed-in " +
1962
1962
  "account. Push happens automatically on session_save_handoff.",
1963
1963
  inputSchema: {
1964
1964
  type: "object",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prism-mcp-server",
3
- "version": "20.17.0",
3
+ "version": "20.17.1",
4
4
  "mcpName": "io.github.dcostenco/prism-coder",
5
5
  "description": "Persistent session memory for AI coding agents that never leaves your machine — including the on-device model that reasons over it. Restores your prior decisions, open TODOs, and changed files across sessions; adds associative recall of related past work, semantic drift detection, and local inference. Local-first by default. Works with Claude Code, Cursor, and Codex.",
6
6
  "module": "index.ts",