archsight 0.1.2 → 0.1.3

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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +26 -5
  3. data/lib/archsight/analysis/executor.rb +112 -0
  4. data/lib/archsight/analysis/result.rb +174 -0
  5. data/lib/archsight/analysis/sandbox.rb +319 -0
  6. data/lib/archsight/analysis.rb +11 -0
  7. data/lib/archsight/annotations/architecture_annotations.rb +2 -2
  8. data/lib/archsight/cli.rb +163 -0
  9. data/lib/archsight/database.rb +6 -2
  10. data/lib/archsight/helpers/analysis_renderer.rb +83 -0
  11. data/lib/archsight/helpers/formatting.rb +95 -0
  12. data/lib/archsight/helpers.rb +20 -4
  13. data/lib/archsight/import/concurrent_progress.rb +341 -0
  14. data/lib/archsight/import/executor.rb +466 -0
  15. data/lib/archsight/import/git_analytics.rb +626 -0
  16. data/lib/archsight/import/handler.rb +263 -0
  17. data/lib/archsight/import/handlers/github.rb +161 -0
  18. data/lib/archsight/import/handlers/gitlab.rb +202 -0
  19. data/lib/archsight/import/handlers/jira_base.rb +189 -0
  20. data/lib/archsight/import/handlers/jira_discover.rb +161 -0
  21. data/lib/archsight/import/handlers/jira_metrics.rb +179 -0
  22. data/lib/archsight/import/handlers/openapi_schema_parser.rb +279 -0
  23. data/lib/archsight/import/handlers/repository.rb +439 -0
  24. data/lib/archsight/import/handlers/rest_api.rb +293 -0
  25. data/lib/archsight/import/handlers/rest_api_index.rb +183 -0
  26. data/lib/archsight/import/progress.rb +91 -0
  27. data/lib/archsight/import/registry.rb +54 -0
  28. data/lib/archsight/import/shared_file_writer.rb +67 -0
  29. data/lib/archsight/import/team_matcher.rb +195 -0
  30. data/lib/archsight/import.rb +14 -0
  31. data/lib/archsight/resources/analysis.rb +91 -0
  32. data/lib/archsight/resources/application_component.rb +2 -2
  33. data/lib/archsight/resources/application_service.rb +12 -12
  34. data/lib/archsight/resources/business_product.rb +12 -12
  35. data/lib/archsight/resources/data_object.rb +1 -1
  36. data/lib/archsight/resources/import.rb +79 -0
  37. data/lib/archsight/resources/technology_artifact.rb +23 -2
  38. data/lib/archsight/version.rb +1 -1
  39. data/lib/archsight/web/api/docs.rb +17 -0
  40. data/lib/archsight/web/api/json_helpers.rb +164 -0
  41. data/lib/archsight/web/api/openapi/spec.yaml +500 -0
  42. data/lib/archsight/web/api/routes.rb +101 -0
  43. data/lib/archsight/web/application.rb +66 -43
  44. data/lib/archsight/web/doc/import.md +458 -0
  45. data/lib/archsight/web/doc/index.md.erb +1 -0
  46. data/lib/archsight/web/public/css/artifact.css +10 -0
  47. data/lib/archsight/web/public/css/graph.css +14 -0
  48. data/lib/archsight/web/public/css/instance.css +489 -0
  49. data/lib/archsight/web/views/api_docs.erb +19 -0
  50. data/lib/archsight/web/views/partials/artifact/_project_estimate.haml +14 -8
  51. data/lib/archsight/web/views/partials/instance/_analysis_detail.haml +74 -0
  52. data/lib/archsight/web/views/partials/instance/_analysis_result.haml +64 -0
  53. data/lib/archsight/web/views/partials/instance/_detail.haml +7 -3
  54. data/lib/archsight/web/views/partials/instance/_import_detail.haml +87 -0
  55. data/lib/archsight/web/views/partials/instance/_relations.haml +4 -4
  56. data/lib/archsight/web/views/partials/layout/_content.haml +4 -0
  57. data/lib/archsight/web/views/partials/layout/_navigation.haml +6 -5
  58. metadata +78 -1
