handinger 0.2.0 → 0.4.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 (43) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +11 -12
  4. data/SECURITY.md +4 -0
  5. data/lib/handinger/models/delete_task_response.rb +16 -0
  6. data/lib/handinger/models/delete_worker_response.rb +16 -0
  7. data/lib/handinger/models/task.rb +18 -1
  8. data/lib/handinger/models/task_delete_params.rb +20 -0
  9. data/lib/handinger/models/update_worker.rb +71 -0
  10. data/lib/handinger/models/worker.rb +23 -1
  11. data/lib/handinger/models/worker_delete_params.rb +20 -0
  12. data/lib/handinger/models/{worker_create_response.rb → worker_template.rb} +23 -6
  13. data/lib/handinger/models/worker_update_params.rb +20 -0
  14. data/lib/handinger/models.rb +14 -0
  15. data/lib/handinger/resources/tasks.rb +25 -3
  16. data/lib/handinger/resources/workers.rb +61 -2
  17. data/lib/handinger/version.rb +1 -1
  18. data/lib/handinger.rb +7 -1
  19. data/rbi/handinger/models/delete_task_response.rbi +23 -0
  20. data/rbi/handinger/models/delete_worker_response.rbi +23 -0
  21. data/rbi/handinger/models/task.rbi +8 -0
  22. data/rbi/handinger/models/task_delete_params.rbi +35 -0
  23. data/rbi/handinger/models/update_worker.rbi +112 -0
  24. data/rbi/handinger/models/worker.rbi +8 -0
  25. data/rbi/handinger/models/worker_delete_params.rbi +35 -0
  26. data/rbi/handinger/models/{worker_create_response.rbi → worker_template.rbi} +17 -28
  27. data/rbi/handinger/models/worker_update_params.rbi +35 -0
  28. data/rbi/handinger/models.rbi +14 -0
  29. data/rbi/handinger/resources/tasks.rbi +19 -3
  30. data/rbi/handinger/resources/workers.rbi +51 -1
  31. data/sig/handinger/models/delete_task_response.rbs +13 -0
  32. data/sig/handinger/models/delete_worker_response.rbs +13 -0
  33. data/sig/handinger/models/task.rbs +5 -0
  34. data/sig/handinger/models/task_delete_params.rbs +23 -0
  35. data/sig/handinger/models/update_worker.rbs +61 -0
  36. data/sig/handinger/models/worker.rbs +5 -0
  37. data/sig/handinger/models/worker_delete_params.rbs +23 -0
  38. data/sig/handinger/models/{worker_create_response.rbs → worker_template.rbs} +12 -7
  39. data/sig/handinger/models/worker_update_params.rbs +25 -0
  40. data/sig/handinger/models.rbs +14 -0
  41. data/sig/handinger/resources/tasks.rbs +5 -0
  42. data/sig/handinger/resources/workers.rbs +16 -1
  43. metadata +24 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ae7f9037381d42cd6aa3a76e17a2d9fabd3d181ec11de76508cfab052ec59f8
4
- data.tar.gz: 860f3d892ca6812067ec4c75813980af4a78465eb9082777b78f12023c78bf65
3
+ metadata.gz: 944762f22d72ab9b304851aa18a7d34221ad5aa7d785e50f423b7b55ba09eaed
4
+ data.tar.gz: 3b9a81528fce0edaedbbe54f0e155c00d91635f24e4275b7f5b40984873a9fc6
5
5
  SHA512:
