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
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- # @see Handinger::Resources::Workers#create
5
+ # @see Handinger::Resources::Workers#retrieve
6
6
  class Worker < Handinger::Internal::Type::BaseModel
7
7
  # @!attribute id
8
8
  #
@@ -69,17 +69,19 @@ module Handinger
69
69
  # @return [Symbol, Handinger::Models::Worker::Status]
70
70
  required :status, enum: -> { Handinger::Worker::Status }
71
71
 
72
- # @!attribute costs
72
+ # @!attribute structured_output
73
73
  #
74
- # @return [Handinger::Models::Worker::Costs, nil]
75
- optional :costs, -> { Handinger::Worker::Costs }, nil?: true
74
+ # @return [Hash{Symbol=>Object}, nil]
75
+ required :structured_output,
76
+ Handinger::Internal::Type::HashOf[Handinger::Internal::Type::Unknown],
77
+ nil?: true
76
78
 
77
79
  # @!attribute usage
78
80
  #
79
81
  # @return [Handinger::Models::Worker::Usage, nil]
80
82
  optional :usage, -> { Handinger::Worker::Usage }
81
83
 
82
- # @!method initialize(id:, created_at:, error:, files:, incomplete_details:, messages:, metadata:, object:, output:, output_text:, running:, sources:, status:, costs: nil, usage: nil)
84
+ # @!method initialize(id:, created_at:, error:, files:, incomplete_details:, messages:, metadata:, object:, output:, output_text:, running:, sources:, status:, structured_output:, usage: nil)
83
85
  # @param id [String]
84
86
  # @param created_at [Integer, nil]
85
87
  # @param error [nil]
@@ -93,7 +95,7 @@ module Handinger
93
95
  # @param running [Boolean]
94
96
  # @param sources [Array<Handinger::Models::Worker::Source>]
95
97
  # @param status [Symbol, Handinger::Models::Worker::Status]
96
- # @param costs [Handinger::Models::Worker::Costs, nil]
98
+ # @param structured_output [Hash{Symbol=>Object}, nil]
97
99
  # @param usage [Handinger::Models::Worker::Usage]
98
100
 
99
101
  class File < Handinger::Internal::Type::BaseModel
@@ -268,92 +270,21 @@ module Handinger
268
270
  # @return [Array<Symbol>]
269
271
  end
270
272
 
271
- # @see Handinger::Models::Worker#costs
272
- class Costs < Handinger::Internal::Type::BaseModel
273
- # @!attribute internal_cost_usd
274
- #
275
- # @return [Float]
276
- required :internal_cost_usd, Float, api_name: :internalCostUsd
277
-
278
- # @!attribute model_cost_usd
279
- #
280
- # @return [Float]
281
- required :model_cost_usd, Float, api_name: :modelCostUsd
282
-
283
- # @!attribute sandbox_cost_usd
284
- #
285
- # @return [Float]
286
- required :sandbox_cost_usd, Float, api_name: :sandboxCostUsd
287
-
288
- # @!attribute tool_cost_usd
289
- #
290
- # @return [Float]
291
- required :tool_cost_usd, Float, api_name: :toolCostUsd
292
-
293
- # @!method initialize(internal_cost_usd:, model_cost_usd:, sandbox_cost_usd:, tool_cost_usd:)
294
- # @param internal_cost_usd [Float]
295
- # @param model_cost_usd [Float]
296
- # @param sandbox_cost_usd [Float]
297
- # @param tool_cost_usd [Float]
298
- end
299
-
300
273
  # @see Handinger::Models::Worker#usage
301
274
  class Usage < Handinger::Internal::Type::BaseModel
302
- # @!attribute cache_read_tokens
303
- #
304
- # @return [Integer]
305
- required :cache_read_tokens, Integer, api_name: :cacheReadTokens
306
-
307
- # @!attribute cache_write_tokens
308
- #
309
- # @return [Integer]
310
- required :cache_write_tokens, Integer, api_name: :cacheWriteTokens
311
-
312
- # @!attribute cost_usd
313
- #
314
- # @return [Float]
315
- required :cost_usd, Float, api_name: :costUsd
316
-
317
- # @!attribute input_tokens
318
- #
319
- # @return [Integer]
320
- required :input_tokens, Integer, api_name: :inputTokens
321
-
322
- # @!attribute output_tokens
323
- #
324
- # @return [Integer]
325
- required :output_tokens, Integer, api_name: :outputTokens
326
-
327
- # @!attribute reasoning_tokens
328
- #
329
- # @return [Integer]
330
- required :reasoning_tokens, Integer, api_name: :reasoningTokens
331
-
332
- # @!attribute steps
333
- #
334
- # @return [Integer]
335
- required :steps, Integer
336
-
337
- # @!attribute total_tokens
338
- #
339
- # @return [Integer]
340
- required :total_tokens, Integer, api_name: :totalTokens
341
-
342
275
  # @!attribute credits
