@slopus/rig 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/app/CodingAssistantApp.d.ts +2 -1
  2. package/dist/app/CodingAssistantApp.d.ts.map +1 -1
  3. package/dist/app/CodingAssistantApp.js +52 -16
  4. package/dist/app/FileMentionAutocomplete.d.ts +27 -0
  5. package/dist/app/FileMentionAutocomplete.d.ts.map +1 -0
  6. package/dist/app/FileMentionAutocomplete.js +122 -0
  7. package/dist/app/createFileMentionAutocompleteItems.d.ts +4 -0
  8. package/dist/app/createFileMentionAutocompleteItems.d.ts.map +1 -0
  9. package/dist/app/createFileMentionAutocompleteItems.js +7 -0
  10. package/dist/app/findFileMentionContext.d.ts +10 -0
  11. package/dist/app/findFileMentionContext.d.ts.map +1 -0
  12. package/dist/app/findFileMentionContext.js +13 -0
  13. package/dist/app/findFileMentionPrefix.d.ts +6 -0
  14. package/dist/app/findFileMentionPrefix.d.ts.map +1 -0
  15. package/dist/app/findFileMentionPrefix.js +17 -0
  16. package/dist/app/formatFileMention.d.ts +2 -0
  17. package/dist/app/formatFileMention.d.ts.map +1 -0
  18. package/dist/app/formatFileMention.js +6 -0
  19. package/dist/app/index.d.ts +0 -1
  20. package/dist/app/index.d.ts.map +1 -1
  21. package/dist/app/index.js +0 -1
  22. package/dist/app/runApp.d.ts.map +1 -1
  23. package/dist/app/runApp.js +3 -0
  24. package/dist/client/ProtocolHttpClient.d.ts +2 -1
  25. package/dist/client/ProtocolHttpClient.d.ts.map +1 -1
  26. package/dist/client/ProtocolHttpClient.js +7 -0
  27. package/dist/main.d.ts +1 -1
  28. package/dist/main.d.ts.map +1 -1
  29. package/dist/main.js +4 -8
  30. package/dist/protocol/SessionProtocol.d.ts +7 -0
  31. package/dist/protocol/SessionProtocol.d.ts.map +1 -1
  32. package/dist/protocol/index.d.ts +1 -1
  33. package/dist/protocol/index.d.ts.map +1 -1
  34. package/dist/server/FileSearchService.d.ts +14 -0
  35. package/dist/server/FileSearchService.d.ts.map +1 -0
  36. package/dist/server/FileSearchService.js +71 -0
  37. package/dist/server/createProtocolHttpServer.d.ts +2 -0
  38. package/dist/server/createProtocolHttpServer.d.ts.map +1 -1
  39. package/dist/server/createProtocolHttpServer.js +25 -3
  40. package/dist/web/assets/highlighted-body-OFNGDK62-CCrJakL3.js +1 -0
  41. package/dist/web/assets/index-B6Z_CQNK.css +1 -0
  42. package/dist/web/assets/index-kjfb8ssZ.js +341 -0
  43. package/dist/web/index.html +2 -2
  44. package/package.json +2 -1
@@ -1,6 +1,6 @@
1
1
  import { type Component, type Focusable, type TUI } from "@earendil-works/pi-tui";
2
2
  import type { NativeProxessManager } from "../processes/index.js";
3
- import type { SessionEvent } from "../protocol/index.js";
3
+ import type { FileSearchResult, SessionEvent } from "../protocol/index.js";
4
4
  import type { CodingAssistantAgentBackend } from "./CodingAssistantAgentBackend.js";
5
5
  import { type ClipboardImage, type ReadClipboardImageOptions } from "./readClipboardImage.js";
