restate-sdk 0.7.0 → 0.8.0

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.
data/rbi/restate-sdk.rbi DELETED
@@ -1,582 +0,0 @@
1
- # typed: true
2
-
3
- # RBI shipped with the restate-sdk gem.
4
- # Tapioca merges this automatically when users run `tapioca gems`.
5
-
6
- module Restate
7
- # Create an endpoint, optionally binding services.
8
- sig do
9
- params(
10
- services: T.untyped,
11
- protocol: T.nilable(String),
12
- identity_keys: T.nilable(T::Array[String])
13
- ).returns(Restate::Endpoint)
14
- end
15
- def self.endpoint(*services, protocol: nil, identity_keys: nil); end
16
-
17
- # ── Durable execution ──
18
-
19
- # Execute a durable side effect. Returns a DurableFuture.
20
- sig do
21
- params(
22
- name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
23
- background: T::Boolean, action: T.proc.returns(T.untyped)
24
- ).returns(DurableFuture)
25
- end
26
- def self.run(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
27
-
28
- # Convenience shortcut for +run(...).await+. Returns the result directly.
29
- sig do
30
- params(
31
- name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
32
- background: T::Boolean, action: T.proc.returns(T.untyped)
33
- ).returns(T.untyped)
34
- end
35
- def self.run_sync(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
36
-
37
- # Durable timer that survives handler restarts.
38
- sig { params(seconds: Numeric).returns(DurableFuture) }
39
- def self.sleep(seconds); end
40
-
41
- # ── State operations (VirtualObject / Workflow) ──
42
-
43
- # Durably retrieve a state entry. Returns nil if unset.
44
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
45
- def self.get(name, serde: Restate::JsonSerde); end
46
-
47
- # Durably retrieve a state entry, returning a DurableFuture instead of blocking.
48
- sig { params(name: String, serde: T.untyped).returns(DurableFuture) }
49
- def self.get_async(name, serde: Restate::JsonSerde); end
50
-
51
- # Durably set a state entry.
52
- sig { params(name: String, value: T.untyped, serde: T.untyped).void }
53
- def self.set(name, value, serde: Restate::JsonSerde); end
54
-
55
- # Durably remove a single state entry.
56
- sig { params(name: String).void }
57
- def self.clear(name); end
58
-
59
- # Durably remove all state entries.
60
- sig { void }
61
- def self.clear_all; end
62
-
63
- # List all state entry names.
64
- sig { returns(T.untyped) }
65
- def self.state_keys; end
66
-
67
- # List all state entry names, returning a DurableFuture.
68
- sig { returns(DurableFuture) }
69
- def self.state_keys_async; end
70
-
71
- # ── Service communication ──
72
-
73
- # Durably call a handler on a Restate service.
74
- sig do
75
- params(
76
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
77
- arg: T.untyped, key: T.nilable(String), idempotency_key: T.nilable(String),
78
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
79
- ).returns(DurableCallFuture)
80
- end
81
- def self.service_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil,
82
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
83
-
84
- # Fire-and-forget send to a Restate service handler.
85
- sig do
86
- params(
87
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
88
- arg: T.untyped, key: T.nilable(String), delay: T.nilable(Numeric),
89
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
90
- input_serde: T.untyped
91
- ).returns(SendHandle)
92
- end
93
- def self.service_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil,
94
- headers: nil, input_serde: T.unsafe(nil)); end
95
-
96
- # Durably call a handler on a Restate virtual object.
97
- sig do
98
- params(
99
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
100
- key: String, arg: T.untyped, idempotency_key: T.nilable(String),
101
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
102
- ).returns(DurableCallFuture)
103
- end
104
- def self.object_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
105
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
106
-
107
- # Fire-and-forget send to a Restate virtual object handler.
108
- sig do
109
- params(
110
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
111
- key: String, arg: T.untyped, delay: T.nilable(Numeric),
112
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
113
- input_serde: T.untyped
114
- ).returns(SendHandle)
115
- end
116
- def self.object_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
117
- headers: nil, input_serde: T.unsafe(nil)); end
118
-
119
- # Durably call a handler on a Restate workflow.
120
- sig do
121
- params(
122
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
123
- key: String, arg: T.untyped, idempotency_key: T.nilable(String),
124
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
125
- ).returns(DurableCallFuture)
126
- end
127
- def self.workflow_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
128
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
129
-
130
- # Fire-and-forget send to a Restate workflow handler.
131
- sig do
132
- params(
133
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
134
- key: String, arg: T.untyped, delay: T.nilable(Numeric),
135
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
136
- input_serde: T.untyped
137
- ).returns(SendHandle)
138
- end
139
- def self.workflow_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
140
- headers: nil, input_serde: T.unsafe(nil)); end
141
-
142
- # Durably call a handler using raw bytes (no serialization).
143
- sig do
144
- params(
145
- service: String, handler: String, arg: String,
146
- key: T.nilable(String), idempotency_key: T.nilable(String),
147
- headers: T.nilable(T::Hash[String, String])
148
- ).returns(DurableCallFuture)
149
- end
150
- def self.generic_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil); end
151
-
152
- # Fire-and-forget send using raw bytes (no serialization).
153
- sig do
154
- params(
155
- service: String, handler: String, arg: String,
156
- key: T.nilable(String), delay: T.nilable(Numeric),
157
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String])
158
- ).returns(SendHandle)
159
- end
160
- def self.generic_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil, headers: nil); end
161
-
162
- # ── Awakeables ──
163
-
164
- # Create an awakeable for external callbacks. Returns [awakeable_id, DurableFuture].
165
- sig { params(serde: T.untyped).returns([String, DurableFuture]) }
166
- def self.awakeable(serde: Restate::JsonSerde); end
167
-
168
- # Resolve an awakeable with a success value.
169
- sig { params(awakeable_id: String, payload: T.untyped, serde: T.untyped).void }
170
- def self.resolve_awakeable(awakeable_id, payload, serde: Restate::JsonSerde); end
171
-
172
- # Reject an awakeable with a terminal failure.
173
- sig { params(awakeable_id: String, message: String, code: Integer).void }
174
- def self.reject_awakeable(awakeable_id, message, code: 500); end
175
-
176
- # ── Promises (Workflow only) ──
177
-
178
- # Get a durable promise value, blocking until resolved.
179
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
180
- def self.promise(name, serde: Restate::JsonSerde); end
181
-
182
- # Peek at a durable promise without blocking. Returns nil if not yet resolved.
183
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
184
- def self.peek_promise(name, serde: Restate::JsonSerde); end
185
-
186
- # Resolve a durable promise with a value.
187
- sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
188
- def self.resolve_promise(name, payload, serde: Restate::JsonSerde); end
189
-
190
- # Reject a durable promise with a terminal failure.
191
- sig { params(name: String, message: String, code: Integer).void }
192
- def self.reject_promise(name, message, code: 500); end
193
-
194
- # ── Futures ──
195
-
196
- # Wait until any of the given futures completes. Returns [completed, remaining].
197
- sig { params(futures: DurableFuture).returns([T::Array[DurableFuture], T::Array[DurableFuture]]) }
198
- def self.wait_any(*futures); end
199
-
200
- # ── Request metadata ──
201
-
202
- # Returns metadata about the current invocation (id, headers, raw body).
203
- sig { returns(T.untyped) }
204
- def self.request; end
205
-
206
- # Returns the key for this virtual object or workflow invocation.
207
- sig { returns(String) }
208
- def self.key; end
209
-
210
- # ── Invocation control ──
211
-
212
- # Request cancellation of another invocation.
213
- sig { params(invocation_id: String).void }
214
- def self.cancel_invocation(invocation_id); end
215
-
216
- class TerminalError < StandardError
217
- sig { returns(Integer) }
218
- def status_code; end
219
-
220
- sig { params(message: String, status_code: Integer).void }
221
- def initialize(message = '', status_code: 500); end
222
- end
223
-
224
- class AttemptFinishedEvent
225
- sig { returns(T::Boolean) }
226
- def set?; end
227
-
228
- sig { void }
229
- def wait; end
230
- end
231
-
232
- Request = T.type_alias { T.untyped }
233
-
234
- class RunRetryPolicy < T::Struct
235
- const :initial_interval, T.nilable(Integer)
236
- const :max_attempts, T.nilable(Integer)
237
- const :max_duration, T.nilable(Integer)
238
- const :max_interval, T.nilable(Integer)
239
- const :interval_factor, T.nilable(Float)
240
- end
241
-
242
- class DurableFuture
243
- sig { returns(T.untyped) }
244
- def await; end
245
-
246
- sig { returns(T::Boolean) }
247
- def completed?; end
248
-
249
- sig { returns(Integer) }
250
- def handle; end
251
- end
252
-
253
- class DurableCallFuture < DurableFuture
254
- sig { returns(String) }
255
- def invocation_id; end
256
-
257
- sig { void }
258
- def cancel; end
259
- end
260
-
261
- class SendHandle
262
- sig { returns(String) }
263
- def invocation_id; end
264
-
265
- sig { void }
266
- def cancel; end
267
- end
268
-
269
- # Base context interface for all Restate handlers.
270
- module Context
271
- sig do
272
- params(
273
- name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
274
- background: T::Boolean, action: T.proc.returns(T.untyped)
275
- ).returns(DurableFuture)
276
- end
277
- def run(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
278
-
279
- sig do
280
- params(
281
- name: String, serde: T.untyped, retry_policy: T.nilable(RunRetryPolicy),
282
- background: T::Boolean, action: T.proc.returns(T.untyped)
283
- ).returns(T.untyped)
284
- end
285
- def run_sync(name, serde: Restate::JsonSerde, retry_policy: nil, background: false, &action); end
286
-
287
- sig { params(seconds: Numeric).returns(DurableFuture) }
288
- def sleep(seconds); end
289
-
290
- sig do
291
- params(
292
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
293
- arg: T.untyped, key: T.nilable(String), idempotency_key: T.nilable(String),
294
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
295
- ).returns(DurableCallFuture)
296
- end
297
- def service_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil,
298
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
299
-
300
- sig do
301
- params(
302
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
303
- arg: T.untyped, key: T.nilable(String), delay: T.nilable(Numeric),
304
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
305
- input_serde: T.untyped
306
- ).returns(SendHandle)
307
- end
308
- def service_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil,
309
- headers: nil, input_serde: T.unsafe(nil)); end
310
-
311
- sig do
312
- params(
313
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
314
- key: String, arg: T.untyped, idempotency_key: T.nilable(String),
315
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
316
- ).returns(DurableCallFuture)
317
- end
318
- def object_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
319
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
320
-
321
- sig do
322
- params(
323
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
324
- key: String, arg: T.untyped, delay: T.nilable(Numeric),
325
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
326
- input_serde: T.untyped
327
- ).returns(SendHandle)
328
- end
329
- def object_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
330
- headers: nil, input_serde: T.unsafe(nil)); end
331
-
332
- sig do
333
- params(
334
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
335
- key: String, arg: T.untyped, idempotency_key: T.nilable(String),
336
- headers: T.nilable(T::Hash[String, String]), input_serde: T.untyped, output_serde: T.untyped
337
- ).returns(DurableCallFuture)
338
- end
339
- def workflow_call(service, handler, key, arg, idempotency_key: nil, headers: nil,
340
- input_serde: T.unsafe(nil), output_serde: T.unsafe(nil)); end
341
-
342
- sig do
343
- params(
344
- service: T.any(String, T::Class[T.anything]), handler: T.any(String, Symbol),
345
- key: String, arg: T.untyped, delay: T.nilable(Numeric),
346
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String]),
347
- input_serde: T.untyped
348
- ).returns(SendHandle)
349
- end
350
- def workflow_send(service, handler, key, arg, delay: nil, idempotency_key: nil,
351
- headers: nil, input_serde: T.unsafe(nil)); end
352
-
353
- sig do
354
- params(
355
- service: String, handler: String, arg: String,
356
- key: T.nilable(String), idempotency_key: T.nilable(String),
357
- headers: T.nilable(T::Hash[String, String])
358
- ).returns(DurableCallFuture)
359
- end
360
- def generic_call(service, handler, arg, key: nil, idempotency_key: nil, headers: nil); end
361
-
362
- sig do
363
- params(
364
- service: String, handler: String, arg: String,
365
- key: T.nilable(String), delay: T.nilable(Numeric),
366
- idempotency_key: T.nilable(String), headers: T.nilable(T::Hash[String, String])
367
- ).returns(SendHandle)
368
- end
369
- def generic_send(service, handler, arg, key: nil, delay: nil, idempotency_key: nil, headers: nil); end
370
-
371
- sig { params(serde: T.untyped).returns([String, DurableFuture]) }
372
- def awakeable(serde: Restate::JsonSerde); end
373
-
374
- sig { params(awakeable_id: String, payload: T.untyped, serde: T.untyped).void }
375
- def resolve_awakeable(awakeable_id, payload, serde: Restate::JsonSerde); end
376
-
377
- sig { params(awakeable_id: String, message: String, code: Integer).void }
378
- def reject_awakeable(awakeable_id, message, code: 500); end
379
-
380
- sig { params(invocation_id: String).void }
381
- def cancel_invocation(invocation_id); end
382
-
383
- sig { params(futures: DurableFuture).returns([T::Array[DurableFuture], T::Array[DurableFuture]]) }
384
- def wait_any(*futures); end
385
-
386
- sig { returns(T.untyped) }
387
- def request; end
388
-
389
- sig { returns(String) }
390
- def key; end
391
- end
392
-
393
- # VirtualObject shared handler context (read-only state).
394
- module ObjectSharedContext
395
- include Context
396
-
397
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
398
- def get(name, serde: Restate::JsonSerde); end
399
-
400
- sig { params(name: String, serde: T.untyped).returns(DurableFuture) }
401
- def get_async(name, serde: Restate::JsonSerde); end
402
-
403
- sig { returns(T.untyped) }
404
- def state_keys; end
405
-
406
- sig { returns(DurableFuture) }
407
- def state_keys_async; end
408
- end
409
-
410
- # VirtualObject exclusive handler context (full state access).
411
- module ObjectContext
412
- include ObjectSharedContext
413
-
414
- sig { params(name: String, value: T.untyped, serde: T.untyped).void }
415
- def set(name, value, serde: Restate::JsonSerde); end
416
-
417
- sig { params(name: String).void }
418
- def clear(name); end
419
-
420
- sig { void }
421
- def clear_all; end
422
- end
423
-
424
- # Workflow shared handler context (read-only state + promises).
425
- module WorkflowSharedContext
426
- include ObjectSharedContext
427
-
428
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
429
- def promise(name, serde: Restate::JsonSerde); end
430
-
431
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
432
- def peek_promise(name, serde: Restate::JsonSerde); end
433
-
434
- sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
435
- def resolve_promise(name, payload, serde: Restate::JsonSerde); end
436
-
437
- sig { params(name: String, message: String, code: Integer).void }
438
- def reject_promise(name, message, code: 500); end
439
- end
440
-
441
- # Workflow main handler context (full state + promises).
442
- module WorkflowContext
443
- include ObjectContext
444
-
445
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
446
- def promise(name, serde: Restate::JsonSerde); end
447
-
448
- sig { params(name: String, serde: T.untyped).returns(T.untyped) }
449
- def peek_promise(name, serde: Restate::JsonSerde); end
450
-
451
- sig { params(name: String, payload: T.untyped, serde: T.untyped).void }
452
- def resolve_promise(name, payload, serde: Restate::JsonSerde); end
453
-
454
- sig { params(name: String, message: String, code: Integer).void }
455
- def reject_promise(name, message, code: 500); end
456
- end
457
-
458
- # Stateless service base class.
459
- class Service
460
- sig { returns(ServiceCallProxy) }
461
- def self.call; end
462
-
463
- sig { params(delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
464
- def self.send!(delay: nil); end
465
- end
466
-
467
- # Keyed virtual object base class.
468
- class VirtualObject
469
- sig { params(key: String).returns(ServiceCallProxy) }
470
- def self.call(key); end
471
-
472
- sig { params(key: String, delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
473
- def self.send!(key, delay: nil); end
474
-
475
- sig { params(name: Symbol, default: T.untyped, serde: T.untyped).void }
476
- def self.state(name, default: nil, serde: nil); end
477
- end
478
-
479
- # Durable workflow base class.
480
- class Workflow
481
- sig { params(key: String).returns(ServiceCallProxy) }
482
- def self.call(key); end
483
-
484
- sig { params(key: String, delay: T.nilable(Numeric)).returns(ServiceSendProxy) }
485
- def self.send!(key, delay: nil); end
486
-
487
- sig { params(name: Symbol, default: T.untyped, serde: T.untyped).void }
488
- def self.state(name, default: nil, serde: nil); end
489
- end
490
-
491
- # Proxy for fluent durable calls.
492
- class ServiceCallProxy; end
493
-
494
- # Proxy for fluent fire-and-forget sends.
495
- class ServiceSendProxy; end
496
-
497
- # Global SDK configuration.
498
- class Config
499
- sig { returns(String) }
500
- attr_accessor :ingress_url
501
-
502
- sig { returns(String) }
503
- attr_accessor :admin_url
504
-
505
- sig { returns(T::Hash[String, String]) }
506
- attr_accessor :ingress_headers
507
-
508
- sig { returns(T::Hash[String, String]) }
509
- attr_accessor :admin_headers
510
- end
511
-
512
- # Configure the SDK globally.
513
- sig { params(block: T.proc.params(arg0: Config).void).void }
514
- def self.configure(&block); end
515
-
516
- # Returns the global configuration.
517
- sig { returns(Config) }
518
- def self.config; end
519
-
520
- # Returns a pre-configured Client using the global config.
521
- sig { returns(Client) }
522
- def self.client; end
523
-
524
- # HTTP client for invoking Restate services and managing the runtime.
525
- class Client
526
- sig do
527
- params(ingress_url: String, admin_url: String,
528
- ingress_headers: T::Hash[String, String],
529
- admin_headers: T::Hash[String, String]).void
530
- end
531
- def initialize(ingress_url: 'http://localhost:8080', admin_url: 'http://localhost:9070',
532
- ingress_headers: {}, admin_headers: {}); end
533
-
534
- sig { params(service: T.any(String, T::Class[T.anything])).returns(ClientServiceProxy) }
535
- def service(service); end
536
-
537
- sig { params(service: T.any(String, T::Class[T.anything]), key: String).returns(ClientServiceProxy) }
538
- def object(service, key); end
539
-
540
- sig { params(service: T.any(String, T::Class[T.anything]), key: String).returns(ClientServiceProxy) }
541
- def workflow(service, key); end
542
-
543
- sig { params(awakeable_id: String, payload: T.untyped).void }
544
- def resolve_awakeable(awakeable_id, payload); end
545
-
546
- sig { params(awakeable_id: String, message: String, code: Integer).void }
547
- def reject_awakeable(awakeable_id, message, code: 500); end
548
-
549
- sig { params(invocation_id: String).void }
550
- def cancel_invocation(invocation_id); end
551
-
552
- sig { params(invocation_id: String).void }
553
- def kill_invocation(invocation_id); end
554
-
555
- end
556
-
557
- # Proxy for HTTP client calls.
558
- class ClientServiceProxy; end
559
-
560
- class Endpoint
561
- sig { params(services: T.untyped).void }
562
- def bind(*services); end
563
-
564
- sig { void }
565
- def streaming_protocol; end
566
-
567
- sig { void }
568
- def request_response_protocol; end
569
-
570
- sig { params(key: String).void }
571
- def identity_key(key); end
572
-
573
- sig { params(klass: T.untyped, args: T.untyped, kwargs: T.untyped).returns(T.self_type) }
574
- def use(klass, *args, **kwargs); end
575
-
576
- sig { returns(T.untyped) }
577
- def app; end
578
- end
579
-
580
- module JsonSerde; end
581
- module BytesSerde; end
582
- end