@functional-systems/srcx 0.1.0-dev.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.
- package/CHANGELOG.md +20 -0
- package/CONTRIBUTING.md +54 -0
- package/DESIGN.md +1057 -0
- package/LICENSE +202 -0
- package/README.md +209 -0
- package/RELEASING.md +137 -0
- package/VALIDATION.md +181 -0
- package/dist/build.d.ts +94 -0
- package/dist/build.js +433 -0
- package/dist/build.js.map +1 -0
- package/dist/chunk.d.ts +30 -0
- package/dist/chunk.js +296 -0
- package/dist/chunk.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +276 -0
- package/dist/cli.js.map +1 -0
- package/dist/common.d.ts +17 -0
- package/dist/common.js +74 -0
- package/dist/common.js.map +1 -0
- package/dist/git.d.ts +38 -0
- package/dist/git.js +224 -0
- package/dist/git.js.map +1 -0
- package/dist/publish.d.ts +60 -0
- package/dist/publish.js +341 -0
- package/dist/publish.js.map +1 -0
- package/dist/releases.d.ts +8 -0
- package/dist/releases.js +79 -0
- package/dist/releases.js.map +1 -0
- package/dist/remote.d.ts +53 -0
- package/dist/remote.js +136 -0
- package/dist/remote.js.map +1 -0
- package/dist/repository.d.ts +29 -0
- package/dist/repository.js +180 -0
- package/dist/repository.js.map +1 -0
- package/dist/search.d.ts +46 -0
- package/dist/search.js +181 -0
- package/dist/search.js.map +1 -0
- package/dist/settings.d.ts +10 -0
- package/dist/settings.js +35 -0
- package/dist/settings.js.map +1 -0
- package/package.json +58 -0
- package/src/build.ts +587 -0
- package/src/chunk.ts +328 -0
- package/src/cli.ts +366 -0
- package/src/common.ts +71 -0
- package/src/git.ts +286 -0
- package/src/publish.ts +487 -0
- package/src/releases.ts +108 -0
- package/src/remote.ts +230 -0
- package/src/repository.ts +306 -0
- package/src/search.ts +282 -0
- package/src/settings.ts +59 -0
package/dist/chunk.js
ADDED
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { Parser, Language } from "web-tree-sitter";
|
|
3
|
+
import { getEncoding } from "js-tiktoken";
|
|
4
|
+
import { invariant, lineAt } from "./common.js";
|
|
5
|
+
const require = createRequire(import.meta.url);
|
|
6
|
+
const encoding = getEncoding("cl100k_base");
|
|
7
|
+
export function tokens(text) {
|
|
8
|
+
return encoding.encode(text, [], []).length;
|
|
9
|
+
}
|
|
10
|
+
export const CHUNKER = {
|
|
11
|
+
version: 1,
|
|
12
|
+
parser: "web-tree-sitter@0.25.10",
|
|
13
|
+
grammars: "tree-sitter-wasms@0.1.13",
|
|
14
|
+
tokenizer: "js-tiktoken@1.0.21/cl100k_base",
|
|
15
|
+
targetTokens: 800,
|
|
16
|
+
maxTokens: 1500,
|
|
17
|
+
fallbackOverlap: 0.1,
|
|
18
|
+
enrichment: "path-scope-symbol-v1",
|
|
19
|
+
policy: "source-v1",
|
|
20
|
+
};
|
|
21
|
+
const languages = new Map();
|
|
22
|
+
let initialized;
|
|
23
|
+
async function language(name) {
|
|
24
|
+
initialized ??= Parser.init();
|
|
25
|
+
await initialized;
|
|
26
|
+
let l = languages.get(name);
|
|
27
|
+
if (!l) {
|
|
28
|
+
l = await Language.load(require.resolve(`tree-sitter-wasms/out/tree-sitter-${name}.wasm`));
|
|
29
|
+
languages.set(name, l);
|
|
30
|
+
}
|
|
31
|
+
return l;
|
|
32
|
+
}
|
|
33
|
+
export function detectLanguage(path) {
|
|
34
|
+
const ext = path.split(".").at(-1)?.toLowerCase();
|
|
35
|
+
return ({
|
|
36
|
+
java: "java",
|
|
37
|
+
ts: "typescript",
|
|
38
|
+
tsx: "tsx",
|
|
39
|
+
js: "javascript",
|
|
40
|
+
jsx: "javascript",
|
|
41
|
+
mjs: "javascript",
|
|
42
|
+
cjs: "javascript",
|
|
43
|
+
md: "markdown",
|
|
44
|
+
mdx: "markdown",
|
|
45
|
+
json: "json",
|
|
46
|
+
yaml: "yaml",
|
|
47
|
+
yml: "yaml",
|
|
48
|
+
toml: "toml",
|
|
49
|
+
ini: "ini",
|
|
50
|
+
}[ext ?? ""] ?? "text");
|
|
51
|
+
}
|
|
52
|
+
function enrichment(path, u) {
|
|
53
|
+
return ([path.slice(0, 240), u.scope?.slice(0, 160), u.symbol?.slice(0, 160)]
|
|
54
|
+
.filter(Boolean)
|
|
55
|
+
.join("\n") + "\n");
|
|
56
|
+
}
|
|
57
|
+
function classify(type) {
|
|
58
|
+
if (/import|package/.test(type))
|
|
59
|
+
return "imports";
|
|
60
|
+
if (/comment/.test(type))
|
|
61
|
+
return "documentation";
|
|
62
|
+
if (/function|method|constructor/.test(type))
|
|
63
|
+
return "function";
|
|
64
|
+
return "declaration";
|
|
65
|
+
}
|
|
66
|
+
function scopeName(n) {
|
|
67
|
+
const names = [];
|
|
68
|
+
let p = n.parent;
|
|
69
|
+
while (p) {
|
|
70
|
+
if (/class|interface|function|method/.test(p.type)) {
|
|
71
|
+
const name = p.childForFieldName("name");
|
|
72
|
+
if (name)
|
|
73
|
+
names.unshift(name.text);
|
|
74
|
+
}
|
|
75
|
+
p = p.parent;
|
|
76
|
+
}
|
|
77
|
+
return names.length ? names.join(".") : undefined;
|
|
78
|
+
}
|
|
79
|
+
/** Bound strings without slicing a surrogate pair; prefer line ends where possible. */
|
|
80
|
+
function splitUnit(source, path, u, overlap) {
|
|
81
|
+
const result = [];
|
|
82
|
+
let start = u.start;
|
|
83
|
+
const prefix = enrichment(path, u);
|
|
84
|
+
invariant(tokens(prefix) < CHUNKER.maxTokens, "Path/scope enrichment exceeds token limit.");
|
|
85
|
+
while (start < u.end) {
|
|
86
|
+
let end = u.end;
|
|
87
|
+
if (tokens(prefix + source.slice(start, end)) > CHUNKER.maxTokens) {
|
|
88
|
+
let lo = start + 1, hi = end, best = start;
|
|
89
|
+
while (lo <= hi) {
|
|
90
|
+
const probe = Math.floor((lo + hi) / 2);
|
|
91
|
+
let mid = probe;
|
|
92
|
+
if (mid < u.end && /[\uDC00-\uDFFF]/.test(source[mid] ?? ""))
|
|
93
|
+
mid--;
|
|
94
|
+
if (mid <= start) {
|
|
95
|
+
lo = probe + 1;
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
if (tokens(prefix + source.slice(start, mid)) <= CHUNKER.targetTokens) {
|
|
99
|
+
best = mid;
|
|
100
|
+
lo = probe + 1;
|
|
101
|
+
}
|
|
102
|
+
else
|
|
103
|
+
hi = probe - 1;
|
|
104
|
+
}
|
|
105
|
+
invariant(best > start, "Cannot fit source unit in token budget.");
|
|
106
|
+
end = best;
|
|
107
|
+
const newline = source.lastIndexOf("\n", end - 1);
|
|
108
|
+
if (newline >= start + (end - start) / 2)
|
|
109
|
+
end = newline + 1;
|
|
110
|
+
}
|
|
111
|
+
result.push({ ...u, start, end });
|
|
112
|
+
if (end === u.end)
|
|
113
|
+
break;
|
|
114
|
+
let next = end;
|
|
115
|
+
if (overlap) {
|
|
116
|
+
next = Math.max(start + 1, end - Math.floor((end - start) * overlap));
|
|
117
|
+
if (/[\uDC00-\uDFFF]/.test(source[next] ?? ""))
|
|
118
|
+
next++;
|
|
119
|
+
}
|
|
120
|
+
invariant(next > start, "Chunker made no progress.");
|
|
121
|
+
start = next;
|
|
122
|
+
}
|
|
123
|
+
return result;
|
|
124
|
+
}
|
|
125
|
+
function textUnits(source, lang) {
|
|
126
|
+
// Heading/paragraph/fence units for Markdown; config section/line units otherwise.
|
|
127
|
+
const units = [];
|
|
128
|
+
let start = 0, pos = 0, fenced = false;
|
|
129
|
+
for (const line of source.match(/[^\n]*\n|[^\n]+$/g) ?? []) {
|
|
130
|
+
const fence = /^\s*(```|~~~)/.test(line);
|
|
131
|
+
const boundary = lang === "markdown"
|
|
132
|
+
? !fenced && (/^#{1,6}\s/.test(line) || line.trim() === "")
|
|
133
|
+
: /^\s*(\[|[\w.-]+\s*[:=])/.test(line);
|
|
134
|
+
if (boundary && pos > start) {
|
|
135
|
+
units.push({
|
|
136
|
+
start,
|
|
137
|
+
end: pos,
|
|
138
|
+
kind: lang === "markdown" ? "documentation" : "configuration",
|
|
139
|
+
});
|
|
140
|
+
start = pos;
|
|
141
|
+
}
|
|
142
|
+
if (fence)
|
|
143
|
+
fenced = !fenced;
|
|
144
|
+
pos += line.length;
|
|
145
|
+
}
|
|
146
|
+
if (pos > start)
|
|
147
|
+
units.push({
|
|
148
|
+
start,
|
|
149
|
+
end: pos,
|
|
150
|
+
kind: lang === "markdown" ? "documentation" : "configuration",
|
|
151
|
+
});
|
|
152
|
+
return units;
|
|
153
|
+
}
|
|
154
|
+
export async function chunk(source, path, mode = "syntax") {
|
|
155
|
+
const lang = detectLanguage(path);
|
|
156
|
+
if (!source.length)
|
|
157
|
+
return { spans: [], parseStatus: "empty", language: lang };
|
|
158
|
+
let units = [];
|
|
159
|
+
let status = "parsed";
|
|
160
|
+
if (mode === "window") {
|
|
161
|
+
status = "window-baseline";
|
|
162
|
+
units = [{ start: 0, end: source.length, kind: "fallback" }];
|
|
163
|
+
}
|
|
164
|
+
else if (["java", "typescript", "tsx", "javascript"].includes(lang)) {
|
|
165
|
+
const grammar = await language(lang);
|
|
166
|
+
const parser = new Parser();
|
|
167
|
+
let tree = null;
|
|
168
|
+
try {
|
|
169
|
+
parser.setLanguage(grammar);
|
|
170
|
+
tree = parser.parse(source);
|
|
171
|
+
invariant(tree, "Parser returned no tree.");
|
|
172
|
+
if (tree.rootNode.hasError) {
|
|
173
|
+
status = "parse-error-fallback";
|
|
174
|
+
units = [{ start: 0, end: source.length, kind: "fallback" }];
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
function visit(n) {
|
|
178
|
+
const container = /^(program|source_file|class_body|interface_body|class_declaration|interface_declaration|export_statement)$/.test(n.type);
|
|
179
|
+
const u = {
|
|
180
|
+
start: n.startIndex,
|
|
181
|
+
end: n.endIndex,
|
|
182
|
+
kind: classify(n.type),
|
|
183
|
+
scope: scopeName(n),
|
|
184
|
+
};
|
|
185
|
+
const name = n.childForFieldName("name");
|
|
186
|
+
if (name)
|
|
187
|
+
u.symbol = name.text.slice(0, 200);
|
|
188
|
+
if (u.kind === "function")
|
|
189
|
+
u.signature = n.text.split(/[\n{]/, 1)[0]?.slice(0, 240);
|
|
190
|
+
if (n.namedChildCount &&
|
|
191
|
+
(container ||
|
|
192
|
+
tokens(enrichment(path, u) + n.text) > CHUNKER.maxTokens)) {
|
|
193
|
+
for (const child of n.namedChildren)
|
|
194
|
+
if (child)
|
|
195
|
+
visit(child);
|
|
196
|
+
}
|
|
197
|
+
else if (n.endIndex > n.startIndex)
|
|
198
|
+
units.push(u);
|
|
199
|
+
}
|
|
200
|
+
visit(tree.rootNode);
|
|
201
|
+
// Attach every gap (punctuation, BOM, comments, whitespace) without altering source bytes.
|
|
202
|
+
let cursor = 0;
|
|
203
|
+
const covered = [];
|
|
204
|
+
for (const u of units.sort((a, b) => a.start - b.start)) {
|
|
205
|
+
if (covered.length) {
|
|
206
|
+
const whitespace = source.slice(cursor, u.start).match(/^\s*/)?.[0].length ?? 0;
|
|
207
|
+
cursor += whitespace;
|
|
208
|
+
covered[covered.length - 1].end = cursor;
|
|
209
|
+
}
|
|
210
|
+
covered.push({ ...u, start: cursor });
|
|
211
|
+
cursor = u.end;
|
|
212
|
+
}
|
|
213
|
+
units = covered;
|
|
214
|
+
if (cursor < source.length) {
|
|
215
|
+
if (units.length)
|
|
216
|
+
units[units.length - 1].end = source.length;
|
|
217
|
+
else
|
|
218
|
+
units = [{ start: 0, end: source.length, kind: "declaration" }];
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
finally {
|
|
223
|
+
tree?.delete();
|
|
224
|
+
parser.delete();
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (["markdown", "json", "yaml", "toml", "ini"].includes(lang)) {
|
|
228
|
+
status =
|
|
229
|
+
lang === "markdown" ? "markdown-boundaries" : "config-text-fallback";
|
|
230
|
+
units = textUnits(source, lang);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
status = "unsupported-language-fallback";
|
|
234
|
+
units = [{ start: 0, end: source.length, kind: "fallback" }];
|
|
235
|
+
}
|
|
236
|
+
const fallback = mode === "window" || status.includes("fallback");
|
|
237
|
+
// Merge small neighboring non-function declarations only within the same scope/kind.
|
|
238
|
+
const merged = [];
|
|
239
|
+
for (const u of units) {
|
|
240
|
+
const prev = merged.at(-1);
|
|
241
|
+
if (prev &&
|
|
242
|
+
prev.kind !== "function" &&
|
|
243
|
+
u.kind === prev.kind &&
|
|
244
|
+
u.scope === prev.scope &&
|
|
245
|
+
tokens(enrichment(path, prev) + source.slice(prev.start, u.end)) <=
|
|
246
|
+
CHUNKER.targetTokens) {
|
|
247
|
+
prev.end = u.end;
|
|
248
|
+
delete prev.symbol;
|
|
249
|
+
delete prev.signature;
|
|
250
|
+
}
|
|
251
|
+
else
|
|
252
|
+
merged.push({ ...u });
|
|
253
|
+
}
|
|
254
|
+
const bounded = merged.flatMap((u) => splitUnit(source, path, u, fallback ? CHUNKER.fallbackOverlap : 0));
|
|
255
|
+
const offsets = new Uint32Array(source.length + 1);
|
|
256
|
+
let byte = 0;
|
|
257
|
+
for (let i = 0; i < source.length;) {
|
|
258
|
+
const cp = source.codePointAt(i);
|
|
259
|
+
const chars = cp > 0xffff ? 2 : 1;
|
|
260
|
+
offsets[i] = byte;
|
|
261
|
+
if (chars === 2)
|
|
262
|
+
offsets[i + 1] = byte;
|
|
263
|
+
byte += Buffer.byteLength(String.fromCodePoint(cp));
|
|
264
|
+
i += chars;
|
|
265
|
+
offsets[i] = byte;
|
|
266
|
+
}
|
|
267
|
+
const raw = Buffer.from(source);
|
|
268
|
+
const spans = bounded.map((u) => {
|
|
269
|
+
const startByte = offsets[u.start], endByte = offsets[u.end];
|
|
270
|
+
const text = source.slice(u.start, u.end);
|
|
271
|
+
const searchText = enrichment(path, u) + text;
|
|
272
|
+
const kind = text.trim() === "" ? "structural" : u.kind;
|
|
273
|
+
return {
|
|
274
|
+
startByte,
|
|
275
|
+
endByte,
|
|
276
|
+
startLine: lineAt(raw, startByte),
|
|
277
|
+
endLine: lineAt(raw, Math.max(startByte, endByte - 1)),
|
|
278
|
+
chunkKind: kind,
|
|
279
|
+
scope: u.scope,
|
|
280
|
+
symbol: u.symbol,
|
|
281
|
+
signature: u.signature,
|
|
282
|
+
searchText,
|
|
283
|
+
tokenCount: tokens(searchText),
|
|
284
|
+
};
|
|
285
|
+
});
|
|
286
|
+
let covered = 0;
|
|
287
|
+
for (const s of spans) {
|
|
288
|
+
invariant(s.startByte <= covered &&
|
|
289
|
+
s.endByte > s.startByte &&
|
|
290
|
+
s.tokenCount <= CHUNKER.maxTokens, "Invalid chunk coverage or size.");
|
|
291
|
+
covered = Math.max(covered, s.endByte);
|
|
292
|
+
}
|
|
293
|
+
invariant(covered === raw.length, "Incomplete source coverage.");
|
|
294
|
+
return { spans, parseStatus: status, language: lang };
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=chunk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.js","sourceRoot":"","sources":["../src/chunk.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { Command, InvalidArgumentError } from "commander";
|
|
4
|
+
import { mkdir } from "node:fs/promises";
|
|
5
|
+
import { join, resolve } from "node:path";
|
|
6
|
+
import { randomUUID } from "node:crypto";
|
|
7
|
+
import { configure, loadSettings, stateRoot } from "./settings.js";
|
|
8
|
+
import { identity } from "./git.js";
|
|
9
|
+
import { loadBuild, materialize, validateBuild } from "./build.js";
|
|
10
|
+
import { invariant, optionalJson } from "./common.js";
|
|
11
|
+
import { LambdaRemote } from "./remote.js";
|
|
12
|
+
import { attachment, destination, discover, register, selectRepository, } from "./repository.js";
|
|
13
|
+
import { exclusive, publish, published } from "./publish.js";
|
|
14
|
+
import { resolveVersion, syncTags } from "./releases.js";
|
|
15
|
+
import { directHandle, loadHandle, readHandle, search } from "./search.js";
|
|
16
|
+
const cli = new Command()
|
|
17
|
+
.name("srcx")
|
|
18
|
+
.description("Version-aware code search on LambdaDB")
|
|
19
|
+
.enablePositionalOptions()
|
|
20
|
+
.version(JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8")).version);
|
|
21
|
+
const output = (value) => {
|
|
22
|
+
process.stdout.write(JSON.stringify(value, null, 2) + "\n");
|
|
23
|
+
};
|
|
24
|
+
const integer = (value) => {
|
|
25
|
+
if (!/^\d+$/.test(value))
|
|
26
|
+
throw new InvalidArgumentError("Expected a nonnegative integer.");
|
|
27
|
+
const n = Number(value);
|
|
28
|
+
if (!Number.isSafeInteger(n))
|
|
29
|
+
throw new InvalidArgumentError("Integer is too large.");
|
|
30
|
+
return n;
|
|
31
|
+
};
|
|
32
|
+
async function connected() {
|
|
33
|
+
const settings = await loadSettings();
|
|
34
|
+
return { settings, remote: new LambdaRemote(settings) };
|
|
35
|
+
}
|
|
36
|
+
cli
|
|
37
|
+
.command("configure")
|
|
38
|
+
.requiredOption("--endpoint <origin>")
|
|
39
|
+
.requiredOption("--project <name>")
|
|
40
|
+
.option("--api-key-env <name>", "Environment variable containing the API key", "LAMBDADB_API_KEY")
|
|
41
|
+
.action(async (o) => output(await configure(o.endpoint, o.project, o.apiKeyEnv)));
|
|
42
|
+
cli
|
|
43
|
+
.command("doctor")
|
|
44
|
+
.description("Check authentication/read access; does not establish write/query readiness")
|
|
45
|
+
.action(async () => {
|
|
46
|
+
const { remote, settings } = await connected();
|
|
47
|
+
const collections = await remote.collections();
|
|
48
|
+
output({
|
|
49
|
+
endpoint: settings.endpoint,
|
|
50
|
+
project: settings.project,
|
|
51
|
+
readAccess: true,
|
|
52
|
+
collections: collections.length,
|
|
53
|
+
writeAccess: "not checked",
|
|
54
|
+
queryReadiness: "not checked",
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
const repo = cli
|
|
58
|
+
.command("repo")
|
|
59
|
+
.description("Discover and attach Git repositories");
|
|
60
|
+
repo
|
|
61
|
+
.command("add")
|
|
62
|
+
.requiredOption("--path <directory>")
|
|
63
|
+
.option("--remote <name>")
|
|
64
|
+
.option("--description <text>")
|
|
65
|
+
.option("--tag <key=value>", "One optional Collection metadata tag")
|
|
66
|
+
.action(async (o) => {
|
|
67
|
+
const { remote } = await connected();
|
|
68
|
+
let labels;
|
|
69
|
+
if (o.tag) {
|
|
70
|
+
const at = o.tag.indexOf("=");
|
|
71
|
+
invariant(at > 0, "Use --tag key=value.");
|
|
72
|
+
labels = { [o.tag.slice(0, at)]: o.tag.slice(at + 1) };
|
|
73
|
+
}
|
|
74
|
+
output(await register(remote, {
|
|
75
|
+
path: o.path,
|
|
76
|
+
remote: o.remote,
|
|
77
|
+
description: o.description,
|
|
78
|
+
labels,
|
|
79
|
+
}));
|
|
80
|
+
});
|
|
81
|
+
repo.command("list").action(async () => {
|
|
82
|
+
const { remote } = await connected();
|
|
83
|
+
output(await discover(remote));
|
|
84
|
+
});
|
|
85
|
+
repo
|
|
86
|
+
.command("show")
|
|
87
|
+
.requiredOption("--repo <name>")
|
|
88
|
+
.action(async (o) => {
|
|
89
|
+
const { remote } = await connected();
|
|
90
|
+
output(await selectRepository(remote, o.repo));
|
|
91
|
+
});
|
|
92
|
+
cli
|
|
93
|
+
.command("import")
|
|
94
|
+
.description("Build a pinned Git commit; --dry-run exports locally without credentials")
|
|
95
|
+
.option("--path <directory>", "Local checkout (required with credential-free --dry-run)")
|
|
96
|
+
.option("--remote <name>")
|
|
97
|
+
.option("--repo <name>", "Registered remote repository")
|
|
98
|
+
.option("--ref <ref>", "Local branch, Git tag, or commit OID")
|
|
99
|
+
.option("--dry-run", "Only materialize and validate a local build")
|
|
100
|
+
.option("--output <directory>", "New artifact directory")
|
|
101
|
+
.option("--previous <directory>", "Previous build artifact for a dry-run diff")
|
|
102
|
+
.option("--artifact <directory>", "Import a previously previewed artifact")
|
|
103
|
+
.option("--resume", "Resume the same pending artifact after inspecting its journal")
|
|
104
|
+
.option("--timeout <seconds>", "Validation wait deadline", integer, 120)
|
|
105
|
+
.action(async (o) => {
|
|
106
|
+
invariant(!(o.path && o.repo), "Choose --path or --repo.");
|
|
107
|
+
invariant(!o.previous || o.dryRun, "--previous is only accepted with --dry-run.");
|
|
108
|
+
invariant(!o.resume || !o.dryRun, "--resume requires a connected import.");
|
|
109
|
+
invariant(!(o.artifact && (o.ref || o.path || o.output || o.previous)), "--artifact cannot be combined with --ref/--path/--output/--previous.");
|
|
110
|
+
const buildLocal = async (source, previous) => {
|
|
111
|
+
invariant(o.ref, "--ref is required to build a commit.");
|
|
112
|
+
const parent = join(stateRoot(), "builds");
|
|
113
|
+
await mkdir(parent, { recursive: true, mode: 0o700 });
|
|
114
|
+
const path = o.output ? resolve(o.output) : join(parent, randomUUID());
|
|
115
|
+
return materialize({
|
|
116
|
+
identity: source,
|
|
117
|
+
ref: o.ref,
|
|
118
|
+
output: path,
|
|
119
|
+
previous,
|
|
120
|
+
});
|
|
121
|
+
};
|
|
122
|
+
if (o.dryRun) {
|
|
123
|
+
let b;
|
|
124
|
+
if (o.artifact) {
|
|
125
|
+
b = await loadBuild(o.artifact);
|
|
126
|
+
await validateBuild(b);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
let source;
|
|
130
|
+
if (o.path)
|
|
131
|
+
source = await identity(o.path, o.remote);
|
|
132
|
+
else {
|
|
133
|
+
invariant(o.repo, "Use --path for a credential-free dry run.");
|
|
134
|
+
const { remote, settings } = await connected();
|
|
135
|
+
source = await attachment(settings, await selectRepository(remote, o.repo));
|
|
136
|
+
}
|
|
137
|
+
b = await buildLocal(source, o.previous ? await loadBuild(o.previous) : undefined);
|
|
138
|
+
}
|
|
139
|
+
output({
|
|
140
|
+
status: "locally-validated",
|
|
141
|
+
artifact: b.directory,
|
|
142
|
+
commitOid: b.commitOid,
|
|
143
|
+
configHash: b.configHash,
|
|
144
|
+
counts: b.counts,
|
|
145
|
+
changes: b.changes,
|
|
146
|
+
obsoleteIds: b.obsoleteIds,
|
|
147
|
+
coverage: b.inventory.map((e) => ({
|
|
148
|
+
path: e.path,
|
|
149
|
+
status: e.status,
|
|
150
|
+
reason: e.reason,
|
|
151
|
+
parseStatus: e.parseStatus,
|
|
152
|
+
})),
|
|
153
|
+
uploaded: false,
|
|
154
|
+
});
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
invariant(o.repo, "Connected import requires --repo. Register it with repo add first.");
|
|
158
|
+
invariant(o.timeout > 0, "Timeout must be positive.");
|
|
159
|
+
const { remote, settings } = await connected();
|
|
160
|
+
const r = await selectRepository(remote, o.repo), state = destination(settings, r.collection), store = remote.store(r.collection);
|
|
161
|
+
output(await exclusive(state, async () => {
|
|
162
|
+
// Pending attempts reconcile against the journal's immutable remote
|
|
163
|
+
// baseline; they do not need the previous build's local files.
|
|
164
|
+
const pending = await optionalJson(join(state, "pending.json"));
|
|
165
|
+
let baseline;
|
|
166
|
+
if (!pending) {
|
|
167
|
+
const last = await optionalJson(join(state, "last-build.json"));
|
|
168
|
+
if (last) {
|
|
169
|
+
const b = await loadBuild(last.artifact);
|
|
170
|
+
baseline = { version: last.version, build: b };
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const b = o.artifact
|
|
174
|
+
? await loadBuild(o.artifact)
|
|
175
|
+
: await buildLocal(await attachment(settings, r), baseline?.build);
|
|
176
|
+
return publish({
|
|
177
|
+
store,
|
|
178
|
+
binding: r,
|
|
179
|
+
build: b,
|
|
180
|
+
state,
|
|
181
|
+
baseline,
|
|
182
|
+
resume: o.resume,
|
|
183
|
+
timeoutMs: o.timeout * 1000,
|
|
184
|
+
});
|
|
185
|
+
}));
|
|
186
|
+
});
|
|
187
|
+
cli
|
|
188
|
+
.command("versions")
|
|
189
|
+
.requiredOption("--repo <name>")
|
|
190
|
+
.action(async (o) => {
|
|
191
|
+
const { remote } = await connected();
|
|
192
|
+
const r = await selectRepository(remote, o.repo);
|
|
193
|
+
output(await published(remote.store(r.collection), r));
|
|
194
|
+
});
|
|
195
|
+
cli
|
|
196
|
+
.command("resolve")
|
|
197
|
+
.requiredOption("--repo <name>")
|
|
198
|
+
.requiredOption("--ref <commit-or-release>")
|
|
199
|
+
.action(async (o) => {
|
|
200
|
+
const { remote } = await connected();
|
|
201
|
+
const r = await selectRepository(remote, o.repo);
|
|
202
|
+
output(await resolveVersion(remote.store(r.collection), r, o.ref));
|
|
203
|
+
});
|
|
204
|
+
cli
|
|
205
|
+
.command("search")
|
|
206
|
+
.requiredOption("--repo <name>")
|
|
207
|
+
.requiredOption("--version <commit-or-release>")
|
|
208
|
+
.requiredOption("--query <text>")
|
|
209
|
+
.option("--limit <count>", "Maximum hits", integer, 10)
|
|
210
|
+
.option("--path <path>", "Exact path filter")
|
|
211
|
+
.option("--language <name>")
|
|
212
|
+
.action(async (o) => {
|
|
213
|
+
const { remote, settings } = await connected();
|
|
214
|
+
const r = await selectRepository(remote, o.repo), store = remote.store(r.collection), v = await resolveVersion(store, r, o.version);
|
|
215
|
+
output(await search(store, settings, r, v, o.query, o.limit, {
|
|
216
|
+
path: o.path,
|
|
217
|
+
language: o.language,
|
|
218
|
+
}));
|
|
219
|
+
});
|
|
220
|
+
cli
|
|
221
|
+
.command("read")
|
|
222
|
+
.option("--result <id>")
|
|
223
|
+
.option("--repo <name>")
|
|
224
|
+
.option("--version <commit-or-release>")
|
|
225
|
+
.option("--path <path>")
|
|
226
|
+
.option("--lines <start:end>")
|
|
227
|
+
.option("--context <lines>", "Expand an evidence span", integer, 0)
|
|
228
|
+
.option("--full-file")
|
|
229
|
+
.action(async (o) => {
|
|
230
|
+
invariant(!(o.fullFile && (o.lines || o.context)), "--full-file cannot be combined with --lines or --context.");
|
|
231
|
+
invariant(!(o.result && (o.repo || o.version || o.path || o.lines)), "Use result mode or direct path mode.");
|
|
232
|
+
const { settings, remote } = await connected();
|
|
233
|
+
let handle;
|
|
234
|
+
if (o.result) {
|
|
235
|
+
handle = await loadHandle(o.result);
|
|
236
|
+
invariant(handle.endpoint === settings.endpoint &&
|
|
237
|
+
handle.project === settings.project, "Result belongs to another endpoint/project.");
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
invariant(o.repo && o.version && o.path, "Provide --result, or --repo/--version/--path.");
|
|
241
|
+
const r = await selectRepository(remote, o.repo), store = remote.store(r.collection);
|
|
242
|
+
handle = await directHandle(store, settings, r, await resolveVersion(store, r, o.version), o.path);
|
|
243
|
+
}
|
|
244
|
+
let lines;
|
|
245
|
+
if (o.lines) {
|
|
246
|
+
invariant(/^\d+:\d+$/.test(o.lines), "Use --lines start:end.");
|
|
247
|
+
lines = o.lines.split(":").map(Number);
|
|
248
|
+
}
|
|
249
|
+
output(await readHandle(remote.store(handle.repository.collection), settings, handle, {
|
|
250
|
+
context: o.context,
|
|
251
|
+
fullFile: o.fullFile || (!o.result && !o.lines),
|
|
252
|
+
lines,
|
|
253
|
+
}));
|
|
254
|
+
});
|
|
255
|
+
cli
|
|
256
|
+
.command("git")
|
|
257
|
+
.command("sync-tags")
|
|
258
|
+
.description("Synchronize currently observed local Git tags; no fetch/import/pruning")
|
|
259
|
+
.requiredOption("--repo <name>")
|
|
260
|
+
.action(async (o) => {
|
|
261
|
+
const { remote, settings } = await connected();
|
|
262
|
+
const r = await selectRepository(remote, o.repo), source = await attachment(settings, r), state = destination(settings, r.collection);
|
|
263
|
+
output(await exclusive(state, async () => {
|
|
264
|
+
invariant(!(await optionalJson(join(state, "pending.json"))), "An import is pending; resume it before tag synchronization.");
|
|
265
|
+
return syncTags(remote.store(r.collection), r, source.path);
|
|
266
|
+
}));
|
|
267
|
+
});
|
|
268
|
+
try {
|
|
269
|
+
await cli.parseAsync();
|
|
270
|
+
}
|
|
271
|
+
catch (e) {
|
|
272
|
+
const message = e instanceof Error ? e.message : "Operation failed.";
|
|
273
|
+
process.stderr.write(`srcx: ${message}\n`);
|
|
274
|
+
process.exitCode = 1;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/common.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare const APP = "srcx";
|
|
2
|
+
export declare const PURPOSE = "code-search-v1";
|
|
3
|
+
export type Doc = {
|
|
4
|
+
id: string;
|
|
5
|
+
kind: string;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
};
|
|
8
|
+
export declare function canonical(value: unknown): string;
|
|
9
|
+
export declare function hash(value: unknown): string;
|
|
10
|
+
export declare function invariant(value: unknown, message: string): asserts value;
|
|
11
|
+
export declare function atomic(path: string, value: unknown): Promise<void>;
|
|
12
|
+
export declare function json<T>(path: string): Promise<T>;
|
|
13
|
+
export declare function optionalJson<T>(path: string): Promise<T | undefined>;
|
|
14
|
+
export declare function utf8(bytes: Buffer): string | undefined;
|
|
15
|
+
export declare function sortedHash(docs: Doc[]): string;
|
|
16
|
+
export declare function lineAt(source: Buffer, byte: number): number;
|
|
17
|
+
export declare function sleep(ms: number): Promise<void>;
|