@rivetkit/effect 0.0.0-codex-rivetkit-cli-preview.5e414a8

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,104 @@
1
+ import { type Effect, Schema } from "effect";
2
+ declare const TypeId = "~@rivetkit/effect/Action";
3
+ export declare const isAction: (u: unknown) => u is Action<any, any, any, any>;
4
+ /**
5
+ * A value-level definition for a non-durable, request-response call.
6
+ */
7
+ export interface Action<Tag extends string, Payload extends Schema.Top = Schema.Void, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never> {
8
+ readonly [TypeId]: typeof TypeId;
9
+ readonly _tag: Tag;
10
+ readonly key: string;
11
+ /**
12
+ * Raw RivetKit clients omit the argument for no-payload actions, so
13
+ * the actor wrapper uses this to adapt only those calls to the Effect
14
+ * JSON Void codec's null representation.
15
+ */
16
+ readonly hasPayload: boolean;
17
+ readonly payloadSchema: Payload;
18
+ readonly successSchema: Success;
19
+ readonly errorSchema: Error;
20
+ }
21
+ /**
22
+ * Type-erased view of any `Action`. Useful for collections of actions
23
+ * where the specific schemas don't matter.
24
+ */
25
+ export interface Any {
26
+ readonly [TypeId]: typeof TypeId;
27
+ readonly _tag: string;
28
+ readonly key: string;
29
+ }
30
+ /**
31
+ * Like `Any`, but with the prop fields (`*Schema`) accessible. Used
32
+ * by internal builders that need to read schemas off an action.
33
+ */
34
+ export interface AnyWithProps {
35
+ readonly [TypeId]: typeof TypeId;
36
+ readonly _tag: string;
37
+ readonly key: string;
38
+ readonly hasPayload: boolean;
39
+ readonly payloadSchema: Schema.Top;
40
+ readonly successSchema: Schema.Top;
41
+ readonly errorSchema: Schema.Top;
42
+ }
43
+ export type Tag<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Tag : never;
44
+ export type PayloadSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload : never;
45
+ export type Payload<R> = PayloadSchema<R>["Type"];
46
+ /**
47
+ * The shape accepted by the payload schema's `make` constructor on the
48
+ * client side (i.e. before encoding). Useful for typing the call site.
49
+ */
50
+ export type PayloadConstructor<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["~type.make.in"] : never;
51
+ export type SuccessSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Success : never;
52
+ export type Success<R> = SuccessSchema<R>["Type"];
53
+ export type ErrorSchema<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Error : never;
54
+ export type Error<R> = ErrorSchema<R>["Type"];
55
+ /**
56
+ * The full set of decoding/encoding services required by every schema
57
+ * referenced by the action. Code generators include this in the `R`
58
+ * channel of any effect that handles or invokes the action.
59
+ */
60
+ export type Services<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["DecodingServices"] | _Payload["EncodingServices"] | _Success["DecodingServices"] | _Success["EncodingServices"] | _Error["DecodingServices"] | _Error["EncodingServices"] : never;
61
+ /**
62
+ * The subset of `Services` actually needed on the client side: encoding
63
+ * the payload, decoding the success response, decoding the error.
64
+ */
65
+ export type ServicesClient<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["EncodingServices"] | _Success["DecodingServices"] | _Error["DecodingServices"] : never;
66
+ /**
67
+ * The subset of `Services` needed on the server side: decoding the
68
+ * payload, encoding the success response, encoding the error.
69
+ */
70
+ export type ServicesServer<R> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? _Payload["DecodingServices"] | _Success["EncodingServices"] | _Error["EncodingServices"] : never;
71
+ /**
72
+ * Extract the action with the matching tag from a union of actions.
73
+ */
74
+ export type ExtractTag<R extends Any, Tag extends string> = R extends {
75
+ readonly _tag: Tag;
76
+ } ? R : never;
77
+ export type ResultFrom<R extends Any, Services> = R extends Action<infer _Tag, infer _Payload, infer _Success, infer _Error> ? Effect.Effect<_Success["Type"], _Error["Type"], Services> : never;
78
+ /**
79
+ * Define a Rivet Actor action.
80
+ *
81
+ * @example
82
+ * ```ts
83
+ * import { Schema } from "effect"
84
+ * import { Action } from "@rivetkit/effect"
85
+ *
86
+ * class CounterOverflow extends Schema.TaggedErrorClass<CounterOverflow>()(
87
+ * "CounterOverflow",
88
+ * { limit: Schema.Number },
89
+ * ) {}
90
+ *
91
+ * export const Increment = Action.make("Increment", {
92
+ * payload: { amount: Schema.Number },
93
+ * success: Schema.Number,
94
+ * error: CounterOverflow,
95
+ * })
96
+ * ```
97
+ */
98
+ export declare const make: <const Tag extends string, Payload extends Schema.Top | Schema.Struct.Fields = Schema.Void, Success extends Schema.Top = Schema.Void, Error extends Schema.Top = Schema.Never>(tag: Tag, options?: {
99
+ readonly payload?: Payload;
100
+ readonly success?: Success;
101
+ readonly error?: Error;
102
+ }) => Action<Tag, Payload extends Schema.Struct.Fields ? Schema.Struct<Payload> : Payload, Success, Error>;
103
+ export {};
104
+ //# sourceMappingURL=Action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Action.d.ts","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"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"}
package/dist/Action.js ADDED
@@ -0,0 +1,50 @@
1
+ import { Predicate, Schema } from "effect";
2
+ const TypeId = "~@rivetkit/effect/Action";
3
+ export const isAction = (u) => Predicate.hasProperty(u, TypeId);
4
+ // --- Implementation -------------------------------------------------
5
+ const Proto = {
6
+ [TypeId]: TypeId,
7
+ };
8
+ const makeProto = (options) => {
9
+ const self = Object.assign(Object.create(Proto), options);
10
+ self.key = `@rivetkit/effect/Action/${options._tag}`;
11
+ return self;
12
+ };
13
+ /**
14
+ * Define a Rivet Actor action.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * import { Schema } from "effect"
19
+ * import { Action } from "@rivetkit/effect"
20
+ *
21
+ * class CounterOverflow extends Schema.TaggedErrorClass<CounterOverflow>()(
22
+ * "CounterOverflow",
23
+ * { limit: Schema.Number },
24
+ * ) {}
25
+ *
26
+ * export const Increment = Action.make("Increment", {
27
+ * payload: { amount: Schema.Number },
28
+ * success: Schema.Number,
29
+ * error: CounterOverflow,
30
+ * })
31
+ * ```
32
+ */
33
+ export const make = (tag, options) => {
34
+ const successSchema = options?.success ?? Schema.Void;
35
+ const errorSchema = options?.error ?? Schema.Never;
36
+ const hasPayload = options?.payload !== undefined;
37
+ const payloadSchema = Schema.isSchema(options?.payload)
38
+ ? options?.payload
39
+ : options?.payload
40
+ ? Schema.Struct(options?.payload)
41
+ : Schema.Void;
42
+ return makeProto({
43
+ _tag: tag,
44
+ hasPayload,
45
+ payloadSchema,
46
+ successSchema,
47
+ errorSchema,
48
+ });
49
+ };
50
+ //# sourceMappingURL=Action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Action.js","sourceRoot":"","sources":["../src/Action.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAExD,MAAM,MAAM,GAAG,0BAA0B,CAAC;AAE1C,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAmC,EAAE,CACvE,SAAS,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAgJlC,uEAAuE;AAEvE,MAAM,KAAK,GAAG;IACb,CAAC,MAAM,CAAC,EAAE,MAAM;CAChB,CAAC;AAEF,MAAM,SAAS,GAAG,CAKhB,OAMD,EAAwC,EAAE;IAC1C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,GAAG,GAAG,2BAA2B,OAAO,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,CAMnB,GAAQ,EACR,OAIC,EAMA,EAAE;IACH,MAAM,aAAa,GAAG,OAAO,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;IACtD,MAAM,WAAW,GAAG,OAAO,EAAE,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,KAAK,SAAS,CAAC;IAClD,MAAM,aAAa,GAAe,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAClE,CAAC,CAAE,OAAO,EAAE,OAAe;QAC3B,CAAC,CAAC,OAAO,EAAE,OAAO;YACjB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAc,CAAC;YACxC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;IAChB,OAAO,SAAS,CAAC;QAChB,IAAI,EAAE,GAAG;QACT,UAAU;QACV,aAAa;QACb,aAAa;QACb,WAAW;KACX,CAKA,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,133 @@
1
+ import { Context, Effect, Layer, type Schema, Scope } from "effect";
2
+ import * as Rivetkit from "rivetkit";
3
+ import type * as RivetkitDb from "rivetkit/db";
4
+ import type * as Action from "./Action.ts";
5
+ import * as Client from "./Client.ts";
6
+ import type * as StateOptions from "./internal/StateOptions.ts";
7
+ import * as Registry from "./Registry.ts";
8
+ import type * as RivetError from "./RivetError.ts";
9
+ import type * as State from "./State.ts";
10
+ declare const TypeId = "~@rivetkit/effect/Actor";
11
+ export declare const isActor: (u: unknown) => u is Actor<any, any>;
12
+ declare const rivetkitActorOptionsKeys: readonly ["name", "icon"];
13
+ export type RivetkitActorOptions = Pick<NonNullable<Rivetkit.ActorOptionsInput>, (typeof rivetkitActorOptionsKeys)[number]>;
14
+ /**
15
+ * Per-actor instance options. Combines the public
16
+ * `RivetkitActorOptions` (forwarded verbatim to `Rivetkit.actor`)
17
+ * with the effect-SDK-only options.
18
+ */
19
+ export type Options<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
20
+ readonly state?: State;
21
+ readonly db?: Database;
22
+ };
23
+ type StatelessOptions<Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
24
+ readonly state?: never;
25
+ readonly db?: Database;
26
+ };
27
+ type StatefulOptions<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined> = Readonly<RivetkitActorOptions> & {
28
+ readonly state: State;
29
+ readonly db?: Database;
30
+ };
31
+ /**
32
+ * Per-instance identity carried inside the wake scope. An actor
33
+ * instance is addressable in two ways:
34
+ *
35
+ * - `(name, key)` — stable user-facing pair (e.g. "Counter", ["counter-123"])
36
+ * - `actorId` — opaque engine-assigned unique identifier
37
+ *
38
+ * Available inside `Actor.toLayer`'s wake effect via
39
+ * `yield* Actor.CurrentAddress`.
40
+ */
41
+ export type ActorAddress = Pick<Rivetkit.ActorContext<any, any, any, any, any, any, any, any>, "actorId" | "name" | "key">;
42
+ declare const CurrentAddress_base: Context.ServiceClass<CurrentAddress, "@rivetkit/effect/Actor/CurrentAddress", ActorAddress>;
43
+ /**
44
+ * Context tag for the current actor instance's address. Provided
45
+ * once per wake when the wake effect runs; capture it into a
46
+ * closure if action handlers need it.
47
+ */
48
+ export declare class CurrentAddress extends CurrentAddress_base {
49
+ }
50
+ declare const Sleep_base: Context.ServiceClass<Sleep, "@rivetkit/effect/Actor/Sleep", Effect.Effect<void, never, never>>;
51
+ export declare class Sleep extends Sleep_base {
52
+ }
53
+ export type ActionRequest<A extends Action.Any> = A extends Action.Action<infer Tag, infer Payload, infer _Success, infer _Error> ? {
54
+ readonly _tag: Tag;
55
+ readonly action: A;
56
+ readonly payload: Payload["Type"];
57
+ } : never;
58
+ type ActionHandlerServices<ActionHandlers> = {
59
+ readonly [Name in keyof ActionHandlers]: ActionHandlers[Name] extends (...args: ReadonlyArray<any>) => Effect.Effect<any, any, infer R> ? R : never;
60
+ }[keyof ActionHandlers];
61
+ type RivetkitActorDefinitionFor<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = Rivetkit.ActorDefinition<StateOptions.Encoded<State>, undefined, undefined, undefined, undefined, Database, Record<never, never>, Record<never, never>, any>;
62
+ export type WakeOptions<ActorDefinition extends Rivetkit.AnyActorDefinition = Rivetkit.AnyActorDefinition> = {
63
+ readonly rawRivetkitContext: Rivetkit.WakeContextOf<ActorDefinition>;
64
+ };
65
+ type RawWakeContextFor<State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = {
66
+ [Key in keyof Rivetkit.WakeContextOf<RivetkitActorDefinitionFor<State, Database>>]: Key extends "state" ? [State] extends [never] ? never : StateOptions.Encoded<State> : Rivetkit.WakeContextOf<RivetkitActorDefinitionFor<State, Database>>[Key];
67
+ };
68
+ type WakeOptionsFor<StateDefinition extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider> = {
69
+ readonly rawRivetkitContext: RawWakeContextFor<StateDefinition, Database>;
70
+ } & ([StateDefinition] extends [never] ? unknown : {
71
+ readonly state: State.State<StateOptions.Decoded<StateDefinition>, Schema.SchemaError>;
72
+ });
73
+ type WakeFunction<ActionHandlers, R, W extends WakeOptions> = ((wakeOptions: W) => ActionHandlers) | ((wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>);
74
+ type Wake<ActionHandlers, R, RX, W extends WakeOptions> = ActionHandlers | Effect.Effect<ActionHandlers, never, RX> | WakeFunction<ActionHandlers, R, W> | Effect.Effect<WakeFunction<ActionHandlers, R, W>, never, RX>;
75
+ export type AccessorKeyParam = string | Rivetkit.ActorKey;
76
+ /**
77
+ * A typed handle for one actor instance. Each action becomes a
78
+ * method that takes the action's payload-constructor input and
79
+ * returns an Effect with the action's success / typed error
80
+ * channels baked in.
81
+ */
82
+ export type Handle<Actions extends Action.Any> = {
83
+ readonly [A in Actions as Action.Tag<A>]: (payload: Action.PayloadConstructor<A>) => Effect.Effect<Action.Success<A>, Action.Error<A> | RivetError.RivetError, Action.ServicesClient<A>>;
84
+ };
85
+ /**
86
+ * Yielded by `Actor.client`. Address an actor instance by key, then
87
+ * dispatch typed action calls against the returned `Handle`.
88
+ */
89
+ export type Accessor<Actions extends Action.Any> = {
90
+ readonly getOrCreate: (key: AccessorKeyParam) => Handle<Actions>;
91
+ };
92
+ type UnknownToNever<T> = unknown extends T ? never : T;
93
+ type ExcludeBuiltInWakeServices<T, _State extends StateOptions.Any> = UnknownToNever<Exclude<T, Scope.Scope | CurrentAddress | Sleep>>;
94
+ type ToLayerRequirements<Actions extends Action.Any, ActionHandlers, State extends StateOptions.Any, R, RX> = ExcludeBuiltInWakeServices<R, State> | ExcludeBuiltInWakeServices<RX, State> | UnknownToNever<ActionHandlerServices<ActionHandlers>> | UnknownToNever<Action.ServicesServer<Actions>> | UnknownToNever<Action.ServicesClient<Actions>> | Registry.Registry;
95
+ /**
96
+ * A Rivet Actor contract. It carries the action schemas and
97
+ * display options, but no server implementation.
98
+ */
99
+ export interface Actor<Name extends string, Actions extends Action.Any = never> {
100
+ readonly [TypeId]: typeof TypeId;
101
+ readonly name: Name;
102
+ readonly actions: ReadonlyArray<Actions>;
103
+ of<ActionHandlers extends ActionHandlersFrom<Actions>>(actionHandlers: ActionHandlers): ActionHandlers;
104
+ toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, Database extends RivetkitDb.AnyDatabaseProvider = undefined, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<never, Database>>, options: StatelessOptions<Database>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, never, R, RX>>;
105
+ toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<never, undefined>>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, never, R, RX>>;
106
+ toLayer<ActionHandlers extends ActionHandlersFrom<Actions>, State extends StateOptions.Any, Database extends RivetkitDb.AnyDatabaseProvider = undefined, R = never, RX = never>(wake: Wake<ActionHandlers, R, RX, WakeOptionsFor<State, Database>>, options: StatefulOptions<State, Database>): Layer.Layer<never, never, ToLayerRequirements<Actions, ActionHandlers, State, R, RX>>;
107
+ /**
108
+ * Effect-yielded typed accessor for this actor. Provide a
109
+ * `Client.layer({ ... })` once at the program root; every
110
+ * `yield* SomeActor.client` then dispatches through the same
111
+ * transport.
112
+ */
113
+ readonly client: Effect.Effect<Accessor<Actions>, never, Client.Client>;
114
+ }
115
+ export type Any = Actor<string, Action.AnyWithProps>;
116
+ export type ActionHandlersFrom<Actions extends Action.Any> = {
117
+ readonly [A in Actions as A["_tag"]]: (envelope: ActionRequest<A>) => Action.ResultFrom<A, any>;
118
+ };
119
+ /**
120
+ * Define a Rivet Actor contract.
121
+ */
122
+ export declare const make: <const Name extends string, const Actions extends ReadonlyArray<Action.AnyWithProps> = readonly []>(name: Name, options?: {
123
+ readonly actions?: Actions;
124
+ }) => Actor<Name, Actions[number]>;
125
+ export declare function toWakeHandler<ActionHandlers extends object, R, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<(wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R | RX>;
126
+ export declare function toWakeHandler<ActionHandlers extends object, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<(wakeOptions: W) => ActionHandlers, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, RX>;
127
+ export declare function toWakeHandler<ActionHandlers extends object, R, W extends WakeOptions = WakeOptions>(wake: (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R>;
128
+ export declare function toWakeHandler<ActionHandlers extends object, W extends WakeOptions = WakeOptions>(wake: (wakeOptions: W) => ActionHandlers): (wakeOptions: W) => Effect.Effect<ActionHandlers>;
129
+ export declare function toWakeHandler<ActionHandlers extends object, RX, W extends WakeOptions = WakeOptions>(wake: Effect.Effect<ActionHandlers, never, RX>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, RX>;
130
+ export declare function toWakeHandler<ActionHandlers extends object, W extends WakeOptions = WakeOptions>(wake: ActionHandlers): (wakeOptions: W) => Effect.Effect<ActionHandlers>;
131
+ export declare function toWakeHandler<ActionHandlers extends object, R, RX, W extends WakeOptions = WakeOptions>(wake: Wake<ActionHandlers, R, RX, W>): (wakeOptions: W) => Effect.Effect<ActionHandlers, never, R | RX>;
132
+ export {};
133
+ //# sourceMappingURL=Actor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actor.d.ts","sourceRoot":"","sources":["../src/Actor.ts"],"names":[],"mappings":"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"}
package/dist/Actor.js ADDED
@@ -0,0 +1,104 @@
1
+ import { Context, Effect, identity, Layer, Predicate, Scope, Struct, } from "effect";
2
+ import * as Rivetkit from "rivetkit";
3
+ import * as Client from "./Client.js";
4
+ import * as ActionDispatcher from "./internal/ActionDispatcher.js";
5
+ import * as ActorInstanceManager from "./internal/ActorInstanceManager.js";
6
+ import * as ActorStateAdapter from "./internal/ActorStateAdapter.js";
7
+ import { makeActorLogAnnotations } from "./internal/logging.js";
8
+ import * as Registry from "./Registry.js";
9
+ const TypeId = "~@rivetkit/effect/Actor";
10
+ export const isActor = (u) => Predicate.hasProperty(u, TypeId);
11
+ const rivetkitActorOptionsKeys = [
12
+ "name",
13
+ "icon",
14
+ ];
15
+ const splitOptions = (options) => ({
16
+ rivetkitOptions: Struct.pick(options, rivetkitActorOptionsKeys),
17
+ effectOptions: Struct.omit(options, rivetkitActorOptionsKeys),
18
+ });
19
+ /**
20
+ * Context tag for the current actor instance's address. Provided
21
+ * once per wake when the wake effect runs; capture it into a
22
+ * closure if action handlers need it.
23
+ */
24
+ export class CurrentAddress extends Context.Service()("@rivetkit/effect/Actor/CurrentAddress") {
25
+ }
26
+ export class Sleep extends Context.Service()("@rivetkit/effect/Actor/Sleep") {
27
+ }
28
+ const Proto = {
29
+ [TypeId]: TypeId,
30
+ toLayer(wake, options = {}) {
31
+ return makeRivetkitActor({
32
+ actor: this,
33
+ wakeHandler: toWakeHandler(wake),
34
+ options,
35
+ }).pipe(Effect.flatMap((rivetKitActor) => Registry.Registry.pipe(Effect.flatMap((registry) => Effect.sync(() => registry.rivetkitActors.set(this.name, rivetKitActor))))), Layer.effectDiscard);
36
+ },
37
+ get client() {
38
+ return Client.Client.pipe(Effect.map((client) => client.makeActorAccessor(this)));
39
+ },
40
+ of: identity,
41
+ };
42
+ /**
43
+ * Define a Rivet Actor contract.
44
+ */
45
+ export const make = (name, options) => {
46
+ const self = Object.create(Proto);
47
+ self.name = name;
48
+ self.actions = options?.actions ?? [];
49
+ return self;
50
+ };
51
+ export function toWakeHandler(wake) {
52
+ return (wakeOptions) => {
53
+ const wakeEffect = Effect.isEffect(wake)
54
+ ? wake
55
+ : Effect.succeed(wake);
56
+ return wakeEffect.pipe(Effect.flatMap((resolvedWake) => {
57
+ if (typeof resolvedWake === "function") {
58
+ const actionHandlers = resolvedWake(wakeOptions);
59
+ return Effect.isEffect(actionHandlers)
60
+ ? actionHandlers
61
+ : Effect.succeed(actionHandlers);
62
+ }
63
+ return Effect.succeed(resolvedWake);
64
+ }));
65
+ };
66
+ }
67
+ const makeRivetkitActor = Effect.fnUntraced(function* ({ actor, wakeHandler, options, }) {
68
+ const { effectOptions, rivetkitOptions } = splitOptions(options);
69
+ const stateAdapter = effectOptions.state === undefined
70
+ ? undefined
71
+ : yield* ActorStateAdapter.make(effectOptions.state);
72
+ const instanceManager = yield* ActorInstanceManager.make({
73
+ wakeHandler: (wakeOptions) => wakeHandler(wakeOptions).pipe(Effect.annotateLogs(makeActorLogAnnotations(wakeOptions.rawRivetkitContext))),
74
+ stateAdapter,
75
+ makeContext: (c, scope) => Context.mergeAll(Context.make(CurrentAddress, {
76
+ actorId: c.actorId,
77
+ name: c.name,
78
+ key: c.key,
79
+ }), Context.make(Scope.Scope, scope), Context.make(Sleep, Effect.sync(() => c.sleep()))),
80
+ makeWakeOptions: (c, state) => ({
81
+ rawRivetkitContext: c,
82
+ ...(state === undefined ? {} : { state }),
83
+ }),
84
+ });
85
+ const actions = ActionDispatcher.make({
86
+ actor,
87
+ getInstance: instanceManager.get,
88
+ });
89
+ return Rivetkit.actor({
90
+ options: rivetkitOptions,
91
+ ...(effectOptions.db ? { db: effectOptions.db } : {}),
92
+ onWake: instanceManager.onWake,
93
+ ...(stateAdapter
94
+ ? { createState: stateAdapter.createInitialState }
95
+ : {}),
96
+ actions,
97
+ ...(instanceManager.onStateChange
98
+ ? { onStateChange: instanceManager.onStateChange }
99
+ : {}),
100
+ onSleep: instanceManager.onTeardown,
101
+ onDestroy: instanceManager.onTeardown,
102
+ });
103
+ });
104
+ //# sourceMappingURL=Actor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Actor.js","sourceRoot":"","sources":["../src/Actor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import * as RivetkitClient from "rivetkit/client";
3
+ import type * as Action from "./Action.ts";
4
+ import type * as Actor from "./Actor.ts";
5
+ import { type TraceMeta } from "./internal/tracing.ts";
6
+ declare const TypeId = "~@rivetkit/effect/Client";
7
+ /**
8
+ * Connection options for the Rivet Engine client transport. Mirrors
9
+ * the `(endpoint, token, namespace)` subset of rivetkit's
10
+ * `ClientConfigInput`.
11
+ */
12
+ export type Options = Pick<RivetkitClient.ClientConfigInput, "endpoint" | "token" | "namespace">;
13
+ /**
14
+ * Per-call metadata envelope shipped as `args[1]` alongside the encoded
15
+ * payload. The SDK currently uses it for trace propagation (`trace`),
16
+ * but it's intentionally extensible so future cross-cutting concerns —
17
+ * idempotency keys, deadlines, custom headers — can land as additional
18
+ * optional fields without changing the wire shape.
19
+ */
20
+ export interface ActionMeta {
21
+ readonly trace?: TraceMeta;
22
+ }
23
+ export interface Client {
24
+ readonly [TypeId]: typeof TypeId;
25
+ readonly makeActorAccessor: <Actions extends Action.AnyWithProps>(actor: Actor.Actor<string, Actions>) => Actor.Accessor<Actions>;
26
+ }
27
+ export declare const Client: Context.Service<Client, Client>;
28
+ export declare const make: (options?: Options | undefined) => Effect.Effect<Client, never, import("effect/Scope").Scope>;
29
+ export declare const layer: (options?: Options) => Layer.Layer<Client>;
30
+ export {};
31
+ //# sourceMappingURL=Client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.d.ts","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAA0B,MAAM,QAAQ,CAAC;AACxE,OAAO,KAAK,cAAc,MAAM,iBAAiB,CAAC;AAGlD,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,KAAK,KAAK,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlE,QAAA,MAAM,MAAM,6BAA6B,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,IAAI,CACzB,cAAc,CAAC,iBAAiB,EAChC,UAAU,GAAG,OAAO,GAAG,WAAW,CAClC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,MAAM;IACtB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;IAEjC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,OAAO,SAAS,MAAM,CAAC,YAAY,EAC/D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,IAAI,+FA+Ff,CAAC;AAEH,eAAO,MAAM,KAAK,GAAI,UAAS,OAAY,KAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAO9D,CAAC"}
package/dist/Client.js ADDED
@@ -0,0 +1,98 @@
1
+ import { Context, Effect, Layer, Record, Result, Schema } from "effect";
2
+ import * as RivetkitClient from "rivetkit/client";
3
+ import * as RivetkitErrors from "rivetkit/errors";
4
+ import { configureBaseLogger } from "rivetkit/log";
5
+ import * as ActionErrorEnvelope from "./internal/ActionErrorEnvelope.js";
6
+ import { getOrCreateBaseLogger } from "./internal/logging.js";
7
+ import { rpcSystem } from "./internal/tracing.js";
8
+ import * as Logger from "./Logger.js";
9
+ import * as RivetError from "./RivetError.js";
10
+ const TypeId = "~@rivetkit/effect/Client";
11
+ export const Client = Context.Service("@rivetkit/effect/Client");
12
+ export const make = Effect.fnUntraced(function* (options = {}) {
13
+ const baseLogger = yield* getOrCreateBaseLogger;
14
+ const rivetkitClient = yield* Effect.acquireRelease(Effect.sync(() => {
15
+ configureBaseLogger(baseLogger);
16
+ return RivetkitClient.createClient(options);
17
+ }), (c) => Effect.promise(() => c.dispose()));
18
+ return Client.of({
19
+ [TypeId]: TypeId,
20
+ makeActorAccessor: (actor) => ({
21
+ getOrCreate: (key) => {
22
+ const rivetkitActorHandle = rivetkitClient.getOrCreate(actor.name, key);
23
+ return Record.fromIterableWith(actor.actions, (action) => {
24
+ const encodePayload = Schema.encodeEffect(Schema.toCodecJson(action.payloadSchema));
25
+ const decodeSuccess = Schema.decodeUnknownEffect(Schema.toCodecJson(action.successSchema));
26
+ const classifyRivetkitActionFailure = makeRivetkitActionFailureClassifier(action.errorSchema);
27
+ const rpcMethod = `${actor.name}/${action._tag}`;
28
+ return [
29
+ action._tag,
30
+ Effect.fn(rpcMethod, {
31
+ kind: "client",
32
+ attributes: {
33
+ "rpc.system.name": rpcSystem,
34
+ "rpc.method": rpcMethod,
35
+ },
36
+ })(function* (payload) {
37
+ const span = yield* Effect.currentSpan;
38
+ const meta = {
39
+ trace: {
40
+ traceId: span.traceId,
41
+ spanId: span.spanId,
42
+ sampled: span.sampled,
43
+ },
44
+ };
45
+ const encodedPayload = yield* encodePayload(payload).pipe(Effect.mapError((cause) => new RivetError.RivetError({
46
+ reason: new RivetError.InvalidEncoding({
47
+ cause: new RivetkitErrors.RivetError("encoding", "invalid", "Could not encode action payload", {
48
+ public: true,
49
+ metadata: cause,
50
+ }),
51
+ }),
52
+ })));
53
+ const encodedSuccess = yield* Effect.tryPromise((abortSignal) => rivetkitActorHandle.action({
54
+ name: action._tag,
55
+ args: [encodedPayload, meta],
56
+ signal: abortSignal,
57
+ })).pipe(Effect.catch((unknownError) => classifyRivetkitActionFailure(unknownError.cause).pipe(Effect.flatMap(Effect.fail))));
58
+ return yield* decodeSuccess(encodedSuccess).pipe(Effect.orDie);
59
+ }),
60
+ ];
61
+ });
62
+ },
63
+ }),
64
+ });
65
+ });
66
+ export const layer = (options = {}) => Layer.unwrap(Effect.map(getOrCreateBaseLogger, (baseLogger) => Layer.effect(Client, make(options)).pipe(Layer.provideMerge(Logger.layerPino(baseLogger)))));
67
+ const decodeActionErrorEnvelope = Schema.decodeUnknownEffect(ActionErrorEnvelope.ActionErrorEnvelope);
68
+ /** @internal */
69
+ export const makeRivetkitActionFailureClassifier = (actionErrorSchema) => {
70
+ const decodeActionError = Schema.decodeUnknownEffect(Schema.toCodecJson(actionErrorSchema));
71
+ return Effect.fnUntraced(function* (cause) {
72
+ // In the case where the `cause` is not a `RivetError`. In principle, this shouldn't happen.
73
+ if (!RivetkitErrors.isRivetErrorLike(cause)) {
74
+ return RivetError.fromUnknown(cause);
75
+ }
76
+ const rivetkitRivetError = RivetkitErrors.toRivetError(cause);
77
+ const actionErrorEnvelope = yield* Effect.result(decodeActionErrorEnvelope(rivetkitRivetError.metadata));
78
+ // If the error's `metadata` is not a valid action error envelope, then
79
+ // it means it's not a user-declared action error.
80
+ if (Result.isFailure(actionErrorEnvelope)) {
81
+ return RivetError.fromRivetkitRivetError(rivetkitRivetError);
82
+ }
83
+ const actionErrorResult = yield* Effect.result(decodeActionError(actionErrorEnvelope.success.error));
84
+ // The envelope was valid, but the inner payload doesn't match the
85
+ // declared schema — surface as `ActionErrorDecodeFailed`
86
+ if (Result.isFailure(actionErrorResult)) {
87
+ return new RivetError.RivetError({
88
+ reason: new RivetError.ActionErrorDecodeFailed({
89
+ cause: actionErrorResult.failure,
90
+ rivetError: rivetkitRivetError,
91
+ }),
92
+ });
93
+ }
94
+ // Successfully decoded user-declared action error
95
+ return actionErrorResult.success;
96
+ });
97
+ };
98
+ //# sourceMappingURL=Client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Client.js","sourceRoot":"","sources":["../src/Client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { Layer } from "effect";
2
+ import type { Logger as PinoLogger } from "rivetkit/log";
3
+ import { BaseLogger } from "./internal/logging.ts";
4
+ /**
5
+ * Builds a logging layer from a custom Pino-compatible logger.
6
+ *
7
+ * The layer installs the matching Effect logger and configures the underlying
8
+ * RivetKit TypeScript SDK logs to go through the same logger.
9
+ *
10
+ * @example
11
+ * ```ts
12
+ * import { Logger } from "@rivetkit/effect"
13
+ * import { pino } from "pino"
14
+ *
15
+ * const LoggerLive = Logger.layerPino(
16
+ * pino({ transport: { target: "pino-pretty" } })
17
+ * )
18
+ * ```
19
+ */
20
+ export declare const layerPino: (baseLogger: PinoLogger) => Layer.Layer<BaseLogger, never, never>;
21
+ /**
22
+ * Default RivetKit Effect logging layer.
23
+ *
24
+ * The layer creates a base logger from `References.MinimumLogLevel` and installs
25
+ * the Effect logger adapter. Applications that want custom formatting or
26
+ * transports should provide {@link layerPino} instead.
27
+ */
28
+ export declare const layer: Layer.Layer<never>;
29
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/D,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACN,UAAU,EAGV,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,SAAS,GAAI,YAAY,UAAU,0CAO9C,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAEpC,CAAC"}