obsidian-tc 1.14.1 → 1.14.2

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/README.md CHANGED
@@ -9,7 +9,7 @@ See the [repo root README](../../README.md) for project overview and the
9
9
 
10
10
  ## Status
11
11
 
12
- ✅ **Shipped — v1.14.1.** The full tool surface (152 tools across 31 domains, milestones
12
+ ✅ **Shipped — v1.14.2.** The full tool surface (152 tools across 31 domains, milestones
13
13
  M0–M7) is implemented and released. Built on Bun + Hono with Zod 4 schemas; runs under
14
14
  Node `>=24` (the test suite runs vitest under Node for `node:sqlite`).
15
15
 
package/dist/cli.js CHANGED
@@ -642,7 +642,7 @@ Usage:
642
642
  If no path is given, OBSIDIAN_TC_CONFIG is used. A vault folder boots a single
643
643
  vault with id "main" and all defaults; pass a config file for multi-vault, auth,
644
644
  ACLs, transports, and embeddings.
645
- `;class I$ extends Error{cli=!0}function Z6($){return $.find((X)=>!X.startsWith("-"))}function c0($,X){let J=$.indexOf(X);if(J<0)return;let W=$[J+1];if(W===void 0||W.startsWith("-"))throw new I$(`${X} requires a value`);return W}function Qx($){try{let[X,...J]=$;if(X===void 0)return{kind:"serve"};if(X==="version"||X==="--version"||X==="-v")return{kind:"version"};if(X==="help"||X==="--help"||X==="-h")return{kind:"help"};if(X==="serve")return{kind:"serve",input:c0(J,"--config")??Z6(J)};if(X==="token"){let W=J[0];if(W!=="mint")throw new I$(`unknown token subcommand: ${W??"(none)"}`);let Q=J.slice(1),G=["--sub","--aud","--vault","--scopes","--ttl","--config"],Y=Q.filter((B,F)=>{if(B==="--json"||G.includes(B))return!1;let L=Q[F-1];return!(F>0&&L!==void 0&&G.includes(L))}),Z=c0(Q,"--ttl"),U=Z===void 0?void 0:Number(Z);if(U!==void 0&&!Number.isFinite(U))throw new I$(`--ttl must be a number of seconds, got: ${Z}`);if(c0(Q,"--sub")===void 0)throw new I$("token mint requires --sub (the caller identity)");let K=c0(Q,"--config")??Z6(Y);return{kind:"token-mint",...K!==void 0?{configPath:K}:{},...c0(Q,"--sub")!==void 0?{sub:c0(Q,"--sub")}:{},...c0(Q,"--aud")!==void 0?{aud:c0(Q,"--aud")}:{},...c0(Q,"--vault")!==void 0?{vault:c0(Q,"--vault")}:{},...Q.includes("--scopes")?{scopes:Q[Q.indexOf("--scopes")+1]??""}:{},...U!==void 0?{ttl:U}:{},json:Q.includes("--json")}}if(X==="config"){let W=J[0],Q=c0(J,"--config")??Z6(J.slice(1));if(W==="show")return{kind:"config-show",configPath:Q};if(W==="validate")return{kind:"config-validate",configPath:Q};if(W==="explain"){let G=J.slice(1);for(let U of["--source","--config"]){let K=G.indexOf(U);if(K>=0)G.splice(K,2)}let Y=c0(J,"--source"),Z=["env","file","profile","default","derived"];if(Y!==void 0&&!Z.includes(Y))return{kind:"error",message:`--source must be one of ${Z.join("|")}`};return{kind:"config-explain",configPath:c0(J,"--config")??Z6(G.filter((U)=>U!=="--json")),json:J.includes("--json"),...Y!==void 0?{source:Y}:{}}}return{kind:"error",message:`unknown config subcommand: ${W??"(none)"}`}}if(X==="doctor"){let W=J.includes("--json"),Q=c0(J,"--token"),G=J.includes("--probe"),Y=J.filter((U,K)=>{if(U==="--json")return!1;if(U==="--probe")return!1;if(U==="--token")return!1;if(K>0&&J[K-1]==="--token")return!1;return!0}),Z=c0(Y,"--config")??Z6(Y);return{kind:"doctor",...Z!==void 0?{configPath:Z}:{},json:W,probe:G,...Q!==void 0?{token:Q}:{}}}if(X==="plugin"){let W=J[0];if(W==="install"){let Q=c0(J,"--vault")??Z6(J.slice(1));if(!Q)throw new I$("plugin install requires a vault: --vault <path> (or a positional path)");return{kind:"plugin-install",vaultPath:Q}}return{kind:"error",message:`unknown plugin subcommand: ${W??"(none)"}`}}if(X==="cluster"){let W,Q=J,G=J.indexOf("--k");if(G>=0){let Y=J[G+1];if(Y===void 0||Y.startsWith("-"))throw new I$("--k requires a value");if(W=Number.parseInt(Y,10),!Number.isFinite(W)||W<1)return{kind:"error",message:"--k must be a positive integer"};Q=J.filter((Z,U)=>U!==G&&U!==G+1)}return{kind:"cluster",input:c0(Q,"--config")??Z6(Q),k:W}}if(X==="activation-recompute")return{kind:"activation-recompute",input:c0(J,"--config")??Z6(J)};if(X==="index"){let W=[...J];for(let Z of["--vault","--folder","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--config")??Z6(W),G=c0(J,"--vault"),Y=c0(J,"--folder");return{kind:"index",...Q!==void 0?{input:Q}:{},...G!==void 0?{vault:G}:{},...Y!==void 0?{folder:Y}:{}}}if(X==="densify-llm"){let W=[...J];for(let G of["--vault","--config","--batch-size","--confidence-floor"]){let Y=W.indexOf(G);if(Y>=0)W.splice(Y,2)}let Q=c0(J,"--vault");return{kind:"densify-llm",input:c0(J,"--config")??Z6(W),...Q!==void 0?{vault:Q}:{}}}if(X==="citation-infer"){let W=(L)=>{let A=c0(J,L);if(A===void 0)return;let D=Number(A);if(!Number.isFinite(D))throw new I$(`${L} must be a number`);return D},Q=[...J];for(let L of["--session","--since","--until","--transcript","--max-judged","--config"]){let A=Q.indexOf(L);if(A>=0)Q.splice(A,2)}let G=c0(J,"--session"),Y=W("--since"),Z=W("--until"),U=c0(J,"--transcript"),K=c0(J,"--max-judged"),B;if(K!==void 0){if(B=Number.parseInt(K,10),!Number.isFinite(B)||B<0)return{kind:"error",message:"--max-judged must be a non-negative integer"}}let F=J.includes("--allow-uncertain");return{kind:"citation-infer",input:c0(J,"--config")??Z6(Q),...G!==void 0?{session:G}:{},...Y!==void 0?{since:Y}:{},...Z!==void 0?{until:Z}:{},...U!==void 0?{transcript:U}:{},...F?{allowUncertain:F}:{},...B!==void 0?{maxJudged:B}:{}}}if(X==="contribution-report"){let W=(U)=>{let K=c0(J,U);if(K===void 0)return;let B=Number(K);if(!Number.isFinite(B))throw new I$(`${U} must be a number`);return B},Q=[...J];for(let U of["--since","--until","--json","--config"]){let K=Q.indexOf(U);if(K>=0)Q.splice(K,2)}let G=W("--since"),Y=W("--until"),Z=c0(J,"--json");return{kind:"contribution-report",input:c0(J,"--config")??Z6(Q),...G!==void 0?{since:G}:{},...Y!==void 0?{until:Y}:{},...Z!==void 0?{json:Z}:{}}}if(X==="note-quality"){let W=[...J];for(let K of["--vault","--flags","--limit","--config"]){let B=W.indexOf(K);if(B>=0)W.splice(B,2)}let Q=c0(J,"--limit"),G=Q===void 0?void 0:Number(Q);if(G!==void 0&&(!Number.isFinite(G)||G<=0))throw new I$("--limit must be a positive number");let Z=c0(J,"--flags")?.split(",").map((K)=>K.trim()).filter(Boolean),U=c0(J,"--vault");return{kind:"note-quality",input:c0(J,"--config")??Z6(W),...U!==void 0?{vault:U}:{},...Z&&Z.length>0?{flags:Z}:{},...G!==void 0?{limit:G}:{}}}if(X==="forget"){let W=[...J].filter((Z)=>Z!=="--erase"&&Z!=="--verify");for(let Z of["--episode","--note","--vault","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--episode"),G=c0(J,"--note"),Y=c0(J,"--vault");return{kind:"forget",input:c0(J,"--config")??Z6(W),...Q!==void 0?{episode:Q}:{},...G!==void 0?{note:G}:{},...Y!==void 0?{vault:Y}:{},...J.includes("--erase")?{erase:!0}:{},...J.includes("--verify")?{verify:!0}:{}}}if(X==="gaps"){let W=(F)=>{let L=c0(J,F);if(L===void 0)return;let A=Number(L);if(!Number.isFinite(A))throw new I$(`${F} must be a number`);return A},Q=[...J];for(let F of["--vault","--queries","--threshold","--min-results","--json","--calibrate","--config"]){let L=Q.indexOf(F);if(L>=0)Q.splice(L,2)}let G=c0(J,"--vault"),Y=c0(J,"--queries"),Z=W("--threshold"),U=W("--min-results"),K=c0(J,"--json"),B=c0(J,"--calibrate");return{kind:"gaps",input:c0(J,"--config")??Z6(Q),...G!==void 0?{vault:G}:{},...Y!==void 0?{queries:Y}:{},...Z!==void 0?{threshold:Z}:{},...U!==void 0?{minResults:U}:{},...K!==void 0?{json:K}:{},...B!==void 0?{calibrate:B}:{}}}if(X==="metrics"){let W=(B)=>{let F=c0(J,B);if(F===void 0)return;let L=Number(F);if(!Number.isFinite(L))throw new I$(`${B} must be a number`);return L},Q=[...J];for(let B of["--vault","--since","--until","--stale-days","--json","--config"]){let F=Q.indexOf(B);if(F>=0)Q.splice(F,2)}let G=c0(J,"--vault"),Y=W("--since"),Z=W("--until"),U=W("--stale-days"),K=c0(J,"--json");return{kind:"metrics",input:c0(J,"--config")??Z6(Q),...G!==void 0?{vault:G}:{},...Y!==void 0?{since:Y}:{},...Z!==void 0?{until:Z}:{},...U!==void 0?{staleDays:U}:{},...K!==void 0?{json:K}:{}}}if(X==="reflect"){let W=[...J];for(let Y of["--max-judged","--config"]){let Z=W.indexOf(Y);if(Z>=0)W.splice(Z,2)}let Q=c0(J,"--max-judged"),G;if(Q!==void 0){if(G=Number.parseInt(Q,10),!Number.isFinite(G)||G<0)return{kind:"error",message:"--max-judged must be a non-negative integer"}}return{kind:"reflect",input:c0(J,"--config")??Z6(W),...G!==void 0?{maxJudged:G}:{}}}if(X==="prefetch"){let W=[...J];for(let Z of["--vault","--ttl-hours","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--vault"),G=c0(J,"--ttl-hours"),Y;if(G!==void 0){if(Y=Number(G),!Number.isFinite(Y)||Y<=0)return{kind:"error",message:"--ttl-hours must be a positive number"}}return{kind:"prefetch",input:c0(J,"--config")??Z6(W),...Q!==void 0?{vault:Q}:{},...Y!==void 0?{ttlHours:Y}:{}}}if(X.startsWith("-"))return{kind:"error",message:`unknown option: ${X}`};return{kind:"serve",input:X}}catch(X){if(X instanceof I$)return{kind:"error",message:X.message};throw X}}function jj0($){return GW({vaults:[{id:"main",path:Vj0($)}]})}function Wx($){let X=$??process.env.OBSIDIAN_TC_CONFIG;if(!X)throw new I$("no vault or config given: pass a vault folder or a config.json (or set OBSIDIAN_TC_CONFIG).");let J;try{J=Nj0(X)}catch{throw new I$(`no such vault folder or config file: ${X}`)}return J.isDirectory()?jj0(X):hK(X)}var Oj0=/(secret|token|password|key)$/i,Ij0=/^(authorization|proxy-authorization|cookie|set-cookie|x-api-key|x-auth-token|api-key)$/i;function mK($){if(Array.isArray($))return $.map(mK);if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=typeof W==="string"&&W.length>0&&(Oj0.test(J)||Ij0.test(J))?"<redacted>":mK(W);return X}return $}import{mkdirSync as hj0}from"node:fs";var q$="1.14.1";import{join as fj0}from"node:path";import{createHash as Mj0}from"node:crypto";function Ej0($){return Mj0("sha256").update($,"utf8").digest("hex")}function Rj0($){$.exec(`CREATE TABLE IF NOT EXISTS schema_migrations (
645
+ `;class I$ extends Error{cli=!0}function Z6($){return $.find((X)=>!X.startsWith("-"))}function c0($,X){let J=$.indexOf(X);if(J<0)return;let W=$[J+1];if(W===void 0||W.startsWith("-"))throw new I$(`${X} requires a value`);return W}function Qx($){try{let[X,...J]=$;if(X===void 0)return{kind:"serve"};if(X==="version"||X==="--version"||X==="-v")return{kind:"version"};if(X==="help"||X==="--help"||X==="-h")return{kind:"help"};if(X==="serve")return{kind:"serve",input:c0(J,"--config")??Z6(J)};if(X==="token"){let W=J[0];if(W!=="mint")throw new I$(`unknown token subcommand: ${W??"(none)"}`);let Q=J.slice(1),G=["--sub","--aud","--vault","--scopes","--ttl","--config"],Y=Q.filter((B,F)=>{if(B==="--json"||G.includes(B))return!1;let L=Q[F-1];return!(F>0&&L!==void 0&&G.includes(L))}),Z=c0(Q,"--ttl"),U=Z===void 0?void 0:Number(Z);if(U!==void 0&&!Number.isFinite(U))throw new I$(`--ttl must be a number of seconds, got: ${Z}`);if(c0(Q,"--sub")===void 0)throw new I$("token mint requires --sub (the caller identity)");let K=c0(Q,"--config")??Z6(Y);return{kind:"token-mint",...K!==void 0?{configPath:K}:{},...c0(Q,"--sub")!==void 0?{sub:c0(Q,"--sub")}:{},...c0(Q,"--aud")!==void 0?{aud:c0(Q,"--aud")}:{},...c0(Q,"--vault")!==void 0?{vault:c0(Q,"--vault")}:{},...Q.includes("--scopes")?{scopes:Q[Q.indexOf("--scopes")+1]??""}:{},...U!==void 0?{ttl:U}:{},json:Q.includes("--json")}}if(X==="config"){let W=J[0],Q=c0(J,"--config")??Z6(J.slice(1));if(W==="show")return{kind:"config-show",configPath:Q};if(W==="validate")return{kind:"config-validate",configPath:Q};if(W==="explain"){let G=J.slice(1);for(let U of["--source","--config"]){let K=G.indexOf(U);if(K>=0)G.splice(K,2)}let Y=c0(J,"--source"),Z=["env","file","profile","default","derived"];if(Y!==void 0&&!Z.includes(Y))return{kind:"error",message:`--source must be one of ${Z.join("|")}`};return{kind:"config-explain",configPath:c0(J,"--config")??Z6(G.filter((U)=>U!=="--json")),json:J.includes("--json"),...Y!==void 0?{source:Y}:{}}}return{kind:"error",message:`unknown config subcommand: ${W??"(none)"}`}}if(X==="doctor"){let W=J.includes("--json"),Q=c0(J,"--token"),G=J.includes("--probe"),Y=J.filter((U,K)=>{if(U==="--json")return!1;if(U==="--probe")return!1;if(U==="--token")return!1;if(K>0&&J[K-1]==="--token")return!1;return!0}),Z=c0(Y,"--config")??Z6(Y);return{kind:"doctor",...Z!==void 0?{configPath:Z}:{},json:W,probe:G,...Q!==void 0?{token:Q}:{}}}if(X==="plugin"){let W=J[0];if(W==="install"){let Q=c0(J,"--vault")??Z6(J.slice(1));if(!Q)throw new I$("plugin install requires a vault: --vault <path> (or a positional path)");return{kind:"plugin-install",vaultPath:Q}}return{kind:"error",message:`unknown plugin subcommand: ${W??"(none)"}`}}if(X==="cluster"){let W,Q=J,G=J.indexOf("--k");if(G>=0){let Y=J[G+1];if(Y===void 0||Y.startsWith("-"))throw new I$("--k requires a value");if(W=Number.parseInt(Y,10),!Number.isFinite(W)||W<1)return{kind:"error",message:"--k must be a positive integer"};Q=J.filter((Z,U)=>U!==G&&U!==G+1)}return{kind:"cluster",input:c0(Q,"--config")??Z6(Q),k:W}}if(X==="activation-recompute")return{kind:"activation-recompute",input:c0(J,"--config")??Z6(J)};if(X==="index"){let W=[...J];for(let Z of["--vault","--folder","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--config")??Z6(W),G=c0(J,"--vault"),Y=c0(J,"--folder");return{kind:"index",...Q!==void 0?{input:Q}:{},...G!==void 0?{vault:G}:{},...Y!==void 0?{folder:Y}:{}}}if(X==="densify-llm"){let W=[...J];for(let G of["--vault","--config","--batch-size","--confidence-floor"]){let Y=W.indexOf(G);if(Y>=0)W.splice(Y,2)}let Q=c0(J,"--vault");return{kind:"densify-llm",input:c0(J,"--config")??Z6(W),...Q!==void 0?{vault:Q}:{}}}if(X==="citation-infer"){let W=(L)=>{let A=c0(J,L);if(A===void 0)return;let D=Number(A);if(!Number.isFinite(D))throw new I$(`${L} must be a number`);return D},Q=[...J];for(let L of["--session","--since","--until","--transcript","--max-judged","--config"]){let A=Q.indexOf(L);if(A>=0)Q.splice(A,2)}let G=c0(J,"--session"),Y=W("--since"),Z=W("--until"),U=c0(J,"--transcript"),K=c0(J,"--max-judged"),B;if(K!==void 0){if(B=Number.parseInt(K,10),!Number.isFinite(B)||B<0)return{kind:"error",message:"--max-judged must be a non-negative integer"}}let F=J.includes("--allow-uncertain");return{kind:"citation-infer",input:c0(J,"--config")??Z6(Q),...G!==void 0?{session:G}:{},...Y!==void 0?{since:Y}:{},...Z!==void 0?{until:Z}:{},...U!==void 0?{transcript:U}:{},...F?{allowUncertain:F}:{},...B!==void 0?{maxJudged:B}:{}}}if(X==="contribution-report"){let W=(U)=>{let K=c0(J,U);if(K===void 0)return;let B=Number(K);if(!Number.isFinite(B))throw new I$(`${U} must be a number`);return B},Q=[...J];for(let U of["--since","--until","--json","--config"]){let K=Q.indexOf(U);if(K>=0)Q.splice(K,2)}let G=W("--since"),Y=W("--until"),Z=c0(J,"--json");return{kind:"contribution-report",input:c0(J,"--config")??Z6(Q),...G!==void 0?{since:G}:{},...Y!==void 0?{until:Y}:{},...Z!==void 0?{json:Z}:{}}}if(X==="note-quality"){let W=[...J];for(let K of["--vault","--flags","--limit","--config"]){let B=W.indexOf(K);if(B>=0)W.splice(B,2)}let Q=c0(J,"--limit"),G=Q===void 0?void 0:Number(Q);if(G!==void 0&&(!Number.isFinite(G)||G<=0))throw new I$("--limit must be a positive number");let Z=c0(J,"--flags")?.split(",").map((K)=>K.trim()).filter(Boolean),U=c0(J,"--vault");return{kind:"note-quality",input:c0(J,"--config")??Z6(W),...U!==void 0?{vault:U}:{},...Z&&Z.length>0?{flags:Z}:{},...G!==void 0?{limit:G}:{}}}if(X==="forget"){let W=[...J].filter((Z)=>Z!=="--erase"&&Z!=="--verify");for(let Z of["--episode","--note","--vault","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--episode"),G=c0(J,"--note"),Y=c0(J,"--vault");return{kind:"forget",input:c0(J,"--config")??Z6(W),...Q!==void 0?{episode:Q}:{},...G!==void 0?{note:G}:{},...Y!==void 0?{vault:Y}:{},...J.includes("--erase")?{erase:!0}:{},...J.includes("--verify")?{verify:!0}:{}}}if(X==="gaps"){let W=(F)=>{let L=c0(J,F);if(L===void 0)return;let A=Number(L);if(!Number.isFinite(A))throw new I$(`${F} must be a number`);return A},Q=[...J];for(let F of["--vault","--queries","--threshold","--min-results","--json","--calibrate","--config"]){let L=Q.indexOf(F);if(L>=0)Q.splice(L,2)}let G=c0(J,"--vault"),Y=c0(J,"--queries"),Z=W("--threshold"),U=W("--min-results"),K=c0(J,"--json"),B=c0(J,"--calibrate");return{kind:"gaps",input:c0(J,"--config")??Z6(Q),...G!==void 0?{vault:G}:{},...Y!==void 0?{queries:Y}:{},...Z!==void 0?{threshold:Z}:{},...U!==void 0?{minResults:U}:{},...K!==void 0?{json:K}:{},...B!==void 0?{calibrate:B}:{}}}if(X==="metrics"){let W=(B)=>{let F=c0(J,B);if(F===void 0)return;let L=Number(F);if(!Number.isFinite(L))throw new I$(`${B} must be a number`);return L},Q=[...J];for(let B of["--vault","--since","--until","--stale-days","--json","--config"]){let F=Q.indexOf(B);if(F>=0)Q.splice(F,2)}let G=c0(J,"--vault"),Y=W("--since"),Z=W("--until"),U=W("--stale-days"),K=c0(J,"--json");return{kind:"metrics",input:c0(J,"--config")??Z6(Q),...G!==void 0?{vault:G}:{},...Y!==void 0?{since:Y}:{},...Z!==void 0?{until:Z}:{},...U!==void 0?{staleDays:U}:{},...K!==void 0?{json:K}:{}}}if(X==="reflect"){let W=[...J];for(let Y of["--max-judged","--config"]){let Z=W.indexOf(Y);if(Z>=0)W.splice(Z,2)}let Q=c0(J,"--max-judged"),G;if(Q!==void 0){if(G=Number.parseInt(Q,10),!Number.isFinite(G)||G<0)return{kind:"error",message:"--max-judged must be a non-negative integer"}}return{kind:"reflect",input:c0(J,"--config")??Z6(W),...G!==void 0?{maxJudged:G}:{}}}if(X==="prefetch"){let W=[...J];for(let Z of["--vault","--ttl-hours","--config"]){let U=W.indexOf(Z);if(U>=0)W.splice(U,2)}let Q=c0(J,"--vault"),G=c0(J,"--ttl-hours"),Y;if(G!==void 0){if(Y=Number(G),!Number.isFinite(Y)||Y<=0)return{kind:"error",message:"--ttl-hours must be a positive number"}}return{kind:"prefetch",input:c0(J,"--config")??Z6(W),...Q!==void 0?{vault:Q}:{},...Y!==void 0?{ttlHours:Y}:{}}}if(X.startsWith("-"))return{kind:"error",message:`unknown option: ${X}`};return{kind:"serve",input:X}}catch(X){if(X instanceof I$)return{kind:"error",message:X.message};throw X}}function jj0($){return GW({vaults:[{id:"main",path:Vj0($)}]})}function Wx($){let X=$??process.env.OBSIDIAN_TC_CONFIG;if(!X)throw new I$("no vault or config given: pass a vault folder or a config.json (or set OBSIDIAN_TC_CONFIG).");let J;try{J=Nj0(X)}catch{throw new I$(`no such vault folder or config file: ${X}`)}return J.isDirectory()?jj0(X):hK(X)}var Oj0=/(secret|token|password|key)$/i,Ij0=/^(authorization|proxy-authorization|cookie|set-cookie|x-api-key|x-auth-token|api-key)$/i;function mK($){if(Array.isArray($))return $.map(mK);if($&&typeof $==="object"){let X={};for(let[J,W]of Object.entries($))X[J]=typeof W==="string"&&W.length>0&&(Oj0.test(J)||Ij0.test(J))?"<redacted>":mK(W);return X}return $}import{mkdirSync as hj0}from"node:fs";var q$="1.14.2";import{join as fj0}from"node:path";import{createHash as Mj0}from"node:crypto";function Ej0($){return Mj0("sha256").update($,"utf8").digest("hex")}function Rj0($){$.exec(`CREATE TABLE IF NOT EXISTS schema_migrations (
646
646
  version TEXT PRIMARY KEY,
647
647
  applied_at INTEGER NOT NULL,
648
648
  obsidian_tc_version TEXT NOT NULL,
@@ -2201,5 +2201,5 @@ ${W.join(`\r
2201
2201
  `)}).finally(()=>{process.exit(0)})}},W=J("SIGTERM"),Q=J("SIGINT");return process.on("SIGTERM",W),process.on("SIGINT",Q),()=>{process.off("SIGTERM",W),process.off("SIGINT",Q)}}async function PV$($){let X=E$($.input),J=$.input??process.env.OBSIDIAN_TC_CONFIG,W=await sD0(X,J);tD0(W),await W.start()}async function SV$(){let $=Qx(process.argv.slice(2));switch($.kind){case"token-mint":return Ss($);case"version":return zs($);case"help":return Id($);case"error":return qu($);case"plugin-install":return bi($);case"config-show":case"config-validate":return Qb($);case"config-explain":return Jb($);case"doctor":return Iu($);case"cluster":return ex($);case"activation-recompute":return Nx($);case"densify-llm":return Mb($);case"citation-infer":return px($);case"contribution-report":return Yb($);case"note-quality":return _i($);case"forget":return _u($);case"gaps":return Od($);case"index":return Ri($);case"metrics":return Ti($);case"reflect":return Xs($);case"prefetch":return $s($);default:return PV$($)}}SV$().catch(($)=>{process.stderr.write(`fatal: ${$.message}
2202
2202
  `),process.exit(1)});
2203
2203
 
2204
- //# debugId=0CC7DEED237B23B164756E2164756E21
2204
+ //# debugId=D8D1697CE42DA01C64756E2164756E21
2205
2205
  //# sourceMappingURL=cli.js.map