@velarscript/cli 0.10.1

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 (228) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +117 -0
  3. package/dist/application-package-host.d.ts +5 -0
  4. package/dist/application-package-host.d.ts.map +1 -0
  5. package/dist/application-package-host.js +67 -0
  6. package/dist/application-package-host.js.map +1 -0
  7. package/dist/bounded-text.d.ts +2 -0
  8. package/dist/bounded-text.d.ts.map +1 -0
  9. package/dist/bounded-text.js +13 -0
  10. package/dist/bounded-text.js.map +1 -0
  11. package/dist/browser-process-owner.d.ts +15 -0
  12. package/dist/browser-process-owner.d.ts.map +1 -0
  13. package/dist/browser-process-owner.js +151 -0
  14. package/dist/browser-process-owner.js.map +1 -0
  15. package/dist/browser-test-runner.d.ts +11 -0
  16. package/dist/browser-test-runner.d.ts.map +1 -0
  17. package/dist/browser-test-runner.js +1022 -0
  18. package/dist/browser-test-runner.js.map +1 -0
  19. package/dist/build-engine-tool.d.ts +3 -0
  20. package/dist/build-engine-tool.d.ts.map +1 -0
  21. package/dist/build-engine-tool.js +34 -0
  22. package/dist/build-engine-tool.js.map +1 -0
  23. package/dist/build-staging.d.ts +3 -0
  24. package/dist/build-staging.d.ts.map +1 -0
  25. package/dist/build-staging.js +3 -0
  26. package/dist/build-staging.js.map +1 -0
  27. package/dist/bundled-application-package-host-registry.d.ts +10 -0
  28. package/dist/bundled-application-package-host-registry.d.ts.map +1 -0
  29. package/dist/bundled-application-package-host-registry.js +16 -0
  30. package/dist/bundled-application-package-host-registry.js.map +1 -0
  31. package/dist/bundled-extension-registry.d.ts +22 -0
  32. package/dist/bundled-extension-registry.d.ts.map +1 -0
  33. package/dist/bundled-extension-registry.js +10 -0
  34. package/dist/bundled-extension-registry.js.map +1 -0
  35. package/dist/canonical-path.d.ts +3 -0
  36. package/dist/canonical-path.d.ts.map +1 -0
  37. package/dist/canonical-path.js +30 -0
  38. package/dist/canonical-path.js.map +1 -0
  39. package/dist/cli.d.ts +3 -0
  40. package/dist/cli.d.ts.map +1 -0
  41. package/dist/cli.js +1274 -0
  42. package/dist/cli.js.map +1 -0
  43. package/dist/config.d.ts +26 -0
  44. package/dist/config.d.ts.map +1 -0
  45. package/dist/config.js +403 -0
  46. package/dist/config.js.map +1 -0
  47. package/dist/deployment-verifier.d.ts +34 -0
  48. package/dist/deployment-verifier.d.ts.map +1 -0
  49. package/dist/deployment-verifier.js +260 -0
  50. package/dist/deployment-verifier.js.map +1 -0
  51. package/dist/dev-server.d.ts +3 -0
  52. package/dist/dev-server.d.ts.map +1 -0
  53. package/dist/dev-server.js +464 -0
  54. package/dist/dev-server.js.map +1 -0
  55. package/dist/embedded-modules.d.ts +17 -0
  56. package/dist/embedded-modules.d.ts.map +1 -0
  57. package/dist/embedded-modules.js +33 -0
  58. package/dist/embedded-modules.js.map +1 -0
  59. package/dist/extension-metadata.d.ts +23 -0
  60. package/dist/extension-metadata.d.ts.map +1 -0
  61. package/dist/extension-metadata.js +254 -0
  62. package/dist/extension-metadata.js.map +1 -0
  63. package/dist/file-integrity.d.ts +7 -0
  64. package/dist/file-integrity.d.ts.map +1 -0
  65. package/dist/file-integrity.js +14 -0
  66. package/dist/file-integrity.js.map +1 -0
  67. package/dist/framework-host.d.ts +12 -0
  68. package/dist/framework-host.d.ts.map +1 -0
  69. package/dist/framework-host.js +46 -0
  70. package/dist/framework-host.js.map +1 -0
  71. package/dist/host-error.d.ts +6 -0
  72. package/dist/host-error.d.ts.map +1 -0
  73. package/dist/host-error.js +54 -0
  74. package/dist/host-error.js.map +1 -0
  75. package/dist/installed-package.d.ts +9 -0
  76. package/dist/installed-package.d.ts.map +1 -0
  77. package/dist/installed-package.js +23 -0
  78. package/dist/installed-package.js.map +1 -0
  79. package/dist/language-server-bundle-entry.d.ts +2 -0
  80. package/dist/language-server-bundle-entry.d.ts.map +1 -0
  81. package/dist/language-server-bundle-entry.js +7 -0
  82. package/dist/language-server-bundle-entry.js.map +1 -0
  83. package/dist/language-server-tool.d.ts +3 -0
  84. package/dist/language-server-tool.d.ts.map +1 -0
  85. package/dist/language-server-tool.js +30 -0
  86. package/dist/language-server-tool.js.map +1 -0
  87. package/dist/language-server.d.ts +9 -0
  88. package/dist/language-server.d.ts.map +1 -0
  89. package/dist/language-server.js +1733 -0
  90. package/dist/language-server.js.map +1 -0
  91. package/dist/mechanical-fixer.d.ts +30 -0
  92. package/dist/mechanical-fixer.d.ts.map +1 -0
  93. package/dist/mechanical-fixer.js +103 -0
  94. package/dist/mechanical-fixer.js.map +1 -0
  95. package/dist/module-assets.d.ts +11 -0
  96. package/dist/module-assets.d.ts.map +1 -0
  97. package/dist/module-assets.js +90 -0
  98. package/dist/module-assets.js.map +1 -0
  99. package/dist/npm.d.ts +23 -0
  100. package/dist/npm.d.ts.map +1 -0
  101. package/dist/npm.js +456 -0
  102. package/dist/npm.js.map +1 -0
  103. package/dist/official-language-server-extensions.d.ts +2 -0
  104. package/dist/official-language-server-extensions.d.ts.map +1 -0
  105. package/dist/official-language-server-extensions.js +38 -0
  106. package/dist/official-language-server-extensions.js.map +1 -0
  107. package/dist/official-script-language-service.d.ts +2 -0
  108. package/dist/official-script-language-service.d.ts.map +1 -0
  109. package/dist/official-script-language-service.js +10 -0
  110. package/dist/official-script-language-service.js.map +1 -0
  111. package/dist/official-tool-assets.d.ts +3 -0
  112. package/dist/official-tool-assets.d.ts.map +1 -0
  113. package/dist/official-tool-assets.js +41 -0
  114. package/dist/official-tool-assets.js.map +1 -0
  115. package/dist/ownership-graph.d.ts +46 -0
  116. package/dist/ownership-graph.d.ts.map +1 -0
  117. package/dist/ownership-graph.js +255 -0
  118. package/dist/ownership-graph.js.map +1 -0
  119. package/dist/package-manager.d.ts +20 -0
  120. package/dist/package-manager.d.ts.map +1 -0
  121. package/dist/package-manager.js +345 -0
  122. package/dist/package-manager.js.map +1 -0
  123. package/dist/packaged-official-tool.d.ts +8 -0
  124. package/dist/packaged-official-tool.d.ts.map +1 -0
  125. package/dist/packaged-official-tool.js +32 -0
  126. package/dist/packaged-official-tool.js.map +1 -0
  127. package/dist/preview-server.d.ts +11 -0
  128. package/dist/preview-server.d.ts.map +1 -0
  129. package/dist/preview-server.js +163 -0
  130. package/dist/preview-server.js.map +1 -0
  131. package/dist/production-build.d.ts +57 -0
  132. package/dist/production-build.d.ts.map +1 -0
  133. package/dist/production-build.js +332 -0
  134. package/dist/production-build.js.map +1 -0
  135. package/dist/production-verifier.d.ts +9 -0
  136. package/dist/production-verifier.d.ts.map +1 -0
  137. package/dist/production-verifier.js +268 -0
  138. package/dist/production-verifier.js.map +1 -0
  139. package/dist/program-runner.d.ts +7 -0
  140. package/dist/program-runner.d.ts.map +1 -0
  141. package/dist/program-runner.js +98 -0
  142. package/dist/program-runner.js.map +1 -0
  143. package/dist/project-check.d.ts +31 -0
  144. package/dist/project-check.d.ts.map +1 -0
  145. package/dist/project-check.js +95 -0
  146. package/dist/project-check.js.map +1 -0
  147. package/dist/project-format.d.ts +6 -0
  148. package/dist/project-format.d.ts.map +1 -0
  149. package/dist/project-format.js +21 -0
  150. package/dist/project-format.js.map +1 -0
  151. package/dist/project-semantic.d.ts +62 -0
  152. package/dist/project-semantic.d.ts.map +1 -0
  153. package/dist/project-semantic.js +1079 -0
  154. package/dist/project-semantic.js.map +1 -0
  155. package/dist/project-session.d.ts +36 -0
  156. package/dist/project-session.d.ts.map +1 -0
  157. package/dist/project-session.js +339 -0
  158. package/dist/project-session.js.map +1 -0
  159. package/dist/project-task-bundle-entry.d.ts +2 -0
  160. package/dist/project-task-bundle-entry.d.ts.map +1 -0
  161. package/dist/project-task-bundle-entry.js +18 -0
  162. package/dist/project-task-bundle-entry.js.map +1 -0
  163. package/dist/project-task-invocation.d.ts +16 -0
  164. package/dist/project-task-invocation.d.ts.map +1 -0
  165. package/dist/project-task-invocation.js +72 -0
  166. package/dist/project-task-invocation.js.map +1 -0
  167. package/dist/project-task-tool.d.ts +3 -0
  168. package/dist/project-task-tool.d.ts.map +1 -0
  169. package/dist/project-task-tool.js +61 -0
  170. package/dist/project-task-tool.js.map +1 -0
  171. package/dist/project.d.ts +71 -0
  172. package/dist/project.d.ts.map +1 -0
  173. package/dist/project.js +1750 -0
  174. package/dist/project.js.map +1 -0
  175. package/dist/reproduction.d.ts +50 -0
  176. package/dist/reproduction.d.ts.map +1 -0
  177. package/dist/reproduction.js +321 -0
  178. package/dist/reproduction.js.map +1 -0
  179. package/dist/script-language-service.d.ts +82 -0
  180. package/dist/script-language-service.d.ts.map +1 -0
  181. package/dist/script-language-service.js +18 -0
  182. package/dist/script-language-service.js.map +1 -0
  183. package/dist/source-limits.d.ts +5 -0
  184. package/dist/source-limits.d.ts.map +1 -0
  185. package/dist/source-limits.js +19 -0
  186. package/dist/source-limits.js.map +1 -0
  187. package/dist/standalone-build.d.ts +15 -0
  188. package/dist/standalone-build.d.ts.map +1 -0
  189. package/dist/standalone-build.js +76 -0
  190. package/dist/standalone-build.js.map +1 -0
  191. package/dist/standard-modules.d.ts +22 -0
  192. package/dist/standard-modules.d.ts.map +1 -0
  193. package/dist/standard-modules.js +3066 -0
  194. package/dist/standard-modules.js.map +1 -0
  195. package/dist/static-deployment.d.ts +48 -0
  196. package/dist/static-deployment.d.ts.map +1 -0
  197. package/dist/static-deployment.js +142 -0
  198. package/dist/static-deployment.js.map +1 -0
  199. package/dist/test-output.d.ts +20 -0
  200. package/dist/test-output.d.ts.map +1 -0
  201. package/dist/test-output.js +119 -0
  202. package/dist/test-output.js.map +1 -0
  203. package/dist/test-runner.d.ts +13 -0
  204. package/dist/test-runner.d.ts.map +1 -0
  205. package/dist/test-runner.js +226 -0
  206. package/dist/test-runner.js.map +1 -0
  207. package/dist/typescript-declarations.d.ts +20 -0
  208. package/dist/typescript-declarations.d.ts.map +1 -0
  209. package/dist/typescript-declarations.js +1609 -0
  210. package/dist/typescript-declarations.js.map +1 -0
  211. package/dist/uncaught-program-error.d.ts +24 -0
  212. package/dist/uncaught-program-error.d.ts.map +1 -0
  213. package/dist/uncaught-program-error.js +105 -0
  214. package/dist/uncaught-program-error.js.map +1 -0
  215. package/dist/unowned-errors.d.ts +56 -0
  216. package/dist/unowned-errors.d.ts.map +1 -0
  217. package/dist/unowned-errors.js +82 -0
  218. package/dist/unowned-errors.js.map +1 -0
  219. package/dist/version.d.ts +3 -0
  220. package/dist/version.d.ts.map +1 -0
  221. package/dist/version.js +3 -0
  222. package/dist/version.js.map +1 -0
  223. package/dist/workspace-index.d.ts +78 -0
  224. package/dist/workspace-index.d.ts.map +1 -0
  225. package/dist/workspace-index.js +493 -0
  226. package/dist/workspace-index.js.map +1 -0
  227. package/package.json +45 -0
  228. package/skill/ai-skill.md +749 -0
