gitlab-cloud-connector 0.2.2 → 0.2.4
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/CONTRIBUTING.md +4 -5
- data/README.md +48 -1
- data/config/schemas/service_schema.json +38 -0
- data/config/services/agent_quick_actions.yml +6 -0
- data/config/services/anthropic_proxy.yml +11 -0
- data/config/services/code_suggestions.yml +5 -0
- data/config/services/duo_chat.yml +21 -0
- data/config/services/duo_workflow.yml +4 -0
- data/config/services/generate_description.yml +4 -0
- data/config/services/sast.yml +6 -0
- data/config/services/self_hosted_models.yml +24 -0
- data/config/services/summarize_new_merge_request.yml +4 -0
- data/config/services/vertex_ai_proxy.yml +9 -0
- data/config/unit_primitives/explain_code.yml +1 -0
- data/config/unit_primitives/generate_cube_query.yml +1 -0
- data/config/unit_primitives/measure_comment_temperature.yml +12 -0
- data/config/unit_primitives/review_merge_request.yml +1 -0
- data/config/unit_primitives/summarize_merge_request.yml +1 -0
- data/lib/cloud_connector.rb +4 -1
- data/lib/gitlab/cloud_connector/available_services_generator.rb +96 -0
- data/lib/gitlab/cloud_connector/configuration.rb +23 -0
- data/lib/gitlab/cloud_connector/data_model/associations.rb +32 -0
- data/lib/gitlab/cloud_connector/data_model/base.rb +49 -0
- data/lib/gitlab/cloud_connector/data_model/data_loader.rb +39 -0
- data/lib/gitlab/cloud_connector/data_models.rb +37 -0
- data/lib/gitlab/cloud_connector/version.rb +1 -1
- metadata +20 -4
- data/config/unit_primitives/duo_workflow_generate_token.yml +0 -10
- data/config/unit_primitives/summarize_new_merge_request.yml +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67ce9f6dcc2ee1ea8bcb29bb7d7f5a4a5c95a6e0e3e6830352541cf627bb73e8
|
4
|
+
data.tar.gz: e3e31b925c70a6bd0a1e99ae2d3d2692a85dd9a055f88debfb433ce2ba3bb8d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4d457b2ea48bf430d5c5fab197a2da85d9c6e6657219f53370e776ae60a49af24a9a0480b026be796d43d296a06e14796026ce167683f6f8af2100bd5a740144
|
7
|
+
data.tar.gz: ea09694cf8331e5add4372630f67bcc768e3eb253901ab5b23133da7a72887fc1fbcd8ea927a399d6ceeb19ea21f1fba54adf3dfd60268925847b02b85028428
|
data/CONTRIBUTING.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
# Making changes to this repository
|
2
2
|
|
3
3
|
We welcome contributions. When making changes:
|
4
4
|
|
5
|
-
1. Follow good
|
5
|
+
1. Follow good Git commit practices. Summarize the change concisely in the commit title,
|
6
6
|
and add relevant details in the commit body.
|
7
7
|
1. Add a [changelog trailer](https://docs.gitlab.com/ee/user/project/changelogs.html) where it applies.
|
8
8
|
1. Open a merge request.
|
@@ -44,7 +44,6 @@ This code of conduct applies both within project spaces and in public spaces
|
|
44
44
|
when an individual is representing the project or its community.
|
45
45
|
|
46
46
|
Instances of abusive, harassing, or otherwise unacceptable behavior can be
|
47
|
-
reported by emailing contact@gitlab.com
|
47
|
+
reported by emailing <contact@gitlab.com>.
|
48
48
|
|
49
|
-
This Code of Conduct is adapted from the [Contributor Covenant](https://contributor-covenant.org
|
50
|
-
available at [https://contributor-covenant.org/version/1/1/0/](https://contributor-covenant.org/version/1/1/0/).
|
49
|
+
This Code of Conduct is adapted from the [Contributor Covenant, version 1.1.0](https://contributor-covenant.org/version/1/1/0/).
|
data/README.md
CHANGED
@@ -10,6 +10,54 @@ We expect Bundler is used to manage dependencies. To add the dependency, add it
|
|
10
10
|
gem "gitlab-cloud-connector", "~> 0.1.1", require: 'cloud_connector'
|
11
11
|
```
|
12
12
|
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
### Data Storage
|
16
|
+
|
17
|
+
Cloud Connector uses YAML files stored in the project's `/config` directory. The data is organized by model type:
|
18
|
+
|
19
|
+
```yaml
|
20
|
+
# config/backend_services/ai_gateway.yml
|
21
|
+
name: ai_gateway
|
22
|
+
description: "AI Gateway"
|
23
|
+
jwt_aud: gitlab-ai-gateway
|
24
|
+
|
25
|
+
# config/add_ons/duo_pro.yml
|
26
|
+
name: duo_pro
|
27
|
+
description: "Duo Pro"
|
28
|
+
|
29
|
+
# config/unit_primitives/duo_chat.yml
|
30
|
+
name: duo_chat
|
31
|
+
description: "Duo Chat"
|
32
|
+
backend_services:
|
33
|
+
- ai_gateway
|
34
|
+
add_ons:
|
35
|
+
- duo_pro
|
36
|
+
- duo_enterprise
|
37
|
+
```
|
38
|
+
|
39
|
+
### Working with DataModels
|
40
|
+
|
41
|
+
`DataModels` are the core data structures in the Cloud Connector. Each model inherits from `DataModel::Base`. The data is loaded from YAML files into memory at runtime, making it efficient for read operations and relationship traversal.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
require 'cloud_connector'
|
45
|
+
|
46
|
+
# Find unit primitive by name
|
47
|
+
# Note: value should be a symbol (e.g., `:duo_chat` instead of `'duo_chat'`).
|
48
|
+
duo_chat = Gitlab::CloudConnector::DataModels::UnitPrimitive.find_by_name(:duo_chat)
|
49
|
+
duo_chat.description
|
50
|
+
duo_chat.cut_off_date
|
51
|
+
|
52
|
+
# access associations
|
53
|
+
duo_chat.add_ons
|
54
|
+
duo_chat.license_types
|
55
|
+
duo_chat.backend_services
|
56
|
+
|
57
|
+
# read duo_chat audiences
|
58
|
+
duo_chat.backend_services.map(&:jwt_aud)
|
59
|
+
```
|
60
|
+
|
13
61
|
## Release Process
|
14
62
|
|
15
63
|
See [Release Process](../../README.md#release-process)
|
@@ -18,4 +66,3 @@ Once the new gem version is visible on [RubyGems.org](https://rubygems.org/gems/
|
|
18
66
|
it is recommended to update [GitLab's `Gemfile`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/Gemfile)
|
19
67
|
and [Customers Dot's `Gemfile`](https://gitlab.com/gitlab-org/customers-gitlab-com/-/blob/main/Gemfile) to bump the `gitlab-cloud-connector`
|
20
68
|
Ruby gem to the new version also. See [Usage](#usage) for how to do this.
|
21
|
-
|
@@ -0,0 +1,38 @@
|
|
1
|
+
{
|
2
|
+
"$schema": "http://json-schema.org/draft-06/schema#",
|
3
|
+
"type": "object",
|
4
|
+
"description": "This is the legacy format for the service object that is being deprecated. Consider transitioning to the new format.",
|
5
|
+
"required": ["name"],
|
6
|
+
"properties": {
|
7
|
+
"name": {
|
8
|
+
"type": "string",
|
9
|
+
"pattern": "^[a-z0-9]+(_[a-z0-9]+)*$",
|
10
|
+
"description": "The unique name of the service, consisting of lowercase alphanumeric characters and underscores."
|
11
|
+
},
|
12
|
+
"basic_unit_primitive": {
|
13
|
+
"type": "string",
|
14
|
+
"pattern": "^[a-z0-9]+(_[a-z0-9]+)*$",
|
15
|
+
"description": "The basic unit primitive identifier."
|
16
|
+
},
|
17
|
+
"gitlab_realm": {
|
18
|
+
"type": "array",
|
19
|
+
"items": {
|
20
|
+
"type": "string",
|
21
|
+
"enum": ["gitlab-com", "self-managed"]
|
22
|
+
},
|
23
|
+
"description": "An array of unit primitives associated with the service."
|
24
|
+
},
|
25
|
+
"description": {
|
26
|
+
"type": "string",
|
27
|
+
"description": "A brief description of the service."
|
28
|
+
},
|
29
|
+
"unit_primitives": {
|
30
|
+
"type": "array",
|
31
|
+
"items": {
|
32
|
+
"type": "string"
|
33
|
+
},
|
34
|
+
"description": "An array of unit primitives associated with the service."
|
35
|
+
}
|
36
|
+
},
|
37
|
+
"additionalProperties": false
|
38
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
---
|
2
|
+
name: anthropic_proxy
|
3
|
+
unit_primitives:
|
4
|
+
- categorize_duo_chat_question
|
5
|
+
- generate_commit_message
|
6
|
+
- generate_issue_description
|
7
|
+
- glab_ask_git_command
|
8
|
+
- resolve_vulnerability
|
9
|
+
- review_merge_request
|
10
|
+
- summarize_issue_discussions
|
11
|
+
- summarize_review
|
@@ -0,0 +1,21 @@
|
|
1
|
+
---
|
2
|
+
name: duo_chat
|
3
|
+
basic_unit_primitive: duo_chat
|
4
|
+
unit_primitives:
|
5
|
+
- ask_build
|
6
|
+
- ask_commit
|
7
|
+
- ask_epic
|
8
|
+
- ask_issue
|
9
|
+
- ask_merge_request
|
10
|
+
- documentation_search
|
11
|
+
- duo_chat
|
12
|
+
- explain_code
|
13
|
+
- fix_code
|
14
|
+
- include_dependency_context
|
15
|
+
- include_file_context
|
16
|
+
- include_issue_context
|
17
|
+
- include_local_git_context
|
18
|
+
- include_merge_request_context
|
19
|
+
- include_snippet_context
|
20
|
+
- refactor_code
|
21
|
+
- write_tests
|
@@ -0,0 +1,24 @@
|
|
1
|
+
---
|
2
|
+
name: self_hosted_models
|
3
|
+
gitlab_realm:
|
4
|
+
- gitlab-com
|
5
|
+
unit_primitives:
|
6
|
+
- ask_build
|
7
|
+
- ask_commit
|
8
|
+
- ask_epic
|
9
|
+
- ask_issue
|
10
|
+
- ask_merge_request
|
11
|
+
- complete_code
|
12
|
+
- generate_code
|
13
|
+
- documentation_search
|
14
|
+
- duo_chat
|
15
|
+
- explain_code
|
16
|
+
- fix_code
|
17
|
+
- include_dependency_context
|
18
|
+
- include_file_context
|
19
|
+
- include_issue_context
|
20
|
+
- include_local_git_context
|
21
|
+
- include_merge_request_context
|
22
|
+
- include_snippet_context
|
23
|
+
- refactor_code
|
24
|
+
- write_tests
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
name: generate_cube_query
|
3
3
|
description: Convert plain text questions about event data in to a structured query in JSON format.
|
4
|
+
cut_off_date: 2024-10-17T00:00:00+00:00
|
4
5
|
group: group::platform insights
|
5
6
|
feature_category: product_analytics_visualization
|
6
7
|
backend_services:
|
@@ -0,0 +1,12 @@
|
|
1
|
+
---
|
2
|
+
name: measure_comment_temperature
|
3
|
+
description: Measure the temperature of a comment.
|
4
|
+
cut_off_date: 2024-10-17T00:00:00+00:00
|
5
|
+
group: group::ai framework
|
6
|
+
feature_category: ai_abstraction_layer
|
7
|
+
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/174067
|
8
|
+
backend_services:
|
9
|
+
- ai_gateway
|
10
|
+
add_ons:
|
11
|
+
- duo_enterprise
|
12
|
+
- duo_pro
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
name: review_merge_request
|
3
3
|
description: Review new hunk and old hunk of a merge request diff.
|
4
|
+
cut_off_date: 2024-10-17T00:00:00+00:00
|
4
5
|
group: group::code review
|
5
6
|
feature_category: code_review_workflow
|
6
7
|
documentation_url: https://docs.gitlab.com/ee/user/gitlab_duo/#code-review
|
@@ -1,6 +1,7 @@
|
|
1
1
|
---
|
2
2
|
name: summarize_merge_request
|
3
3
|
description: Summarize merge request from the comments.
|
4
|
+
cut_off_date: 2024-10-17T00:00:00+00:00
|
4
5
|
group: group::code review
|
5
6
|
feature_category: code_review_workflow
|
6
7
|
documentation_url: https://docs.gitlab.com/ee/user/gitlab_duo/#merge-request-summary
|
data/lib/cloud_connector.rb
CHANGED
@@ -5,6 +5,9 @@ require 'active_support/time'
|
|
5
5
|
|
6
6
|
module Gitlab
|
7
7
|
module CloudConnector
|
8
|
-
autoload(:JsonWebToken, 'gitlab/cloud_connector/json_web_token
|
8
|
+
autoload(:JsonWebToken, 'gitlab/cloud_connector/json_web_token')
|
9
|
+
autoload(:Configuration, 'gitlab/cloud_connector/configuration')
|
10
|
+
autoload(:DataModels, 'gitlab/cloud_connector/data_models')
|
11
|
+
autoload(:AvailableServicesGenerator, 'gitlab/cloud_connector/available_services_generator')
|
9
12
|
end
|
10
13
|
end
|
@@ -0,0 +1,96 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/enumerable'
|
4
|
+
require 'active_support/core_ext/object/blank'
|
5
|
+
|
6
|
+
module Gitlab
|
7
|
+
module CloudConnector
|
8
|
+
class AvailableServicesGenerator
|
9
|
+
GITLAB_REALMS = %w[gitlab-com self-managed].freeze
|
10
|
+
WRONG_GITLAB_REALM_MESSAGE = 'Wrong gitlab_realm. Please use one of the following: %s'
|
11
|
+
IGNORE_UNIT_PRIMITIVES = %w[
|
12
|
+
agent_quick_actions
|
13
|
+
ask_build
|
14
|
+
ask_commit
|
15
|
+
ask_epic
|
16
|
+
ask_issue
|
17
|
+
ask_merge_request
|
18
|
+
categorize_duo_chat_question
|
19
|
+
complete_code
|
20
|
+
documentation_search
|
21
|
+
duo_workflow_execute_workflow
|
22
|
+
duo_workflow_generate_token
|
23
|
+
explain_code
|
24
|
+
fix_code
|
25
|
+
generate_code
|
26
|
+
generate_issue_description
|
27
|
+
refactor_code
|
28
|
+
security_scans
|
29
|
+
semantic_search_issue
|
30
|
+
summarize_issue_discussions
|
31
|
+
summarize_merge_request
|
32
|
+
write_tests
|
33
|
+
].freeze
|
34
|
+
|
35
|
+
def generate(gitlab_realm)
|
36
|
+
raise WRONG_GITLAB_REALM_MESSAGE % GITLAB_REALMS.join(', ') unless GITLAB_REALMS.include?(gitlab_realm)
|
37
|
+
|
38
|
+
{
|
39
|
+
'services' => generate_services_config(gitlab_realm)
|
40
|
+
}
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def generate_services_config(gitlab_realm)
|
46
|
+
services_config = {}
|
47
|
+
|
48
|
+
DataModels::Service.each do |service|
|
49
|
+
next if service.gitlab_realm && !service.gitlab_realm&.include?(gitlab_realm)
|
50
|
+
|
51
|
+
service_config = generate_service_config(service.unit_primitives, service.basic_unit_primitive)
|
52
|
+
# Remove duo_pro for self_hosted_models
|
53
|
+
service_config['bundled_with'].delete('duo_pro') if service.name == 'self_hosted_models'
|
54
|
+
|
55
|
+
services_config[service.name] = service_config
|
56
|
+
end
|
57
|
+
|
58
|
+
# Generate a stand-alone service for each unit primitive (except the ones in the ignore list)
|
59
|
+
unit_primitives = DataModels::UnitPrimitive.reject { |up| IGNORE_UNIT_PRIMITIVES.include?(up.name) }
|
60
|
+
unit_primitives.each do |unit_primitive|
|
61
|
+
next if services_config[unit_primitive.name]
|
62
|
+
|
63
|
+
services_config[unit_primitive.name] = generate_service_config([unit_primitive])
|
64
|
+
end
|
65
|
+
|
66
|
+
services_config.sort.to_h
|
67
|
+
end
|
68
|
+
|
69
|
+
def generate_service_config(unit_primitives, basic_unit_primitive = nil)
|
70
|
+
sample_primitive = unit_primitives.find { |up| up.name == basic_unit_primitive } if basic_unit_primitive
|
71
|
+
sample_primitive ||= unit_primitives.first
|
72
|
+
backend_service = sample_primitive&.backend_services&.first
|
73
|
+
|
74
|
+
{
|
75
|
+
'backend' => backend_service&.jwt_aud,
|
76
|
+
'cut_off_date' => sample_primitive&.cut_off_date&.strftime('%Y-%m-%d %H:%M:%S UTC'),
|
77
|
+
'min_gitlab_version' => sample_primitive&.min_gitlab_version,
|
78
|
+
'min_gitlab_version_for_free_access' => sample_primitive&.min_gitlab_version_for_free_access,
|
79
|
+
'bundled_with' => generate_bundled_config(unit_primitives),
|
80
|
+
'license_types' => sample_primitive&.license_types&.map(&:name)
|
81
|
+
}.compact_blank
|
82
|
+
end
|
83
|
+
|
84
|
+
def generate_bundled_config(unit_primitives)
|
85
|
+
unit_primitives.each_with_object({}) do |primitive, bundled|
|
86
|
+
target_groups = primitive.add_ons.any? ? primitive.add_ons.map(&:name) : ['_irrelevant']
|
87
|
+
target_groups.each do |group_name|
|
88
|
+
group_name = group_name.to_s
|
89
|
+
bundled[group_name] ||= { 'unit_primitives' => [] }
|
90
|
+
bundled[group_name]['unit_primitives'] << primitive.name
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gitlab
|
4
|
+
module CloudConnector
|
5
|
+
module Configuration
|
6
|
+
class << self
|
7
|
+
attr_writer :config_dir
|
8
|
+
|
9
|
+
def config_dir
|
10
|
+
@config_dir ||= File.expand_path("../../../config", __dir__).freeze
|
11
|
+
end
|
12
|
+
|
13
|
+
def configure
|
14
|
+
yield self if block_given?
|
15
|
+
end
|
16
|
+
|
17
|
+
def reset!
|
18
|
+
@config_dir = nil
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Gitlab
|
4
|
+
module CloudConnector
|
5
|
+
module DataModel
|
6
|
+
module Associations
|
7
|
+
module ClassMethods
|
8
|
+
# rubocop:disable Naming/PredicateName
|
9
|
+
def has_and_belongs_to_many(name)
|
10
|
+
define_method(name) do
|
11
|
+
instance_variable_get(:"@#{name}_association") ||
|
12
|
+
instance_variable_set(:"@#{name}_association", load_association_records(name))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
# rubocop:enable Naming/PredicateName
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.included(base)
|
19
|
+
base.extend ClassMethods
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def load_association_records(association_name)
|
25
|
+
names = Array(self[association_name])
|
26
|
+
association_class = Gitlab::CloudConnector::DataModels.const_get(association_name.to_s.classify)
|
27
|
+
association_class.select { |record| names.include?(record.name.to_s) }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'associations'
|
4
|
+
require_relative 'data_loader'
|
5
|
+
|
6
|
+
module Gitlab
|
7
|
+
module CloudConnector
|
8
|
+
module DataModel
|
9
|
+
class Base
|
10
|
+
include Associations
|
11
|
+
extend Enumerable
|
12
|
+
|
13
|
+
class << self
|
14
|
+
def model_name
|
15
|
+
name&.demodulize
|
16
|
+
end
|
17
|
+
|
18
|
+
def each(&block)
|
19
|
+
all.each(&block)
|
20
|
+
end
|
21
|
+
|
22
|
+
def find_by_name(name)
|
23
|
+
all.find { |record| record.name.to_sym == name }
|
24
|
+
end
|
25
|
+
|
26
|
+
def all
|
27
|
+
@all ||= data_loader.load!
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def data_loader
|
33
|
+
@data_loader ||= DataLoader.new(self)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def initialize(**opts)
|
38
|
+
opts.each do |key, value|
|
39
|
+
instance_variable_set(:"@#{key}", value)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def [](name)
|
44
|
+
instance_variable_get(:"@#{name}")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'yaml'
|
4
|
+
|
5
|
+
module Gitlab
|
6
|
+
module CloudConnector
|
7
|
+
module DataModel
|
8
|
+
class DataLoader
|
9
|
+
def initialize(model_class)
|
10
|
+
@model_class = model_class
|
11
|
+
end
|
12
|
+
|
13
|
+
def load!
|
14
|
+
Dir.glob(data_files_path).map { |file| load_model_from_file(file) }
|
15
|
+
end
|
16
|
+
|
17
|
+
private
|
18
|
+
|
19
|
+
attr_reader :model_class
|
20
|
+
|
21
|
+
def data_files_path
|
22
|
+
File.join(CloudConnector::Configuration.config_dir, model_class.model_name.tableize, '*.yml')
|
23
|
+
end
|
24
|
+
|
25
|
+
def load_model_from_file(file_path)
|
26
|
+
data = YAML.safe_load(
|
27
|
+
File.read(file_path),
|
28
|
+
permitted_classes: [Time],
|
29
|
+
symbolize_names: true
|
30
|
+
).deep_symbolize_keys!
|
31
|
+
|
32
|
+
model_class.new(**data)
|
33
|
+
rescue StandardError => e
|
34
|
+
raise "Error loading file #{file_path}: #{e.message}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'data_model/base'
|
4
|
+
|
5
|
+
module Gitlab
|
6
|
+
module CloudConnector
|
7
|
+
module DataModels
|
8
|
+
class UnitPrimitive < DataModel::Base
|
9
|
+
has_and_belongs_to_many :backend_services
|
10
|
+
has_and_belongs_to_many :add_ons
|
11
|
+
has_and_belongs_to_many :license_types
|
12
|
+
|
13
|
+
attr_reader :cut_off_date, :deprecated_by_url, :deprecation_message, :description, :documentation_url,
|
14
|
+
:feature_category, :group, :introduced_by_url, :milestone, :min_gitlab_version,
|
15
|
+
:min_gitlab_version_for_free_access, :name, :unit_primitive_issue_url
|
16
|
+
end
|
17
|
+
|
18
|
+
class Service < DataModel::Base
|
19
|
+
has_and_belongs_to_many :unit_primitives
|
20
|
+
|
21
|
+
attr_reader :basic_unit_primitive, :description, :gitlab_realm, :name
|
22
|
+
end
|
23
|
+
|
24
|
+
class BackendService < DataModel::Base
|
25
|
+
attr_reader :description, :group, :jwt_aud, :name, :project_url
|
26
|
+
end
|
27
|
+
|
28
|
+
class LicenseType < DataModel::Base
|
29
|
+
attr_reader :description, :name
|
30
|
+
end
|
31
|
+
|
32
|
+
class AddOn < DataModel::Base
|
33
|
+
attr_reader :description, :name
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitlab-cloud-connector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nikola Milojevic
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -107,7 +107,18 @@ files:
|
|
107
107
|
- config/schemas/add_on_schema.json
|
108
108
|
- config/schemas/backend_service_schema.json
|
109
109
|
- config/schemas/license_type_schema.json
|
110
|
+
- config/schemas/service_schema.json
|
110
111
|
- config/schemas/unit_primitive_schema.json
|
112
|
+
- config/services/agent_quick_actions.yml
|
113
|
+
- config/services/anthropic_proxy.yml
|
114
|
+
- config/services/code_suggestions.yml
|
115
|
+
- config/services/duo_chat.yml
|
116
|
+
- config/services/duo_workflow.yml
|
117
|
+
- config/services/generate_description.yml
|
118
|
+
- config/services/sast.yml
|
119
|
+
- config/services/self_hosted_models.yml
|
120
|
+
- config/services/summarize_new_merge_request.yml
|
121
|
+
- config/services/vertex_ai_proxy.yml
|
111
122
|
- config/unit_primitives/agent_quick_actions.yml
|
112
123
|
- config/unit_primitives/ask_build.yml
|
113
124
|
- config/unit_primitives/ask_commit.yml
|
@@ -120,7 +131,6 @@ files:
|
|
120
131
|
- config/unit_primitives/documentation_search.yml
|
121
132
|
- config/unit_primitives/duo_chat.yml
|
122
133
|
- config/unit_primitives/duo_workflow_execute_workflow.yml
|
123
|
-
- config/unit_primitives/duo_workflow_generate_token.yml
|
124
134
|
- config/unit_primitives/explain_code.yml
|
125
135
|
- config/unit_primitives/explain_vulnerability.yml
|
126
136
|
- config/unit_primitives/fix_code.yml
|
@@ -135,6 +145,7 @@ files:
|
|
135
145
|
- config/unit_primitives/include_local_git_context.yml
|
136
146
|
- config/unit_primitives/include_merge_request_context.yml
|
137
147
|
- config/unit_primitives/include_snippet_context.yml
|
148
|
+
- config/unit_primitives/measure_comment_temperature.yml
|
138
149
|
- config/unit_primitives/observability_all.yml
|
139
150
|
- config/unit_primitives/refactor_code.yml
|
140
151
|
- config/unit_primitives/resolve_vulnerability.yml
|
@@ -144,11 +155,16 @@ files:
|
|
144
155
|
- config/unit_primitives/summarize_comments.yml
|
145
156
|
- config/unit_primitives/summarize_issue_discussions.yml
|
146
157
|
- config/unit_primitives/summarize_merge_request.yml
|
147
|
-
- config/unit_primitives/summarize_new_merge_request.yml
|
148
158
|
- config/unit_primitives/summarize_review.yml
|
149
159
|
- config/unit_primitives/troubleshoot_job.yml
|
150
160
|
- config/unit_primitives/write_tests.yml
|
151
161
|
- lib/cloud_connector.rb
|
162
|
+
- lib/gitlab/cloud_connector/available_services_generator.rb
|
163
|
+
- lib/gitlab/cloud_connector/configuration.rb
|
164
|
+
- lib/gitlab/cloud_connector/data_model/associations.rb
|
165
|
+
- lib/gitlab/cloud_connector/data_model/base.rb
|
166
|
+
- lib/gitlab/cloud_connector/data_model/data_loader.rb
|
167
|
+
- lib/gitlab/cloud_connector/data_models.rb
|
152
168
|
- lib/gitlab/cloud_connector/json_web_token.rb
|
153
169
|
- lib/gitlab/cloud_connector/version.rb
|
154
170
|
homepage: https://gitlab.com/gitlab-org/cloud-connector/gitlab-cloud-connector
|
@@ -1,10 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: duo_workflow_generate_token
|
3
|
-
description: Automate tasks and help increase productivity in your development workflow by using GitLab Duo Workflow.
|
4
|
-
group: group::duo workflow
|
5
|
-
feature_category: duo_workflow
|
6
|
-
documentation_url: https://docs.gitlab.com/ee/user/gitlab_duo/#gitlab-duo-workflow
|
7
|
-
introduced_by_url: https://gitlab.com/gitlab-org/customers-gitlab-com/-/merge_requests/10734
|
8
|
-
unit_primitive_issue_url: https://gitlab.com/gitlab-org/duo-workflow/duo-workflow-service/-/issues/17
|
9
|
-
backend_services:
|
10
|
-
- duo_workflow_service
|
@@ -1,11 +0,0 @@
|
|
1
|
-
---
|
2
|
-
name: summarize_new_merge_request
|
3
|
-
description: Summarizes the changes for a new merge request based on the diff.
|
4
|
-
cut_off_date: 2024-10-17T00:00:00+00:00 # this is the cut_off date used for duo_enterprise rollout (feature requires duo_enterprise add_on in order to be used).
|
5
|
-
group: group::code review
|
6
|
-
feature_category: code_review_workflow
|
7
|
-
introduced_by_url: gitlab.com/gitlab-org/cloud-connector/gitlab-cloud-connector/-/merge_requests/54
|
8
|
-
backend_services:
|
9
|
-
- ai_gateway
|
10
|
-
add_ons:
|
11
|
-
- duo_enterprise
|