gnosys 5.9.2 → 5.9.3

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 (117) hide show
  1. package/dist/cli.js +311 -147
  2. package/dist/cli.js.map +1 -1
  3. package/dist/lib/chat/index.d.ts.map +1 -1
  4. package/dist/lib/chat/index.js +5 -0
  5. package/dist/lib/chat/index.js.map +1 -1
  6. package/dist/lib/cleanup.d.ts +52 -0
  7. package/dist/lib/cleanup.d.ts.map +1 -0
  8. package/dist/lib/cleanup.js +168 -0
  9. package/dist/lib/cleanup.js.map +1 -0
  10. package/dist/lib/config.d.ts +7 -0
  11. package/dist/lib/config.d.ts.map +1 -1
  12. package/dist/lib/config.js +7 -1
  13. package/dist/lib/config.js.map +1 -1
  14. package/dist/lib/paths.d.ts +8 -0
  15. package/dist/lib/paths.d.ts.map +1 -1
  16. package/dist/lib/paths.js +15 -0
  17. package/dist/lib/paths.js.map +1 -1
  18. package/dist/lib/remoteWizard.d.ts.map +1 -1
  19. package/dist/lib/remoteWizard.js +112 -52
  20. package/dist/lib/remoteWizard.js.map +1 -1
  21. package/dist/lib/setup/coldStart.d.ts +71 -0
  22. package/dist/lib/setup/coldStart.d.ts.map +1 -0
  23. package/dist/lib/setup/coldStart.js +122 -0
  24. package/dist/lib/setup/coldStart.js.map +1 -0
  25. package/dist/lib/setup/configSetRender.d.ts +26 -0
  26. package/dist/lib/setup/configSetRender.d.ts.map +1 -0
  27. package/dist/lib/setup/configSetRender.js +103 -0
  28. package/dist/lib/setup/configSetRender.js.map +1 -0
  29. package/dist/lib/setup/dreamRender.d.ts +44 -0
  30. package/dist/lib/setup/dreamRender.d.ts.map +1 -0
  31. package/dist/lib/setup/dreamRender.js +55 -0
  32. package/dist/lib/setup/dreamRender.js.map +1 -0
  33. package/dist/lib/setup/modelsRender.d.ts +25 -0
  34. package/dist/lib/setup/modelsRender.d.ts.map +1 -0
  35. package/dist/lib/setup/modelsRender.js +33 -0
  36. package/dist/lib/setup/modelsRender.js.map +1 -0
  37. package/dist/lib/setup/remoteRender.d.ts +43 -0
  38. package/dist/lib/setup/remoteRender.d.ts.map +1 -0
  39. package/dist/lib/setup/remoteRender.js +65 -0
  40. package/dist/lib/setup/remoteRender.js.map +1 -0
  41. package/dist/lib/setup/routingRender.d.ts +44 -0
  42. package/dist/lib/setup/routingRender.d.ts.map +1 -0
  43. package/dist/lib/setup/routingRender.js +97 -0
  44. package/dist/lib/setup/routingRender.js.map +1 -0
  45. package/dist/lib/setup/sections/ides.d.ts +8 -0
  46. package/dist/lib/setup/sections/ides.d.ts.map +1 -1
  47. package/dist/lib/setup/sections/ides.js +49 -27
  48. package/dist/lib/setup/sections/ides.js.map +1 -1
  49. package/dist/lib/setup/sections/preferences.d.ts +8 -0
  50. package/dist/lib/setup/sections/preferences.d.ts.map +1 -1
  51. package/dist/lib/setup/sections/preferences.js +40 -19
  52. package/dist/lib/setup/sections/preferences.js.map +1 -1
  53. package/dist/lib/setup/sections/routing.d.ts +0 -1
  54. package/dist/lib/setup/sections/routing.d.ts.map +1 -1
  55. package/dist/lib/setup/sections/routing.js +49 -29
  56. package/dist/lib/setup/sections/routing.js.map +1 -1
  57. package/dist/lib/setup/summary.d.ts +33 -19
  58. package/dist/lib/setup/summary.d.ts.map +1 -1
  59. package/dist/lib/setup/summary.js +135 -105
  60. package/dist/lib/setup/summary.js.map +1 -1
  61. package/dist/lib/setup/syncProjectsRender.d.ts +56 -0
  62. package/dist/lib/setup/syncProjectsRender.d.ts.map +1 -0
  63. package/dist/lib/setup/syncProjectsRender.js +168 -0
  64. package/dist/lib/setup/syncProjectsRender.js.map +1 -0
  65. package/dist/lib/setup/ui/diff.d.ts +19 -0
  66. package/dist/lib/setup/ui/diff.d.ts.map +1 -0
  67. package/dist/lib/setup/ui/diff.js +34 -0
  68. package/dist/lib/setup/ui/diff.js.map +1 -0
  69. package/dist/lib/setup/ui/footer.d.ts +11 -0
  70. package/dist/lib/setup/ui/footer.d.ts.map +1 -0
  71. package/dist/lib/setup/ui/footer.js +21 -0
  72. package/dist/lib/setup/ui/footer.js.map +1 -0
  73. package/dist/lib/setup/ui/header.d.ts +24 -0
  74. package/dist/lib/setup/ui/header.d.ts.map +1 -0
  75. package/dist/lib/setup/ui/header.js +49 -0
  76. package/dist/lib/setup/ui/header.js.map +1 -0
  77. package/dist/lib/setup/ui/index.d.ts +26 -0
  78. package/dist/lib/setup/ui/index.d.ts.map +1 -0
  79. package/dist/lib/setup/ui/index.js +18 -0
  80. package/dist/lib/setup/ui/index.js.map +1 -0
  81. package/dist/lib/setup/ui/menu.d.ts +27 -0
  82. package/dist/lib/setup/ui/menu.d.ts.map +1 -0
  83. package/dist/lib/setup/ui/menu.js +75 -0
  84. package/dist/lib/setup/ui/menu.js.map +1 -0
  85. package/dist/lib/setup/ui/panel.d.ts +23 -0
  86. package/dist/lib/setup/ui/panel.d.ts.map +1 -0
  87. package/dist/lib/setup/ui/panel.js +53 -0
  88. package/dist/lib/setup/ui/panel.js.map +1 -0
  89. package/dist/lib/setup/ui/prompt.d.ts +27 -0
  90. package/dist/lib/setup/ui/prompt.d.ts.map +1 -0
  91. package/dist/lib/setup/ui/prompt.js +38 -0
  92. package/dist/lib/setup/ui/prompt.js.map +1 -0
  93. package/dist/lib/setup/ui/safePrompt.d.ts +24 -0
  94. package/dist/lib/setup/ui/safePrompt.d.ts.map +1 -0
  95. package/dist/lib/setup/ui/safePrompt.js +71 -0
  96. package/dist/lib/setup/ui/safePrompt.js.map +1 -0
  97. package/dist/lib/setup/ui/spinner.d.ts +28 -0
  98. package/dist/lib/setup/ui/spinner.d.ts.map +1 -0
  99. package/dist/lib/setup/ui/spinner.js +87 -0
  100. package/dist/lib/setup/ui/spinner.js.map +1 -0
  101. package/dist/lib/setup/ui/status.d.ts +21 -0
  102. package/dist/lib/setup/ui/status.d.ts.map +1 -0
  103. package/dist/lib/setup/ui/status.js +49 -0
  104. package/dist/lib/setup/ui/status.js.map +1 -0
  105. package/dist/lib/setup/ui/title.d.ts +14 -0
  106. package/dist/lib/setup/ui/title.d.ts.map +1 -0
  107. package/dist/lib/setup/ui/title.js +24 -0
  108. package/dist/lib/setup/ui/title.js.map +1 -0
  109. package/dist/lib/setup/ui/tokens.d.ts +66 -0
  110. package/dist/lib/setup/ui/tokens.d.ts.map +1 -0
  111. package/dist/lib/setup/ui/tokens.js +87 -0
  112. package/dist/lib/setup/ui/tokens.js.map +1 -0
  113. package/dist/lib/setup.d.ts +7 -0
  114. package/dist/lib/setup.d.ts.map +1 -1
  115. package/dist/lib/setup.js +204 -230
  116. package/dist/lib/setup.js.map +1 -1
  117. package/package.json +1 -1