343
276
  #
344
277
  # @return [Integer, nil]
345
278
  optional :credits, Integer
346
279
 
347
- # @!method initialize(cache_read_tokens:, cache_write_tokens:, cost_usd:, input_tokens:, output_tokens:, reasoning_tokens:, steps:, total_tokens:, credits: nil)
348
- # @param cache_read_tokens [Integer]
349
- # @param cache_write_tokens [Integer]
350
- # @param cost_usd [Float]
351
- # @param input_tokens [Integer]
352
- # @param output_tokens [Integer]
353
- # @param reasoning_tokens [Integer]
354
- # @param steps [Integer]
355
- # @param total_tokens [Integer]
280
+ # @!attribute duration_ms
281
+ #
282
+ # @return [Integer, nil]
283
+ optional :duration_ms, Integer, api_name: :durationMs
284
+
285
+ # @!method initialize(credits: nil, duration_ms: nil)
356
286
  # @param credits [Integer]
287
+ # @param duration_ms [Integer]
357
288
  end
358
289
  end
359
290
  end
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Workers#create
6
+ class WorkerCreateResponse < Handinger::Internal::Type::BaseModel
7
+ # @!attribute id
8
+ #
9
+ # @return [String]
10
+ required :id, String
11
+
12
+ # @!attribute created_at
13
+ #
14
+ # @return [String, nil]
15
+ required :created_at, String, api_name: :createdAt, nil?: true
16
+
17
+ # @!attribute instructions
18
+ #
19
+ # @return [String]
20
+ required :instructions, String
21
+
22
+ # @!attribute organization_id
23
+ #
24
+ # @return [String]
25
+ required :organization_id, String, api_name: :organizationId
26
+
27
+ # @!attribute output_schema
28
+ #
29
+ # @return [Hash{Symbol=>Object}, nil]
30
+ required :output_schema,
31
+ Handinger::Internal::Type::HashOf[Handinger::Internal::Type::Unknown],
32
+ api_name: :outputSchema,
33
+ nil?: true
34
+
35
+ # @!attribute summary
36
+ #
37
+ # @return [String]
38
+ required :summary, String
39
+
40
+ # @!attribute title
41
+ #
42
+ # @return [String]
43
+ required :title, String
44
+
45
+ # @!attribute updated_at
46
+ #
47
+ # @return [String, nil]
48
+ required :updated_at, String, api_name: :updatedAt, nil?: true
49
+
50
+ # @!attribute user_id
51
+ #
52
+ # @return [String]
53
+ required :user_id, String, api_name: :userId
54
+
55
+ # @!attribute visibility
56
+ #
57
+ # @return [Symbol, Handinger::Models::WorkerCreateResponse::Visibility]
58
+ required :visibility, enum: -> { Handinger::Models::WorkerCreateResponse::Visibility }
59
+
60
+ # @!method initialize(id:, created_at:, instructions:, organization_id:, output_schema:, summary:, title:, updated_at:, user_id:, visibility:)
61
+ # @param id [String]
62
+ # @param created_at [String, nil]
63
+ # @param instructions [String]
64
+ # @param organization_id [String]
65
+ # @param output_schema [Hash{Symbol=>Object}, nil]
66
+ # @param summary [String]
67
+ # @param title [String]
68
+ # @param updated_at [String, nil]
69
+ # @param user_id [String]
70
+ # @param visibility [Symbol, Handinger::Models::WorkerCreateResponse::Visibility]
71
+
72
+ # @see Handinger::Models::WorkerCreateResponse#visibility
73
+ module Visibility
74
+ extend Handinger::Internal::Type::Enum
75
+
76
+ PUBLIC = :public
77
+ PRIVATE = :private
78
+
79
+ # @!method self.values
80
+ # @return [Array<Symbol>]
81
+ end
82
+ end
83
+ end
84
+ end
@@ -2,6 +2,15 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- WorkerRetrieveEmailResponse = String
5
+ # @see Handinger::Resources::Workers#retrieve_email
6
+ class WorkerRetrieveEmailResponse < Handinger::Internal::Type::BaseModel
7
+ # @!attribute email
8
+ #
9
+ # @return [String]
10
+ required :email, String
11
+
12
+ # @!method initialize(email:)
13
+ # @param email [String]
14
+ end
6
15
  end
