gitlab-cloud-connector 0.2.2 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|