handinger 0.1.0 → 0.3.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 (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +35 -0
  3. data/README.md +19 -20
  4. data/SECURITY.md +4 -0
  5. data/lib/handinger/client.rb +21 -1
  6. data/lib/handinger/internal/transport/base_client.rb +1 -3
  7. data/lib/handinger/internal/type/base_model.rb +3 -3
  8. data/lib/handinger/models/create_task.rb +28 -0
  9. data/lib/handinger/models/create_worker.rb +59 -19
  10. data/lib/handinger/models/delete_task_response.rb +16 -0
  11. data/lib/handinger/models/delete_worker_response.rb +16 -0
  12. data/lib/handinger/models/task.rb +119 -0
  13. data/lib/handinger/models/task_create_params.rb +14 -0
  14. data/lib/handinger/models/task_delete_params.rb +20 -0
  15. data/lib/handinger/models/task_retrieve_params.rb +20 -0
  16. data/lib/handinger/models/task_with_turns.rb +113 -0
  17. data/lib/handinger/models/update_worker.rb +71 -0
  18. data/lib/handinger/models/worker.rb +9 -84
  19. data/lib/handinger/models/{worker_stream_updates_params.rb → worker_delete_params.rb} +2 -2
  20. data/lib/handinger/models/worker_retrieve_email_response.rb +10 -1
  21. data/lib/handinger/models/worker_retrieve_params.rb +22 -4
  22. data/lib/handinger/models/worker_template.rb +84 -0
  23. data/lib/handinger/models/{worker_continue_params.rb → worker_update_params.rb} +2 -2
  24. data/lib/handinger/models.rb +23 -5
  25. data/lib/handinger/resources/tasks.rb +98 -0
  26. data/lib/handinger/resources/workers.rb +66 -68
  27. data/lib/handinger/version.rb +1 -1
  28. data/lib/handinger.rb +13 -6
  29. data/rbi/handinger/client.rbi +5 -0
  30. data/rbi/handinger/internal/transport/base_client.rbi +2 -18
  31. data/rbi/handinger/models/create_task.rbi +40 -0
  32. data/rbi/handinger/models/create_worker.rbi +84 -26
  33. data/rbi/handinger/models/delete_task_response.rbi +23 -0
  34. data/rbi/handinger/models/delete_worker_response.rbi +23 -0
  35. data/rbi/handinger/models/task.rbi +160 -0
  36. data/rbi/handinger/models/task_create_params.rbi +27 -0
  37. data/rbi/handinger/models/task_delete_params.rbi +35 -0
  38. data/rbi/handinger/models/task_retrieve_params.rbi +35 -0
  39. data/rbi/handinger/models/task_with_turns.rbi +149 -0
  40. data/rbi/handinger/models/update_worker.rbi +112 -0
  41. data/rbi/handinger/models/worker.rbi +10 -120
  42. data/rbi/handinger/models/{worker_stream_updates_params.rbi → worker_delete_params.rbi} +2 -5
  43. data/rbi/handinger/models/worker_retrieve_email_response.rbi +20 -1
  44. data/rbi/handinger/models/worker_retrieve_params.rbi +40 -6
  45. data/rbi/handinger/models/worker_template.rbi +110 -0
  46. data/rbi/handinger/models/{worker_continue_params.rbi → worker_update_params.rbi} +2 -2
  47. data/rbi/handinger/models.rbi +23 -5
  48. data/rbi/handinger/resources/tasks.rbi +86 -0
  49. data/rbi/handinger/resources/workers.rbi +68 -43
  50. data/sig/handinger/client.rbs +2 -0
  51. data/sig/handinger/models/create_task.rbs +19 -0
  52. data/sig/handinger/models/create_worker.rbs +44 -23
  53. data/sig/handinger/models/delete_task_response.rbs +13 -0
  54. data/sig/handinger/models/delete_worker_response.rbs +13 -0
  55. data/sig/handinger/models/task.rbs +114 -0
  56. data/sig/handinger/models/task_create_params.rbs +15 -0
  57. data/sig/handinger/models/task_delete_params.rbs +23 -0
  58. data/sig/handinger/models/task_retrieve_params.rbs +23 -0
  59. data/sig/handinger/models/task_with_turns.rbs +104 -0
  60. data/sig/handinger/models/update_worker.rbs +61 -0
  61. data/sig/handinger/models/worker.rbs +7 -89
  62. data/sig/handinger/models/{worker_stream_updates_params.rbs → worker_delete_params.rbs} +2 -2
  63. data/sig/handinger/models/worker_retrieve_email_response.rbs +9 -1
  64. data/sig/handinger/models/worker_retrieve_params.rbs +21 -5
  65. data/sig/handinger/models/worker_template.rbs +76 -0
  66. data/sig/handinger/models/{worker_continue_params.rbs → worker_update_params.rbs} +2 -2
  67. data/sig/handinger/models.rbs +23 -5
  68. data/sig/handinger/resources/tasks.rbs +29 -0
  69. data/sig/handinger/resources/workers.rbs +19 -20
  70. metadata +42 -21
  71. data/lib/handinger/internal/stream.rb +0 -29
  72. data/lib/handinger/internal/type/base_stream.rb +0 -83
  73. data/lib/handinger/models/worker_retrieve_file_params.rb +0 -26
  74. data/lib/handinger/models/worker_stream_updates_response.rb +0 -7
  75. data/rbi/handinger/internal/stream.rbi +0 -20
  76. data/rbi/handinger/internal/type/base_stream.rbi +0 -75
  77. data/rbi/handinger/models/worker_retrieve_file_params.rbi +0 -46
  78. data/rbi/handinger/models/worker_stream_updates_response.rbi +0 -7
  79. data/sig/handinger/internal/stream.rbs +0 -9
  80. data/sig/handinger/internal/type/base_stream.rbs +0 -38
  81. data/sig/handinger/models/worker_retrieve_file_params.rbs +0 -28
  82. data/sig/handinger/models/worker_stream_updates_response.rbs +0 -5
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Tasks#retrieve
6
+ class TaskWithTurns < Handinger::Internal::Type::BaseModel
7
+ # @!attribute task
8
+ #
9
+ # @return [Handinger::Models::Task]
10
+ required :task, -> { Handinger::Task }
11
+
12
+ # @!attribute turns
13
+ #
14
+ # @return [Array<Handinger::Models::TaskWithTurns::Turn>]
15
+ required :turns, -> { Handinger::Internal::Type::ArrayOf[Handinger::TaskWithTurns::Turn] }
16
+
17
+ # @!method initialize(task:, turns:)
18
+ # @param task [Handinger::Models::Task]
19
+ # @param turns [Array<Handinger::Models::TaskWithTurns::Turn>]
20
+
21
+ class Turn < Handinger::Internal::Type::BaseModel
22
+ # @!attribute id
23
+ #
24
+ # @return [String]
25
+ required :id, String
26
+
27
+ # @!attribute completed_at
28
+ #
29
+ # @return [String, nil]
30
+ required :completed_at, String, api_name: :completedAt, nil?: true
31
+
32
+ # @!attribute credits
33
+ #
34
+ # @return [Float]
35
+ required :credits, Float
36
+
37
+ # @!attribute duration_ms
38
+ #
39
+ # @return [Integer]
40
+ required :duration_ms, Integer, api_name: :durationMs
41
+
42
+ # @!attribute input
43
+ #
44
+ # @return [String]
45
+ required :input, String
46
+
47
+ # @!attribute input_tokens
48
+ #
49
+ # @return [Integer]
50
+ required :input_tokens, Integer, api_name: :inputTokens
51
+
52
+ # @!attribute output_text
53
+ #
54
+ # @return [String]
55
+ required :output_text, String, api_name: :outputText
56
+
57
+ # @!attribute output_tokens
58
+ #
59
+ # @return [Integer]
60
+ required :output_tokens, Integer, api_name: :outputTokens
61
+
62
+ # @!attribute role
63
+ #
64
+ # @return [String]
65
+ required :role, String
66
+
67
+ # @!attribute seq
68
+ #
69
+ # @return [Integer]
70
+ required :seq, Integer
71
+
72
+ # @!attribute started_at
73
+ #
74
+ # @return [String]
75
+ required :started_at, String, api_name: :startedAt
76
+
77
+ # @!attribute status
78
+ #
79
+ # @return [String]
80
+ required :status, String
81
+
82
+ # @!attribute structured_output
83
+ #
84
+ # @return [Hash{Symbol=>Object}, nil]
85
+ required :structured_output,
86
+ Handinger::Internal::Type::HashOf[Handinger::Internal::Type::Unknown],
87
+ api_name: :structuredOutput,
88
+ nil?: true
89
+
90
+ # @!attribute task_id
91
+ #
92
+ # @return [String]
93
+ required :task_id, String, api_name: :taskId
94
+
95
+ # @!method initialize(id:, completed_at:, credits:, duration_ms:, input:, input_tokens:, output_text:, output_tokens:, role:, seq:, started_at:, status:, structured_output:, task_id:)
96
+ # @param id [String]
97
+ # @param completed_at [String, nil]
98
+ # @param credits [Float]
99
+ # @param duration_ms [Integer]
100
+ # @param input [String]
101
+ # @param input_tokens [Integer]
102
+ # @param output_text [String]
103
+ # @param output_tokens [Integer]
104
+ # @param role [String]
105
+ # @param seq [Integer]
106
+ # @param started_at [String]
107
+ # @param status [String]
108
+ # @param structured_output [Hash{Symbol=>Object}, nil]
109
+ # @param task_id [String]
110
+ end
111
+ end
112
+ end
113
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ class UpdateWorker < Handinger::Internal::Type::BaseModel
6
+ # @!attribute instructions
7
+ # Replaces the persistent system prompt. Subsequent tasks pick up the new
8
+ # instructions immediately; in-flight tasks keep using the previous version.
9
+ #
10
+ # @return [String, nil]
11
+ optional :instructions, String
12
+
13
+ # @!attribute output_schema
14
+ # Replace the worker's structured output schema. Pass `null` to clear it and
15
+ # return to free-form text responses.
16
+ #
17
+ # @return [Hash{Symbol=>Object}, nil]
18
+ optional :output_schema,
19
+ Handinger::Internal::Type::HashOf[Handinger::Internal::Type::Unknown],
20
+ api_name: :outputSchema,
21
+ nil?: true
22
+
23
+ # @!attribute summary
24
+ # Replaces the worker's short one-line summary.
25
+ #
26
+ # @return [String, nil]
27
+ optional :summary, String
28
+
29
+ # @!attribute title
30
+ # New display name for the worker.
31
+ #
32
+ # @return [String, nil]
33
+ optional :title, String
34
+
35
+ # @!attribute visibility
36
+ # Change visibility between `public` (any org member can run tasks) and `private`
37
+ # (only invited members).
38
+ #
39
+ # @return [Symbol, Handinger::Models::UpdateWorker::Visibility, nil]
40
+ optional :visibility, enum: -> { Handinger::UpdateWorker::Visibility }
41
+
42
+ # @!method initialize(instructions: nil, output_schema: nil, summary: nil, title: nil, visibility: nil)
43
+ # Some parameter documentations has been truncated, see
44
+ # {Handinger::Models::UpdateWorker} for more details.
45
+ #
46
+ # @param instructions [String] Replaces the persistent system prompt. Subsequent tasks pick up the new instruct
47
+ #
48
+ # @param output_schema [Hash{Symbol=>Object}, nil] Replace the worker's structured output schema. Pass `null` to clear it and retur
49
+ #
50
+ # @param summary [String] Replaces the worker's short one-line summary.
51
+ #
52
+ # @param title [String] New display name for the worker.
53
+ #
54
+ # @param visibility [Symbol, Handinger::Models::UpdateWorker::Visibility] Change visibility between `public` (any org member can run tasks) and `private`
55
+
56
+ # Change visibility between `public` (any org member can run tasks) and `private`
57
+ # (only invited members).
58
+ #
59
+ # @see Handinger::Models::UpdateWorker#visibility
60
+ module Visibility
61
+ extend Handinger::Internal::Type::Enum
62
+
63
+ PUBLIC = :public
64
+ PRIVATE = :private
65
+
66
+ # @!method self.values
67
+ # @return [Array<Symbol>]
68
+ end
69
+ end
70
+ end
71
+ end
@@ -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,77 +270,8 @@ 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]
@@ -349,15 +282,7 @@ module Handinger
349
282
  # @return [Integer, nil]
