gnosys 5.5.0 → 5.7.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.
Files changed (99) hide show
  1. package/README.md +44 -0
  2. package/dist/cli.js +959 -438
  3. package/dist/cli.js.map +1 -1
  4. package/dist/lib/audit.d.ts +13 -0
  5. package/dist/lib/audit.d.ts.map +1 -1
  6. package/dist/lib/audit.js +42 -0
  7. package/dist/lib/audit.js.map +1 -1
  8. package/dist/lib/chat/choose.d.ts +75 -0
  9. package/dist/lib/chat/choose.d.ts.map +1 -0
  10. package/dist/lib/chat/choose.js +146 -0
  11. package/dist/lib/chat/choose.js.map +1 -0
  12. package/dist/lib/chat/commands.d.ts +96 -0
  13. package/dist/lib/chat/commands.d.ts.map +1 -0
  14. package/dist/lib/chat/commands.js +367 -0
  15. package/dist/lib/chat/commands.js.map +1 -0
  16. package/dist/lib/chat/focus.d.ts +70 -0
  17. package/dist/lib/chat/focus.d.ts.map +1 -0
  18. package/dist/lib/chat/focus.js +120 -0
  19. package/dist/lib/chat/focus.js.map +1 -0
  20. package/dist/lib/chat/index.d.ts +32 -0
  21. package/dist/lib/chat/index.d.ts.map +1 -0
  22. package/dist/lib/chat/index.js +151 -0
  23. package/dist/lib/chat/index.js.map +1 -0
  24. package/dist/lib/chat/intent.d.ts +100 -0
  25. package/dist/lib/chat/intent.d.ts.map +1 -0
  26. package/dist/lib/chat/intent.js +192 -0
  27. package/dist/lib/chat/intent.js.map +1 -0
  28. package/dist/lib/chat/llmTurn.d.ts +55 -0
  29. package/dist/lib/chat/llmTurn.d.ts.map +1 -0
  30. package/dist/lib/chat/llmTurn.js +103 -0
  31. package/dist/lib/chat/llmTurn.js.map +1 -0
  32. package/dist/lib/chat/recall.d.ts +58 -0
  33. package/dist/lib/chat/recall.d.ts.map +1 -0
  34. package/dist/lib/chat/recall.js +109 -0
  35. package/dist/lib/chat/recall.js.map +1 -0
  36. package/dist/lib/chat/render.d.ts +30 -0
  37. package/dist/lib/chat/render.d.ts.map +1 -0
  38. package/dist/lib/chat/render.js +755 -0
  39. package/dist/lib/chat/render.js.map +1 -0
  40. package/dist/lib/chat/session.d.ts +121 -0
  41. package/dist/lib/chat/session.d.ts.map +1 -0
  42. package/dist/lib/chat/session.js +148 -0
  43. package/dist/lib/chat/session.js.map +1 -0
  44. package/dist/lib/chat/toolFence.d.ts +54 -0
  45. package/dist/lib/chat/toolFence.d.ts.map +1 -0
  46. package/dist/lib/chat/toolFence.js +90 -0
  47. package/dist/lib/chat/toolFence.js.map +1 -0
  48. package/dist/lib/chat/tools.d.ts +48 -0
  49. package/dist/lib/chat/tools.d.ts.map +1 -0
  50. package/dist/lib/chat/tools.js +338 -0
  51. package/dist/lib/chat/tools.js.map +1 -0
  52. package/dist/lib/chat/types.d.ts +42 -0
  53. package/dist/lib/chat/types.d.ts.map +1 -0
  54. package/dist/lib/chat/types.js +6 -0
  55. package/dist/lib/chat/types.js.map +1 -0
  56. package/dist/lib/chat/write.d.ts +66 -0
  57. package/dist/lib/chat/write.d.ts.map +1 -0
  58. package/dist/lib/chat/write.js +203 -0
  59. package/dist/lib/chat/write.js.map +1 -0
  60. package/dist/lib/db.d.ts +41 -1
  61. package/dist/lib/db.d.ts.map +1 -1
  62. package/dist/lib/db.js +136 -28
  63. package/dist/lib/db.js.map +1 -1
  64. package/dist/lib/exportProject.d.ts +51 -0
  65. package/dist/lib/exportProject.d.ts.map +1 -0
  66. package/dist/lib/exportProject.js +72 -0
  67. package/dist/lib/exportProject.js.map +1 -0
  68. package/dist/lib/importProject.d.ts +35 -0
  69. package/dist/lib/importProject.d.ts.map +1 -0
  70. package/dist/lib/importProject.js +135 -0
  71. package/dist/lib/importProject.js.map +1 -0
  72. package/dist/lib/remote.d.ts +23 -0
  73. package/dist/lib/remote.d.ts.map +1 -1
  74. package/dist/lib/remote.js +88 -0
  75. package/dist/lib/remote.js.map +1 -1
  76. package/dist/lib/remoteWizard.d.ts.map +1 -1
  77. package/dist/lib/remoteWizard.js +13 -17
  78. package/dist/lib/remoteWizard.js.map +1 -1
  79. package/dist/lib/setup/sections/ides.d.ts +20 -0
  80. package/dist/lib/setup/sections/ides.d.ts.map +1 -0
  81. package/dist/lib/setup/sections/ides.js +124 -0
  82. package/dist/lib/setup/sections/ides.js.map +1 -0
  83. package/dist/lib/setup/sections/preferences.d.ts +30 -0
  84. package/dist/lib/setup/sections/preferences.d.ts.map +1 -0
  85. package/dist/lib/setup/sections/preferences.js +128 -0
  86. package/dist/lib/setup/sections/preferences.js.map +1 -0
  87. package/dist/lib/setup/sections/routing.d.ts +21 -0
  88. package/dist/lib/setup/sections/routing.d.ts.map +1 -0
  89. package/dist/lib/setup/sections/routing.js +160 -0
  90. package/dist/lib/setup/sections/routing.js.map +1 -0
  91. package/dist/lib/setup/summary.d.ts +42 -0
  92. package/dist/lib/setup/summary.d.ts.map +1 -0
  93. package/dist/lib/setup/summary.js +206 -0
  94. package/dist/lib/setup/summary.js.map +1 -0
  95. package/dist/lib/timeline.d.ts +7 -0
  96. package/dist/lib/timeline.d.ts.map +1 -1
  97. package/dist/lib/timeline.js +19 -5
  98. package/dist/lib/timeline.js.map +1 -1
  99. package/package.json +7 -1
