daftari 1.29.0 → 1.31.0
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.
- package/CHANGELOG.md +281 -0
- package/README.md +263 -9
- package/dist/access/rbac.d.ts +1 -0
- package/dist/access/rbac.d.ts.map +1 -1
- package/dist/access/rbac.js +7 -0
- package/dist/access/rbac.js.map +1 -1
- package/dist/asof/git-read.d.ts +17 -0
- package/dist/asof/git-read.d.ts.map +1 -0
- package/dist/asof/git-read.js +163 -0
- package/dist/asof/git-read.js.map +1 -0
- package/dist/asof/index.d.ts +2 -0
- package/dist/asof/index.d.ts.map +1 -0
- package/dist/asof/index.js +151 -0
- package/dist/asof/index.js.map +1 -0
- package/dist/asof/report.d.ts +11 -0
- package/dist/asof/report.d.ts.map +1 -0
- package/dist/asof/report.js +119 -0
- package/dist/asof/report.js.map +1 -0
- package/dist/asof/snapshot.d.ts +72 -0
- package/dist/asof/snapshot.d.ts.map +1 -0
- package/dist/asof/snapshot.js +207 -0
- package/dist/asof/snapshot.js.map +1 -0
- package/dist/audit/checks/broken_refs.d.ts +1 -1
- package/dist/audit/checks/broken_refs.d.ts.map +1 -1
- package/dist/audit/checks/broken_refs.js +77 -22
- package/dist/audit/checks/broken_refs.js.map +1 -1
- package/dist/audit/collect.d.ts +1 -0
- package/dist/audit/collect.d.ts.map +1 -1
- package/dist/audit/collect.js +22 -2
- package/dist/audit/collect.js.map +1 -1
- package/dist/audit/index.d.ts.map +1 -1
- package/dist/audit/index.js +9 -3
- package/dist/audit/index.js.map +1 -1
- package/dist/audit/links.d.ts.map +1 -1
- package/dist/audit/links.js +9 -3
- package/dist/audit/links.js.map +1 -1
- package/dist/audit/report.d.ts.map +1 -1
- package/dist/audit/report.js +2 -0
- package/dist/audit/report.js.map +1 -1
- package/dist/audit/types.d.ts +4 -1
- package/dist/audit/types.d.ts.map +1 -1
- package/dist/audit/types.js.map +1 -1
- package/dist/backfill/apply.js +2 -2
- package/dist/backfill/apply.js.map +1 -1
- package/dist/backfill/derive.d.ts.map +1 -1
- package/dist/backfill/derive.js +1 -0
- package/dist/backfill/derive.js.map +1 -1
- package/dist/backfill/plan.js +2 -2
- package/dist/backfill/plan.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -0
- package/dist/cli.js.map +1 -1
- package/dist/consolidate/call-budget.d.ts +3 -0
- package/dist/consolidate/call-budget.d.ts.map +1 -0
- package/dist/consolidate/call-budget.js +37 -0
- package/dist/consolidate/call-budget.js.map +1 -0
- package/dist/consolidate/constants.d.ts +1 -0
- package/dist/consolidate/constants.d.ts.map +1 -1
- package/dist/consolidate/constants.js +5 -0
- package/dist/consolidate/constants.js.map +1 -1
- package/dist/consolidate/index.d.ts.map +1 -1
- package/dist/consolidate/index.js +96 -27
- package/dist/consolidate/index.js.map +1 -1
- package/dist/court/docket.d.ts +39 -0
- package/dist/court/docket.d.ts.map +1 -0
- package/dist/court/docket.js +103 -0
- package/dist/court/docket.js.map +1 -0
- package/dist/court/index.d.ts +2 -0
- package/dist/court/index.d.ts.map +1 -0
- package/dist/court/index.js +169 -0
- package/dist/court/index.js.map +1 -0
- package/dist/court/precedent.d.ts +18 -0
- package/dist/court/precedent.d.ts.map +1 -0
- package/dist/court/precedent.js +89 -0
- package/dist/court/precedent.js.map +1 -0
- package/dist/court/report.d.ts +10 -0
- package/dist/court/report.d.ts.map +1 -0
- package/dist/court/report.js +77 -0
- package/dist/court/report.js.map +1 -0
- package/dist/curation/consumes.d.ts +24 -0
- package/dist/curation/consumes.d.ts.map +1 -0
- package/dist/curation/consumes.js +122 -0
- package/dist/curation/consumes.js.map +1 -0
- package/dist/curation/edge-staleness.d.ts +47 -0
- package/dist/curation/edge-staleness.d.ts.map +1 -0
- package/dist/curation/edge-staleness.js +258 -0
- package/dist/curation/edge-staleness.js.map +1 -0
- package/dist/curation/edges.d.ts.map +1 -1
- package/dist/curation/edges.js +164 -10
- package/dist/curation/edges.js.map +1 -1
- package/dist/curation/lint.d.ts +4 -1
- package/dist/curation/lint.d.ts.map +1 -1
- package/dist/curation/lint.js +61 -6
- package/dist/curation/lint.js.map +1 -1
- package/dist/curation/provenance.d.ts +2 -0
- package/dist/curation/provenance.d.ts.map +1 -1
- package/dist/curation/provenance.js +2 -0
- package/dist/curation/provenance.js.map +1 -1
- package/dist/curation/read-log.d.ts +19 -0
- package/dist/curation/read-log.d.ts.map +1 -0
- package/dist/curation/read-log.js +120 -0
- package/dist/curation/read-log.js.map +1 -0
- package/dist/curation/review-throughput.d.ts +24 -0
- package/dist/curation/review-throughput.d.ts.map +1 -0
- package/dist/curation/review-throughput.js +102 -0
- package/dist/curation/review-throughput.js.map +1 -0
- package/dist/curation/staged-actions.d.ts +11 -1
- package/dist/curation/staged-actions.d.ts.map +1 -1
- package/dist/curation/staged-actions.js +117 -30
- package/dist/curation/staged-actions.js.map +1 -1
- package/dist/curation/staleness.js +1 -1
- package/dist/curation/staleness.js.map +1 -1
- package/dist/curation/structural.d.ts +16 -0
- package/dist/curation/structural.d.ts.map +1 -0
- package/dist/curation/structural.js +64 -0
- package/dist/curation/structural.js.map +1 -0
- package/dist/curation/tension-access.d.ts +7 -0
- package/dist/curation/tension-access.d.ts.map +1 -0
- package/dist/curation/tension-access.js +44 -0
- package/dist/curation/tension-access.js.map +1 -0
- package/dist/curation/tension-blast.d.ts +6 -1
- package/dist/curation/tension-blast.d.ts.map +1 -1
- package/dist/curation/tension-blast.js +11 -2
- package/dist/curation/tension-blast.js.map +1 -1
- package/dist/curation/tension-clusters.d.ts +1 -1
- package/dist/curation/tension-clusters.d.ts.map +1 -1
- package/dist/curation/tension-clusters.js +5 -2
- package/dist/curation/tension-clusters.js.map +1 -1
- package/dist/curation/tension.d.ts +6 -2
- package/dist/curation/tension.d.ts.map +1 -1
- package/dist/curation/tension.js +86 -35
- package/dist/curation/tension.js.map +1 -1
- package/dist/curation/tier0.d.ts +27 -0
- package/dist/curation/tier0.d.ts.map +1 -0
- package/dist/curation/tier0.js +196 -0
- package/dist/curation/tier0.js.map +1 -0
- package/dist/curation/tier1.d.ts +30 -0
- package/dist/curation/tier1.d.ts.map +1 -0
- package/dist/curation/tier1.js +142 -0
- package/dist/curation/tier1.js.map +1 -0
- package/dist/curation/tier2.d.ts +43 -0
- package/dist/curation/tier2.d.ts.map +1 -0
- package/dist/curation/tier2.js +182 -0
- package/dist/curation/tier2.js.map +1 -0
- package/dist/curation/vault-docs.d.ts +5 -1
- package/dist/curation/vault-docs.d.ts.map +1 -1
- package/dist/curation/vault-docs.js +15 -1
- package/dist/curation/vault-docs.js.map +1 -1
- package/dist/eval/generate.js +22 -5
- package/dist/eval/generate.js.map +1 -1
- package/dist/eval/index.d.ts.map +1 -1
- package/dist/eval/index.js +173 -25
- package/dist/eval/index.js.map +1 -1
- package/dist/eval/llm-openrouter.d.ts +9 -0
- package/dist/eval/llm-openrouter.d.ts.map +1 -0
- package/dist/eval/llm-openrouter.js +171 -0
- package/dist/eval/llm-openrouter.js.map +1 -0
- package/dist/eval/llm.js +1 -1
- package/dist/eval/llm.js.map +1 -1
- package/dist/eval/prune.d.ts +24 -0
- package/dist/eval/prune.d.ts.map +1 -0
- package/dist/eval/prune.js +83 -0
- package/dist/eval/prune.js.map +1 -0
- package/dist/eval/storage.d.ts +3 -0
- package/dist/eval/storage.d.ts.map +1 -1
- package/dist/eval/storage.js +14 -0
- package/dist/eval/storage.js.map +1 -1
- package/dist/frontmatter/parser.d.ts +1 -0
- package/dist/frontmatter/parser.d.ts.map +1 -1
- package/dist/frontmatter/parser.js +12 -0
- package/dist/frontmatter/parser.js.map +1 -1
- package/dist/frontmatter/schema.d.ts.map +1 -1
- package/dist/frontmatter/schema.js +38 -3
- package/dist/frontmatter/schema.js.map +1 -1
- package/dist/frontmatter/types.d.ts +4 -1
- package/dist/frontmatter/types.d.ts.map +1 -1
- package/dist/frontmatter/types.js +8 -0
- package/dist/frontmatter/types.js.map +1 -1
- package/dist/import/index.d.ts.map +1 -1
- package/dist/import/index.js +44 -9
- package/dist/import/index.js.map +1 -1
- package/dist/import/langgraph-store.d.ts +53 -0
- package/dist/import/langgraph-store.d.ts.map +1 -0
- package/dist/import/langgraph-store.js +292 -0
- package/dist/import/langgraph-store.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +56 -18
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/lock.d.ts +9 -1
- package/dist/lifecycle/lock.d.ts.map +1 -1
- package/dist/lifecycle/lock.js +34 -9
- package/dist/lifecycle/lock.js.map +1 -1
- package/dist/okf/export.d.ts +12 -0
- package/dist/okf/export.d.ts.map +1 -0
- package/dist/okf/export.js +115 -0
- package/dist/okf/export.js.map +1 -0
- package/dist/okf/import.d.ts +24 -0
- package/dist/okf/import.d.ts.map +1 -0
- package/dist/okf/import.js +107 -0
- package/dist/okf/import.js.map +1 -0
- package/dist/okf/index.d.ts +2 -0
- package/dist/okf/index.d.ts.map +1 -0
- package/dist/okf/index.js +147 -0
- package/dist/okf/index.js.map +1 -0
- package/dist/okf/map.d.ts +16 -0
- package/dist/okf/map.d.ts.map +1 -0
- package/dist/okf/map.js +149 -0
- package/dist/okf/map.js.map +1 -0
- package/dist/okf/types.d.ts +9 -0
- package/dist/okf/types.d.ts.map +1 -0
- package/dist/okf/types.js +48 -0
- package/dist/okf/types.js.map +1 -0
- package/dist/search/contested.d.ts +18 -0
- package/dist/search/contested.d.ts.map +1 -0
- package/dist/search/contested.js +119 -0
- package/dist/search/contested.js.map +1 -0
- package/dist/search/coverage.d.ts.map +1 -1
- package/dist/search/coverage.js +1 -1
- package/dist/search/coverage.js.map +1 -1
- package/dist/search/hybrid.d.ts +23 -0
- package/dist/search/hybrid.d.ts.map +1 -1
- package/dist/search/hybrid.js +75 -15
- package/dist/search/hybrid.js.map +1 -1
- package/dist/search/reindex.d.ts +1 -0
- package/dist/search/reindex.d.ts.map +1 -1
- package/dist/search/reindex.js +57 -24
- package/dist/search/reindex.js.map +1 -1
- package/dist/search/watcher.d.ts +2 -0
- package/dist/search/watcher.d.ts.map +1 -1
- package/dist/search/watcher.js +23 -12
- package/dist/search/watcher.js.map +1 -1
- package/dist/serve/index.d.ts +36 -0
- package/dist/serve/index.d.ts.map +1 -0
- package/dist/serve/index.js +507 -0
- package/dist/serve/index.js.map +1 -0
- package/dist/server.d.ts +10 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +91 -12
- package/dist/server.js.map +1 -1
- package/dist/sleep/cycle.d.ts +59 -0
- package/dist/sleep/cycle.d.ts.map +1 -0
- package/dist/sleep/cycle.js +127 -0
- package/dist/sleep/cycle.js.map +1 -0
- package/dist/sleep/index.d.ts +5 -0
- package/dist/sleep/index.d.ts.map +1 -0
- package/dist/sleep/index.js +320 -0
- package/dist/sleep/index.js.map +1 -0
- package/dist/sleep/report.d.ts +14 -0
- package/dist/sleep/report.d.ts.map +1 -0
- package/dist/sleep/report.js +139 -0
- package/dist/sleep/report.js.map +1 -0
- package/dist/sleep/tension-scan-state.d.ts +19 -0
- package/dist/sleep/tension-scan-state.d.ts.map +1 -0
- package/dist/sleep/tension-scan-state.js +0 -0
- package/dist/sleep/tension-scan-state.js.map +1 -0
- package/dist/sleep/tension-scan.d.ts +44 -0
- package/dist/sleep/tension-scan.d.ts.map +1 -0
- package/dist/sleep/tension-scan.js +0 -0
- package/dist/sleep/tension-scan.js.map +1 -0
- package/dist/storage/backend.d.ts +12 -0
- package/dist/storage/backend.d.ts.map +1 -0
- package/dist/storage/backend.js +231 -0
- package/dist/storage/backend.js.map +1 -0
- package/dist/storage/backends/fs.d.ts +4 -0
- package/dist/storage/backends/fs.d.ts.map +1 -0
- package/dist/storage/backends/fs.js +99 -0
- package/dist/storage/backends/fs.js.map +1 -0
- package/dist/storage/fs-walk.d.ts +5 -0
- package/dist/storage/fs-walk.d.ts.map +1 -0
- package/dist/storage/fs-walk.js +28 -0
- package/dist/storage/fs-walk.js.map +1 -0
- package/dist/storage/index-db.d.ts +18 -0
- package/dist/storage/index-db.d.ts.map +1 -1
- package/dist/storage/index-db.js +159 -22
- package/dist/storage/index-db.js.map +1 -1
- package/dist/storage/local.d.ts +7 -1
- package/dist/storage/local.d.ts.map +1 -1
- package/dist/storage/local.js +42 -4
- package/dist/storage/local.js.map +1 -1
- package/dist/storage/sync.d.ts +25 -0
- package/dist/storage/sync.d.ts.map +1 -0
- package/dist/storage/sync.js +308 -0
- package/dist/storage/sync.js.map +1 -0
- package/dist/sync/index.d.ts +2 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +136 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/themes/clustering.d.ts +6 -11
- package/dist/themes/clustering.d.ts.map +1 -1
- package/dist/themes/clustering.js +76 -84
- package/dist/themes/clustering.js.map +1 -1
- package/dist/tools/consumes.d.ts +14 -0
- package/dist/tools/consumes.d.ts.map +1 -0
- package/dist/tools/consumes.js +99 -0
- package/dist/tools/consumes.js.map +1 -0
- package/dist/tools/curation.d.ts +2 -0
- package/dist/tools/curation.d.ts.map +1 -1
- package/dist/tools/curation.js +102 -7
- package/dist/tools/curation.js.map +1 -1
- package/dist/tools/edge-staleness.d.ts +28 -0
- package/dist/tools/edge-staleness.d.ts.map +1 -0
- package/dist/tools/edge-staleness.js +205 -0
- package/dist/tools/edge-staleness.js.map +1 -0
- package/dist/tools/edges.d.ts.map +1 -1
- package/dist/tools/edges.js +28 -22
- package/dist/tools/edges.js.map +1 -1
- package/dist/tools/read.d.ts +15 -1
- package/dist/tools/read.d.ts.map +1 -1
- package/dist/tools/read.js +144 -31
- package/dist/tools/read.js.map +1 -1
- package/dist/tools/receipt.d.ts +65 -0
- package/dist/tools/receipt.d.ts.map +1 -0
- package/dist/tools/receipt.js +257 -0
- package/dist/tools/receipt.js.map +1 -0
- package/dist/tools/search.d.ts +1 -0
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +186 -12
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/staged-actions.d.ts +3 -0
- package/dist/tools/staged-actions.d.ts.map +1 -1
- package/dist/tools/staged-actions.js +228 -23
- package/dist/tools/staged-actions.js.map +1 -1
- package/dist/tools/themes.d.ts +9 -0
- package/dist/tools/themes.d.ts.map +1 -1
- package/dist/tools/themes.js +333 -133
- package/dist/tools/themes.js.map +1 -1
- package/dist/tools/tier1.d.ts +14 -0
- package/dist/tools/tier1.d.ts.map +1 -0
- package/dist/tools/tier1.js +169 -0
- package/dist/tools/tier1.js.map +1 -0
- package/dist/tools/tier2.d.ts +27 -0
- package/dist/tools/tier2.d.ts.map +1 -0
- package/dist/tools/tier2.js +344 -0
- package/dist/tools/tier2.js.map +1 -0
- package/dist/tools/witness.d.ts +9 -0
- package/dist/tools/witness.d.ts.map +1 -0
- package/dist/tools/witness.js +66 -0
- package/dist/tools/witness.js.map +1 -0
- package/dist/tools/write.d.ts +9 -1
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +593 -59
- package/dist/tools/write.js.map +1 -1
- package/dist/utils/config.d.ts +54 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +420 -4
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +15 -0
- package/dist/utils/paths.js.map +1 -0
- package/dist/utils/redos.d.ts +2 -0
- package/dist/utils/redos.d.ts.map +1 -0
- package/dist/utils/redos.js +101 -0
- package/dist/utils/redos.js.map +1 -0
- package/dist/utils/run-id.d.ts +3 -0
- package/dist/utils/run-id.d.ts.map +1 -0
- package/dist/utils/run-id.js +19 -0
- package/dist/utils/run-id.js.map +1 -0
- package/dist/utils/vault-gitignore.d.ts +1 -1
- package/dist/utils/vault-gitignore.d.ts.map +1 -1
- package/dist/utils/vault-gitignore.js +6 -1
- package/dist/utils/vault-gitignore.js.map +1 -1
- package/dist/witness/track-record.d.ts +42 -0
- package/dist/witness/track-record.d.ts.map +1 -0
- package/dist/witness/track-record.js +189 -0
- package/dist/witness/track-record.js.map +1 -0
- package/package.json +27 -2
- package/templates/config.yaml +8 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TensionEntry } from "../curation/tension.js";
|
|
2
|
+
export type PrecedentMatchTier = "shared-document" | "collection-pair" | "same-kind";
|
|
3
|
+
export interface Precedent {
|
|
4
|
+
id: string | null;
|
|
5
|
+
title: string;
|
|
6
|
+
date: string;
|
|
7
|
+
kind: string;
|
|
8
|
+
resolutionKind: string;
|
|
9
|
+
resolvedAt: string;
|
|
10
|
+
resolvedBy: string;
|
|
11
|
+
rationale: string | null;
|
|
12
|
+
references: string[];
|
|
13
|
+
matchTier: PrecedentMatchTier;
|
|
14
|
+
matchDetail: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const PRECEDENT_CAP = 3;
|
|
17
|
+
export declare function findPrecedents(open: TensionEntry, rulings: TensionEntry[]): Precedent[];
|
|
18
|
+
//# sourceMappingURL=precedent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precedent.d.ts","sourceRoot":"","sources":["../../src/court/precedent.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAErF,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,kBAAkB,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB;AAyDD,eAAO,MAAM,aAAa,IAAI,CAAC;AAI/B,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,SAAS,EAAE,CAcvF"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// Precedent retrieval for the Tension Court — common-law memory.
|
|
2
|
+
//
|
|
3
|
+
// A ruling is a resolved tension: the resolution kind, rationale, and
|
|
4
|
+
// references recorded by vault_tension_resolve (or `daftari court rule`).
|
|
5
|
+
// When a new tension comes up for ruling, past rulings on similar disputes
|
|
6
|
+
// are surfaced so the house resolves the same kind of disagreement the same
|
|
7
|
+
// way — or knowingly departs from its own precedent.
|
|
8
|
+
//
|
|
9
|
+
// "Similar" is deterministic — no LLM, no semantic scoring. Three tiers,
|
|
10
|
+
// most specific wins:
|
|
11
|
+
// 1. shared-document — the open tension involves a document a past ruling
|
|
12
|
+
// also involved.
|
|
13
|
+
// 2. collection-pair — the (unordered) pair of collections the two sides
|
|
14
|
+
// live in matches a past ruling's pair.
|
|
15
|
+
// 3. same-kind — the tension kind (temporal | factual | interpretive)
|
|
16
|
+
// matches.
|
|
17
|
+
// Within a tier, newer rulings first. The court retrieves precedent; it
|
|
18
|
+
// never decides. Whether a precedent applies is the human's judgment.
|
|
19
|
+
import { canonicalRel } from "../utils/paths.js";
|
|
20
|
+
const TIER_ORDER = {
|
|
21
|
+
"shared-document": 1,
|
|
22
|
+
"collection-pair": 2,
|
|
23
|
+
"same-kind": 3,
|
|
24
|
+
};
|
|
25
|
+
// Canonicalized before taking the top segment — an alias like
|
|
26
|
+
// `pricing/../secret/x.md` is a secret doc and must key as one (#127/#128
|
|
27
|
+
// class). Escaping paths key as `..`, blank as "": neither can collide with
|
|
28
|
+
// a real collection.
|
|
29
|
+
function topCollection(relPath) {
|
|
30
|
+
return canonicalRel(relPath).split("/")[0] ?? "";
|
|
31
|
+
}
|
|
32
|
+
// The unordered collection pair of a tension's two sides, as a canonical key.
|
|
33
|
+
function collectionPairKey(t) {
|
|
34
|
+
const pair = [topCollection(t.sourceA), topCollection(t.sourceB)].sort();
|
|
35
|
+
return pair.join(" ↔ ");
|
|
36
|
+
}
|
|
37
|
+
function matchTier(open, ruling) {
|
|
38
|
+
const base = {
|
|
39
|
+
id: ruling.id ?? null,
|
|
40
|
+
title: ruling.title,
|
|
41
|
+
date: ruling.date,
|
|
42
|
+
kind: ruling.kind,
|
|
43
|
+
resolutionKind: ruling.resolution?.kind ?? "",
|
|
44
|
+
resolvedAt: ruling.resolution?.resolved_at ?? "",
|
|
45
|
+
resolvedBy: ruling.resolution?.resolved_by ?? "",
|
|
46
|
+
rationale: ruling.resolution?.rationale ?? null,
|
|
47
|
+
references: ruling.resolution?.references ?? [],
|
|
48
|
+
};
|
|
49
|
+
const openDocs = new Set([open.sourceA, open.sourceB]);
|
|
50
|
+
const shared = [ruling.sourceA, ruling.sourceB].filter((p) => p.length > 0 && openDocs.has(p));
|
|
51
|
+
if (shared.length > 0) {
|
|
52
|
+
return {
|
|
53
|
+
...base,
|
|
54
|
+
matchTier: "shared-document",
|
|
55
|
+
matchDetail: `also involved ${[...new Set(shared)].join(", ")}`,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
const pair = collectionPairKey(open);
|
|
59
|
+
if (pair === collectionPairKey(ruling)) {
|
|
60
|
+
return { ...base, matchTier: "collection-pair", matchDetail: `same collections: ${pair}` };
|
|
61
|
+
}
|
|
62
|
+
if (open.kind !== "unspecified" && open.kind === ruling.kind) {
|
|
63
|
+
return { ...base, matchTier: "same-kind", matchDetail: `same kind: ${open.kind}` };
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
export const PRECEDENT_CAP = 3;
|
|
68
|
+
// Rulings relevant to an open tension, most specific tier first, newest
|
|
69
|
+
// ruling first within a tier, capped at PRECEDENT_CAP.
|
|
70
|
+
export function findPrecedents(open, rulings) {
|
|
71
|
+
const matches = [];
|
|
72
|
+
for (const ruling of rulings) {
|
|
73
|
+
if (!ruling.resolved || !ruling.resolution)
|
|
74
|
+
continue;
|
|
75
|
+
const m = matchTier(open, ruling);
|
|
76
|
+
if (m)
|
|
77
|
+
matches.push(m);
|
|
78
|
+
}
|
|
79
|
+
matches.sort((a, b) => {
|
|
80
|
+
const tier = TIER_ORDER[a.matchTier] - TIER_ORDER[b.matchTier];
|
|
81
|
+
if (tier !== 0)
|
|
82
|
+
return tier;
|
|
83
|
+
if (a.resolvedAt !== b.resolvedAt)
|
|
84
|
+
return a.resolvedAt < b.resolvedAt ? 1 : -1;
|
|
85
|
+
return a.title.localeCompare(b.title);
|
|
86
|
+
});
|
|
87
|
+
return matches.slice(0, PRECEDENT_CAP);
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=precedent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"precedent.js","sourceRoot":"","sources":["../../src/court/precedent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Docket } from "./docket.js";
|
|
2
|
+
export interface CourtReport {
|
|
3
|
+
generatedAt: string;
|
|
4
|
+
vault: string;
|
|
5
|
+
docket: Docket;
|
|
6
|
+
briefId: string | null;
|
|
7
|
+
}
|
|
8
|
+
export declare function renderMarkdown(report: CourtReport): string;
|
|
9
|
+
export declare function renderJson(report: CourtReport): string;
|
|
10
|
+
//# sourceMappingURL=report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.d.ts","sourceRoot":"","sources":["../../src/court/report.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IAEf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AA8CD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAgC1D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAEtD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Markdown + JSON rendering for `daftari court`. The docket reads like a
|
|
2
|
+
// cause list: numbered cases in priority order, each with the two sides,
|
|
3
|
+
// the stakes (blast), and the precedents. Claims and rationales are quoted
|
|
4
|
+
// from the tension log verbatim — the court report frames, it never
|
|
5
|
+
// paraphrases.
|
|
6
|
+
function tierBadge(e) {
|
|
7
|
+
const parts = [e.agingTier ?? "unclassified", e.kind, `${e.ageDays}d`];
|
|
8
|
+
return parts.join(" · ");
|
|
9
|
+
}
|
|
10
|
+
function renderSide(label, s) {
|
|
11
|
+
const state = s.decayLevel !== null ? `${s.status}, ${s.decayLevel}` : s.status;
|
|
12
|
+
return [`- **${label}:** \`${s.path}\` (${state})`, ` > ${s.claim}`];
|
|
13
|
+
}
|
|
14
|
+
function renderEntry(e, index, full) {
|
|
15
|
+
const lines = [];
|
|
16
|
+
lines.push(`## ${index}. ${e.title} [${tierBadge(e)}]`);
|
|
17
|
+
lines.push("");
|
|
18
|
+
lines.push(`- id: ${e.id ?? "(none — legacy entry, cannot be ruled by id)"}`);
|
|
19
|
+
lines.push(...renderSide("A", e.sideA));
|
|
20
|
+
lines.push(...renderSide("B", e.sideB));
|
|
21
|
+
lines.push(`- **stakes:** ${e.blast.total} downstream document(s) ` +
|
|
22
|
+
`(${e.blast.primary} primary, ${e.blast.advisory} advisory, max depth ${e.blast.maxDepth})`);
|
|
23
|
+
if (e.clusterId) {
|
|
24
|
+
lines.push(`- cluster: ${e.clusterId} (${e.clusterSize} docs)`);
|
|
25
|
+
}
|
|
26
|
+
if (e.precedents.length > 0) {
|
|
27
|
+
lines.push(`- **precedents:**`);
|
|
28
|
+
for (const p of e.precedents) {
|
|
29
|
+
const head = ` - [${p.matchTier}] ${p.date} · “${p.title}” → **${p.resolutionKind}** (${p.matchDetail})`;
|
|
30
|
+
lines.push(head);
|
|
31
|
+
if (full && p.rationale)
|
|
32
|
+
lines.push(` > ${p.rationale}`);
|
|
33
|
+
if (full && p.references.length > 0)
|
|
34
|
+
lines.push(` refs: ${p.references.join(", ")}`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
lines.push("- precedents: none — first impression");
|
|
39
|
+
}
|
|
40
|
+
if (e.id) {
|
|
41
|
+
lines.push(`- to rule: \`daftari court rule ${e.id} --kind <superseded|corrected|accepted|invalid> --rationale "…"\``);
|
|
42
|
+
}
|
|
43
|
+
lines.push("");
|
|
44
|
+
return lines;
|
|
45
|
+
}
|
|
46
|
+
export function renderMarkdown(report) {
|
|
47
|
+
const { docket, briefId } = report;
|
|
48
|
+
const lines = [];
|
|
49
|
+
if (briefId !== null) {
|
|
50
|
+
const entry = docket.entries.find((e) => e.id === briefId);
|
|
51
|
+
lines.push(`# Tension Court — Brief`);
|
|
52
|
+
lines.push("");
|
|
53
|
+
if (!entry) {
|
|
54
|
+
lines.push(`No open tension with id \`${briefId}\` on the docket.`);
|
|
55
|
+
lines.push("");
|
|
56
|
+
return `${lines.join("\n")}\n`;
|
|
57
|
+
}
|
|
58
|
+
lines.push(...renderEntry(entry, 1, true));
|
|
59
|
+
return `${lines.join("\n")}\n`;
|
|
60
|
+
}
|
|
61
|
+
lines.push(`# Tension Court — Docket`);
|
|
62
|
+
lines.push("");
|
|
63
|
+
lines.push(`**${docket.openCount}** case(s) open · **${docket.rulingCount}** ruling(s) on record`);
|
|
64
|
+
lines.push("");
|
|
65
|
+
if (docket.entries.length === 0) {
|
|
66
|
+
lines.push("The docket is clear. No open tensions.");
|
|
67
|
+
lines.push("");
|
|
68
|
+
}
|
|
69
|
+
docket.entries.forEach((e, i) => {
|
|
70
|
+
lines.push(...renderEntry(e, i + 1, false));
|
|
71
|
+
});
|
|
72
|
+
return `${lines.join("\n")}\n`;
|
|
73
|
+
}
|
|
74
|
+
export function renderJson(report) {
|
|
75
|
+
return `${JSON.stringify(report, null, 2)}\n`;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report.js","sourceRoot":"","sources":["../../src/court/report.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Result } from "../frontmatter/types.js";
|
|
2
|
+
export declare const CONSUMES_EDGE_TYPES: readonly ["whole-doc-read"];
|
|
3
|
+
export type ConsumesEdgeType = (typeof CONSUMES_EDGE_TYPES)[number];
|
|
4
|
+
export interface ConsumesEdge {
|
|
5
|
+
artifact: string;
|
|
6
|
+
unit: string;
|
|
7
|
+
edge_type: ConsumesEdgeType;
|
|
8
|
+
fields: string[];
|
|
9
|
+
run_id: string;
|
|
10
|
+
compile_ts: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function consumesPath(vaultRoot: string): string;
|
|
13
|
+
export declare function mintConsumesEdges(vaultRoot: string, input: {
|
|
14
|
+
artifact: string;
|
|
15
|
+
runId: string;
|
|
16
|
+
timestamp?: string;
|
|
17
|
+
}): Promise<Result<{
|
|
18
|
+
minted: number;
|
|
19
|
+
}, Error>>;
|
|
20
|
+
export declare function listConsumesEdges(vaultRoot: string): Promise<Result<ConsumesEdge[], Error>>;
|
|
21
|
+
export declare function currentConsumesEdges(all: ConsumesEdge[]): ConsumesEdge[];
|
|
22
|
+
export declare function forwardConsumes(all: ConsumesEdge[], artifact: string): ConsumesEdge[];
|
|
23
|
+
export declare function reverseConsumes(all: ConsumesEdge[], unit: string): ConsumesEdge[];
|
|
24
|
+
//# sourceMappingURL=consumes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumes.d.ts","sourceRoot":"","sources":["../../src/curation/consumes.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAG/D,eAAO,MAAM,mBAAmB,6BAA8B,CAAC;AAC/D,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,gBAAgB,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEtD;AAOD,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D,OAAO,CAAC,MAAM,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,CAAC,CAAC,CAyB5C;AAID,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,CAuBjG;AAMD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAOxE;AAGD,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAErF;AAID,wBAAgB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Compiled dependency graph (#233) — `consumes` edges, the third edge
|
|
2
|
+
// provenance class alongside declared (`sources` frontmatter) and earned
|
|
3
|
+
// (`derives_from`). See the 2026-07-17 through-line spec: a compiled edge is
|
|
4
|
+
// mechanically certain — the run demonstrably read these inputs before
|
|
5
|
+
// writing this artifact — which is what licenses hard tier-0/1 verdicts on
|
|
6
|
+
// it, unlike a declared claim or an earned inference.
|
|
7
|
+
//
|
|
8
|
+
// Producer: run correlation, not a compiler. When a write carrying a
|
|
9
|
+
// `run_id` lands, every path that run read beforehand (read-log.ts) becomes
|
|
10
|
+
// one consumes edge (artifact —consumes→ unit). No LLM, no parsing of the
|
|
11
|
+
// artifact; uninstrumented writes simply have no compiled edges.
|
|
12
|
+
//
|
|
13
|
+
// Store: append-only .daftari/consumes.jsonl is CANONICAL — never a SQLite
|
|
14
|
+
// table, because index.db is ephemeral by house rule and compile history
|
|
15
|
+
// must survive a reindex. Same pattern as edges.jsonl. Edges are never
|
|
16
|
+
// deleted or rewritten: each compile of an artifact appends a fresh edge
|
|
17
|
+
// group stamped with (run_id, compile_ts), and "current" is derived at read
|
|
18
|
+
// time as the newest compile group per artifact. History of "what did this
|
|
19
|
+
// artifact depend on at compile N" is a free scan of the log.
|
|
20
|
+
//
|
|
21
|
+
// v1 vocabulary, deliberately coarse (#233 discussion):
|
|
22
|
+
// - edge_type reflects the CONSUMPTION MODE the producer observed. The only
|
|
23
|
+
// v1 mode is "whole-doc-read" (vault_read serves the entire document).
|
|
24
|
+
// Future modes (field-level reads, search-hit reads) extend the taxonomy;
|
|
25
|
+
// an edge always carries the mode that minted it — never untyped.
|
|
26
|
+
// - fields is ["*"] for whole-doc consumption: the run read everything, so
|
|
27
|
+
// tier-1 field-level skips are not licensed for these edges. Honest over
|
|
28
|
+
// precise; the edge-type-distribution experiment decides if finer
|
|
29
|
+
// granularity pays.
|
|
30
|
+
import { mkdirSync } from "node:fs";
|
|
31
|
+
import { appendFile, readFile } from "node:fs/promises";
|
|
32
|
+
import { join } from "node:path";
|
|
33
|
+
import { err, ok } from "../frontmatter/types.js";
|
|
34
|
+
import { readReadLog, readsForRun } from "./read-log.js";
|
|
35
|
+
export const CONSUMES_EDGE_TYPES = ["whole-doc-read"];
|
|
36
|
+
export function consumesPath(vaultRoot) {
|
|
37
|
+
return join(vaultRoot, ".daftari", "consumes.jsonl");
|
|
38
|
+
}
|
|
39
|
+
// Mints the consumes edges for one landed write: one edge per unique path
|
|
40
|
+
// the run read (excluding the artifact itself — a read-modify-write is not a
|
|
41
|
+
// self-dependency). A run that read nothing mints nothing. Append-only; a
|
|
42
|
+
// re-compile of the same artifact appends a new edge group rather than
|
|
43
|
+
// touching the old one.
|
|
44
|
+
export async function mintConsumesEdges(vaultRoot, input) {
|
|
45
|
+
const log = await readReadLog(vaultRoot);
|
|
46
|
+
if (!log.ok)
|
|
47
|
+
return log;
|
|
48
|
+
const units = readsForRun(log.value, input.runId).filter((p) => p !== input.artifact);
|
|
49
|
+
if (units.length === 0)
|
|
50
|
+
return ok({ minted: 0 });
|
|
51
|
+
const compileTs = input.timestamp ?? new Date().toISOString();
|
|
52
|
+
const lines = units.map((unit) => JSON.stringify({
|
|
53
|
+
artifact: input.artifact,
|
|
54
|
+
unit,
|
|
55
|
+
edge_type: "whole-doc-read",
|
|
56
|
+
fields: ["*"],
|
|
57
|
+
run_id: input.runId,
|
|
58
|
+
compile_ts: compileTs,
|
|
59
|
+
}));
|
|
60
|
+
try {
|
|
61
|
+
mkdirSync(join(vaultRoot, ".daftari"), { recursive: true });
|
|
62
|
+
await appendFile(consumesPath(vaultRoot), `${lines.join("\n")}\n`);
|
|
63
|
+
return ok({ minted: units.length });
|
|
64
|
+
}
|
|
65
|
+
catch (e) {
|
|
66
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
67
|
+
return err(new Error(`cannot append consumes edges: ${reason}`));
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Reads every edge back, append order. Missing log → empty; corrupt lines
|
|
71
|
+
// skipped.
|
|
72
|
+
export async function listConsumesEdges(vaultRoot) {
|
|
73
|
+
let raw;
|
|
74
|
+
try {
|
|
75
|
+
raw = await readFile(consumesPath(vaultRoot), "utf-8");
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
if (e.code === "ENOENT")
|
|
79
|
+
return ok([]);
|
|
80
|
+
const reason = e instanceof Error ? e.message : String(e);
|
|
81
|
+
return err(new Error(`cannot read consumes log: ${reason}`));
|
|
82
|
+
}
|
|
83
|
+
const edges = [];
|
|
84
|
+
for (const line of raw.split("\n")) {
|
|
85
|
+
const trimmed = line.trim();
|
|
86
|
+
if (!trimmed)
|
|
87
|
+
continue;
|
|
88
|
+
try {
|
|
89
|
+
const parsed = JSON.parse(trimmed);
|
|
90
|
+
if (typeof parsed.artifact === "string" && typeof parsed.unit === "string") {
|
|
91
|
+
edges.push(parsed);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
// Skip a corrupt line; the log is append-only and best-effort.
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return ok(edges);
|
|
99
|
+
}
|
|
100
|
+
// Collapses the append-only history to the CURRENT edge set: for each
|
|
101
|
+
// artifact, the edges of its newest compile group (latest compile_ts; ties
|
|
102
|
+
// resolved by append order — later lines supersede). Superseded groups stay
|
|
103
|
+
// in the log untouched; supersession is derived, never written.
|
|
104
|
+
export function currentConsumesEdges(all) {
|
|
105
|
+
const latestTs = new Map();
|
|
106
|
+
for (const e of all) {
|
|
107
|
+
const seen = latestTs.get(e.artifact);
|
|
108
|
+
if (seen === undefined || e.compile_ts >= seen)
|
|
109
|
+
latestTs.set(e.artifact, e.compile_ts);
|
|
110
|
+
}
|
|
111
|
+
return all.filter((e) => latestTs.get(e.artifact) === e.compile_ts);
|
|
112
|
+
}
|
|
113
|
+
// Forward query: the units the artifact's current compile consumed.
|
|
114
|
+
export function forwardConsumes(all, artifact) {
|
|
115
|
+
return currentConsumesEdges(all).filter((e) => e.artifact === artifact);
|
|
116
|
+
}
|
|
117
|
+
// Reverse query: the artifacts whose current compile consumed the unit —
|
|
118
|
+
// the dependents a change to the unit may break (tier dispatch reads this).
|
|
119
|
+
export function reverseConsumes(all, unit) {
|
|
120
|
+
return currentConsumesEdges(all).filter((e) => e.unit === unit);
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=consumes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"consumes.js","sourceRoot":"","sources":["../../src/curation/consumes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type ConsumesEdge } from "./consumes.js";
|
|
2
|
+
import { type ProvenanceEntry } from "./provenance.js";
|
|
3
|
+
import { type HiddenDownstream } from "./tension-blast.js";
|
|
4
|
+
import { type Tier1EdgeClass } from "./tier1.js";
|
|
5
|
+
import { type Tier2Verdict } from "./tier2.js";
|
|
6
|
+
export type EdgeStalenessClass = "current" | "pending-unchecked" | "pending-compatible" | "pending-broken";
|
|
7
|
+
export interface UpstreamStaleness {
|
|
8
|
+
unit: string;
|
|
9
|
+
edge_class: Tier1EdgeClass;
|
|
10
|
+
staleness: EdgeStalenessClass;
|
|
11
|
+
baseline: string | null;
|
|
12
|
+
changed_fields: string[];
|
|
13
|
+
reason: string;
|
|
14
|
+
}
|
|
15
|
+
export interface UpstreamStalenessSummary {
|
|
16
|
+
current: number;
|
|
17
|
+
pending_unchecked: number;
|
|
18
|
+
pending_compatible: number;
|
|
19
|
+
pending_broken: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function changedFieldsSince(provenance: ProvenanceEntry[], unit: string, baseline: string): {
|
|
22
|
+
changed: string[];
|
|
23
|
+
writes: number;
|
|
24
|
+
};
|
|
25
|
+
export interface CompiledStaleContext {
|
|
26
|
+
consumes: ConsumesEdge[];
|
|
27
|
+
provenance: ProvenanceEntry[];
|
|
28
|
+
}
|
|
29
|
+
export declare function loadCompiledStaleContext(vaultRoot: string): Promise<CompiledStaleContext | null>;
|
|
30
|
+
export declare function compiledUpstreamStaleness(artifact: string, consumes: ConsumesEdge[], provenance: ProvenanceEntry[]): UpstreamStaleness[];
|
|
31
|
+
export declare function upstreamStaleness(input: {
|
|
32
|
+
artifact: string;
|
|
33
|
+
consumes: ConsumesEdge[];
|
|
34
|
+
provenance: ProvenanceEntry[];
|
|
35
|
+
declaredUnits: string[];
|
|
36
|
+
earned: {
|
|
37
|
+
unit: string;
|
|
38
|
+
lastRederived: string;
|
|
39
|
+
}[];
|
|
40
|
+
verdicts?: Tier2Verdict[];
|
|
41
|
+
}): UpstreamStaleness[];
|
|
42
|
+
export declare function splitUpstreamVisibility(rows: UpstreamStaleness[], isReadable: (unit: string) => boolean): {
|
|
43
|
+
visible: UpstreamStaleness[];
|
|
44
|
+
hiddenPending: HiddenDownstream;
|
|
45
|
+
};
|
|
46
|
+
export declare function summarizeUpstream(rows: UpstreamStaleness[]): UpstreamStalenessSummary;
|
|
47
|
+
//# sourceMappingURL=edge-staleness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edge-staleness.d.ts","sourceRoot":"","sources":["../../src/curation/edge-staleness.ts"],"names":[],"mappings":"AAuDA,OAAO,EAAE,KAAK,YAAY,EAAsC,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,KAAK,eAAe,EAAqB,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAGL,KAAK,cAAc,EAEpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAqD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAElG,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,mBAAmB,GACnB,oBAAoB,GACpB,gBAAgB,CAAC;AAErB,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,CAAC;IAC3B,SAAS,EAAE,kBAAkB,CAAC;IAG9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAGxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,eAAe,EAAE,EAC7B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CASvC;AA0FD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,eAAe,EAAE,CAAC;CAC/B;AASD,wBAAsB,wBAAwB,CAC5C,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAOtC;AAOD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,YAAY,EAAE,EACxB,UAAU,EAAE,eAAe,EAAE,GAC5B,iBAAiB,EAAE,CAarB;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAIlD,QAAQ,CAAC,EAAE,YAAY,EAAE,CAAC;CAC3B,GAAG,iBAAiB,EAAE,CAuCtB;AAQD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,iBAAiB,EAAE,EACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,GACpC;IAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAAC,aAAa,EAAE,gBAAgB,CAAA;CAAE,CAQnE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,wBAAwB,CAcrF"}
|