@cleocode/core 2026.9.16 → 2026.9.17

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 (216) 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 +5 -2
  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 +159 -10
  43. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  44. package/dist/nexus/assessment-store.d.ts +57 -0
  45. package/dist/nexus/assessment-store.d.ts.map +1 -0
  46. package/dist/nexus/assessment-store.js +73 -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 +76 -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/render/nexus/graph/index.d.ts.map +1 -1
  84. package/dist/render/nexus/graph/index.js +8 -0
  85. package/dist/render/nexus/graph/index.js.map +1 -1
  86. package/dist/scaffold/ensure-config.d.ts +12 -3
  87. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  88. package/dist/scaffold/ensure-config.js +61 -38
  89. package/dist/scaffold/ensure-config.js.map +1 -1
  90. package/dist/scaffold/project-identity.d.ts +136 -0
  91. package/dist/scaffold/project-identity.d.ts.map +1 -0
  92. package/dist/scaffold/project-identity.js +225 -0
  93. package/dist/scaffold/project-identity.js.map +1 -0
  94. package/dist/selfimprove/fix-gen.js +13319 -1556
  95. package/dist/selfimprove/fix-gen.js.map +3 -3
  96. package/dist/store/agent-api-key.d.ts +114 -0
  97. package/dist/store/agent-api-key.d.ts.map +1 -0
  98. package/dist/store/agent-api-key.js +136 -0
  99. package/dist/store/agent-api-key.js.map +1 -0
  100. package/dist/store/agent-registry-accessor.d.ts +4 -2
  101. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  102. package/dist/store/agent-registry-accessor.js +39 -89
  103. package/dist/store/agent-registry-accessor.js.map +1 -1
  104. package/dist/store/api-key-kdf.d.ts +7 -0
  105. package/dist/store/api-key-kdf.d.ts.map +1 -1
  106. package/dist/store/api-key-kdf.js +7 -0
  107. package/dist/store/api-key-kdf.js.map +1 -1
  108. package/dist/store/backup-crypto.d.ts +49 -0
  109. package/dist/store/backup-crypto.d.ts.map +1 -1
  110. package/dist/store/backup-crypto.js +154 -0
  111. package/dist/store/backup-crypto.js.map +1 -1
  112. package/dist/store/credential-transfer.d.ts +303 -0
  113. package/dist/store/credential-transfer.d.ts.map +1 -0
  114. package/dist/store/credential-transfer.js +774 -0
  115. package/dist/store/credential-transfer.js.map +1 -0
  116. package/dist/store/exodus/column-transforms.d.ts +79 -4
  117. package/dist/store/exodus/column-transforms.d.ts.map +1 -1
  118. package/dist/store/exodus/column-transforms.js +121 -4
  119. package/dist/store/exodus/column-transforms.js.map +1 -1
  120. package/dist/store/exodus/index.d.ts +1 -0
  121. package/dist/store/exodus/index.d.ts.map +1 -1
  122. package/dist/store/exodus/index.js +1 -0
  123. package/dist/store/exodus/index.js.map +1 -1
  124. package/dist/store/exodus/migrate.d.ts +17 -1
  125. package/dist/store/exodus/migrate.d.ts.map +1 -1
  126. package/dist/store/exodus/migrate.js +155 -33
  127. package/dist/store/exodus/migrate.js.map +1 -1
  128. package/dist/store/exodus/on-open.d.ts +14 -0
  129. package/dist/store/exodus/on-open.d.ts.map +1 -1
  130. package/dist/store/exodus/on-open.js +115 -6
  131. package/dist/store/exodus/on-open.js.map +1 -1
  132. package/dist/store/exodus/reconcile.d.ts +103 -0
  133. package/dist/store/exodus/reconcile.d.ts.map +1 -0
  134. package/dist/store/exodus/reconcile.js +728 -0
  135. package/dist/store/exodus/reconcile.js.map +1 -0
  136. package/dist/store/exodus/recovery.d.ts.map +1 -1
  137. package/dist/store/exodus/recovery.js +14 -2
  138. package/dist/store/exodus/recovery.js.map +1 -1
  139. package/dist/store/exodus/runtime-targets.d.ts +39 -0
  140. package/dist/store/exodus/runtime-targets.d.ts.map +1 -0
  141. package/dist/store/exodus/runtime-targets.js +63 -0
  142. package/dist/store/exodus/runtime-targets.js.map +1 -0
  143. package/dist/store/exodus/table-name-map.d.ts.map +1 -1
  144. package/dist/store/exodus/table-name-map.js +5 -0
  145. package/dist/store/exodus/table-name-map.js.map +1 -1
  146. package/dist/store/exodus/table-order.d.ts +35 -0
  147. package/dist/store/exodus/table-order.d.ts.map +1 -0
  148. package/dist/store/exodus/table-order.js +62 -0
  149. package/dist/store/exodus/table-order.js.map +1 -0
  150. package/dist/store/exodus/verify-migration.d.ts +4 -1
  151. package/dist/store/exodus/verify-migration.d.ts.map +1 -1
  152. package/dist/store/exodus/verify-migration.js +142 -10
  153. package/dist/store/exodus/verify-migration.js.map +1 -1
  154. package/dist/store/global-salt.d.ts +16 -0
  155. package/dist/store/global-salt.d.ts.map +1 -1
  156. package/dist/store/global-salt.js +22 -7
  157. package/dist/store/global-salt.js.map +1 -1
  158. package/dist/store/legacy-tasks-lineage.d.ts +86 -0
  159. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -0
  160. package/dist/store/legacy-tasks-lineage.js +285 -0
  161. package/dist/store/legacy-tasks-lineage.js.map +1 -0
  162. package/dist/store/migration-manager.d.ts +27 -0
  163. package/dist/store/migration-manager.d.ts.map +1 -1
  164. package/dist/store/migration-manager.js +63 -0
  165. package/dist/store/migration-manager.js.map +1 -1
  166. package/dist/store/portable-bundle-import.d.ts +117 -0
  167. package/dist/store/portable-bundle-import.d.ts.map +1 -0
  168. package/dist/store/portable-bundle-import.js +589 -0
  169. package/dist/store/portable-bundle-import.js.map +1 -0
  170. package/dist/store/portable-bundle-relocate.d.ts +66 -0
  171. package/dist/store/portable-bundle-relocate.d.ts.map +1 -0
  172. package/dist/store/portable-bundle-relocate.js +304 -0
  173. package/dist/store/portable-bundle-relocate.js.map +1 -0
  174. package/dist/store/portable-bundle-scan.d.ts +167 -0
  175. package/dist/store/portable-bundle-scan.d.ts.map +1 -0
  176. package/dist/store/portable-bundle-scan.js +569 -0
  177. package/dist/store/portable-bundle-scan.js.map +1 -0
  178. package/dist/store/portable-bundle.d.ts +146 -0
  179. package/dist/store/portable-bundle.d.ts.map +1 -0
  180. package/dist/store/portable-bundle.js +674 -0
  181. package/dist/store/portable-bundle.js.map +1 -0
  182. package/dist/store/regenerators.d.ts +3 -1
  183. package/dist/store/regenerators.d.ts.map +1 -1
  184. package/dist/store/regenerators.js +6 -2
  185. package/dist/store/regenerators.js.map +1 -1
  186. package/dist/store/schema/cleo-global/nexus.d.ts +98 -0
  187. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  188. package/dist/store/schema/cleo-global/nexus.js +19 -0
  189. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  190. package/dist/store/schema/nexus-schema.d.ts +102 -0
  191. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  192. package/dist/store/schema/nexus-schema.js +24 -0
  193. package/dist/store/schema/nexus-schema.js.map +1 -1
  194. package/dist/store/split-brain-import.d.ts +176 -0
  195. package/dist/store/split-brain-import.d.ts.map +1 -0
  196. package/dist/store/split-brain-import.js +680 -0
  197. package/dist/store/split-brain-import.js.map +1 -0
  198. package/dist/store/sqlite.d.ts +29 -0
  199. package/dist/store/sqlite.d.ts.map +1 -1
  200. package/dist/store/sqlite.js +57 -5
  201. package/dist/store/sqlite.js.map +1 -1
  202. package/dist/system/health.d.ts.map +1 -1
  203. package/dist/system/health.js +30 -5
  204. package/dist/system/health.js.map +1 -1
  205. package/dist/upgrade.d.ts.map +1 -1
  206. package/dist/upgrade.js +60 -0
  207. package/dist/upgrade.js.map +1 -1
  208. package/dist/validation/doctor/checks.d.ts +14 -0
  209. package/dist/validation/doctor/checks.d.ts.map +1 -1
  210. package/dist/validation/doctor/checks.js +33 -0
  211. package/dist/validation/doctor/checks.js.map +1 -1
  212. package/migrations/drizzle-cleo-global/20260924000000_t12354-project-paths/migration.sql +40 -0
  213. package/migrations/drizzle-nexus/20260924000000_t12315-nexus-parse-cache/migration.sql +21 -0
  214. package/package.json +13 -13
  215. package/templates/CLEO-INJECTION.md +3 -3
  216. 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;AAiGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAC/B,EAAE,EAAE,kBAAkB,EACtB,IAAI,EAAE,oBAAoB,EAC1B,kBAAkB,EAAE,MAAM,GAAG,IAAI,GAChC,IAAI,CA0EN;AAoCD,+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,6 +137,11 @@ 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];
