handinger 0.0.2 → 0.2.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +18 -18
  4. data/lib/handinger/client.rb +21 -1
  5. data/lib/handinger/internal/transport/base_client.rb +1 -3
  6. data/lib/handinger/internal/type/base_model.rb +3 -3
  7. data/lib/handinger/models/create_task.rb +28 -0
  8. data/lib/handinger/models/create_worker.rb +59 -19
  9. data/lib/handinger/models/task.rb +119 -0
  10. data/lib/handinger/models/task_create_params.rb +14 -0
  11. data/lib/handinger/models/{worker_continue_params.rb → task_retrieve_params.rb} +6 -6
  12. data/lib/handinger/models/task_with_turns.rb +113 -0
  13. data/lib/handinger/models/worker.rb +15 -84
  14. data/lib/handinger/models/worker_create_response.rb +84 -0
  15. data/lib/handinger/models/worker_retrieve_email_response.rb +10 -1
  16. data/lib/handinger/models/worker_retrieve_params.rb +22 -4
  17. data/lib/handinger/models.rb +10 -6
  18. data/lib/handinger/resources/tasks.rb +76 -0
  19. data/lib/handinger/resources/workers.rb +31 -92
  20. data/lib/handinger/version.rb +1 -1
  21. data/lib/handinger.rb +7 -6
  22. data/rbi/handinger/client.rbi +5 -0
  23. data/rbi/handinger/internal/transport/base_client.rbi +2 -18
  24. data/rbi/handinger/models/create_task.rbi +40 -0
  25. data/rbi/handinger/models/create_worker.rbi +84 -26
  26. data/rbi/handinger/models/task.rbi +160 -0
  27. data/rbi/handinger/models/task_create_params.rbi +27 -0
  28. data/rbi/handinger/models/{worker_continue_params.rbi → task_retrieve_params.rbi} +6 -6
  29. data/rbi/handinger/models/task_with_turns.rbi +149 -0
  30. data/rbi/handinger/models/worker.rbi +16 -117
  31. data/rbi/handinger/models/worker_create_response.rbi +129 -0
  32. data/rbi/handinger/models/worker_retrieve_email_response.rbi +20 -1
  33. data/rbi/handinger/models/worker_retrieve_params.rbi +40 -6
  34. data/rbi/handinger/models.rbi +10 -6
  35. data/rbi/handinger/resources/tasks.rbi +70 -0
  36. data/rbi/handinger/resources/workers.rbi +37 -62
  37. data/sig/handinger/client.rbs +2 -0
  38. data/sig/handinger/models/create_task.rbs +19 -0
  39. data/sig/handinger/models/create_worker.rbs +44 -23
  40. data/sig/handinger/models/task.rbs +114 -0
  41. data/sig/handinger/models/task_create_params.rbs +15 -0
  42. data/sig/handinger/models/{worker_stream_updates_params.rbs → task_retrieve_params.rbs} +6 -6
  43. data/sig/handinger/models/task_with_turns.rbs +104 -0
  44. data/sig/handinger/models/worker.rbs +11 -86
  45. data/sig/handinger/models/worker_create_response.rbs +76 -0
  46. data/sig/handinger/models/worker_retrieve_email_response.rbs +9 -1
  47. data/sig/handinger/models/worker_retrieve_params.rbs +21 -5
  48. data/sig/handinger/models.rbs +10 -6
  49. data/sig/handinger/resources/tasks.rbs +24 -0
  50. data/sig/handinger/resources/workers.rbs +9 -25
  51. metadata +23 -20
  52. data/lib/handinger/internal/stream.rb +0 -29
  53. data/lib/handinger/internal/type/base_stream.rb +0 -83
  54. data/lib/handinger/models/worker_retrieve_file_params.rb +0 -26
  55. data/lib/handinger/models/worker_stream_updates_params.rb +0 -20
  56. data/lib/handinger/models/worker_stream_updates_response.rb +0 -7
  57. data/rbi/handinger/internal/stream.rbi +0 -20
  58. data/rbi/handinger/internal/type/base_stream.rbi +0 -75
  59. data/rbi/handinger/models/worker_retrieve_file_params.rbi +0 -46
  60. data/rbi/handinger/models/worker_stream_updates_params.rbi +0 -38
  61. data/rbi/handinger/models/worker_stream_updates_response.rbi +0 -7
  62. data/sig/handinger/internal/stream.rbs +0 -9
  63. data/sig/handinger/internal/type/base_stream.rbs +0 -38
  64. data/sig/handinger/models/worker_continue_params.rbs +0 -25
  65. data/sig/handinger/models/worker_retrieve_file_params.rbs +0 -28
  66. data/sig/handinger/models/worker_stream_updates_response.rbs +0 -5
