daftari 1.30.0 → 1.32.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/CHANGELOG.md +176 -0
- package/README.md +188 -4
- package/dist/access/rbac.d.ts +1 -0
- package/dist/access/rbac.d.ts.map +1 -1
- package/dist/access/rbac.js +7 -0
- package/dist/access/rbac.js.map +1 -1
- package/dist/audit/checks/broken_refs.d.ts +1 -1
- package/dist/audit/checks/broken_refs.d.ts.map +1 -1
- package/dist/audit/checks/broken_refs.js +77 -22
- package/dist/audit/checks/broken_refs.js.map +1 -1
- package/dist/audit/collect.d.ts +1 -0
- package/dist/audit/collect.d.ts.map +1 -1
- package/dist/audit/collect.js +22 -2
- package/dist/audit/collect.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +9 -3
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/links.d.ts.map +1 -1
- package/dist/audit/links.js +9 -3
- package/dist/audit/links.js.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +2 -0
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/backfill/derive.d.ts.map +1 -1
- package/dist/backfill/derive.js +1 -0
- package/dist/backfill/derive.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +24 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/index.d.ts.map +1 -1
- package/dist/consolidate/index.js +10 -12
- package/dist/consolidate/index.js.map +1 -1
- package/dist/court/precedent.d.ts.map +1 -1
- package/dist/court/precedent.js +6 -1
- package/dist/court/precedent.js.map +1 -1
- package/dist/curation/consumes.d.ts +24 -0
- package/dist/curation/consumes.d.ts.map +1 -0
- package/dist/curation/consumes.js +122 -0
- package/dist/curation/consumes.js.map +1 -0
- package/dist/curation/edge-staleness.d.ts +47 -0
- package/dist/curation/edge-staleness.d.ts.map +1 -0
- package/dist/curation/edge-staleness.js +258 -0
- package/dist/curation/edge-staleness.js.map +1 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +190 -17
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +6 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +87 -24
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +2 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +2 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/read-log.d.ts +19 -0
- package/dist/curation/read-log.d.ts.map +1 -0
- package/dist/curation/read-log.js +120 -0
- package/dist/curation/read-log.js.map +1 -0
- package/dist/curation/review-throughput.d.ts +24 -0
- package/dist/curation/review-throughput.d.ts.map +1 -0
- package/dist/curation/review-throughput.js +102 -0
- package/dist/curation/review-throughput.js.map +1 -0
- package/dist/curation/shadow.d.ts +1 -0
- package/dist/curation/shadow.d.ts.map +1 -1
- package/dist/curation/shadow.js +17 -11
- package/dist/curation/shadow.js.map +1 -1
- package/dist/curation/staged-actions.d.ts +12 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +123 -48
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/structural.d.ts +16 -0
- package/dist/curation/structural.d.ts.map +1 -0
- package/dist/curation/structural.js +64 -0
- package/dist/curation/structural.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +4 -0
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +9 -0
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension.d.ts +5 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +68 -25
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/tier0.d.ts +27 -0
- package/dist/curation/tier0.d.ts.map +1 -0
- package/dist/curation/tier0.js +196 -0
- package/dist/curation/tier0.js.map +1 -0
- package/dist/curation/tier1.d.ts +30 -0
- package/dist/curation/tier1.d.ts.map +1 -0
- package/dist/curation/tier1.js +142 -0
- package/dist/curation/tier1.js.map +1 -0
- package/dist/curation/tier2.d.ts +43 -0
- package/dist/curation/tier2.d.ts.map +1 -0
- package/dist/curation/tier2.js +182 -0
- package/dist/curation/tier2.js.map +1 -0
- package/dist/curation/vault-docs.d.ts +5 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +14 -0
- package/dist/curation/vault-docs.js.map +1 -1
- package/dist/eval/generate.d.ts.map +1 -1
- package/dist/eval/generate.js +38 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts +1 -0
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +249 -50
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm-openrouter.d.ts.map +1 -1
- package/dist/eval/llm-openrouter.js +158 -65
- package/dist/eval/llm-openrouter.js.map +1 -1
- package/dist/eval/llm.js +1 -1
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/prune.d.ts +24 -0
- package/dist/eval/prune.d.ts.map +1 -0
- package/dist/eval/prune.js +83 -0
- package/dist/eval/prune.js.map +1 -0
- package/dist/eval/storage.d.ts +3 -0
- package/dist/eval/storage.d.ts.map +1 -1
- package/dist/eval/storage.js +14 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +19 -1
- package/dist/frontmatter/schema.js.map +1 -1
- package/dist/frontmatter/types.d.ts +4 -1
- package/dist/frontmatter/types.d.ts.map +1 -1
- package/dist/frontmatter/types.js +8 -0
- package/dist/frontmatter/types.js.map +1 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +44 -9
- package/dist/import/index.js.map +1 -1
- package/dist/import/langgraph-store.d.ts +53 -0
- package/dist/import/langgraph-store.d.ts.map +1 -0
- package/dist/import/langgraph-store.js +292 -0
- package/dist/import/langgraph-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/interview/index.d.ts +7 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +219 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/questions.d.ts +18 -0
- package/dist/interview/questions.d.ts.map +1 -0
- package/dist/interview/questions.js +169 -0
- package/dist/interview/questions.js.map +1 -0
- package/dist/interview/transcript.d.ts +23 -0
- package/dist/interview/transcript.d.ts.map +1 -0
- package/dist/interview/transcript.js +155 -0
- package/dist/interview/transcript.js.map +1 -0
- package/dist/lifecycle/lock.d.ts +9 -1
- package/dist/lifecycle/lock.d.ts.map +1 -1
- package/dist/lifecycle/lock.js +34 -9
- package/dist/lifecycle/lock.js.map +1 -1
- package/dist/okf/export.d.ts +12 -0
- package/dist/okf/export.d.ts.map +1 -0
- package/dist/okf/export.js +117 -0
- package/dist/okf/export.js.map +1 -0
- package/dist/okf/import.d.ts +24 -0
- package/dist/okf/import.d.ts.map +1 -0
- package/dist/okf/import.js +115 -0
- package/dist/okf/import.js.map +1 -0
- package/dist/okf/index.d.ts +2 -0
- package/dist/okf/index.d.ts.map +1 -0
- package/dist/okf/index.js +159 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +27 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +327 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +13 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +82 -0
- package/dist/okf/types.js.map +1 -0
- package/dist/search/coverage.d.ts.map +1 -1
- package/dist/search/coverage.js +1 -1
- package/dist/search/coverage.js.map +1 -1
- package/dist/search/hybrid.d.ts +19 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +60 -15
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +4 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +64 -14
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/watcher.d.ts +2 -0
- package/dist/search/watcher.d.ts.map +1 -1
- package/dist/search/watcher.js +29 -27
- package/dist/search/watcher.js.map +1 -1
- package/dist/serve/index.d.ts +36 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +507 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/server.d.ts +10 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +89 -14
- package/dist/server.js.map +1 -1
- package/dist/sleep/index.d.ts +2 -0
- package/dist/sleep/index.d.ts.map +1 -1
- package/dist/sleep/index.js +212 -21
- package/dist/sleep/index.js.map +1 -1
- package/dist/sleep/report.d.ts +3 -0
- package/dist/sleep/report.d.ts.map +1 -1
- package/dist/sleep/report.js +52 -0
- package/dist/sleep/report.js.map +1 -1
- package/dist/sleep/tension-scan-state.d.ts +19 -0
- package/dist/sleep/tension-scan-state.d.ts.map +1 -0
- package/dist/sleep/tension-scan-state.js +0 -0
- package/dist/sleep/tension-scan-state.js.map +1 -0
- package/dist/sleep/tension-scan.d.ts +44 -0
- package/dist/sleep/tension-scan.d.ts.map +1 -0
- package/dist/sleep/tension-scan.js +0 -0
- package/dist/sleep/tension-scan.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +231 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/backends/fs.d.ts +4 -0
- package/dist/storage/backends/fs.d.ts.map +1 -0
- package/dist/storage/backends/fs.js +99 -0
- package/dist/storage/backends/fs.js.map +1 -0
- package/dist/storage/fs-walk.d.ts +5 -0
- package/dist/storage/fs-walk.d.ts.map +1 -0
- package/dist/storage/fs-walk.js +28 -0
- package/dist/storage/fs-walk.js.map +1 -0
- package/dist/storage/index-db.d.ts +16 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +95 -5
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +1 -0
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +12 -0
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/sync.d.ts +25 -0
- package/dist/storage/sync.d.ts.map +1 -0
- package/dist/storage/sync.js +308 -0
- package/dist/storage/sync.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +136 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/themes/clustering.d.ts +6 -11
- package/dist/themes/clustering.d.ts.map +1 -1
- package/dist/themes/clustering.js +76 -84
- package/dist/themes/clustering.js.map +1 -1
- package/dist/tools/consumes.d.ts +14 -0
- package/dist/tools/consumes.d.ts.map +1 -0
- package/dist/tools/consumes.js +99 -0
- package/dist/tools/consumes.js.map +1 -0
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +53 -15
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edge-staleness.d.ts +28 -0
- package/dist/tools/edge-staleness.d.ts.map +1 -0
- package/dist/tools/edge-staleness.js +205 -0
- package/dist/tools/edge-staleness.js.map +1 -0
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +27 -21
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/read.d.ts +15 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +211 -76
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts.map +1 -1
- package/dist/tools/receipt.js +16 -7
- package/dist/tools/receipt.js.map +1 -1
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +147 -5
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +3 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +225 -22
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +8 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +208 -122
- package/dist/tools/themes.js.map +1 -1
- package/dist/tools/tier1.d.ts +14 -0
- package/dist/tools/tier1.d.ts.map +1 -0
- package/dist/tools/tier1.js +169 -0
- package/dist/tools/tier1.js.map +1 -0
- package/dist/tools/tier2.d.ts +27 -0
- package/dist/tools/tier2.d.ts.map +1 -0
- package/dist/tools/tier2.js +344 -0
- package/dist/tools/tier2.js.map +1 -0
- package/dist/tools/write.d.ts +9 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +596 -174
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +52 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +394 -24
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/dates.d.ts +1 -0
- package/dist/utils/dates.d.ts.map +1 -1
- package/dist/utils/dates.js +5 -0
- package/dist/utils/dates.js.map +1 -1
- package/dist/utils/run-id.d.ts +3 -0
- package/dist/utils/run-id.d.ts.map +1 -0
- package/dist/utils/run-id.js +19 -0
- package/dist/utils/run-id.js.map +1 -0
- package/dist/utils/vault-gitignore.d.ts +1 -1
- package/dist/utils/vault-gitignore.d.ts.map +1 -1
- package/dist/utils/vault-gitignore.js +4 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/package.json +21 -1
- package/templates/config.yaml +8 -0
package/dist/index.js
CHANGED
|
@@ -24,12 +24,13 @@ import { markIndexError, markIndexing, markIndexReady, setIndexProgress, } from
|
|
|
24
24
|
import { isIndexFresh, reindexVault, reindexWarnings, } from "./search/reindex.js";
|
|
25
25
|
import { setProvider, warmModel } from "./search/vector.js";
|
|
26
26
|
import { startWatcher } from "./search/watcher.js";
|
|
27
|
-
import { createServer } from "./server.js";
|
|
27
|
+
import { createServer, resolveToolExposure, SERVER_VERSION } from "./server.js";
|
|
28
28
|
import { directoryExists } from "./storage/local.js";
|
|
29
|
-
import { loadConfig } from "./utils/config.js";
|
|
30
|
-
//
|
|
31
|
-
//
|
|
32
|
-
|
|
29
|
+
import { loadConfig, TOOL_TIERS } from "./utils/config.js";
|
|
30
|
+
// Read from package.json (via server.ts) so it can never drift from the
|
|
31
|
+
// published version. Surfaced in the process lockfile for operator
|
|
32
|
+
// diagnostics.
|
|
33
|
+
const DAFTARI_VERSION = SERVER_VERSION;
|
|
33
34
|
// Reads `--name value` or `--name=value` from argv; null if absent.
|
|
34
35
|
export function parseFlag(argv, name) {
|
|
35
36
|
const flag = `--${name}`;
|
|
@@ -59,9 +60,10 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
59
60
|
return;
|
|
60
61
|
}
|
|
61
62
|
// Acquire the per-vault process lock BEFORE any heavy work. If another
|
|
62
|
-
// daftari is holding this vault, SIGTERM it and wait briefly for it
|
|
63
|
-
// exit
|
|
64
|
-
|
|
63
|
+
// stdio daftari is holding this vault, SIGTERM it and wait briefly for it
|
|
64
|
+
// to exit; a live `daftari serve` holder REFUSES the takeover (#5 spec
|
|
65
|
+
// Decision 4). See docs/superpowers/plans/2026-05-20-process-lockfile.md.
|
|
66
|
+
const lockResult = await acquireLock(vaultRoot, DAFTARI_VERSION, { mode: "stdio" });
|
|
65
67
|
if (!lockResult.ok) {
|
|
66
68
|
process.stderr.write(`daftari: failed to acquire vault lock: ${lockResult.error.message}\n`);
|
|
67
69
|
process.exitCode = 1;
|
|
@@ -100,6 +102,23 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
100
102
|
if (access.role === null && roleName !== GUEST_ROLE) {
|
|
101
103
|
process.stderr.write(`daftari: warning: role '${roleName}' not found in config — running as deny-all guest\n`);
|
|
102
104
|
}
|
|
105
|
+
// Tool exposure (#103/#104): config `tools` block, with --tools overriding
|
|
106
|
+
// the TIER for this invocation only (include/exclude still apply). An
|
|
107
|
+
// unknown --tools value fails loud like any malformed config; unknown tool
|
|
108
|
+
// NAMES in include/exclude only warn — they may name a future tool.
|
|
109
|
+
const tierFlag = parseFlag(argv, "tools");
|
|
110
|
+
let toolsConfig = config.value.tools;
|
|
111
|
+
if (tierFlag !== null) {
|
|
112
|
+
if (!TOOL_TIERS.includes(tierFlag)) {
|
|
113
|
+
process.stderr.write(`daftari: invalid --tools value '${tierFlag}' (expected one of ${TOOL_TIERS.join(", ")})\n`);
|
|
114
|
+
process.exitCode = 1;
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
toolsConfig = { ...toolsConfig, tier: tierFlag };
|
|
118
|
+
}
|
|
119
|
+
for (const name of resolveToolExposure(toolsConfig).unknown) {
|
|
120
|
+
process.stderr.write(`daftari: warning: tools.include/exclude names unknown tool '${name}' — ignored\n`);
|
|
121
|
+
}
|
|
103
122
|
// The persisted index is a derived cache: if every file on disk matches the
|
|
104
123
|
// manifest written by the last reindex, the on-disk index already reflects
|
|
105
124
|
// the vault and we can skip the embedding pass entirely (~25 min on a
|
|
@@ -130,11 +149,22 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
130
149
|
// `tools/list` immediately. Indexing — if needed — runs as a background
|
|
131
150
|
// task; tools that depend on the index will respond "still indexing" until
|
|
132
151
|
// it completes.
|
|
133
|
-
const server = createServer(vaultRoot, access);
|
|
152
|
+
const server = createServer(vaultRoot, access, toolsConfig);
|
|
134
153
|
const transport = new StdioServerTransport();
|
|
135
154
|
await server.connect(transport);
|
|
136
155
|
process.stderr.write(`daftari: serving vault at ${vaultRoot} (stdio) — ` +
|
|
137
156
|
`user=${access.user} role=${access.roleName}\n`);
|
|
157
|
+
await startVaultServices(vaultRoot, {
|
|
158
|
+
warmEmbeddings: config.value.warmEmbeddings,
|
|
159
|
+
watch: config.value.watch,
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
// The index/watcher bootstrap shared by stdio main() and `daftari serve`
|
|
163
|
+
// (#5): freshness check, cheap jsonl re-materialization on the fresh path,
|
|
164
|
+
// background reindex otherwise, watcher start either way. Returns once the
|
|
165
|
+
// FOREGROUND work is done — the reindex itself runs on unawaited in the
|
|
166
|
+
// background, alongside the live transport.
|
|
167
|
+
export async function startVaultServices(vaultRoot, opts) {
|
|
138
168
|
const fresh = await isIndexFresh(vaultRoot);
|
|
139
169
|
if (fresh) {
|
|
140
170
|
process.stderr.write(`daftari: index is up to date — skipping reindex\n`);
|
|
@@ -158,19 +188,19 @@ export async function main(argv = process.argv.slice(2)) {
|
|
|
158
188
|
// the model is still cold. Warm it in the background (if config allows)
|
|
159
189
|
// so the first user search does not pay the ~500ms cold start. Then
|
|
160
190
|
// start the watcher to catch out-of-band edits going forward.
|
|
161
|
-
if (
|
|
191
|
+
if (opts.warmEmbeddings) {
|
|
162
192
|
void runBackgroundWarm();
|
|
163
193
|
}
|
|
164
|
-
maybeStartWatcher(vaultRoot,
|
|
194
|
+
maybeStartWatcher(vaultRoot, opts.watch);
|
|
165
195
|
return;
|
|
166
196
|
}
|
|
167
|
-
// Background reindex. The promise is intentionally not awaited —
|
|
168
|
-
// returns once the transport is up, and the indexing pass runs to
|
|
197
|
+
// Background reindex. The promise is intentionally not awaited — the
|
|
198
|
+
// caller returns once the transport is up, and the indexing pass runs to
|
|
169
199
|
// completion alongside the live server.
|
|
170
200
|
markIndexing();
|
|
171
201
|
process.stderr.write(`daftari: starting background reindex…\n`);
|
|
172
|
-
void runBackgroundReindex(vaultRoot,
|
|
173
|
-
maybeStartWatcher(vaultRoot,
|
|
202
|
+
void runBackgroundReindex(vaultRoot, opts.warmEmbeddings, () => {
|
|
203
|
+
maybeStartWatcher(vaultRoot, opts.watch);
|
|
174
204
|
});
|
|
175
205
|
}
|
|
176
206
|
// Reference held so a SIGTERM / SIGINT can close the watcher cleanly. One
|
|
@@ -184,13 +214,17 @@ let activeWatcher = null;
|
|
|
184
214
|
// drains, Node emits 'exit', the registered listener releases.
|
|
185
215
|
// The 'exit' listener is sync-only (Node guarantees the loop is closed by
|
|
186
216
|
// then), which is why releaseLock is sync.
|
|
187
|
-
|
|
217
|
+
//
|
|
218
|
+
// `extra` (#5): serve registers its own teardown (close the HTTP listener
|
|
219
|
+
// and every live session) to run before the lock releases.
|
|
220
|
+
export function installShutdownHandlers(vaultRoot, extra) {
|
|
188
221
|
const onShutdown = () => {
|
|
189
222
|
if (activeWatcher) {
|
|
190
223
|
const w = activeWatcher;
|
|
191
224
|
activeWatcher = null;
|
|
192
225
|
void w.close();
|
|
193
226
|
}
|
|
227
|
+
extra?.();
|
|
194
228
|
releaseLock(vaultRoot);
|
|
195
229
|
};
|
|
196
230
|
process.once("SIGTERM", onShutdown);
|
|
@@ -237,8 +271,12 @@ async function runBackgroundReindex(vaultRoot, warmEmbeddings, onDone) {
|
|
|
237
271
|
// If the reindex was fully cache-hit (no chunks needed embedding) the
|
|
238
272
|
// model was never loaded — warm it now so the first user search isn't
|
|
239
273
|
// a cold start. A reindex that did embed already loaded the model; no
|
|
240
|
-
// extra warm is necessary in that path.
|
|
241
|
-
|
|
274
|
+
// extra warm is necessary in that path. embeddedCount is the COMMITTED
|
|
275
|
+
// count (#54), so 0 alone no longer proves the model was never invoked:
|
|
276
|
+
// a first-batch embed failure also banks nothing. That failure path
|
|
277
|
+
// drops vectorEnabled, so gate on it — warming a provider that just
|
|
278
|
+
// failed would fail the same way.
|
|
279
|
+
if (warmEmbeddings && r.vectorEnabled && r.embeddedCount === 0) {
|
|
242
280
|
void runBackgroundWarm();
|
|
243
281
|
}
|
|
244
282
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAClC,EAAE;AACF,+EAA+E;AAC/E,2EAA2E;AAC3E,+EAA+E;AAC/E,qDAAqD;AACrD,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,iEAAiE;AACjE,uEAAuE;AACvE,4BAA4B;AAC5B,EAAE;AACF,2EAA2E;AAC3E,oBAAoB;AAEpB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EACL,cAAc,EACd,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EAEZ,YAAY,EACZ,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAqB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,uEAAuE;AACvE,yDAAyD;AACzD,MAAM,eAAe,GAAG,QAAQ,CAAC;AAEjC,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,IAAY;IACpD,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpD,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;IACrC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;IAC1D,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAc;IAC1C,OAAO,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,OAAiB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QAC5E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,CAAC,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,SAAS,IAAI,CAAC,CAAC;QAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,uEAAuE;IACvE,uEAAuE;IACvE,yEAAyE;IACzE,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,UAAU,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,wEAAwE;IACxE,wDAAwD;IACxD,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAEnC,2EAA2E;IAC3E,2DAA2D;IAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;QAC3D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,qBAAqB;IACrB,IAAI,CAAC;QACH,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,MAAM,IAAI,CAAC,CAAC;QAC7C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,8DAA8D;IAC9D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,OAAO,CAAC;IAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,UAAU,CAAC;IACvD,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2BAA2B,QAAQ,qDAAqD,CACzF,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAEhD,yEAAyE;IACzE,wEAAwE;IACxE,qCAAqC;IACrC,IAAI,YAAY,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oBAAoB,CAAC,CAAC,aAAa,UAAU,CAAC,CAAC,UAAU,UAAU;gBACjE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAClD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;QAC7F,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YAC3F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;QACD,OAAO;IACT,CAAC;IAED,qEAAqE;IACrE,wEAAwE;IACxE,2EAA2E;IAC3E,gBAAgB;IAChB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6BAA6B,SAAS,aAAa;QACjD,QAAQ,MAAM,CAAC,IAAI,SAAS,MAAM,CAAC,QAAQ,IAAI,CAClD,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC1E,cAAc,EAAE,CAAC;QACjB,mEAAmE;QACnE,uEAAuE;QACvE,mEAAmE;QACnE,wEAAwE;QACxE,6DAA6D;QAC7D,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6DAA6D,YAAY,CAAC,KAAK,CAAC,OAAO,IAAI,CAC5F,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,6DAA6D;QAC7D,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2DAA2D,iBAAiB,CAAC,KAAK,CAAC,OAAO,IAAI,CAC/F,CAAC;QACJ,CAAC;QACD,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAChC,KAAK,iBAAiB,EAAE,CAAC;QAC3B,CAAC;QACD,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,wEAAwE;IACxE,kEAAkE;IAClE,wCAAwC;IACxC,YAAY,EAAE,CAAC;IACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAChE,KAAK,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,EAAE;QACrE,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,oEAAoE;AACpE,IAAI,aAAa,GAAwB,IAAI,CAAC;AAE9C,2EAA2E;AAC3E,+BAA+B;AAC/B,uEAAuE;AACvE,qEAAqE;AACrE,0EAA0E;AAC1E,mEAAmE;AACnE,0EAA0E;AAC1E,2CAA2C;AAC3C,SAAS,uBAAuB,CAAC,SAAiB;IAChD,MAAM,UAAU,GAAG,GAAG,EAAE;QACtB,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,CAAC,GAAG,aAAa,CAAC;YACxB,aAAa,GAAG,IAAI,CAAC;YACrB,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,WAAW,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;AACrD,CAAC;AAED,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,gCAAgC;AAChC,SAAS,iBAAiB,CAAC,SAAiB,EAAE,YAAqB;IACjE,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,IAAI,aAAa;QAAE,OAAO;IAC1B,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,CAAC,CAAC;AAC1E,CAAC;AAED,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,mEAAmE;AACnE,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;IACjC,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC7E,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAChG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,cAAuB,EACvB,MAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC;YAC1B,cAAc,EAAE,CAAC;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oBAAoB,CAAC,CAAC,aAAa,UAAU,CAAC,CAAC,UAAU,UAAU;gBACjE,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAClD,CAAC;YACF,KAAK,MAAM,IAAI,IAAI,eAAe,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,IAAI,CAAC,CAAC;YAC3F,sEAAsE;YACtE,sEAAsE;YACtE,sEAAsE;YACtE,wCAAwC;YACxC,IAAI,cAAc,IAAI,CAAC,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;gBAC5C,KAAK,iBAAiB,EAAE,CAAC;YAC3B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,oDAAoD,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,CAChF,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvE,cAAc,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iDAAiD,MAAM,IAAI,CAAC,CAAC;IACpF,CAAC;YAAS,CAAC;QACT,oEAAoE;QACpE,kEAAkE;QAClE,6DAA6D;QAC7D,iEAAiE;QACjE,8BAA8B;QAC9B,MAAM,EAAE,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,uEAAuE;AACvE,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,uCAAuC;AACvC,SAAS,oBAAoB;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC;IACvB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,OAAO;QACL,UAAU,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YAC1B,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC9B,IAAI,KAAK,KAAK,CAAC;gBAAE,OAAO;YACxB,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC;gBACrE,IAAI,IAAI,KAAK,KAAK;oBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC/C,OAAO;YACT,CAAC;YACD,MAAM,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;YAC3B,IAAI,KAAK,IAAI,YAAY,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,IAAI,KAAK,WAAW,CAAC,CAAC;gBACrE,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;YAC/D,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,qEAAqE;AACrE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC3D,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,MAAM,MAAM,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,IAAI,CAAC,CAAC;QACpD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interview/index.ts"],"names":[],"mappings":"AA+FA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,IAAI,IAAI,CAAC;CACf;AAwFD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAiEpF"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
// Top-level entry for `daftari interview` — the vault interrogates its
|
|
2
|
+
// principal.
|
|
3
|
+
//
|
|
4
|
+
// daftari interview print the question sheet (read-only): open
|
|
5
|
+
// tensions, expired canon, unanswered
|
|
6
|
+
// questions_raised — priority-ordered
|
|
7
|
+
// daftari interview ask conduct the interview at the terminal and
|
|
8
|
+
// record the verbatim answers as a vault doc
|
|
9
|
+
//
|
|
10
|
+
// Operator-only, like the court: the sheet reads the full tension log and
|
|
11
|
+
// every collection with no access context. Deterministic and LLM-free, like
|
|
12
|
+
// the circadian pass: nothing on this surface can spend.
|
|
13
|
+
//
|
|
14
|
+
// Exit codes (the audit convention):
|
|
15
|
+
// 0 — sheet printed / interview recorded (or nothing to ask)
|
|
16
|
+
// 2 — config/usage error (bad flag value)
|
|
17
|
+
// 3 — runtime error (IO failure)
|
|
18
|
+
import { writeFile } from "node:fs/promises";
|
|
19
|
+
import { userInfo } from "node:os";
|
|
20
|
+
import { resolve } from "node:path";
|
|
21
|
+
import { createInterface } from "node:readline";
|
|
22
|
+
import { gatherQuestions, renderSheet } from "./questions.js";
|
|
23
|
+
import { DEFAULT_INTERVIEW_COLLECTION, isValidCollectionName, writeTranscript, } from "./transcript.js";
|
|
24
|
+
const HELP = `daftari interview — the vault interrogates its principal.
|
|
25
|
+
|
|
26
|
+
The sheet is assembled from what the vault already knows is unclear: open
|
|
27
|
+
tensions (contested first, longest-carried first), canonical accumulation
|
|
28
|
+
docs past their ttl_days (largest overshoot first), and questions_raised
|
|
29
|
+
entries that no document's questions_answered covers. Deterministic, LLM-free.
|
|
30
|
+
|
|
31
|
+
Usage:
|
|
32
|
+
daftari interview [--vault <path>] [--limit <n>] [--output <md>] [--output-json <json>]
|
|
33
|
+
daftari interview ask [--vault <path>] [--limit <n>] [--collection <name>] [--by <identity>]
|
|
34
|
+
daftari interview --help
|
|
35
|
+
|
|
36
|
+
Sheet (default, read-only):
|
|
37
|
+
--limit Cap the sheet at the n highest-priority questions.
|
|
38
|
+
--output Write the sheet to a file instead of stdout.
|
|
39
|
+
--output-json Also write the questions as JSON.
|
|
40
|
+
|
|
41
|
+
Interview (ask):
|
|
42
|
+
Each question is put to you in turn. Your answer is recorded VERBATIM.
|
|
43
|
+
An empty answer skips the question; 'q' (or end-of-input) ends the
|
|
44
|
+
session. Answered questions become a transcript document in the vault —
|
|
45
|
+
tier: source, provenance: direct — committed like any other write.
|
|
46
|
+
|
|
47
|
+
--collection Collection the transcript lands in (default: interviews).
|
|
48
|
+
One path segment: letters, digits, '-', '_'.
|
|
49
|
+
Note: the transcript quotes claims from every collection
|
|
50
|
+
the sheet touched. Under the template config only roles
|
|
51
|
+
with read: ["*"] can read a new collection; granting a
|
|
52
|
+
narrower role read here exposes those quotes to it.
|
|
53
|
+
--by Identity recorded as updated_by and commit author
|
|
54
|
+
(default: human:<os username>).
|
|
55
|
+
|
|
56
|
+
Recording testimony resolves nothing. The transcript is evidence: close a
|
|
57
|
+
tension with 'daftari court rule <id> --references <transcript>', freshen a
|
|
58
|
+
stale doc with a re-verified write.
|
|
59
|
+
|
|
60
|
+
Exit codes:
|
|
61
|
+
0 — sheet printed / interview recorded
|
|
62
|
+
2 — config/usage error
|
|
63
|
+
3 — runtime error (IO failure)
|
|
64
|
+
`;
|
|
65
|
+
function readStringArg(argv, flag) {
|
|
66
|
+
const raw = argv.find((a) => a === flag || a.startsWith(`${flag}=`));
|
|
67
|
+
if (raw === undefined)
|
|
68
|
+
return undefined;
|
|
69
|
+
const idx = argv.indexOf(raw);
|
|
70
|
+
return raw.includes("=") ? raw.slice(raw.indexOf("=") + 1) : argv[idx + 1];
|
|
71
|
+
}
|
|
72
|
+
const VALUE_FLAGS = ["--vault", "--limit", "--output", "--output-json", "--collection", "--by"];
|
|
73
|
+
function findPositionals(argv) {
|
|
74
|
+
const out = [];
|
|
75
|
+
for (let i = 0; i < argv.length; i++) {
|
|
76
|
+
const a = argv[i];
|
|
77
|
+
if (a.startsWith("--"))
|
|
78
|
+
continue;
|
|
79
|
+
const prev = i > 0 ? argv[i - 1] : undefined;
|
|
80
|
+
if (prev !== undefined && VALUE_FLAGS.includes(prev))
|
|
81
|
+
continue;
|
|
82
|
+
out.push(a);
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
function terminalIo() {
|
|
87
|
+
const rl = createInterface({ input: process.stdin, output: process.stdout });
|
|
88
|
+
const closed = new Promise((res) => rl.once("close", () => res(null)));
|
|
89
|
+
return {
|
|
90
|
+
ask: (prompt) => Promise.race([new Promise((res) => rl.question(prompt, res)), closed]),
|
|
91
|
+
write: (text) => process.stdout.write(text),
|
|
92
|
+
close: () => rl.close(),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function questionBlock(q, total) {
|
|
96
|
+
const n = Number.parseInt(q.id.slice(2), 10);
|
|
97
|
+
return (`\n[${n}/${total}] ${q.id} — ${q.kind}\n` +
|
|
98
|
+
`${q.question}\n` +
|
|
99
|
+
`(asked because: ${q.context})\n` +
|
|
100
|
+
`(empty answer skips; 'q' ends the session)\n`);
|
|
101
|
+
}
|
|
102
|
+
async function runAsk(vaultRoot, questions, argv, collection, io) {
|
|
103
|
+
const answers = [];
|
|
104
|
+
try {
|
|
105
|
+
for (const q of questions) {
|
|
106
|
+
io.write(questionBlock(q, questions.length));
|
|
107
|
+
const raw = await io.ask("> ");
|
|
108
|
+
if (raw === null)
|
|
109
|
+
break; // end-of-input
|
|
110
|
+
const answer = raw.trim();
|
|
111
|
+
if (answer.length === 0)
|
|
112
|
+
continue; // skip
|
|
113
|
+
if (answer === "q" || answer === "quit")
|
|
114
|
+
break;
|
|
115
|
+
answers.push({ question: q, answer });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
io.close();
|
|
120
|
+
}
|
|
121
|
+
if (answers.length === 0) {
|
|
122
|
+
io.write("\nNo answers recorded — nothing written.\n");
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
const meta = {
|
|
126
|
+
date: new Date().toISOString().slice(0, 10),
|
|
127
|
+
by: readStringArg(argv, "--by") ?? `human:${userInfo().username}`,
|
|
128
|
+
collection,
|
|
129
|
+
};
|
|
130
|
+
const written = await writeTranscript(vaultRoot, answers, meta);
|
|
131
|
+
if (!written.ok) {
|
|
132
|
+
process.stderr.write(`daftari interview: ${written.error.message}\n`);
|
|
133
|
+
return 3;
|
|
134
|
+
}
|
|
135
|
+
const lines = [
|
|
136
|
+
`\nRecorded ${answers.length} answer${answers.length === 1 ? "" : "s"} → ${written.value.relPath}`,
|
|
137
|
+
];
|
|
138
|
+
if (written.value.commitHash)
|
|
139
|
+
lines.push(`Committed as ${written.value.commitHash}.`);
|
|
140
|
+
if (written.value.warning)
|
|
141
|
+
lines.push(`Warning: ${written.value.warning}`);
|
|
142
|
+
// Testimony is evidence, not resolution — point at the acts that remain.
|
|
143
|
+
const tensionIds = answers
|
|
144
|
+
.filter((a) => a.question.kind === "tension")
|
|
145
|
+
.map((a) => a.question.refs[0]);
|
|
146
|
+
if (tensionIds.length > 0) {
|
|
147
|
+
lines.push("");
|
|
148
|
+
lines.push("Answers touch open tensions. A ruling is still yours to make:");
|
|
149
|
+
for (const id of tensionIds) {
|
|
150
|
+
lines.push(` daftari court rule ${id} --kind <kind> --references ${written.value.relPath}`);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (answers.some((a) => a.question.kind === "stale")) {
|
|
154
|
+
lines.push("");
|
|
155
|
+
lines.push("Answers touch stale docs. The transcript does not freshen them — " +
|
|
156
|
+
"re-verify and rewrite each doc to renew its promise.");
|
|
157
|
+
}
|
|
158
|
+
io.write(`${lines.join("\n")}\n`);
|
|
159
|
+
return 0;
|
|
160
|
+
}
|
|
161
|
+
export async function runInterview(argv, io) {
|
|
162
|
+
if (argv.includes("--help") || argv.includes("-h")) {
|
|
163
|
+
process.stdout.write(HELP);
|
|
164
|
+
return 0;
|
|
165
|
+
}
|
|
166
|
+
const vaultRoot = resolve(readStringArg(argv, "--vault") ?? ".");
|
|
167
|
+
let limit;
|
|
168
|
+
const rawLimit = readStringArg(argv, "--limit");
|
|
169
|
+
if (rawLimit !== undefined) {
|
|
170
|
+
limit = Number.parseInt(rawLimit, 10);
|
|
171
|
+
if (!Number.isFinite(limit) || limit < 1) {
|
|
172
|
+
process.stderr.write(`daftari interview: --limit must be a positive integer\n`);
|
|
173
|
+
return 2;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const gathered = await gatherQuestions(vaultRoot, { limit });
|
|
177
|
+
if (!gathered.ok) {
|
|
178
|
+
process.stderr.write(`daftari interview: ${gathered.error.message}\n`);
|
|
179
|
+
return 3;
|
|
180
|
+
}
|
|
181
|
+
const questions = gathered.value;
|
|
182
|
+
if (findPositionals(argv)[0] === "ask") {
|
|
183
|
+
// Validated before a single question is put to the principal: the
|
|
184
|
+
// collection lands in both the transcript's frontmatter and its on-disk
|
|
185
|
+
// path, so a bad flag must fail here, not after the testimony is given.
|
|
186
|
+
const collection = readStringArg(argv, "--collection") ?? DEFAULT_INTERVIEW_COLLECTION;
|
|
187
|
+
if (!isValidCollectionName(collection)) {
|
|
188
|
+
process.stderr.write("daftari interview: --collection must be a single path segment " +
|
|
189
|
+
"(letters, digits, '-', '_') and not a reserved name like node_modules\n");
|
|
190
|
+
return 2;
|
|
191
|
+
}
|
|
192
|
+
if (questions.length === 0) {
|
|
193
|
+
process.stdout.write("Nothing is unclear: no open tensions, no expired canon, no unanswered questions_raised.\n");
|
|
194
|
+
return 0;
|
|
195
|
+
}
|
|
196
|
+
return runAsk(vaultRoot, questions, argv, collection, io ?? terminalIo());
|
|
197
|
+
}
|
|
198
|
+
const sheet = renderSheet(questions, new Date().toISOString().slice(0, 10));
|
|
199
|
+
const outputMd = readStringArg(argv, "--output");
|
|
200
|
+
const outputJson = readStringArg(argv, "--output-json");
|
|
201
|
+
try {
|
|
202
|
+
if (outputMd) {
|
|
203
|
+
await writeFile(resolve(outputMd), sheet, "utf-8");
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
process.stdout.write(sheet);
|
|
207
|
+
}
|
|
208
|
+
if (outputJson) {
|
|
209
|
+
await writeFile(resolve(outputJson), `${JSON.stringify(questions, null, 2)}\n`, "utf-8");
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
catch (e) {
|
|
213
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
214
|
+
process.stderr.write(`daftari interview: write failed: ${reason}\n`);
|
|
215
|
+
return 3;
|
|
216
|
+
}
|
|
217
|
+
return 0;
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/interview/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
export declare const QUESTION_KINDS: readonly ["tension", "stale", "open_question"];
|
|
3
|
+
export type QuestionKind = (typeof QUESTION_KINDS)[number];
|
|
4
|
+
export interface InterviewQuestion {
|
|
5
|
+
id: string;
|
|
6
|
+
kind: QuestionKind;
|
|
7
|
+
question: string;
|
|
8
|
+
context: string;
|
|
9
|
+
refs: string[];
|
|
10
|
+
}
|
|
11
|
+
export declare function normalizeQuestion(q: string): string;
|
|
12
|
+
export interface GatherOptions {
|
|
13
|
+
now?: Date;
|
|
14
|
+
limit?: number;
|
|
15
|
+
}
|
|
16
|
+
export declare function gatherQuestions(vaultRoot: string, opts?: GatherOptions): Promise<Result<InterviewQuestion[], Error>>;
|
|
17
|
+
export declare function renderSheet(questions: InterviewQuestion[], generatedAt: string): string;
|
|
18
|
+
//# sourceMappingURL=questions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/interview/questions.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAM,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAE1D,eAAO,MAAM,cAAc,gDAAiD,CAAC;AAC7E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AASD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAsGD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAKD,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,KAAK,CAAC,CAAC,CAgB7C;AAID,wBAAgB,WAAW,CAAC,SAAS,EAAE,iBAAiB,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAmBvF"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
// Interview questions — the deterministic half of `daftari interview`.
|
|
2
|
+
//
|
|
3
|
+
// The design steal is the companion interview on a "living summary" page:
|
|
4
|
+
// after an assistant compiles a corpus of someone's positions, its highest-
|
|
5
|
+
// value next move is not more compilation — it is to ask the principal about
|
|
6
|
+
// the places the corpus is unclear, and fold the verbatim answers back in as
|
|
7
|
+
// first-class source material.
|
|
8
|
+
//
|
|
9
|
+
// Daftari already computes "unclear" three ways, so the sheet is assembled
|
|
10
|
+
// from existing signals and costs nothing:
|
|
11
|
+
//
|
|
12
|
+
// tension — two docs disagree and neither superseded the other
|
|
13
|
+
// stale — a canonical accumulation doc has outlived its ttl_days
|
|
14
|
+
// open_question — a questions_raised entry no doc's questions_answered
|
|
15
|
+
// covers
|
|
16
|
+
//
|
|
17
|
+
// LLM-FREE by design (the circadian precedent from `daftari sleep`): no flag
|
|
18
|
+
// on this surface can spend. This module is operator-only and takes no access
|
|
19
|
+
// context — the court convention; see the 2026-07-25 design spec.
|
|
20
|
+
import { computeStaleness } from "../curation/staleness.js";
|
|
21
|
+
import { agingTier, listTensions } from "../curation/tension.js";
|
|
22
|
+
import { loadDocuments } from "../curation/vault-docs.js";
|
|
23
|
+
import { ok } from "../frontmatter/types.js";
|
|
24
|
+
export const QUESTION_KINDS = ["tension", "stale", "open_question"];
|
|
25
|
+
// Statuses whose questions_raised no longer count as open: the doc has been
|
|
26
|
+
// retired, and its curiosity retired with it. Its questions_answered still
|
|
27
|
+
// count — an answer recorded anywhere stays an answer.
|
|
28
|
+
const RETIRED_STATUSES = new Set(["deprecated", "superseded", "archived"]);
|
|
29
|
+
// Whitespace/case normalization for matching a raised question against the
|
|
30
|
+
// vault's answered set. Exact semantics stay deterministic — no fuzzy match.
|
|
31
|
+
export function normalizeQuestion(q) {
|
|
32
|
+
return q.trim().replace(/\s+/g, " ").toLowerCase();
|
|
33
|
+
}
|
|
34
|
+
// Aging-tier priority for tension questions: the disputes the vault has
|
|
35
|
+
// carried longest are asked first. Unresolved entries never tier to null
|
|
36
|
+
// (that carve-out is for accepted resolutions), but rank it last defensively.
|
|
37
|
+
const TIER_RANK = { stale: 0, aging: 1, fresh: 2 };
|
|
38
|
+
function tensionQuestions(entries, now) {
|
|
39
|
+
const open = entries.filter((e) => !e.resolved &&
|
|
40
|
+
e.id !== undefined &&
|
|
41
|
+
// Legacy `unspecified` entries cannot be ruled through the tools, and
|
|
42
|
+
// `inter-proposal` conflicts close through vault_ratify, not testimony.
|
|
43
|
+
e.kind !== "unspecified" &&
|
|
44
|
+
e.kind !== "inter-proposal");
|
|
45
|
+
open.sort((a, b) => {
|
|
46
|
+
const tierA = TIER_RANK[agingTier(a, now) ?? ""] ?? 3;
|
|
47
|
+
const tierB = TIER_RANK[agingTier(b, now) ?? ""] ?? 3;
|
|
48
|
+
if (tierA !== tierB)
|
|
49
|
+
return tierA - tierB;
|
|
50
|
+
return a.date.localeCompare(b.date);
|
|
51
|
+
});
|
|
52
|
+
return open.map((e) => ({
|
|
53
|
+
id: "", // assigned after the kinds are concatenated
|
|
54
|
+
kind: "tension",
|
|
55
|
+
question: `Two documents disagree (${e.kind}): ${e.sourceA} says "${e.claimA}" ` +
|
|
56
|
+
`while ${e.sourceB} says "${e.claimB}". Which claim reflects your ` +
|
|
57
|
+
`current position — or do both stand?`,
|
|
58
|
+
context: `open tension ${e.id} (${agingTier(e, now) ?? "unaged"}), logged ${e.date}`,
|
|
59
|
+
refs: [e.id, e.sourceA, e.sourceB],
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
function staleQuestions(docs, now) {
|
|
63
|
+
const candidates = [];
|
|
64
|
+
for (const doc of docs) {
|
|
65
|
+
const fm = doc.frontmatter;
|
|
66
|
+
// Sleep's domain split: generative docs going stale is expected — never
|
|
67
|
+
// asked about. Only canonical accumulation docs made a freshness promise.
|
|
68
|
+
if (fm.domain !== "accumulation" || fm.status !== "canonical")
|
|
69
|
+
continue;
|
|
70
|
+
const staleness = computeStaleness({ updated: fm.updated, ttl_days: fm.ttl_days }, now);
|
|
71
|
+
if (!staleness.expired || staleness.ttlDays === null)
|
|
72
|
+
continue;
|
|
73
|
+
candidates.push({
|
|
74
|
+
doc,
|
|
75
|
+
overshootDays: staleness.ageDays - staleness.ttlDays,
|
|
76
|
+
ttlDays: staleness.ttlDays,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
candidates.sort((a, b) => b.overshootDays - a.overshootDays || a.doc.path.localeCompare(b.doc.path));
|
|
80
|
+
return candidates.map(({ doc, overshootDays, ttlDays }) => ({
|
|
81
|
+
id: "",
|
|
82
|
+
kind: "stale",
|
|
83
|
+
question: `"${doc.frontmatter.title}" (${doc.path}) is ${overshootDays} days past ` +
|
|
84
|
+
`its ${ttlDays}-day freshness window. Is it still accurate — and if ` +
|
|
85
|
+
`not, what changed?`,
|
|
86
|
+
context: `stale: updated ${doc.frontmatter.updated}, ttl ${ttlDays} days`,
|
|
87
|
+
refs: [doc.path],
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
function openQuestions(docs) {
|
|
91
|
+
// An answer recorded anywhere counts, whatever the answering doc's status.
|
|
92
|
+
const answered = new Set();
|
|
93
|
+
for (const doc of docs) {
|
|
94
|
+
for (const q of doc.frontmatter.questions_answered) {
|
|
95
|
+
answered.add(normalizeQuestion(q));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Duplicate raisings merge into one question with every raising doc as a
|
|
99
|
+
// ref. Insertion order over the sorted file walk keeps the sheet stable.
|
|
100
|
+
const raised = new Map();
|
|
101
|
+
for (const doc of docs) {
|
|
102
|
+
if (RETIRED_STATUSES.has(doc.frontmatter.status))
|
|
103
|
+
continue;
|
|
104
|
+
for (const q of doc.frontmatter.questions_raised) {
|
|
105
|
+
const norm = normalizeQuestion(q);
|
|
106
|
+
if (norm.length === 0 || answered.has(norm))
|
|
107
|
+
continue;
|
|
108
|
+
const existing = raised.get(norm);
|
|
109
|
+
if (existing) {
|
|
110
|
+
if (!existing.refs.includes(doc.path))
|
|
111
|
+
existing.refs.push(doc.path);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
raised.set(norm, { text: q.trim(), refs: [doc.path] });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return [...raised.values()].map(({ text, refs }) => ({
|
|
119
|
+
id: "",
|
|
120
|
+
kind: "open_question",
|
|
121
|
+
question: `An open question no document answers: "${text}" (raised by ` +
|
|
122
|
+
`${refs.join(", ")}). What is your current answer — even a partial one?`,
|
|
123
|
+
context: `questions_raised with no matching questions_answered anywhere in the vault`,
|
|
124
|
+
refs,
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
// Assembles the priority-ordered question sheet: contested first (the vault
|
|
128
|
+
// is actively carrying a disagreement), then broken freshness promises, then
|
|
129
|
+
// open curiosity.
|
|
130
|
+
export async function gatherQuestions(vaultRoot, opts = {}) {
|
|
131
|
+
const now = opts.now ?? new Date();
|
|
132
|
+
const tensions = await listTensions(vaultRoot);
|
|
133
|
+
if (!tensions.ok)
|
|
134
|
+
return tensions;
|
|
135
|
+
const docs = await loadDocuments(vaultRoot);
|
|
136
|
+
if (!docs.ok)
|
|
137
|
+
return docs;
|
|
138
|
+
let questions = [
|
|
139
|
+
...tensionQuestions(tensions.value, now),
|
|
140
|
+
...staleQuestions(docs.value, now),
|
|
141
|
+
...openQuestions(docs.value),
|
|
142
|
+
];
|
|
143
|
+
if (opts.limit !== undefined)
|
|
144
|
+
questions = questions.slice(0, opts.limit);
|
|
145
|
+
return ok(questions.map((q, i) => ({ ...q, id: `q-${String(i + 1).padStart(3, "0")}` })));
|
|
146
|
+
}
|
|
147
|
+
// The read-only sheet, as markdown. Printed by the default `daftari
|
|
148
|
+
// interview` invocation (court convention: the default surface never writes).
|
|
149
|
+
export function renderSheet(questions, generatedAt) {
|
|
150
|
+
const lines = [
|
|
151
|
+
`# Interview sheet — ${generatedAt}`,
|
|
152
|
+
"",
|
|
153
|
+
`${questions.length} question${questions.length === 1 ? "" : "s"}. ` +
|
|
154
|
+
`Order: contested first, then stale canon, then open questions. ` +
|
|
155
|
+
`Answer them with \`daftari interview ask\`.`,
|
|
156
|
+
"",
|
|
157
|
+
];
|
|
158
|
+
for (const q of questions) {
|
|
159
|
+
lines.push(`## ${q.id} — ${q.kind}`);
|
|
160
|
+
lines.push("");
|
|
161
|
+
lines.push(q.question);
|
|
162
|
+
lines.push("");
|
|
163
|
+
lines.push(`- **Asked because:** ${q.context}`);
|
|
164
|
+
lines.push(`- **Refs:** ${q.refs.join(", ")}`);
|
|
165
|
+
lines.push("");
|
|
166
|
+
}
|
|
167
|
+
return lines.join("\n");
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/interview/questions.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,6EAA6E;AAC7E,+BAA+B;AAC/B,EAAE;AACF,2EAA2E;AAC3E,2CAA2C;AAC3C,EAAE;AACF,wEAAwE;AACxE,4EAA4E;AAC5E,0EAA0E;AAC1E,4BAA4B;AAC5B,EAAE;AACF,6EAA6E;AAC7E,8EAA8E;AAC9E,kEAAkE;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,YAAY,EAAqB,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAAkB,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,EAAE,EAAe,MAAM,yBAAyB,CAAC;AAE1D,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,eAAe,CAAU,CAAC;AAW7E,4EAA4E;AAC5E,2EAA2E;AAC3E,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC;AAE3E,2EAA2E;AAC3E,6EAA6E;AAC7E,MAAM,UAAU,iBAAiB,CAAC,CAAS;IACzC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;AACrD,CAAC;AAED,wEAAwE;AACxE,yEAAyE;AACzE,8EAA8E;AAC9E,MAAM,SAAS,GAA2B,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE3E,SAAS,gBAAgB,CAAC,OAAuB,EAAE,GAAS;IAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CACzB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,CAAC,QAAQ;QACX,CAAC,CAAC,EAAE,KAAK,SAAS;QAClB,sEAAsE;QACtE,wEAAwE;QACxE,CAAC,CAAC,IAAI,KAAK,aAAa;QACxB,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAC9B,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,KAAK,KAAK,KAAK;YAAE,OAAO,KAAK,GAAG,KAAK,CAAC;QAC1C,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACtB,EAAE,EAAE,EAAE,EAAE,4CAA4C;QACpD,IAAI,EAAE,SAAkB;QACxB,QAAQ,EACN,2BAA2B,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,IAAI;YACtE,SAAS,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,+BAA+B;YACnE,sCAAsC;QACxC,OAAO,EAAE,gBAAgB,CAAC,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,aAAa,CAAC,CAAC,IAAI,EAAE;QACpF,IAAI,EAAE,CAAC,CAAC,CAAC,EAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC;KAC7C,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,cAAc,CAAC,IAAiB,EAAE,GAAS;IAClD,MAAM,UAAU,GAAiE,EAAE,CAAC;IACpF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC;QAC3B,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,EAAE,CAAC,MAAM,KAAK,cAAc,IAAI,EAAE,CAAC,MAAM,KAAK,WAAW;YAAE,SAAS;QACxE,MAAM,SAAS,GAAG,gBAAgB,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;QACxF,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/D,UAAU,CAAC,IAAI,CAAC;YACd,GAAG;YACH,aAAa,EAAE,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO;YACpD,OAAO,EAAE,SAAS,CAAC,OAAO;SAC3B,CAAC,CAAC;IACL,CAAC;IACD,UAAU,CAAC,IAAI,CACb,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CACpF,CAAC;IACF,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1D,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,OAAgB;QACtB,QAAQ,EACN,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,MAAM,GAAG,CAAC,IAAI,QAAQ,aAAa,aAAa;YACzE,OAAO,OAAO,uDAAuD;YACrE,oBAAoB;QACtB,OAAO,EAAE,kBAAkB,GAAG,CAAC,WAAW,CAAC,OAAO,SAAS,OAAO,OAAO;QACzE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;KACjB,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB;IACtC,2EAA2E;IAC3E,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;YACnD,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4C,CAAC;IACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YAAE,SAAS;QAC3D,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACjD,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACtD,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,eAAwB;QAC9B,QAAQ,EACN,0CAA0C,IAAI,eAAe;YAC7D,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD;QAC1E,OAAO,EAAE,4EAA4E;QACrF,IAAI;KACL,CAAC,CAAC,CAAC;AACN,CAAC;AAOD,4EAA4E;AAC5E,6EAA6E;AAC7E,kBAAkB;AAClB,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,OAAsB,EAAE;IAExB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAE1B,IAAI,SAAS,GAAG;QACd,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC;QACxC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC;QAClC,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;KAC7B,CAAC;IACF,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAEzE,OAAO,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5F,CAAC;AAED,oEAAoE;AACpE,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,SAA8B,EAAE,WAAmB;IAC7E,MAAM,KAAK,GAAG;QACZ,uBAAuB,WAAW,EAAE;QACpC,EAAE;QACF,GAAG,SAAS,CAAC,MAAM,YAAY,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI;YAClE,iEAAiE;YACjE,6CAA6C;QAC/C,EAAE;KACH,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|