@neat.is/core 0.10.5 → 0.10.6-dev.20261008

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 (47) hide show
  1. package/dist/{chunk-DVCGDMTZ.js → chunk-6QMWJAWR.js} +1454 -1019
  2. package/dist/chunk-6QMWJAWR.js.map +1 -0
  3. package/dist/{chunk-Q2SL2SVH.js → chunk-EMFX3V77.js} +43 -224
  4. package/dist/chunk-EMFX3V77.js.map +1 -0
  5. package/dist/chunk-MR64ICXX.js +19 -0
  6. package/dist/chunk-MR64ICXX.js.map +1 -0
  7. package/dist/{chunk-EFBWQIKG.js → chunk-QPG2QXCW.js} +11 -27
  8. package/dist/chunk-QPG2QXCW.js.map +1 -0
  9. package/dist/chunk-RGYC5U2Q.js +511 -0
  10. package/dist/chunk-RGYC5U2Q.js.map +1 -0
  11. package/dist/{chunk-LXQCL4MP.js → chunk-TZXSWSHX.js} +2 -2
  12. package/dist/{chunk-BC53SCT7.js → chunk-VFZ6CXLI.js} +20 -6
  13. package/dist/chunk-VFZ6CXLI.js.map +1 -0
  14. package/dist/cli.cjs +2065 -1178
  15. package/dist/cli.cjs.map +1 -1
  16. package/dist/cli.d.cts +2 -0
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +249 -76
  19. package/dist/cli.js.map +1 -1
  20. package/dist/index.cjs +1653 -952
  21. package/dist/index.cjs.map +1 -1
  22. package/dist/index.d.cts +45 -99
  23. package/dist/index.d.ts +45 -99
  24. package/dist/index.js +18 -15
  25. package/dist/neatd.cjs +1666 -965
  26. package/dist/neatd.cjs.map +1 -1
  27. package/dist/neatd.js +7 -4
  28. package/dist/neatd.js.map +1 -1
  29. package/dist/otel-grpc-CCCI772O.js +11 -0
  30. package/dist/registry.cjs +570 -0
  31. package/dist/registry.cjs.map +1 -0
  32. package/dist/registry.d.cts +220 -0
  33. package/dist/registry.d.ts +220 -0
  34. package/dist/registry.js +62 -0
  35. package/dist/registry.js.map +1 -0
  36. package/dist/server.cjs +1384 -657
  37. package/dist/server.cjs.map +1 -1
  38. package/dist/server.js +10 -6
  39. package/dist/server.js.map +1 -1
  40. package/package.json +9 -3
  41. package/dist/chunk-BC53SCT7.js.map +0 -1
  42. package/dist/chunk-DVCGDMTZ.js.map +0 -1
  43. package/dist/chunk-EFBWQIKG.js.map +0 -1
  44. package/dist/chunk-Q2SL2SVH.js.map +0 -1
  45. package/dist/otel-grpc-B7ABHLV7.js +0 -10
  46. /package/dist/{chunk-LXQCL4MP.js.map → chunk-TZXSWSHX.js.map} +0 -0
  47. /package/dist/{otel-grpc-B7ABHLV7.js.map → otel-grpc-CCCI772O.js.map} +0 -0
package/dist/index.d.cts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { MultiDirectedGraph } from 'graphology';
2
- import { GraphNode, GraphEdge, EdgeEvidence, SpanAttributes, EdgeTypeValue, StaleEvent, ErrorEvent, BlastRadiusResult, RootCauseResult, RegistryEntry, RegistryStatus, RegistryFile } from '@neat.is/types';
2
+ import { GraphNode, GraphEdge, EdgeEvidence, ErrorEvent, SpanAttributes, EdgeTypeValue, StaleEvent, BlastRadiusResult, RootCauseResult, RegistryEntry } from '@neat.is/types';
3
3
  export { StaleEvent } from '@neat.is/types';
4
4
  import { FastifyInstance } from 'fastify';
5
+ export { ProjectNameCollisionError, addProject, getProject, listProjects, normalizeProjectPath, readRegistry, registryLockPath, registryPath, removeProject, setStatus, touchLastSeen, writeAtomically } from './registry.cjs';
5
6
 
