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
@@ -2,16 +2,13 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- class WorkerStreamUpdatesParams < Handinger::Internal::Type::BaseModel
5
+ class WorkerDeleteParams < Handinger::Internal::Type::BaseModel
6
6
  extend Handinger::Internal::Type::RequestParameters::Converter
7
7
  include Handinger::Internal::Type::RequestParameters
8
8
 
9
9
  OrHash =
10
10
  T.type_alias do
11
- T.any(
12
- Handinger::WorkerStreamUpdatesParams,
13
- Handinger::Internal::AnyHash
14
- )
11
+ T.any(Handinger::WorkerDeleteParams, Handinger::Internal::AnyHash)
15
12
  end
16
13
 
17
14
  sig { returns(String) }
@@ -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
@@ -0,0 +1,110 @@
1
+ # typed: strong
2
+
3
+ module Handinger
4
+ module Models
5
+ class WorkerTemplate < Handinger::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Handinger::WorkerTemplate, Handinger::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(String) }
12
+ attr_accessor :id
13
+
14
+ sig { returns(T.nilable(String)) }
15
+ attr_accessor :created_at
16
+
17
+ sig { returns(String) }
18
+ attr_accessor :instructions
19
+
20
+ sig { returns(String) }
21
+ attr_accessor :organization_id
22
+
23
+ sig { returns(T.nilable(T::Hash[Symbol, T.anything])) }
24
+ attr_accessor :output_schema
25
+
26
+ sig { returns(String) }
27
+ attr_accessor :summary
28
+
29
+ sig { returns(String) }
30
+ attr_accessor :title
31
+
32
+ sig { returns(T.nilable(String)) }
33
+ attr_accessor :updated_at
34
+
35
+ sig { returns(String) }
36
+ attr_accessor :user_id
37
+
38
+ sig { returns(Handinger::WorkerTemplate::Visibility::TaggedSymbol) }
39
+ attr_accessor :visibility
40
+
41
+ sig do
42
+ params(
43
+ id: String,
44
+ created_at: T.nilable(String),
45
+ instructions: String,
46
+ organization_id: String,
47
+ output_schema: T.nilable(T::Hash[Symbol, T.anything]),
48
+ summary: String,
49
+ title: String,
50
+ updated_at: T.nilable(String),
51
+ user_id: String,
52
+ visibility: Handinger::WorkerTemplate::Visibility::OrSymbol
53
+ ).returns(T.attached_class)
54
+ end
55
+ def self.new(
56
+ id:,
57
+ created_at:,
58
+ instructions:,
59
+ organization_id:,
60
+ output_schema:,
61
+ summary:,
62
+ title:,
63
+ updated_at:,
64
+ user_id:,
65
+ visibility:
66
+ )
67
+ end
68
+
69
+ sig do
70
+ override.returns(
71
+ {
72
+ id: String,
73
+ created_at: T.nilable(String),
74
+ instructions: String,
75
+ organization_id: String,
76
+ output_schema: T.nilable(T::Hash[Symbol, T.anything]),
77
+ summary: String,
78
+ title: String,
79
+ updated_at: T.nilable(String),
80
+ user_id: String,
81
+ visibility: Handinger::WorkerTemplate::Visibility::TaggedSymbol
82
+ }
83
+ )
84
+ end
85
+ def to_hash
86
+ end
87
+
88
+ module Visibility
89
+ extend Handinger::Internal::Type::Enum
90
+
91
+ TaggedSymbol =
92
+ T.type_alias { T.all(Symbol, Handinger::WorkerTemplate::Visibility) }
93
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
94
+
95
+ PUBLIC =
96
+ T.let(:public, Handinger::WorkerTemplate::Visibility::TaggedSymbol)
97
+ PRIVATE =
98
+ T.let(:private, Handinger::WorkerTemplate::Visibility::TaggedSymbol)
99
+
100
+ sig do
101
+ override.returns(
102
+ T::Array[Handinger::WorkerTemplate::Visibility::TaggedSymbol]
103
+ )
104
+ end
105
+ def self.values
106
+ end
107
+ end
108
+ end
109
+ end
110
+ end
@@ -2,13 +2,13 @@
2
2
 
