Adding design document and diagrams.
This commit is contained in:
98
DESIGN.md
Normal file
98
DESIGN.md
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# System Design
|
||||||
|
|
||||||
|
This document contains a systems design for a product capable of helping software engineers by accepting prompts
|
||||||
|
from a variety of sources (Github, Jira, IDEs, etc) and autonomously retrieving context, creating a plan to solve the
|
||||||
|
prompt, executing the plan, verifying the results, and then pushing the results back to the most appropriate tool.
|
||||||
|
|
||||||
|
At a very high level the system looks like this: \
|
||||||
|

|
||||||
|
|
||||||
|
Components:
|
||||||
|
|
||||||
|
* API - A REST based API capable of accepting incoming webhooks from a variety of tools. The webhooks will generate
|
||||||
|
tasks that will require context gathering, planning, execution, and testing to resolve. These get passed to the
|
||||||
|
indexer to gather context.
|
||||||
|
* Indexer - An event based processor that accepts tasks from the API and gathers context (e.g. Git files / commits, Jira
|
||||||
|
ticket status, etc) that will need to be indexed and stored for efficient retrieval by later stages.
|
||||||
|
* Agent Runner - Takes the task and associated context generated by the Indexer and generates an execution plan. Works
|
||||||
|
synchronously with the task executor to execute the plan. As tasks are executed the plan should be adjusted to ensure
|
||||||
|
the task is accomplished.
|
||||||
|
* Task Executor - A protected process running with [gVisor](https://gvisor.dev/) (a container security orchestration
|
||||||
|
mechanism) that has a set of tools available to it that the agent runner can execute to perform its task. The executor
|
||||||
|
will have a Network Policy applied such that network access is restricted the bare minimum required to use the
|
||||||
|
tools. \
|
||||||
|
Example tools include:
|
||||||
|
* Code Context - Select appropriate context for code generators.
|
||||||
|
* Code Generators - Generate code for given tasks.
|
||||||
|
* Compilers - Ensure code compiles.
|
||||||
|
* Linters - Ensure code is well formatted and doesn't violate any defined coding standards.
|
||||||
|
* Run Tests - Ensure tests (unit, integration, system) continue to pass after making changes, make sure new tests
|
||||||
|
pass.
|
||||||
|
* Result Processor - Responsible for receiving the result of a task from the Agent Runner and disseminating it to
|
||||||
|
interested parties through the API and directly to integrated services.
|
||||||
|
|
||||||
|
## System Dependencies
|
||||||
|
|
||||||
|
* The solution sits on top of `Amazon Web Services` as an industry standard compute provider. We intentionally will
|
||||||
|
not use AWS products that do not have good analogs with other compute providers (e.g. Kinesis, Nova, Bedrock, etc) to
|
||||||
|
avoid vendor lock in.
|
||||||
|
* The solution is built and deployed on top of `Elastic Kubernetes Service` to provide a flexible orchestration layer
|
||||||
|
that will allow us to deploy, scale, monitor, and repair the application with relatively low effort. Updates with EKS
|
||||||
|
can be orchestrated such that they are delivered without downtime to consumers.
|
||||||
|
* For asynchronous event flows we'll use `Apache Kafka` this will allow us to handle a very large event volume with low
|
||||||
|
performance overhead. Events can be processed as cluster capacity allows and events will not be dropped in the event
|
||||||
|
of an application availability issue.
|
||||||
|
* For observability, we'll use `Prometheus` and `Grafana` in the application to provide metrics. For logs we'll use `Grafana
|
||||||
|
Loki`. This will allow us to see how the application is performing as well as identify any issues as they arise.
|
||||||
|
* To provide large language and embedding models we can host `ollama` on top of GPU equipped GKE nodes. Models can be
|
||||||
|
distributed via persistent volumes and models can be pre-loaded into vRAM with an init container. Autoscalers can be
|
||||||
|
used to scale up and down specific model versions based on demand. This doesn't preclude using LLM-as-a-service
|
||||||
|
providers.
|
||||||
|
* Persistent data storage will be done via `PostgreSQL` hosted on top of `Amazon Relational Database Service`. The
|
||||||
|
`pgvector`
|
||||||
|
extension will be used to provide efficient vector searches for searching embeddings.
|
||||||
|
|
||||||
|
## Scaling Considerations
|
||||||
|
The system can dynamically scale based on load. A horizontal pod autoscaler can be used on each component of the system
|
||||||
|
to allow the system to scale up or down based on the current load. For "compute" instances CPU utilization can be used
|
||||||
|
to determine when to scale. For "gpu" instances an external metric measuring GPU utilization can be used to determine
|
||||||
|
when scaling operations are appropriate. For efficient usage of GPU vRAM and load spreading, models can be packaged
|
||||||
|
together such that they saturate most of the available vRAM, they can be scaled independently.
|
||||||
|
|
||||||
|
In order to accommodate load bursts the system will operate largely asynchronously. Boundaries between system components
|
||||||
|
will be buffered with Kafka to allow the components to only consume what they're able to handle without data getting
|
||||||
|
lost or the need for complex retry mechanisms. If the number of models gets large a proxy could be developed that can
|
||||||
|
dynamically route requests to the appropriate backend with the appropriate model pre-loaded.
|
||||||
|
|
||||||
|
## Testing / Model Migration Strategy
|
||||||
|
|
||||||
|
An essential property of any AI based system is the ability to measure the performance of the system over time. This is
|
||||||
|
important to ensure that models can be safely migrated as the market evolves and better models are released.
|
||||||
|
|
||||||
|
A simple approach to measure performance over time is to create a representative set of example tasks that should be
|
||||||
|
run when changes are introduced. Performance should be measured against the baseline on a number of different metrics
|
||||||
|
such as:
|
||||||
|
|
||||||
|
* Number of agentic iterations required to solve the task (less is better).
|
||||||
|
* Amount of code / responses generated (less is better).
|
||||||
|
* Success rate (more is better).
|
||||||
|
|
||||||
|
Over time, as problematic areas are identified, new tasks should be introduced to the set to improve the training data.
|
||||||
|
|
||||||
|
## Migrating / Managing Embeddings
|
||||||
|
|
||||||
|
One particularly sensitive area for migrating models is around embeddings models. Better models are routinely published
|
||||||
|
but, it is expensive to re-index data, especially if the volumes are large.
|
||||||
|
|
||||||
|
The vector database should store the model that produced each embedding. When new embedding models are introduced the
|
||||||
|
indexer should use the new embedding model to index new content, but should allow old content to be searched using old
|
||||||
|
models. If models are permanently retired the content should be re-indexed with a supported embeddings model. The vector
|
||||||
|
database should allow the same content to be indexed with multiple models at the same time.
|
||||||
|
|
||||||
|
## Data Flow
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Sequence Diagram
|
||||||
|
|
||||||
|

