@covro/covro 0.2.1-dev.3 → 0.2.1-dev.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/README.md +6 -1
  2. package/README.zh-CN.md +6 -1
  3. package/dist/codex/adapter.js +8 -1
  4. package/dist/codex/adapter.js.map +2 -2
  5. package/dist/drizzle/0005_session_workspaces.sql +24 -0
  6. package/dist/drizzle/meta/0005_snapshot.json +480 -0
  7. package/dist/drizzle/meta/_journal.json +7 -0
  8. package/dist/server/db/operations.js +14 -1
  9. package/dist/server/db/operations.js.map +2 -2
  10. package/dist/server/db/schema.js +9 -1
  11. package/dist/server/db/schema.js.map +2 -2
  12. package/dist/server/http.js +25 -0
  13. package/dist/server/http.js.map +2 -2
  14. package/dist/server/local-files.js +2 -2
  15. package/dist/server/local-files.js.map +2 -2
  16. package/dist/server/main.js +1 -0
  17. package/dist/server/main.js.map +2 -2
  18. package/dist/server/service.js +96 -51
  19. package/dist/server/service.js.map +2 -2
  20. package/dist/server/workspaces.js +138 -0
  21. package/dist/server/workspaces.js.map +7 -0
  22. package/dist/shared/workspace-scope.js +9 -0
  23. package/dist/shared/workspace-scope.js.map +7 -0
  24. package/dist/web/assets/{abnfDiagram-WEYOIA3C-6n1mVJ0V.js → abnfDiagram-WEYOIA3C-DTTcFQGL.js} +1 -1
  25. package/dist/web/assets/{arc-DFIzIYgQ.js → arc-K2pKIwfu.js} +1 -1
  26. package/dist/web/assets/{architecture-WOLXFQ4H-CoZpoP0F.js → architecture-WOLXFQ4H-DrxN_1CG.js} +1 -1
  27. package/dist/web/assets/{architectureDiagram-ZHVYKT53-LcqVhgRh.js → architectureDiagram-ZHVYKT53-CyyCrVAb.js} +1 -1
  28. package/dist/web/assets/{blockDiagram-RJAE7QA3-CnVQsmM8.js → blockDiagram-RJAE7QA3-C8vl8QXS.js} +1 -1
  29. package/dist/web/assets/{c4Diagram-XDPPPE54-C38UO-rV.js → c4Diagram-XDPPPE54-BtnIITFN.js} +1 -1
  30. package/dist/web/assets/channel-CDExoPVe.js +1 -0
  31. package/dist/web/assets/{chunk-2E7WHVMD-SlpXCVVC.js → chunk-2E7WHVMD-BssauSch.js} +1 -1
  32. package/dist/web/assets/{chunk-4EMNKR2T-BPJa0lfJ.js → chunk-4EMNKR2T-BZOo1RWg.js} +1 -1
  33. package/dist/web/assets/{chunk-55XCU76K-CkP_cE5N.js → chunk-55XCU76K-D8ZWazMQ.js} +1 -1
  34. package/dist/web/assets/{chunk-7S6XSTFO-BnrWU32l.js → chunk-7S6XSTFO-C8WqPzUl.js} +1 -1
  35. package/dist/web/assets/{chunk-AQDTSKZB-J2M9tBY-.js → chunk-AQDTSKZB-Coo6Axpg.js} +1 -1
  36. package/dist/web/assets/{chunk-DSNLSHJZ-ClfNpgVO.js → chunk-DSNLSHJZ-5TwmEPWR.js} +1 -1
  37. package/dist/web/assets/{chunk-HAGFOTED-k7XcZqWB.js → chunk-HAGFOTED-Dgtj-Fc_.js} +1 -1
  38. package/dist/web/assets/{chunk-HNE4Q36P-DHHenyG4.js → chunk-HNE4Q36P-COoS4UPL.js} +1 -1
  39. package/dist/web/assets/{chunk-NQOKRVIF-CkA3TLYc.js → chunk-NQOKRVIF-tPhNkBBj.js} +1 -1
  40. package/dist/web/assets/{chunk-UHW7PFBP-DSLKZJoJ.js → chunk-UHW7PFBP-BLk_BkCl.js} +1 -1
  41. package/dist/web/assets/{chunk-VQ5W62QI-BBkSWILl.js → chunk-VQ5W62QI-HBeSVTU0.js} +1 -1
  42. package/dist/web/assets/{chunk-WQQL4CDK-BeKgda0U.js → chunk-WQQL4CDK-LmZUm8If.js} +1 -1
  43. package/dist/web/assets/{chunk-XXDRQBXY-BC-ozzjn.js → chunk-XXDRQBXY-49rKU8Nk.js} +1 -1
  44. package/dist/web/assets/{chunk-YZO67HFG-C19e3AP5.js → chunk-YZO67HFG-B_TgpaEG.js} +1 -1
  45. package/dist/web/assets/{chunk-ZAUX2LTX-C03NsQfr.js → chunk-ZAUX2LTX-f7-DSOrY.js} +1 -1
  46. package/dist/web/assets/{chunk-ZCHMQSOR-CrXzPEWh.js → chunk-ZCHMQSOR-QhJOh7x0.js} +1 -1
  47. package/dist/web/assets/{classDiagram-v2-4MYWR3UA-DCbxTUm6.js → classDiagram-v2-4MYWR3UA-CwF2HuoZ.js} +1 -1
  48. package/dist/web/assets/{cose-bilkent-JH36ORCC-CQZjK1BR.js → cose-bilkent-JH36ORCC-CLvKOlx5.js} +1 -1
  49. package/dist/web/assets/{cynefin-EF2NZ3EQ-i1jWxeqI.js → cynefin-EF2NZ3EQ-BNRVavZN.js} +1 -1
  50. package/dist/web/assets/{cynefinDiagram-WF24UDRP-DfVYiPE9.js → cynefinDiagram-WF24UDRP-DEd83kgI.js} +1 -1
  51. package/dist/web/assets/{dagre-NK4GIZVX-OhkyZBvK.js → dagre-NK4GIZVX-C340UEI3.js} +1 -1
  52. package/dist/web/assets/{diagram-CBK3MWTC-CXdVEIne.js → diagram-CBK3MWTC-CuN7ncUm.js} +1 -1
  53. package/dist/web/assets/{diagram-I5XIIV2D-BjrxVPW0.js → diagram-I5XIIV2D-D9mGAfA7.js} +1 -1
  54. package/dist/web/assets/{diagram-ODIL2UCW-C5BpAqPG.js → diagram-ODIL2UCW-CXtBv4bI.js} +1 -1
  55. package/dist/web/assets/{diagram-PFBEJUXE-3yWOE5ZP.js → diagram-PFBEJUXE-B8qP5nGT.js} +1 -1
  56. package/dist/web/assets/{diagram-RJA3I4VV-DdRZojn9.js → diagram-RJA3I4VV-BVrzsw2b.js} +1 -1
  57. package/dist/web/assets/{diagram-TYUNFSNR-m_gnI0-3.js → diagram-TYUNFSNR-Djfine3D.js} +1 -1
  58. package/dist/web/assets/{dist-DMGebNoK.js → dist-D8kDnYqD.js} +1 -1
  59. package/dist/web/assets/{ebnfDiagram-V4P3TTPT-CVwc9K-O.js → ebnfDiagram-V4P3TTPT-C69Oiekp.js} +1 -1
  60. package/dist/web/assets/{elk-QONTBCTQ-BDC-J8E3.js → elk-QONTBCTQ-Bd3BP1h1.js} +1 -1
  61. package/dist/web/assets/{erDiagram-KYQIGQAA-D-dqUb0a.js → erDiagram-KYQIGQAA-Dxcl5jVl.js} +1 -1
  62. package/dist/web/assets/{eventmodeling-K75KTNOO-ByZ_MfSZ.js → eventmodeling-K75KTNOO-Do8p535i.js} +1 -1
  63. package/dist/web/assets/flowDiagram-IUGLLWBU-X85uzgrG.js +1 -0
  64. package/dist/web/assets/{ganttDiagram-R7GPNTJY-BHzyPnqV.js → ganttDiagram-R7GPNTJY-MBGUZbVy.js} +1 -1
  65. package/dist/web/assets/{gitGraph-VSP46ZUC-DQhxrj3o.js → gitGraph-VSP46ZUC-CHxRIbkg.js} +1 -1
  66. package/dist/web/assets/{gitGraphDiagram-PDYL7XHY-8M2oNXTx.js → gitGraphDiagram-PDYL7XHY-DbW0GeW4.js} +1 -1
  67. package/dist/web/assets/index-Cz3AOJOw.js +142 -0
  68. package/dist/web/assets/index-DaMLk_sl.css +1 -0
  69. package/dist/web/assets/{info-OHQRW6UA-717A6Kfa.js → info-OHQRW6UA-K8BF1xZb.js} +1 -1
  70. package/dist/web/assets/{infoDiagram-MVDRKAX5-D-fxOvE-.js → infoDiagram-MVDRKAX5-QaWV5-SY.js} +1 -1
  71. package/dist/web/assets/{ishikawaDiagram-HPEHV2GE-CKrXOGrR.js → ishikawaDiagram-HPEHV2GE-DpVz_sC0.js} +1 -1
  72. package/dist/web/assets/{journeyDiagram-BOSHW7O7-BLD4lmI6.js → journeyDiagram-BOSHW7O7-S9MzozV7.js} +1 -1
  73. package/dist/web/assets/{kanban-definition-FNSA4HC5-Mj1GI5Fb.js → kanban-definition-FNSA4HC5-BiU8Ibw-.js} +1 -1
  74. package/dist/web/assets/{line-DotNyRbu.js → line-B1KaX5ms.js} +1 -1
  75. package/dist/web/assets/{linear-DQ0Uvp2K.js → linear-Cg1dwAtU.js} +1 -1
  76. package/dist/web/assets/{mermaid-parser.core-BtFC_UVn.js → mermaid-parser.core-hzYHYxfI.js} +3 -3
  77. package/dist/web/assets/{mermaid.core-DHL14mKq.js → mermaid.core-N8xYYvXy.js} +4 -4
  78. package/dist/web/assets/{mindmap-definition-6OY57UG3-CMCguBhk.js → mindmap-definition-6OY57UG3-BmIQCrEd.js} +1 -1
  79. package/dist/web/assets/{packet-JDAUHWVQ-CGyEqUmo.js → packet-JDAUHWVQ-DhOTX9De.js} +1 -1
  80. package/dist/web/assets/{pegDiagram-ECIUJNBX-DPgLxTHJ.js → pegDiagram-ECIUJNBX-CVfE6yUu.js} +1 -1
  81. package/dist/web/assets/{pie-XZMESJXO-Ddsl6geS.js → pie-XZMESJXO-BayfKVL8.js} +1 -1
  82. package/dist/web/assets/{pieDiagram-GNMPY74T-BJdkqrU_.js → pieDiagram-GNMPY74T-ClbMRve3.js} +1 -1
  83. package/dist/web/assets/{quadrantDiagram-D57K4MC3-47l23gov.js → quadrantDiagram-D57K4MC3-DFp-P_EZ.js} +1 -1
  84. package/dist/web/assets/{radar-ABXABTNO-DAyB1li0.js → radar-ABXABTNO-Bt1EAsxC.js} +1 -1
  85. package/dist/web/assets/{railroad-I3PHUGI6-BZYuBfPR.js → railroad-I3PHUGI6-CSos2Rm9.js} +1 -1
  86. package/dist/web/assets/{railroad-abnf-LNEFI6M7-PBkoxIWP.js → railroad-abnf-LNEFI6M7-CebY-3Kh.js} +1 -1
  87. package/dist/web/assets/{railroad-ebnf-DWYD2UWJ-Bl_rTgpR.js → railroad-ebnf-DWYD2UWJ-DpA6-TBs.js} +1 -1
  88. package/dist/web/assets/{railroad-peg-JR7BVNR7-U9kj7aP3.js → railroad-peg-JR7BVNR7-Bg3QPvi5.js} +1 -1
  89. package/dist/web/assets/{railroadDiagram-Y72NRBL7-Dpq4us5_.js → railroadDiagram-Y72NRBL7-BM4RAgqS.js} +1 -1
  90. package/dist/web/assets/{requirementDiagram-EQYSW5RA-CCqQbcTz.js → requirementDiagram-EQYSW5RA-CqP9bCS_.js} +1 -1
  91. package/dist/web/assets/{sankeyDiagram-SY24JHO5-DDwytZM3.js → sankeyDiagram-SY24JHO5-BhS8f6-k.js} +1 -1
  92. package/dist/web/assets/{sequenceDiagram-BLEHNHQU-C-z57Y06.js → sequenceDiagram-BLEHNHQU-p3C1DgeC.js} +1 -1
  93. package/dist/web/assets/{src-CK51kAyQ.js → src-9XJAFibc.js} +1 -1
  94. package/dist/web/assets/{stateDiagram-v2-A6IESKWZ-DgTp0O6g.js → stateDiagram-v2-A6IESKWZ-DVVy8chY.js} +1 -1
  95. package/dist/web/assets/{swimlanes-B3ENRKFQ-BiyS7wH3.js → swimlanes-B3ENRKFQ-CtMPO6Gw.js} +1 -1
  96. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-BRXJWgnO.js +8 -0
  97. package/dist/web/assets/{timeline-definition-JXYKGLGB-D_PAPA8Z.js → timeline-definition-JXYKGLGB-DuTqpjLQ.js} +1 -1
  98. package/dist/web/assets/{treeView-D4JQ5SDB-m1fbOydD.js → treeView-D4JQ5SDB-qpOZEphu.js} +1 -1
  99. package/dist/web/assets/{treemap-SAJKECNS-Bxt7Udu9.js → treemap-SAJKECNS-Dm6e3TpG.js} +1 -1
  100. package/dist/web/assets/{usecaseDiagram-WPOLBNNX-BTrMcoPL.js → usecaseDiagram-WPOLBNNX-DoCSdm5y.js} +1 -1
  101. package/dist/web/assets/{vennDiagram-Q3Y3IDCW-C_kOOxPJ.js → vennDiagram-Q3Y3IDCW-qzd4yvh5.js} +1 -1
  102. package/dist/web/assets/{wardley-7MLQ67FV-C33rdYbB.js → wardley-7MLQ67FV-CkcgIQgQ.js} +1 -1
  103. package/dist/web/assets/{wardleyDiagram-IVAIDKWA-DpG2rl09.js → wardleyDiagram-IVAIDKWA-CE6OR9hA.js} +1 -1
  104. package/dist/web/assets/{xychartDiagram-4URNHDU4-5a7LnsSZ.js → xychartDiagram-4URNHDU4-OrFXHVc6.js} +1 -1
  105. package/dist/web/index.html +2 -2
  106. package/package.json +3 -3
  107. package/dist/web/assets/channel-CV6Myu73.js +0 -1
  108. package/dist/web/assets/flowDiagram-IUGLLWBU-CiUTloqN.js +0 -1
  109. package/dist/web/assets/index-DYwdlB-_.js +0 -142
  110. package/dist/web/assets/index-TP24ydrn.css +0 -1
  111. package/dist/web/assets/swimlanesDiagram-AYQRV4AK-DJ90Jhqq.js +0 -8