@@ -0,0 +1,493 @@
1
+ import { readdir, stat } from "node:fs/promises";
2
+ import { dirname, extname, isAbsolute, join, relative, resolve } from "node:path";
3
+ import { readBoundedText } from "./bounded-text.js";
4
+ import { isHostErrorCode } from "./host-error.js";
5
+ export const WORKSPACE_TEXT_EXTENSIONS = Object.freeze([
6
+ ".vel", ".js", ".mjs", ".cjs", ".jsx", ".ts", ".mts", ".cts", ".tsx", ".json", ".md", ".css",
7
+ ]);
8
+ export const MAX_WORKSPACE_TEXT_FILES = 50_000;
9
+ export const MAX_WORKSPACE_TEXT_FILE_BYTES = 4 * 1024 * 1024;
10
+ export const MAX_WORKSPACE_TEXT_BYTES = 128 * 1024 * 1024;
11
+ export const MAX_WORKSPACE_SEARCH_QUERY_CODE_UNITS = 1_024;
12
+ export const MAX_WORKSPACE_SEARCH_RESULTS = 10_000;
13
+ export const MAX_WORKSPACE_SEARCH_PREVIEW_CODE_UNITS = 256;
14
+ export const MAX_WORKSPACE_CHANGE_PATHS = 4_096;
15
+ export const MAX_WORKSPACE_CHANGE_PATH_CODE_UNITS = 4_096;
16
+ export const MAX_WORKSPACE_CHANGE_TEXT_CODE_UNITS = 2 * 1024 * 1024;
17
+ const extensions = new Set(WORKSPACE_TEXT_EXTENSIONS);
18
+ const ignoredDirectories = new Set([".git", ".velar", "dist", "node_modules"]);
19
+ export class WorkspaceTextIndex {
20
+ roots = [];
21
+ documents = new Map();
22
+ overlays = new Map();
23
+ indexedBytes = 0;
24
+ revision = 0;
25
+ coverageComplete = false;
26
+ configure(roots) {
27
+ const normalized = [];
28
+ for (const root of [...new Set(roots.map((value) => resolve(value)))].sort((left, right) => left.length - right.length || left.localeCompare(right))) {
29
+ if (!normalized.some((owner) => within(owner, root)))
30
+ normalized.push(root);
31
+ }
32
+ if (normalized.length === this.roots.length && normalized.every((root, index) => root === this.roots[index]))
33
+ return;
34
+ this.roots = normalized;
35
+ this.documents = new Map();
36
+ this.overlays.clear();
37
+ this.indexedBytes = 0;
38
+ this.coverageComplete = false;
39
+ this.revision += 1;
40
+ }
41
+ workspaceRoots() {
42
+ return this.roots;
43
+ }
44
+ paths(extension) {
45
+ const expected = extension?.toLowerCase();
46
+ return [...this.documents.keys()].filter((path) => expected === undefined || extname(path).toLowerCase() === expected).sort();
47
+ }
48
+ openDocument(path, text) {
49
+ const target = resolve(path);
50
+ if (!this.accepts(target))
51
+ return;
52
+ if (!this.documents.has(target) && this.documents.size >= MAX_WORKSPACE_TEXT_FILES) {
53
+ this.coverageComplete = false;
54
+ this.revision += 1;
55
+ return;
56
+ }
57
+ const exclusion = this.replaceDocument(target, text);
58
+ this.overlays.set(target, {
59
+ text: exclusion === null ? text : null,
60
+ exclusion,
61
+ });
62
+ }
63
+ changeDocument(path, text) {
64
+ this.openDocument(path, text);
65
+ }
66
+ async closeDocument(path) {
67
+ const target = resolve(path);
68
+ this.overlays.delete(target);
69
+ return this.update(new Set([target]));
70
+ }
71
+ async rescan(cancelled = () => false) {
72
+ const next = new Map();
73
+ const activity = emptyActivity();
74
+ const visitedPaths = new Set();
75
+ let bytes = 0;
76
+ let visited = 0;
77
+ for (const root of this.roots) {
78
+ await this.visit(root, async (path) => {
79
+ if (cancelled())
80
+ throw new WorkspaceIndexCancelledError();
81
+ visitedPaths.add(path);
82
+ visited += 1;
83
+ if (visited % 128 === 0)
84
+ await yieldToHost();
85
+ const document = await this.readDocument(path, activity);
86
+ if (!document)
87
+ return;
88
+ if (bytes + document.bytes > MAX_WORKSPACE_TEXT_BYTES) {
89
+ activity.skippedByAggregateBudget += 1;
90
+ return;
91
+ }
92
+ next.set(path, document);
93
+ bytes += document.bytes;
94
+ if (next.size > MAX_WORKSPACE_TEXT_FILES) {
95
+ throw new RangeError(`A language-server workspace cannot contain more than ${MAX_WORKSPACE_TEXT_FILES} indexed text files`);
96
+ }
97
+ });
98
+ }
99
+ for (const [path, overlay] of this.overlays) {
100
+ if (!this.accepts(path))
101
+ continue;
102
+ if (visitedPaths.has(path))
103
+ continue;
104
+ if (overlay.text === null) {
105
+ recordOverlayExclusion(activity, overlay.exclusion);
106
+ continue;
107
+ }
108
+ const previous = next.get(path);
109
+ if (previous)
110
+ bytes -= previous.bytes;
111
+ const document = indexedDocument(path, overlay.text);
112
+ if (!document || bytes + document.bytes > MAX_WORKSPACE_TEXT_BYTES) {
113
+ if (!document)
114
+ activity.skippedLargeFiles += 1;
115
+ else
116
+ activity.skippedByAggregateBudget += 1;
117
+ next.delete(path);
118
+ continue;
119
+ }
120
+ next.set(path, document);
121
+ bytes += document.bytes;
122
+ }
123
+ this.documents = next;
124
+ this.indexedBytes = bytes;
125
+ this.coverageComplete = activity.skippedLargeFiles === 0 && activity.skippedByAggregateBudget === 0;
126
+ this.revision += 1;
127
+ return this.activity("rescan", activity);
128
+ }
129
+ async update(changedPaths) {
130
+ if (changedPaths.size > MAX_WORKSPACE_CHANGE_PATHS) {
131
+ throw new RangeError(`A workspace index update cannot contain more than ${MAX_WORKSPACE_CHANGE_PATHS} changed paths`);
132
+ }
133
+ const resolvedChanges = [...changedPaths].map((path) => resolve(path));
134
+ if (resolvedChanges.some((path) => path.length > MAX_WORKSPACE_CHANGE_PATH_CODE_UNITS)
135
+ || resolvedChanges.reduce((total, path) => total + path.length, 0) > MAX_WORKSPACE_CHANGE_TEXT_CODE_UNITS) {
136
+ throw new RangeError("A workspace index update exceeds its changed-path text budget");
137
+ }
138
+ const next = new Map(this.documents);
139
+ const activity = emptyActivity();
140
+ activity.changesReceived = resolvedChanges.length;
141
+ const normalizedChanges = new Set();
142
+ for (const value of resolvedChanges.sort((left, right) => left.length - right.length || left.localeCompare(right))) {
143
+ const root = this.workspaceRootFor(value);
144
+ if (!root || changedBy(value, normalizedChanges, root))
145
+ continue;
146
+ normalizedChanges.add(value);
147
+ }
148
+ activity.changeRoots = normalizedChanges.size;
149
+ let visited = 0;
150
+ let examined = 0;
151
+ for (const path of next.keys()) {
152
+ const root = this.workspaceRootFor(path);
153
+ if (root && changedBy(path, normalizedChanges, root)) {
154
+ next.delete(path);
155
+ activity.recordsRemoved += 1;
156
+ }
157
+ examined += 1;
158
+ if (examined % 128 === 0)
159
+ await yieldToHost();
160
+ }
161
+ for (const value of [...normalizedChanges].sort()) {
162
+ const overlay = this.overlays.get(value);
163
+ if (overlay && this.accepts(value)) {
164
+ if (overlay.text === null) {
165
+ recordOverlayExclusion(activity, overlay.exclusion);
166
+ continue;
167
+ }
168
+ const document = indexedDocument(value, overlay.text);
169
+ if (document)
170
+ next.set(value, document);
171
+ else
172
+ activity.skippedLargeFiles += 1;
173
+ continue;
174
+ }
175
+ try {
176
+ const metadata = await stat(value);
177
+ if (metadata.isDirectory() && !this.ignored(value)) {
178
+ await this.visit(value, async (path) => {
179
+ visited += 1;
180
+ if (visited % 128 === 0)
181
+ await yieldToHost();
182
+ const document = await this.readDocument(path, activity);
183
+ if (document)
184
+ next.set(path, document);
185
+ });
186
+ }
187
+ else if (metadata.isFile() && this.accepts(value)) {
188
+ const document = await this.readDocument(value, activity);
189
+ if (document)
190
+ next.set(value, document);
191
+ }
192
+ }
193
+ catch (error) {
194
+ if (!isHostErrorCode(error, "ENOENT") && !isHostErrorCode(error, "ENOTDIR"))
195
+ throw error;
196
+ }
197
+ }
198
+ for (const [path, overlay] of this.overlays) {
199
+ if (!this.accepts(path))
200
+ continue;
201
+ if (overlay.text === null)
202
+ continue;
203
+ const document = indexedDocument(path, overlay.text);
204
+ if (document)
205
+ next.set(path, document);
206
+ }
207
+ const bounded = new Map();
208
+ let bytes = 0;
209
+ for (const [path, document] of [...next].sort(([left], [right]) => left.localeCompare(right))) {
210
+ if (bounded.size >= MAX_WORKSPACE_TEXT_FILES) {
211
+ throw new RangeError(`A language-server workspace cannot contain more than ${MAX_WORKSPACE_TEXT_FILES} indexed text files`);
212
+ }
213
+ if (bytes + document.bytes > MAX_WORKSPACE_TEXT_BYTES) {
214
+ activity.skippedByAggregateBudget += 1;
215
+ continue;
216
+ }
217
+ bounded.set(path, document);
218
+ bytes += document.bytes;
219
+ }
220
+ this.documents = bounded;
221
+ this.indexedBytes = bytes;
222
+ this.coverageComplete = this.coverageComplete
223
+ && activity.skippedLargeFiles === 0 && activity.skippedByAggregateBudget === 0;
224
+ this.revision += 1;
225
+ return this.activity("known-changes", activity);
226
+ }
227
+ async search(query, options = {}) {
228
+ if (query.length === 0)
229
+ throw new RangeError("Workspace search query cannot be empty");
230
+ if (query.length > MAX_WORKSPACE_SEARCH_QUERY_CODE_UNITS) {
231
+ throw new RangeError(`Workspace search query cannot exceed ${MAX_WORKSPACE_SEARCH_QUERY_CODE_UNITS} UTF-16 code units`);
232
+ }
233
+ const maximumResults = options.maximumResults ?? 1_000;
234
+ if (!Number.isSafeInteger(maximumResults) || maximumResults < 1 || maximumResults > MAX_WORKSPACE_SEARCH_RESULTS) {
235
+ throw new RangeError(`Workspace search maximumResults must be an integer from 1 through ${MAX_WORKSPACE_SEARCH_RESULTS}`);
236
+ }
237
+ const started = performance.now();
238
+ const matcher = new RegExp(escapeRegularExpression(query), options.caseSensitive ? "gu" : "giu");
239
+ const matches = [];
240
+ let filesSearched = 0;
241
+ for (const document of this.documents.values()) {
242
+ if (options.cancelled?.())
243
+ throw new WorkspaceIndexCancelledError();
244
+ if (filesSearched > 0 && filesSearched % 128 === 0)
245
+ await yieldToHost();
246
+ filesSearched += 1;
247
+ matcher.lastIndex = 0;
248
+ let lineStarts = null;
249
+ while (true) {
250
+ const match = matcher.exec(document.text);
251
+ if (!match)
252
+ break;
253
+ lineStarts ??= lineStartsFor(document.text);
254
+ const start = positionAt(document.text, lineStarts, match.index);
255
+ const end = positionAt(document.text, lineStarts, match.index + match[0].length);
256
+ matches.push({ path: document.path, start, end, preview: previewAt(document.text, lineStarts, match.index) });
257
+ if (matches.length >= maximumResults) {
258
+ return this.searchResult(matches, true, filesSearched, started);
259
+ }
260
+ }
261
+ }
262
+ return this.searchResult(matches, false, filesSearched, started);
263
+ }
264
+ searchResult(matches, limitReached, filesSearched, started) {
265
+ return {
266
+ matches,
267
+ limitReached,
268
+ filesSearched,
269
+ indexedFiles: this.documents.size,
270
+ indexedBytes: this.indexedBytes,
271
+ revision: this.revision,
272
+ durationMs: performance.now() - started,
273
+ coverageComplete: this.coverageComplete,
274
+ };
275
+ }
276
+ activity(strategy, value) {
277
+ return {
278
+ strategy,
279
+ ...value,
280
+ indexedFiles: this.documents.size,
281
+ indexedBytes: this.indexedBytes,
282
+ revision: this.revision,
283
+ };
284
+ }
285
+ replaceDocument(path, text) {
286
+ const previous = this.documents.get(path);
287
+ const document = indexedDocument(path, text);
288
+ if (!document) {
289
+ this.coverageComplete = false;
290
+ if (previous) {
291
+ this.documents.delete(path);
292
+ this.indexedBytes -= previous.bytes;
293
+ }
294
+ this.revision += 1;
295
+ return "large-file";
296
+ }
297
+ const nextBytes = this.indexedBytes - (previous?.bytes ?? 0) + document.bytes;
298
+ if (nextBytes > MAX_WORKSPACE_TEXT_BYTES) {
299
+ this.coverageComplete = false;
300
+ if (previous) {
301
+ this.documents.delete(path);
302
+ this.indexedBytes -= previous.bytes;
303
+ }
304
+ this.revision += 1;
305
+ return "aggregate-budget";
306
+ }
307
+ this.documents.set(path, document);
308
+ this.indexedBytes = nextBytes;
309
+ this.revision += 1;
310
+ return null;
311
+ }
312
+ async readDocument(path, activity) {
313
+ const overlay = this.overlays.get(path);
314
+ if (overlay) {
315
+ if (overlay.text === null) {
316
+ recordOverlayExclusion(activity, overlay.exclusion);
317
+ return null;
318
+ }
319
+ const document = indexedDocument(path, overlay.text);
320
+ if (!document)
321
+ activity.skippedLargeFiles += 1;
322
+ return document;
323
+ }
324
+ try {
325
+ const text = await readBoundedText(path, MAX_WORKSPACE_TEXT_FILE_BYTES, "workspace text file");
326
+ activity.filesRead += 1;
327
+ const currentOverlay = this.overlays.get(path);
328
+ if (currentOverlay?.text === null) {
329
+ recordOverlayExclusion(activity, currentOverlay.exclusion);
330
+ return null;
331
+ }
332
+ return indexedDocument(path, currentOverlay?.text ?? text);
333
+ }
334
+ catch (error) {
335
+ if (error instanceof RangeError) {
336
+ activity.skippedLargeFiles += 1;
337
+ return null;
338
+ }
339
+ if (isHostErrorCode(error, "ENOENT") || isHostErrorCode(error, "ENOTDIR"))
340
+ return null;
341
+ throw error;
342
+ }
343
+ }
344
+ async visit(directory, accept, depth = 0) {
345
+ if (depth > 64)
346
+ throw new RangeError("A language-server workspace directory cannot exceed 64 levels");
347
+ let entries;
348
+ try {
349
+ entries = await readdir(directory, { withFileTypes: true });
350
+ }
351
+ catch (error) {
352
+ if (isHostErrorCode(error, "ENOENT") || isHostErrorCode(error, "ENOTDIR"))
353
+ return;
354
+ throw error;
355
+ }
356
+ entries.sort((left, right) => left.name.localeCompare(right.name));
357
+ for (const entry of entries) {
358
+ const path = join(directory, entry.name);
359
+ if (entry.isDirectory()) {
360
+ if (!ignoredDirectories.has(entry.name))
361
+ await this.visit(path, accept, depth + 1);
362
+ }
363
+ else if (entry.isFile() && this.accepts(path)) {
364
+ await accept(path);
365
+ }
366
+ }
367
+ }
368
+ accepts(path) {
369
+ return this.withinWorkspace(path) && !this.ignored(path) && extensions.has(extname(path).toLowerCase());
370
+ }
371
+ withinWorkspace(path) {
372
+ return this.workspaceRootFor(path) !== null;
373
+ }
374
+ workspaceRootFor(path) {
375
+ return this.roots.find((root) => within(root, path)) ?? null;
376
+ }
377
+ ignored(path) {
378
+ for (const root of this.roots) {
379
+ if (!within(root, path))
380
+ continue;
381
+ return relative(root, path).split(/[/\\]/u).some((segment) => ignoredDirectories.has(segment));
382
+ }
383
+ return true;
384
+ }
385
+ }
386
+ export class WorkspaceIndexCancelledError extends Error {
387
+ constructor() {
388
+ super("Workspace index request cancelled");
389
+ this.name = "WorkspaceIndexCancelledError";
390
+ }
391
+ }
392
+ function indexedDocument(path, text) {
393
+ const bytes = Buffer.byteLength(text, "utf8");
394
+ if (bytes > MAX_WORKSPACE_TEXT_FILE_BYTES)
395
+ return null;
396
+ return { path, text, bytes };
397
+ }
398
+ function recordOverlayExclusion(activity, exclusion) {
399
+ if (exclusion === "large-file")
400
+ activity.skippedLargeFiles += 1;
401
+ else if (exclusion === "aggregate-budget")
402
+ activity.skippedByAggregateBudget += 1;
403
+ }
404
+ function emptyActivity() {
405
+ return {
406
+ filesRead: 0,
407
+ skippedLargeFiles: 0,
408
+ skippedByAggregateBudget: 0,
409
+ changesReceived: 0,
410
+ changeRoots: 0,
411
+ recordsRemoved: 0,
412
+ };
413
+ }
414
+ function changedBy(path, changes, root) {
415
+ let current = path;
416
+ for (let depth = 0; depth <= 65; depth += 1) {
417
+ if (changes.has(current))
418
+ return true;
419
+ if (current === root)
420
+ return false;
421
+ const parent = dirname(current);
422
+ if (parent === current || !within(root, parent))
423
+ return false;
424
+ current = parent;
425
+ }
426
+ throw new RangeError("A workspace index change cannot exceed 64 directory levels");
427
+ }
428
+ function lineStartsFor(text) {
429
+ const lineStarts = [0];
430
+ for (let index = 0; index < text.length; index += 1) {
431
+ if (text[index] === "\r") {
432
+ if (text[index + 1] === "\n")
433
+ index += 1;
434
+ lineStarts.push(index + 1);
435
+ }
436
+ else if (text[index] === "\n") {
437
+ lineStarts.push(index + 1);
438
+ }
439
+ }
440
+ return lineStarts;
441
+ }
442
+ function positionAt(text, lineStarts, offset) {
443
+ let low = 0;
444
+ let high = lineStarts.length;
445
+ while (low + 1 < high) {
446
+ const middle = Math.floor((low + high) / 2);
447
+ if (lineStarts[middle] <= offset)
448
+ low = middle;
449
+ else
450
+ high = middle;
451
+ }
452
+ const lineStart = lineStarts[low] ?? 0;
453
+ return {
454
+ line: low,
455
+ utf16Character: offset - lineStart,
456
+ utf32Character: codePointCount(text, lineStart, offset),
457
+ };
458
+ }
459
+ function previewAt(text, lineStarts, offset) {
460
+ const position = positionAt(text, lineStarts, offset);
461
+ const start = lineStarts[position.line] ?? 0;
462
+ const next = lineStarts[position.line + 1] ?? text.length;
463
+ const end = next > start && text[next - 1] === "\n"
464
+ ? next > start + 1 && text[next - 2] === "\r" ? next - 2 : next - 1
465
+ : next;
466
+ const line = text.slice(start, end);
467
+ if (line.length <= MAX_WORKSPACE_SEARCH_PREVIEW_CODE_UNITS)
468
+ return line;
469
+ let clipped = line.slice(0, MAX_WORKSPACE_SEARCH_PREVIEW_CODE_UNITS - 1);
470
+ const final = clipped.charCodeAt(clipped.length - 1);
471
+ if (final >= 0xd800 && final <= 0xdbff)
472
+ clipped = clipped.slice(0, -1);
473
+ return `${clipped}…`;
474
+ }
475
+ function codePointCount(text, start, end) {
476
+ let count = 0;
477
+ for (let index = start; index < end; count += 1) {
478
+ const point = text.codePointAt(index);
479
+ index += point !== undefined && point > 0xffff ? 2 : 1;
480
+ }
481
+ return count;
482
+ }
483
+ function escapeRegularExpression(value) {
484
+ return value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
485
+ }
486
+ function within(root, path) {
487
+ const value = relative(root, path);
488
+ return value === "" || (!value.startsWith("..") && !isAbsolute(value));
489
+ }
490
+ function yieldToHost() {
491
+ return new Promise((resolveYield) => setImmediate(resolveYield));
492
+ }
493
+ //# sourceMappingURL=workspace-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-index.js","sourceRoot":"","sources":["../src/workspace-index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@velarscript/cli",
3
+ "version": "0.10.1",
4
+ "description": "The VelarScript command-line compiler, dev server, test runner, and language server.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "files": [
8
+ "dist",
9
+ "skill",
10
+ "README.md"
11
+ ],
12
+ "scripts": {
13
+ "clean": "node ../../scripts/clean-package-dist.mjs",
14
+ "build": "npm run clean && tsc -p tsconfig.build.json",
15
+ "postbuild": "node ../../scripts/mark-package-bin.mjs dist/cli.js",
16
+ "prepack": "npm run build"
17
+ },
18
+ "engines": {
19
+ "node": ">=24"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/VelarOS-AI/VelarScript.git",
24
+ "directory": "packages/cli"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "bin": {
30
+ "velar": "./dist/cli.js"
31
+ },
32
+ "dependencies": {
33
+ "@velarscript/compiler": "0.10.1",
34
+ "@velarscript/desktop": "0.10.1",
35
+ "@velarscript/node": "0.10.1",
36
+ "@velarscript/script-analysis": "0.10.1",
37
+ "@velarscript/web": "0.10.1",
38
+ "create-velar": "0.10.1",
39
+ "esbuild": "^0.28.1",
40
+ "fflate": "^0.8.3",
41
+ "msgpackr": "^2.0.5",
42
+ "playwright": "^1.58.2",
43
+ "simplex-noise": "^4.0.3"
44
+ }
45
+ }