ihsm 0.0.26 → 0.1.21

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 (103) hide show
  1. package/README.md +105 -113
  2. package/lib/cjs/index.d.ts +8 -1394
  3. package/lib/cjs/index.js +65 -764
  4. package/lib/cjs/index.js.map +1 -1
  5. package/lib/cjs/internal/console-instrumentation.d.ts +34 -0
  6. package/lib/cjs/internal/console-instrumentation.js +71 -0
  7. package/lib/cjs/internal/console-instrumentation.js.map +1 -0
  8. package/lib/cjs/internal/identity.d.ts +16 -0
  9. package/lib/cjs/internal/identity.js +170 -0
  10. package/lib/cjs/internal/identity.js.map +1 -0
  11. package/lib/cjs/internal/instrumentation.d.ts +47 -0
  12. package/lib/cjs/internal/instrumentation.js +201 -0
  13. package/lib/cjs/internal/instrumentation.js.map +1 -0
  14. package/lib/cjs/internal/runtime.d.ts +376 -0
  15. package/lib/cjs/internal/runtime.js +2530 -0
  16. package/lib/cjs/internal/runtime.js.map +1 -0
  17. package/lib/cjs/internal/types.d.ts +515 -0
  18. package/lib/cjs/internal/types.js +9 -0
  19. package/lib/cjs/internal/types.js.map +1 -0
  20. package/lib/cjs/test-only.d.ts +5 -0
  21. package/lib/cjs/test-only.js +21 -0
  22. package/lib/cjs/test-only.js.map +1 -0
  23. package/lib/cjs/testing.d.ts +120 -88
  24. package/lib/cjs/testing.js +126 -38
  25. package/lib/cjs/testing.js.map +1 -1
  26. package/lib/cjs/transition-routines.d.ts +3 -0
  27. package/lib/cjs/transition-routines.js +11 -0
  28. package/lib/cjs/transition-routines.js.map +1 -0
  29. package/lib/cjs/types.d.ts +5 -0
  30. package/lib/cjs/{internal/defs.private.js → types.js} +1 -1
  31. package/lib/cjs/types.js.map +1 -0
  32. package/lib/esm/index.d.ts +8 -1394
  33. package/lib/esm/index.js +5 -742
  34. package/lib/esm/index.js.map +1 -1
  35. package/lib/esm/internal/console-instrumentation.d.ts +34 -0
  36. package/lib/esm/internal/console-instrumentation.js +68 -0
  37. package/lib/esm/internal/console-instrumentation.js.map +1 -0
  38. package/lib/esm/internal/identity.d.ts +16 -0
  39. package/lib/esm/internal/identity.js +159 -0
  40. package/lib/esm/internal/identity.js.map +1 -0
  41. package/lib/esm/internal/instrumentation.d.ts +47 -0
  42. package/lib/esm/internal/instrumentation.js +178 -0
  43. package/lib/esm/internal/instrumentation.js.map +1 -0
  44. package/lib/esm/internal/runtime.d.ts +376 -0
  45. package/lib/esm/internal/runtime.js +2462 -0
  46. package/lib/esm/internal/runtime.js.map +1 -0
  47. package/lib/esm/internal/types.d.ts +515 -0
  48. package/lib/esm/internal/types.js +6 -0
  49. package/lib/esm/internal/types.js.map +1 -0
  50. package/lib/esm/test-only.d.ts +5 -0
  51. package/lib/esm/test-only.js +15 -0
  52. package/lib/esm/test-only.js.map +1 -0
  53. package/lib/esm/testing.d.ts +120 -88
  54. package/lib/esm/testing.js +125 -38
  55. package/lib/esm/testing.js.map +1 -1
  56. package/lib/esm/transition-routines.d.ts +3 -0
  57. package/lib/esm/transition-routines.js +3 -0
  58. package/lib/esm/transition-routines.js.map +1 -0
  59. package/lib/esm/types.d.ts +5 -0
  60. package/lib/esm/types.js +2 -0
  61. package/lib/esm/types.js.map +1 -0
  62. package/package.json +22 -4
  63. package/lib/cjs/internal/defs.private.d.ts +0 -41
  64. package/lib/cjs/internal/defs.private.js.map +0 -1
  65. package/lib/cjs/internal/dispatch.debug.d.ts +0 -4
  66. package/lib/cjs/internal/dispatch.debug.js +0 -332
  67. package/lib/cjs/internal/dispatch.debug.js.map +0 -1
  68. package/lib/cjs/internal/dispatch.production.d.ts +0 -6
  69. package/lib/cjs/internal/dispatch.production.js +0 -241
  70. package/lib/cjs/internal/dispatch.production.js.map +0 -1
  71. package/lib/cjs/internal/dispatch.trace.d.ts +0 -4
  72. package/lib/cjs/internal/dispatch.trace.js +0 -418
  73. package/lib/cjs/internal/dispatch.trace.js.map +0 -1
  74. package/lib/cjs/internal/hsm.d.ts +0 -60
  75. package/lib/cjs/internal/hsm.js +0 -215
  76. package/lib/cjs/internal/hsm.js.map +0 -1
  77. package/lib/cjs/internal/lookup.d.ts +0 -15
  78. package/lib/cjs/internal/lookup.js +0 -32
  79. package/lib/cjs/internal/lookup.js.map +0 -1
  80. package/lib/cjs/internal/utils.d.ts +0 -26
  81. package/lib/cjs/internal/utils.js +0 -63
  82. package/lib/cjs/internal/utils.js.map +0 -1
  83. package/lib/esm/internal/defs.private.d.ts +0 -41
  84. package/lib/esm/internal/defs.private.js +0 -2
  85. package/lib/esm/internal/defs.private.js.map +0 -1
  86. package/lib/esm/internal/dispatch.debug.d.ts +0 -4
  87. package/lib/esm/internal/dispatch.debug.js +0 -328
  88. package/lib/esm/internal/dispatch.debug.js.map +0 -1
  89. package/lib/esm/internal/dispatch.production.d.ts +0 -6
  90. package/lib/esm/internal/dispatch.production.js +0 -237
  91. package/lib/esm/internal/dispatch.production.js.map +0 -1
  92. package/lib/esm/internal/dispatch.trace.d.ts +0 -4
  93. package/lib/esm/internal/dispatch.trace.js +0 -414
  94. package/lib/esm/internal/dispatch.trace.js.map +0 -1
  95. package/lib/esm/internal/hsm.d.ts +0 -60
  96. package/lib/esm/internal/hsm.js +0 -211
  97. package/lib/esm/internal/hsm.js.map +0 -1
  98. package/lib/esm/internal/lookup.d.ts +0 -15
  99. package/lib/esm/internal/lookup.js +0 -29
  100. package/lib/esm/internal/lookup.js.map +0 -1
  101. package/lib/esm/internal/utils.d.ts +0 -26
  102. package/lib/esm/internal/utils.js +0 -52
  103. package/lib/esm/internal/utils.js.map +0 -1
