@graphrefly/graphrefly 0.17.0 → 0.18.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.
Files changed (71) hide show
  1. package/dist/{chunk-2PORF4RP.js → chunk-76YPZQTW.js} +2 -8
  2. package/dist/{chunk-2PORF4RP.js.map → chunk-76YPZQTW.js.map} +1 -1
  3. package/dist/{chunk-646OG3PO.js → chunk-F6ORUNO7.js} +18 -51
  4. package/dist/chunk-F6ORUNO7.js.map +1 -0
  5. package/dist/{chunk-EBNKJULL.js → chunk-FCLROC4Q.js} +2 -2
  6. package/dist/chunk-FCLROC4Q.js.map +1 -0
  7. package/dist/{chunk-F2ULI3Q3.js → chunk-J7S54G7I.js} +1 -2
  8. package/dist/{chunk-XJ6EMQ22.js → chunk-KJGUP35I.js} +3 -9
  9. package/dist/chunk-KJGUP35I.js.map +1 -0
  10. package/dist/{chunk-IHJHBADD.js → chunk-LB3RYLSC.js} +206 -173
  11. package/dist/chunk-LB3RYLSC.js.map +1 -0
  12. package/dist/{chunk-R6OHUUYB.js → chunk-TNKODJ6E.js} +2 -6
  13. package/dist/chunk-TNKODJ6E.js.map +1 -0
  14. package/dist/{chunk-YXROQFXZ.js → chunk-UVWEKTYC.js} +2 -2
  15. package/dist/compat/nestjs/index.cjs +221 -224
  16. package/dist/compat/nestjs/index.cjs.map +1 -1
  17. package/dist/compat/nestjs/index.d.cts +4 -4
  18. package/dist/compat/nestjs/index.d.ts +4 -4
  19. package/dist/compat/nestjs/index.js +6 -12
  20. package/dist/core/index.cjs +0 -83
  21. package/dist/core/index.cjs.map +1 -1
  22. package/dist/core/index.d.cts +2 -2
  23. package/dist/core/index.d.ts +2 -2
  24. package/dist/core/index.js +2 -6
  25. package/dist/extra/index.cjs +17 -53
  26. package/dist/extra/index.cjs.map +1 -1
  27. package/dist/extra/index.d.cts +4 -4
  28. package/dist/extra/index.d.ts +4 -4
  29. package/dist/extra/index.js +2 -8
  30. package/dist/graph/index.cjs +204 -171
  31. package/dist/graph/index.cjs.map +1 -1
  32. package/dist/graph/index.d.cts +3 -3
  33. package/dist/graph/index.d.ts +3 -3
  34. package/dist/graph/index.js +3 -3
  35. package/dist/{graph-Dc-P9BVm.d.ts → graph-BYFlyNpX.d.cts} +47 -45
  36. package/dist/{graph-fCsaaVIa.d.cts → graph-gISB9n3n.d.ts} +47 -45
  37. package/dist/{index-N704txAA.d.ts → index-7WnwgjMu.d.ts} +5 -7
  38. package/dist/{index-DWq0P9T6.d.ts → index-B43mC7uY.d.cts} +5 -7
  39. package/dist/{index-BmoUvOGN.d.ts → index-B80mMeuf.d.ts} +2 -4
  40. package/dist/{index-DlGMf_Qe.d.cts → index-BqOWSFhr.d.cts} +2 -2
  41. package/dist/{index-BBVBYPxr.d.cts → index-CEDaJaYE.d.ts} +5 -7
  42. package/dist/{index-DhXznWyH.d.ts → index-CgKPpiu8.d.ts} +2 -2
  43. package/dist/{index-D7y9Q8W4.d.ts → index-Ci_vPaVm.d.cts} +4 -6
  44. package/dist/{index-4OIX-q0C.d.cts → index-DKaB2x0T.d.ts} +4 -6
  45. package/dist/{index-ClaKZFPl.d.cts → index-D_tUMcpz.d.cts} +5 -7
  46. package/dist/{index-YlOH1Gw6.d.cts → index-EmzYk-TG.d.cts} +2 -4
  47. package/dist/index.cjs +312 -239
  48. package/dist/index.cjs.map +1 -1
  49. package/dist/index.d.cts +51 -13
  50. package/dist/index.d.ts +51 -13
  51. package/dist/index.js +103 -24
  52. package/dist/index.js.map +1 -1
  53. package/dist/{meta-BV4pj9ML.d.cts → meta-npl5b97j.d.cts} +1 -53
  54. package/dist/{meta-BV4pj9ML.d.ts → meta-npl5b97j.d.ts} +1 -53
  55. package/dist/observable-DFBCBELR.d.cts +36 -0
  56. package/dist/observable-oAGygKvc.d.ts +36 -0
  57. package/dist/patterns/reactive-layout/index.cjs +204 -171
  58. package/dist/patterns/reactive-layout/index.cjs.map +1 -1
  59. package/dist/patterns/reactive-layout/index.d.cts +3 -3
  60. package/dist/patterns/reactive-layout/index.d.ts +3 -3
  61. package/dist/patterns/reactive-layout/index.js +3 -3
  62. package/package.json +1 -1
  63. package/dist/chunk-646OG3PO.js.map +0 -1
  64. package/dist/chunk-EBNKJULL.js.map +0 -1
  65. package/dist/chunk-IHJHBADD.js.map +0 -1
  66. package/dist/chunk-R6OHUUYB.js.map +0 -1
  67. package/dist/chunk-XJ6EMQ22.js.map +0 -1
  68. package/dist/observable-Cz-AWhwR.d.cts +0 -42
  69. package/dist/observable-DCqlwGyl.d.ts +0 -42
  70. /package/dist/{chunk-F2ULI3Q3.js.map → chunk-J7S54G7I.js.map} +0 -0
  71. /package/dist/{chunk-YXROQFXZ.js.map → chunk-UVWEKTYC.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- export { A as AdapterHandlers, a as AsyncSourceOpts, B as BackoffPreset, b as BackoffStrategy, c as BatchMessage, d as BridgeMessage, e as BufferedSinkHandle, C as CSVRow, f as CacheEvictionPolicy, g as CacheTier, h as CascadingCache, i as CascadingCacheOptions, j as CheckpointAdapter, k as CheckpointToRedisOptions, l as CheckpointToS3Options, m as CircuitBreaker, n as CircuitBreakerOptions, o as CircuitOpenError, p as CircuitState, q as ClickHouseClientLike, r as ClickHouseInsertClientLike, s as ClickHouseRow, t as CronSchedule, u as DictCheckpointAdapter, D as DistillBundle, v as DistillOptions, w as DrizzleQueryLike, x as ErrorMessage, y as EventTargetLike, z as ExponentialBackoffOptions, E as Extraction, F as FSEvent, G as FSEventType, H as FileCheckpointAdapter, I as FileWriterLike, J as FromCSVOptions, K as FromClickHouseWatchOptions, L as FromCronOptions, M as FromDrizzleOptions, O as FromFSWatchOptions, P as FromGitHookOptions, Q as FromHTTPOptions, R as FromKafkaOptions, S as FromKyselyOptions, T as FromMCPOptions, U as FromNATSOptions, V as FromNDJSONOptions, W as FromOTelOptions, X as FromPrismaOptions, Y as FromPrometheusOptions, Z as FromPulsarOptions, _ as FromRabbitMQOptions, $ as FromRedisStreamOptions, a0 as FromSqliteOptions, a1 as FromStatsDOptions, a2 as FromSyslogOptions, a3 as GitEvent, a4 as GitHookType, a5 as HTTPBundle, a6 as IndexRow, a7 as IndexedDbCheckpointSpec, a8 as InitMessage, a9 as JitterMode, aa as KafkaConsumerLike, ab as KafkaMessage, ac as KafkaProducerLike, ad as KyselyQueryLike, ae as LokiClientLike, af as LokiStream, ag as MCPClientLike, ah as MemoryCheckpointAdapter, ai as MergeMapOptions, aj as MongoCollectionLike, ak as NATSClientLike, al as NATSMessage, am as NATSSubscriptionLike, an as NS_PER_MS, ao as NS_PER_SEC, N as NodeInput, ap as OTelBundle, aq as OTelLog, ar as OTelMetric, as as OTelRegister, at as OTelSpan, au as PostgresClientLike, av as PrismaModelLike, aw as PrometheusMetric, ax as PubSubHub, ay as PulsarConsumerLike, az as PulsarMessage, aA as PulsarProducerLike, aB as RabbitMQChannelLike, aC as RabbitMQMessage, aD as ReactiveIndexBundle, aE as ReactiveIndexOptions, aF as ReactiveListBundle, aG as ReactiveListOptions, aH as ReactiveLogBundle, aI as ReactiveLogOptions, aJ as ReactiveMapBundle, aK as ReactiveMapOptions, aL as ReadyMessage, aM as RedisCheckpointClientLike, aN as RedisClientLike, aO as RedisStreamEntry, aP as RetryOptions, aQ as S3ClientLike, aR as SignalMessage, aS as SinkHandle, aT as SinkTransportError, aU as SqliteCheckpointAdapter, aV as SqliteDbLike, aW as StatsDMetric, aX as StatsDRegister, aY as StatusValue, aZ as SyslogMessage, a_ as SyslogRegister, a$ as TapObserver, b0 as TempoClientLike, b1 as ThrottleOptions, b2 as TieredStorage, b3 as TieredStorageOptions, b4 as TimeoutError, b5 as ToCSVOptions, b6 as ToClickHouseOptions, b7 as ToFileOptions, b8 as ToKafkaOptions, b9 as ToLokiOptions, ba as ToMongoOptions, bb as ToNATSOptions, bc as ToPostgresOptions, bd as ToPulsarOptions, be as ToRabbitMQOptions, bf as ToRedisStreamOptions, bg as ToS3Options, bh as ToSSEOptions, bi as ToSqliteOptions, bj as ToTempoOptions, bk as ToWebSocketOptions, bl as ToWebSocketTransportError, bm as TokenBucket, bn as ValueMessage, bo as VerifiableBundle, bp as VerifiableOptions, bq as VerifyValue, br as WatermarkController, bs as WatermarkOptions, bt as WebSocketLike, bu as WebSocketMessageEventLike, bv as WebSocketRegister, bw as WebhookRegister, bx as WithBreakerBundle, by as WithStatusBundle, bz as WorkerBridge, bA as WorkerBridgeOptions, bB as WorkerSelfHandle, bC as WorkerSelfOptions, bD as WorkerTransport, bE as audit, bF as buffer, bG as bufferCount, bH as bufferTime, bI as cache, bJ as cached, bK as cascadingCache, bL as catchError, bM as checkpointNodeValue, bN as checkpointToRedis, bO as checkpointToS3, bP as circuitBreaker, bQ as combine, bR as combineLatest, bS as concat, bT as concatMap, bU as constant, bV as createTransport, bW as createWatermarkController, bX as debounce, bY as debounceTime, bZ as decorrelatedJitter, b_ as delay, b$ as deserializeError, c0 as distill, c1 as distinctUntilChanged, c2 as elementAt, c3 as empty, c4 as escapeRegexChar, c5 as exhaustMap, c6 as exponential, c8 as fallback, c9 as fibonacci, ca as filter, cb as find, cc as first, cd as firstValueFrom, ce as flatMap, cf as forEach, cg as fromAny, ch as fromAsyncIter, ci as fromCSV, cj as fromClickHouseWatch, ck as fromCron, cl as fromDrizzle, cm as fromEvent, cn as fromFSWatch, co as fromGitHook, cp as fromHTTP, cq as fromIDBRequest, cr as fromIDBTransaction, cs as fromIter, ct as fromKafka, cu as fromKysely, cv as fromMCP, cw as fromNATS, cx as fromNDJSON, cy as fromOTel, cz as fromPrisma, cA as fromPrometheus, cB as fromPromise, cC as fromPulsar, cD as fromRabbitMQ, cE as fromRedisStream, cF as fromSqlite, cG as fromStatsD, cH as fromSyslog, cI as fromTimer, cJ as fromWebSocket, cK as fromWebhook, cL as globToRegExp, cM as interval, cN as last, cO as linear, cP as logSlice, cQ as lru, cR as map, cS as matchesAnyPattern, cT as matchesCron, cU as merge, cV as mergeMap, cW as nameToSignal, cX as never, cY as of, cZ as pairwise, c_ as parseCron, c$ as parsePrometheusText, d0 as parseStatsD, d1 as parseSyslog, d2 as pausable, d3 as pubsub, d4 as race, d5 as rateLimiter, d6 as reactiveIndex, d7 as reactiveList, d8 as reactiveLog, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as valve, dX as verifiable, dY as window, dZ as windowCount, d_ as windowTime, d$ as withBreaker, e0 as withLatestFrom, e1 as withMaxAttempts, e2 as withStatus, e3 as workerBridge, e4 as workerSelf, e5 as zip } from '../index-ClaKZFPl.cjs';
2
- export { o as observeGraph$, a as observeNode$, t as toMessages$, b as toObservable } from '../observable-Cz-AWhwR.cjs';
3
- import '../meta-BV4pj9ML.cjs';
4
- import '../graph-fCsaaVIa.cjs';
1
+ export { A as AdapterHandlers, a as AsyncSourceOpts, B as BackoffPreset, b as BackoffStrategy, c as BatchMessage, d as BridgeMessage, e as BufferedSinkHandle, C as CSVRow, f as CacheEvictionPolicy, g as CacheTier, h as CascadingCache, i as CascadingCacheOptions, j as CheckpointAdapter, k as CheckpointToRedisOptions, l as CheckpointToS3Options, m as CircuitBreaker, n as CircuitBreakerOptions, o as CircuitOpenError, p as CircuitState, q as ClickHouseClientLike, r as ClickHouseInsertClientLike, s as ClickHouseRow, t as CronSchedule, u as DictCheckpointAdapter, D as DistillBundle, v as DistillOptions, w as DrizzleQueryLike, x as ErrorMessage, y as EventTargetLike, z as ExponentialBackoffOptions, E as Extraction, F as FSEvent, G as FSEventType, H as FileCheckpointAdapter, I as FileWriterLike, J as FromCSVOptions, K as FromClickHouseWatchOptions, L as FromCronOptions, M as FromDrizzleOptions, O as FromFSWatchOptions, P as FromGitHookOptions, Q as FromHTTPOptions, R as FromKafkaOptions, S as FromKyselyOptions, T as FromMCPOptions, U as FromNATSOptions, V as FromNDJSONOptions, W as FromOTelOptions, X as FromPrismaOptions, Y as FromPrometheusOptions, Z as FromPulsarOptions, _ as FromRabbitMQOptions, $ as FromRedisStreamOptions, a0 as FromSqliteOptions, a1 as FromStatsDOptions, a2 as FromSyslogOptions, a3 as GitEvent, a4 as GitHookType, a5 as HTTPBundle, a6 as IndexRow, a7 as IndexedDbCheckpointSpec, a8 as InitMessage, a9 as JitterMode, aa as KafkaConsumerLike, ab as KafkaMessage, ac as KafkaProducerLike, ad as KyselyQueryLike, ae as LokiClientLike, af as LokiStream, ag as MCPClientLike, ah as MemoryCheckpointAdapter, ai as MergeMapOptions, aj as MongoCollectionLike, ak as NATSClientLike, al as NATSMessage, am as NATSSubscriptionLike, an as NS_PER_MS, ao as NS_PER_SEC, N as NodeInput, ap as OTelBundle, aq as OTelLog, ar as OTelMetric, as as OTelRegister, at as OTelSpan, au as PostgresClientLike, av as PrismaModelLike, aw as PrometheusMetric, ax as PubSubHub, ay as PulsarConsumerLike, az as PulsarMessage, aA as PulsarProducerLike, aB as RabbitMQChannelLike, aC as RabbitMQMessage, aD as ReactiveIndexBundle, aE as ReactiveIndexOptions, aF as ReactiveListBundle, aG as ReactiveListOptions, aH as ReactiveLogBundle, aI as ReactiveLogOptions, aJ as ReactiveMapBundle, aK as ReactiveMapOptions, aL as ReadyMessage, aM as RedisCheckpointClientLike, aN as RedisClientLike, aO as RedisStreamEntry, aP as RetryOptions, aQ as S3ClientLike, aR as SignalMessage, aS as SinkHandle, aT as SinkTransportError, aU as SqliteCheckpointAdapter, aV as SqliteDbLike, aW as StatsDMetric, aX as StatsDRegister, aY as StatusValue, aZ as SyslogMessage, a_ as SyslogRegister, a$ as TapObserver, b0 as TempoClientLike, b1 as ThrottleOptions, b2 as TieredStorage, b3 as TieredStorageOptions, b4 as TimeoutError, b5 as ToCSVOptions, b6 as ToClickHouseOptions, b7 as ToFileOptions, b8 as ToKafkaOptions, b9 as ToLokiOptions, ba as ToMongoOptions, bb as ToNATSOptions, bc as ToPostgresOptions, bd as ToPulsarOptions, be as ToRabbitMQOptions, bf as ToRedisStreamOptions, bg as ToS3Options, bh as ToSSEOptions, bi as ToSqliteOptions, bj as ToTempoOptions, bk as ToWebSocketOptions, bl as ToWebSocketTransportError, bm as TokenBucket, bn as ValueMessage, bo as VerifiableBundle, bp as VerifiableOptions, bq as VerifyValue, br as WatermarkController, bs as WatermarkOptions, bt as WebSocketLike, bu as WebSocketMessageEventLike, bv as WebSocketRegister, bw as WebhookRegister, bx as WithBreakerBundle, by as WithStatusBundle, bz as WorkerBridge, bA as WorkerBridgeOptions, bB as WorkerSelfHandle, bC as WorkerSelfOptions, bD as WorkerTransport, bE as audit, bF as buffer, bG as bufferCount, bH as bufferTime, bI as cache, bJ as cached, bK as cascadingCache, bL as catchError, bM as checkpointNodeValue, bN as checkpointToRedis, bO as checkpointToS3, bP as circuitBreaker, bQ as combine, bR as combineLatest, bS as concat, bT as concatMap, bU as constant, bV as createTransport, bW as createWatermarkController, bX as debounce, bY as debounceTime, bZ as decorrelatedJitter, b_ as delay, b$ as deserializeError, c0 as distill, c1 as distinctUntilChanged, c2 as elementAt, c3 as empty, c4 as escapeRegexChar, c5 as exhaustMap, c6 as exponential, c8 as fallback, c9 as fibonacci, ca as filter, cb as find, cc as first, cd as firstValueFrom, ce as flatMap, cf as forEach, cg as fromAny, ch as fromAsyncIter, ci as fromCSV, cj as fromClickHouseWatch, ck as fromCron, cl as fromDrizzle, cm as fromEvent, cn as fromFSWatch, co as fromGitHook, cp as fromHTTP, cq as fromIDBRequest, cr as fromIDBTransaction, cs as fromIter, ct as fromKafka, cu as fromKysely, cv as fromMCP, cw as fromNATS, cx as fromNDJSON, cy as fromOTel, cz as fromPrisma, cA as fromPrometheus, cB as fromPromise, cC as fromPulsar, cD as fromRabbitMQ, cE as fromRedisStream, cF as fromSqlite, cG as fromStatsD, cH as fromSyslog, cI as fromTimer, cJ as fromWebSocket, cK as fromWebhook, cL as globToRegExp, cM as interval, cN as last, cO as linear, cP as logSlice, cQ as lru, cR as map, cS as matchesAnyPattern, cT as matchesCron, cU as merge, cV as mergeMap, cW as nameToSignal, cX as never, cY as of, cZ as pairwise, c_ as parseCron, c$ as parsePrometheusText, d0 as parseStatsD, d1 as parseSyslog, d2 as pausable, d3 as pubsub, d4 as race, d5 as rateLimiter, d6 as reactiveIndex, d7 as reactiveList, d8 as reactiveLog, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as valve, dX as verifiable, dY as window, dZ as windowCount, d_ as windowTime, d$ as withBreaker, e0 as withLatestFrom, e1 as withMaxAttempts, e2 as withStatus, e3 as workerBridge, e4 as workerSelf, e5 as zip } from '../index-D_tUMcpz.cjs';
2
+ export { T as ToObservableOptions, t as toObservable } from '../observable-DFBCBELR.cjs';
3
+ import '../meta-npl5b97j.cjs';
4
+ import '../graph-BYFlyNpX.cjs';
5
5
  import 'rxjs';
@@ -1,5 +1,5 @@
1
- export { A as AdapterHandlers, a as AsyncSourceOpts, B as BackoffPreset, b as BackoffStrategy, c as BatchMessage, d as BridgeMessage, e as BufferedSinkHandle, C as CSVRow, f as CacheEvictionPolicy, g as CacheTier, h as CascadingCache, i as CascadingCacheOptions, j as CheckpointAdapter, k as CheckpointToRedisOptions, l as CheckpointToS3Options, m as CircuitBreaker, n as CircuitBreakerOptions, o as CircuitOpenError, p as CircuitState, q as ClickHouseClientLike, r as ClickHouseInsertClientLike, s as ClickHouseRow, t as CronSchedule, u as DictCheckpointAdapter, D as DistillBundle, v as DistillOptions, w as DrizzleQueryLike, x as ErrorMessage, y as EventTargetLike, z as ExponentialBackoffOptions, E as Extraction, F as FSEvent, G as FSEventType, H as FileCheckpointAdapter, I as FileWriterLike, J as FromCSVOptions, K as FromClickHouseWatchOptions, L as FromCronOptions, M as FromDrizzleOptions, O as FromFSWatchOptions, P as FromGitHookOptions, Q as FromHTTPOptions, R as FromKafkaOptions, S as FromKyselyOptions, T as FromMCPOptions, U as FromNATSOptions, V as FromNDJSONOptions, W as FromOTelOptions, X as FromPrismaOptions, Y as FromPrometheusOptions, Z as FromPulsarOptions, _ as FromRabbitMQOptions, $ as FromRedisStreamOptions, a0 as FromSqliteOptions, a1 as FromStatsDOptions, a2 as FromSyslogOptions, a3 as GitEvent, a4 as GitHookType, a5 as HTTPBundle, a6 as IndexRow, a7 as IndexedDbCheckpointSpec, a8 as InitMessage, a9 as JitterMode, aa as KafkaConsumerLike, ab as KafkaMessage, ac as KafkaProducerLike, ad as KyselyQueryLike, ae as LokiClientLike, af as LokiStream, ag as MCPClientLike, ah as MemoryCheckpointAdapter, ai as MergeMapOptions, aj as MongoCollectionLike, ak as NATSClientLike, al as NATSMessage, am as NATSSubscriptionLike, an as NS_PER_MS, ao as NS_PER_SEC, N as NodeInput, ap as OTelBundle, aq as OTelLog, ar as OTelMetric, as as OTelRegister, at as OTelSpan, au as PostgresClientLike, av as PrismaModelLike, aw as PrometheusMetric, ax as PubSubHub, ay as PulsarConsumerLike, az as PulsarMessage, aA as PulsarProducerLike, aB as RabbitMQChannelLike, aC as RabbitMQMessage, aD as ReactiveIndexBundle, aE as ReactiveIndexOptions, aF as ReactiveListBundle, aG as ReactiveListOptions, aH as ReactiveLogBundle, aI as ReactiveLogOptions, aJ as ReactiveMapBundle, aK as ReactiveMapOptions, aL as ReadyMessage, aM as RedisCheckpointClientLike, aN as RedisClientLike, aO as RedisStreamEntry, aP as RetryOptions, aQ as S3ClientLike, aR as SignalMessage, aS as SinkHandle, aT as SinkTransportError, aU as SqliteCheckpointAdapter, aV as SqliteDbLike, aW as StatsDMetric, aX as StatsDRegister, aY as StatusValue, aZ as SyslogMessage, a_ as SyslogRegister, a$ as TapObserver, b0 as TempoClientLike, b1 as ThrottleOptions, b2 as TieredStorage, b3 as TieredStorageOptions, b4 as TimeoutError, b5 as ToCSVOptions, b6 as ToClickHouseOptions, b7 as ToFileOptions, b8 as ToKafkaOptions, b9 as ToLokiOptions, ba as ToMongoOptions, bb as ToNATSOptions, bc as ToPostgresOptions, bd as ToPulsarOptions, be as ToRabbitMQOptions, bf as ToRedisStreamOptions, bg as ToS3Options, bh as ToSSEOptions, bi as ToSqliteOptions, bj as ToTempoOptions, bk as ToWebSocketOptions, bl as ToWebSocketTransportError, bm as TokenBucket, bn as ValueMessage, bo as VerifiableBundle, bp as VerifiableOptions, bq as VerifyValue, br as WatermarkController, bs as WatermarkOptions, bt as WebSocketLike, bu as WebSocketMessageEventLike, bv as WebSocketRegister, bw as WebhookRegister, bx as WithBreakerBundle, by as WithStatusBundle, bz as WorkerBridge, bA as WorkerBridgeOptions, bB as WorkerSelfHandle, bC as WorkerSelfOptions, bD as WorkerTransport, bE as audit, bF as buffer, bG as bufferCount, bH as bufferTime, bI as cache, bJ as cached, bK as cascadingCache, bL as catchError, bM as checkpointNodeValue, bN as checkpointToRedis, bO as checkpointToS3, bP as circuitBreaker, bQ as combine, bR as combineLatest, bS as concat, bT as concatMap, bU as constant, bV as createTransport, bW as createWatermarkController, bX as debounce, bY as debounceTime, bZ as decorrelatedJitter, b_ as delay, b$ as deserializeError, c0 as distill, c1 as distinctUntilChanged, c2 as elementAt, c3 as empty, c4 as escapeRegexChar, c5 as exhaustMap, c6 as exponential, c8 as fallback, c9 as fibonacci, ca as filter, cb as find, cc as first, cd as firstValueFrom, ce as flatMap, cf as forEach, cg as fromAny, ch as fromAsyncIter, ci as fromCSV, cj as fromClickHouseWatch, ck as fromCron, cl as fromDrizzle, cm as fromEvent, cn as fromFSWatch, co as fromGitHook, cp as fromHTTP, cq as fromIDBRequest, cr as fromIDBTransaction, cs as fromIter, ct as fromKafka, cu as fromKysely, cv as fromMCP, cw as fromNATS, cx as fromNDJSON, cy as fromOTel, cz as fromPrisma, cA as fromPrometheus, cB as fromPromise, cC as fromPulsar, cD as fromRabbitMQ, cE as fromRedisStream, cF as fromSqlite, cG as fromStatsD, cH as fromSyslog, cI as fromTimer, cJ as fromWebSocket, cK as fromWebhook, cL as globToRegExp, cM as interval, cN as last, cO as linear, cP as logSlice, cQ as lru, cR as map, cS as matchesAnyPattern, cT as matchesCron, cU as merge, cV as mergeMap, cW as nameToSignal, cX as never, cY as of, cZ as pairwise, c_ as parseCron, c$ as parsePrometheusText, d0 as parseStatsD, d1 as parseSyslog, d2 as pausable, d3 as pubsub, d4 as race, d5 as rateLimiter, d6 as reactiveIndex, d7 as reactiveList, d8 as reactiveLog, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as valve, dX as verifiable, dY as window, dZ as windowCount, d_ as windowTime, d$ as withBreaker, e0 as withLatestFrom, e1 as withMaxAttempts, e2 as withStatus, e3 as workerBridge, e4 as workerSelf, e5 as zip } from '../index-N704txAA.js';
2
- export { o as observeGraph$, a as observeNode$, t as toMessages$, b as toObservable } from '../observable-DCqlwGyl.js';
3
- import '../meta-BV4pj9ML.js';
4
- import '../graph-Dc-P9BVm.js';
1
+ export { A as AdapterHandlers, a as AsyncSourceOpts, B as BackoffPreset, b as BackoffStrategy, c as BatchMessage, d as BridgeMessage, e as BufferedSinkHandle, C as CSVRow, f as CacheEvictionPolicy, g as CacheTier, h as CascadingCache, i as CascadingCacheOptions, j as CheckpointAdapter, k as CheckpointToRedisOptions, l as CheckpointToS3Options, m as CircuitBreaker, n as CircuitBreakerOptions, o as CircuitOpenError, p as CircuitState, q as ClickHouseClientLike, r as ClickHouseInsertClientLike, s as ClickHouseRow, t as CronSchedule, u as DictCheckpointAdapter, D as DistillBundle, v as DistillOptions, w as DrizzleQueryLike, x as ErrorMessage, y as EventTargetLike, z as ExponentialBackoffOptions, E as Extraction, F as FSEvent, G as FSEventType, H as FileCheckpointAdapter, I as FileWriterLike, J as FromCSVOptions, K as FromClickHouseWatchOptions, L as FromCronOptions, M as FromDrizzleOptions, O as FromFSWatchOptions, P as FromGitHookOptions, Q as FromHTTPOptions, R as FromKafkaOptions, S as FromKyselyOptions, T as FromMCPOptions, U as FromNATSOptions, V as FromNDJSONOptions, W as FromOTelOptions, X as FromPrismaOptions, Y as FromPrometheusOptions, Z as FromPulsarOptions, _ as FromRabbitMQOptions, $ as FromRedisStreamOptions, a0 as FromSqliteOptions, a1 as FromStatsDOptions, a2 as FromSyslogOptions, a3 as GitEvent, a4 as GitHookType, a5 as HTTPBundle, a6 as IndexRow, a7 as IndexedDbCheckpointSpec, a8 as InitMessage, a9 as JitterMode, aa as KafkaConsumerLike, ab as KafkaMessage, ac as KafkaProducerLike, ad as KyselyQueryLike, ae as LokiClientLike, af as LokiStream, ag as MCPClientLike, ah as MemoryCheckpointAdapter, ai as MergeMapOptions, aj as MongoCollectionLike, ak as NATSClientLike, al as NATSMessage, am as NATSSubscriptionLike, an as NS_PER_MS, ao as NS_PER_SEC, N as NodeInput, ap as OTelBundle, aq as OTelLog, ar as OTelMetric, as as OTelRegister, at as OTelSpan, au as PostgresClientLike, av as PrismaModelLike, aw as PrometheusMetric, ax as PubSubHub, ay as PulsarConsumerLike, az as PulsarMessage, aA as PulsarProducerLike, aB as RabbitMQChannelLike, aC as RabbitMQMessage, aD as ReactiveIndexBundle, aE as ReactiveIndexOptions, aF as ReactiveListBundle, aG as ReactiveListOptions, aH as ReactiveLogBundle, aI as ReactiveLogOptions, aJ as ReactiveMapBundle, aK as ReactiveMapOptions, aL as ReadyMessage, aM as RedisCheckpointClientLike, aN as RedisClientLike, aO as RedisStreamEntry, aP as RetryOptions, aQ as S3ClientLike, aR as SignalMessage, aS as SinkHandle, aT as SinkTransportError, aU as SqliteCheckpointAdapter, aV as SqliteDbLike, aW as StatsDMetric, aX as StatsDRegister, aY as StatusValue, aZ as SyslogMessage, a_ as SyslogRegister, a$ as TapObserver, b0 as TempoClientLike, b1 as ThrottleOptions, b2 as TieredStorage, b3 as TieredStorageOptions, b4 as TimeoutError, b5 as ToCSVOptions, b6 as ToClickHouseOptions, b7 as ToFileOptions, b8 as ToKafkaOptions, b9 as ToLokiOptions, ba as ToMongoOptions, bb as ToNATSOptions, bc as ToPostgresOptions, bd as ToPulsarOptions, be as ToRabbitMQOptions, bf as ToRedisStreamOptions, bg as ToS3Options, bh as ToSSEOptions, bi as ToSqliteOptions, bj as ToTempoOptions, bk as ToWebSocketOptions, bl as ToWebSocketTransportError, bm as TokenBucket, bn as ValueMessage, bo as VerifiableBundle, bp as VerifiableOptions, bq as VerifyValue, br as WatermarkController, bs as WatermarkOptions, bt as WebSocketLike, bu as WebSocketMessageEventLike, bv as WebSocketRegister, bw as WebhookRegister, bx as WithBreakerBundle, by as WithStatusBundle, bz as WorkerBridge, bA as WorkerBridgeOptions, bB as WorkerSelfHandle, bC as WorkerSelfOptions, bD as WorkerTransport, bE as audit, bF as buffer, bG as bufferCount, bH as bufferTime, bI as cache, bJ as cached, bK as cascadingCache, bL as catchError, bM as checkpointNodeValue, bN as checkpointToRedis, bO as checkpointToS3, bP as circuitBreaker, bQ as combine, bR as combineLatest, bS as concat, bT as concatMap, bU as constant, bV as createTransport, bW as createWatermarkController, bX as debounce, bY as debounceTime, bZ as decorrelatedJitter, b_ as delay, b$ as deserializeError, c0 as distill, c1 as distinctUntilChanged, c2 as elementAt, c3 as empty, c4 as escapeRegexChar, c5 as exhaustMap, c6 as exponential, c8 as fallback, c9 as fibonacci, ca as filter, cb as find, cc as first, cd as firstValueFrom, ce as flatMap, cf as forEach, cg as fromAny, ch as fromAsyncIter, ci as fromCSV, cj as fromClickHouseWatch, ck as fromCron, cl as fromDrizzle, cm as fromEvent, cn as fromFSWatch, co as fromGitHook, cp as fromHTTP, cq as fromIDBRequest, cr as fromIDBTransaction, cs as fromIter, ct as fromKafka, cu as fromKysely, cv as fromMCP, cw as fromNATS, cx as fromNDJSON, cy as fromOTel, cz as fromPrisma, cA as fromPrometheus, cB as fromPromise, cC as fromPulsar, cD as fromRabbitMQ, cE as fromRedisStream, cF as fromSqlite, cG as fromStatsD, cH as fromSyslog, cI as fromTimer, cJ as fromWebSocket, cK as fromWebhook, cL as globToRegExp, cM as interval, cN as last, cO as linear, cP as logSlice, cQ as lru, cR as map, cS as matchesAnyPattern, cT as matchesCron, cU as merge, cV as mergeMap, cW as nameToSignal, cX as never, cY as of, cZ as pairwise, c_ as parseCron, c$ as parsePrometheusText, d0 as parseStatsD, d1 as parseSyslog, d2 as pausable, d3 as pubsub, d4 as race, d5 as rateLimiter, d6 as reactiveIndex, d7 as reactiveList, d8 as reactiveLog, d9 as reactiveMap, da as reduce, db as repeat, dc as replay, dd as rescue, de as resolveBackoffPreset, df as restoreGraphCheckpoint, dg as restoreGraphCheckpointIndexedDb, dh as retry, di as sample, dj as saveGraphCheckpoint, dk as saveGraphCheckpointIndexedDb, dl as scan, dm as serializeError, dn as share, dp as shareReplay, dq as signalToName, dr as skip, ds as startWith, dt as switchMap, du as take, dv as takeUntil, dw as takeWhile, dx as tap, dy as throttle, dz as throttleTime, dA as throwError, dB as tieredStorage, dC as timeout, dD as toArray, dE as toCSV, dF as toClickHouse, dG as toFile, dH as toKafka, dI as toLoki, dJ as toMongo, dK as toNATS, dL as toPostgres, dM as toPulsar, dN as toRabbitMQ, dO as toRedisStream, dP as toS3, dQ as toSSE, dR as toSqlite, dS as toTempo, dT as toWebSocket, dU as tokenBucket, dV as tokenTracker, dW as valve, dX as verifiable, dY as window, dZ as windowCount, d_ as windowTime, d$ as withBreaker, e0 as withLatestFrom, e1 as withMaxAttempts, e2 as withStatus, e3 as workerBridge, e4 as workerSelf, e5 as zip } from '../index-7WnwgjMu.js';
2
+ export { T as ToObservableOptions, t as toObservable } from '../observable-oAGygKvc.js';
3
+ import '../meta-npl5b97j.js';
4
+ import '../graph-gISB9n3n.js';
5
5
  import 'rxjs';
@@ -136,7 +136,7 @@ import {
136
136
  workerBridge,
137
137
  workerSelf,
138
138
  zip
139
- } from "../chunk-2PORF4RP.js";
139
+ } from "../chunk-76YPZQTW.js";
140
140
  import {
141
141
  cached,
142
142
  createWatermarkController,
@@ -157,8 +157,6 @@ import {
157
157
  matchesAnyPattern,
158
158
  matchesCron,
159
159
  never,
160
- observeGraph$,
161
- observeNode$,
162
160
  of,
163
161
  parseCron,
164
162
  reactiveLog,
@@ -167,9 +165,8 @@ import {
167
165
  shareReplay,
168
166
  throwError,
169
167
  toArray,
170
- toMessages$,
171
168
  toObservable
172
- } from "../chunk-646OG3PO.js";
169
+ } from "../chunk-F6ORUNO7.js";
173
170
  import "../chunk-WZ2Z2CRV.js";
174
171
  import "../chunk-BV3TPSBK.js";
175
172
  export {
@@ -264,8 +261,6 @@ export {
264
261
  mergeMap,
265
262
  nameToSignal,
266
263
  never,
267
- observeGraph$,
268
- observeNode$,
269
264
  of,
270
265
  pairwise,
271
266
  parseCron,
@@ -314,7 +309,6 @@ export {
314
309
  toFile,
315
310
  toKafka,
316
311
  toLoki,
317
- toMessages$,
318
312
  toMongo,
319
313
  toNATS,
320
314
  toObservable,
@@ -1695,7 +1695,7 @@ var RingBuffer = class {
1695
1695
  return result;
1696
1696
  }
1697
1697
  };
1698
- var SPY_ANSI_THEME = {
1698
+ var OBSERVE_ANSI_THEME = {
1699
1699
  data: "\x1B[32m",
1700
1700
  dirty: "\x1B[33m",
1701
1701
  resolved: "\x1B[36m",
@@ -1705,7 +1705,7 @@ var SPY_ANSI_THEME = {
1705
1705
  path: "\x1B[90m",
1706
1706
  reset: "\x1B[0m"
1707
1707
  };
1708
- var SPY_NO_COLOR_THEME = {
1708
+ var OBSERVE_NO_COLOR_THEME = {
1709
1709
  data: "",
1710
1710
  dirty: "",
1711
1711
  resolved: "",
@@ -1725,9 +1725,9 @@ function describeData(value) {
1725
1725
  return "[unserializable]";
1726
1726
  }
1727
1727
  }
1728
- function resolveSpyTheme(theme) {
1729
- if (theme === "none") return SPY_NO_COLOR_THEME;
1730
- if (theme === "ansi" || theme == null) return SPY_ANSI_THEME;
1728
+ function resolveObserveTheme(theme) {
1729
+ if (theme === "none") return OBSERVE_NO_COLOR_THEME;
1730
+ if (theme === "ansi" || theme == null) return OBSERVE_ANSI_THEME;
1731
1731
  return {
1732
1732
  data: theme.data ?? "",
1733
1733
  dirty: theme.dirty ?? "",
@@ -2498,9 +2498,13 @@ var Graph = class _Graph {
2498
2498
  if (actor2 != null && !target.allowsObserve(actor2)) {
2499
2499
  throw new GuardDenied({ actor: actor2, action: "observe", nodeName: path });
2500
2500
  }
2501
- const wantsStructured2 = resolved.structured === true || resolved.timeline === true || resolved.causal === true || resolved.derived === true || resolved.detail === "minimal" || resolved.detail === "full";
2502
- if (wantsStructured2 && _Graph.inspectorEnabled) {
2503
- return this._createObserveResult(path, target, resolved);
2501
+ const wantsStructured2 = resolved.structured === true || resolved.timeline === true || resolved.causal === true || resolved.derived === true || resolved.detail === "minimal" || resolved.detail === "full" || resolved.format != null;
2502
+ if (wantsStructured2) {
2503
+ const result = _Graph.inspectorEnabled ? this._createObserveResult(path, target, resolved) : this._createFallbackObserveResult(path, resolved);
2504
+ if (resolved.format != null) {
2505
+ this._attachFormatLogger(result, resolved);
2506
+ }
2507
+ return result;
2504
2508
  }
2505
2509
  return {
2506
2510
  subscribe(sink) {
@@ -2518,9 +2522,13 @@ var Graph = class _Graph {
2518
2522
  }
2519
2523
  const opts = resolveObserveDetail(pathOrOpts);
2520
2524
  const actor = opts.actor;
2521
- const wantsStructured = opts.structured === true || opts.timeline === true || opts.causal === true || opts.derived === true || opts.detail === "minimal" || opts.detail === "full";
2522
- if (wantsStructured && _Graph.inspectorEnabled) {
2523
- return this._createObserveResultForAll(opts);
2525
+ const wantsStructured = opts.structured === true || opts.timeline === true || opts.causal === true || opts.derived === true || opts.detail === "minimal" || opts.detail === "full" || opts.format != null;
2526
+ if (wantsStructured) {
2527
+ const result = _Graph.inspectorEnabled ? this._createObserveResultForAll(opts) : this._createFallbackObserveResultForAll(opts);
2528
+ if (opts.format != null) {
2529
+ this._attachFormatLogger(result, opts);
2530
+ }
2531
+ return result;
2524
2532
  }
2525
2533
  return {
2526
2534
  subscribe: (sink) => {
@@ -2564,6 +2572,7 @@ var Graph = class _Graph {
2564
2572
  let lastTriggerDepIndex;
2565
2573
  let lastRunDepValues;
2566
2574
  let detachInspectorHook;
2575
+ let batchSeq = 0;
2567
2576
  if ((causal || derived) && target instanceof NodeImpl) {
2568
2577
  detachInspectorHook = target._setInspectorHook((event) => {
2569
2578
  if (event.kind === "dep_message") {
@@ -2576,15 +2585,16 @@ var Graph = class _Graph {
2576
2585
  type: "derived",
2577
2586
  path,
2578
2587
  dep_values: [...event.depValues],
2579
- ...timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching() } : {}
2588
+ ...timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching(), batch_id: batchSeq } : {}
2580
2589
  });
2581
2590
  }
2582
2591
  });
2583
2592
  }
2584
2593
  const unsub = target.subscribe((msgs) => {
2594
+ batchSeq++;
2585
2595
  for (const m of msgs) {
2586
2596
  const t = m[0];
2587
- const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching() } : {};
2597
+ const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching(), batch_id: batchSeq } : {};
2588
2598
  const withCausal = causal && lastRunDepValues != null ? (() => {
2589
2599
  const triggerDep = lastTriggerDepIndex != null && lastTriggerDepIndex >= 0 && target instanceof NodeImpl ? target._deps[lastTriggerDepIndex] : void 0;
2590
2600
  const tv = triggerDep?.v;
@@ -2653,11 +2663,15 @@ var Graph = class _Graph {
2653
2663
  Object.assign(merged, extra);
2654
2664
  }
2655
2665
  const resolvedTarget = graph.resolve(basePath);
2656
- return graph._createObserveResult(
2666
+ const expanded = graph._createObserveResult(
2657
2667
  basePath,
2658
2668
  resolvedTarget,
2659
2669
  resolveObserveDetail(merged)
2660
2670
  );
2671
+ if (merged.format != null) {
2672
+ graph._attachFormatLogger(expanded, merged);
2673
+ }
2674
+ return expanded;
2661
2675
  }
2662
2676
  };
2663
2677
  }
@@ -2677,11 +2691,13 @@ var Graph = class _Graph {
2677
2691
  this._collectObserveTargets("", targets);
2678
2692
  targets.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
2679
2693
  const picked = actor == null ? targets : targets.filter(([, nd]) => nd.allowsObserve(actor));
2694
+ let batchSeq = 0;
2680
2695
  const unsubs = picked.map(
2681
2696
  ([path, nd]) => nd.subscribe((msgs) => {
2697
+ batchSeq++;
2682
2698
  for (const m of msgs) {
2683
2699
  const t = m[0];
2684
- const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching() } : {};
2700
+ const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching(), batch_id: batchSeq } : {};
2685
2701
  if (t === DATA) {
2686
2702
  result.values[path] = m[1];
2687
2703
  result.events.push({ type: "data", path, data: m[1], ...base });
@@ -2737,25 +2753,161 @@ var Graph = class _Graph {
2737
2753
  } else {
2738
2754
  Object.assign(merged, extra);
2739
2755
  }
2740
- return graph._createObserveResultForAll(resolveObserveDetail(merged));
2756
+ const expanded = graph._createObserveResultForAll(resolveObserveDetail(merged));
2757
+ if (merged.format != null) {
2758
+ graph._attachFormatLogger(expanded, merged);
2759
+ }
2760
+ return expanded;
2741
2761
  }
2742
2762
  };
2743
2763
  }
2744
2764
  /**
2745
- * Convenience live debugger over {@link Graph.observe}. Logs protocol events as they flow.
2746
- *
2747
- * Supports one-node (`path`) and graph-wide modes, event filtering, and JSON/pretty rendering.
2748
- * Color themes are built in (`ansi` / `none`) to avoid external dependencies.
2749
- *
2750
- * @param options - Spy configuration.
2751
- * @returns Disposable handle plus a structured observation accumulator.
2765
+ * Fallback ObserveResult for single-node when inspector is disabled but `format` is requested.
2766
+ * Subscribes to raw messages and accumulates events with timeline info.
2767
+ */
2768
+ _createFallbackObserveResult(path, options) {
2769
+ const timeline = options.timeline !== false;
2770
+ const acc = {
2771
+ values: {},
2772
+ dirtyCount: 0,
2773
+ resolvedCount: 0,
2774
+ events: [],
2775
+ completedCleanly: false,
2776
+ errored: false
2777
+ };
2778
+ const target = this.resolve(path);
2779
+ let batchSeq = 0;
2780
+ const unsub = target.subscribe((msgs) => {
2781
+ batchSeq++;
2782
+ for (const m of msgs) {
2783
+ const t = m[0];
2784
+ const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching(), batch_id: batchSeq } : {};
2785
+ if (t === DATA) {
2786
+ acc.values[path] = m[1];
2787
+ acc.events.push({ type: "data", path, data: m[1], ...base });
2788
+ } else if (t === DIRTY) {
2789
+ acc.dirtyCount++;
2790
+ acc.events.push({ type: "dirty", path, ...base });
2791
+ } else if (t === RESOLVED) {
2792
+ acc.resolvedCount++;
2793
+ acc.events.push({ type: "resolved", path, ...base });
2794
+ } else if (t === COMPLETE) {
2795
+ if (!acc.errored) acc.completedCleanly = true;
2796
+ acc.events.push({ type: "complete", path, ...base });
2797
+ } else if (t === ERROR) {
2798
+ acc.errored = true;
2799
+ acc.events.push({ type: "error", path, data: m[1], ...base });
2800
+ }
2801
+ }
2802
+ });
2803
+ return {
2804
+ get values() {
2805
+ return acc.values;
2806
+ },
2807
+ get dirtyCount() {
2808
+ return acc.dirtyCount;
2809
+ },
2810
+ get resolvedCount() {
2811
+ return acc.resolvedCount;
2812
+ },
2813
+ get events() {
2814
+ return acc.events;
2815
+ },
2816
+ get completedCleanly() {
2817
+ return acc.completedCleanly;
2818
+ },
2819
+ get errored() {
2820
+ return acc.errored;
2821
+ },
2822
+ dispose() {
2823
+ unsub();
2824
+ },
2825
+ expand() {
2826
+ throw new Error("expand() requires inspector mode (Graph.inspectorEnabled = true)");
2827
+ }
2828
+ };
2829
+ }
2830
+ /**
2831
+ * Fallback ObserveResult for graph-wide when inspector is disabled but `format` is requested.
2752
2832
  */
2753
- spy(options = {}) {
2833
+ _createFallbackObserveResultForAll(options) {
2834
+ const timeline = options.timeline !== false;
2835
+ const actor = options.actor;
2836
+ const acc = {
2837
+ values: {},
2838
+ dirtyCount: 0,
2839
+ resolvedCount: 0,
2840
+ events: [],
2841
+ completedCleanly: false,
2842
+ errored: false
2843
+ };
2844
+ const targets = [];
2845
+ this._collectObserveTargets("", targets);
2846
+ targets.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
2847
+ const picked = actor == null ? targets : targets.filter(([, nd]) => nd.allowsObserve(actor));
2848
+ let batchSeq = 0;
2849
+ const unsubs = picked.map(
2850
+ ([path, nd]) => nd.subscribe((msgs) => {
2851
+ batchSeq++;
2852
+ for (const m of msgs) {
2853
+ const t = m[0];
2854
+ const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching(), batch_id: batchSeq } : {};
2855
+ if (t === DATA) {
2856
+ acc.values[path] = m[1];
2857
+ acc.events.push({ type: "data", path, data: m[1], ...base });
2858
+ } else if (t === DIRTY) {
2859
+ acc.dirtyCount++;
2860
+ acc.events.push({ type: "dirty", path, ...base });
2861
+ } else if (t === RESOLVED) {
2862
+ acc.resolvedCount++;
2863
+ acc.events.push({ type: "resolved", path, ...base });
2864
+ } else if (t === COMPLETE) {
2865
+ if (!acc.errored) acc.completedCleanly = true;
2866
+ acc.events.push({ type: "complete", path, ...base });
2867
+ } else if (t === ERROR) {
2868
+ acc.errored = true;
2869
+ acc.events.push({ type: "error", path, data: m[1], ...base });
2870
+ }
2871
+ }
2872
+ })
2873
+ );
2874
+ return {
2875
+ get values() {
2876
+ return acc.values;
2877
+ },
2878
+ get dirtyCount() {
2879
+ return acc.dirtyCount;
2880
+ },
2881
+ get resolvedCount() {
2882
+ return acc.resolvedCount;
2883
+ },
2884
+ get events() {
2885
+ return acc.events;
2886
+ },
2887
+ get completedCleanly() {
2888
+ return acc.completedCleanly;
2889
+ },
2890
+ get errored() {
2891
+ return acc.errored;
2892
+ },
2893
+ dispose() {
2894
+ for (const u of unsubs) u();
2895
+ },
2896
+ expand() {
2897
+ throw new Error("expand() requires inspector mode (Graph.inspectorEnabled = true)");
2898
+ }
2899
+ };
2900
+ }
2901
+ /**
2902
+ * Attaches a format logger to an ObserveResult, rendering events as they arrive.
2903
+ * Wraps the result's dispose to flush pending events.
2904
+ */
2905
+ _attachFormatLogger(result, options) {
2906
+ const format = options.format;
2907
+ const logger = options.logger ?? ((line) => console.log(line));
2754
2908
  const include = options.includeTypes ? new Set(options.includeTypes) : null;
2755
2909
  const exclude = options.excludeTypes ? new Set(options.excludeTypes) : null;
2756
- const theme = resolveSpyTheme(options.theme);
2757
- const format = options.format ?? "pretty";
2758
- const logger = options.logger ?? ((line) => console.log(line));
2910
+ const theme = resolveObserveTheme(options.theme);
2759
2911
  const shouldLog = (type) => {
2760
2912
  if (include?.has(type) === false) return false;
2761
2913
  if (exclude?.has(type) === true) return false;
@@ -2780,133 +2932,26 @@ var Graph = class _Graph {
2780
2932
  const batchPart = event.in_batch ? " [batch]" : "";
2781
2933
  return `${pathPart}${color}${event.type.toUpperCase()}${theme.reset}${dataPart}${triggerPart}${batchPart}`;
2782
2934
  };
2783
- if (!_Graph.inspectorEnabled) {
2784
- const timeline = options.timeline ?? true;
2785
- const acc = {
2786
- values: {},
2787
- dirtyCount: 0,
2788
- resolvedCount: 0,
2789
- events: [],
2790
- completedCleanly: false,
2791
- errored: false
2792
- };
2793
- let stop2 = () => {
2794
- };
2795
- const result2 = {
2796
- get values() {
2797
- return acc.values;
2798
- },
2799
- get dirtyCount() {
2800
- return acc.dirtyCount;
2801
- },
2802
- get resolvedCount() {
2803
- return acc.resolvedCount;
2804
- },
2805
- get events() {
2806
- return acc.events;
2807
- },
2808
- get completedCleanly() {
2809
- return acc.completedCleanly;
2810
- },
2811
- get errored() {
2812
- return acc.errored;
2813
- },
2814
- dispose() {
2815
- stop2();
2816
- },
2817
- expand() {
2818
- throw new Error("expand() requires inspector mode (Graph.inspectorEnabled = true)");
2819
- }
2820
- };
2821
- const pushEvent = (path, message) => {
2822
- const t = message[0];
2823
- const base = timeline ? { timestamp_ns: monotonicNs(), in_batch: isBatching() } : {};
2824
- let event;
2825
- if (t === DATA) {
2826
- if (path != null) acc.values[path] = message[1];
2827
- event = { type: "data", ...path != null ? { path } : {}, data: message[1], ...base };
2828
- } else if (t === DIRTY) {
2829
- acc.dirtyCount += 1;
2830
- event = { type: "dirty", ...path != null ? { path } : {}, ...base };
2831
- } else if (t === RESOLVED) {
2832
- acc.resolvedCount += 1;
2833
- event = { type: "resolved", ...path != null ? { path } : {}, ...base };
2834
- } else if (t === COMPLETE) {
2835
- if (!acc.errored) acc.completedCleanly = true;
2836
- event = { type: "complete", ...path != null ? { path } : {}, ...base };
2837
- } else if (t === ERROR) {
2838
- acc.errored = true;
2839
- event = {
2840
- type: "error",
2841
- ...path != null ? { path } : {},
2842
- data: message[1],
2843
- ...base
2844
- };
2935
+ let cursor = 0;
2936
+ const flush = () => {
2937
+ const events = result.events;
2938
+ while (cursor < events.length) {
2939
+ const event = events[cursor++];
2940
+ if (shouldLog(event.type)) {
2941
+ logger(renderEvent(event), event);
2845
2942
  }
2846
- if (!event) return;
2847
- acc.events.push(event);
2848
- if (!shouldLog(event.type)) return;
2849
- logger(renderEvent(event), event);
2850
- };
2851
- if (options.path != null) {
2852
- const stream2 = this.observe(options.path, {
2853
- actor: options.actor,
2854
- structured: false
2855
- });
2856
- stop2 = stream2.subscribe((messages) => {
2857
- for (const m of messages) {
2858
- pushEvent(options.path, m);
2859
- }
2860
- });
2861
- } else {
2862
- const stream2 = this.observe({ actor: options.actor, structured: false });
2863
- stop2 = stream2.subscribe((path, messages) => {
2864
- for (const m of messages) {
2865
- pushEvent(path, m);
2866
- }
2867
- });
2868
2943
  }
2869
- return {
2870
- result: result2,
2871
- dispose() {
2872
- result2.dispose();
2873
- }
2874
- };
2875
- }
2876
- const structuredObserveOptions = {
2877
- actor: options.actor,
2878
- structured: true,
2879
- ...options.timeline !== false ? { timeline: true } : {},
2880
- ...options.causal ? { causal: true } : {},
2881
- ...options.derived ? { derived: true } : {}
2882
2944
  };
2883
- const result = options.path != null ? this.observe(options.path, structuredObserveOptions) : this.observe(structuredObserveOptions);
2884
- let cursor = 0;
2885
- const flushNewEvents = () => {
2886
- const nextEvents = result.events.slice(cursor);
2887
- cursor = result.events.length;
2888
- for (const event of nextEvents) {
2889
- if (!shouldLog(event.type)) continue;
2890
- logger(renderEvent(event), event);
2891
- }
2945
+ const origPush = result.events.push;
2946
+ result.events.push = function(...items) {
2947
+ const ret = origPush.apply(this, items);
2948
+ flush();
2949
+ return ret;
2892
2950
  };
2893
- const stream = options.path != null ? this.observe(options.path, { actor: options.actor, structured: false }) : this.observe({ actor: options.actor, structured: false });
2894
- const stop = options.path != null ? stream.subscribe((messages) => {
2895
- if (messages.length > 0) {
2896
- flushNewEvents();
2897
- }
2898
- }) : stream.subscribe((_path, messages) => {
2899
- if (messages.length > 0) {
2900
- flushNewEvents();
2901
- }
2902
- });
2903
- return {
2904
- result,
2905
- dispose() {
2906
- stop();
2907
- flushNewEvents();
2908
- result.dispose();
2909
- }
2951
+ const origDispose = result.dispose.bind(result);
2952
+ result.dispose = () => {
2953
+ origDispose();
2954
+ flush();
2910
2955
  };
2911
2956
  }
2912
2957
  /**
@@ -3301,33 +3346,21 @@ var Graph = class _Graph {
3301
3346
  // ——————————————————————————————————————————————————————————————
3302
3347
  /**
3303
3348
  * When `false`, structured observation options (`causal`, `timeline`),
3304
- * `annotate()`, and `traceLog()` are no-ops. Raw `observe()` always works.
3349
+ * and `trace()` writes are no-ops. Raw `observe()` always works.
3305
3350
  *
3306
3351
  * Default: `true` outside production (`process.env.NODE_ENV !== "production"`).
3307
3352
  */
3308
3353
  static inspectorEnabled = !(typeof process !== "undefined" && process.env?.NODE_ENV === "production");
3309
3354
  _annotations = /* @__PURE__ */ new Map();
3310
3355
  _traceRing = new RingBuffer(1e3);
3311
- /**
3312
- * Attaches a reasoning annotation to a node — captures *why* an AI agent set a value.
3313
- *
3314
- * No-op when {@link Graph.inspectorEnabled} is `false`.
3315
- *
3316
- * @param path - Qualified node path.
3317
- * @param reason - Free-text note stored in the trace ring buffer.
3318
- */
3319
- annotate(path, reason) {
3320
- if (!_Graph.inspectorEnabled) return;
3321
- this.resolve(path);
3322
- this._annotations.set(path, reason);
3323
- this._traceRing.push({ path, reason, timestamp_ns: monotonicNs() });
3324
- }
3325
- /**
3326
- * Returns a chronological log of all reasoning annotations (ring buffer).
3327
- *
3328
- * @returns `[]` when {@link Graph.inspectorEnabled} is `false`.
3329
- */
3330
- traceLog() {
3356
+ trace(path, reason) {
3357
+ if (path != null && reason != null) {
3358
+ if (!_Graph.inspectorEnabled) return;
3359
+ this.resolve(path);
3360
+ this._annotations.set(path, reason);
3361
+ this._traceRing.push({ path, reason, timestamp_ns: monotonicNs() });
3362
+ return;
3363
+ }
3331
3364
  if (!_Graph.inspectorEnabled) return [];
3332
3365
  return this._traceRing.toArray();
3333
3366
  }