CmdForge/docs/diagrams/source-organization.svg

104 lines
9.8 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="790px" preserveAspectRatio="none" style="width:302px;height:790px;background:#000000;" version="1.1" viewBox="0 0 302 790" width="302px" zoomAndPan="magnify"><defs/><g><rect fill="#0C0D15" height="1" style="stroke: #0C0D15; stroke-width: 1.0;" width="1" x="0" y="0"/><rect fill="#33FF02" height="24.0679" style="stroke: #33FF02; stroke-width: 1.0;" width="295" x="5" y="5"/><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="293" x="6" y="20">[From source-organization.puml (line 38) ]</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="43.0679"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="216" x="5" y="62.1358">@startuml source-organization</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="242" x="5" y="81.2038">skinparam backgroundColor white</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="239" x="5" y="100.2717">skinparam packageStyle rectangle</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="119.3396"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="295" x="5" y="138.4075">title SmartTools Source Code Organization</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="157.4754"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="194" x="5" y="176.5433">package "src/smarttools/" {</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="195.6113"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="144" x="21" y="214.6792">package "CLI Core" {</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="91" x="37" y="233.7471">[cli.py] as CLI</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="112" x="37" y="252.815">[tool.py] as Tool</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="151" x="37" y="271.8829">[runner.py] as Runner</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="186" x="37" y="290.9508">[providers.py] as Providers</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="142" x="37" y="310.0188">[config.py] as Config</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="175" x="37" y="329.0867">[manifest.py] as Manifest</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="6" x="21" y="348.1546">}</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="367.2225"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="171" x="21" y="386.2904">package "Registry API" {</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="194" x="37" y="405.3583">[registry/app.py] as RegApp</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="177" x="37" y="424.4263">[registry/db.py] as RegDB</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="247" x="37" y="443.4942">[registry/rate_limit.py] as RateLimit</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="177" x="37" y="462.5621">[registry/sync.py] as Sync</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="209" x="37" y="481.63">[registry/categorize.py] as Cat</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="205" x="37" y="500.6979">[registry/similarity.py] as Sim</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="6" x="21" y="519.7658">}</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="538.8338"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="137" x="21" y="557.9017">package "Web UI" {</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="174" x="37" y="576.9696">[web/app.py] as WebApp</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="182" x="37" y="596.0375">[web/routes.py] as Routes</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="155" x="37" y="615.1054">[web/auth.py] as Auth</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="206" x="37" y="634.1733">[web/sessions.py] as Sessions</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="214" x="37" y="653.2413">[web/docs_content.py] as Docs</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="140" x="37" y="672.3092">[web/seo.py] as SEO</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="172" x="37" y="691.3771">[web/filters.py] as Filters</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="6" x="21" y="710.445">}</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="0" x="9" y="729.5129"/><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="126" x="21" y="748.5808">package "Client" {</text><text fill="#33FF02" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="192" x="37" y="767.6488">[registry_client.py] as Client</text><text fill="#FF0000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="269" x="9" y="786.7167">This element (Client) is already defined</text><!--MD5=[1f2d1e1460e36194e6cfa27977997de1]
@startuml source-organization
skinparam backgroundColor white
skinparam packageStyle rectangle
title SmartTools Source Code Organization
package "src/smarttools/" {
package "CLI Core" {
[cli.py] as CLI
[tool.py] as Tool
[runner.py] as Runner
[providers.py] as Providers
[config.py] as Config
[manifest.py] as Manifest
}
package "Registry API" {
[registry/app.py] as RegApp
[registry/db.py] as RegDB
[registry/rate_limit.py] as RateLimit
[registry/sync.py] as Sync
[registry/categorize.py] as Cat
[registry/similarity.py] as Sim
}
package "Web UI" {
[web/app.py] as WebApp
[web/routes.py] as Routes
[web/auth.py] as Auth
[web/sessions.py] as Sessions
[web/docs_content.py] as Docs
[web/seo.py] as SEO
[web/filters.py] as Filters
}
package "Client" {
[registry_client.py] as Client
[resolver.py] as Resolver
}
package "TUI" {
[ui.py] as UI
[ui_urwid.py] as Urwid
[ui_snack.py] as Snack
}
}
package "web/templates/" {
[base.html] as Base
[home.html] as Home
[tools/*.html] as ToolsT
[docs/*.html] as DocsT
[auth/*.html] as AuthT
[dashboard/*.html] as DashT
}
package "web/static/" {
[css/output.css] as CSS
[robots.txt] as Robots
}
CLI - -> Tool : loads
CLI - -> Runner : executes
Runner - -> Providers : calls AI
Runner - -> Tool : reads steps
WebApp - -> Routes : registers
Routes - -> RegDB : queries
Routes - -> Auth : authenticates
Routes - -> Sessions : manages
Client - -> RegApp : REST API
RegApp - -> RegDB : database ops
RegApp - -> RateLimit : enforces
note right of CLI
Entry point for
smarttools command
end note
note right of RegApp
Flask API for
tool registry
end note
note right of WebApp
Flask web app
with Sentry
end note
@enduml
PlantUML version 1.2020.02(Sun Mar 01 06:22:07 AST 2020)
(GPL source distribution)
Java Runtime: OpenJDK Runtime Environment
JVM: OpenJDK 64-Bit Server VM
Java Version: 21.0.8+9-Ubuntu-0ubuntu124.04.1
Operating System: Linux
Default Encoding: UTF-8
Language: en
Country: CA
--></g></svg>