@@ -0,0 +1,87 @@
1
+ - import = db.instance_by_kind(@kind, @instance)
2
+ - return unless import
3
+ - handler = import.annotations['import/handler']
4
+ - enabled = import.annotations['import/enabled'] != 'false'
5
+ - cache_time = import.annotations['import/cacheTime']
6
+ - priority = import.annotations['import/priority']
7
+ - output_path = import.annotations['import/outputPath']
8
+ - description = import.annotations['architecture/description']
9
+ - config = import.annotations.select { |k, _| k.start_with?('import/config/') }
10
+
11
+ %article.import-header
12
+ %header
13
+ %h2
14
+ %i{class: "iconoir-#{import.class.icon} icon-#{import.class.layer}"}
15
+ .instance-title-text
16
+ %span.instance-name= @instance
17
+ %span.instance-kind-subtitle= @kind
18
+ - if handler
19
+ %span.badge.badge-primary= handler
20
+ - unless enabled
21
+ %span.badge.badge-warning Disabled
22
+
23
+ - if description
24
+ .import-description
25
+ != markdown(description)
26
+
27
+ - if import.has_relations?
28
+ - relation_count = import.spec.values.flat_map { |kinds| kinds.is_a?(Hash) ? kinds.values.flatten : [] }.size
29
+ - if relation_count < 50
30
+ .graph-container
31
+ #graphviz.canvas
32
+ != graphviz_svg(create_graph_one(db, @kind, @instance), 'graphviz')
33
+ - else
34
+ %p.graph-too-large
35
+ %i.iconoir-warning-triangle
36
+ Graph too large to display (#{relation_count} relations)
37
+
38
+ %article.import-configuration
39
+ %header
40
+ %h3
41
+ %i.iconoir-settings
42
+ Configuration
43
+ .import-metadata
44
+ - if handler
45
+ %span.import-meta-item
46
+ %i.iconoir-code
47
+ = handler
48
+ - if cache_time
49
+ %span.import-meta-item
50
+ %i.iconoir-timer
51
+ = cache_time
52
+ - if priority
53
+ %span.import-meta-item
54
+ %i.iconoir-sort-down
55
+ Priority: #{priority}
56
+ - if enabled
57
+ %span.import-meta-item.status-enabled
58
+ %i.iconoir-check-circle
59
+ Enabled
60
+ - else
61
+ %span.import-meta-item.status-disabled
62
+ %i.iconoir-xmark-circle
63
+ Disabled
64
+
65
+ - if output_path
66
+ .import-output-path
67
+ %strong Output:
68
+ %code= output_path
69
+
70
+ - unless config.empty?
71
+ %details.import-config-section{open: true}
72
+ %summary
73
+ %i.iconoir-list
74
+ Handler Settings
75
+ %table.import-config-table
76
+ %tbody
77
+ - config.each do |k, v|
78
+ - key_name = k.sub('import/config/', '')
79
+ %tr
80
+ %th{scope: 'row'}= key_name
81
+ %td
82
+ - if v.is_a?(String) && v.start_with?('http', 'git@', 'file://')
83
+ %code= v
84
+ - else
85
+ = v
86
+
87
+ != haml :"partials/instance/_relations", locals: { instance: import }
@@ -14,8 +14,8 @@
14
14
  .relation-group
15
15
  .relation-kind
16
16
  %i{class: "iconoir-#{kind_class&.icon || 'cube'} icon-#{kind_class&.layer || 'technology'}"}
17
- %span= kind
18
- .relation-verb= verb
17
+ %span= "#{kind} (#{instances.size})"
18
+ .relation-verb= "#{verb} (#{instances.size})"
19
19
  .instance-badges
20
20
  - instances.sort_by(&:name).each do |item|
21
21
  %a.badge.badge-info{href: "/kinds/#{item.klass}/instances/#{item.name}"}
@@ -33,8 +33,8 @@
33
33
  .relation-group
34
34
  .relation-kind
35
35
  %i{class: "iconoir-#{kind_class&.icon || 'cube'} icon-#{kind_class&.layer || 'technology'}"}
36
- %span= kind
37
- .relation-verb= verb || "references"
36
+ %span= "#{kind} (#{instances.size})"
37
+ .relation-verb= "#{verb || 'references'} (#{instances.size})"
38
38
  .instance-badges
39
39
  - instances.sort_by(&:name).each do |item|
40
40
  %a.badge.badge-info{ href: "/kinds/#{item.klass}/instances/#{item.name}" }
@@ -15,6 +15,10 @@
15
15
  does not exist.
16
16
  - elsif @kind == "View"
17
17
  != haml :'partials/instance/_view_detail'
18
+ - elsif @kind == "Analysis"
19
+ != haml :'partials/instance/_analysis_detail'
20
+ - elsif @kind == "Import"
21
+ != haml :'partials/instance/_import_detail'
18
22
  - else
19
23
  != haml :'partials/instance/_detail'
20
24
  - elsif @kind && !@instance
@@ -4,11 +4,12 @@
4
4
  %strong
5
5
  %a{href: "/"}
6
6
  %i.iconoir-home
7
- Home
8
- %li
9
- %a{href: "/reload?redirect=#{request.path_info}"}
10
- %i.iconoir-reload-window
11
- Reload
7
+ Archsight
8
+ - if reload_enabled?
9
+ %li
10
+ %a{href: "/reload?redirect=#{request.path_info}"}
11
+ %i.iconoir-reload-window
12
+ Reload
12
13
  %ul
13
14
  %li.search-container
14
15
  %a.search-help{ href: "/doc/index", "hx-get": "/doc/index", "hx-target": ".content", "hx-swap": "innerHTML", "hx-push-url": "true", title: "Help" }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: archsight
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vincent Landgraf
@@ -9,6 +9,20 @@ bindir: exe
9
9
  cert_chain: []
10
10
  date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: dry-inflector
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.0'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: fast-mcp
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -135,6 +149,20 @@ dependencies:
135
149
  - - "~>"
136
150
  - !ruby/object:Gem::Version
137
151
  version: '4.0'
152
+ - !ruby/object:Gem::Dependency
153
+ name: sinatra-contrib
154
+ requirement: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - "~>"
157
+ - !ruby/object:Gem::Version
158
+ version: '4.0'
159
+ type: :runtime
160
+ prerelease: false
161
+ version_requirements: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - "~>"
164
+ - !ruby/object:Gem::Version
165
+ version: '4.0'
138
166
  - !ruby/object:Gem::Dependency
139
167
  name: thor
140
168
  requirement: !ruby/object:Gem::Requirement
@@ -149,6 +177,20 @@ dependencies:
149
177
  - - "~>"
150
178
  - !ruby/object:Gem::Version
151
179
  version: '1.0'
180
+ - !ruby/object:Gem::Dependency
181
+ name: tty-markdown
182
+ requirement: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - "~>"
185
+ - !ruby/object:Gem::Version
186
+ version: '0.7'
187
+ type: :runtime
188
+ prerelease: false
189
+ version_requirements: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '0.7'
152
194
  description: Bringing enterprise architecture into focus. A Ruby gem for modeling,
153
195
  querying, and visualizing enterprise architecture using ArchiMate-inspired YAML
154
196
  resources with GraphViz visualization.
@@ -167,6 +209,10 @@ files:
167
209
  - SECURITY.md
168
210
  - exe/archsight
169
211
  - lib/archsight.rb
212
+ - lib/archsight/analysis.rb
213
+ - lib/archsight/analysis/executor.rb
214
+ - lib/archsight/analysis/result.rb
215
+ - lib/archsight/analysis/sandbox.rb
170
216
  - lib/archsight/annotations/aggregators.rb
171
217
  - lib/archsight/annotations/annotation.rb
172
218
  - lib/archsight/annotations/architecture_annotations.rb
@@ -182,6 +228,26 @@ files:
182
228
  - lib/archsight/documentation.rb
183
229
  - lib/archsight/graph.rb
184
230
  - lib/archsight/helpers.rb
231
+ - lib/archsight/helpers/analysis_renderer.rb
232
+ - lib/archsight/helpers/formatting.rb
233
+ - lib/archsight/import.rb
234
+ - lib/archsight/import/concurrent_progress.rb
235
+ - lib/archsight/import/executor.rb
236
+ - lib/archsight/import/git_analytics.rb
237
+ - lib/archsight/import/handler.rb
238
+ - lib/archsight/import/handlers/github.rb
239
+ - lib/archsight/import/handlers/gitlab.rb
240
+ - lib/archsight/import/handlers/jira_base.rb
241
+ - lib/archsight/import/handlers/jira_discover.rb
242
+ - lib/archsight/import/handlers/jira_metrics.rb
243
+ - lib/archsight/import/handlers/openapi_schema_parser.rb
244
+ - lib/archsight/import/handlers/repository.rb
245
+ - lib/archsight/import/handlers/rest_api.rb
246
+ - lib/archsight/import/handlers/rest_api_index.rb
247
+ - lib/archsight/import/progress.rb
248
+ - lib/archsight/import/registry.rb
249
+ - lib/archsight/import/shared_file_writer.rb
250
+ - lib/archsight/import/team_matcher.rb
185
251
  - lib/archsight/linter.rb
186
252
  - lib/archsight/mcp.rb
187
253
  - lib/archsight/mcp/analyze_resource_tool.rb
@@ -196,6 +262,7 @@ files:
196
262
  - lib/archsight/query/parser.rb
197
263
  - lib/archsight/renderer.rb
198
264
  - lib/archsight/resources.rb
265
+ - lib/archsight/resources/analysis.rb
199
266
  - lib/archsight/resources/application_component.rb
200
267
  - lib/archsight/resources/application_interface.rb
201
268
  - lib/archsight/resources/application_service.rb
@@ -207,6 +274,7 @@ files:
207
274
  - lib/archsight/resources/business_requirement.rb
208
275
  - lib/archsight/resources/compliance_evidence.rb
209
276
  - lib/archsight/resources/data_object.rb
277
+ - lib/archsight/resources/import.rb
210
278
  - lib/archsight/resources/motivation_goal.rb
211
279
  - lib/archsight/resources/motivation_outcome.rb
212
280
  - lib/archsight/resources/motivation_stakeholder.rb
@@ -219,10 +287,15 @@ files:
219
287
  - lib/archsight/resources/view.rb
220
288
  - lib/archsight/template.rb
221
289
  - lib/archsight/version.rb
290
+ - lib/archsight/web/api/docs.rb
291
+ - lib/archsight/web/api/json_helpers.rb
292
+ - lib/archsight/web/api/openapi/spec.yaml
293
+ - lib/archsight/web/api/routes.rb
222
294
  - lib/archsight/web/application.rb
223
295
  - lib/archsight/web/doc/archimate.md
224
296
  - lib/archsight/web/doc/computed_annotations.md
225
297
  - lib/archsight/web/doc/icons.md
298
+ - lib/archsight/web/doc/import.md
226
299
  - lib/archsight/web/doc/index.md.erb
227
300
  - lib/archsight/web/doc/modeling.md
228
301
  - lib/archsight/web/doc/search.md
@@ -248,6 +321,7 @@ files:
248
321
  - lib/archsight/web/public/js/sparkline.js
249
322
  - lib/archsight/web/public/js/svg-pan-zoom.min.js
250
323
  - lib/archsight/web/public/js/svg-zoom-controls.js
324
+ - lib/archsight/web/views/api_docs.erb
251
325
  - lib/archsight/web/views/index.haml
252
326
  - lib/archsight/web/views/partials/artifact/_activity.haml
253
327
  - lib/archsight/web/views/partials/artifact/_agentic.haml
@@ -266,8 +340,11 @@ files:
266
340
  - lib/archsight/web/views/partials/components/_owner.haml
267
341
  - lib/archsight/web/views/partials/components/_repositories.haml
268
342
  - lib/archsight/web/views/partials/components/_status.haml
343
+ - lib/archsight/web/views/partials/instance/_analysis_detail.haml
344
+ - lib/archsight/web/views/partials/instance/_analysis_result.haml
269
345
  - lib/archsight/web/views/partials/instance/_detail.haml
270
346
  - lib/archsight/web/views/partials/instance/_graph.haml
347
+ - lib/archsight/web/views/partials/instance/_import_detail.haml
271
348
  - lib/archsight/web/views/partials/instance/_list.haml
272
349
  - lib/archsight/web/views/partials/instance/_relations.haml
273
350
  - lib/archsight/web/views/partials/instance/_requirements.haml