@cleocode/core 2026.6.6 → 2026.6.8

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 (168) 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/dispatch/contracts/output-contracts.d.ts +36 -0
  6. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -0
  7. package/dist/dispatch/contracts/output-contracts.js +38 -0
  8. package/dist/dispatch/contracts/output-contracts.js.map +1 -0
  9. package/dist/dispatch/describe-operation.d.ts +98 -0
  10. package/dist/dispatch/describe-operation.d.ts.map +1 -0
  11. package/dist/dispatch/describe-operation.js +101 -0
  12. package/dist/dispatch/describe-operation.js.map +1 -0
  13. package/dist/docs/build-provenance-graph.d.ts +12 -0
  14. package/dist/docs/build-provenance-graph.d.ts.map +1 -1
  15. package/dist/docs/build-provenance-graph.js +52 -0
  16. package/dist/docs/build-provenance-graph.js.map +1 -1
  17. package/dist/docs/docs-read-model.d.ts +40 -0
  18. package/dist/docs/docs-read-model.d.ts.map +1 -1
  19. package/dist/docs/docs-read-model.js +29 -0
  20. package/dist/docs/docs-read-model.js.map +1 -1
  21. package/dist/docs/export-document.js +1794 -1235
  22. package/dist/docs/export-document.js.map +3 -3
  23. package/dist/docs/index.d.ts +4 -0
  24. package/dist/docs/index.d.ts.map +1 -1
  25. package/dist/docs/index.js +2 -0
  26. package/dist/docs/index.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/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/internal.d.ts +2 -0
  40. package/dist/internal.d.ts.map +1 -1
  41. package/dist/internal.js +6 -0
  42. package/dist/internal.js.map +1 -1
  43. package/dist/llm/index.d.ts +1 -3
  44. package/dist/llm/index.d.ts.map +1 -1
  45. package/dist/llm/index.js +1 -2
  46. package/dist/llm/index.js.map +1 -1
  47. package/dist/llm/model-metadata.d.ts +14 -0
  48. package/dist/llm/model-metadata.d.ts.map +1 -1
  49. package/dist/llm/model-metadata.js +23 -0
  50. package/dist/llm/model-metadata.js.map +1 -1
  51. package/dist/llm/model-runner.d.ts.map +1 -1
  52. package/dist/llm/model-runner.js +104 -74
  53. package/dist/llm/model-runner.js.map +1 -1
  54. package/dist/llm/plugin-facade.js +1947 -1364
  55. package/dist/llm/plugin-facade.js.map +3 -3
  56. package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
  57. package/dist/llm/provider-registry/builtin/anthropic.js +4 -0
  58. package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
  59. package/dist/llm/provider-registry/builtin/gemini.d.ts.map +1 -1
  60. package/dist/llm/provider-registry/builtin/gemini.js +4 -0
  61. package/dist/llm/provider-registry/builtin/gemini.js.map +1 -1
  62. package/dist/llm/provider-registry/builtin/ollama.d.ts.map +1 -1
  63. package/dist/llm/provider-registry/builtin/ollama.js +4 -0
  64. package/dist/llm/provider-registry/builtin/ollama.js.map +1 -1
  65. package/dist/llm/provider-registry/builtin/openai.d.ts.map +1 -1
  66. package/dist/llm/provider-registry/builtin/openai.js +6 -0
  67. package/dist/llm/provider-registry/builtin/openai.js.map +1 -1
  68. package/dist/llm/transports/index.d.ts +5 -3
  69. package/dist/llm/transports/index.d.ts.map +1 -1
  70. package/dist/llm/transports/index.js +5 -2
  71. package/dist/llm/transports/index.js.map +1 -1
  72. package/dist/reconciliation/reconciliation-engine.d.ts.map +1 -1
  73. package/dist/reconciliation/reconciliation-engine.js +3 -0
  74. package/dist/reconciliation/reconciliation-engine.js.map +1 -1
  75. package/dist/release/plan.d.ts +27 -0
  76. package/dist/release/plan.d.ts.map +1 -1
  77. package/dist/release/plan.js +36 -2
  78. package/dist/release/plan.js.map +1 -1
  79. package/dist/release/provenance-fk.d.ts +74 -0
  80. package/dist/release/provenance-fk.d.ts.map +1 -0
  81. package/dist/release/provenance-fk.js +122 -0
  82. package/dist/release/provenance-fk.js.map +1 -0
  83. package/dist/release/reconcile.d.ts +2 -53
  84. package/dist/release/reconcile.d.ts.map +1 -1
  85. package/dist/release/reconcile.js +13 -93
  86. package/dist/release/reconcile.js.map +1 -1
  87. package/dist/sticky/convert.d.ts.map +1 -1
  88. package/dist/sticky/convert.js +3 -0
  89. package/dist/sticky/convert.js.map +1 -1
  90. package/dist/store/dual-scope-db.d.ts +83 -0
  91. package/dist/store/dual-scope-db.d.ts.map +1 -1
  92. package/dist/store/dual-scope-db.js +135 -6
  93. package/dist/store/dual-scope-db.js.map +1 -1
  94. package/dist/store/exodus/abort-events.d.ts +116 -0
  95. package/dist/store/exodus/abort-events.d.ts.map +1 -0
  96. package/dist/store/exodus/abort-events.js +130 -0
  97. package/dist/store/exodus/abort-events.js.map +1 -0
  98. package/dist/store/exodus/column-transforms.d.ts +35 -8
  99. package/dist/store/exodus/column-transforms.d.ts.map +1 -1
  100. package/dist/store/exodus/column-transforms.js +47 -13
  101. package/dist/store/exodus/column-transforms.js.map +1 -1
  102. package/dist/store/exodus/count-parity.d.ts +71 -0
  103. package/dist/store/exodus/count-parity.d.ts.map +1 -0
  104. package/dist/store/exodus/count-parity.js +124 -0
  105. package/dist/store/exodus/count-parity.js.map +1 -0
  106. package/dist/store/exodus/health.d.ts +70 -0
  107. package/dist/store/exodus/health.d.ts.map +1 -0
  108. package/dist/store/exodus/health.js +130 -0
  109. package/dist/store/exodus/health.js.map +1 -0
  110. package/dist/store/exodus/index.d.ts +4 -0
  111. package/dist/store/exodus/index.d.ts.map +1 -1
  112. package/dist/store/exodus/index.js +4 -0
  113. package/dist/store/exodus/index.js.map +1 -1
  114. package/dist/store/exodus/migrate.d.ts.map +1 -1
  115. package/dist/store/exodus/migrate.js +98 -31
  116. package/dist/store/exodus/migrate.js.map +1 -1
  117. package/dist/store/exodus/plan.d.ts +48 -4
  118. package/dist/store/exodus/plan.d.ts.map +1 -1
  119. package/dist/store/exodus/plan.js +67 -9
  120. package/dist/store/exodus/plan.js.map +1 -1
  121. package/dist/store/exodus/seal.d.ts +69 -0
  122. package/dist/store/exodus/seal.d.ts.map +1 -0
  123. package/dist/store/exodus/seal.js +73 -0
  124. package/dist/store/exodus/seal.js.map +1 -0
  125. package/dist/store/exodus/types.d.ts +24 -1
  126. package/dist/store/exodus/types.d.ts.map +1 -1
  127. package/dist/store/exodus/types.js.map +1 -1
  128. package/dist/store/exodus/verify-migration.d.ts.map +1 -1
  129. package/dist/store/exodus/verify-migration.js +53 -26
  130. package/dist/store/exodus/verify-migration.js.map +1 -1
  131. package/dist/store/repair-malformed-dbs.d.ts +87 -0
  132. package/dist/store/repair-malformed-dbs.d.ts.map +1 -0
  133. package/dist/store/repair-malformed-dbs.js +188 -0
  134. package/dist/store/repair-malformed-dbs.js.map +1 -0
  135. package/dist/store/schema/attachments.d.ts +133 -0
  136. package/dist/store/schema/attachments.d.ts.map +1 -1
  137. package/dist/store/schema/attachments.js +63 -0
  138. package/dist/store/schema/attachments.js.map +1 -1
  139. package/dist/tasks/add.d.ts +13 -0
  140. package/dist/tasks/add.d.ts.map +1 -1
  141. package/dist/tasks/add.js +50 -18
  142. package/dist/tasks/add.js.map +1 -1
  143. package/dist/tasks/archive.d.ts.map +1 -1
  144. package/dist/tasks/archive.js +12 -7
  145. package/dist/tasks/archive.js.map +1 -1
  146. package/dist/tasks/child-disposition.d.ts +66 -0
  147. package/dist/tasks/child-disposition.d.ts.map +1 -0
  148. package/dist/tasks/child-disposition.js +80 -0
  149. package/dist/tasks/child-disposition.js.map +1 -0
  150. package/dist/tasks/delete-preview.js +1 -1
  151. package/dist/tasks/delete-preview.js.map +1 -1
  152. package/dist/tasks/deletion-strategy.d.ts +21 -3
  153. package/dist/tasks/deletion-strategy.d.ts.map +1 -1
  154. package/dist/tasks/deletion-strategy.js +61 -15
  155. package/dist/tasks/deletion-strategy.js.map +1 -1
  156. package/dist/tasks/engine-wrap.d.ts +8 -0
  157. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  158. package/dist/tasks/engine-wrap.js +22 -9
  159. package/dist/tasks/engine-wrap.js.map +1 -1
  160. package/dist/tasks/update.d.ts.map +1 -1
  161. package/dist/tasks/update.js +12 -0
  162. package/dist/tasks/update.js.map +1 -1
  163. package/migrations/drizzle-tasks/20260605000001_t11826-docs-wikilinks/migration.sql +110 -0
  164. package/package.json +12 -12
  165. package/dist/llm/transports/openai.d.ts +0 -181
  166. package/dist/llm/transports/openai.d.ts.map +0 -1
  167. package/dist/llm/transports/openai.js +0 -645
  168. package/dist/llm/transports/openai.js.map +0 -1
