@hasna/contacts 0.6.35 → 0.6.36

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.
@@ -1,5 +1,5 @@
1
1
  import { SqliteAdapter } from "./sqlite-adapter.js";
2
- export { getDataDir, getDbPath } from "./paths.js";
2
+ export { getDataDir, getDbPath, getStateDir } from "./paths.js";
3
3
  export type ContactsDatabase = SqliteAdapter;
4
4
  export declare function getDatabase(path?: string): ContactsDatabase;
5
5
  export declare function resetDatabase(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAqqBnD,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAK7C,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAW3D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,GAAG,IAAI,MAAM,CAK5B"}
1
+ {"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/db/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAqqBhE,MAAM,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAK7C,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAW3D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED,wBAAgB,IAAI,IAAI,MAAM,CAE7B;AAED,wBAAgB,GAAG,IAAI,MAAM,CAK5B"}
@@ -1,3 +1,15 @@
1
+ /**
2
+ * The XDG data root for contacts (~/.local/share/hasna/contacts, or
3
+ * $HASNA_DATA_HOME/contacts). Creates it on first use; adopts the legacy
4
+ * `~/.hasna/contacts` (and the older `~/.contacts`) store into it once.
5
+ */
1
6
  export declare function getDataDir(): string;
7
+ /**
8
+ * The XDG state root for contacts (~/.local/state/hasna/contacts, or
9
+ * $HASNA_STATE_HOME/contacts) — the home of the vault session state file.
10
+ * Adopts a legacy `~/.hasna/contacts/.vault-session` once, gated on the state
11
+ * target holding no session yet.
12
+ */
13
+ export declare function getStateDir(): string;
2
14
  export declare function getDbPath(): string;
3
15
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/db/paths.ts"],"names":[],"mappings":"AAgBA,wBAAgB,UAAU,IAAI,MAAM,CAuBnC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAIlC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/db/paths.ts"],"names":[],"mappings":"AA8FA;;;;GAIG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAiBpC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAIlC"}
package/dist/index.js CHANGED
@@ -55,43 +55,169 @@ class SqliteAdapter {
55
55
  }
56
56
  var init_sqlite_adapter = () => {};
57
57
 
58
- // src/db/paths.ts
59
- import { chmodSync, copyFileSync, existsSync, mkdirSync, readdirSync, statSync } from "fs";
58
+ // node_modules/.pnpm/@hasna+paths@0.2.2/node_modules/@hasna/paths/dist/index.js
59
+ import { homedir } from "os";
60
60
  import { join } from "path";
61
+ function assertApp(app) {
62
+ if (typeof app !== "string" || app.length === 0) {
63
+ throw new TypeError("paths: app must be a non-empty string");
64
+ }
65
+ if (!APP_SLUG_RE.test(app)) {
66
+ throw new TypeError(`paths: invalid app slug "${app}" \u2014 expected lowercase kebab-case ([a-z0-9]+(-[a-z0-9]+)*)`);
67
+ }
68
+ }
69
+ function assertKind(kind) {
70
+ if (!PATH_KINDS.includes(kind)) {
71
+ throw new TypeError(`paths: invalid path kind "${kind}" \u2014 expected one of ${PATH_KINDS.join(", ")}`);
72
+ }
73
+ }
74
+ function envOf(options) {
75
+ return options.env ?? process.env;
76
+ }
77
+ function envValue(options, kind) {
78
+ const value = envOf(options)[KIND_ENV[kind]];
79
+ return typeof value === "string" && value.length > 0 ? value : undefined;
80
+ }
81
+ function isMacOS(platform) {
82
+ return platform === "darwin";
83
+ }
84
+ function baseDir(kind, options) {
85
+ assertKind(kind);
86
+ const override = envValue(options, kind);
87
+ if (override)
88
+ return override;
89
+ const home = options.home ?? homedir();
90
+ const platform = options.platform ?? process.platform;
91
+ if (isMacOS(platform)) {
92
+ switch (kind) {
93
+ case "config":
94
+ case "data":
95
+ return join(home, "Library", "Application Support", "Hasna");
96
+ case "cache":
97
+ return join(home, "Library", "Caches", "Hasna");
98
+ case "state":
99
+ return join(home, "Library", "Logs", "Hasna");
100
+ }
101
+ }
102
+ switch (kind) {
103
+ case "config":
104
+ return join(home, ".config", "hasna");
105
+ case "data":
106
+ return join(home, ".local", "share", "hasna");
107
+ case "state":
108
+ return join(home, ".local", "state", "hasna");
109
+ case "cache":
110
+ return join(home, ".cache", "hasna");
111
+ }
112
+ }
113
+ function resolvePath(kind, options) {
114
+ assertKind(kind);
115
+ assertApp(options.app);
116
+ const appSegment = options.internal === true ? join("internal", options.app) : options.app;
117
+ return join(baseDir(kind, options), appSegment);
118
+ }
119
+ function dataDir(options) {
120
+ return resolvePath("data", options);
121
+ }
122
+ function stateDir(options) {
123
+ return resolvePath("state", options);
124
+ }
125
+ var PATH_KINDS, KIND_ENV, APP_SLUG_RE;
126
+ var init_dist = __esm(() => {
127
+ PATH_KINDS = ["config", "data", "state", "cache"];
128
+ KIND_ENV = {
129
+ config: "HASNA_CONFIG_HOME",
130
+ data: "HASNA_DATA_HOME",
131
+ state: "HASNA_STATE_HOME",
132
+ cache: "HASNA_CACHE_HOME"
133
+ };
134
+ APP_SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
135
+ });
136
+
137
+ // src/db/paths.ts
138
+ import { chmodSync, copyFileSync, cpSync, existsSync, mkdirSync, readdirSync, statSync } from "fs";
139
+ import { homedir as homedir2 } from "os";
140
+ import { join as join2 } from "path";
61
141
  function ensurePrivateDir(dir) {
62
142
  if (!existsSync(dir))
63
143
  mkdirSync(dir, { recursive: true, mode: 448 });
64
144
  chmodSync(dir, 448);
65
145
  }
146
+ function home() {
147
+ return process.env["HOME"] || process.env["USERPROFILE"] || homedir2();
148
+ }
149
+ function hasContent(dir) {
150
+ if (!existsSync(dir))
151
+ return false;
152
+ try {
153
+ return readdirSync(dir).length > 0;
154
+ } catch {
155
+ return false;
156
+ }
157
+ }
158
+ function adoptLegacy(source, target) {
159
+ if (!hasContent(source) || hasContent(target))
160
+ return;
161
+ ensurePrivateDir(target);
162
+ for (const entry of readdirSync(source)) {
163
+ if (entry === ".vault-session")
164
+ continue;
165
+ if (entry === "{backups,images,documents}")
166
+ continue;
167
+ const oldPath = join2(source, entry);
168
+ const newPath = join2(target, entry);
169
+ const st = statSync(oldPath);
170
+ if (st.isDirectory()) {
171
+ cpSync(oldPath, newPath, { recursive: true });
172
+ chmodSync(newPath, 448);
173
+ } else if (st.isFile()) {
174
+ copyFileSync(oldPath, newPath);
175
+ chmodSync(newPath, 384);
176
+ }
177
+ }
178
+ }
66
179
  function getDataDir() {
67
- const home = process.env["HOME"] || process.env["USERPROFILE"] || "~";
68
- const hasnaDir = join(home, ".hasna");
69
- const newDir = join(home, ".hasna", "contacts");
70
- const oldDir = join(home, ".contacts");
71
- if (existsSync(oldDir) && !existsSync(newDir)) {
72
- ensurePrivateDir(hasnaDir);
73
- ensurePrivateDir(newDir);
74
- for (const file of readdirSync(oldDir)) {
75
- const oldPath = join(oldDir, file);
76
- if (statSync(oldPath).isFile()) {
77
- const newPath = join(newDir, file);
78
- copyFileSync(oldPath, newPath);
79
- chmodSync(newPath, 384);
180
+ const base = home();
181
+ const target = dataDir({ app: "contacts", home: base });
182
+ if (!checkedDataTargets.has(target)) {
183
+ adoptLegacy(join2(base, ".hasna", "contacts"), target);
184
+ adoptLegacy(join2(base, ".contacts"), target);
185
+ checkedDataTargets.add(target);
186
+ }
187
+ ensurePrivateDir(target);
188
+ return target;
189
+ }
190
+ function getStateDir() {
191
+ const base = home();
192
+ const target = stateDir({ app: "contacts", home: base });
193
+ if (!checkedStateTargets.has(target)) {
194
+ if (!hasContent(target)) {
195
+ const legacySession = join2(base, ".hasna", "contacts", ".vault-session");
196
+ if (existsSync(legacySession)) {
197
+ ensurePrivateDir(target);
198
+ const targetSession = join2(target, ".vault-session");
199
+ copyFileSync(legacySession, targetSession);
200
+ chmodSync(targetSession, 384);
80
201
  }
81
202
  }
203
+ checkedStateTargets.add(target);
82
204
  }
83
- ensurePrivateDir(hasnaDir);
84
- ensurePrivateDir(newDir);
85
- return newDir;
205
+ ensurePrivateDir(target);
206
+ return target;
86
207
  }
87
208
  function getDbPath() {
88
209
  if (process.env["HASNA_CONTACTS_DB_PATH"])
89
210
  return process.env["HASNA_CONTACTS_DB_PATH"];
90
211
  if (process.env["CONTACTS_DB_PATH"])
91
212
  return process.env["CONTACTS_DB_PATH"];
92
- return join(getDataDir(), "contacts.db");
213
+ return join2(getDataDir(), "contacts.db");
93
214
  }
94
- var init_paths = () => {};
215
+ var checkedDataTargets, checkedStateTargets;
216
+ var init_paths = __esm(() => {
217
+ init_dist();
218
+ checkedDataTargets = new Set;
219
+ checkedStateTargets = new Set;
220
+ });
95
221
 
96
222
  // src/db/database.ts
97
223
  var exports_database = {};
@@ -99,6 +225,7 @@ __export(exports_database, {
99
225
  uuid: () => uuid,
100
226
  resetDatabase: () => resetDatabase,
101
227
  now: () => now,
228
+ getStateDir: () => getStateDir,
102
229
  getDbPath: () => getDbPath,
103
230
  getDatabase: () => getDatabase,
104
231
  getDataDir: () => getDataDir
@@ -3462,13 +3589,24 @@ init_database();
3462
3589
  // src/lib/vault.ts
3463
3590
  init_database();
3464
3591
  import { existsSync as existsSync3, readFileSync, writeFileSync, mkdirSync as mkdirSync3, unlinkSync } from "fs";
3465
- import { join as join2 } from "path";
3592
+ import { join as join3 } from "path";
3466
3593
  import { createCipheriv, createDecipheriv, randomBytes, pbkdf2Sync, createHash as createHash2 } from "crypto";
3467
- var VAULT_DIR = getDataDir();
3468
- var VAULT_CONFIG = join2(VAULT_DIR, "vault.json");
3469
- var VAULT_SESSION = join2(VAULT_DIR, ".vault-session");
3470
- var DOCUMENTS_DIR = join2(VAULT_DIR, "documents");
3471
3594
  var SESSION_TTL_MS = 30 * 60 * 1000;
3595
+ function getVaultDir() {
3596
+ return getDataDir();
3597
+ }
3598
+ function getVaultConfigPath() {
3599
+ return join3(getDataDir(), "vault.json");
3600
+ }
3601
+ function getVaultSessionPath() {
3602
+ return join3(getStateDir(), ".vault-session");
3603
+ }
3604
+ function getDocumentsDir() {
3605
+ const dir = join3(getDataDir(), "documents");
3606
+ if (!existsSync3(dir))
3607
+ mkdirSync3(dir, { recursive: true });
3608
+ return dir;
3609
+ }
3472
3610
  var _derivedKey = null;
3473
3611
  function deriveKey(passphrase, salt) {
3474
3612
  return pbkdf2Sync(passphrase, salt, 1e5, 32, "sha512");
@@ -3478,16 +3616,17 @@ function saveSession(key) {
3478
3616
  key: key.toString("hex"),
3479
3617
  expires_at: new Date(Date.now() + SESSION_TTL_MS).toISOString()
3480
3618
  };
3481
- writeFileSync(VAULT_SESSION, JSON.stringify(session), { mode: 384 });
3619
+ writeFileSync(getVaultSessionPath(), JSON.stringify(session), { mode: 384 });
3482
3620
  }
3483
3621
  function loadSession() {
3484
- if (!existsSync3(VAULT_SESSION))
3622
+ const sessionPath = getVaultSessionPath();
3623
+ if (!existsSync3(sessionPath))
3485
3624
  return null;
3486
3625
  try {
3487
- const session = JSON.parse(readFileSync(VAULT_SESSION, "utf-8"));
3626
+ const session = JSON.parse(readFileSync(sessionPath, "utf-8"));
3488
3627
  if (new Date(session.expires_at).getTime() < Date.now()) {
3489
3628
  try {
3490
- unlinkSync(VAULT_SESSION);
3629
+ unlinkSync(sessionPath);
3491
3630
  } catch {}
3492
3631
  return null;
3493
3632
  }
@@ -3498,30 +3637,30 @@ function loadSession() {
3498
3637
  }
3499
3638
  function clearSession() {
3500
3639
  try {
3501
- if (existsSync3(VAULT_SESSION))
3502
- unlinkSync(VAULT_SESSION);
3640
+ if (existsSync3(getVaultSessionPath()))
3641
+ unlinkSync(getVaultSessionPath());
3503
3642
  } catch {}
3504
3643
  }
3505
3644
  function initVault(passphrase) {
3506
- if (!existsSync3(VAULT_DIR))
3507
- mkdirSync3(VAULT_DIR, { recursive: true });
3508
- if (!existsSync3(DOCUMENTS_DIR))
3509
- mkdirSync3(DOCUMENTS_DIR, { recursive: true });
3645
+ const vaultDir = getVaultDir();
3646
+ if (!existsSync3(vaultDir))
3647
+ mkdirSync3(vaultDir, { recursive: true });
3648
+ mkdirSync3(getDocumentsDir(), { recursive: true });
3510
3649
  const salt = randomBytes(32);
3511
3650
  const key = deriveKey(passphrase, salt);
3512
3651
  const keyHash = createHash2("sha256").update(key).digest("hex");
3513
3652
  const config = { salt: salt.toString("hex"), key_hash: keyHash, created_at: new Date().toISOString() };
3514
- writeFileSync(VAULT_CONFIG, JSON.stringify(config, null, 2));
3653
+ writeFileSync(getVaultConfigPath(), JSON.stringify(config, null, 2));
3515
3654
  _derivedKey = key;
3516
3655
  saveSession(key);
3517
3656
  }
3518
3657
  function isVaultInitialized() {
3519
- return existsSync3(VAULT_CONFIG);
3658
+ return existsSync3(getVaultConfigPath());
3520
3659
  }
3521
3660
  function unlockVault(passphrase) {
3522
- if (!existsSync3(VAULT_CONFIG))
3661
+ if (!existsSync3(getVaultConfigPath()))
3523
3662
  throw new Error("Vault not initialized. Run 'contacts vault init' first.");
3524
- const config = JSON.parse(readFileSync(VAULT_CONFIG, "utf-8"));
3663
+ const config = JSON.parse(readFileSync(getVaultConfigPath(), "utf-8"));
3525
3664
  const salt = Buffer.from(config.salt, "hex");
3526
3665
  const key = deriveKey(passphrase, salt);
3527
3666
  const keyHash = createHash2("sha256").update(key).digest("hex");
@@ -3576,10 +3715,11 @@ function decrypt(ciphertext, iv) {
3576
3715
  return decrypted;
3577
3716
  }
3578
3717
  function storeFile(sourcePath, entityId) {
3579
- if (!existsSync3(DOCUMENTS_DIR))
3580
- mkdirSync3(DOCUMENTS_DIR, { recursive: true });
3718
+ const documentsDir = getDocumentsDir();
3719
+ if (!existsSync3(documentsDir))
3720
+ mkdirSync3(documentsDir, { recursive: true });
3581
3721
  const ext = sourcePath.split(".").pop() || "bin";
3582
- const destPath = join2(DOCUMENTS_DIR, `${entityId}.${ext}`);
3722
+ const destPath = join3(documentsDir, `${entityId}.${ext}`);
3583
3723
  const data = readFileSync(sourcePath);
3584
3724
  writeFileSync(destPath, data);
3585
3725
  return destPath;
@@ -4473,8 +4613,8 @@ async function assembleContext(contactIds, format = "meeting_prep", db) {
4473
4613
  // src/lib/images.ts
4474
4614
  init_database();
4475
4615
  import { existsSync as existsSync5, mkdirSync as mkdirSync4, copyFileSync as copyFileSync2, unlinkSync as unlinkSync3, readdirSync as readdirSync2, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "fs";
4476
- import { join as join3, extname, basename } from "path";
4477
- var IMAGES_DIR = join3(getDataDir(), "images");
4616
+ import { join as join4, extname, basename } from "path";
4617
+ var IMAGES_DIR = join4(getDataDir(), "images");
4478
4618
  function ensureImagesDir() {
4479
4619
  if (!existsSync5(IMAGES_DIR))
4480
4620
  mkdirSync4(IMAGES_DIR, { recursive: true });
@@ -4487,14 +4627,14 @@ function saveImage(entityId, source, options) {
4487
4627
  const ext2 = base64Match[1] === "jpeg" ? "jpg" : base64Match[1];
4488
4628
  const data = Buffer.from(base64Match[2], "base64");
4489
4629
  const filename2 = `${entityId}.${ext2}`;
4490
- writeFileSync2(join3(IMAGES_DIR, filename2), data);
4630
+ writeFileSync2(join4(IMAGES_DIR, filename2), data);
4491
4631
  return filename2;
4492
4632
  }
4493
4633
  if (!existsSync5(source) && /^[A-Za-z0-9+/=\n\r]+$/.test(source.trim()) && source.length > 100) {
4494
4634
  const ext2 = options?.format || "jpg";
4495
4635
  const data = Buffer.from(source.trim(), "base64");
4496
4636
  const filename2 = `${entityId}.${ext2}`;
4497
- writeFileSync2(join3(IMAGES_DIR, filename2), data);
4637
+ writeFileSync2(join4(IMAGES_DIR, filename2), data);
4498
4638
  return filename2;
4499
4639
  }
4500
4640
  if (!existsSync5(source)) {
@@ -4506,14 +4646,14 @@ function saveImage(entityId, source, options) {
4506
4646
  throw new Error(`Unsupported image format: ${ext}. Supported: ${validExts.join(", ")}`);
4507
4647
  }
4508
4648
  const filename = `${entityId}.${ext === "jpeg" ? "jpg" : ext}`;
4509
- copyFileSync2(source, join3(IMAGES_DIR, filename));
4649
+ copyFileSync2(source, join4(IMAGES_DIR, filename));
4510
4650
  return filename;
4511
4651
  }
4512
4652
  function getImagePath(entityId) {
4513
4653
  ensureImagesDir();
4514
4654
  const files = readdirSync2(IMAGES_DIR);
4515
4655
  const match = files.find((f) => f.startsWith(`${entityId}.`));
4516
- return match ? join3(IMAGES_DIR, match) : null;
4656
+ return match ? join4(IMAGES_DIR, match) : null;
4517
4657
  }
4518
4658
  function getImageAsBase64(entityId) {
4519
4659
  const path = getImagePath(entityId);
@@ -4530,7 +4670,7 @@ function deleteImage(entityId) {
4530
4670
  let deleted = false;
4531
4671
  for (const f of files) {
4532
4672
  if (f.startsWith(`${entityId}.`)) {
4533
- unlinkSync3(join3(IMAGES_DIR, f));
4673
+ unlinkSync3(join4(IMAGES_DIR, f));
4534
4674
  deleted = true;
4535
4675
  }
4536
4676
  }
@@ -4542,7 +4682,7 @@ function listImages() {
4542
4682
  return files.map((f) => ({
4543
4683
  entity_id: basename(f, extname(f)),
4544
4684
  filename: f,
4545
- path: join3(IMAGES_DIR, f)
4685
+ path: join4(IMAGES_DIR, f)
4546
4686
  }));
4547
4687
  }
4548
4688
 
@@ -6469,7 +6609,7 @@ class ContactsV1Client {
6469
6609
  }
6470
6610
  // src/lib/package-version.ts
6471
6611
  import { existsSync as existsSync6, readFileSync as readFileSync3 } from "fs";
6472
- import { dirname as dirname2, join as join4 } from "path";
6612
+ import { dirname as dirname2, join as join5 } from "path";
6473
6613
  import { fileURLToPath } from "url";
6474
6614
  var cached2 = null;
6475
6615
  function getPackageVersion() {
@@ -6478,7 +6618,7 @@ function getPackageVersion() {
6478
6618
  try {
6479
6619
  let dir = dirname2(fileURLToPath(import.meta.url));
6480
6620
  for (let i = 0;i < 8; i++) {
6481
- const pkgPath = join4(dir, "package.json");
6621
+ const pkgPath = join5(dir, "package.json");
6482
6622
  if (existsSync6(pkgPath)) {
6483
6623
  const pkg = JSON.parse(readFileSync3(pkgPath, "utf8"));
6484
6624
  if (pkg.name === "@hasna/contacts" && pkg.version) {
@@ -1,3 +1,8 @@
1
+ export declare function getVaultDir(): string;
2
+ export declare function getVaultConfigPath(): string;
3
+ export declare function getVaultSessionDir(): string;
4
+ export declare function getVaultSessionPath(): string;
5
+ export declare function getDocumentsDir(): string;
1
6
  export declare function initVault(passphrase: string): void;
2
7
  export declare function isVaultInitialized(): boolean;
3
8
  export declare function unlockVault(passphrase: string): boolean;
@@ -20,5 +25,4 @@ export declare function storeFile(sourcePath: string, entityId: string): string;
20
25
  */
21
26
  export declare function getDocumentFilePath(entityId: string): string | null;
22
27
  export declare function decryptFile(encPath: string): Buffer;
23
- export declare function getDocumentsDir(): string;
24
28
  //# sourceMappingURL=vault.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/lib/vault.ts"],"names":[],"mappings":"AAiDA,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAUlD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED,wBAAgB,eAAe,IAAI,OAAO,CASzC;AAED,wBAAgB,YAAY,IAAI,MAAM,CASrC;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAQ7E;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAS9D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMnE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAGxC"}
1
+ {"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/lib/vault.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAIxC;AAyCD,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAWlD;AAED,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAUvD;AAED,wBAAgB,SAAS,IAAI,IAAI,CAGhC;AAED,wBAAgB,eAAe,IAAI,OAAO,CASzC;AAED,wBAAgB,YAAY,IAAI,MAAM,CASrC;AAED,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,CAQ7E;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAS9D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQtE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAOnE;AAGD,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/advanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0B9C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAycxD,CAAC"}
1
+ {"version":3,"file":"advanced.d.ts","sourceRoot":"","sources":["../../../src/mcp/handlers/advanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA4B9C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CA2cxD,CAAC"}