claude-pager 0.2.2 → 0.3.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 (61) hide show
  1. package/README.md +85 -4
  2. package/dist/channels/telegram/provider.d.ts.map +1 -1
  3. package/dist/channels/telegram/provider.js +14 -0
  4. package/dist/channels/telegram/provider.js.map +1 -1
  5. package/dist/cli/index.js +45 -0
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/daemon/handlers.d.ts.map +1 -1
  8. package/dist/daemon/handlers.js +4 -3
  9. package/dist/daemon/handlers.js.map +1 -1
  10. package/dist/daemon/server.d.ts.map +1 -1
  11. package/dist/daemon/server.js +160 -2
  12. package/dist/daemon/server.js.map +1 -1
  13. package/dist/dashboard/enricher.d.ts +3 -0
  14. package/dist/dashboard/enricher.d.ts.map +1 -1
  15. package/dist/dashboard/enricher.js +11 -6
  16. package/dist/dashboard/enricher.js.map +1 -1
  17. package/dist/dashboard/git-status.d.ts +1 -1
  18. package/dist/dashboard/git-status.d.ts.map +1 -1
  19. package/dist/dashboard/git-status.js +14 -12
  20. package/dist/dashboard/git-status.js.map +1 -1
  21. package/dist/dashboard/html.d.ts +1 -1
  22. package/dist/dashboard/html.d.ts.map +1 -1
  23. package/dist/dashboard/html.js +481 -6
  24. package/dist/dashboard/html.js.map +1 -1
  25. package/dist/dashboard/routes.d.ts.map +1 -1
  26. package/dist/dashboard/routes.js +12 -0
  27. package/dist/dashboard/routes.js.map +1 -1
  28. package/dist/dashboard/sse.d.ts +5 -0
  29. package/dist/dashboard/sse.d.ts.map +1 -0
  30. package/dist/dashboard/sse.js +45 -0
  31. package/dist/dashboard/sse.js.map +1 -0
  32. package/dist/hooks/index.js +40 -5
  33. package/dist/hooks/index.js.map +1 -1
  34. package/dist/injectors/composite.d.ts +10 -0
  35. package/dist/injectors/composite.d.ts.map +1 -0
  36. package/dist/injectors/composite.js +27 -0
  37. package/dist/injectors/composite.js.map +1 -0
  38. package/dist/injectors/factory.d.ts.map +1 -1
  39. package/dist/injectors/factory.js +8 -5
  40. package/dist/injectors/factory.js.map +1 -1
  41. package/dist/injectors/vscode/injector.d.ts +8 -0
  42. package/dist/injectors/vscode/injector.d.ts.map +1 -0
  43. package/dist/injectors/vscode/injector.js +38 -0
  44. package/dist/injectors/vscode/injector.js.map +1 -0
  45. package/dist/notes/__tests__/store.test.d.ts +2 -0
  46. package/dist/notes/__tests__/store.test.d.ts.map +1 -0
  47. package/dist/notes/__tests__/store.test.js +88 -0
  48. package/dist/notes/__tests__/store.test.js.map +1 -0
  49. package/dist/notes/store.d.ts +27 -0
  50. package/dist/notes/store.d.ts.map +1 -0
  51. package/dist/notes/store.js +174 -0
  52. package/dist/notes/store.js.map +1 -0
  53. package/dist/sessions/helpers.d.ts +4 -0
  54. package/dist/sessions/helpers.d.ts.map +1 -0
  55. package/dist/sessions/helpers.js +8 -0
  56. package/dist/sessions/helpers.js.map +1 -0
  57. package/dist/types.d.ts +2 -0
  58. package/dist/types.d.ts.map +1 -1
  59. package/dist/voice/transcribe.js +1 -1
  60. package/dist/voice/transcribe.js.map +1 -1
  61. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../../src/dashboard/sse.ts"],"names":[],"mappings":";;AAsBA,oCAIC;AAED,oCASC;AAED,wCAEC;AAvCD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAgB,CAAC;AACxC,IAAI,cAAc,GAA0C,IAAI,CAAC;AAEjE,SAAS,cAAc;IACrB,IAAI,cAAc;QAAE,OAAO;IAC3B,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,cAAc,EAAE,CAAC;YACzC,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,MAAM,CAAC,CAAC;AACb,CAAC;AAED,SAAgB,YAAY,CAAC,KAAmB;IAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,YAAY,CAAC,SAAS,GAAG,SAAS;IAChD,MAAM,OAAO,GAAG,UAAU,SAAS,WAAW,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;IAC/D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC;AACtB,CAAC"}