@@ -16,6 +16,9 @@
16
16
  * - {@link resolveDualScopeDbPath} — resolve the absolute DB file path.
17
17
  * - {@link insertIdempotent} — retry-safe insert (ON CONFLICT DO NOTHING).
18
18
  * - {@link upsertIdempotent} — retry-safe upsert (ON CONFLICT DO UPDATE).
19
+ * - {@link assertWriteDurable} — guard a mutation path against an aborted
20
+ * exodus-on-open (T11828 · DHQ-059).
21
+ * - {@link ExodusAbortWriteUnsafeError} — thrown by `assertWriteDurable`.
19
22
  * - {@link _resetDualScopeDbCache} — test helper: clear singleton cache.
20
23
  *
21
24
  * ## Usage
@@ -32,5 +35,6 @@
32
35
  * @epic T11247 (E4)
33
36
  * @saga T11242 (SG-DB-SUBSTRATE-V2)
34
37
  */
35
- export { _resetDualScopeDbCache, type CleoGlobalDb, type CleoProjectDb, type DualScope, type DualScopeDbHandle, insertIdempotent, openDualScopeDb, resolveDualScopeDbPath, upsertIdempotent, } from '../store/dual-scope-db.js';
38
+ export { _resetDualScopeDbCache, assertWriteDurable, type CleoGlobalDb, type CleoProjectDb, type DualScope, type DualScopeDbHandle, ExodusAbortWriteUnsafeError, insertIdempotent, openDualScopeDb, resolveDualScopeDbPath, upsertIdempotent, } from '../store/dual-scope-db.js';
39
+ export { type ExodusAbortDetail, exodusAbortEvents } from '../store/exodus/abort-events.js';
36
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EACL,sBAAsB,EACtB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/db/index.js CHANGED
@@ -16,6 +16,9 @@
16
16
  * - {@link resolveDualScopeDbPath} — resolve the absolute DB file path.
