beecork 0.1.1 → 0.2.2

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 (53) hide show
  1. package/dist/cli/setup.d.ts.map +1 -1
  2. package/dist/cli/setup.js +73 -2
  3. package/dist/cli/setup.js.map +1 -1
  4. package/dist/config.d.ts.map +1 -1
  5. package/dist/config.js +14 -0
  6. package/dist/config.js.map +1 -1
  7. package/dist/cron/scheduler.d.ts +1 -0
  8. package/dist/cron/scheduler.d.ts.map +1 -1
  9. package/dist/cron/scheduler.js +43 -2
  10. package/dist/cron/scheduler.js.map +1 -1
  11. package/dist/cron/store.d.ts.map +1 -1
  12. package/dist/cron/store.js +1 -0
  13. package/dist/cron/store.js.map +1 -1
  14. package/dist/daemon.js +15 -17
  15. package/dist/daemon.js.map +1 -1
  16. package/dist/db/migrations.d.ts.map +1 -1
  17. package/dist/db/migrations.js +49 -0
  18. package/dist/db/migrations.js.map +1 -1
  19. package/dist/mcp/server.js +44 -43
  20. package/dist/mcp/server.js.map +1 -1
  21. package/dist/pipe/anthropic-client.d.ts +13 -0
  22. package/dist/pipe/anthropic-client.d.ts.map +1 -0
  23. package/dist/pipe/anthropic-client.js +94 -0
  24. package/dist/pipe/anthropic-client.js.map +1 -0
  25. package/dist/pipe/brain.d.ts +23 -0
  26. package/dist/pipe/brain.d.ts.map +1 -0
  27. package/dist/pipe/brain.js +162 -0
  28. package/dist/pipe/brain.js.map +1 -0
  29. package/dist/pipe/memory-store.d.ts +16 -0
  30. package/dist/pipe/memory-store.d.ts.map +1 -0
  31. package/dist/pipe/memory-store.js +79 -0
  32. package/dist/pipe/memory-store.js.map +1 -0
  33. package/dist/pipe/project-scanner.d.ts +4 -0
  34. package/dist/pipe/project-scanner.d.ts.map +1 -0
  35. package/dist/pipe/project-scanner.js +96 -0
  36. package/dist/pipe/project-scanner.js.map +1 -0
  37. package/dist/pipe/types.d.ts +74 -0
  38. package/dist/pipe/types.d.ts.map +1 -0
  39. package/dist/pipe/types.js +2 -0
  40. package/dist/pipe/types.js.map +1 -0
  41. package/dist/session/manager.d.ts.map +1 -1
  42. package/dist/session/manager.js +25 -1
  43. package/dist/session/manager.js.map +1 -1
  44. package/dist/session/subprocess.d.ts.map +1 -1
  45. package/dist/session/subprocess.js +24 -0
  46. package/dist/session/subprocess.js.map +1 -1
  47. package/dist/telegram/bot.d.ts +3 -1
  48. package/dist/telegram/bot.d.ts.map +1 -1
  49. package/dist/telegram/bot.js +69 -8
  50. package/dist/telegram/bot.js.map +1 -1
  51. package/dist/types.d.ts +17 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +5 -4
@@ -11,7 +11,6 @@ import os from 'node:os';
11
11
  // It communicates with the daemon via shared SQLite + signal files.
12
12
  const BEECORK_HOME = process.env.BEECORK_HOME || path.join(os.homedir(), '.beecork');
13
13
  const DB_PATH = path.join(BEECORK_HOME, 'memory.db');
14
- const CRONTAB_PATH = path.join(BEECORK_HOME, 'crontab.json');
15
14
  const CRON_RELOAD_SIGNAL = path.join(BEECORK_HOME, '.cron-reload');
16
15
  function getDb() {
17
16
  const db = new Database(DB_PATH);
@@ -19,15 +18,7 @@ function getDb() {
19
18
  db.pragma('foreign_keys = ON');
20
19
  return db;
21
20
  }
22
- function loadCrontab() {
23
- if (!fs.existsSync(CRONTAB_PATH)) {
24
- return { jobs: [] };
25
- }
26
- return JSON.parse(fs.readFileSync(CRONTAB_PATH, 'utf-8'));
27
- }
28
- function saveCrontab(data) {
29
- fs.writeFileSync(CRONTAB_PATH, JSON.stringify(data, null, 2) + '\n');
30
- // Signal the daemon to reload cron schedules
21
+ function signalCronReload() {
31
22
  fs.writeFileSync(CRON_RELOAD_SIGNAL, String(Date.now()));
32
23
  }
33
24
  const server = new Server({ name: 'beecork', version: '0.1.0' }, { capabilities: { tools: {} } });
@@ -40,6 +31,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
40
31
  type: 'object',
41
32
  properties: {
42
33
  content: { type: 'string', description: 'The fact or information to remember' },
34
+ category: { type: 'string', description: 'Optional category for organizing memories (e.g., "preference", "server", "decision")' },
43
35
  },
44
36
  required: ['content'],
45
37
  },
@@ -133,6 +125,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
133
125
  type: 'object',
134
126
  properties: {
135
127
  message: { type: 'string', description: 'The notification message to send' },
128
+ urgent: { type: 'boolean', description: 'If true, sends with higher priority (default: false)' },
136
129
  },
137
130
  required: ['message'],
138
131
  },