6
7
  type NeatGraph = MultiDirectedGraph<GraphNode, GraphEdge>;
7
8
  declare function getGraph(project?: string): NeatGraph;
@@ -46,6 +47,7 @@ interface ExtractOptions {
46
47
  project?: string;
47
48
  errorsPath?: string;
48
49
  source?: string;
50
+ announce?: boolean;
49
51
  }
50
52
  declare function extractFromDirectory(graph: NeatGraph, scanPath: string, opts?: ExtractOptions): Promise<ExtractResult>;
51
53
 
@@ -150,6 +152,43 @@ interface RepoSyncRequestResult {
150
152
  lastPass?: RepoSyncPassSummary;
151
153
  }
152
154
 
155
+ interface PrVerdictRequest {
156
+ owner: string;
157
+ name: string;
158
+ baseSha: string;
159
+ headSha: string;
160
+ /** `https://x-access-token:<token>@github.com/<owner>/<name>.git`. Used for the two clones, then gone. */
161
+ cloneUrl: string;
162
+ /** Repo-relative paths the PR changes, from the caller. Absent → the two trees are compared. */
163
+ changedFiles?: string[];
164
+ tone?: 'loud' | 'professional';
165
+ }
166
+ interface PrVerdictResult {
167
+ marker: string;
168
+ body: string;
169
+ base: {
170
+ sha: string;
171
+ nodes: number;
172
+ edges: number;
173
+ };
174
+ head: {
175
+ sha: string;
176
+ nodes: number;
177
+ edges: number;
178
+ };
179
+ changedFiles: number;
180
+ observedBreaks: number;
181
+ divergences: number;
182
+ durationMs: number;
183
+ }
184
+ interface PrVerdictContext {
185
+ /** The project's live graph. Read for OBSERVED; never written. */
186
+ liveGraph: NeatGraph;
187
+ /** The project's recorded incidents, for symbol-grain divergences — the same read `/graph/divergences` does. */
188
+ incidents?: ErrorEvent[];
189
+ }
190
+ type PrVerdictRunner = (req: PrVerdictRequest, ctx: PrVerdictContext) => Promise<PrVerdictResult>;
191
+
153
192
  /**
154
193
  * A connector implements exactly one method. Everything downstream of
155
194
  * `poll()` — resolving a static call site, minting the OBSERVED edge — is
@@ -315,6 +354,9 @@ interface BuildApiOptions {
315
354
  staleEventsPath?: string;
316
355
  searchIndex?: SearchIndex;
317
356
  authToken?: string;
357
+ incidentStreamToken?: string;
358
+ /** Set only after the hosted substrate restores the complete errors ledger before boot. */
359
+ incidentReplayDurable?: boolean;
318
360
  trustProxy?: boolean;
319
361
  publicRead?: boolean;
320
362
  otlpReceiver?: () => FastifyInstance | undefined;
@@ -332,6 +374,7 @@ interface BuildApiOptions {
332
374
  };
333
375
  connectorsHome?: string;
334
376
  repoSync?: (project: string) => (() => RepoSyncRequestResult) | undefined;
377
+ prVerdict?: PrVerdictRunner;
335
378
  runPoll?: typeof runConnectorPoll;
336
379
  }
337
380
  declare function buildApi(opts: BuildApiOptions): Promise<FastifyInstance>;
