@logixjs/core 0.0.1
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/dist/Action-BkRHy2vg.d.cts +10 -0
- package/dist/Action-mqVvtEHt.d.ts +10 -0
- package/dist/Action.cjs +57 -0
- package/dist/Action.cjs.map +1 -0
- package/dist/Action.d.cts +2 -0
- package/dist/Action.d.ts +2 -0
- package/dist/Action.js +9 -0
- package/dist/Action.js.map +1 -0
- package/dist/Actions-AsQ07yTP.d.cts +22 -0
- package/dist/Actions-AsQ07yTP.d.ts +22 -0
- package/dist/Actions.cjs +19 -0
- package/dist/Actions.cjs.map +1 -0
- package/dist/Actions.d.cts +2 -0
- package/dist/Actions.d.ts +2 -0
- package/dist/Actions.js +2 -0
- package/dist/Actions.js.map +1 -0
- package/dist/Bound-BN1DQ_lM.d.ts +23 -0
- package/dist/Bound-BPIfH9SS.d.cts +23 -0
- package/dist/Bound.cjs +1532 -0
- package/dist/Bound.cjs.map +1 -0
- package/dist/Bound.d.cts +7 -0
- package/dist/Bound.d.ts +7 -0
- package/dist/Bound.js +25 -0
- package/dist/Bound.js.map +1 -0
- package/dist/Debug-B5q5Bkzx.d.ts +320 -0
- package/dist/Debug-Bq8Sqjcr.d.cts +320 -0
- package/dist/Debug.cjs +1821 -0
- package/dist/Debug.cjs.map +1 -0
- package/dist/Debug.d.cts +13 -0
- package/dist/Debug.d.ts +13 -0
- package/dist/Debug.js +76 -0
- package/dist/Debug.js.map +1 -0
- package/dist/EffectOp.cjs +169 -0
- package/dist/EffectOp.cjs.map +1 -0
- package/dist/EffectOp.d.cts +118 -0
- package/dist/EffectOp.d.ts +118 -0
- package/dist/EffectOp.js +28 -0
- package/dist/EffectOp.js.map +1 -0
- package/dist/Env-DuJ6JrU2.d.cts +10 -0
- package/dist/Env-DuJ6JrU2.d.ts +10 -0
- package/dist/Env.cjs +60 -0
- package/dist/Env.cjs.map +1 -0
- package/dist/Env.d.cts +1 -0
- package/dist/Env.d.ts +1 -0
- package/dist/Env.js +11 -0
- package/dist/Env.js.map +1 -0
- package/dist/Flow-1fZT8MpX.d.cts +152 -0
- package/dist/Flow-BhpjE22E.d.ts +152 -0
- package/dist/Flow.cjs +504 -0
- package/dist/Flow.cjs.map +1 -0
- package/dist/Flow.d.cts +8 -0
- package/dist/Flow.d.ts +8 -0
- package/dist/Flow.js +15 -0
- package/dist/Flow.js.map +1 -0
- package/dist/Handle-D8D1zPb_.d.cts +30 -0
- package/dist/Handle-D_cLW1Z3.d.ts +30 -0
- package/dist/Handle.cjs +42 -0
- package/dist/Handle.cjs.map +1 -0
- package/dist/Handle.d.cts +7 -0
- package/dist/Handle.d.ts +7 -0
- package/dist/Handle.js +10 -0
- package/dist/Handle.js.map +1 -0
- package/dist/Kernel-8kC-jOda.d.cts +171 -0
- package/dist/Kernel-CnGE1Fyk.d.ts +171 -0
- package/dist/Kernel.cjs +284 -0
- package/dist/Kernel.cjs.map +1 -0
- package/dist/Kernel.d.cts +14 -0
- package/dist/Kernel.d.ts +14 -0
- package/dist/Kernel.js +36 -0
- package/dist/Kernel.js.map +1 -0
- package/dist/Link-Db7975nU.d.ts +45 -0
- package/dist/Link-fX8x1eCK.d.cts +45 -0
- package/dist/Link.cjs +542 -0
- package/dist/Link.cjs.map +1 -0
- package/dist/Link.d.cts +7 -0
- package/dist/Link.d.ts +7 -0
- package/dist/Link.js +35 -0
- package/dist/Link.js.map +1 -0
- package/dist/Logic-BRjEMr-W.d.ts +38 -0
- package/dist/Logic-DRh4sDZj.d.cts +38 -0
- package/dist/Logic.cjs +37 -0
- package/dist/Logic.cjs.map +1 -0
- package/dist/Logic.d.cts +7 -0
- package/dist/Logic.d.ts +7 -0
- package/dist/Logic.js +10 -0
- package/dist/Logic.js.map +1 -0
- package/dist/MatchBuilder-0QOc-nlU.d.ts +14 -0
- package/dist/MatchBuilder-CJk5oCkR.d.cts +14 -0
- package/dist/MatchBuilder.cjs +85 -0
- package/dist/MatchBuilder.cjs.map +1 -0
- package/dist/MatchBuilder.d.cts +8 -0
- package/dist/MatchBuilder.d.ts +8 -0
- package/dist/MatchBuilder.js +11 -0
- package/dist/MatchBuilder.js.map +1 -0
- package/dist/Middleware.cjs +411 -0
- package/dist/Middleware.cjs.map +1 -0
- package/dist/Middleware.d.cts +88 -0
- package/dist/Middleware.d.ts +88 -0
- package/dist/Middleware.js +27 -0
- package/dist/Middleware.js.map +1 -0
- package/dist/Module-B_0xRDMR.d.cts +203 -0
- package/dist/Module-DnzluX2J.d.ts +203 -0
- package/dist/Module.cjs +13512 -0
- package/dist/Module.cjs.map +1 -0
- package/dist/Module.d.cts +8 -0
- package/dist/Module.d.ts +8 -0
- package/dist/Module.js +53 -0
- package/dist/Module.js.map +1 -0
- package/dist/ModuleTag-C8FHY_sY.d.ts +93 -0
- package/dist/ModuleTag-EGbgBMpZ.d.cts +93 -0
- package/dist/ModuleTag.cjs +12231 -0
- package/dist/ModuleTag.cjs.map +1 -0
- package/dist/ModuleTag.d.cts +8 -0
- package/dist/ModuleTag.d.ts +8 -0
- package/dist/ModuleTag.js +39 -0
- package/dist/ModuleTag.js.map +1 -0
- package/dist/Observability-COqEvp2C.d.cts +713 -0
- package/dist/Observability-cY4kLn0S.d.ts +713 -0
- package/dist/Observability.cjs +5865 -0
- package/dist/Observability.cjs.map +1 -0
- package/dist/Observability.d.cts +9 -0
- package/dist/Observability.d.ts +9 -0
- package/dist/Observability.js +41 -0
- package/dist/Observability.js.map +1 -0
- package/dist/Platform-C49Pv956.d.cts +21 -0
- package/dist/Platform-C49Pv956.d.ts +21 -0
- package/dist/Platform-CHX8o-U4.d.ts +51 -0
- package/dist/Platform-CVlv0xLQ.d.cts +51 -0
- package/dist/Platform.cjs +58 -0
- package/dist/Platform.cjs.map +1 -0
- package/dist/Platform.d.cts +4 -0
- package/dist/Platform.d.ts +4 -0
- package/dist/Platform.js +15 -0
- package/dist/Platform.js.map +1 -0
- package/dist/Process-CM9xbMdP.d.ts +92 -0
- package/dist/Process-mL8fHDSB.d.cts +92 -0
- package/dist/Process.cjs +575 -0
- package/dist/Process.cjs.map +1 -0
- package/dist/Process.d.cts +8 -0
- package/dist/Process.d.ts +8 -0
- package/dist/Process.js +42 -0
- package/dist/Process.js.map +1 -0
- package/dist/ReadQuery-BlMwhe-F.d.ts +30 -0
- package/dist/ReadQuery-CL5XlXts.d.cts +30 -0
- package/dist/ReadQuery-SinbStGF.d.cts +38 -0
- package/dist/ReadQuery-SinbStGF.d.ts +38 -0
- package/dist/ReadQuery.cjs +377 -0
- package/dist/ReadQuery.cjs.map +1 -0
- package/dist/ReadQuery.d.cts +2 -0
- package/dist/ReadQuery.d.ts +2 -0
- package/dist/ReadQuery.js +14 -0
- package/dist/ReadQuery.js.map +1 -0
- package/dist/Reflection-CQnKwPXj.d.ts +182 -0
- package/dist/Reflection-Kabo1mlU.d.cts +182 -0
- package/dist/Reflection.cjs +2954 -0
- package/dist/Reflection.cjs.map +1 -0
- package/dist/Reflection.d.cts +17 -0
- package/dist/Reflection.d.ts +17 -0
- package/dist/Reflection.js +40 -0
- package/dist/Reflection.js.map +1 -0
- package/dist/Resource-Dy1xD_DG.d.cts +75 -0
- package/dist/Resource-Dy1xD_DG.d.ts +75 -0
- package/dist/Resource.cjs +166 -0
- package/dist/Resource.cjs.map +1 -0
- package/dist/Resource.d.cts +3 -0
- package/dist/Resource.d.ts +3 -0
- package/dist/Resource.js +21 -0
- package/dist/Resource.js.map +1 -0
- package/dist/Root-7ADUMk4t.d.cts +29 -0
- package/dist/Root-7ADUMk4t.d.ts +29 -0
- package/dist/Root.cjs +125 -0
- package/dist/Root.cjs.map +1 -0
- package/dist/Root.d.cts +4 -0
- package/dist/Root.d.ts +4 -0
- package/dist/Root.js +12 -0
- package/dist/Root.js.map +1 -0
- package/dist/Runtime-B-aL-f29.d.cts +274 -0
- package/dist/Runtime-CtyzZG4i.d.ts +274 -0
- package/dist/Runtime.cjs +5740 -0
- package/dist/Runtime.cjs.map +1 -0
- package/dist/Runtime.d.cts +19 -0
- package/dist/Runtime.d.ts +19 -0
- package/dist/Runtime.js +62 -0
- package/dist/Runtime.js.map +1 -0
- package/dist/ScopeRegistry-D1owDNSm.d.cts +61 -0
- package/dist/ScopeRegistry-D1owDNSm.d.ts +61 -0
- package/dist/ScopeRegistry.cjs +152 -0
- package/dist/ScopeRegistry.cjs.map +1 -0
- package/dist/ScopeRegistry.d.cts +2 -0
- package/dist/ScopeRegistry.d.ts +2 -0
- package/dist/ScopeRegistry.js +16 -0
- package/dist/ScopeRegistry.js.map +1 -0
- package/dist/State-CU50R26M.d.cts +19 -0
- package/dist/State-CU50R26M.d.ts +19 -0
- package/dist/State.cjs +19 -0
- package/dist/State.cjs.map +1 -0
- package/dist/State.d.cts +2 -0
- package/dist/State.d.ts +2 -0
- package/dist/State.js +2 -0
- package/dist/State.js.map +1 -0
- package/dist/StateTrait-BGsZghTz.d.ts +122 -0
- package/dist/StateTrait-OWhbj12c.d.cts +122 -0
- package/dist/StateTrait.cjs +2737 -0
- package/dist/StateTrait.cjs.map +1 -0
- package/dist/StateTrait.d.cts +9 -0
- package/dist/StateTrait.d.ts +9 -0
- package/dist/StateTrait.js +39 -0
- package/dist/StateTrait.js.map +1 -0
- package/dist/TraitLifecycle-CwV5WPFX.d.cts +88 -0
- package/dist/TraitLifecycle-LdIWmKlg.d.ts +88 -0
- package/dist/TraitLifecycle.cjs +581 -0
- package/dist/TraitLifecycle.cjs.map +1 -0
- package/dist/TraitLifecycle.d.cts +8 -0
- package/dist/TraitLifecycle.d.ts +8 -0
- package/dist/TraitLifecycle.js +24 -0
- package/dist/TraitLifecycle.js.map +1 -0
- package/dist/action-DiMDD_0v.d.cts +35 -0
- package/dist/action-DiMDD_0v.d.ts +35 -0
- package/dist/chunk-24VULZ7A.js +76 -0
- package/dist/chunk-24VULZ7A.js.map +1 -0
- package/dist/chunk-3IYZ5IGG.js +17 -0
- package/dist/chunk-3IYZ5IGG.js.map +1 -0
- package/dist/chunk-3QMIVH35.js +43 -0
- package/dist/chunk-3QMIVH35.js.map +1 -0
- package/dist/chunk-3RMKLXHX.js +83 -0
- package/dist/chunk-3RMKLXHX.js.map +1 -0
- package/dist/chunk-3TMODYZV.js +111 -0
- package/dist/chunk-3TMODYZV.js.map +1 -0
- package/dist/chunk-3VG5TWQR.js +27 -0
- package/dist/chunk-3VG5TWQR.js.map +1 -0
- package/dist/chunk-4CQAV7YB.js +37 -0
- package/dist/chunk-4CQAV7YB.js.map +1 -0
- package/dist/chunk-4SO6JMZL.js +7 -0
- package/dist/chunk-4SO6JMZL.js.map +1 -0
- package/dist/chunk-66ALHVEX.js +40 -0
- package/dist/chunk-66ALHVEX.js.map +1 -0
- package/dist/chunk-76WT3HOR.js +397 -0
- package/dist/chunk-76WT3HOR.js.map +1 -0
- package/dist/chunk-ANLBCBDC.js +285 -0
- package/dist/chunk-ANLBCBDC.js.map +1 -0
- package/dist/chunk-AUIR5O6W.js +75 -0
- package/dist/chunk-AUIR5O6W.js.map +1 -0
- package/dist/chunk-BABLDP24.js +445 -0
- package/dist/chunk-BABLDP24.js.map +1 -0
- package/dist/chunk-BE3HW4FY.js +1099 -0
- package/dist/chunk-BE3HW4FY.js.map +1 -0
- package/dist/chunk-BZ2SHDN2.js +54 -0
- package/dist/chunk-BZ2SHDN2.js.map +1 -0
- package/dist/chunk-CW6T36TN.js +393 -0
- package/dist/chunk-CW6T36TN.js.map +1 -0
- package/dist/chunk-DFNM3WX2.js +632 -0
- package/dist/chunk-DFNM3WX2.js.map +1 -0
- package/dist/chunk-DMBALCE2.js +1034 -0
- package/dist/chunk-DMBALCE2.js.map +1 -0
- package/dist/chunk-EGK3KN7B.js +406 -0
- package/dist/chunk-EGK3KN7B.js.map +1 -0
- package/dist/chunk-EY4NZKDR.js +19 -0
- package/dist/chunk-EY4NZKDR.js.map +1 -0
- package/dist/chunk-G5ZBFPNU.js +23 -0
- package/dist/chunk-G5ZBFPNU.js.map +1 -0
- package/dist/chunk-GMPEOUP2.js +31 -0
- package/dist/chunk-GMPEOUP2.js.map +1 -0
- package/dist/chunk-IHVBV5C2.js +279 -0
- package/dist/chunk-IHVBV5C2.js.map +1 -0
- package/dist/chunk-IPF7E66P.js +23 -0
- package/dist/chunk-IPF7E66P.js.map +1 -0
- package/dist/chunk-JCXGZRMU.js +204 -0
- package/dist/chunk-JCXGZRMU.js.map +1 -0
- package/dist/chunk-JGIWG6SR.js +6359 -0
- package/dist/chunk-JGIWG6SR.js.map +1 -0
- package/dist/chunk-JWOYLO27.js +241 -0
- package/dist/chunk-JWOYLO27.js.map +1 -0
- package/dist/chunk-KIXAU3GM.js +137 -0
- package/dist/chunk-KIXAU3GM.js.map +1 -0
- package/dist/chunk-KL5ACTCT.js +8 -0
- package/dist/chunk-KL5ACTCT.js.map +1 -0
- package/dist/chunk-KP7MUZNX.js +83 -0
- package/dist/chunk-KP7MUZNX.js.map +1 -0
- package/dist/chunk-LEU6UA5J.js +1 -0
- package/dist/chunk-LEU6UA5J.js.map +1 -0
- package/dist/chunk-M2RGJPXX.js +35 -0
- package/dist/chunk-M2RGJPXX.js.map +1 -0
- package/dist/chunk-M3BFQ7HK.js +13 -0
- package/dist/chunk-M3BFQ7HK.js.map +1 -0
- package/dist/chunk-M3WTHJHJ.js +1051 -0
- package/dist/chunk-M3WTHJHJ.js.map +1 -0
- package/dist/chunk-M7IYCTJV.js +79 -0
- package/dist/chunk-M7IYCTJV.js.map +1 -0
- package/dist/chunk-NBD3KUOZ.js +838 -0
- package/dist/chunk-NBD3KUOZ.js.map +1 -0
- package/dist/chunk-NQZ2OSGR.js +151 -0
- package/dist/chunk-NQZ2OSGR.js.map +1 -0
- package/dist/chunk-NZJKFF45.js +106 -0
- package/dist/chunk-NZJKFF45.js.map +1 -0
- package/dist/chunk-OFADUJWJ.js +175 -0
- package/dist/chunk-OFADUJWJ.js.map +1 -0
- package/dist/chunk-OGWBVHB3.js +461 -0
- package/dist/chunk-OGWBVHB3.js.map +1 -0
- package/dist/chunk-PAYXCY6A.js +1696 -0
- package/dist/chunk-PAYXCY6A.js.map +1 -0
- package/dist/chunk-PYOE4VSI.js +1924 -0
- package/dist/chunk-PYOE4VSI.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-QCHIQWAJ.js +21 -0
- package/dist/chunk-QCHIQWAJ.js.map +1 -0
- package/dist/chunk-QMM6O4CD.js +71 -0
- package/dist/chunk-QMM6O4CD.js.map +1 -0
- package/dist/chunk-RNFE3ML2.js +22 -0
- package/dist/chunk-RNFE3ML2.js.map +1 -0
- package/dist/chunk-TAAPQVZN.js +23 -0
- package/dist/chunk-TAAPQVZN.js.map +1 -0
- package/dist/chunk-THATMZXD.js +21 -0
- package/dist/chunk-THATMZXD.js.map +1 -0
- package/dist/chunk-TKZ7MEIA.js +27 -0
- package/dist/chunk-TKZ7MEIA.js.map +1 -0
- package/dist/chunk-TQOBJYDP.js +7 -0
- package/dist/chunk-TQOBJYDP.js.map +1 -0
- package/dist/chunk-VZB726PE.js +93 -0
- package/dist/chunk-VZB726PE.js.map +1 -0
- package/dist/chunk-W3TEWHLO.js +568 -0
- package/dist/chunk-W3TEWHLO.js.map +1 -0
- package/dist/chunk-YS3AZQ2G.js +52 -0
- package/dist/chunk-YS3AZQ2G.js.map +1 -0
- package/dist/chunk-ZDTRWK5F.js +40 -0
- package/dist/chunk-ZDTRWK5F.js.map +1 -0
- package/dist/chunk-ZFLHVFUC.js +192 -0
- package/dist/chunk-ZFLHVFUC.js.map +1 -0
- package/dist/chunk-ZFY7U2FR.js +133 -0
- package/dist/chunk-ZFY7U2FR.js.map +1 -0
- package/dist/chunk-ZGDVUPTM.js +270 -0
- package/dist/chunk-ZGDVUPTM.js.map +1 -0
- package/dist/index.cjs +19700 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +195 -0
- package/dist/index.d.ts +195 -0
- package/dist/index.js +286 -0
- package/dist/index.js.map +1 -0
- package/dist/ir-BMP7yxJJ.d.cts +39 -0
- package/dist/ir-DUOz6H-5.d.ts +39 -0
- package/dist/module-B8CBqIZ_.d.cts +1191 -0
- package/dist/module-k7m3txak.d.ts +1191 -0
- package/dist/protocol-g_1897M2.d.cts +127 -0
- package/dist/protocol-g_1897M2.d.ts +127 -0
- package/package.json +162 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/runtime/core/process/meta.ts","../src/internal/observability/evidenceCollector.ts","../src/internal/runtime/core/process/ProcessRuntime.ts","../src/internal/runtime/core/process/identity.ts","../src/internal/runtime/core/process/concurrency.ts","../src/internal/runtime/core/process/events.ts","../src/internal/runtime/core/process/selectorSchema.ts","../src/internal/runtime/core/process/supervision.ts"],"sourcesContent":["import type { Effect } from 'effect'\nimport type { ProcessDefinition, ProcessScope } from './protocol.js'\n\nexport type ProcessMeta = {\n readonly definition: ProcessDefinition\n /**\n * installationScope: part of Static IR.\n * - For instance-scope / subtree-scope scenarios, the runtime overwrites this field during installation with a derived effect.\n * - This field is for export/diagnostics only; it does not participate in stable identity derivation (see identity.ts).\n */\n readonly installationScope?: ProcessScope\n readonly kind?: 'process' | 'link'\n}\n\nexport const PROCESS_META = Symbol.for('@logixjs/core/processMeta')\n\nexport type ProcessEffect<E = never, R = never> = Effect.Effect<void, E, R> & {\n readonly [PROCESS_META]?: ProcessMeta\n}\n\nconst defineHidden = (target: object, key: symbol, value: unknown): void => {\n Object.defineProperty(target, key, {\n value,\n enumerable: false,\n configurable: true,\n writable: false,\n })\n}\n\nexport const getMeta = (effect: Effect.Effect<void, any, any>): ProcessMeta | undefined =>\n (effect as ProcessEffect)[PROCESS_META]\n\nexport const getDefinition = (effect: Effect.Effect<void, any, any>): ProcessDefinition | undefined =>\n getMeta(effect)?.definition\n\nexport const attachMeta = <E, R>(effect: Effect.Effect<void, E, R>, meta: ProcessMeta): ProcessEffect<E, R> => {\n defineHidden(effect as any, PROCESS_META, meta)\n return effect as ProcessEffect<E, R>\n}\n","import { Context, Effect, FiberRef, Layer } from 'effect'\nimport type { JsonValue } from './jsonValue.js'\nimport { projectJsonValue } from './jsonValue.js'\nimport type { EvidencePackage } from './evidence.js'\nimport type { RunSession } from './runSession.js'\nimport { makeEvidenceSink } from './runSession.js'\nimport {\n currentDiagnosticsLevel,\n toRuntimeDebugEventRef,\n type Event as DebugEvent,\n type Sink as DebugSink,\n} from '../runtime/core/DebugSink.js'\n\nexport interface EvidenceCollector {\n readonly session: RunSession\n readonly debugSink: DebugSink\n readonly registerConvergeStaticIr: (staticIr: unknown) => void\n readonly setKernelImplementationRef: (ref: unknown) => void\n readonly setRuntimeServicesEvidence: (evidence: unknown) => void\n readonly exportEvidencePackage: (options?: { readonly maxEvents?: number }) => EvidencePackage\n readonly clear: () => void\n}\n\nclass EvidenceCollectorTagImpl extends Context.Tag('@logixjs/core/EvidenceCollector')<\n EvidenceCollectorTagImpl,\n EvidenceCollector\n>() {}\n\nexport const EvidenceCollectorTag = EvidenceCollectorTagImpl\n\nexport const evidenceCollectorLayer = (\n collector: EvidenceCollector,\n): Layer.Layer<EvidenceCollectorTagImpl, never, never> =>\n Layer.succeed(EvidenceCollectorTag, collector) as Layer.Layer<EvidenceCollectorTagImpl, never, never>\n\nconst isRecord = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\nexport const makeEvidenceCollector = (session: RunSession): EvidenceCollector => {\n const sink = makeEvidenceSink(session)\n\n const convergeStaticIrByDigest = new Map<string, JsonValue>()\n let kernelImplementationRef: JsonValue | undefined\n let runtimeServicesEvidence: JsonValue | undefined\n\n const exportBudget = {\n dropped: 0,\n oversized: 0,\n nonSerializable: 0,\n }\n\n const debugSink: DebugSink = {\n record: (event: DebugEvent) =>\n Effect.gen(function* () {\n const level = yield* FiberRef.get(currentDiagnosticsLevel)\n const instanceIdRaw = (event as any).instanceId\n const instanceId = typeof instanceIdRaw === 'string' && instanceIdRaw.length > 0 ? instanceIdRaw : 'unknown'\n const eventSeq = level === 'off' ? undefined : session.local.nextSeq('eventSeq', instanceId)\n const ref = toRuntimeDebugEventRef(event, {\n diagnosticsLevel: level,\n eventSeq,\n onMetaProjection: ({ stats }) => {\n exportBudget.dropped += stats.dropped\n exportBudget.oversized += stats.oversized\n },\n })\n if (!ref) return\n\n const projected = projectJsonValue(ref)\n exportBudget.dropped += projected.stats.dropped\n exportBudget.oversized += projected.stats.oversized\n exportBudget.nonSerializable += projected.stats.nonSerializable\n\n sink.record('debug:event', projected.value, {\n timestamp: ref.timestamp,\n })\n }),\n }\n\n const registerConvergeStaticIr = (staticIr: unknown): void => {\n if (!isRecord(staticIr)) return\n const digest = staticIr.staticIrDigest\n if (typeof digest !== 'string' || digest.length === 0) return\n const projected = projectJsonValue(staticIr)\n exportBudget.dropped += projected.stats.dropped\n exportBudget.oversized += projected.stats.oversized\n exportBudget.nonSerializable += projected.stats.nonSerializable\n convergeStaticIrByDigest.set(digest, projected.value)\n }\n\n const setKernelImplementationRef = (ref: unknown): void => {\n const projected = projectJsonValue(ref)\n exportBudget.dropped += projected.stats.dropped\n exportBudget.oversized += projected.stats.oversized\n exportBudget.nonSerializable += projected.stats.nonSerializable\n kernelImplementationRef = projected.value\n }\n\n const setRuntimeServicesEvidence = (evidence: unknown): void => {\n const projected = projectJsonValue(evidence)\n exportBudget.dropped += projected.stats.dropped\n exportBudget.oversized += projected.stats.oversized\n exportBudget.nonSerializable += projected.stats.nonSerializable\n runtimeServicesEvidence = projected.value\n }\n\n const exportEvidencePackage = (options?: { readonly maxEvents?: number }): EvidencePackage => {\n const convergeSummary =\n convergeStaticIrByDigest.size > 0\n ? ({\n staticIrByDigest: Object.fromEntries(convergeStaticIrByDigest),\n } as unknown as JsonValue)\n : undefined\n\n const runtimeSummary =\n kernelImplementationRef != null || runtimeServicesEvidence != null\n ? ({\n ...(kernelImplementationRef != null ? { kernelImplementationRef } : {}),\n ...(runtimeServicesEvidence != null ? { services: runtimeServicesEvidence } : {}),\n } as unknown as JsonValue)\n : undefined\n\n const summary =\n convergeSummary != null || runtimeSummary != null\n ? ({\n ...(convergeSummary != null ? { converge: convergeSummary } : {}),\n ...(runtimeSummary != null ? { runtime: runtimeSummary } : {}),\n } as unknown as JsonValue)\n : undefined\n\n return sink.export({\n maxEvents: options?.maxEvents,\n summary,\n })\n }\n\n const clear = (): void => {\n sink.clear()\n convergeStaticIrByDigest.clear()\n kernelImplementationRef = undefined\n runtimeServicesEvidence = undefined\n exportBudget.dropped = 0\n exportBudget.oversized = 0\n exportBudget.nonSerializable = 0\n }\n\n return {\n session,\n debugSink,\n registerConvergeStaticIr,\n setKernelImplementationRef,\n setRuntimeServicesEvidence,\n exportEvidencePackage,\n clear,\n }\n}\n","import {\n Cause,\n Context,\n Deferred,\n Duration,\n Effect,\n Fiber,\n FiberRef,\n Layer,\n Option,\n PubSub,\n Queue,\n Ref,\n Scope,\n Stream,\n} from 'effect'\nimport * as Debug from '../DebugSink.js'\nimport { toSerializableErrorSummary } from '../errorSummary.js'\nimport * as TaskRunner from '../TaskRunner.js'\nimport { isDevEnv } from '../env.js'\nimport { getRuntimeInternals } from '../runtimeInternalsAccessor.js'\nimport * as Identity from './identity.js'\nimport * as ProcessConcurrency from './concurrency.js'\nimport * as ProcessEvents from './events.js'\nimport * as Meta from './meta.js'\nimport { makeSchemaSelector, resolveSchemaAst } from './selectorSchema.js'\nimport type {\n ProcessControlRequest,\n ProcessDefinition,\n ProcessEvent,\n ProcessInstallation,\n ProcessInstanceIdentity,\n ProcessInstanceStatus,\n ProcessPlatformEvent,\n ProcessScope,\n ProcessTrigger,\n ProcessTriggerSpec,\n SerializableErrorSummary,\n} from './protocol.js'\nimport * as Supervision from './supervision.js'\n\ntype InstallationKey = string\ntype ProcessInstanceId = string\n\ntype ProcessInstallMode = 'switch' | 'exhaust'\n\ntype InstallationState = {\n readonly identity: {\n readonly processId: string\n readonly scope: ProcessScope\n }\n readonly scopeKey: string\n readonly definition: ProcessDefinition\n env: Context.Context<any>\n forkScope: Scope.Scope\n readonly process: Effect.Effect<void, any, unknown>\n readonly kind: Meta.ProcessMeta['kind']\n enabled: boolean\n installedAt?: string\n nextRunSeq: number\n supervision: Supervision.SupervisionState\n currentInstanceId?: ProcessInstanceId\n pendingStart?: { readonly forkScope: Scope.Scope }\n}\n\ntype InstanceState = {\n readonly installationKey: InstallationKey\n readonly processInstanceId: ProcessInstanceId\n readonly identity: ProcessInstanceIdentity\n readonly processId: string\n readonly scope: ProcessScope\n readonly forkScope: Scope.Scope\n readonly platformTriggersQueue: Queue.Queue<ProcessTrigger>\n status: ProcessInstanceStatus\n nextEventSeq: number\n nextTriggerSeq: number\n fiber?: Fiber.RuntimeFiber<unknown, unknown>\n}\n\nexport interface ProcessRuntime {\n readonly install: <E, R>(\n process: Effect.Effect<void, E, R>,\n options: {\n readonly scope: ProcessScope\n readonly enabled?: boolean\n readonly installedAt?: string\n readonly mode?: ProcessInstallMode\n },\n ) => Effect.Effect<ProcessInstallation | undefined, never, R>\n readonly listInstallations: (filter?: {\n readonly scopeType?: ProcessScope['type']\n readonly scopeKey?: string\n }) => Effect.Effect<ReadonlyArray<ProcessInstallation>>\n readonly getInstanceStatus: (processInstanceId: string) => Effect.Effect<ProcessInstanceStatus | undefined>\n readonly controlInstance: (processInstanceId: string, request: ProcessControlRequest) => Effect.Effect<void>\n readonly deliverPlatformEvent: (event: ProcessPlatformEvent) => Effect.Effect<void>\n readonly events: Stream.Stream<ProcessEvent>\n readonly getEventsSnapshot: () => Effect.Effect<ReadonlyArray<ProcessEvent>>\n}\n\nexport class ProcessRuntimeTag extends Context.Tag('@logixjs/core/ProcessRuntime')<ProcessRuntimeTag, ProcessRuntime>() {}\n\nconst currentProcessTrigger = FiberRef.unsafeMake<ProcessTrigger | undefined>(undefined)\nconst currentProcessEventBudget = FiberRef.unsafeMake<Ref.Ref<ProcessEvents.ProcessRunEventBudgetState> | undefined>(\n undefined,\n)\nconst RUNTIME_BOOT_EVENT = 'runtime:boot' as const\n\nconst deriveDebugModuleId = (processId: string): string => `process:${processId}`\n\ntype NonPlatformTriggerSpec = Exclude<ProcessTriggerSpec, { readonly kind: 'platformEvent' }>\n\nconst deriveTxnAnchor = (event: ProcessEvent): { readonly txnSeq?: number; readonly txnId?: string } => {\n const trigger: any = event.trigger\n if (!trigger) return {}\n if (\n (trigger.kind === 'moduleAction' || trigger.kind === 'moduleStateChange') &&\n typeof trigger.instanceId === 'string' &&\n typeof trigger.txnSeq === 'number' &&\n Number.isFinite(trigger.txnSeq) &&\n trigger.txnSeq >= 1\n ) {\n const txnSeq = Math.floor(trigger.txnSeq)\n return {\n txnSeq,\n txnId: `${trigger.instanceId}::t${txnSeq}`,\n }\n }\n return {}\n}\n\nconst shouldNoopDueToSyncTxn = (scope: ProcessScope, kind: string): Effect.Effect<boolean> => {\n const moduleId = scope.type === 'moduleInstance' ? scope.moduleId : undefined\n const instanceId = scope.type === 'moduleInstance' ? scope.instanceId : undefined\n return TaskRunner.shouldNoopInSyncTransactionFiber({\n moduleId,\n instanceId,\n code: 'process::invalid_usage',\n severity: 'error',\n message:\n 'ProcessRuntime scheduling is not allowed inside a synchronous StateTransaction body (it may deadlock the txnQueue).',\n hint:\n \"Trigger/schedule Process outside the transaction window (e.g. in a watcher's run section or a separate fiber); \" +\n 'do not trigger Process directly inside a reducer / synchronous transaction body.',\n kind,\n })\n}\n\nconst resolveRuntimeStateSchemaAst = (runtime: unknown): ReturnType<typeof resolveSchemaAst> => {\n try {\n const internals = getRuntimeInternals(runtime as any)\n return resolveSchemaAst(internals.stateSchema)\n } catch {\n return undefined\n }\n}\n\nconst withModuleHint = (error: Error, moduleId: string): Error => {\n const hint = (error as any).hint\n if (typeof hint === 'string' && hint.length > 0) {\n if (!hint.includes('moduleId=')) {\n ;(error as any).hint = `moduleId=${moduleId}\\n${hint}`\n }\n return error\n }\n ;(error as any).hint = `moduleId=${moduleId}`\n return error\n}\n\nconst actionIdFromUnknown = (action: unknown): string | undefined => {\n if (!action || typeof action !== 'object') return undefined\n const anyAction = action as any\n if (typeof anyAction._tag === 'string' && anyAction._tag.length > 0) return anyAction._tag\n if (typeof anyAction.type === 'string' && anyAction.type.length > 0) return anyAction.type\n return undefined\n}\n\nexport const make = (options?: {\n readonly maxEventHistory?: number\n}): Effect.Effect<ProcessRuntime, never, Scope.Scope> =>\n Effect.gen(function* () {\n const runtimeScope = yield* Effect.scope\n const maxEventHistory =\n typeof options?.maxEventHistory === 'number' &&\n Number.isFinite(options.maxEventHistory) &&\n options.maxEventHistory >= 0\n ? Math.floor(options.maxEventHistory)\n : 500\n\n const installations = new Map<InstallationKey, InstallationState>()\n const instances = new Map<ProcessInstanceId, InstanceState>()\n\n const eventsBuffer: ProcessEvent[] = []\n const eventsHub = yield* PubSub.sliding<ProcessEvent>(Math.max(1, Math.min(2048, maxEventHistory)))\n\n const trimEvents = () => {\n if (maxEventHistory <= 0) {\n eventsBuffer.length = 0\n return\n }\n if (eventsBuffer.length <= maxEventHistory) return\n const excess = eventsBuffer.length - maxEventHistory\n eventsBuffer.splice(0, excess)\n }\n\n const recordDebugEvent = (event: ProcessEvent): Effect.Effect<void> =>\n Effect.gen(function* () {\n const diagnosticsLevel = yield* FiberRef.get(Debug.currentDiagnosticsLevel)\n\n // diagnostics=off: avoid entering Debug sinks (near-zero cost); error cases are exposed via diagnostic events.\n if (diagnosticsLevel === 'off') {\n return\n }\n\n const processId = event.identity.identity.processId\n const processInstanceId = Identity.processInstanceIdFromIdentity(event.identity)\n const moduleId = deriveDebugModuleId(processId)\n const { txnSeq, txnId } = deriveTxnAnchor(event)\n\n yield* Debug.record({\n type: event.type,\n moduleId,\n instanceId: processInstanceId,\n identity: event.identity,\n severity: event.severity,\n eventSeq: event.eventSeq,\n timestampMs: event.timestampMs,\n trigger: event.trigger,\n dispatch: event.dispatch,\n error: event.error,\n txnSeq,\n txnId,\n } as any)\n })\n\n const publishEvent = (event: ProcessEvent): Effect.Effect<void> =>\n Effect.gen(function* () {\n eventsBuffer.push(event)\n trimEvents()\n yield* PubSub.publish(eventsHub, event)\n yield* recordDebugEvent(event)\n })\n\n const emit = (event: ProcessEvent): Effect.Effect<void> =>\n Effect.gen(function* () {\n const budgetRef = yield* FiberRef.get(currentProcessEventBudget)\n if (budgetRef) {\n const decision = yield* Ref.modify(budgetRef, (state) => {\n const [nextDecision, nextState] = ProcessEvents.applyProcessRunEventBudget(state, event)\n return [nextDecision, nextState] as const\n })\n\n if (decision._tag === 'emit' || decision._tag === 'emitSummary') {\n yield* publishEvent(decision.event)\n }\n return\n }\n\n const enforced = ProcessEvents.enforceProcessEventMaxBytes(event)\n yield* publishEvent(enforced.event)\n })\n\n const emitErrorDiagnostic = (\n scope: ProcessScope,\n processId: string,\n code: string,\n message: string,\n hint?: string,\n ): Effect.Effect<void> => {\n if (!isDevEnv()) {\n return Effect.void\n }\n const moduleId = scope.type === 'moduleInstance' ? scope.moduleId : undefined\n const instanceId = scope.type === 'moduleInstance' ? scope.instanceId : undefined\n return Debug.record({\n type: 'diagnostic',\n moduleId,\n instanceId,\n code,\n severity: 'error',\n message,\n hint,\n actionTag: processId,\n kind: 'process_runtime',\n })\n }\n\n const resolveMissingDependencies = (installation: InstallationState): ReadonlyArray<string> => {\n const declared = installation.definition.requires ?? []\n const implicitFromTriggers: string[] = []\n for (const trigger of installation.definition.triggers) {\n if (trigger.kind === 'moduleAction' || trigger.kind === 'moduleStateChange') {\n implicitFromTriggers.push(trigger.moduleId)\n }\n }\n\n const requires = Array.from(new Set([...declared, ...implicitFromTriggers]))\n if (requires.length === 0) return []\n\n const missing: string[] = []\n for (const dep of requires) {\n if (typeof dep !== 'string' || dep.length === 0) continue\n\n // ModuleTag key convention: `@logixjs/Module/${id}`; Tag identity is derived from the key, so we can construct it on demand.\n const tag = Context.Tag(`@logixjs/Module/${dep}`)() as Context.Tag<any, any>\n const found = Context.getOption(installation.env, tag)\n if (Option.isNone(found)) {\n missing.push(dep)\n }\n }\n return missing\n }\n\n const stopInstance = (\n instance: InstanceState,\n reason: ProcessInstanceStatus['stoppedReason'],\n ): Effect.Effect<void> =>\n Effect.gen(function* () {\n if (\n instance.status.status === 'stopped' ||\n instance.status.status === 'failed' ||\n instance.status.status === 'stopping'\n ) {\n return\n }\n\n const fiber = instance.fiber\n instance.status = {\n ...instance.status,\n status: 'stopping',\n stoppedReason: reason,\n }\n\n if (fiber) {\n yield* Fiber.interrupt(fiber)\n }\n\n yield* Queue.shutdown(instance.platformTriggersQueue)\n\n instance.status = {\n ...instance.status,\n status: 'stopped',\n stoppedReason: reason,\n }\n instance.fiber = undefined\n\n const evt: ProcessEvent = {\n type: 'process:stop',\n identity: instance.identity,\n severity: 'info',\n eventSeq: instance.nextEventSeq++,\n timestampMs: Date.now(),\n }\n yield* emit(evt)\n\n const installation = installations.get(instance.installationKey)\n if (installation?.pendingStart) {\n installation.pendingStart = undefined\n yield* startInstallation(instance.installationKey)\n }\n })\n\n const startInstallation: (installationKey: InstallationKey) => Effect.Effect<void> = (installationKey) =>\n Effect.gen(function* () {\n const installation = installations.get(installationKey)\n if (!installation) return\n installation.pendingStart = undefined\n\n const noop = yield* shouldNoopDueToSyncTxn(installation.identity.scope, 'process_start_in_transaction')\n if (noop) return\n\n // Do not start again if an active instance already exists.\n const currentId = installation.currentInstanceId\n if (currentId) {\n const current = instances.get(currentId)\n if (current && (current.status.status === 'running' || current.status.status === 'starting')) {\n return\n }\n }\n\n const runSeq = installation.nextRunSeq++\n const identity: ProcessInstanceIdentity = {\n identity: installation.identity,\n runSeq,\n }\n const processInstanceId = Identity.processInstanceIdFromIdentity(identity)\n\n const platformTriggersQueue = yield* Queue.sliding<ProcessTrigger>(64)\n\n const instanceState: InstanceState = {\n installationKey,\n processInstanceId,\n identity,\n processId: installation.identity.processId,\n scope: installation.identity.scope,\n forkScope: installation.forkScope,\n platformTriggersQueue,\n status: {\n identity,\n status: 'starting',\n },\n nextEventSeq: 1,\n nextTriggerSeq: 1,\n }\n\n instances.set(processInstanceId, instanceState)\n installation.currentInstanceId = processInstanceId\n\n // When forkScope is disposed (e.g. uiSubtree unmount), ensure the instance transitions to stopped and emits a stop event.\n // - Do not rely on unstable \"whether interruption reaches catchAllCause\" behavior.\n // - Do not double-register on runtimeScope; the runtime finalizer already stops all instances.\n if (installation.forkScope !== runtimeScope) {\n yield* Scope.addFinalizer(\n installation.forkScope as Scope.CloseableScope,\n Effect.suspend(() => {\n const status = instanceState.status.status\n if (status === 'stopped' || status === 'failed' || status === 'stopping') {\n return Effect.void\n }\n return stopInstance(instanceState, 'scopeDisposed')\n }).pipe(Effect.catchAllCause(() => Effect.void)),\n )\n }\n\n // start event: indicates the instance has entered the start flow (fiber has been forked).\n yield* emit({\n type: 'process:start',\n identity,\n severity: 'info',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n })\n\n const missing = resolveMissingDependencies(installation)\n if (missing.length > 0) {\n const hint = isDevEnv()\n ? [\n 'Strict scope dependency resolution: missing required modules in the current scope.',\n `missing: ${missing.join(', ')}`,\n '',\n 'fix:',\n '- Provide the missing module implementation(s) in the same scope via imports.',\n ` Example: RootModule.implement({ imports: [${missing[0]}.implement(...).impl], processes: [...] })`,\n '- Do not rely on cross-scope fallbacks / guessing instances.',\n ].join('\\n')\n : undefined\n\n const error: SerializableErrorSummary = {\n message: `Missing dependencies in scope: ${missing.join(', ')}`,\n code: 'process::missing_dependency',\n hint,\n }\n\n instanceState.status = {\n ...instanceState.status,\n status: 'failed',\n stoppedReason: 'failed',\n lastError: error,\n }\n\n yield* emit({\n type: 'process:error',\n identity,\n severity: 'error',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n error,\n })\n\n yield* emitErrorDiagnostic(\n installation.identity.scope,\n installation.identity.processId,\n 'process::missing_dependency',\n error.message,\n hint,\n )\n return\n }\n\n const shouldRecordChainEvents = installation.definition.diagnosticsLevel !== 'off'\n\n const baseEnv = installation.env\n\n const makeWrappedEnv = (): Context.Context<any> => {\n if (!shouldRecordChainEvents) {\n return baseEnv\n }\n\n const requires = installation.definition.requires ?? []\n if (requires.length === 0) {\n return baseEnv\n }\n\n const ids = Array.from(new Set(requires))\n let nextEnv = baseEnv\n\n for (const moduleId of ids) {\n if (typeof moduleId !== 'string' || moduleId.length === 0) continue\n const tag = Context.Tag(`@logixjs/Module/${moduleId}`)() as Context.Tag<any, any>\n const found = Context.getOption(baseEnv, tag)\n if (Option.isNone(found)) continue\n const runtime = found.value as any\n\n const recordDispatch = (action: unknown) =>\n Effect.gen(function* () {\n const trigger = yield* FiberRef.get(currentProcessTrigger)\n if (!trigger) return\n\n const actionId = actionIdFromUnknown(action) ?? 'unknown'\n const dispatchModuleId = typeof runtime.moduleId === 'string' ? runtime.moduleId : moduleId\n const dispatchInstanceId = typeof runtime.instanceId === 'string' ? runtime.instanceId : 'unknown'\n\n const evt: ProcessEvent = {\n type: 'process:dispatch',\n identity,\n trigger,\n dispatch: {\n moduleId: dispatchModuleId,\n instanceId: dispatchInstanceId,\n actionId,\n },\n severity: 'info',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n }\n\n yield* emit(evt)\n })\n\n const wrapped = {\n ...runtime,\n dispatch: (action: unknown) => runtime.dispatch(action).pipe(Effect.tap(() => recordDispatch(action))),\n dispatchLowPriority: (action: unknown) =>\n runtime.dispatchLowPriority(action).pipe(Effect.tap(() => recordDispatch(action))),\n dispatchBatch: (actions: ReadonlyArray<unknown>) =>\n runtime\n .dispatchBatch(actions)\n .pipe(Effect.tap(() => Effect.forEach(actions, recordDispatch, { discard: true }))),\n }\n\n nextEnv = Context.add(tag, wrapped)(nextEnv)\n }\n\n return nextEnv\n }\n\n const wrappedEnv = makeWrappedEnv()\n const providedProcess = Effect.provide(installation.process, wrappedEnv)\n\n const makeTriggerStream = (spec: NonPlatformTriggerSpec): Effect.Effect<Stream.Stream<ProcessTrigger>, Error> =>\n Effect.gen(function* () {\n if (spec.kind === 'timer') {\n const interval = Duration.decodeUnknown(spec.timerId)\n if (Option.isNone(interval)) {\n const err = new Error(`[ProcessRuntime] invalid timerId (expected DurationInput): ${spec.timerId}`)\n ;(err as any).code = 'process::invalid_timer_id'\n ;(err as any).hint =\n \"timerId must be a valid DurationInput string, e.g. '10 millis', '1 seconds', '5 minutes'.\"\n return yield* Effect.fail(err)\n }\n\n return Stream.tick(interval.value).pipe(\n Stream.map(\n () =>\n ({\n kind: 'timer',\n name: spec.name,\n timerId: spec.timerId,\n }) satisfies ProcessTrigger,\n ),\n )\n }\n\n if (spec.kind === 'moduleAction') {\n const tag = Context.Tag(`@logixjs/Module/${spec.moduleId}`)() as Context.Tag<any, any>\n const found = Context.getOption(baseEnv, tag)\n if (Option.isNone(found)) {\n return yield* Effect.fail(new Error(`Missing module runtime in scope: ${spec.moduleId}`))\n }\n\n const runtime = found.value as any\n\n // perf: when diagnostics=off, avoid subscribing to actionsWithMeta$ (published inside txns; more subscribers hurt hot paths).\n // diagnostics=light/full needs txnSeq/txnId anchors, so only use actionsWithMeta$ when chain events are enabled.\n if (!shouldRecordChainEvents) {\n const stream = runtime.actions$ as Stream.Stream<any> | undefined\n if (!stream) {\n const err = new Error('ModuleRuntime does not provide actions$ (required for moduleAction trigger).')\n ;(err as any).code = 'process::missing_action_stream'\n ;(err as any).hint = `moduleId=${spec.moduleId}`\n return yield* Effect.fail(err)\n }\n\n return stream.pipe(\n Stream.filter((action: any) => actionIdFromUnknown(action) === spec.actionId),\n Stream.map(\n () =>\n ({\n kind: 'moduleAction',\n name: spec.name,\n moduleId: spec.moduleId,\n instanceId: runtime.instanceId as string,\n actionId: spec.actionId,\n txnSeq: 1,\n }) satisfies ProcessTrigger,\n ),\n )\n }\n\n const stream = runtime.actionsWithMeta$ as Stream.Stream<any> | undefined\n if (!stream) {\n const err = new Error(\n 'ModuleRuntime does not provide actionsWithMeta$ (required for moduleAction trigger).',\n )\n ;(err as any).code = 'process::missing_action_meta_stream'\n ;(err as any).hint = `moduleId=${spec.moduleId}`\n return yield* Effect.fail(err)\n }\n\n return stream.pipe(\n Stream.filter((evt: any) => actionIdFromUnknown(evt.value) === spec.actionId),\n Stream.map((evt: any) => {\n const txnSeq = evt?.meta?.txnSeq\n return {\n kind: 'moduleAction',\n name: spec.name,\n moduleId: spec.moduleId,\n instanceId: runtime.instanceId as string,\n actionId: spec.actionId,\n txnSeq: typeof txnSeq === 'number' ? txnSeq : 1,\n } satisfies ProcessTrigger\n }),\n )\n }\n\n // moduleStateChange\n const tag = Context.Tag(`@logixjs/Module/${spec.moduleId}`)() as Context.Tag<any, any>\n const found = Context.getOption(baseEnv, tag)\n if (Option.isNone(found)) {\n return yield* Effect.fail(new Error(`Missing module runtime in scope: ${spec.moduleId}`))\n }\n\n const runtime = found.value as any\n const schemaAst = resolveRuntimeStateSchemaAst(runtime)\n const selectorResult = makeSchemaSelector(spec.path, schemaAst)\n if (!selectorResult.ok) {\n return yield* Effect.fail(withModuleHint(selectorResult.error, spec.moduleId))\n }\n const selectorBase = selectorResult.selector\n const prevRef = yield* Ref.make<Option.Option<unknown>>(Option.none())\n\n const enableSelectorDiagnostics = shouldRecordChainEvents\n\n const selectorDiagnosticsRef = enableSelectorDiagnostics\n ? yield* Ref.make({\n windowStartedMs: Date.now(),\n triggersInWindow: 0,\n lastWarningAtMs: 0,\n })\n : undefined\n\n const sampleEveryMask = 0x7f // sample every 128 calls\n const slowSampleThresholdMs = 4\n const triggerWindowMs = 1000\n const triggerWarningThreshold = isDevEnv() ? 20 : 200\n const warningCooldownMs = 30_000\n\n let selectorCalls = 0\n let selectorSamples = 0\n let selectorSlowSamples = 0\n let selectorMaxSampleMs = 0\n\n const nowMs = (): number => {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now()\n }\n return Date.now()\n }\n\n const selector = enableSelectorDiagnostics\n ? (state: unknown): unknown => {\n selectorCalls += 1\n if ((selectorCalls & sampleEveryMask) !== 0) {\n return selectorBase(state)\n }\n\n const t0 = nowMs()\n const value = selectorBase(state)\n const dt = nowMs() - t0\n\n selectorSamples += 1\n if (dt >= slowSampleThresholdMs) {\n selectorSlowSamples += 1\n }\n if (dt > selectorMaxSampleMs) {\n selectorMaxSampleMs = dt\n }\n\n return value\n }\n : selectorBase\n\n const maybeWarnSelector = (trigger: ProcessTrigger): Effect.Effect<void> => {\n if (!selectorDiagnosticsRef) {\n return Effect.void\n }\n\n return Effect.gen(function* () {\n const now = Date.now()\n\n const decision = yield* Ref.modify(selectorDiagnosticsRef, (s) => {\n const windowExpired = now - s.windowStartedMs >= triggerWindowMs\n const windowStartedMs = windowExpired ? now : s.windowStartedMs\n const triggersInWindow = windowExpired ? 1 : s.triggersInWindow + 1\n\n const shouldCooldown = now - s.lastWarningAtMs < warningCooldownMs\n const tooFrequent = triggersInWindow >= triggerWarningThreshold\n const tooSlow = selectorMaxSampleMs >= slowSampleThresholdMs && selectorSamples > 0\n const shouldWarn = !shouldCooldown && (tooFrequent || tooSlow)\n\n const next = shouldWarn\n ? {\n windowStartedMs: now,\n triggersInWindow: 0,\n lastWarningAtMs: now,\n }\n : {\n ...s,\n windowStartedMs,\n triggersInWindow,\n }\n\n return [\n {\n shouldWarn,\n tooFrequent,\n tooSlow,\n triggersInWindow,\n },\n next,\n ] as const\n })\n\n if (!decision.shouldWarn) {\n return\n }\n\n const code = decision.tooFrequent ? 'process::selector_high_frequency' : 'process::selector_slow'\n\n const hint = [\n `moduleId=${spec.moduleId}`,\n `path=${spec.path}`,\n `windowMs=${triggerWindowMs}`,\n `triggersInWindow=${decision.triggersInWindow}`,\n `threshold=${triggerWarningThreshold}`,\n `cooldownMs=${warningCooldownMs}`,\n '',\n 'selector sampling:',\n `calls=${selectorCalls}`,\n `sampled=${selectorSamples}`,\n `slowSamples(>=${slowSampleThresholdMs}ms)=${selectorSlowSamples}`,\n `maxSampleMs=${selectorMaxSampleMs.toFixed(2)}`,\n '',\n 'notes:',\n '- Ensure the selected value is stable (prefer primitive/tuple; avoid returning fresh objects).',\n '- Narrow the path to reduce change frequency; avoid selecting large objects.',\n ].join('\\n')\n\n selectorSamples = 0\n selectorSlowSamples = 0\n selectorMaxSampleMs = 0\n\n yield* emit({\n type: 'process:trigger',\n identity,\n trigger,\n severity: 'warning',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n error: {\n message: 'moduleStateChange selector diagnostics warning',\n code,\n hint,\n },\n } satisfies ProcessEvent)\n })\n }\n\n const baseStream = (runtime.changesWithMeta(selector) as Stream.Stream<any>).pipe(\n Stream.mapEffect((evt: any) =>\n Ref.get(prevRef).pipe(\n Effect.flatMap((prev) => {\n if (Option.isSome(prev) && Object.is(prev.value, evt.value)) {\n return Effect.succeed(Option.none())\n }\n return Ref.set(prevRef, Option.some(evt.value)).pipe(Effect.as(Option.some(evt)))\n }),\n ),\n ),\n Stream.filterMap((opt) => opt),\n Stream.map((evt: any) => {\n const txnSeq = evt?.meta?.txnSeq\n return {\n kind: 'moduleStateChange',\n name: spec.name,\n moduleId: spec.moduleId,\n instanceId: runtime.instanceId as string,\n path: spec.path,\n txnSeq: typeof txnSeq === 'number' ? txnSeq : 1,\n } satisfies ProcessTrigger\n }),\n )\n\n return enableSelectorDiagnostics ? baseStream.pipe(Stream.tap(maybeWarnSelector)) : baseStream\n })\n\n const makeRun = (trigger: ProcessTrigger, fatal: Deferred.Deferred<Cause.Cause<any>>): Effect.Effect<void> =>\n Effect.locally(\n currentProcessTrigger,\n trigger,\n )(\n providedProcess.pipe(\n Effect.catchAllCause((cause) => {\n if (Cause.isInterruptedOnly(cause)) {\n return Effect.void\n }\n return Deferred.succeed(fatal, cause).pipe(\n Effect.asVoid,\n Effect.catchAll(() => Effect.void),\n )\n }),\n ),\n )\n\n const makeChainRun = (\n trigger: ProcessTrigger,\n fatal: Deferred.Deferred<Cause.Cause<any>>,\n ): Effect.Effect<void> => {\n if (!shouldRecordChainEvents) {\n return makeRun(trigger, fatal)\n }\n\n return Effect.gen(function* () {\n const budgetRef = yield* Ref.make(ProcessEvents.makeProcessRunEventBudgetState())\n return yield* Effect.locally(\n currentProcessEventBudget,\n budgetRef,\n )(emitTriggerEvent(trigger, 'info').pipe(Effect.zipRight(makeRun(trigger, fatal))))\n })\n }\n\n const assignTriggerSeq = (trigger: ProcessTrigger): ProcessTrigger => {\n if (!shouldRecordChainEvents) {\n return trigger\n }\n\n return {\n ...trigger,\n triggerSeq: instanceState.nextTriggerSeq++,\n }\n }\n\n const emitTriggerEvent = (trigger: ProcessTrigger, severity: ProcessEvent['severity']): Effect.Effect<void> => {\n if (!shouldRecordChainEvents) {\n return Effect.void\n }\n\n const evt: ProcessEvent = {\n type: 'process:trigger',\n identity,\n trigger,\n severity,\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n }\n return emit(evt)\n }\n\n const policy = installation.definition.concurrency\n const autoStart = installation.definition.triggers.some(\n (t) => t.kind === 'platformEvent' && t.platformEvent === RUNTIME_BOOT_EVENT,\n )\n const bootTriggerSpec = installation.definition.triggers.find(\n (t): t is Extract<ProcessTriggerSpec, { readonly kind: 'platformEvent' }> =>\n t.kind === 'platformEvent' && t.platformEvent === RUNTIME_BOOT_EVENT,\n )\n\n const instanceProgram = Effect.gen(function* () {\n const fatal = yield* Deferred.make<Cause.Cause<any>>()\n\n const platformEventStream: Stream.Stream<ProcessTrigger> = Stream.fromQueue(\n instanceState.platformTriggersQueue,\n )\n\n const nonPlatformTriggers = installation.definition.triggers.filter(\n (t): t is NonPlatformTriggerSpec => t.kind !== 'platformEvent',\n )\n\n const streams = yield* Effect.forEach(nonPlatformTriggers, makeTriggerStream)\n\n const triggerStream = Stream.mergeAll([platformEventStream, ...streams], {\n concurrency: 'unbounded',\n })\n\n const reportQueueOverflow = (\n info: ProcessConcurrency.ProcessTriggerQueueOverflowInfo,\n ): Effect.Effect<void> => {\n const err = new Error('Process trigger queue overflow (serial maxQueue guard).')\n ;(err as any).code = 'process::serial_queue_overflow'\n ;(err as any).hint = [\n `mode=${info.mode}`,\n `queue: current=${info.currentLength} peak=${info.peak}`,\n `maxQueue: configured=${info.limit.configured} guard=${info.limit.guard}`,\n `policy: ${JSON.stringify(info.policy)}`,\n '',\n 'fix:',\n '- Configure concurrency.maxQueue (serial) to a finite value, or switch to mode=latest/drop to avoid unbounded backlog.',\n ].join('\\n')\n return Deferred.succeed(fatal, Cause.fail(err)).pipe(\n Effect.asVoid,\n Effect.catchAll(() => Effect.void),\n )\n }\n\n const runnerFiber = yield* Effect.forkScoped(\n ProcessConcurrency.runProcessTriggerStream({\n stream: triggerStream,\n policy,\n assignTriggerSeq,\n run: (trigger) => makeChainRun(trigger, fatal),\n onDrop: (trigger) => emitTriggerEvent(trigger, 'warning'),\n onQueueOverflow: reportQueueOverflow,\n }),\n )\n\n if (autoStart) {\n yield* Queue.offer(instanceState.platformTriggersQueue, {\n kind: 'platformEvent',\n name: bootTriggerSpec?.name,\n platformEvent: RUNTIME_BOOT_EVENT,\n })\n }\n\n const cause = yield* Deferred.await(fatal)\n yield* Fiber.interrupt(runnerFiber)\n return yield* Effect.failCause(cause)\n })\n\n const fiber = yield* Effect.forkIn(installation.forkScope)(\n Effect.scoped(instanceProgram).pipe(\n Effect.catchAllCause((cause) =>\n Effect.gen(function* () {\n // Interruptions (typically from scope dispose / manual stop) should not be treated as process failures.\n // Otherwise we emit process:error/diagnostic during scope shutdown and may deadlock disposal.\n if (Cause.isInterruptedOnly(cause)) {\n // If stopInstance already advanced the status to stopping, stopInstance owns the stop event and final state.\n if (instanceState.status.status === 'stopping') {\n return\n }\n\n // Otherwise treat as a natural stop due to scope disposal (e.g. moduleInstance scope closing).\n instanceState.status = {\n ...instanceState.status,\n status: 'stopped',\n stoppedReason: 'scopeDisposed',\n }\n instanceState.fiber = undefined\n\n yield* Effect.uninterruptible(\n emit({\n type: 'process:stop',\n identity,\n severity: 'info',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n }),\n )\n\n const installation = installations.get(installationKey)\n if (installation?.pendingStart) {\n installation.pendingStart = undefined\n yield* startInstallation(installationKey)\n }\n return\n }\n\n const primary = Option.getOrElse(Cause.failureOption(cause), () =>\n Option.getOrElse(Cause.dieOption(cause), () => cause),\n )\n const summary = toSerializableErrorSummary(primary)\n const error: SerializableErrorSummary = summary.errorSummary as any\n\n instanceState.status = {\n ...instanceState.status,\n status: 'failed',\n stoppedReason: 'failed',\n lastError: error,\n }\n\n yield* emit({\n type: 'process:error',\n identity,\n severity: 'error',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n error,\n })\n\n const decision = Supervision.onFailure(\n installation.definition.errorPolicy,\n installation.supervision,\n Date.now(),\n )\n installation.supervision = decision.nextState\n\n if (decision.decision === 'restart') {\n // supervise: controlled restart (runSeq increments) and emit a restart event.\n yield* emit({\n type: 'process:restart',\n identity,\n severity: 'warning',\n eventSeq: instanceState.nextEventSeq++,\n timestampMs: Date.now(),\n error,\n })\n yield* startInstallation(installationKey)\n } else {\n yield* emitErrorDiagnostic(\n installation.identity.scope,\n installation.identity.processId,\n 'process::failed_stop',\n 'Process failed and stopped (failStop / restart limit reached).',\n `processId=${installation.identity.processId} scopeKey=${installation.scopeKey} failures=${decision.withinWindowFailures} maxRestarts=${decision.maxRestarts}`,\n )\n }\n }),\n ),\n ),\n )\n\n instanceState.fiber = fiber as Fiber.RuntimeFiber<unknown, unknown>\n instanceState.status = {\n ...instanceState.status,\n status: 'running',\n }\n\n // Best-effort: ensure the instance fiber starts subscribing to trigger streams before install/start returns,\n // avoiding lost moduleAction/moduleStateChange triggers right after env is built and dispatch happens.\n yield* Effect.yieldNow()\n })\n\n const install = <E, R>(\n process: Effect.Effect<void, E, R>,\n options: {\n readonly scope: ProcessScope\n readonly enabled?: boolean\n readonly installedAt?: string\n readonly mode?: ProcessInstallMode\n },\n ): Effect.Effect<ProcessInstallation | undefined, never, R> =>\n Effect.gen(function* () {\n const meta = Meta.getMeta(process)\n if (!meta) {\n return undefined\n }\n\n const env = yield* Effect.context<R>()\n const forkScopeOpt = yield* Effect.serviceOption(Scope.Scope)\n const forkScope = Option.isSome(forkScopeOpt) ? forkScopeOpt.value : runtimeScope\n\n const scopeKey = Identity.scopeKeyFromScope(options.scope)\n const identity = {\n processId: meta.definition.processId,\n scope: options.scope,\n } as const\n\n const installationKey = Identity.installationKeyFromIdentity(identity)\n const existing = installations.get(installationKey)\n if (existing) {\n existing.env = env as Context.Context<any>\n existing.forkScope = forkScope\n existing.enabled = options.enabled ?? true\n existing.installedAt = options.installedAt ?? existing.installedAt\n if (!existing.enabled) {\n existing.pendingStart = undefined\n return {\n identity,\n enabled: existing.enabled,\n installedAt: existing.installedAt,\n } satisfies ProcessInstallation\n }\n\n const currentId = existing.currentInstanceId\n const current = currentId ? instances.get(currentId) : undefined\n const status = current?.status.status\n\n if (status === 'running' || status === 'starting') {\n const mode: ProcessInstallMode = options.mode ?? 'switch'\n if (mode === 'switch' && current && current.forkScope !== forkScope) {\n existing.pendingStart = { forkScope }\n yield* Scope.addFinalizer(\n forkScope,\n Effect.sync(() => {\n const installation = installations.get(installationKey)\n if (!installation) return\n if (installation.pendingStart?.forkScope === forkScope) {\n installation.pendingStart = undefined\n }\n }),\n )\n } else {\n existing.pendingStart = undefined\n }\n return {\n identity,\n enabled: existing.enabled,\n installedAt: existing.installedAt,\n } satisfies ProcessInstallation\n }\n\n if (status === 'stopping') {\n const mode: ProcessInstallMode = options.mode ?? 'switch'\n if (mode === 'switch') {\n existing.pendingStart = { forkScope }\n yield* Scope.addFinalizer(\n forkScope,\n Effect.sync(() => {\n const installation = installations.get(installationKey)\n if (!installation) return\n if (installation.pendingStart?.forkScope === forkScope) {\n installation.pendingStart = undefined\n }\n }),\n )\n } else {\n existing.pendingStart = undefined\n }\n return {\n identity,\n enabled: existing.enabled,\n installedAt: existing.installedAt,\n } satisfies ProcessInstallation\n }\n\n existing.pendingStart = undefined\n yield* startInstallation(installationKey)\n return {\n identity,\n enabled: existing.enabled,\n installedAt: existing.installedAt,\n } satisfies ProcessInstallation\n }\n\n // Derive an effect for this installation to avoid overwriting meta on the original Effect (reused across scopes).\n // Note: do not provide env eagerly; we may need to layer additional context per-trigger execution (e.g. dispatch chain diagnostics).\n const derived = Effect.suspend(() => process)\n Meta.attachMeta(derived, {\n ...meta,\n installationScope: options.scope,\n })\n\n const installation: InstallationState = {\n identity,\n scopeKey,\n definition: meta.definition,\n env: env as Context.Context<any>,\n forkScope,\n process: derived as unknown as Effect.Effect<void, any, unknown>,\n kind: meta.kind ?? 'process',\n enabled: options.enabled ?? true,\n installedAt: options.installedAt,\n nextRunSeq: 1,\n supervision: Supervision.initialState(),\n pendingStart: undefined,\n }\n\n installations.set(installationKey, installation)\n\n if (installation.enabled) {\n yield* startInstallation(installationKey)\n }\n\n return {\n identity,\n enabled: installation.enabled,\n installedAt: installation.installedAt,\n } satisfies ProcessInstallation\n })\n\n const listInstallations: ProcessRuntime['listInstallations'] = (filter) =>\n Effect.sync(() => {\n const scopeType = filter?.scopeType\n const scopeKey = filter?.scopeKey\n const out: ProcessInstallation[] = []\n for (const installation of installations.values()) {\n if (scopeType && installation.identity.scope.type !== scopeType) continue\n if (scopeKey && installation.scopeKey !== scopeKey) continue\n out.push({\n identity: installation.identity,\n enabled: installation.enabled,\n installedAt: installation.installedAt,\n })\n }\n return out\n })\n\n const getInstanceStatus: ProcessRuntime['getInstanceStatus'] = (processInstanceId) =>\n Effect.sync(() => instances.get(processInstanceId)?.status)\n\n const controlInstance: ProcessRuntime['controlInstance'] = (processInstanceId, request) =>\n Effect.suspend(() => {\n const instance = instances.get(processInstanceId)\n if (!instance) {\n return Effect.void\n }\n\n return shouldNoopDueToSyncTxn(instance.scope, 'process_control_in_transaction').pipe(\n Effect.flatMap((noop) => {\n if (noop) {\n return Effect.void\n }\n\n if (request.action === 'stop') {\n return stopInstance(instance, 'manualStop')\n }\n\n if (request.action === 'restart') {\n return stopInstance(instance, 'manualStop').pipe(\n Effect.flatMap(() => {\n const installation = installations.get(instance.installationKey)\n if (!installation) {\n return Effect.void\n }\n installation.currentInstanceId = undefined\n return startInstallation(instance.installationKey)\n }),\n )\n }\n\n // start: only applies to stopped instances; reuses current runSeq without incrementing.\n if (request.action === 'start') {\n if (instance.status.status === 'running' || instance.status.status === 'starting') {\n return Effect.void\n }\n\n const installation = installations.get(instance.installationKey)\n if (!installation) {\n return Effect.void\n }\n installation.currentInstanceId = undefined\n return startInstallation(instance.installationKey)\n }\n\n return Effect.void\n }),\n )\n })\n\n const deliverPlatformEvent: ProcessRuntime['deliverPlatformEvent'] = (event) =>\n Effect.gen(function* () {\n const noop = yield* TaskRunner.shouldNoopInSyncTransactionFiber({\n code: 'process::invalid_usage',\n severity: 'error',\n message:\n 'ProcessRuntime platform events are not allowed inside a synchronous StateTransaction body (it may deadlock the txnQueue).',\n hint: 'Deliver platformEvent outside the transaction window.',\n kind: 'process_platform_event_in_transaction',\n })\n if (noop) return\n\n const targets = Array.from(instances.values())\n const eventName = event.eventName\n\n yield* Effect.forEach(\n targets,\n (instance) =>\n Effect.suspend(() => {\n if (instance.status.status !== 'starting' && instance.status.status !== 'running') {\n return Effect.void\n }\n\n const installation = installations.get(instance.installationKey)\n if (!installation) {\n return Effect.void\n }\n\n const specs = installation.definition.triggers.filter(\n (t): t is Extract<ProcessTriggerSpec, { readonly kind: 'platformEvent' }> =>\n t.kind === 'platformEvent' && t.platformEvent === eventName,\n )\n if (specs.length === 0) {\n return Effect.void\n }\n\n return Effect.forEach(\n specs,\n (spec) =>\n Queue.offer(instance.platformTriggersQueue, {\n kind: 'platformEvent',\n name: spec.name,\n platformEvent: spec.platformEvent,\n } satisfies ProcessTrigger),\n { discard: true },\n )\n }),\n { discard: true },\n )\n })\n\n const eventsStream: ProcessRuntime['events'] = Stream.fromPubSub(eventsHub)\n\n const getEventsSnapshot: ProcessRuntime['getEventsSnapshot'] = () => Effect.sync(() => eventsBuffer.slice())\n\n yield* Effect.addFinalizer(() =>\n Effect.gen(function* () {\n for (const installation of installations.values()) {\n installation.pendingStart = undefined\n }\n for (const instance of instances.values()) {\n if (instance.fiber) {\n yield* stopInstance(instance, 'scopeDisposed')\n }\n }\n }).pipe(\n Effect.catchAllCause((cause) =>\n Effect.sync(() => {\n // Finalizers must not throw; best-effort logging only.\n if (isDevEnv()) {\n // eslint-disable-next-line no-console\n console.warn('[ProcessRuntime] finalizer failed', Cause.pretty(cause))\n }\n }),\n ),\n ),\n )\n\n return {\n install,\n listInstallations,\n getInstanceStatus,\n controlInstance,\n deliverPlatformEvent,\n events: eventsStream,\n getEventsSnapshot,\n } satisfies ProcessRuntime\n })\n\nexport const layer = (options?: { readonly maxEventHistory?: number }): Layer.Layer<ProcessRuntimeTag, never, never> =>\n Layer.scoped(ProcessRuntimeTag, make(options))\n","import type { ProcessIdentity, ProcessInstanceIdentity, ProcessScope } from './protocol.js'\n\nexport type ProcessScopeKey = string\n\nexport const scopeKeyFromScope = (scope: ProcessScope): ProcessScopeKey => {\n switch (scope.type) {\n case 'app':\n return `app:${scope.appId}`\n case 'moduleInstance':\n return `moduleInstance:${scope.moduleId}::${scope.instanceId}`\n case 'uiSubtree':\n return `uiSubtree:${scope.subtreeId}`\n }\n}\n\nexport const installationKeyFromIdentity = (identity: ProcessIdentity): string =>\n `${identity.processId}@@${scopeKeyFromScope(identity.scope)}`\n\nexport const processInstanceIdFromIdentity = (identity: ProcessInstanceIdentity): string => {\n const scopeKey = scopeKeyFromScope(identity.identity.scope)\n return `process:${identity.identity.processId}::${scopeKey}::r${identity.runSeq}`\n}\n","import { Effect, Fiber, Option, Ref, Scope, Stream } from 'effect'\nimport type { TaskRunnerMode } from '../TaskRunner.js'\nimport type { ProcessConcurrencyPolicy, ProcessTrigger } from './protocol.js'\n\nexport const DEFAULT_SERIAL_QUEUE_GUARD_LIMIT = 4096\nexport const DEFAULT_PARALLEL_LIMIT = 16\n\nexport const toTaskRunnerMode = (policy: ProcessConcurrencyPolicy): TaskRunnerMode => {\n switch (policy.mode) {\n case 'latest':\n return 'latest'\n case 'serial':\n return 'task'\n case 'drop':\n return 'exhaust'\n case 'parallel':\n return 'parallel'\n }\n}\n\nexport type ResolvedQueueLimit = {\n /** User-configured limit; treated as unlimited when omitted (still bounded by the guard). */\n readonly configured: number | 'unbounded'\n /** Runtime-enforced guard limit (prevents unbounded memory growth). */\n readonly guard: number\n}\n\nexport const resolveQueueLimit = (\n maxQueue: unknown,\n options?: {\n readonly defaultGuard?: number\n },\n): ResolvedQueueLimit => {\n const defaultGuard = options?.defaultGuard ?? DEFAULT_SERIAL_QUEUE_GUARD_LIMIT\n\n const configured =\n typeof maxQueue === 'number' && Number.isFinite(maxQueue) && maxQueue >= 0 ? Math.floor(maxQueue) : 'unbounded'\n\n return {\n configured,\n guard: configured === 'unbounded' ? defaultGuard : configured,\n }\n}\n\nexport type ProcessTriggerQueueOverflowInfo = {\n readonly mode: 'serial' | 'parallel'\n readonly currentLength: number\n readonly peak: number\n readonly limit: ResolvedQueueLimit\n readonly policy: ProcessConcurrencyPolicy\n}\n\nexport const runProcessTriggerStream = (args: {\n readonly stream: Stream.Stream<ProcessTrigger>\n readonly policy: ProcessConcurrencyPolicy\n readonly assignTriggerSeq: (trigger: ProcessTrigger) => ProcessTrigger\n /** run a trigger to completion (the caller decides what a \\\"run\\\" means). */\n readonly run: (trigger: ProcessTrigger) => Effect.Effect<void, never, Scope.Scope>\n /** invoked when a trigger is dropped (only for mode=drop). */\n readonly onDrop: (trigger: ProcessTrigger) => Effect.Effect<void>\n /** invoked when internal queue guard is exceeded (fail-stop by default). */\n readonly onQueueOverflow: (info: ProcessTriggerQueueOverflowInfo) => Effect.Effect<void>\n readonly defaultParallelLimit?: number\n readonly defaultQueueGuard?: number\n}): Effect.Effect<void, never, Scope.Scope> =>\n Effect.gen(function* () {\n const policy = args.policy\n const defaultQueueGuard = args.defaultQueueGuard ?? DEFAULT_SERIAL_QUEUE_GUARD_LIMIT\n\n if (policy.mode === 'latest') {\n const stateRef = yield* Ref.make<{\n readonly fiber?: Fiber.RuntimeFiber<void, never>\n readonly runningId: number\n readonly nextId: number\n }>({ fiber: undefined, runningId: 0, nextId: 0 })\n\n const onTrigger = (trigger0: ProcessTrigger): Effect.Effect<void, never, Scope.Scope> =>\n Effect.gen(function* () {\n const trigger = args.assignTriggerSeq(trigger0)\n\n const [prevFiber, prevRunningId, runId] = yield* Ref.modify(stateRef, (s) => {\n const nextId = s.nextId + 1\n return [[s.fiber, s.runningId, nextId] as const, { ...s, nextId, runningId: nextId }] as const\n })\n\n if (prevFiber && prevRunningId !== 0) {\n const done = yield* Fiber.poll(prevFiber)\n if (Option.isNone(done)) {\n yield* Fiber.interruptFork(prevFiber)\n }\n }\n\n const fiber = yield* Effect.forkScoped(\n args\n .run(trigger)\n .pipe(Effect.ensuring(Ref.update(stateRef, (s) => (s.runningId === runId ? { ...s, runningId: 0 } : s)))),\n )\n\n yield* Ref.update(stateRef, (s) => ({ ...s, fiber }))\n })\n\n return yield* Stream.runForEach(args.stream, onTrigger)\n }\n\n const busyRef = yield* Ref.make(false)\n const serialStateRef = yield* Ref.make({\n running: false,\n queue: [] as ProcessTrigger[],\n peak: 0,\n })\n const parallelStateRef = yield* Ref.make({\n active: 0,\n queue: [] as ProcessTrigger[],\n peak: 0,\n })\n\n const serialQueueLimit = resolveQueueLimit(policy.maxQueue, { defaultGuard: defaultQueueGuard })\n const parallelQueueLimit = resolveQueueLimit(undefined, { defaultGuard: defaultQueueGuard })\n const parallelLimit =\n typeof policy.maxParallel === 'number' && Number.isFinite(policy.maxParallel) && policy.maxParallel >= 1\n ? Math.floor(policy.maxParallel)\n : (args.defaultParallelLimit ?? DEFAULT_PARALLEL_LIMIT)\n\n const drainSerial = (): Effect.Effect<void, never, Scope.Scope> =>\n Effect.suspend(() =>\n Ref.modify(serialStateRef, (state) => {\n if (state.running || state.queue.length === 0) {\n return [Option.none(), state] as const\n }\n const [next, ...rest] = state.queue\n return [Option.some(next), { ...state, running: true, queue: rest }] as const\n }).pipe(\n Effect.flatMap((next) =>\n Option.match(next, {\n onNone: () => Effect.void,\n onSome: (trigger) =>\n Effect.forkScoped(\n args\n .run(trigger)\n .pipe(\n Effect.ensuring(Ref.update(serialStateRef, (s) => ({ ...s, running: false }))),\n Effect.zipRight(drainSerial()),\n ),\n ).pipe(Effect.asVoid),\n }),\n ),\n ),\n )\n\n const drainParallel = (): Effect.Effect<void, never, Scope.Scope> =>\n Effect.suspend(() =>\n Ref.modify(parallelStateRef, (state) => {\n if (state.active >= parallelLimit || state.queue.length === 0) {\n return [Option.none(), state] as const\n }\n const [next, ...rest] = state.queue\n return [Option.some(next), { ...state, active: state.active + 1, queue: rest }] as const\n }).pipe(\n Effect.flatMap((next) =>\n Option.match(next, {\n onNone: () => Effect.void,\n onSome: (trigger) =>\n Effect.forkScoped(\n args.run(trigger).pipe(\n Effect.ensuring(\n Ref.update(parallelStateRef, (s) => ({\n ...s,\n active: Math.max(0, s.active - 1),\n })),\n ),\n Effect.zipRight(drainParallel()),\n ),\n ).pipe(Effect.asVoid, Effect.zipRight(drainParallel())),\n }),\n ),\n ),\n )\n\n const onTrigger = (trigger0: ProcessTrigger): Effect.Effect<void, never, Scope.Scope> =>\n Effect.gen(function* () {\n const trigger = args.assignTriggerSeq(trigger0)\n\n if (policy.mode === 'drop') {\n const acquired = yield* Ref.modify(busyRef, (busy) =>\n busy ? ([false, busy] as const) : ([true, true] as const),\n )\n if (!acquired) {\n yield* args.onDrop(trigger)\n return\n }\n\n yield* Effect.forkScoped(args.run(trigger).pipe(Effect.ensuring(Ref.set(busyRef, false))))\n return\n }\n\n if (policy.mode === 'parallel') {\n const nextSize = yield* Ref.modify(parallelStateRef, (state) => {\n const queue = [...state.queue, trigger]\n return [queue.length, { ...state, queue, peak: Math.max(state.peak, queue.length) }] as const\n })\n\n if (nextSize > parallelQueueLimit.guard) {\n const state = yield* Ref.get(parallelStateRef)\n yield* args.onQueueOverflow({\n mode: 'parallel',\n currentLength: nextSize,\n peak: state.peak,\n limit: parallelQueueLimit,\n policy,\n })\n return\n }\n\n yield* drainParallel()\n return\n }\n\n // serial\n const nextSize = yield* Ref.modify(serialStateRef, (state) => {\n const queue = [...state.queue, trigger]\n return [queue.length, { ...state, queue, peak: Math.max(state.peak, queue.length) }] as const\n })\n\n if (nextSize > serialQueueLimit.guard) {\n const state = yield* Ref.get(serialStateRef)\n yield* args.onQueueOverflow({\n mode: 'serial',\n currentLength: nextSize,\n peak: state.peak,\n limit: serialQueueLimit,\n policy,\n })\n return\n }\n\n yield* drainSerial()\n })\n\n return yield* Stream.runForEach(args.stream, onTrigger)\n })\n","import type { ProcessEvent } from './protocol.js'\n\nexport const PROCESS_EVENT_MAX_BYTES = 4 * 1024\nexport const PROCESS_EVENT_MAX_EVENTS_PER_RUN = 50\nexport const PROCESS_EVENT_RESERVED_EVENTS_FOR_SUMMARY = 1\n\nexport type ProcessRunEventBudgetState = {\n readonly maxEvents: number\n readonly maxBytes: number\n readonly emitted: number\n readonly dropped: number\n readonly downgraded: number\n readonly summaryEmitted: boolean\n}\n\nexport const makeProcessRunEventBudgetState = (options?: {\n readonly maxEvents?: number\n readonly maxBytes?: number\n}): ProcessRunEventBudgetState => ({\n maxEvents:\n typeof options?.maxEvents === 'number' && Number.isFinite(options.maxEvents) && options.maxEvents >= 0\n ? Math.floor(options.maxEvents)\n : PROCESS_EVENT_MAX_EVENTS_PER_RUN,\n maxBytes:\n typeof options?.maxBytes === 'number' && Number.isFinite(options.maxBytes) && options.maxBytes >= 0\n ? Math.floor(options.maxBytes)\n : PROCESS_EVENT_MAX_BYTES,\n emitted: 0,\n dropped: 0,\n downgraded: 0,\n summaryEmitted: false,\n})\n\nexport type ProcessRunEventBudgetDecision =\n | {\n readonly _tag: 'emit'\n readonly event: ProcessEvent\n }\n | {\n readonly _tag: 'emitSummary'\n readonly event: ProcessEvent\n }\n | {\n readonly _tag: 'drop'\n }\n\nconst makeBudgetSummaryEvent = (args: {\n readonly sourceEvent: ProcessEvent\n readonly maxEvents: number\n readonly maxBytes: number\n readonly emitted: number\n readonly dropped: number\n readonly downgraded: number\n}): ProcessEvent => ({\n type: 'process:trigger',\n identity: args.sourceEvent.identity,\n trigger: args.sourceEvent.trigger,\n severity: 'warning',\n eventSeq: args.sourceEvent.eventSeq,\n timestampMs: args.sourceEvent.timestampMs,\n error: {\n message: 'Process run event budget exceeded; further trigger/dispatch events are suppressed.',\n code: 'process::event_budget_exceeded',\n hint: `maxEvents=${args.maxEvents} maxBytes=${args.maxBytes} emitted=${args.emitted} dropped=${args.dropped} downgraded=${args.downgraded}`,\n },\n})\n\nexport const applyProcessRunEventBudget = (\n state: ProcessRunEventBudgetState,\n event: ProcessEvent,\n): readonly [ProcessRunEventBudgetDecision, ProcessRunEventBudgetState] => {\n const maxEvents = Math.max(0, state.maxEvents)\n const maxBytes = Math.max(0, state.maxBytes)\n\n if (state.summaryEmitted) {\n return [\n { _tag: 'drop' },\n {\n ...state,\n dropped: state.dropped + 1,\n },\n ]\n }\n\n const reserve = PROCESS_EVENT_RESERVED_EVENTS_FOR_SUMMARY\n const allowedRegular = Math.max(0, maxEvents - reserve)\n\n if (state.emitted < allowedRegular) {\n const enforced = enforceProcessEventMaxBytes(event, { maxBytes })\n return [\n { _tag: 'emit', event: enforced.event },\n {\n ...state,\n emitted: state.emitted + 1,\n downgraded: state.downgraded + (enforced.downgraded ? 1 : 0),\n },\n ]\n }\n\n const dropped = state.dropped + 1\n const summary = makeBudgetSummaryEvent({\n sourceEvent: event,\n maxEvents,\n maxBytes,\n emitted: state.emitted,\n dropped,\n downgraded: state.downgraded,\n })\n const enforcedSummary = enforceProcessEventMaxBytes(summary, { maxBytes })\n\n return [\n { _tag: 'emitSummary', event: enforcedSummary.event },\n {\n ...state,\n emitted: Math.min(maxEvents, state.emitted + 1),\n dropped,\n downgraded: state.downgraded + (enforcedSummary.downgraded ? 1 : 0),\n summaryEmitted: true,\n },\n ]\n}\n\nexport const estimateEventBytes = (event: ProcessEvent): number => {\n const json = JSON.stringify(event)\n return typeof Buffer !== 'undefined' ? Buffer.byteLength(json, 'utf8') : new TextEncoder().encode(json).length\n}\n\nconst truncateChars = (value: string, maxLen: number): string =>\n value.length <= maxLen ? value : value.slice(0, maxLen)\n\nconst normalizeErrorSummary = (error: NonNullable<ProcessEvent['error']>): NonNullable<ProcessEvent['error']> => {\n const message = typeof error.message === 'string' && error.message.length > 0 ? error.message : 'Error'\n\n const hint = typeof error.hint === 'string' && error.hint.length > 0 ? truncateChars(error.hint, 1024) : undefined\n\n return {\n name: typeof error.name === 'string' && error.name.length > 0 ? error.name : undefined,\n message: truncateChars(message, 256),\n code: typeof error.code === 'string' && error.code.length > 0 ? error.code : undefined,\n hint,\n }\n}\n\nexport const enforceProcessEventMaxBytes = (\n event: ProcessEvent,\n options?: {\n readonly maxBytes?: number\n },\n): { readonly event: ProcessEvent; readonly downgraded: boolean } => {\n const maxBytes = options?.maxBytes ?? PROCESS_EVENT_MAX_BYTES\n\n let downgraded = false\n let next: ProcessEvent = event\n\n if (event.error) {\n const normalized = normalizeErrorSummary(event.error)\n if (\n normalized.message !== event.error.message ||\n normalized.hint !== event.error.hint ||\n normalized.code !== event.error.code ||\n normalized.name !== event.error.name\n ) {\n downgraded = true\n next = { ...event, error: normalized }\n }\n }\n\n if (estimateEventBytes(next) <= maxBytes) {\n return { event: next, downgraded }\n }\n\n // Further trimming is applied to error.hint only (common trigger: multi-line hints).\n if (!next.error?.hint) {\n // Nothing left to trim; best-effort return.\n return { event: next, downgraded: true }\n }\n\n const hint = next.error.hint\n const steps = [512, 256, 128, 64, 32, 0]\n\n for (const maxLen of steps) {\n const trimmed = maxLen === 0 ? undefined : truncateChars(hint, maxLen)\n const candidate: ProcessEvent = {\n ...next,\n error: {\n ...next.error,\n hint: trimmed,\n },\n }\n if (estimateEventBytes(candidate) <= maxBytes) {\n return { event: candidate, downgraded: true }\n }\n }\n\n // Fallback: remove hint and shorten message (process:error must still have a message).\n const fallback: ProcessEvent = next.error\n ? ({\n ...next,\n error: {\n ...next.error,\n message: truncateChars(next.error.message, 96),\n hint: undefined,\n },\n } satisfies ProcessEvent)\n : next\n\n return { event: fallback, downgraded: true }\n}\n","import * as SchemaAST from 'effect/SchemaAST'\n\nexport type DotPathSegment = string | number\n\ntype DotPathParseResult =\n | { readonly ok: true; readonly segments: ReadonlyArray<DotPathSegment> }\n | { readonly ok: false; readonly error: Error }\n\nexport type DotPathSelectorResult =\n | {\n readonly ok: true\n readonly selector: (state: unknown) => unknown\n readonly segments: ReadonlyArray<DotPathSegment>\n }\n | { readonly ok: false; readonly error: Error }\n\nconst isRecord = (value: unknown): value is Record<string, unknown> => typeof value === 'object' && value !== null\n\nexport const resolveSchemaAst = (schema: unknown): SchemaAST.AST | undefined => {\n if (!isRecord(schema)) return undefined\n const ast = (schema as any).ast as SchemaAST.AST | undefined\n if (!ast) return undefined\n if (typeof ast !== 'object' && typeof ast !== 'function') return undefined\n return ast\n}\n\nconst makeDotPathError = (path: string, message: string, hint?: string): Error => {\n const err = new Error(message)\n ;(err as any).code = 'process::invalid_dot_path'\n ;(err as any).hint =\n hint ??\n [\n \"Expected dot-path syntax: segments separated by '.', numeric segments represent array indices.\",\n `path: ${path}`,\n '',\n 'examples:',\n '- count',\n '- user.name',\n '- items.0.id',\n ].join('\\n')\n return err\n}\n\nconst makeSchemaMismatchError = (path: string): Error =>\n makeDotPathError(\n path,\n 'Invalid dot-path: path does not match the state schema.',\n [\n 'The module state schema does not contain the requested dot-path.',\n `path: ${path}`,\n '',\n 'fix:',\n '- Ensure the path exists in the state schema.',\n '- Use numeric segments for array indices (e.g. items.0.id).',\n ].join('\\n'),\n )\n\nconst parseDotPath = (path: string): DotPathParseResult => {\n if (typeof path !== 'string' || path.length === 0) {\n return { ok: false, error: makeDotPathError(String(path), 'dot-path must be a non-empty string') }\n }\n\n const raw = path.split('.')\n if (raw.length === 0) {\n return { ok: false, error: makeDotPathError(path, 'dot-path must contain at least one segment') }\n }\n\n const segments: DotPathSegment[] = []\n for (let i = 0; i < raw.length; i++) {\n const seg = raw[i]!\n if (seg.length === 0) {\n return {\n ok: false,\n error: makeDotPathError(\n path,\n `Invalid dot-path: empty segment at index ${i}.`,\n [\n \"Expected dot-path syntax: segments separated by '.', numeric segments represent array indices.\",\n `path: ${path}`,\n '',\n 'examples:',\n '- count',\n '- user.name',\n '- items.0.id',\n '',\n 'fix:',\n '- Remove consecutive dots or trailing dots.',\n ].join('\\n'),\n ),\n }\n }\n\n if (/^[0-9]+$/.test(seg)) {\n const n = Number(seg)\n if (!Number.isFinite(n) || n < 0) {\n return {\n ok: false,\n error: makeDotPathError(path, `Invalid array index segment \"${seg}\" at index ${i}.`),\n }\n }\n segments.push(Math.floor(n))\n continue\n }\n\n segments.push(seg)\n }\n\n return { ok: true, segments }\n}\n\nconst resolveAstForPath = (\n ast: SchemaAST.AST,\n segments: ReadonlyArray<DotPathSegment>,\n seen: Set<SchemaAST.AST>,\n): SchemaAST.AST | undefined => {\n if (segments.length === 0) return ast\n\n let current = ast\n while (true) {\n if (SchemaAST.isSuspend(current)) {\n if (seen.has(current)) return undefined\n seen.add(current)\n current = current.f()\n continue\n }\n if (SchemaAST.isRefinement(current)) {\n current = current.from\n continue\n }\n break\n }\n\n if (SchemaAST.isTransformation(current)) {\n const from = resolveAstForPath(current.from, segments, seen)\n if (from) return from\n return resolveAstForPath(current.to, segments, seen)\n }\n\n if (SchemaAST.isUnion(current)) {\n for (const node of current.types) {\n const resolved = resolveAstForPath(node, segments, seen)\n if (resolved) return resolved\n }\n return undefined\n }\n\n if (SchemaAST.isTupleType(current)) {\n const [head, ...tail] = segments\n if (typeof head !== 'number') return undefined\n const element =\n head < current.elements.length ? current.elements[head] : current.rest.length > 0 ? current.rest[0] : undefined\n return element ? resolveAstForPath(element.type, tail, seen) : undefined\n }\n\n if (SchemaAST.isTypeLiteral(current)) {\n const [head, ...tail] = segments\n if (head === undefined) return undefined\n\n if (typeof head === 'string') {\n for (const ps of current.propertySignatures) {\n if (String(ps.name) !== head) continue\n return resolveAstForPath(ps.type, tail, seen)\n }\n }\n\n for (const sig of current.indexSignatures) {\n let param: SchemaAST.AST = sig.parameter as unknown as SchemaAST.AST\n while (SchemaAST.isRefinement(param)) {\n param = param.from\n }\n const tag = (param as any)?._tag\n const acceptsString = tag === 'StringKeyword' || tag === 'TemplateLiteral'\n const acceptsNumber = tag === 'NumberKeyword'\n if (typeof head === 'string' && acceptsString) {\n return resolveAstForPath(sig.type, tail, seen)\n }\n if (typeof head === 'number' && acceptsNumber) {\n return resolveAstForPath(sig.type, tail, seen)\n }\n }\n }\n\n const tag = (current as any)?._tag\n if (tag === 'AnyKeyword' || tag === 'UnknownKeyword' || tag === 'ObjectKeyword' || tag === 'Declaration') {\n return current\n }\n\n return undefined\n}\n\nconst selectBySegments =\n (segments: ReadonlyArray<DotPathSegment>) =>\n (state: unknown): unknown => {\n let current: unknown = state\n for (const seg of segments) {\n if (current == null) return undefined\n if (typeof seg === 'number') {\n if (Array.isArray(current)) {\n current = current[seg]\n continue\n }\n if (isRecord(current)) {\n current = current[String(seg)]\n continue\n }\n return undefined\n }\n if (isRecord(current)) {\n current = current[seg]\n continue\n }\n return undefined\n }\n return current\n }\n\nexport const makeSchemaSelector = (path: string, schemaAst?: SchemaAST.AST): DotPathSelectorResult => {\n const parsed = parseDotPath(path)\n if (!parsed.ok) return { ok: false, error: parsed.error }\n\n if (schemaAst) {\n const resolved = resolveAstForPath(schemaAst, parsed.segments, new Set())\n if (!resolved) {\n return { ok: false, error: makeSchemaMismatchError(path) }\n }\n }\n\n return {\n ok: true,\n selector: selectBySegments(parsed.segments),\n segments: parsed.segments,\n }\n}\n","import type { ProcessErrorPolicy } from './protocol.js'\n\nexport type SupervisionDecision = 'stop' | 'restart'\n\nexport type SupervisionState = {\n readonly failureTimes: ReadonlyArray<number>\n}\n\nexport const initialState = (): SupervisionState => ({ failureTimes: [] })\n\nexport type FailureDecision = {\n readonly decision: SupervisionDecision\n readonly nextState: SupervisionState\n readonly withinWindowFailures: number\n readonly maxRestarts: number\n readonly windowMs?: number\n}\n\nexport const onFailure = (policy: ProcessErrorPolicy, state: SupervisionState, nowMs: number): FailureDecision => {\n if (policy.mode === 'failStop') {\n return {\n decision: 'stop',\n nextState: state,\n withinWindowFailures: state.failureTimes.length,\n maxRestarts: 0,\n windowMs: policy.windowMs,\n }\n }\n\n const maxRestartsRaw = policy.maxRestarts\n const maxRestarts =\n typeof maxRestartsRaw === 'number' && Number.isFinite(maxRestartsRaw) && maxRestartsRaw >= 0\n ? Math.floor(maxRestartsRaw)\n : 0\n\n if (maxRestarts <= 0) {\n return {\n decision: 'stop',\n nextState: state,\n withinWindowFailures: state.failureTimes.length,\n maxRestarts,\n windowMs: policy.windowMs,\n }\n }\n\n const windowMsRaw = policy.windowMs\n const windowMs =\n typeof windowMsRaw === 'number' && Number.isFinite(windowMsRaw) && windowMsRaw > 0\n ? Math.floor(windowMsRaw)\n : undefined\n\n const failureTimesRaw = [...state.failureTimes, nowMs]\n const failureTimes = windowMs ? failureTimesRaw.filter((t) => t >= nowMs - windowMs) : failureTimesRaw\n\n // Keep at most maxRestarts+1 timestamps to avoid unbounded growth.\n const cap = maxRestarts + 1\n const capped = failureTimes.length > cap ? failureTimes.slice(failureTimes.length - cap) : failureTimes\n\n const withinWindowFailures = capped.length\n const decision: SupervisionDecision = withinWindowFailures <= maxRestarts ? 'restart' : 'stop'\n\n return {\n decision,\n nextState: { failureTimes: capped },\n withinWindowFailures,\n maxRestarts,\n windowMs,\n }\n}\n"],"mappings":"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","names":["Context","Effect","Fiber","FiberRef","Layer","Option","Ref","Scope","Stream","Effect","Effect","onTrigger","nextSize","isRecord","tag","Context","FiberRef","Effect","Ref","Option","Fiber","Scope","Stream","tag","found","runtime","stream","installation","options","Layer"]}
|