@functional-systems/srcx 0.1.0-dev.4 → 0.1.0-dev.40
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 +179 -0
- package/CONTRIBUTING.md +4 -0
- package/DESIGN.md +378 -58
- package/README.md +628 -35
- package/RELEASING.md +15 -3
- package/VALIDATION.md +1120 -16
- package/dist/artifact.d.ts +31 -0
- package/dist/artifact.js +237 -0
- package/dist/artifact.js.map +1 -0
- package/dist/build.d.ts +86 -3
- package/dist/build.js +233 -71
- package/dist/build.js.map +1 -1
- package/dist/chunk.d.ts +9 -3
- package/dist/chunk.js +341 -14
- package/dist/chunk.js.map +1 -1
- package/dist/cli.js +130 -21
- package/dist/cli.js.map +1 -1
- package/dist/file-policy.d.ts +20 -0
- package/dist/file-policy.js +103 -0
- package/dist/file-policy.js.map +1 -0
- package/dist/implementation.d.ts +11 -0
- package/dist/implementation.js +191 -0
- package/dist/implementation.js.map +1 -0
- package/dist/publish.d.ts +18 -0
- package/dist/publish.js +224 -46
- package/dist/publish.js.map +1 -1
- package/dist/releases.js +21 -3
- package/dist/releases.js.map +1 -1
- package/dist/remote.d.ts +1 -0
- package/dist/remote.js +50 -9
- package/dist/remote.js.map +1 -1
- package/dist/repository.d.ts +4 -1
- package/dist/repository.js +26 -11
- package/dist/repository.js.map +1 -1
- package/dist/rerank.d.ts +16 -0
- package/dist/rerank.js +87 -0
- package/dist/rerank.js.map +1 -0
- package/dist/search.d.ts +18 -3
- package/dist/search.js +143 -23
- package/dist/search.js.map +1 -1
- package/dist/skills.d.ts +24 -0
- package/dist/skills.js +155 -0
- package/dist/skills.js.map +1 -0
- package/package.json +17 -6
- package/runtime/grammars/README.md +50 -0
- package/runtime/grammars/tree-sitter-bash.LICENSE +21 -0
- package/runtime/grammars/tree-sitter-bash.wasm +0 -0
- package/runtime/grammars/tree-sitter-sql.LICENSE +21 -0
- package/runtime/grammars/tree-sitter-sql.wasm +0 -0
- package/runtime/grammars/tree-sitter-wasm.LICENSE +21 -0
- package/runtime/qwen.py +132 -0
- package/runtime/requirements.txt +34 -0
- package/skills/srcx-search/SKILL.md +103 -0
- package/src/artifact.ts +303 -0
- package/src/build.ts +313 -84
- package/src/chunk.ts +360 -12
- package/src/cli.ts +263 -23
- package/src/file-policy.ts +166 -0
- package/src/implementation.ts +253 -0
- package/src/publish.ts +321 -47
- package/src/releases.ts +36 -3
- package/src/remote.ts +70 -13
- package/src/repository.ts +40 -11
- package/src/rerank.ts +131 -0
- package/src/search.ts +229 -28
- package/src/skills.ts +205 -0
package/dist/search.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import { type CollectionStore } from "./remote.js";
|
|
|
2
2
|
import { type Settings } from "./settings.js";
|
|
3
3
|
import type { Repository } from "./repository.js";
|
|
4
4
|
import type { Published } from "./publish.js";
|
|
5
|
-
import type
|
|
5
|
+
import { type InventoryItem } from "./build.js";
|
|
6
|
+
import { type Implementation } from "./implementation.js";
|
|
7
|
+
import { type RerankOptions } from "./rerank.js";
|
|
6
8
|
export type Handle = {
|
|
7
9
|
id: string;
|
|
8
10
|
endpoint: string;
|
|
@@ -22,9 +24,19 @@ export declare function lexicalQuery(query: string, filters?: {
|
|
|
22
24
|
path?: string;
|
|
23
25
|
language?: string;
|
|
24
26
|
}): Record<string, unknown>;
|
|
27
|
+
export type SearchMode = "lexical" | "semantic" | "hybrid";
|
|
28
|
+
export declare function retrievalQuery(query: string, size: number, filters: {
|
|
29
|
+
path?: string;
|
|
30
|
+
language?: string;
|
|
31
|
+
}, mode: SearchMode): Record<string, unknown>;
|
|
25
32
|
export declare function search(store: CollectionStore, s: Settings, r: Repository, v: Published, query: string, size?: number, filters?: {
|
|
26
33
|
path?: string;
|
|
27
34
|
language?: string;
|
|
35
|
+
}, mode?: SearchMode, options?: RerankOptions): Promise<unknown[]>;
|
|
36
|
+
/** Exact indexed symbol lookup; declarations and same-name definitions remain visible. */
|
|
37
|
+
export declare function lookup(store: CollectionStore, s: Settings, r: Repository, v: Published, symbol: string, size?: number, filters?: {
|
|
38
|
+
path?: string;
|
|
39
|
+
language?: string;
|
|
28
40
|
}): Promise<unknown[]>;
|
|
29
41
|
export declare function loadHandle(id: string): Promise<Handle>;
|
|
30
42
|
export declare function directHandle(store: CollectionStore, s: Settings, r: Repository, v: Published, path: string): Promise<Handle>;
|
|
@@ -32,7 +44,12 @@ export declare function readHandle(store: CollectionStore, s: Settings, h: Handl
|
|
|
32
44
|
context?: number;
|
|
33
45
|
fullFile?: boolean;
|
|
34
46
|
lines?: [number, number];
|
|
47
|
+
exactChunk?: boolean;
|
|
48
|
+
implementation?: boolean;
|
|
35
49
|
}): Promise<{
|
|
50
|
+
sourceText: string;
|
|
51
|
+
citation: string;
|
|
52
|
+
implementation?: Implementation | undefined;
|
|
36
53
|
repository: string;
|
|
37
54
|
commitOid: string;
|
|
38
55
|
version: string;
|
|
@@ -41,6 +58,4 @@ export declare function readHandle(store: CollectionStore, s: Settings, h: Handl
|
|
|
41
58
|
startLine: number;
|
|
42
59
|
endLine: number;
|
|
43
60
|
contentHash: string;
|
|
44
|
-
sourceText: string;
|
|
45
|
-
citation: string;
|
|
46
61
|
}>;
|
package/dist/search.js
CHANGED
|
@@ -3,6 +3,9 @@ import { randomUUID } from "node:crypto";
|
|
|
3
3
|
import { atomic, hash, invariant, json, lineAt } from "./common.js";
|
|
4
4
|
import { one, tag } from "./remote.js";
|
|
5
5
|
import { stateRoot } from "./settings.js";
|
|
6
|
+
import { PRESET, recordHash } from "./build.js";
|
|
7
|
+
import { implementationSpan } from "./implementation.js";
|
|
8
|
+
import { candidateLimit, qwenScores, QWEN_MODEL, QWEN_REVISION, } from "./rerank.js";
|
|
6
9
|
export async function inventoryAt(store, r, v) {
|
|
7
10
|
const current = (await store.tags()).find((t) => t.name === v.tagName);
|
|
8
11
|
invariant(current?.snapshotId === v.snapshotId, "Pinned Tag was deleted or recreated.");
|
|
@@ -45,14 +48,56 @@ export function lexicalQuery(query, filters = {}) {
|
|
|
45
48
|
],
|
|
46
49
|
};
|
|
47
50
|
}
|
|
48
|
-
export
|
|
49
|
-
invariant(
|
|
51
|
+
export function retrievalQuery(query, size, filters, mode) {
|
|
52
|
+
invariant(["lexical", "semantic", "hybrid"].includes(mode), "Unknown search mode.");
|
|
53
|
+
const lexical = lexicalQuery(query, filters);
|
|
54
|
+
if (mode === "lexical")
|
|
55
|
+
return lexical;
|
|
56
|
+
const semantic = {
|
|
57
|
+
knn: {
|
|
58
|
+
field: "embedding",
|
|
59
|
+
queryText: query,
|
|
60
|
+
k: size,
|
|
61
|
+
filter: {
|
|
62
|
+
bool: lexical.bool.filter((c) => c.occur === "filter"),
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
return mode === "semantic" ? semantic : { rrf: [lexical, semantic] };
|
|
67
|
+
}
|
|
68
|
+
export async function search(store, s, r, v, query, size = 10, filters = {}, mode = "lexical", options = {}) {
|
|
69
|
+
const started = performance.now();
|
|
70
|
+
const count = candidateLimit(size, options);
|
|
71
|
+
invariant(mode === "lexical" || r.preset?.embedding?.managed, "Semantic/hybrid search requires a managed embedding Collection; register with --embedding text-embedding-3-small or text-embedding-3-large.");
|
|
72
|
+
const request = retrievalQuery(query, count, filters, mode);
|
|
73
|
+
return queryResults(store, s, r, v, request, count, size, query, options, started);
|
|
74
|
+
}
|
|
75
|
+
/** Exact indexed symbol lookup; declarations and same-name definitions remain visible. */
|
|
76
|
+
export async function lookup(store, s, r, v, symbol, size = 5, filters = {}) {
|
|
77
|
+
const started = performance.now();
|
|
78
|
+
invariant(symbol.trim().length > 0 && symbol.length <= 200, "Symbol must contain 1–200 characters.");
|
|
79
|
+
invariant(Number.isInteger(size) && size >= 1 && size <= 20, "Lookup limit must be between 1 and 20.");
|
|
80
|
+
const request = {
|
|
81
|
+
bool: Object.entries({ kind: "chunk", symbol, ...filters })
|
|
82
|
+
.filter(([, value]) => value !== undefined)
|
|
83
|
+
.map(([field, value]) => ({
|
|
84
|
+
queryString: { query: value, defaultField: field, skipSyntax: true },
|
|
85
|
+
occur: "filter",
|
|
86
|
+
})),
|
|
87
|
+
};
|
|
88
|
+
return queryResults(store, s, r, v, request, size, size, symbol, {}, started, true);
|
|
89
|
+
}
|
|
90
|
+
async function queryResults(store, s, r, v, request, count, size, query, options, started, includeSource = false) {
|
|
50
91
|
const entries = await inventoryAt(store, r, v);
|
|
51
92
|
const files = new Map(entries.filter((e) => e.status === "included").map((e) => [e.fileId, e]));
|
|
52
|
-
const
|
|
53
|
-
|
|
93
|
+
const candidates = [];
|
|
94
|
+
const hits = await store.query(v.tagName, request, count);
|
|
95
|
+
invariant(hits.length <= count &&
|
|
96
|
+
new Set(hits.map((h) => h.doc.id)).size === hits.length, "Invalid search candidate count or duplicate IDs.");
|
|
97
|
+
for (const hit of hits) {
|
|
54
98
|
const d = hit.doc, e = files.get(d.fileId);
|
|
55
99
|
invariant(d.kind === "chunk" &&
|
|
100
|
+
(!includeSource || d.symbol === query) &&
|
|
56
101
|
d.configHash === r.configHash &&
|
|
57
102
|
e?.chunkIds?.includes(d.id) &&
|
|
58
103
|
d.contentHash === e.contentHash &&
|
|
@@ -68,28 +113,77 @@ export async function search(store, s, r, v, query, size = 10, filters = {}) {
|
|
|
68
113
|
path: String(d.path),
|
|
69
114
|
contentHash: String(d.contentHash),
|
|
70
115
|
chunkId: d.id,
|
|
71
|
-
chunkHash:
|
|
116
|
+
chunkHash: recordHash(d, r.preset ?? PRESET),
|
|
72
117
|
startLine: Number(d.startLine),
|
|
73
118
|
endLine: Number(d.endLine),
|
|
74
119
|
};
|
|
75
120
|
// Check the exact source/ranges before persisting an evidence handle.
|
|
76
|
-
const evidence = await readHandle(store, s, handle
|
|
77
|
-
|
|
121
|
+
const evidence = await readHandle(store, s, handle, {
|
|
122
|
+
exactChunk: includeSource || !!options.rerank,
|
|
123
|
+
});
|
|
124
|
+
candidates.push({
|
|
125
|
+
handle,
|
|
126
|
+
text: evidence.sourceText,
|
|
127
|
+
result: {
|
|
128
|
+
resultId: id,
|
|
129
|
+
repository: r.repoKey,
|
|
130
|
+
commitOid: v.commitOid,
|
|
131
|
+
version: v.tagName,
|
|
132
|
+
snapshotId: v.snapshotId,
|
|
133
|
+
path: d.path,
|
|
134
|
+
startLine: d.startLine,
|
|
135
|
+
endLine: d.endLine,
|
|
136
|
+
symbol: d.symbol,
|
|
137
|
+
...(includeSource
|
|
138
|
+
? {
|
|
139
|
+
scope: d.scope,
|
|
140
|
+
chunkKind: d.chunkKind,
|
|
141
|
+
sourceText: evidence.sourceText,
|
|
142
|
+
}
|
|
143
|
+
: { score: hit.score, excerpt: evidence.sourceText.slice(0, 600) }),
|
|
144
|
+
citation: evidence.citation,
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
const retrievalMs = performance.now() - started;
|
|
149
|
+
let rerankMs = 0;
|
|
150
|
+
let ranked = candidates.map((candidate, index) => ({
|
|
151
|
+
...candidate,
|
|
152
|
+
index,
|
|
153
|
+
rerankScore: 0,
|
|
154
|
+
}));
|
|
155
|
+
if (options.rerank && candidates.length) {
|
|
156
|
+
const response = await qwenScores(query, candidates.map((c) => ({ id: c.handle.chunkId, text: c.text })));
|
|
157
|
+
rerankMs = response.elapsedMs;
|
|
158
|
+
ranked = ranked
|
|
159
|
+
.map((c, index) => ({ ...c, rerankScore: response.scores[index] }))
|
|
160
|
+
.sort((a, b) => b.rerankScore - a.rerankScore || a.index - b.index);
|
|
161
|
+
}
|
|
162
|
+
if (options.rerank || includeSource)
|
|
163
|
+
invariant((await store.tags()).find((t) => t.name === v.tagName)?.snapshotId ===
|
|
164
|
+
v.snapshotId, "Pinned Tag was deleted or recreated during result preparation.");
|
|
165
|
+
const result = [];
|
|
166
|
+
for (const c of ranked.slice(0, size)) {
|
|
167
|
+
await atomic(join(stateRoot(), "results", c.handle.id + ".json"), c.handle);
|
|
78
168
|
result.push({
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
symbol: d.symbol,
|
|
88
|
-
score: hit.score,
|
|
89
|
-
excerpt: evidence.sourceText.slice(0, 600),
|
|
90
|
-
citation: evidence.citation,
|
|
169
|
+
...c.result,
|
|
170
|
+
...(options.rerank
|
|
171
|
+
? {
|
|
172
|
+
rerankScore: c.rerankScore,
|
|
173
|
+
retrievalRank: c.index + 1,
|
|
174
|
+
reranker: { model: QWEN_MODEL, revision: QWEN_REVISION },
|
|
175
|
+
}
|
|
176
|
+
: {}),
|
|
91
177
|
});
|
|
92
178
|
}
|
|
179
|
+
if (options.rerank)
|
|
180
|
+
options.onTiming?.({
|
|
181
|
+
candidates: candidates.length,
|
|
182
|
+
returned: result.length,
|
|
183
|
+
retrievalMs,
|
|
184
|
+
rerankMs,
|
|
185
|
+
searchMs: performance.now() - started,
|
|
186
|
+
});
|
|
93
187
|
return result;
|
|
94
188
|
}
|
|
95
189
|
export async function loadHandle(id) {
|
|
@@ -115,6 +209,12 @@ export async function directHandle(store, s, r, v, path) {
|
|
|
115
209
|
};
|
|
116
210
|
}
|
|
117
211
|
export async function readHandle(store, s, h, options = {}) {
|
|
212
|
+
invariant(!options.implementation ||
|
|
213
|
+
(h.chunkId &&
|
|
214
|
+
!options.fullFile &&
|
|
215
|
+
!options.lines &&
|
|
216
|
+
!options.context &&
|
|
217
|
+
!options.exactChunk), "Implementation reads require a result handle without range overrides.");
|
|
118
218
|
invariant(h.endpoint === s.endpoint && h.project === s.project, "Result belongs to another endpoint/project; restore that connection before reading.");
|
|
119
219
|
const v = h.version, current = (await store.tags()).find((t) => t.name === v.tagName);
|
|
120
220
|
invariant(current?.snapshotId === v.snapshotId, "Pinned Tag is missing or has been recreated.");
|
|
@@ -129,10 +229,12 @@ export async function readHandle(store, s, h, options = {}) {
|
|
|
129
229
|
const total = raw.length === 0
|
|
130
230
|
? 0
|
|
131
231
|
: lineAt(raw, raw.length - (raw.at(-1) === 10 ? 1 : 0));
|
|
232
|
+
let chunkSource;
|
|
233
|
+
let implementation;
|
|
132
234
|
if (h.chunkId) {
|
|
133
235
|
const d = await one(store, tag(v.tagName), h.chunkId);
|
|
134
236
|
invariant(d &&
|
|
135
|
-
|
|
237
|
+
recordHash(d, h.repository.preset ?? PRESET) === h.chunkHash &&
|
|
136
238
|
d.fileId === h.fileId &&
|
|
137
239
|
d.contentHash === h.contentHash, "Pinned chunk has changed or is missing.");
|
|
138
240
|
const a = Number(d.startByte), z = Number(d.endByte);
|
|
@@ -143,10 +245,20 @@ export async function readHandle(store, s, h, options = {}) {
|
|
|
143
245
|
z <= raw.length &&
|
|
144
246
|
lineAt(raw, a) === h.startLine &&
|
|
145
247
|
lineAt(raw, z - 1) === h.endLine, "Invalid source range.");
|
|
248
|
+
chunkSource = raw.subarray(a, z).toString("utf8");
|
|
249
|
+
if (options.implementation)
|
|
250
|
+
implementation = await implementationSpan(file.sourceText, h.path, {
|
|
251
|
+
startByte: a,
|
|
252
|
+
endByte: z,
|
|
253
|
+
});
|
|
146
254
|
}
|
|
147
255
|
const context = options.context ?? 0;
|
|
148
256
|
invariant(Number.isInteger(context) && context >= 0, "Context must be a nonnegative integer.");
|
|
149
257
|
let start = options.lines?.[0] ?? h.startLine, end = options.lines?.[1] ?? h.endLine;
|
|
258
|
+
if (implementation?.status === "resolved") {
|
|
259
|
+
start = implementation.startLine;
|
|
260
|
+
end = implementation.endLine;
|
|
261
|
+
}
|
|
150
262
|
if (options.fullFile) {
|
|
151
263
|
start = 1;
|
|
152
264
|
end = total;
|
|
@@ -162,9 +274,16 @@ export async function readHandle(store, s, h, options = {}) {
|
|
|
162
274
|
end = Math.min(total, end + context);
|
|
163
275
|
}
|
|
164
276
|
const lines = file.sourceText.match(/[^\n]*\n|[^\n]+$/g) ?? [];
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
277
|
+
invariant(!options.exactChunk ||
|
|
278
|
+
(chunkSource !== undefined &&
|
|
279
|
+
!options.fullFile &&
|
|
280
|
+
!options.lines &&
|
|
281
|
+
!options.context), "Exact chunk reads require a chunk handle without range overrides.");
|
|
282
|
+
const sourceText = options.exactChunk
|
|
283
|
+
? chunkSource
|
|
284
|
+
: options.fullFile
|
|
285
|
+
? file.sourceText
|
|
286
|
+
: lines.slice(start - 1, end).join("");
|
|
168
287
|
return {
|
|
169
288
|
repository: h.repository.repoKey,
|
|
170
289
|
commitOid: v.commitOid,
|
|
@@ -174,6 +293,7 @@ export async function readHandle(store, s, h, options = {}) {
|
|
|
174
293
|
startLine: start,
|
|
175
294
|
endLine: end,
|
|
176
295
|
contentHash: h.contentHash,
|
|
296
|
+
...(implementation ? { implementation } : {}),
|
|
177
297
|
sourceText,
|
|
178
298
|
citation: `${h.repository.repoKey}@${v.commitOid}:${h.path}:${start}-${end}`,
|
|
179
299
|
};
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAY,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,GAAG,EAAE,GAAG,EAAwB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAiB,MAAM,eAAe,CAAC;AAkBzD,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAsB,EACtB,CAAa,EACb,CAAY;IAEZ,MAAM,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IACvE,SAAS,CACP,OAAO,EAAE,UAAU,KAAK,CAAC,CAAC,UAAU,EACpC,sCAAsC,CACvC,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;IAC9D,SAAS,CACP,IAAI,EAAE,MAAM,KAAK,CAAC,CAAC,MAAM;QACvB,IAAI,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;QAC1B,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;QAChC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,SAAS;QAC9B,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAClC,IAAI,CAAC,aAAa,KAAK,CAAC,CAAC,aAAa,EACxC,oCAAoC,CACrC,CAAC;IACF,SAAS,CACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EACpC,sCAAsC,CACvC,CAAC;IACF,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,IAAK,IAAI,CAAC,gBAA6B,CAAC,OAAO,EAAE,EAAE,CAAC;QACpE,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClD,SAAS,CACP,IAAI,EAAE,IAAI,KAAK,WAAW;YACxB,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAChC,IAAI,CAAC,WAAW,KAAK,CAAC;YACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,QAAQ,EACtC,yBAAyB,CAC1B,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,GAAI,IAAI,CAAC,OAA2B,CAAC,CAAC;IACrD,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,0BAA0B,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,MAAM,UAAU,YAAY,CAC1B,KAAa,EACb,UAAgD,EAAE;IAElD,SAAS,CACP,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAC/C,uCAAuC,CACxC,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE,CAAC,CAAC;QACjD,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE;QACpE,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;YACxB;gBACE,WAAW,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE;gBACpE,KAAK,EAAE,MAAM;aACd;YACD,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;KACF,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,KAAsB,EACtB,CAAW,EACX,CAAa,EACb,CAAY,EACZ,KAAa,EACb,IAAI,GAAG,EAAE,EACT,UAAgD,EAAE;IAElD,SAAS,CACP,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,EACjD,yCAAyC,CAC1C,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CACzE,CAAC;IACF,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,MAAM,GAAG,IAAI,MAAM,KAAK,CAAC,KAAK,CACjC,CAAC,CAAC,OAAO,EACT,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,EAC5B,IAAI,CACL,EAAE,CAAC;QACF,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,EACf,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAgB,CAAC,CAAC;QACpC,SAAS,CACP,CAAC,CAAC,IAAI,KAAK,OAAO;YAChB,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU;YAC7B,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3B,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;YAC/B,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EACnB,qDAAqD,CACtD,CAAC;QACF,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;QACxB,MAAM,MAAM,GAAW;YACrB,EAAE;YACF,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC;YACb,OAAO,EAAE,CAAC;YACV,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;YACxB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACpB,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YAClC,OAAO,EAAE,CAAC,CAAC,EAAE;YACb,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9B,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;SAC3B,CAAC;QACF,sEAAsE;QACtE,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,CAAC,CAAC,OAAO;YACrB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAC1C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAAU;IACzC,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,2BAA2B,CAAC,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,IAAI,CAAS,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;IACzE,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAClD,OAAO,CAAC,CAAC;AACX,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,KAAsB,EACtB,CAAW,EACX,CAAa,EACb,CAAY,EACZ,IAAY;IAEZ,MAAM,CAAC,GAAG,CAAC,MAAM,WAAW,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxE,SAAS,CACP,CAAC,EAAE,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,WAAW,EACrD,sBAAsB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAC1D,CAAC;IACF,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,IAAI;QACJ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,SAAS,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;KACX,CAAC;AACJ,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAsB,EACtB,CAAW,EACX,CAAS,EACT,UAII,EAAE;IAEN,SAAS,CACP,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO,EACpD,qFAAqF,CACtF,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EACjB,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IACnE,SAAS,CACP,OAAO,EAAE,UAAU,KAAK,CAAC,CAAC,UAAU,EACpC,8CAA8C,CAC/C,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IACxD,SAAS,CACP,IAAI,EAAE,IAAI,KAAK,MAAM;QACnB,IAAI,CAAC,UAAU,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU;QAC3C,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QACpB,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QACnC,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EACtD,wDAAwD,CACzD,CAAC;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GACT,GAAG,CAAC,MAAM,KAAK,CAAC;QACd,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;QACtD,SAAS,CACP,CAAC;YACC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS;YACvB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM;YACrB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW,EACjC,yCAAyC,CAC1C,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAC3B,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACxB,SAAS,CACP,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACjB,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACnB,CAAC,IAAI,CAAC;YACN,CAAC,GAAG,CAAC;YACL,CAAC,IAAI,GAAG,CAAC,MAAM;YACf,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS;YAC9B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAClC,uBAAuB,CACxB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;IACrC,SAAS,CACP,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EACzC,wCAAwC,CACzC,CAAC;IACF,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAC3C,GAAG,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;IACxC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,GAAG,CAAC,CAAC;QACV,GAAG,GAAG,KAAK,CAAC;IACd,CAAC;SAAM,CAAC;QACN,SAAS,CACP,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;YACrB,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC;YACrB,KAAK,IAAI,CAAC;YACV,GAAG,IAAI,KAAK;YACZ,KAAK,IAAI,KAAK;YACd,GAAG,IAAI,KAAK,EACd,iCAAiC,CAClC,CAAC;QACF,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,CAAC;QACrC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ;QACjC,CAAC,CAAC,IAAI,CAAC,UAAU;QACjB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzC,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,GAAG;QACZ,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,UAAU;QACV,QAAQ,EAAE,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,GAAG,EAAE;KAC7E,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"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"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export declare const SKILL_AGENTS: readonly ["codex", "claude"];
|
|
2
|
+
export declare const SKILL_SCOPES: readonly ["user", "project"];
|
|
3
|
+
type Agent = (typeof SKILL_AGENTS)[number];
|
|
4
|
+
type Scope = (typeof SKILL_SCOPES)[number];
|
|
5
|
+
type Operation = "install" | "update" | "remove" | "status";
|
|
6
|
+
export declare function manageSkill(operation: Operation, options: {
|
|
7
|
+
agent: Agent;
|
|
8
|
+
scope: Scope;
|
|
9
|
+
path?: string;
|
|
10
|
+
}, userHome?: string): Promise<{
|
|
11
|
+
status: string;
|
|
12
|
+
agent: "codex" | "claude";
|
|
13
|
+
scope: "project" | "user";
|
|
14
|
+
path: string;
|
|
15
|
+
bundledVersion: string;
|
|
16
|
+
} | {
|
|
17
|
+
status: string;
|
|
18
|
+
installedVersion: string;
|
|
19
|
+
agent: "codex" | "claude";
|
|
20
|
+
scope: "project" | "user";
|
|
21
|
+
path: string;
|
|
22
|
+
bundledVersion: string;
|
|
23
|
+
}>;
|
|
24
|
+
export {};
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { lstat, mkdir, readFile, readdir, realpath, rename, rmdir, unlink, writeFile, } from "node:fs/promises";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { join, resolve } from "node:path";
|
|
5
|
+
import { hash, invariant } from "./common.js";
|
|
6
|
+
export const SKILL_AGENTS = ["codex", "claude"];
|
|
7
|
+
export const SKILL_SCOPES = ["user", "project"];
|
|
8
|
+
const name = "srcx-search";
|
|
9
|
+
const owner = "@functional-systems/srcx";
|
|
10
|
+
const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
|
|
11
|
+
const marker = "<!-- srcx-install ";
|
|
12
|
+
async function stat(path) {
|
|
13
|
+
try {
|
|
14
|
+
return await lstat(path);
|
|
15
|
+
}
|
|
16
|
+
catch (e) {
|
|
17
|
+
if (e.code === "ENOENT")
|
|
18
|
+
return undefined;
|
|
19
|
+
throw e;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async function directory(path, create = false) {
|
|
23
|
+
if (create) {
|
|
24
|
+
try {
|
|
25
|
+
await mkdir(path);
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
if (e.code !== "EEXIST")
|
|
29
|
+
throw e;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const s = await stat(path);
|
|
33
|
+
invariant(!s || (s.isDirectory() && !s.isSymbolicLink()), `Expected a directory, not a file or symlink: ${path}`);
|
|
34
|
+
return !!s;
|
|
35
|
+
}
|
|
36
|
+
export async function manageSkill(operation, options, userHome = homedir()) {
|
|
37
|
+
invariant(SKILL_AGENTS.includes(options.agent), "Choose --agent codex or claude.");
|
|
38
|
+
invariant(SKILL_SCOPES.includes(options.scope), "Choose --scope user or project.");
|
|
39
|
+
invariant(options.scope === "project" || options.path === undefined, "--path requires --scope project.");
|
|
40
|
+
// Resolve the chosen root, then refuse redirected managed path components.
|
|
41
|
+
const root = await realpath(options.scope === "user" ? userHome : resolve(options.path ?? "."));
|
|
42
|
+
invariant((await lstat(root)).isDirectory(), "Skill scope root must be a directory.");
|
|
43
|
+
const dirs = [join(root, options.agent === "codex" ? ".agents" : ".claude")];
|
|
44
|
+
dirs.push(join(dirs[0], "skills"));
|
|
45
|
+
const parent = dirs[1], target = join(parent, name), file = join(target, "SKILL.md");
|
|
46
|
+
const bundled = await readFile(new URL("../skills/srcx-search/SKILL.md", import.meta.url), "utf8");
|
|
47
|
+
const bundledHash = hash(bundled);
|
|
48
|
+
const info = {
|
|
49
|
+
agent: options.agent,
|
|
50
|
+
scope: options.scope,
|
|
51
|
+
path: target,
|
|
52
|
+
bundledVersion: pkg.version,
|
|
53
|
+
};
|
|
54
|
+
const encoded = `${bundled}${marker}${JSON.stringify({ package: owner, version: pkg.version, sha256: bundledHash })} -->\n`;
|
|
55
|
+
async function inspect() {
|
|
56
|
+
if (!(await directory(target)))
|
|
57
|
+
return { status: "not-installed" };
|
|
58
|
+
const entries = await readdir(target);
|
|
59
|
+
const s = await stat(file);
|
|
60
|
+
if (!s?.isFile() || s.isSymbolicLink())
|
|
61
|
+
return { status: "unmanaged" };
|
|
62
|
+
const text = await readFile(file, "utf8");
|
|
63
|
+
const at = text.lastIndexOf(marker);
|
|
64
|
+
let installed;
|
|
65
|
+
try {
|
|
66
|
+
installed = JSON.parse(text.slice(at + marker.length, -5));
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return { status: "unmanaged" };
|
|
70
|
+
}
|
|
71
|
+
if (at < 0 ||
|
|
72
|
+
!text.endsWith(" -->\n") ||
|
|
73
|
+
installed?.package !== owner ||
|
|
74
|
+
typeof installed.version !== "string" ||
|
|
75
|
+
!installed.version ||
|
|
76
|
+
typeof installed.sha256 !== "string" ||
|
|
77
|
+
!/^[a-f0-9]{64}$/.test(installed.sha256)) {
|
|
78
|
+
return { status: "unmanaged" };
|
|
79
|
+
}
|
|
80
|
+
const status = entries.length !== 1 || hash(text.slice(0, at)) !== installed.sha256
|
|
81
|
+
? "modified"
|
|
82
|
+
: installed.sha256 === bundledHash && installed.version === pkg.version
|
|
83
|
+
? "current"
|
|
84
|
+
: "update-available";
|
|
85
|
+
return { status, installedVersion: installed.version };
|
|
86
|
+
}
|
|
87
|
+
// Status and absent removals are read-only, including missing parent directories.
|
|
88
|
+
for (const dir of dirs) {
|
|
89
|
+
if (!(await directory(dir, operation === "install"))) {
|
|
90
|
+
invariant(operation !== "update", "Skill is not installed; run skills install first.");
|
|
91
|
+
return { ...info, status: "not-installed" };
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
if (operation === "status" || operation === "remove") {
|
|
95
|
+
const current = await inspect();
|
|
96
|
+
if (operation === "status" || current.status === "not-installed")
|
|
97
|
+
return { ...info, ...current };
|
|
98
|
+
}
|
|
99
|
+
const lock = join(parent, `.${name}.srcx-lock`);
|
|
100
|
+
try {
|
|
101
|
+
await mkdir(lock);
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
if (e.code === "EEXIST")
|
|
105
|
+
throw new Error(`Another skill operation may be active. Retry later; inspect a stale lock before removing it: ${lock}`);
|
|
106
|
+
throw e;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
// Recheck after locking before changing an existing installation.
|
|
110
|
+
const current = await inspect();
|
|
111
|
+
invariant(current.status !== "unmanaged" && current.status !== "modified", `Existing skill is ${current.status}; preserve or move it before ${operation}: ${target}`);
|
|
112
|
+
if (operation === "remove") {
|
|
113
|
+
if (current.status === "not-installed")
|
|
114
|
+
return { ...info, status: "not-installed" };
|
|
115
|
+
await unlink(file);
|
|
116
|
+
await rmdir(target); // Never recursively remove unrecognized files.
|
|
117
|
+
return { ...info, status: "removed" };
|
|
118
|
+
}
|
|
119
|
+
if (current.status === "current")
|
|
120
|
+
return { ...info, ...current };
|
|
121
|
+
invariant(operation !== "update" || current.status !== "not-installed", "Skill is not installed; run skills install first.");
|
|
122
|
+
invariant(operation !== "install" || current.status === "not-installed", "A different bundled skill is installed; run skills update.");
|
|
123
|
+
// One file carries both instructions and provenance, so updates cannot tear
|
|
124
|
+
// a separate ownership manifest away from the installed content.
|
|
125
|
+
const temp = join(lock, "SKILL.md");
|
|
126
|
+
await writeFile(temp, encoded, { flag: "wx", mode: 0o644 });
|
|
127
|
+
const fresh = current.status === "not-installed";
|
|
128
|
+
if (fresh)
|
|
129
|
+
await mkdir(target);
|
|
130
|
+
try {
|
|
131
|
+
await rename(temp, file);
|
|
132
|
+
}
|
|
133
|
+
catch (e) {
|
|
134
|
+
if (fresh)
|
|
135
|
+
await rmdir(target);
|
|
136
|
+
throw e;
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
...info,
|
|
140
|
+
status: fresh ? "installed" : "updated",
|
|
141
|
+
installedVersion: pkg.version,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
try {
|
|
146
|
+
await unlink(join(lock, "SKILL.md"));
|
|
147
|
+
}
|
|
148
|
+
catch (e) {
|
|
149
|
+
if (e.code !== "ENOENT")
|
|
150
|
+
throw e;
|
|
151
|
+
}
|
|
152
|
+
await rmdir(lock);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@functional-systems/srcx",
|
|
3
|
-
"version": "0.1.0-dev.
|
|
3
|
+
"version": "0.1.0-dev.40",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Version-aware code search on LambdaDB",
|
|
6
6
|
"type": "module",
|
|
@@ -9,6 +9,10 @@
|
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
"skills",
|
|
13
|
+
"runtime/qwen.py",
|
|
14
|
+
"runtime/grammars",
|
|
15
|
+
"runtime/requirements.txt",
|
|
12
16
|
"README.md",
|
|
13
17
|
"DESIGN.md",
|
|
14
18
|
"VALIDATION.md",
|
|
@@ -24,15 +28,22 @@
|
|
|
24
28
|
"scripts": {
|
|
25
29
|
"build": "tsc && node -e \"require('node:fs').chmodSync('dist/cli.js', 0o755)\"",
|
|
26
30
|
"typecheck": "tsc --noEmit",
|
|
27
|
-
"test": "npm run build && node --test --test-timeout=
|
|
31
|
+
"test": "npm run build && node --test --test-timeout=120000 test/*.test.mjs",
|
|
28
32
|
"start": "node dist/cli.js",
|
|
29
33
|
"demo": "npm run build && node scripts/demo.mjs",
|
|
30
34
|
"prepack": "npm run build",
|
|
31
|
-
"format": "prettier --write src test scripts README.md VALIDATION.md CONTRIBUTING.md RELEASING.md CHANGELOG.md .github package.json tsconfig.json",
|
|
32
|
-
"format:check": "prettier --check src test scripts README.md VALIDATION.md CONTRIBUTING.md RELEASING.md CHANGELOG.md .github package.json tsconfig.json",
|
|
35
|
+
"format": "prettier --write src test scripts eval skills README.md VALIDATION.md CONTRIBUTING.md RELEASING.md CHANGELOG.md .github package.json tsconfig.json",
|
|
36
|
+
"format:check": "prettier --check src test scripts eval skills README.md VALIDATION.md CONTRIBUTING.md RELEASING.md CHANGELOG.md .github package.json tsconfig.json",
|
|
33
37
|
"test:live": "npm run build && node --env-file=.env.local scripts/live.mjs",
|
|
34
38
|
"check:version": "node scripts/check-release.mjs",
|
|
35
|
-
"test:package": "node scripts/test-package.mjs"
|
|
39
|
+
"test:package": "node scripts/test-package.mjs",
|
|
40
|
+
"test:live:branches": "npm run build && node --env-file=.env.local scripts/live-branches.mjs",
|
|
41
|
+
"eval:prepare": "npm run build && node scripts/retrieval-eval.mjs prepare",
|
|
42
|
+
"eval:run": "node scripts/retrieval-eval.mjs run",
|
|
43
|
+
"eval:cli:prepare": "npm run build && node scripts/cli-eval.mjs prepare",
|
|
44
|
+
"eval:cli:run": "node scripts/cli-eval.mjs run",
|
|
45
|
+
"eval:modes:prepare": "npm run build && node scripts/cli-eval.mjs prepare --suite eval/retrieval-modes-v1.json --root .srcx/mode-eval",
|
|
46
|
+
"eval:modes:run": "node scripts/cli-eval.mjs run --root .srcx/mode-eval"
|
|
36
47
|
},
|
|
37
48
|
"dependencies": {
|
|
38
49
|
"@functional-systems/lambdadb": "0.5.1",
|
|
@@ -55,5 +66,5 @@
|
|
|
55
66
|
"url": "https://github.com/lambdadb/srcx/issues"
|
|
56
67
|
},
|
|
57
68
|
"license": "Apache-2.0",
|
|
58
|
-
"gitHead": "
|
|
69
|
+
"gitHead": "2dc0ccb195990d8603790ef64d01e3b84ed778b8"
|
|
59
70
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Bundled grammars
|
|
2
|
+
|
|
3
|
+
## SQL
|
|
4
|
+
|
|
5
|
+
`tree-sitter-sql.wasm` is extracted unchanged from
|
|
6
|
+
[`tree-sitter-wasm@2.0.2`](https://www.npmjs.com/package/tree-sitter-wasm/v/2.0.2),
|
|
7
|
+
path `package/out/sql/tree-sitter-sql.wasm`. Only SQL and Bash are bundled to avoid
|
|
8
|
+
adding the full 120 MB grammar distribution to every installation.
|
|
9
|
+
|
|
10
|
+
- Binary SHA-256: `b77530893b1dd6d1d4814eacf34d25bcbe4a12ec9a25a8c45b320d447265f42b`
|
|
11
|
+
- npm archive integrity: `sha512-zxC/EcugWmdytml6hZoU7vn1olencvNDSluO3BOyYsPWPXkBfbjmvNriJCHght+vXMYsLJZhK9v9e+YBggV4kQ==`
|
|
12
|
+
- Grammar source: <https://github.com/derekstride/tree-sitter-sql>
|
|
13
|
+
- Distributor: <https://github.com/Crysthamus/tree-sitter-wasm>
|
|
14
|
+
- MIT notices: `tree-sitter-sql.LICENSE` and `tree-sitter-wasm.LICENSE`.
|
|
15
|
+
|
|
16
|
+
The distributor declares `@derekstride/tree-sitter-sql@^0.3.11`; srcx pins the
|
|
17
|
+
actual binary above, not that floating source range. The SQL grammar identity and
|
|
18
|
+
checksum are included in `CHUNKER`, hence in preset/build identity. Loading is
|
|
19
|
+
local through `web-tree-sitter`; installation requires no grammar compilation or
|
|
20
|
+
runtime download. Installed-package tests exercise the bundled binary.
|
|
21
|
+
|
|
22
|
+
To reproduce extraction, use `npm pack tree-sitter-wasm@2.0.2 --ignore-scripts`,
|
|
23
|
+
verify the archive against the integrity above, then extract the named member
|
|
24
|
+
and verify its SHA-256. Preserve both license notices when replacing the file.
|
|
25
|
+
Run language and installed-package tests when updating the grammar.
|
|
26
|
+
|
|
27
|
+
Supported syntax is defined by this grammar, not by a database connection or
|
|
28
|
+
server dialect setting. Unsupported/error parses use whole-file text fallback.
|
|
29
|
+
|
|
30
|
+
## Bundled Bash grammar
|
|
31
|
+
|
|
32
|
+
`tree-sitter-bash.wasm` is extracted unchanged from the same verified
|
|
33
|
+
`tree-sitter-wasm@2.0.2` archive, member
|
|
34
|
+
`package/out/bash/tree-sitter-bash.wasm`.
|
|
35
|
+
|
|
36
|
+
- Binary SHA-256: `5daf3f2ac1cea01a64cfd6878ef7d247310925a4c62238eb4b8c1feb5dce355a`.
|
|
37
|
+
- Grammar source: <https://github.com/tree-sitter/tree-sitter-bash>.
|
|
38
|
+
- The distributor declares `tree-sitter-bash@^0.25.1`; the binary checksum is the
|
|
39
|
+
exact pin, not that floating source range.
|
|
40
|
+
- MIT notices: `tree-sitter-bash.LICENSE` (upstream v0.25.1 notice) and the shared
|
|
41
|
+
`tree-sitter-wasm.LICENSE`.
|
|
42
|
+
|
|
43
|
+
The previous `tree-sitter-wasms@0.1.13` Bash binary crashes with the pinned
|
|
44
|
+
`web-tree-sitter@0.25.10` runtime on `[[ "$value" == 1 ]]`, reporting
|
|
45
|
+
`resolved is not a function`. The bundled binary parses that comparison and the
|
|
46
|
+
full `lambdadb-cli/scripts/test-homebrew.sh` that exposed the failure. A Shell
|
|
47
|
+
fixture runs both directly and through the installed npm package; packaging also
|
|
48
|
+
checks both bundled grammar hashes and license presence. `CHUNKER.shellGrammar`
|
|
49
|
+
participates in config/build identity, so changed parsing cannot reuse an old
|
|
50
|
+
preset identity. No compatibility layer or runtime grammar download is added.
|