7
16
  end
@@ -13,17 +13,35 @@ module Handinger
13
13
  required :worker_id, String
14
14
 
15
15
  # @!attribute stream
16
- # Return a server-sent event stream instead of JSON.
16
+ # Set to "true" to receive a server-sent event stream that replays all stored
17
+ # messages and then continues with live chunks from the active task (if any)
18
+ # before closing.
17
19
  #
18
- # @return [Boolean, nil]
19
- optional :stream, Handinger::Internal::Type::Boolean
20
+ # @return [Symbol, Handinger::Models::WorkerRetrieveParams::Stream, nil]
21
+ optional :stream, enum: -> { Handinger::WorkerRetrieveParams::Stream }
20
22
 
21
23
  # @!method initialize(worker_id:, stream: nil, request_options: {})
24
+ # Some parameter documentations has been truncated, see
25
+ # {Handinger::Models::WorkerRetrieveParams} for more details.
26
+ #
22
27
  # @param worker_id [String]
23
28
  #
24
- # @param stream [Boolean] Return a server-sent event stream instead of JSON.
29
+ # @param stream [Symbol, Handinger::Models::WorkerRetrieveParams::Stream] Set to "true" to receive a server-sent event stream that replays all stored mess
25
30
  #
26
31
  # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}]
32
+
33
+ # Set to "true" to receive a server-sent event stream that replays all stored
34
+ # messages and then continues with live chunks from the active task (if any)
35
+ # before closing.
36
+ module Stream
37
+ extend Handinger::Internal::Type::Enum
38
+
39
+ TRUE = :true
40
+ FALSE = :false
41
+
42
+ # @!method self.values
43
+ # @return [Array<Symbol>]
44
+ end
27
45
  end
28
46
  end
29
47
  end
@@ -39,21 +39,25 @@ module Handinger
39
39
  mod.define_sorbet_constant!(const) { T.type_alias { mod.to_sorbet_type } }
40
40
  end
41
41
 
42
+ CreateTask = Handinger::Models::CreateTask
43
+
42
44
  CreateWorker = Handinger::Models::CreateWorker
43
45
 
44
- Worker = Handinger::Models::Worker
46
+ Task = Handinger::Models::Task
47
+
48
+ TaskCreateParams = Handinger::Models::TaskCreateParams
49
+
50
+ TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
45
51
 
46
- WorkerContinueParams = Handinger::Models::WorkerContinueParams
52
+ TaskWithTurns = Handinger::Models::TaskWithTurns
53
+
54
+ Worker = Handinger::Models::Worker
47
55
 
48
56
  WorkerCreateParams = Handinger::Models::WorkerCreateParams
49
57
 
50
58
  WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
51
59
 
52
- WorkerRetrieveFileParams = Handinger::Models::WorkerRetrieveFileParams
53
-
54
60
  WorkerRetrieveParams = Handinger::Models::WorkerRetrieveParams
55
61
 
56
62
  Workers = Handinger::Models::Workers
57
-
58
- WorkerStreamUpdatesParams = Handinger::Models::WorkerStreamUpdatesParams
59
63
  end