@@ -45,11 +45,8 @@ module Handinger
45
45
  sig { returns(Handinger::Worker::Status::TaggedSymbol) }
46
46
  attr_accessor :status
47
47
 
48
- sig { returns(T.nilable(Handinger::Worker::Costs)) }
49
- attr_reader :costs
50
-
51
- sig { params(costs: T.nilable(Handinger::Worker::Costs::OrHash)).void }
52
- attr_writer :costs
48
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
49
+ attr_accessor :structured_output
53
50
 
54
51
  sig { returns(T.nilable(Handinger::Worker::Usage)) }
55
52
  attr_reader :usage
@@ -72,7 +69,7 @@ module Handinger
72
69
  running: T::Boolean,
73
70
  sources: T::Array[Handinger::Worker::Source::OrHash],
74
71
  status: Handinger::Worker::Status::OrSymbol,
75
- costs: T.nilable(Handinger::Worker::Costs::OrHash),
72
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
76
73
  usage: Handinger::Worker::Usage::OrHash
77
74
  ).returns(T.attached_class)
78
75
  end
@@ -90,7 +87,7 @@ module Handinger
90
87
  running:,
91
88
  sources:,
92
89
  status:,
93
- costs: nil,
90
+ structured_output:,
94
91
  usage: nil
95
92
  )
96
93
  end
@@ -111,7 +108,7 @@ module Handinger
111
108
  running: T::Boolean,
112
109
  sources: T::Array[Handinger::Worker::Source],
113
110
  status: Handinger::Worker::Status::TaggedSymbol,
114
- costs: T.nilable(Handinger::Worker::Costs),
111
+ structured_output: T.nilable(T::Hash[Symbol, T.anything]),
115
112
  usage: Handinger::Worker::Usage
116
113
  }
117
114
  )
@@ -413,131 +410,33 @@ module Handinger
413
410
  end
414
411
  end
415
412
 
416
- class Costs < Handinger::Internal::Type::BaseModel
417
- OrHash =
418
- T.type_alias do
419
- T.any(Handinger::Worker::Costs, Handinger::Internal::AnyHash)
420
- end
421
-
422
- sig { returns(Float) }
423
- attr_accessor :internal_cost_usd
424
-
425
- sig { returns(Float) }
426
- attr_accessor :model_cost_usd
427
-
428
- sig { returns(Float) }
429
- attr_accessor :sandbox_cost_usd
430
-
431
- sig { returns(Float) }
432
- attr_accessor :tool_cost_usd
433
-
434
- sig do
435
- params(
436
- internal_cost_usd: Float,
437
- model_cost_usd: Float,
438
- sandbox_cost_usd: Float,
439
- tool_cost_usd: Float
440
- ).returns(T.attached_class)
441
- end
442
- def self.new(
443
- internal_cost_usd:,
444
- model_cost_usd:,
445
- sandbox_cost_usd:,
446
- tool_cost_usd:
447
- )
448
- end
449
-
450
- sig do
451
- override.returns(
452
- {
453
- internal_cost_usd: Float,
454
- model_cost_usd: Float,
455
- sandbox_cost_usd: Float,
456
- tool_cost_usd: Float
457
- }
458
- )
459
- end
460
- def to_hash
461
- end
462
- end
463
-
464
413
  class Usage < Handinger::Internal::Type::BaseModel
