@ontrails/topography 0.2.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 +866 -0
- package/README.md +228 -0
- package/package.json +40 -0
- package/src/activation-report.ts +385 -0
- package/src/backend-support.ts +11 -0
- package/src/derive.ts +690 -0
- package/src/diff.ts +1088 -0
- package/src/forces.ts +125 -0
- package/src/hash.ts +55 -0
- package/src/index.ts +273 -0
- package/src/internal/topo-snapshots.ts +682 -0
- package/src/internal/topo-store-read.ts +1102 -0
- package/src/internal/topo-store.ts +1651 -0
- package/src/io.ts +280 -0
- package/src/library-derivation.ts +131 -0
- package/src/overlays.ts +155 -0
- package/src/permit.ts +19 -0
- package/src/source-fingerprint.ts +103 -0
- package/src/surface-bindings.ts +101 -0
- package/src/topo-store.ts +716 -0
- package/src/types.ts +749 -0
- package/src/versioning.ts +277 -0
- package/src/wayfind/error-facts.ts +363 -0
- package/src/wayfind/filters.ts +430 -0
- package/src/wayfind/loader.ts +443 -0
- package/src/wayfind/navigation.ts +265 -0
- package/src/wayfind/provenance.ts +152 -0
- package/src/wayfind/queries.ts +1656 -0
- package/src/wayfind/relations.ts +344 -0
- package/src/workspace-configured-aliases.ts +221 -0
- package/src/workspace-lock-census.ts +306 -0
- package/src/workspace-view-types.ts +104 -0
- package/src/workspace-view.ts +486 -0
package/src/forces.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DiffEntry,
|
|
3
|
+
TopoGraph,
|
|
4
|
+
TopoGraphEntry,
|
|
5
|
+
TopoGraphForceEntry,
|
|
6
|
+
} from './types.js';
|
|
7
|
+
|
|
8
|
+
export interface TopoGraphForceOptions {
|
|
9
|
+
readonly acceptedAt?: string | undefined;
|
|
10
|
+
readonly reason?: string | undefined;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
type ForceableDiffEntry = DiffEntry & {
|
|
14
|
+
readonly kind: TopoGraphForceEntry['kind'];
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
const isForceableDiffEntry = (diff: DiffEntry): diff is ForceableDiffEntry =>
|
|
18
|
+
diff.kind !== 'trailhead';
|
|
19
|
+
|
|
20
|
+
const toForceEntry = (
|
|
21
|
+
diff: ForceableDiffEntry,
|
|
22
|
+
detail: string,
|
|
23
|
+
acceptedAt: string,
|
|
24
|
+
reason?: string | undefined
|
|
25
|
+
): TopoGraphForceEntry => ({
|
|
26
|
+
acceptedAt,
|
|
27
|
+
change: diff.change === 'removed' ? 'removed' : 'modified',
|
|
28
|
+
detail,
|
|
29
|
+
id: diff.id,
|
|
30
|
+
kind: diff.kind,
|
|
31
|
+
...(reason === undefined ? {} : { reason }),
|
|
32
|
+
severity: 'breaking',
|
|
33
|
+
source: 'trails compile --force',
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export const deriveTopoGraphForceEntries = (
|
|
37
|
+
diff: DiffEntry,
|
|
38
|
+
options?: TopoGraphForceOptions
|
|
39
|
+
): readonly TopoGraphForceEntry[] => {
|
|
40
|
+
if (diff.severity !== 'breaking' || !isForceableDiffEntry(diff)) {
|
|
41
|
+
return [];
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const acceptedAt = options?.acceptedAt ?? new Date().toISOString();
|
|
45
|
+
return diff.details.map((detail) =>
|
|
46
|
+
toForceEntry(diff, detail, acceptedAt, options?.reason)
|
|
47
|
+
);
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const annotateTopoGraphForces = (
|
|
51
|
+
graph: TopoGraph,
|
|
52
|
+
breaking: readonly DiffEntry[],
|
|
53
|
+
options?: TopoGraphForceOptions
|
|
54
|
+
): TopoGraph => {
|
|
55
|
+
if (breaking.length === 0) {
|
|
56
|
+
return graph;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const removedForces = breaking
|
|
60
|
+
.filter((entry) => entry.change === 'removed')
|
|
61
|
+
.flatMap((entry) => deriveTopoGraphForceEntries(entry, options));
|
|
62
|
+
const byId = new Map(
|
|
63
|
+
breaking
|
|
64
|
+
.filter((entry) => entry.change !== 'removed')
|
|
65
|
+
.map((entry) => [entry.id, entry])
|
|
66
|
+
);
|
|
67
|
+
const entries: TopoGraphEntry[] = graph.entries.map((entry) => {
|
|
68
|
+
const diff = byId.get(entry.id);
|
|
69
|
+
if (diff === undefined) {
|
|
70
|
+
return entry;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const forces = deriveTopoGraphForceEntries(diff, options);
|
|
74
|
+
return forces.length === 0
|
|
75
|
+
? entry
|
|
76
|
+
: { ...entry, forces: [...(entry.forces ?? []), ...forces] };
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
return {
|
|
80
|
+
...graph,
|
|
81
|
+
entries,
|
|
82
|
+
...(removedForces.length === 0
|
|
83
|
+
? {}
|
|
84
|
+
: { forces: [...(graph.forces ?? []), ...removedForces] }),
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export const carryForwardTopoGraphForces = (
|
|
89
|
+
previous: TopoGraph,
|
|
90
|
+
next: TopoGraph
|
|
91
|
+
): TopoGraph => {
|
|
92
|
+
const previousEntryForces = new Map(
|
|
93
|
+
previous.entries
|
|
94
|
+
.filter((entry) => entry.forces !== undefined && entry.forces.length > 0)
|
|
95
|
+
.map((entry) => [entry.id, entry.forces ?? []])
|
|
96
|
+
);
|
|
97
|
+
const entries = next.entries.map((entry) => {
|
|
98
|
+
const carriedForces = previousEntryForces.get(entry.id);
|
|
99
|
+
if (carriedForces === undefined || carriedForces.length === 0) {
|
|
100
|
+
return entry;
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
...entry,
|
|
104
|
+
forces: [...carriedForces, ...(entry.forces ?? [])],
|
|
105
|
+
};
|
|
106
|
+
});
|
|
107
|
+
return {
|
|
108
|
+
...next,
|
|
109
|
+
entries,
|
|
110
|
+
...(previous.forces === undefined || previous.forces.length === 0
|
|
111
|
+
? {}
|
|
112
|
+
: { forces: [...previous.forces, ...(next.forces ?? [])] }),
|
|
113
|
+
};
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
export const stripTopoGraphForces = (graph: TopoGraph): TopoGraph => {
|
|
117
|
+
const { forces: _graphForces, ...rest } = graph;
|
|
118
|
+
return {
|
|
119
|
+
...rest,
|
|
120
|
+
entries: graph.entries.map((entry) => {
|
|
121
|
+
const { forces: _entryForces, ...entryRest } = entry;
|
|
122
|
+
return entryRest;
|
|
123
|
+
}),
|
|
124
|
+
};
|
|
125
|
+
};
|
package/src/hash.ts
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SHA-256 hashing for topo graphs.
|
|
3
|
+
*
|
|
4
|
+
* Uses Bun.CryptoHasher for native hashing.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { TopoGraph } from './types.js';
|
|
8
|
+
|
|
9
|
+
// ---------------------------------------------------------------------------
|
|
10
|
+
// Helpers
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Recursively sort all object keys for deterministic JSON serialization.
|
|
15
|
+
* Arrays preserve order; primitives pass through.
|
|
16
|
+
*/
|
|
17
|
+
const canonicalize = (value: unknown): unknown => {
|
|
18
|
+
if (Array.isArray(value)) {
|
|
19
|
+
return value.map(canonicalize);
|
|
20
|
+
}
|
|
21
|
+
if (value !== null && typeof value === 'object') {
|
|
22
|
+
const sorted: Record<string, unknown> = {};
|
|
23
|
+
for (const key of Object.keys(value).toSorted()) {
|
|
24
|
+
sorted[key] = canonicalize((value as Record<string, unknown>)[key]);
|
|
25
|
+
}
|
|
26
|
+
return sorted;
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
// Public API
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Compute a SHA-256 hash of a topo graph.
|
|
37
|
+
*
|
|
38
|
+
* The `generatedAt` field is excluded so that identical topos always
|
|
39
|
+
* produce the same hash regardless of when they were generated.
|
|
40
|
+
*/
|
|
41
|
+
export const deriveStableHash = (value: unknown): string => {
|
|
42
|
+
const canonical = canonicalize(value);
|
|
43
|
+
const json = JSON.stringify(canonical);
|
|
44
|
+
|
|
45
|
+
const hasher = new Bun.CryptoHasher('sha256');
|
|
46
|
+
hasher.update(json);
|
|
47
|
+
return hasher.digest('hex');
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export const deriveTopoGraphHash = (topoGraph: TopoGraph): string => {
|
|
51
|
+
// Strip generatedAt before hashing
|
|
52
|
+
const { generatedAt: _unused, ...rest } = topoGraph;
|
|
53
|
+
|
|
54
|
+
return deriveStableHash(rest);
|
|
55
|
+
};
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,273 @@
|
|
|
1
|
+
// `@ontrails/topography` owns durable graph artifacts derived from the
|
|
2
|
+
// resolved graph (per ADR-0042). Wayfind reads those artifacts through
|
|
3
|
+
// graph-read trails exported from this package.
|
|
4
|
+
|
|
5
|
+
// Derivation
|
|
6
|
+
export { deriveTopoGraph } from './derive.js';
|
|
7
|
+
export {
|
|
8
|
+
deriveActivationGraph,
|
|
9
|
+
deriveDeclaredTrailActivation,
|
|
10
|
+
deriveSignalActivationRelations,
|
|
11
|
+
} from './activation-report.js';
|
|
12
|
+
export type {
|
|
13
|
+
ActivationChainReport,
|
|
14
|
+
ActivationEdgeReport,
|
|
15
|
+
ActivationGraphReport,
|
|
16
|
+
ActivationOverviewReport,
|
|
17
|
+
ActivationSourceReport,
|
|
18
|
+
SignalActivationRelations,
|
|
19
|
+
TrailActivationReport,
|
|
20
|
+
} from './activation-report.js';
|
|
21
|
+
export { deriveTopoGraphHash } from './hash.js';
|
|
22
|
+
export {
|
|
23
|
+
deriveWorkspaceView,
|
|
24
|
+
WORKSPACE_VIEW_SCHEMA_VERSION,
|
|
25
|
+
} from './workspace-view.js';
|
|
26
|
+
export type {
|
|
27
|
+
DeriveWorkspaceViewOptions,
|
|
28
|
+
UnownedWorkspaceLockObservation,
|
|
29
|
+
WorkspaceAppLockBinding,
|
|
30
|
+
WorkspaceAppLockFreshness,
|
|
31
|
+
WorkspaceAppLockObservation,
|
|
32
|
+
WorkspaceAppLockStatus,
|
|
33
|
+
WorkspaceView,
|
|
34
|
+
WorkspaceViewApp,
|
|
35
|
+
WorkspaceViewCollectionSkip,
|
|
36
|
+
WorkspaceViewCollision,
|
|
37
|
+
WorkspaceViewContent,
|
|
38
|
+
WorkspaceViewEvidence,
|
|
39
|
+
} from './workspace-view.js';
|
|
40
|
+
export { collectTopoGraphOverlays } from './overlays.js';
|
|
41
|
+
export { deriveSourceFingerprint } from './source-fingerprint.js';
|
|
42
|
+
export { deriveTopoGraphDiff } from './diff.js';
|
|
43
|
+
export {
|
|
44
|
+
annotateTopoGraphForces,
|
|
45
|
+
carryForwardTopoGraphForces,
|
|
46
|
+
deriveTopoGraphForceEntries,
|
|
47
|
+
stripTopoGraphForces,
|
|
48
|
+
} from './forces.js';
|
|
49
|
+
export type { TopoGraphForceOptions } from './forces.js';
|
|
50
|
+
export {
|
|
51
|
+
collectTopoGraphVersionMarkers,
|
|
52
|
+
deriveTopoGraphVersionMarkerRecords,
|
|
53
|
+
resolveTopoGraphVersionReference,
|
|
54
|
+
} from './versioning.js';
|
|
55
|
+
export type {
|
|
56
|
+
TopoGraphVersionMarkerRecord,
|
|
57
|
+
TopoGraphVersionMarkerResolution,
|
|
58
|
+
} from './versioning.js';
|
|
59
|
+
|
|
60
|
+
// File I/O
|
|
61
|
+
export {
|
|
62
|
+
writeTopoGraph,
|
|
63
|
+
readTopoGraph,
|
|
64
|
+
isTopoArtifactRegenerationError,
|
|
65
|
+
writeLockManifest,
|
|
66
|
+
readLockManifest,
|
|
67
|
+
writeTrailsLock,
|
|
68
|
+
readTrailsLock,
|
|
69
|
+
readWorkspaceTopoMetadata,
|
|
70
|
+
readWorkspaceTrailIndex,
|
|
71
|
+
readWorkspaceLock,
|
|
72
|
+
} from './io.js';
|
|
73
|
+
export {
|
|
74
|
+
lockManifestArtifactSchema,
|
|
75
|
+
lockManifestSchema,
|
|
76
|
+
lockManifestSummarySchema,
|
|
77
|
+
LOCK_MANIFEST_SCHEMA_VERSION,
|
|
78
|
+
TOPO_GRAPH_SCHEMA_VERSION,
|
|
79
|
+
TRAILS_LOCK_SCHEMA_VERSION,
|
|
80
|
+
trailsLockSchema,
|
|
81
|
+
topoGraphTrailheadEntrySchema,
|
|
82
|
+
topoGraphLibraryDerivedSchema,
|
|
83
|
+
workspaceTopoMetadataSchema,
|
|
84
|
+
workspaceTrailCollisionSchema,
|
|
85
|
+
workspaceTrailEntrySchema,
|
|
86
|
+
workspaceTrailIndexSchema,
|
|
87
|
+
} from './types.js';
|
|
88
|
+
|
|
89
|
+
// Types
|
|
90
|
+
export type {
|
|
91
|
+
TopoGraph,
|
|
92
|
+
TopoGraphEntry,
|
|
93
|
+
TopoGraphTrailheadEntry,
|
|
94
|
+
TopoGraphForceEntry,
|
|
95
|
+
TopoGraphFieldOverride,
|
|
96
|
+
TopoGraphFieldOverrideKey,
|
|
97
|
+
TopoGraphLibraryCollision,
|
|
98
|
+
TopoGraphLibraryExclusion,
|
|
99
|
+
TopoGraphLibraryExclusionReason,
|
|
100
|
+
TopoGraphLibraryExport,
|
|
101
|
+
TopoGraphLibraryExportSource,
|
|
102
|
+
TopoGraphLibraryDerived,
|
|
103
|
+
TopoGraphLayerReference,
|
|
104
|
+
TopoGraphOverlayRegistration,
|
|
105
|
+
TopoGraphOverlays,
|
|
106
|
+
DeriveTopoGraphOptions,
|
|
107
|
+
TopoGraphVersionDetour,
|
|
108
|
+
TopoGraphVersionEntry,
|
|
109
|
+
LockManifest,
|
|
110
|
+
LockManifestArtifact,
|
|
111
|
+
LockManifestSummary,
|
|
112
|
+
TrailsLock,
|
|
113
|
+
WorkspaceTopoMetadata,
|
|
114
|
+
WorkspaceTrailCollision,
|
|
115
|
+
WorkspaceTrailEntry,
|
|
116
|
+
WorkspaceTrailIndex,
|
|
117
|
+
DiffEntry,
|
|
118
|
+
DiffResult,
|
|
119
|
+
JsonSchema,
|
|
120
|
+
TopoGraphEntityReference,
|
|
121
|
+
TopoGraphActivationEdge,
|
|
122
|
+
TopoGraphActivationEntry,
|
|
123
|
+
TopoGraphActivationSource,
|
|
124
|
+
WriteOptions,
|
|
125
|
+
ReadOptions,
|
|
126
|
+
} from './types.js';
|
|
127
|
+
|
|
128
|
+
// Topo-store public API. Persistence layer for the resolved topo graph; relies
|
|
129
|
+
// on `@ontrails/core` for primitive types and the generic `trails-db` helpers.
|
|
130
|
+
// See ADR-0042 for the core/topography boundary doctrine.
|
|
131
|
+
export {
|
|
132
|
+
createTopoSnapshot,
|
|
133
|
+
createMockTopoStore,
|
|
134
|
+
createTopoStore,
|
|
135
|
+
listTopoSnapshots,
|
|
136
|
+
pinTopoSnapshot,
|
|
137
|
+
topoStore,
|
|
138
|
+
TOPO_STORE_SCHEMA_VERSION,
|
|
139
|
+
unpinTopoSnapshot,
|
|
140
|
+
} from './topo-store.js';
|
|
141
|
+
export type {
|
|
142
|
+
CreateTopoSnapshotInput,
|
|
143
|
+
ListTopoSnapshotsOptions,
|
|
144
|
+
MockTopoStoreSeed,
|
|
145
|
+
ReadOnlyTopoStore,
|
|
146
|
+
TopoSnapshot,
|
|
147
|
+
TopoStoreActivationContextRecord,
|
|
148
|
+
TopoStoreEntityRecord,
|
|
149
|
+
TopoStoreEntryKind,
|
|
150
|
+
TopoStoreExportRecord,
|
|
151
|
+
TopoStoreResourceRecord,
|
|
152
|
+
TopoStoreRef,
|
|
153
|
+
TopoStoreSignalDetailRecord,
|
|
154
|
+
TopoStoreSignalRecord,
|
|
155
|
+
TopoStoreSurfaceDerivedRecord,
|
|
156
|
+
TopoStoreTopoGraphEntryRecord,
|
|
157
|
+
TopoStoreTopoGraphRecord,
|
|
158
|
+
TopoStoreTrailDetailRecord,
|
|
159
|
+
TopoStoreTrailRecord,
|
|
160
|
+
} from './topo-store.js';
|
|
161
|
+
|
|
162
|
+
// Wayfind graph-read APIs. The product, trail IDs, and public type names remain
|
|
163
|
+
// Wayfinder/wayfind even though the package owner is now Topography.
|
|
164
|
+
export { deriveTrailErrorFacts } from './wayfind/error-facts.js';
|
|
165
|
+
export type {
|
|
166
|
+
TrailErrorEvidenceInput,
|
|
167
|
+
TrailErrorFact,
|
|
168
|
+
TrailErrorFactKind,
|
|
169
|
+
TrailErrorFactProvenance,
|
|
170
|
+
TrailErrorFacts,
|
|
171
|
+
TrailErrorFactsCompleteness,
|
|
172
|
+
TrailErrorFactsOptions,
|
|
173
|
+
TrailErrorTaxonomyFacts,
|
|
174
|
+
} from './wayfind/error-facts.js';
|
|
175
|
+
export {
|
|
176
|
+
createWayfinderEntityPredicate,
|
|
177
|
+
createWayfinderFilterContext,
|
|
178
|
+
createWayfinderGraphEntityPredicate,
|
|
179
|
+
filterWayfinderEntityRefs,
|
|
180
|
+
listWayfinderEntityRefs,
|
|
181
|
+
wayfinderEntityFilterSchema,
|
|
182
|
+
wayfinderEntityKindSchema,
|
|
183
|
+
wayfinderIntentSchema,
|
|
184
|
+
} from './wayfind/filters.js';
|
|
185
|
+
export type {
|
|
186
|
+
WayfinderEntityFilterInput,
|
|
187
|
+
WayfinderEntityFilters,
|
|
188
|
+
WayfinderEntityKind,
|
|
189
|
+
WayfinderEntityRef,
|
|
190
|
+
WayfinderFilterContext,
|
|
191
|
+
WayfinderIntent,
|
|
192
|
+
} from './wayfind/filters.js';
|
|
193
|
+
export {
|
|
194
|
+
loadWayfinderArtifacts,
|
|
195
|
+
wayfinderTopoGraphSource,
|
|
196
|
+
wayfinderTopoStoreSource,
|
|
197
|
+
} from './wayfind/loader.js';
|
|
198
|
+
export type {
|
|
199
|
+
WayfinderArtifactLoad,
|
|
200
|
+
WayfinderArtifactLoaderOptions,
|
|
201
|
+
WayfinderTopoStoreLoad,
|
|
202
|
+
} from './wayfind/loader.js';
|
|
203
|
+
export {
|
|
204
|
+
resolveWayfinderPopulation,
|
|
205
|
+
resolveWayfinderRelations,
|
|
206
|
+
wayfinderDriftStatusSchema,
|
|
207
|
+
wayfinderIncludeSchema,
|
|
208
|
+
wayfinderNavigationPlanSchema,
|
|
209
|
+
wayfinderRelationModeSchema,
|
|
210
|
+
wayfinderResolverSchema,
|
|
211
|
+
wayfinderSourceModeSchema,
|
|
212
|
+
wayfinderViewSchema,
|
|
213
|
+
} from './wayfind/navigation.js';
|
|
214
|
+
export type {
|
|
215
|
+
WayfinderDriftStatus,
|
|
216
|
+
WayfinderInclude,
|
|
217
|
+
WayfinderNavigationPlan,
|
|
218
|
+
WayfinderPopulationInput,
|
|
219
|
+
WayfinderRelationMode,
|
|
220
|
+
WayfinderRelationResolver,
|
|
221
|
+
WayfinderResolvedRelationInput,
|
|
222
|
+
WayfinderResolvedRelations,
|
|
223
|
+
WayfinderResolver,
|
|
224
|
+
WayfinderSourceMode,
|
|
225
|
+
WayfinderView,
|
|
226
|
+
} from './wayfind/navigation.js';
|
|
227
|
+
export {
|
|
228
|
+
wayfindAdaptersTrail,
|
|
229
|
+
wayfindContractTrail,
|
|
230
|
+
wayfindDescribeTrail,
|
|
231
|
+
wayfindDiffTrail,
|
|
232
|
+
wayfindEntitiesTrail,
|
|
233
|
+
wayfindErrorsTrail,
|
|
234
|
+
wayfindExamplesTrail,
|
|
235
|
+
wayfindImpactTrail,
|
|
236
|
+
wayfindNearbyTrail,
|
|
237
|
+
wayfindOverlayTrail,
|
|
238
|
+
wayfindOverviewTrail,
|
|
239
|
+
wayfindResourcesTrail,
|
|
240
|
+
wayfindSearchTrail,
|
|
241
|
+
wayfindSignalsTrail,
|
|
242
|
+
wayfindSurfacesTrail,
|
|
243
|
+
wayfindTrailheadsTrail,
|
|
244
|
+
wayfindTrailsTrail,
|
|
245
|
+
wayfindVersionsTrail,
|
|
246
|
+
wayfinderTopo,
|
|
247
|
+
} from './wayfind/queries.js';
|
|
248
|
+
export {
|
|
249
|
+
wayfinderDriftFromArtifactStatus,
|
|
250
|
+
wayfinderDriftFromFreshness,
|
|
251
|
+
wayfinderFact,
|
|
252
|
+
} from './wayfind/provenance.js';
|
|
253
|
+
export type {
|
|
254
|
+
WayfinderArtifactKind,
|
|
255
|
+
WayfinderArtifactSource,
|
|
256
|
+
WayfinderArtifactStatus,
|
|
257
|
+
WayfinderArtifactStatusFresh,
|
|
258
|
+
WayfinderArtifactStatusMissing,
|
|
259
|
+
WayfinderArtifactStatusSchemaVersionDrift,
|
|
260
|
+
WayfinderArtifactStatusStale,
|
|
261
|
+
WayfinderContractRef,
|
|
262
|
+
WayfinderFact,
|
|
263
|
+
WayfinderFactCategory,
|
|
264
|
+
WayfinderFactDrift,
|
|
265
|
+
WayfinderFactDriftStatus,
|
|
266
|
+
WayfinderFactInput,
|
|
267
|
+
WayfinderFreshness,
|
|
268
|
+
WayfinderFreshnessFresh,
|
|
269
|
+
WayfinderFreshnessMissing,
|
|
270
|
+
WayfinderFreshnessSchemaVersionDrift,
|
|
271
|
+
WayfinderFreshnessStale,
|
|
272
|
+
WayfinderStaleReason,
|
|
273
|
+
} from './wayfind/provenance.js';
|