@@ -0,0 +1,76 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Resources
5
+ # Run and inspect tasks against a worker.
6
+ class Tasks
7
+ # Some parameter documentations has been truncated, see
8
+ # {Handinger::Models::TaskCreateParams} for more details.
9
+ #
10
+ # Run a new task against an existing worker. Send `multipart/form-data` to attach
11
+ # files; the bytes are bootstrapped into the worker's workspace before the task
12
+ # starts.
13
+ #
14
+ # @overload create(worker_id:, instructions: nil, output_schema: nil, prompt: nil, summary: nil, task_id: nil, title: nil, visibility: nil, request_options: {})
15
+ #
16
+ # @param worker_id [String] Worker id the task belongs to.
17
+ #
18
+ # @param instructions [String] Persistent system prompt the worker uses for every task it runs.
19
+ #
20
+ # @param output_schema [Hash{Symbol=>Object}] Optional JSON Schema (Draft-07) describing the structured object the worker must
21
+ #
22
+ # @param prompt [String] Natural-language description of the worker to use for AI-generated instructions
23
+ #
24
+ # @param summary [String] Short one-line description of the worker's purpose. Auto-generated when omitted
25
+ #
26
+ # @param task_id [String] Optional client-provided task id. Reuse this id to add turns to an existing task
27
+ #
28
+ # @param title [String] Optional display name. When omitted, Handinger assigns a random dog-themed name.
29
+ #
30
+ # @param visibility [Symbol, Handinger::Models::CreateTask::Visibility] `public` (default) is visible to all org members. `private` is only visible to i
31
+ #
32
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
33
+ #
34
+ # @return [Handinger::Models::Worker]
35
+ #
36
+ # @see Handinger::Models::TaskCreateParams
37
+ def create(params)
38
+ parsed, options = Handinger::TaskCreateParams.dump_request(params)
39
+ @client.request(
40
+ method: :post,
41
+ path: "api/tasks",
42
+ body: parsed,
43
+ model: Handinger::Worker,
44
+ options: options
45
+ )
46
+ end
47
+
48
+ # Retrieve a single task and its individual turns.
49
+ #
50
+ # @overload retrieve(task_id, request_options: {})
51
+ #
52
+ # @param task_id [String] Task id returned by the create task endpoint.
53
+ #
54
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
55
+ #
56
+ # @return [Handinger::Models::TaskWithTurns]
57
+ #
58
+ # @see Handinger::Models::TaskRetrieveParams
59
+ def retrieve(task_id, params = {})
60
+ @client.request(
61
+ method: :get,
62
+ path: ["api/tasks/%1$s", task_id],
63
+ model: Handinger::TaskWithTurns,
64
+ options: params[:request_options]
65
+ )
66
+ end
67
+
68
+ # @api private
69
+ #
70
+ # @param client [Handinger::Client]
71
+ def initialize(client:)
72
+ @client = client
73
+ end
74
+ end
75
+ end
76
+ end
@@ -2,42 +2,60 @@
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
  # @return [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
+ # Some parameter documentations has been truncated, see
12
+ # {Handinger::Models::WorkerCreateParams} for more details.
11
13
  #
12
- # @overload create(input:, budget: nil, stream: nil, request_options: {})
14
+ # Create a new worker. The worker is a reusable agent template; tasks are runs
15
+ # against this template. Use `POST /tasks` to actually run the agent.
16
+ #
17
+ # @overload create(instructions: nil, output_schema: nil, prompt: nil, summary: nil, title: nil, visibility: nil, request_options: {})
18
+ #
19
+ # @param instructions [String] Persistent system prompt the worker uses for every task it runs.
20
+ #
21
+ # @param output_schema [Hash{Symbol=>Object}] Optional JSON Schema (Draft-07) describing the structured object the worker must
22
+ #
23
+ # @param prompt [String] Natural-language description of the worker to use for AI-generated instructions
24
+ #
25
+ # @param summary [String] Short one-line description of the worker's purpose. Auto-generated when omitted
26
+ #
27
+ # @param title [String] Optional display name. When omitted, Handinger assigns a random dog-themed name.
28
+ #
29
+ # @param visibility [Symbol, Handinger::Models::CreateWorker::Visibility] `public` (default) is visible to all org members. `private` is only visible to i
13
30
  #
14
- # @param input [String]
15
- # @param budget [Symbol, Handinger::Models::CreateWorker::Budget]
16
- # @param stream [Boolean]
17
31
  # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
18
32
  #
19
- # @return [Handinger::Models::Worker]
33
+ # @return [Handinger::Models::WorkerCreateResponse]
20
34
  #
21
35
  # @see Handinger::Models::WorkerCreateParams
22
- def create(params)
36
+ def create(params = {})
23
37
  parsed, options = Handinger::WorkerCreateParams.dump_request(params)
24
38
  @client.request(
25
39
  method: :post,
26
40
  path: "api/workers",
27
41
  body: parsed,
28
- model: Handinger::Worker,
42
+ model: Handinger::Models::WorkerCreateResponse,
29
43
  options: options
30
44
  )
31
45
  end
32
46
 
33
- # Retrieve the current worker state. Pass stream=true or request text/event-stream
34
- # to subscribe to updates.
47
+ # Some parameter documentations has been truncated, see
48
+ # {Handinger::Models::WorkerRetrieveParams} for more details.
49
+ #
50
+ # Retrieve the current worker state and messages from its most recent task.
51
+ # Returns a JSON worker object by default, or a server-sent event stream when
52
+ # `stream=true`.
35
53
  #