@@ -684,101 +727,4 @@ interface DaemonHandle {
684
727
  declare function routeSpanToProject(serviceName: string | undefined, projects: ReadonlyArray<RegistryEntry>): string;
685
728
  declare function startDaemon(opts?: DaemonOptions): Promise<DaemonHandle>;
686
729
 
687
- /**
688
- * Machine-level project registry + machine-wide daemon discovery.
689
- *
690
- * This module owns two surfaces under `~/.neat/`:
691
- *
692
- * 1. The legacy project registry at `~/.neat/projects.json` (ADR-048). One
693
- * file, per-user, machine-local, not synced. Under the project-daemon
694
- * contract (ADR-096) it is no longer the coordination point — it is read
695
- * once for migration and otherwise left to the additive writes the daemon
696
- * and orchestrator still perform. The read-modify-write helpers below keep
697
- * their atomic-write + exclusive-lock machinery for that legacy surface.
698
- *
699
- * 2. The machine-wide daemon discovery directory at `~/.neat/daemons/`
700
- * (ADR-096 §6). One file per running daemon — `<project>.json` — each owned
701
- * solely by the daemon that wrote it (on start) and removes it (on graceful
702
- * stop). Discovery is **append-only and lock-free**: a reader scans the
703
- * directory and reconciles liveness; it never acquires a shared lock, so it
704
- * can never deadlock against a daemon (#506). Losing or rebuilding the
705
- * directory costs discovery convenience, not correctness — each project's
706
- * own `neat-out/daemon.json` stays authoritative.
707
- *
708
- * `neat ps` / `neat list` and the per-daemon `pause` / `resume` / `uninstall`
709
- * verbs read discovery, falling back to the legacy registry where no daemon
710
- * file is present yet (the migration window before every daemon self-describes).
711
- *
712
- * The legacy lock is a file we exclusively-create (`O_EXCL`), hold while we
713
- * mutate, and unlink on the way out. Crude but cross-platform; matches what
714
- * `proper-lockfile` does internally without pulling the dep in. It never sits
715
- * on the discovery path.
716
- */
717
-
718
- declare function registryPath(): string;
719
- declare function registryLockPath(): string;
720
- /**
721
- * Path normalisation per ADR-048 #7. Two `init` calls from different relative
722
- * paths to the same dir must collapse to one entry. `path.resolve` handles
723
- * relative-to-cwd; we pass it through `fs.realpath` when the dir exists so
724
- * symlinked paths land on the same canonical entry too.
725
- */
726
- declare function normalizeProjectPath(input: string): Promise<string>;
727
- /**
728
- * tmp + fsync + rename. The fsync on the data fd guarantees the bytes are on
729
- * disk before rename swaps the inode; rename itself is atomic on POSIX.
730
- *
731
- * Exported so the init flow and test harnesses can use the same helper.
732
- */
733
- declare function writeAtomically(target: string, contents: string): Promise<void>;
734
- /**
735
- * Read the registry from disk. Returns an empty registry if the file does
736
- * not exist yet — first run, never registered anything.
737
- *
738
- * Throws on parse / schema errors. The contract is single-source-of-truth;
739
- * a corrupt file is louder than a silent reset.
740
- */
741
- declare function readRegistry(): Promise<RegistryFile>;
742
- interface AddProjectOptions {
743
- name: string;
744
- path: string;
745
- languages?: string[];
746
- status?: RegistryStatus;
747
- }
748
- /**
749
- * Anything the registry refuses to do.
750
- *
751
- * The identity lives on the class, not in the message text. Every caller that
752
- * prints one already prefixes its own name — the CLI writes `neat: ` — so a
753
- * message carrying `neat registry:` came out as `neat: neat registry: …`
754
- * (#1240). A non-CLI caller that wants to know where an error came from reads
755
- * `err.name`, which is more reliable than a string prefix anyway.
756
- */
757
- declare class RegistryError extends Error {
758
- constructor(message: string);
759
- }
760
- declare class ProjectNameCollisionError extends RegistryError {
761
- readonly projectName: string;
762
- constructor(name: string);
763
- }
764
- /**
765
- * Register a project, or update its `lastSeenAt` if the same path is already
766
- * registered under the same name (idempotent re-init).
767
- *
768
- * Hard error on name collision against a different path — ADR-046 #7. The
769
- * caller can recover by passing `--project <new-name>`.
770
- */
771
- declare function addProject(opts: AddProjectOptions): Promise<RegistryEntry>;
772
- declare function getProject(name: string): Promise<RegistryEntry | undefined>;
773
- declare function listProjects(): Promise<RegistryEntry[]>;
774
- declare function setStatus(name: string, status: RegistryStatus): Promise<RegistryEntry>;
775
- declare function touchLastSeen(name: string, at?: string): Promise<void>;
776
- /**
777
- * Remove the registry entry for `name`. Per ADR-048 #6: this only removes the
778
- * registry row. It does **not** touch `neat-out/`, `policy.json`, or any user
779
- * file in the project directory. SDK-install rollback is a separate flow
780
- * (`neat-rollback.patch`) that the caller opts in to.
781
- */
782
- declare function removeProject(name: string): Promise<RegistryEntry | undefined>;
783
-
784
- export { type BuildApiOptions, type BuildOtelGrpcReceiverOptions, type BuildOtelReceiverOptions, type CompatPair, type CompatibilityResult, type DaemonHandle, type DaemonOptions, type ExtractResult, type GraphDiff, type IngestContext, type MarkStaleOptions, type NeatGraph, type OtelGrpcReceiver, type OtlpTracesRequest, type ParsedSpan, type PersistedSnapshot, ProjectNameCollisionError, type ProjectSlot, type SpanHandler, type StalenessLoopOptions, addProject, buildApi, buildOtelReceiver, checkCompatibility, compatPairs, computeGraphDiff, confidenceForEdge, extractFromDirectory, getBlastRadius, getGraph, getProject, getRootCause, handleSpan, listProjects, loadGraphFromDisk, loadSnapshotForDiff, logSpanHandler, makeSpanHandler, markStaleEdges, normalizeProjectPath, parseOtlpRequest, readErrorEvents, readRegistry, readStaleEvents, registryLockPath, registryPath, removeProject, resetGraph, routeSpanToProject, saveGraphToDisk, setStatus, startDaemon, startOtelGrpcReceiver, startPersistLoop, startStalenessLoop, stitchTrace, thresholdForEdgeType, touchLastSeen, writeAtomically };
730
+ export { type BuildApiOptions, type BuildOtelGrpcReceiverOptions, type BuildOtelReceiverOptions, type CompatPair, type CompatibilityResult, type DaemonHandle, type DaemonOptions, type ExtractResult, type GraphDiff, type IngestContext, type MarkStaleOptions, type NeatGraph, type OtelGrpcReceiver, type OtlpTracesRequest, type ParsedSpan, type PersistedSnapshot, type ProjectSlot, type SpanHandler, type StalenessLoopOptions, buildApi, buildOtelReceiver, checkCompatibility, compatPairs, computeGraphDiff, confidenceForEdge, extractFromDirectory, getBlastRadius, getGraph, getRootCause, handleSpan, loadGraphFromDisk, loadSnapshotForDiff, logSpanHandler, makeSpanHandler, markStaleEdges, parseOtlpRequest, readErrorEvents, readStaleEvents, resetGraph, routeSpanToProject, saveGraphToDisk, startDaemon, startOtelGrpcReceiver, startPersistLoop, startStalenessLoop, stitchTrace, thresholdForEdgeType };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
1
  import { MultiDirectedGraph } from 'graphology';
2
- import { GraphNode, GraphEdge, EdgeEvidence, SpanAttributes, EdgeTypeValue, StaleEvent, ErrorEvent, BlastRadiusResult, RootCauseResult, RegistryEntry, RegistryStatus, RegistryFile } from '@neat.is/types';
2
+ import { GraphNode, GraphEdge, EdgeEvidence, ErrorEvent, SpanAttributes, EdgeTypeValue, StaleEvent, BlastRadiusResult, RootCauseResult, RegistryEntry } from '@neat.is/types';
3
3
  export { StaleEvent } from '@neat.is/types';
4
4
  import { FastifyInstance } from 'fastify';
5
+ export { ProjectNameCollisionError, addProject, getProject, listProjects, normalizeProjectPath, readRegistry, registryLockPath, registryPath, removeProject, setStatus, touchLastSeen, writeAtomically } from './registry.js';
5
6
 
6
7
  type NeatGraph = MultiDirectedGraph<GraphNode, GraphEdge>;
7
8
  declare function getGraph(project?: string): NeatGraph;
@@ -46,6 +47,7 @@ interface ExtractOptions {
46
47
  project?: string;
47
48
  errorsPath?: string;
48
49
  source?: string;
50
+ announce?: boolean;
49
51
  }
50
52
  declare function extractFromDirectory(graph: NeatGraph, scanPath: string, opts?: ExtractOptions): Promise<ExtractResult>;
51
53
 
@@ -150,6 +152,43 @@ interface RepoSyncRequestResult {
150
152
  lastPass?: RepoSyncPassSummary;
151
153
  }
152
154
 
155
+ interface PrVerdictRequest {
156
+ owner: string;
157
+ name: string;
158
+ baseSha: string;
159
+ headSha: string;
160
+ /** `https://x-access-token:<token>@github.com/<owner>/<name>.git`. Used for the two clones, then gone. */
161
+ cloneUrl: string;
162
+ /** Repo-relative paths the PR changes, from the caller. Absent → the two trees are compared. */
163
+ changedFiles?: string[];
164
+ tone?: 'loud' | 'professional';
165
+ }
166
+ interface PrVerdictResult {
167
+ marker: string;
168
+ body: string;
169
+ base: {
170
+ sha: string;
171
+ nodes: number;
172
+ edges: number;
173
+ };
174
+ head: {
175
+ sha: string;
176
+ nodes: number;
177
+ edges: number;
178
+ };
179
+ changedFiles: number;
180
+ observedBreaks: number;
181
+ divergences: number;
182
+ durationMs: number;
183
+ }
184
+ interface PrVerdictContext {
185
+ /** The project's live graph. Read for OBSERVED; never written. */
186
+ liveGraph: NeatGraph;
187
+ /** The project's recorded incidents, for symbol-grain divergences — the same read `/graph/divergences` does. */
188
+ incidents?: ErrorEvent[];
189
+ }
190
+ type PrVerdictRunner = (req: PrVerdictRequest, ctx: PrVerdictContext) => Promise<PrVerdictResult>;
191
+
153
192
  /**
154
193
  * A connector implements exactly one method. Everything downstream of
155
194
  * `poll()` — resolving a static call site, minting the OBSERVED edge — is
@@ -315,6 +354,9 @@ interface BuildApiOptions {
315
354
  staleEventsPath?: string;
316
355
  searchIndex?: SearchIndex;
317
356
  authToken?: string;
357
+ incidentStreamToken?: string;
358
+ /** Set only after the hosted substrate restores the complete errors ledger before boot. */
359
+ incidentReplayDurable?: boolean;
318
360
  trustProxy?: boolean;
319
361
  publicRead?: boolean;
320
362
  otlpReceiver?: () => FastifyInstance | undefined;
@@ -332,6 +374,7 @@ interface BuildApiOptions {
332
374
  };
333
375
  connectorsHome?: string;
334
376
  repoSync?: (project: string) => (() => RepoSyncRequestResult) | undefined;
377
+ prVerdict?: PrVerdictRunner;
335
378
  runPoll?: typeof runConnectorPoll;
336
379
  }