350
283
  optional :duration_ms, Integer, api_name: :durationMs
351
284
 
352
- # @!method initialize(cache_read_tokens:, cache_write_tokens:, cost_usd:, input_tokens:, output_tokens:, reasoning_tokens:, steps:, total_tokens:, credits: nil, duration_ms: nil)
353
- # @param cache_read_tokens [Integer]
354
- # @param cache_write_tokens [Integer]
355
- # @param cost_usd [Float]
356
- # @param input_tokens [Integer]
357
- # @param output_tokens [Integer]
358
- # @param reasoning_tokens [Integer]
359
- # @param steps [Integer]
360
- # @param total_tokens [Integer]
285
+ # @!method initialize(credits: nil, duration_ms: nil)
361
286
  # @param credits [Integer]
362
287
  # @param duration_ms [Integer]
363
288
  end
@@ -2,8 +2,8 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- # @see Handinger::Resources::Workers#stream_updates_streaming
6
- class WorkerStreamUpdatesParams < Handinger::Internal::Type::BaseModel
5
+ # @see Handinger::Resources::Workers#delete
6
+ class WorkerDeleteParams < Handinger::Internal::Type::BaseModel
7
7
  extend Handinger::Internal::Type::RequestParameters::Converter
8
8
  include Handinger::Internal::Type::RequestParameters