6
- metadata.gz: 4b7755b6f5b51e59b2f5f909b938ac4afa885e000db0b042b3a5fc433a59ff7f8b037ee2b462ca813290940db0c2de4ba11a5311fb18a38a893bf6448c265b37
7
- data.tar.gz: '09e651e70da0ca7df7fe4f72e11518e77e3a3cc0305ec5e0eb18f21af8cb81f90b67a304ef8fd88437ec6e4ed0eff52157c0937e88bf557636bee80e7afab7a3'
6
+ metadata.gz: 0435c4ab79474558084bd58c91cc6731d56f46e53827d2d0944427c94a8015c310afbd47b1daed618f19f37b375191c338a54c91004c86c316454095a0dc0936
7
+ data.tar.gz: 8ea226be6e29c61cd4745a1a774319c951c01684386450bf3115ff0be3097022682c799533683140f96bf23eb3a1ed511b1e0a63bfa083b6b9f802ec43b03194
data/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0 (2026-05-11)
4
+
5
+ Full Changelog: [v0.3.0...v0.4.0](https://github.com/Ramensoft/handinger-ruby/compare/v0.3.0...v0.4.0)
6
+
7
+ ### Features
8
+
9
+ * Add worker and task url ([f1ebd4a](https://github.com/Ramensoft/handinger-ruby/commit/f1ebd4a48111a66ccc69f6b5bdec5c861a4c07b9))
10
+
11
+ ## 0.3.0 (2026-05-11)
12
+
13
+ Full Changelog: [v0.2.0...v0.3.0](https://github.com/Ramensoft/handinger-ruby/compare/v0.2.0...v0.3.0)
14
+
15
+ ### Features
16
+
17
+ * Add update and delete endpoints for workers and tasks ([caa25aa](https://github.com/Ramensoft/handinger-ruby/commit/caa25aa9ff32f9ea62143cf674ca13efc6e72729))
18
+
3
19
  ## 0.2.0 (2026-05-09)
4
20
 
5
21
  Full Changelog: [v0.1.0...v0.2.0](https://github.com/Ramensoft/handinger-ruby/compare/v0.1.0...v0.2.0)
data/README.md CHANGED
@@ -8,6 +8,8 @@ It is generated with [Stainless](https://www.stainless.com/).
8
8
 
9
9
  Documentation for releases of this gem can be found [on RubyDoc](https://gemdocs.org/gems/handinger).
10
10
 
11
+ The REST API documentation can be found on [docs.handinger.com](https://docs.handinger.com).
12
+
11
13
  ## Installation
12
14
 
13
15
  To use this gem, install via Bundler by adding the following to your application's `Gemfile`:
@@ -15,7 +17,7 @@ To use this gem, install via Bundler by adding the following to your application
15
17
  <!-- x-release-please-start-version -->
16
18
 
17
19
  ```ruby
18
- gem "handinger", "~> 0.2.0"
20
+ gem "handinger", "~> 0.4.0"
19
21
  ```
20
22
 
21
23
  <!-- x-release-please-end -->
@@ -30,7 +32,7 @@ handinger = Handinger::Client.new(
30
32
  api_key: ENV["HANDINGER_API_KEY"] # This is the default and can be omitted
31
33
  )
32
34
 
33
- worker = handinger.tasks.create(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM")
35
+ worker = handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4")
34
36
 
35
37
  puts(worker.id)
36
38
  ```
@@ -41,7 +43,7 @@ When the library is unable to connect to the API, or if the API returns a non-su
41
43
 
42
44
  ```ruby
43
45
  begin
44
- task = handinger.tasks.create(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM")
46
+ task = handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4")
45
47
  rescue Handinger::Errors::APIConnectionError => e
46
48
  puts("The server could not be reached")
47
49
  puts(e.cause) # an underlying Exception, likely raised within `net/http`
@@ -84,10 +86,7 @@ handinger = Handinger::Client.new(
84
86
  )
85
87
 
86
88
  # Or, configure per-request:
87
- handinger.tasks.create(
88
- worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM",
89
- request_options: {max_retries: 5}
90
- )
89
+ handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4", request_options: {max_retries: 5})
91
90
  ```
92
91
 
93
92
  ### Timeouts
@@ -101,7 +100,7 @@ handinger = Handinger::Client.new(
101
100
  )
102
101
 
103
102
  # Or, configure per-request:
104
- handinger.tasks.create(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM", request_options: {timeout: 5})
103
+ handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4", request_options: {timeout: 5})
105
104
  ```
106
105
 
107
106
  On timeout, `Handinger::Errors::APITimeoutError` is raised.
@@ -133,7 +132,7 @@ Note: the `extra_` parameters of the same name overrides the documented paramete
133
132
  ```ruby
134
133
  worker =
135
134
  handinger.tasks.create(
136
- worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM",
135
+ worker_id: "wrk_vk81XUHKHG-qr4",
137
136
  request_options: {
138
137
  extra_query: {my_query_parameter: value},
139
138
  extra_body: {my_body_parameter: value},
@@ -179,17 +178,17 @@ This library provides comprehensive [RBI](https://sorbet.org/docs/rbi) definitio
179
178
  You can provide typesafe request parameters like so:
180
179
 
181
180
  ```ruby
182
- handinger.tasks.create(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM")
181
+ handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4")
183
182
  ```
184
183
 
185
184
  Or, equivalently:
186
185
 
187
186
  ```ruby
188
187
  # Hashes work, but are not typesafe:
189
- handinger.tasks.create(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM")
188
+ handinger.tasks.create(worker_id: "wrk_vk81XUHKHG-qr4")
190
189
 
191
190
  # You can also splat a full Params class:
192
- params = Handinger::TaskCreateParams.new(worker_id: "t_org_123_w_01HZY2ZJQ8G7K42W2D7WF6V4GM")
191
+ params = Handinger::TaskCreateParams.new(worker_id: "wrk_vk81XUHKHG-qr4")
193
192
  handinger.tasks.create(**params)
194
193
  ```
195
194
 
data/SECURITY.md CHANGED
@@ -18,6 +18,10 @@ before making any information public.
18
18
  If you encounter security issues that are not directly related to SDKs but pertain to the services
19
19
  or products provided by Handinger, please follow the respective company's security reporting guidelines.
20
20
 
21
+ ### Handinger Terms and Policies
22
+
23
+ Please contact support@handinger.com for any questions or concerns regarding the security of our services.
24
+
21
25
  ---
22
26
 
23
27
  Thank you for helping us keep the SDKs and systems they interact with secure.
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Tasks#delete
6
+ class DeleteTaskResponse < Handinger::Internal::Type::BaseModel
7
+ # @!attribute archived
8
+ #
9
+ # @return [Boolean]
10
+ required :archived, Handinger::Internal::Type::Boolean
11
+
12
+ # @!method initialize(archived:)
13
+ # @param archived [Boolean]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Workers#delete
6
+ class DeleteWorkerResponse < Handinger::Internal::Type::BaseModel
7
+ # @!attribute deleted
8
+ #
9
+ # @return [Boolean]
10
+ required :deleted, Handinger::Internal::Type::Boolean
11
+
12
+ # @!method initialize(deleted:)
13
+ # @param deleted [Boolean]
14
+ end
15
+ end
16
+ end
@@ -48,21 +48,38 @@ module Handinger
48
48
  # @return [Symbol, Handinger::Models::Task::TriggeredBy]
49
49
  required :triggered_by, enum: -> { Handinger::Task::TriggeredBy }, api_name: :triggeredBy
50
50
 
51
+ # @!attribute url
52
+ # Web URL of the task in the Handinger dashboard.
53
+ #
54
+ # @return [String]
55
+ required :url, String
56
+
51
57
  # @!attribute worker_id
52
58
  #
53
59
  # @return [String]
54
60
  required :worker_id, String, api_name: :workerId
55
61
 
56
- # @!method initialize(id:, completed_at:, created_at:, created_by_user_id:, organization_id:, status:, title:, totals:, triggered_by:, worker_id:)
62
+ # @!method initialize(id:, completed_at:, created_at:, created_by_user_id:, organization_id:, status:, title:, totals:, triggered_by:, url:, worker_id:)
57
63
  # @param id [String]
64
+ #
58
65
  # @param completed_at [String, nil]
66
+ #
59
67
  # @param created_at [String]
68
+ #
60
69
  # @param created_by_user_id [String, nil]
70
+ #
61
71
  # @param organization_id [String]
72
+ #
62
73
  # @param status [Symbol, Handinger::Models::Task::Status]
74
+ #
63
75
  # @param title [String]
76
+ #
64
77
  # @param totals [Handinger::Models::Task::Totals]
78
+ #
65
79
  # @param triggered_by [Symbol, Handinger::Models::Task::TriggeredBy]
80
+ #
81
+ # @param url [String] Web URL of the task in the Handinger dashboard.
82
+ #
66
83
  # @param worker_id [String]
67
84
 
68
85
  # @see Handinger::Models::Task#status
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Tasks#delete
6
+ class TaskDeleteParams < Handinger::Internal::Type::BaseModel
7
+ extend Handinger::Internal::Type::RequestParameters::Converter
8
+ include Handinger::Internal::Type::RequestParameters
9
+
10
+ # @!attribute task_id
11
+ #
12
+ # @return [String]
13
+ required :task_id, String
14
+
15
+ # @!method initialize(task_id:, request_options: {})
16
+ # @param task_id [String]
17
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}]
18
+ end
19
+ end
20
+ 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
@@ -76,26 +76,48 @@ module Handinger
76
76
  Handinger::Internal::Type::HashOf[Handinger::Internal::Type::Unknown],
77
77
  nil?: true
78
78
 
79
+ # @!attribute url
80
+ # Web URL of the worker in the Handinger dashboard.
81
+ #
82
+ # @return [String]
83
+ required :url, String
84
+
79
85
  # @!attribute usage
80
86
  #
81
87
  # @return [Handinger::Models::Worker::Usage, nil]
82
88
  optional :usage, -> { Handinger::Worker::Usage }
83
89
 
84
- # @!method initialize(id:, created_at:, error:, files:, incomplete_details:, messages:, metadata:, object:, output:, output_text:, running:, sources:, status:, structured_output:, usage: nil)
90
+ # @!method initialize(id:, created_at:, error:, files:, incomplete_details:, messages:, metadata:, object:, output:, output_text:, running:, sources:, status:, structured_output:, url:, usage: nil)
85
91
  # @param id [String]
92
+ #
86
93
  # @param created_at [Integer, nil]
94
+ #
87
95
  # @param error [nil]
96
+ #
88
97
  # @param files [Array<Handinger::Models::Worker::File>]
98
+ #
89
99
  # @param incomplete_details [nil]
100
+ #
90
101
  # @param messages [Array<Object>]
102
+ #
91
103
  # @param metadata [Hash{Symbol=>Object}]
104
+ #
92
105
  # @param object [Symbol, Handinger::Models::Worker::Object]
106
+ #
93
107
  # @param output [Array<Handinger::Models::Worker::Output>]
108
+ #
94
109
  # @param output_text [String]
110
+ #
95
111
  # @param running [Boolean]
112
+ #
96
113
  # @param sources [Array<Handinger::Models::Worker::Source>]
114
+ #
97
115
  # @param status [Symbol, Handinger::Models::Worker::Status]
116
+ #
98
117
  # @param structured_output [Hash{Symbol=>Object}, nil]
118
+ #
119
+ # @param url [String] Web URL of the worker in the Handinger dashboard.
120
+ #
99
121
  # @param usage [Handinger::Models::Worker::Usage]
100
122
 
101
123
  class File < Handinger::Internal::Type::BaseModel
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Workers#delete
6
+ class WorkerDeleteParams < Handinger::Internal::Type::BaseModel
7
+ extend Handinger::Internal::Type::RequestParameters::Converter
8
+ include Handinger::Internal::Type::RequestParameters
9
+
10
+ # @!attribute worker_id
11
+ #
12
+ # @return [String]
13
+ required :worker_id, String
14
+
15
+ # @!method initialize(worker_id:, request_options: {})
16
+ # @param worker_id [String]
17
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}]
18
+ end
19
+ end
20
+ end
@@ -3,7 +3,7 @@
3
3
  module Handinger
4
4
  module Models
5
5
  # @see Handinger::Resources::Workers#create
6
- class WorkerCreateResponse < Handinger::Internal::Type::BaseModel
6
+ class WorkerTemplate < Handinger::Internal::Type::BaseModel
7
7
  # @!attribute id
8
8
  #
9
9
  # @return [String]
@@ -47,6 +47,12 @@ module Handinger
47
47
  # @return [String, nil]
48
48
  required :updated_at, String, api_name: :updatedAt, nil?: true
49
49
 
50
+ # @!attribute url
51
+ # Web URL of the worker in the Handinger dashboard.
52
+ #
53
+ # @return [String]
54
+ required :url, String
55
+
50
56
  # @!attribute user_id
51
57
  #
52
58
  # @return [String]
@@ -54,22 +60,33 @@ module Handinger
54
60
 
55
61
  # @!attribute visibility
56
62
  #
57
- # @return [Symbol, Handinger::Models::WorkerCreateResponse::Visibility]
58
- required :visibility, enum: -> { Handinger::Models::WorkerCreateResponse::Visibility }
63
+ # @return [Symbol, Handinger::Models::WorkerTemplate::Visibility]
64
+ required :visibility, enum: -> { Handinger::WorkerTemplate::Visibility }
59
65
 
60
- # @!method initialize(id:, created_at:, instructions:, organization_id:, output_schema:, summary:, title:, updated_at:, user_id:, visibility:)
66
+ # @!method initialize(id:, created_at:, instructions:, organization_id:, output_schema:, summary:, title:, updated_at:, url:, user_id:, visibility:)
61
67
  # @param id [String]
68
+ #
62
69
  # @param created_at [String, nil]
70
+ #
63
71
  # @param instructions [String]
72
+ #
64
73
  # @param organization_id [String]
74
+ #
65
75
  # @param output_schema [Hash{Symbol=>Object}, nil]
76
+ #
66
77
  # @param summary [String]
78
+ #
67
79
  # @param title [String]
80
+ #
68
81
  # @param updated_at [String, nil]
82
+ #
83
+ # @param url [String] Web URL of the worker in the Handinger dashboard.
84
+ #
69
85
  # @param user_id [String]
70
- # @param visibility [Symbol, Handinger::Models::WorkerCreateResponse::Visibility]
86
+ #
87
+ # @param visibility [Symbol, Handinger::Models::WorkerTemplate::Visibility]
71
88
 
72
- # @see Handinger::Models::WorkerCreateResponse#visibility
89
+ # @see Handinger::Models::WorkerTemplate#visibility
73
90
  module Visibility
74
91
  extend Handinger::Internal::Type::Enum
75
92
 
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Handinger
4
+ module Models
5
+ # @see Handinger::Resources::Workers#update
6
+ class WorkerUpdateParams < Handinger::Models::UpdateWorker
7
+ extend Handinger::Internal::Type::RequestParameters::Converter
8
+ include Handinger::Internal::Type::RequestParameters
9
+
10
+ # @!attribute worker_id
11
+ #
12
+ # @return [String]
13
+ required :worker_id, String
14
+
15
+ # @!method initialize(worker_id:, request_options: {})
16
+ # @param worker_id [String]
17
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}]
18
+ end
19
+ end
20
+ end
@@ -43,21 +43,35 @@ module Handinger
43
43
 
44
44
  CreateWorker = Handinger::Models::CreateWorker
45
45
 
46
+ DeleteTaskResponse = Handinger::Models::DeleteTaskResponse
47
+
48
+ DeleteWorkerResponse = Handinger::Models::DeleteWorkerResponse
49
+
46
50
  Task = Handinger::Models::Task
47
51
 
48
52
  TaskCreateParams = Handinger::Models::TaskCreateParams
49
53
 
54
+ TaskDeleteParams = Handinger::Models::TaskDeleteParams
55
+
50
56
  TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
51
57
 
52
58
  TaskWithTurns = Handinger::Models::TaskWithTurns
53
59
 
60
+ UpdateWorker = Handinger::Models::UpdateWorker
61
+
54
62
  Worker = Handinger::Models::Worker
55
63
 
56
64
  WorkerCreateParams = Handinger::Models::WorkerCreateParams
57
65
 
66
+ WorkerDeleteParams = Handinger::Models::WorkerDeleteParams
67
+
58
68
  WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
59
69
 
60
70
  WorkerRetrieveParams = Handinger::Models::WorkerRetrieveParams
61
71
 
62
72
  Workers = Handinger::Models::Workers
73
+
74
+ WorkerTemplate = Handinger::Models::WorkerTemplate
75
+
76
+ WorkerUpdateParams = Handinger::Models::WorkerUpdateParams
63
77
  end
@@ -7,9 +7,10 @@ module Handinger
7
7
  # Some parameter documentations has been truncated, see
8
8
  # {Handinger::Models::TaskCreateParams} for more details.
9
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.
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.
13
14
  #
14
15
  # @overload create(worker_id:, instructions: nil, output_schema: nil, prompt: nil, summary: nil, task_id: nil, title: nil, visibility: nil, request_options: {})
15
16
  #
@@ -65,6 +66,27 @@ module Handinger
65
66
  )
66
67
  end
67
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
+
68
90
  # @api private
69
91
  #
70
92
  # @param client [Handinger::Client]
@@ -30,7 +30,7 @@ module Handinger
30
30
  #
31
31
  # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
32
32
  #
33
- # @return [Handinger::Models::WorkerCreateResponse]
33
+ # @return [Handinger::Models::WorkerTemplate]
34
34
  #
35
35
  # @see Handinger::Models::WorkerCreateParams
36
36
  def create(params = {})
@@ -39,7 +39,7 @@ module Handinger
39
39
  method: :post,
40
40
  path: "api/workers",
41
41
  body: parsed,
42
- model: Handinger::Models::WorkerCreateResponse,
42
+ model: Handinger::WorkerTemplate,
43
43
  options: options
44
44
  )
45
45
  end
@@ -74,6 +74,65 @@ module Handinger
74
74
  )
75
75
  end
76
76
 
77
+ # Some parameter documentations has been truncated, see
78
+ # {Handinger::Models::WorkerUpdateParams} for more details.
79
+ #
80
+ # Update a worker's instructions, title, summary, visibility, or output schema.
81
+ # Only the fields you send are changed; omitted fields keep their current values.
82
+ # Only the worker creator can update a worker.
83
+ #
84
+ # @overload update(worker_id, instructions: nil, output_schema: nil, summary: nil, title: nil, visibility: nil, request_options: {})
85
+ #
86
+ # @param worker_id [String] Worker id returned by the create worker endpoint.
87
+ #
88
+ # @param instructions [String] Replaces the persistent system prompt. Subsequent tasks pick up the new instruct
89
+ #
90
+ # @param output_schema [Hash{Symbol=>Object}, nil] Replace the worker's structured output schema. Pass `null` to clear it and retur
91
+ #
92
+ # @param summary [String] Replaces the worker's short one-line summary.
93
+ #
94
+ # @param title [String] New display name for the worker.
95
+ #
96
+ # @param visibility [Symbol, Handinger::Models::UpdateWorker::Visibility] Change visibility between `public` (any org member can run tasks) and `private`
97
+ #
98
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
99
+ #
100
+ # @return [Handinger::Models::WorkerTemplate]
101
+ #
102
+ # @see Handinger::Models::WorkerUpdateParams
103
+ def update(worker_id, params = {})
104
+ parsed, options = Handinger::WorkerUpdateParams.dump_request(params)
105
+ @client.request(
106
+ method: :patch,
107
+ path: ["api/workers/%1$s", worker_id],
108
+ body: parsed,
109
+ model: Handinger::WorkerTemplate,
110
+ options: options
111
+ )
112
+ end
113
+
114
+ # Permanently delete a worker template along with its tasks, turns, files,
115
+ # schedules, and integrations. This action is not reversible. Only the worker
116
+ # creator can delete a worker.
117
+ #
118
+ # @overload delete(worker_id, request_options: {})
119
+ #
120
+ # @param worker_id [String] Worker id returned by the create worker endpoint.
121
+ #
122
+ # @param request_options [Handinger::RequestOptions, Hash{Symbol=>Object}, nil]
123
+ #
124
+ # @return [Handinger::Models::DeleteWorkerResponse]
125
+ #
126
+ # @see Handinger::Models::WorkerDeleteParams
127
+ def delete(worker_id, params = {})
128
+ @client.request(
129
+ method: :delete,
130
+ path: ["api/workers/%1$s", worker_id],
131
+ model: Handinger::DeleteWorkerResponse,
132
+ options: params[:request_options]
133
+ )
134
+ end
135
+
77
136
  # Retrieve the inbound email address for a worker.
78
137
  #
79
138
  # @overload retrieve_email(worker_id, request_options: {})
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Handinger
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/handinger.rb CHANGED
@@ -54,13 +54,17 @@ require_relative "handinger/internal/transport/pooled_net_requester"
54
54
  require_relative "handinger/client"
55
55
  require_relative "handinger/models/create_worker"
56
56
  require_relative "handinger/models/create_task"
57
+ require_relative "handinger/models/update_worker"
58
+ require_relative "handinger/models/delete_task_response"
59
+ require_relative "handinger/models/delete_worker_response"
57
60
  require_relative "handinger/models/task"
58
61
  require_relative "handinger/models/task_create_params"
62
+ require_relative "handinger/models/task_delete_params"
59
63
  require_relative "handinger/models/task_retrieve_params"
60
64
  require_relative "handinger/models/task_with_turns"
61
65
  require_relative "handinger/models/worker"
62
66
  require_relative "handinger/models/worker_create_params"
63
- require_relative "handinger/models/worker_create_response"
67
+ require_relative "handinger/models/worker_delete_params"
64
68
  require_relative "handinger/models/worker_retrieve_email_params"
65
69
  require_relative "handinger/models/worker_retrieve_email_response"
66
70
  require_relative "handinger/models/worker_retrieve_params"
@@ -70,6 +74,8 @@ require_relative "handinger/models/workers/schedule_create_params"
70
74
  require_relative "handinger/models/workers/schedule_list_params"
71
75
  require_relative "handinger/models/workers/schedule_list_response"
72
76
  require_relative "handinger/models/workers/worker_schedule"
77
+ require_relative "handinger/models/worker_template"
78
+ require_relative "handinger/models/worker_update_params"
73
79
  require_relative "handinger/models"
74
80
  require_relative "handinger/resources/tasks"
75
81
  require_relative "handinger/resources/workers"