@@ -0,0 +1,160 @@
1
+ /**
2
+ * Setup: Task Routing.
3
+ *
4
+ * Standalone wizard for configuring per-task LLM routing
5
+ * (structuring / synthesis / vision / transcription / dream).
6
+ * Extracted from the linear `runSetup` flow so it can be invoked
7
+ * directly via `gnosys setup routing` or from the summary-first menu.
8
+ */
9
+ import { loadConfig, updateConfig, resolveTaskModel, getProviderModel, } from "../../config.js";
10
+ const BOLD = "\x1b[1m";
11
+ const DIM = "\x1b[2m";
12
+ const GREEN = "\x1b[32m";
13
+ const RESET = "\x1b[0m";
14
+ const CHECK = `${GREEN}✓${RESET}`;
15
+ export const TASK_DESCRIPTIONS = {
16
+ structuring: "adding memories, tagging",
17
+ synthesis: "Q&A answers, chat",
18
+ vision: "images, PDFs",
19
+ transcription: "audio files",
20
+ dream: "idle consolidation",
21
+ };
22
+ const TASKS = ["structuring", "synthesis", "vision", "transcription"];
23
+ async function ask(rl, prompt) {
24
+ return (await rl.question(prompt)).trim();
25
+ }
26
+ async function askYesNo(rl, prompt, defaultYes) {
27
+ const hint = defaultYes ? " [Y/n] " : " [y/N] ";
28
+ const answer = (await ask(rl, prompt + hint)).toLowerCase();
29
+ if (!answer)
30
+ return defaultYes;
31
+ return answer === "y" || answer === "yes";
32
+ }
33
+ async function askChoice(rl, prompt, choices, defaultIdx = 0) {
34
+ console.log("");
35
+ if (prompt)
36
+ console.log(prompt);
37
+ choices.forEach((c, i) => {
38
+ const marker = i === defaultIdx ? ` ${DIM}(default)${RESET}` : "";
39
+ console.log(` ${i + 1}. ${c}${marker}`);
40
+ });
41
+ for (let attempts = 0; attempts < 5; attempts++) {
42
+ const answer = await ask(rl, "> ");
43
+ if (!answer)
44
+ return defaultIdx;
45
+ const n = parseInt(answer, 10);
46
+ if (!Number.isNaN(n) && n >= 1 && n <= choices.length)
47
+ return n - 1;
48
+ console.log(`${DIM}Pick a number 1-${choices.length}${RESET}`);
49
+ }
50
+ return defaultIdx;
51
+ }
52
+ function buildEffectiveRouting(cfg) {
53
+ const out = {};
54
+ for (const t of TASKS) {
55
+ const r = resolveTaskModel(cfg, t);
56
+ out[t] = { provider: r.provider, model: r.model };
57
+ }
58
+ out.dream = {
59
+ provider: cfg.dream?.provider ?? "ollama",
60
+ model: cfg.dream?.model ?? getProviderModel(cfg, (cfg.dream?.provider ?? "ollama")),
61
+ };
62
+ return out;
63
+ }
64
+ function printTable(routing, dreamEnabled) {
65
+ const taskNameWidth = 16;
66
+ const routingWidth = 38;
67
+ console.log(` ${BOLD}${"Task".padEnd(taskNameWidth)}${"Current Routing".padEnd(routingWidth)}${RESET}`);
68
+ console.log(` ${"─".repeat(taskNameWidth + routingWidth)}`);
69
+ for (const t of [...TASKS, "dream"]) {
70
+ const r = routing[t];
71
+ const desc = TASK_DESCRIPTIONS[t] ?? "";
72
+ const status = t === "dream" && !dreamEnabled ? `${DIM}(disabled)${RESET}` : `${DIM}(${desc})${RESET}`;
73
+ console.log(` ${t.padEnd(taskNameWidth)}${`${r.provider} / ${r.model}`.padEnd(routingWidth)}${status}`);
74
+ }
75
+ console.log("");
76
+ }
77
+ /**
78
+ * Run the task-routing wizard. Reads current config, walks the 3-way choice
79
+ * (keep defaults / customize individual / use same for all), writes any
80
+ * overrides via updateConfig(). Returns true if config was changed.
81
+ */
82
+ export async function runRoutingSetup(opts) {
83
+ const cfg = await loadConfig(opts.directory);
84
+ const provider = cfg.llm.defaultProvider;
85
+ const model = getProviderModel(cfg, provider);
86
+ console.log("");
87
+ console.log(`${BOLD}Task Routing${RESET}`);
88
+ console.log("");
89
+ console.log(`Each task can use a different LLM. Defaults flow from your provider`);
90
+ console.log(`(${BOLD}${provider} / ${model}${RESET}). Override per-task or keep defaults.`);
91
+ console.log("");
92
+ const dreamEnabled = !!cfg.dream?.enabled;
93
+ const routing = buildEffectiveRouting(cfg);
94
+ printTable(routing, dreamEnabled);
95
+ const choice = await askChoice(opts.rl, "What would you like to do?", [
96
+ `Keep defaults (all tasks use ${provider})`,
97
+ "Customize individual tasks",
98
+ "Use same provider for ALL tasks (including dream)",
99
+ ], 0);
100
+ if (choice === 0) {
101
+ console.log(`${DIM}No changes.${RESET}`);
102
+ return false;
103
+ }
104
+ const newTaskModels = {
105
+ ...(cfg.taskModels ?? {}),
106
+ };
107
+ let dreamProvider = (cfg.dream?.provider ?? "ollama");
108
+ let dreamModel = cfg.dream?.model ?? "llama3.2";
109
+ let dreamEnabledNew = dreamEnabled;
110
+ if (choice === 1) {
111
+ // Customize each task
112
+ for (const t of TASKS) {
113
+ const current = routing[t];
114
+ const keep = await askYesNo(opts.rl, `Keep ${t} → ${current.provider} / ${current.model}?`, true);
115
+ if (!keep) {
116
+ const p = await ask(opts.rl, ` Provider for ${t} (e.g. anthropic, openai, xai, ollama): `);
117
+ const m = await ask(opts.rl, ` Model for ${t}: `);
118
+ if (p && m)
119
+ newTaskModels[t] = { provider: p, model: m };
120
+ }
121
+ }
122
+ // Dream
123
+ dreamEnabledNew = await askYesNo(opts.rl, "Enable dream mode?", dreamEnabled);
124
+ if (dreamEnabledNew) {
125
+ const keepDream = await askYesNo(opts.rl, `Keep dream → ${dreamProvider} / ${dreamModel}?`, true);
126
+ if (!keepDream) {
127
+ const p = (await ask(opts.rl, " Provider for dream: "));
128
+ if (p)
129
+ dreamProvider = p;
130
+ dreamModel = (await ask(opts.rl, " Model for dream: ")) || dreamModel;
131
+ }
132
+ }
133
+ }
134
+ else {
135
+ // choice === 2: use same provider for everything
136
+ for (const t of TASKS) {
137
+ newTaskModels[t] = { provider, model };
138
+ }
139
+ dreamEnabledNew = await askYesNo(opts.rl, `Enable dream with ${provider}?`, true);
140
+ if (dreamEnabledNew) {
141
+ dreamProvider = provider;
142
+ dreamModel = model;
143
+ }
144
+ }
145
+ // Persist
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
+ await updateConfig(opts.directory, {
148
+ taskModels: newTaskModels,
149
+ dream: {
150
+ ...(cfg.dream ?? {}),
151
+ enabled: dreamEnabledNew,
152
+ provider: dreamProvider,
153
+ model: dreamModel,
154
+ },
155
+ });
156
+ console.log("");
157
+ console.log(`${CHECK} Task routing updated.`);
158
+ return true;
159
+ }
160
+ //# sourceMappingURL=routing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing.js","sourceRoot":"","sources":["../../../../src/lib/setup/sections/routing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Setup summary-first wizard (v5.7.0).
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).
8
+ *
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.
12
+ */
13
+ import { Interface as ReadlineInterface } from "readline/promises";
14
+ import { type GnosysConfig } from "../config.js";
15
+ /** Each summary line is a section the user can navigate into. */
16
+ export interface SummarySection {
17
+ /** Number key shown in the menu. */
18
+ key: string;
19
+ /** Label shown on the summary line (left side). */
20
+ label: string;
21
+ /** Current value — printed on the right side, dim. */
22
+ describe: (cfg: GnosysConfig) => string | Promise<string>;
23
+ /** Run when user picks this line. Returns true if a change was committed. */
24
+ edit: (rl: ReadlineInterface, cfg: GnosysConfig, projectDir: string) => Promise<boolean>;
25
+ }
26
+ /**
27
+ * Build the section list. Each `edit` calls into existing wizards via
28
+ * dynamic import — keeps this file decoupled from the legacy setup.ts.
29
+ */
30
+ export declare function buildSections(): SummarySection[];
31
+ export interface SummaryOptions {
32
+ /** Project directory the wizard operates on (default: cwd). */
33
+ directory?: string;
34
+ /** Optional pre-existing readline; useful when caller is already prompting. */
35
+ rl?: ReadlineInterface;
36
+ }
37
+ /**
38
+ * Run the summary-first wizard. Loops until the user picks Done or Exit.
39
+ * Returns `true` if any section was edited and committed.
40
+ */
41
+ export declare function runSummaryWizard(opts?: SummaryOptions): Promise<boolean>;
42
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAmB,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAYtB,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,IAAI,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAmGhD;AAqBD,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,EAAE,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CA4DlF"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Setup summary-first wizard (v5.7.0).
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).
8
+ *
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.
12
+ */
13
+ import { createInterface } from "readline/promises";
14
+ import { stdin, stdout } from "process";
15
+ import { loadConfig, resolveTaskModel, } from "../config.js";
16
+ import { GnosysDB } from "../db.js";
17
+ // ─── ANSI ───────────────────────────────────────────────────────────────────
18
+ const BOLD = "\x1b[1m";
19
+ const DIM = "\x1b[2m";
20
+ const GREEN = "\x1b[32m";
21
+ const RESET = "\x1b[0m";
22
+ const CHECK = `${GREEN}✓${RESET}`;
23
+ /**
24
+ * Build the section list. Each `edit` calls into existing wizards via
25
+ * dynamic import — keeps this file decoupled from the legacy setup.ts.
26
+ */
27
+ export function buildSections() {
28
+ return [
29
+ {
30
+ key: "1",
31
+ label: "Provider",
32
+ describe: (cfg) => cfg.llm.defaultProvider,
33
+ edit: async (_rl, _cfg, projectDir) => {
34
+ const { runModelsSetup } = await import("../setup.js");
35
+ await runModelsSetup({ directory: projectDir });
36
+ return true;
37
+ },
38
+ },
39
+ {
40
+ key: "2",
41
+ label: "Models",
42
+ describe: async (cfg) => {
43
+ const synth = resolveTaskModel(cfg, "synthesis");
44
+ return `${synth.provider} / ${synth.model}`;
45
+ },
46
+ edit: async (_rl, _cfg, projectDir) => {
47
+ const { runModelsSetup } = await import("../setup.js");
48
+ await runModelsSetup({ directory: projectDir });
49
+ return true;
50
+ },
51
+ },
52
+ {
53
+ key: "3",
54
+ label: "Task Routing",
55
+ describe: async (cfg) => {
56
+ const provs = new Set([
57
+ resolveTaskModel(cfg, "structuring").provider,
58
+ resolveTaskModel(cfg, "synthesis").provider,
59
+ ]);
60
+ return provs.size === 1 ? `all ${[...provs][0]}` : `mixed (${[...provs].join(", ")})`;
61
+ },
62
+ edit: async (rl, _cfg, projectDir) => editRouting(rl, projectDir),
63
+ },
64
+ {
65
+ key: "4",
66
+ label: "IDE Integrations",
67
+ describe: async (_cfg) => {
68
+ const { detectIDEs } = await import("../setup.js");
69
+ const ides = await detectIDEs(process.cwd());
70
+ return ides.length === 0 ? "none" : `${ides.length} configured`;
71
+ },
72
+ edit: async (rl, _cfg, projectDir) => editIDEs(rl, projectDir),
73
+ },
74
+ {
75
+ key: "5",
76
+ label: "Multi-machine Sync",
77
+ describe: () => {
78
+ try {
79
+ const db = GnosysDB.openLocal();
80
+ const remotePath = db.getMeta("remote_path");
81
+ db.close();
82
+ return remotePath ?? "not configured";
83
+ }
84
+ catch {
85
+ return "not configured";
86
+ }
87
+ },
88
+ edit: async (rl) => {
89
+ const { runConfigureWizard } = await import("../remoteWizard.js");
90
+ const centralDb = GnosysDB.openLocal();
91
+ try {
92
+ return await runConfigureWizard(centralDb, rl);
93
+ }
94
+ finally {
95
+ centralDb.close();
96
+ }
97
+ },
98
+ },
99
+ {
100
+ key: "6",
101
+ label: "Dream Mode",
102
+ describe: (cfg) => {
103
+ if (!cfg.dream?.enabled)
104
+ return "disabled";
105
+ const provider = cfg.dream.provider ?? "ollama";
106
+ const model = cfg.dream.model ?? "default";
107
+ return `${provider} / ${model}`;
108
+ },
109
+ edit: async (_rl, _cfg, projectDir) => {
110
+ const { runDreamSetup } = await import("../setup.js");
111
+ await runDreamSetup({ directory: projectDir });
112
+ return true;
113
+ },
114
+ },
115
+ {
116
+ key: "7",
117
+ label: "User Preferences",
118
+ describe: async () => {
119
+ const { listUserPreferences } = await import("./sections/preferences.js");
120
+ const prefs = await listUserPreferences();
121
+ return `${prefs.length} stored`;
122
+ },
123
+ edit: async (rl) => {
124
+ const { runPreferencesReview } = await import("./sections/preferences.js");
125
+ return runPreferencesReview(rl);
126
+ },
127
+ },
128
+ ];
129
+ }
130
+ // ─── Section editors that don't yet have standalone wizards ────────────────
131
+ /**
132
+ * Per-task routing editor. The legacy `runSetup` walks all 5 tasks in step 4
133
+ * — this lets the user revisit the choice without redoing provider/models.
134
+ */
135
+ async function editRouting(rl, projectDir) {
136
+ const { runRoutingSetup } = await import("./sections/routing.js");
137
+ return runRoutingSetup({ rl, directory: projectDir });
138
+ }
139
+ /** IDE selection editor — same prompt as step 5 in the linear wizard. */
140
+ async function editIDEs(rl, projectDir) {
141
+ const { runIdesSetup } = await import("./sections/ides.js");
142
+ return runIdesSetup({ rl, directory: projectDir });
143
+ }
144
+ /**
145
+ * Run the summary-first wizard. Loops until the user picks Done or Exit.
146
+ * Returns `true` if any section was edited and committed.
147
+ */
148
+ export async function runSummaryWizard(opts = {}) {
149
+ const projectDir = opts.directory ?? process.cwd();
150
+ const ownsRl = !opts.rl;
151
+ const rl = opts.rl ?? createInterface({ input: stdin, output: stdout });
152
+ const sections = buildSections();
153
+ const updated = new Set();
154
+ let anyChange = false;
155
+ try {
156
+ while (true) {
157
+ // Reload config each iteration so the displayed values reflect any
158
+ // section edit that just happened.
159
+ const cfg = await loadConfig(projectDir);
160
+ console.log("");
161
+ console.log(`${BOLD}┌─────────────────────────────────────────────┐${RESET}`);
162
+ console.log(`${BOLD}│ Gnosys Settings │${RESET}`);
163
+ console.log(`${BOLD}├─────────────────────────────────────────────┤${RESET}`);
164
+ for (const s of sections) {
165
+ const value = await s.describe(cfg);
166
+ const marker = updated.has(s.key) ? ` ${CHECK}` : " ";
167
+ const line = ` ${s.key}. ${s.label.padEnd(18)} ${DIM}${value}${RESET}${marker}`;
168
+ console.log(line);
169
+ }
170
+ console.log(`${BOLD}└─────────────────────────────────────────────┘${RESET}`);
171
+ console.log("");
172
+ console.log(` Pick a number to edit · ${BOLD}D${RESET}one · ${BOLD}E${RESET}xit`);
173
+ const answer = (await rl.question("> ")).trim().toLowerCase();
174
+ if (!answer || answer === "d" || answer === "done") {
175
+ return anyChange;
176
+ }
177
+ if (answer === "e" || answer === "exit") {
178
+ if (anyChange) {
179
+ console.log(`${DIM}(any changes already committed during section edits stay applied)${RESET}`);
180
+ }
181
+ return anyChange;
182
+ }
183
+ const section = sections.find((s) => s.key === answer);
184
+ if (!section) {
185
+ console.log(`${DIM}Unknown choice: ${answer}${RESET}`);
186
+ continue;
187
+ }
188
+ const cfgForEdit = await loadConfig(projectDir);
189
+ try {
190
+ const changed = await section.edit(rl, cfgForEdit, projectDir);
191
+ if (changed) {
192
+ updated.add(section.key);
193
+ anyChange = true;
194
+ }
195
+ }
196
+ catch (err) {
197
+ console.log(`${DIM}Section editor failed: ${err instanceof Error ? err.message : String(err)}${RESET}`);
198
+ }
199
+ }
200
+ }
201
+ finally {
202
+ if (ownsRl)
203
+ rl.close();
204
+ }
205
+ }
206
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@
5
5
  * Compute summary statistics across the store.