3
3
  module Handinger
4
4
  module Models
5
- class WorkerContinueParams < Handinger::Models::CreateWorker
5
+ class WorkerUpdateParams < Handinger::Models::UpdateWorker
6
6
  extend Handinger::Internal::Type::RequestParameters::Converter
7
7
  include Handinger::Internal::Type::RequestParameters
8
8
 
9
9
  OrHash =
10
10
  T.type_alias do
11
- T.any(Handinger::WorkerContinueParams, Handinger::Internal::AnyHash)
11
+ T.any(Handinger::WorkerUpdateParams, Handinger::Internal::AnyHash)
12
12
  end
13
13
 
14
14
  sig { returns(String) }
@@ -1,21 +1,39 @@
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
+ DeleteTaskResponse = Handinger::Models::DeleteTaskResponse
9
+
10
+ DeleteWorkerResponse = Handinger::Models::DeleteWorkerResponse
11
+
12
+ Task = Handinger::Models::Task
13
+
14
+ TaskCreateParams = Handinger::Models::TaskCreateParams
15
+
16
+ TaskDeleteParams = Handinger::Models::TaskDeleteParams
17
+
18
+ TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
7
19
 
8
- WorkerContinueParams = Handinger::Models::WorkerContinueParams
20
+ TaskWithTurns = Handinger::Models::TaskWithTurns
21
+
22
+ UpdateWorker = Handinger::Models::UpdateWorker
23
+
24
+ Worker = Handinger::Models::Worker
9
25
 
10
26
  WorkerCreateParams = Handinger::Models::WorkerCreateParams
11
27
 
12
- WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
28
+ WorkerDeleteParams = Handinger::Models::WorkerDeleteParams
13
29
 
14
- WorkerRetrieveFileParams = Handinger::Models::WorkerRetrieveFileParams
30
+ WorkerRetrieveEmailParams = Handinger::Models::WorkerRetrieveEmailParams
15
31
 
16
32
  WorkerRetrieveParams = Handinger::Models::WorkerRetrieveParams
17
33
 
18
34
  Workers = Handinger::Models::Workers
19
35
 
20
- WorkerStreamUpdatesParams = Handinger::Models::WorkerStreamUpdatesParams
36
+ WorkerTemplate = Handinger::Models::WorkerTemplate
37
+
38
+ WorkerUpdateParams = Handinger::Models::WorkerUpdateParams
21
39
  end
