@rivetkit/effect 0.0.0-06-09-refactor-rivetkit-split-workflow-context-into-workflowcontext-workflowstepcontext.e0c9540

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 (89) hide show
  1. package/dist/Action.d.ts +104 -0
  2. package/dist/Action.d.ts.map +1 -0
  3. package/dist/Action.js +50 -0
  4. package/dist/Action.js.map +1 -0
  5. package/dist/Actor.d.ts +133 -0
  6. package/dist/Actor.d.ts.map +1 -0
  7. package/dist/Actor.js +104 -0
  8. package/dist/Actor.js.map +1 -0
  9. package/dist/Client.d.ts +31 -0
  10. package/dist/Client.d.ts.map +1 -0
  11. package/dist/Client.js +98 -0
  12. package/dist/Client.js.map +1 -0
  13. package/dist/Logger.d.ts +29 -0
  14. package/dist/Logger.d.ts.map +1 -0
  15. package/dist/Logger.js +31 -0
  16. package/dist/Logger.js.map +1 -0
  17. package/dist/Registry.d.ts +72 -0
  18. package/dist/Registry.d.ts.map +1 -0
  19. package/dist/Registry.js +125 -0
  20. package/dist/Registry.js.map +1 -0
  21. package/dist/RivetError.d.ts +438 -0
  22. package/dist/RivetError.d.ts.map +1 -0
  23. package/dist/RivetError.js +873 -0
  24. package/dist/RivetError.js.map +1 -0
  25. package/dist/State.d.ts +123 -0
  26. package/dist/State.d.ts.map +1 -0
  27. package/dist/State.js +104 -0
  28. package/dist/State.js.map +1 -0
  29. package/dist/internal/ActionDispatcher.d.ts +14 -0
  30. package/dist/internal/ActionDispatcher.d.ts.map +1 -0
  31. package/dist/internal/ActionDispatcher.js +100 -0
  32. package/dist/internal/ActionDispatcher.js.map +1 -0
  33. package/dist/internal/ActionErrorEnvelope.d.ts +11 -0
  34. package/dist/internal/ActionErrorEnvelope.d.ts.map +1 -0
  35. package/dist/internal/ActionErrorEnvelope.js +14 -0
  36. package/dist/internal/ActionErrorEnvelope.js.map +1 -0
  37. package/dist/internal/ActorInstanceManager.d.ts +28 -0
  38. package/dist/internal/ActorInstanceManager.d.ts.map +1 -0
  39. package/dist/internal/ActorInstanceManager.js +51 -0
  40. package/dist/internal/ActorInstanceManager.js.map +1 -0
  41. package/dist/internal/ActorStateAdapter.d.ts +18 -0
  42. package/dist/internal/ActorStateAdapter.d.ts.map +1 -0
  43. package/dist/internal/ActorStateAdapter.js +29 -0
  44. package/dist/internal/ActorStateAdapter.js.map +1 -0
  45. package/dist/internal/StateOptions.d.ts +12 -0
  46. package/dist/internal/StateOptions.d.ts.map +1 -0
  47. package/dist/internal/StateOptions.js +2 -0
  48. package/dist/internal/StateOptions.js.map +1 -0
  49. package/dist/internal/logging.d.ts +23 -0
  50. package/dist/internal/logging.d.ts.map +1 -0
  51. package/dist/internal/logging.js +162 -0
  52. package/dist/internal/logging.js.map +1 -0
  53. package/dist/internal/tracing.d.ts +23 -0
  54. package/dist/internal/tracing.d.ts.map +1 -0
  55. package/dist/internal/tracing.js +30 -0
  56. package/dist/internal/tracing.js.map +1 -0
  57. package/dist/internal/utils.d.ts +7 -0
  58. package/dist/internal/utils.d.ts.map +1 -0
  59. package/dist/internal/utils.js +7 -0
  60. package/dist/internal/utils.js.map +1 -0
  61. package/dist/mod.d.ts +8 -0
  62. package/dist/mod.d.ts.map +1 -0
  63. package/dist/mod.js +8 -0
  64. package/dist/mod.js.map +1 -0
  65. package/package.json +46 -0
  66. package/src/Action.ts +231 -0
  67. package/src/Actor.test-d.ts +603 -0
  68. package/src/Actor.test.ts +206 -0
  69. package/src/Actor.ts +550 -0
  70. package/src/Client.test.ts +210 -0
  71. package/src/Client.ts +216 -0
  72. package/src/Logger.ts +43 -0
  73. package/src/Registry.test-d.ts +126 -0
  74. package/src/Registry.test.ts +411 -0
  75. package/src/Registry.ts +243 -0
  76. package/src/RivetError.test.ts +188 -0
  77. package/src/RivetError.ts +1044 -0
  78. package/src/State.test.ts +181 -0
  79. package/src/State.ts +224 -0
  80. package/src/internal/ActionDispatcher.ts +192 -0
  81. package/src/internal/ActionErrorEnvelope.ts +19 -0
  82. package/src/internal/ActorInstanceManager.ts +143 -0
  83. package/src/internal/ActorStateAdapter.ts +88 -0
  84. package/src/internal/StateOptions.ts +17 -0
  85. package/src/internal/logging.test.ts +288 -0
  86. package/src/internal/logging.ts +237 -0
  87. package/src/internal/tracing.ts +42 -0
  88. package/src/internal/utils.ts +12 -0
  89. package/src/mod.ts +7 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RivetError.js","sourceRoot":"","sources":["../src/RivetError.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * `State` is a typed view over an actor's persisted state, plus a
