ad-agent_architecture 0.0.9 → 0.0.10
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/.rubocop.yml +11 -1
- data/CHANGELOG.md +8 -0
- data/Gemfile +1 -0
- data/Guardfile +6 -0
- data/lib/ad/agent_architecture/database/create_schema.rb +10 -0
- data/lib/ad/agent_architecture/database/models.rb +5 -0
- data/lib/ad/agent_architecture/dsl/actions/save_database.rb +7 -0
- data/lib/ad/agent_architecture/dsl/agent_dsl.rb +54 -0
- data/lib/ad/agent_architecture/dsl/{agent_workflow_dsl.rb → agent_workflow_dsl.rb.old} +9 -1
- data/lib/ad/agent_architecture/dsl/attribute_dsl.rb +18 -0
- data/lib/ad/agent_architecture/dsl/prompt_dsl.rb +18 -0
- data/lib/ad/agent_architecture/dsl/section_dsl.rb +22 -0
- data/lib/ad/agent_architecture/dsl/step_dsl.rb +28 -0
- data/lib/ad/agent_architecture/dsl/workflow_dsl.rb +33 -0
- data/lib/ad/agent_architecture/version.rb +1 -1
- data/lib/ad/agent_architecture.rb +11 -3
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/workflow.json +33 -54
- data/workflow.yaml +34 -43
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f5f327df1d3c95d9adf30cbbe9d973b33457737096d21c607fbe080caa9d839
|
4
|
+
data.tar.gz: 948a4cbd3540dc300eedb249c96b13e1963058abbd4f2c205ea23ce55d446431
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6b7f671d1ad1c28534f6e35f0d141fdb05c8fe0c28192e12087d10fbacb67265e451d17a91df3194e3495d8fec98881ff31a4ec7000db10f13886bc9c0de5785
|
7
|
+
data.tar.gz: 07de02cccb8f30f128f8e81663eeba0e4e4dc190394c030675a8d574259e5c50d85bb8d4643de1c94db197b7261e2f7bb22b3ed2708eafdb6ac7c07802341258
|
data/.rubocop.yml
CHANGED
@@ -15,6 +15,7 @@ AllCops:
|
|
15
15
|
- ".builders/**/*"
|
16
16
|
- "spec/samples/**/*"
|
17
17
|
- "lib/ad/agent_architecture/database/*"
|
18
|
+
- "spec/usecases/**/*"
|
18
19
|
|
19
20
|
Metrics/BlockLength:
|
20
21
|
Exclude:
|
@@ -116,4 +117,13 @@ RSpec/NamedSubject:
|
|
116
117
|
|
117
118
|
RSpec/ExampleLength:
|
118
119
|
Exclude:
|
119
|
-
- "**/spec/**/*"
|
120
|
+
- "**/spec/**/*"
|
121
|
+
|
122
|
+
RSpec/MultipleExpectations:
|
123
|
+
Max: 3
|
124
|
+
Exclude:
|
125
|
+
- "spec/ad/agent_architecture/dsl/actions/save_database_spec.rb"
|
126
|
+
|
127
|
+
Metrics/CyclomaticComplexity:
|
128
|
+
Exclude:
|
129
|
+
- "lib/ad/agent_architecture/dsl/actions/save_database.rb"
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
## [0.0.9](https://github.com/appydave/ad-agent_architecture/compare/v0.0.8...v0.0.9) (2024-06-29)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add save, save_json, save_yaml and better report support ([4350628](https://github.com/appydave/ad-agent_architecture/commit/4350628f95b06a5df3bac3432f52aa560c7699f5))
|
7
|
+
* add save, save_json, save_yaml and better report support ([9a7238a](https://github.com/appydave/ad-agent_architecture/commit/9a7238a0102e40a6e603a7a82757ff7c684ab374))
|
8
|
+
|
1
9
|
## [0.0.8](https://github.com/appydave/ad-agent_architecture/compare/v0.0.7...v0.0.8) (2024-06-29)
|
2
10
|
|
3
11
|
|
data/Gemfile
CHANGED
data/Guardfile
CHANGED
@@ -27,4 +27,10 @@ group :green_pass_then_cop, halt_on_fail: true do
|
|
27
27
|
watch(/{.+\.rb$/)
|
28
28
|
watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
|
29
29
|
end
|
30
|
+
|
31
|
+
guard :shell do
|
32
|
+
watch(%r{^spec/usecases/.+\.rbx$}) do |m|
|
33
|
+
`ruby -r ./spec/usecases/dsl_initialize.rb #{m[0]}`
|
34
|
+
end
|
35
|
+
end
|
30
36
|
end
|
@@ -69,6 +69,16 @@ module Ad
|
|
69
69
|
foreign_key :attribute_id, :attributes
|
70
70
|
end
|
71
71
|
|
72
|
+
db.create_table :prompts do
|
73
|
+
primary_key :id
|
74
|
+
String :name, null: false
|
75
|
+
String :path, null: true
|
76
|
+
String :content, null: true
|
77
|
+
foreign_key :workflow_id, :workflows
|
78
|
+
end
|
79
|
+
|
80
|
+
# Workflow runs workflows that are executed
|
81
|
+
|
72
82
|
db.create_table :workflow_runs do
|
73
83
|
primary_key :id
|
74
84
|
foreign_key :workflow_id, :workflows
|
@@ -10,6 +10,7 @@ module Ad
|
|
10
10
|
one_to_many :sections, class: 'Ad::AgentArchitecture::Database::Section'
|
11
11
|
one_to_many :attributes, class: 'Ad::AgentArchitecture::Database::Attribute'
|
12
12
|
one_to_many :workflow_runs, class: 'Ad::AgentArchitecture::Database::WorkflowRun'
|
13
|
+
one_to_many :prompts, class: 'Ad::AgentArchitecture::Database::Prompt'
|
13
14
|
end
|
14
15
|
|
15
16
|
# Section model represents a section entity in the database.
|
@@ -46,6 +47,10 @@ module Ad
|
|
46
47
|
many_to_one :attribute, class: 'Ad::AgentArchitecture::Database::Attribute'
|
47
48
|
end
|
48
49
|
|
50
|
+
class Prompt < Sequel::Model
|
51
|
+
many_to_one :workflow, class: 'Ad::AgentArchitecture::Database::Workflow'
|
52
|
+
end
|
53
|
+
|
49
54
|
# WorkflowRun model represents a workflow run entity in the database.
|
50
55
|
class WorkflowRun < Sequel::Model
|
51
56
|
many_to_one :workflow, class: 'Ad::AgentArchitecture::Database::Workflow'
|
@@ -24,6 +24,13 @@ module Ad
|
|
24
24
|
|
25
25
|
attribute_map = attribute_records.to_h { |ar| [ar.name.to_sym, ar] }
|
26
26
|
|
27
|
+
# Save prompts
|
28
|
+
@workflow_hash[:prompts].each_value do |prompt|
|
29
|
+
Ad::AgentArchitecture::Database::Prompt.create(
|
30
|
+
name: prompt[:name], path: prompt[:path], content: prompt[:content], workflow: workflow_record
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
27
34
|
# Save sections and steps
|
28
35
|
@workflow_hash[:sections].each do |section|
|
29
36
|
section_record = Ad::AgentArchitecture::Database::Section.create(
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for defining the agent DSL
|
7
|
+
class AgentDsl
|
8
|
+
attr_reader :workflow
|
9
|
+
|
10
|
+
def self.create(name:, &block)
|
11
|
+
new(name).tap do |dsl|
|
12
|
+
dsl.instance_eval(&block) if block_given?
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize(name)
|
17
|
+
@workflow = WorkflowDsl.new(name)
|
18
|
+
end
|
19
|
+
|
20
|
+
def attributes(&block)
|
21
|
+
@workflow.attributes(&block)
|
22
|
+
end
|
23
|
+
|
24
|
+
def prompts(&block)
|
25
|
+
@workflow.prompts(&block)
|
26
|
+
end
|
27
|
+
|
28
|
+
def section(name:, &block)
|
29
|
+
@workflow.section(name: name, &block)
|
30
|
+
end
|
31
|
+
|
32
|
+
def save
|
33
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveDatabase.new(@workflow.workflow).save
|
34
|
+
|
35
|
+
self
|
36
|
+
end
|
37
|
+
|
38
|
+
def save_json(file_name = nil)
|
39
|
+
full_file_name = file_name || 'workflow.json'
|
40
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveJson.new(@workflow.workflow).save(full_file_name)
|
41
|
+
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def save_yaml(file_name = nil)
|
46
|
+
full_file_name = file_name || 'workflow.yaml'
|
47
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveYaml.new(@workflow.workflow).save(full_file_name)
|
48
|
+
|
49
|
+
self
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -12,7 +12,7 @@ module Ad
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def initialize(name)
|
15
|
-
@workflow = { name: name, sections: [], attributes: {} }
|
15
|
+
@workflow = { name: name, sections: [], attributes: {}, prompts: [] }
|
16
16
|
@current_section_order = 1
|
17
17
|
end
|
18
18
|
|
@@ -24,6 +24,14 @@ module Ad
|
|
24
24
|
@workflow[:attributes][name] = { name: name, type: type, is_array: is_array }
|
25
25
|
end
|
26
26
|
|
27
|
+
def prompts(&block)
|
28
|
+
instance_eval(&block) if block_given?
|
29
|
+
end
|
30
|
+
|
31
|
+
def define_prompt(name, path: nil, content: nil)
|
32
|
+
@workflow[:prompts] << { name: name, path: path, content: content }
|
33
|
+
end
|
34
|
+
|
27
35
|
def section(name:, &block)
|
28
36
|
@current_step_order = 1
|
29
37
|
@current_section = { name: name, order: @current_section_order, steps: [] }
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for defining the attributes of a workflow
|
7
|
+
class AttributeDsl
|
8
|
+
def initialize(attributes)
|
9
|
+
@attributes = attributes
|
10
|
+
end
|
11
|
+
|
12
|
+
def attribute(name, type:, is_array: false)
|
13
|
+
@attributes[name] = { name: name, type: type, is_array: is_array }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for defining the prompts of a workflow
|
7
|
+
class PromptDsl
|
8
|
+
def initialize(prompts)
|
9
|
+
@prompts = prompts
|
10
|
+
end
|
11
|
+
|
12
|
+
def prompt(name, path: nil, content: nil)
|
13
|
+
@prompts[name] = { name: name, path: path, content: content }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for creating a section in the workflow
|
7
|
+
class SectionDsl
|
8
|
+
def initialize(name, order, sections)
|
9
|
+
@section = { name: name, order: order, steps: [] }
|
10
|
+
@sections = sections
|
11
|
+
@current_step_order = 1
|
12
|
+
@sections << @section
|
13
|
+
end
|
14
|
+
|
15
|
+
def step(name:, &block)
|
16
|
+
StepDsl.new(name, @current_step_order, @section[:steps]).instance_eval(&block)
|
17
|
+
@current_step_order += 1
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for defining the steps of a section
|
7
|
+
class StepDsl
|
8
|
+
def initialize(name, order, steps)
|
9
|
+
@step = { name: name, order: order, input_attributes: [], output_attributes: [], prompt: '' }
|
10
|
+
@steps = steps
|
11
|
+
@steps << @step
|
12
|
+
end
|
13
|
+
|
14
|
+
def input(attr_name, **_opts)
|
15
|
+
@step[:input_attributes] << attr_name
|
16
|
+
end
|
17
|
+
|
18
|
+
def output(attr_name, **_opts)
|
19
|
+
@step[:output_attributes] << attr_name
|
20
|
+
end
|
21
|
+
|
22
|
+
def prompt(prompt_text, **_opts)
|
23
|
+
@step[:prompt] = prompt_text
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
# This class is responsible for defining the workflow DSL
|
7
|
+
class WorkflowDsl
|
8
|
+
attr_reader :workflow
|
9
|
+
|
10
|
+
def initialize(name)
|
11
|
+
@workflow = { name: name, sections: [], attributes: {}, prompts: {} }
|
12
|
+
@current_section_order = 1
|
13
|
+
end
|
14
|
+
|
15
|
+
def attributes(&block)
|
16
|
+
dsl = AttributeDsl.new(@workflow[:attributes])
|
17
|
+
dsl.instance_eval(&block) if block_given?
|
18
|
+
end
|
19
|
+
|
20
|
+
def prompts(&block)
|
21
|
+
dsl = PromptDsl.new(@workflow[:prompts])
|
22
|
+
dsl.instance_eval(&block) if block_given?
|
23
|
+
end
|
24
|
+
|
25
|
+
def section(name:, &block)
|
26
|
+
dsl = SectionDsl.new(name, @current_section_order, @workflow[:sections])
|
27
|
+
dsl.instance_eval(&block) if block_given?
|
28
|
+
@current_section_order += 1
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -13,12 +13,20 @@ Ad::AgentArchitecture::Database::CreateSchema.new(DB).execute
|
|
13
13
|
|
14
14
|
require 'ad/agent_architecture/database/models'
|
15
15
|
require 'ad/agent_architecture/database/sql_query'
|
16
|
-
require 'ad/agent_architecture/dsl/
|
16
|
+
require 'ad/agent_architecture/dsl/attribute_dsl'
|
17
|
+
require 'ad/agent_architecture/dsl/prompt_dsl'
|
18
|
+
require 'ad/agent_architecture/dsl/section_dsl'
|
19
|
+
require 'ad/agent_architecture/dsl/step_dsl'
|
20
|
+
require 'ad/agent_architecture/dsl/workflow_dsl'
|
21
|
+
require 'ad/agent_architecture/dsl/agent_dsl'
|
17
22
|
require 'ad/agent_architecture/dsl/actions/save_database'
|
18
23
|
require 'ad/agent_architecture/dsl/actions/save_json'
|
19
24
|
require 'ad/agent_architecture/dsl/actions/save_yaml'
|
20
|
-
require 'ad/agent_architecture/report/workflow_detail_report'
|
21
|
-
require 'ad/agent_architecture/report/workflow_list_report'
|
25
|
+
# require 'ad/agent_architecture/report/workflow_detail_report'
|
26
|
+
# require 'ad/agent_architecture/report/workflow_list_report'
|
27
|
+
|
28
|
+
# Alias'
|
29
|
+
# AgentWorkflow = Ad::AgentArchitecture::Dsl::AgentWorkflowDsl
|
22
30
|
|
23
31
|
module Ad
|
24
32
|
module AgentArchitecture
|
data/package-lock.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "ad-agent_architecture",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.10",
|
4
4
|
"lockfileVersion": 3,
|
5
5
|
"requires": true,
|
6
6
|
"packages": {
|
7
7
|
"": {
|
8
8
|
"name": "ad-agent_architecture",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.10",
|
10
10
|
"devDependencies": {
|
11
11
|
"@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
|
12
12
|
"@semantic-release/changelog": "^6.0.3",
|
data/package.json
CHANGED
data/workflow.json
CHANGED
@@ -1,99 +1,78 @@
|
|
1
1
|
{
|
2
|
-
"name": "YouTube
|
2
|
+
"name": "YouTube Title Creator",
|
3
3
|
"sections": [
|
4
4
|
{
|
5
|
-
"name": "
|
5
|
+
"name": "Research",
|
6
6
|
"order": 1,
|
7
7
|
"steps": [
|
8
8
|
{
|
9
|
-
"name": "
|
9
|
+
"name": "Starting Context",
|
10
10
|
"order": 1,
|
11
11
|
"input_attributes": [
|
12
|
-
|
12
|
+
|
13
13
|
],
|
14
14
|
"output_attributes": [
|
15
|
-
|
15
|
+
|
16
16
|
],
|
17
|
-
"prompt": "
|
17
|
+
"prompt": "best_practice"
|
18
18
|
},
|
19
19
|
{
|
20
|
-
"name": "
|
20
|
+
"name": "Basic titles",
|
21
21
|
"order": 2,
|
22
22
|
"input_attributes": [
|
23
|
-
"
|
23
|
+
"basic_title",
|
24
|
+
"basic_keyword",
|
25
|
+
"basic_transcript"
|
24
26
|
],
|
25
27
|
"output_attributes": [
|
26
|
-
"
|
28
|
+
"potential_titles"
|
27
29
|
],
|
28
|
-
"prompt": "
|
30
|
+
"prompt": "Keyword: [start_keyword]\nTitle: [start_title]\n\nTranscript:\n\n[start_transcript]\n"
|
29
31
|
},
|
30
32
|
{
|
31
|
-
"name": "
|
33
|
+
"name": "Working Title",
|
32
34
|
"order": 3,
|
33
35
|
"input_attributes": [
|
34
|
-
"
|
36
|
+
"potential_titles"
|
35
37
|
],
|
36
38
|
"output_attributes": [
|
37
|
-
"
|
38
|
-
]
|
39
|
-
"prompt": "Create 5 introduction variations for [first_draft]."
|
40
|
-
},
|
41
|
-
{
|
42
|
-
"name": "SEO Analysis",
|
43
|
-
"order": 4,
|
44
|
-
"input_attributes": [
|
45
|
-
"first_draft"
|
46
|
-
],
|
47
|
-
"output_attributes": [
|
48
|
-
"seo_analysis"
|
49
|
-
],
|
50
|
-
"prompt": "Analyze the blog post for SEO."
|
51
|
-
}
|
52
|
-
]
|
53
|
-
},
|
54
|
-
{
|
55
|
-
"name": "Editing",
|
56
|
-
"order": 2,
|
57
|
-
"steps": [
|
58
|
-
{
|
59
|
-
"name": "Edit Draft",
|
60
|
-
"order": 1,
|
61
|
-
"input_attributes": [
|
62
|
-
"first_draft"
|
63
|
-
],
|
64
|
-
"output_attributes": [
|
65
|
-
"first_draft"
|
66
|
-
],
|
67
|
-
"prompt": "Edit [first_draft] for grammar, style, and clarity."
|
39
|
+
"working_title"
|
40
|
+
]
|
68
41
|
}
|
69
42
|
]
|
70
43
|
}
|
71
44
|
],
|
72
45
|
"attributes": {
|
73
|
-
"
|
74
|
-
"name": "
|
46
|
+
"start_title": {
|
47
|
+
"name": "start_title",
|
75
48
|
"type": "string",
|
76
49
|
"is_array": false
|
77
50
|
},
|
78
|
-
"
|
79
|
-
"name": "
|
51
|
+
"start_keyword": {
|
52
|
+
"name": "start_keyword",
|
80
53
|
"type": "string",
|
81
54
|
"is_array": false
|
82
55
|
},
|
83
|
-
"
|
84
|
-
"name": "
|
56
|
+
"start_transcript": {
|
57
|
+
"name": "start_transcript",
|
85
58
|
"type": "string",
|
86
59
|
"is_array": false
|
87
60
|
},
|
88
|
-
"
|
89
|
-
"name": "
|
61
|
+
"potential_titles": {
|
62
|
+
"name": "potential_titles",
|
90
63
|
"type": "array",
|
91
64
|
"is_array": false
|
92
65
|
},
|
93
|
-
"
|
94
|
-
"name": "
|
66
|
+
"working_title": {
|
67
|
+
"name": "working_title",
|
95
68
|
"type": "string",
|
96
69
|
"is_array": false
|
97
70
|
}
|
98
|
-
}
|
71
|
+
},
|
72
|
+
"prompts": [
|
73
|
+
{
|
74
|
+
"name": "best_practice",
|
75
|
+
"path": "youtube/title_creator/best_practice.md"
|
76
|
+
}
|
77
|
+
]
|
99
78
|
}
|
data/workflow.yaml
CHANGED
@@ -1,65 +1,56 @@
|
|
1
1
|
---
|
2
|
-
:name: YouTube
|
2
|
+
:name: YouTube Title Creator
|
3
3
|
:sections:
|
4
|
-
- :name:
|
4
|
+
- :name: Research
|
5
5
|
:order: 1
|
6
6
|
:steps:
|
7
|
-
- :name:
|
7
|
+
- :name: Starting Context
|
8
8
|
:order: 1
|
9
|
-
:input_attributes:
|
10
|
-
|
11
|
-
:
|
12
|
-
|
13
|
-
:prompt: Analyze [transcript] and generate a preliminary outline for a blog post.
|
14
|
-
- :name: Write First Draft
|
9
|
+
:input_attributes: []
|
10
|
+
:output_attributes: []
|
11
|
+
:prompt: :best_practice
|
12
|
+
- :name: Basic titles
|
15
13
|
:order: 2
|
16
14
|
:input_attributes:
|
17
|
-
- :
|
15
|
+
- :basic_title
|
16
|
+
- :basic_keyword
|
17
|
+
- :basic_transcript
|
18
18
|
:output_attributes:
|
19
|
-
- :
|
20
|
-
:prompt:
|
21
|
-
|
19
|
+
- :potential_titles
|
20
|
+
:prompt: |
|
21
|
+
Keyword: [start_keyword]
|
22
|
+
Title: [start_title]
|
23
|
+
|
24
|
+
Transcript:
|
25
|
+
|
26
|
+
[start_transcript]
|
27
|
+
- :name: Working Title
|
22
28
|
:order: 3
|
23
29
|
:input_attributes:
|
24
|
-
- :
|
25
|
-
:output_attributes:
|
26
|
-
- :intro_variations
|
27
|
-
:prompt: Create 5 introduction variations for [first_draft].
|
28
|
-
- :name: SEO Analysis
|
29
|
-
:order: 4
|
30
|
-
:input_attributes:
|
31
|
-
- :first_draft
|
32
|
-
:output_attributes:
|
33
|
-
- :seo_analysis
|
34
|
-
:prompt: Analyze the blog post for SEO.
|
35
|
-
- :name: Editing
|
36
|
-
:order: 2
|
37
|
-
:steps:
|
38
|
-
- :name: Edit Draft
|
39
|
-
:order: 1
|
40
|
-
:input_attributes:
|
41
|
-
- :first_draft
|
30
|
+
- :potential_titles
|
42
31
|
:output_attributes:
|
43
|
-
- :
|
44
|
-
:prompt: Edit [first_draft] for grammar, style, and clarity.
|
32
|
+
- :working_title
|
45
33
|
:attributes:
|
46
|
-
:
|
47
|
-
:name: :
|
34
|
+
:start_title:
|
35
|
+
:name: :start_title
|
48
36
|
:type: :string
|
49
37
|
:is_array: false
|
50
|
-
:
|
51
|
-
:name: :
|
38
|
+
:start_keyword:
|
39
|
+
:name: :start_keyword
|
52
40
|
:type: :string
|
53
41
|
:is_array: false
|
54
|
-
:
|
55
|
-
:name: :
|
42
|
+
:start_transcript:
|
43
|
+
:name: :start_transcript
|
56
44
|
:type: :string
|
57
45
|
:is_array: false
|
58
|
-
:
|
59
|
-
:name: :
|
46
|
+
:potential_titles:
|
47
|
+
:name: :potential_titles
|
60
48
|
:type: :array
|
61
49
|
:is_array: false
|
62
|
-
:
|
63
|
-
:name: :
|
50
|
+
:working_title:
|
51
|
+
:name: :working_title
|
64
52
|
:type: :string
|
65
53
|
:is_array: false
|
54
|
+
:prompts:
|
55
|
+
- :name: :best_practice
|
56
|
+
:path: youtube/title_creator/best_practice.md
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ad-agent_architecture
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -86,7 +86,13 @@ files:
|
|
86
86
|
- lib/ad/agent_architecture/dsl/actions/save_database.rb
|
87
87
|
- lib/ad/agent_architecture/dsl/actions/save_json.rb
|
88
88
|
- lib/ad/agent_architecture/dsl/actions/save_yaml.rb
|
89
|
-
- lib/ad/agent_architecture/dsl/
|
89
|
+
- lib/ad/agent_architecture/dsl/agent_dsl.rb
|
90
|
+
- lib/ad/agent_architecture/dsl/agent_workflow_dsl.rb.old
|
91
|
+
- lib/ad/agent_architecture/dsl/attribute_dsl.rb
|
92
|
+
- lib/ad/agent_architecture/dsl/prompt_dsl.rb
|
93
|
+
- lib/ad/agent_architecture/dsl/section_dsl.rb
|
94
|
+
- lib/ad/agent_architecture/dsl/step_dsl.rb
|
95
|
+
- lib/ad/agent_architecture/dsl/workflow_dsl.rb
|
90
96
|
- lib/ad/agent_architecture/report/workflow_detail_report.rb
|
91
97
|
- lib/ad/agent_architecture/report/workflow_list_report.rb
|
92
98
|
- lib/ad/agent_architecture/sql/workflow_details.sql
|