@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
package/dist/Logger.js ADDED
@@ -0,0 +1,31 @@
1
+ import { Effect, Logger as EffectLogger, Layer } from "effect";
2
+ import { BaseLogger, getOrCreateBaseLogger, makeEffectLogger, } from "./internal/logging.js";
3
+ /**
4
+ * Builds a logging layer from a custom Pino-compatible logger.
5
+ *
6
+ * The layer installs the matching Effect logger and configures the underlying
7
+ * RivetKit TypeScript SDK logs to go through the same logger.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { Logger } from "@rivetkit/effect"
12
+ * import { pino } from "pino"
13
+ *
14
+ * const LoggerLive = Logger.layerPino(
15
+ * pino({ transport: { target: "pino-pretty" } })
16
+ * )
17
+ * ```
18
+ */
19
+ export const layerPino = (baseLogger) => Layer.mergeAll(Layer.succeed(BaseLogger, baseLogger), EffectLogger.layer([
20
+ EffectLogger.tracerLogger,
21
+ makeEffectLogger(baseLogger),
22
+ ]));
23
+ /**
24
+ * Default RivetKit Effect logging layer.
25
+ *
26
+ * The layer creates a base logger from `References.MinimumLogLevel` and installs
27
+ * the Effect logger adapter. Applications that want custom formatting or
28
+ * transports should provide {@link layerPino} instead.
29
+ */
30
+ export const layer = Layer.unwrap(Effect.map(getOrCreateBaseLogger, layerPino));
31
+ //# sourceMappingURL=Logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../src/Logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,YAAY,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/D,OAAO,EACN,UAAU,EACV,qBAAqB,EACrB,gBAAgB,GAChB,MAAM,uBAAuB,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,UAAsB,EAAE,EAAE,CACnD,KAAK,CAAC,QAAQ,CACb,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,EACrC,YAAY,CAAC,KAAK,CAAC;IAClB,YAAY,CAAC,YAAY;IACzB,gBAAgB,CAAC,UAAU,CAAC;CAC5B,CAAC,CACF,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAuB,KAAK,CAAC,MAAM,CACpD,MAAM,CAAC,GAAG,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAC5C,CAAC"}
@@ -0,0 +1,72 @@
1
+ import { Context, Effect, Layer, type Scope } from "effect";
2
+ import { type HttpMiddleware, type HttpServerError, type HttpServerRequest, type HttpServerResponse } from "effect/unstable/http";
3
+ import * as Rivetkit from "rivetkit";
4
+ import { type Logger as PinoLogger } from "rivetkit/log";
5
+ import * as Client from "./Client.ts";
6
+ declare const TypeId = "~@rivetkit/effect/Registry";
7
+ type ServerlessOptions = NonNullable<Rivetkit.RegistryConfigInput<Rivetkit.RegistryActors>["serverless"]>;
8
+ export type Options = Pick<Rivetkit.RegistryConfigInput<Rivetkit.RegistryActors>, "endpoint" | "token" | "namespace" | "noWelcome">;
9
+ export interface Registry {
10
+ readonly [TypeId]: typeof TypeId;
11
+ readonly options: Options;
12
+ readonly baseLogger: PinoLogger;
13
+ readonly rivetkitActors: Map<string, Rivetkit.AnyActorDefinition>;
14
+ }
15
+ export declare const Registry: Context.Service<Registry, Registry>;
16
+ export declare const layer: (options?: Options) => Layer.Layer<Registry>;
17
+ /**
18
+ * Runs an actor registration layer against the configured engine.
19
+ *
20
+ * The actor layer is built in the server layer scope. Registered Rivet Actors
21
+ * are collected from `Registry`, materialized into a single underlying RivetKit
22
+ * registry, and started.
23
+ */
24
+ export declare const serve: <E, R>(actorsLayer: Layer.Layer<never, E, R>) => Layer.Layer<never, E, R | Registry>;
25
+ /**
26
+ * In-process test runtime. Boots the rivetkit registry against the
27
+ * configured engine, waits for `/health` to answer, and provides
28
+ * `Client` from the same Layer so consumers don't need to wire
29
+ * `Client.layer` separately. Mirrors `Registry.start` plus test-mode
30
+ * flags and a scoped client dispose. The registry itself is leaked
31
+ * to process exit because the public rivetkit `Registry` doesn't
32
+ * expose a public `shutdown()` today; only the SIGINT handler can
33
+ * drive `#runShutdown`. This matches `setupTest`'s existing behavior.
34
+ */
35
+ export declare const test: Layer.Layer<Client.Client, never, Registry>;
36
+ export type ToHttpEffectOptions = ServerlessOptions;
37
+ /**
38
+ * Builds a scoped Effect HTTP handler from a registry layer.
39
+ *
40
+ * The registry layer is built once in the surrounding scope. Registered Rivet
41
+ * Actors are materialized into a single underlying RivetKit registry, and each
42
+ * request is delegated to that registry's serverless handler.
43
+ */
44
+ export declare const toHttpEffect: <E>(registryLayer: Layer.Layer<Registry, E, never>, options?: {
45
+ basePath?: string | undefined;
46
+ maxStartPayloadBytes?: number | undefined;
47
+ publicEndpoint?: string | undefined;
48
+ publicToken?: string | undefined;
49
+ } | undefined) => Effect.Effect<Effect.Effect<HttpServerResponse.HttpServerResponse, HttpServerError.HttpServerError, HttpServerRequest.HttpServerRequest>, E, Scope.Scope>;
50
+ export type ToWebHandlerOptions = ServerlessOptions & {
51
+ /**
52
+ * Effect HTTP middleware applied around the generated handler.
53
+ */
54
+ readonly middleware?: HttpMiddleware.HttpMiddleware | undefined;
55
+ /**
56
+ * Memo map used while building the registry layer.
57
+ */
58
+ readonly memoMap?: Layer.MemoMap | undefined;
59
+ };
60
+ /**
61
+ * Builds a Fetch-compatible request handler from a registry layer.
62
+ *
63
+ * This is the serverless entrypoint for the Effect SDK. The registry layer must
64
+ * provide `Registry`, usually by composing actor layers with `Registry.layer`
65
+ * via `Layer.provideMerge`.
66
+ */
67
+ export declare const toWebHandler: <E>(registryLayer: Layer.Layer<Registry, E>, options?: ToWebHandlerOptions) => {
68
+ readonly dispose: () => Promise<void>;
69
+ readonly handler: (request: Request, context?: Context.Context<never> | undefined) => Promise<globalThis.Response>;
70
+ };
71
+ export {};
72
+ //# sourceMappingURL=Registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.d.ts","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC5D,OAAO,EAEN,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAEN,KAAK,MAAM,IAAI,UAAU,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAItC,QAAA,MAAM,MAAM,+BAA+B,CAAC;AAC5C,KAAK,iBAAiB,GAAG,WAAW,CACnC,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,YAAY,CAAC,CACnE,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG,IAAI,CACzB,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,cAAc,CAAC,EACrD,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,CAChD,CAAC;AAEF,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,MAAM,CAAC;IAEjC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAE1B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;IAEhC,QAAQ,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CACF,CAAC;AAWxD,eAAO,MAAM,KAAK,GAAI,UAAS,OAAY,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAMhE,CAAC;AAmBH;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EACzB,aAAa,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAClC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,GAAG,QAAQ,CAapC,CAAC;AAEH;;;;;;;;;GASG;AACH,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAsC3D,CAAC;AAkBH,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAEpD;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAgC,CAAC;;;;;2KAmBxD,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG;IACrD;;OAEG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAC,cAAc,GAAG,SAAS,CAAC;IAChE;;OAEG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,EAC7B,eAAe,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EACvC,UAAU,mBAAmB;;;CA4B7B,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Context, Effect, Layer } from "effect";
2
+ import { HttpEffect, } from "effect/unstable/http";
3
+ import * as Rivetkit from "rivetkit";
4
+ import { configureBaseLogger, } from "rivetkit/log";
5
+ import * as Client from "./Client.js";
6
+ import { BaseLogger, getOrCreateBaseLogger } from "./internal/logging.js";
7
+ import * as Logger from "./Logger.js";
8
+ const TypeId = "~@rivetkit/effect/Registry";
9
+ export const Registry = Context.Service("@rivetkit/effect/Registry");
10
+ const make = (options, baseLogger) => {
11
+ return Registry.of({
12
+ [TypeId]: TypeId,
13
+ options,
14
+ baseLogger,
15
+ rivetkitActors: new Map(),
16
+ });
17
+ };
18
+ export const layer = (options = {}) => Layer.effect(Registry, Effect.map(getOrCreateBaseLogger, (baseLogger) => make(options, baseLogger)));
19
+ const setupRivetkitRegistry = (registry, options) => {
20
+ configureBaseLogger(registry.baseLogger);
21
+ return Rivetkit.setup({
22
+ use: Object.fromEntries(registry.rivetkitActors),
23
+ ...registry.options,
24
+ logging: { baseLogger: registry.baseLogger },
25
+ ...(options?.serverless === undefined
26
+ ? {}
27
+ : { serverless: options.serverless }),
28
+ });
29
+ };
30
+ /**
31
+ * Runs an actor registration layer against the configured engine.
32
+ *
33
+ * The actor layer is built in the server layer scope. Registered Rivet Actors
34
+ * are collected from `Registry`, materialized into a single underlying RivetKit
35
+ * registry, and started.
36
+ */
37
+ export const serve = (actorsLayer) => Layer.effectDiscard(Effect.gen(function* () {
38
+ const registry = yield* Registry;
39
+ const baseLogger = registry.baseLogger;
40
+ yield* Layer.build(actorsLayer.pipe(Layer.provideMerge(Logger.layerPino(baseLogger))));
41
+ const rivetkitRegistry = setupRivetkitRegistry(registry);
42
+ yield* Effect.sync(() => rivetkitRegistry.start());
43
+ }));
44
+ /**
45
+ * In-process test runtime. Boots the rivetkit registry against the
46
+ * configured engine, waits for `/health` to answer, and provides
47
+ * `Client` from the same Layer so consumers don't need to wire
48
+ * `Client.layer` separately. Mirrors `Registry.start` plus test-mode
49
+ * flags and a scoped client dispose. The registry itself is leaked
50
+ * to process exit because the public rivetkit `Registry` doesn't
51
+ * expose a public `shutdown()` today; only the SIGINT handler can
52
+ * drive `#runShutdown`. This matches `setupTest`'s existing behavior.
53
+ */
54
+ export const test = Layer.effect(Client.Client, Effect.gen(function* () {
55
+ const registry = yield* Registry;
56
+ const rivetkitRegistry = setupRivetkitRegistry(registry);
57
+ rivetkitRegistry.config.test = {
58
+ ...rivetkitRegistry.config.test,
59
+ enabled: true,
60
+ };
61
+ rivetkitRegistry.config.noWelcome = true;
62
+ // Auto-spawn the engine when no endpoint was provided, so
63
+ // `Registry.test` works out of the box without requiring the
64
+ // caller to start an engine externally. If the user wired an
65
+ // explicit endpoint via `Registry.layer({ endpoint: ... })`,
66
+ // honor it and skip the local spawn.
67
+ if (registry.options.endpoint === undefined) {
68
+ rivetkitRegistry.config.startEngine = true;
69
+ }
70
+ yield* Effect.sync(() => rivetkitRegistry.start());
71
+ // The rivetkitRegistry itself is leaked until process exit (matches
72
+ // setupTest's behavior). The public Rivetkit.Registry doesn't
73
+ // expose a shutdown method; only the SIGINT handler can drive the
74
+ // inner .shutdown(). Disposing the client is the only cleanup we
75
+ // can do cleanly today.
76
+ //
77
+ // When the engine was auto-spawned, propagate its resolved
78
+ // endpoint to the client so `createClient` doesn't fall back
79
+ // to its (warning-emitting) default.
80
+ const resolvedEndpoint = rivetkitRegistry.parseConfig().endpoint;
81
+ return yield* Client.make({
82
+ ...registry.options,
83
+ endpoint: registry.options.endpoint ?? resolvedEndpoint,
84
+ }).pipe(Effect.provideService(BaseLogger, registry.baseLogger));
85
+ }));
86
+ const makeHttpEffect = (registry, options) => {
87
+ const rivetkitRegistry = setupRivetkitRegistry(registry, {
88
+ serverless: options,
89
+ });
90
+ return HttpEffect.fromWebHandler((request) => rivetkitRegistry.handler(request));
91
+ };
92
+ /**
93
+ * Builds a scoped Effect HTTP handler from a registry layer.
94
+ *
95
+ * The registry layer is built once in the surrounding scope. Registered Rivet
96
+ * Actors are materialized into a single underlying RivetKit registry, and each
97
+ * request is delegated to that registry's serverless handler.
98
+ */
99
+ export const toHttpEffect = Effect.fnUntraced(function* (registryLayer, options) {
100
+ const context = yield* Layer.build(registryLayer.pipe(Layer.provideMerge(Logger.layer)));
101
+ // @effect-diagnostics-next-line returnEffectInGen:off
102
+ return makeHttpEffect(Context.get(context, Registry), options).pipe(Effect.provide(context));
103
+ });
104
+ /**
105
+ * Builds a Fetch-compatible request handler from a registry layer.
106
+ *
107
+ * This is the serverless entrypoint for the Effect SDK. The registry layer must
108
+ * provide `Registry`, usually by composing actor layers with `Registry.layer`
109
+ * via `Layer.provideMerge`.
110
+ */
111
+ export const toWebHandler = (registryLayer, options) => {
112
+ const { middleware, memoMap } = options ?? {};
113
+ let serverlessOptions;
114
+ if (options !== undefined) {
115
+ const { middleware: _middleware, memoMap: _memoMap, ...handlerOptions } = options;
116
+ serverlessOptions = handlerOptions;
117
+ }
118
+ const registryLayerWithLogging = registryLayer.pipe(Layer.provideMerge(Logger.layer));
119
+ return HttpEffect.toWebHandlerLayerWith(registryLayerWithLogging, {
120
+ toHandler: (context) => Effect.succeed(makeHttpEffect(Context.get(context, Registry), serverlessOptions).pipe(Effect.provide(context))),
121
+ middleware,
122
+ memoMap,
123
+ });
124
+ };
125
+ //# sourceMappingURL=Registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Registry.js","sourceRoot":"","sources":["../src/Registry.ts"],"names":[],"mappings":"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"}