@cleocode/core 2026.6.7 → 2026.6.9

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 (67) hide show
  1. package/dist/db/index.d.ts +5 -1
  2. package/dist/db/index.d.ts.map +1 -1
  3. package/dist/db/index.js +5 -1
  4. package/dist/db/index.js.map +1 -1
  5. package/dist/docs/build-provenance-graph.d.ts +12 -0
  6. package/dist/docs/build-provenance-graph.d.ts.map +1 -1
  7. package/dist/docs/build-provenance-graph.js +52 -0
  8. package/dist/docs/build-provenance-graph.js.map +1 -1
  9. package/dist/docs/display-alias.d.ts +97 -0
  10. package/dist/docs/display-alias.d.ts.map +1 -0
  11. package/dist/docs/display-alias.js +136 -0
  12. package/dist/docs/display-alias.js.map +1 -0
  13. package/dist/docs/docs-read-model.d.ts +47 -0
  14. package/dist/docs/docs-read-model.d.ts.map +1 -1
  15. package/dist/docs/docs-read-model.js +40 -2
  16. package/dist/docs/docs-read-model.js.map +1 -1
  17. package/dist/docs/export-document.js +929 -732
  18. package/dist/docs/export-document.js.map +3 -3
  19. package/dist/docs/index.d.ts +6 -0
  20. package/dist/docs/index.d.ts.map +1 -1
  21. package/dist/docs/index.js +3 -0
  22. package/dist/docs/index.js.map +1 -1
  23. package/dist/docs/numbering.d.ts +29 -0
  24. package/dist/docs/numbering.d.ts.map +1 -1
  25. package/dist/docs/numbering.js +41 -0
  26. package/dist/docs/numbering.js.map +1 -1
  27. package/dist/docs/read-doc.d.ts +60 -0
  28. package/dist/docs/read-doc.d.ts.map +1 -0
  29. package/dist/docs/read-doc.js +188 -0
  30. package/dist/docs/read-doc.js.map +1 -0
  31. package/dist/docs/wikilinks.d.ts +119 -0
  32. package/dist/docs/wikilinks.d.ts.map +1 -0
  33. package/dist/docs/wikilinks.js +217 -0
  34. package/dist/docs/wikilinks.js.map +1 -0
  35. package/dist/internal.d.ts +3 -1
  36. package/dist/internal.d.ts.map +1 -1
  37. package/dist/internal.js +2 -1
  38. package/dist/internal.js.map +1 -1
  39. package/dist/llm/plugin-facade.js +973 -778
  40. package/dist/llm/plugin-facade.js.map +3 -3
  41. package/dist/store/attachment-store.d.ts +5 -0
  42. package/dist/store/attachment-store.d.ts.map +1 -1
  43. package/dist/store/attachment-store.js +7 -1
  44. package/dist/store/attachment-store.js.map +1 -1
  45. package/dist/store/dual-scope-db.d.ts +83 -0
  46. package/dist/store/dual-scope-db.d.ts.map +1 -1
  47. package/dist/store/dual-scope-db.js +135 -6
  48. package/dist/store/dual-scope-db.js.map +1 -1
  49. package/dist/store/exodus/abort-events.d.ts +116 -0
  50. package/dist/store/exodus/abort-events.d.ts.map +1 -0
  51. package/dist/store/exodus/abort-events.js +130 -0
  52. package/dist/store/exodus/abort-events.js.map +1 -0
  53. package/dist/store/exodus/index.d.ts +1 -0
  54. package/dist/store/exodus/index.d.ts.map +1 -1
  55. package/dist/store/exodus/index.js +1 -0
  56. package/dist/store/exodus/index.js.map +1 -1
  57. package/dist/store/repair-malformed-dbs.d.ts +87 -0
  58. package/dist/store/repair-malformed-dbs.d.ts.map +1 -0
  59. package/dist/store/repair-malformed-dbs.js +188 -0
  60. package/dist/store/repair-malformed-dbs.js.map +1 -0
  61. package/dist/store/schema/attachments.d.ts +149 -0
  62. package/dist/store/schema/attachments.d.ts.map +1 -1
  63. package/dist/store/schema/attachments.js +93 -0
  64. package/dist/store/schema/attachments.js.map +1 -1
  65. package/migrations/drizzle-tasks/20260605000001_t11826-docs-wikilinks/migration.sql +110 -0
  66. package/migrations/drizzle-tasks/20260606000001_t11875-attachments-display-alias/migration.sql +46 -0
  67. package/package.json +12 -12
