pi-para 0.6.3 → 0.6.4
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 +9 -0
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +5 -1
- package/dist/scheduler/index.js.map +1 -1
- package/dist/status.d.ts +5 -0
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +39 -0
- package/dist/status.js.map +1 -1
- package/dist/store.d.ts +7 -0
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +15 -0
- package/dist/store.js.map +1 -1
- package/package.json +1 -1
- package/src/scheduler/index.ts +4 -1
- package/src/status.ts +44 -0
- package/src/store.ts +18 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## [0.6.4] — 2026-07-14
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- Background `qmd-embed` no longer attempts embedding when no real API provider is configured (inert-shim stores are detected and skipped). Previously this produced repeated `embed error: fetch failed` noise on Linux and ~21s TCP connect hangs per attempt on Windows for provider-less installs.
|
|
9
|
+
- `pi-para status --json` now reports embedding state (`embedding.hasVectorIndex`, `embedding.needsEmbedding`) via a millisecond read-only probe of the QMD SQLite DB — no store open, status stays fast.
|
|
10
|
+
|
|
11
|
+
### CI/Tests
|
|
12
|
+
- Full Windows unit-test parity: fixed POSIX-biased tests (path splitting, permission-bit asserts, HOME-only overrides, SQLite handles held open across temp-dir cleanup, perf thresholds). The Windows CI job now runs the unit test suite as a blocking step.
|
|
13
|
+
|
|
5
14
|
## [0.6.3] — 2026-07-14
|
|
6
15
|
|
|
7
16
|
### Fixed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAChD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAuC;IACvD,YAAY,EAAE,OAAO,CAAC;gBAEV,IAAI,EAAE,oBAAoB;IAgBtC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,MAAM;IAKlI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAIhE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;YAmBf,OAAO;YAqBP,kBAAkB;IAoBhC;;;;;OAKG;YACW,WAAW;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhG,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,QAAQ,GAAG,IAAI,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAChD;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IACjC,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IACvC,OAAO,CAAC,QAAQ,CAAuC;IACvD,YAAY,EAAE,OAAO,CAAC;gBAEV,IAAI,EAAE,oBAAoB;IAgBtC,KAAK,IAAI,IAAI;IASb,IAAI,IAAI,IAAI;IAOZ,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,OAAY,EAAE,IAAI,GAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,MAAM;IAKlI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAIhE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;YAmBf,OAAO;YAqBP,kBAAkB;IAoBhC;;;;;OAKG;YACW,WAAW;CAwB1B;AAKD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAU1E;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,aAAa,CAI5E;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAWxE;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,SAAS,EAAE,MAAM,IAAI,EACrB,IAAI,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/C,MAAM,GAAG,IAAI,CA2Bf;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,QAAQ,EACf,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7B,MAAM,CAUR;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAO9C"}
|
package/dist/scheduler/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
2
|
import { gitCommit, rebuildIndex } from "../wiki.js";
|
|
3
|
-
import { reindex } from "../store.js";
|
|
3
|
+
import { reindex, storeHasApiProviders } from "../store.js";
|
|
4
4
|
import { getParaPaths } from "../paths.js";
|
|
5
5
|
import { acquireLease, releaseLease } from "./leases.js";
|
|
6
6
|
import { SchedulerStateDB } from "./state.js";
|
|
@@ -141,6 +141,10 @@ export class WikiScheduler {
|
|
|
141
141
|
const store = this.storeProvider();
|
|
142
142
|
if (!store)
|
|
143
143
|
return;
|
|
144
|
+
// No real embedding provider configured — embed calls would hit the inert
|
|
145
|
+
// shim endpoint (slow TCP timeouts on Windows) and always fail. Skip.
|
|
146
|
+
if (!storeHasApiProviders(store))
|
|
147
|
+
return;
|
|
144
148
|
const status = await store.getStatus();
|
|
145
149
|
const pending = status.needsEmbedding ?? 0;
|
|
146
150
|
if (pending === 0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/scheduler/index.ts"],"names":[],"mappings":"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"}
|
package/dist/status.d.ts
CHANGED
|
@@ -15,6 +15,11 @@ export interface PiParaStatusResult {
|
|
|
15
15
|
};
|
|
16
16
|
scheduler: Record<QueueStatus, number>;
|
|
17
17
|
qmdDbExists: boolean;
|
|
18
|
+
/** Read-only probe of the QMD DB (null when the DB doesn't exist/can't be read). */
|
|
19
|
+
embedding: {
|
|
20
|
+
hasVectorIndex: boolean;
|
|
21
|
+
needsEmbedding: number;
|
|
22
|
+
} | null;
|
|
18
23
|
warnings: string[];
|
|
19
24
|
}
|
|
20
25
|
export declare function getPiParaStatus(options?: PiParaStatusOptions): Promise<PiParaStatusResult>;
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,WAAW,GAAG,UAAU,CAAC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;KAC1C,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC;IACrB,oFAAoF;IACpF,SAAS,EAAE;QAAE,cAAc,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACtE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAID,wBAAsB,eAAe,CAAC,OAAO,GAAE,mBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAwBpG;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAoBrE"}
|
package/dist/status.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
+
import Database from "better-sqlite3";
|
|
2
3
|
import { loadParaConfig } from "./config.js";
|
|
3
4
|
import { getParaPaths } from "./paths.js";
|
|
4
5
|
import { listPages } from "./wiki.js";
|
|
@@ -25,6 +26,7 @@ export async function getPiParaStatus(options = {}) {
|
|
|
25
26
|
pages,
|
|
26
27
|
scheduler,
|
|
27
28
|
qmdDbExists: existsSync(paths.qmdDbPath),
|
|
29
|
+
embedding: getQmdEmbeddingStats(paths.qmdDbPath, warnings),
|
|
28
30
|
warnings,
|
|
29
31
|
};
|
|
30
32
|
}
|
|
@@ -36,6 +38,9 @@ export function formatPiParaStatus(status) {
|
|
|
36
38
|
` Pages: ${status.pages.total} total (${formatCategoryCounts(status.pages.byCategory)})`,
|
|
37
39
|
` Scheduler: ${status.scheduler.queued} queued, ${status.scheduler.running} running, ${status.scheduler.failed} failed`,
|
|
38
40
|
` QMD SDK DB: ${status.qmdDbExists ? status.qmdDbPath : "not initialized"}`,
|
|
41
|
+
...(status.embedding
|
|
42
|
+
? [` Embeddings: vector index ${status.embedding.hasVectorIndex ? "yes" : "no"}, pending ${status.embedding.needsEmbedding}`]
|
|
43
|
+
: []),
|
|
39
44
|
];
|
|
40
45
|
if (status.warnings.length > 0) {
|
|
41
46
|
lines.push("", "Warnings:");
|
|
@@ -87,6 +92,40 @@ function getSchedulerCounts(dbPath, warnings) {
|
|
|
87
92
|
}
|
|
88
93
|
return counts;
|
|
89
94
|
}
|
|
95
|
+
/**
|
|
96
|
+
* Cheap read-only probe of the QMD SQLite DB for embedding state — avoids
|
|
97
|
+
* opening the full store (~1s). Mirrors qmd-engine's getHashesNeedingEmbedding
|
|
98
|
+
* query (documents ⋈ content_vectors), which is stable across qmd 2.x.
|
|
99
|
+
*/
|
|
100
|
+
function getQmdEmbeddingStats(dbPath, warnings) {
|
|
101
|
+
if (!existsSync(dbPath))
|
|
102
|
+
return null;
|
|
103
|
+
try {
|
|
104
|
+
const db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
105
|
+
try {
|
|
106
|
+
const tables = new Set(db.prepare("SELECT name FROM sqlite_master WHERE type IN ('table','view')").all()
|
|
107
|
+
.map((row) => row.name));
|
|
108
|
+
if (!tables.has("documents") || !tables.has("content_vectors")) {
|
|
109
|
+
return { hasVectorIndex: false, needsEmbedding: 0 };
|
|
110
|
+
}
|
|
111
|
+
const vectors = db.prepare("SELECT COUNT(*) AS c FROM content_vectors").get();
|
|
112
|
+
const pending = db.prepare(`
|
|
113
|
+
SELECT COUNT(DISTINCT d.hash) AS c
|
|
114
|
+
FROM documents d
|
|
115
|
+
LEFT JOIN content_vectors v ON d.hash = v.hash AND v.seq = 0
|
|
116
|
+
WHERE d.active = 1 AND v.hash IS NULL
|
|
117
|
+
`).get();
|
|
118
|
+
return { hasVectorIndex: vectors.c > 0, needsEmbedding: pending.c };
|
|
119
|
+
}
|
|
120
|
+
finally {
|
|
121
|
+
db.close();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (err) {
|
|
125
|
+
warnings.push(`could not read QMD embedding stats: ${err instanceof Error ? err.message : String(err)}`);
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
90
129
|
function formatCategoryCounts(counts) {
|
|
91
130
|
return `projects ${counts.projects}, areas ${counts.areas}, resources ${counts.resources}, archives ${counts.archives}`;
|
|
92
131
|
}
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAqB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAoB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"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"}
|
package/dist/store.d.ts
CHANGED
|
@@ -35,6 +35,13 @@ export interface WikiSearchResult {
|
|
|
35
35
|
snippet: string;
|
|
36
36
|
frontmatter: PageFrontmatter;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Whether the store was opened with a real (configured) embedding provider.
|
|
40
|
+
* When false, embedding calls would hit the inert shim endpoint and fail —
|
|
41
|
+
* slowly on platforms where localhost connects to closed ports time out
|
|
42
|
+
* (Windows firewall drops) — so background embedding must be skipped.
|
|
43
|
+
*/
|
|
44
|
+
export declare function storeHasApiProviders(store: QMDStore): boolean;
|
|
38
45
|
/**
|
|
39
46
|
* Open and configure a qmd store for the wiki directory.
|
|
40
47
|
*
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;KAAE,CAAC;IAC3E;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAoB,MAAM,YAAY,CAAC;AAE7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE;QAAE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;KAAE,CAAC;IAC3E;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,eAAe,CAAC;CAC9B;AA8BD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAE7D;AAuCD;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAqE/F;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/D;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,iBAAiB,GACtB,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqE7B;AAkCD;;;GAGG;AACH,wBAAsB,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE"}
|
package/dist/store.js
CHANGED
|
@@ -22,6 +22,18 @@ const PARA_CONTEXTS = {
|
|
|
22
22
|
const RAW_CONTEXT = "Immutable source material: articles, documents, notes. Not synthesized.";
|
|
23
23
|
// -- Pending embed tracking --------------------------------------------------
|
|
24
24
|
const pendingEmbeds = new WeakMap();
|
|
25
|
+
// -- Inert-provider tracking ---------------------------------------------------
|
|
26
|
+
/** Stores opened with the NO_LOCAL_PROVIDERS shim (no real API provider). */
|
|
27
|
+
const inertProviderStores = new WeakSet();
|
|
28
|
+
/**
|
|
29
|
+
* Whether the store was opened with a real (configured) embedding provider.
|
|
30
|
+
* When false, embedding calls would hit the inert shim endpoint and fail —
|
|
31
|
+
* slowly on platforms where localhost connects to closed ports time out
|
|
32
|
+
* (Windows firewall drops) — so background embedding must be skipped.
|
|
33
|
+
*/
|
|
34
|
+
export function storeHasApiProviders(store) {
|
|
35
|
+
return !inertProviderStores.has(store);
|
|
36
|
+
}
|
|
25
37
|
// -- qmd provider config -----------------------------------------------------
|
|
26
38
|
/**
|
|
27
39
|
* qmd-engine currently falls back to node-llama-cpp when no API provider is
|
|
@@ -77,6 +89,7 @@ export async function openStore(wikiDir, opts = {}) {
|
|
|
77
89
|
})
|
|
78
90
|
: loadQmdProviders();
|
|
79
91
|
const providers = configuredProviders ?? NO_LOCAL_PROVIDERS;
|
|
92
|
+
const usingInertShim = !configuredProviders;
|
|
80
93
|
const store = await createStore({
|
|
81
94
|
dbPath: join(wikiDir, ".qmd.sqlite"),
|
|
82
95
|
config: {
|
|
@@ -95,6 +108,8 @@ export async function openStore(wikiDir, opts = {}) {
|
|
|
95
108
|
providers: providers,
|
|
96
109
|
},
|
|
97
110
|
});
|
|
111
|
+
if (usingInertShim)
|
|
112
|
+
inertProviderStores.add(store);
|
|
98
113
|
// Add PARA category contexts to the wiki collection
|
|
99
114
|
for (const [prefix, description] of Object.entries(PARA_CONTEXTS)) {
|
|
100
115
|
await store.addContext("wiki", prefix, description);
|
package/dist/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAE,+BAA+B,EAA2B,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA4C1C,+EAA+E;AAE/E,MAAM,aAAa,GAA2B;IAC5C,WAAW,EAAE,kDAAkD;IAC/D,QAAQ,EAAE,wCAAwC;IAClD,YAAY,EAAE,sCAAsC;IACpD,WAAW,EAAE,+BAA+B;CAC7C,CAAC;AAEF,MAAM,WAAW,GAAG,yEAAyE,CAAC;AAE9F,+EAA+E;AAE/E,MAAM,aAAa,GAAG,IAAI,OAAO,EAA2B,CAAC;AAE7D,+EAA+E;AAE/E;;;;;;GAMG;AACH,MAAM,kBAAkB,GAAuB;IAC7C,KAAK,EAAE;QACL,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,oBAAoB;KAC5B;CACF,CAAC;AAEF,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,gBAAgB;IACvB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAClE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,SAAS,CAAC;IAE9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAA4C,CAAC;QAC7E,OAAO,MAAM,EAAE,SAAS,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,OAAyB,EAAE;IAC1E,0EAA0E;IAC1E,wEAAwE;IACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU;QACzC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,KAAK,uBAAuB;YAC9D,CAAC,CAAC,gBAAgB,EAAE;YACpB,CAAC,CAAC,MAAM,+BAA+B,CAAC,IAAI,CAAC,UAAU,EAAE;gBACvD,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC;QACJ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvB,MAAM,SAAS,GAAG,mBAAmB,IAAI,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/scheduler/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { QMDStore } from "qmd-engine";
|
|
2
2
|
import { randomUUID } from "node:crypto";
|
|
3
3
|
import { gitCommit, rebuildIndex } from "../wiki.js";
|
|
4
|
-
import { reindex } from "../store.js";
|
|
4
|
+
import { reindex, storeHasApiProviders } from "../store.js";
|
|
5
5
|
import { getParaPaths } from "../paths.js";
|
|
6
6
|
import { acquireLease, releaseLease } from "./leases.js";
|
|
7
7
|
import { SchedulerStateDB, type QueueItem } from "./state.js";
|
|
@@ -155,6 +155,9 @@ export class WikiScheduler {
|
|
|
155
155
|
private async runQmdEmbed(): Promise<void> {
|
|
156
156
|
const store = this.storeProvider();
|
|
157
157
|
if (!store) return;
|
|
158
|
+
// No real embedding provider configured — embed calls would hit the inert
|
|
159
|
+
// shim endpoint (slow TCP timeouts on Windows) and always fail. Skip.
|
|
160
|
+
if (!storeHasApiProviders(store)) return;
|
|
158
161
|
|
|
159
162
|
const status = await store.getStatus();
|
|
160
163
|
const pending = status.needsEmbedding ?? 0;
|
package/src/status.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
|
+
import Database from "better-sqlite3";
|
|
2
3
|
import { loadParaConfig } from "./config.js";
|
|
3
4
|
import { getParaPaths } from "./paths.js";
|
|
4
5
|
import { listPages, type ParaCategory } from "./wiki.js";
|
|
@@ -20,6 +21,8 @@ export interface PiParaStatusResult {
|
|
|
20
21
|
};
|
|
21
22
|
scheduler: Record<QueueStatus, number>;
|
|
22
23
|
qmdDbExists: boolean;
|
|
24
|
+
/** Read-only probe of the QMD DB (null when the DB doesn't exist/can't be read). */
|
|
25
|
+
embedding: { hasVectorIndex: boolean; needsEmbedding: number } | null;
|
|
23
26
|
warnings: string[];
|
|
24
27
|
}
|
|
25
28
|
|
|
@@ -46,6 +49,7 @@ export async function getPiParaStatus(options: PiParaStatusOptions = {}): Promis
|
|
|
46
49
|
pages,
|
|
47
50
|
scheduler,
|
|
48
51
|
qmdDbExists: existsSync(paths.qmdDbPath),
|
|
52
|
+
embedding: getQmdEmbeddingStats(paths.qmdDbPath, warnings),
|
|
49
53
|
warnings,
|
|
50
54
|
};
|
|
51
55
|
}
|
|
@@ -58,6 +62,9 @@ export function formatPiParaStatus(status: PiParaStatusResult): string {
|
|
|
58
62
|
` Pages: ${status.pages.total} total (${formatCategoryCounts(status.pages.byCategory)})`,
|
|
59
63
|
` Scheduler: ${status.scheduler.queued} queued, ${status.scheduler.running} running, ${status.scheduler.failed} failed`,
|
|
60
64
|
` QMD SDK DB: ${status.qmdDbExists ? status.qmdDbPath : "not initialized"}`,
|
|
65
|
+
...(status.embedding
|
|
66
|
+
? [` Embeddings: vector index ${status.embedding.hasVectorIndex ? "yes" : "no"}, pending ${status.embedding.needsEmbedding}`]
|
|
67
|
+
: []),
|
|
61
68
|
];
|
|
62
69
|
|
|
63
70
|
if (status.warnings.length > 0) {
|
|
@@ -110,6 +117,43 @@ function getSchedulerCounts(dbPath: string, warnings: string[]): Record<QueueSta
|
|
|
110
117
|
return counts;
|
|
111
118
|
}
|
|
112
119
|
|
|
120
|
+
/**
|
|
121
|
+
* Cheap read-only probe of the QMD SQLite DB for embedding state — avoids
|
|
122
|
+
* opening the full store (~1s). Mirrors qmd-engine's getHashesNeedingEmbedding
|
|
123
|
+
* query (documents ⋈ content_vectors), which is stable across qmd 2.x.
|
|
124
|
+
*/
|
|
125
|
+
function getQmdEmbeddingStats(
|
|
126
|
+
dbPath: string,
|
|
127
|
+
warnings: string[],
|
|
128
|
+
): { hasVectorIndex: boolean; needsEmbedding: number } | null {
|
|
129
|
+
if (!existsSync(dbPath)) return null;
|
|
130
|
+
try {
|
|
131
|
+
const db = new Database(dbPath, { readonly: true, fileMustExist: true });
|
|
132
|
+
try {
|
|
133
|
+
const tables = new Set(
|
|
134
|
+
(db.prepare("SELECT name FROM sqlite_master WHERE type IN ('table','view')").all() as Array<{ name: string }>)
|
|
135
|
+
.map((row) => row.name),
|
|
136
|
+
);
|
|
137
|
+
if (!tables.has("documents") || !tables.has("content_vectors")) {
|
|
138
|
+
return { hasVectorIndex: false, needsEmbedding: 0 };
|
|
139
|
+
}
|
|
140
|
+
const vectors = db.prepare("SELECT COUNT(*) AS c FROM content_vectors").get() as { c: number };
|
|
141
|
+
const pending = db.prepare(`
|
|
142
|
+
SELECT COUNT(DISTINCT d.hash) AS c
|
|
143
|
+
FROM documents d
|
|
144
|
+
LEFT JOIN content_vectors v ON d.hash = v.hash AND v.seq = 0
|
|
145
|
+
WHERE d.active = 1 AND v.hash IS NULL
|
|
146
|
+
`).get() as { c: number };
|
|
147
|
+
return { hasVectorIndex: vectors.c > 0, needsEmbedding: pending.c };
|
|
148
|
+
} finally {
|
|
149
|
+
db.close();
|
|
150
|
+
}
|
|
151
|
+
} catch (err) {
|
|
152
|
+
warnings.push(`could not read QMD embedding stats: ${err instanceof Error ? err.message : String(err)}`);
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
113
157
|
function formatCategoryCounts(counts: Record<ParaCategory, number>): string {
|
|
114
158
|
return `projects ${counts.projects}, areas ${counts.areas}, resources ${counts.resources}, archives ${counts.archives}`;
|
|
115
159
|
}
|
package/src/store.ts
CHANGED
|
@@ -73,6 +73,21 @@ const RAW_CONTEXT = "Immutable source material: articles, documents, notes. Not
|
|
|
73
73
|
|
|
74
74
|
const pendingEmbeds = new WeakMap<QMDStore, Promise<void>>();
|
|
75
75
|
|
|
76
|
+
// -- Inert-provider tracking ---------------------------------------------------
|
|
77
|
+
|
|
78
|
+
/** Stores opened with the NO_LOCAL_PROVIDERS shim (no real API provider). */
|
|
79
|
+
const inertProviderStores = new WeakSet<QMDStore>();
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Whether the store was opened with a real (configured) embedding provider.
|
|
83
|
+
* When false, embedding calls would hit the inert shim endpoint and fail —
|
|
84
|
+
* slowly on platforms where localhost connects to closed ports time out
|
|
85
|
+
* (Windows firewall drops) — so background embedding must be skipped.
|
|
86
|
+
*/
|
|
87
|
+
export function storeHasApiProviders(store: QMDStore): boolean {
|
|
88
|
+
return !inertProviderStores.has(store);
|
|
89
|
+
}
|
|
90
|
+
|
|
76
91
|
// -- qmd provider config -----------------------------------------------------
|
|
77
92
|
|
|
78
93
|
/**
|
|
@@ -132,6 +147,7 @@ export async function openStore(wikiDir: string, opts: OpenStoreOptions = {}): P
|
|
|
132
147
|
})
|
|
133
148
|
: loadQmdProviders();
|
|
134
149
|
const providers = configuredProviders ?? NO_LOCAL_PROVIDERS;
|
|
150
|
+
const usingInertShim = !configuredProviders;
|
|
135
151
|
|
|
136
152
|
const store = await createStore({
|
|
137
153
|
dbPath: join(wikiDir, ".qmd.sqlite"),
|
|
@@ -152,6 +168,8 @@ export async function openStore(wikiDir: string, opts: OpenStoreOptions = {}): P
|
|
|
152
168
|
},
|
|
153
169
|
});
|
|
154
170
|
|
|
171
|
+
if (usingInertShim) inertProviderStores.add(store);
|
|
172
|
+
|
|
155
173
|
// Add PARA category contexts to the wiki collection
|
|
156
174
|
for (const [prefix, description] of Object.entries(PARA_CONTEXTS)) {
|
|
157
175
|
await store.addContext("wiki", prefix, description);
|