ad-agent_architecture 0.0.8 → 0.0.9
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 +2 -5
- data/CHANGELOG.md +7 -0
- data/lib/ad/agent_architecture/dsl/actions/save_database.rb +57 -0
- data/lib/ad/agent_architecture/dsl/actions/save_json.rb +23 -0
- data/lib/ad/agent_architecture/dsl/actions/save_yaml.rb +22 -0
- data/lib/ad/agent_architecture/dsl/agent_workflow_dsl.rb +12 -33
- data/lib/ad/agent_architecture/report/workflow_list_report.rb +1 -1
- data/lib/ad/agent_architecture/version.rb +1 -1
- data/lib/ad/agent_architecture.rb +3 -1
- data/package-lock.json +2 -2
- data/package.json +1 -1
- data/workflow.json +99 -0
- data/workflow.yaml +65 -0
- metadata +6 -2
- data/lib/ad/agent_architecture/database/save_workflow_graph.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1afc432b8e4a84cec6f099987e20ccb1abd19b278a1f299fdd3cd822e47b6f2
|
4
|
+
data.tar.gz: fd1b6e9054740f005c083712e3cd67b1872cc0cd8d66eadaa2c9541fb3f33c9c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7af0666287aaef19e10bc414c160066ff2ab0dde2f55f2ae758790454028bccc5bb33ee48fb1ff63ca307a98ab25a82a16a896d2dbf256090151870519e5cb78
|
7
|
+
data.tar.gz: ae03bbcc49b5f4a0f467852a6f2c411c5d45484ba86eeac3251f75ce97379b2f04e8790530248ad997e5b8fee776174c5ef6ec36b128d89dfc693c52e09de874
|
data/.rubocop.yml
CHANGED
@@ -43,8 +43,7 @@ Metrics/BlockLength:
|
|
43
43
|
Metrics/MethodLength:
|
44
44
|
Max: 25
|
45
45
|
Exclude:
|
46
|
-
- "lib/ad/agent_architecture
|
47
|
-
- "lib/ad/agent_architecture/database/*"
|
46
|
+
- "lib/ad/agent_architecture/**/*"
|
48
47
|
|
49
48
|
Layout/LineLength:
|
50
49
|
Max: 200
|
@@ -92,9 +91,7 @@ Style/AccessorGrouping:
|
|
92
91
|
Enabled: false
|
93
92
|
Metrics/AbcSize:
|
94
93
|
Exclude:
|
95
|
-
- "lib/ad/agent_architecture
|
96
|
-
- "lib/ad/agent_architecture/database/*"
|
97
|
-
- "lib/ad/agent_architecture/report/*"
|
94
|
+
- "lib/ad/agent_architecture/**/*"
|
98
95
|
Metrics/NoExpectationExample:
|
99
96
|
Exclude:
|
100
97
|
- "spec/ad/agent_architecture/dsl/*"
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,10 @@
|
|
1
|
+
## [0.0.8](https://github.com/appydave/ad-agent_architecture/compare/v0.0.7...v0.0.8) (2024-06-29)
|
2
|
+
|
3
|
+
|
4
|
+
### Bug Fixes
|
5
|
+
|
6
|
+
* add basic reports ([82d89e1](https://github.com/appydave/ad-agent_architecture/commit/82d89e164744f9100f92ca8ec677447ee1c083cb))
|
7
|
+
|
1
8
|
## [0.0.7](https://github.com/appydave/ad-agent_architecture/compare/v0.0.6...v0.0.7) (2024-06-29)
|
2
9
|
|
3
10
|
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Ad
|
4
|
+
module AgentArchitecture
|
5
|
+
module Dsl
|
6
|
+
module Actions
|
7
|
+
# Save workflow graph to database
|
8
|
+
class SaveDatabase
|
9
|
+
def initialize(workflow_hash)
|
10
|
+
@workflow_hash = workflow_hash
|
11
|
+
end
|
12
|
+
|
13
|
+
def save
|
14
|
+
DB.transaction do
|
15
|
+
# Save workflow
|
16
|
+
workflow_record = Ad::AgentArchitecture::Database::Workflow.create(name: @workflow_hash[:name])
|
17
|
+
|
18
|
+
# Save attributes
|
19
|
+
attribute_records = @workflow_hash[:attributes].map do |_name, attr|
|
20
|
+
Ad::AgentArchitecture::Database::Attribute.create(
|
21
|
+
name: attr[:name], type: attr[:type], is_array: attr[:is_array], workflow: workflow_record
|
22
|
+
)
|
23
|
+
end
|
24
|
+
|
25
|
+
attribute_map = attribute_records.to_h { |ar| [ar.name.to_sym, ar] }
|
26
|
+
|
27
|
+
# Save sections and steps
|
28
|
+
@workflow_hash[:sections].each do |section|
|
29
|
+
section_record = Ad::AgentArchitecture::Database::Section.create(
|
30
|
+
name: section[:name], order: section[:order], workflow: workflow_record
|
31
|
+
)
|
32
|
+
|
33
|
+
section[:steps].each do |step|
|
34
|
+
step_record = Ad::AgentArchitecture::Database::Step.create(
|
35
|
+
name: step[:name], order: step[:order], prompt: step[:prompt], section: section_record
|
36
|
+
)
|
37
|
+
|
38
|
+
step[:input_attributes].each do |attr_name|
|
39
|
+
Ad::AgentArchitecture::Database::InputAttribute.create(
|
40
|
+
step: step_record, attribute: attribute_map[attr_name.to_sym]
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
step[:output_attributes].each do |attr_name|
|
45
|
+
Ad::AgentArchitecture::Database::OutputAttribute.create(
|
46
|
+
step: step_record, attribute: attribute_map[attr_name.to_sym]
|
47
|
+
)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Ad
|
6
|
+
module AgentArchitecture
|
7
|
+
module Dsl
|
8
|
+
module Actions
|
9
|
+
# Save workflow graph to JSON file
|
10
|
+
class SaveJson
|
11
|
+
def initialize(workflow_hash)
|
12
|
+
@workflow_hash = workflow_hash
|
13
|
+
end
|
14
|
+
|
15
|
+
def save(file_name)
|
16
|
+
# Pretty JSON
|
17
|
+
File.write(file_name, JSON.pretty_generate(@workflow_hash))
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Ad
|
6
|
+
module AgentArchitecture
|
7
|
+
module Dsl
|
8
|
+
module Actions
|
9
|
+
# Save workflow graph to YAML file
|
10
|
+
class SaveYaml
|
11
|
+
def initialize(workflow_hash)
|
12
|
+
@workflow_hash = workflow_hash
|
13
|
+
end
|
14
|
+
|
15
|
+
def save(file_name)
|
16
|
+
File.write(file_name, @workflow_hash.to_yaml)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -8,7 +8,6 @@ module Ad
|
|
8
8
|
def self.create(name:, &block)
|
9
9
|
new(name).tap do |dsl|
|
10
10
|
dsl.instance_eval(&block) if block_given?
|
11
|
-
dsl.save
|
12
11
|
end
|
13
12
|
end
|
14
13
|
|
@@ -53,43 +52,23 @@ module Ad
|
|
53
52
|
end
|
54
53
|
|
55
54
|
def save
|
56
|
-
|
57
|
-
# Save workflow
|
58
|
-
workflow_record = Ad::AgentArchitecture::Database::Workflow.create(name: @workflow[:name])
|
55
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveDatabase.new(@workflow).save
|
59
56
|
|
60
|
-
|
61
|
-
|
62
|
-
Ad::AgentArchitecture::Database::Attribute.create(
|
63
|
-
name: attr[:name], type: attr[:type], is_array: attr[:is_array], workflow: workflow_record
|
64
|
-
)
|
65
|
-
end
|
66
|
-
attribute_map = attribute_records.to_h { |ar| [ar.name.to_sym, ar] }
|
57
|
+
self
|
58
|
+
end
|
67
59
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
name: section[:name], order: section[:order], workflow: workflow_record
|
72
|
-
)
|
60
|
+
def save_json(file_name: nil)
|
61
|
+
full_file_name = file_name || 'workflow.json'
|
62
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveJson.new(@workflow).save(full_file_name)
|
73
63
|
|
74
|
-
|
75
|
-
|
76
|
-
name: step[:name], order: step[:order], prompt: step[:prompt], section: section_record
|
77
|
-
)
|
64
|
+
self
|
65
|
+
end
|
78
66
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
)
|
83
|
-
end
|
67
|
+
def save_yaml(file_name: nil)
|
68
|
+
full_file_name = file_name || 'workflow.yaml'
|
69
|
+
Ad::AgentArchitecture::Dsl::Actions::SaveYaml.new(@workflow).save(full_file_name)
|
84
70
|
|
85
|
-
|
86
|
-
Ad::AgentArchitecture::Database::OutputAttribute.create(
|
87
|
-
step: step_record, attribute: attribute_map[attr_name.to_sym]
|
88
|
-
)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
71
|
+
self
|
93
72
|
end
|
94
73
|
end
|
95
74
|
end
|
@@ -11,7 +11,7 @@ module Ad
|
|
11
11
|
|
12
12
|
def print
|
13
13
|
# tp query, :workflow_name, :workflow_description, :section_name, :section_description, :section_order, :step_name, :step_order, :step_prompt, :inputs, :outputs
|
14
|
-
tp query, :workflow_name, :
|
14
|
+
tp query, :workflow_name, :section_name, :step_name, :step_prompt, :inputs, :outputs
|
15
15
|
end
|
16
16
|
|
17
17
|
def query
|
@@ -13,8 +13,10 @@ 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/database/save_workflow_graph'
|
17
16
|
require 'ad/agent_architecture/dsl/agent_workflow_dsl'
|
17
|
+
require 'ad/agent_architecture/dsl/actions/save_database'
|
18
|
+
require 'ad/agent_architecture/dsl/actions/save_json'
|
19
|
+
require 'ad/agent_architecture/dsl/actions/save_yaml'
|
18
20
|
require 'ad/agent_architecture/report/workflow_detail_report'
|
19
21
|
require 'ad/agent_architecture/report/workflow_list_report'
|
20
22
|
|
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.9",
|
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.9",
|
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
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
{
|
2
|
+
"name": "YouTube Transcript to Medium Article",
|
3
|
+
"sections": [
|
4
|
+
{
|
5
|
+
"name": "Analysis",
|
6
|
+
"order": 1,
|
7
|
+
"steps": [
|
8
|
+
{
|
9
|
+
"name": "Generate Outline",
|
10
|
+
"order": 1,
|
11
|
+
"input_attributes": [
|
12
|
+
"transcript"
|
13
|
+
],
|
14
|
+
"output_attributes": [
|
15
|
+
"outline"
|
16
|
+
],
|
17
|
+
"prompt": "Analyze [transcript] and generate a preliminary outline for a blog post."
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"name": "Write First Draft",
|
21
|
+
"order": 2,
|
22
|
+
"input_attributes": [
|
23
|
+
"outline"
|
24
|
+
],
|
25
|
+
"output_attributes": [
|
26
|
+
"first_draft"
|
27
|
+
],
|
28
|
+
"prompt": "Write a blog post based on [outline]."
|
29
|
+
},
|
30
|
+
{
|
31
|
+
"name": "Generate Intros",
|
32
|
+
"order": 3,
|
33
|
+
"input_attributes": [
|
34
|
+
"first_draft"
|
35
|
+
],
|
36
|
+
"output_attributes": [
|
37
|
+
"intro_variations"
|
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."
|
68
|
+
}
|
69
|
+
]
|
70
|
+
}
|
71
|
+
],
|
72
|
+
"attributes": {
|
73
|
+
"transcript": {
|
74
|
+
"name": "transcript",
|
75
|
+
"type": "string",
|
76
|
+
"is_array": false
|
77
|
+
},
|
78
|
+
"outline": {
|
79
|
+
"name": "outline",
|
80
|
+
"type": "string",
|
81
|
+
"is_array": false
|
82
|
+
},
|
83
|
+
"first_draft": {
|
84
|
+
"name": "first_draft",
|
85
|
+
"type": "string",
|
86
|
+
"is_array": false
|
87
|
+
},
|
88
|
+
"intro_variations": {
|
89
|
+
"name": "intro_variations",
|
90
|
+
"type": "array",
|
91
|
+
"is_array": false
|
92
|
+
},
|
93
|
+
"seo_analysis": {
|
94
|
+
"name": "seo_analysis",
|
95
|
+
"type": "string",
|
96
|
+
"is_array": false
|
97
|
+
}
|
98
|
+
}
|
99
|
+
}
|
data/workflow.yaml
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
---
|
2
|
+
:name: YouTube Transcript to Medium Article
|
3
|
+
:sections:
|
4
|
+
- :name: Analysis
|
5
|
+
:order: 1
|
6
|
+
:steps:
|
7
|
+
- :name: Generate Outline
|
8
|
+
:order: 1
|
9
|
+
:input_attributes:
|
10
|
+
- :transcript
|
11
|
+
:output_attributes:
|
12
|
+
- :outline
|
13
|
+
:prompt: Analyze [transcript] and generate a preliminary outline for a blog post.
|
14
|
+
- :name: Write First Draft
|
15
|
+
:order: 2
|
16
|
+
:input_attributes:
|
17
|
+
- :outline
|
18
|
+
:output_attributes:
|
19
|
+
- :first_draft
|
20
|
+
:prompt: Write a blog post based on [outline].
|
21
|
+
- :name: Generate Intros
|
22
|
+
:order: 3
|
23
|
+
:input_attributes:
|
24
|
+
- :first_draft
|
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
|
42
|
+
:output_attributes:
|
43
|
+
- :first_draft
|
44
|
+
:prompt: Edit [first_draft] for grammar, style, and clarity.
|
45
|
+
:attributes:
|
46
|
+
:transcript:
|
47
|
+
:name: :transcript
|
48
|
+
:type: :string
|
49
|
+
:is_array: false
|
50
|
+
:outline:
|
51
|
+
:name: :outline
|
52
|
+
:type: :string
|
53
|
+
:is_array: false
|
54
|
+
:first_draft:
|
55
|
+
:name: :first_draft
|
56
|
+
:type: :string
|
57
|
+
:is_array: false
|
58
|
+
:intro_variations:
|
59
|
+
:name: :intro_variations
|
60
|
+
:type: :array
|
61
|
+
:is_array: false
|
62
|
+
:seo_analysis:
|
63
|
+
:name: :seo_analysis
|
64
|
+
:type: :string
|
65
|
+
:is_array: false
|
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.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Cruwys
|
@@ -82,8 +82,10 @@ files:
|
|
82
82
|
- lib/ad/agent_architecture.rb
|
83
83
|
- lib/ad/agent_architecture/database/create_schema.rb
|
84
84
|
- lib/ad/agent_architecture/database/models.rb
|
85
|
-
- lib/ad/agent_architecture/database/save_workflow_graph.rb
|
86
85
|
- lib/ad/agent_architecture/database/sql_query.rb
|
86
|
+
- lib/ad/agent_architecture/dsl/actions/save_database.rb
|
87
|
+
- lib/ad/agent_architecture/dsl/actions/save_json.rb
|
88
|
+
- lib/ad/agent_architecture/dsl/actions/save_yaml.rb
|
87
89
|
- lib/ad/agent_architecture/dsl/agent_workflow_dsl.rb
|
88
90
|
- lib/ad/agent_architecture/report/workflow_detail_report.rb
|
89
91
|
- lib/ad/agent_architecture/report/workflow_list_report.rb
|
@@ -92,6 +94,8 @@ files:
|
|
92
94
|
- package-lock.json
|
93
95
|
- package.json
|
94
96
|
- sig/ad/agent_architecture.rbs
|
97
|
+
- workflow.json
|
98
|
+
- workflow.yaml
|
95
99
|
homepage: http://appydave.com/gems/ad-agent_architecture
|
96
100
|
licenses:
|
97
101
|
- MIT
|
@@ -1,54 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Ad
|
4
|
-
module AgentArchitecture
|
5
|
-
module Database
|
6
|
-
# Save workflow graph to database
|
7
|
-
class SaveWorkflowGraph
|
8
|
-
def initialize(workflow_hash)
|
9
|
-
@workflow_hash = workflow_hash
|
10
|
-
end
|
11
|
-
|
12
|
-
def save
|
13
|
-
DB.transaction do
|
14
|
-
# Save workflow
|
15
|
-
workflow_record = Ad::AgentArchitecture::Database::Workflow.create(name: @workflow_hash[:name])
|
16
|
-
|
17
|
-
# Save attributes
|
18
|
-
attribute_records = @workflow_hash[:attributes].map do |_name, attr|
|
19
|
-
Ad::AgentArchitecture::Database::Attribute.create(
|
20
|
-
name: attr[:name], type: attr[:type], is_array: attr[:is_array], workflow: workflow_record
|
21
|
-
)
|
22
|
-
end
|
23
|
-
attribute_map = attribute_records.to_h { |ar| [ar.name.to_sym, ar] }
|
24
|
-
|
25
|
-
# Save sections and steps
|
26
|
-
@workflow_hash[:sections].each do |section|
|
27
|
-
section_record = Ad::AgentArchitecture::Database::Section.create(
|
28
|
-
name: section[:name], order: section[:order], workflow: workflow_record
|
29
|
-
)
|
30
|
-
|
31
|
-
section[:steps].each do |step|
|
32
|
-
step_record = Ad::AgentArchitecture::Database::Step.create(
|
33
|
-
name: step[:name], order: step[:order], prompt: step[:prompt], section: section_record
|
34
|
-
)
|
35
|
-
|
36
|
-
step[:input_attributes].each do |attr_name|
|
37
|
-
Ad::AgentArchitecture::Database::InputAttribute.create(
|
38
|
-
step: step_record, attribute: attribute_map[attr_name.to_sym]
|
39
|
-
)
|
40
|
-
end
|
41
|
-
|
42
|
-
step[:output_attributes].each do |attr_name|
|
43
|
-
Ad::AgentArchitecture::Database::OutputAttribute.create(
|
44
|
-
step: step_record, attribute: attribute_map[attr_name.to_sym]
|
45
|
-
)
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|