@@ -0,0 +1,138 @@
1
+ import { accessSync, constants, mkdirSync, realpathSync, statSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { eq } from "drizzle-orm";
4
+ import { AppError } from "../shared/errors.js";
5
+ import { operations, sessionWorkspaces } from "./db/schema.js";
6
+ import { containsPath } from "./projects.js";
7
+ class WorkspaceRegistry {
8
+ constructor(database, projects, root) {
9
+ this.database = database;
10
+ this.projects = projects;
11
+ this.root = root;
12
+ }
13
+ database;
14
+ projects;
15
+ root;
16
+ unavailable(cause) {
17
+ return new AppError(
18
+ "WORKSPACE_UNAVAILABLE",
19
+ cause instanceof Error ? `\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0D\u53EF\u7528\uFF1A${cause.message}` : "\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0D\u53EF\u7528",
20
+ 409
21
+ );
22
+ }
23
+ defaultsDirectory() {
24
+ if (!this.root) throw this.unavailable();
25
+ try {
26
+ mkdirSync(this.root, { recursive: true, mode: 448 });
27
+ const root = realpathSync(this.root);
28
+ accessSync(root, constants.R_OK | constants.W_OK | constants.X_OK);
29
+ return root;
30
+ } catch (error) {
31
+ throw this.unavailable(error);
32
+ }
33
+ }
34
+ allocations() {
35
+ return this.database.select().from(sessionWorkspaces).all();
36
+ }
37
+ /** A dedicated directory lets us identify a creation whose RPC receipt was lost. */
38
+ recoverCreation(threadId, cwd) {
39
+ const canonical = realpathSync(cwd);
40
+ const row = this.allocations().find((entry) => entry.canonicalRoot === canonical);
41
+ if (!row || row.threadId !== null && row.threadId !== threadId) return;
42
+ const operation = this.database.select().from(operations).where(eq(operations.clientOperationId, row.operationId)).get();
43
+ if (operation?.state !== "unknown" || !["thread.create", "thread.fork"].includes(operation.kind))
44
+ return;
45
+ this.bind(row.operationId, threadId, cwd);
46
+ return row.operationId;
47
+ }
48
+ inspect(row) {
49
+ try {
50
+ if (realpathSync(row.rootPath) !== row.canonicalRoot || !statSync(row.canonicalRoot).isDirectory())
51
+ throw new Error("\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u771F\u5B9E\u8DEF\u5F84\u5DF2\u6539\u53D8");
52
+ accessSync(row.canonicalRoot, constants.R_OK | constants.X_OK);
53
+ return {
54
+ projectId: null,
55
+ cwd: row.canonicalRoot,
56
+ rootPath: row.rootPath,
57
+ canonicalRoot: row.canonicalRoot,
58
+ workspaceKey: row.canonicalRoot
59
+ };
60
+ } catch (error) {
61
+ throw this.unavailable(error);
62
+ }
63
+ }
64
+ allocate(operationId) {
65
+ const existing = this.database.select().from(sessionWorkspaces).where(eq(sessionWorkspaces.operationId, operationId)).get();
66
+ if (existing) return this.inspect(existing);
67
+ const root = this.defaultsDirectory();
68
+ const rootPath = join(root, operationId);
69
+ try {
70
+ mkdirSync(rootPath, { mode: 448 });
71
+ const row = {
72
+ operationId,
73
+ threadId: null,
74
+ rootPath,
75
+ canonicalRoot: realpathSync(rootPath),
76
+ createdAt: Date.now()
77
+ };
78
+ this.database.insert(sessionWorkspaces).values(row).run();
79
+ return this.inspect(row);
80
+ } catch (error) {
81
+ throw this.unavailable(error);
82
+ }
83
+ }
84
+ bind(operationId, threadId, cwd) {
85
+ const row = this.database.select().from(sessionWorkspaces).where(eq(sessionWorkspaces.operationId, operationId)).get();
86
+ if (!row || row.threadId !== null && row.threadId !== threadId) throw this.unavailable();
87
+ const scope = this.inspect(row);
88
+ if (realpathSync(cwd) !== scope.cwd) throw this.unavailable();
89
+ this.database.update(sessionWorkspaces).set({ threadId }).where(eq(sessionWorkspaces.operationId, operationId)).run();
90
+ }
91
+ assertOwnership(projectId, cwd, threadId) {
92
+ if (projectId !== null) {
93
+ const ownership = this.projects.assertOwnership(projectId, cwd);
94
+ this.assertOutsideManaged(ownership.cwd);
95
+ return {
96
+ ...ownership,
97
+ projectId,
98
+ rootPath: ownership.project.rootPath,
99
+ canonicalRoot: ownership.project.canonicalRoot
100
+ };
101
+ }
102
+ const row = this.database.select().from(sessionWorkspaces).where(eq(sessionWorkspaces.threadId, threadId)).get();
103
+ if (!row) throw new AppError("PROJECT_OWNERSHIP", "\u4F1A\u8BDD\u6CA1\u6709\u5DF2\u5206\u914D\u7684\u5DE5\u4F5C\u76EE\u5F55", 403);
104
+ const scope = this.inspect(row);
105
+ if (realpathSync(cwd) !== scope.cwd)
106
+ throw new AppError("PROJECT_OWNERSHIP", "\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0E\u5DF2\u4FDD\u5B58\u7684\u5173\u8054\u4E0D\u4E00\u81F4", 403);
107
+ return scope;
108
+ }
109
+ assertProjectDirectory(cwd) {
110
+ let canonical;
111
+ try {
112
+ canonical = realpathSync(cwd);
113
+ } catch {
114
+ return;
115
+ }
116
+ this.assertOutsideManaged(canonical);
117
+ }
118
+ assertOutsideManaged(cwd) {
119
+ let root = this.root;
120
+ try {
121
+ if (root) root = realpathSync(root);
122
+ } catch {
123
+ }
124
+ if (root && containsPath(root, cwd) || this.allocations().some((row) => containsPath(row.canonicalRoot, cwd)))
125
+ throw new AppError("PROJECT_OWNERSHIP", "\u5E94\u7528\u7BA1\u7406\u7684\u4F1A\u8BDD\u76EE\u5F55\u4E0D\u80FD\u5F52\u5165\u9879\u76EE", 403);
126
+ }
127
+ findOwner(cwd, threadId) {
128
+ const row = this.database.select().from(sessionWorkspaces).where(eq(sessionWorkspaces.threadId, threadId)).get();
129
+ if (row) return this.assertOwnership(null, cwd, threadId);
130
+ this.assertOutsideManaged(realpathSync(cwd));
131
+ const ownership = this.projects.findOwner(cwd);
132
+ return this.assertOwnership(ownership.project.id, cwd, threadId);
133
+ }
134
+ }
135
+ export {
136
+ WorkspaceRegistry
137
+ };
138
+ //# sourceMappingURL=workspaces.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/server/workspaces.ts"],
4
+ "sourcesContent": ["import { accessSync, constants, mkdirSync, realpathSync, statSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { eq } from 'drizzle-orm';\nimport { AppError } from '../shared/errors.js';\nimport type { AppDatabase } from './db/index.js';\nimport { operations, sessionWorkspaces } from './db/schema.js';\nimport { containsPath, ProjectRegistry } from './projects.js';\n\ntype Allocation = typeof sessionWorkspaces.$inferSelect;\nexport interface WorkspaceOwnership {\n projectId: string | null;\n cwd: string;\n rootPath: string;\n canonicalRoot: string;\n workspaceKey: string;\n}\n\n/** A project association and a server-owned session directory are separate identities. */\nexport class WorkspaceRegistry {\n constructor(\n private readonly database: AppDatabase,\n private readonly projects: ProjectRegistry,\n private readonly root?: string,\n ) {}\n\n private unavailable(cause?: unknown): AppError {\n return new AppError(\n 'WORKSPACE_UNAVAILABLE',\n cause instanceof Error ? `\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0D\u53EF\u7528\uFF1A${cause.message}` : '\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0D\u53EF\u7528',\n 409,\n );\n }\n\n defaultsDirectory(): string {\n if (!this.root) throw this.unavailable();\n try {\n mkdirSync(this.root, { recursive: true, mode: 0o700 });\n const root = realpathSync(this.root);\n accessSync(root, constants.R_OK | constants.W_OK | constants.X_OK);\n return root;\n } catch (error) {\n throw this.unavailable(error);\n }\n }\n\n allocations(): Allocation[] {\n return this.database.select().from(sessionWorkspaces).all();\n }\n\n /** A dedicated directory lets us identify a creation whose RPC receipt was lost. */\n recoverCreation(threadId: string, cwd: string): string | undefined {\n const canonical = realpathSync(cwd);\n const row = this.allocations().find((entry) => entry.canonicalRoot === canonical);\n if (!row || (row.threadId !== null && row.threadId !== threadId)) return;\n const operation = this.database\n .select()\n .from(operations)\n .where(eq(operations.clientOperationId, row.operationId))\n .get();\n if (\n operation?.state !== 'unknown' ||\n !['thread.create', 'thread.fork'].includes(operation.kind)\n )\n return;\n this.bind(row.operationId, threadId, cwd);\n return row.operationId;\n }\n\n private inspect(row: Allocation): WorkspaceOwnership {\n try {\n if (\n realpathSync(row.rootPath) !== row.canonicalRoot ||\n !statSync(row.canonicalRoot).isDirectory()\n )\n throw new Error('\u76EE\u5F55\u4E0D\u5B58\u5728\u6216\u771F\u5B9E\u8DEF\u5F84\u5DF2\u6539\u53D8');\n accessSync(row.canonicalRoot, constants.R_OK | constants.X_OK);\n return {\n projectId: null,\n cwd: row.canonicalRoot,\n rootPath: row.rootPath,\n canonicalRoot: row.canonicalRoot,\n workspaceKey: row.canonicalRoot,\n };\n } catch (error) {\n throw this.unavailable(error);\n }\n }\n\n allocate(operationId: string): WorkspaceOwnership {\n const existing = this.database\n .select()\n .from(sessionWorkspaces)\n .where(eq(sessionWorkspaces.operationId, operationId))\n .get();\n if (existing) return this.inspect(existing);\n const root = this.defaultsDirectory();\n const rootPath = join(root, operationId);\n try {\n // Never reuse an unrecorded directory, including one left by a crashed mkdir.\n mkdirSync(rootPath, { mode: 0o700 });\n const row = {\n operationId,\n threadId: null,\n rootPath,\n canonicalRoot: realpathSync(rootPath),\n createdAt: Date.now(),\n };\n this.database.insert(sessionWorkspaces).values(row).run();\n return this.inspect(row);\n } catch (error) {\n throw this.unavailable(error);\n }\n }\n\n bind(operationId: string, threadId: string, cwd: string): void {\n const row = this.database\n .select()\n .from(sessionWorkspaces)\n .where(eq(sessionWorkspaces.operationId, operationId))\n .get();\n if (!row || (row.threadId !== null && row.threadId !== threadId)) throw this.unavailable();\n const scope = this.inspect(row);\n if (realpathSync(cwd) !== scope.cwd) throw this.unavailable();\n this.database\n .update(sessionWorkspaces)\n .set({ threadId })\n .where(eq(sessionWorkspaces.operationId, operationId))\n .run();\n }\n\n assertOwnership(projectId: string | null, cwd: string, threadId: string): WorkspaceOwnership {\n if (projectId !== null) {\n const ownership = this.projects.assertOwnership(projectId, cwd);\n this.assertOutsideManaged(ownership.cwd);\n return {\n ...ownership,\n projectId,\n rootPath: ownership.project.rootPath,\n canonicalRoot: ownership.project.canonicalRoot,\n };\n }\n const row = this.database\n .select()\n .from(sessionWorkspaces)\n .where(eq(sessionWorkspaces.threadId, threadId))\n .get();\n if (!row) throw new AppError('PROJECT_OWNERSHIP', '\u4F1A\u8BDD\u6CA1\u6709\u5DF2\u5206\u914D\u7684\u5DE5\u4F5C\u76EE\u5F55', 403);\n const scope = this.inspect(row);\n if (realpathSync(cwd) !== scope.cwd)\n throw new AppError('PROJECT_OWNERSHIP', '\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u4E0E\u5DF2\u4FDD\u5B58\u7684\u5173\u8054\u4E0D\u4E00\u81F4', 403);\n return scope;\n }\n\n assertProjectDirectory(cwd: string): void {\n let canonical: string;\n try {\n canonical = realpathSync(cwd);\n } catch {\n return;\n }\n this.assertOutsideManaged(canonical);\n }\n\n private assertOutsideManaged(cwd: string): void {\n let root = this.root;\n try {\n if (root) root = realpathSync(root);\n } catch {\n /* A missing root has no files to adopt. */\n }\n if (\n (root && containsPath(root, cwd)) ||\n this.allocations().some((row) => containsPath(row.canonicalRoot, cwd))\n )\n throw new AppError('PROJECT_OWNERSHIP', '\u5E94\u7528\u7BA1\u7406\u7684\u4F1A\u8BDD\u76EE\u5F55\u4E0D\u80FD\u5F52\u5165\u9879\u76EE', 403);\n }\n\n findOwner(cwd: string, threadId: string): WorkspaceOwnership {\n const row = this.database\n .select()\n .from(sessionWorkspaces)\n .where(eq(sessionWorkspaces.threadId, threadId))\n .get();\n if (row) return this.assertOwnership(null, cwd, threadId);\n this.assertOutsideManaged(realpathSync(cwd));\n const ownership = this.projects.findOwner(cwd);\n return this.assertOwnership(ownership.project.id, cwd, threadId);\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,YAAY,WAAW,WAAW,cAAc,gBAAgB;AACzE,SAAS,YAAY;AACrB,SAAS,UAAU;AACnB,SAAS,gBAAgB;AAEzB,SAAS,YAAY,yBAAyB;AAC9C,SAAS,oBAAqC;AAYvC,MAAM,kBAAkB;AAAA,EAC7B,YACmB,UACA,UACA,MACjB;AAHiB;AACA;AACA;AAAA,EAChB;AAAA,EAHgB;AAAA,EACA;AAAA,EACA;AAAA,EAGX,YAAY,OAA2B;AAC7C,WAAO,IAAI;AAAA,MACT;AAAA,MACA,iBAAiB,QAAQ,+DAAa,MAAM,OAAO,KAAK;AAAA,MACxD;AAAA,IACF;AAAA,EACF;AAAA,EAEA,oBAA4B;AAC1B,QAAI,CAAC,KAAK,KAAM,OAAM,KAAK,YAAY;AACvC,QAAI;AACF,gBAAU,KAAK,MAAM,EAAE,WAAW,MAAM,MAAM,IAAM,CAAC;AACrD,YAAM,OAAO,aAAa,KAAK,IAAI;AACnC,iBAAW,MAAM,UAAU,OAAO,UAAU,OAAO,UAAU,IAAI;AACjE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,KAAK,YAAY,KAAK;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,cAA4B;AAC1B,WAAO,KAAK,SAAS,OAAO,EAAE,KAAK,iBAAiB,EAAE,IAAI;AAAA,EAC5D;AAAA;AAAA,EAGA,gBAAgB,UAAkB,KAAiC;AACjE,UAAM,YAAY,aAAa,GAAG;AAClC,UAAM,MAAM,KAAK,YAAY,EAAE,KAAK,CAAC,UAAU,MAAM,kBAAkB,SAAS;AAChF,QAAI,CAAC,OAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,SAAW;AAClE,UAAM,YAAY,KAAK,SACpB,OAAO,EACP,KAAK,UAAU,EACf,MAAM,GAAG,WAAW,mBAAmB,IAAI,WAAW,CAAC,EACvD,IAAI;AACP,QACE,WAAW,UAAU,aACrB,CAAC,CAAC,iBAAiB,aAAa,EAAE,SAAS,UAAU,IAAI;AAEzD;AACF,SAAK,KAAK,IAAI,aAAa,UAAU,GAAG;AACxC,WAAO,IAAI;AAAA,EACb;AAAA,EAEQ,QAAQ,KAAqC;AACnD,QAAI;AACF,UACE,aAAa,IAAI,QAAQ,MAAM,IAAI,iBACnC,CAAC,SAAS,IAAI,aAAa,EAAE,YAAY;AAEzC,cAAM,IAAI,MAAM,gFAAe;AACjC,iBAAW,IAAI,eAAe,UAAU,OAAO,UAAU,IAAI;AAC7D,aAAO;AAAA,QACL,WAAW;AAAA,QACX,KAAK,IAAI;AAAA,QACT,UAAU,IAAI;AAAA,QACd,eAAe,IAAI;AAAA,QACnB,cAAc,IAAI;AAAA,MACpB;AAAA,IACF,SAAS,OAAO;AACd,YAAM,KAAK,YAAY,KAAK;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,SAAS,aAAyC;AAChD,UAAM,WAAW,KAAK,SACnB,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GAAG,kBAAkB,aAAa,WAAW,CAAC,EACpD,IAAI;AACP,QAAI,SAAU,QAAO,KAAK,QAAQ,QAAQ;AAC1C,UAAM,OAAO,KAAK,kBAAkB;AACpC,UAAM,WAAW,KAAK,MAAM,WAAW;AACvC,QAAI;AAEF,gBAAU,UAAU,EAAE,MAAM,IAAM,CAAC;AACnC,YAAM,MAAM;AAAA,QACV;AAAA,QACA,UAAU;AAAA,QACV;AAAA,QACA,eAAe,aAAa,QAAQ;AAAA,QACpC,WAAW,KAAK,IAAI;AAAA,MACtB;AACA,WAAK,SAAS,OAAO,iBAAiB,EAAE,OAAO,GAAG,EAAE,IAAI;AACxD,aAAO,KAAK,QAAQ,GAAG;AAAA,IACzB,SAAS,OAAO;AACd,YAAM,KAAK,YAAY,KAAK;AAAA,IAC9B;AAAA,EACF;AAAA,EAEA,KAAK,aAAqB,UAAkB,KAAmB;AAC7D,UAAM,MAAM,KAAK,SACd,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GAAG,kBAAkB,aAAa,WAAW,CAAC,EACpD,IAAI;AACP,QAAI,CAAC,OAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,SAAW,OAAM,KAAK,YAAY;AACzF,UAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,QAAI,aAAa,GAAG,MAAM,MAAM,IAAK,OAAM,KAAK,YAAY;AAC5D,SAAK,SACF,OAAO,iBAAiB,EACxB,IAAI,EAAE,SAAS,CAAC,EAChB,MAAM,GAAG,kBAAkB,aAAa,WAAW,CAAC,EACpD,IAAI;AAAA,EACT;AAAA,EAEA,gBAAgB,WAA0B,KAAa,UAAsC;AAC3F,QAAI,cAAc,MAAM;AACtB,YAAM,YAAY,KAAK,SAAS,gBAAgB,WAAW,GAAG;AAC9D,WAAK,qBAAqB,UAAU,GAAG;AACvC,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,QACA,UAAU,UAAU,QAAQ;AAAA,QAC5B,eAAe,UAAU,QAAQ;AAAA,MACnC;AAAA,IACF;AACA,UAAM,MAAM,KAAK,SACd,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GAAG,kBAAkB,UAAU,QAAQ,CAAC,EAC9C,IAAI;AACP,QAAI,CAAC,IAAK,OAAM,IAAI,SAAS,qBAAqB,4EAAgB,GAAG;AACrE,UAAM,QAAQ,KAAK,QAAQ,GAAG;AAC9B,QAAI,aAAa,GAAG,MAAM,MAAM;AAC9B,YAAM,IAAI,SAAS,qBAAqB,oGAAoB,GAAG;AACjE,WAAO;AAAA,EACT;AAAA,EAEA,uBAAuB,KAAmB;AACxC,QAAI;AACJ,QAAI;AACF,kBAAY,aAAa,GAAG;AAAA,IAC9B,QAAQ;AACN;AAAA,IACF;AACA,SAAK,qBAAqB,SAAS;AAAA,EACrC;AAAA,EAEQ,qBAAqB,KAAmB;AAC9C,QAAI,OAAO,KAAK;AAChB,QAAI;AACF,UAAI,KAAM,QAAO,aAAa,IAAI;AAAA,IACpC,QAAQ;AAAA,IAER;AACA,QACG,QAAQ,aAAa,MAAM,GAAG,KAC/B,KAAK,YAAY,EAAE,KAAK,CAAC,QAAQ,aAAa,IAAI,eAAe,GAAG,CAAC;AAErE,YAAM,IAAI,SAAS,qBAAqB,8FAAmB,GAAG;AAAA,EAClE;AAAA,EAEA,UAAU,KAAa,UAAsC;AAC3D,UAAM,MAAM,KAAK,SACd,OAAO,EACP,KAAK,iBAAiB,EACtB,MAAM,GAAG,kBAAkB,UAAU,QAAQ,CAAC,EAC9C,IAAI;AACP,QAAI,IAAK,QAAO,KAAK,gBAAgB,MAAM,KAAK,QAAQ;AACxD,SAAK,qBAAqB,aAAa,GAAG,CAAC;AAC3C,UAAM,YAAY,KAAK,SAAS,UAAU,GAAG;AAC7C,WAAO,KAAK,gBAAgB,UAAU,QAAQ,IAAI,KAAK,QAAQ;AAAA,EACjE;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,9 @@
1
+ const UNASSIGNED_SCOPE = "@unassigned";
2
+ const scopeKey = (projectId) => projectId ?? UNASSIGNED_SCOPE;
3
+ const scopeApi = (scope) => scope === UNASSIGNED_SCOPE ? "/api/unassigned" : `/api/projects/${encodeURIComponent(scope)}`;
4
+ export {
5
+ UNASSIGNED_SCOPE,
6
+ scopeApi,
7
+ scopeKey
8
+ };
9
+ //# sourceMappingURL=workspace-scope.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/shared/workspace-scope.ts"],
4
+ "sourcesContent": ["/** Navigation keys are distinct from persisted project identities. */\nexport const UNASSIGNED_SCOPE = '@unassigned';\nexport const scopeKey = (projectId: string | null): string => projectId ?? UNASSIGNED_SCOPE;\nexport const scopeApi = (scope: string): string =>\n scope === UNASSIGNED_SCOPE ? '/api/unassigned' : `/api/projects/${encodeURIComponent(scope)}`;\n"],
5
+ "mappings": "AACO,MAAM,mBAAmB;AACzB,MAAM,WAAW,CAAC,cAAqC,aAAa;AACpE,MAAM,WAAW,CAAC,UACvB,UAAU,mBAAmB,oBAAoB,iBAAiB,mBAAmB,KAAK,CAAC;",
6
+ "names": []
7
+ }
@@ -1 +1 @@
1
- import{m as e,t}from"./mermaid-parser.core-BtFC_UVn.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-CK51kAyQ.js";import"./chunk-DSNLSHJZ-ClfNpgVO.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-SlpXCVVC.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-DHL14mKq.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
1
+ import{m as e,t}from"./mermaid-parser.core-hzYHYxfI.js";import{n}from"./chunk-Y2CYZVJY-DsF7k-Jl.js";import{m as r}from"./src-9XJAFibc.js";import"./chunk-DSNLSHJZ-5TwmEPWR.js";import{n as i,r as a,t as o}from"./chunk-2E7WHVMD-BssauSch.js";import{t as s}from"./chunk-JWPE2WC7-DVXcaiue.js";import"./mermaid.core-N8xYYvXy.js";var c=e().RailroadAbnf.parser.LangiumParser,l=n(e=>{let t=e.alternatives.map(u);return t.length===1?t[0]:{type:`choice`,alternatives:t}},`transformAlternation`),u=n(e=>{let t=e.elements.map(f);return t.length===1?t[0]:{type:`sequence`,elements:t}},`transformConcatenation`),d=n(e=>{if(e.includes(`*`)){let[t,n]=e.split(`*`);return{min:t?parseInt(t,10):0,max:n?parseInt(n,10):1/0}}let t=parseInt(e,10);return{min:t,max:t}},`parseRepeat`),f=n(e=>{let t=p(e.primary);if(!e.repeat)return t;let{min:n,max:r}=d(e.repeat);return n===0&&r===1?{type:`optional`,element:t}:{type:`repetition`,element:t,min:n,max:r}},`transformElement`),p=n(e=>{switch(e.$type){case`AbnfStringLiteral`:return{type:`terminal`,value:e.value};case`AbnfNumVal`:return{type:`terminal`,value:e.value};case`AbnfRuleName`:return{type:`nonterminal`,name:e.name};case`AbnfGroup`:return l(e.element);case`AbnfOptionalGroup`:return{type:`optional`,element:l(e.element)};default:throw Error(`Unsupported ABNF primary node: ${e.$type}`)}},`transformPrimary`),m=n(e=>({name:e.name,definition:l(e.definition)}),`transformRule`),h=n(e=>{s(e,o),e.title&&o.setTitle(e.title),e.rules.map(e=>o.addRule(m(e)))},`populateDb`),g={parser:{parse:n(e=>{o.clear(),r.debug(`[ABNF Parser] Starting Langium parse`);let n=c.parse(e);if(n.lexerErrors.length>0||n.parserErrors.length>0)throw new t(n);let i=n.value;r.debug(`[ABNF Parser] Parsed rules:`,i.rules.length),h(i),r.debug(`[ABNF Parser] Parse complete`)},`parse`),parser:{yy:o}},db:o,renderer:a,styles:i};export{g as diagram};
@@ -1 +1 @@
1
- import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-DMGebNoK.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
1
+ import{n as e,t}from"./path-fybaL0A-.js";import{a as n,c as r,d as i,f as a,i as o,l as s,m as c,n as l,o as u,p as d,r as f,u as p}from"./dist-D8kDnYqD.js";function m(e){return e.innerRadius}function h(e){return e.outerRadius}function g(e){return e.startAngle}function _(e){return e.endAngle}function v(e){return e&&e.padAngle}function y(e,t,n,r,i,a,o,s){var c=n-e,l=r-t,u=o-i,d=s-a,f=d*c-u*l;if(!(f*f<1e-12))return f=(u*(t-a)-d*(e-i))/f,[e+f*c,t+f*l]}function b(e,t,n,r,i,a,o){var c=e-n,l=t-r,u=(o?a:-a)/d(c*c+l*l),f=u*l,p=-u*c,m=e+f,h=t+p,g=n+f,_=r+p,v=(m+g)/2,y=(h+_)/2,b=g-m,x=_-h,S=b*b+x*x,C=i-a,w=m*_-g*h,T=(x<0?-1:1)*d(s(0,C*C*S-w*w)),E=(w*x-b*T)/S,D=(-w*b-x*T)/S,O=(w*x+b*T)/S,k=(-w*b+x*T)/S,A=E-v,j=D-y,M=O-v,N=k-y;return A*A+j*j>M*M+N*N&&(E=O,D=k),{cx:E,cy:D,x01:-f,y01:-p,x11:E*(i/C-1),y11:D*(i/C-1)}}function x(){var s=m,x=h,S=e(0),C=null,w=g,T=_,E=v,D=null,O=t(k);function k(){var e,t,m=+s.apply(this,arguments),h=+x.apply(this,arguments),g=w.apply(this,arguments)-r,_=T.apply(this,arguments)-r,v=l(_-g),k=_>g;if(D||=e=O(),h<m&&(t=h,h=m,m=t),!(h>1e-12))D.moveTo(0,0);else if(v>c-1e-12)D.moveTo(h*u(g),h*a(g)),D.arc(0,0,h,g,_,!k),m>1e-12&&(D.moveTo(m*u(_),m*a(_)),D.arc(0,0,m,_,g,k));else{var A=g,j=_,M=g,N=_,P=v,F=v,I=E.apply(this,arguments)/2,L=I>1e-12&&(C?+C.apply(this,arguments):d(m*m+h*h)),R=p(l(h-m)/2,+S.apply(this,arguments)),z=R,B=R,V,H;if(L>1e-12){var U=o(L/m*a(I)),W=o(L/h*a(I));(P-=U*2)>1e-12?(U*=k?1:-1,M+=U,N-=U):(P=0,M=N=(g+_)/2),(F-=W*2)>1e-12?(W*=k?1:-1,A+=W,j-=W):(F=0,A=j=(g+_)/2)}var G=h*u(A),K=h*a(A),q=m*u(N),J=m*a(N);if(R>1e-12){var Y=h*u(j),X=h*a(j),Z=m*u(M),Q=m*a(M),$;if(v<i){if($=y(G,K,Z,Q,Y,X,q,J)){var ee=G-$[0],te=K-$[1],ne=Y-$[0],re=X-$[1],ie=1/a(f((ee*ne+te*re)/(d(ee*ee+te*te)*d(ne*ne+re*re)))/2),ae=d($[0]*$[0]+$[1]*$[1]);z=p(R,(m-ae)/(ie-1)),B=p(R,(h-ae)/(ie+1))}else z=B=0}}F>1e-12?B>1e-12?(V=b(Z,Q,G,K,h,B,k),H=b(Y,X,q,J,h,B,k),D.moveTo(V.cx+V.x01,V.cy+V.y01),B<R?D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,B,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,h,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),!k),D.arc(H.cx,H.cy,B,n(H.y11,H.x11),n(H.y01,H.x01),!k))):(D.moveTo(G,K),D.arc(0,0,h,A,j,!k)):D.moveTo(G,K),!(m>1e-12)||!(P>1e-12)?D.lineTo(q,J):z>1e-12?(V=b(q,J,Y,X,m,-z,k),H=b(G,K,Z,Q,m,-z,k),D.lineTo(V.cx+V.x01,V.cy+V.y01),z<R?D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(H.y01,H.x01),!k):(D.arc(V.cx,V.cy,z,n(V.y01,V.x01),n(V.y11,V.x11),!k),D.arc(0,0,m,n(V.cy+V.y11,V.cx+V.x11),n(H.cy+H.y11,H.cx+H.x11),k),D.arc(H.cx,H.cy,z,n(H.y11,H.x11),n(H.y01,H.x01),!k))):D.arc(0,0,m,N,M,k)}if(D.closePath(),e)return D=null,e+``||null}return k.centroid=function(){var e=(+s.apply(this,arguments)+ +x.apply(this,arguments))/2,t=(+w.apply(this,arguments)+ +T.apply(this,arguments))/2-i/2;return[u(t)*e,a(t)*e]},k.innerRadius=function(t){return arguments.length?(s=typeof t==`function`?t:e(+t),k):s},k.outerRadius=function(t){return arguments.length?(x=typeof t==`function`?t:e(+t),k):x},k.cornerRadius=function(t){return arguments.length?(S=typeof t==`function`?t:e(+t),k):S},k.padRadius=function(t){return arguments.length?(C=t==null?null:typeof t==`function`?t:e(+t),k):C},k.startAngle=function(t){return arguments.length?(w=typeof t==`function`?t:e(+t),k):w},k.endAngle=function(t){return arguments.length?(T=typeof t==`function`?t:e(+t),k):T},k.padAngle=function(t){return arguments.length?(E=typeof t==`function`?t:e(+t),k):E},k.context=function(e){return arguments.length?(D=e??null,k):D},k}export{x as t};
@@ -1 +1 @@
1
- import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-BtFC_UVn.js";
1
+ import"./chunk-NGNAAXSQ-C2Wy9Xmz.js";export{M as createArchitectureServices}from"./mermaid-parser.core-hzYHYxfI.js";