@xrkseek/harness 0.5.11 → 0.5.13

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 (152) hide show
  1. package/node_modules/@vscode/ripgrep/LICENSE +13 -0
  2. package/node_modules/@vscode/ripgrep/README.md +33 -0
  3. package/node_modules/@vscode/ripgrep/lib/index.d.ts +1 -0
  4. package/node_modules/@vscode/ripgrep/lib/index.js +19 -0
  5. package/node_modules/@vscode/ripgrep/package.json +39 -0
  6. package/node_modules/@vscode/ripgrep-win32-x64/LICENSE +13 -0
  7. package/node_modules/@vscode/ripgrep-win32-x64/README.md +5 -0
  8. package/node_modules/@vscode/ripgrep-win32-x64/bin/rg.exe +0 -0
  9. package/node_modules/@vscode/ripgrep-win32-x64/package.json +19 -0
  10. package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
  11. package/node_modules/@xrkseek/core-agent-loop/dist/index.js +20 -5
  12. package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
  13. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.d.ts.map +1 -1
  14. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js +4 -2
  15. package/node_modules/@xrkseek/core-tools/dist/subagent-prompt.js.map +1 -1
  16. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts +7 -9
  17. package/node_modules/@xrkseek/exec-fs/dist/index.d.ts.map +1 -1
  18. package/node_modules/@xrkseek/exec-fs/dist/index.js +60 -19
  19. package/node_modules/@xrkseek/exec-fs/dist/index.js.map +1 -1
  20. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.d.ts +63 -0
  21. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.d.ts.map +1 -0
  22. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.js +363 -0
  23. package/node_modules/@xrkseek/exec-fs/dist/ripgrep.js.map +1 -0
  24. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts +32 -3
  25. package/node_modules/@xrkseek/exec-fs/dist/search.d.ts.map +1 -1
  26. package/node_modules/@xrkseek/exec-fs/dist/search.js +189 -72
  27. package/node_modules/@xrkseek/exec-fs/dist/search.js.map +1 -1
  28. package/node_modules/@xrkseek/exec-fs/package.json +2 -0
  29. package/node_modules/@xrkseek/exec-shell/dist/index.d.ts +14 -1
  30. package/node_modules/@xrkseek/exec-shell/dist/index.d.ts.map +1 -1
  31. package/node_modules/@xrkseek/exec-shell/dist/index.js +37 -5
  32. package/node_modules/@xrkseek/exec-shell/dist/index.js.map +1 -1
  33. package/node_modules/@xrkseek/exec-subprocess/dist/capture.d.ts +73 -0
  34. package/node_modules/@xrkseek/exec-subprocess/dist/capture.d.ts.map +1 -0
  35. package/node_modules/@xrkseek/exec-subprocess/dist/capture.js +240 -0
  36. package/node_modules/@xrkseek/exec-subprocess/dist/capture.js.map +1 -0
  37. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts +19 -0
  38. package/node_modules/@xrkseek/exec-subprocess/dist/index.d.ts.map +1 -1
  39. package/node_modules/@xrkseek/exec-subprocess/dist/index.js +58 -21
  40. package/node_modules/@xrkseek/exec-subprocess/dist/index.js.map +1 -1
  41. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts +6 -7
  42. package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
  43. package/node_modules/@xrkseek/preset-harness/dist/preset.js +14 -11
  44. package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
  45. package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  46. package/node_modules/@xrkseek/preset-harness/package.json +1 -0
  47. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  48. package/node_modules/@xrkseek/preset-server/dist/preset.d.ts.map +1 -1
  49. package/node_modules/@xrkseek/preset-server/dist/preset.js +4 -1
  50. package/node_modules/@xrkseek/preset-server/dist/preset.js.map +1 -1
  51. package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
  52. package/node_modules/@xrkseek/server-config/dist/home.d.ts +1 -2
  53. package/node_modules/@xrkseek/server-config/dist/home.d.ts.map +1 -1
  54. package/node_modules/@xrkseek/server-config/dist/home.js +1 -2
  55. package/node_modules/@xrkseek/server-config/dist/home.js.map +1 -1
  56. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.d.ts +6 -0
  57. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.d.ts.map +1 -1
  58. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.js +28 -1
  59. package/node_modules/@xrkseek/server-face/dist/adapt/history-paginate.js.map +1 -1
  60. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.d.ts +11 -0
  61. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.d.ts.map +1 -1
  62. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.js +19 -0
  63. package/node_modules/@xrkseek/server-face/dist/adapt/wire-ids.js.map +1 -1
  64. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts +38 -2
  65. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.d.ts.map +1 -1
  66. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js +178 -37
  67. package/node_modules/@xrkseek/server-face/dist/agent-roster-store.js.map +1 -1
  68. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.d.ts.map +1 -1
  69. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js +17 -6
  70. package/node_modules/@xrkseek/server-face/dist/agent-roster-tools.js.map +1 -1
  71. package/node_modules/@xrkseek/server-face/dist/collab-board.d.ts +41 -0
  72. package/node_modules/@xrkseek/server-face/dist/collab-board.d.ts.map +1 -0
  73. package/node_modules/@xrkseek/server-face/dist/collab-board.js +79 -0
  74. package/node_modules/@xrkseek/server-face/dist/collab-board.js.map +1 -0
  75. package/node_modules/@xrkseek/server-face/dist/face-schema.d.ts.map +1 -1
  76. package/node_modules/@xrkseek/server-face/dist/face-schema.js +12 -2
  77. package/node_modules/@xrkseek/server-face/dist/face-schema.js.map +1 -1
  78. package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
  79. package/node_modules/@xrkseek/server-face/dist/handlers/session.js +8 -12
  80. package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
  81. package/node_modules/@xrkseek/server-face/dist/handlers/team.d.ts.map +1 -1
  82. package/node_modules/@xrkseek/server-face/dist/handlers/team.js +13 -1
  83. package/node_modules/@xrkseek/server-face/dist/handlers/team.js.map +1 -1
  84. package/node_modules/@xrkseek/server-face/dist/index.d.ts +4 -2
  85. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  86. package/node_modules/@xrkseek/server-face/dist/index.js +4 -2
  87. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  88. package/node_modules/@xrkseek/server-face/dist/presence-dressing.d.ts +26 -0
  89. package/node_modules/@xrkseek/server-face/dist/presence-dressing.d.ts.map +1 -0
  90. package/node_modules/@xrkseek/server-face/dist/presence-dressing.js +84 -0
  91. package/node_modules/@xrkseek/server-face/dist/presence-dressing.js.map +1 -0
  92. package/node_modules/@xrkseek/server-face/dist/presence-tools.d.ts.map +1 -1
  93. package/node_modules/@xrkseek/server-face/dist/presence-tools.js +9 -5
  94. package/node_modules/@xrkseek/server-face/dist/presence-tools.js.map +1 -1
  95. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts +1 -1
  96. package/node_modules/@xrkseek/server-face/dist/projections/index.d.ts.map +1 -1
  97. package/node_modules/@xrkseek/server-face/dist/projections/index.js +1 -1
  98. package/node_modules/@xrkseek/server-face/dist/projections/index.js.map +1 -1
  99. package/node_modules/@xrkseek/server-face/dist/projections/registry.d.ts +2 -2
  100. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts +15 -3
  101. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.d.ts.map +1 -1
  102. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js +23 -7
  103. package/node_modules/@xrkseek/server-face/dist/projections/units/turn-outline.js.map +1 -1
  104. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  105. package/node_modules/@xrkseek/server-face/dist/runtime.js +6 -4
  106. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  107. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts +49 -1
  108. package/node_modules/@xrkseek/server-face/dist/session-status.d.ts.map +1 -1
  109. package/node_modules/@xrkseek/server-face/dist/session-status.js +89 -18
  110. package/node_modules/@xrkseek/server-face/dist/session-status.js.map +1 -1
  111. package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts +17 -0
  112. package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts.map +1 -0
  113. package/node_modules/@xrkseek/server-face/dist/session-thread-message.js +34 -0
  114. package/node_modules/@xrkseek/server-face/dist/session-thread-message.js.map +1 -0
  115. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts +2 -0
  116. package/node_modules/@xrkseek/server-face/dist/session-thread-store.d.ts.map +1 -1
  117. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js +10 -0
  118. package/node_modules/@xrkseek/server-face/dist/session-thread-store.js.map +1 -1
  119. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts +15 -0
  120. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
  121. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +159 -7
  122. package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
  123. package/node_modules/@xrkseek/server-face/dist/settings-document.d.ts.map +1 -1
  124. package/node_modules/@xrkseek/server-face/dist/settings-document.js +36 -1
  125. package/node_modules/@xrkseek/server-face/dist/settings-document.js.map +1 -1
  126. package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
  127. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +28 -2
  128. package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
  129. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +6 -0
  130. package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
  131. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +18 -0
  132. package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
  133. package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
  134. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +2 -1
  135. package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
  136. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.d.ts +10 -0
  137. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.d.ts.map +1 -1
  138. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.js +68 -3
  139. package/node_modules/@xrkseek/server-face/dist/ws-send-queue.js.map +1 -1
  140. package/node_modules/@xrkseek/server-host/dist/index.d.ts +13 -8
  141. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  142. package/node_modules/@xrkseek/server-host/dist/index.js +30 -28
  143. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  144. package/node_modules/@xrkseek/workspace/dist/skills.d.ts +1 -1
  145. package/node_modules/@xrkseek/workspace/dist/skills.d.ts.map +1 -1
  146. package/node_modules/@xrkseek/workspace/dist/skills.js +1 -1
  147. package/node_modules/@xrkseek/workspace/dist/skills.js.map +1 -1
  148. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts +1 -1
  149. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.d.ts.map +1 -1
  150. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js +23 -1
  151. package/node_modules/@xrkseek/xrk-file-reference-local/dist/search.js.map +1 -1
  152. package/package.json +5 -1