36
54
  # @overload retrieve(worker_id, stream: nil, request_options: {})
37
55
  #
38
56
  # @param worker_id [String] Worker id returned by the create worker endpoint.
39
57
  #
40
- # @param stream [Boolean] Return a server-sent event stream instead of JSON.
58
+ # @param stream [Symbol, Handinger::Models::WorkerRetrieveParams::Stream] Set to "true" to receive a server-sent event stream that replays all stored mess
41
59
  #
42
60
  # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
43
61
  #
@@ -56,34 +74,6 @@ module Handinger
56
74
  )
57
75
  end
58
76
 
59
- # Send another instruction to an existing worker.
60
- #
61
- # @overload continue(worker_id, input:, budget: nil, stream: nil, request_options: {})
62
- #
63
- # @param worker_id [String] Worker id returned by the create worker endpoint.
64
- #
65
- # @param input [String]
66
- #
67
- # @param budget [Symbol, Handinger::Models::CreateWorker::Budget]
68
- #
69
- # @param stream [Boolean]
70
- #
71
- # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
72
- #
73
- # @return [Handinger::Models::Worker]
74
- #
75
- # @see Handinger::Models::WorkerContinueParams
76
- def continue(worker_id, params)
77
- parsed, options = Handinger::WorkerContinueParams.dump_request(params)
78
- @client.request(
79
- method: :post,
80
- path: ["api/workers/%1$s", worker_id],
81
- body: parsed,
82
- model: Handinger::Worker,
83
- options: options
84
- )
85
- end
86
-
87
77
  # Retrieve the inbound email address for a worker.
88
78
  #
89
79
  # @overload retrieve_email(worker_id, request_options: {})
@@ -92,65 +82,14 @@ module Handinger
92
82
  #
93
83
  # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
94
84
  #
95
- # @return [String]
85
+ # @return [Handinger::Models::WorkerRetrieveEmailResponse]
96
86
  #
97
87
  # @see Handinger::Models::WorkerRetrieveEmailParams
98
88
  def retrieve_email(worker_id, params = {})
99
89
  @client.request(
100
90
  method: :get,
101
91
  path: ["api/workers/%1$s/email", worker_id],
102
- model: String,
103
- options: params[:request_options]
104
- )
105
- end
106
-
107
- # Retrieve a file published from a worker workspace. The runtime route accepts
108
- # nested paths after /files/.
109
- #
110
- # @overload retrieve_file(file_path, worker_id:, request_options: {})
111
- #
112
- # @param file_path [String] Workspace file path after /files. URL-encode slashes for nested paths.
113
- #
114
- # @param worker_id [String] Worker id returned by the create worker endpoint.
115
- #
116
- # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
117
- #
118
- # @return [StringIO]
119
- #
120
- # @see Handinger::Models::WorkerRetrieveFileParams
121
- def retrieve_file(file_path, params)
122
- parsed, options = Handinger::WorkerRetrieveFileParams.dump_request(params)
123
- worker_id =
124
- parsed.delete(:worker_id) do
125
- raise ArgumentError.new("missing required path argument #{_1}")
126
- end
127
- @client.request(
128
- method: :get,
129
- path: ["api/workers/%1$s/files/%2$s", worker_id, file_path],
130
- headers: {"accept" => "application/octet-stream"},
131
- model: StringIO,
132
- options: options
133
- )
134
- end
135
-
136
- # Subscribe to a worker using server-sent events.
137
- #
138
- # @overload stream_updates_streaming(worker_id, request_options: {})
139
- #
140
- # @param worker_id [String] Worker id returned by the create worker endpoint.
141
- #
142
- # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
143
- #
144
- # @return [Handinger::Internal::Stream<String>]
145
- #
146
- # @see Handinger::Models::WorkerStreamUpdatesParams
147
- def stream_updates_streaming(worker_id, params = {})
148
- @client.request(
149
- method: :get,
150
- path: ["api/workers/%1$s/stream", worker_id],
151
- headers: {"accept" => "text/event-stream"},
152
- stream: Handinger::Internal::Stream,
153
- model: String,
92
+ model: Handinger::Models::WorkerRetrieveEmailResponse,
154
93
  options: params[:request_options]
155
94
  )
