handinger 0.1.0 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +27 -0
- data/README.md +18 -18
- data/lib/handinger/client.rb +21 -1
- data/lib/handinger/internal/transport/base_client.rb +1 -3
- data/lib/handinger/internal/type/base_model.rb +3 -3
- data/lib/handinger/models/create_task.rb +28 -0
- data/lib/handinger/models/create_worker.rb +59 -19
- data/lib/handinger/models/task.rb +119 -0
- data/lib/handinger/models/task_create_params.rb +14 -0
- data/lib/handinger/models/{worker_continue_params.rb → task_retrieve_params.rb} +6 -6
- data/lib/handinger/models/task_with_turns.rb +113 -0
- data/lib/handinger/models/worker.rb +9 -84
- data/lib/handinger/models/worker_create_response.rb +84 -0
- data/lib/handinger/models/worker_retrieve_email_response.rb +10 -1
- data/lib/handinger/models/worker_retrieve_params.rb +22 -4
- data/lib/handinger/models.rb +10 -6
- data/lib/handinger/resources/tasks.rb +76 -0
- data/lib/handinger/resources/workers.rb +31 -92
- data/lib/handinger/version.rb +1 -1
- data/lib/handinger.rb +7 -6
- data/rbi/handinger/client.rbi +5 -0
- data/rbi/handinger/internal/transport/base_client.rbi +2 -18
- data/rbi/handinger/models/create_task.rbi +40 -0
- data/rbi/handinger/models/create_worker.rbi +84 -26
- data/rbi/handinger/models/task.rbi +160 -0
- data/rbi/handinger/models/task_create_params.rbi +27 -0
- data/rbi/handinger/models/{worker_continue_params.rbi → task_retrieve_params.rbi} +6 -6
- data/rbi/handinger/models/task_with_turns.rbi +149 -0
- data/rbi/handinger/models/worker.rbi +10 -120
- data/rbi/handinger/models/worker_create_response.rbi +129 -0
- data/rbi/handinger/models/worker_retrieve_email_response.rbi +20 -1
- data/rbi/handinger/models/worker_retrieve_params.rbi +40 -6
- data/rbi/handinger/models.rbi +10 -6
- data/rbi/handinger/resources/tasks.rbi +70 -0
- data/rbi/handinger/resources/workers.rbi +37 -62
- data/sig/handinger/client.rbs +2 -0
- data/sig/handinger/models/create_task.rbs +19 -0
- data/sig/handinger/models/create_worker.rbs +44 -23
- data/sig/handinger/models/task.rbs +114 -0
- data/sig/handinger/models/task_create_params.rbs +15 -0
- data/sig/handinger/models/{worker_stream_updates_params.rbs → task_retrieve_params.rbs} +6 -6
- data/sig/handinger/models/task_with_turns.rbs +104 -0
- data/sig/handinger/models/worker.rbs +7 -89
- data/sig/handinger/models/worker_create_response.rbs +76 -0
- data/sig/handinger/models/worker_retrieve_email_response.rbs +9 -1
- data/sig/handinger/models/worker_retrieve_params.rbs +21 -5
- data/sig/handinger/models.rbs +10 -6
- data/sig/handinger/resources/tasks.rbs +24 -0
- data/sig/handinger/resources/workers.rbs +9 -25
- metadata +23 -20
- data/lib/handinger/internal/stream.rb +0 -29
- data/lib/handinger/internal/type/base_stream.rb +0 -83
- data/lib/handinger/models/worker_retrieve_file_params.rb +0 -26
- data/lib/handinger/models/worker_stream_updates_params.rb +0 -20
- data/lib/handinger/models/worker_stream_updates_response.rb +0 -7
- data/rbi/handinger/internal/stream.rbi +0 -20
- data/rbi/handinger/internal/type/base_stream.rbi +0 -75
- data/rbi/handinger/models/worker_retrieve_file_params.rbi +0 -46
- data/rbi/handinger/models/worker_stream_updates_params.rbi +0 -38
- data/rbi/handinger/models/worker_stream_updates_response.rbi +0 -7
- data/sig/handinger/internal/stream.rbs +0 -9
- data/sig/handinger/internal/type/base_stream.rbs +0 -38
- data/sig/handinger/models/worker_continue_params.rbs +0 -25
- data/sig/handinger/models/worker_retrieve_file_params.rbs +0 -28
- 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#
|
|
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
|
|
72
|
+
# @!attribute structured_output
|
|
73
73
|
#
|
|
74
|
-
# @return [
|
|
75
|
-
|
|
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:,
|
|
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
|
|
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(
|
|
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
|
|
@@ -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
|
-
|
|
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
|
-
#
|
|
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 [
|
|
19
|
-
optional :stream, Handinger::
|
|
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 [
|
|
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
|
data/lib/handinger/models.rb
CHANGED
|
@@ -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
|
-
|
|
46
|
+
Task = Handinger::Models::Task
|
|
47
|
+
|
|
48
|
+
TaskCreateParams = Handinger::Models::TaskCreateParams
|
|
49
|
+
|
|
50
|
+
TaskRetrieveParams = Handinger::Models::TaskRetrieveParams
|
|
45
51
|
|
|
46
|
-
|
|
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
|
-
#
|
|
11
|
+
# Some parameter documentations has been truncated, see
|
|
12
|
+
# {Handinger::Models::WorkerCreateParams} for more details.
|
|
11
13
|
#
|
|
12
|
-
#
|
|
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::
|
|
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::
|
|
42
|
+
model: Handinger::Models::WorkerCreateResponse,
|
|
29
43
|
options: options
|
|
30
44
|
)
|
|
31
45
|
end
|
|
32
46
|
|
|
33
|
-
#
|
|
34
|
-
#
|
|
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 [
|
|
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 [
|
|
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:
|
|
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
|
data/lib/handinger/version.rb
CHANGED
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"
|
data/rbi/handinger/client.rbi
CHANGED
|
@@ -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)
|