337
380
  declare function buildApi(opts: BuildApiOptions): Promise<FastifyInstance>;
@@ -684,101 +727,4 @@ interface DaemonHandle {
684
727
  declare function routeSpanToProject(serviceName: string | undefined, projects: ReadonlyArray<RegistryEntry>): string;
685
728
  declare function startDaemon(opts?: DaemonOptions): Promise<DaemonHandle>;
686
729
 
687
- /**
688
- * Machine-level project registry + machine-wide daemon discovery.
689
- *
690
- * This module owns two surfaces under `~/.neat/`:
691
- *
692
- * 1. The legacy project registry at `~/.neat/projects.json` (ADR-048). One
693
- * file, per-user, machine-local, not synced. Under the project-daemon
694
- * contract (ADR-096) it is no longer the coordination point — it is read
695
- * once for migration and otherwise left to the additive writes the daemon
696
- * and orchestrator still perform. The read-modify-write helpers below keep
697
- * their atomic-write + exclusive-lock machinery for that legacy surface.
698
- *
699
- * 2. The machine-wide daemon discovery directory at `~/.neat/daemons/`
700
- * (ADR-096 §6). One file per running daemon — `<project>.json` — each owned
701
- * solely by the daemon that wrote it (on start) and removes it (on graceful
702
- * stop). Discovery is **append-only and lock-free**: a reader scans the
703
- * directory and reconciles liveness; it never acquires a shared lock, so it
704
- * can never deadlock against a daemon (#506). Losing or rebuilding the
705
- * directory costs discovery convenience, not correctness — each project's
706
- * own `neat-out/daemon.json` stays authoritative.
707
- *
708
- * `neat ps` / `neat list` and the per-daemon `pause` / `resume` / `uninstall`
709
- * verbs read discovery, falling back to the legacy registry where no daemon
710
- * file is present yet (the migration window before every daemon self-describes).
711
- *
712
- * The legacy lock is a file we exclusively-create (`O_EXCL`), hold while we
713
- * mutate, and unlink on the way out. Crude but cross-platform; matches what
714
- * `proper-lockfile` does internally without pulling the dep in. It never sits
715
- * on the discovery path.
716
- */
717
-
718
- declare function registryPath(): string;
719
- declare function registryLockPath(): string;
720
- /**
721
- * Path normalisation per ADR-048 #7. Two `init` calls from different relative
722
- * paths to the same dir must collapse to one entry. `path.resolve` handles
723
- * relative-to-cwd; we pass it through `fs.realpath` when the dir exists so
724
- * symlinked paths land on the same canonical entry too.
725
- */
726
- declare function normalizeProjectPath(input: string): Promise<string>;
727
- /**
728
- * tmp + fsync + rename. The fsync on the data fd guarantees the bytes are on
729
- * disk before rename swaps the inode; rename itself is atomic on POSIX.
730
- *
731
- * Exported so the init flow and test harnesses can use the same helper.
732
- */
733
- declare function writeAtomically(target: string, contents: string): Promise<void>;
734
- /**
735
- * Read the registry from disk. Returns an empty registry if the file does
736
- * not exist yet — first run, never registered anything.
737
- *
738
- * Throws on parse / schema errors. The contract is single-source-of-truth;
739
- * a corrupt file is louder than a silent reset.
740
- */
741
- declare function readRegistry(): Promise<RegistryFile>;
742
- interface AddProjectOptions {
743
- name: string;
744
- path: string;
745
- languages?: string[];
746
- status?: RegistryStatus;
747
- }
748
- /**
749
- * Anything the registry refuses to do.
750
- *
751
- * The identity lives on the class, not in the message text. Every caller that
752
- * prints one already prefixes its own name — the CLI writes `neat: ` — so a
753
- * message carrying `neat registry:` came out as `neat: neat registry: …`
754
- * (#1240). A non-CLI caller that wants to know where an error came from reads
755
- * `err.name`, which is more reliable than a string prefix anyway.
756
- */
757
- declare class RegistryError extends Error {
758
- constructor(message: string);
759
- }
760
- declare class ProjectNameCollisionError extends RegistryError {
761
- readonly projectName: string;
762
- constructor(name: string);
763
- }
764
- /**
765
- * Register a project, or update its `lastSeenAt` if the same path is already
766
- * registered under the same name (idempotent re-init).
767
- *
768
- * Hard error on name collision against a different path — ADR-046 #7. The
769
- * caller can recover by passing `--project <new-name>`.
770
- */
771
- declare function addProject(opts: AddProjectOptions): Promise<RegistryEntry>;
772
- declare function getProject(name: string): Promise<RegistryEntry | undefined>;
773
- declare function listProjects(): Promise<RegistryEntry[]>;
774
- declare function setStatus(name: string, status: RegistryStatus): Promise<RegistryEntry>;
775
- declare function touchLastSeen(name: string, at?: string): Promise<void>;
776
- /**
777
- * Remove the registry entry for `name`. Per ADR-048 #6: this only removes the
778
- * registry row. It does **not** touch `neat-out/`, `policy.json`, or any user
779
- * file in the project directory. SDK-install rollback is a separate flow
780
- * (`neat-rollback.patch`) that the caller opts in to.
781
- */
782
- declare function removeProject(name: string): Promise<RegistryEntry | undefined>;
783
-
784
- export { type BuildApiOptions, type BuildOtelGrpcReceiverOptions, type BuildOtelReceiverOptions, type CompatPair, type CompatibilityResult, type DaemonHandle, type DaemonOptions, type ExtractResult, type GraphDiff, type IngestContext, type MarkStaleOptions, type NeatGraph, type OtelGrpcReceiver, type OtlpTracesRequest, type ParsedSpan, type PersistedSnapshot, ProjectNameCollisionError, type ProjectSlot, type SpanHandler, type StalenessLoopOptions, addProject, buildApi, buildOtelReceiver, checkCompatibility, compatPairs, computeGraphDiff, confidenceForEdge, extractFromDirectory, getBlastRadius, getGraph, getProject, getRootCause, handleSpan, listProjects, loadGraphFromDisk, loadSnapshotForDiff, logSpanHandler, makeSpanHandler, markStaleEdges, normalizeProjectPath, parseOtlpRequest, readErrorEvents, readRegistry, readStaleEvents, registryLockPath, registryPath, removeProject, resetGraph, routeSpanToProject, saveGraphToDisk, setStatus, startDaemon, startOtelGrpcReceiver, startPersistLoop, startStalenessLoop, stitchTrace, thresholdForEdgeType, touchLastSeen, writeAtomically };
730
+ export { type BuildApiOptions, type BuildOtelGrpcReceiverOptions, type BuildOtelReceiverOptions, type CompatPair, type CompatibilityResult, type DaemonHandle, type DaemonOptions, type ExtractResult, type GraphDiff, type IngestContext, type MarkStaleOptions, type NeatGraph, type OtelGrpcReceiver, type OtlpTracesRequest, type ParsedSpan, type PersistedSnapshot, type ProjectSlot, type SpanHandler, type StalenessLoopOptions, buildApi, buildOtelReceiver, checkCompatibility, compatPairs, computeGraphDiff, confidenceForEdge, extractFromDirectory, getBlastRadius, getGraph, getRootCause, handleSpan, loadGraphFromDisk, loadSnapshotForDiff, logSpanHandler, makeSpanHandler, markStaleEdges, parseOtlpRequest, readErrorEvents, readStaleEvents, resetGraph, routeSpanToProject, saveGraphToDisk, startDaemon, startOtelGrpcReceiver, startPersistLoop, startStalenessLoop, stitchTrace, thresholdForEdgeType };
package/dist/index.js CHANGED
@@ -1,10 +1,8 @@
1
1
  import {
2
2
  routeSpanToProject,
3
3
  startDaemon
4
- } from "./chunk-Q2SL2SVH.js";
4
+ } from "./chunk-EMFX3V77.js";
5
5
  import {
6
- ProjectNameCollisionError,
7
- addProject,
8
6
  buildApi,
9
7
  checkCompatibility,
10
8
  compatPairs,
@@ -13,39 +11,44 @@ import {
13
11
  extractFromDirectory,
14
12
  getBlastRadius,
15
13
  getGraph,
16
- getProject,
17
14
  getRootCause,
18
15
  handleSpan,
19
- listProjects,
20
16
  loadGraphFromDisk,
21
17
  loadSnapshotForDiff,
22
18
  makeSpanHandler,
23
19
  markStaleEdges,
24
- normalizeProjectPath,
25
20
  readErrorEvents,
26
- readRegistry,
27
21
  readStaleEvents,
28
- registryLockPath,
29
- registryPath,
30
- removeProject,
31
22
  resetGraph,
32
23
  saveGraphToDisk,
33
- setStatus,
34
24
  startPersistLoop,
35
25
  startStalenessLoop,
36
26
  stitchTrace,
37
- thresholdForEdgeType,
27
+ thresholdForEdgeType
28
+ } from "./chunk-6QMWJAWR.js";
29
+ import {
30
+ ProjectNameCollisionError,
31
+ addProject,
32
+ getProject,
33
+ listProjects,
34
+ normalizeProjectPath,
35
+ readRegistry,
36
+ registryLockPath,
37
+ registryPath,
38
+ removeProject,
39
+ setStatus,
38
40
  touchLastSeen,
39
41
  writeAtomically
40
- } from "./chunk-DVCGDMTZ.js";
42
+ } from "./chunk-RGYC5U2Q.js";
41
43
  import {
42
44
  startOtelGrpcReceiver
43
- } from "./chunk-LXQCL4MP.js";
45
+ } from "./chunk-TZXSWSHX.js";
44
46
  import {
45
47
  buildOtelReceiver,
46
48
  logSpanHandler,
47
49
  parseOtlpRequest
48
- } from "./chunk-EFBWQIKG.js";
50
+ } from "./chunk-QPG2QXCW.js";
51
+ import "./chunk-MR64ICXX.js";
49
52
  export {
50
53
  ProjectNameCollisionError,
51
54
  addProject,