156
95
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Handinger
4
- VERSION = "0.0.2"
4
+ VERSION = "0.2.0"
5
5
  end
data/lib/handinger.rb CHANGED
@@ -44,7 +44,6 @@ require_relative "handinger/internal/type/array_of"
44
44
  require_relative "handinger/internal/type/hash_of"
45
45
  require_relative "handinger/internal/type/base_model"
46
46
  require_relative "handinger/internal/type/base_page"
47
- require_relative "handinger/internal/type/base_stream"
48
47
  require_relative "handinger/internal/type/request_parameters"
49
48
  require_relative "handinger/internal"
50
49
  require_relative "handinger/request_options"
@@ -53,14 +52,17 @@ require_relative "handinger/errors"
53
52
  require_relative "handinger/internal/transport/base_client"
54
53
  require_relative "handinger/internal/transport/pooled_net_requester"
55
54
  require_relative "handinger/client"
56
- require_relative "handinger/internal/stream"
57
55
  require_relative "handinger/models/create_worker"
56
+ require_relative "handinger/models/create_task"
57
+ require_relative "handinger/models/task"
58
+ require_relative "handinger/models/task_create_params"
59
+ require_relative "handinger/models/task_retrieve_params"
60
+ require_relative "handinger/models/task_with_turns"
58
61
  require_relative "handinger/models/worker"
59
- require_relative "handinger/models/worker_continue_params"
60
62
  require_relative "handinger/models/worker_create_params"
63
+ require_relative "handinger/models/worker_create_response"
61
64
  require_relative "handinger/models/worker_retrieve_email_params"
62
65
  require_relative "handinger/models/worker_retrieve_email_response"
63
- require_relative "handinger/models/worker_retrieve_file_params"
64
66
  require_relative "handinger/models/worker_retrieve_params"
65
67
  require_relative "handinger/models/workers/schedule_cancel_params"
66
68
  require_relative "handinger/models/workers/schedule_cancel_response"
@@ -68,8 +70,7 @@ require_relative "handinger/models/workers/schedule_create_params"
68
70
  require_relative "handinger/models/workers/schedule_list_params"
69
71
  require_relative "handinger/models/workers/schedule_list_response"
70
72
  require_relative "handinger/models/workers/worker_schedule"
71
- require_relative "handinger/models/worker_stream_updates_params"
72
- require_relative "handinger/models/worker_stream_updates_response"
73
73
  require_relative "handinger/models"
74
+ require_relative "handinger/resources/tasks"
74
75
  require_relative "handinger/resources/workers"
75
76
  require_relative "handinger/resources/workers/schedules"
@@ -13,9 +13,14 @@ module Handinger
13
13
  sig { returns(String) }
14
14
  attr_reader :api_key
15
15
 
16
+ # Create, retrieve, and manage agent worker templates.
16
17
  sig { returns(Handinger::Resources::Workers) }
17
18
  attr_reader :workers
18
19
 
20
+ # Run and inspect tasks against a worker.
21
+ sig { returns(Handinger::Resources::Tasks) }
22
+ attr_reader :tasks
23
+
19
24
  # @api private
20
25
  sig { override.returns(T::Hash[String, String]) }
21
26
  private def auth_headers
@@ -49,15 +49,7 @@ module Handinger
49
49
  ]
50
50
  ]
51
51
  ),
52
- stream:
53
- T.nilable(
54
- T::Class[
55
- Handinger::Internal::Type::BaseStream[
56
- T.anything,
57
- Handinger::Internal::Type::BaseModel
58
- ]
59
- ]
60
- ),
52
+ stream: T.nilable(T::Class[T.anything]),
61
53
  model: T.nilable(Handinger::Internal::Type::Converter::Input),
62
54
  options: T.nilable(Handinger::RequestOptions::OrHash)
63
55
  }
@@ -277,15 +269,7 @@ module Handinger
277
269
  ]
278
270
  ]
279
271
  ),
280
- stream:
281
- T.nilable(
282
- T::Class[
283
- Handinger::Internal::Type::BaseStream[
284
- T.anything,
285
- Handinger::Internal::Type::BaseModel
286
- ]
287
- ]
288
- ),
272
+ stream: T.nilable(T::Class[T.anything]),
289
273
  model: T.nilable(Handinger::Internal::Type::Converter::Input),
290
274
  options: T.nilable(Handinger::RequestOptions::OrHash)
291
275
  ).returns(T.anything)