project-athena 0.3.0 → 0.4.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 +25 -0
- package/README.md +46 -4
- package/dist/{activity-P4UUFHWV.js → activity-BKW7G4I5.js} +4 -4
- package/dist/{agents-3HTSQGL2.js → agents-DFSNEOP5.js} +4 -4
- package/dist/{analyze-F3YOILNL.js → analyze-ZY3MXBOI.js} +7 -6
- package/dist/{chunk-PR53DT7I.js → chunk-3XSDI5WF.js} +5 -5
- package/dist/{chunk-S7T6VX56.js → chunk-7DZK6WSQ.js} +8 -4
- package/dist/{chunk-32PRS2MG.js → chunk-DZDI2HRT.js} +4 -4
- package/dist/{chunk-EF6GHOIN.js → chunk-FVCDMQUQ.js} +2 -2
- package/dist/{chunk-SJOOXO34.js → chunk-GGXPG6OE.js} +3 -3
- package/dist/{chunk-TGJUUB44.js → chunk-KHMBNT66.js} +4 -4
- package/dist/{chunk-PANVPNYF.js → chunk-MPG3IEGB.js} +37 -238
- package/dist/chunk-QCC4VJUH.js +217 -0
- package/dist/{chunk-JY6BFIJJ.js → chunk-QLW657NT.js} +2 -2
- package/dist/{chunk-XB66PZ6Z.js → chunk-RVTNSNGK.js} +2 -2
- package/dist/{chunk-LMOFZNTQ.js → chunk-SJ4DQFIJ.js} +2 -2
- package/dist/{chunk-PDFQ5BFG.js → chunk-SVTEJYMS.js} +4 -155
- package/dist/chunk-TDNZ2RYA.js +702 -0
- package/dist/chunk-UAZLPNVC.js +108 -0
- package/dist/chunk-WVQC2EGO.js +166 -0
- package/dist/{chunk-DOQMAZL5.js → chunk-XDCKZ5TV.js} +3 -3
- package/dist/{chunk-2RS6TA3D.js → chunk-YRIS7ZS6.js} +28 -17
- package/dist/{clean-S7PKCOLM.js → clean-MDBYH62P.js} +4 -4
- package/dist/cli.js +1 -1
- package/dist/{context-AH5MFHRG.js → context-PLPCAPCO.js} +23 -9
- package/dist/{doctor-RSJMLE2P.js → doctor-BX677KRE.js} +13 -6
- package/dist/{init-2V34DVRQ.js → init-WQCAOJ2R.js} +7 -6
- package/dist/{mcp-T2GRTEX5.js → mcp-U7EPH43L.js} +153 -15
- package/dist/memory-VSVNLEJC.js +393 -0
- package/dist/{open-2QSZKKUG.js → open-UJZRYF4E.js} +246 -55
- package/dist/{program-V2USHGXN.js → program-CWJNGCTZ.js} +37 -20
- package/dist/{review-R3R2J5BJ.js → review-OOKXSYMP.js} +10 -8
- package/dist/{security-PI4LXCOB.js → security-LME3XFL3.js} +6 -4
- package/dist/{staged-check-HHIBKKMR.js → staged-check-X24C3YRD.js} +9 -7
- package/dist/{status-6M73WX5I.js → status-RR57ZNGI.js} +8 -2
- package/dist/{sync-3ZNJDSSU.js → sync-KFJANRXF.js} +11 -9
- package/dist/{watch-USN5CQIV.js → watch-CY7QHIYN.js} +11 -9
- package/dist/web/assets/{Editor-BI56-HX5.js → Editor-Bnilgch0.js} +1 -1
- package/dist/web/assets/{abnfDiagram-O67JEVCF-y_9px2ob.js → abnfDiagram-O67JEVCF-DW9LWr8f.js} +1 -1
- package/dist/web/assets/architecture-7GRP2DOG-BWDZV2yn.js +1 -0
- package/dist/web/assets/{architectureDiagram-NJMV4G6O-lB6fcVzU.js → architectureDiagram-NJMV4G6O-0eKeQRhj.js} +1 -1
- package/dist/web/assets/{blockDiagram-BEXU5L5S-DcM5pEjM.js → blockDiagram-BEXU5L5S-D5i3-ogI.js} +1 -1
- package/dist/web/assets/{c4Diagram-YGBWAQC7-CJgqxTY2.js → c4Diagram-YGBWAQC7-BAWQZrEu.js} +1 -1
- package/dist/web/assets/channel-Bkh05NKd.js +1 -0
- package/dist/web/assets/{chunk-3FUC2YCW-B8l_VuWR.js → chunk-3FUC2YCW-fKRGOZF3.js} +1 -1
- package/dist/web/assets/{chunk-5DYCD2WN-CZecgNhf.js → chunk-5DYCD2WN-C5jOlx42.js} +1 -1
- package/dist/web/assets/{chunk-742MDFTN-BeZ7P5jB.js → chunk-742MDFTN-urY4RP_A.js} +1 -1
- package/dist/web/assets/{chunk-7INBJB4K-IKy0pr5m.js → chunk-7INBJB4K-nk48sKqZ.js} +1 -1
- package/dist/web/assets/{chunk-7M6MHVWA-Dg_QqJEX.js → chunk-7M6MHVWA-BfBD9X0F.js} +1 -1
- package/dist/web/assets/{chunk-7PRAP22T-DqQNS8oq.js → chunk-7PRAP22T-jYf59QlI.js} +1 -1
- package/dist/web/assets/{chunk-GTNCS2PH-x4sM51nJ.js → chunk-GTNCS2PH-BOCxryKf.js} +1 -1
- package/dist/web/assets/{chunk-GWA4HPMP-CE5GcwVN.js → chunk-GWA4HPMP-CFpaW0ru.js} +1 -1
- package/dist/web/assets/{chunk-MBY4JIJT-DA_D1hjF.js → chunk-MBY4JIJT-BIB8HctN.js} +1 -1
- package/dist/web/assets/{chunk-NETBCI7D-CeJ3XBZ2.js → chunk-NETBCI7D-CpUUK6rh.js} +1 -1
- package/dist/web/assets/{chunk-O7XYJQB3-BH2gESvO.js → chunk-O7XYJQB3-BNx_V4Oi.js} +1 -1
- package/dist/web/assets/{chunk-UA2S7LBM-BWr0xCux.js → chunk-UA2S7LBM-D3tMiIOY.js} +1 -1
- package/dist/web/assets/{chunk-WEXAMYUT-B4QwUZPM.js → chunk-WEXAMYUT-CC-3C32l.js} +1 -1
- package/dist/web/assets/{chunk-Z7XXMR3K-BxcA-y5B.js → chunk-Z7XXMR3K-BzhxKQUc.js} +1 -1
- package/dist/web/assets/{chunk-ZIGJFQKS-BZYvP63G.js → chunk-ZIGJFQKS-D4tBHzxg.js} +1 -1
- package/dist/web/assets/{classDiagram-v2-NBCMYWYE-BS3P_NXb.js → classDiagram-v2-NBCMYWYE-BbtyanXR.js} +1 -1
- package/dist/web/assets/{cynefin-OW5HDTMX-BALD4Pve.js → cynefin-OW5HDTMX-BIArb8W1.js} +1 -1
- package/dist/web/assets/{cynefinDiagram-VND7K2PF-BM2y4W6d.js → cynefinDiagram-VND7K2PF-BrAcfkXL.js} +1 -1
- package/dist/web/assets/{dagre-6A5THRUB-PTfOrIdF.js → dagre-6A5THRUB-BcHXRl4s.js} +1 -1
- package/dist/web/assets/{diagram-22UHCM2B-CpXEHhUl.js → diagram-22UHCM2B-Dx9tSCdE.js} +1 -1
- package/dist/web/assets/{diagram-3UASUU5V-DPHfXzr6.js → diagram-3UASUU5V-CLLDP9yH.js} +1 -1
- package/dist/web/assets/{diagram-ATOU4E4O-DMBNXvAC.js → diagram-ATOU4E4O-B46H9iPt.js} +1 -1
- package/dist/web/assets/{diagram-CDSNMT55-CDLe1M7G.js → diagram-CDSNMT55-CYtvB6aG.js} +1 -1
- package/dist/web/assets/{diagram-MLGK6HIB-D6L8oE7j.js → diagram-MLGK6HIB-Dar7ktoX.js} +1 -1
- package/dist/web/assets/{diagram-MPIPVDR6-CP-S7rrQ.js → diagram-MPIPVDR6-C-DljnYN.js} +1 -1
- package/dist/web/assets/{ebnfDiagram-ZINNZB2B-CkUc63TK.js → ebnfDiagram-ZINNZB2B-Dv_3jWnh.js} +1 -1
- package/dist/web/assets/{elk-276RUBZZ-C1CAJLH_.js → elk-276RUBZZ-DnHciE9k.js} +1 -1
- package/dist/web/assets/{erDiagram-OPXOYQCR-DXBnaTHm.js → erDiagram-OPXOYQCR-Bn46KrHz.js} +1 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-DYwoptMd.js +1 -0
- package/dist/web/assets/flowDiagram-KWPJA3E3-y4rS0gIB.js +1 -0
- package/dist/web/assets/{ganttDiagram-FUAMR5RP-BVm8SiGg.js → ganttDiagram-FUAMR5RP-DOjjJtqz.js} +1 -1
- package/dist/web/assets/{gitGraph-4MIJSDKK-Dm7xBrW0.js → gitGraph-4MIJSDKK-BIoMXJRQ.js} +1 -1
- package/dist/web/assets/{gitGraphDiagram-X574FWY7-D_PIKKhx.js → gitGraphDiagram-X574FWY7-BsJ01R0v.js} +1 -1
- package/dist/web/assets/{index-CeOIBpu2.js → index-Cen0jOXj.js} +5 -4
- package/dist/web/assets/{index-DKE3ojTe.css → index-WwRY6n68.css} +1 -1
- package/dist/web/assets/{info-A6RAGUB7-CLGrx8pn.js → info-A6RAGUB7-BmlXzRWj.js} +1 -1
- package/dist/web/assets/{infoDiagram-VRGFBTTK-BlBjaKm7.js → infoDiagram-VRGFBTTK-CYPJPmBP.js} +1 -1
- package/dist/web/assets/{ishikawaDiagram-OU5B5YK6-Kxe7GGS3.js → ishikawaDiagram-OU5B5YK6-YN96geky.js} +1 -1
- package/dist/web/assets/{journeyDiagram-ZHPQQLJL-wCMoHK4M.js → journeyDiagram-ZHPQQLJL-20juojKY.js} +1 -1
- package/dist/web/assets/{kanban-definition-PNTS6WVX-BxdCz9Ko.js → kanban-definition-PNTS6WVX-BhCKIEbP.js} +1 -1
- package/dist/web/assets/{line-Zf11FnWF.js → line-BERsMFG6.js} +1 -1
- package/dist/web/assets/{mermaid-parser.core-BvFFklev.js → mermaid-parser.core-Bis_wTB-.js} +3 -3
- package/dist/web/assets/{mermaid.core-Cd_Ssti9.js → mermaid.core-DMsM3ZX7.js} +4 -4
- package/dist/web/assets/{mindmap-definition-NLK3R4M7-BGPQl-GY.js → mindmap-definition-NLK3R4M7-BkcGdOfv.js} +1 -1
- package/dist/web/assets/{packet-AYTQ26CC-6lI3cEX_.js → packet-AYTQ26CC-Bh30-JJX.js} +1 -1
- package/dist/web/assets/{pegDiagram-GJSIUBJH-BPIjlSAj.js → pegDiagram-GJSIUBJH-DxnIo9RF.js} +1 -1
- package/dist/web/assets/{pie-WAS4IAKB-D6Dzj3Ja.js → pie-WAS4IAKB-ChaTr-GD.js} +1 -1
- package/dist/web/assets/{pieDiagram-5QR66LMP-DtA-vZmv.js → pieDiagram-5QR66LMP-CzAp78FM.js} +1 -1
- package/dist/web/assets/{quadrantDiagram-O4NWA36T-EettyqQn.js → quadrantDiagram-O4NWA36T-BDSE-cfY.js} +1 -1
- package/dist/web/assets/{radar-RG4KPBEZ-xmRc3Dl8.js → radar-RG4KPBEZ-DgJ-o_dq.js} +1 -1
- package/dist/web/assets/{railroad-74A4TZTK-BLB7dhOn.js → railroad-74A4TZTK-C8MmcBKz.js} +1 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-CTLXjcdP.js +1 -0
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-ggWsTTL0.js +1 -0
- package/dist/web/assets/railroad-peg-WCYAUIDC-D1mCX705.js +1 -0
- package/dist/web/assets/{railroadDiagram-XR7U4H2S-PBw4We6b.js → railroadDiagram-XR7U4H2S-DfbcWRNh.js} +1 -1
- package/dist/web/assets/{requirementDiagram-PLB6GJNP-DjQpaUFA.js → requirementDiagram-PLB6GJNP-DM3nksxs.js} +1 -1
- package/dist/web/assets/{sankeyDiagram-IPEJSGJF-CBW-_AoF.js → sankeyDiagram-IPEJSGJF-DthUpiiC.js} +1 -1
- package/dist/web/assets/{sequenceDiagram-PO4LG4MO-DEoPYqY9.js → sequenceDiagram-PO4LG4MO-DLA3nuvA.js} +1 -1
- package/dist/web/assets/{stateDiagram-v2-GCMORJYK-UZq5rPud.js → stateDiagram-v2-GCMORJYK-B0X6ihBW.js} +1 -1
- package/dist/web/assets/{swimlanes-2SLR337P-CACfuXJR.js → swimlanes-2SLR337P-B4qWe6vE.js} +1 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-ClIk3e7S.js +8 -0
- package/dist/web/assets/{timeline-definition-EJHVYXUP-CYJl7mP-.js → timeline-definition-EJHVYXUP-F-cDzYrj.js} +1 -1
- package/dist/web/assets/{treeView-Q6P3EWNA-DtZ5nkPQ.js → treeView-Q6P3EWNA-BaI30nLZ.js} +1 -1
- package/dist/web/assets/{treemap-WGGIJYW6-m49GDM-M.js → treemap-WGGIJYW6-D2jGGoMl.js} +1 -1
- package/dist/web/assets/{usecaseDiagram-POWQR4AR-C2Vg20UK.js → usecaseDiagram-POWQR4AR-B9qoAQCy.js} +1 -1
- package/dist/web/assets/{vennDiagram-UO4OBE2U-C07v5OGI.js → vennDiagram-UO4OBE2U-DGVNOaKO.js} +1 -1
- package/dist/web/assets/{wardley-WFR3VGLG-C9Z7EZtz.js → wardley-WFR3VGLG-DbKqhNAh.js} +1 -1
- package/dist/web/assets/{wardleyDiagram-VNRHLVJA-DdA8CcSC.js → wardleyDiagram-VNRHLVJA-BgZ1gprw.js} +1 -1
- package/dist/web/assets/{xychartDiagram-PMCCYNJV-C9EZw07b.js → xychartDiagram-PMCCYNJV-D73RYid1.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +1 -1
- package/dist/chunk-CXUTYCZX.js +0 -238
- package/dist/web/assets/architecture-7GRP2DOG-DyxkwYiW.js +0 -1
- package/dist/web/assets/channel-BvDD7AMO.js +0 -1
- package/dist/web/assets/eventmodeling-NTZA5JFV-cLIzvgDp.js +0 -1
- package/dist/web/assets/flowDiagram-KWPJA3E3-D7Zq63VQ.js +0 -1
- package/dist/web/assets/railroad-abnf-HS5TGJTU-DBFym6g8.js +0 -1
- package/dist/web/assets/railroad-ebnf-LZEXJU2U-CkG28ig8.js +0 -1
- package/dist/web/assets/railroad-peg-WCYAUIDC-Df_Ifaad.js +0 -1
- package/dist/web/assets/swimlanesDiagram-TC7HE7FX-CDSrqdgx.js +0 -8
|
@@ -1,20 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
-
|
|
4
|
-
SCAN_FILE,
|
|
5
|
-
SecurityScan
|
|
6
|
-
} from "./chunk-PANVPNYF.js";
|
|
7
|
-
import {
|
|
8
|
-
athenaDir,
|
|
9
|
-
readState
|
|
3
|
+
athenaDir
|
|
10
4
|
} from "./chunk-2DY4PUR4.js";
|
|
11
5
|
import {
|
|
12
6
|
readTextIfExists,
|
|
13
7
|
writeFileAtomic
|
|
14
8
|
} from "./chunk-IQQBAWSM.js";
|
|
15
|
-
import {
|
|
16
|
-
AthenaError
|
|
17
|
-
} from "./chunk-AD4OZCU2.js";
|
|
18
9
|
import {
|
|
19
10
|
toPosix
|
|
20
11
|
} from "./chunk-XW3MLHI2.js";
|
|
@@ -224,155 +215,13 @@ function expandFromFiles(graph, files, depth = 1, limit = 40) {
|
|
|
224
215
|
return [...seen].map((id) => byId.get(id)).filter((n) => Boolean(n)).slice(0, limit);
|
|
225
216
|
}
|
|
226
217
|
|
|
227
|
-
// src/services/project-session.ts
|
|
228
|
-
import { promises as fs } from "fs";
|
|
229
|
-
import path2 from "path";
|
|
230
|
-
var fileKey = (st) => `${st.ino}:${st.size}:${st.mtimeNs}`;
|
|
231
|
-
var ProjectSession = class {
|
|
232
|
-
constructor(root) {
|
|
233
|
-
this.root = root;
|
|
234
|
-
}
|
|
235
|
-
root;
|
|
236
|
-
cache = /* @__PURE__ */ new Map();
|
|
237
|
-
inflight = /* @__PURE__ */ new Map();
|
|
238
|
-
stateEntry = null;
|
|
239
|
-
get dir() {
|
|
240
|
-
return athenaDir(this.root);
|
|
241
|
-
}
|
|
242
|
-
/** model.json, or why it can't be used. */
|
|
243
|
-
readModel() {
|
|
244
|
-
return this.read("model.json", ProjectModel);
|
|
245
|
-
}
|
|
246
|
-
/** The parsed model, or null when missing or unusable. */
|
|
247
|
-
async model() {
|
|
248
|
-
const r = await this.readModel();
|
|
249
|
-
return r.kind === "ok" ? r.value : null;
|
|
250
|
-
}
|
|
251
|
-
/** The parsed model; throws an AthenaError with a hint when it is missing or corrupted. */
|
|
252
|
-
async requireModel() {
|
|
253
|
-
const r = await this.readModel();
|
|
254
|
-
if (r.kind === "ok") return r.value;
|
|
255
|
-
if (r.kind === "missing") throw new AthenaError("model.json is missing.", "Run `athena analyze` (or re-analyze from the overview) first.");
|
|
256
|
-
throw new AthenaError(`model.json is corrupted (${r.reason}).`, "Run `athena analyze` to rebuild it.");
|
|
257
|
-
}
|
|
258
|
-
/** Cheap existence check (a stat, no parsing). */
|
|
259
|
-
async hasModel() {
|
|
260
|
-
return this.exists("model.json");
|
|
261
|
-
}
|
|
262
|
-
readGraph() {
|
|
263
|
-
return this.read(GRAPH_FILE, ProjectGraph);
|
|
264
|
-
}
|
|
265
|
-
async graph() {
|
|
266
|
-
const r = await this.readGraph();
|
|
267
|
-
return r.kind === "ok" ? r.value : null;
|
|
268
|
-
}
|
|
269
|
-
readScan() {
|
|
270
|
-
return this.read(SCAN_FILE, SecurityScan);
|
|
271
|
-
}
|
|
272
|
-
async scan() {
|
|
273
|
-
const r = await this.readScan();
|
|
274
|
-
return r.kind === "ok" ? r.value : null;
|
|
275
|
-
}
|
|
276
|
-
/** state.json via `readState`, memoized like the other artifacts. */
|
|
277
|
-
async state() {
|
|
278
|
-
const file = path2.join(this.dir, "state.json");
|
|
279
|
-
const st = await fs.stat(file, { bigint: true }).catch(() => null);
|
|
280
|
-
if (!st) return readState(this.dir);
|
|
281
|
-
const key = fileKey(st);
|
|
282
|
-
if (this.stateEntry?.key === key) return this.stateEntry.state;
|
|
283
|
-
const state = await readState(this.dir);
|
|
284
|
-
const after = await fs.stat(file, { bigint: true }).catch(() => null);
|
|
285
|
-
if (after && fileKey(after) === key) this.stateEntry = { key, state };
|
|
286
|
-
return state;
|
|
287
|
-
}
|
|
288
|
-
/**
|
|
289
|
-
* Record a value this process just wrote to `.athena/<name>`, so the next
|
|
290
|
-
* read doesn't parse it again. The file must already be on disk.
|
|
291
|
-
*/
|
|
292
|
-
async remember(name, value) {
|
|
293
|
-
const st = await fs.stat(path2.join(this.dir, name), { bigint: true }).catch(() => null);
|
|
294
|
-
if (st) this.cache.set(name, { key: fileKey(st), result: { kind: "ok", value } });
|
|
295
|
-
else this.cache.delete(name);
|
|
296
|
-
}
|
|
297
|
-
/** Drop memoized results (all, or one file). */
|
|
298
|
-
invalidate(name) {
|
|
299
|
-
if (!name || name === "state.json") this.stateEntry = null;
|
|
300
|
-
if (name) this.cache.delete(name);
|
|
301
|
-
else this.cache.clear();
|
|
302
|
-
}
|
|
303
|
-
async exists(name) {
|
|
304
|
-
const st = await fs.stat(path2.join(this.dir, name)).catch(() => null);
|
|
305
|
-
return Boolean(st?.isFile());
|
|
306
|
-
}
|
|
307
|
-
read(name, schema) {
|
|
308
|
-
const running = this.inflight.get(name);
|
|
309
|
-
if (running) return running;
|
|
310
|
-
const p = this.load(name, schema).finally(() => this.inflight.delete(name));
|
|
311
|
-
this.inflight.set(name, p);
|
|
312
|
-
return p;
|
|
313
|
-
}
|
|
314
|
-
async load(name, schema) {
|
|
315
|
-
const file = path2.join(this.dir, name);
|
|
316
|
-
let st;
|
|
317
|
-
try {
|
|
318
|
-
st = await fs.stat(file, { bigint: true });
|
|
319
|
-
} catch (err) {
|
|
320
|
-
const code = err.code;
|
|
321
|
-
this.cache.delete(name);
|
|
322
|
-
if (code === "ENOENT" || code === "ENOTDIR") return { kind: "missing" };
|
|
323
|
-
return { kind: "corrupted", reason: `unreadable (${code})` };
|
|
324
|
-
}
|
|
325
|
-
const key = fileKey(st);
|
|
326
|
-
const hit = this.cache.get(name);
|
|
327
|
-
if (hit?.key === key) return hit.result;
|
|
328
|
-
let raw;
|
|
329
|
-
try {
|
|
330
|
-
raw = await fs.readFile(file, "utf8");
|
|
331
|
-
} catch (err) {
|
|
332
|
-
const code = err.code;
|
|
333
|
-
if (code === "ENOENT") return { kind: "missing" };
|
|
334
|
-
return { kind: "corrupted", reason: `unreadable (${code})` };
|
|
335
|
-
}
|
|
336
|
-
const result = parseArtifact(raw, schema);
|
|
337
|
-
const after = await fs.stat(file, { bigint: true }).catch(() => null);
|
|
338
|
-
if (after && fileKey(after) === key) this.cache.set(name, { key, result });
|
|
339
|
-
return result;
|
|
340
|
-
}
|
|
341
|
-
};
|
|
342
|
-
function parseArtifact(raw, schema) {
|
|
343
|
-
let json;
|
|
344
|
-
try {
|
|
345
|
-
json = JSON.parse(raw);
|
|
346
|
-
} catch {
|
|
347
|
-
return { kind: "corrupted", reason: "invalid JSON" };
|
|
348
|
-
}
|
|
349
|
-
const parsed = schema.safeParse(json);
|
|
350
|
-
if (parsed.success) return { kind: "ok", value: parsed.data };
|
|
351
|
-
const issue = parsed.error.issues[0];
|
|
352
|
-
return { kind: "corrupted", reason: `schema mismatch at ${issue?.path.map(String).join(".") || "(root)"}: ${issue?.message}` };
|
|
353
|
-
}
|
|
354
|
-
var sessions = /* @__PURE__ */ new Map();
|
|
355
|
-
function projectSession(root) {
|
|
356
|
-
const key = path2.resolve(root);
|
|
357
|
-
let s = sessions.get(key);
|
|
358
|
-
if (!s) {
|
|
359
|
-
s = new ProjectSession(key);
|
|
360
|
-
sessions.set(key, s);
|
|
361
|
-
}
|
|
362
|
-
return s;
|
|
363
|
-
}
|
|
364
|
-
function releaseProjectSession(root) {
|
|
365
|
-
sessions.delete(path2.resolve(root));
|
|
366
|
-
}
|
|
367
|
-
|
|
368
218
|
export {
|
|
219
|
+
ProjectGraph,
|
|
369
220
|
GRAPH_FILE,
|
|
370
221
|
buildGraph,
|
|
371
222
|
saveGraph,
|
|
372
223
|
loadGraph,
|
|
373
224
|
neighbors,
|
|
374
|
-
expandFromFiles
|
|
375
|
-
projectSession,
|
|
376
|
-
releaseProjectSession
|
|
225
|
+
expandFromFiles
|
|
377
226
|
};
|
|
378
|
-
//# sourceMappingURL=chunk-
|
|
227
|
+
//# sourceMappingURL=chunk-SVTEJYMS.js.map
|