@@ -18,6 +18,8 @@ export type { AdrAllocateErr, AdrAllocateOk, AdrAllocateResult, AllocateAdrOptio
18
18
  export { allocateAdrSlug, assembleAdrSlug, findHighestAdrNumber, MAX_ADR_ALLOCATION_ATTEMPTS, } from './adr-allocator.js';
19
19
  export type { BuildDocProvenanceGraphOptions } from './build-provenance-graph.js';
20
20
  export { buildDocProvenanceGraph, DocProvenanceRootNotFoundError, renderProvenanceGraphAsDot, } from './build-provenance-graph.js';
21
+ export type { SetDisplayAliasParams, SetDisplayAliasResult } from './display-alias.js';
22
+ export { SET_ALIAS_INVALID_CODE, SET_ALIAS_NOT_FOUND_CODE, SET_ALIAS_TAKEN_CODE, setDisplayAlias, } from './display-alias.js';
21
23
  export type { GenerateDocsOptions, GenerateDocsResult } from './docs-generator.js';
22
24
  export { generateDocsLlmsTxt } from './docs-generator.js';
23
25
  export type { DocsDriftItem, DocsFindSimilarHit, DocsFindSimilarResult, DocsGraphEdge, DocsGraphNode, DocsGraphResult, DocsMergeResult, DocsProjectSearchHit, DocsProjectSearchResult, DocsPublicationRecord, DocsPublishResult, DocsRankHit, DocsRankResult, DocsSearchHit, DocsSearchResult, DocsStatusResult, DocsSyncFromGitResult, DocsVersionEntry, DocsVersionsResult, } from './docs-ops.js';
@@ -52,6 +54,10 @@ export type { ListProjectDocsOpts, ResolvedDoc } from './docs-read-model.js';
52
54
  export { createDocsReadModel, DocsReadModel } from './docs-read-model.js';
53
55
  export type { ProvisionResult, PublishPrError, PublishPrOptions, PublishPrResult, PublishPrRunners, PublishPrSuccess, } from './publish-pr.js';
54
56
  export { branchForSlug, buildPublishFrontmatter, defaultPublishPrBody, defaultRun, execMsg, KNOWN_DOC_TYPES, knownDocTypesForProject, parseGhPrUrl, pickRunner, provisionPublishPrWorktree, publishDirForType, publishDocsAsPr, publishPrError, stripExistingFrontmatter, teardownPublishPrWorktree, tempWorktreeDirForSlug, validatePublishSlug, } from './publish-pr.js';
57
+ export type { ReadDocOptions } from './read-doc.js';
58
+ export { DocNotFoundError, readDoc } from './read-doc.js';
55
59
  export type { VersionAuditResult } from './version-ssot.js';
56
60
  export { auditVersionFields, compareCleoVersions, getCanonicalCleoVersion, resolveVersion, VERSION_SSOT_MIGRATION_SQL, versionInRange, } from './version-ssot.js';
61
+ export type { RebuildDocsWikilinksOptions, RebuildDocsWikilinksResult, WikilinkEdge, } from './wikilinks.js';
62
+ export { deriveWikilinkEdges, getDocsWikilinks, rebuildDocsWikilinks } from './wikilinks.js';
57
63
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,7 @@
16
16
  */
17
17
  export { allocateAdrSlug, assembleAdrSlug, findHighestAdrNumber, MAX_ADR_ALLOCATION_ATTEMPTS, } from './adr-allocator.js';
18
18
  export { buildDocProvenanceGraph, DocProvenanceRootNotFoundError, renderProvenanceGraphAsDot, } from './build-provenance-graph.js';
19
+ export { SET_ALIAS_INVALID_CODE, SET_ALIAS_NOT_FOUND_CODE, SET_ALIAS_TAKEN_CODE, setDisplayAlias, } from './display-alias.js';
19
20
  export { generateDocsLlmsTxt } from './docs-generator.js';
20
21
  export { buildDocsGraph, DEFAULT_FIND_SIMILAR_LIMIT, DEFAULT_FIND_SIMILAR_THRESHOLD, findSimilarDocs, listDocVersions, listPublications, mergeDocs, publishDocs, rankDocs, recordPublication, searchAllProjectDocs, searchDocs, statusDocs, syncFromGit, } from './docs-ops.js';
21
22
  export { exportDocument } from './export-document.js';
@@ -38,5 +39,7 @@ export { countAuditEntriesForSlug, DOCS_AUDIT_FILE, readAuditLog, verifyAuditTra
38
39
  export { checkBlobFilesystem, checkDocsConsistency, } from './docs-inconsistency-detector.js';
39
40
  export { createDocsReadModel, DocsReadModel } from './docs-read-model.js';
40
41
  export { branchForSlug, buildPublishFrontmatter, defaultPublishPrBody, defaultRun, execMsg, KNOWN_DOC_TYPES, knownDocTypesForProject, parseGhPrUrl, pickRunner, provisionPublishPrWorktree, publishDirForType, publishDocsAsPr, publishPrError, stripExistingFrontmatter, teardownPublishPrWorktree, tempWorktreeDirForSlug, validatePublishSlug, } from './publish-pr.js';
42
+ export { DocNotFoundError, readDoc } from './read-doc.js';
41
43
  export { auditVersionFields, compareCleoVersions, getCanonicalCleoVersion, resolveVersion, VERSION_SSOT_MIGRATION_SQL, versionInRange, } from './version-ssot.js';
44
+ export { deriveWikilinkEdges, getDocsWikilinks, rebuildDocsWikilinks } from './wikilinks.js';
42
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AASH,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,uBAAuB,EACvB,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAsB1D,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,8BAA8B,EAC9B,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,QAAQ,EACR,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,YAAY,GACb,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,+EAA+E;AAE/E,8EAA8E;AAC9E,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,uCAAuC,CAAC;AAQ/C,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,GACd,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,kBAAkB,EAClB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,iBAAiB,EACjB,OAAO,EACP,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,+EAA+E;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpD,OAAO,EACL,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC;AASjC,gFAAgF;AAChF,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAQzB,OAAO,EACL,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAS1E,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,oBAAoB,EACpB,UAAU,EACV,OAAO,EACP,eAAe,EACf,uBAAuB,EACvB,YAAY,EACZ,UAAU,EACV,0BAA0B,EAC1B,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EACvB,cAAc,EACd,0BAA0B,EAC1B,cAAc,GACf,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/docs/index.ts"],"names":[],"mappings":"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"}
@@ -109,6 +109,35 @@ export declare function parseSlugSequence(slug: string): {
109
109
  sequence: number;
110
110
  remainder: string;
111
111
  } | null;
112
+ /**
113
+ * Resolve the DISPLAY number to render for a doc, preferring the explicitly
114
+ * stored {@link import('../store/schema/attachments.js').attachments.displayAlias}
115
+ * over the number derived from the slug string.
116
+ *
117
+ * ## Why this exists (T11875 · ADR reconcile T11676)
118
+ *
119
+ * Under the slug-primary model the kebab slug is the canonical handle and the
120
+ * rendered number (e.g. ADR "051") is a DISPLAY ALIAS only. Historically that
121
+ * number was DERIVED from the slug via {@link parseSlugSequence} — so three
122
+ * DISTINCT ADRs slugged `adr-051-*` all rendered "051" with no way to
123
+ * disambiguate. T11875 added a real `display_alias` column; this resolver makes
124
+ * the stored alias authoritative while preserving byte-for-byte legacy
125
+ * behaviour for docs that never had one assigned.
126
+ *
127
+ * Precedence:
128
+ * 1. `storedAlias` — when a non-null positive integer is supplied, it wins
129
+ * unconditionally (the alias is the decoupled SSoT).
130
+ * 2. Slug-derived — otherwise parse the numeric portion out of `slug` via the
131
+ * canonical numbering patterns ({@link parseSlugSequence}).
132
+ * 3. `null` — when neither yields a number (non-numbered kind / no alias).
133
+ *
134
+ * @param slug - The doc's canonical slug (e.g. `adr-051-override-patterns`), or
135
+ * `null` for slug-less docs.
136
+ * @param storedAlias - The value of `attachments.display_alias` for this doc, or
137
+ * `null` when unset.
138
+ * @returns The display number to render, or `null` when none can be resolved.
139
+ */
140
+ export declare function resolveDisplayNumber(slug: string | null | undefined, storedAlias: number | null | undefined): number | null;
112
141
  /** Reset in-process state — test-only escape hatch. */
113
142
  export declare function _resetNumberingCache_TESTING_ONLY(): void;
114
143
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../../src/docs/numbering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAQH;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAmDD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SAAS,CAAC;AAuDjC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY9D;AAkDD,uDAAuD;AACvD,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AA8ED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,0BAA0B,CAAC,CAOrC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAID;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAChD,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iCAAiC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,iCAAiC,CAAC,CAK5C"}
1
+ {"version":3,"file":"numbering.d.ts","sourceRoot":"","sources":["../../src/docs/numbering.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AAQH;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,0BAA0B;IACzC,yEAAyE;IACzE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAmDD;;;;;GAKG;AACH,eAAO,MAAM,UAAU,SAAS,CAAC;AAuDjC;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GACX;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY9D;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC/B,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACrC,MAAM,GAAG,IAAI,CAUf;AAkDD,uDAAuD;AACvD,wBAAgB,iCAAiC,IAAI,IAAI,CAExD;AA8ED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,0BAA0B,CAAC,CAOrC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ5F;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,mBAAmB,GACzB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAID;;;;GAIG;AACH,MAAM,WAAW,iCAAiC;IAChD,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oFAAoF;IACpF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iCAAiC;IAChD,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAC/C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,iCAAiC,GACxC,OAAO,CAAC,iCAAiC,CAAC,CAK5C"}
@@ -180,6 +180,47 @@ export function parseSlugSequence(slug) {
180
180
  }
181
181
  return null;
182
182
  }
183
+ // ─── Display-number resolution (T11875) ───────────────────────────────────────
184
+ /**
185
+ * Resolve the DISPLAY number to render for a doc, preferring the explicitly
186
+ * stored {@link import('../store/schema/attachments.js').attachments.displayAlias}
187
+ * over the number derived from the slug string.
188
+ *
189
+ * ## Why this exists (T11875 · ADR reconcile T11676)
190
+ *
191
+ * Under the slug-primary model the kebab slug is the canonical handle and the
192
+ * rendered number (e.g. ADR "051") is a DISPLAY ALIAS only. Historically that
193
+ * number was DERIVED from the slug via {@link parseSlugSequence} — so three
194
+ * DISTINCT ADRs slugged `adr-051-*` all rendered "051" with no way to
195
+ * disambiguate. T11875 added a real `display_alias` column; this resolver makes
196
+ * the stored alias authoritative while preserving byte-for-byte legacy
197
+ * behaviour for docs that never had one assigned.
198
+ *
199
+ * Precedence:
200
+ * 1. `storedAlias` — when a non-null positive integer is supplied, it wins
201
+ * unconditionally (the alias is the decoupled SSoT).
202
+ * 2. Slug-derived — otherwise parse the numeric portion out of `slug` via the
203
+ * canonical numbering patterns ({@link parseSlugSequence}).
204
+ * 3. `null` — when neither yields a number (non-numbered kind / no alias).
205
+ *
206
+ * @param slug - The doc's canonical slug (e.g. `adr-051-override-patterns`), or
207
+ * `null` for slug-less docs.
208
+ * @param storedAlias - The value of `attachments.display_alias` for this doc, or
209
+ * `null` when unset.
210
+ * @returns The display number to render, or `null` when none can be resolved.
211
+ */
212
+ export function resolveDisplayNumber(slug, storedAlias) {
213
+ // (1) Stored alias is the decoupled SSoT — it wins over the slug-derived
214
+ // number whenever it is a usable positive integer.
215
+ if (typeof storedAlias === 'number' && Number.isInteger(storedAlias) && storedAlias >= 1) {
216
+ return storedAlias;
217
+ }
218
+ // (2) Fall back to the slug-derived number — unchanged legacy behaviour.
219
+ if (typeof slug !== 'string' || slug.length === 0)
220
+ return null;
221
+ const parsed = parseSlugSequence(slug);
222
+ return parsed ? parsed.sequence : null;
223
+ }
183
224
  // ─── DB inspection (atomic) ───────────────────────────────────────────────────
184
225
  /**
185
226
  * Module-level promise chain used as an in-process async Mutex around
@@ -1 +1 @@
1
- {"version":3,"file":"numbering.js","sourceRoot":"","sources":["../../src/docs/numbering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numbering.js","sourceRoot":"","sources":["../../src/docs/numbering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * `docs.read` core-SDK implementation — render a single CLEO doc (body + full
3
+ * provenance frontmatter) directly from `cleo.db`, the SOLE doc authority
4
+ * (saga T11778).
5
+ *
6
+ * This is the live read API the Obsidian plugin (T11827) and `cleo docs view`
7
+ * call. It is NOT a static export: every call reads the current DB state. The
8
+ * body is surfaced as UTF-8 text when decodable, else base64 (T11825 AC2), so
9
+ * binary blobs (images/PDFs) render without a second round-trip.
10
+ *
11
+ * Frontmatter is read straight from the `attachments` provenance columns
12
+ * (`slug`, `doc_version`, `owner_version`, `supersedes`, `superseded_by`,
13
+ * `topics`, `related_tasks`) — the same columns `docs_wikilinks` derives from —
14
+ * so the response is self-describing for an external consumer.
15
+ *
16
+ * @task T11825 (Epic T11781 / Saga T11778)
17
+ * @adr ADR-078 — Docs SSoT as provenance graph
18
+ * @see DocReadResponse — packages/contracts/src/docs/read.ts
19
+ * @see createDocsReadModel — body fetch + base64 plumbing reuse
20
+ */
21
+ import type { DocReadResponse } from '@cleocode/contracts';
22
+ /**
23
+ * Options for {@link readDoc}.
24
+ *
25
+ * @task T11825
26
+ */
27
+ export interface ReadDocOptions {
28
+ /** Project root for DB resolution. Defaults to {@link getProjectRoot}(). */
29
+ readonly projectRoot?: string;
30
+ }
31
+ /**
32
+ * Error raised when {@link readDoc}'s slug cannot be resolved to a doc.
33
+ *
34
+ * @task T11825
35
+ */
36
+ export declare class DocNotFoundError extends Error {
37
+ constructor(slug: string);
38
+ }
39
+ /**
40
+ * Read a single doc by slug, returning its body + full provenance frontmatter.
41
+ *
42
+ * Resolves the supersedes / superseded-by FK targets to their slugs (the
43
+ * external-consumer-friendly addressing) and decodes the body to UTF-8 when
44
+ * possible, falling back to base64 for binary content.
45
+ *
46
+ * @example
47
+ * ```ts
48
+ * const doc = await readDoc('adr-078-docs-provenance');
49
+ * console.log(doc.frontmatter.docVersion, doc.frontmatter.topics);
50
+ * if (doc.body.encoding === 'utf-8') console.log(doc.body.text);
51
+ * ```
52
+ *
53
+ * @param slug - The exact doc slug (case-sensitive).
54
+ * @param opts - Optional project-root override.
55
+ * @returns The typed {@link DocReadResponse}.
56
+ * @throws {DocNotFoundError} when no attachment carries the slug.
57
+ * @task T11825
58
+ */
59
+ export declare function readDoc(slug: string, opts?: ReadDocOptions): Promise<DocReadResponse>;
60
+ //# sourceMappingURL=read-doc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-doc.d.ts","sourceRoot":"","sources":["../../src/docs/read-doc.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,KAAK,EAA2B,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAOpF;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,IAAI,EAAE,MAAM;CAIzB;AAmBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAwD/F"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * `docs.read` core-SDK implementation — render a single CLEO doc (body + full
3
+ * provenance frontmatter) directly from `cleo.db`, the SOLE doc authority
4
+ * (saga T11778).
5
+ *
6
+ * This is the live read API the Obsidian plugin (T11827) and `cleo docs view`
7
+ * call. It is NOT a static export: every call reads the current DB state. The
8
+ * body is surfaced as UTF-8 text when decodable, else base64 (T11825 AC2), so
9
+ * binary blobs (images/PDFs) render without a second round-trip.
10
+ *
11
+ * Frontmatter is read straight from the `attachments` provenance columns
12
+ * (`slug`, `doc_version`, `owner_version`, `supersedes`, `superseded_by`,
13
+ * `topics`, `related_tasks`) — the same columns `docs_wikilinks` derives from —
14
+ * so the response is self-describing for an external consumer.
15
+ *
16
+ * @task T11825 (Epic T11781 / Saga T11778)
17
+ * @adr ADR-078 — Docs SSoT as provenance graph
18
+ * @see DocReadResponse — packages/contracts/src/docs/read.ts
19
+ * @see createDocsReadModel — body fetch + base64 plumbing reuse
20
+ */
21
+ import { Buffer } from 'node:buffer';
22
+ import { eq } from 'drizzle-orm';
23
+ import { getProjectRoot } from '../paths.js';
24
+ import { createAttachmentStore } from '../store/attachment-store.js';
25
+ import { getDb } from '../store/sqlite.js';
26
+ import { attachments } from '../store/tasks-schema.js';
27
+ /**
28
+ * Error raised when {@link readDoc}'s slug cannot be resolved to a doc.
29
+ *
30
+ * @task T11825
31
+ */
32
+ export class DocNotFoundError extends Error {
33
+ constructor(slug) {
34
+ super(`Doc not found: no attachment carries slug '${slug}'`);
35
+ this.name = 'DocNotFoundError';
36
+ }
37
+ }
38
+ /**
39
+ * Read a single doc by slug, returning its body + full provenance frontmatter.
40
+ *
41
+ * Resolves the supersedes / superseded-by FK targets to their slugs (the
42
+ * external-consumer-friendly addressing) and decodes the body to UTF-8 when
43
+ * possible, falling back to base64 for binary content.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * const doc = await readDoc('adr-078-docs-provenance');
48
+ * console.log(doc.frontmatter.docVersion, doc.frontmatter.topics);
49
+ * if (doc.body.encoding === 'utf-8') console.log(doc.body.text);
50
+ * ```
51
+ *
52
+ * @param slug - The exact doc slug (case-sensitive).
53
+ * @param opts - Optional project-root override.
54
+ * @returns The typed {@link DocReadResponse}.
55
+ * @throws {DocNotFoundError} when no attachment carries the slug.
56
+ * @task T11825
57
+ */
58
+ export async function readDoc(slug, opts = {}) {
59
+ const projectRoot = opts.projectRoot ?? getProjectRoot();
60
+ const db = await getDb(projectRoot);
61
+ const row = await db
62
+ .select({
63
+ id: attachments.id,
64
+ sha256: attachments.sha256,
65
+ slug: attachments.slug,
66
+ type: attachments.type,
67
+ summary: attachments.summary,
68
+ lifecycleStatus: attachments.lifecycleStatus,
69
+ supersedes: attachments.supersedes,
70
+ supersededBy: attachments.supersededBy,
71
+ topics: attachments.topics,
72
+ relatedTasks: attachments.relatedTasks,
73
+ ownerVersion: attachments.ownerVersion,
74
+ docVersion: attachments.docVersion,
75
+ createdAt: attachments.createdAt,
76
+ })
77
+ .from(attachments)
78
+ .where(eq(attachments.slug, slug))
79
+ .get();
80
+ if (!row)
81
+ throw new DocNotFoundError(slug);
82
+ const frontmatterRow = row;
83
+ // Resolve supersession FK ids → slugs for external addressing.
84
+ const [supersedesSlug, supersededBySlug] = await Promise.all([
85
+ resolveSlugById(db, frontmatterRow.supersedes),
86
+ resolveSlugById(db, frontmatterRow.supersededBy),
87
+ ]);
88
+ // Fetch the RAW body bytes (not a decoded string) so binary blobs survive the
89
+ // base64 path with full fidelity — `TextDecoder` would lossily replace
90
+ // invalid sequences with U+FFFD.
91
+ const { bytes, mimeType } = await fetchRawBody(frontmatterRow.sha256, projectRoot);
92
+ const frontmatter = {
93
+ slug: frontmatterRow.slug ?? slug,
94
+ kind: frontmatterRow.type,
95
+ title: frontmatterRow.slug ?? slug,
96
+ summary: frontmatterRow.summary,
97
+ lifecycleStatus: frontmatterRow.lifecycleStatus,
98
+ docVersion: frontmatterRow.docVersion,
99
+ ownerVersion: frontmatterRow.ownerVersion,
100
+ supersedes: supersedesSlug,
101
+ supersededBy: supersededBySlug,
102
+ topics: parseStringArray(frontmatterRow.topics),
103
+ relatedTasks: parseStringArray(frontmatterRow.relatedTasks),
104
+ sha256: frontmatterRow.sha256,
105
+ createdAt: frontmatterRow.createdAt,
106
+ };
107
+ const body = encodeBody(bytes, mimeType);
108
+ return { frontmatter, body };
109
+ }
110
+ /**
111
+ * Read the raw body bytes for a doc by content hash via the content-addressed
112
+ * attachment store. Returns an empty buffer when the metadata row exists but
113
+ * the blob was purged from disk.
114
+ *
115
+ * @internal
116
+ */
117
+ async function fetchRawBody(sha256, projectRoot) {
118
+ const store = createAttachmentStore();
119
+ try {
120
+ const result = await store.get(sha256, projectRoot);
121
+ if (result) {
122
+ const mime = result.metadata.attachment.mime;
123
+ return { bytes: result.bytes, mimeType: typeof mime === 'string' ? mime : null };
124
+ }
125
+ }
126
+ catch {
127
+ // Attachment store unavailable or blob purged — fall through to empty body.
128
+ }
129
+ return { bytes: Buffer.alloc(0), mimeType: null };
130
+ }
131
+ /**
132
+ * Resolve an attachment id to its slug, or null when the id is absent /
133
+ * unresolved / slug-less.
134
+ *
135
+ * @internal
136
+ */
137
+ async function resolveSlugById(db, id) {
138
+ if (!id)
139
+ return null;
140
+ const row = await db
141
+ .select({ slug: attachments.slug })
142
+ .from(attachments)
143
+ .where(eq(attachments.id, id))
144
+ .get();
145
+ return row?.slug ?? null;
146
+ }
147
+ /**
148
+ * Encode a doc body from its raw bytes. UTF-8-decodable content (the common
149
+ * markdown case) is surfaced as `text`; binary content (images/PDFs/files) is
150
+ * surfaced as `base64` so an external consumer can render it (T11825 AC2).
151
+ *
152
+ * UTF-8 validity is detected by a lossless decode→re-encode round-trip: invalid
153
+ * sequences decode to U+FFFD and fail to re-encode to the original bytes.
154
+ *
155
+ * @internal
156
+ */
157
+ function encodeBody(bytes, mimeType) {
158
+ const text = bytes.toString('utf-8');
159
+ const isUtf8 = Buffer.from(text, 'utf-8').equals(bytes);
160
+ if (isUtf8) {
161
+ return { encoding: 'utf-8', text, sizeBytes: bytes.length, mimeType };
162
+ }
163
+ return {
164
+ encoding: 'base64',
165
+ base64: bytes.toString('base64'),
166
+ sizeBytes: bytes.length,
167
+ mimeType,
168
+ };
169
+ }
170
+ /**
171
+ * Parse a JSON-array-of-strings column, tolerating null / malformed values.
172
+ *
173
+ * @internal
174
+ */
175
+ function parseStringArray(raw) {
176
+ if (!raw)
177
+ return [];
178
+ try {
179
+ const parsed = JSON.parse(raw);
180
+ if (!Array.isArray(parsed))
181
+ return [];
182
+ return parsed.filter((v) => typeof v === 'string' && v.length > 0);
183
+ }
184
+ catch {
185
+ return [];
186
+ }
187
+ }
188
+ //# sourceMappingURL=read-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-doc.js","sourceRoot":"","sources":["../../src/docs/read-doc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * `docs_wikilinks` — derive + query the slug-addressed docs edge table.
3
+ *
4
+ * Per the ratified Docs-SSoT model (saga T11778) `cleo.db` is the SOLE doc
5
+ * authority and `docs_wikilinks` is a **DERIVED, non-authoritative** edge table
6
+ * reconstructed from three provenance columns already on `attachments`:
7
+ *
8
+ * - `supersedes` / `superseded_by` → doc→doc supersession edges
9
+ * - `related_tasks` → doc→T#### task edges (JSON array)
10
+ * - `topics` → doc↔doc shared-topic edges (JSON array)
11
+ *
12
+ * No markdown body `[[link]]` parsing is performed (T11826 AC4) — the edges
13
+ * derive purely from structured columns. The derivation is **idempotent**: it
14
+ * truncates and rebuilds the whole table, so callers may re-run it after any
15
+ * `docs add` / `supersede` / `docs update` write to keep the graph fresh.
16
+ *
17
+ * This module is the runtime twin of the SQL backfill in
18
+ * `migrations/drizzle-tasks/20260605000001_t11826-docs-wikilinks/migration.sql`
19
+ * — the migration seeds the table on schema upgrade, this function rebuilds it
20
+ * on demand.
21
+ *
22
+ * @task T11826 (Epic T11781 / Saga T11778)
23
+ * @adr ADR-078 — Docs SSoT as provenance graph
24
+ * @see build-provenance-graph.ts — the on-the-fly BFS this table makes O(edges)
25
+ */
26
+ import { type DocsWikilinkRelation } from '../store/schema/attachments.js';
27
+ /**
28
+ * A single slug-addressed wikilink edge.
29
+ *
30
+ * @task T11826
31
+ */
32
+ export interface WikilinkEdge {
33
+ /** Source doc slug (always a doc). */
34
+ readonly fromSlug: string;
35
+ /** Target slug — a doc slug, or a `T####` task id when {@link toIsTask}. */
36
+ readonly toSlug: string;
37
+ /** Which provenance column produced this edge. */
38
+ readonly relation: DocsWikilinkRelation;
39
+ /** True when {@link toSlug} is a task id (`related-task` edges). */
40
+ readonly toIsTask: boolean;
41
+ }
42
+ /**
43
+ * Options shared by {@link rebuildDocsWikilinks}.
44
+ *
45
+ * @task T11826
46
+ */
47
+ export interface RebuildDocsWikilinksOptions {
48
+ /** Project root for DB resolution. Defaults to {@link getProjectRoot}(). */
49
+ readonly projectRoot?: string;
50
+ }
51
+ /**
52
+ * Outcome of a {@link rebuildDocsWikilinks} call.
53
+ *
54
+ * @task T11826
55
+ */
56
+ export interface RebuildDocsWikilinksResult {
57
+ /** Number of edges in the table after the rebuild. */
58
+ readonly edgeCount: number;
59
+ /** Per-relation edge counts. */
60
+ readonly byRelation: Readonly<Record<DocsWikilinkRelation, number>>;
61
+ }
62
+ /** Narrow row shape read from `attachments` during derivation. */
63
+ interface DerivationRow {
64
+ readonly slug: string;
65
+ readonly supersedesSlug: string | null;
66
+ readonly supersededBySlug: string | null;
67
+ readonly relatedTasks: string | null;
68
+ readonly topics: string | null;
69
+ }
70
+ /**
71
+ * Idempotently rebuild the `docs_wikilinks` edge table from the provenance
72
+ * columns on `attachments`.
73
+ *
74
+ * The whole table is truncated and re-derived inside a single transaction, so
75
+ * the function is safe to call after any doc write and always converges to the
76
+ * same edge set for a given `attachments` state.
77
+ *
78
+ * @example
79
+ * ```ts
80
+ * const { edgeCount, byRelation } = await rebuildDocsWikilinks();
81
+ * console.log(`derived ${edgeCount} edges (${byRelation['topic']} topic links)`);
82
+ * ```
83
+ *
84
+ * @param opts - Optional project-root override.
85
+ * @returns Edge totals after the rebuild.
86
+ * @task T11826
87
+ */
88
+ export declare function rebuildDocsWikilinks(opts?: RebuildDocsWikilinksOptions): Promise<RebuildDocsWikilinksResult>;
89
+ /**
90
+ * Pure derivation: turn slugged `attachments` rows into the full edge set.
91
+ *
92
+ * Exposed for unit testing the derivation rules without a database. The output
93
+ * is deduplicated on the (`fromSlug`, `toSlug`, `relation`) composite key.
94
+ *
95
+ * @param rows - Slugged attachment rows with their provenance columns.
96
+ * @returns The derived wikilink edges.
97
+ * @task T11826
98
+ */
99
+ export declare function deriveWikilinkEdges(rows: readonly DerivationRow[]): WikilinkEdge[];
100
+ /**
101
+ * Read all wikilink edges incident to a doc slug — **bidirectional** by default.
102
+ *
103
+ * Returns both outbound edges (`from_slug = slug`) and inbound backlinks
104
+ * (`to_slug = slug`). This is the query the Obsidian plugin (T11827) renders to
105
+ * show a doc's neighborhood, and what `cleo docs graph` hydrates for persisted
106
+ * backlinks.
107
+ *
108
+ * @param slug - The doc slug to fetch edges for.
109
+ * @param opts.direction - `'both'` (default), `'out'`, or `'in'`.
110
+ * @param opts.projectRoot - Project root override.
111
+ * @returns The incident edges.
112
+ * @task T11826
113
+ */
114
+ export declare function getDocsWikilinks(slug: string, opts?: {
115
+ direction?: 'both' | 'out' | 'in';
116
+ projectRoot?: string;
117
+ }): Promise<WikilinkEdge[]>;
118
+ export {};
119
+ //# sourceMappingURL=wikilinks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wikilinks.d.ts","sourceRoot":"","sources":["../../src/docs/wikilinks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,KAAK,oBAAoB,EAAiB,MAAM,gCAAgC,CAAC;AAI1F;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,MAAM,WAAW,2BAA2B;IAC1C,4EAA4E;IAC5E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,sDAAsD;IACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC,CAAC;CACrE;AAED,kEAAkE;AAClE,UAAU,aAAa;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,GAAE,2BAAgC,GACrC,OAAO,CAAC,0BAA0B,CAAC,CAoErC;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,aAAa,EAAE,GAAG,YAAY,EAAE,CAoDlF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrE,OAAO,CAAC,YAAY,EAAE,CAAC,CAmBzB"}