9
9
 
@@ -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
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Workers#create
6
+ class WorkerTemplate < 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::WorkerTemplate::Visibility]
58
+ required :visibility, enum: -> { Handinger::WorkerTemplate::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::WorkerTemplate::Visibility]
71
+
72
+ # @see Handinger::Models::WorkerTemplate#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,8 +2,8 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- # @see Handinger::Resources::Workers#continue
6
- class WorkerContinueParams < Handinger::Models::CreateWorker
5
+ # @see Handinger::Resources::Workers#update
6
+ class WorkerUpdateParams < Handinger::Models::UpdateWorker
7
7
  extend Handinger::Internal::Type::RequestParameters::Converter
8
8
  include Handinger::Internal::Type::RequestParameters
9
9
 
@@ -39,21 +39,39 @@ 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
+ DeleteTaskResponse = Handinger::Models::DeleteTaskResponse
47
+
48
+ DeleteWorkerResponse = Handinger::Models::DeleteWorkerResponse
49
+
50
+ Task = Handinger::Models::Task
51
+
52
+ TaskCreateParams = Handinger::Models::TaskCreateParams
53
+
54
+ TaskDeleteParams = Handinger::Models::TaskDeleteParams
55
+
56
+ TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
45
57
 
46
- WorkerContinueParams = Handinger::Models::WorkerContinueParams
58
+ TaskWithTurns = Handinger::Models::TaskWithTurns
59
+
60
+ UpdateWorker = Handinger::Models::UpdateWorker
61
+
62
+ Worker = Handinger::Models::Worker
47
63
 