@@ -0,0 +1,86 @@
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 a `taskId` of a prior task to
8
+ # add a follow-up turn instead of starting a fresh task. Send
9
+ # `multipart/form-data` to attach files; the bytes are bootstrapped into the
10
+ # worker's workspace before the task starts.
11
+ sig do
12
+ params(
13
+ worker_id: String,
14
+ instructions: String,
15
+ output_schema: T::Hash[Symbol, T.anything],
16
+ prompt: String,
17
+ summary: String,
18
+ task_id: String,
19
+ title: String,
20
+ visibility: Handinger::CreateTask::Visibility::OrSymbol,
21
+ request_options: Handinger::RequestOptions::OrHash
22
+ ).returns(Handinger::Worker)
23
+ end
24
+ def create(
25
+ # Worker id the task belongs to.
26
+ worker_id:,
27
+ # Persistent system prompt the worker uses for every task it runs.
28
+ instructions: nil,
29
+ # Optional JSON Schema (Draft-07) describing the structured object the worker must
30
+ # produce. When set, every task response is validated against the schema and
31
+ # exposed as `structuredOutput`.
32
+ output_schema: nil,
33
+ # Natural-language description of the worker to use for AI-generated instructions
34
+ # when `instructions` is omitted.
35
+ prompt: nil,
36
+ # Short one-line description of the worker's purpose. Auto-generated when omitted
37
+ # and a `prompt` is provided.
38
+ summary: nil,
39
+ # Optional client-provided task id. Reuse this id to add turns to an existing
40
+ # task.
41
+ task_id: nil,
42
+ # Optional display name. When omitted, Handinger assigns a random dog-themed name.
43
+ title: nil,
44
+ # `public` (default) is visible to all org members. `private` is only visible to
45
+ # invited members.
46
+ visibility: nil,
47
+ request_options: {}
48
+ )
49
+ end
50
+
51
+ # Retrieve a single task and its individual turns.
52
+ sig do
53
+ params(
54
+ task_id: String,
55
+ request_options: Handinger::RequestOptions::OrHash
56
+ ).returns(Handinger::TaskWithTurns)
57
+ end
58
+ def retrieve(
59
+ # Task id returned by the create task endpoint.
60
+ task_id,
61
+ request_options: {}
62
+ )
63
+ end
64
+
65
+ # Archive a task so it stops appearing in `GET /tasks` results. Turns and files
66
+ # are retained for audit purposes. Only the worker creator can archive a task.
67
+ sig do
68
+ params(
69
+ task_id: String,
70
+ request_options: Handinger::RequestOptions::OrHash
71
+ ).returns(Handinger::DeleteTaskResponse)
72
+ end
73
+ def delete(
74
+ # Task id returned by the create task endpoint.
75
+ task_id,
76
+ request_options: {}
77
+ )
78
+ end
79
+
80
+ # @api private
81
+ sig { params(client: Handinger::Client).returns(T.attached_class) }
82
+ def self.new(client:)
83
+ end
84
+ end
85
+ end
86
+ end
@@ -2,101 +2,126 @@
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::WorkerTemplate)
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
  )
58
65
  end
59
66
 
60
- # Retrieve the inbound email address for a worker.
67
+ # Update a worker's instructions, title, summary, visibility, or output schema.
68
+ # Only the fields you send are changed; omitted fields keep their current values.
69
+ # Only the worker creator can update a worker.
61
70
  sig do
62
71
  params(
63
72
  worker_id: String,
73
+ instructions: String,
74
+ output_schema: T.nilable(T::Hash[Symbol, T.anything]),
75
+ summary: String,
76
+ title: String,
77
+ visibility: Handinger::UpdateWorker::Visibility::OrSymbol,
64
78
  request_options: Handinger::RequestOptions::OrHash
65
- ).returns(String)
79
+ ).returns(Handinger::WorkerTemplate)
66
80
  end
67
- def retrieve_email(
81
+ def update(
68
82
  # Worker id returned by the create worker endpoint.
69
83
  worker_id,
84
+ # Replaces the persistent system prompt. Subsequent tasks pick up the new
85
+ # instructions immediately; in-flight tasks keep using the previous version.
86
+ instructions: nil,
87
+ # Replace the worker's structured output schema. Pass `null` to clear it and
88
+ # return to free-form text responses.
89
+ output_schema: nil,
90
+ # Replaces the worker's short one-line summary.
91
+ summary: nil,
92
+ # New display name for the worker.
93
+ title: nil,
94
+ # Change visibility between `public` (any org member can run tasks) and `private`
95
+ # (only invited members).
96
+ visibility: nil,
70
97
  request_options: {}
71
98
  )
72
99
  end
73
100
 
74
- # Retrieve a file published from a worker workspace. The runtime route accepts
75
- # nested paths after /files/.
101
+ # Permanently delete a worker template along with its tasks, turns, files,
102
+ # schedules, and integrations. This action is not reversible. Only the worker
103
+ # creator can delete a worker.
76
104
  sig do
77
105
  params(
78
- file_path: String,
79
106
  worker_id: String,
80
107
  request_options: Handinger::RequestOptions::OrHash
81
- ).returns(StringIO)
108
+ ).returns(Handinger::DeleteWorkerResponse)
82
109
  end