@@ -144,14 +205,50 @@ export function publishNexusGraph(db, rows, expectedGeneration) {
144
205
  `).length > 0) {
145
206
  throw new Error('Staged lexical declaration publication generation does not match rows');
146
207
  }
147
- if (rows.assessment) {
148
- tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_assessment', ${JSON.stringify(rows.assessment)})
208
+ if (rows.parseCache)
209
+ applyParseCacheUpdate(tx, rows.parseCache);
210
+ // The fingerprint names the extractor build that produced these rows; a
211
+ // publisher without a parse cache leaves the build unproven.
212
+ if (rows.parseCache?.fingerprint) {
213
+ tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_extractor_fingerprint', ${rows.parseCache.fingerprint})
149
214
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
150
215
  }
216
+ else {
217
+ tx.run(sql `DELETE FROM main._nexus_meta WHERE key = 'graph_extractor_fingerprint'`);
218
+ }
219
+ if (rows.assessment)
220
+ writeFileManifest(tx, buildFileManifest(rows.assessment, rows.assessment.files));
221
+ else
222
+ clearFileManifest(tx);
223
+ // T12348: summary and reference list are written together, separately.
224
+ if (rows.assessment)
225
+ writeAssessment(tx, rows.assessment);
151
226
  tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES ('graph_generation', ${generation})
152
227
  ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
153
228
  }, { behavior: 'immediate' });
154
229
  }
230
+ /**
231
+ * Re-record source provenance for a generation whose files were just verified
232
+ * byte-identical to the current tree, without replacing any graph rows.
233
+ * @param db - Owning project graph database.
234
+ * @param assessment - The previous assessment with current roots and revision, or
235
+ * `null` when only the file manifest needs re-recording.
236
+ * @param manifest - File manifest re-observed from the verified tree.
237
+ * @param expectedGeneration - Generation the verification was performed against.
238
+ * @returns The recorded assessment, or `null` when none was re-recorded.
239
+ * @throws When the generation changed since verification.
240
+ */
241
+ function recordVerifiedProvenance(db, assessment, manifest, expectedGeneration) {
242
+ db.transaction((tx) => {
243
+ if (graphGeneration(tx) !== expectedGeneration)
244
+ throw new Error('Nexus graph changed during verification; provenance not updated.');
245
+ // A re-recorded summary keeps the stored reference list of this generation.
246
+ if (assessment)
247
+ writeAssessment(tx, assessment);
248
+ writeFileManifest(tx, manifest);
249
+ }, { behavior: 'immediate' });
250
+ return assessment;
251
+ }
155
252
  // ---------------------------------------------------------------------------
156
253
  // Public API
157
254
  // ---------------------------------------------------------------------------
@@ -193,7 +290,7 @@ export async function runNexusAnalysis(params) {
193
290
  }
194
291
  /** Keep the entire asynchronous analysis bound to its captured identity parent. */
195
292
  async function runScopedNexusAnalysis(params, projectRoot) {
196
- const { projectIdOverride, incremental = false, onProgress } = params;
293
+ const { projectIdOverride, full = false, onProgress } = params;
197
294
  const execution = worktreeScope.getStore()?.execution;
198
295
  execution?.assertActive();
199
296
  const signals = [params.parserLimits?.signal, execution?.signal].filter((signal) => signal !== undefined);
@@ -233,9 +330,18 @@ async function runScopedNexusAnalysis(params, projectRoot) {
233
330
  execution?.assertActive();
234
331
  const repoPath = sourceRoots.sourceRoot;
235
332
  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;
333
+ const unchangedOwnership = previousAssessment?.sourceRoots !== undefined &&
334
+ ownershipFingerprint(previousAssessment.sourceRoots) === ownershipFingerprint(sourceRoots);
335
+ const fullReason = full
336
+ ? 'full rebuild requested (--full)'
337
+ : expectedGeneration === null
338
+ ? 'no previous generation to reuse'
339
+ : previousAssessment?.sourceRoots === undefined
340
+ ? 'the previous generation predates source-root provenance'
341
+ : !unchangedOwnership
342
+ ? 'source ownership (project root, source root or included repositories) changed since the previous generation'
343
+ : undefined;
344
+ const useIncremental = fullReason === undefined;
239
345
  let committedAssessment = null;
240
346
  const recheckRoots = async () => {
241
347
  execution?.assertActive();
@@ -263,15 +369,20 @@ async function runScopedNexusAnalysis(params, projectRoot) {
263
369
  currentFiles.length !== recorded.size ||
264
370
  currentFiles.some((file) => !file.contentHash || recorded.get(file.path) !== file.contentHash))
265
371
  throw new Error('Source files changed before publication; previous graph retained.');
372
+ return currentFiles;
266
373
  };
267
374
  const result = await runPipeline(repoPath, projectId, db, tables, onProgress, {
268
375
  parserExecution: createParserExecutionPort(),
269
376
  parserLimits: { ...params.parserLimits, signal },
270
377
  incremental: useIncremental,
378
+ ...(fullReason ? { fullReason } : {}),
379
+ loadParseCache: () => readNexusParseCache(db),
380
+ publishedFingerprint: publishedExtractorFingerprint(db),
271
381
  assessedRevision,
272
382
  sourceRoots,
273
383
  includedRepositories,
274
384
  publishGraph: async (rows) => {
385
+ const recheckStart = Date.now();
275
386
  await recheckRoots();
276
387
  if (!rows.assessment?.sourceRoots ||
277
388
  rootFingerprint(rows.assessment.sourceRoots) !== rootFingerprint(sourceRoots))
@@ -279,17 +390,52 @@ async function runScopedNexusAnalysis(params, projectRoot) {
279
390
  await recheckFiles(rows.assessment);
280
391
  execution?.assertActive();
281
392
  signal?.throwIfAborted();
393
+ const commitStart = Date.now();
282
394
  publishNexusGraph(db, rows, expectedGeneration);
283
- committedAssessment = rows.assessment;
395
+ const timing = `[nexus] Publication: source recheck ${commitStart - recheckStart}ms, atomic commit of ` +
396
+ `${rows.nodes.length} nodes + ${rows.relations.length} relations ${Date.now() - commitStart}ms\n`;
397
+ process.stderr.write(timing); // json-stream-hygiene-allowed: analyze progress telemetry on stderr, same channel as the pipeline phase log
398
+ committedAssessment = rows.assessment ? assessmentSummary(rows.assessment) : null;
284
399
  },
285
400
  });
286
401
  if (!committedAssessment && previousAssessment) {
287
402
  // Incremental no-op still needs current provenance: Git or source bytes can
288
403
  // change while the pipeline scans without ever invoking the publisher.
289
404
  await recheckRoots();
290
- await recheckFiles(previousAssessment);
405
+ const verifiedFiles = await recheckFiles(previousAssessment);
291
406
  execution?.assertActive();
292
407
  signal?.throwIfAborted();
408
+ // T12315: a new commit with byte-identical sources no longer forces a full
409
+ // rebuild, so the unchanged graph must still record the revision it was
410
+ // just verified against — otherwise knowledge coverage would report it
411
+ // stale forever. The files were re-hashed above, so the claim is exact.
412
+ const provenance = previousAssessment.sourceRoots &&
413
+ rootFingerprint(previousAssessment.sourceRoots) !== rootFingerprint(sourceRoots)
414
+ ? {
415
+ ...previousAssessment,
416
+ sourceRoots,
417
+ assessedRevision,
418
+ assessedAt: new Date().toISOString(),
419
+ }
420
+ : null;
421
+ // T12316: re-record current mtimes as well, so freshness checks keep taking
422
+ // the metadata fast path after a checkout or `touch` that changed no bytes.
423
+ committedAssessment =
424
+ recordVerifiedProvenance(db, provenance, buildFileManifest(provenance ?? previousAssessment, verifiedFiles), expectedGeneration) ?? committedAssessment;
425
+ }
426
+ // Advisory: remember what a publishing run cost, so a later freshness check
427
+ // can estimate a refresh before starting one (T12316).
428
+ if (result.summary.mode !== 'unchanged') {
429
+ try {
430
+ writeRunCost(db, {
431
+ summary: result.summary,
432
+ durationMs: Date.now() - startTime,
433
+ recordedAt: new Date().toISOString(),
434
+ });
435
+ }
436
+ catch {
437
+ // non-fatal: estimates degrade to "unknown cost"
438
+ }
293
439
  }
294
440
  // Best-effort: refresh nexus-bridge.md
295
441
  try {
@@ -322,15 +468,18 @@ async function runScopedNexusAnalysis(params, projectRoot) {
322
468
  catch {
323
469
  // non-fatal
324
470
  }
471
+ const reportedAssessment = committedAssessment ?? previousAssessment;
325
472
  return {
326
473
  projectId,
327
474
  repoPath,
328
- incremental: useIncremental,
475
+ incremental: result.summary.mode !== 'full',
476
+ summary: result.summary,
329
477
  nodeCount: result.nodeCount,
330
478
  relationCount: result.relationCount,
331
479
  fileCount: result.fileCount,
332
480
  durationMs: Date.now() - startTime,
333
- assessment: committedAssessment ?? previousAssessment,
481
+ // T12348: the summary; the reference list is detail (`nexus status --references`).
482
+ assessment: reportedAssessment ? assessmentSummary(reportedAssessment) : null,
334
483
  };
335
484
  }
336
485
  //# sourceMappingURL=analyze-orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyze-orchestrator.js","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,8FAA8F;AAC9F,SAAS,eAAe,CAAC,KAAgC;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAChC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;KACJ,CAAC,CAAC;AACL,CAAC;AAED,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,KAAgC;IAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAC/B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CACvE,CAAC;IACF,IAAI,MAAM,CAAC,MAAM;QACf,MAAM,IAAI,KAAK,CACb,gEAAgE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAC5J,CAAC;AACN,CAAC;AAED,4FAA4F;AAC5F,KAAK,UAAU,oBAAoB,CACjC,WAAmB,EACnB,aAAoD,EACpD,iBAAqC;IAErC,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,IAAI,aAAa,IAAI,aAAa,CAAC,WAAW,KAAK,eAAe;QAChE,MAAM,IAAI,KAAK,CACb,wFAAwF,CACzF,CAAC;IACJ,IAAI,SAA6B,CAAC;IAClC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;YAAE,MAAM,KAAK,CAAC;QACzF,SAAS,GAAG,aAAa,EAAE,SAAS,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CACb,2GAA2G,CAC5G,CAAC;IACJ,IAAI,aAAa,IAAI,aAAa,CAAC,SAAS,KAAK,SAAS;QACxD,MAAM,IAAI,KAAK,CACb,2FAA2F,CAC5F,CAAC;IACJ,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,KAAK,SAAS;QACpE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,kFAAkF;AAClF,SAAS,uBAAuB,CAAC,EAAsB,EAAE,QAAgB;IACvE,OAAO,EAAE;SACN,MAAM,CAAC,GAAG,CAAA;;;8DAG+C,QAAQ,EAAE,CAAC;SACpE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACX,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,OAAO,UAAU,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC7F,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,oFAAoF;AACpF,SAAS,eAAe,CAAC,EAAsB;IAC7C,MAAM,KAAK,GAAG,EAAE,CAAC,MAAM,CACrB,GAAG,CAAA,mEAAmE,CACvE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACV,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAC/B,EAAsB,EACtB,IAA0B,EAC1B,kBAAiC;IAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC;IACnD,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QAClC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,IAAI,UAAU,KAAK,kBAAkB;YACnC,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,IAAI,IAAI,CAAC,UAAU,EAAE,UAAU,KAAK,UAAU;YAC5C,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,IACE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAC9B,CAAC,SAAS,EAAE,EAAE,CACZ,SAAS,CAAC,qBAAqB,KAAK,SAAS;YAC7C,SAAS,CAAC,qBAAqB,KAAK,UAAU,CACjD;YAED,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACnF,CAAC;IACD,EAAE,CAAC,WAAW,CACZ,CAAC,EAAE,EAAE,EAAE;QACL,IAAI,eAAe,CAAC,EAAE,CAAC,KAAK,kBAAkB,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CACb,2EAA2E,CAC5E,CAAC;QACJ,CAAC;QACD,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,GAAG,EAAE,CAAC;QAChC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC;QAC5B,uEAAuE;QACvE,4EAA4E;QAC5E,IACE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAA,sEAAsE,CAAC;aACjF,MAAM,GAAG,CAAC,EACb,CAAC;YACD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,oCAAoC,CAAC,CAAC;QAClD,CAAC;QACD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;YAC/D,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;iBAClB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;iBAC9C,GAAG,EAAE,CAAC;QACX,CAAC;QACD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,IAAI,GAAG,EAAE,CAAC;YACnE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC;iBACtB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;iBAClD,GAAG,EAAE,CAAC;QACX,CAAC;QACD,IACE,IAAI,CAAC,UAAU,KAAK,SAAS;YAC7B,EAAE,CAAC,MAAM,CAAC,GAAG,CAAA;;;0EAGqD,UAAU;;OAE7E,CAAC,CAAC,MAAM,GAAG,CAAC,EACX,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,uEAAuE,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,yEAAyE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC;kGACxB,CAAC,CAAC;QAC9F,CAAC;QACD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,yEAAyE,UAAU;gGACH,CAAC,CAAC;IAC9F,CAAC,EACD,EAAE,QAAQ,EAAE,WAAW,EAAE,CAC1B,CAAC;AACJ,CAAC;AAwCD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAA2B;IAChE,MAAM,QAAQ,GAAG;QACf,GAAG,MAAM;QACT,YAAY,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS;QAC1E,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;YAC/C,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAClC,CAAC,CAAC,SAAS;KACd,CAAC;IACF,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC;IAC3C,IAAI,SAAS,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,WAAW;QAC3F,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC7E,OAAO,aAAa,CAAC,GAAG,CACtB,EAAE,GAAG,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,mBAAmB,CAAC,WAAW,CAAC,EAAE,EAC1F,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,CAAC,CACpD,CAAC;AACJ,CAAC;AAED,mFAAmF;AACnF,KAAK,UAAU,sBAAsB,CACnC,MAA2B,EAC3B,WAAmB;IAEnB,MAAM,EAAE,iBAAiB,EAAE,WAAW,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IACtE,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC;IACtD,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,MAAM,CACrE,CAAC,MAAM,EAAyB,EAAE,CAAC,MAAM,KAAK,SAAS,CACxD,CAAC;IACF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,yEAAyE;IACzE,sEAAsE;IACtE,2EAA2E;IAC3E,sEAAsE;IACtE,MAAM,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,mBAAmB,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC5F,MAAM,CAAC,mCAA6C,CAAC;QACrD,MAAM,CAAC,0BAAoC,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,MAAM,kBAAkB,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,kBAAkB,GAAG,MAAM,4BAA4B,CAAC,WAAW,CAAC,CAAC;IAC3E,MAAM,SAAS,GAAG,MAAM,oBAAoB,CAC1C,WAAW,EACX,kBAAkB,EAAE,WAAW,EAC/B,iBAAiB,CAClB,CAAC;IACF,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS;QACzD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,MAAM,MAAM,GAAG;QACb,UAAU,EAAE,WAAW,CAAC,UAAU;QAClC,cAAc,EAAE,WAAW,CAAC,cAAc;KAC3C,CAAC;IAEF,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,oBAAoB,GACxB,MAAM,CAAC,oBAAoB,IAAI,uBAAuB,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG;QAClB,SAAS;QACT,WAAW;QACX,UAAU,EAAE,eAAe;QAC3B,oBAAoB;QACpB,MAAM;QACN,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC1D,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAClC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC;IACxC,MAAM,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC;IAChE,MAAM,cAAc,GAClB,kBAAkB,EAAE,WAAW,KAAK,SAAS;QAC7C,eAAe,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,eAAe,CAAC,WAAW,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,WAAW,IAAI,kBAAkB,KAAK,IAAI,IAAI,cAAc,CAAC;IACpF,IAAI,mBAAmB,GAAgC,IAAI,CAAC;IAE5D,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;QAC7C,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,IACE,CAAC,MAAM,oBAAoB,CACzB,WAAW,EACX,kBAAkB,EAAE,WAAW,EAC/B,iBAAiB,CAClB,CAAC,KAAK,SAAS;YAEhB,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAC3D,oBAAoB,CAAC,YAAY,CAAC,CAAC;QACnC,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,IAAI,eAAe,CAAC,YAAY,CAAC,KAAK,eAAe,CAAC,WAAW,CAAC;YAChE,MAAM,IAAI,KAAK,CACb,gFAAgF,CACjF,CAAC;IACN,CAAC,CAAC;IACF,MAAM,YAAY,GAAG,KAAK,EAAE,UAAgC,EAAiB,EAAE;QAC7E,qEAAqE;QACrE,6EAA6E;QAC7E,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAC5C,QAAQ,EACR,SAAS,EACT,CAAC,MAA4B,EAAE,EAAE;YAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ;gBAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC,EACD,oBAAoB,CACrB,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,UAAU,CAAC,KAAK;aACb,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC;aAClC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAChD,CAAC;QACF,IACE,QAAQ,CAAC,MAAM;YACf,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,IAAI;YACrC,YAAY,CAAC,IAAI,CACf,CAAC,IAAiB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,CACzF;YAED,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;IACzF,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;QAC5E,eAAe,EAAE,yBAAyB,EAAE;QAC5C,YAAY,EAAE,EAAE,GAAG,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE;QAChD,WAAW,EAAE,cAAc;QAC3B,gBAAgB;QAChB,WAAW;QACX,oBAAoB;QACpB,YAAY,EAAE,KAAK,EAAE,IAA0B,EAAE,EAAE;YACjD,MAAM,YAAY,EAAE,CAAC;YACrB,IACE,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW;gBAC7B,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,eAAe,CAAC,WAAW,CAAC;gBAE7E,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAChF,MAAM,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACpC,SAAS,EAAE,YAAY,EAAE,CAAC;YAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAChD,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC;QACxC,CAAC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,mBAAmB,IAAI,kBAAkB,EAAE,CAAC;QAC/C,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,YAAY,EAAE,CAAC;QACrB,MAAM,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACvC,SAAS,EAAE,YAAY,EAAE,CAAC;QAC1B,MAAM,EAAE,cAAc,EAAE,CAAC;IAC3B,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC;QACH,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAmC,CAAC,CAAC;QACjF,MAAM,kBAAkB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAmC,CAAC,CAAC;QACpF,MAAM,qBAAqB,CAAC,QAAQ,EAAE;YACpC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;SAC5B,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC;QACH,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAgC,CAAC,CAAC;QAC/E,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC1D,IAAI,aAAa,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,aAAa,CAAC,gBAAgB,eAAe,aAAa,CAAC,UAAU,aAAa,aAAa,CAAC,MAAM,oBAAoB,CACzJ,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IAED,OAAO;QACL,SAAS;QACT,QAAQ;QACR,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;QAClC,UAAU,EAAE,mBAAmB,IAAI,kBAAkB;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"analyze-orchestrator.js","sourceRoot":"","sources":["../../src/nexus/analyze-orchestrator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
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
+ * Code placed in `packages/core/` per Package-Boundary Check — verified against AGENTS.md.
17
+ *
18
+ * @task T12348
19
+ * @module nexus/assessment-store
20
+ */
21
+ import type { GraphIndexAssessment } from '@cleocode/contracts';
22
+ import type { NodeSQLiteDatabase } from 'drizzle-orm/node-sqlite';
23
+ /** `_nexus_meta` key of the assessment summary. */
24
+ export declare const ASSESSMENT_KEY = "graph_assessment";
25
+ /** `_nexus_meta` key of the separately stored reference list. */
26
+ export declare const ASSESSMENT_REFERENCES_KEY = "graph_assessment_references";
27
+ /**
28
+ * Return the summary form of an assessment: the reference list removed and
29
+ * its length recorded as `referenceCount`.
30
+ *
31
+ * An assessment without a `references` list is returned unchanged, so a
32
+ * summary stays a summary and a historical index without references keeps
33
+ * its shape.
34
+ *
35
+ * @param assessment - Full or summary assessment.
36
+ * @returns The summary a reader of `graph_assessment` observes.
37
+ * @example
38
+ * ```ts
39
+ * const head = assessmentSummary(stagedAssessment);
40
+ * ```
41
+ */
42
+ export declare function assessmentSummary(assessment: GraphIndexAssessment): GraphIndexAssessment;
43
+ /**
44
+ * Write an assessment inside the caller's transaction.
45
+ *
46
+ * - A full assessment writes its summary and replaces the reference list.
47
+ * - A summary that already carries `referenceCount` (for example a provenance
48
+ * re-record of an unchanged generation) rewrites the summary only, keeping
49
+ * the stored list of that same generation.
50
+ * - An assessment with neither removes any stale list.
51
+ *
52
+ * @param tx - Graph database handle or open transaction.
53
+ * @param assessment - Assessment to persist.
54
+ * @returns The summary as written.
55
+ */
56
+ export declare function writeAssessment(tx: Pick<NodeSQLiteDatabase, 'run'>, assessment: GraphIndexAssessment): GraphIndexAssessment;
57
+ //# 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;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,mDAAmD;AACnD,eAAO,MAAM,cAAc,qBAAqB,CAAC;AAEjD,iEAAiE;AACjE,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AAEvE;;;;;;;;;;;;;;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"}
@@ -0,0 +1,73 @@
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
+ * Code placed in `packages/core/` per Package-Boundary Check — verified against AGENTS.md.
17
+ *
18
+ * @task T12348
19
+ * @module nexus/assessment-store
20
+ */
21
+ import { sql } from 'drizzle-orm';
22
+ /** `_nexus_meta` key of the assessment summary. */
23
+ export const ASSESSMENT_KEY = 'graph_assessment';
24
+ /** `_nexus_meta` key of the separately stored reference list. */
25
+ export const ASSESSMENT_REFERENCES_KEY = 'graph_assessment_references';
26
+ /**
27
+ * Return the summary form of an assessment: the reference list removed and
28
+ * its length recorded as `referenceCount`.
29
+ *
30
+ * An assessment without a `references` list is returned unchanged, so a
31
+ * summary stays a summary and a historical index without references keeps
32
+ * its shape.
33
+ *
34
+ * @param assessment - Full or summary assessment.
35
+ * @returns The summary a reader of `graph_assessment` observes.
36
+ * @example
37
+ * ```ts
38
+ * const head = assessmentSummary(stagedAssessment);
39
+ * ```
40
+ */
41
+ export function assessmentSummary(assessment) {
42
+ if (assessment.references === undefined)
43
+ return assessment;
44
+ const { references, ...summary } = assessment;
45
+ return { ...summary, referenceCount: references.length };
46
+ }
47
+ /**
48
+ * Write an assessment inside the caller's transaction.
49
+ *
50
+ * - A full assessment writes its summary and replaces the reference list.
51
+ * - A summary that already carries `referenceCount` (for example a provenance
52
+ * re-record of an unchanged generation) rewrites the summary only, keeping
53
+ * the stored list of that same generation.
54
+ * - An assessment with neither removes any stale list.
55
+ *
56
+ * @param tx - Graph database handle or open transaction.
57
+ * @param assessment - Assessment to persist.
58
+ * @returns The summary as written.
59
+ */
60
+ export function writeAssessment(tx, assessment) {
61
+ const summary = assessmentSummary(assessment);
62
+ tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES (${ASSESSMENT_KEY}, ${JSON.stringify(summary)})
63
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
64
+ if (assessment.references !== undefined) {
65
+ tx.run(sql `INSERT INTO main._nexus_meta (key, value) VALUES (${ASSESSMENT_REFERENCES_KEY}, ${JSON.stringify(assessment.references)})
66
+ ON CONFLICT(key) DO UPDATE SET value = excluded.value, updated_at = strftime('%s', 'now')`);
67
+ }
68
+ else if (summary.referenceCount === undefined) {
69
+ tx.run(sql `DELETE FROM main._nexus_meta WHERE key = ${ASSESSMENT_REFERENCES_KEY}`);
70
+ }
71
+ return summary;
72
+ }
73
+ //# sourceMappingURL=assessment-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment-store.js","sourceRoot":"","sources":["../../src/nexus/assessment-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAGlC,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAEjD,iEAAiE;AACjE,MAAM,CAAC,MAAM,yBAAyB,GAAG,6BAA6B,CAAC;AAEvE;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAAgC;IAChE,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,UAAU,CAAC;IAC3D,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC;IAC9C,OAAO,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAC7B,EAAmC,EACnC,UAAgC;IAEhC,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,qDAAqD,cAAc,KAAK,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;8FACb,CAAC,CAAC;IAC9F,IAAI,UAAU,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACxC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,qDAAqD,yBAAyB,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;gGACtC,CAAC,CAAC;IAChG,CAAC;SAAM,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAChD,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,4CAA4C,yBAAyB,EAAE,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}