@@ -18,6 +18,9 @@ async function readStdin() {
18
18
  return Buffer.concat(chunks).toString('utf-8');
19
19
  }
20
20
  function getActiveWindowId() {
21
+ // xdotool is X11-only — skip on macOS/Windows where it can't help anyway
22
+ if (process.platform !== 'linux')
23
+ return undefined;
21
24
  try {
22
25
  const out = (0, node_child_process_1.execFileSync)('xdotool', ['getactivewindow'], { timeout: 2000 });
23
26
  return parseInt(out.toString().trim(), 10) || undefined;
@@ -41,16 +44,30 @@ function findToolUseInFile(filePath, maxLines) {
41
44
  if (input?.command) {
42
45
  toolInput = input.command;
43
46
  }
47
+ else if (input?.old_string != null && input?.new_string != null) {
48
+ // Edit tool — show diff-like view
49
+ const file = input.file_path || '';
50
+ const old = String(input.old_string).slice(0, 300);
51
+ const nw = String(input.new_string).slice(0, 300);
52
+ toolInput = `${file}\n--- old\n${old}\n+++ new\n${nw}`;
53
+ }
54
+ else if (input?.file_path && input?.content) {
55
+ toolInput = `${input.file_path}\n${String(input.content).slice(0, 150)}`;
56
+ }
44
57
  else if (input?.file_path) {
45
58
  toolInput = input.file_path;
46
59
  }
47
- else if (input?.content) {
48
- toolInput = `${input.file_path || ''}\n${String(input.content).slice(0, 150)}`;
49
- }
50
60
  else if (typeof input === 'object') {
51
61
  toolInput = JSON.stringify(input).slice(0, 200);
52
62
  }
53
- return { toolName: block.name, toolInput };
63
+ // Extract assistant text from same message as context
64
+ const textBlocks = entry.message.content
65
+ .filter((b) => b.type === 'text' && b.text)
66
+ .map((b) => b.text);
67
+ const context = textBlocks.length > 0
68
+ ? textBlocks.join('\n').slice(-500)
69
+ : undefined;
70
+ return { toolName: block.name, toolInput, context };
54
71
  }
55
72
  }
56
73
  }
