@cleocode/core 2026.9.16 → 2026.9.18

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 (236) hide show
  1. package/dist/changesets/parser.d.ts.map +1 -1
  2. package/dist/changesets/parser.js +67 -0
  3. package/dist/changesets/parser.js.map +1 -1
  4. package/dist/crypto/credentials.d.ts +128 -26
  5. package/dist/crypto/credentials.d.ts.map +1 -1
  6. package/dist/crypto/credentials.js +183 -142
  7. package/dist/crypto/credentials.js.map +1 -1
  8. package/dist/docs/export-document.js +14705 -12949
  9. package/dist/docs/export-document.js.map +3 -3
  10. package/dist/doctor/index.d.ts +1 -1
  11. package/dist/doctor/index.d.ts.map +1 -1
  12. package/dist/doctor/index.js +1 -1
  13. package/dist/doctor/index.js.map +1 -1
  14. package/dist/doctor/nexus-schema-residency.d.ts +1 -1
  15. package/dist/doctor/nexus-schema-residency.d.ts.map +1 -1
  16. package/dist/doctor/nexus-schema-residency.js +1 -0
  17. package/dist/doctor/nexus-schema-residency.js.map +1 -1
  18. package/dist/doctor/project-identity.d.ts +124 -0
  19. package/dist/doctor/project-identity.d.ts.map +1 -0
  20. package/dist/doctor/project-identity.js +307 -0
  21. package/dist/doctor/project-identity.js.map +1 -0
  22. package/dist/doctor/superseded-store.d.ts +8 -0
  23. package/dist/doctor/superseded-store.d.ts.map +1 -1
  24. package/dist/doctor/superseded-store.js +48 -3
  25. package/dist/doctor/superseded-store.js.map +1 -1
  26. package/dist/init.d.ts +7 -0
  27. package/dist/init.d.ts.map +1 -1
  28. package/dist/init.js +17 -2
  29. package/dist/init.js.map +1 -1
  30. package/dist/internal.d.ts +6 -3
  31. package/dist/internal.d.ts.map +1 -1
  32. package/dist/internal.js +4 -2
  33. package/dist/internal.js.map +1 -1
  34. package/dist/llm/credentials-store.d.ts +10 -0
  35. package/dist/llm/credentials-store.d.ts.map +1 -1
  36. package/dist/llm/credentials-store.js +7 -1
  37. package/dist/llm/credentials-store.js.map +1 -1
  38. package/dist/llm/plugin-facade.js +13368 -1550
  39. package/dist/llm/plugin-facade.js.map +3 -3
  40. package/dist/nexus/analyze-orchestrator.d.ts +20 -3
  41. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  42. package/dist/nexus/analyze-orchestrator.js +210 -16
  43. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  44. package/dist/nexus/assessment-store.d.ts +86 -0
  45. package/dist/nexus/assessment-store.d.ts.map +1 -0
  46. package/dist/nexus/assessment-store.js +113 -0
  47. package/dist/nexus/assessment-store.js.map +1 -0
  48. package/dist/nexus/freshness.d.ts +131 -0
  49. package/dist/nexus/freshness.d.ts.map +1 -0
  50. package/dist/nexus/freshness.js +391 -0
  51. package/dist/nexus/freshness.js.map +1 -0
  52. package/dist/nexus/graph-manifest.d.ts +88 -0
  53. package/dist/nexus/graph-manifest.d.ts.map +1 -0
  54. package/dist/nexus/graph-manifest.js +114 -0
  55. package/dist/nexus/graph-manifest.js.map +1 -0
  56. package/dist/nexus/knowledge.d.ts +21 -1
  57. package/dist/nexus/knowledge.d.ts.map +1 -1
  58. package/dist/nexus/knowledge.js +74 -37
  59. package/dist/nexus/knowledge.js.map +1 -1
  60. package/dist/nexus/path-map.d.ts +55 -0
  61. package/dist/nexus/path-map.d.ts.map +1 -0
  62. package/dist/nexus/path-map.js +87 -0
  63. package/dist/nexus/path-map.js.map +1 -0
  64. package/dist/nexus/projects-clean.d.ts +21 -28
  65. package/dist/nexus/projects-clean.d.ts.map +1 -1
  66. package/dist/nexus/projects-clean.js +168 -85
  67. package/dist/nexus/projects-clean.js.map +1 -1
  68. package/dist/nexus/query.d.ts.map +1 -1
  69. package/dist/nexus/query.js +3 -2
  70. package/dist/nexus/query.js.map +1 -1
  71. package/dist/nexus/registry-hygiene.d.ts +70 -0
  72. package/dist/nexus/registry-hygiene.d.ts.map +1 -0
  73. package/dist/nexus/registry-hygiene.js +113 -0
  74. package/dist/nexus/registry-hygiene.js.map +1 -0
  75. package/dist/nexus/registry.d.ts +2 -2
  76. package/dist/nexus/registry.d.ts.map +1 -1
  77. package/dist/nexus/registry.js +48 -12
  78. package/dist/nexus/registry.js.map +1 -1
  79. package/dist/paths.d.ts +26 -0
  80. package/dist/paths.d.ts.map +1 -1
  81. package/dist/paths.js +99 -6
  82. package/dist/paths.js.map +1 -1
  83. package/dist/release/index.d.ts +1 -1
  84. package/dist/release/index.d.ts.map +1 -1
  85. package/dist/release/index.js.map +1 -1
  86. package/dist/release/plan.d.ts +84 -2
  87. package/dist/release/plan.d.ts.map +1 -1
  88. package/dist/release/plan.js +61 -14
  89. package/dist/release/plan.js.map +1 -1
  90. package/dist/release/pr-evidence.d.ts +81 -1
  91. package/dist/release/pr-evidence.d.ts.map +1 -1
  92. package/dist/release/pr-evidence.js +149 -9
  93. package/dist/release/pr-evidence.js.map +1 -1
  94. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  95. package/dist/render/nexus/graph/index.js +8 -0
  96. package/dist/render/nexus/graph/index.js.map +1 -1
  97. package/dist/scaffold/ensure-config.d.ts +12 -3
  98. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  99. package/dist/scaffold/ensure-config.js +61 -38
  100. package/dist/scaffold/ensure-config.js.map +1 -1
  101. package/dist/scaffold/project-identity.d.ts +136 -0
  102. package/dist/scaffold/project-identity.d.ts.map +1 -0
  103. package/dist/scaffold/project-identity.js +225 -0
  104. package/dist/scaffold/project-identity.js.map +1 -0
  105. package/dist/selfimprove/fix-gen.js +13319 -1556
  106. package/dist/selfimprove/fix-gen.js.map +3 -3
  107. package/dist/store/agent-api-key.d.ts +114 -0
  108. package/dist/store/agent-api-key.d.ts.map +1 -0
  109. package/dist/store/agent-api-key.js +136 -0
  110. package/dist/store/agent-api-key.js.map +1 -0
  111. package/dist/store/agent-registry-accessor.d.ts +4 -2
  112. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  113. package/dist/store/agent-registry-accessor.js +39 -89
  114. package/dist/store/agent-registry-accessor.js.map +1 -1
  115. package/dist/store/api-key-kdf.d.ts +7 -0
  116. package/dist/store/api-key-kdf.d.ts.map +1 -1
  117. package/dist/store/api-key-kdf.js +7 -0
  118. package/dist/store/api-key-kdf.js.map +1 -1
  119. package/dist/store/backup-crypto.d.ts +49 -0
  120. package/dist/store/backup-crypto.d.ts.map +1 -1
  121. package/dist/store/backup-crypto.js +154 -0
  122. package/dist/store/backup-crypto.js.map +1 -1
  123. package/dist/store/credential-transfer.d.ts +303 -0
  124. package/dist/store/credential-transfer.d.ts.map +1 -0
  125. package/dist/store/credential-transfer.js +774 -0
  126. package/dist/store/credential-transfer.js.map +1 -0
  127. package/dist/store/exodus/column-transforms.d.ts +79 -4
  128. package/dist/store/exodus/column-transforms.d.ts.map +1 -1
  129. package/dist/store/exodus/column-transforms.js +121 -4
  130. package/dist/store/exodus/column-transforms.js.map +1 -1
  131. package/dist/store/exodus/index.d.ts +1 -0
  132. package/dist/store/exodus/index.d.ts.map +1 -1
  133. package/dist/store/exodus/index.js +1 -0
  134. package/dist/store/exodus/index.js.map +1 -1
  135. package/dist/store/exodus/migrate.d.ts +17 -1
  136. package/dist/store/exodus/migrate.d.ts.map +1 -1
  137. package/dist/store/exodus/migrate.js +155 -33
  138. package/dist/store/exodus/migrate.js.map +1 -1
  139. package/dist/store/exodus/on-open.d.ts +14 -0
  140. package/dist/store/exodus/on-open.d.ts.map +1 -1
  141. package/dist/store/exodus/on-open.js +115 -6
  142. package/dist/store/exodus/on-open.js.map +1 -1
  143. package/dist/store/exodus/reconcile.d.ts +103 -0
  144. package/dist/store/exodus/reconcile.d.ts.map +1 -0
  145. package/dist/store/exodus/reconcile.js +728 -0
  146. package/dist/store/exodus/reconcile.js.map +1 -0
  147. package/dist/store/exodus/recovery.d.ts.map +1 -1
  148. package/dist/store/exodus/recovery.js +14 -2
  149. package/dist/store/exodus/recovery.js.map +1 -1
  150. package/dist/store/exodus/runtime-targets.d.ts +39 -0
  151. package/dist/store/exodus/runtime-targets.d.ts.map +1 -0
  152. package/dist/store/exodus/runtime-targets.js +63 -0
  153. package/dist/store/exodus/runtime-targets.js.map +1 -0
  154. package/dist/store/exodus/table-name-map.d.ts.map +1 -1
  155. package/dist/store/exodus/table-name-map.js +5 -0
  156. package/dist/store/exodus/table-name-map.js.map +1 -1
  157. package/dist/store/exodus/table-order.d.ts +35 -0
  158. package/dist/store/exodus/table-order.d.ts.map +1 -0
  159. package/dist/store/exodus/table-order.js +62 -0
  160. package/dist/store/exodus/table-order.js.map +1 -0
  161. package/dist/store/exodus/verify-migration.d.ts +4 -1
  162. package/dist/store/exodus/verify-migration.d.ts.map +1 -1
  163. package/dist/store/exodus/verify-migration.js +142 -10
  164. package/dist/store/exodus/verify-migration.js.map +1 -1
  165. package/dist/store/global-salt.d.ts +16 -0
  166. package/dist/store/global-salt.d.ts.map +1 -1
  167. package/dist/store/global-salt.js +22 -7
  168. package/dist/store/global-salt.js.map +1 -1
  169. package/dist/store/legacy-tasks-lineage.d.ts +86 -0
  170. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -0
  171. package/dist/store/legacy-tasks-lineage.js +285 -0
  172. package/dist/store/legacy-tasks-lineage.js.map +1 -0
  173. package/dist/store/migration-manager.d.ts +27 -0
  174. package/dist/store/migration-manager.d.ts.map +1 -1
  175. package/dist/store/migration-manager.js +63 -0
  176. package/dist/store/migration-manager.js.map +1 -1
  177. package/dist/store/portable-bundle-import.d.ts +117 -0
  178. package/dist/store/portable-bundle-import.d.ts.map +1 -0
  179. package/dist/store/portable-bundle-import.js +589 -0
  180. package/dist/store/portable-bundle-import.js.map +1 -0
  181. package/dist/store/portable-bundle-relocate.d.ts +66 -0
  182. package/dist/store/portable-bundle-relocate.d.ts.map +1 -0
  183. package/dist/store/portable-bundle-relocate.js +304 -0
  184. package/dist/store/portable-bundle-relocate.js.map +1 -0
  185. package/dist/store/portable-bundle-scan.d.ts +167 -0
  186. package/dist/store/portable-bundle-scan.d.ts.map +1 -0
  187. package/dist/store/portable-bundle-scan.js +569 -0
  188. package/dist/store/portable-bundle-scan.js.map +1 -0
  189. package/dist/store/portable-bundle.d.ts +146 -0
  190. package/dist/store/portable-bundle.d.ts.map +1 -0
  191. package/dist/store/portable-bundle.js +674 -0
  192. package/dist/store/portable-bundle.js.map +1 -0
  193. package/dist/store/regenerators.d.ts +3 -1
  194. package/dist/store/regenerators.d.ts.map +1 -1
  195. package/dist/store/regenerators.js +6 -2
  196. package/dist/store/regenerators.js.map +1 -1
  197. package/dist/store/schema/cleo-global/nexus.d.ts +98 -0
  198. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  199. package/dist/store/schema/cleo-global/nexus.js +19 -0
  200. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  201. package/dist/store/schema/nexus-schema.d.ts +102 -0
  202. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  203. package/dist/store/schema/nexus-schema.js +24 -0
  204. package/dist/store/schema/nexus-schema.js.map +1 -1
  205. package/dist/store/split-brain-import.d.ts +176 -0
  206. package/dist/store/split-brain-import.d.ts.map +1 -0
  207. package/dist/store/split-brain-import.js +680 -0
  208. package/dist/store/split-brain-import.js.map +1 -0
  209. package/dist/store/sqlite.d.ts +29 -0
  210. package/dist/store/sqlite.d.ts.map +1 -1
  211. package/dist/store/sqlite.js +57 -5
  212. package/dist/store/sqlite.js.map +1 -1
  213. package/dist/system/health.d.ts.map +1 -1
  214. package/dist/system/health.js +30 -5
  215. package/dist/system/health.js.map +1 -1
  216. package/dist/tasks/complete.d.ts.map +1 -1
  217. package/dist/tasks/complete.js +5 -27
  218. package/dist/tasks/complete.js.map +1 -1
  219. package/dist/tasks/evidence.js +1 -1
  220. package/dist/tasks/evidence.js.map +1 -1
  221. package/dist/tasks/verification-policy.d.ts +55 -0
  222. package/dist/tasks/verification-policy.d.ts.map +1 -0
  223. package/dist/tasks/verification-policy.js +75 -0
  224. package/dist/tasks/verification-policy.js.map +1 -0
  225. package/dist/upgrade.d.ts.map +1 -1
  226. package/dist/upgrade.js +60 -0
  227. package/dist/upgrade.js.map +1 -1
  228. package/dist/validation/doctor/checks.d.ts +14 -0
  229. package/dist/validation/doctor/checks.d.ts.map +1 -1
  230. package/dist/validation/doctor/checks.js +33 -0
  231. package/dist/validation/doctor/checks.js.map +1 -1
  232. package/migrations/drizzle-cleo-global/20260924000000_t12354-project-paths/migration.sql +40 -0
  233. package/migrations/drizzle-nexus/20260924000000_t12315-nexus-parse-cache/migration.sql +21 -0
  234. package/package.json +13 -13
  235. package/templates/CLEO-INJECTION.md +3 -3
  236. package/templates/cleo-gitignore +7 -0
