turnkit 0.4.1 → 0.4.2
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 +18 -0
- data/README.md +111 -50
- data/UPGRADE.md +29 -0
- data/UPGRADE_TO_0_4_2.md +425 -0
- data/lib/{turnkit/generators → generators}/turnkit/install/templates/initializer.rb +7 -6
- data/lib/turnkit/{stores/active_record_store.rb → active_record_store.rb} +18 -4
- data/lib/turnkit/adapters/codex.rb +8 -11
- data/lib/turnkit/adapters/ruby_llm.rb +30 -46
- data/lib/turnkit/agent.rb +43 -10
- data/lib/turnkit/budget.rb +1 -1
- data/lib/turnkit/client.rb +5 -1
- data/lib/turnkit/compaction.rb +46 -46
- data/lib/turnkit/cost.rb +29 -31
- data/lib/turnkit/image_result.rb +1 -0
- data/lib/turnkit/image_tool.rb +2 -2
- data/lib/turnkit/media_analysis_result.rb +0 -2
- data/lib/turnkit/model_request.rb +4 -2
- data/lib/turnkit/output_policy.rb +1 -15
- data/lib/turnkit/run.rb +0 -4
- data/lib/turnkit/store.rb +4 -6
- data/lib/turnkit/sub_agent_tool.rb +9 -14
- data/lib/turnkit/system_prompt.rb +32 -96
- data/lib/turnkit/tool.rb +5 -16
- data/lib/turnkit/turn.rb +73 -89
- data/lib/turnkit/version.rb +1 -1
- data/lib/turnkit/view_media_tool.rb +2 -2
- data/lib/turnkit.rb +1 -18
- metadata +15 -30
- data/lib/turnkit/prompt_contribution.rb +0 -13
- data/lib/turnkit/rails/railtie.rb +0 -9
- data/lib/turnkit/workflow.rb +0 -58
- /data/lib/{turnkit/generators → generators}/turnkit/install/templates/conversation.rb +0 -0
- /data/lib/{turnkit/generators → generators}/turnkit/install/templates/create_turnkit_tables.rb +0 -0
- /data/lib/{turnkit/generators → generators}/turnkit/install/templates/message.rb +0 -0
- /data/lib/{turnkit/generators → generators}/turnkit/install/templates/tool_execution.rb +0 -0
- /data/lib/{turnkit/generators → generators}/turnkit/install/templates/turn.rb +0 -0
- /data/lib/{turnkit/generators → generators}/turnkit/install_generator.rb +0 -0
metadata
CHANGED
|
@@ -1,31 +1,17 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: turnkit
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sam Couch
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
12
|
-
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: ruby_llm
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '1.14'
|
|
20
|
-
type: :runtime
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '1.14'
|
|
11
|
+
date: 2026-07-02 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
27
13
|
description: TurnKit is a Ruby/Rails agent runtime for durable AI conversations, application
|
|
28
|
-
runs,
|
|
14
|
+
runs, orchestrator agents, tool calling, skills, sub-agents, context compaction,
|
|
29
15
|
and persistence.
|
|
30
16
|
email:
|
|
31
17
|
- sam@samcouch.com
|
|
@@ -37,7 +23,16 @@ files:
|
|
|
37
23
|
- LICENSE.md
|
|
38
24
|
- README.md
|
|
39
25
|
- UPGRADE.md
|
|
26
|
+
- UPGRADE_TO_0_4_2.md
|
|
27
|
+
- lib/generators/turnkit/install/templates/conversation.rb
|
|
28
|
+
- lib/generators/turnkit/install/templates/create_turnkit_tables.rb
|
|
29
|
+
- lib/generators/turnkit/install/templates/initializer.rb
|
|
30
|
+
- lib/generators/turnkit/install/templates/message.rb
|
|
31
|
+
- lib/generators/turnkit/install/templates/tool_execution.rb
|
|
32
|
+
- lib/generators/turnkit/install/templates/turn.rb
|
|
33
|
+
- lib/generators/turnkit/install_generator.rb
|
|
40
34
|
- lib/turnkit.rb
|
|
35
|
+
- lib/turnkit/active_record_store.rb
|
|
41
36
|
- lib/turnkit/adapters/codex.rb
|
|
42
37
|
- lib/turnkit/adapters/ruby_llm.rb
|
|
43
38
|
- lib/turnkit/agent.rb
|
|
@@ -49,13 +44,6 @@ files:
|
|
|
49
44
|
- lib/turnkit/cost.rb
|
|
50
45
|
- lib/turnkit/error.rb
|
|
51
46
|
- lib/turnkit/event.rb
|
|
52
|
-
- lib/turnkit/generators/turnkit/install/templates/conversation.rb
|
|
53
|
-
- lib/turnkit/generators/turnkit/install/templates/create_turnkit_tables.rb
|
|
54
|
-
- lib/turnkit/generators/turnkit/install/templates/initializer.rb
|
|
55
|
-
- lib/turnkit/generators/turnkit/install/templates/message.rb
|
|
56
|
-
- lib/turnkit/generators/turnkit/install/templates/tool_execution.rb
|
|
57
|
-
- lib/turnkit/generators/turnkit/install/templates/turn.rb
|
|
58
|
-
- lib/turnkit/generators/turnkit/install_generator.rb
|
|
59
47
|
- lib/turnkit/id.rb
|
|
60
48
|
- lib/turnkit/image_result.rb
|
|
61
49
|
- lib/turnkit/image_tool.rb
|
|
@@ -69,16 +57,13 @@ files:
|
|
|
69
57
|
- lib/turnkit/output_audit.rb
|
|
70
58
|
- lib/turnkit/output_policy.rb
|
|
71
59
|
- lib/turnkit/prompt_context.rb
|
|
72
|
-
- lib/turnkit/prompt_contribution.rb
|
|
73
60
|
- lib/turnkit/prompt_data.rb
|
|
74
|
-
- lib/turnkit/rails/railtie.rb
|
|
75
61
|
- lib/turnkit/record.rb
|
|
76
62
|
- lib/turnkit/result.rb
|
|
77
63
|
- lib/turnkit/run.rb
|
|
78
64
|
- lib/turnkit/schema_check.rb
|
|
79
65
|
- lib/turnkit/skill.rb
|
|
80
66
|
- lib/turnkit/store.rb
|
|
81
|
-
- lib/turnkit/stores/active_record_store.rb
|
|
82
67
|
- lib/turnkit/sub_agent_tool.rb
|
|
83
68
|
- lib/turnkit/system_prompt.rb
|
|
84
69
|
- lib/turnkit/tool.rb
|
|
@@ -89,7 +74,6 @@ files:
|
|
|
89
74
|
- lib/turnkit/usage.rb
|
|
90
75
|
- lib/turnkit/version.rb
|
|
91
76
|
- lib/turnkit/view_media_tool.rb
|
|
92
|
-
- lib/turnkit/workflow.rb
|
|
93
77
|
homepage: https://github.com/samuelcouch/turnkit
|
|
94
78
|
licenses:
|
|
95
79
|
- MIT
|
|
@@ -117,5 +101,6 @@ requirements: []
|
|
|
117
101
|
rubygems_version: 3.5.22
|
|
118
102
|
signing_key:
|
|
119
103
|
specification_version: 4
|
|
120
|
-
summary: Ruby/Rails agent runtime for durable AI conversations, runs, and
|
|
104
|
+
summary: Ruby/Rails agent runtime for durable AI conversations, runs, and orchestrator
|
|
105
|
+
agents.
|
|
121
106
|
test_files: []
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module TurnKit
|
|
4
|
-
class PromptContribution
|
|
5
|
-
attr_accessor :stable_prefix, :dynamic_suffix, :section_overrides
|
|
6
|
-
|
|
7
|
-
def initialize(stable_prefix: nil, dynamic_suffix: nil, section_overrides: nil)
|
|
8
|
-
@stable_prefix = stable_prefix.to_s
|
|
9
|
-
@dynamic_suffix = dynamic_suffix.to_s
|
|
10
|
-
@section_overrides = (section_overrides || {}).transform_keys(&:to_sym)
|
|
11
|
-
end
|
|
12
|
-
end
|
|
13
|
-
end
|
data/lib/turnkit/workflow.rb
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative "agent"
|
|
4
|
-
|
|
5
|
-
module TurnKit
|
|
6
|
-
class Workflow
|
|
7
|
-
ORCHESTRATOR_PREAMBLE = <<~TEXT.strip
|
|
8
|
-
You are an autonomous task orchestrator. Navigate from the application
|
|
9
|
-
request to a final output without asking the user follow-up questions.
|
|
10
|
-
|
|
11
|
-
Use the available tools to gather context, inspect sources, take actions,
|
|
12
|
-
persist outputs, and verify work. Use loaded skills as reusable workflow
|
|
13
|
-
patterns. Iterate when work needs missing context, critique, revision, or
|
|
14
|
-
verification.
|
|
15
|
-
|
|
16
|
-
When multiple independent items need the same kind of fetch or read, and
|
|
17
|
-
an available batch tool can handle them in one call, prefer the batch tool
|
|
18
|
-
over repeated one-item tool calls.
|
|
19
|
-
|
|
20
|
-
Stop when the task is complete, when the available context and tools are
|
|
21
|
-
sufficient for the best possible answer, or when further iteration would
|
|
22
|
-
not materially improve the result. Respect runtime, cost, and iteration
|
|
23
|
-
limits.
|
|
24
|
-
TEXT
|
|
25
|
-
|
|
26
|
-
DEFAULT_INSTRUCTIONS = ORCHESTRATOR_PREAMBLE
|
|
27
|
-
|
|
28
|
-
attr_reader :name, :options
|
|
29
|
-
|
|
30
|
-
def initialize(name: "workflow", instructions: nil, preamble: true, **options)
|
|
31
|
-
@name = name.to_s
|
|
32
|
-
raise ArgumentError, "name is required" if @name.empty?
|
|
33
|
-
|
|
34
|
-
@options = options.merge(
|
|
35
|
-
name: @name,
|
|
36
|
-
prompt_mode: options.fetch(:prompt_mode, :task),
|
|
37
|
-
instructions: compose_instructions(instructions, preamble: preamble)
|
|
38
|
-
).freeze
|
|
39
|
-
@agent = Agent.new(**@options)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def run(prompt = nil, task: nil, input: nil, async: false, subject: nil, metadata: {}, **overrides)
|
|
43
|
-
agent(**overrides).run(task || prompt, input: input, async: async, subject: subject, metadata: metadata)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def agent(**overrides)
|
|
47
|
-
overrides.empty? ? @agent : Agent.new(**@options.merge(overrides.compact))
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
private
|
|
51
|
-
def compose_instructions(instructions, preamble:)
|
|
52
|
-
parts = []
|
|
53
|
-
parts << ORCHESTRATOR_PREAMBLE if preamble
|
|
54
|
-
parts << instructions.to_s.strip unless instructions.to_s.strip.empty?
|
|
55
|
-
parts.join("\n\n")
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
File without changes
|
/data/lib/{turnkit/generators → generators}/turnkit/install/templates/create_turnkit_tables.rb
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|