tea-rags 1.23.2 → 1.24.0
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/build/bootstrap/config/defaults.d.ts.map +1 -1
- package/build/bootstrap/config/defaults.js +4 -0
- package/build/bootstrap/config/defaults.js.map +1 -1
- package/build/cli/commands/prime.d.ts +7 -0
- package/build/cli/commands/prime.d.ts.map +1 -0
- package/build/cli/commands/prime.js +14 -0
- package/build/cli/commands/prime.js.map +1 -0
- package/build/cli/commands/update.d.ts +19 -0
- package/build/cli/commands/update.d.ts.map +1 -0
- package/build/cli/commands/update.js +64 -0
- package/build/cli/commands/update.js.map +1 -0
- package/build/cli/create-cli.d.ts.map +1 -1
- package/build/cli/create-cli.js +4 -0
- package/build/cli/create-cli.js.map +1 -1
- package/build/cli/prime/format.d.ts +3 -0
- package/build/cli/prime/format.d.ts.map +1 -0
- package/build/cli/prime/format.js +180 -0
- package/build/cli/prime/format.js.map +1 -0
- package/build/cli/prime/qdrant-discovery.d.ts +14 -0
- package/build/cli/prime/qdrant-discovery.d.ts.map +1 -0
- package/build/cli/prime/qdrant-discovery.js +38 -0
- package/build/cli/prime/qdrant-discovery.js.map +1 -0
- package/build/cli/prime/qdrant-ping.d.ts +6 -0
- package/build/cli/prime/qdrant-ping.d.ts.map +1 -0
- package/build/cli/prime/qdrant-ping.js +14 -0
- package/build/cli/prime/qdrant-ping.js.map +1 -0
- package/build/cli/prime/run-prime.d.ts +6 -0
- package/build/cli/prime/run-prime.d.ts.map +1 -0
- package/build/cli/prime/run-prime.js +60 -0
- package/build/cli/prime/run-prime.js.map +1 -0
- package/build/cli/prime/types.d.ts +27 -0
- package/build/cli/prime/types.d.ts.map +1 -0
- package/build/cli/prime/types.js +2 -0
- package/build/cli/prime/types.js.map +1 -0
- package/build/cli/update-check/cache-store.d.ts +17 -0
- package/build/cli/update-check/cache-store.d.ts.map +1 -0
- package/build/cli/update-check/cache-store.js +77 -0
- package/build/cli/update-check/cache-store.js.map +1 -0
- package/build/cli/update-check/check-service.d.ts +19 -0
- package/build/cli/update-check/check-service.d.ts.map +1 -0
- package/build/cli/update-check/check-service.js +52 -0
- package/build/cli/update-check/check-service.js.map +1 -0
- package/build/cli/update-check/format.d.ts +10 -0
- package/build/cli/update-check/format.d.ts.map +1 -0
- package/build/cli/update-check/format.js +29 -0
- package/build/cli/update-check/format.js.map +1 -0
- package/build/cli/update-check/registry-client.d.ts +17 -0
- package/build/cli/update-check/registry-client.d.ts.map +1 -0
- package/build/cli/update-check/registry-client.js +32 -0
- package/build/cli/update-check/registry-client.js.map +1 -0
- package/build/cli/update-check/semver.d.ts +13 -0
- package/build/cli/update-check/semver.d.ts.map +1 -0
- package/build/cli/update-check/semver.js +30 -0
- package/build/cli/update-check/semver.js.map +1 -0
- package/build/cli/update-check/types.d.ts +38 -0
- package/build/cli/update-check/types.d.ts.map +1 -0
- package/build/cli/update-check/types.js +29 -0
- package/build/cli/update-check/types.js.map +1 -0
- package/build/cli/update-check/version-source.d.ts +14 -0
- package/build/cli/update-check/version-source.d.ts.map +1 -0
- package/build/cli/update-check/version-source.js +28 -0
- package/build/cli/update-check/version-source.js.map +1 -0
- package/build/core/adapters/qdrant/client.d.ts +8 -2
- package/build/core/adapters/qdrant/client.d.ts.map +1 -1
- package/build/core/adapters/qdrant/client.js +33 -65
- package/build/core/adapters/qdrant/client.js.map +1 -1
- package/build/core/domains/explore/strategies/hybrid.js +1 -1
- package/build/core/domains/explore/strategies/hybrid.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/config/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,UA0CnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/config/defaults.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,UA0CnC,CAAC;AAEF,eAAO,MAAM,uBAAuB,UA2BnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/bootstrap/config/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,KAAK;IACL,WAAW;IACX,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,iBAAiB;IACjB,SAAS;IACT,UAAU;IACV,QAAQ;IACR,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,UAAU;IACV,WAAW;IACX,aAAa;IACb,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;CACT,CAAC"}
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../../src/bootstrap/config/defaults.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,KAAK;IACL,IAAI;IACJ,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,QAAQ;IACR,OAAO;IACP,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;IACN,QAAQ;IACR,UAAU;IACV,MAAM;IACN,SAAS;IACT,KAAK;IACL,WAAW;IACX,OAAO;IACP,OAAO;IACP,MAAM;IACN,OAAO;IACP,MAAM;CACP,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,iBAAiB;IACjB,SAAS;IACT,UAAU;IACV,QAAQ;IACR,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,WAAW;IACX,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,QAAQ;IACR,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,sBAAsB;IACtB,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,UAAU;IACV,WAAW;IACX,aAAa;IACb,OAAO;IACP,OAAO;IACP,MAAM;IACN,QAAQ;CACT,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prime.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/prime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,MAAM,EAAE,SAAS,CAYzD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { runPrime } from "../prime/run-prime.js";
|
|
2
|
+
export const primeCommand = {
|
|
3
|
+
command: "prime <path>",
|
|
4
|
+
describe: "Emit a markdown digest of index state for SessionStart context.",
|
|
5
|
+
builder: (yargs) => yargs.positional("path", {
|
|
6
|
+
type: "string",
|
|
7
|
+
describe: "Project path (typically $CLAUDE_PROJECT_DIR from a hook)",
|
|
8
|
+
demandOption: true,
|
|
9
|
+
}),
|
|
10
|
+
handler: async (argv) => {
|
|
11
|
+
await runPrime(argv.path);
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=prime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prime.js","sourceRoot":"","sources":["../../../src/cli/commands/prime.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAMjD,MAAM,CAAC,MAAM,YAAY,GAAqC;IAC5D,OAAO,EAAE,cAAc;IACvB,QAAQ,EAAE,iEAAiE;IAC3E,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,0DAA0D;QACpE,YAAY,EAAE,IAAI;KACnB,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from "node:child_process";
|
|
2
|
+
import type { CommandModule } from "yargs";
|
|
3
|
+
import { UpdateCheckService } from "../update-check/check-service.js";
|
|
4
|
+
type SpawnFn = typeof nodeSpawn;
|
|
5
|
+
type ExitFn = (code: number) => void;
|
|
6
|
+
export interface RunUpdateDeps {
|
|
7
|
+
service: Pick<UpdateCheckService, "checkForUpdate">;
|
|
8
|
+
spawn: SpawnFn;
|
|
9
|
+
exit: ExitFn;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Pure handler — accepts injected deps so tests can mock the service and
|
|
13
|
+
* the spawn function without touching node:child_process or the real
|
|
14
|
+
* registry.
|
|
15
|
+
*/
|
|
16
|
+
export declare function runUpdateCommand(depsOverride?: Partial<RunUpdateDeps>): Promise<void>;
|
|
17
|
+
export declare const updateCommand: CommandModule<object, object>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAG3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAMtE,KAAK,OAAO,GAAG,OAAO,SAAS,CAAC;AAChC,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAErC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,IAAI,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;IACpD,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAWD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB3F;AA0BD,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,MAAM,EAAE,MAAM,CAMvD,CAAC"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from "node:child_process";
|
|
2
|
+
import { FileCacheStore } from "../update-check/cache-store.js";
|
|
3
|
+
import { UpdateCheckService } from "../update-check/check-service.js";
|
|
4
|
+
import { formatForCli } from "../update-check/format.js";
|
|
5
|
+
import { NpmRegistryClient } from "../update-check/registry-client.js";
|
|
6
|
+
import { PackageJsonVersionSource } from "../update-check/version-source.js";
|
|
7
|
+
function defaultDeps() {
|
|
8
|
+
const service = new UpdateCheckService(new PackageJsonVersionSource(), new NpmRegistryClient(), new FileCacheStore());
|
|
9
|
+
return {
|
|
10
|
+
service,
|
|
11
|
+
spawn: nodeSpawn,
|
|
12
|
+
exit: (code) => process.exit(code),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Pure handler — accepts injected deps so tests can mock the service and
|
|
17
|
+
* the spawn function without touching node:child_process or the real
|
|
18
|
+
* registry.
|
|
19
|
+
*/
|
|
20
|
+
export async function runUpdateCommand(depsOverride) {
|
|
21
|
+
const deps = { ...defaultDeps(), ...depsOverride };
|
|
22
|
+
const status = await deps.service.checkForUpdate({ allowNetwork: true, preferCache: false });
|
|
23
|
+
switch (status.kind) {
|
|
24
|
+
case "up-to-date":
|
|
25
|
+
process.stdout.write(`${formatForCli(status)}\n`);
|
|
26
|
+
deps.exit(0);
|
|
27
|
+
return;
|
|
28
|
+
case "unavailable":
|
|
29
|
+
process.stderr.write(`${formatForCli(status)}\n`);
|
|
30
|
+
deps.exit(1);
|
|
31
|
+
return;
|
|
32
|
+
case "available":
|
|
33
|
+
runNpmInstall(status, deps);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function runNpmInstall(status, deps) {
|
|
37
|
+
process.stdout.write(`Updating tea-rags ${status.current} → ${status.latest}...\n`);
|
|
38
|
+
// Force postinstall to run even if user's ~/.npmrc has ignore-scripts=true.
|
|
39
|
+
// tea-rags' postinstall (scripts/postinstall.js) is required for proper setup.
|
|
40
|
+
const child = deps.spawn("npm", ["install", "-g", "tea-rags@latest"], {
|
|
41
|
+
stdio: "inherit",
|
|
42
|
+
env: { ...process.env, npm_config_ignore_scripts: "false" },
|
|
43
|
+
});
|
|
44
|
+
child.on("error", (err) => {
|
|
45
|
+
if (err.code === "ENOENT" || /ENOENT|not found/i.test(err.message)) {
|
|
46
|
+
process.stderr.write("npm not found in PATH. Install Node.js or update tea-rags manually.\n");
|
|
47
|
+
deps.exit(127);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
process.stderr.write(`Failed to spawn npm: ${err.message}\n`);
|
|
51
|
+
deps.exit(1);
|
|
52
|
+
});
|
|
53
|
+
child.on("exit", (code) => {
|
|
54
|
+
deps.exit(code ?? 1);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
export const updateCommand = {
|
|
58
|
+
command: "update",
|
|
59
|
+
describe: "Check for a newer tea-rags version and install it via npm.",
|
|
60
|
+
handler: async () => {
|
|
61
|
+
await runUpdateCommand();
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-cli.d.ts","sourceRoot":"","sources":["../../src/cli/create-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"create-cli.d.ts","sourceRoot":"","sources":["../../src/cli/create-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,OAAO,KAAK,CAAC,CAUnE"}
|
package/build/cli/create-cli.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import yargs from "yargs";
|
|
2
2
|
import { hideBin } from "yargs/helpers";
|
|
3
|
+
import { primeCommand } from "./commands/prime.js";
|
|
3
4
|
import { serverCommand } from "./commands/server.js";
|
|
4
5
|
import { tuneCommand } from "./commands/tune.js";
|
|
6
|
+
import { updateCommand } from "./commands/update.js";
|
|
5
7
|
/**
|
|
6
8
|
* Create a yargs CLI instance.
|
|
7
9
|
* @param argv - Command line arguments. Pass `undefined` to use process.argv.
|
|
@@ -11,6 +13,8 @@ export function createCli(argv) {
|
|
|
11
13
|
.scriptName("tea-rags")
|
|
12
14
|
.command(serverCommand)
|
|
13
15
|
.command(tuneCommand)
|
|
16
|
+
.command(primeCommand)
|
|
17
|
+
.command(updateCommand)
|
|
14
18
|
.demandCommand(1, "Please specify a command. Run with --help to see available commands.")
|
|
15
19
|
.strict()
|
|
16
20
|
.help();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-cli.js","sourceRoot":"","sources":["../../src/cli/create-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-cli.js","sourceRoot":"","sources":["../../src/cli/create-cli.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,IAAe;IACvC,OAAO,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SACxC,UAAU,CAAC,UAAU,CAAC;SACtB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,YAAY,CAAC;SACrB,OAAO,CAAC,aAAa,CAAC;SACtB,aAAa,CAAC,CAAC,EAAE,sEAAsE,CAAC;SACxF,MAAM,EAAE;SACR,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/cli/prime/format.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAOhE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,kBAAkB,EAAE,GAAG,GAAE,IAAiB,GAAG,MAAM,CAKjG"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { formatForPrime } from "../update-check/format.js";
|
|
2
|
+
const STALE_THRESHOLD_MS = 24 * 60 * 60 * 1000;
|
|
3
|
+
export function formatPrime(input, now = new Date()) {
|
|
4
|
+
if ("kind" in input) {
|
|
5
|
+
return formatFailure(input);
|
|
6
|
+
}
|
|
7
|
+
return formatDigest(input, now);
|
|
8
|
+
}
|
|
9
|
+
function formatFailure(reason) {
|
|
10
|
+
switch (reason.kind) {
|
|
11
|
+
case "path-not-found":
|
|
12
|
+
return `# tea-rags prime\nPath not found: ${reason.path}\n`;
|
|
13
|
+
case "qdrant-cold":
|
|
14
|
+
return (`# tea-rags prime — ${reason.path}\n` +
|
|
15
|
+
`Qdrant warm-up pending — index queries will be available after MCP server attaches.\n`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function formatDigest(data, now) {
|
|
19
|
+
const lines = [];
|
|
20
|
+
lines.push(`# tea-rags prime — ${data.path}`);
|
|
21
|
+
lines.push("");
|
|
22
|
+
lines.push("## Status");
|
|
23
|
+
lines.push(formatStatusLine(data.status, now));
|
|
24
|
+
if (data.status.status !== "indexed") {
|
|
25
|
+
return `${lines.join("\n")}\n`;
|
|
26
|
+
}
|
|
27
|
+
if (data.status.embeddingModel) {
|
|
28
|
+
const sparse = data.status.sparseVersion !== undefined ? ` · sparse v${data.status.sparseVersion}` : "";
|
|
29
|
+
lines.push(`embedding: ${data.status.embeddingModel}${sparse}`);
|
|
30
|
+
}
|
|
31
|
+
const staleness = computeStaleness(data.status.lastUpdated, now);
|
|
32
|
+
if (staleness?.stale) {
|
|
33
|
+
lines.push("");
|
|
34
|
+
lines.push(`⚠ Index is stale (last updated ${staleness.ago} ago). ` +
|
|
35
|
+
"Run `index_codebase` before the next tea-rags search/explore.");
|
|
36
|
+
}
|
|
37
|
+
lines.push("");
|
|
38
|
+
lines.push("## Schema drift");
|
|
39
|
+
lines.push(data.drift ?? "none");
|
|
40
|
+
if (data.status.infraHealth) {
|
|
41
|
+
lines.push("");
|
|
42
|
+
lines.push(...formatInfraSection(data.status.infraHealth));
|
|
43
|
+
}
|
|
44
|
+
if (data.status.enrichment) {
|
|
45
|
+
lines.push("");
|
|
46
|
+
lines.push(...formatEnrichmentSection(data.status.enrichment));
|
|
47
|
+
}
|
|
48
|
+
// Primary language is derived from IndexMetrics.distributions.language
|
|
49
|
+
// (Record<string, number>, sorted by chunk count desc). IndexStatus.languages
|
|
50
|
+
// is declared but never populated by any producer — do not use it.
|
|
51
|
+
const languages = sortedLanguages(data.metrics);
|
|
52
|
+
if (languages.length > 0) {
|
|
53
|
+
lines.push("");
|
|
54
|
+
lines.push(...formatLanguageSection(languages));
|
|
55
|
+
}
|
|
56
|
+
if (data.metrics && languages.length > 0) {
|
|
57
|
+
const primary = languages[0];
|
|
58
|
+
if (primary && data.metrics.signals[primary]) {
|
|
59
|
+
lines.push("");
|
|
60
|
+
lines.push(...formatThresholdsSection(primary, data.metrics.signals[primary]));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (data.update !== null) {
|
|
64
|
+
const updateLines = formatForPrime(data.update);
|
|
65
|
+
if (updateLines.length > 0) {
|
|
66
|
+
lines.push("");
|
|
67
|
+
lines.push(...updateLines);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
lines.push("");
|
|
71
|
+
lines.push('→ run `tea-rags prime "$CLAUDE_PROJECT_DIR"` to refresh this digest after re-indexing');
|
|
72
|
+
return `${lines.join("\n")}\n`;
|
|
73
|
+
}
|
|
74
|
+
// Chunker artifacts that aren't real programming languages (markdown code blocks,
|
|
75
|
+
// misclassified extensions). Drop them from the polyglot list to keep the digest signal-clean.
|
|
76
|
+
const POLYGLOT_BLACKLIST = new Set(["code", "bash", "text", "gitignore", "powershell", "ts", "yaml", "json"]);
|
|
77
|
+
function sortedLanguages(metrics) {
|
|
78
|
+
if (!metrics?.distributions?.language)
|
|
79
|
+
return [];
|
|
80
|
+
return Object.entries(metrics.distributions.language)
|
|
81
|
+
.filter(([lang]) => !POLYGLOT_BLACKLIST.has(lang))
|
|
82
|
+
.sort(([, a], [, b]) => b - a)
|
|
83
|
+
.map(([lang]) => lang);
|
|
84
|
+
}
|
|
85
|
+
function formatLanguageSection(languages) {
|
|
86
|
+
if (languages.length === 1) {
|
|
87
|
+
return ["## Language", languages[0]];
|
|
88
|
+
}
|
|
89
|
+
const [primary, ...rest] = languages;
|
|
90
|
+
return [
|
|
91
|
+
"## Polyglot",
|
|
92
|
+
`primary: ${primary} · also: ${rest.join(", ")}`,
|
|
93
|
+
"→ for non-primary languages, call `get_index_metrics` for their labelMap",
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
function formatThresholdsSection(language, signals) {
|
|
97
|
+
const lines = [`## Signal thresholds — ${language}`, ""];
|
|
98
|
+
for (const [signalName, scopes] of Object.entries(signals)) {
|
|
99
|
+
const source = scopes.source ? formatLabelMap(scopes.source.labelMap) : "—";
|
|
100
|
+
const test = scopes.test ? formatLabelMap(scopes.test.labelMap) : "—";
|
|
101
|
+
lines.push(`- **${signalName}**`);
|
|
102
|
+
lines.push(` - source: ${source}`);
|
|
103
|
+
lines.push(` - test: ${test}`);
|
|
104
|
+
}
|
|
105
|
+
return lines;
|
|
106
|
+
}
|
|
107
|
+
function formatLabelMap(labelMap) {
|
|
108
|
+
return Object.entries(labelMap)
|
|
109
|
+
.map(([label, threshold]) => `${label} ≤${roundTwo(threshold)}`)
|
|
110
|
+
.join(" / ")
|
|
111
|
+
.replace(/extreme ≤(\d+)/, "extreme >$1");
|
|
112
|
+
}
|
|
113
|
+
function roundTwo(n) {
|
|
114
|
+
return Math.round(n * 100) / 100;
|
|
115
|
+
}
|
|
116
|
+
function formatStatusLine(status, now) {
|
|
117
|
+
switch (status.status) {
|
|
118
|
+
case "not_indexed":
|
|
119
|
+
return "not indexed. Run `/tea-rags:index` to index this codebase.";
|
|
120
|
+
case "stale_indexing":
|
|
121
|
+
return ("stale indexing marker (previous run crashed). " +
|
|
122
|
+
"Re-run /tea-rags:index — stale collection will be cleaned up.");
|
|
123
|
+
case "indexing":
|
|
124
|
+
return `indexing in progress (${status.chunksCount ?? 0} chunks so far). Re-prime after completion.`;
|
|
125
|
+
case "indexed": {
|
|
126
|
+
const collection = `\`${status.collectionName ?? "unknown"}\``;
|
|
127
|
+
const counts = status.filesCount !== undefined
|
|
128
|
+
? `${status.filesCount} files / ${status.chunksCount ?? 0} chunks`
|
|
129
|
+
: `${status.chunksCount ?? 0} chunks`;
|
|
130
|
+
const base = `indexed · collection ${collection} · ${counts}`;
|
|
131
|
+
const staleness = computeStaleness(status.lastUpdated, now);
|
|
132
|
+
return staleness ? `${base} · last indexed: ${staleness.ago} ago` : base;
|
|
133
|
+
}
|
|
134
|
+
case "unavailable":
|
|
135
|
+
return "index unavailable.";
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function computeStaleness(lastUpdated, now) {
|
|
139
|
+
if (!lastUpdated)
|
|
140
|
+
return null;
|
|
141
|
+
const diffMs = now.getTime() - new Date(lastUpdated).getTime();
|
|
142
|
+
return { ago: formatRelativeTime(diffMs), stale: diffMs > STALE_THRESHOLD_MS };
|
|
143
|
+
}
|
|
144
|
+
function formatInfraSection(infra) {
|
|
145
|
+
const lines = ["## Infra"];
|
|
146
|
+
const q = infra.qdrant;
|
|
147
|
+
let qLine = `qdrant: ${q.status ?? "unknown"} (optimizer ${q.optimizerStatus ?? "unknown"}) at ${q.url}`;
|
|
148
|
+
if (q.status === "yellow") {
|
|
149
|
+
qLine += " — background optimization in progress";
|
|
150
|
+
}
|
|
151
|
+
else if (q.status === "red") {
|
|
152
|
+
qLine += " — UNAVAILABLE, search will fail";
|
|
153
|
+
}
|
|
154
|
+
lines.push(qLine);
|
|
155
|
+
const e = infra.embedding;
|
|
156
|
+
const availability = e.available ? "available" : "unavailable";
|
|
157
|
+
const eAt = e.url ? ` at ${e.url}` : "";
|
|
158
|
+
lines.push(`embedding: ${availability} · ${e.provider}${eAt}`);
|
|
159
|
+
return lines;
|
|
160
|
+
}
|
|
161
|
+
function formatEnrichmentSection(enrichment) {
|
|
162
|
+
const lines = ["## Enrichment"];
|
|
163
|
+
for (const [provider, health] of Object.entries(enrichment)) {
|
|
164
|
+
const inProgress = health.file.status === "in_progress" || health.chunk.status === "in_progress";
|
|
165
|
+
const suffix = inProgress ? " (in progress)" : "";
|
|
166
|
+
lines.push(`${provider}: file ${health.file.status}, chunk ${health.chunk.status}${suffix}`);
|
|
167
|
+
}
|
|
168
|
+
return lines;
|
|
169
|
+
}
|
|
170
|
+
function formatRelativeTime(diffMs) {
|
|
171
|
+
const minutes = Math.floor(diffMs / (60 * 1000));
|
|
172
|
+
if (minutes < 60)
|
|
173
|
+
return `${Math.max(0, minutes)}m`;
|
|
174
|
+
const hours = Math.floor(diffMs / (60 * 60 * 1000));
|
|
175
|
+
if (hours < 24)
|
|
176
|
+
return `${hours}h`;
|
|
177
|
+
const days = Math.floor(diffMs / (24 * 60 * 60 * 1000));
|
|
178
|
+
return `${days}d`;
|
|
179
|
+
}
|
|
180
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/prime/format.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAM3D,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE/C,MAAM,UAAU,WAAW,CAAC,KAAqC,EAAE,MAAY,IAAI,IAAI,EAAE;IACvF,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;QACpB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,aAAa,CAAC,MAA0B;IAC/C,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,gBAAgB;YACnB,OAAO,qCAAqC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9D,KAAK,aAAa;YAChB,OAAO,CACL,sBAAsB,MAAM,CAAC,IAAI,IAAI;gBACrC,uFAAuF,CACxF,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAe,EAAE,GAAS;IAC9C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,cAAc,GAAG,MAAM,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,SAAS,EAAE,KAAK,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CACR,kCAAkC,SAAS,CAAC,GAAG,SAAS;YACtD,+DAA+D,CAClE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC9B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC;IAEjC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,uEAAuE;IACvE,8EAA8E;IAC9E,mEAAmE;IACnE,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjF,CAAC;IACH,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;IAEpG,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,kFAAkF;AAClF,+FAA+F;AAC/F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE9G,SAAS,eAAe,CAAC,OAA4B;IACnD,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjD,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC;SAClD,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACjD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,qBAAqB,CAAC,SAAmB;IAChD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACrC,OAAO;QACL,aAAa;QACb,YAAY,OAAO,YAAY,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChD,0EAA0E;KAC3E,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB,CAC9B,QAAgB,EAChB,OAA6E;IAE7E,MAAM,KAAK,GAAG,CAAC,0BAA0B,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACtE,KAAK,CAAC,IAAI,CAAC,OAAO,UAAU,IAAI,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,QAAgC;IACtD,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC5B,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;SAC/D,IAAI,CAAC,KAAK,CAAC;SACX,OAAO,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;AAC9C,CAAC;AAED,SAAS,QAAQ,CAAC,CAAS;IACzB,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACnC,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAmB,EAAE,GAAS;IACtD,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,aAAa;YAChB,OAAO,4DAA4D,CAAC;QACtE,KAAK,gBAAgB;YACnB,OAAO,CACL,gDAAgD;gBAChD,+DAA+D,CAChE,CAAC;QACJ,KAAK,UAAU;YACb,OAAO,yBAAyB,MAAM,CAAC,WAAW,IAAI,CAAC,6CAA6C,CAAC;QACvG,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,UAAU,GAAG,KAAK,MAAM,CAAC,cAAc,IAAI,SAAS,IAAI,CAAC;YAC/D,MAAM,MAAM,GACV,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC7B,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,YAAY,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS;gBAClE,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC;YAC1C,MAAM,IAAI,GAAG,wBAAwB,UAAU,MAAM,MAAM,EAAE,CAAC;YAC9D,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAC5D,OAAO,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,oBAAoB,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3E,CAAC;QACD,KAAK,aAAa;YAChB,OAAO,oBAAoB,CAAC;IAChC,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAA6B,EAAE,GAAS;IAChE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,kBAAkB,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAAC;AACjF,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAkB;IAC5C,MAAM,KAAK,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,IAAI,KAAK,GAAG,WAAW,CAAC,CAAC,MAAM,IAAI,SAAS,eAAe,CAAC,CAAC,eAAe,IAAI,SAAS,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;IACzG,IAAI,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1B,KAAK,IAAI,wCAAwC,CAAC;IACpD,CAAC;SAAM,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC9B,KAAK,IAAI,kCAAkC,CAAC;IAC9C,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAElB,MAAM,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,YAAY,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;IAC/D,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,KAAK,CAAC,IAAI,CAAC,cAAc,YAAY,MAAM,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,UAAyB;IACxD,MAAM,KAAK,GAAG,CAAC,eAAe,CAAC,CAAC;IAChC,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,aAAa,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,aAAa,CAAC;QACjG,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,GAAG,QAAQ,UAAU,MAAM,CAAC,IAAI,CAAC,MAAM,WAAW,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC/F,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC;IACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACpD,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACxD,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface ConfigShape {
|
|
2
|
+
qdrantUrl?: string;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the Qdrant URL the same way the embedded daemon advertises itself.
|
|
6
|
+
*
|
|
7
|
+
* Order: QDRANT_URL env > config.qdrantUrl > <storagePath>/daemon.port > fallback.
|
|
8
|
+
* Storage path mirrors getStoragePath in core/adapters/qdrant/embedded/daemon.ts
|
|
9
|
+
* but the rule is duplicated here because CLI cannot import from core/adapters/
|
|
10
|
+
* per the layer-boundary contract.
|
|
11
|
+
*/
|
|
12
|
+
export declare function discoverQdrantUrl(config: ConfigShape): string;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=qdrant-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-discovery.d.ts","sourceRoot":"","sources":["../../../src/cli/prime/qdrant-discovery.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAc7D"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const FALLBACK_URL = "http://localhost:6333";
|
|
5
|
+
/**
|
|
6
|
+
* Resolve the Qdrant URL the same way the embedded daemon advertises itself.
|
|
7
|
+
*
|
|
8
|
+
* Order: QDRANT_URL env > config.qdrantUrl > <storagePath>/daemon.port > fallback.
|
|
9
|
+
* Storage path mirrors getStoragePath in core/adapters/qdrant/embedded/daemon.ts
|
|
10
|
+
* but the rule is duplicated here because CLI cannot import from core/adapters/
|
|
11
|
+
* per the layer-boundary contract.
|
|
12
|
+
*/
|
|
13
|
+
export function discoverQdrantUrl(config) {
|
|
14
|
+
if (process.env.QDRANT_URL)
|
|
15
|
+
return process.env.QDRANT_URL;
|
|
16
|
+
if (config.qdrantUrl)
|
|
17
|
+
return config.qdrantUrl;
|
|
18
|
+
const portFile = join(getStoragePath(), "daemon.port");
|
|
19
|
+
if (!existsSync(portFile))
|
|
20
|
+
return FALLBACK_URL;
|
|
21
|
+
try {
|
|
22
|
+
const port = parseInt(readFileSync(portFile, "utf-8").trim(), 10);
|
|
23
|
+
if (!Number.isFinite(port) || port <= 0)
|
|
24
|
+
return FALLBACK_URL;
|
|
25
|
+
return `http://127.0.0.1:${port}`;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
return FALLBACK_URL;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function getStoragePath() {
|
|
32
|
+
if (process.env.QDRANT_EMBEDDED_STORAGE_PATH) {
|
|
33
|
+
return process.env.QDRANT_EMBEDDED_STORAGE_PATH;
|
|
34
|
+
}
|
|
35
|
+
const dataDir = process.env.TEA_RAGS_DATA_DIR ?? join(homedir(), ".tea-rags");
|
|
36
|
+
return join(dataDir, "qdrant");
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=qdrant-discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-discovery.js","sourceRoot":"","sources":["../../../src/cli/prime/qdrant-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAM7C;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmB;IACnD,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAC1D,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC;IAE9C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,YAAY,CAAC;IAE/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAAE,OAAO,YAAY,CAAC;QAC7D,OAAO,oBAAoB,IAAI,EAAE,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,YAAY,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;IAClD,CAAC;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;IAC9E,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Qdrant readiness ping for SessionStart fast-fail.
|
|
3
|
+
* Returns true if /readyz responds OK within `timeoutMs`. False on any error or timeout.
|
|
4
|
+
*/
|
|
5
|
+
export declare function pingQdrant(url: string, timeoutMs?: number): Promise<boolean>;
|
|
6
|
+
//# sourceMappingURL=qdrant-ping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-ping.d.ts","sourceRoot":"","sources":["../../../src/cli/prime/qdrant-ping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/E"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lightweight Qdrant readiness ping for SessionStart fast-fail.
|
|
3
|
+
* Returns true if /readyz responds OK within `timeoutMs`. False on any error or timeout.
|
|
4
|
+
*/
|
|
5
|
+
export async function pingQdrant(url, timeoutMs = 200) {
|
|
6
|
+
try {
|
|
7
|
+
const res = await fetch(`${url}/readyz`, { signal: AbortSignal.timeout(timeoutMs) });
|
|
8
|
+
return res.ok;
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=qdrant-ping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qdrant-ping.js","sourceRoot":"","sources":["../../../src/cli/prime/qdrant-ping.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAW,EAAE,SAAS,GAAG,GAAG;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,SAAS,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrF,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-prime.d.ts","sourceRoot":"","sources":["../../../src/cli/prime/run-prime.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA6C1D"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { parseAppConfig } from "../../bootstrap/config/index.js";
|
|
3
|
+
import { createAppContext } from "../../bootstrap/factory.js";
|
|
4
|
+
import { FileCacheStore } from "../update-check/cache-store.js";
|
|
5
|
+
import { UpdateCheckService } from "../update-check/check-service.js";
|
|
6
|
+
import { NpmRegistryClient } from "../update-check/registry-client.js";
|
|
7
|
+
import { PackageJsonVersionSource } from "../update-check/version-source.js";
|
|
8
|
+
import { formatPrime } from "./format.js";
|
|
9
|
+
import { discoverQdrantUrl } from "./qdrant-discovery.js";
|
|
10
|
+
import { pingQdrant } from "./qdrant-ping.js";
|
|
11
|
+
function buildUpdateService() {
|
|
12
|
+
return new UpdateCheckService(new PackageJsonVersionSource(), new NpmRegistryClient(), new FileCacheStore());
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Run prime: emit a markdown digest of index state to stdout.
|
|
16
|
+
* Always exits 0 — degrades to placeholder when path missing or Qdrant cold.
|
|
17
|
+
*/
|
|
18
|
+
export async function runPrime(path) {
|
|
19
|
+
if (!existsSync(path)) {
|
|
20
|
+
process.stdout.write(formatPrime({ kind: "path-not-found", path }));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const config = parseAppConfig();
|
|
24
|
+
const qdrantUrl = discoverQdrantUrl(config);
|
|
25
|
+
const reachable = await pingQdrant(qdrantUrl);
|
|
26
|
+
if (!reachable) {
|
|
27
|
+
process.stdout.write(formatPrime({ kind: "qdrant-cold", path }));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
const ctx = await createAppContext(config);
|
|
31
|
+
const updateService = ctx.updateService ?? buildUpdateService();
|
|
32
|
+
try {
|
|
33
|
+
const [status, metricsResult, drift, update] = await Promise.allSettled([
|
|
34
|
+
ctx.app.getIndexStatus(path),
|
|
35
|
+
ctx.app.getIndexMetrics(path),
|
|
36
|
+
ctx.app.checkSchemaDrift({ path }),
|
|
37
|
+
updateService.checkForUpdate({
|
|
38
|
+
allowNetwork: true,
|
|
39
|
+
timeoutMs: 1500,
|
|
40
|
+
preferCache: true,
|
|
41
|
+
}),
|
|
42
|
+
]);
|
|
43
|
+
if (status.status !== "fulfilled") {
|
|
44
|
+
process.stdout.write(formatPrime({ kind: "qdrant-cold", path }));
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const data = {
|
|
48
|
+
path,
|
|
49
|
+
status: status.value,
|
|
50
|
+
metrics: metricsResult.status === "fulfilled" ? metricsResult.value : null,
|
|
51
|
+
drift: drift.status === "fulfilled" ? drift.value : null,
|
|
52
|
+
update: update.status === "fulfilled" ? update.value : null,
|
|
53
|
+
};
|
|
54
|
+
process.stdout.write(formatPrime(data));
|
|
55
|
+
}
|
|
56
|
+
finally {
|
|
57
|
+
ctx.cleanup?.();
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=run-prime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-prime.js","sourceRoot":"","sources":["../../../src/cli/prime/run-prime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IndexMetrics, IndexStatus } from "../../core/api/public/dto/index.js";
|
|
2
|
+
import type { UpdateStatus } from "../update-check/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Successful prime data — index reachable, status fetched.
|
|
5
|
+
* `metrics` is null when the project is not yet indexed (status !== "indexed").
|
|
6
|
+
* `update` is null when the prime path did not request an update check
|
|
7
|
+
* (e.g. degraded path) or the field was never populated.
|
|
8
|
+
*/
|
|
9
|
+
export interface PrimeData {
|
|
10
|
+
path: string;
|
|
11
|
+
status: IndexStatus;
|
|
12
|
+
metrics: IndexMetrics | null;
|
|
13
|
+
drift: string | null;
|
|
14
|
+
update: UpdateStatus | null;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Degraded outputs that exit the runPrime pipeline early without a full digest.
|
|
18
|
+
* Each variant produces a short markdown placeholder via formatPrime.
|
|
19
|
+
*/
|
|
20
|
+
export type PrimeFailureReason = {
|
|
21
|
+
kind: "path-not-found";
|
|
22
|
+
path: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "qdrant-cold";
|
|
25
|
+
path: string;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/prime/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/prime/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { CacheEntry } from "./types.js";
|
|
2
|
+
export interface CacheStore {
|
|
3
|
+
/** Returns the cached entry or null if missing/corrupt. Never throws. */
|
|
4
|
+
read: () => CacheEntry | null;
|
|
5
|
+
/** Atomically replaces the cache contents. Silent on EACCES / disk full. */
|
|
6
|
+
write: (entry: CacheEntry) => void;
|
|
7
|
+
}
|
|
8
|
+
/** Default cache file location: `~/.tea-rags/update-check.json`. */
|
|
9
|
+
export declare function defaultCachePath(): string;
|
|
10
|
+
export declare class FileCacheStore implements CacheStore {
|
|
11
|
+
private readonly path;
|
|
12
|
+
constructor(path?: string);
|
|
13
|
+
read(): CacheEntry | null;
|
|
14
|
+
write(entry: CacheEntry): void;
|
|
15
|
+
private tryDelete;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=cache-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache-store.d.ts","sourceRoot":"","sources":["../../../src/cli/update-check/cache-store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,YAAY,CAAC;AAE3D,MAAM,WAAW,UAAU;IACzB,yEAAyE;IACzE,IAAI,EAAE,MAAM,UAAU,GAAG,IAAI,CAAC;IAC9B,4EAA4E;IAC5E,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACpC;AAED,oEAAoE;AACpE,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,qBAAa,cAAe,YAAW,UAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,MAA2B;IAE9D,IAAI,IAAI,UAAU,GAAG,IAAI;IAwBzB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAW9B,OAAO,CAAC,SAAS;CAOlB"}
|