|
||||||
@@ -20,6 +20,8 @@ work.
|
|||||||
The reason this approach was taken was that it could be implemented quickly and produces reasonable looking results
|
The reason this approach was taken was that it could be implemented quickly and produces reasonable looking results
|
||||||
while being a solid platform for further iteration.
|
while being a solid platform for further iteration.
|
||||||
|
|
||||||
|
A design for a more full-featured and robust implementation can be found in [DESIGN.md](DESIGN.md).
|
||||||
|
|
||||||
## Code Structure
|
## Code Structure
|
||||||
|
|
||||||
| Package | Description |
|
| Package | Description |
|
||||||
|
|||||||
174
diagrams/arch-diagram.drawio
Normal file
174
diagrams/arch-diagram.drawio
Normal file
@@ -0,0 +1,174 @@
|
|||||||
|
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0" version="26.2.13">
|
||||||
|
<diagram name="Page-1" id="HUvZW4rwKInUA1yDHv0p">
|
||||||
|
<mxGraphModel dx="792" dy="557" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-68" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||||
|
<mxGeometry y="250" width="120" height="180" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-2" target="xK0QtsmecTMva1r89ds2-15">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-2" value="<div>Jira</div>" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="10" y="310" width="100" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-3" target="xK0QtsmecTMva1r89ds2-15">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-3" value="Github" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="10" y="350" width="100" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-5" value="Amazon Web Services" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#d5e8d4;strokeColor=#82b366;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="220" y="180" width="570" height="430" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-6" value="&nbsp;Elastic Kubernetes Service" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="290" y="270" width="450" height="320" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-9" value="&nbsp;<font style="font-size: 10px;">GPU Equipped Node Pool</font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="580" y="505" width="150" height="70" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-42" value="&nbsp;gVisor Enabled Node Pool" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="580" y="430" width="150" height="70" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-10" value="<font style="font-size: 10px;">Standard Compute Node Pool</font>" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#fff2cc;strokeColor=#d6b656;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="300" y="300" width="430" height="120" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-58" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-8" target="xK0QtsmecTMva1r89ds2-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-8" value="Task Executor" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="610" y="460" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-11" value="ollama" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="605" y="535" width="115" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-48" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-12" target="xK0QtsmecTMva1r89ds2-47">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-12" value="API" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="320" y="330" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-15" target="xK0QtsmecTMva1r89ds2-12">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-15" value="Elastic Load Balancer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="150" y="330" width="130" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-20" value="Kafka Cluster" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="320" y="490" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-22" target="xK0QtsmecTMva1r89ds2-8">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="760" y="350" />
|
||||||
|
<mxPoint x="760" y="475" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-22" target="xK0QtsmecTMva1r89ds2-11">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="770" y="340" />
|
||||||
|
<mxPoint x="770" y="550" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-63" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-22" target="xK0QtsmecTMva1r89ds2-62">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="640" y="395" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-22" value="Agent Runner" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="610" y="330" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-43" value="Grafana / Loki" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="320" y="535" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-44" value="&nbsp;Relational Database Service" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#666666;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="445" y="200" width="170" height="60" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;strokeColor=#FF8000;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-45" target="xK0QtsmecTMva1r89ds2-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-83" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.25;entryDx=0;entryDy=0;strokeColor=#FF8000;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-45" target="xK0QtsmecTMva1r89ds2-62">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-45" value="Database" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="475" y="220" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-49" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#FF8000;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-47" target="xK0QtsmecTMva1r89ds2-45">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#00994D;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-47" target="xK0QtsmecTMva1r89ds2-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-47" value="Indexer" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="475" y="330" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-54" value="Tool<br>APIs / Services" style="ellipse;shape=cloud;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="80" y="435" width="120" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-55" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.917;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-8" target="xK0QtsmecTMva1r89ds2-54">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-57" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-56" target="xK0QtsmecTMva1r89ds2-15">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-56" value="IDEs" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="10" y="270" width="100" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-61" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-60" target="xK0QtsmecTMva1r89ds2-15">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-60" value="Other Tools" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="10" y="390" width="100" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-66" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-62" target="xK0QtsmecTMva1r89ds2-12">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-62" value="Result Processor" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="320" y="380" width="110" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-69" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1;entryY=0.806;entryDx=0;entryDy=0;entryPerimeter=0;strokeColor=#007FFF;" edge="1" parent="1" source="xK0QtsmecTMva1r89ds2-62" target="xK0QtsmecTMva1r89ds2-68">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-71" value="<div align="left">Legend</div>" style="rounded=0;whiteSpace=wrap;html=1;align=left;verticalAlign=top;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="50" y="540" width="120" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-72" value="" style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;rounded=0;strokeColor=#007FFF;" edge="1" parent="1">
|
||||||
|
<mxGeometry width="100" relative="1" as="geometry">
|
||||||
|
<mxPoint x="60" y="574.74" as="sourcePoint" />
|
||||||
|
<mxPoint x="90" y="574.74" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-73" value="" style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;rounded=0;strokeColor=#00994D;" edge="1" parent="1">
|
||||||
|
<mxGeometry width="100" relative="1" as="geometry">
|
||||||
|
<mxPoint x="60" y="594.74" as="sourcePoint" />
|
||||||
|
<mxPoint x="90" y="594.74" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-75" value="<div align="left">HTTPS</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="95" y="560" width="60" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-76" value="<div align="left">Event</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="95" y="580" width="50" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-77" value="" style="edgeStyle=none;orthogonalLoop=1;jettySize=auto;html=1;rounded=0;strokeColor=#FF8000;" edge="1" parent="1">
|
||||||
|
<mxGeometry width="100" relative="1" as="geometry">
|
||||||
|
<mxPoint x="60" y="614.74" as="sourcePoint" />
|
||||||
|
<mxPoint x="90" y="614.74" as="targetPoint" />
|
||||||
|
<Array as="points" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="xK0QtsmecTMva1r89ds2-78" value="<div align="left">Database</div>" style="text;html=1;align=left;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="95" y="600" width="70" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
BIN
diagrams/arch-diagram.png
Normal file
BIN
diagrams/arch-diagram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 68 KiB |
193
diagrams/dataflow-diagram.drawio
Normal file
193
diagrams/dataflow-diagram.drawio
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0" version="26.2.13">
|
||||||
|
<diagram name="Page-1" id="RQNN4LVJ7GCKde5oFDnz">
|
||||||
|
<mxGraphModel dx="754" dy="530" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-2" value="Gather Context" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="270" y="145" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-25" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-3" target="N4d1pdWUKStJnXA2dGwQ-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-26" value="Context" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-25">
|
||||||
|
<mxGeometry x="-0.194" y="-8" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-31" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.855;exitY=1;exitDx=0;exitDy=-4.35;exitPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-3" target="N4d1pdWUKStJnXA2dGwQ-27">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="476" y="310" />
|
||||||
|
<mxPoint x="540" y="310" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-32" value="Context" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-31">
|
||||||
|
<mxGeometry x="0.0935" y="9" relative="1" as="geometry">
|
||||||
|
<mxPoint x="25" y="3" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-3" value="Context Database" style="shape=cylinder3;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="425" y="110" width="60" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-4" target="N4d1pdWUKStJnXA2dGwQ-2">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-10" value="Ticket / History" style="edgeLabel;html=1;align=center;verticalAlign=bottom;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-5">
|
||||||
|
<mxGeometry x="-0.2111" y="2" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=1;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-4" target="N4d1pdWUKStJnXA2dGwQ-11">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="160" y="185" />
|
||||||
|
<mxPoint x="160" y="338" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-16" value="Ticket Update" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-14">
|
||||||
|
<mxGeometry x="-0.0337" y="4" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-4" value="Jira Ticket" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="40" y="170" width="80" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-7" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-6" target="N4d1pdWUKStJnXA2dGwQ-2">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-8" value="Files / History" style="edgeLabel;html=1;align=center;verticalAlign=bottom;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-7">
|
||||||
|
<mxGeometry x="-0.4656" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.081;entryY=0.22;entryDx=0;entryDy=0;curved=1;entryPerimeter=0;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-6" target="N4d1pdWUKStJnXA2dGwQ-11">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="200" y="130" />
|
||||||
|
<mxPoint x="200" y="288" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-17" value="PR Update" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-15">
|
||||||
|
<mxGeometry x="0.2775" y="1" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-6" value="Github Repo" style="rounded=0;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="40" y="115" width="80" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-20" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-11" target="N4d1pdWUKStJnXA2dGwQ-2">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-21" value="Task Context" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-20">
|
||||||
|
<mxGeometry x="0.1889" y="2" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-12" y="4" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-11" value="Accept Task" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="240" y="270" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-2" target="N4d1pdWUKStJnXA2dGwQ-3">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-13" value="Repo / Ticket<br>Context" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-12">
|
||||||
|
<mxGeometry x="-0.1141" y="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-9" y="-34" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=1;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-11" target="N4d1pdWUKStJnXA2dGwQ-3">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-19" value="Task Context" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-18">
|
||||||
|
<mxGeometry x="0.0377" y="31" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-27" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-28" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-22" target="N4d1pdWUKStJnXA2dGwQ-27">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-29" value="Task" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-28">
|
||||||
|
<mxGeometry x="-0.0498" y="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-36" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;curved=1;exitX=1;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-22" target="N4d1pdWUKStJnXA2dGwQ-30">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="620" y="222" />
|
||||||
|
<mxPoint x="620" y="50" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-37" value="Plan Results" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-36">
|
||||||
|
<mxGeometry x="-0.0015" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-32" y="20" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-22" value="Create / Execute Plan" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="540" y="210" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-23" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.035;entryY=0.485;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-2" target="N4d1pdWUKStJnXA2dGwQ-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-24" value="Execute Task" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];labelBackgroundColor=none;" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-23">
|
||||||
|
<mxGeometry x="-0.0058" relative="1" as="geometry">
|
||||||
|
<mxPoint x="-35" y="-5" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-34" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;curved=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-27" target="N4d1pdWUKStJnXA2dGwQ-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-35" value="Task Results" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-34">
|
||||||
|
<mxGeometry x="0.208" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-27" value="Task Executor" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="530" y="330" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-38" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.5;entryY=0;entryDx=0;entryDy=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-30" target="N4d1pdWUKStJnXA2dGwQ-6">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-39" value="Pull Request" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-38">
|
||||||
|
<mxGeometry x="-0.2344" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.5;entryDx=0;entryDy=0;curved=1;exitX=0;exitY=0;exitDx=0;exitDy=0;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-30" target="N4d1pdWUKStJnXA2dGwQ-4">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-47" value="Ticket Update" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-46">
|
||||||
|
<mxGeometry x="-0.494" y="3" relative="1" as="geometry">
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-30" value="Accept Results" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="320" y="10" width="80" height="80" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-40" value="LLM" style="shape=process;whiteSpace=wrap;html=1;backgroundOutline=1;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="720" y="280" width="120" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-41" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.971;entryY=0.335;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-40" target="N4d1pdWUKStJnXA2dGwQ-22">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-43" value="<div>Plan /</div><div>Plan Steps</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-41">
|
||||||
|
<mxGeometry x="0.1773" y="3" relative="1" as="geometry">
|
||||||
|
<mxPoint x="13" y="10" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-42" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.987;entryY=0.561;entryDx=0;entryDy=0;entryPerimeter=0;curved=1;" edge="1" parent="1" source="N4d1pdWUKStJnXA2dGwQ-40" target="N4d1pdWUKStJnXA2dGwQ-27">
|
||||||
|
<mxGeometry relative="1" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="N4d1pdWUKStJnXA2dGwQ-44" value="<div>Task Specific</div><div>Information</div>" style="edgeLabel;html=1;align=center;verticalAlign=middle;resizable=0;points=[];" vertex="1" connectable="0" parent="N4d1pdWUKStJnXA2dGwQ-42">
|
||||||
|
<mxGeometry x="-0.0062" y="-1" relative="1" as="geometry">
|
||||||
|
<mxPoint x="16" y="5" as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
BIN
diagrams/dataflow-diagram.png
Normal file
BIN
diagrams/dataflow-diagram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 79 KiB |
217
diagrams/sequence-diagram.drawio
Normal file
217
diagrams/sequence-diagram.drawio
Normal file
@@ -0,0 +1,217 @@
|
|||||||
|
<mxfile host="app.diagrams.net" agent="Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0" version="26.2.13">
|
||||||
|
<diagram name="Page-1" id="2YBvvXClWsGukQMizWep">
|
||||||
|
<mxGraphModel dx="1494" dy="453" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0">
|
||||||
|
<root>
|
||||||
|
<mxCell id="0" />
|
||||||
|
<mxCell id="1" parent="0" />
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--27" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="230" y="150" width="160" height="50" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--23" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="480" y="220" width="160" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--15" value="dataResponse" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1" source="R9xhgmwoiYYisnBT6Gz--33">
|
||||||
|
<mxGeometry x="0.5556" relative="1" as="geometry">
|
||||||
|
<mxPoint x="100" y="190" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="190" y="190" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="370" y="190" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-1" value="Jira / Github / IDE" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="40" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="aM9ryv3xv72pqoxQDRHE-1" vertex="1">
|
||||||
|
<mxGeometry x="45" y="60" width="10" height="30" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-3" value="update" style="html=1;verticalAlign=bottom;startArrow=oval;endArrow=block;startSize=8;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" parent="aM9ryv3xv72pqoxQDRHE-1" target="aM9ryv3xv72pqoxQDRHE-2" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="-40" y="70" as="sourcePoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--33" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="aM9ryv3xv72pqoxQDRHE-1">
|
||||||
|
<mxGeometry x="45" y="120" width="10" height="40" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--34" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="aM9ryv3xv72pqoxQDRHE-1">
|
||||||
|
<mxGeometry x="45" y="350" width="10" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--14" value="dataRequest" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1" target="R9xhgmwoiYYisnBT6Gz--33">
|
||||||
|
<mxGeometry x="-0.6923" relative="1" as="geometry">
|
||||||
|
<mxPoint x="250" y="170" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="370" y="170" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="100" y="170" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-5" value="API" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="1" vertex="1">
|
||||||
|
<mxGeometry x="190" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-6" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" parent="aM9ryv3xv72pqoxQDRHE-5" vertex="1">
|
||||||
|
<mxGeometry x="45" y="80" width="10" height="90" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--35" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="aM9ryv3xv72pqoxQDRHE-5">
|
||||||
|
<mxGeometry x="45" y="320" width="10" height="20" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--41" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="aM9ryv3xv72pqoxQDRHE-5">
|
||||||
|
<mxGeometry x="45" y="370" width="10" height="50" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--20" value="planComplete" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;" edge="1" parent="1">
|
||||||
|
<mxGeometry x="-0.5217" relative="1" as="geometry">
|
||||||
|
<mxPoint x="504.9999999999998" y="340" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="595" y="340" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="735" y="340" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="aM9ryv3xv72pqoxQDRHE-7" value="webhook" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" parent="1" source="aM9ryv3xv72pqoxQDRHE-2" target="aM9ryv3xv72pqoxQDRHE-6" edge="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="195" y="130" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="180" y="120" />
|
||||||
|
</Array>
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--1" value="Task Executor" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="570" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--2" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="R9xhgmwoiYYisnBT6Gz--1">
|
||||||
|
<mxGeometry x="45" y="170" width="10" height="110" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--3" value="Indexer" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="325" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--4" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="R9xhgmwoiYYisnBT6Gz--3">
|
||||||
|
<mxGeometry x="45" y="80" width="10" height="170" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--21" value="getTaskContext" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1">
|
||||||
|
<mxGeometry x="-0.5319" relative="1" as="geometry">
|
||||||
|
<mxPoint x="615" y="260" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="595" y="260" />
|
||||||
|
<mxPoint x="615" y="240" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="379.9999999999998" y="260" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--5" value="Result Processor" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="690" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--6" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="R9xhgmwoiYYisnBT6Gz--5">
|
||||||
|
<mxGeometry x="45" y="290" width="10" height="100" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--22" value="taskContext" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1">
|
||||||
|
<mxGeometry x="0.5319" relative="1" as="geometry">
|
||||||
|
<mxPoint x="380" y="280" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="470" y="280" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="615" y="280" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--7" value="Agent Runner" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=0;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="450" y="40" width="100" height="440" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--8" value="" style="html=1;points=[];perimeter=orthogonalPerimeter;outlineConnect=0;targetShapes=umlLifeline;portConstraint=eastwest;newEdgeStyle={"edgeStyle":"elbowEdgeStyle","elbow":"vertical","curved":0,"rounded":0};" vertex="1" parent="R9xhgmwoiYYisnBT6Gz--7">
|
||||||
|
<mxGeometry x="45" y="140" width="10" height="170" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--13" value="indexRequest" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;" edge="1" parent="1" source="aM9ryv3xv72pqoxQDRHE-6">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="250" y="130" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="335" y="130" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="370" y="130" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--16" value="planExecuteTasks" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;" edge="1" parent="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="380" y="209.78" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="470" y="209.78" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="494.9999999999998" y="209.77999999999997" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--17" value="executeTask" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="504.9999999999998" y="240" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="600" y="240" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="615" y="240" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--19" value="taskResponse" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="615" y="300" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="590" y="300" />
|
||||||
|
<mxPoint x="610" y="280" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="504.9999999999998" y="300" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--25" value="<div align="center">Until task complete</div>" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="480" y="210" width="160" height="10" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--28" value="Until content indexed" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontSize=10;" vertex="1" parent="1">
|
||||||
|
<mxGeometry x="230" y="140" width="160" height="10" as="geometry" />
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--36" value="completedTask" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1" target="R9xhgmwoiYYisnBT6Gz--35">
|
||||||
|
<mxGeometry x="-0.7755" relative="1" as="geometry">
|
||||||
|
<mxPoint x="735" y="370" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="715" y="370" />
|
||||||
|
<mxPoint x="735" y="350" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="270" y="370" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--39" value="taskCompleteNotify" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;dashed=1;" edge="1" parent="1" source="R9xhgmwoiYYisnBT6Gz--6" target="R9xhgmwoiYYisnBT6Gz--34">
|
||||||
|
<mxGeometry x="-0.8281" relative="1" as="geometry">
|
||||||
|
<mxPoint x="730" y="400" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="710" y="400" />
|
||||||
|
<mxPoint x="730" y="380" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="240" y="400" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--40" value="result" style="html=1;verticalAlign=bottom;startArrow=block;endArrow=none;startSize=8;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;startFill=1;" edge="1" parent="1">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint y="470.15999999999997" as="sourcePoint" />
|
||||||
|
<mxPoint x="85" y="469.9966666666667" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--42" value="resultRequest" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1" source="R9xhgmwoiYYisnBT6Gz--34" target="R9xhgmwoiYYisnBT6Gz--41">
|
||||||
|
<mxGeometry relative="1" as="geometry">
|
||||||
|
<mxPoint x="105" y="420" as="sourcePoint" />
|
||||||
|
<Array as="points">
|
||||||
|
<mxPoint x="190" y="420" />
|
||||||
|
</Array>
|
||||||
|
<mxPoint x="210" y="420" as="targetPoint" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
<mxCell id="R9xhgmwoiYYisnBT6Gz--43" value="resultResponse" style="html=1;verticalAlign=bottom;endArrow=block;edgeStyle=elbowEdgeStyle;elbow=vertical;curved=0;rounded=0;" edge="1" parent="1">
|
||||||
|
<mxGeometry x="0.0339" relative="1" as="geometry">
|
||||||
|
<mxPoint x="234.99999999999977" y="449.9966666666667" as="sourcePoint" />
|
||||||
|
<Array as="points" />
|
||||||
|
<mxPoint x="95" y="449.9966666666667" as="targetPoint" />
|
||||||
|
<mxPoint as="offset" />
|
||||||
|
</mxGeometry>
|
||||||
|
</mxCell>
|
||||||
|
</root>
|
||||||
|
</mxGraphModel>
|
||||||
|
</diagram>
|
||||||
|
</mxfile>
|
||||||
BIN
diagrams/sequence-diagram.png
Normal file
BIN
diagrams/sequence-diagram.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
Reference in New Issue
Block a user