17
17
  * - {@link insertIdempotent} — retry-safe insert (ON CONFLICT DO NOTHING).
18
18
  * - {@link upsertIdempotent} — retry-safe upsert (ON CONFLICT DO UPDATE).
19
+ * - {@link assertWriteDurable} — guard a mutation path against an aborted
20
+ * exodus-on-open (T11828 · DHQ-059).
21
+ * - {@link ExodusAbortWriteUnsafeError} — thrown by `assertWriteDurable`.
19
22
  * - {@link _resetDualScopeDbCache} — test helper: clear singleton cache.
20
23
  *
21
24
  * ## Usage
@@ -32,5 +35,6 @@
32
35
  * @epic T11247 (E4)
33
36
  * @saga T11242 (SG-DB-SUBSTRATE-V2)
34
37
  */
35
- export { _resetDualScopeDbCache, insertIdempotent, openDualScopeDb, resolveDualScopeDbPath, upsertIdempotent, } from '../store/dual-scope-db.js';
38
+ export { _resetDualScopeDbCache, assertWriteDurable, ExodusAbortWriteUnsafeError, insertIdempotent, openDualScopeDb, resolveDualScopeDbPath, upsertIdempotent, } from '../store/dual-scope-db.js';
39
+ export { exodusAbortEvents } from '../store/exodus/abort-events.js';
36
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,EACL,sBAAsB,EAKtB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAKlB,2BAA2B,EAC3B,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,gBAAgB,GACjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAA0B,iBAAiB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * OUTPUT_CONTRACTS accessor — SSoT lookup for per-operation OUTPUT contracts.
3
+ *
4
+ * The OUTPUT-side mirror of {@link getInputContract}. The contract DATA lives
5
+ * in `@cleocode/contracts` (a leaf, zero-runtime-dep package) as
6
+ * {@link OUTPUT_CONTRACTS}; this module re-exports it and provides the null-safe
7
+ * accessor that the SDK `describeOperation` and the `cleo <op> --describe`
8
+ * surface consult.
9
+ *
10
+ * Keyed by the canonical `<domain>.<verb>` operation identifier (e.g.
11
+ * `'tasks.show'`). A `null` lookup is expected (the registry is populated
12
+ * incrementally, high-traffic ops first) and MUST NOT error.
13
+ *
14
+ * @packageDocumentation
15
+ * @module @cleocode/core/dispatch/contracts/output-contracts
16
+ *
17
+ * @epic T11679
18
+ * @task T11692 — DHQ-057: per-operation output schema SSoT
19
+ */
20
+ import { type OperationOutputContract, OUTPUT_CONTRACTS } from '@cleocode/contracts';
21
+ export { OUTPUT_CONTRACTS };
22
+ /**
23
+ * Resolve the {@link OperationOutputContract} for an operation id, or return
24
+ * `null` when no contract is registered.
25
+ *
26
+ * Used by the SDK `describeOperation` and the `cleo <op> --describe`
27
+ * introspection surface to render the result-shape contract (data schema +
28
+ * valid `--field` pointers). Mirrors {@link getInputContract} exactly.
29
+ *
30
+ * @param operation - Canonical `<domain>.<verb>` operation identifier.
31
+ * @returns The matching contract, or `null` when none is registered.
32
+ *
33
+ * @task T11692
34
+ */
35
+ export declare function getOutputContract(operation: string): OperationOutputContract | null;
36
+ //# sourceMappingURL=output-contracts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-contracts.d.ts","sourceRoot":"","sources":["../../../src/dispatch/contracts/output-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,KAAK,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI,CAEnF"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * OUTPUT_CONTRACTS accessor — SSoT lookup for per-operation OUTPUT contracts.
3
+ *
4
+ * The OUTPUT-side mirror of {@link getInputContract}. The contract DATA lives
5
+ * in `@cleocode/contracts` (a leaf, zero-runtime-dep package) as
6
+ * {@link OUTPUT_CONTRACTS}; this module re-exports it and provides the null-safe
7
+ * accessor that the SDK `describeOperation` and the `cleo <op> --describe`
8
+ * surface consult.
9
+ *
10
+ * Keyed by the canonical `<domain>.<verb>` operation identifier (e.g.
11
+ * `'tasks.show'`). A `null` lookup is expected (the registry is populated
12
+ * incrementally, high-traffic ops first) and MUST NOT error.
13
+ *
14
+ * @packageDocumentation
15
+ * @module @cleocode/core/dispatch/contracts/output-contracts
16
+ *
17
+ * @epic T11679
18
+ * @task T11692 — DHQ-057: per-operation output schema SSoT
19
+ */
20
+ import { OUTPUT_CONTRACTS } from '@cleocode/contracts';
21
+ export { OUTPUT_CONTRACTS };
22
+ /**
23
+ * Resolve the {@link OperationOutputContract} for an operation id, or return
24
+ * `null` when no contract is registered.
25
+ *
26
+ * Used by the SDK `describeOperation` and the `cleo <op> --describe`
27
+ * introspection surface to render the result-shape contract (data schema +
28
+ * valid `--field` pointers). Mirrors {@link getInputContract} exactly.
29
+ *
30
+ * @param operation - Canonical `<domain>.<verb>` operation identifier.
31
+ * @returns The matching contract, or `null` when none is registered.
32
+ *
33
+ * @task T11692
34
+ */
35
+ export function getOutputContract(operation) {
36
+ return OUTPUT_CONTRACTS[operation] ?? null;
37
+ }
38
+ //# sourceMappingURL=output-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-contracts.js","sourceRoot":"","sources":["../../../src/dispatch/contracts/output-contracts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAgC,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAErF,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * describeOperation — SDK introspection of a CLEO operation's I/O contract.
3
+ *
4
+ * The programmatic counterpart to `cleo <op> --describe`. Given a canonical
5
+ * `<domain>.<verb>` operation id (e.g. `'tasks.show'`), composes a single
6
+ * typed {@link OperationDescriptor} from the three SSoT surfaces:
7
+ *
8
+ * 1. {@link OperationDef} (from `@cleocode/contracts`) — gateway, tier,
9
+ * idempotency, session requirement, and the declared `params`.
10
+ * 2. The INPUT contract (`getInputContract`, T9918) — JSON Schema for the
11
+ * accepted request payload + worked examples. The schemas set
12
+ * `additionalProperties: false`, so unknown keys (e.g. `relates` on
13
+ * `tasks.add-batch`) are rejected LOUDLY (DHQ-033).
14
+ * 3. The OUTPUT contract (`getOutputContract`, T11692) — JSON Schema for the
15
+ * LAFS envelope's `data` payload + the curated list of valid `--field`
16
+ * JSON pointers (DHQ-057). This is what lets an agent predict the result
17
+ * shape instead of guessing (`/data/task/title`, NOT `/data/title`).
18
+ *
19
+ * This is the root fix for "agents cannot predict the envelope" (T11692):
20
+ * `--field` pointers, result parsing, and SDK consumers all resolve against
21
+ * ONE declared contract rather than hand-sniffing per verb.
22
+ *
23
+ * @packageDocumentation
24
+ * @module @cleocode/core/dispatch/describe-operation
25
+ *
26
+ * @epic T11679
27
+ * @task T11692 — DHQ-057: per-operation output schema SSoT
28
+ */
29
+ import { type OperationInputContract, type OperationOutputContract } from '@cleocode/contracts';
30
+ import { type OperationSchema } from '@cleocode/lafs';
31
+ /**
32
+ * Fully-resolved I/O contract for a single CLEO operation.
33
+ *
34
+ * Returned by {@link describeOperation}. Bundles the operation's identity, its
35
+ * parameter signature (`params`/`gates` via the LAFS schema), the INPUT
36
+ * contract, and the OUTPUT contract into one machine- and human-readable
37
+ * descriptor. `inputContract` / `outputContract` are `null` for operations not
38
+ * yet migrated to the schema-first surface — callers render the descriptor with
39
+ * a "no contract yet" note rather than failing.
40
+ */
41
+ export interface OperationDescriptor {
42
+ /** Fully-qualified operation key, e.g. `"tasks.show"`. */
43
+ operation: string;
44
+ /** CQRS gateway — read-only (`"query"`) or state-modifying (`"mutate"`). */
45
+ gateway: 'query' | 'mutate';
46
+ /** One-line description of what the operation does. */
47
+ description: string;
48
+ /** Agent progressive-disclosure tier (0=basic, 1=memory/check, 2=full). */
49
+ tier: number;
50
+ /** Whether the operation is safe to retry. */
51
+ idempotent: boolean;
52
+ /** Whether the operation requires an active session. */
53
+ sessionRequired: boolean;
54
+ /**
55
+ * Parameter signature + declared precondition gates, derived from the LAFS
56
+ * {@link OperationSchema}. The authoritative human-readable param list.
57
+ */
58
+ params: OperationSchema;
59
+ /**
60
+ * Schema-first INPUT contract (JSON Schema + examples), or `null` when the
61
+ * operation has no registered input contract yet.
62
+ */
63
+ inputContract: OperationInputContract<unknown> | null;
64
+ /**
65
+ * Schema-first OUTPUT contract (envelope `data` JSON Schema + valid `--field`
66
+ * pointers), or `null` when the operation has no registered output contract
67
+ * yet.
68
+ */
69
+ outputContract: OperationOutputContract | null;
70
+ }
71
+ /**
72
+ * Describe a CLEO operation's full INPUT + OUTPUT contract.
73
+ *
74
+ * The SDK entry point behind `cleo <op> --describe`. Resolves the operation by
75
+ * its canonical `<domain>.<verb>` id and returns a single typed
76
+ * {@link OperationDescriptor}, or `null` when the operation id is unknown.
77
+ *
78
+ * Contract resolution prefers an inline contract carried on the
79
+ * {@link OperationDef} (`def.inputSchema` / `def.outputSchema`) and falls back
80
+ * to the SSoT registries (`getInputContract` / `getOutputContract`). This lets
81
+ * a definition self-describe while keeping the registries authoritative.
82
+ *
83
+ * @param operation - Canonical `<domain>.<verb>` operation id (e.g. `"tasks.show"`).
84
+ * @returns The resolved descriptor, or `null` when the operation is unknown.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * import { describeOperation } from '@cleocode/core';
89
+ *
90
+ * const d = describeOperation('tasks.show');
91
+ * // d.outputContract.fieldPointers includes '/data/task/title'
92
+ * // → the correct pointer; '/data/title' would E_FIELD_NOT_FOUND.
93
+ * ```
94
+ *
95
+ * @task T11692
96
+ */
97
+ export declare function describeOperation(operation: string): OperationDescriptor | null;
98
+ //# sourceMappingURL=describe-operation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-operation.d.ts","sourceRoot":"","sources":["../../src/dispatch/describe-operation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC7B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAuC,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI3F;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC5B,uDAAuD;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,wDAAwD;IACxD,eAAe,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,aAAa,EAAE,sBAAsB,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACtD;;;;OAIG;IACH,cAAc,EAAE,uBAAuB,GAAG,IAAI,CAAC;CAChD;AAyBD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAoB/E"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * describeOperation — SDK introspection of a CLEO operation's I/O contract.
3
+ *
4
+ * The programmatic counterpart to `cleo <op> --describe`. Given a canonical
5
+ * `<domain>.<verb>` operation id (e.g. `'tasks.show'`), composes a single
6
+ * typed {@link OperationDescriptor} from the three SSoT surfaces:
7
+ *
8
+ * 1. {@link OperationDef} (from `@cleocode/contracts`) — gateway, tier,
9
+ * idempotency, session requirement, and the declared `params`.
10
+ * 2. The INPUT contract (`getInputContract`, T9918) — JSON Schema for the
11
+ * accepted request payload + worked examples. The schemas set
12
+ * `additionalProperties: false`, so unknown keys (e.g. `relates` on
13
+ * `tasks.add-batch`) are rejected LOUDLY (DHQ-033).
14
+ * 3. The OUTPUT contract (`getOutputContract`, T11692) — JSON Schema for the
15
+ * LAFS envelope's `data` payload + the curated list of valid `--field`
16
+ * JSON pointers (DHQ-057). This is what lets an agent predict the result
17
+ * shape instead of guessing (`/data/task/title`, NOT `/data/title`).
18
+ *
19
+ * This is the root fix for "agents cannot predict the envelope" (T11692):
20
+ * `--field` pointers, result parsing, and SDK consumers all resolve against
21
+ * ONE declared contract rather than hand-sniffing per verb.
22
+ *
23
+ * @packageDocumentation
24
+ * @module @cleocode/core/dispatch/describe-operation
25
+ *
26
+ * @epic T11679
27
+ * @task T11692 — DHQ-057: per-operation output schema SSoT
28
+ */
29
+ import { OPERATIONS, } from '@cleocode/contracts';
30
+ import { describeOperation as describeParams } from '@cleocode/lafs';
31
+ import { getInputContract } from './contracts/input-contracts.js';
32
+ import { getOutputContract } from './contracts/output-contracts.js';
33
+ /**
34
+ * Resolve the {@link OperationDef} for a canonical `<domain>.<verb>` key.
35
+ *
36
+ * The first dot separates domain from operation, so dotted operation names like
37
+ * `"complexity.estimate"` are handled correctly. When the key has no dot, an
38
+ * unambiguous single-domain match is returned (else `null`).
39
+ *
40
+ * @param operation - The operation id (e.g. `"tasks.show"`).
41
+ * @returns The matching {@link OperationDef}, or `null` if not found / ambiguous.
42
+ *
43
+ * @internal
44
+ */
45
+ function resolveOperationDef(operation) {
46
+ const dotIdx = operation.indexOf('.');
47
+ if (dotIdx === -1) {
48
+ const matches = OPERATIONS.filter((op) => op.operation === operation);
49
+ return matches.length === 1 ? (matches[0] ?? null) : null;
50
+ }
51
+ const domain = operation.slice(0, dotIdx);
52
+ const op = operation.slice(dotIdx + 1);
53
+ return OPERATIONS.find((o) => o.domain === domain && o.operation === op) ?? null;
54
+ }
55
+ /**
56
+ * Describe a CLEO operation's full INPUT + OUTPUT contract.
57
+ *
58
+ * The SDK entry point behind `cleo <op> --describe`. Resolves the operation by
59
+ * its canonical `<domain>.<verb>` id and returns a single typed
60
+ * {@link OperationDescriptor}, or `null` when the operation id is unknown.
61
+ *
62
+ * Contract resolution prefers an inline contract carried on the
63
+ * {@link OperationDef} (`def.inputSchema` / `def.outputSchema`) and falls back
64
+ * to the SSoT registries (`getInputContract` / `getOutputContract`). This lets
65
+ * a definition self-describe while keeping the registries authoritative.
66
+ *
67
+ * @param operation - Canonical `<domain>.<verb>` operation id (e.g. `"tasks.show"`).
68
+ * @returns The resolved descriptor, or `null` when the operation is unknown.
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * import { describeOperation } from '@cleocode/core';
73
+ *
74
+ * const d = describeOperation('tasks.show');
75
+ * // d.outputContract.fieldPointers includes '/data/task/title'
76
+ * // → the correct pointer; '/data/title' would E_FIELD_NOT_FOUND.
77
+ * ```
78
+ *
79
+ * @task T11692
80
+ */
81
+ export function describeOperation(operation) {
82
+ const def = resolveOperationDef(operation);
83
+ if (def === null)
84
+ return null;
85
+ const key = `${def.domain}.${def.operation}`;
86
+ const params = describeParams(def, { includeGates: true, includeExamples: true });
87
+ const inputContract = def.inputSchema ?? getInputContract(key);
88
+ const outputContract = def.outputSchema ?? getOutputContract(key);
89
+ return {
90
+ operation: key,
91
+ gateway: def.gateway,
92
+ description: def.description,
93
+ tier: def.tier,
94
+ idempotent: def.idempotent,
95
+ sessionRequired: def.sessionRequired,
96
+ params,
97
+ inputContract,
98
+ outputContract,
99
+ };
100
+ }
101
+ //# sourceMappingURL=describe-operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"describe-operation.js","sourceRoot":"","sources":["../../src/dispatch/describe-operation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,UAAU,GAIX,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAwB,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AA2CpE;;;;;;;;;;;GAWG;AACH,SAAS,mBAAmB,CAAC,SAAiB;IAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACtE,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,SAAS,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC;AACnF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,MAAM,GAAG,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;IAClF,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,GAAG,CAAC,YAAY,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAElE,OAAO;QACL,SAAS,EAAE,GAAG;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,MAAM;QACN,aAAa;QACb,cAAc;KACf,CAAC;AACJ,CAAC"}
@@ -45,6 +45,18 @@ export interface BuildDocProvenanceGraphOptions {
45
45
  * Project root for DB resolution. Defaults to {@link getProjectRoot}().
46
46
  */
47
47
  readonly projectRoot?: string;
48
+ /**
49
+ * When `true`, hydrate the BFS result with the persisted `docs_wikilinks`
50
+ * backlink edges (T11826) incident to the visited doc nodes — adding
51
+ * `shares-topic` doc↔doc edges (which the on-the-fly BFS does not compute)
52
+ * plus any persisted supersedes / related-task backlinks not already present.
53
+ * The persisted edge table is the Obsidian-grade graph; this folds it into
54
+ * the same envelope without a second query path.
55
+ *
56
+ * @default false
57
+ * @task T11826
58
+ */
59
+ readonly hydrateWikilinks?: boolean;
48
60
  }