@@ -9,8 +9,10 @@
9
9
  * @epic T9833
10
10
  * @task T10062
11
11
  */
12
- import type { GraphIndexAssessment, GraphPublicationRows, ParserExecutionLimits } from '@cleocode/contracts';
12
+ import type { GraphIndexAssessment, GraphIndexRunSummary, GraphParseCacheEntry, GraphPublicationRows, ParserExecutionLimits } from '@cleocode/contracts';
13
13
  import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
14
+ /** Read the parse cache committed with the current generation (T12315). */
15
+ export declare function readNexusParseCache(db: NodeSQLiteDatabase): GraphParseCacheEntry[];
14
16
  /**
15
17
  * Atomically publish staged rows if the graph has not changed since assessment.
16
18
  * Failed inserts, FTS repair, or stale generations roll back the entire replacement.
@@ -37,7 +39,16 @@ export interface NexusAnalysisParams {
37
39
  projectRoot?: string;
38
40
  /** Explicit existing identity override; otherwise require persisted parent identity. */
39
41
  projectIdOverride?: string;
40
- /** When true, skip unchanged indexes and atomically rebuild changed generations. */
42
+ /**
43
+ * Parse every file instead of reusing the previous generation's extractions.
44
+ * When omitted, an analysis reuses what is provably current (T12315) and
45
+ * falls back to a full parse — reporting why — when it cannot.
46
+ */
47
+ full?: boolean;
48
+ /**
49
+ * @deprecated Incremental reuse is the default since T12315; this flag is
50
+ * accepted for compatibility and has no effect. Use `full` to force a rebuild.
51
+ */
41
52
  incremental?: boolean;