83
- def retrieve_file(
84
- # Workspace file path after /files. URL-encode slashes for nested paths.
85
- file_path,
110
+ def delete(
86
111
  # Worker id returned by the create worker endpoint.
87
- worker_id:,
112
+ worker_id,
88
113
  request_options: {}
89
114
  )
90
115
  end
91
116
 
92
- # Subscribe to a worker using server-sent events.
117
+ # Retrieve the inbound email address for a worker.
93
118
  sig do
94
119
  params(
95
120
  worker_id: String,
96
121
  request_options: Handinger::RequestOptions::OrHash
97
- ).returns(Handinger::Internal::Stream[String])
122
+ ).returns(Handinger::Models::WorkerRetrieveEmailResponse)
98
123
  end
99
- def stream_updates_streaming(
124
+ def retrieve_email(
100
125
  # Worker id returned by the create worker endpoint.
101
126
  worker_id,
102
127
  request_options: {}
@@ -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
@@ -2,47 +2,68 @@ module Handinger
2
2
  module Models
3
3
  type create_worker =
4
4
  {
5
- input: String,
6
- budget: Handinger::Models::CreateWorker::budget,
7
- stream: bool
5
+ instructions: String,
6
+ output_schema: ::Hash[Symbol, top],
7
+ prompt: String,
8
+ summary: String,
9
+ title: String,
10
+ visibility: Handinger::Models::CreateWorker::visibility
8
11
  }
9
12
 
10
13
  class CreateWorker < Handinger::Internal::Type::BaseModel
11
- attr_accessor input: String
14
+ attr_reader instructions: String?
12
15
 
13
- attr_reader budget: Handinger::Models::CreateWorker::budget?
16
+ def instructions=: (String) -> String
14
17
 
15
- def budget=: (
16
- Handinger::Models::CreateWorker::budget
17
- ) -> Handinger::Models::CreateWorker::budget
18
+ attr_reader output_schema: ::Hash[Symbol, top]?
18
19
 
19
- attr_reader stream: bool?
20
+ def output_schema=: (::Hash[Symbol, top]) -> ::Hash[Symbol, top]
20
21
 
21
- def stream=: (bool) -> bool
22
+ attr_reader prompt: String?
23
+
24
+ def prompt=: (String) -> String
25
+
26
+ attr_reader summary: String?
27
+
28
+ def summary=: (String) -> String
29
+
30
+ attr_reader title: String?
31
+
32
+ def title=: (String) -> String
33
+
34
+ attr_reader visibility: Handinger::Models::CreateWorker::visibility?
35
+
36
+ def visibility=: (
37
+ Handinger::Models::CreateWorker::visibility
38
+ ) -> Handinger::Models::CreateWorker::visibility
22
39
 
23
40
  def initialize: (
24
- input: String,
25
- ?budget: Handinger::Models::CreateWorker::budget,
26
- ?stream: bool
41
+ ?instructions: String,
42
+ ?output_schema: ::Hash[Symbol, top],
43
+ ?prompt: String,
44
+ ?summary: String,
45
+ ?title: String,
46
+ ?visibility: Handinger::Models::CreateWorker::visibility
27
47
  ) -> void
28
48
 
29
49
  def to_hash: -> {
30
- input: String,
31
- budget: Handinger::Models::CreateWorker::budget,
32
- stream: bool
50
+ instructions: String,
51
+ output_schema: ::Hash[Symbol, top],
52
+ prompt: String,
53
+ summary: String,
54
+ title: String,
55
+ visibility: Handinger::Models::CreateWorker::visibility
33
56
  }
34
57
 
35
- type budget = :low | :standard | :high | :unlimited
58
+ type visibility = :public | :private
36
59
 
37
- module Budget
60
+ module Visibility
38
61
  extend Handinger::Internal::Type::Enum
39
62
 
40
- LOW: :low
41
- STANDARD: :standard
42
- HIGH: :high
43
- UNLIMITED: :unlimited
63
+ PUBLIC: :public
64
+ PRIVATE: :private
44
65
 
45
- def self?.values: -> ::Array[Handinger::Models::CreateWorker::budget]
66
+ def self?.values: -> ::Array[Handinger::Models::CreateWorker::visibility]
46
67
  end
47
68
  end
48
69
  end