6
6
  */
7
7
  import { Memory } from "./store.js";
8
+ import { DbMemory } from "./db.js";
8
9
  export type TimePeriod = "day" | "week" | "month" | "year";
9
10
  export interface TimelineEntry {
10
11
  period: string;
@@ -27,6 +28,12 @@ export interface MemoryStats {
27
28
  * Group memories by time period based on their created/modified dates.
28
29
  */
29
30
  export declare function groupByPeriod(memories: Memory[], period: TimePeriod): TimelineEntry[];
31
+ /**
32
+ * v5.7.0: same logic, runs against DbMemory rows from the central DB.
33
+ * The legacy file-based path (above) reads from `Memory` objects which
34
+ * are mostly empty post-DB-only — most callers should use this variant.
35
+ */
36
+ export declare function groupDbByPeriod(memories: DbMemory[], period: TimePeriod): TimelineEntry[];
30
37
  /**
31
38
  * Compute summary statistics across all memories.
32
39
  */
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/lib/timeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,EAAE,CAkCrF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAmC5D"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../src/lib/timeline.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,EAAE,CASrF;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,EAAE,CAKzF;AA2CD;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,WAAW,CAmC5D"}
@@ -8,22 +8,36 @@
8
8
  * Group memories by time period based on their created/modified dates.
9
9
  */
10
10
  export function groupByPeriod(memories, period) {
11
+ return groupRowsByPeriod(memories.map((m) => ({
12
+ title: m.frontmatter.title,
13
+ created: m.frontmatter.created,
14
+ modified: m.frontmatter.modified,
15
+ })), period);
16
+ }
17
+ /**
18
+ * v5.7.0: same logic, runs against DbMemory rows from the central DB.
19
+ * The legacy file-based path (above) reads from `Memory` objects which
20
+ * are mostly empty post-DB-only — most callers should use this variant.
21
+ */
22
+ export function groupDbByPeriod(memories, period) {
23
+ return groupRowsByPeriod(memories.map((m) => ({ title: m.title, created: m.created, modified: m.modified })), period);
24
+ }
25
+ function groupRowsByPeriod(rows, period) {
11
26
  const createdMap = new Map();
12
27
  const modifiedMap = new Map();
13
- for (const m of memories) {
14
- const createdKey = toPeriodKey(m.frontmatter.created, period);
28
+ for (const m of rows) {
29
+ const createdKey = toPeriodKey(m.created, period);
15
30
  if (createdKey) {
16
31
  const entry = createdMap.get(createdKey) || { count: 0, titles: [] };
17
32
  entry.count++;
18
- entry.titles.push(m.frontmatter.title);
33
+ entry.titles.push(m.title);
19
34
  createdMap.set(createdKey, entry);
20
35
  }
21
- const modifiedKey = toPeriodKey(m.frontmatter.modified, period);
36
+ const modifiedKey = toPeriodKey(m.modified, period);
22
37
  if (modifiedKey && modifiedKey !== createdKey) {
23
38
  modifiedMap.set(modifiedKey, (modifiedMap.get(modifiedKey) || 0) + 1);
24
39
  }
25
40
  }
26
- // Merge all period keys
27
41
  const allKeys = new Set([...createdMap.keys(), ...modifiedMap.keys()]);
28
42
  const entries = [];
29
43
  for (const key of allKeys) {
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/lib/timeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timeline.js","sourceRoot":"","sources":["../../src/lib/timeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gnosys",
3
- "version": "5.5.0",
3
+ "version": "5.7.0",
4
4
  "description": "Gnosys — Persistent Memory for AI Agents. Sandbox-first runtime, central SQLite brain, federated search, Dream Mode, Web Knowledge Base, Obsidian export.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -37,8 +37,13 @@
37
37
  "dotenv": "^17.3.1",
38
38
  "glob": "^13.0.6",
39
39
  "gray-matter": "^4.0.3",
40
+ "ink": "^7.0.1",
41
+ "ink-select-input": "^6.2.0",
42
+ "ink-spinner": "^5.0.0",
43
+ "ink-text-input": "^6.0.0",
40
44
  "mammoth": "^1.12.0",
41
45
  "pdf-parse": "^2.4.5",
46
+ "react": "^19.2.5",
42
47
  "turndown": "^7.2.2",
43
48
  "ulidx": "^2.4.1",
44
49
  "zod": "^4.3.6"
@@ -46,6 +51,7 @@
46
51
  "devDependencies": {
47
52
  "@types/better-sqlite3": "^7.6.12",
48
53
  "@types/node": "^22.10.0",
54
+ "@types/react": "^19.2.14",
49
55
  "@types/turndown": "^5.0.6",
50
56
  "@vitest/coverage-v8": "^4.1.0",
51
57
  "tsx": "^4.19.0",