42
53
  /** Explicit relative paths of nested repositories authorized for source inclusion. */
43
54
  includedRepositories?: readonly string[];
@@ -51,12 +62,18 @@ export interface NexusAnalysisParams {
51
62
  export interface NexusAnalysisResult {
52
63
  projectId: string;
53
64
  repoPath: string;
65
+ /** Whether this run reused previous extractions (mode `incremental` or `unchanged`). */
54
66
  incremental: boolean;
67
+ /** Mode, reason, per-file counts and phase costs of this run. */
68
+ summary: GraphIndexRunSummary;
55
69
  nodeCount: number;
56
70
  relationCount: number;
57
71
  fileCount: number;
58
72
  durationMs: number;
59
- /** Committed per-file outcomes and source provenance. */
73
+ /**
74
+ * Committed per-file outcomes and source provenance, as a summary: the
75
+ * reference list is reported as `referenceCount` (T12348).
76
+ */
60
77
  assessment: GraphIndexAssessment | null;
61
78
  }
62
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-orchestrator.d.ts","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,oBAAoB,EAEpB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA6FlE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,oBAAoB,EAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,IAAI,CAgEN;AAMD,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oFAAoF;IACpF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACzC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBhG"}
1
+ {"version":3,"file":"analyze-orchestrator.d.ts","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EACV,oBAAoB,EAEpB,oBAAoB,EACpB,oBAAoB,EAEpB,oBAAoB,EACpB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAI7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AA2DlE,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,kBAAkB,GAAG,oBAAoB,EAAE,CAiBlF;AAkJD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,oBAAoB,EAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,IAAI,CAuEN;AAiCD,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,qFAAqF;IACrF,YAAY,CAAC,EAAE,qBAAqB,CAAC;IACrC,kDAAkD;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACzE;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,wFAAwF;IACxF,WAAW,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACzC;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBhG"}
@@ -18,6 +18,8 @@ import { worktreeScope } from '../paths.js';
18
18
  import { getProjectInfo } from '../project-info.js';
19
19
  import { createParserExecutionPort } from '../resources/spawn-wrapper.js';
20
20
  import { nexusNodes, nexusRelations } from '../store/schema/cleo-project/nexus-graph.js';
21
+ import { assessmentSummary, writeAssessment } from './assessment-store.js';
22
+ import { buildFileManifest, clearFileManifest, writeFileManifest, writeRunCost, } from './graph-manifest.js';
21
23
  import { generateProjectHash } from './hash.js';
22
24
  import { readKnowledgeIndexAssessment } from './knowledge.js';
23
25
  import { resolveSourceRoots } from './source-roots.js';
@@ -38,6 +40,60 @@ function rootFingerprint(roots) {
38
40
  })),