48
64
  WorkerCreateParams = Handinger::Models::WorkerCreateParams
49
65
 
50
- WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
66
+ WorkerDeleteParams = Handinger::Models::WorkerDeleteParams
51
67
 
52
- WorkerRetrieveFileParams = Handinger::Models::WorkerRetrieveFileParams
68
+ WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
53
69
 
54
70
  WorkerRetrieveParams = Handinger::Models::WorkerRetrieveParams
55
71
 
56
72
  Workers = Handinger::Models::Workers
57
73
 
58
- WorkerStreamUpdatesParams = Handinger::Models::WorkerStreamUpdatesParams
74
+ WorkerTemplate = Handinger::Models::WorkerTemplate
75
+
76
+ WorkerUpdateParams = Handinger::Models::WorkerUpdateParams
59
77
  end
@@ -0,0 +1,98 @@
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 a `taskId` of a prior task to
11
+ # add a follow-up turn instead of starting a fresh task. Send
12
+ # `multipart/form-data` to attach files; the bytes are bootstrapped into the
13
+ # worker's workspace before the task starts.
14
+ #
15
+ # @overload create(worker_id:, instructions: nil, output_schema: nil, prompt: nil, summary: nil, task_id: nil, title: nil, visibility: nil, request_options: {})
16
+ #
17
+ # @param worker_id [String] Worker id the task belongs to.
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 task_id [String] Optional client-provided task id. Reuse this id to add turns to an existing task
28
+ #
29
+ # @param title [String] Optional display name. When omitted, Handinger assigns a random dog-themed name.
30
+ #
31
+ # @param visibility [Symbol, Handinger::Models::CreateTask::Visibility] `public` (default) is visible to all org members. `private` is only visible to i
32
+ #
33
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
34
+ #
35
+ # @return [Handinger::Models::Worker]
36
+ #
37
+ # @see Handinger::Models::TaskCreateParams
38
+ def create(params)
39
+ parsed, options = Handinger::TaskCreateParams.dump_request(params)
40
+ @client.request(
41
+ method: :post,
42
+ path: "api/tasks",
43
+ body: parsed,
44
+ model: Handinger::Worker,
45
+ options: options
46
+ )
47
+ end
48
+
49
+ # Retrieve a single task and its individual turns.
50
+ #
51
+ # @overload retrieve(task_id, request_options: {})
52
+ #
53
+ # @param task_id [String] Task id returned by the create task endpoint.
54
+ #
55
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
56
+ #
57
+ # @return [Handinger::Models::TaskWithTurns]
58
+ #
59
+ # @see Handinger::Models::TaskRetrieveParams
60
+ def retrieve(task_id, params = {})
61
+ @client.request(
62
+ method: :get,
63
+ path: ["api/tasks/%1$s", task_id],
64
+ model: Handinger::TaskWithTurns,
65
+ options: params[:request_options]
66
+ )
67
+ end
68
+
69
+ # Archive a task so it stops appearing in `GET /tasks` results. Turns and files
70
+ # are retained for audit purposes. Only the worker creator can archive a task.
71
+ #
72
+ # @overload delete(task_id, request_options: {})
73
+ #
74
+ # @param task_id [String] Task id returned by the create task endpoint.
75
+ #
76
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
77
+ #
78
+ # @return [Handinger::Models::DeleteTaskResponse]
79
+ #
80
+ # @see Handinger::Models::TaskDeleteParams
81
+ def delete(task_id, params = {})
82
+ @client.request(
83
+ method: :delete,
84
+ path: ["api/tasks/%1$s", task_id],
85
+ model: Handinger::DeleteTaskResponse,
86
+ options: params[:request_options]
87
+ )
88
+ end
89
+
90
+ # @api private
91
+ #
92
+ # @param client [Handinger::Client]
93
+ def initialize(client:)
94
+ @client = client
95
+ end
96
+ end
97
+ end
98
+ end