archsight 0.1.4 → 0.2.0
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/Dockerfile +5 -4
- data/README.md +44 -59
- data/chart/archsight/Chart.yaml +6 -0
- data/chart/archsight/README.md +3 -0
- data/chart/archsight/templates/NOTES.txt +22 -0
- data/chart/archsight/templates/_helpers.tpl +62 -0
- data/chart/archsight/templates/deployment.yaml +114 -0
- data/chart/archsight/templates/ingress.yaml +56 -0
- data/chart/archsight/templates/resources-configmap.yaml +10 -0
- data/chart/archsight/templates/resources-pvc.yaml +23 -0
- data/chart/archsight/templates/service.yaml +15 -0
- data/chart/archsight/templates/serviceaccount.yaml +12 -0
- data/chart/archsight/values.yaml +162 -0
- data/docs/architecture.md +39 -0
- data/docs/docker.md +49 -0
- data/{lib/archsight/web/doc → docs}/import.md +10 -2
- data/{lib/archsight/web/doc → docs}/index.md.erb +3 -1
- data/docs/kubernetes.md +149 -0
- data/docs/licenses.md +307 -0
- data/lib/archsight/analysis/executor.rb +0 -10
- data/lib/archsight/annotations/annotation.rb +85 -36
- data/lib/archsight/annotations/architecture_annotations.rb +1 -34
- data/lib/archsight/annotations/computed.rb +1 -1
- data/lib/archsight/annotations/generated_annotations.rb +6 -3
- data/lib/archsight/annotations/git_annotations.rb +8 -4
- data/lib/archsight/annotations/interface_annotations.rb +35 -0
- data/lib/archsight/cli.rb +4 -2
- data/lib/archsight/editor/content_hasher.rb +37 -0
- data/lib/archsight/editor/file_writer.rb +79 -0
- data/lib/archsight/editor.rb +237 -0
- data/lib/archsight/graph.rb +1 -51
- data/lib/archsight/helpers.rb +0 -20
- data/lib/archsight/import/handlers/github.rb +16 -6
- data/lib/archsight/import/handlers/gitlab.rb +28 -10
- data/lib/archsight/import/handlers/repository.rb +56 -6
- data/lib/archsight/import/handlers/rest_api.rb +13 -1
- data/lib/archsight/import/license_analyzer.rb +650 -0
- data/lib/archsight/import/team_matcher.rb +111 -61
- data/lib/archsight/linter.rb +1 -1
- data/lib/archsight/mcp/base.rb +11 -0
- data/lib/archsight/mcp/execute_analysis_tool.rb +100 -0
- data/lib/archsight/mcp.rb +1 -0
- data/lib/archsight/renderer.rb +4 -4
- data/lib/archsight/resources/analysis.rb +1 -17
- data/lib/archsight/resources/application_interface.rb +1 -5
- data/lib/archsight/resources/base.rb +14 -14
- data/lib/archsight/resources/business_actor.rb +18 -3
- data/lib/archsight/resources/technology_artifact.rb +48 -0
- data/lib/archsight/resources/technology_interface.rb +1 -1
- data/lib/archsight/resources/technology_service.rb +5 -0
- data/lib/archsight/version.rb +1 -1
- data/lib/archsight/web/api/docs.rb +37 -2
- data/lib/archsight/web/api/json_helpers.rb +79 -13
- data/lib/archsight/web/api/openapi/spec.yaml +699 -0
- data/lib/archsight/web/api/routes.rb +23 -0
- data/lib/archsight/web/application.rb +48 -128
- data/lib/archsight/web/editor/form_builder.rb +100 -0
- data/lib/archsight/web/editor/helpers.rb +150 -0
- data/lib/archsight/web/editor/routes.rb +166 -0
- data/lib/archsight/web/public/vue/ApiDocsPage-B1RqTNqh.js +1 -0
- data/lib/archsight/web/public/vue/ApiDocsPage-DhNTOH4o.css +1 -0
- data/lib/archsight/web/public/vue/DocPage-DzwBgBd4.js +1 -0
- data/lib/archsight/web/public/vue/EditorPage-D_miHSv4.js +34 -0
- data/lib/archsight/web/public/vue/EditorPage-Dq0MuTnp.css +1 -0
- data/lib/archsight/web/public/vue/ErrorPage-CQQtPey3.js +2 -0
- data/lib/archsight/web/public/vue/ErrorPage-CwPT3JUr.css +1 -0
- data/lib/archsight/web/public/vue/GraphView-DRcIqAiR.css +1 -0
- data/lib/archsight/web/public/vue/GraphView-T9jFH_qg.js +1 -0
- data/lib/archsight/web/public/vue/InstanceRouter-1Sm-CRhf.js +2 -0
- data/lib/archsight/web/public/vue/InstanceRouter-BJkDRXZY.css +1 -0
- data/lib/archsight/web/public/vue/KindList-JA_L_-Cz.js +1 -0
- data/lib/archsight/web/public/vue/ResourceList-8iqavWdg.js +1 -0
- data/lib/archsight/web/public/vue/ResourceList-DP-z-j71.css +1 -0
- data/lib/archsight/web/public/vue/SearchResults-BGHbg48-.css +1 -0
- data/lib/archsight/web/public/vue/SearchResults-BdgFeHcm.js +1 -0
- data/lib/archsight/web/public/vue/_basePickBy-CVgieyx-.js +1 -0
- data/lib/archsight/web/public/vue/_baseUniq-BNfrOSaP.js +1 -0
- data/lib/archsight/web/public/vue/architectureDiagram-VXUJARFQ-CJXNpTr5.js +36 -0
- data/lib/archsight/web/public/vue/blockDiagram-VD42YOAC-B5488Hes.js +122 -0
- data/lib/archsight/web/public/vue/c4Diagram-YG6GDRKO-eYY3hprM.js +10 -0
- data/lib/archsight/web/public/vue/chunk-4BX2VUAB-ZoXeL4D1.js +1 -0
- data/lib/archsight/web/public/vue/chunk-55IACEB6-rNtQYnu_.js +1 -0
- data/lib/archsight/web/public/vue/chunk-B4BG7PRW-DolAeVV9.js +165 -0
- data/lib/archsight/web/public/vue/chunk-DI55MBZ5-DnN0f_hj.js +220 -0
- data/lib/archsight/web/public/vue/chunk-FMBD7UC4-BQWOCMuR.js +15 -0
- data/lib/archsight/web/public/vue/chunk-QN33PNHL-DId301Kb.js +1 -0
- data/lib/archsight/web/public/vue/chunk-QZHKN3VN-xbY0NLgv.js +1 -0
- data/lib/archsight/web/public/vue/chunk-TZMSLE5B-CgF9_37b.js +1 -0
- data/lib/archsight/web/public/vue/classDiagram-2ON5EDUG-jGlvI-Za.js +1 -0
- data/lib/archsight/web/public/vue/classDiagram-v2-WZHVMYZB-jGlvI-Za.js +1 -0
- data/lib/archsight/web/public/vue/clone-6iRPe1-W.js +1 -0
- data/lib/archsight/web/public/vue/cose-bilkent-S5V4N54A-CB9Zfu50.js +1 -0
- data/lib/archsight/web/public/vue/cytoscape.esm-5J0xJHOV.js +321 -0
- data/lib/archsight/web/public/vue/dagre-6UL2VRFP-BqkmE-LI.js +4 -0
- data/lib/archsight/web/public/vue/diagram-PSM6KHXK-CKBfqtw3.js +24 -0
- data/lib/archsight/web/public/vue/diagram-QEK2KX5R-B78rOlvK.js +43 -0
- data/lib/archsight/web/public/vue/diagram-S2PKOQOG-BlXC6Cia.js +24 -0
- data/lib/archsight/web/public/vue/erDiagram-Q2GNP2WA-BnliyziJ.js +60 -0
- data/lib/archsight/web/public/vue/flowDiagram-NV44I4VS-wuqPowTd.js +162 -0
- data/lib/archsight/web/public/vue/ganttDiagram-JELNMOA3-GSffAIH3.js +267 -0
- data/lib/archsight/web/public/vue/gitGraphDiagram-V2S2FVAM-OA7VyugW.js +65 -0
- data/lib/archsight/web/public/vue/graph-BXHAtA0S.js +1 -0
- data/lib/archsight/web/public/vue/graphviz-CJms5bxZ.js +13 -0
- data/lib/archsight/web/public/vue/index-DsEsN0_K.js +2 -0
- data/lib/archsight/web/public/vue/index-Tiu4C-Sb.css +1 -0
- data/lib/archsight/web/public/vue/infoDiagram-HS3SLOUP-nlVe2qgv.js +2 -0
- data/lib/archsight/web/public/vue/journeyDiagram-XKPGCS4Q-CtTIcKwf.js +139 -0
- data/lib/archsight/web/public/vue/kanban-definition-3W4ZIXB7-837KX0sW.js +89 -0
- data/lib/archsight/web/public/vue/katex-C-M49wc6.js +261 -0
- data/lib/archsight/web/public/vue/layout-DtE0QdL6.js +1 -0
- data/lib/archsight/web/public/vue/mermaid-DpPHPFQh.js +250 -0
- data/lib/archsight/web/public/vue/mindmap-definition-VGOIOE7T-9gLF2AoY.js +68 -0
- data/lib/archsight/web/public/vue/pieDiagram-ADFJNKIX-CyCNgw3u.js +30 -0
- data/lib/archsight/web/public/vue/quadrantDiagram-AYHSOK5B-CkPh8g02.js +7 -0
- data/lib/archsight/web/public/vue/requirementDiagram-UZGBJVZJ-Dkt6OSlY.js +64 -0
- data/lib/archsight/web/public/vue/sankeyDiagram-TZEHDZUN-BqprTk8x.js +10 -0
- data/lib/archsight/web/public/vue/sequenceDiagram-WL72ISMW-CTmTe1FQ.js +145 -0
- data/lib/archsight/web/public/vue/stateDiagram-FKZM4ZOC-CphqmkEU.js +1 -0
- data/lib/archsight/web/public/vue/stateDiagram-v2-4FDKWEC3-CxaDW5sW.js +1 -0
- data/lib/archsight/web/public/vue/timeline-definition-IT6M3QCI-CSQUZkyE.js +61 -0
- data/lib/archsight/web/public/vue/treemap-GDKQZRPO-DTojm7Yr.js +162 -0
- data/lib/archsight/web/public/{css/graph.css → vue/useGraphviz-A5s4h76R.js} +2 -1
- data/lib/archsight/web/public/vue/useHighlight-C6Kb5G3l.js +10 -0
- data/lib/archsight/web/public/vue/useMermaid-DqxTrLRB.js +1 -0
- data/lib/archsight/web/public/vue/usePanZoom-BybZ_rfh.js +11 -0
- data/lib/archsight/web/public/vue/xychartDiagram-PRI3JC2R-B1ZJZtDC.js +7 -0
- data/lib/archsight/web/public/vue.html +15 -0
- data/media/artifact.jpg +0 -0
- data/media/service.jpg +0 -0
- metadata +104 -77
- data/lib/archsight/web/public/css/artifact.css +0 -995
- data/lib/archsight/web/public/css/base.css +0 -201
- data/lib/archsight/web/public/css/highlight.min.css +0 -10
- data/lib/archsight/web/public/css/iconoir.css +0 -22
- data/lib/archsight/web/public/css/instance.css +0 -818
- data/lib/archsight/web/public/css/layout.css +0 -421
- data/lib/archsight/web/public/css/mermaid-layers.css +0 -188
- data/lib/archsight/web/public/css/pico.min.css +0 -4
- data/lib/archsight/web/public/img/archimate.png +0 -0
- data/lib/archsight/web/public/img/togaf-high-level.png +0 -0
- data/lib/archsight/web/public/js/graph-zoom.js +0 -18
- data/lib/archsight/web/public/js/highlight.min.js +0 -3899
- data/lib/archsight/web/public/js/htmx.min.js +0 -1
- data/lib/archsight/web/public/js/mermaid-init.js +0 -88
- data/lib/archsight/web/public/js/mermaid.min.js +0 -2811
- data/lib/archsight/web/public/js/sparkline.js +0 -42
- data/lib/archsight/web/public/js/svg-pan-zoom.min.js +0 -3
- data/lib/archsight/web/public/js/svg-zoom-controls.js +0 -93
- data/lib/archsight/web/views/api_docs.erb +0 -19
- data/lib/archsight/web/views/index.haml +0 -12
- data/lib/archsight/web/views/partials/artifact/_activity.haml +0 -55
- data/lib/archsight/web/views/partials/artifact/_agentic.haml +0 -25
- data/lib/archsight/web/views/partials/artifact/_deployment.haml +0 -29
- data/lib/archsight/web/views/partials/artifact/_git_info.haml +0 -16
- data/lib/archsight/web/views/partials/artifact/_language_stats.haml +0 -53
- data/lib/archsight/web/views/partials/artifact/_links.haml +0 -24
- data/lib/archsight/web/views/partials/artifact/_project_estimate.haml +0 -32
- data/lib/archsight/web/views/partials/artifact/_repositories.haml +0 -55
- data/lib/archsight/web/views/partials/artifact/_team.haml +0 -83
- data/lib/archsight/web/views/partials/artifact/_workflow.haml +0 -69
- data/lib/archsight/web/views/partials/components/_activity.haml +0 -37
- data/lib/archsight/web/views/partials/components/_git.haml +0 -17
- data/lib/archsight/web/views/partials/components/_jira.haml +0 -18
- data/lib/archsight/web/views/partials/components/_languages.haml +0 -29
- data/lib/archsight/web/views/partials/components/_owner.haml +0 -15
- data/lib/archsight/web/views/partials/components/_repositories.haml +0 -37
- data/lib/archsight/web/views/partials/components/_status.haml +0 -23
- data/lib/archsight/web/views/partials/instance/_analysis_detail.haml +0 -74
- data/lib/archsight/web/views/partials/instance/_analysis_result.haml +0 -64
- data/lib/archsight/web/views/partials/instance/_detail.haml +0 -103
- data/lib/archsight/web/views/partials/instance/_graph.haml +0 -6
- data/lib/archsight/web/views/partials/instance/_import_detail.haml +0 -87
- data/lib/archsight/web/views/partials/instance/_list.haml +0 -84
- data/lib/archsight/web/views/partials/instance/_relations.haml +0 -43
- data/lib/archsight/web/views/partials/instance/_requirements.haml +0 -41
- data/lib/archsight/web/views/partials/instance/_view_detail.haml +0 -57
- data/lib/archsight/web/views/partials/layout/_content.haml +0 -44
- data/lib/archsight/web/views/partials/layout/_error.haml +0 -22
- data/lib/archsight/web/views/partials/layout/_head.haml +0 -24
- data/lib/archsight/web/views/partials/layout/_navigation.haml +0 -21
- data/lib/archsight/web/views/partials/layout/_sidebar.haml +0 -27
- data/lib/archsight/web/views/search.haml +0 -53
- /data/{lib/archsight/web/doc → docs}/archimate.md +0 -0
- /data/{lib/archsight/web/doc → docs}/computed_annotations.md +0 -0
- /data/{lib/archsight/web/doc → docs}/icons.md +0 -0
- /data/{lib/archsight/web/doc → docs}/modeling.md +0 -0
- /data/{lib/archsight/web/doc → docs}/search.md +0 -0
- /data/{lib/archsight/web/doc → docs}/togaf.md +0 -0
- /data/{lib/archsight/web/doc → docs}/tool.md +0 -0
|
@@ -99,6 +99,33 @@ paths:
|
|
|
99
99
|
schema:
|
|
100
100
|
$ref: '#/components/schemas/Error'
|
|
101
101
|
|
|
102
|
+
/api/v1/kinds/{kind}/filters:
|
|
103
|
+
get:
|
|
104
|
+
summary: Get filterable annotations for a kind
|
|
105
|
+
description: |
|
|
106
|
+
Returns the list of annotations that can be used as filters for a given kind,
|
|
107
|
+
along with their available values.
|
|
108
|
+
operationId: getKindFilters
|
|
109
|
+
tags:
|
|
110
|
+
- Kinds
|
|
111
|
+
parameters:
|
|
112
|
+
- $ref: '#/components/parameters/kind'
|
|
113
|
+
responses:
|
|
114
|
+
'200':
|
|
115
|
+
description: Array of filter definitions
|
|
116
|
+
content:
|
|
117
|
+
application/json:
|
|
118
|
+
schema:
|
|
119
|
+
type: array
|
|
120
|
+
items:
|
|
121
|
+
$ref: '#/components/schemas/Filter'
|
|
122
|
+
'404':
|
|
123
|
+
description: Kind not found
|
|
124
|
+
content:
|
|
125
|
+
application/json:
|
|
126
|
+
schema:
|
|
127
|
+
$ref: '#/components/schemas/Error'
|
|
128
|
+
|
|
102
129
|
/api/v1/kinds/{kind}/instances/{name}:
|
|
103
130
|
get:
|
|
104
131
|
summary: Get instance details
|
|
@@ -126,6 +153,30 @@ paths:
|
|
|
126
153
|
schema:
|
|
127
154
|
$ref: '#/components/schemas/Error'
|
|
128
155
|
|
|
156
|
+
/api/v1/kinds/Analysis/instances/{name}/execute:
|
|
157
|
+
post:
|
|
158
|
+
summary: Execute an analysis
|
|
159
|
+
description: |
|
|
160
|
+
Runs the named Analysis instance and returns the result with typed sections.
|
|
161
|
+
operationId: executeAnalysis
|
|
162
|
+
tags:
|
|
163
|
+
- Instances
|
|
164
|
+
parameters:
|
|
165
|
+
- $ref: '#/components/parameters/name'
|
|
166
|
+
responses:
|
|
167
|
+
'200':
|
|
168
|
+
description: Analysis execution result
|
|
169
|
+
content:
|
|
170
|
+
application/json:
|
|
171
|
+
schema:
|
|
172
|
+
$ref: '#/components/schemas/AnalysisResult'
|
|
173
|
+
'404':
|
|
174
|
+
description: Analysis not found
|
|
175
|
+
content:
|
|
176
|
+
application/json:
|
|
177
|
+
schema:
|
|
178
|
+
$ref: '#/components/schemas/Error'
|
|
179
|
+
|
|
129
180
|
/api/v1/search:
|
|
130
181
|
get:
|
|
131
182
|
summary: Search instances
|
|
@@ -175,6 +226,344 @@ paths:
|
|
|
175
226
|
schema:
|
|
176
227
|
$ref: '#/components/schemas/QueryError'
|
|
177
228
|
|
|
229
|
+
/dot:
|
|
230
|
+
get:
|
|
231
|
+
summary: Get full architecture graph as DOT
|
|
232
|
+
description: Returns the complete architecture graph in GraphViz DOT format.
|
|
233
|
+
operationId: getFullDot
|
|
234
|
+
tags:
|
|
235
|
+
- Graph
|
|
236
|
+
responses:
|
|
237
|
+
'200':
|
|
238
|
+
description: GraphViz DOT source
|
|
239
|
+
content:
|
|
240
|
+
text/plain:
|
|
241
|
+
schema:
|
|
242
|
+
type: string
|
|
243
|
+
|
|
244
|
+
/kinds/{kind}/instances/{name}/dot:
|
|
245
|
+
get:
|
|
246
|
+
summary: Get instance graph as DOT
|
|
247
|
+
description: Returns the GraphViz DOT graph centered on a specific instance and its relations.
|
|
248
|
+
operationId: getInstanceDot
|
|
249
|
+
tags:
|
|
250
|
+
- Graph
|
|
251
|
+
parameters:
|
|
252
|
+
- $ref: '#/components/parameters/kind'
|
|
253
|
+
- name: name
|
|
254
|
+
in: path
|
|
255
|
+
required: true
|
|
256
|
+
description: Instance name
|
|
257
|
+
schema:
|
|
258
|
+
type: string
|
|
259
|
+
responses:
|
|
260
|
+
'200':
|
|
261
|
+
description: GraphViz DOT source
|
|
262
|
+
content:
|
|
263
|
+
text/plain:
|
|
264
|
+
schema:
|
|
265
|
+
type: string
|
|
266
|
+
|
|
267
|
+
/api/v1/docs/{filename}:
|
|
268
|
+
get:
|
|
269
|
+
summary: Get documentation page
|
|
270
|
+
description: Returns rendered HTML from a static markdown or ERB documentation file.
|
|
271
|
+
operationId: getDocPage
|
|
272
|
+
tags:
|
|
273
|
+
- Documentation
|
|
274
|
+
parameters:
|
|
275
|
+
- name: filename
|
|
276
|
+
in: path
|
|
277
|
+
required: true
|
|
278
|
+
description: Documentation filename (without extension)
|
|
279
|
+
schema:
|
|
280
|
+
type: string
|
|
281
|
+
responses:
|
|
282
|
+
'200':
|
|
283
|
+
description: Rendered HTML documentation
|
|
284
|
+
content:
|
|
285
|
+
text/html:
|
|
286
|
+
schema:
|
|
287
|
+
type: string
|
|
288
|
+
'404':
|
|
289
|
+
description: Documentation not found
|
|
290
|
+
|
|
291
|
+
/api/v1/docs/resources/{filename}:
|
|
292
|
+
get:
|
|
293
|
+
summary: Get auto-generated resource documentation
|
|
294
|
+
description: Returns rendered HTML documentation auto-generated for a resource kind.
|
|
295
|
+
operationId: getResourceDoc
|
|
296
|
+
tags:
|
|
297
|
+
- Documentation
|
|
298
|
+
parameters:
|
|
299
|
+
- name: filename
|
|
300
|
+
in: path
|
|
301
|
+
required: true
|
|
302
|
+
description: Resource kind in snake_case (e.g., technology_artifact)
|
|
303
|
+
schema:
|
|
304
|
+
type: string
|
|
305
|
+
responses:
|
|
306
|
+
'200':
|
|
307
|
+
description: Rendered HTML documentation
|
|
308
|
+
content:
|
|
309
|
+
text/html:
|
|
310
|
+
schema:
|
|
311
|
+
type: string
|
|
312
|
+
'404':
|
|
313
|
+
description: Documentation not found
|
|
314
|
+
|
|
315
|
+
/reload:
|
|
316
|
+
get:
|
|
317
|
+
summary: Reload resources from disk
|
|
318
|
+
description: |
|
|
319
|
+
Triggers a reload of all YAML resources from disk.
|
|
320
|
+
Only works if the server was started with reload enabled (default in development).
|
|
321
|
+
Returns JSON when Accept header includes application/json, otherwise redirects.
|
|
322
|
+
operationId: reload
|
|
323
|
+
tags:
|
|
324
|
+
- Operations
|
|
325
|
+
responses:
|
|
326
|
+
'200':
|
|
327
|
+
description: Reload successful
|
|
328
|
+
content:
|
|
329
|
+
application/json:
|
|
330
|
+
schema:
|
|
331
|
+
type: object
|
|
332
|
+
properties:
|
|
333
|
+
ok:
|
|
334
|
+
type: boolean
|
|
335
|
+
example: true
|
|
336
|
+
'404':
|
|
337
|
+
description: Reload is disabled on this server
|
|
338
|
+
'422':
|
|
339
|
+
description: Resource error during reload
|
|
340
|
+
content:
|
|
341
|
+
application/json:
|
|
342
|
+
schema:
|
|
343
|
+
$ref: '#/components/schemas/ReloadError'
|
|
344
|
+
|
|
345
|
+
/api/v1/editor/kinds/{kind}/form:
|
|
346
|
+
get:
|
|
347
|
+
summary: Get form metadata for creating a new resource
|
|
348
|
+
description: Returns field definitions, relation options, and instance lists for the editor form.
|
|
349
|
+
operationId: getEditorNewForm
|
|
350
|
+
tags:
|
|
351
|
+
- Editor
|
|
352
|
+
parameters:
|
|
353
|
+
- $ref: '#/components/parameters/kind'
|
|
354
|
+
responses:
|
|
355
|
+
'200':
|
|
356
|
+
description: Form metadata for resource creation
|
|
357
|
+
content:
|
|
358
|
+
application/json:
|
|
359
|
+
schema:
|
|
360
|
+
$ref: '#/components/schemas/EditorFormMetadata'
|
|
361
|
+
'404':
|
|
362
|
+
description: Kind not found
|
|
363
|
+
|
|
364
|
+
/api/v1/editor/kinds/{kind}/instances/{name}/form:
|
|
365
|
+
get:
|
|
366
|
+
summary: Get form metadata for editing an existing resource
|
|
367
|
+
description: |
|
|
368
|
+
Returns field definitions, relation options, and current values for editing.
|
|
369
|
+
Includes content_hash for optimistic locking on save.
|
|
370
|
+
operationId: getEditorEditForm
|
|
371
|
+
tags:
|
|
372
|
+
- Editor
|
|
373
|
+
parameters:
|
|
374
|
+
- $ref: '#/components/parameters/kind'
|
|
375
|
+
- $ref: '#/components/parameters/name'
|
|
376
|
+
responses:
|
|
377
|
+
'200':
|
|
378
|
+
description: Form metadata with current resource values
|
|
379
|
+
content:
|
|
380
|
+
application/json:
|
|
381
|
+
schema:
|
|
382
|
+
allOf:
|
|
383
|
+
- $ref: '#/components/schemas/EditorFormMetadata'
|
|
384
|
+
- type: object
|
|
385
|
+
properties:
|
|
386
|
+
mode:
|
|
387
|
+
type: string
|
|
388
|
+
enum: [edit]
|
|
389
|
+
name:
|
|
390
|
+
type: string
|
|
391
|
+
description: Current instance name
|
|
392
|
+
annotations:
|
|
393
|
+
type: object
|
|
394
|
+
additionalProperties: true
|
|
395
|
+
description: Current annotation values
|
|
396
|
+
relations:
|
|
397
|
+
type: array
|
|
398
|
+
items:
|
|
399
|
+
type: object
|
|
400
|
+
properties:
|
|
401
|
+
verb:
|
|
402
|
+
type: string
|
|
403
|
+
kind:
|
|
404
|
+
type: string
|
|
405
|
+
name:
|
|
406
|
+
type: string
|
|
407
|
+
path_ref:
|
|
408
|
+
type: string
|
|
409
|
+
description: "File path and line (e.g., path/to/file.yaml:5)"
|
|
410
|
+
content_hash:
|
|
411
|
+
type: string
|
|
412
|
+
description: Hash for optimistic locking
|
|
413
|
+
'404':
|
|
414
|
+
description: Kind or instance not found
|
|
415
|
+
|
|
416
|
+
/api/v1/editor/kinds/{kind}/generate:
|
|
417
|
+
post:
|
|
418
|
+
summary: Generate YAML for a new resource
|
|
419
|
+
description: Validates form input and generates YAML for a new resource.
|
|
420
|
+
operationId: editorGenerateNew
|
|
421
|
+
tags:
|
|
422
|
+
- Editor
|
|
423
|
+
parameters:
|
|
424
|
+
- $ref: '#/components/parameters/kind'
|
|
425
|
+
requestBody:
|
|
426
|
+
required: true
|
|
427
|
+
content:
|
|
428
|
+
application/json:
|
|
429
|
+
schema:
|
|
430
|
+
$ref: '#/components/schemas/GenerateRequest'
|
|
431
|
+
responses:
|
|
432
|
+
'200':
|
|
433
|
+
description: Generated YAML or validation errors
|
|
434
|
+
content:
|
|
435
|
+
application/json:
|
|
436
|
+
schema:
|
|
437
|
+
$ref: '#/components/schemas/GenerateResponse'
|
|
438
|
+
'404':
|
|
439
|
+
description: Kind not found
|
|
440
|
+
|
|
441
|
+
/api/v1/editor/kinds/{kind}/instances/{name}/generate:
|
|
442
|
+
post:
|
|
443
|
+
summary: Generate YAML for an existing resource edit
|
|
444
|
+
description: Validates form input and generates YAML for editing an existing resource.
|
|
445
|
+
operationId: editorGenerateEdit
|
|
446
|
+
tags:
|
|
447
|
+
- Editor
|
|
448
|
+
parameters:
|
|
449
|
+
- $ref: '#/components/parameters/kind'
|
|
450
|
+
- $ref: '#/components/parameters/name'
|
|
451
|
+
requestBody:
|
|
452
|
+
required: true
|
|
453
|
+
content:
|
|
454
|
+
application/json:
|
|
455
|
+
schema:
|
|
456
|
+
$ref: '#/components/schemas/GenerateRequest'
|
|
457
|
+
responses:
|
|
458
|
+
'200':
|
|
459
|
+
description: Generated YAML with path reference
|
|
460
|
+
content:
|
|
461
|
+
application/json:
|
|
462
|
+
schema:
|
|
463
|
+
$ref: '#/components/schemas/GenerateResponse'
|
|
464
|
+
'404':
|
|
465
|
+
description: Kind not found
|
|
466
|
+
|
|
467
|
+
/api/v1/editor/kinds/{kind}/instances/{name}/save:
|
|
468
|
+
post:
|
|
469
|
+
summary: Save YAML to file
|
|
470
|
+
description: |
|
|
471
|
+
Writes generated YAML back to the resource file on disk.
|
|
472
|
+
Requires the server to be started with --inline-edit flag.
|
|
473
|
+
Uses optimistic locking via content_hash to detect conflicts.
|
|
474
|
+
operationId: editorSave
|
|
475
|
+
tags:
|
|
476
|
+
- Editor
|
|
477
|
+
parameters:
|
|
478
|
+
- $ref: '#/components/parameters/kind'
|
|
479
|
+
- $ref: '#/components/parameters/name'
|
|
480
|
+
requestBody:
|
|
481
|
+
required: true
|
|
482
|
+
content:
|
|
483
|
+
application/json:
|
|
484
|
+
schema:
|
|
485
|
+
$ref: '#/components/schemas/SaveRequest'
|
|
486
|
+
responses:
|
|
487
|
+
'200':
|
|
488
|
+
description: Save successful
|
|
489
|
+
content:
|
|
490
|
+
application/json:
|
|
491
|
+
schema:
|
|
492
|
+
$ref: '#/components/schemas/SaveResponse'
|
|
493
|
+
'400':
|
|
494
|
+
description: Write error
|
|
495
|
+
content:
|
|
496
|
+
application/json:
|
|
497
|
+
schema:
|
|
498
|
+
$ref: '#/components/schemas/SaveResponse'
|
|
499
|
+
'403':
|
|
500
|
+
description: Inline edit is disabled
|
|
501
|
+
content:
|
|
502
|
+
application/json:
|
|
503
|
+
schema:
|
|
504
|
+
$ref: '#/components/schemas/SaveResponse'
|
|
505
|
+
'404':
|
|
506
|
+
description: Instance not found
|
|
507
|
+
'409':
|
|
508
|
+
description: Content conflict (file changed since last read)
|
|
509
|
+
content:
|
|
510
|
+
application/json:
|
|
511
|
+
schema:
|
|
512
|
+
$ref: '#/components/schemas/SaveResponse'
|
|
513
|
+
|
|
514
|
+
/api/v1/editor/kinds/{kind}/instances:
|
|
515
|
+
get:
|
|
516
|
+
summary: List instance names for a kind
|
|
517
|
+
description: Returns a sorted array of instance name strings for the given kind.
|
|
518
|
+
operationId: editorListInstances
|
|
519
|
+
tags:
|
|
520
|
+
- Editor
|
|
521
|
+
parameters:
|
|
522
|
+
- $ref: '#/components/parameters/kind'
|
|
523
|
+
responses:
|
|
524
|
+
'200':
|
|
525
|
+
description: Array of instance name strings
|
|
526
|
+
content:
|
|
527
|
+
application/json:
|
|
528
|
+
schema:
|
|
529
|
+
type: array
|
|
530
|
+
items:
|
|
531
|
+
type: string
|
|
532
|
+
'404':
|
|
533
|
+
description: Kind not found
|
|
534
|
+
|
|
535
|
+
/api/v1/editor/relation-kinds:
|
|
536
|
+
get:
|
|
537
|
+
summary: Get target kinds for a relation verb
|
|
538
|
+
description: Returns the valid target kinds for a given resource kind and relation verb.
|
|
539
|
+
operationId: editorRelationKinds
|
|
540
|
+
tags:
|
|
541
|
+
- Editor
|
|
542
|
+
parameters:
|
|
543
|
+
- name: kind
|
|
544
|
+
in: query
|
|
545
|
+
required: true
|
|
546
|
+
description: Source resource kind
|
|
547
|
+
schema:
|
|
548
|
+
type: string
|
|
549
|
+
- name: verb
|
|
550
|
+
in: query
|
|
551
|
+
required: true
|
|
552
|
+
description: Relation verb
|
|
553
|
+
schema:
|
|
554
|
+
type: string
|
|
555
|
+
responses:
|
|
556
|
+
'200':
|
|
557
|
+
description: Array of valid target kind strings
|
|
558
|
+
content:
|
|
559
|
+
application/json:
|
|
560
|
+
schema:
|
|
561
|
+
type: array
|
|
562
|
+
items:
|
|
563
|
+
type: string
|
|
564
|
+
'400':
|
|
565
|
+
description: Kind and verb parameters required
|
|
566
|
+
|
|
178
567
|
/mcp:
|
|
179
568
|
get:
|
|
180
569
|
summary: MCP Server endpoint
|
|
@@ -459,6 +848,308 @@ components:
|
|
|
459
848
|
items:
|
|
460
849
|
$ref: '#/components/schemas/Instance'
|
|
461
850
|
|
|
851
|
+
Filter:
|
|
852
|
+
type: object
|
|
853
|
+
required:
|
|
854
|
+
- key
|
|
855
|
+
- title
|
|
856
|
+
- filter_type
|
|
857
|
+
- values
|
|
858
|
+
properties:
|
|
859
|
+
key:
|
|
860
|
+
type: string
|
|
861
|
+
description: Annotation key path (e.g., "activity/status")
|
|
862
|
+
title:
|
|
863
|
+
type: string
|
|
864
|
+
description: Human-readable title
|
|
865
|
+
description:
|
|
866
|
+
type: string
|
|
867
|
+
description: Description of the filter
|
|
868
|
+
filter_type:
|
|
869
|
+
type: string
|
|
870
|
+
description: Filter type (e.g., "select", "boolean")
|
|
871
|
+
values:
|
|
872
|
+
type: array
|
|
873
|
+
items:
|
|
874
|
+
type: string
|
|
875
|
+
description: Available values for the filter
|
|
876
|
+
|
|
877
|
+
AnalysisResult:
|
|
878
|
+
type: object
|
|
879
|
+
required:
|
|
880
|
+
- name
|
|
881
|
+
- success
|
|
882
|
+
- has_findings
|
|
883
|
+
- duration
|
|
884
|
+
- sections
|
|
885
|
+
properties:
|
|
886
|
+
name:
|
|
887
|
+
type: string
|
|
888
|
+
description: Analysis instance name
|
|
889
|
+
success:
|
|
890
|
+
type: boolean
|
|
891
|
+
description: Whether the analysis executed successfully
|
|
892
|
+
has_findings:
|
|
893
|
+
type: boolean
|
|
894
|
+
description: Whether the analysis produced findings
|
|
895
|
+
duration:
|
|
896
|
+
type: number
|
|
897
|
+
format: float
|
|
898
|
+
description: Execution duration in seconds
|
|
899
|
+
sections:
|
|
900
|
+
type: array
|
|
901
|
+
items:
|
|
902
|
+
$ref: '#/components/schemas/AnalysisSection'
|
|
903
|
+
error:
|
|
904
|
+
type: string
|
|
905
|
+
description: Error message (only present on failure)
|
|
906
|
+
error_backtrace:
|
|
907
|
+
type: array
|
|
908
|
+
items:
|
|
909
|
+
type: string
|
|
910
|
+
description: Error backtrace lines (only present on failure)
|
|
911
|
+
|
|
912
|
+
AnalysisSection:
|
|
913
|
+
type: object
|
|
914
|
+
required:
|
|
915
|
+
- type
|
|
916
|
+
discriminator:
|
|
917
|
+
propertyName: type
|
|
918
|
+
properties:
|
|
919
|
+
type:
|
|
920
|
+
type: string
|
|
921
|
+
enum: [heading, text, message, table, list, code]
|
|
922
|
+
description: Section type
|
|
923
|
+
level:
|
|
924
|
+
type: integer
|
|
925
|
+
description: Heading level (heading type) or severity (message type)
|
|
926
|
+
text:
|
|
927
|
+
type: string
|
|
928
|
+
description: Heading text (heading type)
|
|
929
|
+
content:
|
|
930
|
+
type: string
|
|
931
|
+
description: Text content (text type) or code content (code type)
|
|
932
|
+
message:
|
|
933
|
+
type: string
|
|
934
|
+
description: Message text (message type)
|
|
935
|
+
headers:
|
|
936
|
+
type: array
|
|
937
|
+
items:
|
|
938
|
+
type: string
|
|
939
|
+
description: Table column headers (table type)
|
|
940
|
+
rows:
|
|
941
|
+
type: array
|
|
942
|
+
items:
|
|
943
|
+
type: array
|
|
944
|
+
items:
|
|
945
|
+
type: string
|
|
946
|
+
description: Table rows (table type)
|
|
947
|
+
items:
|
|
948
|
+
type: array
|
|
949
|
+
items:
|
|
950
|
+
type: string
|
|
951
|
+
description: List items (list type)
|
|
952
|
+
lang:
|
|
953
|
+
type: string
|
|
954
|
+
description: Code language (code type)
|
|
955
|
+
|
|
956
|
+
EditorFormMetadata:
|
|
957
|
+
type: object
|
|
958
|
+
required:
|
|
959
|
+
- kind
|
|
960
|
+
- icon
|
|
961
|
+
- layer
|
|
962
|
+
- fields
|
|
963
|
+
- relation_options
|
|
964
|
+
- instances_by_kind
|
|
965
|
+
- inline_edit_enabled
|
|
966
|
+
- mode
|
|
967
|
+
properties:
|
|
968
|
+
kind:
|
|
969
|
+
type: string
|
|
970
|
+
description: Resource kind name
|
|
971
|
+
icon:
|
|
972
|
+
type: string
|
|
973
|
+
description: Kind icon identifier
|
|
974
|
+
layer:
|
|
975
|
+
type: string
|
|
976
|
+
description: Architecture layer
|
|
977
|
+
mode:
|
|
978
|
+
type: string
|
|
979
|
+
enum: [create, edit]
|
|
980
|
+
description: Form mode
|
|
981
|
+
fields:
|
|
982
|
+
type: array
|
|
983
|
+
items:
|
|
984
|
+
$ref: '#/components/schemas/EditorField'
|
|
985
|
+
relation_options:
|
|
986
|
+
type: array
|
|
987
|
+
items:
|
|
988
|
+
$ref: '#/components/schemas/RelationOption'
|
|
989
|
+
description: Available relation verb+kind combinations
|
|
990
|
+
instances_by_kind:
|
|
991
|
+
type: object
|
|
992
|
+
additionalProperties:
|
|
993
|
+
type: array
|
|
994
|
+
items:
|
|
995
|
+
type: string
|
|
996
|
+
description: Instance names grouped by target kind (for relation dropdowns)
|
|
997
|
+
inline_edit_enabled:
|
|
998
|
+
type: boolean
|
|
999
|
+
description: Whether inline file editing is enabled on the server
|
|
1000
|
+
|
|
1001
|
+
EditorField:
|
|
1002
|
+
type: object
|
|
1003
|
+
required:
|
|
1004
|
+
- key
|
|
1005
|
+
- title
|
|
1006
|
+
- input_type
|
|
1007
|
+
- required
|
|
1008
|
+
properties:
|
|
1009
|
+
key:
|
|
1010
|
+
type: string
|
|
1011
|
+
description: Annotation key path
|
|
1012
|
+
title:
|
|
1013
|
+
type: string
|
|
1014
|
+
description: Human-readable field title
|
|
1015
|
+
description:
|
|
1016
|
+
type: string
|
|
1017
|
+
description: Field description/help text
|
|
1018
|
+
input_type:
|
|
1019
|
+
type: string
|
|
1020
|
+
description: Input type (text, textarea, select, number, boolean, code, etc.)
|
|
1021
|
+
options:
|
|
1022
|
+
type: array
|
|
1023
|
+
items:
|
|
1024
|
+
type: string
|
|
1025
|
+
description: Available options (for select input type)
|
|
1026
|
+
step:
|
|
1027
|
+
type: number
|
|
1028
|
+
description: Step value (for number input type)
|
|
1029
|
+
required:
|
|
1030
|
+
type: boolean
|
|
1031
|
+
description: Whether the field is required
|
|
1032
|
+
code_language:
|
|
1033
|
+
type: string
|
|
1034
|
+
description: Code language hint (for code input type)
|
|
1035
|
+
|
|
1036
|
+
RelationOption:
|
|
1037
|
+
type: object
|
|
1038
|
+
required:
|
|
1039
|
+
- combo
|
|
1040
|
+
- verb
|
|
1041
|
+
- target_kind
|
|
1042
|
+
properties:
|
|
1043
|
+
combo:
|
|
1044
|
+
type: string
|
|
1045
|
+
description: "Combined key (e.g., \"dependsOn:TechnologyArtifact\")"
|
|
1046
|
+
verb:
|
|
1047
|
+
type: string
|
|
1048
|
+
description: Relation verb
|
|
1049
|
+
target_kind:
|
|
1050
|
+
type: string
|
|
1051
|
+
description: Target resource kind
|
|
1052
|
+
|
|
1053
|
+
GenerateRequest:
|
|
1054
|
+
type: object
|
|
1055
|
+
required:
|
|
1056
|
+
- name
|
|
1057
|
+
properties:
|
|
1058
|
+
name:
|
|
1059
|
+
type: string
|
|
1060
|
+
description: Resource name
|
|
1061
|
+
annotations:
|
|
1062
|
+
type: object
|
|
1063
|
+
additionalProperties: true
|
|
1064
|
+
description: Annotation key-value pairs
|
|
1065
|
+
relations:
|
|
1066
|
+
type: array
|
|
1067
|
+
items:
|
|
1068
|
+
type: object
|
|
1069
|
+
properties:
|
|
1070
|
+
verb:
|
|
1071
|
+
type: string
|
|
1072
|
+
kind:
|
|
1073
|
+
type: string
|
|
1074
|
+
name:
|
|
1075
|
+
type: string
|
|
1076
|
+
names:
|
|
1077
|
+
type: array
|
|
1078
|
+
items:
|
|
1079
|
+
type: string
|
|
1080
|
+
description: Relations to include
|
|
1081
|
+
content_hash:
|
|
1082
|
+
type: string
|
|
1083
|
+
description: Content hash for edit mode (passed through to response)
|
|
1084
|
+
|
|
1085
|
+
GenerateResponse:
|
|
1086
|
+
type: object
|
|
1087
|
+
properties:
|
|
1088
|
+
yaml:
|
|
1089
|
+
type: string
|
|
1090
|
+
nullable: true
|
|
1091
|
+
description: Generated YAML (null if validation failed)
|
|
1092
|
+
errors:
|
|
1093
|
+
type: array
|
|
1094
|
+
nullable: true
|
|
1095
|
+
items:
|
|
1096
|
+
type: string
|
|
1097
|
+
description: Validation errors (null if valid)
|
|
1098
|
+
path_ref:
|
|
1099
|
+
type: string
|
|
1100
|
+
nullable: true
|
|
1101
|
+
description: "File path reference (edit mode only, e.g., path/file.yaml:5)"
|
|
1102
|
+
content_hash:
|
|
1103
|
+
type: string
|
|
1104
|
+
nullable: true
|
|
1105
|
+
description: Content hash (edit mode only, for optimistic locking)
|
|
1106
|
+
|
|
1107
|
+
SaveRequest:
|
|
1108
|
+
type: object
|
|
1109
|
+
required:
|
|
1110
|
+
- yaml
|
|
1111
|
+
- content_hash
|
|
1112
|
+
properties:
|
|
1113
|
+
yaml:
|
|
1114
|
+
type: string
|
|
1115
|
+
description: YAML content to save
|
|
1116
|
+
content_hash:
|
|
1117
|
+
type: string
|
|
1118
|
+
description: Content hash from the generate response (for conflict detection)
|
|
1119
|
+
|
|
1120
|
+
SaveResponse:
|
|
1121
|
+
type: object
|
|
1122
|
+
required:
|
|
1123
|
+
- success
|
|
1124
|
+
properties:
|
|
1125
|
+
success:
|
|
1126
|
+
type: boolean
|
|
1127
|
+
description: Whether the save was successful
|
|
1128
|
+
message:
|
|
1129
|
+
type: string
|
|
1130
|
+
description: Success message with file path
|
|
1131
|
+
error:
|
|
1132
|
+
type: string
|
|
1133
|
+
description: Error message (on failure)
|
|
1134
|
+
|
|
1135
|
+
ReloadError:
|
|
1136
|
+
type: object
|
|
1137
|
+
required:
|
|
1138
|
+
- error
|
|
1139
|
+
properties:
|
|
1140
|
+
error:
|
|
1141
|
+
type: string
|
|
1142
|
+
description: Error message
|
|
1143
|
+
path:
|
|
1144
|
+
type: string
|
|
1145
|
+
description: File path where the error occurred
|
|
1146
|
+
line_no:
|
|
1147
|
+
type: integer
|
|
1148
|
+
description: Line number of the error
|
|
1149
|
+
context:
|
|
1150
|
+
type: string
|
|
1151
|
+
description: Surrounding lines for context
|
|
1152
|
+
|
|
462
1153
|
Error:
|
|
463
1154
|
type: object
|
|
464
1155
|
required:
|
|
@@ -496,5 +1187,13 @@ tags:
|
|
|
496
1187
|
description: Instance operations
|
|
497
1188
|
- name: Search
|
|
498
1189
|
description: Search and query operations
|
|
1190
|
+
- name: Graph
|
|
1191
|
+
description: GraphViz DOT graph generation
|
|
1192
|
+
- name: Documentation
|
|
1193
|
+
description: Documentation pages (markdown and auto-generated)
|
|
1194
|
+
- name: Editor
|
|
1195
|
+
description: Resource editor form metadata and YAML generation
|
|
1196
|
+
- name: Operations
|
|
1197
|
+
description: Server management operations
|
|
499
1198
|
- name: MCP
|
|
500
1199
|
description: Model Context Protocol for AI assistant integration
|