crca 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (501) hide show
  1. .github/ISSUE_TEMPLATE/bug_report.md +65 -0
  2. .github/ISSUE_TEMPLATE/feature_request.md +41 -0
  3. .github/PULL_REQUEST_TEMPLATE.md +20 -0
  4. .github/workflows/publish-manual.yml +61 -0
  5. .github/workflows/publish.yml +64 -0
  6. .gitignore +214 -0
  7. CRCA.py +4156 -0
  8. LICENSE +201 -0
  9. MANIFEST.in +43 -0
  10. PKG-INFO +5035 -0
  11. README.md +4959 -0
  12. __init__.py +17 -0
  13. branches/CRCA-Q.py +2728 -0
  14. branches/crca_cg/corposwarm.py +9065 -0
  15. branches/crca_cg/fix_rancher_docker_creds.ps1 +155 -0
  16. branches/crca_cg/package.json +5 -0
  17. branches/crca_cg/test_bolt_integration.py +446 -0
  18. branches/crca_cg/test_corposwarm_comprehensive.py +773 -0
  19. branches/crca_cg/test_new_features.py +163 -0
  20. branches/crca_sd/__init__.py +149 -0
  21. branches/crca_sd/crca_sd_core.py +770 -0
  22. branches/crca_sd/crca_sd_governance.py +1325 -0
  23. branches/crca_sd/crca_sd_mpc.py +1130 -0
  24. branches/crca_sd/crca_sd_realtime.py +1844 -0
  25. branches/crca_sd/crca_sd_tui.py +1133 -0
  26. crca-1.4.0.dist-info/METADATA +5035 -0
  27. crca-1.4.0.dist-info/RECORD +501 -0
  28. crca-1.4.0.dist-info/WHEEL +4 -0
  29. crca-1.4.0.dist-info/licenses/LICENSE +201 -0
  30. docs/CRCA-Q.md +2333 -0
  31. examples/config.yaml.example +25 -0
  32. examples/crca_sd_example.py +513 -0
  33. examples/data_broker_example.py +294 -0
  34. examples/logistics_corporation.py +861 -0
  35. examples/palantir_example.py +299 -0
  36. examples/policy_bench.py +934 -0
  37. examples/pridnestrovia-sd.py +705 -0
  38. examples/pridnestrovia_realtime.py +1902 -0
  39. prompts/__init__.py +10 -0
  40. prompts/default_crca.py +101 -0
  41. pyproject.toml +151 -0
  42. requirements.txt +76 -0
  43. schemas/__init__.py +43 -0
  44. schemas/mcpSchemas.py +51 -0
  45. schemas/policy.py +458 -0
  46. templates/__init__.py +38 -0
  47. templates/base_specialized_agent.py +195 -0
  48. templates/drift_detection.py +325 -0
  49. templates/examples/causal_agent_template.py +309 -0
  50. templates/examples/drag_drop_example.py +213 -0
  51. templates/examples/logistics_agent_template.py +207 -0
  52. templates/examples/trading_agent_template.py +206 -0
  53. templates/feature_mixins.py +253 -0
  54. templates/graph_management.py +442 -0
  55. templates/llm_integration.py +194 -0
  56. templates/module_registry.py +276 -0
  57. templates/mpc_planner.py +280 -0
  58. templates/policy_loop.py +1168 -0
  59. templates/prediction_framework.py +448 -0
  60. templates/statistical_methods.py +778 -0
  61. tests/sanity.yml +31 -0
  62. tests/sanity_check +406 -0
  63. tests/test_core.py +47 -0
  64. tests/test_crca_excel.py +166 -0
  65. tests/test_crca_sd.py +780 -0
  66. tests/test_data_broker.py +424 -0
  67. tests/test_palantir.py +349 -0
  68. tools/__init__.py +38 -0
  69. tools/actuators.py +437 -0
  70. tools/bolt.diy/Dockerfile +103 -0
  71. tools/bolt.diy/app/components/@settings/core/AvatarDropdown.tsx +175 -0
  72. tools/bolt.diy/app/components/@settings/core/ControlPanel.tsx +345 -0
  73. tools/bolt.diy/app/components/@settings/core/constants.tsx +108 -0
  74. tools/bolt.diy/app/components/@settings/core/types.ts +114 -0
  75. tools/bolt.diy/app/components/@settings/index.ts +12 -0
  76. tools/bolt.diy/app/components/@settings/shared/components/TabTile.tsx +151 -0
  77. tools/bolt.diy/app/components/@settings/shared/service-integration/ConnectionForm.tsx +193 -0
  78. tools/bolt.diy/app/components/@settings/shared/service-integration/ConnectionTestIndicator.tsx +60 -0
  79. tools/bolt.diy/app/components/@settings/shared/service-integration/ErrorState.tsx +102 -0
  80. tools/bolt.diy/app/components/@settings/shared/service-integration/LoadingState.tsx +94 -0
  81. tools/bolt.diy/app/components/@settings/shared/service-integration/ServiceHeader.tsx +72 -0
  82. tools/bolt.diy/app/components/@settings/shared/service-integration/index.ts +6 -0
  83. tools/bolt.diy/app/components/@settings/tabs/data/DataTab.tsx +721 -0
  84. tools/bolt.diy/app/components/@settings/tabs/data/DataVisualization.tsx +384 -0
  85. tools/bolt.diy/app/components/@settings/tabs/event-logs/EventLogsTab.tsx +1013 -0
  86. tools/bolt.diy/app/components/@settings/tabs/features/FeaturesTab.tsx +295 -0
  87. tools/bolt.diy/app/components/@settings/tabs/github/GitHubTab.tsx +281 -0
  88. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubAuthDialog.tsx +173 -0
  89. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubCacheManager.tsx +367 -0
  90. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubConnection.tsx +233 -0
  91. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubErrorBoundary.tsx +105 -0
  92. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubProgressiveLoader.tsx +266 -0
  93. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubRepositoryCard.tsx +121 -0
  94. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubRepositorySelector.tsx +312 -0
  95. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubStats.tsx +291 -0
  96. tools/bolt.diy/app/components/@settings/tabs/github/components/GitHubUserProfile.tsx +46 -0
  97. tools/bolt.diy/app/components/@settings/tabs/github/components/shared/GitHubStateIndicators.tsx +264 -0
  98. tools/bolt.diy/app/components/@settings/tabs/github/components/shared/RepositoryCard.tsx +361 -0
  99. tools/bolt.diy/app/components/@settings/tabs/github/components/shared/index.ts +11 -0
  100. tools/bolt.diy/app/components/@settings/tabs/gitlab/GitLabTab.tsx +305 -0
  101. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/GitLabAuthDialog.tsx +186 -0
  102. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/GitLabConnection.tsx +253 -0
  103. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/GitLabRepositorySelector.tsx +358 -0
  104. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/RepositoryCard.tsx +79 -0
  105. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/RepositoryList.tsx +142 -0
  106. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/StatsDisplay.tsx +91 -0
  107. tools/bolt.diy/app/components/@settings/tabs/gitlab/components/index.ts +4 -0
  108. tools/bolt.diy/app/components/@settings/tabs/mcp/McpServerList.tsx +99 -0
  109. tools/bolt.diy/app/components/@settings/tabs/mcp/McpServerListItem.tsx +70 -0
  110. tools/bolt.diy/app/components/@settings/tabs/mcp/McpStatusBadge.tsx +37 -0
  111. tools/bolt.diy/app/components/@settings/tabs/mcp/McpTab.tsx +239 -0
  112. tools/bolt.diy/app/components/@settings/tabs/netlify/NetlifyTab.tsx +1393 -0
  113. tools/bolt.diy/app/components/@settings/tabs/netlify/components/NetlifyConnection.tsx +990 -0
  114. tools/bolt.diy/app/components/@settings/tabs/netlify/components/index.ts +1 -0
  115. tools/bolt.diy/app/components/@settings/tabs/notifications/NotificationsTab.tsx +300 -0
  116. tools/bolt.diy/app/components/@settings/tabs/profile/ProfileTab.tsx +181 -0
  117. tools/bolt.diy/app/components/@settings/tabs/providers/cloud/CloudProvidersTab.tsx +308 -0
  118. tools/bolt.diy/app/components/@settings/tabs/providers/local/ErrorBoundary.tsx +68 -0
  119. tools/bolt.diy/app/components/@settings/tabs/providers/local/HealthStatusBadge.tsx +64 -0
  120. tools/bolt.diy/app/components/@settings/tabs/providers/local/LoadingSkeleton.tsx +107 -0
  121. tools/bolt.diy/app/components/@settings/tabs/providers/local/LocalProvidersTab.tsx +556 -0
  122. tools/bolt.diy/app/components/@settings/tabs/providers/local/ModelCard.tsx +106 -0
  123. tools/bolt.diy/app/components/@settings/tabs/providers/local/ProviderCard.tsx +120 -0
  124. tools/bolt.diy/app/components/@settings/tabs/providers/local/SetupGuide.tsx +671 -0
  125. tools/bolt.diy/app/components/@settings/tabs/providers/local/StatusDashboard.tsx +91 -0
  126. tools/bolt.diy/app/components/@settings/tabs/providers/local/types.ts +44 -0
  127. tools/bolt.diy/app/components/@settings/tabs/settings/SettingsTab.tsx +215 -0
  128. tools/bolt.diy/app/components/@settings/tabs/supabase/SupabaseTab.tsx +1089 -0
  129. tools/bolt.diy/app/components/@settings/tabs/vercel/VercelTab.tsx +909 -0
  130. tools/bolt.diy/app/components/@settings/tabs/vercel/components/VercelConnection.tsx +368 -0
  131. tools/bolt.diy/app/components/@settings/tabs/vercel/components/index.ts +1 -0
  132. tools/bolt.diy/app/components/@settings/utils/tab-helpers.ts +54 -0
  133. tools/bolt.diy/app/components/chat/APIKeyManager.tsx +169 -0
  134. tools/bolt.diy/app/components/chat/Artifact.tsx +296 -0
  135. tools/bolt.diy/app/components/chat/AssistantMessage.tsx +192 -0
  136. tools/bolt.diy/app/components/chat/BaseChat.module.scss +47 -0
  137. tools/bolt.diy/app/components/chat/BaseChat.tsx +522 -0
  138. tools/bolt.diy/app/components/chat/Chat.client.tsx +670 -0
  139. tools/bolt.diy/app/components/chat/ChatAlert.tsx +108 -0
  140. tools/bolt.diy/app/components/chat/ChatBox.tsx +334 -0
  141. tools/bolt.diy/app/components/chat/CodeBlock.module.scss +10 -0
  142. tools/bolt.diy/app/components/chat/CodeBlock.tsx +85 -0
  143. tools/bolt.diy/app/components/chat/DicussMode.tsx +17 -0
  144. tools/bolt.diy/app/components/chat/ExamplePrompts.tsx +37 -0
  145. tools/bolt.diy/app/components/chat/FilePreview.tsx +38 -0
  146. tools/bolt.diy/app/components/chat/GitCloneButton.tsx +327 -0
  147. tools/bolt.diy/app/components/chat/ImportFolderButton.tsx +141 -0
  148. tools/bolt.diy/app/components/chat/LLMApiAlert.tsx +109 -0
  149. tools/bolt.diy/app/components/chat/MCPTools.tsx +129 -0
  150. tools/bolt.diy/app/components/chat/Markdown.module.scss +171 -0
  151. tools/bolt.diy/app/components/chat/Markdown.spec.ts +48 -0
  152. tools/bolt.diy/app/components/chat/Markdown.tsx +252 -0
  153. tools/bolt.diy/app/components/chat/Messages.client.tsx +102 -0
  154. tools/bolt.diy/app/components/chat/ModelSelector.tsx +797 -0
  155. tools/bolt.diy/app/components/chat/NetlifyDeploymentLink.client.tsx +51 -0
  156. tools/bolt.diy/app/components/chat/ProgressCompilation.tsx +110 -0
  157. tools/bolt.diy/app/components/chat/ScreenshotStateManager.tsx +33 -0
  158. tools/bolt.diy/app/components/chat/SendButton.client.tsx +39 -0
  159. tools/bolt.diy/app/components/chat/SpeechRecognition.tsx +28 -0
  160. tools/bolt.diy/app/components/chat/StarterTemplates.tsx +38 -0
  161. tools/bolt.diy/app/components/chat/SupabaseAlert.tsx +199 -0
  162. tools/bolt.diy/app/components/chat/SupabaseConnection.tsx +339 -0
  163. tools/bolt.diy/app/components/chat/ThoughtBox.tsx +43 -0
  164. tools/bolt.diy/app/components/chat/ToolInvocations.tsx +409 -0
  165. tools/bolt.diy/app/components/chat/UserMessage.tsx +101 -0
  166. tools/bolt.diy/app/components/chat/VercelDeploymentLink.client.tsx +158 -0
  167. tools/bolt.diy/app/components/chat/chatExportAndImport/ExportChatButton.tsx +49 -0
  168. tools/bolt.diy/app/components/chat/chatExportAndImport/ImportButtons.tsx +96 -0
  169. tools/bolt.diy/app/components/deploy/DeployAlert.tsx +197 -0
  170. tools/bolt.diy/app/components/deploy/DeployButton.tsx +277 -0
  171. tools/bolt.diy/app/components/deploy/GitHubDeploy.client.tsx +171 -0
  172. tools/bolt.diy/app/components/deploy/GitHubDeploymentDialog.tsx +1041 -0
  173. tools/bolt.diy/app/components/deploy/GitLabDeploy.client.tsx +171 -0
  174. tools/bolt.diy/app/components/deploy/GitLabDeploymentDialog.tsx +764 -0
  175. tools/bolt.diy/app/components/deploy/NetlifyDeploy.client.tsx +246 -0
  176. tools/bolt.diy/app/components/deploy/VercelDeploy.client.tsx +235 -0
  177. tools/bolt.diy/app/components/editor/codemirror/BinaryContent.tsx +7 -0
  178. tools/bolt.diy/app/components/editor/codemirror/CodeMirrorEditor.tsx +555 -0
  179. tools/bolt.diy/app/components/editor/codemirror/EnvMasking.ts +80 -0
  180. tools/bolt.diy/app/components/editor/codemirror/cm-theme.ts +192 -0
  181. tools/bolt.diy/app/components/editor/codemirror/indent.ts +68 -0
  182. tools/bolt.diy/app/components/editor/codemirror/languages.ts +112 -0
  183. tools/bolt.diy/app/components/git/GitUrlImport.client.tsx +147 -0
  184. tools/bolt.diy/app/components/header/Header.tsx +42 -0
  185. tools/bolt.diy/app/components/header/HeaderActionButtons.client.tsx +54 -0
  186. tools/bolt.diy/app/components/mandate/MandateSubmission.tsx +167 -0
  187. tools/bolt.diy/app/components/observability/DeploymentStatus.tsx +168 -0
  188. tools/bolt.diy/app/components/observability/EventTimeline.tsx +119 -0
  189. tools/bolt.diy/app/components/observability/FileDiffViewer.tsx +121 -0
  190. tools/bolt.diy/app/components/observability/GovernanceStatus.tsx +197 -0
  191. tools/bolt.diy/app/components/observability/GovernorMetrics.tsx +246 -0
  192. tools/bolt.diy/app/components/observability/LogStream.tsx +244 -0
  193. tools/bolt.diy/app/components/observability/MandateDetails.tsx +201 -0
  194. tools/bolt.diy/app/components/observability/ObservabilityDashboard.tsx +200 -0
  195. tools/bolt.diy/app/components/sidebar/HistoryItem.tsx +187 -0
  196. tools/bolt.diy/app/components/sidebar/Menu.client.tsx +536 -0
  197. tools/bolt.diy/app/components/sidebar/date-binning.ts +59 -0
  198. tools/bolt.diy/app/components/txt +1 -0
  199. tools/bolt.diy/app/components/ui/BackgroundRays/index.tsx +18 -0
  200. tools/bolt.diy/app/components/ui/BackgroundRays/styles.module.scss +246 -0
  201. tools/bolt.diy/app/components/ui/Badge.tsx +53 -0
  202. tools/bolt.diy/app/components/ui/BranchSelector.tsx +270 -0
  203. tools/bolt.diy/app/components/ui/Breadcrumbs.tsx +101 -0
  204. tools/bolt.diy/app/components/ui/Button.tsx +46 -0
  205. tools/bolt.diy/app/components/ui/Card.tsx +55 -0
  206. tools/bolt.diy/app/components/ui/Checkbox.tsx +32 -0
  207. tools/bolt.diy/app/components/ui/CloseButton.tsx +49 -0
  208. tools/bolt.diy/app/components/ui/CodeBlock.tsx +103 -0
  209. tools/bolt.diy/app/components/ui/Collapsible.tsx +9 -0
  210. tools/bolt.diy/app/components/ui/ColorSchemeDialog.tsx +378 -0
  211. tools/bolt.diy/app/components/ui/Dialog.tsx +449 -0
  212. tools/bolt.diy/app/components/ui/Dropdown.tsx +63 -0
  213. tools/bolt.diy/app/components/ui/EmptyState.tsx +154 -0
  214. tools/bolt.diy/app/components/ui/FileIcon.tsx +346 -0
  215. tools/bolt.diy/app/components/ui/FilterChip.tsx +92 -0
  216. tools/bolt.diy/app/components/ui/GlowingEffect.tsx +192 -0
  217. tools/bolt.diy/app/components/ui/GradientCard.tsx +100 -0
  218. tools/bolt.diy/app/components/ui/IconButton.tsx +84 -0
  219. tools/bolt.diy/app/components/ui/Input.tsx +22 -0
  220. tools/bolt.diy/app/components/ui/Label.tsx +20 -0
  221. tools/bolt.diy/app/components/ui/LoadingDots.tsx +27 -0
  222. tools/bolt.diy/app/components/ui/LoadingOverlay.tsx +32 -0
  223. tools/bolt.diy/app/components/ui/PanelHeader.tsx +20 -0
  224. tools/bolt.diy/app/components/ui/PanelHeaderButton.tsx +36 -0
  225. tools/bolt.diy/app/components/ui/Popover.tsx +29 -0
  226. tools/bolt.diy/app/components/ui/Progress.tsx +22 -0
  227. tools/bolt.diy/app/components/ui/RepositoryStats.tsx +87 -0
  228. tools/bolt.diy/app/components/ui/ScrollArea.tsx +41 -0
  229. tools/bolt.diy/app/components/ui/SearchInput.tsx +80 -0
  230. tools/bolt.diy/app/components/ui/SearchResultItem.tsx +134 -0
  231. tools/bolt.diy/app/components/ui/Separator.tsx +22 -0
  232. tools/bolt.diy/app/components/ui/SettingsButton.tsx +35 -0
  233. tools/bolt.diy/app/components/ui/Slider.tsx +73 -0
  234. tools/bolt.diy/app/components/ui/StatusIndicator.tsx +90 -0
  235. tools/bolt.diy/app/components/ui/Switch.tsx +37 -0
  236. tools/bolt.diy/app/components/ui/Tabs.tsx +52 -0
  237. tools/bolt.diy/app/components/ui/TabsWithSlider.tsx +112 -0
  238. tools/bolt.diy/app/components/ui/ThemeSwitch.tsx +29 -0
  239. tools/bolt.diy/app/components/ui/Tooltip.tsx +122 -0
  240. tools/bolt.diy/app/components/ui/index.ts +38 -0
  241. tools/bolt.diy/app/components/ui/use-toast.ts +66 -0
  242. tools/bolt.diy/app/components/workbench/DiffView.tsx +796 -0
  243. tools/bolt.diy/app/components/workbench/EditorPanel.tsx +174 -0
  244. tools/bolt.diy/app/components/workbench/ExpoQrModal.tsx +55 -0
  245. tools/bolt.diy/app/components/workbench/FileBreadcrumb.tsx +150 -0
  246. tools/bolt.diy/app/components/workbench/FileTree.tsx +565 -0
  247. tools/bolt.diy/app/components/workbench/Inspector.tsx +126 -0
  248. tools/bolt.diy/app/components/workbench/InspectorPanel.tsx +146 -0
  249. tools/bolt.diy/app/components/workbench/LockManager.tsx +262 -0
  250. tools/bolt.diy/app/components/workbench/PortDropdown.tsx +91 -0
  251. tools/bolt.diy/app/components/workbench/Preview.tsx +1049 -0
  252. tools/bolt.diy/app/components/workbench/ScreenshotSelector.tsx +293 -0
  253. tools/bolt.diy/app/components/workbench/Search.tsx +257 -0
  254. tools/bolt.diy/app/components/workbench/Workbench.client.tsx +506 -0
  255. tools/bolt.diy/app/components/workbench/terminal/Terminal.tsx +131 -0
  256. tools/bolt.diy/app/components/workbench/terminal/TerminalManager.tsx +68 -0
  257. tools/bolt.diy/app/components/workbench/terminal/TerminalTabs.tsx +277 -0
  258. tools/bolt.diy/app/components/workbench/terminal/theme.ts +36 -0
  259. tools/bolt.diy/app/components/workflow/WorkflowPhase.tsx +109 -0
  260. tools/bolt.diy/app/components/workflow/WorkflowStatus.tsx +60 -0
  261. tools/bolt.diy/app/components/workflow/WorkflowTimeline.tsx +150 -0
  262. tools/bolt.diy/app/entry.client.tsx +7 -0
  263. tools/bolt.diy/app/entry.server.tsx +80 -0
  264. tools/bolt.diy/app/root.tsx +156 -0
  265. tools/bolt.diy/app/routes/_index.tsx +175 -0
  266. tools/bolt.diy/app/routes/api.bug-report.ts +254 -0
  267. tools/bolt.diy/app/routes/api.chat.ts +463 -0
  268. tools/bolt.diy/app/routes/api.check-env-key.ts +41 -0
  269. tools/bolt.diy/app/routes/api.configured-providers.ts +110 -0
  270. tools/bolt.diy/app/routes/api.corporate-swarm-status.ts +55 -0
  271. tools/bolt.diy/app/routes/api.enhancer.ts +137 -0
  272. tools/bolt.diy/app/routes/api.export-api-keys.ts +44 -0
  273. tools/bolt.diy/app/routes/api.git-info.ts +69 -0
  274. tools/bolt.diy/app/routes/api.git-proxy.$.ts +178 -0
  275. tools/bolt.diy/app/routes/api.github-branches.ts +166 -0
  276. tools/bolt.diy/app/routes/api.github-deploy.ts +67 -0
  277. tools/bolt.diy/app/routes/api.github-stats.ts +198 -0
  278. tools/bolt.diy/app/routes/api.github-template.ts +242 -0
  279. tools/bolt.diy/app/routes/api.github-user.ts +287 -0
  280. tools/bolt.diy/app/routes/api.gitlab-branches.ts +143 -0
  281. tools/bolt.diy/app/routes/api.gitlab-deploy.ts +67 -0
  282. tools/bolt.diy/app/routes/api.gitlab-projects.ts +105 -0
  283. tools/bolt.diy/app/routes/api.health.ts +8 -0
  284. tools/bolt.diy/app/routes/api.llmcall.ts +298 -0
  285. tools/bolt.diy/app/routes/api.mandate.ts +351 -0
  286. tools/bolt.diy/app/routes/api.mcp-check.ts +16 -0
  287. tools/bolt.diy/app/routes/api.mcp-update-config.ts +23 -0
  288. tools/bolt.diy/app/routes/api.models.$provider.ts +2 -0
  289. tools/bolt.diy/app/routes/api.models.ts +90 -0
  290. tools/bolt.diy/app/routes/api.netlify-deploy.ts +240 -0
  291. tools/bolt.diy/app/routes/api.netlify-user.ts +142 -0
  292. tools/bolt.diy/app/routes/api.supabase-user.ts +199 -0
  293. tools/bolt.diy/app/routes/api.supabase.query.ts +92 -0
  294. tools/bolt.diy/app/routes/api.supabase.ts +56 -0
  295. tools/bolt.diy/app/routes/api.supabase.variables.ts +32 -0
  296. tools/bolt.diy/app/routes/api.system.diagnostics.ts +142 -0
  297. tools/bolt.diy/app/routes/api.system.disk-info.ts +311 -0
  298. tools/bolt.diy/app/routes/api.system.git-info.ts +332 -0
  299. tools/bolt.diy/app/routes/api.update.ts +21 -0
  300. tools/bolt.diy/app/routes/api.vercel-deploy.ts +497 -0
  301. tools/bolt.diy/app/routes/api.vercel-user.ts +161 -0
  302. tools/bolt.diy/app/routes/api.workflow-status.$proposalId.ts +309 -0
  303. tools/bolt.diy/app/routes/chat.$id.tsx +8 -0
  304. tools/bolt.diy/app/routes/execute.$mandateId.tsx +432 -0
  305. tools/bolt.diy/app/routes/git.tsx +25 -0
  306. tools/bolt.diy/app/routes/observability.$mandateId.tsx +50 -0
  307. tools/bolt.diy/app/routes/webcontainer.connect.$id.tsx +32 -0
  308. tools/bolt.diy/app/routes/webcontainer.preview.$id.tsx +97 -0
  309. tools/bolt.diy/app/routes/workflow.$proposalId.tsx +170 -0
  310. tools/bolt.diy/app/styles/animations.scss +49 -0
  311. tools/bolt.diy/app/styles/components/code.scss +9 -0
  312. tools/bolt.diy/app/styles/components/editor.scss +135 -0
  313. tools/bolt.diy/app/styles/components/resize-handle.scss +30 -0
  314. tools/bolt.diy/app/styles/components/terminal.scss +3 -0
  315. tools/bolt.diy/app/styles/components/toast.scss +23 -0
  316. tools/bolt.diy/app/styles/diff-view.css +72 -0
  317. tools/bolt.diy/app/styles/index.scss +73 -0
  318. tools/bolt.diy/app/styles/variables.scss +255 -0
  319. tools/bolt.diy/app/styles/z-index.scss +37 -0
  320. tools/bolt.diy/app/types/GitHub.ts +182 -0
  321. tools/bolt.diy/app/types/GitLab.ts +103 -0
  322. tools/bolt.diy/app/types/actions.ts +85 -0
  323. tools/bolt.diy/app/types/artifact.ts +5 -0
  324. tools/bolt.diy/app/types/context.ts +26 -0
  325. tools/bolt.diy/app/types/design-scheme.ts +93 -0
  326. tools/bolt.diy/app/types/global.d.ts +13 -0
  327. tools/bolt.diy/app/types/mandate.ts +333 -0
  328. tools/bolt.diy/app/types/model.ts +25 -0
  329. tools/bolt.diy/app/types/netlify.ts +94 -0
  330. tools/bolt.diy/app/types/supabase.ts +54 -0
  331. tools/bolt.diy/app/types/template.ts +8 -0
  332. tools/bolt.diy/app/types/terminal.ts +9 -0
  333. tools/bolt.diy/app/types/theme.ts +1 -0
  334. tools/bolt.diy/app/types/vercel.ts +67 -0
  335. tools/bolt.diy/app/utils/buffer.ts +29 -0
  336. tools/bolt.diy/app/utils/classNames.ts +65 -0
  337. tools/bolt.diy/app/utils/constants.ts +147 -0
  338. tools/bolt.diy/app/utils/debounce.ts +13 -0
  339. tools/bolt.diy/app/utils/debugLogger.ts +1284 -0
  340. tools/bolt.diy/app/utils/diff.spec.ts +11 -0
  341. tools/bolt.diy/app/utils/diff.ts +117 -0
  342. tools/bolt.diy/app/utils/easings.ts +3 -0
  343. tools/bolt.diy/app/utils/fileLocks.ts +96 -0
  344. tools/bolt.diy/app/utils/fileUtils.ts +121 -0
  345. tools/bolt.diy/app/utils/folderImport.ts +73 -0
  346. tools/bolt.diy/app/utils/formatSize.ts +12 -0
  347. tools/bolt.diy/app/utils/getLanguageFromExtension.ts +24 -0
  348. tools/bolt.diy/app/utils/githubStats.ts +9 -0
  349. tools/bolt.diy/app/utils/gitlabStats.ts +54 -0
  350. tools/bolt.diy/app/utils/logger.ts +162 -0
  351. tools/bolt.diy/app/utils/markdown.ts +155 -0
  352. tools/bolt.diy/app/utils/mobile.ts +4 -0
  353. tools/bolt.diy/app/utils/os.ts +4 -0
  354. tools/bolt.diy/app/utils/path.ts +19 -0
  355. tools/bolt.diy/app/utils/projectCommands.ts +197 -0
  356. tools/bolt.diy/app/utils/promises.ts +19 -0
  357. tools/bolt.diy/app/utils/react.ts +6 -0
  358. tools/bolt.diy/app/utils/sampler.ts +49 -0
  359. tools/bolt.diy/app/utils/selectStarterTemplate.ts +255 -0
  360. tools/bolt.diy/app/utils/shell.ts +384 -0
  361. tools/bolt.diy/app/utils/stacktrace.ts +27 -0
  362. tools/bolt.diy/app/utils/stripIndent.ts +23 -0
  363. tools/bolt.diy/app/utils/terminal.ts +11 -0
  364. tools/bolt.diy/app/utils/unreachable.ts +3 -0
  365. tools/bolt.diy/app/vite-env.d.ts +2 -0
  366. tools/bolt.diy/assets/entitlements.mac.plist +25 -0
  367. tools/bolt.diy/assets/icons/icon.icns +0 -0
  368. tools/bolt.diy/assets/icons/icon.ico +0 -0
  369. tools/bolt.diy/assets/icons/icon.png +0 -0
  370. tools/bolt.diy/bindings.js +78 -0
  371. tools/bolt.diy/bindings.sh +33 -0
  372. tools/bolt.diy/docker-compose.yaml +145 -0
  373. tools/bolt.diy/electron/main/index.ts +201 -0
  374. tools/bolt.diy/electron/main/tsconfig.json +30 -0
  375. tools/bolt.diy/electron/main/ui/menu.ts +29 -0
  376. tools/bolt.diy/electron/main/ui/window.ts +54 -0
  377. tools/bolt.diy/electron/main/utils/auto-update.ts +110 -0
  378. tools/bolt.diy/electron/main/utils/constants.ts +4 -0
  379. tools/bolt.diy/electron/main/utils/cookie.ts +40 -0
  380. tools/bolt.diy/electron/main/utils/reload.ts +35 -0
  381. tools/bolt.diy/electron/main/utils/serve.ts +71 -0
  382. tools/bolt.diy/electron/main/utils/store.ts +3 -0
  383. tools/bolt.diy/electron/main/utils/vite-server.ts +44 -0
  384. tools/bolt.diy/electron/main/vite.config.ts +44 -0
  385. tools/bolt.diy/electron/preload/index.ts +22 -0
  386. tools/bolt.diy/electron/preload/tsconfig.json +7 -0
  387. tools/bolt.diy/electron/preload/vite.config.ts +31 -0
  388. tools/bolt.diy/electron-builder.yml +64 -0
  389. tools/bolt.diy/electron-update.yml +4 -0
  390. tools/bolt.diy/eslint.config.mjs +57 -0
  391. tools/bolt.diy/functions/[[path]].ts +12 -0
  392. tools/bolt.diy/icons/angular.svg +1 -0
  393. tools/bolt.diy/icons/astro.svg +8 -0
  394. tools/bolt.diy/icons/chat.svg +1 -0
  395. tools/bolt.diy/icons/expo-brand.svg +1 -0
  396. tools/bolt.diy/icons/expo.svg +4 -0
  397. tools/bolt.diy/icons/logo-text.svg +1 -0
  398. tools/bolt.diy/icons/logo.svg +4 -0
  399. tools/bolt.diy/icons/mcp.svg +1 -0
  400. tools/bolt.diy/icons/nativescript.svg +1 -0
  401. tools/bolt.diy/icons/netlify.svg +10 -0
  402. tools/bolt.diy/icons/nextjs.svg +1 -0
  403. tools/bolt.diy/icons/nuxt.svg +1 -0
  404. tools/bolt.diy/icons/qwik.svg +1 -0
  405. tools/bolt.diy/icons/react.svg +1 -0
  406. tools/bolt.diy/icons/remix.svg +24 -0
  407. tools/bolt.diy/icons/remotion.svg +1 -0
  408. tools/bolt.diy/icons/shadcn.svg +21 -0
  409. tools/bolt.diy/icons/slidev.svg +60 -0
  410. tools/bolt.diy/icons/solidjs.svg +1 -0
  411. tools/bolt.diy/icons/stars.svg +1 -0
  412. tools/bolt.diy/icons/svelte.svg +1 -0
  413. tools/bolt.diy/icons/typescript.svg +1 -0
  414. tools/bolt.diy/icons/vite.svg +1 -0
  415. tools/bolt.diy/icons/vue.svg +1 -0
  416. tools/bolt.diy/load-context.ts +9 -0
  417. tools/bolt.diy/notarize.cjs +31 -0
  418. tools/bolt.diy/package.json +218 -0
  419. tools/bolt.diy/playwright.config.preview.ts +35 -0
  420. tools/bolt.diy/pre-start.cjs +26 -0
  421. tools/bolt.diy/public/apple-touch-icon-precomposed.png +0 -0
  422. tools/bolt.diy/public/apple-touch-icon.png +0 -0
  423. tools/bolt.diy/public/favicon.ico +0 -0
  424. tools/bolt.diy/public/favicon.svg +4 -0
  425. tools/bolt.diy/public/icons/AmazonBedrock.svg +1 -0
  426. tools/bolt.diy/public/icons/Anthropic.svg +4 -0
  427. tools/bolt.diy/public/icons/Cohere.svg +4 -0
  428. tools/bolt.diy/public/icons/Deepseek.svg +5 -0
  429. tools/bolt.diy/public/icons/Default.svg +4 -0
  430. tools/bolt.diy/public/icons/Google.svg +4 -0
  431. tools/bolt.diy/public/icons/Groq.svg +4 -0
  432. tools/bolt.diy/public/icons/HuggingFace.svg +4 -0
  433. tools/bolt.diy/public/icons/Hyperbolic.svg +3 -0
  434. tools/bolt.diy/public/icons/LMStudio.svg +5 -0
  435. tools/bolt.diy/public/icons/Mistral.svg +4 -0
  436. tools/bolt.diy/public/icons/Ollama.svg +4 -0
  437. tools/bolt.diy/public/icons/OpenAI.svg +4 -0
  438. tools/bolt.diy/public/icons/OpenAILike.svg +4 -0
  439. tools/bolt.diy/public/icons/OpenRouter.svg +4 -0
  440. tools/bolt.diy/public/icons/Perplexity.svg +4 -0
  441. tools/bolt.diy/public/icons/Together.svg +4 -0
  442. tools/bolt.diy/public/icons/xAI.svg +5 -0
  443. tools/bolt.diy/public/inspector-script.js +292 -0
  444. tools/bolt.diy/public/logo-dark-styled.png +0 -0
  445. tools/bolt.diy/public/logo-dark.png +0 -0
  446. tools/bolt.diy/public/logo-light-styled.png +0 -0
  447. tools/bolt.diy/public/logo-light.png +0 -0
  448. tools/bolt.diy/public/logo.svg +15 -0
  449. tools/bolt.diy/public/social_preview_index.jpg +0 -0
  450. tools/bolt.diy/scripts/clean.js +45 -0
  451. tools/bolt.diy/scripts/electron-dev.mjs +181 -0
  452. tools/bolt.diy/scripts/setup-env.sh +41 -0
  453. tools/bolt.diy/scripts/update-imports.sh +7 -0
  454. tools/bolt.diy/scripts/update.sh +52 -0
  455. tools/bolt.diy/services/execution-governor/Dockerfile +41 -0
  456. tools/bolt.diy/services/execution-governor/config.ts +42 -0
  457. tools/bolt.diy/services/execution-governor/index.ts +683 -0
  458. tools/bolt.diy/services/execution-governor/metrics.ts +141 -0
  459. tools/bolt.diy/services/execution-governor/package.json +31 -0
  460. tools/bolt.diy/services/execution-governor/priority-queue.ts +139 -0
  461. tools/bolt.diy/services/execution-governor/tsconfig.json +21 -0
  462. tools/bolt.diy/services/execution-governor/types.ts +145 -0
  463. tools/bolt.diy/services/headless-executor/Dockerfile +43 -0
  464. tools/bolt.diy/services/headless-executor/executor.ts +210 -0
  465. tools/bolt.diy/services/headless-executor/index.ts +323 -0
  466. tools/bolt.diy/services/headless-executor/package.json +27 -0
  467. tools/bolt.diy/services/headless-executor/tsconfig.json +21 -0
  468. tools/bolt.diy/services/headless-executor/types.ts +38 -0
  469. tools/bolt.diy/test-workflows.sh +240 -0
  470. tools/bolt.diy/tests/integration/corporate-swarm.test.ts +208 -0
  471. tools/bolt.diy/tests/mandates/budget-limited.json +34 -0
  472. tools/bolt.diy/tests/mandates/complex.json +53 -0
  473. tools/bolt.diy/tests/mandates/constraint-enforced.json +36 -0
  474. tools/bolt.diy/tests/mandates/simple.json +35 -0
  475. tools/bolt.diy/tsconfig.json +37 -0
  476. tools/bolt.diy/types/istextorbinary.d.ts +15 -0
  477. tools/bolt.diy/uno.config.ts +279 -0
  478. tools/bolt.diy/vite-electron.config.ts +76 -0
  479. tools/bolt.diy/vite.config.ts +112 -0
  480. tools/bolt.diy/worker-configuration.d.ts +22 -0
  481. tools/bolt.diy/wrangler.toml +6 -0
  482. tools/code_generator.py +461 -0
  483. tools/file_operations.py +465 -0
  484. tools/mandate_generator.py +337 -0
  485. tools/mcpClientUtils.py +1216 -0
  486. tools/sensors.py +285 -0
  487. utils/Agent_types.py +15 -0
  488. utils/AnyToStr.py +0 -0
  489. utils/HHCS.py +277 -0
  490. utils/__init__.py +30 -0
  491. utils/agent.py +3627 -0
  492. utils/aop.py +2948 -0
  493. utils/canonical.py +143 -0
  494. utils/conversation.py +1195 -0
  495. utils/doctrine_versioning +230 -0
  496. utils/formatter.py +474 -0
  497. utils/ledger.py +311 -0
  498. utils/out_types.py +16 -0
  499. utils/rollback.py +339 -0
  500. utils/router.py +929 -0
  501. utils/tui.py +1908 -0
