pi-forge 0.0.0 → 1.1.5

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 (163) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -4
  3. package/bin/fix-pty-perms.mjs +69 -0
  4. package/bin/pi-forge.mjs +37 -0
  5. package/dist/client/assets/CodeMirrorEditor-EHkmefTD.js +50 -0
  6. package/dist/client/assets/CodeMirrorEditor-EHkmefTD.js.map +1 -0
  7. package/dist/client/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  8. package/dist/client/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  9. package/dist/client/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  10. package/dist/client/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  11. package/dist/client/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  12. package/dist/client/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  13. package/dist/client/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  14. package/dist/client/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  15. package/dist/client/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  16. package/dist/client/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  17. package/dist/client/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  18. package/dist/client/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  19. package/dist/client/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  20. package/dist/client/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  21. package/dist/client/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  22. package/dist/client/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  23. package/dist/client/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  24. package/dist/client/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  25. package/dist/client/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  26. package/dist/client/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  27. package/dist/client/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  28. package/dist/client/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  29. package/dist/client/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  30. package/dist/client/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  31. package/dist/client/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  32. package/dist/client/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  33. package/dist/client/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  34. package/dist/client/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  35. package/dist/client/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  36. package/dist/client/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  37. package/dist/client/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  38. package/dist/client/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  39. package/dist/client/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  40. package/dist/client/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  41. package/dist/client/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  42. package/dist/client/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  43. package/dist/client/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  44. package/dist/client/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  45. package/dist/client/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  46. package/dist/client/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  47. package/dist/client/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  48. package/dist/client/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  49. package/dist/client/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  50. package/dist/client/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  51. package/dist/client/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  52. package/dist/client/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  53. package/dist/client/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  54. package/dist/client/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  55. package/dist/client/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  56. package/dist/client/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  57. package/dist/client/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  58. package/dist/client/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  59. package/dist/client/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  60. package/dist/client/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  61. package/dist/client/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  62. package/dist/client/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  63. package/dist/client/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  64. package/dist/client/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  65. package/dist/client/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  66. package/dist/client/assets/index-5KN1PFqY.css +1 -0
  67. package/dist/client/assets/index-B0ffzJ0t.js +356 -0
  68. package/dist/client/assets/index-B0ffzJ0t.js.map +1 -0
  69. package/dist/client/assets/workbox-window.prod.es5-Cch4wiA5.js +3 -0
  70. package/dist/client/assets/workbox-window.prod.es5-Cch4wiA5.js.map +1 -0
  71. package/dist/client/icons/icon-192.png +0 -0
  72. package/dist/client/icons/icon-512.png +0 -0
  73. package/dist/client/icons/icon-maskable-512.png +0 -0
  74. package/dist/client/icons/icon.svg +9 -0
  75. package/dist/client/index.html +24 -0
  76. package/dist/client/manifest.webmanifest +1 -0
  77. package/dist/client/offline.html +142 -0
  78. package/dist/client/sw.js +3 -0
  79. package/dist/client/sw.js.map +1 -0
  80. package/dist/client/workbox-6d7155ed.js +3 -0
  81. package/dist/client/workbox-6d7155ed.js.map +1 -0
  82. package/dist/server/agent-resource-loader.js +126 -0
  83. package/dist/server/agent-resource-loader.js.map +1 -0
  84. package/dist/server/attachment-converters.js +96 -0
  85. package/dist/server/attachment-converters.js.map +1 -0
  86. package/dist/server/auth.js +209 -0
  87. package/dist/server/auth.js.map +1 -0
  88. package/dist/server/compaction-history.js +106 -0
  89. package/dist/server/compaction-history.js.map +1 -0
  90. package/dist/server/concurrency.js +49 -0
  91. package/dist/server/concurrency.js.map +1 -0
  92. package/dist/server/config-export.js +220 -0
  93. package/dist/server/config-export.js.map +1 -0
  94. package/dist/server/config-manager.js +531 -0
  95. package/dist/server/config-manager.js.map +1 -0
  96. package/dist/server/config.js +326 -0
  97. package/dist/server/config.js.map +1 -0
  98. package/dist/server/conversion-worker.mjs +90 -0
  99. package/dist/server/diagnostics.js +137 -0
  100. package/dist/server/diagnostics.js.map +1 -0
  101. package/dist/server/extensions-discovery.js +147 -0
  102. package/dist/server/extensions-discovery.js.map +1 -0
  103. package/dist/server/file-manager.js +752 -0
  104. package/dist/server/file-manager.js.map +1 -0
  105. package/dist/server/file-references.js +310 -0
  106. package/dist/server/file-references.js.map +1 -0
  107. package/dist/server/file-searcher.js +385 -0
  108. package/dist/server/file-searcher.js.map +1 -0
  109. package/dist/server/git-runner.js +684 -0
  110. package/dist/server/git-runner.js.map +1 -0
  111. package/dist/server/index.js +468 -0
  112. package/dist/server/index.js.map +1 -0
  113. package/dist/server/mcp/config.js +133 -0
  114. package/dist/server/mcp/config.js.map +1 -0
  115. package/dist/server/mcp/manager.js +351 -0
  116. package/dist/server/mcp/manager.js.map +1 -0
  117. package/dist/server/mcp/tool-bridge.js +173 -0
  118. package/dist/server/mcp/tool-bridge.js.map +1 -0
  119. package/dist/server/project-manager.js +301 -0
  120. package/dist/server/project-manager.js.map +1 -0
  121. package/dist/server/pty-manager.js +354 -0
  122. package/dist/server/pty-manager.js.map +1 -0
  123. package/dist/server/routes/_schemas.js +73 -0
  124. package/dist/server/routes/_schemas.js.map +1 -0
  125. package/dist/server/routes/auth.js +164 -0
  126. package/dist/server/routes/auth.js.map +1 -0
  127. package/dist/server/routes/config.js +1195 -0
  128. package/dist/server/routes/config.js.map +1 -0
  129. package/dist/server/routes/control.js +464 -0
  130. package/dist/server/routes/control.js.map +1 -0
  131. package/dist/server/routes/exec.js +217 -0
  132. package/dist/server/routes/exec.js.map +1 -0
  133. package/dist/server/routes/files.js +847 -0
  134. package/dist/server/routes/files.js.map +1 -0
  135. package/dist/server/routes/git.js +837 -0
  136. package/dist/server/routes/git.js.map +1 -0
  137. package/dist/server/routes/health.js +122 -0
  138. package/dist/server/routes/health.js.map +1 -0
  139. package/dist/server/routes/mcp.js +300 -0
  140. package/dist/server/routes/mcp.js.map +1 -0
  141. package/dist/server/routes/projects.js +259 -0
  142. package/dist/server/routes/projects.js.map +1 -0
  143. package/dist/server/routes/prompt.js +496 -0
  144. package/dist/server/routes/prompt.js.map +1 -0
  145. package/dist/server/routes/sessions.js +783 -0
  146. package/dist/server/routes/sessions.js.map +1 -0
  147. package/dist/server/routes/stream.js +69 -0
  148. package/dist/server/routes/stream.js.map +1 -0
  149. package/dist/server/routes/terminal.js +335 -0
  150. package/dist/server/routes/terminal.js.map +1 -0
  151. package/dist/server/session-registry.js +1197 -0
  152. package/dist/server/session-registry.js.map +1 -0
  153. package/dist/server/skill-overrides.js +151 -0
  154. package/dist/server/skill-overrides.js.map +1 -0
  155. package/dist/server/skills-export.js +257 -0
  156. package/dist/server/skills-export.js.map +1 -0
  157. package/dist/server/sse-bridge.js +220 -0
  158. package/dist/server/sse-bridge.js.map +1 -0
  159. package/dist/server/tool-overrides.js +277 -0
  160. package/dist/server/tool-overrides.js.map +1 -0
  161. package/dist/server/turn-diff-builder.js +280 -0
  162. package/dist/server/turn-diff-builder.js.map +1 -0
  163. package/package.json +56 -12
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-manager.js","sourceRoot":"","sources":["../src/file-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,310 @@
1
+ import { extname, join } from "node:path";
2
+ import { checkFileReference, readFile } from "./file-manager.js";
3
+ /**
4
+ * Process `@<path>` references in user input. The chat input's
5
+ * `@`-autocomplete inserts these markers; this helper transforms them
6
+ * server-side before the prompt reaches pi's `session.prompt()`.
7
+ *
8
+ * Threshold-based design: small files get inlined as fenced code blocks
9
+ * (the model has the content immediately, no tool round-trip); large
10
+ * files stay as the literal `@<path>` reference (the model loads what
11
+ * it needs via its read/grep/find tools, no context-burn on a 50 MB
12
+ * log we'd otherwise inhale wholesale).
13
+ *
14
+ * The chat UI renders BOTH forms as collapsed file badges in the user
15
+ * message bubble, so visually the user sees a chip either way; the
16
+ * difference is purely whether the LLM has the content in-prompt or
17
+ * has to fetch it.
18
+ *
19
+ * Behaviour:
20
+ * - Markers must be at start-of-string OR preceded by whitespace
21
+ * (avoid expanding `email@example.com`).
22
+ * - Two path forms accepted:
23
+ * `@<path>` — greedy non-whitespace; common case.
24
+ * `@"<path with spaces>"` — anything that isn't a `"` or newline.
25
+ * - Resolved against the project's workspace root via file-manager's
26
+ * path-traversal-safe `checkFileReference`. Four outcomes:
27
+ * inline → file ≤ INLINE_THRESHOLD; replace marker with a
28
+ * fenced code block. Language hint derived from
29
+ * extension.
30
+ * defer → file > INLINE_THRESHOLD; leave the literal `@<path>`
31
+ * reference for the model to load on demand.
32
+ * directory → path is a directory; preserve the marker normalized
33
+ * with a trailing `/` (e.g. `@src/components/`) so
34
+ * the model can ls/find/grep it via its tools. We
35
+ * intentionally do NOT bulk-embed directory contents
36
+ * — large dirs would blow the context window, and
37
+ * the model has cheap tools to explore on demand.
38
+ * error → missing / outside root / binary. Replace marker
39
+ * with `[@<path> not included: <reason>]` so neither
40
+ * user nor model is left guessing.
41
+ *
42
+ * Multiple markers in one prompt are classified independently, then
43
+ * inline candidates compete for a shared aggregate budget. See
44
+ * `AGGREGATE_INLINE_BUDGET_BYTES` for the cap and the smallest-first
45
+ * walk that keeps the degradation graceful.
46
+ */
47
+ /**
48
+ * Per-file inlining cutoff. Files at or under this byte count are
49
+ * eligible for inlining; larger files are left as `@<path>` for the
50
+ * model to fetch. 128 KB is roughly 32K tokens — small enough to be
51
+ * safe in a 200K-token context window and large enough to cover most
52
+ * real source files (a 1k-line TS file is typically ~50 KB).
53
+ */
54
+ const INLINE_THRESHOLD_BYTES = 128 * 1024;
55
+ /**
56
+ * Aggregate cap on TOTAL bytes inlined across every `@<path>` in a
57
+ * single prompt. Without this, a user `@`-ing 50 mid-sized files
58
+ * (each well under the per-file cap) could push 5+ MB into a single
59
+ * prompt and blow the model's context window. 512 KB ≈ 128K tokens,
60
+ * which leaves comfortable headroom for the user's prose, the system
61
+ * prompt, the model's response, and tool round-trips inside a 200K
62
+ * context window.
63
+ *
64
+ * Files that would push the running total over this cap fall back to
65
+ * `defer` (the model can still load them via its read tool on demand).
66
+ * We process candidates in ascending size order so the smallest /
67
+ * cheapest files inline first — graceful degradation: a 2 KB
68
+ * package.json + a 90 KB README both inline, and the 50th mid-sized
69
+ * file is the one that defers, not whichever happened to be parsed
70
+ * first in the user's text.
71
+ */
72
+ const AGGREGATE_INLINE_BUDGET_BYTES = 512 * 1024;
73
+ /**
74
+ * Regex shared by `findRefs` and `parseFileReferences`. Match `@` at
75
+ * start-or-after-whitespace then either a `"path with spaces"` quoted
76
+ * form or a bare non-whitespace token.
77
+ *
78
+ * The bare alternation is lazy + uses a lookahead so trailing
79
+ * sentence punctuation (`?`, `,`, `;`, `:`, `!`, `)`, `]`) followed by
80
+ * whitespace or end-of-string isn't pulled into the path. Without
81
+ * this, `@README.md?` matches `README.md?` and the server can't
82
+ * resolve the file. The `.` is intentionally NOT in the strip set
83
+ * because dots are common in filenames (`README.md`, `tsconfig.json`)
84
+ * — users who want a literal trailing period should use the quoted
85
+ * form (`@"file.txt".`), same escape hatch as filenames with spaces.
86
+ */
87
+ const REF_RE = /(^|\s)@(?:"([^"\n]+)"|([^\s]+?))(?=[?,;:!)\]]?(?:\s|$))/g;
88
+ function findRefs(text) {
89
+ const matches = [];
90
+ let m;
91
+ // Reset the regex state between calls — REF_RE is module-level with
92
+ // the `g` flag, so it carries `lastIndex` across invocations.
93
+ REF_RE.lastIndex = 0;
94
+ while ((m = REF_RE.exec(text)) !== null) {
95
+ matches.push({
96
+ start: m.index,
97
+ end: m.index + m[0].length,
98
+ lead: m[1] ?? "",
99
+ path: m[2] ?? m[3] ?? "",
100
+ });
101
+ }
102
+ return matches;
103
+ }
104
+ /**
105
+ * Parse `@<path>` references out of a text without touching it. Used
106
+ * by the chat input to surface badges of what's about to be sent.
107
+ */
108
+ export function parseFileReferences(text) {
109
+ return findRefs(text).map((m) => m.path);
110
+ }
111
+ export async function expandFileReferences(text, workspacePath) {
112
+ const matches = findRefs(text);
113
+ if (matches.length === 0)
114
+ return text;
115
+ // Phase 1: classify every marker in parallel. Cheap — `checkFileReference`
116
+ // does a path-safety check + a stat + an 8 KB binary sniff. No content
117
+ // reads here, so there's no point doing the budget walk later if all
118
+ // we've spent is a few stats.
119
+ const classifications = await Promise.all(matches.map(async (mm) => {
120
+ try {
121
+ const abs = join(workspacePath, mm.path);
122
+ const check = await checkFileReference(abs, workspacePath);
123
+ if (check.kind === "directory")
124
+ return { kind: "directory" };
125
+ if (check.binary)
126
+ return { kind: "error", reason: "binary file" };
127
+ if (check.size > INLINE_THRESHOLD_BYTES)
128
+ return { kind: "deferLarge" };
129
+ return { kind: "inlineCandidate", size: check.size, abs };
130
+ }
131
+ catch (err) {
132
+ const e = err;
133
+ if (e.name === "NotFoundError" || e.code === "ENOENT") {
134
+ return { kind: "error", reason: "file not found" };
135
+ }
136
+ if (e.name === "PathOutsideRootError") {
137
+ return { kind: "error", reason: "path is outside the project root" };
138
+ }
139
+ // NotAFileError now only fires for non-regular non-directory
140
+ // entries (sockets, devices, etc.) — directories are handled
141
+ // explicitly via the directory outcome above.
142
+ if (e.name === "NotAFileError") {
143
+ return { kind: "error", reason: "path is not a regular file or directory" };
144
+ }
145
+ return { kind: "error", reason: "unreadable" };
146
+ }
147
+ }));
148
+ // Phase 2: aggregate-budget walk. Sort inline candidates ascending by
149
+ // size and walk until the budget runs out. Survivors get marked for
150
+ // inlining; the rest fall back to defer. Walking smallest-first
151
+ // maximises the number of useful inlines before the budget exhausts —
152
+ // a 2 KB `package.json` + 90 KB README both fit, and the 50th
153
+ // mid-sized file is the one that defers, not whichever happened to
154
+ // be parsed first in the user's text.
155
+ const inlineSet = new Set();
156
+ const candidateIndices = [];
157
+ for (let i = 0; i < classifications.length; i += 1) {
158
+ const c = classifications[i];
159
+ if (c?.kind === "inlineCandidate")
160
+ candidateIndices.push({ i, size: c.size });
161
+ }
162
+ candidateIndices.sort((a, b) => a.size - b.size);
163
+ let remaining = AGGREGATE_INLINE_BUDGET_BYTES;
164
+ for (const { i, size } of candidateIndices) {
165
+ if (size <= remaining) {
166
+ inlineSet.add(i);
167
+ remaining -= size;
168
+ }
169
+ // Else: this index falls back to defer in phase 3. We DON'T break
170
+ // here — a single oversized candidate still leaves room for
171
+ // smaller ones later in the (size-sorted) walk.
172
+ }
173
+ // Phase 3: read content for the budget survivors, materialise the
174
+ // final outcomes for everything else. Index order preserved so the
175
+ // splice loop below can apply each outcome at its original marker
176
+ // position in the user's text.
177
+ const outcomes = await Promise.all(classifications.map(async (c, i) => {
178
+ if (c.kind === "directory")
179
+ return { kind: "directory" };
180
+ if (c.kind === "error")
181
+ return { kind: "error", reason: c.reason };
182
+ if (c.kind === "deferLarge")
183
+ return { kind: "defer" };
184
+ // c.kind === "inlineCandidate"
185
+ if (!inlineSet.has(i))
186
+ return { kind: "defer" };
187
+ try {
188
+ const result = await readFile(c.abs, workspacePath);
189
+ if (result.binary)
190
+ return { kind: "error", reason: "binary file" };
191
+ const mm = matches[i];
192
+ if (mm === undefined)
193
+ return { kind: "defer" };
194
+ return { kind: "inline", text: formatExpansion(mm.path, result.content) };
195
+ }
196
+ catch (err) {
197
+ const e = err;
198
+ if (e.name === "FileTooLargeError") {
199
+ // readFile's own 5 MB cap fired — defer to model tool use.
200
+ // Shouldn't normally hit this since classification already
201
+ // catches anything > INLINE_THRESHOLD_BYTES, but
202
+ // belt-and-suspenders for cases where the file grew between
203
+ // check and read.
204
+ return { kind: "defer" };
205
+ }
206
+ if (e.name === "NotFoundError" || e.code === "ENOENT") {
207
+ return { kind: "error", reason: "file not found" };
208
+ }
209
+ return { kind: "error", reason: "unreadable" };
210
+ }
211
+ }));
212
+ // Walk in reverse so earlier indices stay valid as we splice.
213
+ let out = text;
214
+ for (let i = matches.length - 1; i >= 0; i--) {
215
+ const outcome = outcomes[i];
216
+ const mm = matches[i];
217
+ if (outcome === undefined || mm === undefined)
218
+ continue;
219
+ const before = out.slice(0, mm.start) + mm.lead;
220
+ const after = out.slice(mm.end);
221
+ // Re-emit the marker (preserve quoting if path has whitespace) so
222
+ // the user's prose still reads "look at @src/foo.ts and explain"
223
+ // after expansion. Previously the inline branch dropped the marker
224
+ // entirely and only kept the fenced block, which broke the flow of
225
+ // the surrounding sentence in the chat history.
226
+ const marker = /\s/.test(mm.path) ? `@"${mm.path}"` : `@${mm.path}`;
227
+ if (outcome.kind === "inline") {
228
+ out = `${before}${marker}\n${outcome.text}\n${after}`;
229
+ }
230
+ else if (outcome.kind === "defer") {
231
+ out = `${before}${marker}${after}`;
232
+ }
233
+ else if (outcome.kind === "directory") {
234
+ // Normalize the directory marker to end with `/` so the model
235
+ // can tell file vs folder at a glance — same convention as
236
+ // `ls -F`. If the user already typed the trailing slash we
237
+ // keep their form; otherwise we append one.
238
+ const dirPath = mm.path.endsWith("/") ? mm.path : `${mm.path}/`;
239
+ const dirMarker = /\s/.test(dirPath) ? `@"${dirPath}"` : `@${dirPath}`;
240
+ out = `${before}${dirMarker}${after}`;
241
+ }
242
+ else {
243
+ out = `${before}[${marker} not included: ${outcome.reason}]${after}`;
244
+ }
245
+ }
246
+ return out;
247
+ }
248
+ function formatExpansion(path, content) {
249
+ const lang = languageHintForPath(path);
250
+ // Pick a fence longer than any backtick run inside the content so
251
+ // the block can't be terminated by source that itself contains
252
+ // ``` (markdown / docs files do this).
253
+ const fence = pickFence(content);
254
+ return `${fence}${lang} file: ${path}\n${content}\n${fence}`;
255
+ }
256
+ function pickFence(content) {
257
+ let max = 0;
258
+ let run = 0;
259
+ for (const ch of content) {
260
+ if (ch === "`") {
261
+ run += 1;
262
+ if (run > max)
263
+ max = run;
264
+ }
265
+ else {
266
+ run = 0;
267
+ }
268
+ }
269
+ return "`".repeat(Math.max(3, max + 1));
270
+ }
271
+ const LANG_BY_EXT = {
272
+ ".ts": "ts",
273
+ ".tsx": "tsx",
274
+ ".js": "js",
275
+ ".jsx": "jsx",
276
+ ".mjs": "js",
277
+ ".cjs": "js",
278
+ ".json": "json",
279
+ ".py": "python",
280
+ ".rb": "ruby",
281
+ ".go": "go",
282
+ ".rs": "rust",
283
+ ".java": "java",
284
+ ".kt": "kotlin",
285
+ ".swift": "swift",
286
+ ".c": "c",
287
+ ".h": "c",
288
+ ".cpp": "cpp",
289
+ ".cc": "cpp",
290
+ ".hpp": "cpp",
291
+ ".cs": "csharp",
292
+ ".php": "php",
293
+ ".sh": "bash",
294
+ ".bash": "bash",
295
+ ".zsh": "bash",
296
+ ".yml": "yaml",
297
+ ".yaml": "yaml",
298
+ ".toml": "toml",
299
+ ".md": "markdown",
300
+ ".html": "html",
301
+ ".css": "css",
302
+ ".scss": "scss",
303
+ ".sql": "sql",
304
+ ".xml": "xml",
305
+ };
306
+ export function languageHintForPath(path) {
307
+ const ext = extname(path).toLowerCase();
308
+ return LANG_BY_EXT[ext] ?? "";
309
+ }
310
+ //# sourceMappingURL=file-references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-references.js","sourceRoot":"","sources":["../src/file-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AAEH;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,CAAC;AAE1C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,CAAC;AAEjD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,GAAG,0DAA0D,CAAC;AAS1E,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,IAAI,CAAyB,CAAC;IAC9B,oEAAoE;IACpE,8DAA8D;IAC9D,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;YAC1B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;YAChB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;SACzB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAAY,EAAE,aAAqB;IAC5E,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAatC,2EAA2E;IAC3E,uEAAuE;IACvE,qEAAqE;IACrE,8BAA8B;IAC9B,MAAM,eAAe,GAAqB,MAAM,OAAO,CAAC,GAAG,CACzD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAA2B,EAAE;QAChD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW;gBAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC7D,IAAI,KAAK,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YAClE,IAAI,KAAK,CAAC,IAAI,GAAG,sBAAsB;gBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;YACvE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAgC,CAAC;YAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YACrD,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;gBACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;YACvE,CAAC;YACD,6DAA6D;YAC7D,6DAA6D;YAC7D,8CAA8C;YAC9C,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;YAC9E,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,sEAAsE;IACtE,oEAAoE;IACpE,gEAAgE;IAChE,sEAAsE;IACtE,8DAA8D;IAC9D,mEAAmE;IACnE,sCAAsC;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,MAAM,gBAAgB,GAAkC,EAAE,CAAC;IAC3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,CAAC,EAAE,IAAI,KAAK,iBAAiB;YAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,SAAS,GAAG,6BAA6B,CAAC;IAC9C,KAAK,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAC3C,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;YACtB,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,SAAS,IAAI,IAAI,CAAC;QACpB,CAAC;QACD,kEAAkE;QAClE,4DAA4D;QAC5D,gDAAgD;IAClD,CAAC;IAQD,kEAAkE;IAClE,mEAAmE;IACnE,kEAAkE;IAClE,+BAA+B;IAC/B,MAAM,QAAQ,GAAc,MAAM,OAAO,CAAC,GAAG,CAC3C,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAoB,EAAE;QACnD,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;YAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACzD,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;QACnE,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACtD,+BAA+B;QAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;YACpD,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;YACnE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,KAAK,SAAS;gBAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC/C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAgC,CAAC;YAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACnC,2DAA2D;gBAC3D,2DAA2D;gBAC3D,iDAAiD;gBACjD,4DAA4D;gBAC5D,kBAAkB;gBAClB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC3B,CAAC;YACD,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACtD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;YACrD,CAAC;YACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QACjD,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,8DAA8D;IAC9D,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,OAAO,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;YAAE,SAAS;QACxD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;QAChD,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAChC,kEAAkE;QAClE,iEAAiE;QACjE,mEAAmE;QACnE,mEAAmE;QACnE,gDAAgD;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACpE,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9B,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,KAAK,OAAO,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxD,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACpC,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,EAAE,CAAC;QACrC,CAAC;aAAM,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACxC,8DAA8D;YAC9D,2DAA2D;YAC3D,2DAA2D;YAC3D,4CAA4C;YAC5C,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC;YAChE,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;YACvE,GAAG,GAAG,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,GAAG,MAAM,IAAI,MAAM,kBAAkB,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,OAAe;IACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACvC,kEAAkE;IAClE,+DAA+D;IAC/D,uCAAuC;IACvC,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IACjC,OAAO,GAAG,KAAK,GAAG,IAAI,UAAU,IAAI,KAAK,OAAO,KAAK,KAAK,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,GAAG,IAAI,CAAC,CAAC;YACT,IAAI,GAAG,GAAG,GAAG;gBAAE,GAAG,GAAG,GAAG,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,WAAW,GAA2B;IAC1C,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,QAAQ;IACf,QAAQ,EAAE,OAAO;IACjB,IAAI,EAAE,GAAG;IACT,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,QAAQ;IACf,MAAM,EAAE,KAAK;IACb,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,OAAO,EAAE,MAAM;IACf,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,UAAU;IACjB,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,MAAM;IACf,MAAM,EAAE,KAAK;IACb,MAAM,EAAE,KAAK;CACd,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;IACxC,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC"}