3
+ * subscribable stream of every change.
4
+ *
5
+ * Unlike a `Ref`, `State` has no in-memory cell — the persisted store
6
+ * is the source of truth. Reads decode the live store on demand;
7
+ * writes encode and overwrite it. A `PubSub<A>` backs {@link changes}
8
+ * and is fed externally — the runtime publishes to it from rivetkit's
9
+ * `onStateChange` callback so subscribers see every committed change,
10
+ * including ones initiated outside the SDK.
11
+ *
12
+ * Read and write are Effect-typed so schemas with asynchronous
13
+ * transforms (or service requirements) are supported. `update` and
14
+ * `modify` serialize through a per-`State` semaphore so read/apply/
15
+ * write triples are atomic across fibers; `set` shares the same lock
16
+ * so all writes are linearized.
17
+ *
18
+ * The PubSub uses replay = 1, matching `SubscriptionRef`: a new
19
+ * subscriber immediately sees the most recent value.
20
+ */
21
+ import { Effect, Inspectable, Pipeable, PubSub, Semaphore, Stream, type Types } from "effect";
22
+ declare const TypeId = "~@rivetkit/effect/State";
23
+ /**
24
+ * A view over a persisted state cell with a subscribable change stream.
25
+ *
26
+ * - `A` — the value type
27
+ * - `E` — the read/write closures' failure type (e.g. a schema's
28
+ * `SchemaError` when read/write decode/encode against a schema)
29
+ * - `R` — the read/write closures' service requirements
30
+ */
31
+ export interface State<A, E = never, R = never> extends Variance<A, E, R>, Pipeable.Pipeable, Inspectable.Inspectable {
32
+ readonly read: () => Effect.Effect<A, E, R>;
33
+ readonly write: (value: A) => Effect.Effect<void, E, R>;
34
+ readonly pubsub: PubSub.PubSub<A>;
35
+ /**
36
+ * Serializes writes (`set`, `update`, `modify`) so the read/apply/
37
+ * write triple is atomic. The runtime may also use this semaphore
38
+ * to serialize its own decode-and-publish work from
39
+ * `onStateChange`, keeping the change stream's order consistent
40
+ * with the write order.
41
+ */
42
+ readonly semaphore: Semaphore.Semaphore;
43
+ }
44
+ export declare const isState: (u: unknown) => u is State<unknown, unknown>;
45
+ export interface Variance<A, E, R> {
46
+ readonly [TypeId]: {
47
+ readonly _A: Types.Invariant<A>;
48
+ readonly _E: Types.Covariant<E>;
49
+ readonly _R: Types.Covariant<R>;
50
+ };
51
+ }
52
+ /**
53
+ * Creates a `State` from `read` and `write` closures over the
54
+ * underlying store. The closures are responsible for any
55
+ * encoding/decoding; `State` itself is schema-agnostic.
56
+ *
57
+ * The current value (per `read()`) is published to the pubsub on
58
+ * construction so any subscription obtained later replays it.
59
+ *
60
+ * The PubSub is not explicitly shut down — it's reclaimed by GC when
61
+ * the `State` and any subscribers become unreachable.
62
+ */
63
+ export declare const make: <A, E, R>(read: () => Effect.Effect<A, E, R>, write: (value: A) => Effect.Effect<void, E, R>) => Effect.Effect<State<A, E, R>, E, R>;
64
+ /**
65
+ * Reads the current value.
66
+ */
67
+ export declare const get: <A, E, R>(self: State<A, E, R>) => Effect.Effect<A, E, R>;
68
+ /**
69
+ * Replaces the value. Serialized with `update` / `modify` so writes
70
+ * happen in invocation order.
71
+ */
72
+ export declare const set: {
73
+ <A>(value: A): <E, R>(self: State<A, E, R>) => Effect.Effect<void, E, R>;
74
+ <A, E, R>(self: State<A, E, R>, value: A): Effect.Effect<void, E, R>;
75
+ };
76
+ /**
77
+ * Updates the value by applying `f` to the current value. The
78
+ * read/apply/write triple is atomic across fibers.
79
+ */
80
+ export declare const update: {
81
+ <A>(f: (a: A) => A): <E, R>(self: State<A, E, R>) => Effect.Effect<void, E, R>;
82
+ <A, E, R>(self: State<A, E, R>, f: (a: A) => A): Effect.Effect<void, E, R>;
83
+ };
84
+ /**
85
+ * Updates the value by applying `f` and returns the new value. The
86
+ * read/apply/write triple is atomic across fibers.
87
+ */
88
+ export declare const updateAndGet: {
89
+ <A>(f: (a: A) => A): <E, R>(self: State<A, E, R>) => Effect.Effect<A, E, R>;
90
+ <A, E, R>(self: State<A, E, R>, f: (a: A) => A): Effect.Effect<A, E, R>;
91
+ };
92
+ /**
93
+ * Atomically replaces the value with the second element of `f(prev)`
94
+ * and returns the first. The read/apply/write triple is atomic across
95
+ * fibers.
96
+ */
97
+ export declare const modify: {
98
+ <A, B>(f: (a: A) => readonly [B, A]): <E, R>(self: State<A, E, R>) => Effect.Effect<B, E, R>;
99
+ <A, E, R, B>(self: State<A, E, R>, f: (a: A) => readonly [B, A]): Effect.Effect<B, E, R>;
100
+ };
101
+ /**
102
+ * Stream of every value published to this `State`. New subscribers
103
+ * immediately see the most recent value (replay = 1), then every
104
+ * subsequent publish.
105
+ */
106
+ export declare const changes: <A, E, R>(self: State<A, E, R>) => Stream.Stream<A>;
107
+ /**
108
+ * Publish a value to the change stream as an `Effect`. Does not
109
+ * modify the underlying store.
110
+ */
111
+ export declare const publish: {
112
+ <A>(value: A): <E, R>(self: State<A, E, R>) => Effect.Effect<boolean>;
113
+ <A, E, R>(self: State<A, E, R>, value: A): Effect.Effect<boolean>;
114
+ };
115
+ /**
116
+ * Synchronous variant of {@link publish}. Returns `true` when the
117
+ * publish succeeded, `false` if the pubsub is shut down. The runtime
118
+ * uses this from rivetkit's `onStateChange` callback to feed the
119
+ * change stream.
120
+ */
121
+ export declare const publishUnsafe: <A, E, R>(self: State<A, E, R>, value: A) => boolean;
122
+ export {};
123
+ //# sourceMappingURL=State.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.d.ts","sourceRoot":"","sources":["../src/State.ts"],"names":[],"mappings":"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"}
package/dist/State.js ADDED
@@ -0,0 +1,104 @@
1
+ /**
2
+ * `State` is a typed view over an actor's persisted state, plus a
3
+ * subscribable stream of every change.
4
+ *
5
+ * Unlike a `Ref`, `State` has no in-memory cell — the persisted store
6
+ * is the source of truth. Reads decode the live store on demand;
7
+ * writes encode and overwrite it. A `PubSub<A>` backs {@link changes}
8
+ * and is fed externally — the runtime publishes to it from rivetkit's
9
+ * `onStateChange` callback so subscribers see every committed change,
10
+ * including ones initiated outside the SDK.
11
+ *
12
+ * Read and write are Effect-typed so schemas with asynchronous
13
+ * transforms (or service requirements) are supported. `update` and
14
+ * `modify` serialize through a per-`State` semaphore so read/apply/
15
+ * write triples are atomic across fibers; `set` shares the same lock
16
+ * so all writes are linearized.
17
+ *
18
+ * The PubSub uses replay = 1, matching `SubscriptionRef`: a new
19
+ * subscriber immediately sees the most recent value.
20
+ */
21
+ import { Effect, Inspectable, identity, Pipeable, Predicate, PubSub, Semaphore, Stream, } from "effect";
22
+ import { dual } from "effect/Function";
23
+ const TypeId = "~@rivetkit/effect/State";
24
+ export const isState = (u) => Predicate.hasProperty(u, TypeId);
25
+ const Proto = {
26
+ ...Pipeable.Prototype,
27
+ ...Inspectable.BaseProto,
28
+ [TypeId]: { _A: identity, _E: identity, _R: identity },
29
+ toJSON() {
30
+ return { _id: "State" };
31
+ },
32
+ };
33
+ /**
34
+ * Creates a `State` from `read` and `write` closures over the
35
+ * underlying store. The closures are responsible for any
36
+ * encoding/decoding; `State` itself is schema-agnostic.
37
+ *
38
+ * The current value (per `read()`) is published to the pubsub on
39
+ * construction so any subscription obtained later replays it.
40
+ *
41
+ * The PubSub is not explicitly shut down — it's reclaimed by GC when
42
+ * the `State` and any subscribers become unreachable.
43
+ */
44
+ export const make = Effect.fnUntraced(function* (read, write) {
45
+ const pubsub = yield* PubSub.unbounded({ replay: 1 });
46
+ const initial = yield* read();
47
+ PubSub.publishUnsafe(pubsub, initial);
48
+ const self = Object.create(Proto);
49
+ self.read = read;
50
+ self.write = write;
51
+ self.pubsub = pubsub;
52
+ self.semaphore = Semaphore.makeUnsafe(1);
53
+ return self;
54
+ });
55
+ /**
56
+ * Reads the current value.
57
+ */
58
+ export const get = (self) => self.read();
59
+ /**
60
+ * Replaces the value. Serialized with `update` / `modify` so writes
61
+ * happen in invocation order.
62
+ */
63
+ export const set = dual(2, (self, value) => Semaphore.withPermit(self.semaphore, self.write(value)));
64
+ /**
65
+ * Updates the value by applying `f` to the current value. The
66
+ * read/apply/write triple is atomic across fibers.
67
+ */
68
+ export const update = dual(2, (self, f) => Semaphore.withPermit(self.semaphore, Effect.flatMap(self.read(), (a) => self.write(f(a)))));
69
+ /**
70
+ * Updates the value by applying `f` and returns the new value. The
71
+ * read/apply/write triple is atomic across fibers.
72
+ */
73
+ export const updateAndGet = dual(2, (self, f) => Semaphore.withPermit(self.semaphore, Effect.flatMap(self.read(), (a) => {
74
+ const next = f(a);
75
+ return Effect.as(self.write(next), next);
76
+ })));
77
+ /**
78
+ * Atomically replaces the value with the second element of `f(prev)`
79
+ * and returns the first. The read/apply/write triple is atomic across
80
+ * fibers.
81
+ */
82
+ export const modify = dual(2, (self, f) => Semaphore.withPermit(self.semaphore, Effect.flatMap(self.read(), (a) => {
83
+ const [b, next] = f(a);
84
+ return Effect.as(self.write(next), b);
85
+ })));
86
+ /**
87
+ * Stream of every value published to this `State`. New subscribers
88
+ * immediately see the most recent value (replay = 1), then every
89
+ * subsequent publish.
90
+ */
91
+ export const changes = (self) => Stream.fromPubSub(self.pubsub);
92
+ /**
93
+ * Publish a value to the change stream as an `Effect`. Does not
94
+ * modify the underlying store.
95
+ */
96
+ export const publish = dual(2, (self, value) => PubSub.publish(self.pubsub, value));
97
+ /**
98
+ * Synchronous variant of {@link publish}. Returns `true` when the
99
+ * publish succeeded, `false` if the pubsub is shut down. The runtime
100
+ * uses this from rivetkit's `onStateChange` callback to feed the
101
+ * change stream.
102
+ */
103
+ export const publishUnsafe = (self, value) => PubSub.publishUnsafe(self.pubsub, value);
104
+ //# sourceMappingURL=State.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"State.js","sourceRoot":"","sources":["../src/State.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { Effect, type Fiber } from "effect";
2
+ import * as Rivetkit from "rivetkit";
3
+ import type * as Action from "../Action.ts";
4
+ import type { ActionHandlersFrom, Actor } from "../Actor.ts";
5
+ import type * as Client from "../Client.ts";
6
+ export type Instance<ActionHandlers> = {
7
+ readonly actionHandlers: ActionHandlers;
8
+ readonly runFork: <A, E>(effect: Effect.Effect<A, E, any>, options?: Effect.RunOptions) => Fiber.Fiber<A, E>;
9
+ };
10
+ export declare const make: <Name extends string, Actions extends Action.AnyWithProps, ActionHandlers extends ActionHandlersFrom<Actions>, ActorDefinition extends Rivetkit.AnyActorDefinition>({ actor, getInstance, }: {
11
+ readonly actor: Actor<Name, Actions>;
12
+ readonly getInstance: (actorId: string) => Instance<ActionHandlers> | undefined;
13
+ }) => Record<string, (c: Rivetkit.ActionContextOf<ActorDefinition>, payload: Action.Payload<Actions>, meta?: Client.ActionMeta) => Promise<unknown>>;
14
+ //# sourceMappingURL=ActionDispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionDispatcher.d.ts","sourceRoot":"","sources":["../../src/internal/ActionDispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,MAAM,EAEN,KAAK,KAAK,EAKV,MAAM,QAAQ,CAAC;AAChB,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,KAAK,KAAK,MAAM,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EACX,kBAAkB,EAElB,KAAK,EACL,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,KAAK,MAAM,MAAM,cAAc,CAAC;AAM5C,MAAM,MAAM,QAAQ,CAAC,cAAc,IAAI;IACtC,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,KACvB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,IAAI,GAChB,IAAI,SAAS,MAAM,EACnB,OAAO,SAAS,MAAM,CAAC,YAAY,EACnC,cAAc,SAAS,kBAAkB,CAAC,OAAO,CAAC,EAClD,eAAe,SAAS,QAAQ,CAAC,kBAAkB,EAClD,yBAGC;IACF,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,CACrB,OAAO,EAAE,MAAM,KACX,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,CAAC;CAC1C,wBAeM,QAAQ,CAAC,eAAe,CAAC,eAAe,CAAC,WACnC,MAAM,CAAC,OAAO,SAAe,SAC/B,MAAM,CAAC,UAAU,sBA6HzB,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { Cause, Effect, Exit, Option, Record, Schema, Tracer, } from "effect";
2
+ import * as Rivetkit from "rivetkit";
3
+ import * as ActionErrorEnvelope from "./ActionErrorEnvelope.js";
4
+ import { makeActorLogAnnotations } from "./logging.js";
5
+ import { readTraceMeta, rpcSystem } from "./tracing.js";
6
+ import { hasStringProperty } from "./utils.js";
7
+ export const make = ({ actor, getInstance, }) => Record.fromIterableWith(actor.actions, (action) => {
8
+ const decodePayload = Schema.decodeUnknownEffect(Schema.toCodecJson(action.payloadSchema));
9
+ const encodeSuccess = Schema.encodeEffect(Schema.toCodecJson(action.successSchema));
10
+ const encodeError = Schema.encodeEffect(Schema.toCodecJson(action.errorSchema));
11
+ return [
12
+ action._tag,
13
+ async (c, payload, meta) => {
14
+ // Always wrap in a server-side span so the handler has a
15
+ // live `currentSpan` even when the caller didn't ship trace
16
+ // context (e.g., a non-Effect-SDK client). When trace context
17
+ // is present, reattach it as the parent so the server span
18
+ // joins the caller's trace.
19
+ const rpcMethod = `${actor.name}/${action._tag}`;
20
+ const traceMeta = readTraceMeta(meta);
21
+ const instance = getInstance(c.actorId);
22
+ if (!instance) {
23
+ if (c.abortSignal.aborted)
24
+ throw makeActorAbortedError();
25
+ throw new Error("actor instance missing");
26
+ }
27
+ const actionEffect = Effect.gen(function* () {
28
+ // The handler map is keyed by the same action
29
+ // definitions being registered here, but
30
+ // TypeScript loses that relationship once the
31
+ // actions are widened into the RivetKit actions
32
+ // record.
33
+ const actionHandler = instance.actionHandlers[action._tag];
34
+ // Raw RivetKit clients call no-argument actions with an
35
+ // absent first argument. The Effect JSON Void codec expects
36
+ // null, so adapt only actions that declared no payload.
37
+ const payloadForDecode = !action.hasPayload && payload === undefined
38
+ ? null
39
+ : payload;
40
+ const decodedPayload = yield* decodePayload(payloadForDecode).pipe(Effect.mapError(() => new Rivetkit.RivetError("request", "invalid", `Invalid payload for action ${actor.name}/${action._tag}`)));
41
+ // The payload was decoded with this action's schema,
42
+ // so this is the runtime boundary that restores the
43
+ // typed envelope expected by the user handler.
44
+ const actionRequest = {
45
+ _tag: action._tag,
46
+ action,
47
+ payload: decodedPayload,
48
+ };
49
+ const resultExit = yield* Effect.exit(actionHandler(actionRequest));
50
+ if (Exit.isSuccess(resultExit)) {
51
+ return yield* encodeSuccess(resultExit.value).pipe(Effect.orDie);
52
+ }
53
+ const expectedError = Exit.findErrorOption(resultExit);
54
+ if (Option.isSome(expectedError)) {
55
+ const encodedError = yield* encodeError(expectedError.value).pipe(Effect.orDie);
56
+ return yield* Effect.fail(new Rivetkit.UserError(hasStringProperty("message")(encodedError)
57
+ ? encodedError.message
58
+ : `${action._tag} failed`, {
59
+ code: hasStringProperty("_tag")(encodedError)
60
+ ? encodedError._tag
61
+ : undefined,
62
+ metadata: ActionErrorEnvelope.make(encodedError),
63
+ }));
64
+ }
65
+ return yield* Effect.failCause(resultExit.cause);
66
+ }).pipe(Effect.withSpan(rpcMethod, {
67
+ parent: traceMeta
68
+ ? Tracer.externalSpan(traceMeta)
69
+ : undefined,
70
+ kind: "server",
71
+ attributes: {
72
+ "rpc.system.name": rpcSystem,
73
+ "rpc.method": rpcMethod,
74
+ },
75
+ }), Effect.annotateLogs(makeActorLogAnnotations(c)));
76
+ const fiber = instance.runFork(actionEffect, {
77
+ signal: c.abortSignal,
78
+ });
79
+ const exit = await new Promise((resolve) => fiber.addObserver(resolve));
80
+ if (Exit.isSuccess(exit))
81
+ return exit.value;
82
+ // Action fibers can be interrupted by a caller abort signal
83
+ // or by the actor instance scope closing during sleep, destroy,
84
+ // or shutdown. Surface those lifecycle exits as RivetKit's
85
+ // structured action-aborted error instead of an internal error.
86
+ if (Cause.hasInterruptsOnly(exit.cause)) {
87
+ throw makeActorAbortedError();
88
+ }
89
+ const expectedError = Exit.findErrorOption(exit);
90
+ if (Option.isSome(expectedError)) {
91
+ throw expectedError.value;
92
+ }
93
+ throw Cause.squash(exit.cause);
94
+ },
95
+ ];
96
+ });
97
+ const makeActorAbortedError = () => new Rivetkit.RivetError("actor", "aborted", "Actor aborted", {
98
+ public: true,
99
+ });
100
+ //# sourceMappingURL=ActionDispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionDispatcher.js","sourceRoot":"","sources":["../../src/internal/ActionDispatcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Schema } from "effect";
2
+ export declare const tag: "EffectActionError";
3
+ export declare const schemaVersion: 1;
4
+ export declare const ActionErrorEnvelope: Schema.Struct<{
5
+ readonly _tag: Schema.tag<"EffectActionError">;
6
+ readonly version: Schema.Literal<1>;
7
+ readonly error: Schema.Unknown;
8
+ }>;
9
+ export type ActionErrorEnvelope = typeof ActionErrorEnvelope.Type;
10
+ export declare const make: (error: unknown) => ActionErrorEnvelope;
11
+ //# sourceMappingURL=ActionErrorEnvelope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionErrorEnvelope.d.ts","sourceRoot":"","sources":["../../src/internal/ActionErrorEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,eAAO,MAAM,GAAG,EAAG,mBAA4B,CAAC;AAEhD,eAAO,MAAM,aAAa,EAAG,CAAU,CAAC;AAExC,eAAO,MAAM,mBAAmB;;;;EAI9B,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC,IAAI,CAAC;AAElE,eAAO,MAAM,IAAI,GAAI,OAAO,OAAO,KAAG,mBAIpC,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { Schema } from "effect";
2
+ export const tag = "EffectActionError";
3
+ export const schemaVersion = 1;
4
+ export const ActionErrorEnvelope = Schema.Struct({
5
+ _tag: Schema.tag(tag),
6
+ version: Schema.Literal(schemaVersion),
7
+ error: Schema.Unknown,
8
+ });
9
+ export const make = (error) => ({
10
+ _tag: tag,
11
+ version: schemaVersion,
12
+ error,
13
+ });
14
+ //# sourceMappingURL=ActionErrorEnvelope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActionErrorEnvelope.js","sourceRoot":"","sources":["../../src/internal/ActionErrorEnvelope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,MAAM,CAAC,MAAM,GAAG,GAAG,mBAA4B,CAAC;AAEhD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAU,CAAC;AAExC,MAAM,CAAC,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC,OAAO;CACrB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAc,EAAuB,EAAE,CAAC,CAAC;IAC7D,IAAI,EAAE,GAAG;IACT,OAAO,EAAE,aAAa;IACtB,KAAK;CACL,CAAC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { Context, Effect, type Fiber, Scope } from "effect";
2
+ import type * as Rivetkit from "rivetkit";
3
+ import type * as RivetkitDb from "rivetkit/db";
4
+ import type * as ActorStateAdapter from "./ActorStateAdapter.ts";
5
+ import type * as StateOptions from "./StateOptions.ts";
6
+ type RivetkitDefinitionFor<StateDefinition extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = Rivetkit.ActorDefinition<StateOptions.Encoded<StateDefinition>, undefined, undefined, undefined, undefined, Database, Record<never, never>, Record<never, never>, any>;
7
+ type WakeContext<StateDefinition extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = Rivetkit.WakeContextOf<RivetkitDefinitionFor<StateDefinition, Database>>;
8
+ export type Instance<ActionHandlers, StateDefinition extends StateOptions.Any> = {
9
+ readonly actionHandlers: ActionHandlers;
10
+ readonly runFork: <A, E>(effect: Effect.Effect<A, E, any>, options?: Effect.RunOptions) => Fiber.Fiber<A, E>;
11
+ readonly scope: Scope.Closeable;
12
+ readonly state?: ActorStateAdapter.ActorState<StateDefinition>;
13
+ };
14
+ export declare const make: <ActionHandlers, StateDefinition extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider, WakeOptions>(args_0: {
15
+ readonly wakeHandler: (wakeOptions: WakeOptions) => Effect.Effect<ActionHandlers, never, any>;
16
+ readonly stateAdapter: ActorStateAdapter.Adapter<StateDefinition> | undefined;
17
+ readonly makeContext: (c: WakeContext<StateDefinition, Database>, scope: Scope.Closeable) => Context.Context<any>;
18
+ readonly makeWakeOptions: (c: WakeContext<StateDefinition, Database>, state: ActorStateAdapter.ActorState<StateDefinition> | undefined) => WakeOptions;
19
+ }) => Effect.Effect<{
20
+ get: (actorId: string) => Instance<ActionHandlers, StateDefinition> | undefined;
21
+ onWake: (c: WakeContext<StateDefinition, Database>) => Promise<void>;
22
+ onStateChange: ((c: WakeContext<StateDefinition, Database>, newState: unknown) => void) | undefined;
23
+ onTeardown: (c: {
24
+ readonly actorId: string;
25
+ }) => Promise<void>;
26
+ }, never, any>;
27
+ export {};
28
+ //# sourceMappingURL=ActorInstanceManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorInstanceManager.d.ts","sourceRoot":"","sources":["../../src/internal/ActorInstanceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAQ,KAAK,KAAK,EAAY,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5E,OAAO,KAAK,KAAK,QAAQ,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,KAAK,UAAU,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,KAAK,iBAAiB,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAEvD,KAAK,qBAAqB,CACzB,eAAe,SAAS,YAAY,CAAC,GAAG,EACxC,QAAQ,SAAS,UAAU,CAAC,mBAAmB,IAC5C,QAAQ,CAAC,eAAe,CAC3B,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,EACrC,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,EACpB,GAAG,CACH,CAAC;AAEF,KAAK,WAAW,CACf,eAAe,SAAS,YAAY,CAAC,GAAG,EACxC,QAAQ,SAAS,UAAU,CAAC,mBAAmB,IAC5C,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7E,MAAM,MAAM,QAAQ,CACnB,cAAc,EACd,eAAe,SAAS,YAAY,CAAC,GAAG,IACrC;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,KACvB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,IAAI,GAChB,cAAc,EACd,eAAe,SAAS,YAAY,CAAC,GAAG,EACxC,QAAQ,SAAS,UAAU,CAAC,mBAAmB,EAC/C,WAAW;0BAOW,CACrB,WAAW,EAAE,WAAW,KACpB,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,CAAC;2BAE3C,iBAAiB,CAAC,OAAO,CAAC,eAAe,CAAC,GAC1C,SAAS;0BACU,CACrB,CAAC,EAAE,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,EACzC,KAAK,EAAE,KAAK,CAAC,SAAS,KAClB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;8BACC,CACzB,CAAC,EAAE,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,EACzC,KAAK,EAAE,iBAAiB,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,SAAS,KAC5D,WAAW;;mBA0CA,MAAM;gBACH,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC;wBAalD,WAAW,CAAC,eAAe,EAAE,QAAQ,CAAC,YAC/B,OAAO;oBASE;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE;cAalD,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { Context, Effect, Exit, FiberSet, Scope } from "effect";
2
+ export const make = Effect.fnUntraced(function* ({ wakeHandler, stateAdapter, makeContext, makeWakeOptions, }) {
3
+ const instances = new Map();
4
+ const services = yield* Effect.context();
5
+ const runPromise = Effect.runPromiseWith(services);
6
+ const makeInstance = Effect.fnUntraced(function* (c) {
7
+ const scope = yield* Scope.make();
8
+ return yield* Effect.gen(function* () {
9
+ const state = stateAdapter
10
+ ? yield* stateAdapter.makeStateView(c)
11
+ : undefined;
12
+ const context = makeContext(c, scope);
13
+ const actionHandlers = yield* wakeHandler(makeWakeOptions(c, state)).pipe(Effect.provide(context));
14
+ const runFork = yield* FiberSet.makeRuntime().pipe(Effect.provide(Context.merge(services, context)));
15
+ return {
16
+ actionHandlers,
17
+ runFork,
18
+ scope,
19
+ state,
20
+ };
21
+ }).pipe(Effect.onError((cause) => Scope.close(scope, Exit.failCause(cause))));
22
+ });
23
+ return {
24
+ get: (actorId) => instances.get(actorId),
25
+ onWake: async (c) => {
26
+ await runPromise(makeInstance(c).pipe(Effect.tap((instance) => Effect.sync(() => {
27
+ instances.set(c.actorId, instance);
28
+ }))));
29
+ },
30
+ onStateChange: stateAdapter
31
+ ? (c, newState) => {
32
+ const instance = instances.get(c.actorId);
33
+ // State changes can arrive after teardown removes the instance.
34
+ if (!instance)
35
+ return;
36
+ stateAdapter.publishChange(instance, newState);
37
+ }
38
+ : undefined,
39
+ onTeardown: async (c) => {
40
+ return runPromise(Effect.gen(function* () {
41
+ const instance = instances.get(c.actorId);
42
+ // Teardown can be reported through multiple lifecycle callbacks.
43
+ if (!instance)
44
+ return;
45
+ instances.delete(c.actorId);
46
+ yield* Scope.close(instance.scope, Exit.void);
47
+ }));
48
+ },
49
+ };
50
+ });
51
+ //# sourceMappingURL=ActorInstanceManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorInstanceManager.js","sourceRoot":"","sources":["../../src/internal/ActorInstanceManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Effect, type Fiber, Schema } from "effect";
2
+ import * as State from "../State.ts";
3
+ import type * as StateOptions from "./StateOptions.ts";
4
+ export type ActorState<StateDefinition extends StateOptions.Any> = State.State<StateOptions.Decoded<StateDefinition>, Schema.SchemaError>;
5
+ type StateInstance<StateDefinition extends StateOptions.Any> = {
6
+ readonly runFork: <A, E>(effect: Effect.Effect<A, E, any>, options?: Effect.RunOptions) => Fiber.Fiber<A, E>;
7
+ readonly state?: ActorState<StateDefinition>;
8
+ };
9
+ export type Adapter<StateDefinition extends StateOptions.Any> = {
10
+ readonly makeStateView: (c: {
11
+ state: StateOptions.Encoded<StateDefinition>;
12
+ }) => Effect.Effect<ActorState<StateDefinition>, never, any>;
13
+ readonly createInitialState: () => Promise<StateOptions.Encoded<StateDefinition>>;
14
+ readonly publishChange: (instance: StateInstance<StateDefinition>, newState: unknown) => void;
15
+ };
16
+ export declare const make: <StateDefinition extends StateOptions.Any>(stateOptions: StateDefinition) => Effect.Effect<Adapter<StateDefinition>, never, any>;
17
+ export {};
18
+ //# sourceMappingURL=ActorStateAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStateAdapter.d.ts","sourceRoot":"","sources":["../../src/internal/ActorStateAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,KAAK,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AACrC,OAAO,KAAK,KAAK,YAAY,MAAM,mBAAmB,CAAC;AAEvD,MAAM,MAAM,UAAU,CAAC,eAAe,SAAS,YAAY,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAC7E,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,EACrC,MAAM,CAAC,WAAW,CAClB,CAAC;AAEF,KAAK,aAAa,CAAC,eAAe,SAAS,YAAY,CAAC,GAAG,IAAI;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EACtB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,KACvB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,eAAe,CAAC,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,eAAe,SAAS,YAAY,CAAC,GAAG,IAAI;IAC/D,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE;QAC3B,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;KAC7C,KAAK,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,CACzC,YAAY,CAAC,OAAO,CAAC,eAAe,CAAC,CACrC,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE,CACvB,QAAQ,EAAE,aAAa,CAAC,eAAe,CAAC,EACxC,QAAQ,EAAE,OAAO,KACb,IAAI,CAAC;CACV,CAAC;AAEF,eAAO,MAAM,IAAI,GAChB,eAAe,SAAS,YAAY,CAAC,GAAG,uFAwDvC,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Effect, Schema, Semaphore } from "effect";
2
+ import * as State from "../State.js";
3
+ export const make = Effect.fnUntraced(function* (stateOptions) {
4
+ const services = yield* Effect.context();
5
+ const stateCodec = {
6
+ decodeUnknown: Schema.decodeUnknownEffect(Schema.toCodecJson(stateOptions.schema)),
7
+ encode: Schema.encodeEffect(Schema.toCodecJson(stateOptions.schema)),
8
+ };
9
+ return {
10
+ makeStateView: (c) => State.make(() => stateCodec.decodeUnknown(c.state), (next) => stateCodec.encode(next).pipe(Effect.tap((encoded) => Effect.sync(() => {
11
+ c.state = encoded;
12
+ })), Effect.asVoid)).pipe(Effect.orDie, Effect.map((state) => state)),
13
+ createInitialState: () => Effect.runPromiseWith(services)(stateCodec
14
+ .encode(stateOptions.initialValue())
15
+ .pipe(Effect.orDie)),
16
+ publishChange: (instance, newState) => {
17
+ instance.runFork(Effect.gen(function* () {
18
+ const state = yield* Effect.fromNullishOr(instance.state).pipe(Effect.orDie);
19
+ yield* Semaphore.withPermit(state.semaphore, Effect.gen(function* () {
20
+ const decoded = yield* stateCodec
21
+ .decodeUnknown(newState)
22
+ .pipe(Effect.orDie);
23
+ State.publishUnsafe(state, decoded);
24
+ }));
25
+ }));
26
+ },
27
+ };
28
+ });
29
+ //# sourceMappingURL=ActorStateAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ActorStateAdapter.js","sourceRoot":"","sources":["../../src/internal/ActorStateAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,aAAa,CAAC;AA6BrC,MAAM,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAG9C,YAA6B;IAE7B,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,EAAO,CAAC;IAE9C,MAAM,UAAU,GAAG;QAClB,aAAa,EAAE,MAAM,CAAC,mBAAmB,CACxC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CACvC;QACD,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;KACpE,CAAC;IAEF,OAAO;QACN,aAAa,EAAE,CAAC,CAAC,EAAE,EAAE,CACpB,KAAK,CAAC,IAAI,CACT,GAAG,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EACvC,CAAC,IAAI,EAAE,EAAE,CACR,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CACtB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;YAChB,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;QACnB,CAAC,CAAC,CACF,EACD,MAAM,CAAC,MAAM,CACb,CACF,CAAC,IAAI,CACL,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAoC,CAAC,CAC3D;QACF,kBAAkB,EAAE,GAAG,EAAE,CACxB,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAC9B,UAAU;aACR,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;aACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CACpB;QACF,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YACrC,QAAQ,CAAC,OAAO,CACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBACnB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CACxC,QAAQ,CAAC,KAAK,CACd,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAErB,KAAK,CAAC,CAAC,SAAS,CAAC,UAAU,CAC1B,KAAK,CAAC,SAAS,EACf,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;oBACnB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU;yBAC/B,aAAa,CAAC,QAAQ,CAAC;yBACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACrB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrC,CAAC,CAAC,CACF,CAAC;YACH,CAAC,CAAC,CACF,CAAC;QACH,CAAC;KACD,CAAC;AACH,CAAC,CAAC,CAAC"}