claude-code-session-manager 0.53.0 → 0.55.0

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.
@@ -263,12 +263,29 @@ export interface AgentPersona {
263
263
  name: string;
264
264
  description: string | null;
265
265
  tools: string[];
266
+ model: string | null;
267
+ color: string | null;
268
+ /** Epic intent tags (tagLibrary.ts's TAG_LIBRARY) this persona is associated with. */
269
+ tags: string[];
266
270
  path: string;
267
271
  body: string;
268
272
  /** Project names (basename of cwd) whose currently-open tab overlays this agent. */
269
273
  overridingProjects: string[];
270
274
  }
271
275
 
276
+ /** Payload for `agents.savePersona` — creates or overwrites a global persona file. */
277
+ export interface AgentPersonaSaveInput {
278
+ name: string;
279
+ /** Previous filename, when renaming an existing persona. Omit when creating. */
280
+ originalName?: string;
281
+ description: string;
282
+ tools: string[];
283
+ model: string;
284
+ color: string;
285
+ tags: string[];
286
+ body: string;
287
+ }
288
+
272
289
  export interface VoiceHotkeyConfig {
273
290
  accelerator: string;
274
291
  mode: 'hold' | 'toggle';
@@ -1329,6 +1346,9 @@ export interface SessionManagerAPI {
1329
1346
  };
1330
1347
  agents: {
1331
1348
  listPersonas: () => Promise<AgentPersona[]>;
1349
+ savePersona: (payload: AgentPersonaSaveInput) => Promise<{ ok: boolean; path: string }>;
1350
+ deletePersona: (payload: { name: string }) => Promise<{ ok: boolean }>;
1351
+ removeOverride: (payload: { name: string; projectName: string }) => Promise<{ ok: boolean }>;
1332
1352
  };
1333
1353
  logs: {
1334
1354
  write: (
@@ -1653,9 +1673,28 @@ export interface SessionManagerAPI {
1653
1673
  * from notifyOriginatingTab) — lets an already-hydrated Epic pick it up
1654
1674
  * live instead of waiting for a restart. */
1655
1675
  onEventAppended: (handler: (e: PromptSessionEventAppendedPayload) => void) => () => void;
1676
+ /** Main-side read-merge-write of a cwd's active-index.json
1677
+ * (lib/activeIndexMerge.cjs) — persistActiveIndex sends only its own
1678
+ * in-memory contribution for the cwd; disk stays main's truth, merged
1679
+ * inside the same lock epicMint.cjs's ensureEpic serializes through. */
1680
+ mergeActiveIndex: (payload: PromptSessionsMergeActiveIndexPayload) => Promise<PromptSessionsMergeActiveIndexResult>;
1656
1681
  };
1657
1682
  }
1658
1683
 
1684
+ // ─────────────────────────────────── PromptSessions active-index merge
1685
+ export interface PromptSessionsMergeActiveIndexPayload {
1686
+ cwd: string;
1687
+ sessions: Record<string, unknown>;
1688
+ events: Record<string, unknown[]>;
1689
+ removedIds?: string[];
1690
+ source: 'epics';
1691
+ }
1692
+
1693
+ export interface PromptSessionsMergeActiveIndexResult {
1694
+ sessions: Record<string, unknown>;
1695
+ events: Record<string, unknown[]>;
1696
+ }
1697
+
1659
1698
  // ─────────────────────────────────── PromptSession event-appended broadcast
1660
1699
 
1661
1700
  export interface PromptSessionEventAppendedPayload {
@@ -148,6 +148,9 @@ contextBridge.exposeInMainWorld('api', {
148
148
  },
149
149
  agents: {
150
150
  listPersonas: () => ipcRenderer.invoke('agents:list-personas'),
151
+ savePersona: (payload) => ipcRenderer.invoke('agents:save-persona', payload),
152
+ deletePersona: (payload) => ipcRenderer.invoke('agents:delete-persona', payload),
153
+ removeOverride: (payload) => ipcRenderer.invoke('agents:remove-override', payload),
151
154
  },
152
155
  logs: {
153
156
  // ctx is optional: { cwd, tabId, epicId, tags } — when present and
@@ -471,5 +474,10 @@ contextBridge.exposeInMainWorld('api', {
471
474
  ipcRenderer.on('promptSession:event-appended', listener);
472
475
  return () => ipcRenderer.removeListener('promptSession:event-appended', listener);
473
476
  },
477
+ /** Main-side read-merge-write of a cwd's active-index.json
478
+ * (lib/activeIndexMerge.cjs) — replaces persistActiveIndex's old
479
+ * renderer-side read-merge-write. Payload carries only this renderer's
480
+ * own in-memory contribution for the cwd; disk stays main's truth. */
481
+ mergeActiveIndex: (payload) => ipcRenderer.invoke('promptSessions:merge-active-index', payload),
474
482
  },
475
483
  });