6
6
  export interface CodingAssistantAppOptions {
@@ -17,6 +17,7 @@ export interface CodingAssistantAppOptions {
17
17
  onExit?: () => void | Promise<void>;
18
18
  now?: () => number;
19
19
  readClipboardImage?: (options?: ReadClipboardImageOptions) => Promise<ClipboardImage | undefined>;
20
+ searchFiles?: (query: string) => Promise<readonly FileSearchResult[]>;
20
21
  showReasoning?: boolean;
21
22
  version?: string;
22
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CodingAssistantApp.d.ts","sourceRoot":"","sources":["../../sources/app/CodingAssistantApp.ts"],"names":[],"mappings":"AAGA,OAAO,EAQH,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,KAAK,GAAG,EACX,MAAM,wBAAwB,CAAC;AAYhC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EACR,2BAA2B,EAE9B,MAAM,kCAAkC,CAAC;AAQ1C,OAAO,EAEH,KAAK,cAAc,EACnB,KAAK,yBAAyB,EACjC,MAAM,yBAAyB,CAAC;AAqDjC,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,2BAA2B,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,oBAAoB,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,CACjB,OAAO,CAAC,EAAE,yBAAyB,KAClC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAmBD,qBAAa,kBAAmB,YAAW,SAAS,EAAE,SAAS;;gBA2D/C,OAAO,EAAE,yBAAyB;IA+B9C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAUzB;IAED,KAAK,CAAC,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAUpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAmFtC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBlC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAoM/B,UAAU,IAAI,IAAI;IAIlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAsuDlC"}
1
+ {"version":3,"file":"CodingAssistantApp.d.ts","sourceRoot":"","sources":["../../sources/app/CodingAssistantApp.ts"],"names":[],"mappings":"AAGA,OAAO,EAQH,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,KAAK,GAAG,EACX,MAAM,wBAAwB,CAAC;AAYhC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,KAAK,EACR,2BAA2B,EAE9B,MAAM,kCAAkC,CAAC;AAW1C,OAAO,EAEH,KAAK,cAAc,EACnB,KAAK,yBAAyB,EACjC,MAAM,yBAAyB,CAAC;AAsDjC,MAAM,WAAW,yBAAyB;IACtC,KAAK,EAAE,2BAA2B,CAAC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,oBAAoB,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,oBAAoB,CAAC;IACrC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;IACT,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,CACjB,OAAO,CAAC,EAAE,yBAAyB,KAClC,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC;IACzC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IACxB,aAAa,EAAE,OAAO,CAAC;CAC1B;AAmBD,qBAAa,kBAAmB,YAAW,SAAS,EAAE,SAAS;;gBA4D/C,OAAO,EAAE,yBAAyB;IAmC9C,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAUzB;IAED,KAAK,CAAC,OAAO,GAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,IAAI;IAUpD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4B3B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAmFtC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBlC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAwN/B,UAAU,IAAI,IAAI;IAIlB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAuwDlC"}
@@ -10,6 +10,8 @@ import { describeModelChoice } from "./describeModelChoice.js";
10
10
  import { describeReasoningLevel } from "./describeReasoningLevel.js";
11
11
  import { encodeModelChoice } from "./encodeModelChoice.js";
12
12
  import { formatActivityElapsedTime } from "./formatActivityElapsedTime.js";
13
+ import { FileMentionAutocomplete } from "./FileMentionAutocomplete.js";
14
+ import { formatFileMention } from "./formatFileMention.js";
13
15
  import { humanizeReasoningLevel } from "./humanizeReasoningLevel.js";
14
16
  import { readClipboardImage, } from "./readClipboardImage.js";
15
17
  import { ACTIVITY_WAVE_FRAME_COUNT, renderActivityWave } from "./renderActivityWave.js";
@@ -43,12 +45,13 @@ const REASONING_DOWN_RAW_KEYS = new Set(["\x1b,", "\x1b[1;2B"]);
43
45
  const REASONING_UP_RAW_KEYS = new Set(["\x1b.", "\x1b[1;2A"]);
44
46
  const MODEL_MENU_RAW_KEYS = new Set(["\x1bm", "\x1bM"]);
45
47
  const IMAGE_PASTE_RAW_KEYS = new Set(["\x16", "\x1bv"]);
46
- const SLASH_COMMAND_MAX_VISIBLE = 6;
48
+ const AUTOCOMPLETE_MAX_VISIBLE = 6;
47
49
  const BRACKETED_PASTE_START = "\x1b[200~";
48
50
  const BRACKETED_PASTE_END = "\x1b[201~";
49
51
  const IMAGE_PLACEHOLDER_REGEX = /\[Image #(\d+) [A-Z0-9]+\]/gu;
50
52
  const IMAGE_CHIP_BG = "\x1b[48;5;240m";
51
53
  const IMAGE_CHIP_FG = "\x1b[38;5;255m";
54
+ const FILE_MENTION_SEGMENTER = new Intl.Segmenter(undefined, { granularity: "grapheme" });
52
55
  const EDITOR_THEME = {
53
56
  borderColor: (text) => text,
54
57
  selectList: {
@@ -66,6 +69,7 @@ export class CodingAssistantApp {
66
69
  #idFactory;
67
70
  #now;
68
71
  #editor;
72
+ #fileMentionAutocomplete;
69
73
  #onDefaultModelChange;
70
74
  #onSettingsChange;
71
75
  #onExit;
@@ -129,6 +133,10 @@ export class CodingAssistantApp {
129
133
  this.#tui = options.tui;
130
134
  this.#version = options.version ?? "0.0.0";
131
135
  this.#editor = new Editor(this.#tui, EDITOR_THEME, { paddingX: 0 });
136
+ this.#fileMentionAutocomplete =
137
+ options.searchFiles === undefined
138
+ ? undefined
139
+ : new FileMentionAutocomplete(options.searchFiles, () => this.#requestRender());
132
140
  this.#exitPromise = new Promise((resolve) => {
133
141
  this.#exitResolve = resolve;
134
142
  });
@@ -173,6 +181,7 @@ export class CodingAssistantApp {
173
181
  this.#abortController?.abort();
174
182
  this.#stopActivityAnimation();
175
183
  this.#stopCursorBlink();
184
+ this.#fileMentionAutocomplete?.clear();
176
185
  this.#editor.setText("");
177
186
  this.#pastedImagesById.clear();
178
187
  this.#requestRender();
@@ -306,11 +315,17 @@ export class CodingAssistantApp {
306
315
  return;
307
316
  }
308
317
  const previousSlashCommandSuggestionCount = this.#slashCommandSuggestions().length;
318
+ const previousFileMentionSuggestionCount = this.#fileMentionSnapshot()?.items.length ?? 0;
309
319
  if (this.#handleSlashCommandAutocompleteInput(data)) {
310
320
  const nextSlashCommandSuggestionCount = this.#slashCommandSuggestions().length;
311
321
  this.#requestRender(nextSlashCommandSuggestionCount < previousSlashCommandSuggestionCount);
312
322
  return;
313
323
  }
324
+ if (this.#fileMentionAutocomplete?.handleInput(data, this.#editor.getLines(), this.#editor.getCursor(), (path, context) => this.#completeFileMention(path, context)) === true) {
325
+ const nextFileMentionSuggestionCount = this.#fileMentionSnapshot()?.items.length ?? 0;
326
+ this.#requestRender(nextFileMentionSuggestionCount < previousFileMentionSuggestionCount);
327
+ return;
328
+ }
314
329
  if (matchesKey(data, "escape")) {
315
330
  this.#markTypingActivity();
316
331
  this.#handleEscape();
@@ -327,9 +342,11 @@ export class CodingAssistantApp {
327
342
  }
328
343
  this.#markTypingActivity();
329
344
  this.#editor.handleInput(data);
330
- this.#syncSlashCommandAutocompleteState();
345
+ this.#syncAutocompleteState();
331
346
  const nextSlashCommandSuggestionCount = this.#slashCommandSuggestions().length;
332
- this.#requestRender(nextSlashCommandSuggestionCount < previousSlashCommandSuggestionCount);
347
+ const nextFileMentionSuggestionCount = this.#fileMentionSnapshot()?.items.length ?? 0;
348
+ this.#requestRender(nextSlashCommandSuggestionCount < previousSlashCommandSuggestionCount ||
349
+ nextFileMentionSuggestionCount < previousFileMentionSuggestionCount);
333
350
  }
334
351
  #handlePastedInput(data) {
335
352
  if (this.#bracketedPasteBuffer !== undefined) {
@@ -406,7 +423,7 @@ export class CodingAssistantApp {
406
423
  const prefix = currentText.length > 0 && !/\s$/u.test(currentText) ? " " : "";
407
424
  this.#markTypingActivity();
408
425
  this.#editor.insertTextAtCursor(`${prefix}${placeholder} `);
409
- this.#syncSlashCommandAutocompleteState();
426
+ this.#syncAutocompleteState();
410
427
  this.#requestRender();
411
428
  }
412
429
  #appendBracketedPaste(data) {
@@ -428,13 +445,13 @@ export class CodingAssistantApp {
428
445
  }
429
446
  #insertPaste(text) {
430
447
  if (text.length === 0) {
431
- this.#syncSlashCommandAutocompleteState();
448
+ this.#syncAutocompleteState();
432
449
  this.#requestRender();
433
450
  return;
434
451
  }
435
452
  this.#markTypingActivity();
436
453
  this.#editor.handleInput(`${BRACKETED_PASTE_START}${text}${BRACKETED_PASTE_END}`);
437
- this.#syncSlashCommandAutocompleteState();
454
+ this.#syncAutocompleteState();
438
455
  this.#requestRender();
439
456
  }
440
457
  #isPlainPastePayload(data) {
@@ -447,7 +464,12 @@ export class CodingAssistantApp {
447
464
  const safeWidth = Math.max(20, width);
448
465
  const header = this.#renderHeader(safeWidth);
449
466
  const slashCommandSuggestions = this.#slashCommandSuggestions();
450
- const footer = this.#renderFooter(safeWidth, slashCommandSuggestions);
467
+ const fileMentionSnapshot = slashCommandSuggestions.length === 0 ? this.#fileMentionSnapshot() : undefined;
468
+ const footer = this.#renderFooter(safeWidth, slashCommandSuggestions.length > 0
469
+ ? slashCommandSuggestions
470
+ : (fileMentionSnapshot?.items ?? []), slashCommandSuggestions.length > 0
471
+ ? this.#slashCommandSelectionIndex
472
+ : (fileMentionSnapshot?.selectedIndex ?? 0));
451
473
  const input = this.#renderInput(safeWidth);
452
474
  if (this.#exiting) {
453
475
  return [...header, ...this.#renderTranscript(safeWidth)];
@@ -483,6 +505,7 @@ export class CodingAssistantApp {
483
505
  return;
484
506
  }
485
507
  const prompt = submission.displayText;
508
+ this.#fileMentionAutocomplete?.clear();
486
509
  this.#editor.setText("");
487
510
  if (prompt.startsWith("/skill:")) {
488
511
  await this.#submitSkillCommand(prompt);
@@ -1096,9 +1119,9 @@ export class CodingAssistantApp {
1096
1119
  }
1097
1120
  return this.#renderNoticeEntry("system", entry.text, width, SURFACE_MUTED_FG);
1098
1121
  }
1099
- #renderFooter(width, slashCommandSuggestions = this.#slashCommandSuggestions()) {
1100
- if (slashCommandSuggestions.length > 0) {
1101
- return this.#renderSlashCommandAutocomplete(width, slashCommandSuggestions);
1122
+ #renderFooter(width, suggestions, selectedIndex) {
1123
+ if (suggestions.length > 0) {
1124
+ return this.#renderAutocomplete(width, suggestions, selectedIndex);
1102
1125
  }
1103
1126
  const parts = [`${FOOTER_MODEL_FG}${this.#modelWithReasoningDisplayName()}${RESET}`];
1104
1127
  parts.push(`${FOOTER_CWD_FG}${this.#cwdDisplayName()}${RESET}`);
@@ -1108,17 +1131,17 @@ export class CodingAssistantApp {
1108
1131
  const line = `${" ".repeat(visibleWidth(INPUT_PROMPT))}${parts.join(`${DIM} • ${RESET}`)}`;
1109
1132
  return [this.#fitLine(line, width)];
1110
1133
  }
1111
- #renderSlashCommandAutocomplete(width, suggestions, maxVisible = SLASH_COMMAND_MAX_VISIBLE) {
1134
+ #renderAutocomplete(width, suggestions, selectedIndex, maxVisible = AUTOCOMPLETE_MAX_VISIBLE) {
1112
1135
  const rowWidth = Math.max(1, width - 1);
1113
- const visibleCount = Math.max(1, Math.min(maxVisible, SLASH_COMMAND_MAX_VISIBLE));
1114
- const selectedIndex = Math.min(this.#slashCommandSelectionIndex, suggestions.length - 1);
1115
- const startIndex = Math.max(0, Math.min(selectedIndex - Math.floor(visibleCount / 2), suggestions.length - visibleCount));
1136
+ const visibleCount = Math.max(1, Math.min(maxVisible, AUTOCOMPLETE_MAX_VISIBLE));
1137
+ const safeSelectedIndex = Math.min(selectedIndex, suggestions.length - 1);
1138
+ const startIndex = Math.max(0, Math.min(safeSelectedIndex - Math.floor(visibleCount / 2), suggestions.length - visibleCount));
1116
1139
  const visibleSuggestions = suggestions.slice(startIndex, startIndex + visibleCount);
1117
1140
  const labelWidth = Math.max(8, ...visibleSuggestions.map((item) => visibleWidth(this.#singleLine(item.label)) + 2));
1118
1141
  const labelColumnWidth = Math.min(labelWidth, Math.max(1, rowWidth - 2));
1119
1142
  return visibleSuggestions.map((item, index) => {
1120
1143
  const absoluteIndex = startIndex + index;
1121
- const isSelected = absoluteIndex === selectedIndex;
1144
+ const isSelected = absoluteIndex === safeSelectedIndex;
1122
1145
  const marker = isSelected ? "→ " : " ";
1123
1146
  const label = this.#fitAndPadLine(this.#singleLine(item.label), labelColumnWidth);
1124
1147
  const remainingWidth = Math.max(0, rowWidth - visibleWidth(marker) - visibleWidth(label));
@@ -1698,13 +1721,26 @@ export class CodingAssistantApp {
1698
1721
  }
1699
1722
  return suggestions;
1700
1723
  }
1701
- #syncSlashCommandAutocompleteState() {
1724
+ #completeFileMention(path, context) {
1725
+ for (const _segment of FILE_MENTION_SEGMENTER.segment(context.prefix)) {
1726
+ this.#editor.handleInput("\x7f");
1727
+ }
1728
+ const suffix = context.afterCursor.length === 0 || !/^\s/u.test(context.afterCursor) ? " " : "";
1729
+ this.#editor.insertTextAtCursor(`${formatFileMention(path)}${suffix}`);
1730
+ this.#fileMentionAutocomplete?.clear();
1731
+ this.#syncAutocompleteState();
1732
+ }
1733
+ #fileMentionSnapshot() {
1734
+ return this.#fileMentionAutocomplete?.snapshot(this.#editor.getLines(), this.#editor.getCursor());
1735
+ }
1736
+ #syncAutocompleteState() {
1702
1737
  const text = this.#editor.getText();
1703
1738
  if (this.#dismissedSlashCommandText !== undefined &&
1704
1739
  text !== this.#dismissedSlashCommandText) {
1705
1740
  this.#dismissedSlashCommandText = undefined;
1706
1741
  }
1707
1742
  this.#slashCommandSuggestions();
1743
+ this.#fileMentionAutocomplete?.sync(this.#editor.getLines(), this.#editor.getCursor());
1708
1744
  }
1709
1745
  #reasoningShortcutDirection(data) {
1710
1746
  if (REASONING_DOWN_RAW_KEYS.has(data) ||
@@ -0,0 +1,27 @@
1
+ import { type AutocompleteItem } from "@earendil-works/pi-tui";
2
+ import type { FileSearchResult } from "../protocol/index.js";
3
+ import { type FileMentionContext } from "./findFileMentionContext.js";
4
+ export type SearchFilesForMention = (query: string) => Promise<readonly FileSearchResult[]>;
5
+ export interface FileMentionAutocompleteSnapshot {
6
+ context: FileMentionContext;
7
+ items: readonly AutocompleteItem[];
8
+ selectedIndex: number;
9
+ }
10
+ export declare class FileMentionAutocomplete {
11
+ #private;
12
+ constructor(searchFiles: SearchFilesForMention, onChange: () => void);
13
+ clear(): void;
14
+ handleInput(data: string, lines: readonly string[], cursor: {
15
+ line: number;
16
+ col: number;
17
+ }, onComplete: (path: string, context: FileMentionContext) => void): boolean;
18
+ snapshot(lines: readonly string[], cursor: {
19
+ line: number;
20
+ col: number;
21
+ }): FileMentionAutocompleteSnapshot | undefined;
22
+ sync(lines: readonly string[], cursor: {
23
+ line: number;
24
+ col: number;
25
+ }): void;
26
+ }
27
+ //# sourceMappingURL=FileMentionAutocomplete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FileMentionAutocomplete.d.ts","sourceRoot":"","sources":["../../sources/app/FileMentionAutocomplete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAI9F,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,gBAAgB,EAAE,CAAC,CAAC;AAE5F,MAAM,WAAW,+BAA+B;IAC5C,OAAO,EAAE,kBAAkB,CAAC;IAC5B,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnC,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,uBAAuB;;gBAWpB,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,IAAI;IAKpE,KAAK,IAAI,IAAI;IAQb,WAAW,CACP,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,EACrC,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,KAAK,IAAI,GAChE,OAAO;IAyCV,QAAQ,CACJ,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GACtC,+BAA+B,GAAG,SAAS;IAkB9C,IAAI,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;CAuD9E"}
@@ -0,0 +1,122 @@
1
+ import { matchesKey } from "@earendil-works/pi-tui";
2
+ import { createFileMentionAutocompleteItems } from "./createFileMentionAutocompleteItems.js";
3
+ import { findFileMentionContext } from "./findFileMentionContext.js";
4
+ const SEARCH_DEBOUNCE_MS = 80;
5
+ export class FileMentionAutocomplete {
6
+ #onChange;
7
+ #searchFiles;
8
+ #contextKey;
9
+ #dismissedContextKey;
10
+ #items = [];
11
+ #requestId = 0;
12
+ #searchTimer;
13
+ #selectedIndex = 0;
14
+ constructor(searchFiles, onChange) {
15
+ this.#searchFiles = searchFiles;
16
+ this.#onChange = onChange;
17
+ }
18
+ clear() {
19
+ this.#cancelSearch();
20
+ this.#contextKey = undefined;
21
+ this.#dismissedContextKey = undefined;
22
+ this.#items = [];
23
+ this.#selectedIndex = 0;
24
+ }
25
+ handleInput(data, lines, cursor, onComplete) {
26
+ const snapshot = this.snapshot(lines, cursor);
27
+ const context = snapshot?.context ?? findFileMentionContext(lines, cursor);
28
+ if (context === undefined || context.key === this.#dismissedContextKey) {
29
+ return false;
30
+ }
31
+ if (matchesKey(data, "escape")) {
32
+ this.#dismissedContextKey = context.key;
33
+ this.#cancelSearch();
34
+ this.#items = [];
35
+ this.#selectedIndex = 0;
36
+ return true;
37
+ }
38
+ if (snapshot === undefined || snapshot.items.length === 0) {
39
+ return false;
40
+ }
41
+ if (matchesKey(data, "up")) {
42
+ this.#selectedIndex =
43
+ (this.#selectedIndex + snapshot.items.length - 1) % snapshot.items.length;
44
+ return true;
45
+ }
46
+ if (matchesKey(data, "down")) {
47
+ this.#selectedIndex = (this.#selectedIndex + 1) % snapshot.items.length;
48
+ return true;
49
+ }
50
+ if (matchesKey(data, "enter") || matchesKey(data, "tab")) {
51
+ const selected = snapshot.items[this.#selectedIndex] ?? snapshot.items[0];
52
+ if (selected !== undefined) {
53
+ onComplete(selected.value, context);
54
+ }
55
+ return true;
56
+ }
57
+ return false;
58
+ }
59
+ snapshot(lines, cursor) {
60
+ const context = findFileMentionContext(lines, cursor);
61
+ if (context === undefined ||
62
+ context.key !== this.#contextKey ||
63
+ context.key === this.#dismissedContextKey ||
64
+ this.#items.length === 0) {
65
+ return undefined;
66
+ }
67
+ return {
68
+ context,
69
+ items: this.#items,
70
+ selectedIndex: this.#selectedIndex,
71
+ };
72
+ }
73
+ sync(lines, cursor) {
74
+ const context = findFileMentionContext(lines, cursor);
75
+ if (context === undefined) {
76
+ this.clear();
77
+ return;
78
+ }
79
+ if (context.key === this.#dismissedContextKey) {
80
+ this.#contextKey = context.key;
81
+ this.#items = [];
82
+ this.#selectedIndex = 0;
83
+ return;
84
+ }
85
+ if (context.key === this.#contextKey) {
86
+ return;
87
+ }
88
+ this.#dismissedContextKey = undefined;
89
+ this.#contextKey = context.key;
90
+ this.#cancelSearch();
91
+ const requestId = this.#requestId;
92
+ this.#searchTimer = setTimeout(() => {
93
+ this.#searchTimer = undefined;
94
+ void this.#runSearch(context, requestId);
95
+ }, SEARCH_DEBOUNCE_MS);
96
+ this.#searchTimer.unref?.();
97
+ }
98
+ #cancelSearch() {
99
+ this.#requestId += 1;
100
+ if (this.#searchTimer !== undefined) {
101
+ clearTimeout(this.#searchTimer);
102
+ this.#searchTimer = undefined;
103
+ }
104
+ }
105
+ async #runSearch(context, requestId) {
106
+ let files;
107
+ try {
108
+ files = await this.#searchFiles(context.query);
109
+ }
110
+ catch {
111
+ files = [];
112
+ }
113
+ if (requestId !== this.#requestId || context.key !== this.#contextKey) {
114
+ return;
115
+ }
116
+ this.#items = createFileMentionAutocompleteItems(files);
117
+ if (this.#selectedIndex >= this.#items.length) {
118
+ this.#selectedIndex = 0;
119
+ }
120
+ this.#onChange();
121
+ }
122
+ }
@@ -0,0 +1,4 @@
1
+ import type { AutocompleteItem } from "@earendil-works/pi-tui";
2
+ import type { FileSearchResult } from "../protocol/index.js";
3
+ export declare function createFileMentionAutocompleteItems(files: readonly FileSearchResult[]): AutocompleteItem[];
4
+ //# sourceMappingURL=createFileMentionAutocompleteItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createFileMentionAutocompleteItems.d.ts","sourceRoot":"","sources":["../../sources/app/createFileMentionAutocompleteItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,wBAAgB,kCAAkC,CAC9C,KAAK,EAAE,SAAS,gBAAgB,EAAE,GACnC,gBAAgB,EAAE,CAMpB"}
@@ -0,0 +1,7 @@
1
+ export function createFileMentionAutocompleteItems(files) {
2
+ return files.map((file) => ({
3
+ description: file.path,
4
+ label: file.fileName,
5
+ value: file.path,
6
+ }));
7
+ }
@@ -0,0 +1,10 @@
1
+ import { type FileMentionPrefix } from "./findFileMentionPrefix.js";
2
+ export interface FileMentionContext extends FileMentionPrefix {
3
+ afterCursor: string;
4
+ key: string;
5
+ }
6
+ export declare function findFileMentionContext(lines: readonly string[], cursor: {
7
+ line: number;
8
+ col: number;
9
+ }): FileMentionContext | undefined;
10
+ //# sourceMappingURL=findFileMentionContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findFileMentionContext.d.ts","sourceRoot":"","sources":["../../sources/app/findFileMentionContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE3F,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACf;AAED,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GACtC,kBAAkB,GAAG,SAAS,CAYhC"}
@@ -0,0 +1,13 @@
1
+ import { findFileMentionPrefix } from "./findFileMentionPrefix.js";
2
+ export function findFileMentionContext(lines, cursor) {
3
+ const line = lines[cursor.line] ?? "";
4
+ const mention = findFileMentionPrefix(line.slice(0, cursor.col));
5
+ if (mention === undefined) {
6
+ return undefined;
7
+ }
8
+ return {
9
+ ...mention,
10
+ afterCursor: line.slice(cursor.col),
11
+ key: `${cursor.line}:${cursor.col}:${mention.prefix}`,
12
+ };
13
+ }
@@ -0,0 +1,6 @@
1
+ export interface FileMentionPrefix {
2
+ prefix: string;
3
+ query: string;
4
+ }
5
+ export declare function findFileMentionPrefix(textBeforeCursor: string): FileMentionPrefix | undefined;
6
+ //# sourceMappingURL=findFileMentionPrefix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findFileMentionPrefix.d.ts","sourceRoot":"","sources":["../../sources/app/findFileMentionPrefix.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAkB7F"}
@@ -0,0 +1,17 @@
1
+ export function findFileMentionPrefix(textBeforeCursor) {
2
+ const quoted = /(?:^|\s)(@"([^"]*))$/u.exec(textBeforeCursor);
3
+ if (quoted?.[1] !== undefined) {
4
+ return {
5
+ prefix: quoted[1],
6
+ query: quoted[2] ?? "",
7
+ };
8
+ }
9
+ const unquoted = /(?:^|\s)(@([^\s"]*))$/u.exec(textBeforeCursor);
10
+ if (unquoted?.[1] === undefined) {
11
+ return undefined;
12
+ }
13
+ return {
14
+ prefix: unquoted[1],
15
+ query: unquoted[2] ?? "",
16
+ };
17
+ }
@@ -0,0 +1,2 @@
1
+ export declare function formatFileMention(path: string): string;
2
+ //# sourceMappingURL=formatFileMention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatFileMention.d.ts","sourceRoot":"","sources":["../../sources/app/formatFileMention.ts"],"names":[],"mappings":"AAAA,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMtD"}
@@ -0,0 +1,6 @@
1
+ export function formatFileMention(path) {
2
+ if (!/[\s"]/u.test(path)) {
3
+ return `@${path}`;
4
+ }
5
+ return `@"${path.replaceAll('"', '\\"')}"`;
6
+ }
@@ -6,7 +6,6 @@ export type { CodingAssistantRuntime } from "./CodingAssistantRuntime.js";
6
6
  export { createCodingAssistantAgent } from "./createCodingAssistantAgent.js";
7
7
  export type { CreateCodingAssistantAgentOptions } from "./createCodingAssistantAgent.js";
8
8
  export { createDefaultInstructions } from "./createDefaultInstructions.js";
9
- export { isMainModule } from "./isMainModule.js";
10
9
  export { main } from "./main.js";
11
10
  export { runDaemonCommand } from "./runDaemonCommand.js";
12
11
  export { runMonit } from "./runMonit.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACR,2BAA2B,EAC3B,0BAA0B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjG,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sources/app/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EACR,2BAA2B,EAC3B,0BAA0B,GAC7B,MAAM,kCAAkC,CAAC;AAC1C,YAAY,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjG,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACrF,YAAY,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAC1E,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
package/dist/app/index.js CHANGED
@@ -1,7 +1,6 @@
1
1
  export { CodingAssistantApp } from "./CodingAssistantApp.js";
2
2
  export { createCodingAssistantAgent } from "./createCodingAssistantAgent.js";
3
3
  export { createDefaultInstructions } from "./createDefaultInstructions.js";
4
- export { isMainModule } from "./isMainModule.js";
5
4
  export { main } from "./main.js";
6
5
  export { runDaemonCommand } from "./runDaemonCommand.js";
7
6
  export { runMonit } from "./runMonit.js";
@@ -1 +1 @@
1
- {"version":3,"file":"runApp.d.ts","sourceRoot":"","sources":["../../sources/app/runApp.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJvE"}
1
+ {"version":3,"file":"runApp.d.ts","sourceRoot":"","sources":["../../sources/app/runApp.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,aAAa;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwJvE"}
@@ -115,6 +115,9 @@ export async function runApp(options = {}) {
115
115
  });
116
116
  },
117
117
  processManager,
118
+ searchFiles: (query) => localServer.client
119
+ .searchFiles(session.session.id, query)
120
+ .then((response) => response.files),
118
121
  sessionBacked: true,
119
122
  showReasoning,
120
123
  tui,
@@ -1,4 +1,4 @@
1
- import type { AbortRunResponse, ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, CreateSessionResponse, EventId, HealthResponse, ListModelsResponse, ListSessionsResponse, ListSubagentsResponse, ProtocolSession, SessionEvent, ShutdownServerResponse, SubmitMessageRequest, SubmitMessageResponse } from "../protocol/index.js";
1
+ import type { AbortRunResponse, ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, CreateSessionResponse, EventId, HealthResponse, ListModelsResponse, ListSessionsResponse, ListSubagentsResponse, ProtocolSession, SearchFilesResponse, SessionEvent, ShutdownServerResponse, SubmitMessageRequest, SubmitMessageResponse } from "../protocol/index.js";
2
2
  export interface ProtocolHttpClientOptions {
3
3
  socketPath: string;
4
4
  token: string;
@@ -26,6 +26,7 @@ export declare class ProtocolHttpClient {
26
26
  models(): Promise<ListModelsResponse>;
27
27
  listSessions(limit?: number): Promise<ListSessionsResponse>;
28
28
  listSubagents(sessionId: string): Promise<ListSubagentsResponse>;
29
+ searchFiles(sessionId: string, query: string, limit?: number): Promise<SearchFilesResponse>;
29
30
  getSession(sessionId: string): Promise<{
30
31
  session: ProtocolSession;
31
32
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"ProtocolHttpClient.d.ts","sourceRoot":"","sources":["../../sources/client/ProtocolHttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,qBAAa,kBAAkB;;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,yBAAyB;IAK9C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInD,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI5E,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAIpE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAQlF,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAI/D,QAAQ,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI3C,aAAa,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsH9E"}
1
+ {"version":3,"file":"ProtocolHttpClient.d.ts","sourceRoot":"","sources":["../../sources/client/ProtocolHttpClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACtC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D;AAED,qBAAa,kBAAkB;;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,yBAAyB;IAK9C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAInD,WAAW,CACP,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,YAAY,CACR,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,GAC7B,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAQxC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAI5E,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;IAIjC,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAIrC,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAM3D,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIhE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAWvF,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAIpE,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IAQlF,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE,CAAC;IAI/D,QAAQ,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAI3C,aAAa,CACT,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAQ3B,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsH9E"}
@@ -31,6 +31,13 @@ export class ProtocolHttpClient {
31
31
  listSubagents(sessionId) {
32
32
  return this.#requestJson("GET", `/sessions/${encodeURIComponent(sessionId)}/subagents`);
33
33
  }
34
+ searchFiles(sessionId, query, limit = 20) {
35
+ const parameters = new URLSearchParams({
36
+ limit: String(limit),
37
+ query,
38
+ });
39
+ return this.#requestJson("GET", `/sessions/${encodeURIComponent(sessionId)}/files?${parameters.toString()}`);
40
+ }
34
41
  getSession(sessionId) {
35
42
  return this.#requestJson("GET", `/sessions/${encodeURIComponent(sessionId)}`);
36
43
  }
package/dist/main.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- export { main } from "./app/main.js";
2
+ export {};
3
3
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../sources/main.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../sources/main.ts"],"names":[],"mappings":""}
package/dist/main.js CHANGED
@@ -1,10 +1,6 @@
1
1
  #!/usr/bin/env node
2
- import { isMainModule } from "./app/isMainModule.js";
3
2
  import { main } from "./app/main.js";
4
- export { main } from "./app/main.js";
5
- if (isMainModule(import.meta.url)) {
6
- main().catch((error) => {
7
- console.error(error);
8
- process.exitCode = 1;
9
- });
10
- }
3
+ main().catch((error) => {
4
+ console.error(error);
5
+ process.exitCode = 1;
6
+ });
@@ -103,6 +103,13 @@ export interface ListSessionsResponse {
103
103
  export interface ListSubagentsResponse {
104
104
  subagents: readonly SubagentSummary[];
105
105
  }
106
+ export interface FileSearchResult {
107
+ fileName: string;
108
+ path: string;
109
+ }
110
+ export interface SearchFilesResponse {
111
+ files: readonly FileSearchResult[];
112
+ }
106
113
  export interface ShutdownServerResponse {
107
114
  shuttingDown: boolean;
108
115
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProtocol.d.ts","sourceRoot":"","sources":["../../sources/protocol/SessionProtocol.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SessionProtocol.d.ts","sourceRoot":"","sources":["../../sources/protocol/SessionProtocol.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export type { EventId } from "./EventId.js";
2
2
  export { createEventIdFactory, type EventIdFactoryOptions } from "./createEventIdFactory.js";
3
- export type { AbortRequestedEvent, AbortRunResponse, AgentMessageEvent, AgentStreamEvent, BaseSessionEvent, ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, CreateSessionResponse, EffortChangedEvent, ListSessionsResponse, ListSubagentsResponse, ListModelsResponse, HealthResponse, ModelCatalog, MessageSubmittedEvent, ModelChangedEvent, ProviderModelCatalog, ProtocolSession, RunErrorEvent, RunFinishedEvent, RunStartedEvent, ServerInitializationStatus, SessionCreatedEvent, SessionAgentMetadata, SessionAgentType, SessionEvent, SessionInterruption, SessionInterruptionReason, SessionResetEvent, SessionStatus, SessionTitleChangedEvent, SessionSummary, SubagentChangedEvent, SubagentSummary, SessionTitleStatus, ShutdownServerResponse, SubmitMessageRequest, SubmitMessageResponse, } from "./SessionProtocol.js";
3
+ export type { AbortRequestedEvent, AbortRunResponse, AgentMessageEvent, AgentStreamEvent, BaseSessionEvent, ChangeEffortRequest, ChangeModelRequest, CreateSessionRequest, CreateSessionResponse, EffortChangedEvent, FileSearchResult, ListSessionsResponse, ListSubagentsResponse, ListModelsResponse, HealthResponse, ModelCatalog, MessageSubmittedEvent, ModelChangedEvent, ProviderModelCatalog, ProtocolSession, RunErrorEvent, RunFinishedEvent, RunStartedEvent, SearchFilesResponse, ServerInitializationStatus, SessionCreatedEvent, SessionAgentMetadata, SessionAgentType, SessionEvent, SessionInterruption, SessionInterruptionReason, SessionResetEvent, SessionStatus, SessionTitleChangedEvent, SessionSummary, SubagentChangedEvent, SubagentSummary, SessionTitleStatus, ShutdownServerResponse, SubmitMessageRequest, SubmitMessageResponse, } from "./SessionProtocol.js";
4
4
  //# sourceMappingURL=index.d.ts.map