@functional-systems/srcx 0.1.0-dev.3 → 0.1.0-dev.31
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 +137 -1
- package/DESIGN.md +193 -58
- package/README.md +553 -38
- package/RELEASING.md +30 -9
- package/VALIDATION.md +855 -25
- package/dist/build.d.ts +81 -1
- package/dist/build.js +187 -37
- 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 +103 -19
- package/dist/cli.js.map +1 -1
- package/dist/file-policy.d.ts +20 -0
- package/dist/file-policy.js +96 -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 +158 -34
- 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 +14 -4
- package/dist/search.js +119 -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 +16 -5
- 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 +85 -0
- package/src/build.ts +258 -47
- package/src/chunk.ts +360 -12
- package/src/cli.ts +212 -24
- package/src/file-policy.ts +157 -0
- package/src/implementation.ts +253 -0
- package/src/publish.ts +226 -34
- 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 +154 -28
- package/src/skills.ts +205 -0
package/dist/releases.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"releases.js","sourceRoot":"","sources":["../src/releases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAwB,MAAM,aAAa,CAAC;AAChE,OAAO,
|
|
1
|
+
{"version":3,"file":"releases.js","sourceRoot":"","sources":["../src/releases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAwB,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,SAAS,EACT,aAAa,GAGd,MAAM,cAAc,CAAC;AACtB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AAC7E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;AAC7D,8FAA8F;AAC9F,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,KAAsB,EACtB,OAAgB,EAChB,IAAY;IAEZ,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,EAClC,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,EAC1C,OAAO,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,EAC/B,OAAO,GAAU,EAAE,CAAC;IACtB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,OAAO,GAAQ;YACjB,EAAE,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;YAC1B,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,SAAS;YACf,aAAa,EAAE,CAAC;YAChB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,OAAO,CAAC,GAAG;YACnB,UAAU,EAAE,OAAO,CAAC,GAAG;YACvB,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,SAAS;SAClB,CAAC;QACF,6FAA6F;QAC7F,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YACnD,IACE,CAAC,KAAK;gBACN,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO;gBAChC,KAAK,CAAC,IAAI,KAAK,KAAK;gBACpB,KAAK,CAAC,QAAQ;gBAEd,MAAM,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,GAAG;gBACR,GAAG,OAAO;gBACV,MAAM,EAAE,WAAW;gBACnB,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,UAAU,EAAE,OAAO,CAAC,UAAU;aAC/B,CAAC;YACF,MAAM,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAsB,EACtB,OAAgB,EAChB,QAAgB;IAEhB,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC;QAC3C,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,aAAa,QAAQ,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;QAChD,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;QAChD,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC;IAC7B,MAAM,IAAI,GACR,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,aAAa,CAAC;QACjE,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC;QAC9C,CAAC,CAAC,SAAS,CAAC;IAChB,SAAS,CACP,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,EAClB,gEAAgE,CACjE,CAAC;IACF,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjD,IAAI,IAAI,EAAE,CAAC;QACT,SAAS,CACP,IAAI,CAAC,OAAO,EACZ,6DAA6D,CAC9D,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,OAAQ,CAAC,SAAS;YACvC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,gBAAgB,CACtC,CAAC;QACF,SAAS,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAC;QACnE,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,2EAA2E;IAC3E,0EAA0E;IAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,KAAK,QAAQ;YACxB,CAAC,CAAC,OAAO,KAAK,QAAQ;YACtB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAC1E,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,0BAA0B,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC,CAAC,CAAE,CAAC;QACpB,CAAC;IACH,CAAC;IACD,SAAS,CACP,OAAO,EAAE,MAAM,KAAK,GAAG;QACrB,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;QACjC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO;QACnC,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAC3C,8DAA8D,CAC/D,CAAC;IACF,SAAS,CACP,OAAO,CAAC,MAAM,KAAK,WAAW,EAC9B,6EAA6E,CAC9E,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,SAAS,CACpC,CAAC;IACF,SAAS,CACP,KAAK,EAAE,IAAI,KAAK,KAAK;QACnB,CAAC,KAAK,CAAC,QAAQ;QACf,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,OAAO,EAClC,kDAAkD,CACnD,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,UAAU;QAClC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,MAAM;QAC1B,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,CACtC,CAAC;IACF,SAAS,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/remote.d.ts
CHANGED
|
@@ -45,6 +45,7 @@ export declare class LambdaRemote {
|
|
|
45
45
|
readonly client: LambdaDBClient;
|
|
46
46
|
constructor(settings: Settings);
|
|
47
47
|
collections(): Promise<import("@functional-systems/lambdadb").CollectionResponseWithDates[]>;
|
|
48
|
+
collection(name: string): Promise<import("@functional-systems/lambdadb").CollectionResponseWithDates | undefined>;
|
|
48
49
|
create(name: string, indexConfigs: Record<string, IndexConfigsUnion>, description: string, tags: Record<string, string>): Promise<void>;
|
|
49
50
|
store(name: string): CollectionStore;
|
|
50
51
|
}
|
package/dist/remote.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LambdaDBClient, branchRef, tagRef, branchSource, tagSource, tagTarget, } from "@functional-systems/lambdadb";
|
|
2
|
-
import { invariant } from "./common.js";
|
|
2
|
+
import { hash, invariant } from "./common.js";
|
|
3
3
|
export class RemoteError extends Error {
|
|
4
4
|
}
|
|
5
5
|
async function request(operation, call) {
|
|
@@ -30,6 +30,18 @@ export class LambdaRemote {
|
|
|
30
30
|
async collections() {
|
|
31
31
|
return request("list collections", async () => (await this.client.listAllCollections({ size: 100 })).collections);
|
|
32
32
|
}
|
|
33
|
+
async collection(name) {
|
|
34
|
+
return request("get collection", async () => {
|
|
35
|
+
try {
|
|
36
|
+
return (await this.client.collection(name).get()).collection;
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (error.statusCode === 404)
|
|
40
|
+
return undefined;
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
33
45
|
async create(name, indexConfigs, description, tags) {
|
|
34
46
|
await request("create collection", () => this.client.createCollection({
|
|
35
47
|
collectionName: name,
|
|
@@ -41,6 +53,30 @@ export class LambdaRemote {
|
|
|
41
53
|
store(name) {
|
|
42
54
|
const c = this.client.collection(name);
|
|
43
55
|
const ref = (r) => r.kind === "tag" ? tagRef(r.name) : branchRef(r.name);
|
|
56
|
+
// Some deployments omit managed vectors from list/query responses despite
|
|
57
|
+
// includeVectors. Keep the same immutable Tag and exact non-vector payload.
|
|
58
|
+
const hydrate = async (r, docs) => {
|
|
59
|
+
const missing = docs.filter((d) => d.embeddingStatus === "managed" && d.embedding === undefined);
|
|
60
|
+
const hydrated = new Map();
|
|
61
|
+
if (missing.length) {
|
|
62
|
+
invariant(r.kind === "tag", "Managed vector hydration requires an immutable Tag.");
|
|
63
|
+
const fetched = await request("fetch omitted vectors", () => c.docs.fetch({
|
|
64
|
+
ref: tagRef(r.name),
|
|
65
|
+
ids: missing.map((d) => d.id),
|
|
66
|
+
consistentRead: false,
|
|
67
|
+
includeVectors: true,
|
|
68
|
+
}));
|
|
69
|
+
const expected = new Map(missing.map((d) => [d.id, hash(d)]));
|
|
70
|
+
for (const item of fetched.docs) {
|
|
71
|
+
const doc = item.doc;
|
|
72
|
+
const { embedding: _, ...source } = doc;
|
|
73
|
+
invariant(!hydrated.has(doc.id) && expected.get(doc.id) === hash(source), "Returned/fetched managed payloads disagree.");
|
|
74
|
+
hydrated.set(doc.id, doc);
|
|
75
|
+
}
|
|
76
|
+
invariant(hydrated.size === expected.size, "Returned managed records are missing from fetch.");
|
|
77
|
+
}
|
|
78
|
+
return docs.map((doc) => hydrated.get(doc.id) ?? doc);
|
|
79
|
+
};
|
|
44
80
|
return {
|
|
45
81
|
fetch: (r, ids, consistent = false) => request("fetch", async () => {
|
|
46
82
|
invariant(!consistent || r.kind === "branch", "Consistent reads require a Branch.");
|
|
@@ -69,8 +105,8 @@ export class LambdaRemote {
|
|
|
69
105
|
includeVectors: true,
|
|
70
106
|
pageToken: cursor,
|
|
71
107
|
}));
|
|
72
|
-
for (const
|
|
73
|
-
yield
|
|
108
|
+
for (const doc of await hydrate(r, page.docs.map((d) => d.doc)))
|
|
109
|
+
yield doc;
|
|
74
110
|
cursor = page.nextPageToken || undefined;
|
|
75
111
|
if (cursor) {
|
|
76
112
|
invariant(!seen.has(cursor), "LambdaDB repeated a pagination cursor.");
|
|
@@ -117,12 +153,17 @@ export class LambdaRemote {
|
|
|
117
153
|
? c.aliases.retarget(name, { target: tagTarget(target) })
|
|
118
154
|
: c.aliases.create({ aliasName: name, target: tagTarget(target) }));
|
|
119
155
|
},
|
|
120
|
-
query: (
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
156
|
+
query: async (name, query, size) => {
|
|
157
|
+
const result = await request("query", () => c.query({
|
|
158
|
+
ref: tagRef(name),
|
|
159
|
+
consistentRead: false,
|
|
160
|
+
query,
|
|
161
|
+
size,
|
|
162
|
+
includeVectors: true,
|
|
163
|
+
}));
|
|
164
|
+
const docs = await hydrate({ kind: "tag", name }, result.docs.map((h) => h.doc));
|
|
165
|
+
return result.docs.map((h, i) => ({ doc: docs[i], score: h.score }));
|
|
166
|
+
},
|
|
126
167
|
};
|
|
127
168
|
}
|
|
128
169
|
}
|
package/dist/remote.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,SAAS,EACT,MAAM,EACN,YAAY,EACZ,SAAS,EACT,SAAS,GAEV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,SAAS,EAAY,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/repository.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { type Preset } from "./build.js";
|
|
1
2
|
import { type Identity } from "./git.js";
|
|
2
3
|
import { LambdaRemote } from "./remote.js";
|
|
3
4
|
import { type Binding } from "./publish.js";
|
|
4
5
|
import { type Settings } from "./settings.js";
|
|
5
6
|
export type Repository = Binding & {
|
|
7
|
+
preset?: Preset;
|
|
6
8
|
collection: string;
|
|
7
9
|
name: string;
|
|
8
10
|
description: string;
|
|
@@ -11,7 +13,7 @@ export type Repository = Binding & {
|
|
|
11
13
|
export declare function destination(s: Settings, collection: string): string;
|
|
12
14
|
export declare function collectionName(key: string, name: string, configHash: string): string;
|
|
13
15
|
/** LambdaDB adds its built-in keyword id index to collection metadata. */
|
|
14
|
-
export declare function matchesIndexSchema(actual: unknown): boolean;
|
|
16
|
+
export declare function matchesIndexSchema(actual: unknown, preset?: Preset): boolean;
|
|
15
17
|
export declare function discover(remote: LambdaRemote): Promise<{
|
|
16
18
|
repositories: Repository[];
|
|
17
19
|
partial: {
|
|
@@ -25,5 +27,6 @@ export declare function register(remote: LambdaRemote, args: {
|
|
|
25
27
|
remote?: string;
|
|
26
28
|
description?: string;
|
|
27
29
|
labels?: Record<string, string>;
|
|
30
|
+
preset?: Preset;
|
|
28
31
|
}): Promise<Repository>;
|
|
29
32
|
export declare function attachment(s: Settings, r: Repository): Promise<Identity>;
|
package/dist/repository.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { join } from "node:path";
|
|
3
3
|
import { atomic, hash, invariant, optionalJson, PURPOSE, } from "./common.js";
|
|
4
|
-
import { PRESET,
|
|
4
|
+
import { PRESET, indexConfigs, supportedPreset } from "./build.js";
|
|
5
5
|
import { identity } from "./git.js";
|
|
6
6
|
import { one, branch } from "./remote.js";
|
|
7
7
|
import { exclusive } from "./publish.js";
|
|
@@ -18,13 +18,13 @@ export function collectionName(key, name, configHash) {
|
|
|
18
18
|
return `code-${slug}-${hash(["collection-v1", key, configHash]).slice(0, 16)}`;
|
|
19
19
|
}
|
|
20
20
|
/** LambdaDB adds its built-in keyword id index to collection metadata. */
|
|
21
|
-
export function matchesIndexSchema(actual) {
|
|
21
|
+
export function matchesIndexSchema(actual, preset = PRESET) {
|
|
22
22
|
if (!actual || typeof actual !== "object" || Array.isArray(actual))
|
|
23
23
|
return false;
|
|
24
24
|
const { id, ...fields } = actual;
|
|
25
25
|
if (id !== undefined && hash(id) !== hash({ type: "keyword" }))
|
|
26
26
|
return false;
|
|
27
|
-
return hash(fields) === hash(
|
|
27
|
+
return hash(fields) === hash(indexConfigs(preset));
|
|
28
28
|
}
|
|
29
29
|
function descriptor(r) {
|
|
30
30
|
return {
|
|
@@ -37,24 +37,25 @@ function descriptor(r) {
|
|
|
37
37
|
repoId: r.repoId,
|
|
38
38
|
indexId: r.indexId,
|
|
39
39
|
name: r.name,
|
|
40
|
-
preset: PRESET,
|
|
40
|
+
preset: r.preset ?? PRESET,
|
|
41
41
|
initialization: "ready",
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function decode(doc, c) {
|
|
45
45
|
invariant(doc?.role === "repository" &&
|
|
46
46
|
doc.initialization === "ready" &&
|
|
47
|
-
doc.
|
|
48
|
-
|
|
47
|
+
supportedPreset(doc.preset) &&
|
|
48
|
+
doc.configHash === hash(doc.preset), "Repository is partially initialized or uses an unsupported preset.");
|
|
49
49
|
invariant(doc.indexId === c.tags["index-id"] &&
|
|
50
50
|
doc.configHash === c.tags["config-hash"] &&
|
|
51
51
|
c.tags.purpose === PURPOSE, "Repository descriptor and Collection labels disagree.");
|
|
52
|
-
invariant(matchesIndexSchema(c.indexConfigs), "Collection schema differs from the pinned preset.");
|
|
52
|
+
invariant(matchesIndexSchema(c.indexConfigs, doc.preset), "Collection schema differs from the pinned preset.");
|
|
53
53
|
invariant(typeof doc.repoKey === "string" &&
|
|
54
54
|
typeof doc.repoId === "string" &&
|
|
55
55
|
typeof doc.indexId === "string" &&
|
|
56
56
|
typeof doc.name === "string", "Malformed repository descriptor.");
|
|
57
57
|
return {
|
|
58
|
+
preset: doc.preset,
|
|
58
59
|
collection: c.collectionName,
|
|
59
60
|
repoKey: doc.repoKey,
|
|
60
61
|
repoId: doc.repoId,
|
|
@@ -85,19 +86,32 @@ export async function discover(remote) {
|
|
|
85
86
|
return { repositories, partial };
|
|
86
87
|
}
|
|
87
88
|
export async function selectRepository(remote, selector) {
|
|
89
|
+
// Names emitted by collectionName are explicit destinations. Avoid reading
|
|
90
|
+
// every repository descriptor just to select one Collection. A missing name
|
|
91
|
+
// can still be a Git repository alias with this spelling.
|
|
92
|
+
if (/^code-[a-z0-9-]{1,24}-[a-f0-9]{16}$/.test(selector)) {
|
|
93
|
+
const c = await remote.collection(selector);
|
|
94
|
+
if (c) {
|
|
95
|
+
invariant(c.collectionName === selector, "Collection lookup returned a different name.");
|
|
96
|
+
invariant(c.tags.purpose === PURPOSE, "Collection is not a srcx repository.");
|
|
97
|
+
return decode(await one(remote.store(selector), branch("main"), "__repo__", true), c);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
88
100
|
const { repositories, partial } = await discover(remote);
|
|
89
101
|
const selected = repositories.filter((r) => r.name === selector ||
|
|
90
102
|
r.repoKey === selector ||
|
|
91
103
|
r.repoKey.split("/").slice(1).join("/") === selector ||
|
|
92
104
|
r.collection === selector);
|
|
93
105
|
invariant(selected.length === 1, selected.length
|
|
94
|
-
? "Ambiguous repository; use its
|
|
106
|
+
? "Ambiguous repository; use its exact Collection name (presets have separate Collections)."
|
|
95
107
|
: `Repository not found${partial.length ? "; partially initialized collections exist (see repo list)" : ""}.`);
|
|
96
108
|
return selected[0];
|
|
97
109
|
}
|
|
98
110
|
export async function register(remote, args) {
|
|
99
111
|
const source = await identity(args.path, args.remote);
|
|
100
|
-
const
|
|
112
|
+
const preset = args.preset ?? PRESET;
|
|
113
|
+
invariant(supportedPreset(preset), "Unsupported repository preset.");
|
|
114
|
+
const configHash = hash(preset), collection = collectionName(source.key, source.name, configHash), state = destination(remote.settings, collection);
|
|
101
115
|
return exclusive(state, async () => {
|
|
102
116
|
const initPath = join(state, "initialization.json");
|
|
103
117
|
let intent = await optionalJson(initPath);
|
|
@@ -127,6 +141,7 @@ export async function register(remote, args) {
|
|
|
127
141
|
invariant(description.length <= 255, "Description exceeds 255 characters.");
|
|
128
142
|
const indexId = randomUUID();
|
|
129
143
|
intent = {
|
|
144
|
+
preset,
|
|
130
145
|
repoKey: source.key,
|
|
131
146
|
name: source.name,
|
|
132
147
|
repoId: randomUUID(),
|
|
@@ -149,9 +164,9 @@ export async function register(remote, args) {
|
|
|
149
164
|
invariant(intent.repoKey === source.key && intent.configHash === configHash, "Provisioning journal identity mismatch.");
|
|
150
165
|
if (existing)
|
|
151
166
|
invariant(hash(existing.tags) === hash(intent.tags) &&
|
|
152
|
-
matchesIndexSchema(existing.indexConfigs), "Existing Collection differs from provisioning journal.");
|
|
167
|
+
matchesIndexSchema(existing.indexConfigs, preset), "Existing Collection differs from provisioning journal.");
|
|
153
168
|
else
|
|
154
|
-
await remote.create(collection, JSON.parse(JSON.stringify(
|
|
169
|
+
await remote.create(collection, JSON.parse(JSON.stringify(indexConfigs(preset))), intent.description, intent.tags);
|
|
155
170
|
const store = remote.store(collection);
|
|
156
171
|
const branches = await store.branches();
|
|
157
172
|
const empty = branches.find((b) => b.name === "checkpoint-empty");
|
package/dist/repository.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,MAAM,EACN,IAAI,EACJ,SAAS,EACT,YAAY,EACZ,OAAO,GAER,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"repository.js","sourceRoot":"","sources":["../src/repository.ts"],"names":[],"mappings":"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"}
|
package/dist/rerank.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const QWEN_MODEL = "Qwen/Qwen3-Reranker-0.6B";
|
|
2
|
+
export declare const QWEN_REVISION = "e61197ed45024b0ed8a2d74b80b4d909f1255473";
|
|
3
|
+
export type Candidate = {
|
|
4
|
+
id: string;
|
|
5
|
+
text: string;
|
|
6
|
+
};
|
|
7
|
+
export type RerankOptions = {
|
|
8
|
+
rerank?: "qwen";
|
|
9
|
+
candidates?: number;
|
|
10
|
+
onTiming?: (timing: Record<string, unknown>) => void;
|
|
11
|
+
};
|
|
12
|
+
export declare function candidateLimit(limit: number, options: RerankOptions): number;
|
|
13
|
+
export declare function qwenScores(query: string, candidates: Candidate[]): Promise<{
|
|
14
|
+
scores: number[];
|
|
15
|
+
elapsedMs: number;
|
|
16
|
+
}>;
|
package/dist/rerank.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { execFile } from "node:child_process";
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { invariant } from "./common.js";
|
|
4
|
+
export const QWEN_MODEL = "Qwen/Qwen3-Reranker-0.6B";
|
|
5
|
+
export const QWEN_REVISION = "e61197ed45024b0ed8a2d74b80b4d909f1255473";
|
|
6
|
+
// Reserved worker exit codes; never interpret or forward library stderr.
|
|
7
|
+
const WORKER_FAILURES = {
|
|
8
|
+
20: "Qwen Python dependencies are missing or incompatible. Install runtime/requirements.txt with the Python selected by SRCX_RERANK_PYTHON.",
|
|
9
|
+
21: "Qwen model cache is missing or incomplete. Download the pinned model revision from README and check HF_HUB_CACHE.",
|
|
10
|
+
22: "Qwen device is invalid or unavailable. Set SRCX_RERANK_DEVICE to auto or cpu, or a supported mps/cuda device.",
|
|
11
|
+
23: "Qwen query/chunk pair exceeds 8,192 tokens. Shorten the query or use search without --rerank; source is not truncated.",
|
|
12
|
+
24: "Qwen request exceeds 4 MiB. Reduce --candidates or shorten the query.",
|
|
13
|
+
};
|
|
14
|
+
export function candidateLimit(limit, options) {
|
|
15
|
+
invariant(Number.isInteger(limit) && limit >= 1 && limit <= 100, "Limit must be an integer from 1 to 100.");
|
|
16
|
+
invariant(options.rerank === undefined || options.rerank === "qwen", "Unknown reranker.");
|
|
17
|
+
invariant(options.rerank || options.candidates === undefined, "--candidates requires --rerank qwen.");
|
|
18
|
+
const count = options.rerank
|
|
19
|
+
? (options.candidates ?? Math.max(50, limit))
|
|
20
|
+
: limit;
|
|
21
|
+
invariant(Number.isInteger(count) && count >= limit && count <= 100, "Candidates must be an integer between --limit and 100.");
|
|
22
|
+
if (options.rerank)
|
|
23
|
+
invariant(process.env.SRCX_RERANK_PYTHON, "Set SRCX_RERANK_PYTHON to the prepared Python executable; see README reranker setup.");
|
|
24
|
+
return count;
|
|
25
|
+
}
|
|
26
|
+
export async function qwenScores(query, candidates) {
|
|
27
|
+
invariant(candidates.length > 0 &&
|
|
28
|
+
candidates.length <= 100 &&
|
|
29
|
+
new Set(candidates.map((c) => c.id)).size === candidates.length, "Invalid reranker candidates.");
|
|
30
|
+
const input = JSON.stringify({ query, candidates });
|
|
31
|
+
invariant(Buffer.byteLength(input) <= 4 * 1024 * 1024, "Reranker input exceeds 4 MiB. Reduce --candidates or shorten the query; no fallback was applied.");
|
|
32
|
+
const python = process.env.SRCX_RERANK_PYTHON;
|
|
33
|
+
invariant(python, "Set SRCX_RERANK_PYTHON to the prepared Python executable.");
|
|
34
|
+
const start = performance.now();
|
|
35
|
+
const stdout = await new Promise((resolve, reject) => {
|
|
36
|
+
const child = execFile(python, [fileURLToPath(new URL("../runtime/qwen.py", import.meta.url))], {
|
|
37
|
+
encoding: "utf8",
|
|
38
|
+
timeout: 120_000,
|
|
39
|
+
killSignal: "SIGKILL",
|
|
40
|
+
maxBuffer: 1024 * 1024,
|
|
41
|
+
env: {
|
|
42
|
+
...process.env,
|
|
43
|
+
HF_HUB_OFFLINE: "1",
|
|
44
|
+
HF_HUB_DISABLE_TELEMETRY: "1",
|
|
45
|
+
TOKENIZERS_PARALLELISM: "false",
|
|
46
|
+
},
|
|
47
|
+
}, (error, output) => {
|
|
48
|
+
if (!error)
|
|
49
|
+
return resolve(output);
|
|
50
|
+
let message = "Qwen reranking failed. Check Python dependencies, cached model and SRCX_RERANK_DEVICE.";
|
|
51
|
+
if (error.code === "ENOENT")
|
|
52
|
+
message =
|
|
53
|
+
"Qwen Python executable was not found. Set SRCX_RERANK_PYTHON to an existing Python executable.";
|
|
54
|
+
else if (error.code === "EACCES")
|
|
55
|
+
message =
|
|
56
|
+
"Qwen Python executable cannot be started. Check execute permissions for SRCX_RERANK_PYTHON.";
|
|
57
|
+
else if (error.killed && error.signal === "SIGKILL" && !error.code)
|
|
58
|
+
message =
|
|
59
|
+
"Qwen reranking exceeded 120 seconds. Reduce --candidates or use an available faster device via SRCX_RERANK_DEVICE.";
|
|
60
|
+
else if (typeof error.code === "number")
|
|
61
|
+
message = WORKER_FAILURES[error.code] ?? message;
|
|
62
|
+
reject(new Error(`${message} No fallback was applied.`));
|
|
63
|
+
});
|
|
64
|
+
// An early worker exit can close stdin before Node finishes writing.
|
|
65
|
+
child.stdin?.on("error", () => { });
|
|
66
|
+
child.stdin?.end(input);
|
|
67
|
+
});
|
|
68
|
+
let response;
|
|
69
|
+
try {
|
|
70
|
+
response = JSON.parse(stdout);
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
throw new Error("Invalid Qwen response.");
|
|
74
|
+
}
|
|
75
|
+
invariant(response?.model === QWEN_MODEL &&
|
|
76
|
+
response?.revision === QWEN_REVISION &&
|
|
77
|
+
Array.isArray(response.scores) &&
|
|
78
|
+
response.scores.length === candidates.length, "Qwen response model or candidate count mismatch.");
|
|
79
|
+
const scores = response.scores.map((entry, index) => {
|
|
80
|
+
invariant(entry?.id === candidates[index].id &&
|
|
81
|
+
typeof entry.score === "number" &&
|
|
82
|
+
Number.isFinite(entry.score), "Qwen response candidate identity or score mismatch.");
|
|
83
|
+
return entry.score;
|
|
84
|
+
});
|
|
85
|
+
return { scores, elapsedMs: performance.now() - start };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=rerank.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rerank.js","sourceRoot":"","sources":["../src/rerank.ts"],"names":[],"mappings":"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"}
|
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,17 +24,27 @@ 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;
|
|
28
|
-
}): Promise<unknown[]>;
|
|
35
|
+
}, mode?: SearchMode, options?: RerankOptions): Promise<unknown[]>;
|
|
29
36
|
export declare function loadHandle(id: string): Promise<Handle>;
|
|
30
37
|
export declare function directHandle(store: CollectionStore, s: Settings, r: Repository, v: Published, path: string): Promise<Handle>;
|
|
31
38
|
export declare function readHandle(store: CollectionStore, s: Settings, h: Handle, options?: {
|
|
32
39
|
context?: number;
|
|
33
40
|
fullFile?: boolean;
|
|
34
41
|
lines?: [number, number];
|
|
42
|
+
exactChunk?: boolean;
|
|
43
|
+
implementation?: boolean;
|
|
35
44
|
}): Promise<{
|
|
45
|
+
sourceText: string;
|
|
46
|
+
citation: string;
|
|
47
|
+
implementation?: Implementation | undefined;
|
|
36
48
|
repository: string;
|
|
37
49
|
commitOid: string;
|
|
38
50
|
version: string;
|
|
@@ -41,6 +53,4 @@ export declare function readHandle(store: CollectionStore, s: Settings, h: Handl
|
|
|
41
53
|
startLine: number;
|
|
42
54
|
endLine: number;
|
|
43
55
|
contentHash: string;
|
|
44
|
-
sourceText: string;
|
|
45
|
-
citation: string;
|
|
46
56
|
}>;
|