@@ -9,7 +9,7 @@
9
9
  import fs from "fs/promises";
10
10
  import path from "path";
11
11
  import { detectIDEs, setupIDE } from "../../setup.js";
12
- const BOLD = "\x1b[1m";
12
+ import { safeQuestion } from "../ui/safePrompt.js";
13
13
  const DIM = "\x1b[2m";
14
14
  const GREEN = "\x1b[32m";
15
15
  const RED = "\x1b[31m";
@@ -28,7 +28,7 @@ const ALL_IDE_KEYS = ["claude", "claude-desktop", "cursor", "codex", "gemini-cli
28
28
  // IDEs whose MCP config lives at the user level (~/...) rather than per-project.
29
29
  const USER_LEVEL_IDES = new Set(["claude", "claude-desktop", "gemini-cli", "antigravity"]);
30
30
  async function ask(rl, prompt) {
31
- return (await rl.question(prompt)).trim();
31
+ return (await safeQuestion(rl, prompt)).trim();
32
32
  }
33
33
  async function askChoice(rl, prompt, choices, defaultIdx = 0) {
34
34
  if (prompt)
@@ -51,53 +51,70 @@ async function askChoice(rl, prompt, choices, defaultIdx = 0) {
51
51
  /**
52
52
  * Run the IDE-integration wizard. Detects which IDEs are present in the
53
53
  * project directory and lets the user pick which to wire up.
54
+ *
55
+ * v5.9.3 redesign:
56
+ * - Uses Header() + Title() + footer hint for "all / skip" instead of
57
+ * burying those as menu items.
58
+ * - Status column with ● (filled, accent) for "detected" and ○ (hollow,
59
+ * text-dim) for "will create" or "will use user-level".
60
+ * - Final line: `2 ides configured · 0 errors`.
61
+ *
54
62
  * Returns true if at least one IDE config was written.
55
63
  */
56
64
  export async function runIdesSetup(opts) {
65
+ const { Header } = await import("../ui/header.js");
66
+ const { Title } = await import("../ui/title.js");
67
+ const { Footer } = await import("../ui/footer.js");
68
+ const { c, color, glyph } = await import("../ui/tokens.js");
57
69
  console.log("");
58
- console.log(`${BOLD}IDE Integration${RESET}`);
70
+ console.log(Header(["gnosys", "setup", "ides"]));
59
71
  console.log("");
60
- const detected = await detectIDEs(opts.directory);
61
- if (detected.length > 0) {
62
- const names = detected.map((id) => IDE_LABELS[id] ?? id).join(", ");
63
- console.log(`Detected: ${GREEN}${names}${RESET}`);
64
- }
65
- else {
66
- console.log(`${DIM}No IDE integrations detected in this directory.${RESET}`);
67
- }
72
+ console.log(Title("IDE integrations", "we'll write the MCP server config so gnosys is available from each"));
68
73
  console.log("");
74
+ const detected = await detectIDEs(opts.directory);
75
+ // Header row for the columns.
76
+ console.log(` ${color(c.textDim, "ide".padEnd(18))}${color(c.textDim, "status".padEnd(22))}${color(c.textDim, "target")}`);
77
+ console.log(` ${color(c.textGhost, "─".repeat(60))}`);
69
78
  const ideOptions = [];
70
79
  const ideKeyForOption = [];
71
- for (const ide of ALL_IDE_KEYS) {
80
+ ALL_IDE_KEYS.forEach((ide, idx) => {
72
81
  const isDetected = detected.includes(ide);
73
82
  const label = IDE_LABELS[ide] ?? ide;
74
- if (isDetected) {
75
- ideOptions.push(`${label} ${DIM}(detected)${RESET}`);
76
- }
77
- else if (USER_LEVEL_IDES.has(ide)) {
78
- ideOptions.push(`${label} ${DIM}(not detected — will configure user-level)${RESET}`);
79
- }
80
- else {
81
- ideOptions.push(`${label} ${DIM}(create .${ide}/)${RESET}`);
82
- }
83
+ const dot = isDetected ? color(c.accent, glyph.dotFilled) : color(c.textDim, glyph.dotHollow);
84
+ const status = isDetected
85
+ ? color(c.text, "detected")
86
+ : USER_LEVEL_IDES.has(ide)
87
+ ? color(c.textDim, "user-level")
88
+ : color(c.textDim, "will create");
89
+ const target = USER_LEVEL_IDES.has(ide)
90
+ ? color(c.textDim, `~/${ide}-mcp config`)
91
+ : color(c.textDim, `.${ide}/mcp.json`);
92
+ const num = color(c.textDim, String(idx + 1).padStart(2, " "));
93
+ console.log(` ${num} ${color(c.text, label.padEnd(16))} ${dot} ${status.padEnd(20)} ${target}`);
94
+ ideOptions.push(label);
83
95
  ideKeyForOption.push(ide);
84
- }
85
- ideOptions.push("All");
86
- ideOptions.push("Skip");
87
- const idx = await askChoice(opts.rl, "Pick an IDE to configure:", ideOptions);
96
+ });
97
+ console.log("");
98
+ console.log(Footer(`1–${ALL_IDE_KEYS.length} · pick a · all detected enter · skip`));
99
+ const idx = await askChoice(opts.rl, "", [...ideOptions, "All detected", "Skip"]);
88
100
  let idesToSetup = [];
89
101
  if (idx < ALL_IDE_KEYS.length) {
90
102
  idesToSetup = [ideKeyForOption[idx]];
91
103
  }
92
104
  else if (idx === ALL_IDE_KEYS.length) {
93
- idesToSetup = [...ALL_IDE_KEYS];
105
+ // v5.9.3: "all detected" only configures IDEs that are actually
106
+ // detected — was "all IDEs" which created stub dirs for unused
107
+ // editors. User-level IDEs (Claude Code, Gemini CLI, etc.) are
108
+ // always included since they don't need a project marker.
109
+ idesToSetup = ALL_IDE_KEYS.filter((k) => detected.includes(k) || USER_LEVEL_IDES.has(k));
94
110
  }
95
- // Last option is Skip
111
+ // Last option is Skip — leaves idesToSetup empty
96
112
  if (idesToSetup.length === 0) {
97
113
  console.log(`${DIM}Skipped.${RESET}`);
98
114
  return false;
99
115
  }
100
116
  let configured = 0;
117
+ let errors = 0;
101
118
  for (const ide of idesToSetup) {
102
119
  if (!detected.includes(ide) && !USER_LEVEL_IDES.has(ide)) {
103
120
  const dirPath = path.join(opts.directory, `.${ide}`);
@@ -107,6 +124,7 @@ export async function runIdesSetup(opts) {
107
124
  }
108
125
  catch (err) {
109
126
  console.log(` ${CROSS} Could not create .${ide}/: ${err instanceof Error ? err.message : String(err)}`);
127
+ errors++;
110
128
  continue;
111
129
  }
112
130
  }
@@ -117,8 +135,12 @@ export async function runIdesSetup(opts) {
117
135
  }
118
136
  else {
119
137
  console.log(` ${CROSS} ${IDE_LABELS[ide] ?? ide}: ${result.message}`);
138
+ errors++;
120
139
  }
121
140
  }
141
+ // v5.9.3 — summary line per design §5.
142
+ console.log("");
143
+ console.log(` ${color(c.textDim, `${configured} ides configured · ${errors} errors`)}`);
122
144
  return configured > 0;
123
145
  }
124
146
  //# sourceMappingURL=ides.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ides.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/ides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ides.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/ides.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,KAAK,GAAG,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;AAClC,MAAM,KAAK,GAAG,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;AAEhC,MAAM,UAAU,GAA2B;IACzC,MAAM,EAAE,aAAa;IACrB,gBAAgB,EAAE,gBAAgB;IAClC,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;AAElG,iFAAiF;AACjF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;AAO3F,KAAK,UAAU,GAAG,CAAC,EAAqB,EAAE,MAAc;IACtD,OAAO,CAAC,MAAM,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,EAAqB,EACrB,MAAc,EACd,OAAiB,EACjB,UAAU,GAAG,CAAC;IAEd,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,MAAM,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,OAAO,UAAU,CAAC;QAC/B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,mBAAmB,OAAO,CAAC,MAAM,GAAG,KAAK,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAsB;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACnD,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAE5D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,oEAAoE,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAElD,8BAA8B;IAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7H,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAExD,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC9F,MAAM,MAAM,GAAG,UAAU;YACvB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC;YAC3B,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;gBACxB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC;gBAChC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;YACrC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,GAAG,aAAa,CAAC;YACzC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,GAAG,WAAW,CAAC,CAAC;QACzC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;QACrG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,YAAY,CAAC,MAAM,6CAA6C,CAAC,CAAC,CAAC;IAE3F,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,GAAG,UAAU,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAElF,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC;QAC9B,WAAW,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACvC,gEAAgE;QAChE,+DAA+D;QAC/D,+DAA+D;QAC/D,0DAA0D;QAC1D,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IACD,iDAAiD;IAEjD,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,WAAW,KAAK,EAAE,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,aAAa,GAAG,aAAa,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,sBAAsB,GAAG,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACzG,MAAM,EAAE,CAAC;gBACT,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5C,UAAU,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,sBAAsB,MAAM,SAAS,CAAC,EAAE,CAAC,CAAC;IAE1F,OAAO,UAAU,GAAG,CAAC,CAAC;AACxB,CAAC"}
@@ -39,6 +39,14 @@ export declare function listUserPreferences(): Promise<UserPreference[]>;
39
39
  /**
40
40
  * Run the interactive preferences review. Returns true if anything was
41
41
  * changed (added, edited, or deleted).
42
+ *
43
+ * v5.9.3 redesign (Screen 9):
44
+ * - Header() + breadcrumb with `N stored` suffix.
45
+ * - Two source dots: ● (filled, accent) = gnosys-native, ○ (hollow,
46
+ * text-dim) = imported/unknown (collapsed from 3 source colors per
47
+ * design §9.1).
48
+ * - Footer atom for the action hint.
49
+ * - One preview line per row, no truncation marker.
42
50
  */
43
51
  export declare function runPreferencesReview(rl: ReadlineInterface): Promise<boolean>;
44
52
  //# sourceMappingURL=preferences.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../../src/lib/setup/sections/preferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAenE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;CAClD;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAcrE;AAsGD;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4ClF"}
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../../../../src/lib/setup/sections/preferences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAenE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,eAAe,GAAG,UAAU,GAAG,SAAS,CAAC;CAClD;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAcrE;AAsGD;;;;;;;;;;;GAWG;AACH,wBAAsB,oBAAoB,CAAC,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDlF"}
@@ -16,10 +16,10 @@
16
16
  */
17
17
  import { GnosysDB } from "../../db.js";
18
18
  import { setPreference, deletePreference, KNOWN_PREFERENCE_KEYS, } from "../../preferences.js";
19
+ import { safeQuestion } from "../ui/safePrompt.js";
19
20
  const DIM = "\x1b[2m";
20
21
  const GREEN = "\x1b[32m";
21
22
  const RED = "\x1b[31m";
22
- const YELLOW = "\x1b[33m";
23
23
  const BOLD = "\x1b[1m";
24
24
  const RESET = "\x1b[0m";
25
25
  /** Inspect a memory ID and classify it. v5.x gnosys uses `prefix-ULID` or `pref-<key>`. */
@@ -80,7 +80,7 @@ async function setNewPreference(rl) {
80
80
  console.log(`${DIM}Known keys: ${KNOWN_PREFERENCE_KEYS.slice(0, 5).join(", ")}, ...${RESET}`);
81
81
  console.log(`${DIM}You can also use any custom key — just keep it kebab-case.${RESET}`);
82
82
  console.log("");
83
- const key = (await rl.question("Key (e.g. code-style): ")).trim();
83
+ const key = (await safeQuestion(rl, "Key (e.g. code-style): ")).trim();
84
84
  if (!key) {
85
85
  console.log(`${DIM}Cancelled.${RESET}`);
86
86
  return false;
@@ -89,7 +89,7 @@ async function setNewPreference(rl) {
89
89
  console.log(`${RED}Invalid key — use lowercase letters, digits, and dashes only.${RESET}`);
90
90
  return false;
91
91
  }
92
- const value = (await rl.question("Value (one line or short paragraph): ")).trim();
92
+ const value = (await safeQuestion(rl, "Value (one line or short paragraph): ")).trim();
93
93
  if (!value) {
94
94
  console.log(`${DIM}Cancelled.${RESET}`);
95
95
  return false;
@@ -124,9 +124,9 @@ async function viewAndMaybeDelete(rl, pref) {
124
124
  // mutating the legacy row.
125
125
  const isEditable = pref.id.startsWith("pref-");
126
126
  const menu = isEditable ? "[E]dit · [D]elete · [K]eep · [B]ack> " : "[D]elete · [K]eep · [B]ack> ";
127
- const action = (await rl.question(menu)).trim().toLowerCase();
127
+ const action = (await safeQuestion(rl, menu)).trim().toLowerCase();
128
128
  if (isEditable && (action === "e" || action === "edit")) {
129
- const newValue = (await rl.question(`New value for ${pref.key} (empty = cancel): `)).trim();
129
+ const newValue = (await safeQuestion(rl, `New value for ${pref.key} (empty = cancel): `)).trim();
130
130
  if (!newValue) {
131
131
  console.log(`${DIM}Cancelled.${RESET}`);
132
132
  return false;
@@ -147,7 +147,7 @@ async function viewAndMaybeDelete(rl, pref) {
147
147
  }
148
148
  if (action !== "d" && action !== "delete")
149
149
  return false;
150
- const confirm = (await rl.question(`Delete "${pref.title}"? [y/N] `)).trim().toLowerCase();
150
+ const confirm = (await safeQuestion(rl, `Delete "${pref.title}"? [y/N] `)).trim().toLowerCase();
151
151
  if (confirm !== "y" && confirm !== "yes")
152
152
  return false;
153
153
  const db = GnosysDB.openCentral();
@@ -173,31 +173,52 @@ async function viewAndMaybeDelete(rl, pref) {
173
173
  /**
174
174
  * Run the interactive preferences review. Returns true if anything was
175
175
  * changed (added, edited, or deleted).
176
+ *
177
+ * v5.9.3 redesign (Screen 9):
178
+ * - Header() + breadcrumb with `N stored` suffix.
179
+ * - Two source dots: ● (filled, accent) = gnosys-native, ○ (hollow,
180
+ * text-dim) = imported/unknown (collapsed from 3 source colors per
181
+ * design §9.1).
182
+ * - Footer atom for the action hint.
183
+ * - One preview line per row, no truncation marker.
176
184
  */
177
185
  export async function runPreferencesReview(rl) {
186
+ const { Header } = await import("../ui/header.js");
187
+ const { Footer } = await import("../ui/footer.js");
188
+ const { Status } = await import("../ui/status.js");
189
+ const { c, color, glyph } = await import("../ui/tokens.js");
178
190
  let anyChange = false;
179
191
  while (true) {
180
192
  const current = await listUserPreferences();
181
193
  console.log("");
182
- console.log(`${BOLD}User Preferences${RESET}`);
194
+ console.log(Header(["gnosys", "setup", "preferences"], { version: `${current.length} stored` }));
195
+ console.log("");
183
196
  if (current.length === 0) {
184
- console.log(`${DIM}No preferences set. Pick [N] to add one.${RESET}`);
197
+ console.log(` ${color(c.text, "User preferences")}`);
198
+ console.log(` ${color(c.textMid, "things you've told gnosys to remember about how you work")}`);
199
+ console.log("");
200
+ console.log(` ${color(c.textDim, "nothing stored yet.")}`);
185
201
  }
186
202
  else {
187
203
  current.forEach((p, i) => {
188
- const tag = p.source === "imported"
189
- ? `${YELLOW}imported${RESET}`
190
- : p.source === "gnosys-native"
191
- ? `${GREEN}native${RESET}`
192
- : `${YELLOW}unknown${RESET}`;
193
- const preview = p.value.replace(/\s+/g, " ").trim().slice(0, 60);
194
- console.log(` ${i + 1}. [${tag}] ${BOLD}${p.key}${RESET} — ${p.title}`);
195
- console.log(` ${DIM}${preview}${preview.length === 60 ? "..." : ""}${RESET}`);
204
+ const isNative = p.source === "gnosys-native";
205
+ const dot = isNative ? color(c.accent, glyph.dotFilled) : color(c.textDim, glyph.dotHollow);
206
+ const num = color(c.textDim, String(i + 1).padStart(2, " "));
207
+ const key = color(c.text, p.key.padEnd(14));
208
+ // Hard-truncate at col 80 without a marker per design §9.2.
209
+ const preview = p.value.replace(/\s+/g, " ").trim();
210
+ const previewColored = color(c.textMid, preview);
211
+ console.log(` ${num} ${dot} ${key} ${previewColored}`);
196
212
  });
213
+ console.log("");
214
+ console.log(` ${color(c.accent, glyph.dotFilled)} ${color(c.textDim, "added by you")} ${color(c.textDim, glyph.dotHollow)} ${color(c.textDim, "imported / unknown")}`);
197
215
  }
198
216
  console.log("");
199
- console.log(` [${BOLD}N${RESET}]ew · [${BOLD}1-${current.length || "N"}${RESET}] view/delete · [${BOLD}B${RESET}]ack`);
200
- const answer = (await rl.question("> ")).trim().toLowerCase();
217
+ const hint = current.length === 0
218
+ ? "n · new b · back"
219
+ : `1–${current.length} · open n · new b · back`;
220
+ console.log(Footer(hint));
221
+ const answer = (await safeQuestion(rl, ` ${color(c.accent, glyph.prompt)} `)).trim().toLowerCase();
201
222
  if (!answer || answer === "b" || answer === "back")
202
223
  return anyChange;
203
224
  if (answer === "n" || answer === "new") {
@@ -207,7 +228,7 @@ export async function runPreferencesReview(rl) {
207
228
  }
208
229
  const idx = parseInt(answer, 10) - 1;
209
230
  if (Number.isNaN(idx) || idx < 0 || idx >= current.length) {
210
- console.log(`${DIM}Unknown choice: ${answer}${RESET}`);
231
+ console.log(Status("warn", `unknown choice: ${answer}`));
211
232
  continue;
212
233
  }
213
234
  if (await viewAndMaybeDelete(rl, current[idx]))
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/preferences.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/preferences.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,6 @@
7
7
  * directly via `gnosys setup routing` or from the summary-first menu.
8
8
  */
9
9
  import { Interface as ReadlineInterface } from "readline/promises";
10
- export declare const TASK_DESCRIPTIONS: Record<string, string>;
11
10
  export interface RoutingOptions {
12
11
  rl: ReadlineInterface;
13
12
  directory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../../src/lib/setup/sections/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAgBnE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQpD,CAAC;AAKF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,iBAAiB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AA8DD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CA+F5E"}
1
+ {"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../../src/lib/setup/sections/routing.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA4BnE,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,iBAAiB,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAsED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAsH5E"}
@@ -7,23 +7,17 @@
7
7
  * directly via `gnosys setup routing` or from the summary-first menu.
8
8
  */
9
9
  import { loadConfig, updateConfig, resolveTaskModel, getProviderModel, } from "../../config.js";
10
- const BOLD = "\x1b[1m";
10
+ import { safeQuestion } from "../ui/safePrompt.js";
11
+ import { Header } from "../ui/header.js";
12
+ import { Title } from "../ui/title.js";
13
+ import { Footer } from "../ui/footer.js";
14
+ import { printStatus } from "../ui/status.js";
15
+ import { classifyCost, renderRoutingTable, renderRoutingDiff, } from "../routingRender.js";
11
16
  const DIM = "\x1b[2m";
12
- const GREEN = "\x1b[32m";
13
17
  const RESET = "\x1b[0m";
14
- const CHECK = `${GREEN}✓${RESET}`;
15
- export const TASK_DESCRIPTIONS = {
16
- structuring: "adding memories, tagging",
17
- synthesis: "Q&A answers, ask",
18
- // v5.8.0 (#2): chat is its own task — was lumped under synthesis before.
19
- chat: "interactive chat TUI",
20
- vision: "images, PDFs",
21
- transcription: "audio files",
22
- dream: "idle consolidation",
23
- };
24
18
  const TASKS = ["structuring", "synthesis", "chat", "vision", "transcription"];
25
19
  async function ask(rl, prompt) {
26
- return (await rl.question(prompt)).trim();
20
+ return (await safeQuestion(rl, prompt)).trim();
27
21
  }
28
22
  async function askYesNo(rl, prompt, defaultYes) {
29
23
  const hint = defaultYes ? " [Y/n] " : " [y/N] ";
@@ -63,18 +57,22 @@ function buildEffectiveRouting(cfg) {
63
57
  };
64
58
  return out;
65
59
  }
66
- function printTable(routing, dreamEnabled) {
67
- const taskNameWidth = 16;
68
- const routingWidth = 38;
69
- console.log(` ${BOLD}${"Task".padEnd(taskNameWidth)}${"Current Routing".padEnd(routingWidth)}${RESET}`);
70
- console.log(` ${"─".repeat(taskNameWidth + routingWidth)}`);
60
+ /**
61
+ * Build the table-row payload from current routing data. Marks any
62
+ * task whose effective provider/model differs from the snapshot as
63
+ * `changed` so the renderer can highlight it (▶ in accent-hi).
64
+ */
65
+ function buildTaskRows(routing, baseline, dreamEnabled) {
66
+ const rows = [];
71
67
  for (const t of [...TASKS, "dream"]) {
72
68
  const r = routing[t];
73
- const desc = TASK_DESCRIPTIONS[t] ?? "";
74
- const status = t === "dream" && !dreamEnabled ? `${DIM}(disabled)${RESET}` : `${DIM}(${desc})${RESET}`;
75
- console.log(` ${t.padEnd(taskNameWidth)}${`${r.provider} / ${r.model}`.padEnd(routingWidth)}${status}`);
69
+ const uses = `${r.provider} / ${r.model}`;
70
+ const cost = t === "dream" && !dreamEnabled ? "free" : classifyCost(r.provider, r.model);
71
+ const base = baseline[t];
72
+ const changed = !base || base.provider !== r.provider || base.model !== r.model;
73
+ rows.push({ task: t, uses, cost, changed });
76
74
  }
77
- console.log("");
75
+ return rows;
78
76
  }
79
77
  /**
80
78
  * Run the task-routing wizard. Reads current config, walks the 3-way choice
@@ -86,14 +84,16 @@ export async function runRoutingSetup(opts) {
86
84
  const provider = cfg.llm.defaultProvider;
87
85
  const model = getProviderModel(cfg, provider);
88
86
  console.log("");
89
- console.log(`${BOLD}Task Routing${RESET}`);
87
+ console.log(Header(["gnosys", "setup", "routing"]));
90
88
  console.log("");
91
- console.log(`Each task can use a different LLM. Defaults flow from your provider`);
92
- console.log(`(${BOLD}${provider} / ${model}${RESET}). Override per-task or keep defaults.`);
89
+ console.log(Title("Task routing", "each task can use a different model overrides the default"));
93
90
  console.log("");
94
91
  const dreamEnabled = !!cfg.dream?.enabled;
95
- const routing = buildEffectiveRouting(cfg);
96
- printTable(routing, dreamEnabled);
92
+ const baseline = buildEffectiveRouting(cfg);
93
+ // Initial table: nothing has changed yet, so every row is `changed: false`.
94
+ const initialRows = buildTaskRows(baseline, baseline, dreamEnabled);
95
+ console.log(renderRoutingTable(initialRows));
96
+ console.log("");
97
97
  const choice = await askChoice(opts.rl, "What would you like to do?", [
98
98
  `Keep defaults (all tasks use ${provider})`,
99
99
  "Customize individual tasks",
@@ -112,7 +112,7 @@ export async function runRoutingSetup(opts) {
112
112
  if (choice === 1) {
113
113
  // Customize each task
114
114
  for (const t of TASKS) {
115
- const current = routing[t];
115
+ const current = baseline[t];
116
116
  const keep = await askYesNo(opts.rl, `Keep ${t} → ${current.provider} / ${current.model}?`, true);
117
117
  if (!keep) {
118
118
  const p = await ask(opts.rl, ` Provider for ${t} (e.g. anthropic, openai, xai, ollama): `);
@@ -155,8 +155,28 @@ export async function runRoutingSetup(opts) {
155
155
  model: dreamModel,
156
156
  },
157
157
  });
158
+ // v5.9.3 Screen 4 — re-render the table with `▶` markers on changed rows
159
+ // followed by a Diff() block summarizing what shipped. Then a final
160
+ // status line that names the saved file.
161
+ const updatedCfg = await loadConfig(opts.directory);
162
+ const updatedRouting = buildEffectiveRouting(updatedCfg);
163
+ const finalRows = buildTaskRows(updatedRouting, baseline, dreamEnabledNew);
164
+ console.log("");
165
+ console.log(renderRoutingTable(finalRows));
166
+ console.log("");
167
+ const diffEntries = [];
168
+ for (const t of [...TASKS, "dream"]) {
169
+ const before = baseline[t];
170
+ const after = updatedRouting[t];
171
+ const fromStr = `${before.provider} / ${before.model}`;
172
+ const toStr = `${after.provider} / ${after.model}`;
173
+ diffEntries.push({ task: t, from: fromStr, to: toStr === fromStr ? null : toStr });
174
+ }
175
+ console.log(renderRoutingDiff(diffEntries));
158
176
  console.log("");
159
- console.log(`${CHECK} Task routing updated.`);
177
+ printStatus("ok", "routing saved", `${opts.directory}/.gnosys/gnosys.json`);
178
+ // Footer hint (right-aligned) for any follow-up navigation in the menu flow.
179
+ console.log(Footer("press enter to return"));
160
180
  return true;
161
181
  }
162
182
  //# sourceMappingURL=routing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/routing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/routing.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,56 @@
1
1
  /**
2
- * Setup summary-first wizard (v5.7.0).
2
+ * Setup summary-first wizard (v5.9.3 redesign).
3
3
  *
4
- * When the user runs `gnosys setup` and a config already exists, the first
5
- * screen is the current settings summary. The user picks a numbered option
6
- * to edit just that piece, returns to the summary with `✓ updated` next to
7
- * the changed line, and exits with `[D]one` (apply) or `[E]xit` (revert).
4
+ * When the user runs `gnosys setup` and a config already exists, the
5
+ * first screen is the current settings summary. The user picks a
6
+ * numbered option to edit just that piece, returns to the panel with
7
+ * `✓` next to the changed line for the rest of this sitting, and exits
8
+ * with `done` (Enter or `done`).
8
9
  *
9
- * Each section is a thin wrapper around the existing per-section function
10
- * in `setup.ts` (or a new section module). This file is the orchestrator
11
- * + summary screen it does not duplicate section logic.
10
+ * v5.9.3 changes:
11
+ * - Uses Phase A atoms: Header, Panel, Status, Footer, Prompt
12
+ * - Re-reads config from the ACTIVE store path (.gnosys/ if project
13
+ * scope, else ~/.gnosys/) before re-render — fixes the stale-display
14
+ * bug where switching provider via section 3 left the panel showing
15
+ * the old value because loadConfig was reading from project root
16
+ * rather than .gnosys/.
17
+ * - `[D]one` / `[E]xit` collapsed to single "done" action.
18
+ * - `maybeOfferProviderRepair` reworked to column-aligned detection
19
+ * block with no "pre-v5.8.4" history leak.
12
20
  */
13
21
  import { Interface as ReadlineInterface } from "readline/promises";
14
22
  import { type GnosysConfig } from "../config.js";
23
+ declare function resolveActiveStorePath(projectDir: string): string;
15
24
  /** Each summary line is a section the user can navigate into. */
16
25
  export interface SummarySection {
17
- /** Number key shown in the menu. */
18
26
  key: string;
19
- /** Label shown on the summary line (left side). */
20
27
  label: string;
21
- /** Current value — printed on the right side, dim. */
22
28
  describe: (cfg: GnosysConfig) => string | Promise<string>;
23
- /** Run when user picks this line. Returns true if a change was committed. */
24
29
  edit: (rl: ReadlineInterface, cfg: GnosysConfig, projectDir: string) => Promise<boolean>;
25
30
  }
31
+ export declare function buildSections(): SummarySection[];
26
32
  /**
27
- * Build the section list. Each `edit` calls into existing wizards via
28
- * dynamic import keeps this file decoupled from the legacy setup.ts.
33
+ * Render the panel body one menu-shaped row per section. Returns the
34
+ * row strings (already colored) ready to hand to Panel().
29
35
  */
30
- export declare function buildSections(): SummarySection[];
36
+ declare function renderPanelRows(cfg: GnosysConfig, sections: SummarySection[]): Promise<string[]>;
37
+ /**
38
+ * Build the `trailing` map of `✓` marks for sections edited this sitting.
39
+ */
40
+ declare function buildTrailingMap(updated: Set<string>, sections: SummarySection[]): Record<number, string>;
31
41
  export interface SummaryOptions {
32
- /** Project directory the wizard operates on (default: cwd). */
33
42
  directory?: string;
34
- /** Optional pre-existing readline; useful when caller is already prompting. */
35
43
  rl?: ReadlineInterface;
36
44
  }
37
45
  /**
38
- * Run the summary-first wizard. Loops until the user picks Done or Exit.
39
- * Returns `true` if any section was edited and committed.
46
+ * Run the summary-first wizard. Loops until the user picks "done"
47
+ * (Enter or `done`). Returns true if any section was edited.
40
48
  */
41
49
  export declare function runSummaryWizard(opts?: SummaryOptions): Promise<boolean>;
50
+ export declare const __test: {
51
+ resolveActiveStorePath: typeof resolveActiveStorePath;
52
+ renderPanelRows: typeof renderPanelRows;
53
+ buildTrailingMap: typeof buildTrailingMap;
54
+ };
55
+ export {};
42
56
  //# sourceMappingURL=summary.d.ts.map