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,705 @@
1
+ """
2
+ Pridnestrovia (Transnistria) CRCA-SD Example
3
+
4
+ This example models Pridnestrovia's socioeconomic dynamics using real data as of December 20, 2025.
5
+ Pridnestrovia is a self-proclaimed independent region between Moldova and Ukraine, with limited
6
+ international recognition, which affects its economic and social indicators.
7
+
8
+ Real Data Sources (as of December 2025):
9
+ - Population: ~368,000 (March 2024 estimate, adjusted for decline)
10
+ - GDP: ~$1.2 billion (2021 estimate, nominal)
11
+ - GDP per capita: ~$2,584
12
+ - Currency: Transnistrian ruble (PRB), ~11 PRB = 1 USD
13
+ - Major industries: Steel, textiles, electricity generation
14
+ - Economic challenges: Limited international recognition, trade primarily with Russia/CIS
15
+ - Weather (Dec 20, 2025): Mostly cloudy, 31-37°F (0-3°C)
16
+
17
+ This example demonstrates:
18
+ 1. Initializing state with real Pridnestrovia data
19
+ 2. Modeling economic constraints (trade isolation, energy dependence)
20
+ 3. Board governance for policy decisions
21
+ 4. Scenario analysis (trade embargo, energy crisis, etc.)
22
+ 5. MPC optimization under uncertainty
23
+ """
24
+
25
+ from typing import List, Dict, Optional
26
+ import numpy as np
27
+ from loguru import logger
28
+
29
+ # Import CRCA-SD components
30
+ from crca_sd.crca_sd_core import (
31
+ StateVector,
32
+ ControlVector,
33
+ DynamicsModel,
34
+ ConstraintChecker,
35
+ ForwardSimulator,
36
+ )
37
+
38
+ from crca_sd.crca_sd_mpc import (
39
+ ObjectiveVector,
40
+ CVaRComputer,
41
+ MPCSolver,
42
+ ScenarioGenerator,
43
+ StabilityEnforcer,
44
+ ParetoExtractor,
45
+ )
46
+
47
+ from crca_sd.crca_sd_governance import (
48
+ BoardMember,
49
+ Board,
50
+ BoardType,
51
+ Arbitration,
52
+ GovernanceSystem,
53
+ LogisticsNetwork,
54
+ Visualization,
55
+ MetricsCollector,
56
+ )
57
+
58
+
59
+ def initialize_pridnestrovia_state() -> StateVector:
60
+ """
61
+ Initialize state vector with real Pridnestrovia data (December 2025).
62
+
63
+ Data sources:
64
+ - Population: 367,776 (March 2024) -> ~360,000 (Dec 2025, accounting for decline)
65
+ - GDP: $1.201 billion (2021) -> ~$1.3 billion (2025 estimate, adjusted for inflation)
66
+ - GDP per capita: $2,584 (2021) -> ~$3,600 (2025 estimate)
67
+ - Unemployment: ~7% (estimated, higher than Moldova's 5.4%)
68
+ - Literacy: ~99% (high, Soviet legacy)
69
+ - Infrastructure: Moderate (aging Soviet-era infrastructure)
70
+
71
+ Returns:
72
+ StateVector: Initialized state vector
73
+ """
74
+ # Population: declining due to emigration
75
+ population = 360000.0 # ~360k (down from 367k in 2024)
76
+
77
+ # Labor force: ~50% participation rate (typical for post-Soviet region)
78
+ labor_force = population * 0.50
79
+
80
+ # Unemployment: higher due to economic isolation
81
+ unemployment_rate = 0.07 # 7% (estimated, higher than Moldova)
82
+
83
+ # Wage: low due to limited economic opportunities
84
+ # Average monthly wage ~$300-400 USD equivalent
85
+ wage_proxy = 0.35 # Normalized proxy (low)
86
+
87
+ # Social stability: moderate (unrecognized status creates uncertainty)
88
+ stability = 0.65 # 65% (moderate, affected by political status)
89
+
90
+ # Literacy: very high (Soviet education legacy)
91
+ literacy = 0.99 # 99% (very high)
92
+
93
+ # Education capacity: moderate (Soviet-era institutions)
94
+ education_capacity = 15000.0 # Seats/teachers
95
+
96
+ # Healthcare capacity: limited (aging infrastructure)
97
+ healthcare_capacity = 8000.0 # Beds/staff
98
+
99
+ # Capital stock: industrial (steel, textiles, electricity)
100
+ # Estimated at ~$800M in productive capital
101
+ capital_stock = 800000000.0 # $800M
102
+
103
+ # Infrastructure: aging Soviet-era, moderate condition
104
+ infrastructure_health = 0.65 # 65% (moderate, needs maintenance)
105
+
106
+ # Transport capacity: limited (landlocked, trade isolation)
107
+ transport_capacity = 5000.0 # ton-km/day (limited)
108
+
109
+ # Energy stock: dependent on imports (Russia, Ukraine)
110
+ energy_stock = 20000.0 # Limited reserves
111
+
112
+ # Food stock: moderate (agricultural region)
113
+ food_stock = 15000.0 # Moderate reserves
114
+
115
+ # Materials stock: industrial inputs (steel production)
116
+ materials_stock = 10000.0 # Industrial materials
117
+
118
+ # Ecological damage: moderate (industrial pollution)
119
+ ecological_damage = 50000.0 # Accumulated damage
120
+
121
+ # GDP proxy: ~$1.3B (2025 estimate)
122
+ gdp_proxy = 1300000000.0 # $1.3B
123
+
124
+ state = StateVector(
125
+ P=population,
126
+ L=labor_force,
127
+ U=unemployment_rate,
128
+ W=wage_proxy,
129
+ S=stability,
130
+ literacy=literacy,
131
+ Ecap=education_capacity,
132
+ Hcap=healthcare_capacity,
133
+ K=capital_stock,
134
+ I=infrastructure_health,
135
+ Tcap=transport_capacity,
136
+ E_stock=energy_stock,
137
+ F_stock=food_stock,
138
+ M_stock=materials_stock,
139
+ C=ecological_damage,
140
+ Y=gdp_proxy,
141
+ )
142
+
143
+ logger.info("Initialized Pridnestrovia state:")
144
+ logger.info(f" Population: {population:,.0f}")
145
+ logger.info(f" GDP: ${gdp_proxy/1e9:.2f}B")
146
+ logger.info(f" Unemployment: {unemployment_rate:.1%}")
147
+ logger.info(f" Stability: {stability:.1%}")
148
+
149
+ return state
150
+
151
+
152
+ def create_pridnestrovia_dynamics() -> DynamicsModel:
153
+ """
154
+ Create dynamics model with Pridnestrovia-specific parameters.
155
+
156
+ Adjustments for Pridnestrovia:
157
+ - Higher capital depreciation (aging industrial base)
158
+ - Lower investment efficiency (limited access to international markets)
159
+ - Higher infrastructure decay (aging Soviet-era infrastructure)
160
+ - Lower trade efficiency (isolation)
161
+
162
+ Returns:
163
+ DynamicsModel: Configured dynamics model
164
+ """
165
+ return DynamicsModel(
166
+ delta_K=0.06, # 6% capital depreciation (aging industrial base)
167
+ delta_I=0.03, # 3% infrastructure decay (faster than typical)
168
+ alpha=0.35, # 35% capital share (industrial economy)
169
+ kappa_K=0.65, # 65% investment efficiency (lower due to isolation)
170
+ kappa_I=0.60, # 60% maintenance efficiency (aging infrastructure)
171
+ kappa_literacy=0.08, # 8% literacy diffusion (already high)
172
+ delta_literacy=0.005, # 0.5% literacy disruption (low, good education)
173
+ alpha_U=0.12, # 12% unemployment adjustment (slower, limited opportunities)
174
+ alpha_rho=0.04, # 4% labor participation adjustment
175
+ )
176
+
177
+
178
+ def create_pridnestrovia_scenarios() -> List[List[Dict[str, float]]]:
179
+ """
180
+ Generate realistic scenarios for Pridnestrovia.
181
+
182
+ Scenarios reflect real risks:
183
+ 1. Trade embargo (Russia/Ukraine tensions)
184
+ 2. Energy crisis (gas supply disruption)
185
+ 3. Economic isolation (sanctions)
186
+ 4. Normal operation (baseline)
187
+
188
+ Returns:
189
+ List[List[Dict[str, float]]]: List of scenario sequences
190
+ """
191
+ generator = ScenarioGenerator()
192
+ scenarios = []
193
+
194
+ # Scenario 1: Baseline (normal operation)
195
+ baseline = generator.generate_gaussian(
196
+ n_scenarios=1,
197
+ horizon=12,
198
+ mean={
199
+ "demand_shock": 0.0,
200
+ "trade_shock": 0.0,
201
+ "productivity_shock": 1.0,
202
+ "disaster_shock": 0.0,
203
+ "labor_shock": 0.0,
204
+ "unemployment_shock": 0.0,
205
+ "energy_import": 500.0, # Normal energy imports
206
+ "food_import": 200.0, # Normal food imports
207
+ },
208
+ cov=np.eye(8) * 0.01 # Low variance
209
+ )
210
+ scenarios.extend(baseline)
211
+
212
+ # Scenario 2: Trade embargo (reduced trade with Russia/Ukraine)
213
+ embargo = generator.generate_structured_shock(
214
+ "trade_embargo",
215
+ magnitude=0.8, # 80% trade reduction
216
+ timing=3, # Starts at month 3
217
+ horizon=12
218
+ )
219
+ scenarios.append(embargo)
220
+
221
+ # Scenario 3: Energy crisis (gas supply disruption)
222
+ energy_crisis = []
223
+ for t in range(12):
224
+ if t >= 2: # Crisis starts at month 2
225
+ energy_crisis.append({
226
+ "energy_import": -1000.0, # Severe reduction
227
+ "trade_shock": 0.3, # Moderate trade impact
228
+ "productivity_shock": 0.85, # Reduced productivity
229
+ })
230
+ else:
231
+ energy_crisis.append({})
232
+ scenarios.append(energy_crisis)
233
+
234
+ # Scenario 4: Economic sanctions (increased isolation)
235
+ sanctions = []
236
+ for t in range(12):
237
+ if t >= 4: # Sanctions start at month 4
238
+ sanctions.append({
239
+ "trade_shock": 0.6, # 60% trade reduction
240
+ "demand_shock": -0.2, # Reduced demand
241
+ "productivity_shock": 0.9, # 10% productivity loss
242
+ })
243
+ else:
244
+ sanctions.append({})
245
+ scenarios.append(sanctions)
246
+
247
+ # Scenario 5: Student-t heavy-tailed disaster
248
+ heavy_tail = generator.generate_student_t(
249
+ n_scenarios=1,
250
+ horizon=12,
251
+ df=3.0, # Heavy tails
252
+ scale=0.15
253
+ )
254
+ scenarios.extend(heavy_tail)
255
+
256
+ logger.info(f"Generated {len(scenarios)} scenarios for Pridnestrovia")
257
+ return scenarios
258
+
259
+
260
+ def create_pridnestrovia_boards() -> List[Board]:
261
+ """
262
+ Create governance boards for Pridnestrovia.
263
+
264
+ Boards reflect real policy priorities:
265
+ - Growth: Industrial output, employment
266
+ - Welfare: Social stability, unemployment reduction
267
+ - Sustainability: Long-term resilience, environmental protection
268
+ - Stability: Risk management, avoiding collapse
269
+
270
+ Returns:
271
+ List[Board]: List of governance boards
272
+ """
273
+ growth_board = Board(
274
+ board_id="growth_pridnestrovia",
275
+ board_type=BoardType.GROWTH,
276
+ members=[
277
+ BoardMember(
278
+ name="Industrial Director",
279
+ board_type=BoardType.GROWTH,
280
+ expertise_areas=["steel_production", "manufacturing", "trade"],
281
+ voting_weight=2.0,
282
+ independence_status=False,
283
+ ),
284
+ BoardMember(
285
+ name="Economic Advisor",
286
+ board_type=BoardType.GROWTH,
287
+ expertise_areas=["macroeconomics", "investment"],
288
+ voting_weight=1.5,
289
+ independence_status=True,
290
+ ),
291
+ ]
292
+ )
293
+
294
+ welfare_board = Board(
295
+ board_id="welfare_pridnestrovia",
296
+ board_type=BoardType.WELFARE,
297
+ members=[
298
+ BoardMember(
299
+ name="Social Policy Director",
300
+ board_type=BoardType.WELFARE,
301
+ expertise_areas=["social_policy", "unemployment", "education"],
302
+ voting_weight=2.0,
303
+ independence_status=False,
304
+ ),
305
+ BoardMember(
306
+ name="Healthcare Director",
307
+ board_type=BoardType.WELFARE,
308
+ expertise_areas=["healthcare", "public_health"],
309
+ voting_weight=1.5,
310
+ independence_status=False,
311
+ ),
312
+ ]
313
+ )
314
+
315
+ sustainability_board = Board(
316
+ board_id="sustainability_pridnestrovia",
317
+ board_type=BoardType.SUSTAINABILITY,
318
+ members=[
319
+ BoardMember(
320
+ name="Environmental Director",
321
+ board_type=BoardType.SUSTAINABILITY,
322
+ expertise_areas=["environment", "pollution_control", "energy_efficiency"],
323
+ voting_weight=2.0,
324
+ independence_status=True,
325
+ ),
326
+ ]
327
+ )
328
+
329
+ stability_board = Board(
330
+ board_id="stability_pridnestrovia",
331
+ board_type=BoardType.STABILITY,
332
+ members=[
333
+ BoardMember(
334
+ name="Risk Management Director",
335
+ board_type=BoardType.STABILITY,
336
+ expertise_areas=["risk_management", "crisis_management", "resilience"],
337
+ voting_weight=2.5,
338
+ independence_status=True,
339
+ ),
340
+ ]
341
+ )
342
+
343
+ boards = [growth_board, welfare_board, sustainability_board, stability_board]
344
+ logger.info(f"Created {len(boards)} governance boards for Pridnestrovia")
345
+ return boards
346
+
347
+
348
+ def pridnestrovia_mpc_analysis():
349
+ """
350
+ Run MPC analysis for Pridnestrovia.
351
+
352
+ Analyzes policy options under uncertainty, considering:
353
+ - Trade isolation risks
354
+ - Energy dependence
355
+ - Economic constraints
356
+ - Social stability requirements
357
+ """
358
+ logger.info("=== Pridnestrovia MPC Analysis ===")
359
+
360
+ # Initialize
361
+ x_0 = initialize_pridnestrovia_state()
362
+ dynamics = create_pridnestrovia_dynamics()
363
+ checker = ConstraintChecker(U_max=0.15, S_min=0.50) # Stricter bounds for stability
364
+ obj_computer = ObjectiveVector(horizon=12)
365
+ stability = StabilityEnforcer(max_budget_change=0.15) # Conservative rate limits
366
+ solver = MPCSolver(dynamics, checker, obj_computer, horizon=12, stability_enforcer=stability)
367
+ simulator = ForwardSimulator(dynamics, checker)
368
+
369
+ # Generate scenarios
370
+ scenarios = create_pridnestrovia_scenarios()
371
+
372
+ # Solve MPC
373
+ logger.info("Solving MPC optimization...")
374
+ policy, solver_info = solver.solve(x_0, scenarios)
375
+
376
+ logger.info(f"MPC solved: best_score={solver_info.get('best_score', 'N/A')}")
377
+ logger.info(f"Budget allocation: {policy.budget_shares}")
378
+
379
+ # Simulate optimal policy
380
+ logger.info("Simulating optimal policy...")
381
+ trajectory, feasibility, first_violation = simulator.simulate_scenario(
382
+ x_0, policy, scenarios[0], horizon=12
383
+ )
384
+
385
+ feasible_steps = sum(feasibility)
386
+ logger.info(f"Feasibility: {feasible_steps}/12 steps")
387
+
388
+ if first_violation:
389
+ logger.warning(f"First constraint violation at month {first_violation}")
390
+
391
+ # Compute objectives
392
+ objectives = obj_computer.compute(trajectory, [policy] * 12)
393
+ logger.info(f"Objectives: J_U={objectives[0]:.2f}, J_Y={objectives[2]:.2f}, J_C={objectives[4]:.2f}")
394
+
395
+ # Compute CVaR
396
+ cvar_computer = CVaRComputer(alpha=0.05)
397
+ collapse_proxies = []
398
+ for scenario in scenarios[:3]: # Use subset for speed
399
+ traj, _, _ = simulator.simulate_scenario(x_0, policy, scenario, horizon=12)
400
+ proxy = cvar_computer.collapse_proxy(traj)
401
+ collapse_proxies.append(proxy)
402
+
403
+ cvar = cvar_computer.compute_cvar(np.array(collapse_proxies))
404
+ logger.info(f"CVaR (α=0.05): {cvar:.4f}")
405
+
406
+ # Final state
407
+ final_state = trajectory[-1]
408
+ logger.info(f"Final state: P={final_state.P:,.0f}, U={final_state.U:.1%}, Y=${final_state.Y/1e9:.2f}B")
409
+
410
+ return {
411
+ "policy": policy,
412
+ "trajectory": trajectory,
413
+ "objectives": objectives,
414
+ "cvar": cvar,
415
+ "feasibility": feasible_steps,
416
+ }
417
+
418
+
419
+ def pridnestrovia_governance_demo():
420
+ """
421
+ Demonstrate board governance for Pridnestrovia policy selection.
422
+
423
+ Shows how different boards evaluate policies and how arbitration
424
+ selects the final policy.
425
+ """
426
+ logger.info("=== Pridnestrovia Board Governance Demo ===")
427
+
428
+ # Initialize
429
+ x_0 = initialize_pridnestrovia_state()
430
+ dynamics = create_pridnestrovia_dynamics()
431
+ checker = ConstraintChecker()
432
+ obj_computer = ObjectiveVector(horizon=12)
433
+ simulator = ForwardSimulator(dynamics, checker)
434
+
435
+ # Create boards
436
+ boards = create_pridnestrovia_boards()
437
+
438
+ # Generate candidate policies
439
+ budget_categories = [
440
+ "energy", # Energy security (critical for Pridnestrovia)
441
+ "food", # Food security
442
+ "infrastructure", # Infrastructure maintenance
443
+ "education", # Education (already high, maintain)
444
+ "healthcare", # Healthcare (aging population)
445
+ "R&D", # Research & development (limited)
446
+ "welfare", # Social welfare
447
+ ]
448
+
449
+ candidate_policies = [
450
+ ControlVector.sample_budget_simplex(budget_categories)
451
+ for _ in range(6)
452
+ ]
453
+
454
+ # Evaluate under scenarios
455
+ scenarios = create_pridnestrovia_scenarios()
456
+ objective_matrix = []
457
+
458
+ logger.info("Evaluating candidate policies...")
459
+ for i, policy in enumerate(candidate_policies):
460
+ scenario_objectives = []
461
+ for scenario in scenarios[:3]: # Use subset for speed
462
+ traj, _, _ = simulator.simulate_scenario(x_0, policy, scenario, horizon=12)
463
+ obj = obj_computer.compute(traj, [policy] * 12)
464
+ scenario_objectives.append(obj)
465
+ expected_obj = np.mean(scenario_objectives, axis=0)
466
+ objective_matrix.append(expected_obj)
467
+ logger.info(f"Policy {i+1} objectives: J_U={expected_obj[0]:.2f}, J_Y={expected_obj[2]:.2f}")
468
+
469
+ objective_matrix = np.array(objective_matrix)
470
+
471
+ # Board evaluations
472
+ logger.info("\nBoard evaluations:")
473
+ for board in boards:
474
+ ranked = board.evaluate_policies(candidate_policies, objective_matrix)
475
+ top_policy_idx = candidate_policies.index(ranked[0][0])
476
+ logger.info(f"{board.board_type.value} board: Top policy {top_policy_idx+1}, score={ranked[0][1]:.4f}")
477
+
478
+ # Arbitration
479
+ governance = GovernanceSystem(boards, arbitration_method="weighted_vote")
480
+ selected_policy = governance.select_policy(candidate_policies, objective_matrix)
481
+ selected_idx = candidate_policies.index(selected_policy)
482
+
483
+ logger.info(f"\nGovernance selected: Policy {selected_idx+1} via weighted vote")
484
+
485
+ # Test other methods
486
+ consensus = Arbitration.pareto_intersection(boards, candidate_policies, objective_matrix)
487
+ logger.info(f"Pareto intersection: {len(consensus)} consensus policies")
488
+
489
+ minimax_policy = Arbitration.minimax_regret(boards, candidate_policies, objective_matrix)
490
+ logger.info(f"Minimax regret: Policy {candidate_policies.index(minimax_policy)+1}")
491
+
492
+ return {
493
+ "selected_policy": selected_policy,
494
+ "consensus_policies": consensus,
495
+ "minimax_policy": minimax_policy,
496
+ }
497
+
498
+
499
+ def pridnestrovia_logistics_demo():
500
+ """
501
+ Demonstrate logistics network for Pridnestrovia.
502
+
503
+ Models trade flows between:
504
+ - Tiraspol (capital)
505
+ - Bender (industrial city)
506
+ - Rybnitsa (steel production)
507
+ - External: Russia, Ukraine, Moldova
508
+ """
509
+ logger.info("=== Pridnestrovia Logistics Network Demo ===")
510
+
511
+ # Create network
512
+ nodes = [
513
+ "Tiraspol", # Capital
514
+ "Bender", # Industrial city
515
+ "Rybnitsa", # Steel production
516
+ "Russia", # External: Russia
517
+ "Ukraine", # External: Ukraine
518
+ "Moldova", # External: Moldova
519
+ ]
520
+
521
+ edges = [
522
+ ("Tiraspol", "Bender"),
523
+ ("Tiraspol", "Rybnitsa"),
524
+ ("Bender", "Tiraspol"),
525
+ ("Rybnitsa", "Tiraspol"),
526
+ ("Russia", "Tiraspol"), # Energy imports
527
+ ("Ukraine", "Tiraspol"), # Trade
528
+ ("Moldova", "Tiraspol"), # Limited trade
529
+ ("Tiraspol", "Russia"), # Exports
530
+ ("Tiraspol", "Ukraine"), # Exports
531
+ ]
532
+
533
+ # Capacities (limited due to isolation)
534
+ capacities = {
535
+ ("Russia", "Tiraspol"): 2000.0, # Energy imports
536
+ ("Ukraine", "Tiraspol"): 1500.0, # Trade
537
+ ("Moldova", "Tiraspol"): 500.0, # Limited trade
538
+ ("Tiraspol", "Bender"): 1000.0,
539
+ ("Tiraspol", "Rybnitsa"): 800.0,
540
+ }
541
+
542
+ # Costs (higher due to isolation)
543
+ costs = {
544
+ ("Russia", "Tiraspol"): 1.2, # Higher cost
545
+ ("Ukraine", "Tiraspol"): 1.5, # Even higher (tensions)
546
+ ("Moldova", "Tiraspol"): 2.0, # Very high (limited trade)
547
+ ("Tiraspol", "Bender"): 0.8,
548
+ ("Tiraspol", "Rybnitsa"): 0.9,
549
+ }
550
+
551
+ network = LogisticsNetwork(nodes, edges, capacities, costs)
552
+ logger.info(f"Created logistics network: {len(nodes)} nodes, {len(edges)} edges")
553
+
554
+ # Solve flow problem
555
+ demands = {
556
+ "Tiraspol": {"energy": 800.0, "food": 300.0, "materials": 200.0},
557
+ "Bender": {"energy": 400.0, "food": 150.0},
558
+ "Rybnitsa": {"energy": 500.0, "materials": 300.0},
559
+ }
560
+ commodities = ["energy", "food", "materials"]
561
+
562
+ flows = network.solve_flow_problem(demands, commodities)
563
+ logger.info(f"Solved flow problem: {len(flows)} flow variables")
564
+
565
+ # Analyze flows
566
+ total_energy_import = sum(
567
+ v for (src, tgt, comm), v in flows.items()
568
+ if comm == "energy" and src in ["Russia", "Ukraine", "Moldova"]
569
+ )
570
+ logger.info(f"Total energy imports: {total_energy_import:.0f} units")
571
+
572
+ return {
573
+ "network": network,
574
+ "flows": flows,
575
+ "total_energy_import": total_energy_import,
576
+ }
577
+
578
+
579
+ def full_pridnestrovia_workflow():
580
+ """
581
+ Full end-to-end workflow for Pridnestrovia.
582
+
583
+ Demonstrates complete CRCA-SD system:
584
+ 1. Initialize with real data
585
+ 2. Generate scenarios (trade embargo, energy crisis, etc.)
586
+ 3. Solve MPC for candidate policies
587
+ 4. Evaluate with boards
588
+ 5. Arbitrate to select final policy
589
+ 6. Simulate and collect metrics
590
+ """
591
+ logger.info("=== Full Pridnestrovia Workflow ===")
592
+
593
+ # 1. Initialize
594
+ x_0 = initialize_pridnestrovia_state()
595
+ dynamics = create_pridnestrovia_dynamics()
596
+ checker = ConstraintChecker(U_max=0.15, S_min=0.50)
597
+ obj_computer = ObjectiveVector(horizon=12)
598
+ stability = StabilityEnforcer(max_budget_change=0.15)
599
+ solver = MPCSolver(dynamics, checker, obj_computer, horizon=12, stability_enforcer=stability)
600
+ simulator = ForwardSimulator(dynamics, checker)
601
+
602
+ # 2. Generate scenarios
603
+ scenarios = create_pridnestrovia_scenarios()
604
+ logger.info(f"Generated {len(scenarios)} scenarios")
605
+
606
+ # 3. Solve MPC
607
+ logger.info("Solving MPC...")
608
+ policy_candidates, solver_info = solver.solve(x_0, scenarios)
609
+
610
+ # Generate additional candidates
611
+ budget_categories = ["energy", "food", "infrastructure", "education", "healthcare", "R&D", "welfare"]
612
+ additional_candidates = [
613
+ ControlVector.sample_budget_simplex(budget_categories)
614
+ for _ in range(4)
615
+ ]
616
+ all_candidates = [policy_candidates] + additional_candidates
617
+
618
+ # 4. Evaluate with boards
619
+ boards = create_pridnestrovia_boards()
620
+
621
+ objective_matrix = []
622
+ for policy in all_candidates:
623
+ scenario_objectives = []
624
+ for scenario in scenarios[:3]:
625
+ traj, _, _ = simulator.simulate_scenario(x_0, policy, scenario, horizon=12)
626
+ obj = obj_computer.compute(traj, [policy] * 12)
627
+ scenario_objectives.append(obj)
628
+ expected_obj = np.mean(scenario_objectives, axis=0)
629
+ objective_matrix.append(expected_obj)
630
+
631
+ objective_matrix = np.array(objective_matrix)
632
+
633
+ # 5. Arbitrate
634
+ governance = GovernanceSystem(boards, arbitration_method="weighted_vote")
635
+ final_policy = governance.select_policy(all_candidates, objective_matrix)
636
+ logger.info("Governance selected final policy")
637
+
638
+ # 6. Simulate final policy
639
+ final_traj, final_feasibility, _ = simulator.simulate_scenario(
640
+ x_0, final_policy, scenarios[0], horizon=12
641
+ )
642
+
643
+ # 7. Collect metrics
644
+ collector = MetricsCollector()
645
+ metrics = collector.compute_all_metrics([final_traj], [final_policy])
646
+
647
+ # 8. Visualization
648
+ dashboard = Visualization.state_dashboard(x_0)
649
+ print("\n=== Initial State ===")
650
+ print(dashboard)
651
+
652
+ final_dashboard = Visualization.state_dashboard(final_traj[-1])
653
+ print("\n=== Final State (12 months) ===")
654
+ print(final_dashboard)
655
+
656
+ report = collector.generate_report()
657
+ print("\n=== Metrics Report ===")
658
+ print(report)
659
+
660
+ logger.info("=== Workflow Complete ===")
661
+ logger.info(f"Final state: U={final_traj[-1].U:.1%}, Y=${final_traj[-1].Y/1e9:.2f}B, C={final_traj[-1].C:,.0f}")
662
+ logger.info(f"Feasibility: {sum(final_feasibility)}/12 steps")
663
+ logger.info(f"Metrics: {metrics.get('feasibility_rate', 0.0):.1%} feasibility rate")
664
+
665
+ return {
666
+ "final_policy": final_policy,
667
+ "final_trajectory": final_traj,
668
+ "metrics": metrics,
669
+ }
670
+
671
+
672
+ if __name__ == "__main__":
673
+ """Run Pridnestrovia examples."""
674
+ logger.info("Starting Pridnestrovia CRCA-SD Examples")
675
+ logger.info("Date: December 20, 2025")
676
+ logger.info("=" * 60)
677
+
678
+ # Run individual demos
679
+ try:
680
+ mpc_results = pridnestrovia_mpc_analysis()
681
+ logger.info("MPC analysis complete\n")
682
+ except Exception as e:
683
+ logger.error(f"MPC analysis failed: {e}")
684
+
685
+ try:
686
+ governance_results = pridnestrovia_governance_demo()
687
+ logger.info("Governance demo complete\n")
688
+ except Exception as e:
689
+ logger.error(f"Governance demo failed: {e}")
690
+
691
+ try:
692
+ logistics_results = pridnestrovia_logistics_demo()
693
+ logger.info("Logistics demo complete\n")
694
+ except Exception as e:
695
+ logger.error(f"Logistics demo failed: {e}")
696
+
697
+ # Run full workflow
698
+ try:
699
+ full_results = full_pridnestrovia_workflow()
700
+ logger.info("Full workflow complete!")
701
+ except Exception as e:
702
+ logger.error(f"Full workflow failed: {e}")
703
+
704
+ logger.success("All Pridnestrovia examples completed!")
705
+