@@ -0,0 +1,213 @@
1
+ """
2
+ Drag-and-Drop Feature Composition Examples
3
+
4
+ Demonstrates how to use the template framework modules as "drag-and-drop" features
5
+ to quickly compose specialized agents.
6
+ """
7
+
8
+ from typing import Dict, Any, List, Optional
9
+ from templates.base_specialized_agent import BaseSpecializedAgent
10
+ from templates.feature_mixins import (
11
+ GraphFeatureMixin,
12
+ PredictionFeatureMixin,
13
+ StatisticsFeatureMixin,
14
+ LLMFeatureMixin,
15
+ FullFeatureMixin
16
+ )
17
+ from templates.module_registry import compose_agent, ModuleRegistry
18
+ from templates.llm_integration import create_default_schema
19
+
20
+
21
+ # ============================================================================
22
+ # Example 1: Minimal Agent (LLM only)
23
+ # ============================================================================
24
+
25
+ class MinimalAgent(BaseSpecializedAgent, LLMFeatureMixin):
26
+ """Minimal agent with just LLM capabilities."""
27
+
28
+ def __init__(self, **kwargs):
29
+ super().__init__(**kwargs)
30
+ self.init_llm_feature()
31
+
32
+ def _get_domain_schema(self):
33
+ return create_default_schema(
34
+ function_name="minimal_analysis",
35
+ description="Minimal analysis",
36
+ properties={"result": {"type": "string"}}
37
+ )
38
+
39
+ def _build_domain_prompt(self, task: str) -> str:
40
+ return f"Analyze: {task}"
41
+
42
+ def _domain_specific_setup(self):
43
+ pass
44
+
45
+
46
+ # ============================================================================
47
+ # Example 2: Graph + LLM Agent
48
+ # ============================================================================
49
+
50
+ class GraphLLMAgent(BaseSpecializedAgent, GraphFeatureMixin, LLMFeatureMixin):
51
+ """Agent with graph management and LLM capabilities."""
52
+
53
+ def __init__(self, variables=None, edges=None, **kwargs):
54
+ super().__init__(**kwargs)
55
+ self.init_graph_feature(variables=variables, edges=edges)
56
+ self.init_llm_feature()
57
+
58
+ def _get_domain_schema(self):
59
+ return create_default_schema(
60
+ function_name="graph_analysis",
61
+ description="Graph-based analysis",
62
+ properties={
63
+ "analysis": {"type": "string"},
64
+ "graph_info": {"type": "object"}
65
+ }
66
+ )
67
+
68
+ def _build_domain_prompt(self, task: str) -> str:
69
+ return f"Task: {task}\nGraph has {len(self.get_nodes())} nodes."
70
+
71
+ def _domain_specific_setup(self):
72
+ pass
73
+
74
+
75
+ # ============================================================================
76
+ # Example 3: Full-Featured Agent (All Features)
77
+ # ============================================================================
78
+
79
+ class FullFeaturedAgent(BaseSpecializedAgent, FullFeatureMixin):
80
+ """Agent with all features - graph, prediction, statistics, LLM."""
81
+
82
+ def __init__(self, variables=None, edges=None, **kwargs):
83
+ super().__init__(**kwargs)
84
+ self.init_all_features(
85
+ variables=variables,
86
+ edges=edges,
87
+ use_nonlinear=True
88
+ )
89
+
90
+ def _get_domain_schema(self):
91
+ return create_default_schema(
92
+ function_name="full_analysis",
93
+ description="Full-featured analysis",
94
+ properties={
95
+ "analysis": {"type": "string"},
96
+ "predictions": {"type": "object"},
97
+ "statistics": {"type": "object"}
98
+ }
99
+ )
100
+
101
+ def _build_domain_prompt(self, task: str) -> str:
102
+ return f"Full analysis: {task}"
103
+
104
+ def _domain_specific_setup(self):
105
+ pass
106
+
107
+
108
+ # ============================================================================
109
+ # Example 4: Custom Composition (Pick and Choose)
110
+ # ============================================================================
111
+
112
+ class CustomAgent(BaseSpecializedAgent, GraphFeatureMixin, PredictionFeatureMixin):
113
+ """Custom agent with only graph and prediction (no statistics, no LLM)."""
114
+
115
+ def __init__(self, variables=None, edges=None, **kwargs):
116
+ super().__init__(**kwargs)
117
+ self.init_graph_feature(variables=variables, edges=edges)
118
+ self.init_prediction_feature(use_nonlinear=False) # Linear only
119
+
120
+ def _get_domain_schema(self):
121
+ return None # No LLM schema needed
122
+
123
+ def _build_domain_prompt(self, task: str) -> str:
124
+ return "" # Not used without LLM
125
+
126
+ def _domain_specific_setup(self):
127
+ pass
128
+
129
+ def run(self, initial_state: Dict[str, float], interventions: Optional[Dict[str, float]] = None):
130
+ """Run predictions without LLM."""
131
+ return self.predict(initial_state, interventions or {})
132
+
133
+
134
+ # ============================================================================
135
+ # Example 5: Using Module Registry (Programmatic Composition)
136
+ # ============================================================================
137
+
138
+ def create_agent_with_features(features: List[str], **configs):
139
+ """
140
+ Create an agent with specified features using the registry.
141
+
142
+ Args:
143
+ features: List of feature names ('graph', 'prediction', 'statistics', 'llm')
144
+ **configs: Configuration for each feature
145
+
146
+ Returns:
147
+ Agent class
148
+ """
149
+ # Define a base agent
150
+ class DynamicAgent(BaseSpecializedAgent):
151
+ def _get_domain_schema(self):
152
+ return create_default_schema(
153
+ function_name="dynamic_analysis",
154
+ description="Dynamic analysis",
155
+ properties={"result": {"type": "string"}}
156
+ )
157
+
158
+ def _build_domain_prompt(self, task: str) -> str:
159
+ return f"Task: {task}"
160
+
161
+ def _domain_specific_setup(self):
162
+ pass
163
+
164
+ # Compose with features
165
+ return compose_agent(
166
+ DynamicAgent,
167
+ features=features,
168
+ feature_configs=configs
169
+ )
170
+
171
+
172
+ # ============================================================================
173
+ # Usage Examples
174
+ # ============================================================================
175
+
176
+ if __name__ == "__main__":
177
+ # Example 1: Minimal agent
178
+ minimal = MinimalAgent(agent_name="minimal")
179
+ # result = minimal.analyze_with_llm("Analyze this problem")
180
+
181
+ # Example 2: Graph + LLM
182
+ graph_llm = GraphLLMAgent(
183
+ agent_name="graph-llm",
184
+ variables=["A", "B", "C"],
185
+ edges=[("A", "B"), ("B", "C")]
186
+ )
187
+ # result = graph_llm.analyze_with_llm("Analyze the graph")
188
+
189
+ # Example 3: Full featured
190
+ full = FullFeaturedAgent(
191
+ agent_name="full",
192
+ variables=["X", "Y", "Z"],
193
+ edges=[("X", "Y"), ("Y", "Z")]
194
+ )
195
+ # predictions = full.predict({"X": 1.0}, {"X": 1.5})
196
+
197
+ # Example 4: Custom composition
198
+ custom = CustomAgent(
199
+ variables=["A", "B"],
200
+ edges=[("A", "B")]
201
+ )
202
+ # predictions = custom.run({"A": 1.0}, {"A": 2.0})
203
+
204
+ # Example 5: Programmatic composition
205
+ AgentClass = create_agent_with_features(
206
+ features=['graph', 'prediction'],
207
+ graph={'graph_type': 'causal'},
208
+ prediction={'use_nonlinear': True}
209
+ )
210
+ # agent = AgentClass(agent_name="dynamic")
211
+
212
+ print("All examples created successfully!")
213
+
@@ -0,0 +1,207 @@
1
+ """
2
+ Example: Logistics Agent Template
3
+
4
+ This demonstrates how to create a logistics/supply chain agent using the template framework.
5
+ """
6
+
7
+ from typing import Dict, Any, List, Tuple, Optional, Union
8
+ from templates.base_specialized_agent import BaseSpecializedAgent
9
+ from templates.graph_management import GraphManager
10
+ from templates.prediction_framework import PredictionFramework
11
+ from templates.statistical_methods import StatisticalMethods
12
+ from templates.llm_integration import LLMIntegration, create_default_schema
13
+
14
+
15
+ class LogisticsAgentTemplate(BaseSpecializedAgent):
16
+ """
17
+ Example logistics agent using the template framework.
18
+
19
+ This agent can reason about supply chain relationships, predict delivery times,
20
+ optimize routes, and generate logistics strategies.
21
+ """
22
+
23
+ def __init__(
24
+ self,
25
+ supply_chain_nodes: Optional[List[str]] = None,
26
+ supply_chain_edges: Optional[List[Tuple[str, str]]] = None,
27
+ max_loops: Optional[Union[int, str]] = 3,
28
+ agent_name: str = "logistics-agent",
29
+ model_name: str = "gpt-4o",
30
+ **kwargs,
31
+ ):
32
+ """
33
+ Initialize the logistics agent.
34
+
35
+ Args:
36
+ supply_chain_nodes: List of supply chain node names (e.g., ['warehouse', 'transport', 'delivery'])
37
+ supply_chain_edges: List of (source, target) relationship tuples
38
+ max_loops: Maximum reasoning loops
39
+ agent_name: Agent identifier
40
+ model_name: LLM model name
41
+ **kwargs: Additional arguments
42
+ """
43
+ super().__init__(
44
+ max_loops=max_loops,
45
+ agent_name=agent_name,
46
+ agent_description="Logistics and Supply Chain Analysis Agent",
47
+ model_name=model_name,
48
+ **kwargs,
49
+ )
50
+
51
+ # Initialize graph manager for supply chain
52
+ self.graph_manager = GraphManager(graph_type="supply_chain")
53
+
54
+ # Initialize prediction framework
55
+ self.prediction_framework = PredictionFramework(
56
+ graph_manager=self.graph_manager,
57
+ use_nonlinear=False, # Logistics often linear
58
+ )
59
+
60
+ # Initialize statistical methods
61
+ self.statistical_methods = StatisticalMethods(
62
+ graph_manager=self.graph_manager,
63
+ prediction_framework=self.prediction_framework,
64
+ standardization_stats=self.prediction_framework.standardization_stats,
65
+ )
66
+
67
+ # Initialize LLM integration
68
+ self.llm_integration = LLMIntegration(
69
+ agent=self,
70
+ max_loops=self.domain_max_loops if isinstance(self.domain_max_loops, int) else 3,
71
+ )
72
+
73
+ # Add supply chain nodes and edges
74
+ if supply_chain_nodes:
75
+ self.graph_manager.add_nodes_from(supply_chain_nodes)
76
+
77
+ if supply_chain_edges:
78
+ for source, target in supply_chain_edges:
79
+ self.add_supply_chain_relationship(source, target)
80
+
81
+ def _get_domain_schema(self) -> Optional[Dict[str, Any]]:
82
+ """Return the logistics analysis schema."""
83
+ return create_default_schema(
84
+ function_name="generate_logistics_analysis",
85
+ description="Generates logistics analysis and optimization recommendations",
86
+ properties={
87
+ "supply_chain_analysis": {
88
+ "type": "string",
89
+ "description": "Analysis of supply chain efficiency and bottlenecks"
90
+ },
91
+ "route_optimization": {
92
+ "type": "string",
93
+ "description": "Route optimization recommendations"
94
+ },
95
+ "delivery_scenarios": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "properties": {
100
+ "scenario_name": {"type": "string"},
101
+ "interventions": {"type": "object"},
102
+ "expected_delivery_times": {"type": "object"},
103
+ "cost_impact": {"type": "object"}
104
+ }
105
+ },
106
+ "description": "Different delivery scenarios and their impacts"
107
+ },
108
+ "optimization_recommendations": {
109
+ "type": "string",
110
+ "description": "Recommendations for supply chain optimization"
111
+ }
112
+ },
113
+ required=[
114
+ "supply_chain_analysis",
115
+ "route_optimization",
116
+ "delivery_scenarios",
117
+ "optimization_recommendations"
118
+ ]
119
+ )
120
+
121
+ def _build_domain_prompt(self, task: str) -> str:
122
+ """Build a logistics analysis prompt."""
123
+ return (
124
+ f"You are a Logistics and Supply Chain Analysis Agent.\n"
125
+ f"Task: {task}\n"
126
+ f"Current supply chain model has {len(self.graph_manager.get_nodes())} nodes and "
127
+ f"{len(self.graph_manager.get_edges())} relationships.\n"
128
+ f"Analyze the supply chain and provide optimization recommendations.\n"
129
+ )
130
+
131
+ def _domain_specific_setup(self) -> None:
132
+ """Set up logistics-specific attributes."""
133
+ # Logistics-specific setup (e.g., capacity constraints, service levels)
134
+ self.capacity_constraints: Dict[str, float] = {}
135
+ self.service_level_targets: Dict[str, float] = {}
136
+
137
+ def add_supply_chain_relationship(
138
+ self,
139
+ source: str,
140
+ target: str,
141
+ lead_time: float = 0.0,
142
+ capacity: float = 1.0,
143
+ confidence: float = 1.0
144
+ ) -> None:
145
+ """Add a supply chain relationship."""
146
+ self.graph_manager.add_relationship(
147
+ source=source,
148
+ target=target,
149
+ strength=lead_time,
150
+ confidence=confidence,
151
+ capacity=capacity,
152
+ )
153
+
154
+ def predict_delivery_outcomes(
155
+ self,
156
+ current_state: Dict[str, float],
157
+ interventions: Dict[str, float]
158
+ ) -> Dict[str, float]:
159
+ """Predict delivery outcomes given current state and interventions."""
160
+ return self.prediction_framework.predict_outcomes(
161
+ current_state, interventions
162
+ )
163
+
164
+ def generate_delivery_scenarios(
165
+ self,
166
+ current_state: Dict[str, float],
167
+ target_nodes: List[str],
168
+ max_scenarios: int = 5
169
+ ) -> List:
170
+ """Generate delivery scenarios."""
171
+ return self.prediction_framework.generate_counterfactual_scenarios(
172
+ current_state, target_nodes, max_scenarios
173
+ )
174
+
175
+ def run(
176
+ self,
177
+ task: Optional[Union[str, Any]] = None,
178
+ supply_chain_state: Optional[Dict[str, float]] = None,
179
+ **kwargs,
180
+ ) -> Dict[str, Any]:
181
+ """
182
+ Run logistics analysis.
183
+
184
+ Args:
185
+ task: Logistics task or question
186
+ supply_chain_state: Current supply chain state dictionary
187
+ **kwargs: Additional arguments
188
+
189
+ Returns:
190
+ Dictionary with logistics analysis results
191
+ """
192
+ if task and isinstance(task, str) and supply_chain_state is None:
193
+ return self.llm_integration.run_llm_domain_analysis(
194
+ task,
195
+ build_prompt_fn=self._build_domain_prompt,
196
+ )
197
+
198
+ # Supply chain state analysis
199
+ if supply_chain_state:
200
+ return {
201
+ "supply_chain_state": supply_chain_state,
202
+ "predictions": self.prediction_framework.predict_outcomes(supply_chain_state, {}),
203
+ "scenarios": self.generate_delivery_scenarios(supply_chain_state, list(supply_chain_state.keys())),
204
+ }
205
+
206
+ return {"error": "Either task or supply_chain_state must be provided"}
207
+
@@ -0,0 +1,206 @@
1
+ """
2
+ Example: Trading Agent Template
3
+
4
+ This demonstrates how to create a trading/financial agent using the template framework.
5
+ """
6
+
7
+ from typing import Dict, Any, List, Tuple, Optional, Union
8
+ from templates.base_specialized_agent import BaseSpecializedAgent
9
+ from templates.graph_management import GraphManager
10
+ from templates.prediction_framework import PredictionFramework
11
+ from templates.statistical_methods import StatisticalMethods
12
+ from templates.llm_integration import LLMIntegration, create_default_schema
13
+
14
+
15
+ class TradingAgentTemplate(BaseSpecializedAgent):
16
+ """
17
+ Example trading agent using the template framework.
18
+
19
+ This agent can reason about market relationships, predict price movements,
20
+ and generate trading strategies.
21
+ """
22
+
23
+ def __init__(
24
+ self,
25
+ market_variables: Optional[List[str]] = None,
26
+ market_relationships: Optional[List[Tuple[str, str]]] = None,
27
+ max_loops: Optional[Union[int, str]] = 3,
28
+ agent_name: str = "trading-agent",
29
+ model_name: str = "gpt-4o",
30
+ **kwargs,
31
+ ):
32
+ """
33
+ Initialize the trading agent.
34
+
35
+ Args:
36
+ market_variables: List of market variable names (e.g., ['SPY', 'VIX', 'USD'])
37
+ market_relationships: List of (source, target) relationship tuples
38
+ max_loops: Maximum reasoning loops
39
+ agent_name: Agent identifier
40
+ model_name: LLM model name
41
+ **kwargs: Additional arguments
42
+ """
43
+ super().__init__(
44
+ max_loops=max_loops,
45
+ agent_name=agent_name,
46
+ agent_description="Trading and Financial Analysis Agent",
47
+ model_name=model_name,
48
+ **kwargs,
49
+ )
50
+
51
+ # Initialize graph manager for market relationships
52
+ self.graph_manager = GraphManager(graph_type="market")
53
+
54
+ # Initialize prediction framework
55
+ self.prediction_framework = PredictionFramework(
56
+ graph_manager=self.graph_manager,
57
+ use_nonlinear=True, # Markets are nonlinear
58
+ )
59
+
60
+ # Initialize statistical methods
61
+ self.statistical_methods = StatisticalMethods(
62
+ graph_manager=self.graph_manager,
63
+ prediction_framework=self.prediction_framework,
64
+ standardization_stats=self.prediction_framework.standardization_stats,
65
+ )
66
+
67
+ # Initialize LLM integration
68
+ self.llm_integration = LLMIntegration(
69
+ agent=self,
70
+ max_loops=self.domain_max_loops if isinstance(self.domain_max_loops, int) else 3,
71
+ )
72
+
73
+ # Add market variables and relationships
74
+ if market_variables:
75
+ self.graph_manager.add_nodes_from(market_variables)
76
+
77
+ if market_relationships:
78
+ for source, target in market_relationships:
79
+ self.add_market_relationship(source, target)
80
+
81
+ def _get_domain_schema(self) -> Optional[Dict[str, Any]]:
82
+ """Return the trading analysis schema."""
83
+ return create_default_schema(
84
+ function_name="generate_trading_analysis",
85
+ description="Generates trading analysis and strategy recommendations",
86
+ properties={
87
+ "market_analysis": {
88
+ "type": "string",
89
+ "description": "Analysis of current market conditions and trends"
90
+ },
91
+ "risk_assessment": {
92
+ "type": "string",
93
+ "description": "Assessment of market risks and volatility"
94
+ },
95
+ "trading_strategies": {
96
+ "type": "array",
97
+ "items": {
98
+ "type": "object",
99
+ "properties": {
100
+ "strategy_name": {"type": "string"},
101
+ "entry_signals": {"type": "object"},
102
+ "exit_signals": {"type": "object"},
103
+ "risk_parameters": {"type": "object"},
104
+ "expected_returns": {"type": "object"}
105
+ }
106
+ },
107
+ "description": "Recommended trading strategies"
108
+ },
109
+ "portfolio_recommendations": {
110
+ "type": "string",
111
+ "description": "Portfolio allocation recommendations"
112
+ }
113
+ },
114
+ required=[
115
+ "market_analysis",
116
+ "risk_assessment",
117
+ "trading_strategies",
118
+ "portfolio_recommendations"
119
+ ]
120
+ )
121
+
122
+ def _build_domain_prompt(self, task: str) -> str:
123
+ """Build a trading analysis prompt."""
124
+ return (
125
+ f"You are a Trading and Financial Analysis Agent.\n"
126
+ f"Task: {task}\n"
127
+ f"Current market model has {len(self.graph_manager.get_nodes())} variables and "
128
+ f"{len(self.graph_manager.get_edges())} relationships.\n"
129
+ f"Analyze the market conditions and provide trading recommendations.\n"
130
+ )
131
+
132
+ def _domain_specific_setup(self) -> None:
133
+ """Set up trading-specific attributes."""
134
+ # Trading-specific setup (e.g., risk limits, position sizing)
135
+ self.risk_limits: Dict[str, float] = {}
136
+ self.position_sizing_rules: Dict[str, Any] = {}
137
+
138
+ def add_market_relationship(
139
+ self,
140
+ source: str,
141
+ target: str,
142
+ correlation: float = 0.0,
143
+ confidence: float = 1.0
144
+ ) -> None:
145
+ """Add a market relationship (e.g., correlation, lead-lag)."""
146
+ self.graph_manager.add_relationship(
147
+ source=source,
148
+ target=target,
149
+ strength=correlation,
150
+ confidence=confidence,
151
+ )
152
+
153
+ def predict_market_outcomes(
154
+ self,
155
+ current_market_state: Dict[str, float],
156
+ interventions: Dict[str, float]
157
+ ) -> Dict[str, float]:
158
+ """Predict market outcomes given current state and interventions."""
159
+ return self.prediction_framework.predict_outcomes(
160
+ current_market_state, interventions
161
+ )
162
+
163
+ def generate_trading_scenarios(
164
+ self,
165
+ current_state: Dict[str, float],
166
+ target_assets: List[str],
167
+ max_scenarios: int = 5
168
+ ) -> List:
169
+ """Generate trading scenarios."""
170
+ return self.prediction_framework.generate_counterfactual_scenarios(
171
+ current_state, target_assets, max_scenarios
172
+ )
173
+
174
+ def run(
175
+ self,
176
+ task: Optional[Union[str, Any]] = None,
177
+ market_state: Optional[Dict[str, float]] = None,
178
+ **kwargs,
179
+ ) -> Dict[str, Any]:
180
+ """
181
+ Run trading analysis.
182
+
183
+ Args:
184
+ task: Trading task or question
185
+ market_state: Current market state dictionary
186
+ **kwargs: Additional arguments
187
+
188
+ Returns:
189
+ Dictionary with trading analysis results
190
+ """
191
+ if task and isinstance(task, str) and market_state is None:
192
+ return self.llm_integration.run_llm_domain_analysis(
193
+ task,
194
+ build_prompt_fn=self._build_domain_prompt,
195
+ )
196
+
197
+ # Market state analysis
198
+ if market_state:
199
+ return {
200
+ "market_state": market_state,
201
+ "predictions": self.prediction_framework.predict_outcomes(market_state, {}),
202
+ "scenarios": self.generate_trading_scenarios(market_state, list(market_state.keys())),
203
+ }
204
+
205
+ return {"error": "Either task or market_state must be provided"}
206
+