@@ -0,0 +1,376 @@
1
+ /** @internal Consolidated ihsm runtime (no pure types — see ./types.ts). */
2
+ import type { ActorConfig, ActorContextOf, ActorConfigOf, ActorOptions, ChildActor, ChildHsm, DispatchableMachine, EmbodimentKind, ErrorHost, ExternalActor, ExternalHsm, HandlerHsm, HsmWithTracing, InboundActor, InboundHsm, Instance, NotificationQueue, ParentActor, PlannedTransition, IPort, MachinePortInput, Properties, ProtocolIndex, RandomService, ReservedName, SelfNotifications, ServiceCallOptions, StateClass, StateEvents, Task, TimerService, TopStateArg, TraceWriter, DispatchErrorCallback, Transition, TransitionResolver, TransitionHost, TransitionRoutineExecuteOptions, TransitionRoutinePlan, TransitionTracer, Disposable, EventObserver, TransitionTraceHost, ActorIdentity, ActorLogger, Instrumentation, OutboundCallBegin, TraceFrame } from './types.js';
3
+ export declare enum TraceLevel {
4
+ PRODUCTION = 0,
5
+ DEBUG = 1,
6
+ VERBOSE_DEBUG = 2
7
+ }
8
+ /** @internal */
9
+ export declare function asError(err: unknown): Error;
10
+ /** @internal */
11
+ export declare function quoteUnknown(err: unknown): string;
12
+ /** @internal */
13
+ export declare function quoteError(err: Error): string;
14
+ /** @internal */
15
+ export declare function getInitialState<C extends ActorConfig>(State: StateClass<C>): StateClass<C>;
16
+ /** @internal */
17
+ export declare function hasInitialState<C extends ActorConfig>(State: StateClass<C>): boolean;
18
+ /** @internal */
19
+ export declare function getTransitionKey<C extends ActorConfig>(FromState: StateClass<C>, ToState: StateClass<C>): string;
20
+ export declare function defineStateName<C extends ActorConfig>(state: StateClass<C>, displayName: string): void;
21
+ /** @internal — prefers an own explicit name registered for minified browser bundles. */
22
+ export declare function getStateName<C extends ActorConfig>(state: StateClass<C>): string;
23
+ /** Production port: timers, randomness, and deferred self-notifications for one machine.
24
+ * @typeParam T - Root state **constructor** (`typeof DoorTop`), not the instance type. */
25
+ export declare class Port<T extends TopStateArg = TopStateArg> implements IPort<ActorConfigOf<T>>, RandomService {
26
+ readonly __topState: T;
27
+ actor: InboundActor<ActorConfigOf<T>> | ChildActor<ActorConfigOf<T>>;
28
+ private _deferFactory?;
29
+ protected _timerSeq: number;
30
+ protected readonly _timeoutHandles: Map<number, NodeJS.Timeout>;
31
+ protected readonly _intervalHandles: Map<number, NodeJS.Timeout>;
32
+ /** Schedule a one-shot callback after `millis` milliseconds (platform timer). */
33
+ setTimeout(callback: () => void, millis?: number): number;
34
+ /** Cancel a timer previously returned by {@link Port.setTimeout}. */
35
+ clearTimeout(id: number | undefined): void;
36
+ /** Schedule a repeating callback every `millis` milliseconds. */
37
+ setInterval(callback: () => void, millis?: number): number;
38
+ /** Cancel an interval previously returned by {@link Port.setInterval}. */
39
+ clearInterval(id: number | undefined): void;
40
+ /** Pseudorandom number in `[0, 1)` — delegates to `Math.random()`. */
41
+ random(): number;
42
+ /** Cryptographic-quality random in `[0, 1)` when the platform provides it. */
43
+ cryptoRandom(): number;
44
+ /** Generate a UUID v4 string via `crypto.randomUUID()`. */
45
+ randomUUID(): string;
46
+ /** Fill `array` with cryptographically strong random bytes. */
47
+ getRandomValues<T extends ArrayBufferView>(array: T): T;
48
+ /** @internal Wired by {@link Machine.bindPort} — do not call from application code. */
49
+ bindDeferredNotifications(factory: (ms: number) => SelfNotifications<ActorConfigOf<T>>): void;
50
+ defer(ms: number): SelfNotifications<ActorConfigOf<T>>;
51
+ }
52
+ export declare abstract class RequestingPort<T extends TopStateArg = TopStateArg> extends Port<T> {
53
+ actor: ChildActor<ActorConfigOf<T>>;
54
+ }
55
+ export declare abstract class TopState<C extends ActorConfig = ActorConfig> implements StateEvents<C> {
56
+ readonly ctx: ActorContextOf<C>;
57
+ readonly hsm: HandlerHsm<C>;
58
+ readonly notify: SelfNotifications<C>;
59
+ readonly notifyNow: SelfNotifications<C>;
60
+ constructor();
61
+ onExit(): Promise<void> | void;
62
+ onEntry(): Promise<void> | void;
63
+ onError(error: RuntimeError<C>): Promise<void> | void;
64
+ onUnhandled(error: UnhandledEventError<C>): Promise<void> | void;
65
+ }
66
+ export declare abstract class HsmError<C extends ActorConfig = ActorConfig> extends Error {
67
+ name: string;
68
+ topStateName: string;
69
+ stateName: string;
70
+ context: ActorContextOf<C>;
71
+ cause?: Error;
72
+ protected constructor(name: string, hsm: ErrorHost<C>, message: string, cause?: Error);
73
+ }
74
+ export declare abstract class RuntimeError<C extends ActorConfig = ActorConfig, EventName extends string = string> extends HsmError<C> {
75
+ eventName: EventName;
76
+ eventPayload: unknown[];
77
+ protected constructor(errorName: string, hsm: ErrorHost<C>, message: string, cause?: Error);
78
+ }
79
+ export declare class TransitionError<C extends ActorConfig = ActorConfig, EventName extends string = string> extends RuntimeError<C, EventName> {
80
+ failedStateName: string;
81
+ failedCallback: 'onExit' | 'onEntry';
82
+ fromStateName: string;
83
+ toStateName: string;
84
+ constructor(hsm: ErrorHost<C>, cause: Error, failedStateName: string, failedCallback: 'onExit' | 'onEntry', fromStateName: string, toStateName: string);
85
+ }
86
+ export declare class EventHandlerError<C extends ActorConfig = ActorConfig, EventName extends string = string> extends RuntimeError<C, EventName> {
87
+ constructor(hsm: ErrorHost<C>, cause: Error);
88
+ }
89
+ export declare class UnhandledEventError<C extends ActorConfig = ActorConfig, EventName extends string = string> extends RuntimeError<C, EventName> {
90
+ constructor(hsm: ErrorHost<C>);
91
+ }
92
+ export declare class InitialStateError<C extends ActorConfig = ActorConfig> extends Error {
93
+ targetStateName: string;
94
+ constructor(targetState: StateClass<C>);
95
+ }
96
+ export declare class FatalError<C extends ActorConfig = ActorConfig, EventName extends string = string> extends RuntimeError<C, EventName> {
97
+ constructor(hsm: ErrorHost<C>, cause: Error);
98
+ }
99
+ export declare class InitializationError<C extends ActorConfig = ActorConfig> extends HsmError<C> {
100
+ failedState: StateClass<C>;
101
+ constructor(hsm: ErrorHost<C>, failedState: StateClass<C>, cause: Error);
102
+ }
103
+ export declare class FatalErrorState extends TopState {
104
+ }
105
+ /** @internal */
106
+ export declare function lookupHandlerState<C extends ActorConfig>(hsm: HsmWithTracing<C>, eventName: PropertyKey): string | undefined;
107
+ /** @internal */
108
+ export declare function lookupEventHandler<C extends ActorConfig>(hsm: HsmWithTracing<C>, eventName: PropertyKey): ((...args: any[]) => unknown) | undefined;
109
+ export declare function InitialState<C extends ActorConfig>(TargetState: StateClass<C>): void;
110
+ export declare function registerStateNames(exports: Record<string, unknown>): void;
111
+ /** Thrown at construction when `Config`, state handlers, and the protocol index disagree. */
112
+ export declare class ProtocolCollisionError extends Error {
113
+ readonly stateClass?: string | undefined;
114
+ readonly symbol?: string | undefined;
115
+ private constructor();
116
+ static reservedOnState(stateClass: string, symbol: ReservedName): ProtocolCollisionError;
117
+ }
118
+ /** Per–root-state registry of state classes for protocol scanning. */
119
+ export declare class StateGraph {
120
+ private readonly states;
121
+ register(state: StateClass): void;
122
+ collect(topState: StateClass): StateClass[];
123
+ static forRoot(root: StateClass): StateGraph;
124
+ private static collectAlongPrototypeChain;
125
+ }
126
+ export declare function cacheProtocolIndex(topState: object, index: ProtocolIndex): ProtocolIndex;
127
+ export declare function protocolIndexFor(topState: object): ProtocolIndex | undefined;
128
+ export declare const ReservedNames: readonly ["ctx", "hsm", "notify", "notifyNow", "onEntry", "onExit", "onError", "onUnhandled"];
129
+ /** Build a protocol index by scanning handler methods on the state graph (`async` → services, otherwise notifications). */
130
+ export declare function buildProtocolIndex(topState: StateClass): ProtocolIndex;
131
+ /** Thrown when a service client call exceeds `{ timeoutMs }`. */
132
+ export declare class CallTimeoutError extends Error {
133
+ readonly method: string;
134
+ constructor(method: string);
135
+ }
136
+ export declare const kMachine: unique symbol;
137
+ /** @internal Actor handle prototype bag used when wiring generated facets. */
138
+ export interface HandleOwn extends Record<symbol | string, unknown> {
139
+ [kMachine]: DispatchableMachine;
140
+ ctx?: unknown;
141
+ hsm: unknown;
142
+ parent?: ParentActor;
143
+ }
144
+ export declare function isServiceCallOptions(value: unknown): value is ServiceCallOptions;
145
+ export declare function splitServiceArgs(args: readonly unknown[]): {
146
+ callArgs: unknown[];
147
+ timeoutMs: number | undefined;
148
+ };
149
+ /**
150
+ * Race a service-call promise against a `timeoutMs` deadline.
151
+ *
152
+ * The deadline is armed through `timer` — the actor's port timer service — so that under a
153
+ * {@link TestPort} virtual clock a call timeout is driven by `port.advance(...)` and stays
154
+ * fully deterministic. When no port timer is available the host timer is used (production
155
+ * `Port` already delegates to the host timer, so behaviour there is unchanged).
156
+ */
157
+ export declare function serviceCallWithTimeout<T>(promise: Promise<T>, method: string, timeoutMs: number, timer?: TimerService): Promise<T>;
158
+ /** @internal */
159
+ export declare function createActorHandle(machine: DispatchableMachine, topState: object, index: ProtocolIndex, kind: EmbodimentKind): HandleOwn;
160
+ /** @internal */
161
+ export declare function getSelfNotificationsProto(topState: object, index: ProtocolIndex, queue: NotificationQueue): object;
162
+ export declare function createSelfNotifications(machine: DispatchableMachine, topState: object, index: ProtocolIndex, queue: NotificationQueue): HandleOwn;
163
+ /** Thrown in debug builds when a service targets the machine currently dispatching. */
164
+ export declare class SelfCallDeadlockError extends Error {
165
+ constructor();
166
+ }
167
+ type DispatchToken = {
168
+ machine: DispatchableMachine;
169
+ actorUuid?: string;
170
+ macrostepId?: string;
171
+ stepSeq?: number;
172
+ };
173
+ interface InstrumentationHost {
174
+ onTaskBegin(task: Task): void;
175
+ onTaskEnd(task: Task, outcome: 'ok' | 'error'): void;
176
+ onQueuesDrained(): void;
177
+ onDispatchError(err: Error): void;
178
+ }
179
+ type AsyncLocalStorageCtor = new <T>() => {
180
+ run<R>(store: T, fn: () => R): R;
181
+ getStore(): T | undefined;
182
+ };
183
+ type DispatchAsyncLocalStorage = InstanceType<AsyncLocalStorageCtor>;
184
+ /**
185
+ * Lazy Node AsyncLocalStorage for non-production deadlock detection.
186
+ * State lives in a closure — no exported mutable slot.
187
+ */
188
+ export declare const dispatchContext: {
189
+ get: () => DispatchAsyncLocalStorage | undefined;
190
+ resetInit: () => void;
191
+ markUnavailable: () => void;
192
+ };
193
+ /**
194
+ * Best-effort current runtime trace anchor (`actorUuid`, `macrostepId`, `stepSeq`) for user code.
195
+ * Returns `undefined` when called outside an active handler dispatch turn.
196
+ */
197
+ export declare function currentTraceAnchor(): {
198
+ readonly actorUuid: string;
199
+ readonly macrostepId?: string;
200
+ readonly stepSeq?: number;
201
+ } | undefined;
202
+ /** Thrown when a generated transition table's graph hash does not match the scanned hierarchy. */
203
+ export declare class TransitionTableError extends Error {
204
+ constructor(message: string);
205
+ }
206
+ /** Compute the LCA transition path (same algorithm as `dispatch.production.ts`). */
207
+ export declare function planTransitionClasses<C extends ActorConfig>(srcState: StateClass<C>, destState: StateClass<C>): PlannedTransition<C>;
208
+ /**
209
+ * Execute a planned transition path with production or verbose semantics.
210
+ *
211
+ * Used by the runtime dispatch layer, generated transition tables (`@ihsm/tools`), and oracle tests.
212
+ */
213
+ export declare function executeTransitionRoutine<C extends ActorConfig>(hsm: TransitionHost<C>, instance: object, plan: TransitionRoutinePlan<C> | PlannedTransition<C>, srcState: StateClass<C>, dstState: StateClass<C>, options?: TransitionRoutineExecuteOptions<C>): Promise<void>;
214
+ export declare function createTransitionTracer(hsm: TransitionTraceHost): TransitionTracer;
215
+ /** Collect canonical transition trace lines (for oracle comparison). */
216
+ export declare function transitionTraceLines(lines: readonly string[]): string[];
217
+ export declare class RuntimeTransitionResolver<C extends ActorConfig = ActorConfig> implements TransitionResolver<C> {
218
+ private readonly cache;
219
+ hasCached(src: StateClass<C>, dest: StateClass<C>): boolean;
220
+ resolve(src: StateClass<C>, dest: StateClass<C>): Transition<C>;
221
+ }
222
+ /** @internal */
223
+ export declare function executePendingTransition<C extends ActorConfig>(host: HsmWithTracing<C>, resolver: TransitionResolver<C>): Promise<void>;
224
+ /** @internal */
225
+ export declare function createInitTask<C extends ActorConfig>(host: HsmWithTracing<C>, resolver: TransitionResolver<C>): Task;
226
+ /** @internal */
227
+ export declare function createNotificationTask<C extends ActorConfig>(host: HsmWithTracing<C>, resolver: TransitionResolver<C>, name: string, args: readonly unknown[]): Task;
228
+ /** @internal */
229
+ export declare function createServiceTask<C extends ActorConfig>(host: HsmWithTracing<C>, resolver: TransitionResolver<C>, name: string, args: readonly unknown[], resolve: (value: unknown) => void, reject: (error: Error) => void): Task;
230
+ /** @internal */
231
+ export declare class HsmObject<C extends ActorConfig> implements HsmWithTracing<C> {
232
+ topState: StateClass<C>;
233
+ topStateName: string;
234
+ readonly ctxTypeName: string;
235
+ traceWriter: TraceWriter;
236
+ readonly actorUuid: string;
237
+ readonly actorName: string;
238
+ readonly actorPath: string;
239
+ /** @internal */
240
+ _instance: Instance<C>;
241
+ /** @internal */
242
+ _jobs: Task[];
243
+ /** @internal */
244
+ _hiPriorityJobs: Task[];
245
+ private _isRunning;
246
+ _transitionState?: StateClass<C>;
247
+ _currentEventName?: string;
248
+ _currentEventPayload?: unknown[];
249
+ private _observers?;
250
+ dispatchErrorCallback: DispatchErrorCallback<C>;
251
+ private _traceLevel;
252
+ private _traceDomainStack;
253
+ protected _instrumentationHost?: InstrumentationHost;
254
+ private _drainWaiters;
255
+ constructor(TopState: StateClass<C>, instance: Instance<C>, traceWriter: TraceWriter, traceLevel: TraceLevel, dispatchErrorCallback: DispatchErrorCallback<C>, identity: ActorIdentity);
256
+ get ctx(): ActorContextOf<C>;
257
+ set ctx(ctx: ActorContextOf<C>);
258
+ get port(): unknown;
259
+ /** The bound port when it provides a timer service, so service-call timeouts honour a virtual clock. */
260
+ get callTimer(): TimerService | undefined;
261
+ get eventName(): string;
262
+ get eventPayload(): unknown[];
263
+ get currentStateName(): string;
264
+ get currentState(): StateClass<C>;
265
+ set currentState(newState: StateClass<C>);
266
+ subscribe(observer: EventObserver): Disposable;
267
+ private _notifyObservers;
268
+ protected recordObserverEvent(eventName: string | number | symbol, eventPayload: unknown[]): void;
269
+ transition(nextState: StateClass<C>): void;
270
+ unhandled(): never;
271
+ get traceLevel(): TraceLevel;
272
+ set traceLevel(traceLevel: TraceLevel);
273
+ /**
274
+ * Resolve when the actor next reaches stability (mailbox fully drained).
275
+ *
276
+ * The resolver fires at the queue-drain point — *after* {@link InstrumentationHost.onQueuesDrained}
277
+ * — so the closing `macrostep.end` and the macrostep-boundary reset are observable before `sync()`
278
+ * resolves, and a subsequent external stimulus deterministically starts its own macrostep. The
279
+ * pushed task is a no-op (internal) whose only purpose is to guarantee a drain cycle occurs.
280
+ */
281
+ sync(): Promise<void>;
282
+ /** Invoke the user dispatch-error callback, first notifying instrumentation (pure observer). */
283
+ reportDispatchError(err: Error): void;
284
+ private flushDrainWaiters;
285
+ pushTask(t: Task): void;
286
+ pushHiPriorityTask(t: Task): void;
287
+ unshiftHiPriorityTask(t: Task): void;
288
+ private enqueueTask;
289
+ restore(state: StateClass<C>, ctx: ActorContextOf<C>): void;
290
+ private dequeue;
291
+ private exec;
292
+ private runTask;
293
+ private drainHiPriority;
294
+ _tracePush(d: string, msg: string): void;
295
+ _tracePopDone(msg: string): void;
296
+ _tracePopError(msg: string): void;
297
+ _traceWrite(msg: any): void;
298
+ get traceHeader(): string;
299
+ get traceFrames(): readonly TraceFrame[];
300
+ }
301
+ export declare class Machine<C extends ActorConfig> extends HsmObject<C> implements InstrumentationHost {
302
+ readonly transitionResolver: TransitionResolver<C>;
303
+ readonly identity: ActorIdentity;
304
+ readonly instrumentation?: Instrumentation<C>;
305
+ private _dispatchStrategy;
306
+ private readonly protocolIndex;
307
+ private readonly handlerFacade;
308
+ private readonly selfActor;
309
+ private readonly selfImmediate;
310
+ private readonly actorFacades;
311
+ private _macrostepCounter;
312
+ private _currentMacrostep?;
313
+ private _microstepFromState?;
314
+ private readonly _childSpawnCounters;
315
+ private _nextTraceCallId;
316
+ private _proxiedPort?;
317
+ constructor(topState: StateClass<C>, instance: {
318
+ ctx: ActorContextOf<C>;
319
+ hsm: HandlerHsm<C>;
320
+ portRef?: unknown;
321
+ }, protocolIndex: ProtocolIndex, traceWriter: TraceWriter, traceLevel: TraceLevel, dispatchErrorCallback: DispatchErrorCallback<C>, initialize: boolean, identity: ActorIdentity, instrumentation: Instrumentation<C> | undefined, transitionResolver?: TransitionResolver<C>);
322
+ allocateChildSpawnIndex(childTopName: string): number;
323
+ needsDispatchContext(): boolean;
324
+ buildDispatchToken(): DispatchToken;
325
+ private readDispatchCause;
326
+ private nextTraceCallId;
327
+ private beginPortCall;
328
+ private endPortCall;
329
+ beginOutboundCall(service: string, targetUuid?: string): OutboundCallBegin | undefined;
330
+ endOutboundCall(begin: OutboundCallBegin | undefined, outcome: 'ok' | 'error', error?: Error): void;
331
+ private slotBucket;
332
+ onTaskBegin(task: Task): void;
333
+ onTaskEnd(task: Task, outcome: 'ok' | 'error'): void;
334
+ onDispatchError(err: Error): void;
335
+ onQueuesDrained(): void;
336
+ private resolveEnqueueCause;
337
+ private enqueueWithInstrumentation;
338
+ get traceLevel(): TraceLevel;
339
+ set traceLevel(traceLevel: TraceLevel);
340
+ dispatchService(name: string, args: unknown[]): Promise<unknown>;
341
+ dispatchNotification(name: string, args: unknown[], queue: NotificationQueue): void;
342
+ actorHsmFor(kind: EmbodimentKind): ExternalHsm<C> | InboundHsm<C> | ChildHsm<C>;
343
+ private scheduleNotification;
344
+ private enqueueTimerNotification;
345
+ private _actorLogger?;
346
+ /** Severity-typed handler logger surfaced as `this.hsm.log.*` (CORE-F, §4.10.1). */
347
+ get logger(): ActorLogger;
348
+ private emitUserLog;
349
+ /** @internal Binds deferred self-notifications to a port instance. */
350
+ bindPort(portRef: unknown): void;
351
+ private buildHandlerFacade;
352
+ private createDeferredSelfNotifications;
353
+ private buildActorHsm;
354
+ }
355
+ export declare function isRequestingPort(port: unknown): boolean;
356
+ /** @internal */
357
+ export declare const defaultTraceWriter: TraceWriter;
358
+ /** @internal */
359
+ export declare const defaultInitialize = true;
360
+ /** @internal */
361
+ export declare function defaultDispatchErrorCallback<C extends ActorConfig>(hsm: Properties<C>, err: Error): void;
362
+ type ActorHandleFor<C extends ActorConfig, K extends EmbodimentKind> = K extends 'root' ? ExternalActor<C> : K extends 'inbound' ? InboundActor<C> : ChildActor<C>;
363
+ type SpawnContext<C extends ActorConfig = ActorConfig> = {
364
+ readonly parentMachine?: Machine<C>;
365
+ };
366
+ /** @internal Spawn with embodiment kind — used by factories and `ihsm/testing`. */
367
+ export declare function spawnActor<C extends ActorConfig, K extends EmbodimentKind>(kind: K, topState: TopStateArg<C>, ctx: ActorContextOf<C>, port: MachinePortInput<C> | undefined, options: ActorOptions<C>, spawnContext?: SpawnContext<C>): ActorHandleFor<C, K>;
368
+ /** Production black-box — public protocol only (generated handle). */
369
+ export declare function makeActor<T extends TopStateArg<ActorConfig>>(topState: T, ctx: ActorContextOf<ActorConfigOf<T>>, port?: MachinePortInput<ActorConfigOf<T>>, options?: ActorOptions<ActorConfigOf<T>>): ExternalActor<ActorConfigOf<T>>;
370
+ export declare function asParentActor<T extends TopStateArg<ActorConfig>>(handler: TopState<ActorConfigOf<T>>): ParentActor<T>;
371
+ /** Parent composes a child machine — returns full child protocol shell with `parent` set. */
372
+ export declare function makeChildActor<ParentT extends TopStateArg<ActorConfig>, ChildT extends TopStateArg<ActorConfig>>(parent: ParentActor<ParentT>, childTop: ChildT, childCtx: ActorContextOf<ActorConfigOf<ChildT>>, port?: MachinePortInput<ActorConfigOf<ChildT>>, options?: ActorOptions<ActorConfigOf<ChildT>>): ChildActor<ActorConfigOf<ChildT>> & {
373
+ readonly parent: ParentActor<ParentT>;
374
+ };
375
+ export { kHandlerMachine, kParentLink } from './types.js';
376
+ export { configureRunSeed, getRunSeed, getRunNamespace, actorNameFromTopState, mintActorIdentity, rootActorPath, childActorPath } from './identity.js';