@@ -151,11 +144,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
151
144
  const { name, arguments: args } = request.params;
152
145
  switch (name) {
153
146
  case 'beecork_remember': {
154
- const content = args.content;
147
+ const { content, category } = args;
155
148
  const db = getDb();
156
149
  try {
157
- db.prepare('INSERT INTO memories (content, source) VALUES (?, ?)').run(content, 'tool');
158
- return { content: [{ type: 'text', text: `Remembered: "${content}"` }] };
150
+ const fullContent = category ? `[${category}] ${content}` : content;
151
+ db.prepare('INSERT INTO memories (content, source) VALUES (?, ?)').run(fullContent, 'tool');
152
+ return { content: [{ type: 'text', text: `Remembered: "${fullContent}"` }] };
159
153
  }
160
154
  finally {
161
155
  db.close();
@@ -163,41 +157,47 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
163
157
  }
164
158
  case 'beecork_cron_create': {
165
159
  const { name: jobName, scheduleType, schedule, message, tabName } = args;
166
- const crontab = loadCrontab();
167
- const job = {
168
- id: uuidv4(),
169
- name: jobName,
170
- scheduleType,
171
- schedule,
172
- tabName: tabName || 'default',
173
- message,
174
- enabled: true,
175
- createdAt: new Date().toISOString(),
176
- lastRunAt: null,
177
- nextRunAt: null,
178
- };
179
- crontab.jobs.push(job);
180
- saveCrontab(crontab);
181
- return { content: [{ type: 'text', text: `Cron job created: "${jobName}" (${scheduleType}: ${schedule}) → tab:${job.tabName}\nID: ${job.id}` }] };
160
+ const db = getDb();
161
+ try {
162
+ const id = uuidv4();
163
+ const tab = tabName || 'default';
164
+ db.prepare(`INSERT INTO cron_jobs (id, name, schedule_type, schedule, tab_name, message, enabled, user_id, created_at)
165
+ VALUES (?, ?, ?, ?, ?, ?, 1, 'local', ?)`).run(id, jobName, scheduleType, schedule, tab, message, new Date().toISOString());
166
+ signalCronReload();
167
+ return { content: [{ type: 'text', text: `Cron job created: "${jobName}" (${scheduleType}: ${schedule}) → tab:${tab}\nID: ${id}` }] };
168
+ }
169
+ finally {
170
+ db.close();
171
+ }
182
172
  }
183
173
  case 'beecork_cron_list': {
184
- const crontab = loadCrontab();
185
- if (crontab.jobs.length === 0) {
186
- return { content: [{ type: 'text', text: 'No cron jobs scheduled.' }] };
174
+ const db = getDb();
175
+ try {
176
+ const jobs = db.prepare('SELECT * FROM cron_jobs WHERE user_id = ? ORDER BY created_at').all('local');
177
+ if (jobs.length === 0) {
178
+ return { content: [{ type: 'text', text: 'No cron jobs scheduled.' }] };
179
+ }
180
+ const lines = jobs.map(j => `- ${j.name} [${j.enabled ? 'enabled' : 'disabled'}] (${j.schedule_type}: ${j.schedule}) → tab:${j.tab_name} (ID: ${j.id})`);
181
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
182
+ }
183
+ finally {
184
+ db.close();
187
185
  }
188
- const lines = crontab.jobs.map((j) => `- ${j.name} [${j.enabled ? 'enabled' : 'disabled'}] (${j.scheduleType}: ${j.schedule}) → tab:${j.tabName} (ID: ${j.id})`);
189
- return { content: [{ type: 'text', text: lines.join('\n') }] };
190
186
  }
191
187
  case 'beecork_cron_delete': {
192
188
  const { id } = args;
193
- const crontab = loadCrontab();
194
- const before = crontab.jobs.length;
195
- crontab.jobs = crontab.jobs.filter((j) => j.id !== id);
196
- if (crontab.jobs.length === before) {
197
- return { content: [{ type: 'text', text: `No cron job found with ID: ${id}` }] };
189
+ const db = getDb();
190
+ try {
191
+ const result = db.prepare('DELETE FROM cron_jobs WHERE id = ?').run(id);
192
+ if (result.changes === 0) {
193
+ return { content: [{ type: 'text', text: `No cron job found with ID: ${id}` }] };
194
+ }
195
+ signalCronReload();
196
+ return { content: [{ type: 'text', text: `Deleted cron job: ${id}` }] };
197
+ }
198
+ finally {
199
+ db.close();
198
200
  }
199
- saveCrontab(crontab);
200
- return { content: [{ type: 'text', text: `Deleted cron job: ${id}` }] };
201
201
  }
202
202
  case 'beecork_tab_create': {
203
203
  const { name: tabName, workingDir } = args;
@@ -261,10 +261,11 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
261
261
  }
262
262
  }
263
263
  case 'beecork_notify': {
264
- const { message } = args;
264
+ const { message, urgent } = args;
265
265
  const db = getDb();
266
266
  try {
267
- db.prepare("INSERT INTO pending_messages (tab_name, message, type) VALUES ('_notify', ?, 'notification')").run(message);
267
+ const prefix = urgent ? '🚨 ' : '';
268
+ db.prepare("INSERT INTO pending_messages (tab_name, message, type) VALUES ('_notify', ?, 'notification')").run(prefix + message);
268
269
  return { content: [{ type: 'text', text: `Notification sent to user.` }] };
269
270
  }
270
271
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,kEAAkE;AAClE,oEAAoE;AAEpE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACrF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAEnE,SAAS,KAAK;IACZ,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,gBAAgB;IACvB,EAAE,CAAC,aAAa,CAAC,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,EACrC,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAChC,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,EAAE;QACL;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,4KAA4K;YACzL,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;oBAC/E,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sFAAsF,EAAE;iBAClI;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,+GAA+G;YAC5H,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;oBACxE,YAAY,EAAE;wBACZ,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC;wBAC7B,WAAW,EAAE,kHAAkH;qBAChI;oBACD,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iEAAiE,EAAE;oBAC5G,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+CAA+C,EAAE;oBACzF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uDAAuD,EAAE;iBAClG;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,CAAC;aAC1D;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,+BAA+B;YAC5C,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;aACf;SACF;QACD;YACE,IAAI,EAAE,qBAAqB;YAC3B,WAAW,EAAE,oCAAoC;YACjD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;iBACxE;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;SACF;QACD;YACE,IAAI,EAAE,oBAAoB;YAC1B,WAAW,EAAE,uDAAuD;YACpE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;oBAC7D,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6CAA6C,EAAE;iBAC3F;gBACD,QAAQ,EAAE,CAAC,MAAM,CAAC;aACnB;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,iDAAiD;YAC9D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;aACf;SACF;QACD;YACE,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,oFAAoF;YACjG,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE;oBAClF,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;iBACvE;gBACD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aACjC;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,wFAAwF;YACrG,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;oBAC/E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;iBAC9E;gBACD,QAAQ,EAAE,CAAC,OAAO,CAAC;aACpB;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,oIAAoI;YACjJ,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,kCAAkC,EAAE;oBAC5E,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,sDAAsD,EAAE;iBACjG;gBACD,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,oEAAoE;YACjF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAiB;gBACvB,UAAU,EAAE,EAAE;aACf;SACF;KACF;CACF,CAAC,CAAC,CAAC;AAEJ,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAA8C,CAAC;YAC7E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;gBACpE,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBAC5F,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,gBAAgB,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC;YACxF,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAEnE,CAAC;YACF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,OAAO,IAAI,SAAS,CAAC;gBACjC,EAAE,CAAC,OAAO,CACR;oDAC0C,CAC3C,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;gBACnF,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,OAAO,MAAM,YAAY,KAAK,QAAQ,WAAW,GAAG,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YACjJ,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC,CAAC,GAAG,CAAC,OAAO,CAAmC,CAAC;gBACxI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC;gBACnF,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACzB,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,QAAQ,WAAW,CAAC,CAAC,QAAQ,SAAS,CAAC,CAAC,EAAE,GAAG,CAC5H,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1E,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,qBAAqB,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,EAAE,EAAE,GAAG,IAAsB,CAAC;YACtC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACxE,IAAI,MAAM,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;oBACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,8BAA8B,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;gBAC5F,CAAC;gBACD,gBAAgB,EAAE,CAAC;gBACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;YACnF,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,IAA6C,CAAC;YACpF,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjF,IAAI,QAAQ,EAAE,CAAC;oBACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,QAAQ,OAAO,mBAAmB,EAAE,CAAC,EAAE,CAAC;gBAC5F,CAAC;gBACD,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;gBACpB,MAAM,GAAG,GAAG,UAAU,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBACvC,EAAE,CAAC,OAAO,CACR,qFAAqF,CACtF,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC1C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,OAAO,mBAAmB,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC;YAC3G,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,6FAA6F,CAAC,CAAC,GAAG,EAExH,CAAC;gBACH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACtB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;gBACpE,CAAC;gBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,SAAS,CAAC,CAAC,WAAW,SAAS,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACzG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1E,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,sBAAsB,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,IAA4C,CAAC;YAC1E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACnG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,2BAA2B,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YAChG,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAyC,CAAC;YACnE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7C,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,kHAAkH,CACnH,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAE5B,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,+BAA+B,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;gBAClG,CAAC;gBACD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;oBAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;oBAC1D,OAAO,MAAM,CAAC,CAAC,MAAM,KAAK,KAAK,KAAK,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;gBACnE,CAAC,CAAC,CAAC;gBACH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1E,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAA6C,CAAC;YAC1E,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnC,EAAE,CAAC,OAAO,CAAC,8FAA8F,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;gBACjI,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,EAAE,CAAC;YACtF,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAI,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;gBACzF,MAAM,UAAU,GAAI,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;gBACpH,MAAM,SAAS,GAAI,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;gBACjH,MAAM,WAAW,GAAI,EAAE,CAAC,OAAO,CAAC,oCAAoC,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAC;gBAEhG,MAAM,KAAK,GAAG;oBACZ,SAAS,QAAQ,WAAW,UAAU,UAAU;oBAChD,cAAc,SAAS,SAAS;oBAChC,aAAa,WAAW,SAAS;iBAClC,CAAC;gBACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1E,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;QACH,CAAC;QAED;YACE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAClG,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { RouteDecision, GoalEvaluation, KnowledgeEntry, Project } from './types.js';
2
+ export declare class PipeAnthropicClient {
3
+ private client;
4
+ constructor(apiKey: string);
5
+ /** Route a message to the right project/tab (Haiku — fast, cheap) */
6
+ route(message: string, projects: Project[], recentRouting: string[]): Promise<RouteDecision>;
7
+ /** Evaluate if a goal was achieved (Sonnet — needs reasoning) */
8
+ evaluateGoal(originalGoal: string, response: string): Promise<GoalEvaluation>;
9
+ /** Extract knowledge from a conversation (Haiku — fast) */
10
+ extractKnowledge(conversation: string, existingFacts: string[]): Promise<KnowledgeEntry[]>;
11
+ private complete;
12
+ }
13
+ //# sourceMappingURL=anthropic-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-client.d.ts","sourceRoot":"","sources":["../../src/pipe/anthropic-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAKzF,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAY;gBAEd,MAAM,EAAE,MAAM;IAI1B,qEAAqE;IAC/D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IA6BlG,iEAAiE;IAC3D,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuBnF,2DAA2D;IACrD,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;YA6BlF,QAAQ;CAiBvB"}
@@ -0,0 +1,94 @@
1
+ import Anthropic from '@anthropic-ai/sdk';
2
+ import { logger } from '../util/logger.js';
3
+ const HAIKU = 'claude-haiku-4-5-20251001';
4
+ const SONNET = 'claude-sonnet-4-6-20250514';
5
+ export class PipeAnthropicClient {
6
+ client;
7
+ constructor(apiKey) {
8
+ this.client = new Anthropic({ apiKey });
9
+ }
10
+ /** Route a message to the right project/tab (Haiku — fast, cheap) */
11
+ async route(message, projects, recentRouting) {
12
+ const projectList = projects.map(p => `- ${p.name}: ${p.path} (${p.languages.join(', ')}) — ${p.description || 'no description'}`).join('\n');
13
+ const response = await this.complete(`You are a message router. Given a user message, determine which project it relates to.
14
+
15
+ Available projects:
16
+ ${projectList || '(no projects discovered yet)'}
17
+
18
+ Recent routing decisions:
19
+ ${recentRouting.slice(0, 5).join('\n') || '(none)'}
20
+
21
+ Respond with ONLY valid JSON: {"tabName": "project-name", "projectPath": "/path", "confidence": 0.0-1.0, "reason": "brief explanation", "needsConfirmation": false}
22
+
23
+ If the message is a general question not related to any project, use tabName "default" with the user's home directory.
24
+ If unsure which project, set confidence below 0.5 and needsConfirmation to true.`, message, 'haiku');
25
+ try {
26
+ return JSON.parse(response);
27
+ }
28
+ catch {
29
+ return { tabName: 'default', projectPath: null, confidence: 0.3, reason: 'Could not parse routing', needsConfirmation: true };
30
+ }
31
+ }
32
+ /** Evaluate if a goal was achieved (Sonnet — needs reasoning) */
33
+ async evaluateGoal(originalGoal, response) {
34
+ const result = await this.complete(`You evaluate whether a coding assistant achieved a user's goal.
35
+
36
+ Respond with ONLY valid JSON: {"status": "done|partial|failed", "reason": "brief explanation", "followUp": "what to do next" or null}
37
+
38
+ Consider:
39
+ - Did it actually make changes, or just describe what to do?
40
+ - Did it complete the full task or just one step?
41
+ - Are there obvious remaining steps?
42
+
43
+ If the response is a simple answer to a question (not a task), status is "done".`, `Original goal: "${originalGoal}"\n\nAssistant's response:\n${response.slice(0, 3000)}`, 'sonnet');
44
+ try {
45
+ return JSON.parse(result);
46
+ }
47
+ catch {
48
+ return { status: 'done', reason: 'Could not evaluate', followUp: null };
49
+ }
50
+ }
51
+ /** Extract knowledge from a conversation (Haiku — fast) */
52
+ async extractKnowledge(conversation, existingFacts) {
53
+ const response = await this.complete(`Extract structured knowledge from this conversation worth remembering across sessions.
54
+
55
+ Already known facts:
56
+ ${existingFacts.slice(0, 10).join('\n') || '(none)'}
57
+
58
+ Respond with ONLY a valid JSON array: [{"content": "...", "category": "project|preference|decision|fact"}]
59
+ Return [] if nothing new is worth remembering. Max 5 entries.`, conversation.slice(0, 5000), 'haiku');
60
+ try {
61
+ const entries = JSON.parse(response);
62
+ if (Array.isArray(entries)) {
63
+ return entries.slice(0, 5).map((e) => ({
64
+ content: e.content,
65
+ category: (e.category || 'fact'),
66
+ tabName: null,
67
+ source: 'pipe',
68
+ }));
69
+ }
70
+ return [];
71
+ }
72
+ catch {
73
+ return [];
74
+ }
75
+ }
76
+ async complete(systemPrompt, userMessage, model) {
77
+ const modelId = model === 'haiku' ? HAIKU : SONNET;
78
+ try {
79
+ const response = await this.client.messages.create({
80
+ model: modelId,
81
+ max_tokens: 500,
82
+ system: systemPrompt,
83
+ messages: [{ role: 'user', content: userMessage }],
84
+ });
85
+ const textBlock = response.content.find(b => b.type === 'text');
86
+ return textBlock?.text ?? '';
87
+ }
88
+ catch (err) {
89
+ logger.error(`Pipe API call failed (${model}):`, err);
90
+ throw err;
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=anthropic-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-client.js","sourceRoot":"","sources":["../../src/pipe/anthropic-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { TabManager } from '../session/manager.js';
2
+ import type { BeecorkConfig } from '../types.js';
3
+ import type { ChatContext, PipeResult } from './types.js';
4
+ export declare class PipeBrain {
5
+ private client;
6
+ private memory;
7
+ private config;
8
+ private tabManager;
9
+ private notifyCallback;
10
+ constructor(config: BeecorkConfig, tabManager: TabManager);
11
+ setNotifyCallback(cb: (text: string) => Promise<void>): void;
12
+ /** Main entry point: process a user message with intelligence */
13
+ process(message: string, context: ChatContext): Promise<PipeResult>;
14
+ /** Route a message to the right project/tab */
15
+ private route;
16
+ /** Evaluate if the goal was achieved and send follow-ups if needed */
17
+ private evaluateAndFollowUp;
18
+ /** Learn from a completed conversation */
19
+ private learn;
20
+ /** Discover projects on the filesystem */
21
+ discoverProjects(): Promise<number>;
22
+ }
23
+ //# sourceMappingURL=brain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.d.ts","sourceRoot":"","sources":["../../src/pipe/brain.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAiD,MAAM,YAAY,CAAC;AAEzG,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAkB;IAChC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,cAAc,CAAkD;gBAE5D,MAAM,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU;IAOzD,iBAAiB,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAI5D,iEAAiE;IAC3D,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA4CzE,+CAA+C;YACjC,KAAK;IA0CnB,sEAAsE;YACxD,mBAAmB;IAiDjC,0CAA0C;YAC5B,KAAK;IAuBnB,0CAA0C;IACpC,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAO1C"}
@@ -0,0 +1,162 @@
1
+ import { PipeAnthropicClient } from './anthropic-client.js';
2
+ import { PipeMemoryStore } from './memory-store.js';
3
+ import { scanForProjects } from './project-scanner.js';
4
+ import { logger } from '../util/logger.js';
5
+ export class PipeBrain {
6
+ client;
7
+ memory;
8
+ config;
9
+ tabManager;
10
+ notifyCallback = null;
11
+ constructor(config, tabManager) {
12
+ this.config = config;
13
+ this.tabManager = tabManager;
14
+ this.client = new PipeAnthropicClient(config.pipe.anthropicApiKey);
15
+ this.memory = new PipeMemoryStore();
16
+ }
17
+ setNotifyCallback(cb) {
18
+ this.notifyCallback = cb;
19
+ }
20
+ /** Main entry point: process a user message with intelligence */
21
+ async process(message, context) {
22
+ const decisions = [];
23
+ // Step 1: Route the message to the right tab/project
24
+ const route = await this.route(message, decisions);
25
+ // Step 2: Ensure the tab exists with the right working directory
26
+ if (route.projectPath) {
27
+ this.tabManager.ensureTab(route.tabName);
28
+ this.memory.updateProjectLastUsed(route.projectPath);
29
+ }
30
+ // Step 3: Send to Claude Code
31
+ let result;
32
+ try {
33
+ result = await this.tabManager.sendMessage(route.tabName, message);
34
+ }
35
+ catch (err) {
36
+ return {
37
+ tabName: route.tabName,
38
+ response: { text: `Error: ${err instanceof Error ? err.message : err}`, error: true, costUsd: 0, durationMs: 0 },
39
+ decisions,
40
+ goalStatus: null,
41
+ };
42
+ }
43
+ // Step 4: Evaluate if the goal was achieved
44
+ let goalStatus = null;
45
+ if (!result.error && result.text && result.durationMs > 3000) {
46
+ goalStatus = await this.evaluateAndFollowUp(message, result, route.tabName, decisions);
47
+ }
48
+ // Step 5: Learn from the conversation (fire and forget)
49
+ this.learn(route.tabName, message, result.text).catch(err => {
50
+ logger.error('Pipe learning failed:', err);
51
+ });
52
+ return {
53
+ tabName: route.tabName,
54
+ response: { text: result.text, error: result.error, costUsd: result.costUsd, durationMs: result.durationMs },
55
+ decisions,
56
+ goalStatus,
57
+ };
58
+ }
59
+ /** Route a message to the right project/tab */
60
+ async route(message, decisions) {
61
+ // Check for manual /tab override first
62
+ if (message.startsWith('/tab ')) {
63
+ const rest = message.slice(5);
64
+ const spaceIdx = rest.indexOf(' ');
65
+ if (spaceIdx > 0) {
66
+ const tabName = rest.slice(0, spaceIdx);
67
+ decisions.push(`📌 Manual routing to "${tabName}"`);
68
+ return { tabName, projectPath: null, confidence: 1.0, reason: 'Manual override', needsConfirmation: false };
69
+ }
70
+ }
71
+ const projects = this.memory.getProjects();
72
+ const recentRouting = this.memory.getRecentRouting(5);
73
+ // If no projects and no API key, just use default
74
+ if (projects.length === 0 || !this.config.pipe.anthropicApiKey) {
75
+ decisions.push('📍 Routing to default tab (no projects discovered)');
76
+ return { tabName: 'default', projectPath: null, confidence: 1.0, reason: 'No projects', needsConfirmation: false };
77
+ }
78
+ try {
79
+ const route = await this.client.route(message, projects, recentRouting);
80
+ // Record the routing decision
81
+ this.memory.recordRouting(message, route.tabName, route.projectPath, route.confidence);
82
+ if (route.confidence >= this.config.pipe.confidenceThreshold) {
83
+ decisions.push(`🧠 Routing to "${route.tabName}" (${Math.round(route.confidence * 100)}% confidence) — ${route.reason}`);
84
+ }
85
+ else {
86
+ decisions.push(`🤔 Low confidence routing to "${route.tabName}" (${Math.round(route.confidence * 100)}%) — ${route.reason}. Using default.`);
87
+ route.tabName = 'default';
88
+ }
89
+ return route;
90
+ }
91
+ catch (err) {
92
+ logger.error('Pipe routing failed, using default:', err);
93
+ decisions.push('⚠️ Routing failed, using default tab');
94
+ return { tabName: 'default', projectPath: null, confidence: 0.5, reason: 'Routing error', needsConfirmation: false };
95
+ }
96
+ }
97
+ /** Evaluate if the goal was achieved and send follow-ups if needed */
98
+ async evaluateAndFollowUp(originalGoal, lastResult, tabName, decisions) {
99
+ let currentResult = lastResult;
100
+ let followUpCount = 0;
101
+ const maxFollowUps = this.config.pipe.maxFollowUps;
102
+ while (followUpCount < maxFollowUps) {
103
+ try {
104
+ const evaluation = await this.client.evaluateGoal(originalGoal, currentResult.text);
105
+ if (evaluation.status === 'done') {
106
+ decisions.push(`✅ Goal achieved: ${evaluation.reason}`);
107
+ return evaluation;
108
+ }
109
+ if (evaluation.status === 'failed') {
110
+ decisions.push(`❌ Goal failed: ${evaluation.reason}`);
111
+ return evaluation;
112
+ }
113
+ // PARTIAL — send follow-up
114
+ followUpCount++;
115
+ const followUpMsg = evaluation.followUp || `Continue working on the original goal: "${originalGoal}". You haven't finished yet.`;
116
+ decisions.push(`🔄 Follow-up ${followUpCount}/${maxFollowUps}: ${evaluation.reason}`);
117
+ // Notify user about the follow-up
118
+ await this.notifyCallback?.(`🔄 [${tabName}] Sending follow-up (${followUpCount}/${maxFollowUps}): ${evaluation.reason}`);
119
+ // Send follow-up to Claude Code
120
+ currentResult = await this.tabManager.sendMessage(tabName, followUpMsg);
121
+ if (currentResult.error) {
122
+ decisions.push(`❌ Follow-up failed with error`);
123
+ return { status: 'failed', reason: currentResult.text, followUp: null };
124
+ }
125
+ }
126
+ catch (err) {
127
+ logger.error('Goal evaluation failed:', err);
128
+ return { status: 'done', reason: 'Evaluation error — assuming done', followUp: null };
129
+ }
130
+ }
131
+ decisions.push(`⚠️ Max follow-ups (${maxFollowUps}) reached`);
132
+ return { status: 'partial', reason: `Reached max ${maxFollowUps} follow-ups`, followUp: null };
133
+ }
134
+ /** Learn from a completed conversation */
135
+ async learn(tabName, userMessage, response) {
136
+ if (!response || response.length < 100)
137
+ return;
138
+ try {
139
+ const existingFacts = this.memory.getKnowledge('', 10);
140
+ const entries = await this.client.extractKnowledge(`User: ${userMessage}\n\nAssistant: ${response}`, existingFacts);
141
+ for (const entry of entries) {
142
+ entry.tabName = tabName;
143
+ this.memory.addKnowledge(entry);
144
+ }
145
+ if (entries.length > 0) {
146
+ logger.info(`Pipe learned ${entries.length} facts from ${tabName}`);
147
+ }
148
+ }
149
+ catch (err) {
150
+ logger.error('Pipe learning error:', err);
151
+ }
152
+ }
153
+ /** Discover projects on the filesystem */
154
+ async discoverProjects() {
155
+ const projects = scanForProjects(this.config.pipe.projectScanPaths);
156
+ for (const project of projects) {
157
+ this.memory.upsertProject(project);
158
+ }
159
+ return projects.length;
160
+ }
161
+ }
162
+ //# sourceMappingURL=brain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"brain.js","sourceRoot":"","sources":["../../src/pipe/brain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { Project, PermissionEntry, KnowledgeEntry } from './types.js';
2
+ export declare class PipeMemoryStore {
3
+ getProjects(): Project[];
4
+ upsertProject(project: Project): void;
5
+ findProjectByName(name: string): Project | undefined;
6
+ updateProjectLastUsed(path: string): void;
7
+ getPreference(key: string): string | null;
8
+ setPreference(key: string, value: string): void;
9
+ getPermissionHistory(toolName: string, limit?: number): PermissionEntry[];
10
+ recordPermission(toolName: string, argsPattern: string, decision: 'allow' | 'deny', confidence: number, context: string | null, tabName: string | null): void;
11
+ getRecentRouting(limit?: number): string[];
12
+ recordRouting(messagePreview: string, tabName: string, projectPath: string | null, confidence: number): void;
13
+ addKnowledge(entry: KnowledgeEntry): void;
14
+ getKnowledge(query: string, limit?: number): string[];
15
+ }
16
+ //# sourceMappingURL=memory-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.d.ts","sourceRoot":"","sources":["../../src/pipe/memory-store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAgB,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzF,qBAAa,eAAe;IAG1B,WAAW,IAAI,OAAO,EAAE;IAgBxB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAWrC,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAKpD,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAOzC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMzC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ/C,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,eAAe,EAAE;IAO7E,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAS7J,gBAAgB,CAAC,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE;IAQ9C,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAS5G,YAAY,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMzC,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,MAAM,EAAE;CAO1D"}
@@ -0,0 +1,79 @@
1
+ import { v4 as uuidv4 } from 'uuid';
2
+ import { getDb } from '../db/index.js';
3
+ export class PipeMemoryStore {
4
+ // ─── Projects ───
5
+ getProjects() {
6
+ const db = getDb();
7
+ const rows = db.prepare('SELECT * FROM projects ORDER BY last_used DESC NULLS LAST').all();
8
+ return rows.map(r => ({
9
+ id: r.id,
10
+ name: r.name,
11
+ path: r.path,
12
+ description: r.description || '',
13
+ languages: JSON.parse(r.languages || '[]'),
14
+ lastUsed: r.last_used,
15
+ tabName: r.tab_name,
16
+ discoveredVia: r.discovered_via || 'scan',
17
+ createdAt: r.created_at,
18
+ }));
19
+ }
20
+ upsertProject(project) {
21
+ const db = getDb();
22
+ db.prepare(`INSERT INTO projects (id, name, path, description, languages, last_used, tab_name, discovered_via)
23
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?)
24
+ ON CONFLICT(path) DO UPDATE SET
25
+ name=excluded.name, description=excluded.description, languages=excluded.languages,
26
+ last_used=excluded.last_used, tab_name=excluded.tab_name, updated_at=datetime('now')
27
+ `).run(project.id || uuidv4(), project.name, project.path, project.description, JSON.stringify(project.languages), project.lastUsed, project.tabName, project.discoveredVia);
28
+ }
29
+ findProjectByName(name) {
30
+ const projects = this.getProjects();
31
+ return projects.find(p => p.name.toLowerCase() === name.toLowerCase());
32
+ }
33
+ updateProjectLastUsed(path) {
34
+ const db = getDb();
35
+ db.prepare('UPDATE projects SET last_used = datetime("now") WHERE path = ?').run(path);
36
+ }
37
+ // ─── Preferences ───
38
+ getPreference(key) {
39
+ const db = getDb();
40
+ const row = db.prepare('SELECT value FROM preferences WHERE key = ?').get(key);
41
+ return row?.value ?? null;
42
+ }
43
+ setPreference(key, value) {
44
+ const db = getDb();
45
+ db.prepare('INSERT INTO preferences (key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value=excluded.value, updated_at=datetime("now")')
46
+ .run(key, value);
47
+ }
48
+ // ─── Permission History ───
49
+ getPermissionHistory(toolName, limit = 10) {
50
+ const db = getDb();
51
+ return db.prepare('SELECT * FROM permission_history WHERE tool_name = ? ORDER BY created_at DESC LIMIT ?').all(toolName, limit);
52
+ }
53
+ recordPermission(toolName, argsPattern, decision, confidence, context, tabName) {
54
+ const db = getDb();
55
+ db.prepare('INSERT INTO permission_history (tool_name, tool_args_pattern, decision, confidence, context, tab_name) VALUES (?, ?, ?, ?, ?, ?)').run(toolName, argsPattern, decision, confidence, context, tabName);
56
+ }
57
+ // ─── Routing History ───
58
+ getRecentRouting(limit = 10) {
59
+ const db = getDb();
60
+ const rows = db.prepare('SELECT message_preview, tab_name, confidence FROM routing_history ORDER BY created_at DESC LIMIT ?').all(limit);
61
+ return rows.map(r => `"${r.message_preview}" → ${r.tab_name} (${Math.round(r.confidence * 100)}%)`);
62
+ }
63
+ recordRouting(messagePreview, tabName, projectPath, confidence) {
64
+ const db = getDb();
65
+ db.prepare('INSERT INTO routing_history (message_preview, tab_name, project_path, confidence) VALUES (?, ?, ?, ?)').run(messagePreview.slice(0, 200), tabName, projectPath, confidence);
66
+ }
67
+ // ─── Knowledge ───
68
+ addKnowledge(entry) {
69
+ const db = getDb();
70
+ const content = entry.category ? `[${entry.category}] ${entry.content}` : entry.content;
71
+ db.prepare('INSERT INTO memories (content, tab_name, source) VALUES (?, ?, ?)').run(content, entry.tabName, entry.source);
72
+ }
73
+ getKnowledge(query, limit = 20) {
74
+ const db = getDb();
75
+ const rows = db.prepare('SELECT content FROM memories WHERE content LIKE ? ORDER BY created_at DESC LIMIT ?').all(`%${query}%`, limit);
76
+ return rows.map(r => r.content);
77
+ }
78
+ }
79
+ //# sourceMappingURL=memory-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-store.js","sourceRoot":"","sources":["../../src/pipe/memory-store.ts"],"names":[],"mappings":"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"}