49
61
  /**
50
62
  * Error raised when {@link buildDocProvenanceGraph}'s root identifier cannot
@@ -1 +1 @@
1
- {"version":3,"file":"build-provenance-graph.d.ts","sourceRoot":"","sources":["../../src/docs/build-provenance-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EAOtB,MAAM,qBAAqB,CAAC;AAM7B;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;GAKG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,IAAI,EAAE,MAAM;CAMzB;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA0IhC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAa/E"}
1
+ {"version":3,"file":"build-provenance-graph.d.ts","sourceRoot":"","sources":["../../src/docs/build-provenance-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAEV,qBAAqB,EAOtB,MAAM,qBAAqB,CAAC;AAO7B;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CACrC;AAED;;;;;GAKG;AACH,qBAAa,8BAA+B,SAAQ,KAAK;gBAC3C,IAAI,EAAE,MAAM;CAMzB;AAmBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,qBAAqB,CAAC,CA8IhC;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAa/E"}
@@ -24,6 +24,7 @@
24
24
  */
25
25
  import { and, eq, inArray, or, sql } from 'drizzle-orm';
26
26
  import { getProjectRoot } from '../paths.js';
27
+ import { docsWikilinks } from '../store/schema/attachments.js';
27
28
  import { getDb } from '../store/sqlite.js';