465
414
  OrHash =
466
415
  T.type_alias do
467
416
  T.any(Handinger::Worker::Usage, Handinger::Internal::AnyHash)
468
417
  end
469
418
 
470
- sig { returns(Integer) }
471
- attr_accessor :cache_read_tokens
472
-
473
- sig { returns(Integer) }
474
- attr_accessor :cache_write_tokens
475
-
476
- sig { returns(Float) }
477
- attr_accessor :cost_usd
478
-
479
- sig { returns(Integer) }
480
- attr_accessor :input_tokens
481
-
482
- sig { returns(Integer) }
483
- attr_accessor :output_tokens
484
-
485
- sig { returns(Integer) }
486
- attr_accessor :reasoning_tokens
487
-
488
- sig { returns(Integer) }
489
- attr_accessor :steps
490
-
491
- sig { returns(Integer) }
492
- attr_accessor :total_tokens
493
-
494
419
  sig { returns(T.nilable(Integer)) }
495
420
  attr_reader :credits
496
421
 
497
422
  sig { params(credits: Integer).void }
498
423
  attr_writer :credits
499
424
 
500
- sig do
501
- params(
502
- cache_read_tokens: Integer,
503
- cache_write_tokens: Integer,
504
- cost_usd: Float,
505
- input_tokens: Integer,
506
- output_tokens: Integer,
507
- reasoning_tokens: Integer,
508
- steps: Integer,
509
- total_tokens: Integer,
510
- credits: Integer
511
- ).returns(T.attached_class)
512
- end
513
- def self.new(
514
- cache_read_tokens:,
515
- cache_write_tokens:,
516
- cost_usd:,
517
- input_tokens:,
518
- output_tokens:,
519
- reasoning_tokens:,
520
- steps:,
521
- total_tokens:,
522
- credits: nil
523
- )
524
- end
425
+ sig { returns(T.nilable(Integer)) }
426
+ attr_reader :duration_ms
427
+
428
+ sig { params(duration_ms: Integer).void }
429
+ attr_writer :duration_ms
525
430
 
526
431
  sig do