39
41
  });
40
42
  }
43
+ /**
44
+ * Compare source OWNERSHIP only — never the observed revision.
45
+ *
46
+ * Reusing a file's extraction depends on its bytes (content hash), not on which
47
+ * commit produced them, so a new commit must not by itself force a full
48
+ * rebuild (T12315). The revision is still recorded as provenance and still
49
+ * guards against concurrent change via {@link rootFingerprint}.
50
+ */
51
+ function ownershipFingerprint(roots) {
52
+ return JSON.stringify({
53
+ projectId: roots.projectId,
54
+ projectRoot: roots.projectRoot,
55
+ sourceRoot: roots.sourceRoot,
56
+ roots: roots.roots.map((root) => ({
57
+ requestedPath: root.requestedPath,
58
+ canonicalPath: root.canonicalPath,
59
+ graphPrefix: root.graphPrefix,
60
+ explicitlyIncluded: root.explicitlyIncluded,
61
+ status: root.status,
62
+ })),
63
+ });
64
+ }
65
+ /** Read the parse cache committed with the current generation (T12315). */
66
+ export function readNexusParseCache(db) {
67
+ return db
68
+ .values(sql `SELECT path, content_hash, fingerprint, generation, payload FROM main._nexus_parse_cache`)
69
+ .map((row) => {
70
+ const [path, contentHash, fingerprint, generation, payload] = row;
71
+ if (typeof path !== 'string' ||
72
+ typeof contentHash !== 'string' ||
73
+ typeof fingerprint !== 'string' ||
74
+ typeof generation !== 'string' ||
75
+ !(payload instanceof Uint8Array))
76
+ throw new Error('Invalid nexus parse cache row');
77
+ return { path, contentHash, fingerprint, generation, payload };
78
+ });
79
+ }
80
+ /** Apply a parse-cache mutation inside the caller's publication transaction. */
81
+ function applyParseCacheUpdate(tx, update) {
82
+ if (update.reset)
83
+ tx.run(sql `DELETE FROM main._nexus_parse_cache`);
84
+ for (let offset = 0; offset < update.deletePaths.length; offset += 500) {
85
+ const batch = update.deletePaths.slice(offset, offset + 500);
86
+ tx.run(sql `DELETE FROM main._nexus_parse_cache WHERE path IN (${sql.join(batch.map((path) => sql `${path}`), sql `, `)})`);
87
+ }
88
+ for (const entry of update.upserts) {
89
+ if (entry.fingerprint !== update.fingerprint)
90
+ throw new Error(`Parse cache entry ${entry.path} carries a foreign extractor fingerprint`);
91
+ tx.run(sql `INSERT INTO main._nexus_parse_cache (path, content_hash, fingerprint, generation, payload)
92
+ VALUES (${entry.path}, ${entry.contentHash}, ${entry.fingerprint}, ${entry.generation}, ${entry.payload})
93
+ ON CONFLICT(path) DO UPDATE SET content_hash = excluded.content_hash,
94
+ fingerprint = excluded.fingerprint, generation = excluded.generation, payload = excluded.payload`);
95
+ }
96
+ }
41
97
  /** Fail closed when a required root observation did not finish successfully. */