@@ -120,6 +137,9 @@ function extractLastAssistantMessage(transcriptPath) {
120
137
  async function handleSessionStart() {
121
138
  const input = await readStdin();
122
139
  const data = JSON.parse(input);
140
+ const vscodePort = process.env.CLAUDE_PAGER_VSCODE_PORT
141
+ ? parseInt(process.env.CLAUDE_PAGER_VSCODE_PORT, 10)
142
+ : undefined;
123
143
  const info = {
124
144
  sessionId: data.session_id,
125
145
  pid: process.ppid,
@@ -127,10 +147,25 @@ async function handleSessionStart() {
127
147
  cwd: data.cwd || process.cwd(),
128
148
  windowId: getActiveWindowId(),
129
149
  tmuxPane: process.env.TMUX_PANE || undefined,
150
+ vscodePort: vscodePort || undefined,
130
151
  timestamp: Date.now(),
131
152
  };
132
153
  (0, index_js_1.ensureDataDir)();
133
154
  (0, tracker_js_1.registerSession)(info);
155
+ // Register with VS Code extension for terminal mapping
156
+ if (vscodePort) {
157
+ try {
158
+ await fetch(`http://127.0.0.1:${vscodePort}/register`, {
159
+ method: 'POST',
160
+ headers: { 'Content-Type': 'application/json' },
161
+ body: JSON.stringify({ sessionId: data.session_id, pid: process.ppid }),
162
+ signal: AbortSignal.timeout(2000),
163
+ });
164
+ }
165
+ catch {
166
+ // Extension not reachable — session still works without injection
167
+ }
168
+ }
134
169
  }
135
170
  async function handleNotification() {
136
171
  const input = await readStdin();
@@ -146,7 +181,7 @@ async function handleNotification() {
146
181
  // Enrich with tool name and input
147
182
  const ctx = extractToolContext(data.transcript_path);
148
183
  if (ctx.toolName) {
149
- enriched = { ...data, tool_name: ctx.toolName, tool_input: ctx.toolInput };
184
+ enriched = { ...data, tool_name: ctx.toolName, tool_input: ctx.toolInput, context: ctx.context };
150
185
  }
151
186
  }
152
187
  else if (type === 'idle_prompt') {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { InputInjector } from './injector.js';
2
+ import type { SessionInfo, EventType } from '../types.js';
3
+ export declare class CompositeInjector implements InputInjector {
4
+ readonly name = "composite";
5
+ private readonly injectors;
6
+ constructor(injectors: InputInjector[]);
7
+ resolve(session: SessionInfo): Promise<boolean>;
8
+ sendResponse(session: SessionInfo, text: string, eventType: EventType): Promise<boolean>;
9
+ }
10
+ //# sourceMappingURL=composite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.d.ts","sourceRoot":"","sources":["../../src/injectors/composite.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE1D,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,eAAe;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;gBAEhC,SAAS,EAAE,aAAa,EAAE;IAIhC,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAO/C,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAQ/F"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CompositeInjector = void 0;
4
+ class CompositeInjector {
5
+ name = 'composite';
6
+ injectors;
7
+ constructor(injectors) {
8
+ this.injectors = injectors;
9
+ }
10
+ async resolve(session) {
11
+ for (const inj of this.injectors) {
12
+ if (await inj.resolve(session))
13
+ return true;
14
+ }
15
+ return false;
16
+ }
17
+ async sendResponse(session, text, eventType) {
18
+ for (const inj of this.injectors) {
19
+ if (await inj.resolve(session)) {
20
+ return inj.sendResponse(session, text, eventType);
21
+ }
22
+ }
23
+ return false;
24
+ }
25
+ }
26
+ exports.CompositeInjector = CompositeInjector;
27
+ //# sourceMappingURL=composite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"composite.js","sourceRoot":"","sources":["../../src/injectors/composite.ts"],"names":[],"mappings":";;;AAGA,MAAa,iBAAiB;IACnB,IAAI,GAAG,WAAW,CAAC;IACX,SAAS,CAAkB;IAE5C,YAAY,SAA0B;QACpC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC9C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB,EAAE,IAAY,EAAE,SAAoB;QACzE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/B,OAAO,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAvBD,8CAuBC"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/injectors/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAInD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAe/F"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/injectors/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,aAAa,CAiB/F"}
@@ -3,18 +3,21 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createInjector = createInjector;
4
4
  const injector_js_1 = require("./tmux/injector.js");
5
5
  const injector_js_2 = require("./xdotool/injector.js");
6
+ const injector_js_3 = require("./vscode/injector.js");
7
+ const composite_js_1 = require("./composite.js");
6
8
  function createInjector(type) {
9
+ const vscode = new injector_js_3.VscodeInjector();
7
10
  switch (type) {
8
11
  case 'tmux':
9
- return new injector_js_1.TmuxInjector();
12
+ return new composite_js_1.CompositeInjector([vscode, new injector_js_1.TmuxInjector()]);
10
13
  case 'xdotool':
11
- return new injector_js_2.XdotoolInjector();
14
+ return new composite_js_1.CompositeInjector([vscode, new injector_js_2.XdotoolInjector()]);
12
15
  case 'auto':
13
- // Prefer tmux if available, fallback to xdotool
14
16
  if (process.platform === 'linux') {
15
- return new injector_js_1.TmuxInjector();
17
+ return new composite_js_1.CompositeInjector([vscode, new injector_js_1.TmuxInjector()]);
16
18
  }
17
- throw new Error(`No injector available for platform: ${process.platform}`);
19
+ // On non-Linux (macOS/Windows), VS Code injector is the only option
20
+ return new composite_js_1.CompositeInjector([vscode]);
18
21
  default:
19
22
  throw new Error(`Unknown injector type: ${type}`);
20
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/injectors/factory.ts"],"names":[],"mappings":";;AAIA,wCAeC;AAlBD,oDAAkD;AAClD,uDAAwD;AAExD,SAAgB,cAAc,CAAC,IAAiD;IAC9E,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,0BAAY,EAAE,CAAC;QAC5B,KAAK,SAAS;YACZ,OAAO,IAAI,6BAAe,EAAE,CAAC;QAC/B,KAAK,MAAM;YACT,gDAAgD;YAChD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,IAAI,0BAAY,EAAE,CAAC;YAC5B,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uCAAuC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7E;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/injectors/factory.ts"],"names":[],"mappings":";;AAMA,wCAiBC;AAtBD,oDAAkD;AAClD,uDAAwD;AACxD,sDAAsD;AACtD,iDAAmD;AAEnD,SAAgB,cAAc,CAAC,IAAiD;IAC9E,MAAM,MAAM,GAAG,IAAI,4BAAc,EAAE,CAAC;IAEpC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,MAAM;YACT,OAAO,IAAI,gCAAiB,CAAC,CAAC,MAAM,EAAE,IAAI,0BAAY,EAAE,CAAC,CAAC,CAAC;QAC7D,KAAK,SAAS;YACZ,OAAO,IAAI,gCAAiB,CAAC,CAAC,MAAM,EAAE,IAAI,6BAAe,EAAE,CAAC,CAAC,CAAC;QAChE,KAAK,MAAM;YACT,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjC,OAAO,IAAI,gCAAiB,CAAC,CAAC,MAAM,EAAE,IAAI,0BAAY,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;YACD,oEAAoE;YACpE,OAAO,IAAI,gCAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC;YACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { InputInjector } from '../injector.js';
2
+ import type { SessionInfo, EventType } from '../../types.js';
3
+ export declare class VscodeInjector implements InputInjector {
4
+ readonly name = "vscode";
5
+ resolve(session: SessionInfo): Promise<boolean>;
6
+ sendResponse(session: SessionInfo, text: string, eventType: EventType): Promise<boolean>;
7
+ }
8
+ //# sourceMappingURL=injector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.d.ts","sourceRoot":"","sources":["../../../src/injectors/vscode/injector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE7D,qBAAa,cAAe,YAAW,aAAa;IAClD,QAAQ,CAAC,IAAI,YAAY;IAEnB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAY/C,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;CAe/F"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VscodeInjector = void 0;
4
+ class VscodeInjector {
5
+ name = 'vscode';
6
+ async resolve(session) {
7
+ if (!session.vscodePort)
8
+ return false;
9
+ try {
10
+ const res = await fetch(`http://127.0.0.1:${session.vscodePort}/health`, {
11
+ signal: AbortSignal.timeout(1000),
12
+ });
13
+ return res.ok;
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ async sendResponse(session, text, eventType) {
20
+ if (!session.vscodePort)
21
+ return false;
22
+ try {
23
+ const res = await fetch(`http://127.0.0.1:${session.vscodePort}/inject`, {
24
+ method: 'POST',
25
+ headers: { 'Content-Type': 'application/json' },
26
+ body: JSON.stringify({ sessionId: session.sessionId, text, eventType }),
27
+ signal: AbortSignal.timeout(5000),
28
+ });
29
+ return res.ok;
30
+ }
31
+ catch (err) {
32
+ console.error('[vscode] sendResponse error:', err);
33
+ return false;
34
+ }
35
+ }
36
+ }
37
+ exports.VscodeInjector = VscodeInjector;
38
+ //# sourceMappingURL=injector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"injector.js","sourceRoot":"","sources":["../../../src/injectors/vscode/injector.ts"],"names":[],"mappings":";;;AAGA,MAAa,cAAc;IAChB,IAAI,GAAG,QAAQ,CAAC;IAEzB,KAAK,CAAC,OAAO,CAAC,OAAoB;QAChC,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,OAAO,CAAC,UAAU,SAAS,EAAE;gBACvE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB,EAAE,IAAY,EAAE,SAAoB;QACzE,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,OAAO,CAAC,UAAU,SAAS,EAAE;gBACvE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;gBACvE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;aAClC,CAAC,CAAC;YACH,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF;AA9BD,wCA8BC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=store.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.d.ts","sourceRoot":"","sources":["../../../src/notes/__tests__/store.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const store_js_1 = require("../store.js");
9
+ (0, node_test_1.describe)('notes store', () => {
10
+ (0, node_test_1.beforeEach)(() => {
11
+ (0, store_js_1._resetStore)();
12
+ });
13
+ (0, node_test_1.it)('should add a note and retrieve it', () => {
14
+ const note = (0, store_js_1.addNote)('/home/user/dev/myproject', 'fix the CSS', 'cli');
15
+ strict_1.default.ok(note.id);
16
+ strict_1.default.equal(note.project, 'myproject');
17
+ strict_1.default.equal(note.text, 'fix the CSS');
18
+ strict_1.default.equal(note.source, 'cli');
19
+ strict_1.default.equal(note.status, 'pending');
20
+ const retrieved = (0, store_js_1.getNote)(note.id);
21
+ strict_1.default.ok(retrieved);
22
+ strict_1.default.equal(retrieved.id, note.id);
23
+ });
24
+ (0, node_test_1.it)('should list only pending notes', () => {
25
+ (0, store_js_1.addNote)('project-a', 'note 1', 'api');
26
+ const n2 = (0, store_js_1.addNote)('project-a', 'note 2', 'api');
27
+ (0, store_js_1.addNote)('project-b', 'note 3', 'api');
28
+ strict_1.default.equal((0, store_js_1.listNotes)().length, 3);
29
+ strict_1.default.equal((0, store_js_1.listNotes)('project-a').length, 2);
30
+ strict_1.default.equal((0, store_js_1.listNotes)('project-b').length, 1);
31
+ (0, store_js_1.markSent)(n2.id);
32
+ strict_1.default.equal((0, store_js_1.listNotes)('project-a').length, 1);
33
+ });
34
+ (0, node_test_1.it)('should remove a note', () => {
35
+ const note = (0, store_js_1.addNote)('project', 'test', 'dashboard');
36
+ strict_1.default.ok((0, store_js_1.getNote)(note.id));
37
+ const removed = (0, store_js_1.removeNote)(note.id);
38
+ strict_1.default.ok(removed);
39
+ strict_1.default.equal((0, store_js_1.getNote)(note.id), undefined);
40
+ });
41
+ (0, node_test_1.it)('should return false when removing unknown note', () => {
42
+ strict_1.default.equal((0, store_js_1.removeNote)('nonexistent'), false);
43
+ });
44
+ (0, node_test_1.it)('should mark note as sent', () => {
45
+ const note = (0, store_js_1.addNote)('project', 'test', 'api');
46
+ strict_1.default.ok((0, store_js_1.markSent)(note.id));
47
+ const updated = (0, store_js_1.getNote)(note.id);
48
+ strict_1.default.equal(updated?.status, 'sent');
49
+ // Sent notes not listed in pending
50
+ strict_1.default.equal((0, store_js_1.listNotes)().length, 0);
51
+ });
52
+ (0, node_test_1.it)('should list unique project names', () => {
53
+ (0, store_js_1.addNote)('project-a', 'note 1', 'api');
54
+ (0, store_js_1.addNote)('project-b', 'note 2', 'api');
55
+ (0, store_js_1.addNote)('project-a', 'note 3', 'api');
56
+ const projects = (0, store_js_1.listProjects)();
57
+ strict_1.default.equal(projects.length, 2);
58
+ strict_1.default.ok(projects.includes('project-a'));
59
+ strict_1.default.ok(projects.includes('project-b'));
60
+ });
61
+ });
62
+ (0, node_test_1.describe)('normalizeProject', () => {
63
+ (0, node_test_1.it)('should extract last path component', () => {
64
+ strict_1.default.equal((0, store_js_1.normalizeProject)('/home/user/dev/myproject'), 'myproject');
65
+ strict_1.default.equal((0, store_js_1.normalizeProject)('/home/user/dev/my-app/'), 'my-app');
66
+ });
67
+ (0, node_test_1.it)('should lowercase simple names', () => {
68
+ strict_1.default.equal((0, store_js_1.normalizeProject)('MyProject'), 'myproject');
69
+ });
70
+ });
71
+ (0, node_test_1.describe)('matchProject', () => {
72
+ (0, node_test_1.beforeEach)(() => {
73
+ (0, store_js_1._resetStore)();
74
+ });
75
+ (0, node_test_1.it)('should match exact project name', () => {
76
+ (0, store_js_1.addNote)('claude-relay', 'test', 'api');
77
+ strict_1.default.equal((0, store_js_1.matchProject)('claude-relay'), 'claude-relay');
78
+ });
79
+ (0, node_test_1.it)('should fuzzy match with spaces to dashes', () => {
80
+ (0, store_js_1.addNote)('claude-relay', 'test', 'api');
81
+ strict_1.default.equal((0, store_js_1.matchProject)('claude relay'), 'claude-relay');
82
+ });
83
+ (0, node_test_1.it)('should return null when no match', () => {
84
+ (0, store_js_1.addNote)('some-project', 'test', 'api');
85
+ strict_1.default.equal((0, store_js_1.matchProject)('totally-different'), null);
86
+ });
87
+ });
88
+ //# sourceMappingURL=store.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.test.js","sourceRoot":"","sources":["../../../src/notes/__tests__/store.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export interface Note {
2
+ id: string;
3
+ project: string;
4
+ text: string;
5
+ image?: string;
6
+ source: 'voice' | 'dashboard' | 'telegram' | 'cli' | 'api';
7
+ createdAt: number;
8
+ status: 'pending' | 'sent';
9
+ }
10
+ export declare function imagesDir(): string;
11
+ export declare function saveImage(data: Buffer): string;
12
+ export declare function setNoteImage(id: string, filename: string): boolean;
13
+ export declare function addNote(project: string, text: string, source?: Note['source']): Note;
14
+ export declare function listNotes(project?: string): Note[];
15
+ export declare function getNote(id: string): Note | undefined;
16
+ export declare function markSent(id: string): boolean;
17
+ export declare function removeNote(id: string): boolean;
18
+ export declare function updateNoteText(id: string, text: string): boolean;
19
+ export declare function reorderNotes(project: string, orderedIds: string[]): boolean;
20
+ export declare function listProjects(): string[];
21
+ /** Normalize project path to short name (last directory component) */
22
+ export declare function normalizeProject(project: string): string;
23
+ /** Find best matching project name for fuzzy input (e.g. voice "claude relay" → "claude-relay") */
24
+ export declare function matchProject(input: string): string | null;
25
+ /** Reset store — for testing only */
26
+ export declare function _resetStore(): void;
27
+ //# sourceMappingURL=store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/notes/store.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,MAAM,CAAC;CAC5B;AAYD,wBAAgB,SAAS,IAAI,MAAM,CAIlC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI9C;AAED,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOlE;AAoBD,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,IAAI,CAAC,QAAQ,CAAS,GAAG,IAAI,CAiB3F;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,CAMlD;AAED,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAGpD;AAED,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAO5C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAW9C;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAOhE;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAa3E;AAED,wBAAgB,YAAY,IAAI,MAAM,EAAE,CAIvC;AAED,sEAAsE;AACtE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAazD;AAED,qCAAqC;AACrC,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
@@ -0,0 +1,174 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.imagesDir = imagesDir;
4
+ exports.saveImage = saveImage;
5
+ exports.setNoteImage = setNoteImage;
6
+ exports.addNote = addNote;
7
+ exports.listNotes = listNotes;
8
+ exports.getNote = getNote;
9
+ exports.markSent = markSent;
10
+ exports.removeNote = removeNote;
11
+ exports.updateNoteText = updateNoteText;
12
+ exports.reorderNotes = reorderNotes;
13
+ exports.listProjects = listProjects;
14
+ exports.normalizeProject = normalizeProject;
15
+ exports.matchProject = matchProject;
16
+ exports._resetStore = _resetStore;
17
+ const node_fs_1 = require("node:fs");
18
+ const node_path_1 = require("node:path");
19
+ const node_crypto_1 = require("node:crypto");
20
+ const index_js_1 = require("../config/index.js");
21
+ const json_js_1 = require("../utils/json.js");
22
+ const MAX_NOTES = 500;
23
+ let notes = [];
24
+ let loaded = false;
25
+ let testMode = false;
26
+ function notesFile() {
27
+ return (0, node_path_1.join)((0, index_js_1.getDataDir)(), 'notes.json');
28
+ }
29
+ function imagesDir() {
30
+ const dir = (0, node_path_1.join)((0, index_js_1.getDataDir)(), 'note-images');
31
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
32
+ return dir;
33
+ }
34
+ function saveImage(data) {
35
+ const filename = (0, node_crypto_1.randomUUID)() + '.png';
36
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(imagesDir(), filename), data);
37
+ return filename;
38
+ }
39
+ function setNoteImage(id, filename) {
40
+ load();
41
+ const note = notes.find(n => n.id === id);
42
+ if (!note)
43
+ return false;
44
+ note.image = filename;
45
+ persist();
46
+ return true;
47
+ }
48
+ function load() {
49
+ if (loaded)
50
+ return;
51
+ try {
52
+ const raw = (0, node_fs_1.readFileSync)(notesFile(), 'utf-8');
53
+ notes = (0, json_js_1.safeJsonParse)(raw, []);
54
+ }
55
+ catch {
56
+ notes = [];
57
+ }
58
+ loaded = true;
59
+ }
60
+ function persist() {
61
+ if (testMode)
62
+ return;
63
+ const tmp = notesFile() + '.tmp';
64
+ (0, node_fs_1.writeFileSync)(tmp, JSON.stringify(notes, null, 2) + '\n');
65
+ (0, node_fs_1.renameSync)(tmp, notesFile());
66
+ }
67
+ function addNote(project, text, source = 'api') {
68
+ load();
69
+ const note = {
70
+ id: (0, node_crypto_1.randomUUID)(),
71
+ project: normalizeProject(project),
72
+ text: text.trim(),
73
+ source,
74
+ createdAt: Date.now(),
75
+ status: 'pending',
76
+ };
77
+ notes.push(note);
78
+ // Cap size
79
+ if (notes.length > MAX_NOTES) {
80
+ notes = notes.slice(notes.length - MAX_NOTES);
81
+ }
82
+ persist();
83
+ return note;
84
+ }
85
+ function listNotes(project) {
86
+ load();
87
+ const pending = notes.filter(n => n.status === 'pending');
88
+ if (!project)
89
+ return pending;
90
+ const normalized = normalizeProject(project);
91
+ return pending.filter(n => n.project === normalized);
92
+ }
93
+ function getNote(id) {
94
+ load();
95
+ return notes.find(n => n.id === id);
96
+ }
97
+ function markSent(id) {
98
+ load();
99
+ const note = notes.find(n => n.id === id);
100
+ if (!note)
101
+ return false;
102
+ note.status = 'sent';
103
+ persist();
104
+ return true;
105
+ }
106
+ function removeNote(id) {
107
+ load();
108
+ const idx = notes.findIndex(n => n.id === id);
109
+ if (idx === -1)
110
+ return false;
111
+ const note = notes[idx];
112
+ if (note.image) {
113
+ try {
114
+ (0, node_fs_1.unlinkSync)((0, node_path_1.join)(imagesDir(), note.image));
115
+ }
116
+ catch { /* already deleted */ }
117
+ }
118
+ notes.splice(idx, 1);
119
+ persist();
120
+ return true;
121
+ }
122
+ function updateNoteText(id, text) {
123
+ load();
124
+ const note = notes.find(n => n.id === id);
125
+ if (!note)
126
+ return false;
127
+ note.text = text.trim();
128
+ persist();
129
+ return true;
130
+ }
131
+ function reorderNotes(project, orderedIds) {
132
+ load();
133
+ const normalized = normalizeProject(project);
134
+ const projectNotes = notes.filter(n => n.project === normalized && n.status === 'pending');
135
+ const otherNotes = notes.filter(n => n.project !== normalized || n.status !== 'pending');
136
+ // Sort project notes by the provided order
137
+ const idIndex = new Map(orderedIds.map((id, i) => [id, i]));
138
+ projectNotes.sort((a, b) => (idIndex.get(a.id) ?? 999) - (idIndex.get(b.id) ?? 999));
139
+ notes = [...otherNotes, ...projectNotes];
140
+ persist();
141
+ return true;
142
+ }
143
+ function listProjects() {
144
+ load();
145
+ const projects = new Set(notes.filter(n => n.status === 'pending').map(n => n.project));
146
+ return Array.from(projects).sort();
147
+ }
148
+ /** Normalize project path to short name (last directory component) */
149
+ function normalizeProject(project) {
150
+ // If it looks like a path, take the last component
151
+ if (project.includes('/')) {
152
+ return project.replace(/\/+$/, '').split('/').pop() || project;
153
+ }
154
+ return project.toLowerCase().trim();
155
+ }
156
+ /** Find best matching project name for fuzzy input (e.g. voice "claude relay" → "claude-relay") */
157
+ function matchProject(input) {
158
+ load();
159
+ const projects = listProjects();
160
+ const normalized = input.toLowerCase().replace(/\s+/g, '-').trim();
161
+ // Exact match
162
+ if (projects.includes(normalized))
163
+ return normalized;
164
+ // Fuzzy: check if input is contained in a project name or vice versa
165
+ const match = projects.find(p => p.includes(normalized) || normalized.includes(p));
166
+ return match || null;
167
+ }
168
+ /** Reset store — for testing only */
169
+ function _resetStore() {
170
+ notes = [];
171
+ loaded = true; // Mark as loaded so it doesn't re-read the file
172
+ testMode = true; // Disable file persistence during tests
173
+ }
174
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/notes/store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SessionInfo } from '../types.js';
2
+ /** Check if a session has a reachable injection target (tmux pane or VS Code extension) */
3
+ export declare function isSessionInjectable(s: SessionInfo): boolean;
4
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/sessions/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,WAAW,GAAG,OAAO,CAE3D"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isSessionInjectable = isSessionInjectable;
4
+ /** Check if a session has a reachable injection target (tmux pane or VS Code extension) */
5
+ function isSessionInjectable(s) {
6
+ return !!(s.tmuxPane || s.vscodePort);
7
+ }
8
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/sessions/helpers.ts"],"names":[],"mappings":";;AAGA,kDAEC;AAHD,2FAA2F;AAC3F,SAAgB,mBAAmB,CAAC,CAAc;IAChD,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC;AACxC,CAAC"}