@proxysoul/soulforge 2.16.3 → 2.16.4

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/dist/index.js CHANGED
@@ -2748,8 +2748,8 @@ var init_store = __esm(() => {
2748
2748
  init_esm();
2749
2749
  init_tokens();
2750
2750
  useThemeStore = create((set) => ({
2751
- name: "dark",
2752
- tokens: DARK_THEME,
2751
+ name: "proxysoul-coffee",
2752
+ tokens: BUILTIN_THEMES["proxysoul-coffee"] ?? DARK_THEME,
2753
2753
  setTheme: (name2, tokens) => set({ name: name2, tokens })
2754
2754
  }));
2755
2755
  });
@@ -2817,7 +2817,7 @@ function resolveTheme(name2) {
2817
2817
  const overrides = normalizeKeys(raw);
2818
2818
  return { ...base, ...overrides };
2819
2819
  }
2820
- return DARK_THEME;
2820
+ return BUILTIN_THEMES["proxysoul-coffee"] ?? DARK_THEME;
2821
2821
  }
2822
2822
  function blendBgOpacity(hex, opacity) {
2823
2823
  if (opacity <= 0)
@@ -63440,7 +63440,7 @@ var package_default;
63440
63440
  var init_package = __esm(() => {
63441
63441
  package_default = {
63442
63442
  name: "@proxysoul/soulforge",
63443
- version: "2.16.3",
63443
+ version: "2.16.4",
63444
63444
  description: "Graph-powered code intelligence \u2014 multi-agent coding with codebase-aware AI",
63445
63445
  repository: {
63446
63446
  type: "git",
@@ -98246,6 +98246,43 @@ ${normalize(details)}`;
98246
98246
  summary: summaryById.get(s.id) ?? ""
98247
98247
  }));
98248
98248
  }
98249
+ findByTopics(topics, limit = 50) {
98250
+ if (topics.length === 0)
98251
+ return [];
98252
+ const placeholders = topics.map(() => "?").join(",");
98253
+ const rows = this.db.query(`SELECT DISTINCT m.id
98254
+ FROM memories m, json_each(m.topics) je
98255
+ WHERE je.value IN (${placeholders}) AND m.hidden = 0
98256
+ ORDER BY m.last_used_at DESC
98257
+ LIMIT ${limit}`).all(...topics);
98258
+ return rows.map((r) => r.id);
98259
+ }
98260
+ topRecallFor(opts, limit = 1) {
98261
+ const ids = new Set;
98262
+ if (opts.paths && opts.paths.length > 0) {
98263
+ for (const id of this.findByPaths(opts.paths, 50))
98264
+ ids.add(id);
98265
+ }
98266
+ if (opts.topics && opts.topics.length > 0) {
98267
+ for (const id of this.findByTopics(opts.topics, 50))
98268
+ ids.add(id);
98269
+ }
98270
+ if (opts.query && opts.query.trim().length > 0) {
98271
+ for (const hit of this.searchUnicode(opts.query, 25))
98272
+ ids.add(hit.id);
98273
+ for (const hit of this.searchTrigram(opts.query, 25))
98274
+ ids.add(hit.id);
98275
+ }
98276
+ if (ids.size === 0)
98277
+ return [];
98278
+ const placeholders = [...ids].map(() => "?").join(",");
98279
+ const rows = this.db.query(`SELECT id, summary, pinned
98280
+ FROM memories
98281
+ WHERE id IN (${placeholders}) AND hidden = 0
98282
+ ORDER BY pinned DESC, last_used_at DESC, use_count DESC
98283
+ LIMIT ${limit}`).all(...[...ids]);
98284
+ return rows.map((r) => ({ id: r.id, summary: r.summary, pinned: r.pinned === 1 }));
98285
+ }
98249
98286
  }
98250
98287
  function normalize(s) {
98251
98288
  return s.replace(/\s+/g, " ").trim().toLowerCase();
@@ -361422,6 +361459,127 @@ function analyzeFile(content) {
361422
361459
  };
361423
361460
  }
361424
361461
 
361462
+ // src/core/memory/hints.ts
361463
+ function setMemoryHintProvider(manager) {
361464
+ _manager = manager;
361465
+ }
361466
+ function resetSurfacedHints() {
361467
+ _surfacedThisTurn.clear();
361468
+ }
361469
+ function reportHintError(scope, err2) {
361470
+ try {
361471
+ const msg = err2 instanceof Error ? err2.message : String(err2);
361472
+ logBackgroundError(`memory-hint:${scope}`, msg);
361473
+ } catch {}
361474
+ }
361475
+ function truncateSummary(s) {
361476
+ if (s.length <= SUMMARY_MAX)
361477
+ return s;
361478
+ return `${s.slice(0, SUMMARY_MAX - 1).trimEnd()}\u2026`;
361479
+ }
361480
+ function buildHintLine(top, total) {
361481
+ if (total <= 0)
361482
+ return "";
361483
+ if (!top)
361484
+ return total === 1 ? `
361485
+ \xB7 1 memory` : `
361486
+ \xB7 ${String(total)} memories`;
361487
+ if (_surfacedThisTurn.has(top.id)) {
361488
+ return total === 1 ? `
361489
+ \xB7 1 memory` : `
361490
+ \xB7 ${String(total)} memories`;
361491
+ }
361492
+ _surfacedThisTurn.add(top.id);
361493
+ const prefix = top.pinned ? "pinned: " : "";
361494
+ const summary = truncateSummary(top.summary);
361495
+ const rest = total - 1;
361496
+ const more = rest > 0 ? ` +${String(rest)}` : "";
361497
+ return `
361498
+ \xB7 ${prefix}"${summary}"${more}`;
361499
+ }
361500
+ function countMemoriesForPaths(paths) {
361501
+ if (!_manager || paths.length === 0)
361502
+ return 0;
361503
+ try {
361504
+ const projectDb = _manager.getDbForScope("project");
361505
+ const globalDb = _manager.getDbForScope("global");
361506
+ const ids = new Set;
361507
+ for (const id of projectDb.findByPaths(paths, 100))
361508
+ ids.add(id);
361509
+ for (const id of globalDb.findByPaths(paths, 100))
361510
+ ids.add(id);
361511
+ return ids.size;
361512
+ } catch (err2) {
361513
+ reportHintError("paths", err2);
361514
+ return 0;
361515
+ }
361516
+ }
361517
+ function formatMemoryHint(count) {
361518
+ if (count <= 0)
361519
+ return "";
361520
+ return count === 1 ? `
361521
+ \xB7 1 memory` : `
361522
+ \xB7 ${String(count)} memories`;
361523
+ }
361524
+ function memoryHintForPaths(paths) {
361525
+ return formatMemoryHint(countMemoriesForPaths(paths));
361526
+ }
361527
+ function memoryHintComposite(opts) {
361528
+ if (!_manager)
361529
+ return "";
361530
+ try {
361531
+ const projectDb = _manager.getDbForScope("project");
361532
+ const globalDb = _manager.getDbForScope("global");
361533
+ const ids = new Set;
361534
+ if (opts.paths && opts.paths.length > 0) {
361535
+ for (const id of projectDb.findByPaths(opts.paths, 100))
361536
+ ids.add(id);
361537
+ for (const id of globalDb.findByPaths(opts.paths, 100))
361538
+ ids.add(id);
361539
+ }
361540
+ if (opts.topics && opts.topics.length > 0) {
361541
+ for (const id of projectDb.findByTopics(opts.topics, 100))
361542
+ ids.add(id);
361543
+ for (const id of globalDb.findByTopics(opts.topics, 100))
361544
+ ids.add(id);
361545
+ }
361546
+ if (opts.query && opts.query.trim().length > 0) {
361547
+ for (const hit of projectDb.searchUnicode(opts.query, 25))
361548
+ ids.add(hit.id);
361549
+ for (const hit of projectDb.searchTrigram(opts.query, 25))
361550
+ ids.add(hit.id);
361551
+ for (const hit of globalDb.searchUnicode(opts.query, 25))
361552
+ ids.add(hit.id);
361553
+ for (const hit of globalDb.searchTrigram(opts.query, 25))
361554
+ ids.add(hit.id);
361555
+ }
361556
+ const total = ids.size;
361557
+ if (total === 0)
361558
+ return "";
361559
+ const projectTop = projectDb.topRecallFor(opts, 1);
361560
+ const globalTop = globalDb.topRecallFor(opts, 1);
361561
+ let top = null;
361562
+ const candidates = [...projectTop, ...globalTop];
361563
+ for (const c of candidates) {
361564
+ if (!top) {
361565
+ top = c;
361566
+ continue;
361567
+ }
361568
+ if (c.pinned && !top.pinned)
361569
+ top = c;
361570
+ }
361571
+ return buildHintLine(top, total);
361572
+ } catch (err2) {
361573
+ reportHintError("composite", err2);
361574
+ return "";
361575
+ }
361576
+ }
361577
+ var _manager = null, _surfacedThisTurn, SUMMARY_MAX = 60;
361578
+ var init_hints = __esm(() => {
361579
+ init_errors();
361580
+ _surfacedThisTurn = new Set;
361581
+ });
361582
+
361425
361583
  // src/core/tools/file-events.ts
361426
361584
  function onFileEdited(cb) {
361427
361585
  editListeners.add(cb);
@@ -363089,6 +363247,7 @@ async function applyEdit(filePath, content, updated, editLine, label, tabId) {
363089
363247
  if (nudge)
363090
363248
  output += `
363091
363249
  ${nudge}`;
363250
+ output += memoryHintComposite({ paths: [toRelEditPath(filePath)] });
363092
363251
  return { success: true, output };
363093
363252
  }
363094
363253
  function resolveLineRange(content, oldStr, lineStart) {
@@ -363102,9 +363261,14 @@ function resolveLineRange(content, oldStr, lineStart) {
363102
363261
  return null;
363103
363262
  return { start: start2, end };
363104
363263
  }
363264
+ function toRelEditPath(abs) {
363265
+ const cwd = process.cwd();
363266
+ return abs.startsWith(`${cwd}/`) ? abs.slice(cwd.length + 1) : abs;
363267
+ }
363105
363268
  var editFileTool;
363106
363269
  var init_edit_file = __esm(() => {
363107
363270
  init_instance();
363271
+ init_hints();
363108
363272
  init_forbidden();
363109
363273
  init_path_display();
363110
363274
  init_edit_stack();
@@ -363144,6 +363308,7 @@ var init_edit_file = __esm(() => {
363144
363308
  if (openedInEditor)
363145
363309
  out2 += " \u2192 opened in editor";
363146
363310
  out2 = await appendCloneHints(filePath, out2);
363311
+ out2 += memoryHintComposite({ paths: [toRelEditPath(filePath)] });
363147
363312
  return { success: true, output: out2 };
363148
363313
  }
363149
363314
  try {
@@ -363269,6 +363434,7 @@ var SUPPORTED_EXTENSIONS, _backend = null, astEditTool;
363269
363434
  var init_ast_edit = __esm(() => {
363270
363435
  init_instance();
363271
363436
  init_ts_morph();
363437
+ init_hints();
363272
363438
  init_forbidden();
363273
363439
  init_path_display();
363274
363440
  init_edit_file();
@@ -363353,6 +363519,9 @@ var init_ast_edit = __esm(() => {
363353
363519
  output2 += ` (${deltas2.join(", ")})`;
363354
363520
  output2 = await appendAutoFormatResult(filePath, content, output2, args2.tabId);
363355
363521
  output2 = await appendPostEditDiagnostics(diagsPromise2, filePath, output2);
363522
+ const cwdHint2 = process.cwd();
363523
+ const relHint2 = filePath.startsWith(`${cwdHint2}/`) ? filePath.slice(cwdHint2.length + 1) : filePath;
363524
+ output2 += memoryHintComposite({ paths: [relHint2] });
363356
363525
  return { success: true, output: output2 };
363357
363526
  } catch (err2) {
363358
363527
  const msg = err2 instanceof Error ? err2.message : String(err2);
@@ -363417,6 +363586,9 @@ ${details.map((d) => ` \u2022 ${d}`).join(`
363417
363586
  output = await appendPostEditDiagnostics(diagsPromise, filePath, output);
363418
363587
  output = await appendCloneHints(filePath, output);
363419
363588
  await consumeAstEditNudge(filePath);
363589
+ const cwdHint = process.cwd();
363590
+ const relHint = filePath.startsWith(`${cwdHint}/`) ? filePath.slice(cwdHint.length + 1) : filePath;
363591
+ output += memoryHintComposite({ paths: [relHint] });
363420
363592
  return { success: true, output };
363421
363593
  } catch (err2) {
363422
363594
  const msg = err2 instanceof Error ? err2.message : String(err2);
@@ -378015,10 +378187,22 @@ async function execBlame(file2, startLine, endLine) {
378015
378187
  error: result.ok ? undefined : "blame failed"
378016
378188
  };
378017
378189
  }
378190
+ function extractDiffPaths(diff, max = 10) {
378191
+ const paths = new Set;
378192
+ const re = /^diff --git a\/(\S+) b\/(\S+)/gm;
378193
+ for (const m of diff.matchAll(re)) {
378194
+ if (m[2])
378195
+ paths.add(m[2]);
378196
+ if (paths.size >= max)
378197
+ break;
378198
+ }
378199
+ return [...paths];
378200
+ }
378018
378201
  var cwd, MAX_GIT_OUTPUT = 32000, gitTool, lastDiffOutput = null, lastDiffStaged;
378019
378202
  var init_git = __esm(() => {
378020
378203
  init_WorkspaceCoordinator();
378021
378204
  init_status();
378205
+ init_hints();
378022
378206
  init_tee();
378023
378207
  cwd = process.cwd();
378024
378208
  gitTool = {
@@ -378117,6 +378301,25 @@ ${args2.footer}`;
378117
378301
 
378118
378302
  ${result.output}` };
378119
378303
  }
378304
+ if (result.success) {
378305
+ try {
378306
+ let hint = "";
378307
+ if (args2.action === "diff" || args2.action === "show") {
378308
+ const paths = extractDiffPaths(result.output);
378309
+ hint = memoryHintComposite({ paths, topics: ["git", args2.action] });
378310
+ } else if (args2.action === "status") {
378311
+ hint = memoryHintComposite({ topics: ["git", "commit", "status"] });
378312
+ } else if (args2.action === "commit") {
378313
+ hint = memoryHintComposite({
378314
+ topics: ["git", "commit", "conventional-commits"]
378315
+ });
378316
+ } else if (args2.action === "log" || args2.action === "blame" || args2.action === "push" || args2.action === "pull" || args2.action === "rebase" || args2.action === "cherry_pick" || args2.action === "reset") {
378317
+ hint = memoryHintComposite({ topics: ["git", args2.action] });
378318
+ }
378319
+ if (hint)
378320
+ result = { ...result, output: `${result.output}${hint}` };
378321
+ } catch {}
378322
+ }
378120
378323
  if (args2.action === "commit" && result.success && tabId) {
378121
378324
  const coordinator = getWorkspaceCoordinator();
378122
378325
  const myClaims = coordinator.getClaimsForTab(tabId);
@@ -378966,7 +379169,7 @@ function createMemoryTool(deps) {
378966
379169
  "supersede"
378967
379170
  ]),
378968
379171
  scope: exports_external.enum(["global", "project", "both", "all"]).nullable().optional().describe("write/delete/pin: project|global. list/search: project|global|both|all"),
378969
- summary: exports_external.string().nullable().optional().describe(`write: one-line headline (\u2264${String(SUMMARY_MAX)}ch)`),
379172
+ summary: exports_external.string().nullable().optional().describe(`write: one-line headline (\u2264${String(SUMMARY_MAX2)}ch)`),
378970
379173
  details: exports_external.string().nullable().optional().describe(`write: rationale / context (\u2264${String(DETAILS_MAX)}ch)`),
378971
379174
  category: categorySchema.nullable().optional().describe("write/list: category"),
378972
379175
  topics: exports_external.array(exports_external.string()).nullable().optional().describe(`write: free-form tags (\u2264${String(TOPICS_MAX)})`),
@@ -379033,7 +379236,7 @@ function createMemoryTool(deps) {
379033
379236
  error: "bad_scope"
379034
379237
  };
379035
379238
  }
379036
- const cleanSummary = summary.length > SUMMARY_MAX ? `${summary.slice(0, SUMMARY_MAX - 3)}...` : summary;
379239
+ const cleanSummary = summary.length > SUMMARY_MAX2 ? `${summary.slice(0, SUMMARY_MAX2 - 3)}...` : summary;
379037
379240
  const cleanDetails = details.length > DETAILS_MAX ? `${details.slice(0, DETAILS_MAX - 3)}...` : details;
379038
379241
  const topics = normalizeTopics(args2.topics ?? []);
379039
379242
  const filePaths = (args2.file_paths ?? []).slice(0, FILE_REFS_MAX);
@@ -379351,7 +379554,7 @@ function formatRecordFull(m) {
379351
379554
  return lines.join(`
379352
379555
  `);
379353
379556
  }
379354
- var SUMMARY_MAX = 200, DETAILS_MAX = 2000, TOPICS_MAX = 8, TOPIC_LEN_MAX = 32, FILE_REFS_MAX = 16, categorySchema;
379557
+ var SUMMARY_MAX2 = 200, DETAILS_MAX = 2000, TOPICS_MAX = 8, TOPIC_LEN_MAX = 32, FILE_REFS_MAX = 16, categorySchema;
379355
379558
  var init_memory = __esm(() => {
379356
379559
  init_dist5();
379357
379560
  init_zod();
@@ -380290,6 +380493,7 @@ import { resolve as resolve24 } from "path";
380290
380493
  var multiEditTool;
380291
380494
  var init_multi_edit = __esm(() => {
380292
380495
  init_instance();
380496
+ init_hints();
380293
380497
  init_forbidden();
380294
380498
  init_path_display();
380295
380499
  init_edit_file();
@@ -380451,6 +380655,9 @@ NO edits were applied (atomic rollback). Re-read the file and retry ALL edits.`,
380451
380655
  if (nudge)
380452
380656
  output += `
380453
380657
  ${nudge}`;
380658
+ const cwd2 = process.cwd();
380659
+ const rel = filePath.startsWith(`${cwd2}/`) ? filePath.slice(cwd2.length + 1) : filePath;
380660
+ output += memoryHintComposite({ paths: [rel] });
380454
380661
  return { success: true, output };
380455
380662
  } catch (err2) {
380456
380663
  const msg = err2 instanceof Error ? err2.message : String(err2);
@@ -381227,38 +381434,6 @@ function isStatFile(stat5) {
381227
381434
  var MAX_BYTES2 = 512, UTF8_BOUNDARY_RESERVE = 3;
381228
381435
  var init_lib2 = () => {};
381229
381436
 
381230
- // src/core/memory/hints.ts
381231
- function setMemoryHintProvider(manager) {
381232
- _manager = manager;
381233
- }
381234
- function countMemoriesForPaths(paths) {
381235
- if (!_manager || paths.length === 0)
381236
- return 0;
381237
- try {
381238
- const projectDb = _manager.getDbForScope("project");
381239
- const globalDb = _manager.getDbForScope("global");
381240
- const ids = new Set;
381241
- for (const id of projectDb.findByPaths(paths, 100))
381242
- ids.add(id);
381243
- for (const id of globalDb.findByPaths(paths, 100))
381244
- ids.add(id);
381245
- return ids.size;
381246
- } catch {
381247
- return 0;
381248
- }
381249
- }
381250
- function formatMemoryHint(count) {
381251
- if (count <= 0)
381252
- return "";
381253
- return count === 1 ? `
381254
- \xB7 1 memory` : `
381255
- \xB7 ${String(count)} memories`;
381256
- }
381257
- function memoryHintForPaths(paths) {
381258
- return formatMemoryHint(countMemoriesForPaths(paths));
381259
- }
381260
- var _manager = null;
381261
-
381262
381437
  // src/core/tools/binary-detect.ts
381263
381438
  import { existsSync as existsSync23, statSync as statSync5 } from "fs";
381264
381439
  import { extname as extname4, resolve as resolve26 } from "path";
@@ -381636,6 +381811,7 @@ var init_read_file = __esm(() => {
381636
381811
  init_lib2();
381637
381812
  init_instance();
381638
381813
  init_intelligence();
381814
+ init_hints();
381639
381815
  init_forbidden();
381640
381816
  init_io_client();
381641
381817
  init_binary_detect();
@@ -397334,7 +397510,6 @@ function createForgeAgent({
397334
397510
  activeDeferredTools
397335
397511
  });
397336
397512
  const STABLE_ORDER = [
397337
- "set_lockin",
397338
397513
  "soul_grep",
397339
397514
  "soul_find",
397340
397515
  "soul_analyze",
@@ -397361,6 +397536,7 @@ function createForgeAgent({
397361
397536
  "plan",
397362
397537
  "update_plan_step",
397363
397538
  "ask_user",
397539
+ "set_lockin",
397364
397540
  "editor",
397365
397541
  "task_list",
397366
397542
  "undo_edit",
@@ -412363,6 +412539,7 @@ var init_manager5 = __esm(() => {
412363
412539
  init_instance2();
412364
412540
  init_provider();
412365
412541
  init_provider_options();
412542
+ init_hints();
412366
412543
  init_manager2();
412367
412544
  init_recall();
412368
412545
  init_types4();
@@ -412768,6 +412945,7 @@ var init_manager5 = __esm(() => {
412768
412945
  resetConversationTracking() {
412769
412946
  this.editedFiles.clear();
412770
412947
  this.surfacedMemoryIds.clear();
412948
+ resetSurfacedHints();
412771
412949
  this.recallCache = null;
412772
412950
  this.mentionedFiles.clear();
412773
412951
  this.conversationTokens = 0;
@@ -412784,6 +412962,7 @@ var init_manager5 = __esm(() => {
412784
412962
  }
412785
412963
  resetForCompaction() {
412786
412964
  this.recallCache = null;
412965
+ resetSurfacedHints();
412787
412966
  if (this.repoMapCache)
412788
412967
  this.repoMapCache.at = 0;
412789
412968
  this.repoMapGeneration++;
@@ -43040,7 +43040,7 @@ var init_icons = __esm(() => {
43040
43040
  });
43041
43041
 
43042
43042
  // src/core/theme/tokens.ts
43043
- var DARK_THEME, LIGHT_THEME, SOLARIZED_DARK, CATPPUCCIN, GRUVBOX_DARK, TOKYO_NIGHT, DRACULA, NORD, ONE_DARK, ROSE_PINE, KANAGAWA, CATPPUCCIN_LATTE, CATPPUCCIN_FRAPPE, CATPPUCCIN_MACCHIATO, GITHUB_DARK, GITHUB_LIGHT, EVERFOREST_DARK, AYU_DARK, NIGHTFOX, TOKYONIGHT_STORM, ONE_LIGHT, CYBERDREAM, OXOCARBON, SONOKAI, MOONFLY, MELANGE, SOLARIZED_OSAKA, BAMBOO, NORDIC, SYNTHWAVE, ICEBERG, EMBER, VESPER, PROXYSOUL_MAIN, PROXYSOUL_COFFEE, PROXYSOUL_WATER;
43043
+ var DARK_THEME, LIGHT_THEME, SOLARIZED_DARK, CATPPUCCIN, GRUVBOX_DARK, TOKYO_NIGHT, DRACULA, NORD, ONE_DARK, ROSE_PINE, KANAGAWA, CATPPUCCIN_LATTE, CATPPUCCIN_FRAPPE, CATPPUCCIN_MACCHIATO, GITHUB_DARK, GITHUB_LIGHT, EVERFOREST_DARK, AYU_DARK, NIGHTFOX, TOKYONIGHT_STORM, ONE_LIGHT, CYBERDREAM, OXOCARBON, SONOKAI, MOONFLY, MELANGE, SOLARIZED_OSAKA, BAMBOO, NORDIC, SYNTHWAVE, ICEBERG, EMBER, VESPER, PROXYSOUL_MAIN, PROXYSOUL_COFFEE, PROXYSOUL_WATER, BUILTIN_THEMES;
43044
43044
  var init_tokens = __esm(() => {
43045
43045
  DARK_THEME = {
43046
43046
  brand: "#9B30FF",
@@ -44430,6 +44430,44 @@ var init_tokens = __esm(() => {
44430
44430
  accentUser: "#009a8b",
44431
44431
  accentAssistant: "#00a2ce"
44432
44432
  };
44433
+ BUILTIN_THEMES = {
44434
+ dark: DARK_THEME,
44435
+ light: LIGHT_THEME,
44436
+ "solarized-dark": SOLARIZED_DARK,
44437
+ catppuccin: CATPPUCCIN,
44438
+ "gruvbox-dark": GRUVBOX_DARK,
44439
+ "tokyo-night": TOKYO_NIGHT,
44440
+ dracula: DRACULA,
44441
+ nord: NORD,
44442
+ "one-dark": ONE_DARK,
44443
+ "rose-pine": ROSE_PINE,
44444
+ kanagawa: KANAGAWA,
44445
+ "catppuccin-latte": CATPPUCCIN_LATTE,
44446
+ "catppuccin-frappe": CATPPUCCIN_FRAPPE,
44447
+ "catppuccin-macchiato": CATPPUCCIN_MACCHIATO,
44448
+ "github-dark": GITHUB_DARK,
44449
+ "github-light": GITHUB_LIGHT,
44450
+ "everforest-dark": EVERFOREST_DARK,
44451
+ "ayu-dark": AYU_DARK,
44452
+ nightfox: NIGHTFOX,
44453
+ "tokyonight-storm": TOKYONIGHT_STORM,
44454
+ "one-light": ONE_LIGHT,
44455
+ "proxysoul-main": PROXYSOUL_MAIN,
44456
+ "proxysoul-coffee": PROXYSOUL_COFFEE,
44457
+ "proxysoul-water": PROXYSOUL_WATER,
44458
+ cyberdream: CYBERDREAM,
44459
+ oxocarbon: OXOCARBON,
44460
+ sonokai: SONOKAI,
44461
+ moonfly: MOONFLY,
44462
+ melange: MELANGE,
44463
+ "solarized-osaka": SOLARIZED_OSAKA,
44464
+ bamboo: BAMBOO,
44465
+ nordic: NORDIC,
44466
+ synthwave: SYNTHWAVE,
44467
+ iceberg: ICEBERG,
44468
+ ember: EMBER,
44469
+ vesper: VESPER
44470
+ };
44433
44471
  });
44434
44472
 
44435
44473
  // src/core/theme/store.ts
@@ -44441,8 +44479,8 @@ var init_store = __esm(() => {
44441
44479
  init_esm();
44442
44480
  init_tokens();
44443
44481
  useThemeStore = create((set2) => ({
44444
- name: "dark",
44445
- tokens: DARK_THEME,
44482
+ name: "proxysoul-coffee",
44483
+ tokens: BUILTIN_THEMES["proxysoul-coffee"] ?? DARK_THEME,
44446
44484
  setTheme: (name21, tokens) => set2({
44447
44485
  name: name21,
44448
44486
  tokens
@@ -50610,7 +50648,7 @@ var package_default;
50610
50648
  var init_package = __esm(() => {
50611
50649
  package_default = {
50612
50650
  name: "@proxysoul/soulforge",
50613
- version: "2.16.3",
50651
+ version: "2.16.4",
50614
50652
  description: "Graph-powered code intelligence \u2014 multi-agent coding with codebase-aware AI",
50615
50653
  repository: {
50616
50654
  type: "git",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proxysoul/soulforge",
3
- "version": "2.16.3",
3
+ "version": "2.16.4",
4
4
  "description": "Graph-powered code intelligence — multi-agent coding with codebase-aware AI",
5
5
  "repository": {
6
6
  "type": "git",