@@ -1,7 +1,7 @@
1
- import { mkdir, readFile as fsReadFile, rm, stat as fsStat, writeFile, } from "node:fs/promises";
1
+ import { mkdir, open as fsOpen, readFile as fsReadFile, rm, stat as fsStat, writeFile, } from "node:fs/promises";
2
2
  import path from "node:path";
3
3
  import { applyLiteralEdit, detectLineEndings, normalizeLineEndings, restoreLineEndings, stripCarriageReturn, EditAmbiguousError, } from "./edit-text.js";
4
- import { textFromReadBuffer } from "./document-extract.js";
4
+ import { isDocumentExtractPath, textFromReadBuffer } from "./document-extract.js";
5
5
  import { formatReadWindow } from "./read-window.js";
6
6
  import { PathEscapeError, resolveUnderHostRoots, resolveWritablePath, resolveWithinRoot, } from "./paths.js";
7
7
  import { globUnderRoot, grepUnderRoot, } from "./search.js";
@@ -16,7 +16,8 @@ export { DEFAULT_READ_LINE_LIMIT, formatReadWindow, } from "./read-window.js";
16
16
  export { DOCUMENT_EXTRACT_MAX_BYTES, extractDocumentText, isDocumentExtractPath, textFromReadBuffer, } from "./document-extract.js";