42
98
  function requireObservedRoots(roots) {
43
99
  const failed = roots.roots.filter((root) => root.status !== 'available' && root.status !== 'unversioned');
@@ -81,11 +137,59 @@ function includedRepositoryScope(db, repoPath) {
81
137
  return repository;
82
138
  });
83
139
  }
140
+ /** Read the extractor fingerprint recorded with the committed generation (T12315). */
141
+ function publishedExtractorFingerprint(db) {
142
+ const value = db.values(sql `SELECT value FROM main._nexus_meta WHERE key = 'graph_extractor_fingerprint'`)[0]?.[0];
143
+ return typeof value === 'string' ? value : null;
144
+ }
84
145
  /** Read the last committed graph generation without opening a write transaction. */
85
146
  function graphGeneration(db) {
86
147
  const value = db.values(sql `SELECT value FROM main._nexus_meta WHERE key = 'graph_generation'`)[0]?.[0];
87
148
  return typeof value === 'string' ? value : null;
88
149
  }
150
+ /**
151
+ * Page-cache ceiling for a graph write transaction, in KiB (T12348).
152
+ *
153
+ * A one-shot CLI open gets an 8 MB cache (T11829). A publication dirties every
154
+ * row, index and FTS page of the graph — ~290 MB on this repository — so with
155
+ * 8 MB SQLite spills pages to the WAL mid-transaction and reads them back,
156
+ * repeatedly: replacing the rows cost 340k read and 328k write syscalls at
157
+ * 8 MB, 124k/223k at 256 MB, and 40k/146k (the floor: each page written once)
158
+ * at 512 MB. On a FUSE mount every syscall costs ~0.5–1.5 ms. This is a
159
+ * ceiling, not an allocation: SQLite grows the cache only as pages are
160
+ * touched, and the previous size is restored when the transaction ends.
161
+ */
162
+ const GRAPH_WRITE_CACHE_KIB = 524_288;
163
+ /**
164
+ * Run a graph write in a transaction that write-locks the PROJECT store only.
165
+ *
166
+ * The project handle carries the global `cleo.db` ATTACHed as `nexus_global`
167
+ * (see `ensureGlobalRegistryAttached`), and `BEGIN IMMEDIATE` takes the write
168
+ * lock of EVERY attached database. An immediate publication therefore held the
169
+ * global store's write lock for its whole duration — while it ran, a
170
+ * concurrent `cleo nexus projects clean` gave up with "database is locked"
171
+ * after 180 s. A deferred transaction whose first statement writes `main`
172
+ * acquires main's lock alone, with the same busy handling and a fresh snapshot,
173
+ * so the generation check that follows still reads under the write lock (T12348).
174
+ *
175
+ * @param db - Owning project graph database.
176
+ * @param write - Transaction body; every statement in it must target `main`.
177
+ */
178
+ function writeGraphTransaction(db, write) {
179
+ const previous = db.values(sql `PRAGMA main.cache_size`)[0]?.[0];
180
+ db.run(sql.raw(`PRAGMA main.cache_size = -${GRAPH_WRITE_CACHE_KIB}`));
181
+ try {
182
+ db.transaction((tx) => {
183
+ // A write that matches no row still takes main's RESERVED lock, and only main's.
184
+ tx.run(sql `DELETE FROM main._nexus_meta WHERE 0`);
185
+ return write(tx);
186
+ }, { behavior: 'deferred' });
187
+ }
188
+ finally {
189
+ if (typeof previous === 'number')
190
+ db.run(sql.raw(`PRAGMA main.cache_size = ${previous}`));
191
+ }
192
+ }
89
193
  /**
90
194
  * Atomically publish staged rows if the graph has not changed since assessment.
91
195
  * Failed inserts, FTS repair, or stale generations roll back the entire replacement.
@@ -113,18 +217,20 @@ export function publishNexusGraph(db, rows, expectedGeneration) {
113
217
  reference.publicationGeneration !== generation))
114
218
  throw new Error('Staged reference publication generation does not match rows');
115
219
  }
116
- db.transaction((tx) => {
220
+ writeGraphTransaction(db, (tx) => {
117
221
  if (graphGeneration(tx) !== expectedGeneration) {
118
222
  throw new Error('Nexus graph changed during indexing; discard staged generation and retry.');
119
223
  }
120
- tx.delete(nexusRelations).run();
121
- tx.delete(nexusNodes).run();
122
224
  // The optional FTS shadow can contain orphaned rowids; reset it inside
123
225
  // the same transaction so trigger failures restore the previous generation.
124
- if (tx.values(sql `SELECT name FROM main.sqlite_master WHERE name = 'nexus_symbols_fts'`)
125
- .length > 0) {
226
+ // Reset it FIRST (T12348): the per-row delete trigger then finds nothing
227
+ // to remove, instead of re-tokenizing every old node's text to delete it.
228
+ if (tx.values(sql `SELECT name FROM main.sqlite_master WHERE name = 'nexus_symbols_fts'`).length >
229
+ 0) {
126
230
  tx.run(sql `DELETE FROM main.nexus_symbols_fts`);
127
231
  }
232
+ tx.delete(nexusRelations).run();
233
+ tx.delete(nexusNodes).run();
128
234
  for (let offset = 0; offset < rows.nodes.length; offset += 500) {
129
235
  tx.insert(nexusNodes)
130
236
  .values(rows.nodes.slice(offset, offset + 500))
@@ -144,13 +250,49 @@ export function publishNexusGraph(db, rows, expectedGeneration) {
144
250
  `).length > 0) {
145
251
  throw new Error('Staged lexical declaration publication generation does not match rows');
146
252
  }
147
- if (rows.assessment) {
148
- tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_assessment', ${JSON.stringify(rows.assessment)})
253
+ if (rows.parseCache)
254
+ applyParseCacheUpdate(tx, rows.parseCache);
255
+ // The fingerprint names the extractor build that produced these rows; a
256
+ // publisher without a parse cache leaves the build unproven.
257
+ if (rows.parseCache?.fingerprint) {
258
+ tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_extractor_fingerprint', ${rows.parseCache.fingerprint})
149
259
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
150
260
  }
261
+ else {
262
+ tx.run(sql `DELETE FROM main._nexus_meta WHERE key = 'graph_extractor_fingerprint'`);
263
+ }
264
+ if (rows.assessment)
265
+ writeFileManifest(tx, buildFileManifest(rows.assessment, rows.assessment.files));
266
+ else
267
+ clearFileManifest(tx);
268
+ // T12348: summary and reference list are written together, separately.
269
+ if (rows.assessment)
270
+ writeAssessment(tx, rows.assessment);
151
271
  tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_generation', ${generation})
152
272
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
153
- }, { behavior: 'immediate' });
273
+ });
274
+ }
275
+ /**
276
+ * Re-record source provenance for a generation whose files were just verified
277
+ * byte-identical to the current tree, without replacing any graph rows.
278
+ * @param db - Owning project graph database.
279
+ * @param assessment - The previous assessment with current roots and revision, or
280
+ * `null` when only the file manifest needs re-recording.
281
+ * @param manifest - File manifest re-observed from the verified tree.
282
+ * @param expectedGeneration - Generation the verification was performed against.
283
+ * @returns The recorded assessment, or `null` when none was re-recorded.
284
+ * @throws When the generation changed since verification.
285
+ */
286
+ function recordVerifiedProvenance(db, assessment, manifest, expectedGeneration) {
287
+ writeGraphTransaction(db, (tx) => {
288
+ if (graphGeneration(tx) !== expectedGeneration)
289
+ throw new Error('Nexus graph changed during verification; provenance not updated.');
290
+ // A re-recorded summary keeps the stored reference list of this generation.
291
+ if (assessment)
292
+ writeAssessment(tx, assessment);
293
+ writeFileManifest(tx, manifest);
294
+ });
295
+ return assessment;
154
296
  }