527
- override.returns(
528
- {
529
- cache_read_tokens: Integer,
530
- cache_write_tokens: Integer,
531
- cost_usd: Float,
532
- input_tokens: Integer,
533
- output_tokens: Integer,
534
- reasoning_tokens: Integer,
535
- steps: Integer,
536
- total_tokens: Integer,
537
- credits: Integer
538
- }
432
+ params(credits: Integer, duration_ms: Integer).returns(
433
+ T.attached_class
539
434
  )
540
435
  end
436
+ def self.new(credits: nil, duration_ms: nil)
437
+ end
438
+
439
+ sig { override.returns({ credits: Integer, duration_ms: Integer }) }
541
440
  def to_hash
542
441
  end
543
442
  end
@@ -0,0 +1,129 @@
1
+ # typed: strong
2
+
3
+ module Handinger
4
+ module Models
5
+ class WorkerCreateResponse < Handinger::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Handinger::Models::WorkerCreateResponse,
10
+ Handinger::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :id
16
+
17
+ sig { returns(T.nilable(String)) }
18
+ attr_accessor :created_at
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :instructions
22
+
23
+ sig { returns(String) }
24
+ attr_accessor :organization_id
25
+
26
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
27
+ attr_accessor :output_schema
28
+
29
+ sig { returns(String) }
30
+ attr_accessor :summary
31
+
32
+ sig { returns(String) }
33
+ attr_accessor :title
34
+
35
+ sig { returns(T.nilable(String)) }
36
+ attr_accessor :updated_at
37
+
38
+ sig { returns(String) }
39
+ attr_accessor :user_id
40
+
41
+ sig do
42
+ returns(
43
+ Handinger::Models::WorkerCreateResponse::Visibility::TaggedSymbol
44
+ )
45
+ end
46
+ attr_accessor :visibility
47
+
48
+ sig do
49
+ params(
50
+ id: String,
51
+ created_at: T.nilable(String),
52
+ instructions: String,
53
+ organization_id: String,
54
+ output_schema: T.nilable(T::Hash[Symbol, T.anything]),
55
+ summary: String,
56
+ title: String,
57
+ updated_at: T.nilable(String),
58
+ user_id: String,
59
+ visibility:
60
+ Handinger::Models::WorkerCreateResponse::Visibility::OrSymbol
61
+ ).returns(T.attached_class)
62
+ end
63
+ def self.new(
64
+ id:,
65
+ created_at:,
66
+ instructions:,
67
+ organization_id:,
68
+ output_schema:,
69
+ summary:,
70
+ title:,
71
+ updated_at:,
72
+ user_id:,
73
+ visibility:
74
+ )
75
+ end
76
+
77
+ sig do
78
+ override.returns(
79
+ {
80
+ id: String,
81
+ created_at: T.nilable(String),
82
+ instructions: String,
83
+ organization_id: String,
84
+ output_schema: T.nilable(T::Hash[Symbol, T.anything]),
85
+ summary: String,
86
+ title: String,
87
+ updated_at: T.nilable(String),
88
+ user_id: String,
89
+ visibility:
90
+ Handinger::Models::WorkerCreateResponse::Visibility::TaggedSymbol
91
+ }
92
+ )
93
+ end
94
+ def to_hash
95
+ end
96
+
97
+ module Visibility
98
+ extend Handinger::Internal::Type::Enum
99
+
100
+ TaggedSymbol =
101
+ T.type_alias do
102
+ T.all(Symbol, Handinger::Models::WorkerCreateResponse::Visibility)
103
+ end
104
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
105
+
106
+ PUBLIC =
107
+ T.let(
108
+ :public,
109
+ Handinger::Models::WorkerCreateResponse::Visibility::TaggedSymbol
110
+ )
111
+ PRIVATE =
112
+ T.let(
113
+ :private,
114
+ Handinger::Models::WorkerCreateResponse::Visibility::TaggedSymbol
115
+ )
116
+
117
+ sig do
118
+ override.returns(
119
+ T::Array[
120
+ Handinger::Models::WorkerCreateResponse::Visibility::TaggedSymbol
121
+ ]
122
+ )
123
+ end
124
+ def self.values
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
@@ -2,6 +2,25 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- WorkerRetrieveEmailResponse = String
5
+ class WorkerRetrieveEmailResponse < Handinger::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(
9
+ Handinger::Models::WorkerRetrieveEmailResponse,
10
+ Handinger::Internal::AnyHash
11
+ )
12
+ end
13
+
14
+ sig { returns(String) }
15
+ attr_accessor :email
16
+
17
+ sig { params(email: String).returns(T.attached_class) }
18
+ def self.new(email:)
19
+ end
20
+
21
+ sig { override.returns({ email: String }) }
22
+ def to_hash
23
+ end
24
+ end
6
25
  end
7
26
  end
@@ -14,23 +14,31 @@ module Handinger
14
14
  sig { returns(String) }
15
15
  attr_accessor :worker_id
16
16
 
17
- # Return a server-sent event stream instead of JSON.
18
- sig { returns(T.nilable(T::Boolean)) }
17
+ # Set to "true" to receive a server-sent event stream that replays all stored
18
+ # messages and then continues with live chunks from the active task (if any)
19
+ # before closing.
20
+ sig do
21
+ returns(T.nilable(Handinger::WorkerRetrieveParams::Stream::OrSymbol))
22
+ end
19
23
  attr_reader :stream
20
24
 
21
- sig { params(stream: T::Boolean).void }
25
+ sig do
26
+ params(stream: Handinger::WorkerRetrieveParams::Stream::OrSymbol).void
27
+ end
22
28
  attr_writer :stream
23
29
 
24
30
  sig do
25
31
  params(
26
32
  worker_id: String,
27
- stream: T::Boolean,
33
+ stream: Handinger::WorkerRetrieveParams::Stream::OrSymbol,
28
34
  request_options: Handinger::RequestOptions::OrHash
29
35
  ).returns(T.attached_class)
30
36
  end
31
37
  def self.new(
32
38
  worker_id:,
33
- # Return a server-sent event stream instead of JSON.
39
+ # Set to "true" to receive a server-sent event stream that replays all stored
40
+ # messages and then continues with live chunks from the active task (if any)
41
+ # before closing.
34
42
  stream: nil,
35
43
  request_options: {}
36
44
  )
@@ -40,13 +48,39 @@ module Handinger
40
48
  override.returns(
41
49
  {
42
50
  worker_id: String,
43
- stream: T::Boolean,
51
+ stream: Handinger::WorkerRetrieveParams::Stream::OrSymbol,
44
52
  request_options: Handinger::RequestOptions
45
53
  }
46
54
  )
47
55
  end
48
56
  def to_hash
49
57
  end
58
+
59
+ # Set to "true" to receive a server-sent event stream that replays all stored
60
+ # messages and then continues with live chunks from the active task (if any)
61
+ # before closing.
62
+ module Stream
63
+ extend Handinger::Internal::Type::Enum
64
+
65
+ TaggedSymbol =
66
+ T.type_alias do
67
+ T.all(Symbol, Handinger::WorkerRetrieveParams::Stream)
68
+ end
69
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
70
+
71
+ TRUE =
72
+ T.let(:true, Handinger::WorkerRetrieveParams::Stream::TaggedSymbol)
73
+ FALSE =
74
+ T.let(:false, Handinger::WorkerRetrieveParams::Stream::TaggedSymbol)
75
+
76
+ sig do
77
+ override.returns(
78
+ T::Array[Handinger::WorkerRetrieveParams::Stream::TaggedSymbol]
79
+ )
80
+ end
81
+ def self.values
82
+ end
83
+ end
50
84
  end
51
85
  end
52
86
  end
@@ -1,21 +1,25 @@
1
1
  # typed: strong
2
2
 
3
3
  module Handinger
4
+ CreateTask = Handinger::Models::CreateTask
5
+
4
6
  CreateWorker = Handinger::Models::CreateWorker
5
7
 
6
- Worker = Handinger::Models::Worker
8
+ Task = Handinger::Models::Task
9
+
10
+ TaskCreateParams = Handinger::Models::TaskCreateParams
11
+
12
+ TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
7
13
 
8
- WorkerContinueParams = Handinger::Models::WorkerContinueParams
14
+ TaskWithTurns = Handinger::Models::TaskWithTurns
15
+
16
+ Worker = Handinger::Models::Worker
9
17
 
10
18
  WorkerCreateParams = Handinger::Models::WorkerCreateParams
11
19
 
12
20
  WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
13
21
 
14
- WorkerRetrieveFileParams = Handinger::Models::WorkerRetrieveFileParams
15
-
16
22
  WorkerRetrieveParams = Handinger::Models::WorkerRetrieveParams
17
23
 
18
24
  Workers = Handinger::Models::Workers
19
-
20
- WorkerStreamUpdatesParams = Handinger::Models::WorkerStreamUpdatesParams
21
25
  end
@@ -0,0 +1,70 @@
1
+ # typed: strong
2
+
3
+ module Handinger
4
+ module Resources
5
+ # Run and inspect tasks against a worker.
6
+ class Tasks
7
+ # Run a new task against an existing worker. Send `multipart/form-data` to attach
8
+ # files; the bytes are bootstrapped into the worker's workspace before the task
9
+ # starts.
10
+ sig do
11
+ params(
12
+ worker_id: String,
13
+ instructions: String,
14
+ output_schema: T::Hash[Symbol, T.anything],
15
+ prompt: String,
16
+ summary: String,
17
+ task_id: String,
18
+ title: String,
19
+ visibility: Handinger::CreateTask::Visibility::OrSymbol,
20
+ request_options: Handinger::RequestOptions::OrHash
21
+ ).returns(Handinger::Worker)
22
+ end
23
+ def create(
24
+ # Worker id the task belongs to.
25
+ worker_id:,
26
+ # Persistent system prompt the worker uses for every task it runs.
27
+ instructions: nil,
28
+ # Optional JSON Schema (Draft-07) describing the structured object the worker must
29
+ # produce. When set, every task response is validated against the schema and
30
+ # exposed as `structuredOutput`.
31
+ output_schema: nil,
32
+ # Natural-language description of the worker to use for AI-generated instructions
33
+ # when `instructions` is omitted.
34
+ prompt: nil,
35
+ # Short one-line description of the worker's purpose. Auto-generated when omitted
36
+ # and a `prompt` is provided.
37
+ summary: nil,
38
+ # Optional client-provided task id. Reuse this id to add turns to an existing
39
+ # task.
40
+ task_id: nil,
41
+ # Optional display name. When omitted, Handinger assigns a random dog-themed name.
42
+ title: nil,
43
+ # `public` (default) is visible to all org members. `private` is only visible to
44
+ # invited members.
45
+ visibility: nil,
46
+ request_options: {}
47
+ )
48
+ end
49
+
50
+ # Retrieve a single task and its individual turns.
51
+ sig do
52
+ params(
53
+ task_id: String,
54
+ request_options: Handinger::RequestOptions::OrHash
55
+ ).returns(Handinger::TaskWithTurns)
56
+ end
57
+ def retrieve(
58
+ # Task id returned by the create task endpoint.
59
+ task_id,
60
+ request_options: {}
61
+ )
62
+ end
63
+
64
+ # @api private
65
+ sig { params(client: Handinger::Client).returns(T.attached_class) }
66
+ def self.new(client:)
67
+ end
68
+ end
69
+ end
70
+ end
@@ -2,56 +2,63 @@
2
2
 
3
3
  module Handinger
4
4
  module Resources
5
+ # Create, retrieve, and manage agent worker templates.
5
6
  class Workers
6
7
  # Manage future and recurring worker tasks.
7
8
  sig { returns(Handinger::Resources::Workers::Schedules) }
8
9
  attr_reader :schedules
9
10
 
10
- # Create a new agent worker and start it with the supplied instruction.
11
+ # Create a new worker. The worker is a reusable agent template; tasks are runs
12
+ # against this template. Use `POST /tasks` to actually run the agent.
11
13
  sig do
12
14
  params(
13
- input: String,
14
- budget: Handinger::CreateWorker::Budget::OrSymbol,
15
- stream: T::Boolean,
15
+ instructions: String,
16
+ output_schema: T::Hash[Symbol, T.anything],
17
+ prompt: String,
18
+ summary: String,
19
+ title: String,
20
+ visibility: Handinger::CreateWorker::Visibility::OrSymbol,
16
21
  request_options: Handinger::RequestOptions::OrHash
17
- ).returns(Handinger::Worker)
18
- end
19
- def create(input:, budget: nil, stream: nil, request_options: {})
20
- end
21
-
22
- # Retrieve the current worker state. Pass stream=true or request text/event-stream
23
- # to subscribe to updates.
24
- sig do
25
- params(
26
- worker_id: String,
27
- stream: T::Boolean,
28
- request_options: Handinger::RequestOptions::OrHash
29
- ).returns(Handinger::Worker)
22
+ ).returns(Handinger::Models::WorkerCreateResponse)
30
23
  end