17
17
  export { FS_ROUTING_PROMPT_TEXT, SHELL_ROUTING_PROMPT_TEXT, formatFsRoutingPrompt, formatShellRoutingPrompt, } from "./routing-prompt.js";
18
18
  export { createReadImageTool, formatImageReadOutput, imageMediaTypeForPath, parseAttachmentFilePath, } from "./read-image.js";
19
- export { globToRegExp, matchGlob, } from "./search.js";
19
+ export { FS_GREP_MAX_FILE_BYTES, FS_SEARCH_SKIP_DIR_NAMES, FS_SEARCH_WALK_CAP, forEachLine, globToRegExp, globWalkUnderRoot, grepWalkUnderRoot, matchGlob, } from "./search.js";
20
+ export { FS_GLOB_HEAVY_EXCLUDES, FS_GLOB_VCS_EXCLUDES, FS_SEARCH_RAW_OUTPUT_MAX_BYTES, FS_SEARCH_TIMEOUT_MS, RipgrepUnavailableError, buildGlobCommand, buildGrepCommand, clearRgPathCache, parseGrepJsonRecord, parseGrepMatches, preferJsSearch, resolveRgPath, } from "./ripgrep.js";
20
21
  export { langFromPath, presentEditCall, presentEditResult, presentGlobCall, presentGlobResult, presentGrepCall, presentGrepResult, presentPatchCall, presentPatchResult, presentReadCall, presentReadResult, presentWriteCall, presentWriteResult, } from "./present.js";
21
22
  export { parsePatch, patchPathsRequiringRead, patchTouchedPaths, PatchParseError, } from "./apply-patch-parser.js";
22
23
  export { applyPatchToFs, } from "./apply-patch.js";