155
297
  // ---------------------------------------------------------------------------
156
298
  // Public API
@@ -193,7 +335,7 @@ export async function runNexusAnalysis(params) {
193
335
  }
194
336
  /** Keep the entire asynchronous analysis bound to its captured identity parent. */
195
337
  async function runScopedNexusAnalysis(params, projectRoot) {
196
- const { projectIdOverride, incremental = false, onProgress } = params;
338
+ const { projectIdOverride, full = false, onProgress } = params;
197
339
  const execution = worktreeScope.getStore()?.execution;
198
340
  execution?.assertActive();
199
341
  const signals = [params.parserLimits?.signal, execution?.signal].filter((signal) => signal !== undefined);
@@ -233,9 +375,18 @@ async function runScopedNexusAnalysis(params, projectRoot) {
233
375
  execution?.assertActive();
234
376
  const repoPath = sourceRoots.sourceRoot;
235
377
  const assessedRevision = sourceRoots.roots[0]?.revision ?? null;
236
- const unchangedRoots = previousAssessment?.sourceRoots !== undefined &&
237
- rootFingerprint(previousAssessment.sourceRoots) === rootFingerprint(sourceRoots);
238
- const useIncremental = incremental && expectedGeneration !== null && unchangedRoots;
378
+ const unchangedOwnership = previousAssessment?.sourceRoots !== undefined &&
379
+ ownershipFingerprint(previousAssessment.sourceRoots) === ownershipFingerprint(sourceRoots);
380
+ const fullReason = full
381
+ ? 'full rebuild requested (--full)'
382
+ : expectedGeneration === null
383
+ ? 'no previous generation to reuse'
384
+ : previousAssessment?.sourceRoots === undefined
385
+ ? 'the previous generation predates source-root provenance'
386
+ : !unchangedOwnership
387
+ ? 'source ownership (project root, source root or included repositories) changed since the previous generation'
388
+ : undefined;
389
+ const useIncremental = fullReason === undefined;
239
390
  let committedAssessment = null;
240
391
  const recheckRoots = async () => {
241
392
  execution?.assertActive();
@@ -263,15 +414,20 @@ async function runScopedNexusAnalysis(params, projectRoot) {
263
414
  currentFiles.length !== recorded.size ||
264
415
  currentFiles.some((file) => !file.contentHash || recorded.get(file.path) !== file.contentHash))
265
416
  throw new Error('Source files changed before publication; previous graph retained.');
417
+ return currentFiles;
266
418
  };
267
419
  const result = await runPipeline(repoPath, projectId, db, tables, onProgress, {
268
420
  parserExecution: createParserExecutionPort(),
269
421
  parserLimits: { ...params.parserLimits, signal },
270
422
  incremental: useIncremental,
423
+ ...(fullReason ? { fullReason } : {}),
424
+ loadParseCache: () => readNexusParseCache(db),
425
+ publishedFingerprint: publishedExtractorFingerprint(db),
271
426
  assessedRevision,
272
427
  sourceRoots,
273
428
  includedRepositories,
274
429
  publishGraph: async (rows) => {
430
+ const recheckStart = Date.now();
275
431
  await recheckRoots();
276
432
  if (!rows.assessment?.sourceRoots ||
277
433
  rootFingerprint(rows.assessment.sourceRoots) !== rootFingerprint(sourceRoots))
@@ -279,17 +435,52 @@ async function runScopedNexusAnalysis(params, projectRoot) {
279
435
  await recheckFiles(rows.assessment);
280
436
  execution?.assertActive();
281
437
  signal?.throwIfAborted();
438
+ const commitStart = Date.now();
282
439
  publishNexusGraph(db, rows, expectedGeneration);
283
- committedAssessment = rows.assessment;
440
+ const timing = `[nexus] Publication: source recheck ${commitStart - recheckStart}ms, atomic commit of ` +
441
+ `${rows.nodes.length} nodes + ${rows.relations.length} relations ${Date.now() - commitStart}ms\n`;
442
+ process.stderr.write(timing); // json-stream-hygiene-allowed: analyze progress telemetry on stderr, same channel as the pipeline phase log
443
+ committedAssessment = rows.assessment ? assessmentSummary(rows.assessment) : null;
284
444
  },
285
445
  });
286
446
  if (!committedAssessment && previousAssessment) {
287
447
  // Incremental no-op still needs current provenance: Git or source bytes can
288
448
  // change while the pipeline scans without ever invoking the publisher.
289
449
  await recheckRoots();
290
- await recheckFiles(previousAssessment);
450
+ const verifiedFiles = await recheckFiles(previousAssessment);
291
451
  execution?.assertActive();
292
452
  signal?.throwIfAborted();
453
+ // T12315: a new commit with byte-identical sources no longer forces a full
454
+ // rebuild, so the unchanged graph must still record the revision it was
455
+ // just verified against — otherwise knowledge coverage would report it
456
+ // stale forever. The files were re-hashed above, so the claim is exact.
457
+ const provenance = previousAssessment.sourceRoots &&
458
+ rootFingerprint(previousAssessment.sourceRoots) !== rootFingerprint(sourceRoots)
459
+ ? {
460
+ ...previousAssessment,
461
+ sourceRoots,
462
+ assessedRevision,
463
+ assessedAt: new Date().toISOString(),
464
+ }
465
+ : null;
466
+ // T12316: re-record current mtimes as well, so freshness checks keep taking
467
+ // the metadata fast path after a checkout or `touch` that changed no bytes.
468
+ committedAssessment =
469
+ recordVerifiedProvenance(db, provenance, buildFileManifest(provenance ?? previousAssessment, verifiedFiles), expectedGeneration) ?? committedAssessment;
470
+ }
471
+ // Advisory: remember what a publishing run cost, so a later freshness check
472
+ // can estimate a refresh before starting one (T12316).
473
+ if (result.summary.mode !== 'unchanged') {
474
+ try {
475
+ writeRunCost(db, {
476
+ summary: result.summary,
477
+ durationMs: Date.now() - startTime,
478
+ recordedAt: new Date().toISOString(),
479
+ });
480
+ }
481
+ catch {
482
+ // non-fatal: estimates degrade to "unknown cost"
483
+ }
293
484
  }
294
485
  // Best-effort: refresh nexus-bridge.md
295
486
  try {
@@ -322,15 +513,18 @@ async function runScopedNexusAnalysis(params, projectRoot) {
322
513
  catch {
323
514
  // non-fatal
324
515
  }
516
+ const reportedAssessment = committedAssessment ?? previousAssessment;
325
517
  return {
326
518
  projectId,
327
519
  repoPath,
328
- incremental: useIncremental,
520
+ incremental: result.summary.mode !== 'full',
521
+ summary: result.summary,
329
522
  nodeCount: result.nodeCount,
330
523
  relationCount: result.relationCount,
331
524
  fileCount: result.fileCount,
332
525
  durationMs: Date.now() - startTime,
333
- assessment: committedAssessment ?? previousAssessment,
526
+ // T12348: the summary; the reference list is detail (`nexus status --references`).
527
+ assessment: reportedAssessment ? assessmentSummary(reportedAssessment) : null,
334
528
  };
335
529
  }
336
530
  //# sourceMappingURL=analyze-orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-orchestrator.js","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyze-orchestrator.js","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Storage layout of the published graph assessment (T12348).
3
+ *
4
+ * The assessment used to be ONE `_nexus_meta` JSON value holding every
5
+ * retained unresolved/unmodeled reference with its full evidence — 472 MB on
6
+ * this repository, 647k references against a 3.75 MB remainder. Every reader
7
+ * paid to parse and validate all of it: `cleo nexus status` took ~10 s and
8
+ * returned a 472 MB envelope, and every analysis re-read it before starting.
9
+ *
10
+ * The summary (`graph_assessment`) now carries everything except the
11
+ * reference list, plus `referenceCount`; the list lives under
12
+ * `graph_assessment_references` and is read only when asked for. Both are
13
+ * written in the publishing transaction, so they always describe the same
14
+ * generation. A historical value with inline `references` stays readable.
15
+ *
16
+ * The list is stored gzip-compressed (a BLOB), because every publication
17
+ * rewrites it: 453 MB of JSON is 116k pages written to the WAL and 116k more
18
+ * at checkpoint — measured at 0.6 ms per page write on this repository's FUSE
19
+ * mount, most of a 49-minute publication. At gzip level 1 it is 28 MB, costs
20
+ * ~0.6 s to compress and ~0.55 s to inflate. A historical plain-text list is
21
+ * still read as stored.
22
+ *
23
+ * Code placed in `packages/core/` per Package-Boundary Check — verified against AGENTS.md.
24
+ *
25
+ * @task T12348
26
+ * @module nexus/assessment-store
27
+ */
28
+ import type { GraphIndexAssessment, GraphIndexReferenceReport } from '@cleocode/contracts';
29
+ import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
30
+ /** `_nexus_meta` key of the assessment summary. */
31
+ export declare const ASSESSMENT_KEY = "graph_assessment";
32
+ /** `_nexus_meta` key of the separately stored reference list. */
33
+ export declare const ASSESSMENT_REFERENCES_KEY = "graph_assessment_references";
34
+ /**
35
+ * Encode a reference list for storage under {@link ASSESSMENT_REFERENCES_KEY}.
36
+ *
37
+ * @param references - The generation's retained references.
38
+ * @returns gzip-compressed JSON, stored as a BLOB.
39
+ */
40
+ export declare function encodeStoredReferences(references: readonly GraphIndexReferenceReport[]): Uint8Array;
41
+ /**
42
+ * Decode a stored reference list back to its JSON text.
43
+ *
44
+ * Accepts the compressed BLOB written since T12348 and the plain JSON text
45
+ * written before it; anything else is malformed metadata.
46
+ *
47
+ * @param value - The raw `_nexus_meta.value` of {@link ASSESSMENT_REFERENCES_KEY}.
48
+ * @returns The list's JSON text.
49
+ * @throws When the value is neither text nor a compressed list.
50
+ * @example
51
+ * ```ts
52
+ * const references = JSON.parse(decodeStoredReferences(row.value));
53
+ * ```
54
+ */
55
+ export declare function decodeStoredReferences(value: unknown): string;
56
+ /**
57
+ * Return the summary form of an assessment: the reference list removed and
58
+ * its length recorded as `referenceCount`.
59
+ *
60
+ * An assessment without a `references` list is returned unchanged, so a
61
+ * summary stays a summary and a historical index without references keeps
62
+ * its shape.
63
+ *
64
+ * @param assessment - Full or summary assessment.
65
+ * @returns The summary a reader of `graph_assessment` observes.
66
+ * @example
67
+ * ```ts
68
+ * const head = assessmentSummary(stagedAssessment);
69
+ * ```
70
+ */
71
+ export declare function assessmentSummary(assessment: GraphIndexAssessment): GraphIndexAssessment;
72
+ /**
73
+ * Write an assessment inside the caller's transaction.
74
+ *
75
+ * - A full assessment writes its summary and replaces the reference list.
76
+ * - A summary that already carries `referenceCount` (for example a provenance
77
+ * re-record of an unchanged generation) rewrites the summary only, keeping
78
+ * the stored list of that same generation.
79
+ * - An assessment with neither removes any stale list.
80
+ *
81
+ * @param tx - Graph database handle or open transaction.
82
+ * @param assessment - Assessment to persist.
83
+ * @returns The summary as written.
84
+ */
85
+ export declare function writeAssessment(tx: Pick<NodeSQLiteDatabase, 'run'>, assessment: GraphIndexAssessment): GraphIndexAssessment;
86
+ //# sourceMappingURL=assessment-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment-store.d.ts","sourceRoot":"","sources":["../../src/nexus/assessment-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAGH,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAE3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,mDAAmD;AACnD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAKvE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,SAAS,yBAAyB,EAAE,GAC/C,UAAU,CAEZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,oBAAoB,GAAG,oBAAoB,CAIxF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAC7B,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,KAAK,CAAC,EACnC,UAAU,EAAE,oBAAoB,GAC/B,oBAAoB,CAWtB"}