31
- def retrieve(
32
- # Worker id returned by the create worker endpoint.
33
- worker_id,
34
- # Return a server-sent event stream instead of JSON.
35
- stream: nil,
24
+ def create(
25
+ # Persistent system prompt the worker uses for every task it runs.
26
+ instructions: nil,
27
+ # Optional JSON Schema (Draft-07) describing the structured object the worker must
28
+ # produce. When set, every task response is validated against the schema and
29
+ # exposed as `structuredOutput`.
30
+ output_schema: nil,
31
+ # Natural-language description of the worker to use for AI-generated instructions
32
+ # when `instructions` is omitted.
33
+ prompt: nil,
34
+ # Short one-line description of the worker's purpose. Auto-generated when omitted
35
+ # and a `prompt` is provided.
36
+ summary: nil,
37
+ # Optional display name. When omitted, Handinger assigns a random dog-themed name.
38
+ title: nil,
39
+ # `public` (default) is visible to all org members. `private` is only visible to
40
+ # invited members.
41
+ visibility: nil,
36
42
  request_options: {}
37
43
  )
38
44
  end
39
45
 
40
- # Send another instruction to an existing worker.
46
+ # Retrieve the current worker state and messages from its most recent task.
47
+ # Returns a JSON worker object by default, or a server-sent event stream when
48
+ # `stream=true`.
41
49
  sig do
42
50
  params(
43
51
  worker_id: String,
44
- input: String,
45
- budget: Handinger::CreateWorker::Budget::OrSymbol,
46
- stream: T::Boolean,
52
+ stream: Handinger::WorkerRetrieveParams::Stream::OrSymbol,
47
53
  request_options: Handinger::RequestOptions::OrHash
48
54
  ).returns(Handinger::Worker)
49
55
  end
50
- def continue(
56
+ def retrieve(
51
57
  # Worker id returned by the create worker endpoint.
52
58
  worker_id,
53
- input:,
54
- budget: nil,
59
+ # Set to "true" to receive a server-sent event stream that replays all stored
60
+ # messages and then continues with live chunks from the active task (if any)
61
+ # before closing.
55
62
  stream: nil,
56
63
  request_options: {}
57
64
  )
@@ -62,7 +69,7 @@ module Handinger
62
69
  params(
63
70
  worker_id: String,
64
71
  request_options: Handinger::RequestOptions::OrHash
65
- ).returns(String)
72
+ ).returns(Handinger::Models::WorkerRetrieveEmailResponse)
66
73
  end
67
74
  def retrieve_email(
68
75
  # Worker id returned by the create worker endpoint.
@@ -71,38 +78,6 @@ module Handinger
71
78
  )
72
79
  end
73
80
 
74
- # Retrieve a file published from a worker workspace. The runtime route accepts
75
- # nested paths after /files/.
76
- sig do
77
- params(
78
- file_path: String,
79
- worker_id: String,
80
- request_options: Handinger::RequestOptions::OrHash
81
- ).returns(StringIO)
82
- end
83
- def retrieve_file(
84
- # Workspace file path after /files. URL-encode slashes for nested paths.
85
- file_path,
86
- # Worker id returned by the create worker endpoint.
87
- worker_id:,
88
- request_options: {}
89
- )
90
- end
91
-
92
- # Subscribe to a worker using server-sent events.
93
- sig do
94
- params(
95
- worker_id: String,
96
- request_options: Handinger::RequestOptions::OrHash
97
- ).returns(Handinger::Internal::Stream[String])
98
- end
99
- def stream_updates_streaming(
100
- # Worker id returned by the create worker endpoint.
101
- worker_id,
102
- request_options: {}
103
- )
104
- end
105
-
106
81
  # @api private
107
82
  sig { params(client: Handinger::Client).returns(T.attached_class) }
108
83
  def self.new(client:)
@@ -12,6 +12,8 @@ module Handinger
12
12
 
13
13
  attr_reader workers: Handinger::Resources::Workers
14
14
 
15
+ attr_reader tasks: Handinger::Resources::Tasks
16
+
15
17
  private def auth_headers: -> ::Hash[String, String]
16
18
 
17
19
  def initialize: (
@@ -0,0 +1,19 @@
1
+ module Handinger
2
+ module Models
3
+ type create_task = { worker_id: String, task_id: String }
4
+
5
+ class CreateTask < Handinger::Models::CreateWorker
6
+ def worker_id: -> String
7
+
8
+ def worker_id=: (String _) -> String
9
+
10
+ def task_id: -> String?
11
+
12
+ def task_id=: (String _) -> String
13
+
14
+ def initialize: (worker_id: String, ?task_id: String) -> void
15
+
16
+ def to_hash: -> { worker_id: String, task_id: String }
17
+ end
18
+ end
19
+ end