104 lines
9.8 KiB
XML
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> |