@@ -75,17 +76,49 @@ export function createFsLocalProvider(options) {
75
76
  async read(userPath, maxBytes = defaultMaxBytes) {
76
77
  emit("fs/read-intent", userPath);
77
78
  const abs = resolveReadablePath(root, hostReadableRoots, extraWritableRoots, userPath);
78
- const buf = await fsReadFile(abs);
79
- return textFromReadBuffer(buf, userPath, maxBytes);
79
+ // Office/notebook extractors need the whole package; plain text reads
80
+ // only the leading maxBytes so a multi-MB source file cannot stall Host.
81
+ if (isDocumentExtractPath(userPath)) {
82
+ const buf = await fsReadFile(abs);
83
+ return textFromReadBuffer(buf, userPath, maxBytes);
84
+ }
85
+ const fh = await fsOpen(abs, "r");
86
+ try {
87
+ const st = await fh.stat();
88
+ if (st.size === 0)
89
+ return { content: "" };
90
+ const want = Math.min(st.size, maxBytes);
91
+ const buf = Buffer.allocUnsafe(want);
92
+ const { bytesRead } = await fh.read(buf, 0, want, 0);
93
+ const slice = buf.subarray(0, bytesRead);
94
+ const out = textFromReadBuffer(slice, userPath, maxBytes);
95
+ if (st.size > maxBytes) {
96
+ return { content: out.content, truncated: true };
97
+ }
98
+ return out;
99
+ }
100
+ finally {
101
+ await fh.close();
102
+ }
80
103
  },
81
104
  async readBytes(userPath, maxBytes = defaultMaxBytes) {
82
105
  emit("fs/read-intent", userPath);
83
106
  const abs = resolveReadablePath(root, hostReadableRoots, extraWritableRoots, userPath);
84
- const buf = await fsReadFile(abs);
85
- if (buf.byteLength > maxBytes) {
86
- throw new Error(`file exceeds read byte limit (${buf.byteLength} > ${maxBytes})`);
107
+ const fh = await fsOpen(abs, "r");
108
+ try {
109
+ const st = await fh.stat();
110
+ if (st.size > maxBytes) {
111
+ throw new Error(`file exceeds read byte limit (${st.size} > ${maxBytes})`);
112
+ }
113
+ if (st.size === 0)
114
+ return new Uint8Array();
115
+ const buf = Buffer.allocUnsafe(st.size);
116
+ const { bytesRead } = await fh.read(buf, 0, st.size, 0);
117
+ return new Uint8Array(buf.subarray(0, bytesRead));
118
+ }
119
+ finally {
120
+ await fh.close();
87
121
  }
88
- return new Uint8Array(buf);
89
122
  },
90
123
  async write(userPath, content) {
91
124
  emit("fs/write-intent", userPath);
@@ -160,7 +193,9 @@ export function createFsTools(fs) {
160
193
  name: "read_file",
161
194
  description: "Read a UTF-8 file with 1-based line numbers (`N|line`). " +
162
195
  "PDF, DOCX, XLSX, and ipynb are converted to text inside this tool. " +
163
- "Use offset/limit for large files. Path may be workspace-relative or absolute under the workspace root.",
196
+ "Use offset/limit for large files. Path may be workspace-relative, " +
197
+ "absolute under the workspace, or absolute under host-readable roots " +
198
+ "(product home `{XRK_HOME}` by default — spill, attachments, memories).",
164
199
  parameters: {
165
200
  type: "object",
166
201
  properties: {
@@ -200,7 +235,9 @@ export function createFsTools(fs) {
200
235
  },
201
236
  {
202
237
  name: "write_file",
203
- description: "Create or fully overwrite a UTF-8 file. Read the path in this turn first (write-intent).",
238
+ description: "Create or fully overwrite a UTF-8 file. Read the path in this turn first (write-intent). " +
239
+ "Workspace-relative paths stay under the workspace; absolute paths may use " +
240
+ "Settings → Permissions → extra writable roots (defaults include product home).",
204
241
  parameters: {
205
242
  type: "object",
206
243
  properties: {
@@ -227,9 +264,10 @@ export function createFsTools(fs) {
227
264
  {
228
265
  name: "apply_edit",
229
266
  description: "Replace a unique old_content snippet with content (literal substring edit). " +
230
- "copy old_content verbatim from this file (exact indentation, no elided lines) — " +
231
- "if you did not just read that exact text in this turn, read the file first; " +
232
- "Use replace_all when the snippet appears more than once. For whole-file overwrite prefer write_file.",
267
+ "Copy old_content verbatim from the file (exact indentation, no elided lines) — " +
268
+ "if you did not just read that exact text in this turn, read the file first. " +
269
+ "Use replace_all when the snippet appears more than once; prefer write_file for whole-file overwrite. " +
270
+ "Absolute paths may use Settings → Permissions → extra writable roots (defaults include product home).",
233
271
  parameters: {
234
272
  type: "object",
235
273
  properties: {
@@ -264,7 +302,8 @@ export function createFsTools(fs) {
264
302
  name: "apply_patch",
265
303
  description: "Apply a multi-file Codex-format patch (`*** Begin Patch` … `*** End Patch`). " +
266
304
  "Use for large or multi-file edits; `apply_edit` for a single unique snippet. " +
267
- "Update/Delete paths must be read in this turn first (write-intent).",
305
+ "Update/Delete paths must be read in this turn first (write-intent). " +
306
+ "Absolute paths may use Settings → Permissions → extra writable roots (defaults include product home).",
268
307
  parameters: {
269
308
  type: "object",
270
309
  properties: {
@@ -314,8 +353,9 @@ export function createFsTools(fs) {
314
353
  },
315
354
  {
316
355
  name: "glob",
317
- description: "List workspace-relative file paths matching a glob. " +
318
- "`*.ts` matches basenames at any depth; use `**/*.ts` or a path prefix for directory scoping.",
356
+ description: "List workspace-relative paths matching a glob (ripgrep --files, mtime order). " +
357
+ "Respects .gitignore; skips node_modules/dist/VCS. " +
358
+ "`*.ts` matches basenames; use `**/*.ts` or a path prefix to scope.",
319
359
  parameters: {
320
360
  type: "object",
321
361
  properties: {
@@ -355,8 +395,9 @@ export function createFsTools(fs) {
355
395
  },
356
396
  {
357
397
  name: "grep",
358
- description: "Search UTF-8 files with a JS RegExp (path:line:text). " +
359
- "Optional path scopes a file/dir; glob filters file names (e.g. **/*.ts). Default cap ~200 hits.",
398
+ description: "Search file contents with ripgrep (path:line:text). Respects .gitignore; " +
399
+ "skips node_modules/dist/VCS. Optional path scopes a file/dir; glob filters names (e.g. **/*.ts). " +
400
+ "Default cap ~100 hits.",
360
401
  parameters: {
361
402
  type: "object",
362
403
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Packaged ripgrep backend for `glob` / `grep`.
3
+ *
4
+ * Provenance (adapted, not Cordis-coupled):
5
+ * - DSH `@deepseek-ai/dsh-tool-fs-search` `search-core` / `glob` / `grep`
6
+ * (resolveRgPath, `--no-config`, `--files` / `--json`, VCS excludes, error codes)
7
+ * - pi `@mariozechner/pi-coding-agent` grep (stream `--json`, kill at match limit)
8
+ * - Codex bundled `rg` (packaged binary, no system install)
9
+ *
10
+ * Better than a pure JS walk on monorepos: native ignore rules, mmap search,
11
+ * early kill at `maxResults`. Falls back only when the binary is missing.
12
+ */
13
+ import type { FsGrepHit, FsGrepOptions, FsGlobOptions } from "./search.js";
14
+ /** Cooperative search budget (ms) — DSH / Claude Code default. */
15
+ export declare const FS_SEARCH_TIMEOUT_MS = 30000;
16
+ /** Cap on raw `rg --files` stdout we parse — DSH `RAW_OUTPUT_MAX_BYTES`. */
17
+ export declare const FS_SEARCH_RAW_OUTPUT_MAX_BYTES = 20000000;
18
+ /** DSH `GLOB_VCS_EXCLUDES` — prune VCS stores under `--hidden`. */
19
+ export declare const FS_GLOB_VCS_EXCLUDES: readonly [".git", ".svn", ".hg", ".bzr", ".jj", ".sl"];
20
+ /**
21
+ * Extra prune set beyond DSH (DSH glob uses `--no-ignore` and would scrape
22
+ * `node_modules`). We keep gitignore (pi) AND hard-exclude these basenames.
23
+ */
24
+ export declare const FS_GLOB_HEAVY_EXCLUDES: readonly ["node_modules", "dist", "build", "out", "coverage", ".next", ".nuxt", ".turbo", ".cache", ".parcel-cache", ".vite", "__pycache__", ".venv", "venv", "target", ".idea", ".gradle", ".codegraph", ".scratch-opus", "Pods"];
25
+ export declare class RipgrepUnavailableError extends Error {
26
+ constructor(message: string, options?: ErrorOptions);
27
+ }
28
+ /** DSH `resolveRgPath` — packaged `@vscode/ripgrep`, Electron asar unpack. */
29
+ export declare function resolveRgPath(): Promise<string>;
30
+ /** Test hook. */
31
+ export declare function clearRgPathCache(): void;
32
+ /**
33
+ * DSH `buildGlobCommand` + heavy excludes.
34
+ * Unlike DSH we omit `--no-ignore` (pi: respect `.gitignore`) and still prune
35
+ * generated trees when ignore files are missing.
36
+ */
37
+ export declare function buildGlobCommand(input: {
38
+ readonly pattern: string;
39
+ readonly path?: string;
40
+ }): string[];
41
+ /**
42
+ * DSH `buildGrepCommand` (+ heavy excludes, optional `-i`).
43
+ * Pattern / include as `--flag=value`; scope behind `--`.
44
+ */
45
+ export declare function buildGrepCommand(input: {
46
+ readonly pattern: string;
47
+ readonly path?: string;
48
+ readonly glob?: string;
49
+ readonly caseInsensitive?: boolean;
50
+ }): string[];
51
+ /** DSH `parseRecord` → our `FsGrepHit`. */
52
+ export declare function parseGrepJsonRecord(line: string): FsGrepHit | undefined;
53
+ export declare function parseGrepMatches(stdout: string): FsGrepHit[];
54
+ /** Glob via packaged rg `--files` (DSH). */
55
+ export declare function globWithRipgrep(root: string, pattern: string, options?: FsGlobOptions): Promise<readonly string[]>;
56
+ /**
57
+ * Grep via packaged rg `--json`, streaming + early kill at `maxResults`
58
+ * (pi coding-agent). Avoids buffering multi-MB stdout on hot repos.
59
+ */
60
+ export declare function grepWithRipgrep(root: string, pattern: string, options?: FsGrepOptions): Promise<readonly FsGrepHit[]>;
61
+ /** True when callers should skip ripgrep (`XRK_FS_SEARCH=js`). */
62
+ export declare function preferJsSearch(): boolean;
63
+ //# sourceMappingURL=ripgrep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ripgrep.d.ts","sourceRoot":"","sources":["../src/ripgrep.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E,kEAAkE;AAClE,eAAO,MAAM,oBAAoB,QAAS,CAAC;AAC3C,4EAA4E;AAC5E,eAAO,MAAM,8BAA8B,WAAa,CAAC;AAEzD,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,wDAOvB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sBAAsB,oOAqBzB,CAAC;AAEX,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AASD,8EAA8E;AAC9E,wBAAgB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAoB/C;AAED,iBAAiB;AACjB,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAUD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,EAAE,CAYX;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC,GAAG,MAAM,EAAE,CAeX;AASD,2CAA2C;AAC3C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CA+CvE;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,CAQ5D;AA2BD,4CAA4C;AAC5C,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CA6B5B;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,SAAS,SAAS,EAAE,CAAC,CA8G/B;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,OAAO,CAGxC"}
@@ -0,0 +1,363 @@
1
+ /**
2
+ * Packaged ripgrep backend for `glob` / `grep`.
3
+ *
4
+ * Provenance (adapted, not Cordis-coupled):
5
+ * - DSH `@deepseek-ai/dsh-tool-fs-search` `search-core` / `glob` / `grep`
6
+ * (resolveRgPath, `--no-config`, `--files` / `--json`, VCS excludes, error codes)
7
+ * - pi `@mariozechner/pi-coding-agent` grep (stream `--json`, kill at match limit)
8
+ * - Codex bundled `rg` (packaged binary, no system install)
9
+ *
10
+ * Better than a pure JS walk on monorepos: native ignore rules, mmap search,
11
+ * early kill at `maxResults`. Falls back only when the binary is missing.
12
+ */
13
+ import { spawn } from "node:child_process";
14
+ import { existsSync } from "node:fs";
15
+ import { createInterface } from "node:readline";
16
+ import path from "node:path";
17
+ import { createLocalSubprocess } from "@xrkseek/exec-subprocess";
18
+ import { resolveWithinRoot } from "./paths.js";
19
+ /** Cooperative search budget (ms) — DSH / Claude Code default. */
20
+ export const FS_SEARCH_TIMEOUT_MS = 30_000;
21
+ /** Cap on raw `rg --files` stdout we parse — DSH `RAW_OUTPUT_MAX_BYTES`. */
22
+ export const FS_SEARCH_RAW_OUTPUT_MAX_BYTES = 20_000_000;
23
+ /** DSH `GLOB_VCS_EXCLUDES` — prune VCS stores under `--hidden`. */
24
+ export const FS_GLOB_VCS_EXCLUDES = [
25
+ ".git",
26
+ ".svn",
27
+ ".hg",
28
+ ".bzr",
29
+ ".jj",
30
+ ".sl",
31
+ ];
32
+ /**
33
+ * Extra prune set beyond DSH (DSH glob uses `--no-ignore` and would scrape
34
+ * `node_modules`). We keep gitignore (pi) AND hard-exclude these basenames.
35
+ */
36
+ export const FS_GLOB_HEAVY_EXCLUDES = [
37
+ "node_modules",
38
+ "dist",
39
+ "build",
40
+ "out",
41
+ "coverage",
42
+ ".next",
43
+ ".nuxt",
44
+ ".turbo",
45
+ ".cache",
46
+ ".parcel-cache",
47
+ ".vite",
48
+ "__pycache__",
49
+ ".venv",
50
+ "venv",
51
+ "target",
52
+ ".idea",
53
+ ".gradle",
54
+ ".codegraph",
55
+ ".scratch-opus",
56
+ "Pods",
57
+ ];
58
+ export class RipgrepUnavailableError extends Error {
59
+ constructor(message, options) {
60
+ super(message, options);
61
+ this.name = "RipgrepUnavailableError";
62
+ }
63
+ }
64
+ /** Reject reasons must be Errors; a `catch` binding is typed `unknown`. */
65
+ function errorText(err) {
66
+ return err instanceof Error ? err.message : String(err);
67
+ }
68
+ let rgPathMemo;
69
+ /** DSH `resolveRgPath` — packaged `@vscode/ripgrep`, Electron asar unpack. */
70
+ export function resolveRgPath() {
71
+ rgPathMemo ??= (async () => {
72
+ try {
73
+ const mod = await import("@vscode/ripgrep");
74
+ const p = mod.rgPath;
75
+ if (typeof p !== "string" || !p || !existsSync(p)) {
76
+ throw new RipgrepUnavailableError("packaged ripgrep path missing on disk");
77
+ }
78
+ return process.versions.electron === undefined
79
+ ? p
80
+ : p.replace(/\.asar(?=[\\/])/u, ".asar.unpacked");
81
+ }
82
+ catch (err) {
83
+ if (err instanceof RipgrepUnavailableError)
84
+ throw err;
85
+ throw new RipgrepUnavailableError("packaged ripgrep (@vscode/ripgrep) unavailable", { cause: err });
86
+ }
87
+ })();
88
+ return rgPathMemo;
89
+ }
90
+ /** Test hook. */
91
+ export function clearRgPathCache() {
92
+ rgPathMemo = undefined;
93
+ }
94
+ function excludeGlobs(names) {
95
+ // DSH: bare form prunes during traversal; /** form covers root-at-dir.
96
+ return names.flatMap((name) => [
97
+ `--glob=!**/${name}`,
98
+ `--glob=!**/${name}/**`,
99
+ ]);
100
+ }
101
+ /**
102
+ * DSH `buildGlobCommand` + heavy excludes.
103
+ * Unlike DSH we omit `--no-ignore` (pi: respect `.gitignore`) and still prune
104
+ * generated trees when ignore files are missing.
105
+ */
106
+ export function buildGlobCommand(input) {
107
+ const parts = [
108
+ "--no-config",
109
+ "--files",
110
+ `--glob=${input.pattern}`,
111
+ "--sort=modified",
112
+ "--hidden",
113
+ ...excludeGlobs(FS_GLOB_VCS_EXCLUDES),
114
+ ...excludeGlobs(FS_GLOB_HEAVY_EXCLUDES),
115
+ ];
116
+ if (input.path !== undefined)
117
+ parts.push("--", input.path);
118
+ return parts;
119
+ }
120
+ /**
121
+ * DSH `buildGrepCommand` (+ heavy excludes, optional `-i`).
122
+ * Pattern / include as `--flag=value`; scope behind `--`.
123
+ */
124
+ export function buildGrepCommand(input) {
125
+ const parts = [
126
+ "--no-config",
127
+ "--json",
128
+ `--regexp=${input.pattern}`,
129
+ "--hidden",
130
+ ];
131
+ if (input.caseInsensitive)
132
+ parts.push("--ignore-case");
133
+ if (input.glob !== undefined)
134
+ parts.push(`--glob=${input.glob}`);
135
+ parts.push(...excludeGlobs(FS_GLOB_VCS_EXCLUDES), ...excludeGlobs(FS_GLOB_HEAVY_EXCLUDES));
136
+ if (input.path !== undefined)
137
+ parts.push("--", input.path);
138
+ return parts;
139
+ }
140
+ function malformedRecord(detail, cause) {
141
+ return new Error(`grep received malformed ripgrep --json output (${detail})`, { cause });
142
+ }
143
+ /** DSH `parseRecord` → our `FsGrepHit`. */
144
+ export function parseGrepJsonRecord(line) {
145
+ let parsed;
146
+ try {
147
+ parsed = JSON.parse(line);
148
+ }
149
+ catch (error) {
150
+ throw malformedRecord("a line is not JSON", error);
151
+ }
152
+ if (typeof parsed !== "object" || parsed === null) {
153
+ throw malformedRecord("a record is not an object");
154
+ }
155
+ const record = parsed;
156
+ if (record.type !== "match")
157
+ return undefined;
158
+ if (typeof record.data !== "object" || record.data === null) {
159
+ throw malformedRecord("a match record has no data");
160
+ }
161
+ const data = record.data;
162
+ const pathText = typeof data.path === "object" && data.path !== null
163
+ ? data.path.text
164
+ : undefined;
165
+ if (typeof pathText !== "string") {
166
+ throw malformedRecord("a match record has no path text");
167
+ }
168
+ if (typeof data.line_number !== "number") {
169
+ throw malformedRecord("a match record has no line number");
170
+ }
171
+ if (typeof data.lines !== "object" || data.lines === null) {
172
+ throw malformedRecord("a match record has no line content");
173
+ }
174
+ const lines = data.lines;
175
+ let text;
176
+ if (typeof lines.text === "string") {
177
+ text = lines.text.replace(/\r?\n$/, "");
178
+ }
179
+ else if (typeof lines.bytes === "string") {
180
+ text = "(line is not valid UTF-8)";
181
+ }
182
+ else {
183
+ throw malformedRecord("a match record has neither line text nor bytes");
184
+ }
185
+ return {
186
+ path: pathText.replace(/\\/g, "/"),
187
+ line: data.line_number,
188
+ text: text.length > 400 ? `${text.slice(0, 400)}…` : text,
189
+ };
190
+ }
191
+ export function parseGrepMatches(stdout) {
192
+ const hits = [];
193
+ for (const line of stdout.split("\n")) {
194
+ if (line.length === 0)
195
+ continue;
196
+ const hit = parseGrepJsonRecord(line);
197
+ if (hit !== undefined)
198
+ hits.push(hit);
199
+ }
200
+ return hits;
201
+ }
202
+ function classifyRgFailure(tool, exitCode, stderr) {
203
+ const excerpt = stderr.trim().slice(0, 400);
204
+ if (/regex parse error|error parsing glob/i.test(excerpt)) {
205
+ return new Error(`${tool} pattern rejected by ripgrep${excerpt ? `: ${excerpt}` : ""}`);
206
+ }
207
+ return new Error(`${tool} ripgrep failed (exit ${exitCode})${excerpt ? `: ${excerpt}` : ""}`);
208
+ }
209
+ function toDisplayPath(p, rootAbs) {
210
+ const norm = p.replace(/\\/g, "/");
211
+ if (!path.isAbsolute(p))
212
+ return norm.replace(/^\.\//, "");
213
+ const rel = path.relative(rootAbs, p).replace(/\\/g, "/");
214
+ if (rel === "" || rel === ".")
215
+ return ".";
216
+ if (rel.startsWith(".."))
217
+ return norm;
218
+ return rel;
219
+ }
220
+ /** Glob via packaged rg `--files` (DSH). */
221
+ export async function globWithRipgrep(root, pattern, options) {
222
+ const rootAbs = path.resolve(root);
223
+ const maxResults = options?.maxResults ?? 200;
224
+ const bin = await resolveRgPath();
225
+ const subprocess = createLocalSubprocess();
226
+ const result = await subprocess.spawn([bin, ...buildGlobCommand({ pattern })], {
227
+ cwd: rootAbs,
228
+ timeoutMs: FS_SEARCH_TIMEOUT_MS,
229
+ // Search never needs disk spill; keep the Host loop free of writeSync.
230
+ spill: false,
231
+ });
232
+ if (result.exitCode !== 0 && result.exitCode !== 1) {
233
+ throw classifyRgFailure("glob", result.exitCode ?? -1, result.stderr);
234
+ }
235
+ if (Buffer.byteLength(result.stdout, "utf8") > FS_SEARCH_RAW_OUTPUT_MAX_BYTES) {
236
+ throw new Error(`glob produced more than ${FS_SEARCH_RAW_OUTPUT_MAX_BYTES} bytes of raw output; narrow pattern`);
237
+ }
238
+ const out = [];
239
+ for (const line of result.stdout.split(/\r?\n/)) {
240
+ if (!line)
241
+ continue;
242
+ out.push(toDisplayPath(line, rootAbs));
243
+ if (out.length >= maxResults)
244
+ break;
245
+ }
246
+ return out;
247
+ }
248
+ /**
249
+ * Grep via packaged rg `--json`, streaming + early kill at `maxResults`
250
+ * (pi coding-agent). Avoids buffering multi-MB stdout on hot repos.
251
+ */
252
+ export async function grepWithRipgrep(root, pattern, options) {
253
+ const rootAbs = path.resolve(root);
254
+ const maxResults = options?.maxResults ?? 100;
255
+ const scope = options?.path;
256
+ let scopedPath;
257
+ if (scope !== undefined && scope !== "." && scope !== "") {
258
+ resolveWithinRoot(rootAbs, scope);
259
+ scopedPath = scope;
260
+ }
261
+ const bin = await resolveRgPath();
262
+ const argv = buildGrepCommand({
263
+ pattern,
264
+ ...(scopedPath !== undefined ? { path: scopedPath } : {}),
265
+ ...(options?.glob !== undefined ? { glob: options.glob } : {}),
266
+ ...(options?.caseInsensitive ? { caseInsensitive: true } : {}),
267
+ });
268
+ return await new Promise((resolve, reject) => {
269
+ const child = spawn(bin, argv, {
270
+ cwd: rootAbs,
271
+ stdio: ["ignore", "pipe", "pipe"],
272
+ windowsHide: true,
273
+ });
274
+ const hits = [];
275
+ let stderr = "";
276
+ let settled = false;
277
+ let killedForLimit = false;
278
+ const timer = setTimeout(() => {
279
+ killedForLimit = false;
280
+ try {
281
+ child.kill();
282
+ }
283
+ catch {
284
+ /* ignore */
285
+ }
286
+ }, FS_SEARCH_TIMEOUT_MS);
287
+ const finish = (fn) => {
288
+ if (settled)
289
+ return;
290
+ settled = true;
291
+ clearTimeout(timer);
292
+ fn();
293
+ };
294
+ child.stderr?.setEncoding("utf8");
295
+ child.stderr?.on("data", (chunk) => {
296
+ if (stderr.length < 8_192)
297
+ stderr += chunk;
298
+ });
299
+ const rl = createInterface({ input: child.stdout });
300
+ rl.on("line", (line) => {
301
+ if (settled || hits.length >= maxResults)
302
+ return;
303
+ if (!line.trim())
304
+ return;
305
+ let hit;
306
+ try {
307
+ hit = parseGrepJsonRecord(line);
308
+ }
309
+ catch (err) {
310
+ finish(() => reject(new Error(`ripgrep --json parse failed: ${errorText(err)}`, {
311
+ cause: err,
312
+ })));
313
+ try {
314
+ child.kill();
315
+ }
316
+ catch {
317
+ /* ignore */
318
+ }
319
+ return;
320
+ }
321
+ if (hit === undefined)
322
+ return;
323
+ hits.push({
324
+ ...hit,
325
+ path: toDisplayPath(hit.path, rootAbs),
326
+ });
327
+ if (hits.length >= maxResults) {
328
+ killedForLimit = true;
329
+ try {
330
+ child.kill();
331
+ }
332
+ catch {
333
+ /* ignore */
334
+ }
335
+ }
336
+ });
337
+ child.on("error", (err) => {
338
+ finish(() => reject(new RipgrepUnavailableError(`Failed to run ripgrep: ${err.message}`, {
339
+ cause: err,
340
+ })));
341
+ });
342
+ child.on("close", (code) => {
343
+ rl.close();
344
+ finish(() => {
345
+ if (killedForLimit) {
346
+ resolve(hits);
347
+ return;
348
+ }
349
+ if (code !== 0 && code !== 1 && code !== null) {
350
+ reject(classifyRgFailure("grep", code, stderr));
351
+ return;
352
+ }
353
+ resolve(hits);
354
+ });
355
+ });
356
+ });
357
+ }
358
+ /** True when callers should skip ripgrep (`XRK_FS_SEARCH=js`). */
359
+ export function preferJsSearch() {
360
+ const raw = process.env.XRK_FS_SEARCH?.trim().toLowerCase();
361
+ return raw === "js" || raw === "walk" || raw === "javascript";
362
+ }
363
+ //# sourceMappingURL=ripgrep.js.map