28
29
  import { attachmentRefs, attachments } from '../store/tasks-schema.js';
29
30
  /**
@@ -174,6 +175,9 @@ export async function buildDocProvenanceGraph(options) {
174
175
  }
175
176
  frontier = nextFrontier;
176
177
  }
178
+ if (options.hydrateWikilinks) {
179
+ await hydrateFromWikilinks(db, nodes, edges);
180
+ }
177
181
  return {
178
182
  nodes,
179
183
  edges,
@@ -181,6 +185,54 @@ export async function buildDocProvenanceGraph(options) {
181
185
  totalEdges: edges.length,
182
186
  };
183
187
  }
188
+ /**
189
+ * Fold the persisted `docs_wikilinks` backlink edges (T11826) into an
190
+ * already-built provenance graph.
191
+ *
192
+ * For every doc node currently in the graph, pull its incident wikilink edges
193
+ * (both directions) and append any that connect to another doc node already in
194
+ * the graph and are not already present. This surfaces `shares-topic` doc↔doc
195
+ * edges — which the on-the-fly BFS does not compute — without re-deriving the
196
+ * graph. Edges to nodes outside the visited set are skipped so the BFS depth
197
+ * bound is respected.
198
+ *
199
+ * @internal
200
+ * @task T11826
201
+ */
202
+ async function hydrateFromWikilinks(db, nodes, edges) {
203
+ const docSlugs = new Set(nodes.filter((n) => n.kind === 'doc').map((n) => n.id));
204
+ if (docSlugs.size === 0)
205
+ return;
206
+ const rows = await db
207
+ .select()
208
+ .from(docsWikilinks)
209
+ .where(or(inArray(docsWikilinks.fromSlug, [...docSlugs]), inArray(docsWikilinks.toSlug, [...docSlugs])))
210
+ .all();
211
+ // Dedupe against existing edges by (relation, from, to).
212
+ const existing = new Set(edges.map((e) => `${e.relation}|${e.from}|${e.to}`));
213
+ for (const row of rows) {
214
+ // Only fold edges whose endpoints are both already visited doc nodes —
215
+ // related-task edges are already emitted by the BFS, and topic links to
216
+ // unvisited docs would breach the depth bound.
217
+ if (row.relation === 'related-task')
218
+ continue;
219
+ if (!docSlugs.has(row.fromSlug) || !docSlugs.has(row.toSlug))
220
+ continue;
221
+ const relation = row.relation === 'topic' ? 'shares-topic' : row.relation;
222
+ const key = `${relation}|${row.fromSlug}|${row.toSlug}`;
223
+ if (existing.has(key))
224
+ continue;
225
+ existing.add(key);
226
+ edges.push({
227
+ relation,
228
+ from: row.fromSlug,
229
+ fromKind: 'doc',
230
+ to: row.toSlug,
231
+ toKind: 'doc',
232
+ addedAt: row.derivedAt,
233
+ });
234
+ }
235
+ }
184
236
  /**
185
237
  * Render a {@link DocProvenanceResponse} as a Graphviz DOT graph.
186
238
  *
@@ -1 +1 @@
1
- {"version":3,"file":"build-provenance-graph.js","sourceRoot":"","sources":["../../src/docs/build-provenance-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAYH,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AA0BvE;;;;;GAKG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YAAY,IAAY;QACtB,KAAK,CACH,SAAS,IAAI,qFAAqF,CACnG,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;IAC/C,CAAC;CACF;AAmBD;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAuC;IAEvC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,SAAS,CAAC,6CAA6C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,cAAc,EAAE,CAAC;IAC5D,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAEpC,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,8BAA8B,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,6EAA6E;IAC7E,6EAA6E;IAC7E,qBAAqB;IACrB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAW,CAAC;IACvC,MAAM,KAAK,GAAqB,EAAE,CAAC;IACnC,MAAM,KAAK,GAAqB,EAAE,CAAC;IAEnC,IAAI,QAAQ,GAAoB,QAAQ,CAAC;IACzC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC5B,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;QAC5D,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,wEAAwE;QACxE,kEAAkE;QAClE,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,UAAU;gBAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC3D,IAAI,GAAG,CAAC,YAAY;gBAAE,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBAClD,IAAI,MAAM,EAAE,CAAC;oBACX,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBACtE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC7B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;YACD,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrB,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACpD,IAAI,MAAM,EAAE,CAAC;oBACX,eAAe,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;oBACzE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;wBAClC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC7B,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,0EAA0E;QAC1E,0EAA0E;QAC1E,qEAAqE;QACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,MAAM,EAAE;iBACtB,MAAM,CAAC;gBACN,YAAY,EAAE,cAAc,CAAC,YAAY;gBACzC,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,UAAU,EAAE,cAAc,CAAC,UAAU;aACtC,CAAC;iBACD,IAAI,CAAC,cAAc,CAAC;iBACpB,KAAK,CACJ,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CACxF;iBACA,GAAG,EAAE,CAAC;YAET,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,YAAY,CAAC,CAAC;gBAC/D,IAAI,CAAC,MAAM;oBAAE,SAAS;gBACtB,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC7C,MAAM,OAAO,GAAG,QAAQ,GAAG,CAAC,OAAO,EAAW,CAAC;gBAC/C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;gBAClC,KAAK,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,aAAa;oBACvB,IAAI,EAAE,OAAO,CAAC,EAAE;oBAChB,QAAQ,EAAE,KAAK;oBACf,EAAE,EAAE,QAAQ,CAAC,EAAE;oBACf,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,GAAG,CAAC,UAAU;iBACxB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,2EAA2E;QAC3E,0EAA0E;QAC1E,8BAA8B;QAC9B,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,YAAY;gBAAE,SAAS;YAChC,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;gBAC3B,MAAM,OAAO,GAAG,QAAQ,MAAM,EAAW,CAAC;gBAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC9B,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;gBACrC,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC;oBACT,QAAQ,EAAE,cAAc;oBACxB,IAAI,EAAE,OAAO,CAAC,EAAE;oBAChB,QAAQ,EAAE,KAAK;oBACf,EAAE,EAAE,MAAM;oBACV,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,GAAG,CAAC,SAAS;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,QAAQ,GAAG,YAAY,CAAC;IAC1B,CAAC;IAED,OAAO;QACL,KAAK;QACL,KAAK;QACL,UAAU,EAAE,KAAK,CAAC,MAAM;QACxB,UAAU,EAAE,KAAK,CAAC,MAAM;KACzB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,0BAA0B,CAAC,KAA4B;IACrE,MAAM,KAAK,GAAa,CAAC,yBAAyB,EAAE,eAAe,EAAE,qBAAqB,CAAC,CAAC;IAC5F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,MAAM,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,YAAY,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzF,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CACR,MAAM,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,CAAC,QAAQ,KAAK,CACrH,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,KAAK,UAAU,eAAe,CAC5B,EAAqC,EACrC,IAAY;IAEZ,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;QACxF,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxC,CAAC;IAED,gEAAgE;IAChE,6DAA6D;IAC7D,MAAM,OAAO,GAAG,MAAM,EAAE;SACrB,MAAM,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC,YAAY,EAAE,CAAC;SACrD,IAAI,CAAC,cAAc,CAAC;SACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;SAClF,GAAG,EAAE,CAAC;IACT,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAElD,MAAM,WAAW,GAAG,MAAM,EAAE;SACzB,MAAM,EAAE;SACR,IAAI,CAAC,WAAW,CAAC;SACjB,KAAK,CACJ,EAAE;IACA,mEAAmE;IACnE,8DAA8D;IAC9D,GAAG,CAAA,mCAAmC,WAAW,CAAC,YAAY,mBAAmB,IAAI,GAAG,EACxF,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAA,GAAG,CAC7D,CACF;SACA,GAAG,EAAE,CAAC;IAET,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,EAAqC,EACrC,GAAsB;IAEtB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,MAAM,EAAE;SACR,IAAI,CAAC,WAAW,CAAC;SACjB,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;SACxC,GAAG,EAAE,CAAC;IACT,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,YAAY,CAAC,GAAoC;IACxD,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;QACtB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;QACtB,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,IAAI;QAClC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACtC,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,IAAI;QAC5B,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,IAAI;QACtC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,cAAc,EAAE,GAAG,CAAC,cAAc;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,GAAkB;IACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC;IACtC,MAAM,IAAI,GAAsB;QAC9B,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,OAAO;QACP,KAAK,EAAE,YAAY,CAAC,GAAG,CAAC;QACxB,eAAe,EAAE,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC;QAC3D,WAAW,EAAE,GAAG,CAAC,SAAS;QAC1B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjD,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,OAAO;QACL,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,KAAK,EAAE,MAAM;QACb,0EAA0E;QAC1E,yEAAyE;QACzE,0EAA0E;QAC1E,eAAe;QACf,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,SAAS;KAClB,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAuB;IACzC,OAAO,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;AAC1B,CAAC;AAED,SAAS,eAAe,CACtB,MAAqB,EACrB,QAAgC,EAChC,MAAqB,EACrB,KAAuB,EACvB,KAAuB,EACvB,WAAyB;IAEzB,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC;QACT,QAAQ;QACR,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE,KAAK;QACf,EAAE,EAAE,UAAU,CAAC,EAAE;QACjB,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,MAAM,CAAC,SAAS;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACrC,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,GAAW;IACxC,2EAA2E;IAC3E,iFAAiF;IACjF,0EAA0E;IAC1E,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,UAAU,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB,KAAK,YAAY;YACf,OAAO,UAAU,CAAC;QACpB,KAAK,OAAO,CAAC;QACb,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,GAAG,CAAC;QACb;YACE,OAAO,OAAO,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAkB;IACtC,wEAAwE;IACxE,0EAA0E;IAC1E,gEAAgE;IAChE,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACvD,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,MAAiC,CAAC;YAC9C,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,CAAC,cAAc,CAAC,KAAK,QAAQ;gBAAE,OAAO,GAAG,CAAC,cAAc,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,SAAS,CAAC,IAAoB;IACrC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,eAAe,GAAG,CAAC;QAClF,KAAK,MAAM;YACT,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACrD,KAAK,UAAU;YACb,OAAO,YAAY,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,CAAC;QACjD,KAAK,SAAS;YACZ,OAAO,WAAW,IAAI,CAAC,EAAE,EAAE,CAAC;QAC9B,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,GAAG,CAAC;IACpD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,IAAwB,EAAE,EAAU;IACvD,0EAA0E;IAC1E,0EAA0E;IAC1E,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;AAC9C,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"build-provenance-graph.js","sourceRoot":"","sources":["../../src/docs/build-provenance-graph.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,25 @@ export interface ResolvedDoc {
52
52
  /** Which backing store this doc was resolved from. */
53
53
  readonly source: 'tasks-db' | 'manifest-db' | 'merged';
54
54
  }
55
+ /**
56
+ * Discriminated result of {@link DocsReadModel.fetchDecoded}.
57
+ *
58
+ * The success arm carries both the resolved doc record and its decoded
59
+ * UTF-8 body; the failure arms distinguish a missing reference from a
60
+ * resolvable doc whose blob could not be read.
61
+ */
62
+ export type DecodedDocResult = {
63
+ readonly ok: true;
64
+ readonly doc: ResolvedDoc;
65
+ readonly content: string;
66
+ } | {
67
+ readonly ok: false;
68
+ readonly reason: 'not-found';
69
+ } | {
70
+ readonly ok: false;
71
+ readonly reason: 'no-content';
72
+ readonly doc: ResolvedDoc;
73
+ };
55
74
  /**
56
75
  * Filters for {@link DocsReadModel.listProjectDocs}.
57
76
  */
@@ -185,6 +204,27 @@ export declare class DocsReadModel {
185
204
  * cannot be read.
186
205
  */
187
206
  fetchContent(doc: ResolvedDoc): Promise<string | null>;
207
+ /**
208
+ * Resolve a reference (slug, attachment ID, or SHA-256) and return its
209
+ * decoded UTF-8 body in a single call.
210
+ *
211
+ * Convenience wrapper around the resolve → {@link fetchContent} two-step
212
+ * used by agent-facing surfaces (e.g. `cleo docs fetch --content`) that
213
+ * want the raw document text without first hand-decoding the base64
214
+ * `bytesBase64` field from the LAFS fetch envelope (T10970).
215
+ *
216
+ * Resolution order mirrors the canonical fetch path: slug first (the
217
+ * common agent ergonomic), then attachment ID / SHA-256 content address.
218
+ *
219
+ * @param ref - Slug, attachment UUID, or 64-char hex SHA-256.
220
+ * @returns A discriminated result:
221
+ * - `{ ok: true, doc, content }` when the ref resolved AND content was
222
+ * retrievable.
223
+ * - `{ ok: false, reason: 'not-found' }` when no doc carries the ref.
224
+ * - `{ ok: false, reason: 'no-content', doc }` when the doc metadata
225
+ * exists but its blob could not be read (e.g. purged or unpublished).
226
+ */
227
+ fetchDecoded(ref: string): Promise<DecodedDocResult>;
188
228
  /**
189
229
  * Fetch content for multiple docs in parallel.
190
230
  *
@@ -1 +1 @@
1
- {"version":3,"file":"docs-read-model.d.ts","sourceRoot":"","sources":["../../src/docs/docs-read-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docs-read-model.d.ts","sourceRoot":"","sources":["../../src/docs/docs-read-model.ts"],"names":[],"mappings":"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"}
@@ -271,6 +271,35 @@ export class DocsReadModel {
271
271
  }
272
272
  return null;
273
273
  }
274
+ /**
275
+ * Resolve a reference (slug, attachment ID, or SHA-256) and return its
276
+ * decoded UTF-8 body in a single call.
277
+ *
278
+ * Convenience wrapper around the resolve → {@link fetchContent} two-step
279
+ * used by agent-facing surfaces (e.g. `cleo docs fetch --content`) that
280
+ * want the raw document text without first hand-decoding the base64
281
+ * `bytesBase64` field from the LAFS fetch envelope (T10970).
282
+ *
283
+ * Resolution order mirrors the canonical fetch path: slug first (the
284
+ * common agent ergonomic), then attachment ID / SHA-256 content address.
285
+ *
286
+ * @param ref - Slug, attachment UUID, or 64-char hex SHA-256.
287
+ * @returns A discriminated result:
288
+ * - `{ ok: true, doc, content }` when the ref resolved AND content was
289
+ * retrievable.
290
+ * - `{ ok: false, reason: 'not-found' }` when no doc carries the ref.
291
+ * - `{ ok: false, reason: 'no-content', doc }` when the doc metadata
292
+ * exists but its blob could not be read (e.g. purged or unpublished).
293
+ */
294
+ async fetchDecoded(ref) {
295
+ const doc = (await this.resolveBySlug(ref)) ?? (await this.resolveByAttachmentId(ref));
296
+ if (!doc)
297
+ return { ok: false, reason: 'not-found' };
298
+ const content = await this.fetchContent(doc);
299
+ if (content === null)
300
+ return { ok: false, reason: 'no-content', doc };
301
+ return { ok: true, doc, content };
302
+ }
274
303
  /**
275
304
  * Fetch content for multiple docs in parallel.
276
305
  *