corvinos 0.1.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 (1116) hide show
  1. Dockerfile +72 -0
  2. chart/Chart.yaml +17 -0
  3. chart/templates/_helpers.tpl +25 -0
  4. chart/templates/deployment.yaml +55 -0
  5. chart/templates/pvc.yaml +17 -0
  6. chart/templates/service.yaml +15 -0
  7. chart/values.yaml +75 -0
  8. core/awpkg/awpkg/__init__.py +2 -0
  9. core/awpkg/awpkg/audit.py +118 -0
  10. core/awpkg/awpkg/builder.py +207 -0
  11. core/awpkg/awpkg/inspector.py +107 -0
  12. core/awpkg/awpkg/installer.py +411 -0
  13. core/awpkg/awpkg/manifest.py +213 -0
  14. core/awpkg/awpkg.py +141 -0
  15. core/awpkg/plugin.json +18 -0
  16. core/awpkg/schema/manifest.v1.json +201 -0
  17. core/awpkg/tests/__init__.py +0 -0
  18. core/awpkg/tests/conftest.py +36 -0
  19. core/awpkg/tests/fixtures/dag_complex/manifest.yaml +26 -0
  20. core/awpkg/tests/fixtures/dag_complex/src/personas/quant_researcher.yaml +10 -0
  21. core/awpkg/tests/fixtures/dag_complex/src/tools/code_fetch_news.json +31 -0
  22. core/awpkg/tests/fixtures/dag_complex/src/tools/code_fetch_social.json +36 -0
  23. core/awpkg/tests/fixtures/dag_complex/src/workflow.awp.yaml +71 -0
  24. core/awpkg/tests/fixtures/dag_complex/src/workflows/market_research.awp.yaml +71 -0
  25. core/awpkg/tests/fixtures/dag_simple/manifest.yaml +21 -0
  26. core/awpkg/tests/fixtures/dag_simple/src/workflow.awp.yaml +56 -0
  27. core/awpkg/tests/fixtures/dag_simple/src/workflows/briefing.awp.yaml +56 -0
  28. core/awpkg/tests/fixtures/delegation/manifest.yaml +23 -0
  29. core/awpkg/tests/fixtures/delegation/src/tools/code_diff_parser.json +26 -0
  30. core/awpkg/tests/fixtures/delegation/src/workflow.awp.yaml +67 -0
  31. core/awpkg/tests/fixtures/delegation/src/workflows/code_review.awp.yaml +67 -0
  32. core/awpkg/tests/fixtures/full_pipeline/manifest.yaml +134 -0
  33. core/awpkg/tests/fixtures/full_pipeline/src/personas/data_analyst.yaml +10 -0
  34. core/awpkg/tests/fixtures/full_pipeline/src/personas/quality_checker.yaml +10 -0
  35. core/awpkg/tests/fixtures/full_pipeline/src/personas/report_writer.yaml +10 -0
  36. core/awpkg/tests/fixtures/full_pipeline/src/tools/code_csv_stats.json +21 -0
  37. core/awpkg/tests/fixtures/full_pipeline/src/tools/code_md_report.json +25 -0
  38. core/awpkg/tests/fixtures/full_pipeline/src/tools/code_score_report.json +21 -0
  39. core/awpkg/tests/fixtures/full_pipeline/src/workflows/sales_report.awp.yaml +35 -0
  40. core/awpkg/tests/fixtures/mixed/manifest.yaml +31 -0
  41. core/awpkg/tests/fixtures/mixed/src/personas/quant_trader.yaml +11 -0
  42. core/awpkg/tests/fixtures/mixed/src/tools/code_compute_indicators.json +35 -0
  43. core/awpkg/tests/fixtures/mixed/src/tools/code_ohlcv_fetch.json +35 -0
  44. core/awpkg/tests/fixtures/mixed/src/tools/code_orderbook_snap.json +26 -0
  45. core/awpkg/tests/fixtures/mixed/src/workflow_backtest.awp.yaml +61 -0
  46. core/awpkg/tests/fixtures/mixed/src/workflow_signal.awp.yaml +104 -0
  47. core/awpkg/tests/fixtures/mixed/src/workflows/backtest.awp.yaml +61 -0
  48. core/awpkg/tests/fixtures/mixed/src/workflows/signal_pipeline.awp.yaml +104 -0
  49. core/awpkg/tests/helpers.py +115 -0
  50. core/awpkg/tests/test_e2e.py +701 -0
  51. core/awpkg/tests/test_e2e_full_pipeline.py +597 -0
  52. core/compliance/ARCHITECTURE.svg +231 -0
  53. core/compliance/corvin_compliance_reports/__init__.py +19 -0
  54. core/compliance/corvin_compliance_reports/ai_act_evidence.py +275 -0
  55. core/compliance/corvin_compliance_reports/audit.py +155 -0
  56. core/compliance/corvin_compliance_reports/audit_attestation.py +179 -0
  57. core/compliance/corvin_compliance_reports/audit_query.py +178 -0
  58. core/compliance/corvin_compliance_reports/cli.py +185 -0
  59. core/compliance/corvin_compliance_reports/gdpr_ropa.py +504 -0
  60. core/compliance/corvin_compliance_reports/templates.py +334 -0
  61. core/compliance/tests/__init__.py +0 -0
  62. core/compliance/tests/conftest.py +56 -0
  63. core/compliance/tests/test_audit_emitter.py +95 -0
  64. core/compliance/tests/test_audit_query.py +107 -0
  65. core/compliance/tests/test_cli.py +116 -0
  66. core/compliance/tests/test_generators.py +227 -0
  67. core/compute/LICENSE +51 -0
  68. core/compute/corvin_compute/__init__.py +15 -0
  69. core/compute/corvin_compute/__main__.py +5 -0
  70. core/compute/corvin_compute/audit.py +160 -0
  71. core/compute/corvin_compute/budget.py +130 -0
  72. core/compute/corvin_compute/cli.py +389 -0
  73. core/compute/corvin_compute/client.py +108 -0
  74. core/compute/corvin_compute/driver.py +390 -0
  75. core/compute/corvin_compute/engine_protocol.py +68 -0
  76. core/compute/corvin_compute/engine_registry.py +91 -0
  77. core/compute/corvin_compute/engines/__init__.py +4 -0
  78. core/compute/corvin_compute/engines/anthropic_batch.py +680 -0
  79. core/compute/corvin_compute/engines/contrib_template.py +552 -0
  80. core/compute/corvin_compute/engines/flat.py +103 -0
  81. core/compute/corvin_compute/fabric/__init__.py +16 -0
  82. core/compute/corvin_compute/fabric/audit_events.py +49 -0
  83. core/compute/corvin_compute/fabric/backends/__init__.py +34 -0
  84. core/compute/corvin_compute/fabric/backends/builtin/__init__.py +21 -0
  85. core/compute/corvin_compute/fabric/backends/builtin/lightgbm_backend.py +170 -0
  86. core/compute/corvin_compute/fabric/backends/builtin/polars_transform_backend.py +202 -0
  87. core/compute/corvin_compute/fabric/backends/builtin/sklearn_backend.py +244 -0
  88. core/compute/corvin_compute/fabric/backends/builtin/statsmodels_backend.py +182 -0
  89. core/compute/corvin_compute/fabric/backends/builtin/xgboost_backend.py +174 -0
  90. core/compute/corvin_compute/fabric/backends/manifest.py +162 -0
  91. core/compute/corvin_compute/fabric/backends/protocol.py +186 -0
  92. core/compute/corvin_compute/fabric/backends/registry.py +259 -0
  93. core/compute/corvin_compute/fabric/config.py +82 -0
  94. core/compute/corvin_compute/fabric/datasources/__init__.py +67 -0
  95. core/compute/corvin_compute/fabric/datasources/audit_events.py +72 -0
  96. core/compute/corvin_compute/fabric/datasources/builtin/__init__.py +2 -0
  97. core/compute/corvin_compute/fabric/datasources/builtin/azure_blob.py +156 -0
  98. core/compute/corvin_compute/fabric/datasources/builtin/bigquery.py +178 -0
  99. core/compute/corvin_compute/fabric/datasources/builtin/delta_lake.py +162 -0
  100. core/compute/corvin_compute/fabric/datasources/builtin/gcs_parquet.py +167 -0
  101. core/compute/corvin_compute/fabric/datasources/builtin/http_rest.py +244 -0
  102. core/compute/corvin_compute/fabric/datasources/builtin/kafka_batch.py +176 -0
  103. core/compute/corvin_compute/fabric/datasources/builtin/local_file.py +291 -0
  104. core/compute/corvin_compute/fabric/datasources/builtin/mysql.py +161 -0
  105. core/compute/corvin_compute/fabric/datasources/builtin/postgresql.py +162 -0
  106. core/compute/corvin_compute/fabric/datasources/builtin/redshift.py +166 -0
  107. core/compute/corvin_compute/fabric/datasources/builtin/s3_csv.py +180 -0
  108. core/compute/corvin_compute/fabric/datasources/builtin/s3_parquet.py +193 -0
  109. core/compute/corvin_compute/fabric/datasources/builtin/snowflake.py +147 -0
  110. core/compute/corvin_compute/fabric/datasources/manifest.py +335 -0
  111. core/compute/corvin_compute/fabric/datasources/mcp_tools.py +434 -0
  112. core/compute/corvin_compute/fabric/datasources/protocol.py +341 -0
  113. core/compute/corvin_compute/fabric/datasources/query.py +143 -0
  114. core/compute/corvin_compute/fabric/datasources/registry.py +524 -0
  115. core/compute/corvin_compute/fabric/datasources/residency.py +153 -0
  116. core/compute/corvin_compute/fabric/datasources/vault_env.py +91 -0
  117. core/compute/corvin_compute/fabric/datasources/watermark.py +142 -0
  118. core/compute/corvin_compute/fabric/oracle/__init__.py +16 -0
  119. core/compute/corvin_compute/fabric/oracle/aggregated_oracle.py +240 -0
  120. core/compute/corvin_compute/fabric/oracle/oracle.py +303 -0
  121. core/compute/corvin_compute/fabric/oracle/steering.py +98 -0
  122. core/compute/corvin_compute/fabric/parallel/__init__.py +32 -0
  123. core/compute/corvin_compute/fabric/parallel/aggregation.py +245 -0
  124. core/compute/corvin_compute/fabric/parallel/resources.py +280 -0
  125. core/compute/corvin_compute/fabric/parallel/shard.py +325 -0
  126. core/compute/corvin_compute/fabric/registry.py +237 -0
  127. core/compute/corvin_compute/fabric_config.py +163 -0
  128. core/compute/corvin_compute/hac/__init__.py +3 -0
  129. core/compute/corvin_compute/hac/attribution.py +91 -0
  130. core/compute/corvin_compute/hac/coordinator.py +330 -0
  131. core/compute/corvin_compute/hac/engine.py +144 -0
  132. core/compute/corvin_compute/hac/manifest.py +117 -0
  133. core/compute/corvin_compute/iteration.py +72 -0
  134. core/compute/corvin_compute/license_gate.py +401 -0
  135. core/compute/corvin_compute/mcp_bridge.py +662 -0
  136. core/compute/corvin_compute/parallel.py +186 -0
  137. core/compute/corvin_compute/pipeline/__init__.py +14 -0
  138. core/compute/corvin_compute/pipeline/coordinator.py +437 -0
  139. core/compute/corvin_compute/pipeline/engine.py +214 -0
  140. core/compute/corvin_compute/pipeline/manifest.py +172 -0
  141. core/compute/corvin_compute/recovery.py +246 -0
  142. core/compute/corvin_compute/state.py +189 -0
  143. core/compute/corvin_compute/strategies/__init__.py +52 -0
  144. core/compute/corvin_compute/strategies/base.py +44 -0
  145. core/compute/corvin_compute/strategies/bayesian.py +277 -0
  146. core/compute/corvin_compute/strategies/grid.py +77 -0
  147. core/compute/corvin_compute/strategies/random.py +84 -0
  148. core/compute/corvin_compute/transport.py +77 -0
  149. core/compute/corvin_compute/version.py +2 -0
  150. core/compute/corvin_compute/worker.py +561 -0
  151. core/compute/requirements-minimal.txt +2 -0
  152. core/compute/systemd/corvin-compute@.service +27 -0
  153. core/compute/tests/__init__.py +0 -0
  154. core/compute/tests/test_aggregated_oracle.py +300 -0
  155. core/compute/tests/test_aggregator.py +308 -0
  156. core/compute/tests/test_anthropic_batch.py +491 -0
  157. core/compute/tests/test_audit.py +254 -0
  158. core/compute/tests/test_backend_registry.py +328 -0
  159. core/compute/tests/test_bayesian.py +211 -0
  160. core/compute/tests/test_builtin_backends.py +351 -0
  161. core/compute/tests/test_builtin_cloud_adapters.py +341 -0
  162. core/compute/tests/test_builtin_sql_adapters.py +309 -0
  163. core/compute/tests/test_builtin_streaming_adapters.py +277 -0
  164. core/compute/tests/test_builtin_warehouse_adapters.py +316 -0
  165. core/compute/tests/test_datasource_audit.py +304 -0
  166. core/compute/tests/test_datasource_incremental.py +258 -0
  167. core/compute/tests/test_datasource_mcp_tools.py +316 -0
  168. core/compute/tests/test_datasource_protocol.py +327 -0
  169. core/compute/tests/test_datasource_residency.py +142 -0
  170. core/compute/tests/test_datasource_vault.py +148 -0
  171. core/compute/tests/test_driver.py +275 -0
  172. core/compute/tests/test_e2e.py +242 -0
  173. core/compute/tests/test_engine_protocol.py +513 -0
  174. core/compute/tests/test_fabric_audit.py +523 -0
  175. core/compute/tests/test_fabric_tenant_config.py +205 -0
  176. core/compute/tests/test_mcp_bridge.py +270 -0
  177. core/compute/tests/test_model_registry.py +288 -0
  178. core/compute/tests/test_negotiation.py +311 -0
  179. core/compute/tests/test_no_sdk_import_datasources.py +128 -0
  180. core/compute/tests/test_no_sdk_import_fabric.py +90 -0
  181. core/compute/tests/test_oracle.py +353 -0
  182. core/compute/tests/test_parallel.py +219 -0
  183. core/compute/tests/test_plugin_install.py +287 -0
  184. core/compute/tests/test_plugin_skeleton.py +170 -0
  185. core/compute/tests/test_recovery.py +196 -0
  186. core/compute/tests/test_resource_manager.py +161 -0
  187. core/compute/tests/test_shard_cursor.py +222 -0
  188. core/compute/tests/test_shard_manager.py +218 -0
  189. core/compute/tests/test_strategies.py +175 -0
  190. core/compute/tests/test_worker.py +446 -0
  191. core/delegate/corvin_delegate/__init__.py +33 -0
  192. core/delegate/corvin_delegate/audit.py +455 -0
  193. core/delegate/corvin_delegate/delegation.py +1431 -0
  194. core/delegate/corvin_delegate/mcp_config_builder.py +492 -0
  195. core/delegate/corvin_delegate/mcp_server.py +537 -0
  196. core/delegate/corvin_delegate/output_judge.py +355 -0
  197. core/delegate/corvin_delegate/prompt_safety.py +289 -0
  198. core/delegate/corvin_delegate/sandbox.py +280 -0
  199. core/delegate/corvin_delegate/skill_context.py +400 -0
  200. core/delegate/corvin_delegate/tenant_policy.py +287 -0
  201. core/delegate/tests/__init__.py +0 -0
  202. core/delegate/tests/test_delegation.py +1169 -0
  203. core/delegate/tests/test_live_e2e.py +284 -0
  204. core/delegate/tests/test_mcp_config_builder.py +386 -0
  205. core/delegate/tests/test_mcp_server.py +488 -0
  206. core/delegate/tests/test_output_judge.py +445 -0
  207. core/delegate/tests/test_prompt_safety.py +389 -0
  208. core/delegate/tests/test_sandbox.py +368 -0
  209. core/delegate/tests/test_skill_context.py +319 -0
  210. core/delegate/tests/test_tenant_policy.py +467 -0
  211. core/init/init.py +893 -0
  212. core/init/test_daemon.py +369 -0
  213. core/init/test_init.py +491 -0
  214. core/pipe/mcp_server.py +413 -0
  215. core/pipe/plugin.json +10 -0
  216. core/pipe/test_mcp_server.py +450 -0
  217. core/plugins/corvin_plugins/__init__.py +36 -0
  218. core/plugins/corvin_plugins/loader.py +152 -0
  219. core/plugins/corvin_plugins/protocol.py +201 -0
  220. core/plugins/corvin_plugins/providers/__init__.py +8 -0
  221. core/plugins/corvin_plugins/providers/notification_backend.py +75 -0
  222. core/plugins/corvin_plugins/providers/recall_backend.py +171 -0
  223. core/plugins/corvin_plugins/providers/router_backend.py +106 -0
  224. core/plugins/corvin_plugins/providers/summary_provider.py +100 -0
  225. core/plugins/corvin_plugins/registry.py +178 -0
  226. core/plugins/templates/bridge_channel_plugin.py +403 -0
  227. core/plugins/templates/compute_engine_plugin.py +544 -0
  228. core/plugins/templates/notification_backend_plugin.py +55 -0
  229. core/plugins/templates/recall_backend_plugin.py +75 -0
  230. core/plugins/templates/router_backend_plugin.py +59 -0
  231. core/plugins/templates/summary_provider_plugin.py +61 -0
  232. core/plugins/templates/worker_engine_plugin.py +296 -0
  233. core/plugins/tests/test_plugin_system.py +602 -0
  234. core/workflows/corvin_workflows/__init__.py +31 -0
  235. core/workflows/corvin_workflows/__main__.py +5 -0
  236. core/workflows/corvin_workflows/cli.py +783 -0
  237. core/workflows/corvin_workflows/engines.py +71 -0
  238. core/workflows/corvin_workflows/examples/news_sentiment.awp.yaml +69 -0
  239. core/workflows/corvin_workflows/node_types.py +369 -0
  240. core/workflows/corvin_workflows/runner.py +191 -0
  241. core/workflows/corvin_workflows/storage.py +71 -0
  242. core/workflows/corvin_workflows/validator.py +155 -0
  243. core/workflows/demo_run.py +46 -0
  244. core/workflows/tests/__init__.py +0 -0
  245. core/workflows/tests/test_workflow_e2e.py +359 -0
  246. corvinOS/__init__.py +0 -0
  247. corvinOS/installer/__init__.py +30 -0
  248. corvinOS/installer/__main__.py +76 -0
  249. corvinOS/installer/bridge_manager.py +203 -0
  250. corvinOS/installer/core.py +812 -0
  251. corvinOS/installer/ollama.py +52 -0
  252. corvinOS/installer/service_manager.py +406 -0
  253. corvinOS/installer/steps/__init__.py +0 -0
  254. corvinOS/installer/steps/bridges.py +320 -0
  255. corvinOS/installer/steps/console.py +216 -0
  256. corvinOS/installer/steps/dependencies.py +474 -0
  257. corvinOS/installer/steps/keys.py +161 -0
  258. corvinOS/installer/steps/piper.py +250 -0
  259. corvinOS/installer/steps/platform.py +172 -0
  260. corvinOS/installer/steps/plugins.py +94 -0
  261. corvinOS/installer/steps/stt.py +67 -0
  262. corvinOS/installer/steps/validate.py +168 -0
  263. corvinOS/shared/paths.py +284 -0
  264. corvin_console/__init__.py +23 -0
  265. corvin_console/_operator_bootstrap.py +114 -0
  266. corvin_console/_vendor/operator/agent/__init__.py +27 -0
  267. corvin_console/_vendor/operator/agent/audit.py +67 -0
  268. corvin_console/_vendor/operator/agent/byok.py +172 -0
  269. corvin_console/_vendor/operator/agent/config_push.py +112 -0
  270. corvin_console/_vendor/operator/agent/health.py +75 -0
  271. corvin_console/_vendor/operator/agent/keypair.py +152 -0
  272. corvin_console/_vendor/operator/agent/main.py +231 -0
  273. corvin_console/_vendor/operator/agent/registration.py +152 -0
  274. corvin_console/_vendor/operator/bridges/.gitignore +3 -0
  275. corvin_console/_vendor/operator/bridges/.ldd/.install_version +1 -0
  276. corvin_console/_vendor/operator/bridges/.ldd/config.yaml +41 -0
  277. corvin_console/_vendor/operator/bridges/.ldd/heartbeat +1 -0
  278. corvin_console/_vendor/operator/bridges/.ldd/heartbeats/339f5d40-56a2-4292-81dd-f9f739796af6 +1 -0
  279. corvin_console/_vendor/operator/bridges/.ldd/heartbeats/aa177f3a-3528-4a46-a712-fc722872698c +1 -0
  280. corvin_console/_vendor/operator/bridges/.ldd/heartbeats/fa6220c4-daf8-4d47-a142-2d25dbaac7d7 +1 -0
  281. corvin_console/_vendor/operator/bridges/.ldd/ldd_trace +98 -0
  282. corvin_console/_vendor/operator/bridges/.ldd/statusline.sh +376 -0
  283. corvin_console/_vendor/operator/bridges/assets/corvin-bridge.desktop +45 -0
  284. corvin_console/_vendor/operator/bridges/assets/corvin-bridge.png +0 -0
  285. corvin_console/_vendor/operator/bridges/assets/corvin-mark.png +0 -0
  286. corvin_console/_vendor/operator/bridges/assets/corvin-mark.svg +13 -0
  287. corvin_console/_vendor/operator/bridges/bridge.sh +687 -0
  288. corvin_console/_vendor/operator/bridges/bridge_manager.py +534 -0
  289. corvin_console/_vendor/operator/bridges/discord/daemon.js +976 -0
  290. corvin_console/_vendor/operator/bridges/discord/discord-daemon.service.yaml +14 -0
  291. corvin_console/_vendor/operator/bridges/discord/package-lock.json +324 -0
  292. corvin_console/_vendor/operator/bridges/discord/package.json +9 -0
  293. corvin_console/_vendor/operator/bridges/discord/settings.json.example +11 -0
  294. corvin_console/_vendor/operator/bridges/discord/slash_commands.js +187 -0
  295. corvin_console/_vendor/operator/bridges/email/daemon.js +342 -0
  296. corvin_console/_vendor/operator/bridges/email/package-lock.json +504 -0
  297. corvin_console/_vendor/operator/bridges/email/package.json +11 -0
  298. corvin_console/_vendor/operator/bridges/email/settings.json.example +22 -0
  299. corvin_console/_vendor/operator/bridges/install-desktop-launcher.sh +85 -0
  300. corvin_console/_vendor/operator/bridges/run-all-tests.sh +580 -0
  301. corvin_console/_vendor/operator/bridges/shared/.ldd/.install_version +1 -0
  302. corvin_console/_vendor/operator/bridges/shared/.ldd/config.yaml +41 -0
  303. corvin_console/_vendor/operator/bridges/shared/.ldd/heartbeat +1 -0
  304. corvin_console/_vendor/operator/bridges/shared/.ldd/heartbeats/aa177f3a-3528-4a46-a712-fc722872698c +1 -0
  305. corvin_console/_vendor/operator/bridges/shared/.ldd/ldd_trace +98 -0
  306. corvin_console/_vendor/operator/bridges/shared/.ldd/statusline.sh +376 -0
  307. corvin_console/_vendor/operator/bridges/shared/RAG_QUERY_ENGINE_README.md +468 -0
  308. corvin_console/_vendor/operator/bridges/shared/__init__.py +30 -0
  309. corvin_console/_vendor/operator/bridges/shared/a2a_attachments.py +321 -0
  310. corvin_console/_vendor/operator/bridges/shared/a2a_audit_head.py +226 -0
  311. corvin_console/_vendor/operator/bridges/shared/a2a_compute_engine.py +248 -0
  312. corvin_console/_vendor/operator/bridges/shared/a2a_friendship.py +357 -0
  313. corvin_console/_vendor/operator/bridges/shared/a2a_google_adapter.py +539 -0
  314. corvin_console/_vendor/operator/bridges/shared/a2a_google_sender.py +361 -0
  315. corvin_console/_vendor/operator/bridges/shared/a2a_http_server.py +416 -0
  316. corvin_console/_vendor/operator/bridges/shared/a2a_invite.py +346 -0
  317. corvin_console/_vendor/operator/bridges/shared/a2a_invite_registry.py +186 -0
  318. corvin_console/_vendor/operator/bridges/shared/a2a_manifest.py +354 -0
  319. corvin_console/_vendor/operator/bridges/shared/a2a_nonce_store.py +281 -0
  320. corvin_console/_vendor/operator/bridges/shared/a2a_worker.py +866 -0
  321. corvin_console/_vendor/operator/bridges/shared/acs_engine_adapter.py +334 -0
  322. corvin_console/_vendor/operator/bridges/shared/acs_gate_chain.py +805 -0
  323. corvin_console/_vendor/operator/bridges/shared/acs_graph_builder.py +370 -0
  324. corvin_console/_vendor/operator/bridges/shared/acs_runtime.py +2091 -0
  325. corvin_console/_vendor/operator/bridges/shared/acs_validator.py +692 -0
  326. corvin_console/_vendor/operator/bridges/shared/adapter.py +8313 -0
  327. corvin_console/_vendor/operator/bridges/shared/agent_charter.py +497 -0
  328. corvin_console/_vendor/operator/bridges/shared/audit.py +310 -0
  329. corvin_console/_vendor/operator/bridges/shared/audit_sealer.py +1167 -0
  330. corvin_console/_vendor/operator/bridges/shared/audit_view.py +244 -0
  331. corvin_console/_vendor/operator/bridges/shared/auth_elevation.py +264 -0
  332. corvin_console/_vendor/operator/bridges/shared/awp_dag_parser.py +271 -0
  333. corvin_console/_vendor/operator/bridges/shared/awp_validator.py +113 -0
  334. corvin_console/_vendor/operator/bridges/shared/awp_walker.py +300 -0
  335. corvin_console/_vendor/operator/bridges/shared/bridges_migrate.py +450 -0
  336. corvin_console/_vendor/operator/bridges/shared/cal_predicates.py +228 -0
  337. corvin_console/_vendor/operator/bridges/shared/check_prometheus_labels.py +158 -0
  338. corvin_console/_vendor/operator/bridges/shared/compliance/eu_ai_act_audit.py +644 -0
  339. corvin_console/_vendor/operator/bridges/shared/compliance_assertion.py +215 -0
  340. corvin_console/_vendor/operator/bridges/shared/compliance_manifest.py +592 -0
  341. corvin_console/_vendor/operator/bridges/shared/compliance_zone_classifier.py +154 -0
  342. corvin_console/_vendor/operator/bridges/shared/compute_awp_exporter.py +1221 -0
  343. corvin_console/_vendor/operator/bridges/shared/compute_awp_importer.py +852 -0
  344. corvin_console/_vendor/operator/bridges/shared/compute_narrator.py +311 -0
  345. corvin_console/_vendor/operator/bridges/shared/consent.py +807 -0
  346. corvin_console/_vendor/operator/bridges/shared/context_budget.py +389 -0
  347. corvin_console/_vendor/operator/bridges/shared/context_checkpoint.py +108 -0
  348. corvin_console/_vendor/operator/bridges/shared/context_cold_storage.py +387 -0
  349. corvin_console/_vendor/operator/bridges/shared/conversation_recall.py +645 -0
  350. corvin_console/_vendor/operator/bridges/shared/corvin_migrate.py +237 -0
  351. corvin_console/_vendor/operator/bridges/shared/cve_surveillance.py +241 -0
  352. corvin_console/_vendor/operator/bridges/shared/data_classification.py +810 -0
  353. corvin_console/_vendor/operator/bridges/shared/debug_logging.py +310 -0
  354. corvin_console/_vendor/operator/bridges/shared/decision_registry.py +328 -0
  355. corvin_console/_vendor/operator/bridges/shared/demo_hetzner_flow.py +329 -0
  356. corvin_console/_vendor/operator/bridges/shared/dialectic.py +1044 -0
  357. corvin_console/_vendor/operator/bridges/shared/disclosure.py +765 -0
  358. corvin_console/_vendor/operator/bridges/shared/egress_gate.py +634 -0
  359. corvin_console/_vendor/operator/bridges/shared/engine_detection.py +383 -0
  360. corvin_console/_vendor/operator/bridges/shared/engine_detector.py +161 -0
  361. corvin_console/_vendor/operator/bridges/shared/engine_metrics.py +90 -0
  362. corvin_console/_vendor/operator/bridges/shared/engine_models.py +172 -0
  363. corvin_console/_vendor/operator/bridges/shared/engine_policy.py +219 -0
  364. corvin_console/_vendor/operator/bridges/shared/engine_registry.py +265 -0
  365. corvin_console/_vendor/operator/bridges/shared/engine_switch.py +531 -0
  366. corvin_console/_vendor/operator/bridges/shared/engine_trust.py +830 -0
  367. corvin_console/_vendor/operator/bridges/shared/engines/capability_matrix.py +260 -0
  368. corvin_console/_vendor/operator/bridges/shared/engines/system_prompt_injector.py +397 -0
  369. corvin_console/_vendor/operator/bridges/shared/erasure_a2a.py +132 -0
  370. corvin_console/_vendor/operator/bridges/shared/erasure_handlers.py +798 -0
  371. corvin_console/_vendor/operator/bridges/shared/erasure_orchestrator.py +561 -0
  372. corvin_console/_vendor/operator/bridges/shared/execution_mode_router.py +262 -0
  373. corvin_console/_vendor/operator/bridges/shared/extension_api.py +295 -0
  374. corvin_console/_vendor/operator/bridges/shared/extension_registry.py +631 -0
  375. corvin_console/_vendor/operator/bridges/shared/flow_bundle.py +215 -0
  376. corvin_console/_vendor/operator/bridges/shared/flow_checkpoint.py +110 -0
  377. corvin_console/_vendor/operator/bridges/shared/flow_cli.py +217 -0
  378. corvin_console/_vendor/operator/bridges/shared/flow_definition.py +175 -0
  379. corvin_console/_vendor/operator/bridges/shared/flow_dispatcher.py +90 -0
  380. corvin_console/_vendor/operator/bridges/shared/flow_runner.py +396 -0
  381. corvin_console/_vendor/operator/bridges/shared/goal.py +149 -0
  382. corvin_console/_vendor/operator/bridges/shared/grant_checker.py +373 -0
  383. corvin_console/_vendor/operator/bridges/shared/grant_issuer.py +193 -0
  384. corvin_console/_vendor/operator/bridges/shared/grant_store.py +278 -0
  385. corvin_console/_vendor/operator/bridges/shared/helper_model.py +134 -0
  386. corvin_console/_vendor/operator/bridges/shared/hermes_bootstrap.py +170 -0
  387. corvin_console/_vendor/operator/bridges/shared/house_rules.py +533 -0
  388. corvin_console/_vendor/operator/bridges/shared/i18n.py +355 -0
  389. corvin_console/_vendor/operator/bridges/shared/incident_tracker.py +430 -0
  390. corvin_console/_vendor/operator/bridges/shared/instance_attestation.py +383 -0
  391. corvin_console/_vendor/operator/bridges/shared/instance_identity.py +278 -0
  392. corvin_console/_vendor/operator/bridges/shared/js/audit.js +150 -0
  393. corvin_console/_vendor/operator/bridges/shared/js/auth.js +177 -0
  394. corvin_console/_vendor/operator/bridges/shared/js/auth_elevation.js +134 -0
  395. corvin_console/_vendor/operator/bridges/shared/js/bridge_paths.js +126 -0
  396. corvin_console/_vendor/operator/bridges/shared/js/bridge_state.js +79 -0
  397. corvin_console/_vendor/operator/bridges/shared/js/chat_toggle.js +178 -0
  398. corvin_console/_vendor/operator/bridges/shared/js/health-server.js +44 -0
  399. corvin_console/_vendor/operator/bridges/shared/js/in_chat_commands.js +3201 -0
  400. corvin_console/_vendor/operator/bridges/shared/js/local-announce.js +42 -0
  401. corvin_console/_vendor/operator/bridges/shared/js/logger.js +191 -0
  402. corvin_console/_vendor/operator/bridges/shared/js/msg-id.js +12 -0
  403. corvin_console/_vendor/operator/bridges/shared/js/outbox.js +99 -0
  404. corvin_console/_vendor/operator/bridges/shared/js/settings.js +48 -0
  405. corvin_console/_vendor/operator/bridges/shared/layer_cli.py +480 -0
  406. corvin_console/_vendor/operator/bridges/shared/layer_integrity.py +298 -0
  407. corvin_console/_vendor/operator/bridges/shared/ldd.py +514 -0
  408. corvin_console/_vendor/operator/bridges/shared/memory.py +210 -0
  409. corvin_console/_vendor/operator/bridges/shared/memory_bridge.py +780 -0
  410. corvin_console/_vendor/operator/bridges/shared/model_selector.py +518 -0
  411. corvin_console/_vendor/operator/bridges/shared/nbac.py +387 -0
  412. corvin_console/_vendor/operator/bridges/shared/operator_declaration.py +202 -0
  413. corvin_console/_vendor/operator/bridges/shared/org_actor.py +386 -0
  414. corvin_console/_vendor/operator/bridges/shared/org_resolver.py +88 -0
  415. corvin_console/_vendor/operator/bridges/shared/org_store.py +313 -0
  416. corvin_console/_vendor/operator/bridges/shared/output_sentinel.py +604 -0
  417. corvin_console/_vendor/operator/bridges/shared/paths.py +272 -0
  418. corvin_console/_vendor/operator/bridges/shared/personal_tools.py +579 -0
  419. corvin_console/_vendor/operator/bridges/shared/phase3_cli.py +668 -0
  420. corvin_console/_vendor/operator/bridges/shared/pipe_registry.py +353 -0
  421. corvin_console/_vendor/operator/bridges/shared/process_table.py +408 -0
  422. corvin_console/_vendor/operator/bridges/shared/profile.py +577 -0
  423. corvin_console/_vendor/operator/bridges/shared/proposal.py +512 -0
  424. corvin_console/_vendor/operator/bridges/shared/quality_layers.py +110 -0
  425. corvin_console/_vendor/operator/bridges/shared/quota.py +622 -0
  426. corvin_console/_vendor/operator/bridges/shared/rag_audit_events.py +142 -0
  427. corvin_console/_vendor/operator/bridges/shared/rag_data_classification.py +152 -0
  428. corvin_console/_vendor/operator/bridges/shared/rag_erasure_handler.py +85 -0
  429. corvin_console/_vendor/operator/bridges/shared/rag_hub.py +321 -0
  430. corvin_console/_vendor/operator/bridges/shared/rag_import_export.py +131 -0
  431. corvin_console/_vendor/operator/bridges/shared/rag_manifest_generator.py +192 -0
  432. corvin_console/_vendor/operator/bridges/shared/rag_orchestrator.py +281 -0
  433. corvin_console/_vendor/operator/bridges/shared/rag_query_engine.py +318 -0
  434. corvin_console/_vendor/operator/bridges/shared/rag_rest_api.py +196 -0
  435. corvin_console/_vendor/operator/bridges/shared/rag_statistics.py +128 -0
  436. corvin_console/_vendor/operator/bridges/shared/remote_trigger_client.py +167 -0
  437. corvin_console/_vendor/operator/bridges/shared/remote_trigger_receiver.py +1770 -0
  438. corvin_console/_vendor/operator/bridges/shared/remote_trigger_sender.py +873 -0
  439. corvin_console/_vendor/operator/bridges/shared/roles.py +768 -0
  440. corvin_console/_vendor/operator/bridges/shared/router.py +283 -0
  441. corvin_console/_vendor/operator/bridges/shared/router_embedding.py +221 -0
  442. corvin_console/_vendor/operator/bridges/shared/sbom_generator.py +276 -0
  443. corvin_console/_vendor/operator/bridges/shared/scheduler.py +516 -0
  444. corvin_console/_vendor/operator/bridges/shared/security_capabilities.py +263 -0
  445. corvin_console/_vendor/operator/bridges/shared/session_reset.py +589 -0
  446. corvin_console/_vendor/operator/bridges/shared/settings_view.py +764 -0
  447. corvin_console/_vendor/operator/bridges/shared/skill_inject.py +625 -0
  448. corvin_console/_vendor/operator/bridges/shared/social_actor.py +243 -0
  449. corvin_console/_vendor/operator/bridges/shared/social_capability.py +793 -0
  450. corvin_console/_vendor/operator/bridges/shared/social_consent.py +228 -0
  451. corvin_console/_vendor/operator/bridges/shared/social_envelope.py +146 -0
  452. corvin_console/_vendor/operator/bridges/shared/social_feed.py +642 -0
  453. corvin_console/_vendor/operator/bridges/shared/social_http_server.py +545 -0
  454. corvin_console/_vendor/operator/bridges/shared/social_registry.py +537 -0
  455. corvin_console/_vendor/operator/bridges/shared/social_sanitizer.py +125 -0
  456. corvin_console/_vendor/operator/bridges/shared/space_domains.py +273 -0
  457. corvin_console/_vendor/operator/bridges/shared/space_profile.py +161 -0
  458. corvin_console/_vendor/operator/bridges/shared/task_complexity.py +169 -0
  459. corvin_console/_vendor/operator/bridges/shared/testing/__init__.py +25 -0
  460. corvin_console/_vendor/operator/bridges/shared/testing/e2e_real_engines.py +462 -0
  461. corvin_console/_vendor/operator/bridges/shared/testing/universal_test_framework.py +439 -0
  462. corvin_console/_vendor/operator/bridges/shared/user_model.py +707 -0
  463. corvin_console/_vendor/operator/bridges/shared/user_style.py +953 -0
  464. corvin_console/_vendor/operator/bridges/shared/vault.py +447 -0
  465. corvin_console/_vendor/operator/bridges/shared/wdat_report.py +404 -0
  466. corvin_console/_vendor/operator/bridges/shared/worker_engine_continuation.py +74 -0
  467. corvin_console/_vendor/operator/bridges/shared/worker_session_store.py +191 -0
  468. corvin_console/_vendor/operator/bridges/signal/README.md +171 -0
  469. corvin_console/_vendor/operator/bridges/signal/daemon.js +188 -0
  470. corvin_console/_vendor/operator/bridges/signal/handler.js +248 -0
  471. corvin_console/_vendor/operator/bridges/signal/package.json +10 -0
  472. corvin_console/_vendor/operator/bridges/signal/settings.json.example +11 -0
  473. corvin_console/_vendor/operator/bridges/slack/daemon.js +435 -0
  474. corvin_console/_vendor/operator/bridges/slack/package-lock.json +2584 -0
  475. corvin_console/_vendor/operator/bridges/slack/package.json +9 -0
  476. corvin_console/_vendor/operator/bridges/slack/settings.json.example +12 -0
  477. corvin_console/_vendor/operator/bridges/slack/slack-daemon.service.yaml +10 -0
  478. corvin_console/_vendor/operator/bridges/teams/cards.js +156 -0
  479. corvin_console/_vendor/operator/bridges/teams/daemon.js +204 -0
  480. corvin_console/_vendor/operator/bridges/teams/handler.js +265 -0
  481. corvin_console/_vendor/operator/bridges/teams/package-lock.json +1895 -0
  482. corvin_console/_vendor/operator/bridges/teams/package.json +10 -0
  483. corvin_console/_vendor/operator/bridges/teams/settings.json.example +12 -0
  484. corvin_console/_vendor/operator/bridges/telegram/daemon.js +402 -0
  485. corvin_console/_vendor/operator/bridges/telegram/package-lock.json +2387 -0
  486. corvin_console/_vendor/operator/bridges/telegram/package.json +9 -0
  487. corvin_console/_vendor/operator/bridges/telegram/settings.json.example +11 -0
  488. corvin_console/_vendor/operator/bridges/telegram/telegram-daemon.service.yaml +10 -0
  489. corvin_console/_vendor/operator/bridges/watchdog.sh +106 -0
  490. corvin_console/_vendor/operator/bridges/whatsapp/README.md +89 -0
  491. corvin_console/_vendor/operator/bridges/whatsapp/chat_state.js +213 -0
  492. corvin_console/_vendor/operator/bridges/whatsapp/daemon.js +1311 -0
  493. corvin_console/_vendor/operator/bridges/whatsapp/package-lock.json +4004 -0
  494. corvin_console/_vendor/operator/bridges/whatsapp/package.json +19 -0
  495. corvin_console/_vendor/operator/bridges/whatsapp/settings.json.example +13 -0
  496. corvin_console/_vendor/operator/bridges/whatsapp/whatsapp-daemon.service.yaml +10 -0
  497. corvin_console/_vendor/operator/cowork/README.md +172 -0
  498. corvin_console/_vendor/operator/cowork/bin/cowork +275 -0
  499. corvin_console/_vendor/operator/cowork/bin/gmail-helper +600 -0
  500. corvin_console/_vendor/operator/cowork/bin/gmail-helper.md +157 -0
  501. corvin_console/_vendor/operator/cowork/commands/cowork-add.md +14 -0
  502. corvin_console/_vendor/operator/cowork/commands/cowork-bind.md +19 -0
  503. corvin_console/_vendor/operator/cowork/commands/cowork-list.md +13 -0
  504. corvin_console/_vendor/operator/cowork/commands/cowork-rm.md +13 -0
  505. corvin_console/_vendor/operator/cowork/commands/cowork-run.md +15 -0
  506. corvin_console/_vendor/operator/cowork/commands/cowork-show.md +13 -0
  507. corvin_console/_vendor/operator/cowork/commands/cowork-unbind.md +14 -0
  508. corvin_console/_vendor/operator/cowork/lib/__init__.py +6 -0
  509. corvin_console/_vendor/operator/cowork/lib/paths.py +232 -0
  510. corvin_console/_vendor/operator/cowork/lib/resolver.py +777 -0
  511. corvin_console/_vendor/operator/cowork/pending_invites/a63204ad-862e-424c-b9ce-3878a6024e11.json +16 -0
  512. corvin_console/_vendor/operator/cowork/personas/assistant.json +37 -0
  513. corvin_console/_vendor/operator/cowork/personas/coder.json +32 -0
  514. corvin_console/_vendor/operator/cowork/personas/copilot-worker.json +28 -0
  515. corvin_console/_vendor/operator/cowork/personas/forge.json +64 -0
  516. corvin_console/_vendor/operator/cowork/personas/hermes-worker.json +26 -0
  517. corvin_console/_vendor/operator/cowork/personas/homeassistant.json +43 -0
  518. corvin_console/_vendor/operator/cowork/personas/inbox.json +32 -0
  519. corvin_console/_vendor/operator/cowork/personas/orchestrator.json +40 -0
  520. corvin_console/_vendor/operator/cowork/personas/os.json +21 -0
  521. corvin_console/_vendor/operator/cowork/personas/research.json +50 -0
  522. corvin_console/_vendor/operator/cowork/skills/cowork/SKILL.md +61 -0
  523. corvin_console/_vendor/operator/forge/forge/__init__.py +5 -0
  524. corvin_console/_vendor/operator/forge/forge/_compute_discovery.py +120 -0
  525. corvin_console/_vendor/operator/forge/forge/artifacts.py +664 -0
  526. corvin_console/_vendor/operator/forge/forge/breakers.py +173 -0
  527. corvin_console/_vendor/operator/forge/forge/cache.py +141 -0
  528. corvin_console/_vendor/operator/forge/forge/chain_dna.py +300 -0
  529. corvin_console/_vendor/operator/forge/forge/clag.py +879 -0
  530. corvin_console/_vendor/operator/forge/forge/corvin_data/__init__.py +177 -0
  531. corvin_console/_vendor/operator/forge/forge/corvin_data/data_policy.py +291 -0
  532. corvin_console/_vendor/operator/forge/forge/corvin_data/data_registry.py +268 -0
  533. corvin_console/_vendor/operator/forge/forge/corvin_data/format_sniffer.py +165 -0
  534. corvin_console/_vendor/operator/forge/forge/corvin_data/mcp_handlers.py +838 -0
  535. corvin_console/_vendor/operator/forge/forge/corvin_data/pii_detector.py +393 -0
  536. corvin_console/_vendor/operator/forge/forge/corvin_data/pii_presidio.py +138 -0
  537. corvin_console/_vendor/operator/forge/forge/corvin_data/pseudonymize.py +90 -0
  538. corvin_console/_vendor/operator/forge/forge/corvin_data/redactor.py +356 -0
  539. corvin_console/_vendor/operator/forge/forge/corvin_data/schema_extension.py +269 -0
  540. corvin_console/_vendor/operator/forge/forge/corvin_data/snapshot.py +858 -0
  541. corvin_console/_vendor/operator/forge/forge/corvin_data/strict_anonymizer.py +343 -0
  542. corvin_console/_vendor/operator/forge/forge/mcp_server.py +2342 -0
  543. corvin_console/_vendor/operator/forge/forge/multi_registry.py +166 -0
  544. corvin_console/_vendor/operator/forge/forge/paths.py +296 -0
  545. corvin_console/_vendor/operator/forge/forge/permissions.py +139 -0
  546. corvin_console/_vendor/operator/forge/forge/policy.json +18 -0
  547. corvin_console/_vendor/operator/forge/forge/policy.py +362 -0
  548. corvin_console/_vendor/operator/forge/forge/registry.py +372 -0
  549. corvin_console/_vendor/operator/forge/forge/runner.py +1094 -0
  550. corvin_console/_vendor/operator/forge/forge/runs.py +258 -0
  551. corvin_console/_vendor/operator/forge/forge/sandbox.py +229 -0
  552. corvin_console/_vendor/operator/forge/forge/sandbox_helpers/sitecustomize.py +151 -0
  553. corvin_console/_vendor/operator/forge/forge/scope.py +125 -0
  554. corvin_console/_vendor/operator/forge/forge/secret_vault.py +237 -0
  555. corvin_console/_vendor/operator/forge/forge/security_events.py +1498 -0
  556. corvin_console/_vendor/operator/forge/forge/static_check.py +101 -0
  557. corvin_console/_vendor/operator/forge/forge/sync.py +75 -0
  558. corvin_console/_vendor/operator/forge/forge/tenant_migrate.py +218 -0
  559. corvin_console/_vendor/operator/forge/forge/tenants.py +103 -0
  560. corvin_console/_vendor/operator/license/__init__.py +53 -0
  561. corvin_console/_vendor/operator/license/_corvin_seal_stub.py +134 -0
  562. corvin_console/_vendor/operator/license/a2a_network_pubkey.pem +9 -0
  563. corvin_console/_vendor/operator/license/capability.py +191 -0
  564. corvin_console/_vendor/operator/license/compute_quota.py +215 -0
  565. corvin_console/_vendor/operator/license/device_fp.py +46 -0
  566. corvin_console/_vendor/operator/license/instance_epoch.py +90 -0
  567. corvin_console/_vendor/operator/license/limits.py +190 -0
  568. corvin_console/_vendor/operator/license/manifest.py +270 -0
  569. corvin_console/_vendor/operator/license/nbac_network_pubkey.pem +9 -0
  570. corvin_console/_vendor/operator/license/seal_loader.py +90 -0
  571. corvin_console/_vendor/operator/license/session_refresh.py +502 -0
  572. corvin_console/_vendor/operator/license/sob.py +275 -0
  573. corvin_console/_vendor/operator/license/sob_crypto.py +221 -0
  574. corvin_console/_vendor/operator/license/validator.py +912 -0
  575. corvin_console/_vendor/operator/mcp_manager/mcp_manager/__init__.py +7 -0
  576. corvin_console/_vendor/operator/mcp_manager/mcp_manager/activate.py +351 -0
  577. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/brave-search.json +12 -0
  578. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/corvin-batch.json +22 -0
  579. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/fetch.json +10 -0
  580. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/filesystem.json +10 -0
  581. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/github.json +12 -0
  582. corvin_console/_vendor/operator/mcp_manager/mcp_manager/builtin_manifests/sqlite.json +10 -0
  583. corvin_console/_vendor/operator/mcp_manager/mcp_manager/catalog.py +98 -0
  584. corvin_console/_vendor/operator/mcp_manager/mcp_manager/compliance.py +310 -0
  585. corvin_console/_vendor/operator/mcp_manager/mcp_manager/installer.py +544 -0
  586. corvin_console/_vendor/operator/security/README.md +50 -0
  587. corvin_console/_vendor/operator/security/sign_layer_manifest.py +100 -0
  588. corvin_console/_vendor/operator/skill-forge/README.md +130 -0
  589. corvin_console/_vendor/operator/skill-forge/personas/skill-forge.json +47 -0
  590. corvin_console/_vendor/operator/skill-forge/scripts/skill_cleanup.py +212 -0
  591. corvin_console/_vendor/operator/skill-forge/skill-forge-mcp.service.yaml +18 -0
  592. corvin_console/_vendor/operator/skill-forge/skill_forge/__init__.py +11 -0
  593. corvin_console/_vendor/operator/skill-forge/skill_forge/linter.py +122 -0
  594. corvin_console/_vendor/operator/skill-forge/skill_forge/mcp_server.py +487 -0
  595. corvin_console/_vendor/operator/skill-forge/skill_forge/multi_registry.py +338 -0
  596. corvin_console/_vendor/operator/skill-forge/skill_forge/registry.py +648 -0
  597. corvin_console/_vendor/operator/skill-forge/skill_forge/session_cleanup.py +28 -0
  598. corvin_console/_vendor/operator/skill-forge/skills/dyn/adr_gate/SKILL.md +134 -0
  599. corvin_console/_vendor/operator/skill-forge/skills/dyn/adr_gate/meta.json +22 -0
  600. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_corvinOS_e2e_fresh_install/SKILL.md +186 -0
  601. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_corvinOS_e2e_integration/SKILL.md +166 -0
  602. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_corvinOS_e2e_ui_tour/SKILL.md +107 -0
  603. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_hermes_delegation/SKILL.md +41 -0
  604. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_lab_hetzner_e2e/SKILL.md +120 -0
  605. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_lab_hetzner_e2e_run/SKILL.md +110 -0
  606. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_lab_integration_sim/SKILL.md +166 -0
  607. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_lab_integration_social/SKILL.md +171 -0
  608. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_lab_verify_compliance/SKILL.md +170 -0
  609. corvin_console/_vendor/operator/skill-forge/skills/dyn/code_trading_backtest_pattern/SKILL.md +39 -0
  610. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_code_review/SKILL.md +175 -0
  611. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_backend/SKILL.md +94 -0
  612. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_compliance/SKILL.md +101 -0
  613. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_e2e/SKILL.md +94 -0
  614. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_frontend/SKILL.md +86 -0
  615. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_gates/SKILL.md +80 -0
  616. corvin_console/_vendor/operator/skill-forge/skills/dyn/corvinOS_review_quality/SKILL.md +171 -0
  617. corvin_console/_vendor/operator/skill-forge/skills/dyn/usability_first/SKILL.md +99 -0
  618. corvin_console/_vendor/operator/skill-forge/skills/dyn/web_ui_e2e_quality/SKILL.md +125 -0
  619. corvin_console/_vendor/operator/skill-forge/skills/dyn/web_ui_e2e_testing/SKILL.md +120 -0
  620. corvin_console/_vendor/operator/voice/scripts/agent_sunset.py +112 -0
  621. corvin_console/_vendor/operator/voice/scripts/audit_rotate.py +221 -0
  622. corvin_console/_vendor/operator/voice/scripts/autoupdate.sh +143 -0
  623. corvin_console/_vendor/operator/voice/scripts/bridge_cli.sh +123 -0
  624. corvin_console/_vendor/operator/voice/scripts/corvin-a2a +28 -0
  625. corvin_console/_vendor/operator/voice/scripts/corvin-annex-iv +9 -0
  626. corvin_console/_vendor/operator/voice/scripts/corvin-erasure +9 -0
  627. corvin_console/_vendor/operator/voice/scripts/corvin-incident +9 -0
  628. corvin_console/_vendor/operator/voice/scripts/corvin-instance-id +11 -0
  629. corvin_console/_vendor/operator/voice/scripts/corvin_a2a.py +1460 -0
  630. corvin_console/_vendor/operator/voice/scripts/corvin_annex_iv.py +876 -0
  631. corvin_console/_vendor/operator/voice/scripts/corvin_erasure.py +359 -0
  632. corvin_console/_vendor/operator/voice/scripts/corvin_incident.py +227 -0
  633. corvin_console/_vendor/operator/voice/scripts/corvin_instance_id.py +335 -0
  634. corvin_console/_vendor/operator/voice/scripts/corvin_mcp.py +361 -0
  635. corvin_console/_vendor/operator/voice/scripts/detect_lang.py +84 -0
  636. corvin_console/_vendor/operator/voice/scripts/detect_voice_intent.py +78 -0
  637. corvin_console/_vendor/operator/voice/scripts/earcon.py +190 -0
  638. corvin_console/_vendor/operator/voice/scripts/engine_canary/probes.default.yaml +143 -0
  639. corvin_console/_vendor/operator/voice/scripts/engine_canary.py +803 -0
  640. corvin_console/_vendor/operator/voice/scripts/extract_last_assistant.py +93 -0
  641. corvin_console/_vendor/operator/voice/scripts/extract_last_user.py +148 -0
  642. corvin_console/_vendor/operator/voice/scripts/generate_image.py +77 -0
  643. corvin_console/_vendor/operator/voice/scripts/lang_cli.py +90 -0
  644. corvin_console/_vendor/operator/voice/scripts/listen.sh +79 -0
  645. corvin_console/_vendor/operator/voice/scripts/memory_cli.py +113 -0
  646. corvin_console/_vendor/operator/voice/scripts/profile_cli.py +102 -0
  647. corvin_console/_vendor/operator/voice/scripts/replay.sh +87 -0
  648. corvin_console/_vendor/operator/voice/scripts/say.py +364 -0
  649. corvin_console/_vendor/operator/voice/scripts/schedule_cli.py +101 -0
  650. corvin_console/_vendor/operator/voice/scripts/session_timeout_sweep.py +331 -0
  651. corvin_console/_vendor/operator/voice/scripts/speak.sh +346 -0
  652. corvin_console/_vendor/operator/voice/scripts/strip_for_tts.py +72 -0
  653. corvin_console/_vendor/operator/voice/scripts/stt/__init__.py +47 -0
  654. corvin_console/_vendor/operator/voice/scripts/stt/base.py +115 -0
  655. corvin_console/_vendor/operator/voice/scripts/stt/local_whisper.py +123 -0
  656. corvin_console/_vendor/operator/voice/scripts/stt/openai_whisper.py +122 -0
  657. corvin_console/_vendor/operator/voice/scripts/stt/resolver.py +170 -0
  658. corvin_console/_vendor/operator/voice/scripts/summarize.py +1412 -0
  659. corvin_console/_vendor/operator/voice/scripts/supply_chain_verify.py +625 -0
  660. corvin_console/_vendor/operator/voice/scripts/transcribe.py +80 -0
  661. corvin_console/_vendor/operator/voice/scripts/transcript_is_stale.py +101 -0
  662. corvin_console/_vendor/operator/voice/scripts/vault_cli.py +193 -0
  663. corvin_console/_vendor/operator/voice/scripts/voice-audit +10 -0
  664. corvin_console/_vendor/operator/voice/scripts/voice_audit.py +1100 -0
  665. corvin_console/_vendor/operator/voice/scripts/voice_cli.sh +169 -0
  666. corvin_console/_vendor/operator/voice/scripts/voice_lib.sh +479 -0
  667. corvin_console/_vendor/operator/voice/scripts/whatsapp_cli.sh +223 -0
  668. corvin_console/app.py +285 -0
  669. corvin_console/audit.py +304 -0
  670. corvin_console/auth.py +316 -0
  671. corvin_console/chat_runtime.py +1190 -0
  672. corvin_console/deps.py +83 -0
  673. corvin_console/engine_detection.py +383 -0
  674. corvin_console/hermes_bootstrap.py +170 -0
  675. corvin_console/routes/__init__.py +0 -0
  676. corvin_console/routes/a2a_pair.py +1183 -0
  677. corvin_console/routes/agents.py +405 -0
  678. corvin_console/routes/assistant.py +237 -0
  679. corvin_console/routes/audit_layers.py +321 -0
  680. corvin_console/routes/audit_tail.py +209 -0
  681. corvin_console/routes/auth_routes.py +227 -0
  682. corvin_console/routes/bridges.py +618 -0
  683. corvin_console/routes/byok.py +260 -0
  684. corvin_console/routes/chain_dual_track.py +313 -0
  685. corvin_console/routes/chat.py +1212 -0
  686. corvin_console/routes/chat_settings.py +460 -0
  687. corvin_console/routes/compute.py +3560 -0
  688. corvin_console/routes/compute_jobs.py +184 -0
  689. corvin_console/routes/connectors.py +725 -0
  690. corvin_console/routes/connectors_custom.py +226 -0
  691. corvin_console/routes/custom_engines.py +283 -0
  692. corvin_console/routes/custom_provider.py +403 -0
  693. corvin_console/routes/dashboard.py +170 -0
  694. corvin_console/routes/data_sources.py +410 -0
  695. corvin_console/routes/datasources_http.py +272 -0
  696. corvin_console/routes/engine.py +904 -0
  697. corvin_console/routes/engine_pref.py +216 -0
  698. corvin_console/routes/extensions.py +399 -0
  699. corvin_console/routes/files.py +377 -0
  700. corvin_console/routes/flows.py +608 -0
  701. corvin_console/routes/grants.py +238 -0
  702. corvin_console/routes/landing.py +66 -0
  703. corvin_console/routes/ldd.py +141 -0
  704. corvin_console/routes/license.py +810 -0
  705. corvin_console/routes/mcp_plugins.py +260 -0
  706. corvin_console/routes/members.py +174 -0
  707. corvin_console/routes/memory.py +339 -0
  708. corvin_console/routes/orgs.py +518 -0
  709. corvin_console/routes/personas.py +531 -0
  710. corvin_console/routes/profile.py +439 -0
  711. corvin_console/routes/promote.py +157 -0
  712. corvin_console/routes/quality_layers.py +177 -0
  713. corvin_console/routes/rag.py +491 -0
  714. corvin_console/routes/rag_hub.py +458 -0
  715. corvin_console/routes/rag_hub_analytics.py +229 -0
  716. corvin_console/routes/remote_trigger_log.py +297 -0
  717. corvin_console/routes/runs.py +74 -0
  718. corvin_console/routes/sessions.py +128 -0
  719. corvin_console/routes/settings.py +306 -0
  720. corvin_console/routes/settings_stream.py +135 -0
  721. corvin_console/routes/setup.py +872 -0
  722. corvin_console/routes/skills.py +167 -0
  723. corvin_console/routes/skills_manual.py +250 -0
  724. corvin_console/routes/space.py +560 -0
  725. corvin_console/routes/streams.py +215 -0
  726. corvin_console/routes/tasks.py +100 -0
  727. corvin_console/routes/tasks_impl.py +184 -0
  728. corvin_console/routes/tokens.py +13 -0
  729. corvin_console/routes/tools.py +155 -0
  730. corvin_console/routes/tools_manual.py +326 -0
  731. corvin_console/routes/voice.py +461 -0
  732. corvin_console/routes/webhooks.py +283 -0
  733. corvin_console/routes/workflows.py +3725 -0
  734. corvin_console/routes/workspaces.py +167 -0
  735. corvin_console/standalone.py +71 -0
  736. corvin_console/task_manager.py +599 -0
  737. corvin_console/task_pubsub.py +105 -0
  738. corvin_console/task_queue.py +420 -0
  739. corvin_console/task_worker_pool.py +509 -0
  740. corvin_console/test_chat_runtime_titles.py +187 -0
  741. corvin_console/test_chat_ws_robustness.py +130 -0
  742. corvin_console/test_execution_log_route.py +315 -0
  743. corvin_console/test_os_turns_route.py +287 -0
  744. corvin_console/test_task_api_http.py +96 -0
  745. corvin_console/test_task_manager.py +275 -0
  746. corvin_console/test_task_manager_e2e.py +180 -0
  747. corvin_console/test_task_queue.py +201 -0
  748. corvin_console/test_web_delegation.py +108 -0
  749. corvin_console/web/dev-login.html +56 -0
  750. corvin_console/web-next/.github/workflows/test.yml +384 -0
  751. corvin_console/web-next/.npmrc +4 -0
  752. corvin_console/web-next/components.json +21 -0
  753. corvin_console/web-next/dist/assets/FlowGraphView-CHkvXFqv.js +1 -0
  754. corvin_console/web-next/dist/assets/agent-hub-Xz7X65yu.js +1 -0
  755. corvin_console/web-next/dist/assets/agents-DjxEWJhH.js +1 -0
  756. corvin_console/web-next/dist/assets/api-keys-CMXvA9c_.js +1 -0
  757. corvin_console/web-next/dist/assets/bridges-Tyi9q24k.js +1 -0
  758. corvin_console/web-next/dist/assets/charts-Bd5FmgWm.js +1 -0
  759. corvin_console/web-next/dist/assets/chat-B5kQrDtT.js +2 -0
  760. corvin_console/web-next/dist/assets/compliance-0tbkhm4Q.js +1 -0
  761. corvin_console/web-next/dist/assets/compute-CrejNskz.js +1 -0
  762. corvin_console/web-next/dist/assets/connectors-ClRKPNR9.js +1 -0
  763. corvin_console/web-next/dist/assets/cowork--mcV1oIl.js +1 -0
  764. corvin_console/web-next/dist/assets/custom-provider-DWk3SPe5.js +1 -0
  765. corvin_console/web-next/dist/assets/dashboard-CS6avkU8.js +1 -0
  766. corvin_console/web-next/dist/assets/data-sources-DbtqNsU6.js +1 -0
  767. corvin_console/web-next/dist/assets/dialog-DTxC77cq.js +1 -0
  768. corvin_console/web-next/dist/assets/engine-control-CrXqzFac.js +1 -0
  769. corvin_console/web-next/dist/assets/engines-Bb34_KrT.js +1 -0
  770. corvin_console/web-next/dist/assets/extensions-D9NQoRij.js +1 -0
  771. corvin_console/web-next/dist/assets/files-Z49DZJmV.js +1 -0
  772. corvin_console/web-next/dist/assets/forge-QsCxCXxZ.js +1 -0
  773. corvin_console/web-next/dist/assets/highlight-BEHUn5zE.css +10 -0
  774. corvin_console/web-next/dist/assets/highlight-H0QttG7q.js +1 -0
  775. corvin_console/web-next/dist/assets/icons-feOBvBTC.js +26 -0
  776. corvin_console/web-next/dist/assets/index-CHZ8DNWJ.js +33 -0
  777. corvin_console/web-next/dist/assets/index-CWnyupzh.js +38 -0
  778. corvin_console/web-next/dist/assets/index-DfUwvumR.js +1 -0
  779. corvin_console/web-next/dist/assets/index-DjEgRQh1.css +1 -0
  780. corvin_console/web-next/dist/assets/input-CX8txbMD.js +1 -0
  781. corvin_console/web-next/dist/assets/katex-lljLFT0G.js +1 -0
  782. corvin_console/web-next/dist/assets/landing-DzneZ0xU.js +1 -0
  783. corvin_console/web-next/dist/assets/ldd-Cv8QDcfI.js +1 -0
  784. corvin_console/web-next/dist/assets/license-CPicrTOo.js +1 -0
  785. corvin_console/web-next/dist/assets/login-BdYs86BA.js +1 -0
  786. corvin_console/web-next/dist/assets/markdown-DB8lCzoA.js +1 -0
  787. corvin_console/web-next/dist/assets/memory-BwBmSTgk.js +1 -0
  788. corvin_console/web-next/dist/assets/mermaid-zFc89MlW.js +31 -0
  789. corvin_console/web-next/dist/assets/not-found-CkLpKXJK.js +1 -0
  790. corvin_console/web-next/dist/assets/orgs-DeIBDGgq.js +1 -0
  791. corvin_console/web-next/dist/assets/page-D0R5IrOA.js +2 -0
  792. corvin_console/web-next/dist/assets/people-DRKGBvrx.js +1 -0
  793. corvin_console/web-next/dist/assets/personas-D-yM_-xk.js +1 -0
  794. corvin_console/web-next/dist/assets/radix-CfDk86er.js +1 -0
  795. corvin_console/web-next/dist/assets/rag-BnYlOZ45.js +1 -0
  796. corvin_console/web-next/dist/assets/rag-hub-BbAvxY_z.js +1 -0
  797. corvin_console/web-next/dist/assets/reauth-dialog-B_HXRPEt.js +1 -0
  798. corvin_console/web-next/dist/assets/settings-B5btchOy.js +1 -0
  799. corvin_console/web-next/dist/assets/skills-COiQhkwN.js +1 -0
  800. corvin_console/web-next/dist/assets/space-CK0kgKBu.js +1 -0
  801. corvin_console/web-next/dist/assets/style-DqjQUz5i.js +1 -0
  802. corvin_console/web-next/dist/assets/style-Fd0xVSp_.css +1 -0
  803. corvin_console/web-next/dist/assets/tabs-BZO7dtI5.js +1 -0
  804. corvin_console/web-next/dist/assets/tanstack-B-jDpbmx.js +10 -0
  805. corvin_console/web-next/dist/assets/voice-BruO0NO1.js +1 -0
  806. corvin_console/web-next/dist/assets/wardley-L42UT6IY-DF21vKEX.js +1 -0
  807. corvin_console/web-next/dist/assets/workflows-DRkDGEPv.js +2 -0
  808. corvin_console/web-next/dist/favicon.svg +7 -0
  809. corvin_console/web-next/dist/index.html +74 -0
  810. corvin_console/web-next/dist/sw.js +179 -0
  811. corvin_console/web-next/eslint.config.js +56 -0
  812. corvin_console/web-next/full-test-results.txt +287 -0
  813. corvin_console/web-next/index.html +68 -0
  814. corvin_console/web-next/package.json +79 -0
  815. corvin_console/web-next/playwright-report/index.html +90 -0
  816. corvin_console/web-next/playwright.adr0124.config.ts +37 -0
  817. corvin_console/web-next/playwright.config.ts +90 -0
  818. corvin_console/web-next/playwright.isolated.config.ts +26 -0
  819. corvin_console/web-next/postcss.config.js +6 -0
  820. corvin_console/web-next/public/favicon.svg +7 -0
  821. corvin_console/web-next/public/sw.js +179 -0
  822. corvin_console/web-next/screenshot_onboarding.mjs +84 -0
  823. corvin_console/web-next/scripts/start-isolated-e2e-backend.sh +13 -0
  824. corvin_console/web-next/shoot.mjs +66 -0
  825. corvin_console/web-next/src/App.tsx +188 -0
  826. corvin_console/web-next/src/app/console/flows/FlowGraphView.tsx +410 -0
  827. corvin_console/web-next/src/app/console/flows/page.tsx +833 -0
  828. corvin_console/web-next/src/app/console/tasks/page.tsx +157 -0
  829. corvin_console/web-next/src/components/AcsTab.tsx +1065 -0
  830. corvin_console/web-next/src/components/ComputeGraphView.tsx +883 -0
  831. corvin_console/web-next/src/components/ComputeNarrativeDialog.tsx +173 -0
  832. corvin_console/web-next/src/components/DualTrackAuditPanel.tsx +391 -0
  833. corvin_console/web-next/src/components/EmptyState.tsx +46 -0
  834. corvin_console/web-next/src/components/FlowCreatorPanel.tsx +512 -0
  835. corvin_console/web-next/src/components/WdatAuditPanel.tsx +1152 -0
  836. corvin_console/web-next/src/components/assistant/ConsoleAssistant.tsx +710 -0
  837. corvin_console/web-next/src/components/commands-help-modal.tsx +176 -0
  838. corvin_console/web-next/src/components/error-boundary.tsx +148 -0
  839. corvin_console/web-next/src/components/layout.tsx +492 -0
  840. corvin_console/web-next/src/components/license-gate.tsx +164 -0
  841. corvin_console/web-next/src/components/markdown.tsx +258 -0
  842. corvin_console/web-next/src/components/media/index.tsx +335 -0
  843. corvin_console/web-next/src/components/quota-warning-banner.tsx +69 -0
  844. corvin_console/web-next/src/components/reauth-dialog.tsx +98 -0
  845. corvin_console/web-next/src/components/setup/SetupGate.tsx +948 -0
  846. corvin_console/web-next/src/components/table/index.tsx +416 -0
  847. corvin_console/web-next/src/components/task-panel.tsx +151 -0
  848. corvin_console/web-next/src/components/task-status-bar-m2.tsx +61 -0
  849. corvin_console/web-next/src/components/task-status-bar.tsx +170 -0
  850. corvin_console/web-next/src/components/theme-toggle.tsx +73 -0
  851. corvin_console/web-next/src/components/ui/badge.tsx +31 -0
  852. corvin_console/web-next/src/components/ui/button.tsx +51 -0
  853. corvin_console/web-next/src/components/ui/card.tsx +58 -0
  854. corvin_console/web-next/src/components/ui/dialog.tsx +105 -0
  855. corvin_console/web-next/src/components/ui/help-tooltip.tsx +137 -0
  856. corvin_console/web-next/src/components/ui/input.tsx +25 -0
  857. corvin_console/web-next/src/components/ui/label.tsx +19 -0
  858. corvin_console/web-next/src/components/ui/select.tsx +41 -0
  859. corvin_console/web-next/src/components/ui/skeleton.tsx +15 -0
  860. corvin_console/web-next/src/components/ui/switch.tsx +34 -0
  861. corvin_console/web-next/src/components/ui/tabs.tsx +55 -0
  862. corvin_console/web-next/src/components/ui/textarea.tsx +24 -0
  863. corvin_console/web-next/src/hooks/use-chat-task-status.ts +64 -0
  864. corvin_console/web-next/src/hooks/use-idb-quota.ts +72 -0
  865. corvin_console/web-next/src/hooks/use-settings-stream.ts +76 -0
  866. corvin_console/web-next/src/hooks/use-task-idb.ts +179 -0
  867. corvin_console/web-next/src/hooks/use-task-persistence.ts +105 -0
  868. corvin_console/web-next/src/hooks/use-task-polling.ts +66 -0
  869. corvin_console/web-next/src/hooks/use-task-progress.ts +94 -0
  870. corvin_console/web-next/src/hooks/use-task-sse.ts +183 -0
  871. corvin_console/web-next/src/hooks/use-tasks-with-live-updates.ts +266 -0
  872. corvin_console/web-next/src/hooks/usePrefetch.tsx +67 -0
  873. corvin_console/web-next/src/index.css +98 -0
  874. corvin_console/web-next/src/lazy-pages.ts +156 -0
  875. corvin_console/web-next/src/lib/api.ts +4697 -0
  876. corvin_console/web-next/src/lib/auth.tsx +60 -0
  877. corvin_console/web-next/src/lib/chat-registry.ts +542 -0
  878. corvin_console/web-next/src/lib/preferences.ts +106 -0
  879. corvin_console/web-next/src/lib/streaming-state.ts +109 -0
  880. corvin_console/web-next/src/lib/task-db.ts +286 -0
  881. corvin_console/web-next/src/lib/task-lifecycle.ts +176 -0
  882. corvin_console/web-next/src/lib/task-polling.ts +160 -0
  883. corvin_console/web-next/src/lib/task-recovery.ts +121 -0
  884. corvin_console/web-next/src/lib/utils.ts +31 -0
  885. corvin_console/web-next/src/main.tsx +54 -0
  886. corvin_console/web-next/src/pages/agent-hub.tsx +1987 -0
  887. corvin_console/web-next/src/pages/agents.tsx +710 -0
  888. corvin_console/web-next/src/pages/api-keys.tsx +558 -0
  889. corvin_console/web-next/src/pages/bridges.tsx +1774 -0
  890. corvin_console/web-next/src/pages/chat.tsx +1830 -0
  891. corvin_console/web-next/src/pages/coming-soon.tsx +29 -0
  892. corvin_console/web-next/src/pages/compliance.tsx +1410 -0
  893. corvin_console/web-next/src/pages/compute.tsx +3599 -0
  894. corvin_console/web-next/src/pages/connectors.tsx +745 -0
  895. corvin_console/web-next/src/pages/cowork.tsx +215 -0
  896. corvin_console/web-next/src/pages/custom-provider.tsx +684 -0
  897. corvin_console/web-next/src/pages/dashboard.tsx +746 -0
  898. corvin_console/web-next/src/pages/data-sources.tsx +1391 -0
  899. corvin_console/web-next/src/pages/engine-control.tsx +936 -0
  900. corvin_console/web-next/src/pages/engines.tsx +1888 -0
  901. corvin_console/web-next/src/pages/extensions.tsx +514 -0
  902. corvin_console/web-next/src/pages/files.tsx +610 -0
  903. corvin_console/web-next/src/pages/forge.tsx +675 -0
  904. corvin_console/web-next/src/pages/landing.tsx +197 -0
  905. corvin_console/web-next/src/pages/ldd.tsx +323 -0
  906. corvin_console/web-next/src/pages/license.tsx +417 -0
  907. corvin_console/web-next/src/pages/login.tsx +21 -0
  908. corvin_console/web-next/src/pages/mcp-plugins.tsx +371 -0
  909. corvin_console/web-next/src/pages/memory.tsx +381 -0
  910. corvin_console/web-next/src/pages/not-found.tsx +40 -0
  911. corvin_console/web-next/src/pages/orgs.tsx +1383 -0
  912. corvin_console/web-next/src/pages/people.tsx +321 -0
  913. corvin_console/web-next/src/pages/personas.tsx +605 -0
  914. corvin_console/web-next/src/pages/rag-hub.tsx +302 -0
  915. corvin_console/web-next/src/pages/rag.tsx +480 -0
  916. corvin_console/web-next/src/pages/settings.tsx +274 -0
  917. corvin_console/web-next/src/pages/skills.tsx +519 -0
  918. corvin_console/web-next/src/pages/space.tsx +1378 -0
  919. corvin_console/web-next/src/pages/voice.tsx +793 -0
  920. corvin_console/web-next/src/pages/workflows.tsx +3289 -0
  921. corvin_console/web-next/tailwind.config.ts +90 -0
  922. corvin_console/web-next/test-final-results.txt +312 -0
  923. corvin_console/web-next/test-results/.last-run.json +11 -0
  924. corvin_console/web-next/test-results/data-sources-e2e-Data-Sour-9ddaf-elete-SQLite-via-trash-icon-chromium/test-failed-1.png +0 -0
  925. corvin_console/web-next/test-results/flow-creator-Flow-Creator--2b720-d-creates-flow-yaml-on-disk-chromium/test-failed-1.png +0 -0
  926. corvin_console/web-next/test-results/flow-creator-Flow-Creator--4c9e2--returns-correct-step-graph-chromium/test-failed-1.png +0 -0
  927. corvin_console/web-next/tests/e2e/adr-0124-extensibility.spec.ts +679 -0
  928. corvin_console/web-next/tests/e2e/adr-0125-engine-detection.spec.ts +434 -0
  929. corvin_console/web-next/tests/e2e/adr-0126-claude-local.spec.ts +389 -0
  930. corvin_console/web-next/tests/e2e/auth-state.json +29 -0
  931. corvin_console/web-next/tests/e2e/bridges-qr.spec.ts +162 -0
  932. corvin_console/web-next/tests/e2e/chat-audit-graphs.spec.ts +611 -0
  933. corvin_console/web-next/tests/e2e/complete-feature-coverage.spec.ts +428 -0
  934. corvin_console/web-next/tests/e2e/complex-chained-flows.spec.ts +705 -0
  935. corvin_console/web-next/tests/e2e/compliance-audit.spec.ts +527 -0
  936. corvin_console/web-next/tests/e2e/compliance-critical-pages.spec.ts +618 -0
  937. corvin_console/web-next/tests/e2e/comprehensive-ui-integration.spec.ts +428 -0
  938. corvin_console/web-next/tests/e2e/comprehensive-workflow.spec.ts +212 -0
  939. corvin_console/web-next/tests/e2e/compute-awpkg-export.spec.ts +346 -0
  940. corvin_console/web-next/tests/e2e/critical-flows/real-backend.spec.ts +166 -0
  941. corvin_console/web-next/tests/e2e/custom-provider.spec.ts +298 -0
  942. corvin_console/web-next/tests/e2e/data-sources-e2e.spec.ts +301 -0
  943. corvin_console/web-next/tests/e2e/datasource-license-gate.spec.ts +242 -0
  944. corvin_console/web-next/tests/e2e/demo-spotify-analysis.spec.ts +317 -0
  945. corvin_console/web-next/tests/e2e/edge-cases-and-failures.spec.ts +649 -0
  946. corvin_console/web-next/tests/e2e/flow-creator.spec.ts +393 -0
  947. corvin_console/web-next/tests/e2e/global-setup-adr0124.ts +79 -0
  948. corvin_console/web-next/tests/e2e/ldd-active.spec.ts +319 -0
  949. corvin_console/web-next/tests/e2e/license-gates-comprehensive.spec.ts +224 -0
  950. corvin_console/web-next/tests/e2e/parallel-tasks.spec.ts +199 -0
  951. corvin_console/web-next/tests/e2e/persona-engine-editor.spec.ts +238 -0
  952. corvin_console/web-next/tests/e2e/rag-license-gate.spec.ts +176 -0
  953. corvin_console/web-next/tests/e2e/security-session-auth.spec.ts +977 -0
  954. corvin_console/web-next/tests/fixtures/mock-pages.tsx +216 -0
  955. corvin_console/web-next/tests/fixtures/server-extensions.ts +296 -0
  956. corvin_console/web-next/tests/fixtures/server.ts +398 -0
  957. corvin_console/web-next/tests/integration/auth/login-form.test.tsx +109 -0
  958. corvin_console/web-next/tests/integration/auth/login.test.tsx.skip +168 -0
  959. corvin_console/web-next/tests/integration/bridges/bridges-page.test.tsx +221 -0
  960. corvin_console/web-next/tests/integration/chat/chat-page.test.tsx +296 -0
  961. corvin_console/web-next/tests/integration/chat/task-persistence-hook.test.tsx +158 -0
  962. corvin_console/web-next/tests/integration/compliance/compliance-page.test.tsx +232 -0
  963. corvin_console/web-next/tests/integration/compute/job-list.test.tsx +87 -0
  964. corvin_console/web-next/tests/integration/compute/job-submission.test.tsx.skip +183 -0
  965. corvin_console/web-next/tests/integration/dashboard/dashboard-display.test.tsx +97 -0
  966. corvin_console/web-next/tests/integration/dashboard/overview.test.tsx.skip +147 -0
  967. corvin_console/web-next/tests/integration/engines/engines-page.test.tsx +204 -0
  968. corvin_console/web-next/tests/integration/forge/tool-list.test.tsx +113 -0
  969. corvin_console/web-next/tests/integration/forge/tool-management.test.tsx.skip +239 -0
  970. corvin_console/web-next/tests/integration/phase2-critical-flows.test.tsx +84 -0
  971. corvin_console/web-next/tests/integration/settings/persistence.test.tsx.skip +180 -0
  972. corvin_console/web-next/tests/integration/settings/settings-form.test.tsx +159 -0
  973. corvin_console/web-next/tests/integration/voice/voice-page.test.tsx +193 -0
  974. corvin_console/web-next/tests/integration/workflows/workflows-page.test.tsx +255 -0
  975. corvin_console/web-next/tests/setup.ts +81 -0
  976. corvin_console/web-next/tests/unit/components/Badge.test.tsx +60 -0
  977. corvin_console/web-next/tests/unit/components/Button.test.tsx +89 -0
  978. corvin_console/web-next/tests/unit/components/Card.test.tsx +129 -0
  979. corvin_console/web-next/tests/unit/components/Dialog.test.tsx +113 -0
  980. corvin_console/web-next/tests/unit/components/HelpTooltip.test.tsx +90 -0
  981. corvin_console/web-next/tests/unit/components/Input.test.tsx +59 -0
  982. corvin_console/web-next/tests/unit/components/Label.test.tsx +86 -0
  983. corvin_console/web-next/tests/unit/components/Select.test.tsx +99 -0
  984. corvin_console/web-next/tests/unit/components/Skeleton.test.tsx +66 -0
  985. corvin_console/web-next/tests/unit/components/Tabs.test.tsx +112 -0
  986. corvin_console/web-next/tests/unit/components/Textarea.test.tsx +68 -0
  987. corvin_console/web-next/tests/unit/hooks/useSettingsStream.test.ts +203 -0
  988. corvin_console/web-next/tests/unit/hooks/useTaskIDB.test.ts +164 -0
  989. corvin_console/web-next/tests/unit/hooks/useTaskPolling.test.ts +123 -0
  990. corvin_console/web-next/tests/unit/hooks/useTaskProgress.test.ts +128 -0
  991. corvin_console/web-next/tests/unit/hooks/useTaskSSE.test.ts +155 -0
  992. corvin_console/web-next/tests/unit/hooks/useTasksWithLiveUpdates.test.ts +437 -0
  993. corvin_console/web-next/tests/unit/lib/api.test.ts +307 -0
  994. corvin_console/web-next/tests/unit/lib/auth.test.ts +157 -0
  995. corvin_console/web-next/tests/unit/lib/chat-registry.test.ts +523 -0
  996. corvin_console/web-next/tests/unit/lib/detectTtsLang.test.ts +195 -0
  997. corvin_console/web-next/tests/unit/lib/preferences.test.ts +162 -0
  998. corvin_console/web-next/tests/unit/lib/streaming-state.test.ts +247 -0
  999. corvin_console/web-next/tests/unit/lib/task-db.test.ts +112 -0
  1000. corvin_console/web-next/tests/unit/lib/task-lifecycle.test.ts +147 -0
  1001. corvin_console/web-next/tests/unit/lib/taskRecovery.test.ts +226 -0
  1002. corvin_console/web-next/tests/unit/lib/utils.test.ts +230 -0
  1003. corvin_console/web-next/tests/utils/test-utils.tsx +64 -0
  1004. corvin_console/web-next/tsconfig.json +26 -0
  1005. corvin_console/web-next/tsconfig.node.json +11 -0
  1006. corvin_console/web-next/tsconfig.node.tsbuildinfo +1 -0
  1007. corvin_console/web-next/tsconfig.tsbuildinfo +1 -0
  1008. corvin_console/web-next/vite.config.d.ts +2 -0
  1009. corvin_console/web-next/vite.config.js +75 -0
  1010. corvin_console/web-next/vite.config.ts +69 -0
  1011. corvin_console/web-next/vitest.config.js +34 -0
  1012. corvin_gateway/__init__.py +32 -0
  1013. corvin_gateway/app.py +724 -0
  1014. corvin_gateway/audit_metrics.py +971 -0
  1015. corvin_gateway/auth.py +55 -0
  1016. corvin_gateway/cli.py +317 -0
  1017. corvin_gateway/console_api.py +297 -0
  1018. corvin_gateway/dispatcher.py +593 -0
  1019. corvin_gateway/durable_queue.py +211 -0
  1020. corvin_gateway/grpc/__init__.py +18 -0
  1021. corvin_gateway/grpc/corvin.proto +92 -0
  1022. corvin_gateway/grpc/grpc_server.py +356 -0
  1023. corvin_gateway/oidc.py +555 -0
  1024. corvin_gateway/packaging.py +600 -0
  1025. corvin_gateway/rate_limit.py +186 -0
  1026. corvin_gateway/runs.py +394 -0
  1027. corvin_gateway/sbom.py +474 -0
  1028. corvin_gateway/scim.py +477 -0
  1029. corvin_gateway/sse.py +272 -0
  1030. corvin_gateway/tenant_config.py +377 -0
  1031. corvin_gateway/webhooks.py +457 -0
  1032. corvin_license/__init__.py +12 -0
  1033. corvin_license/app.py +452 -0
  1034. corvin_license/audit.py +253 -0
  1035. corvin_license/cli.py +307 -0
  1036. corvin_license/grace.py +260 -0
  1037. corvin_license/portal.py +88 -0
  1038. corvin_license/pubkey.pem +11 -0
  1039. corvin_license/sync.py +355 -0
  1040. corvin_license/tier_flags.py +157 -0
  1041. corvin_license/trial.py +213 -0
  1042. corvin_license/verifier.py +528 -0
  1043. corvinos-0.1.0.dist-info/METADATA +587 -0
  1044. corvinos-0.1.0.dist-info/RECORD +1116 -0
  1045. corvinos-0.1.0.dist-info/WHEEL +4 -0
  1046. corvinos-0.1.0.dist-info/entry_points.txt +11 -0
  1047. corvinos-0.1.0.dist-info/licenses/LICENSE +201 -0
  1048. corvinos-0.1.0.dist-info/licenses/NOTICE +56 -0
  1049. dev.sh +56 -0
  1050. ops/.dockerignore +51 -0
  1051. ops/.env.example +182 -0
  1052. ops/.env.local-test.template +38 -0
  1053. ops/.env.template +49 -0
  1054. ops/Caddyfile.template +40 -0
  1055. ops/Dockerfile +128 -0
  1056. ops/bootstrap/10-system-prep.sh +86 -0
  1057. ops/bootstrap/20-fetch-repo.sh +39 -0
  1058. ops/bootstrap/30-tenant-init.sh +63 -0
  1059. ops/bootstrap/40-launch.sh +49 -0
  1060. ops/docker-compose.local-test.yml +102 -0
  1061. ops/docker-compose.yml +106 -0
  1062. ops/docker-quick-start.sh +208 -0
  1063. ops/entrypoint.sh +54 -0
  1064. ops/healthcheck.sh +51 -0
  1065. ops/laptop/corvin-claude-creds-sync.service +16 -0
  1066. ops/laptop/corvin-claude-creds-sync.timer +14 -0
  1067. ops/laptop/corvin-sync-claude-creds.sh +41 -0
  1068. ops/laptop/corvin-tunnel.service +44 -0
  1069. ops/launcher/a2a_entry.py +37 -0
  1070. ops/launcher/corvin/__init__.py +2 -0
  1071. ops/launcher/corvin/__main__.py +4 -0
  1072. ops/launcher/corvin/backend.py +9 -0
  1073. ops/launcher/corvin/cli.py +546 -0
  1074. ops/launcher/corvin/config.py +41 -0
  1075. ops/launcher/corvin/docker_backend.py +170 -0
  1076. ops/launcher/corvin/native_backend.py +99 -0
  1077. ops/launcher/corvin/ollama.py +59 -0
  1078. ops/launcher/corvin/serve_backend.py +110 -0
  1079. ops/launcher/corvin/serve_entry.py +44 -0
  1080. ops/launcher/flow_entry.py +33 -0
  1081. ops/launcher/instance_id_entry.py +32 -0
  1082. ops/launcher/layer_entry.py +39 -0
  1083. ops/launcher/wdat_report_entry.py +28 -0
  1084. ops/supervisord.conf +106 -0
  1085. ops/systemd/corvin-audit-verify.service +15 -0
  1086. ops/systemd/corvin-audit-verify.timer +11 -0
  1087. ops/systemd/corvin-compose.service +18 -0
  1088. ops/systemd/corvin-task-worker.service +21 -0
  1089. ops/tailscale/.env.template +60 -0
  1090. ops/tailscale/docker-compose.yml +99 -0
  1091. pyproject.toml +12 -0
  1092. scripts/docker-compose.keycloak.yml +46 -0
  1093. scripts/keycloak_smoke.py +164 -0
  1094. systemd/corvin-webui.service +31 -0
  1095. tests/__init__.py +0 -0
  1096. tests/test_app.py +271 -0
  1097. tests/test_audit_metrics.py +495 -0
  1098. tests/test_auth.py +8 -0
  1099. tests/test_container.py +133 -0
  1100. tests/test_dispatcher.py +351 -0
  1101. tests/test_engine_policy.py +252 -0
  1102. tests/test_keycloak_smoke.py +402 -0
  1103. tests/test_metrics_endpoint.py +203 -0
  1104. tests/test_observability_dashboards.py +113 -0
  1105. tests/test_oidc.py +344 -0
  1106. tests/test_packaging.py +341 -0
  1107. tests/test_phase7.py +305 -0
  1108. tests/test_phase7_followup.py +178 -0
  1109. tests/test_sbom.py +411 -0
  1110. tests/test_scim.py +245 -0
  1111. tests/test_smoke.py +333 -0
  1112. tests/test_sse.py +376 -0
  1113. tests/test_tenant_config.py +328 -0
  1114. tests/test_tenant_cross_plugin.py +310 -0
  1115. tests/test_webhooks.py +566 -0
  1116. tests/test_zone_policy.py +236 -0
Dockerfile ADDED
@@ -0,0 +1,72 @@
1
+ # ADR-0007 Phase 4 — Corvin Gateway OCI image
2
+ #
3
+ # Build: docker build -t corvin-gateway:latest \
4
+ # -f core/gateway/Dockerfile .
5
+ # (the repo root is the build context; both corvin-gateway and forge
6
+ # sources are referenced relative to it.)
7
+ # Run: docker run --rm -p 8000:8000 \
8
+ # -v $HOME/.corvin:/var/lib/corvin \
9
+ # -e CORVIN_HOME=/var/lib/corvin \
10
+ # corvin-gateway:latest
11
+ #
12
+ # Notes
13
+ # -----
14
+ # * Slim base — the gateway has no need for system C toolchains at
15
+ # runtime. cryptography wheels ship with pre-built binaries.
16
+ # * Non-root user with a stable uid/gid so the operator can chown
17
+ # the bind-mounted CORVIN_HOME to match.
18
+ # * /healthz is the documented liveness probe; the chart wires it.
19
+ #
20
+ # What this image does NOT include
21
+ # --------------------------------
22
+ # * Any engine binary (claude / codex). The gateway dispatches via
23
+ # the engine layer at request time; for production deployments
24
+ # the engine sidecar runs separately (Phase 4 only ships the
25
+ # gateway).
26
+ # * bwrap. The sandbox is a forge / skill-forge concern; gateway-
27
+ # side runs go through the engine layer's own sandbox model.
28
+
29
+ FROM python:3.12-slim AS runtime
30
+
31
+ LABEL org.opencontainers.image.title="Corvin Gateway"
32
+ LABEL org.opencontainers.image.description="Multi-tenant REST API for Corvin (ADR-0007)"
33
+ LABEL org.opencontainers.image.source="https://github.com/veegee82/Corvin"
34
+ LABEL org.opencontainers.image.licenses="see repo LICENSE"
35
+
36
+ ENV PYTHONDONTWRITEBYTECODE=1 \
37
+ PYTHONUNBUFFERED=1 \
38
+ PIP_NO_CACHE_DIR=1 \
39
+ PIP_DISABLE_PIP_VERSION_CHECK=1
40
+
41
+ # Non-root runtime user. The chart's securityContext mirrors this.
42
+ RUN groupadd --system --gid 4711 corvin \
43
+ && useradd --system --uid 4711 --gid 4711 --home /var/lib/corvin corvin \
44
+ && mkdir -p /var/lib/corvin/tenants/_default/global \
45
+ && chown -R corvin:corvin /var/lib/corvin
46
+
47
+ WORKDIR /opt/corvin-gateway
48
+
49
+ # Install runtime deps first (cached layer)
50
+ COPY --chown=corvin:corvin core/gateway/requirements.txt \
51
+ /opt/corvin-gateway/requirements.txt
52
+ RUN pip install --no-cache-dir -r /opt/corvin-gateway/requirements.txt
53
+
54
+ # Plugin code -- two packages: the gateway proper and the forge
55
+ # subset it depends on at import time (tenants module + paths +
56
+ # security_events). Build context is the repo root.
57
+ COPY --chown=corvin:corvin core/gateway/corvin_gateway \
58
+ /opt/corvin-gateway/corvin_gateway
59
+ COPY --chown=corvin:corvin operator/forge/forge \
60
+ /opt/corvin-gateway/forge
61
+
62
+ # Cross-PYTHONPATH so `from forge.tenants import ...` resolves.
63
+ ENV PYTHONPATH=/opt/corvin-gateway
64
+
65
+ EXPOSE 8000
66
+ USER corvin
67
+ ENV CORVIN_HOME=/var/lib/corvin
68
+
69
+ # uvicorn is the documented production entry point. Operators
70
+ # overlay --workers, --proxy-headers, --forwarded-allow-ips via
71
+ # the chart values.
72
+ ENTRYPOINT ["uvicorn", "corvin_gateway.app:app", "--host", "0.0.0.0", "--port", "8000"]
chart/Chart.yaml ADDED
@@ -0,0 +1,17 @@
1
+ apiVersion: v2
2
+ name: corvin-gateway
3
+ description: |
4
+ Corvin Gateway — multi-tenant REST API (ADR-0007).
5
+ Opt-in deployment artefact; single-operator setups never enable it.
6
+ type: application
7
+ version: 0.1.0
8
+ appVersion: "0.1.0-phase-4"
9
+ keywords:
10
+ - corvin
11
+ - gateway
12
+ - multi-tenant
13
+ - rest-api
14
+ home: https://github.com/veegee82/Corvin
15
+ maintainers:
16
+ - name: Corvin
17
+ url: https://github.com/veegee82/Corvin
@@ -0,0 +1,25 @@
1
+ {{/*
2
+ Standard Helm helpers for corvin-gateway.
3
+ */}}
4
+
5
+ {{- define "corvin-gateway.name" -}}
6
+ {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7
+ {{- end -}}
8
+
9
+ {{- define "corvin-gateway.fullname" -}}
10
+ {{- $name := default .Chart.Name .Values.nameOverride -}}
11
+ {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
12
+ {{- end -}}
13
+
14
+ {{- define "corvin-gateway.labels" -}}
15
+ app.kubernetes.io/name: {{ include "corvin-gateway.name" . }}
16
+ app.kubernetes.io/instance: {{ .Release.Name }}
17
+ app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
18
+ app.kubernetes.io/managed-by: {{ .Release.Service }}
19
+ helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
20
+ {{- end -}}
21
+
22
+ {{- define "corvin-gateway.selectorLabels" -}}
23
+ app.kubernetes.io/name: {{ include "corvin-gateway.name" . }}
24
+ app.kubernetes.io/instance: {{ .Release.Name }}
25
+ {{- end -}}
@@ -0,0 +1,55 @@
1
+ apiVersion: apps/v1
2
+ kind: Deployment
3
+ metadata:
4
+ name: {{ include "corvin-gateway.fullname" . }}
5
+ labels:
6
+ {{- include "corvin-gateway.labels" . | nindent 4 }}
7
+ spec:
8
+ replicas: {{ .Values.replicaCount }}
9
+ selector:
10
+ matchLabels:
11
+ {{- include "corvin-gateway.selectorLabels" . | nindent 6 }}
12
+ template:
13
+ metadata:
14
+ labels:
15
+ {{- include "corvin-gateway.selectorLabels" . | nindent 8 }}
16
+ spec:
17
+ securityContext:
18
+ {{- toYaml .Values.securityContext | nindent 8 }}
19
+ containers:
20
+ - name: gateway
21
+ image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
22
+ imagePullPolicy: {{ .Values.image.pullPolicy }}
23
+ ports:
24
+ - name: http
25
+ containerPort: 8000
26
+ protocol: TCP
27
+ env:
28
+ - name: CORVIN_HOME
29
+ value: {{ .Values.persistence.mountPath | quote }}
30
+ {{- with .Values.env }}
31
+ {{- toYaml . | nindent 12 }}
32
+ {{- end }}
33
+ livenessProbe:
34
+ {{- toYaml .Values.livenessProbe | nindent 12 }}
35
+ readinessProbe:
36
+ {{- toYaml .Values.readinessProbe | nindent 12 }}
37
+ resources:
38
+ {{- toYaml .Values.resources | nindent 12 }}
39
+ volumeMounts:
40
+ {{- if .Values.persistence.enabled }}
41
+ - name: corvin-home
42
+ mountPath: {{ .Values.persistence.mountPath }}
43
+ {{- end }}
44
+ {{- with .Values.extraVolumeMounts }}
45
+ {{- toYaml . | nindent 12 }}
46
+ {{- end }}
47
+ volumes:
48
+ {{- if .Values.persistence.enabled }}
49
+ - name: corvin-home
50
+ persistentVolumeClaim:
51
+ claimName: {{ include "corvin-gateway.fullname" . }}-home
52
+ {{- end }}
53
+ {{- with .Values.extraVolumes }}
54
+ {{- toYaml . | nindent 8 }}
55
+ {{- end }}
@@ -0,0 +1,17 @@
1
+ {{- if .Values.persistence.enabled }}
2
+ apiVersion: v1
3
+ kind: PersistentVolumeClaim
4
+ metadata:
5
+ name: {{ include "corvin-gateway.fullname" . }}-home
6
+ labels:
7
+ {{- include "corvin-gateway.labels" . | nindent 4 }}
8
+ spec:
9
+ accessModes:
10
+ {{- toYaml .Values.persistence.accessModes | nindent 4 }}
11
+ resources:
12
+ requests:
13
+ storage: {{ .Values.persistence.size }}
14
+ {{- if .Values.persistence.storageClass }}
15
+ storageClassName: {{ .Values.persistence.storageClass | quote }}
16
+ {{- end }}
17
+ {{- end }}
@@ -0,0 +1,15 @@
1
+ apiVersion: v1
2
+ kind: Service
3
+ metadata:
4
+ name: {{ include "corvin-gateway.fullname" . }}
5
+ labels:
6
+ {{- include "corvin-gateway.labels" . | nindent 4 }}
7
+ spec:
8
+ type: {{ .Values.service.type }}
9
+ ports:
10
+ - name: http
11
+ port: {{ .Values.service.port }}
12
+ targetPort: 8000
13
+ protocol: TCP
14
+ selector:
15
+ {{- include "corvin-gateway.selectorLabels" . | nindent 4 }}
chart/values.yaml ADDED
@@ -0,0 +1,75 @@
1
+ # Default values for corvin-gateway.
2
+ # These keep the chart shippable; operators override per environment.
3
+
4
+ image:
5
+ repository: corvin-gateway
6
+ tag: "0.1.0-phase-4"
7
+ pullPolicy: IfNotPresent
8
+
9
+ replicaCount: 1
10
+
11
+ service:
12
+ type: ClusterIP
13
+ port: 8000
14
+
15
+ # CORVIN_HOME is mounted from a PersistentVolumeClaim so tenant
16
+ # state (tokens, runs, webhooks, oidc, scim, audit chains) survives
17
+ # pod restarts. Default uses a 10 GiB RWO claim; operators that
18
+ # need RWX across replicas adjust storageClass + accessModes.
19
+ persistence:
20
+ enabled: true
21
+ storageClass: ""
22
+ accessModes:
23
+ - ReadWriteOnce
24
+ size: 10Gi
25
+ mountPath: /var/lib/corvin
26
+
27
+ # Resources scaled for the Phase 2 traffic envelope (≤ 1k req/s).
28
+ resources:
29
+ requests:
30
+ cpu: 100m
31
+ memory: 256Mi
32
+ limits:
33
+ cpu: 1000m
34
+ memory: 1Gi
35
+
36
+ # Non-root runtime user matches the image's `corvin` user (uid 4711).
37
+ # Operators on restrictive PSPs may need to relax fsGroup if their
38
+ # storage class returns volumes the gateway user can't write to.
39
+ securityContext:
40
+ runAsNonRoot: true
41
+ runAsUser: 4711
42
+ runAsGroup: 4711
43
+ fsGroup: 4711
44
+ allowPrivilegeEscalation: false
45
+ readOnlyRootFilesystem: false # uvicorn needs /tmp for connect-streams
46
+ capabilities:
47
+ drop: [ALL]
48
+
49
+ # Probes target /healthz which the gateway serves unauthenticated.
50
+ livenessProbe:
51
+ httpGet:
52
+ path: /healthz
53
+ port: 8000
54
+ initialDelaySeconds: 5
55
+ periodSeconds: 15
56
+ timeoutSeconds: 3
57
+
58
+ readinessProbe:
59
+ httpGet:
60
+ path: /healthz
61
+ port: 8000
62
+ initialDelaySeconds: 2
63
+ periodSeconds: 5
64
+ timeoutSeconds: 2
65
+
66
+ # Extra env vars injected into the deployment.
67
+ env: []
68
+ # - name: CORVIN_DEBUG
69
+ # value: "1"
70
+
71
+ # Operator-supplied secret(s) for gateway tokens / webhook secrets.
72
+ # The chart does NOT generate tokens; the operator runs the CLI
73
+ # (`python -m corvin_gateway.cli token issue …`) once a pod is up.
74
+ extraVolumes: []
75
+ extraVolumeMounts: []
@@ -0,0 +1,2 @@
1
+ """AWPKG — Corvin Workflow Package Format (ADR-0032)."""
2
+ __version__ = "0.1.0"
@@ -0,0 +1,118 @@
1
+ """Audit-chain integration for AWPKG.
2
+
3
+ Wraps forge.security_events.write_event() when available; falls back to a
4
+ standalone append when the forge plugin is not on sys.path. Either way the
5
+ output format is identical so verify_chain can read a mixed log.
6
+ """
7
+ from __future__ import annotations
8
+
9
+ import fcntl
10
+ import hashlib
11
+ import json
12
+ import os
13
+ import sys
14
+ import time
15
+ from pathlib import Path
16
+ from typing import Any
17
+
18
+
19
+ def _audit_path() -> Path:
20
+ env = os.environ.get("VOICE_AUDIT_PATH") or os.environ.get("FORGE_AUDIT_PATH")
21
+ if env:
22
+ return Path(env)
23
+ corvin_home = os.environ.get("CORVIN_HOME")
24
+ if corvin_home:
25
+ return Path(corvin_home) / "global" / "forge" / "audit.jsonl"
26
+ here = Path(__file__).resolve()
27
+ for parent in [here, *here.parents]:
28
+ if (parent / ".corvin_repo").exists() or (parent / "plugins").is_dir(): # legacy fallback during migration
29
+ for sub in (".corvin",):
30
+ candidate = parent / sub
31
+ if candidate.is_dir():
32
+ return candidate / "global" / "forge" / "audit.jsonl"
33
+ return parent / ".corvin" / "global" / "forge" / "audit.jsonl"
34
+ return Path.home() / ".corvin" / "global" / "forge" / "audit.jsonl"
35
+
36
+
37
+ def _try_forge_write(event_type: str, details: dict[str, Any]) -> bool:
38
+ try:
39
+ forge_root = Path(__file__).resolve().parents[3] / "forge" / "forge"
40
+ if forge_root not in [Path(p) for p in sys.path]:
41
+ sys.path.insert(0, str(forge_root.parent))
42
+ from forge.security_events import write_event # type: ignore[import]
43
+ write_event(_audit_path(), event_type, details=details)
44
+ return True
45
+ except Exception:
46
+ return False
47
+
48
+
49
+ def _standalone_write(event_type: str, details: dict[str, Any]) -> None:
50
+ path = _audit_path()
51
+ path.parent.mkdir(parents=True, exist_ok=True)
52
+ _SEVERITIES = {
53
+ "package.installed": "INFO",
54
+ "package.removed": "INFO",
55
+ "package.install_denied": "WARNING",
56
+ "package.inspect": "INFO",
57
+ }
58
+ severity = _SEVERITIES.get(event_type, "INFO")
59
+ with open(path, "a+b") as fh:
60
+ fcntl.flock(fh, fcntl.LOCK_EX)
61
+ try:
62
+ prev_hash = ""
63
+ try:
64
+ # FND-18: read the TRUE last chain record. The old 4 KB-tail read
65
+ # missed the last line whenever the final record exceeded 4 KB →
66
+ # a wrong/empty prev_hash → a broken chain link. Walk all lines
67
+ # (the awpkg fallback chain is small) and keep the last valid hash.
68
+ fh.seek(0)
69
+ for line in fh.read().decode("utf-8", errors="replace").splitlines():
70
+ line = line.strip()
71
+ if not line:
72
+ continue
73
+ try:
74
+ prev_hash = json.loads(line).get("hash", prev_hash)
75
+ except Exception:
76
+ pass
77
+ except Exception:
78
+ pass
79
+ # ADR-0129 — apply the metadata-only floor even on the forge-
80
+ # absent fallback path, so this writer can't bypass it. If forge
81
+ # is genuinely unimportable, inline a minimal denylist (fail-safe).
82
+ _det = details
83
+ try:
84
+ from forge.security_events import filter_audit_details as _fad # type: ignore
85
+ _det, _ = _fad(details, event_type=event_type)
86
+ except Exception: # noqa: BLE001 — forge truly absent: minimal floor
87
+ _bad = ("prompt", "output", "text", "secret", "password",
88
+ "token", "credential", "email", "body", "content")
89
+ _det = {k: v for k, v in (details or {}).items()
90
+ if str(k).lower() not in _bad}
91
+ record: dict[str, Any] = {
92
+ "ts": time.time(),
93
+ "event_type": str(event_type)[:128],
94
+ "severity": severity,
95
+ "run_id": "",
96
+ "tool": "",
97
+ "details": _det,
98
+ "prev_hash": prev_hash,
99
+ }
100
+ canonical = json.dumps(record, sort_keys=True, separators=(",", ":"))
101
+ record["hash"] = hashlib.sha256(
102
+ (prev_hash + "\n" + canonical).encode()
103
+ ).hexdigest()[:16]
104
+ fh.seek(0, 2)
105
+ fh.write((json.dumps(record, separators=(",", ":")) + "\n").encode("utf-8"))
106
+ # FND-18: durability parity with the forge writer — fsync so a crash
107
+ # after write() but before flush doesn't lose the event the unified
108
+ # chain assumes is present.
109
+ fh.flush()
110
+ os.fsync(fh.fileno())
111
+ finally:
112
+ fcntl.flock(fh, fcntl.LOCK_UN)
113
+
114
+
115
+ def emit(event_type: str, **details: Any) -> None:
116
+ """Emit an audit event into the unified hash chain."""
117
+ if not _try_forge_write(event_type, details):
118
+ _standalone_write(event_type, details)
@@ -0,0 +1,207 @@
1
+ """AWPKG builder — build, init and export packages."""
2
+ from __future__ import annotations
3
+
4
+ import io
5
+ import json
6
+ import os
7
+ import zipfile
8
+ from pathlib import Path
9
+ from typing import Any
10
+
11
+ from .manifest import ManifestError, parse_raw
12
+
13
+ try:
14
+ import yaml as _yaml # type: ignore[import]
15
+ _HAS_YAML = True
16
+ except ImportError:
17
+ _HAS_YAML = False
18
+
19
+
20
+ class BuildError(ValueError):
21
+ """Raised when a build source is misconfigured."""
22
+
23
+
24
+ _AWPKG_YAML_TEMPLATE = """\
25
+ # awpkg build config — edit and run 'corvin pkg build'
26
+ awpkg: "1.0"
27
+ id: "com.example.my-workflow"
28
+ name: "My Workflow"
29
+ version: "0.1.0"
30
+ description: "Describe your workflow here."
31
+ author: "Your Name <you@example.com>"
32
+ license: "Apache-2.0"
33
+
34
+ components:
35
+ workflows:
36
+ - src/workflow.awp.yaml
37
+ # forge_tools:
38
+ # - src/tools/code_my_tool.json
39
+ # skills:
40
+ # - src/skills/my_skill/SKILL.md
41
+ # personas:
42
+ # - src/personas/my_persona.yaml
43
+
44
+ permissions:
45
+ network: false
46
+ compute: false
47
+ secrets: []
48
+
49
+ dependencies: []
50
+ """
51
+
52
+ _WORKFLOW_TEMPLATE = """\
53
+ awp: "1.0.0"
54
+
55
+ workflow:
56
+ name: my_workflow
57
+ description: "A minimal example AWP workflow."
58
+
59
+ orchestration:
60
+ engine: dag
61
+ graph:
62
+ - id: step_one
63
+ type: agent
64
+ agent: assistant
65
+ instructions: "Do something useful."
66
+ depends_on: []
67
+ """
68
+
69
+
70
+ def init(dest_dir: str | Path) -> Path:
71
+ """Write awpkg.yaml skeleton and a sample workflow into dest_dir."""
72
+ dest = Path(dest_dir)
73
+ dest.mkdir(parents=True, exist_ok=True)
74
+ cfg = dest / "awpkg.yaml"
75
+ if cfg.exists():
76
+ raise BuildError(f"awpkg.yaml already exists at {cfg}")
77
+ cfg.write_text(_AWPKG_YAML_TEMPLATE, encoding="utf-8")
78
+ src = dest / "src"
79
+ src.mkdir(exist_ok=True)
80
+ wf = src / "workflow.awp.yaml"
81
+ if not wf.exists():
82
+ wf.write_text(_WORKFLOW_TEMPLATE, encoding="utf-8")
83
+ return cfg
84
+
85
+
86
+ def build(
87
+ source_dir: str | Path,
88
+ output_dir: str | Path | None = None,
89
+ ) -> Path:
90
+ """Build an .awpkg from awpkg.yaml in source_dir.
91
+
92
+ Returns the path to the generated .awpkg file.
93
+ """
94
+ source = Path(source_dir).resolve()
95
+ cfg_path = source / "awpkg.yaml"
96
+ if not cfg_path.exists():
97
+ raise BuildError(f"awpkg.yaml not found in {source}")
98
+
99
+ if _HAS_YAML:
100
+ raw: dict[str, Any] = _yaml.safe_load(cfg_path.read_text(encoding="utf-8"))
101
+ else:
102
+ raise BuildError(
103
+ "PyYAML is required to build packages (pip install pyyaml)"
104
+ )
105
+
106
+ try:
107
+ manifest = parse_raw(raw)
108
+ except ManifestError as exc:
109
+ raise BuildError(f"awpkg.yaml validation failed: {exc}") from exc
110
+
111
+ out_dir = Path(output_dir).resolve() if output_dir else source
112
+ out_dir.mkdir(parents=True, exist_ok=True)
113
+ filename = f"{manifest.id.replace('.', '-')}-{manifest.version}.awpkg"
114
+ out_path = out_dir / filename
115
+
116
+ manifest_bytes = _yaml.dump(raw, allow_unicode=True, default_flow_style=False).encode("utf-8")
117
+
118
+ with zipfile.ZipFile(out_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
119
+ zf.writestr("manifest.yaml", manifest_bytes)
120
+
121
+ readme = source / "README.md"
122
+ if readme.exists():
123
+ zf.write(readme, "README.md")
124
+
125
+ for path in manifest.all_component_paths:
126
+ src_file = source / path
127
+ if not src_file.exists():
128
+ raise BuildError(
129
+ f"declared component {path!r} not found at {src_file}"
130
+ )
131
+ zf.write(src_file, path)
132
+
133
+ return out_path
134
+
135
+
136
+ def build_from_dict(
137
+ manifest_dict: dict[str, Any],
138
+ files: dict[str, bytes],
139
+ output_path: str | Path,
140
+ ) -> Path:
141
+ """Build an .awpkg from in-memory data. Used by tests and programmatic callers.
142
+
143
+ Args:
144
+ manifest_dict: The manifest as a Python dict (validated internally).
145
+ files: Dict mapping archive path → file bytes (e.g. "tools/code_foo.json" → b"...").
146
+ output_path: Where to write the .awpkg file.
147
+ """
148
+ from .manifest import parse_raw, ManifestError
149
+ try:
150
+ parse_raw(manifest_dict)
151
+ except ManifestError as exc:
152
+ raise BuildError(str(exc)) from exc
153
+
154
+ if _HAS_YAML:
155
+ manifest_bytes = _yaml.dump(
156
+ manifest_dict, allow_unicode=True, default_flow_style=False
157
+ ).encode("utf-8")
158
+ else:
159
+ manifest_bytes = json.dumps(manifest_dict).encode("utf-8")
160
+
161
+ out = Path(output_path)
162
+ out.parent.mkdir(parents=True, exist_ok=True)
163
+ with zipfile.ZipFile(out, "w", compression=zipfile.ZIP_DEFLATED) as zf:
164
+ zf.writestr("manifest.yaml", manifest_bytes)
165
+ for arc_path, data in files.items():
166
+ zf.writestr(arc_path, data)
167
+ return out
168
+
169
+
170
+ def export(
171
+ package_id: str,
172
+ output_dir: str | Path,
173
+ scope: str = "user",
174
+ corvin_home: Path | None = None,
175
+ ) -> Path:
176
+ """Re-pack an installed package back into an .awpkg file."""
177
+ from .installer import _packages_root, _resolve_corvin_home
178
+ import json
179
+
180
+ home = corvin_home or _resolve_corvin_home()
181
+ install_dir = _packages_root(scope, home) / package_id
182
+ meta_file = install_dir / "_awpkg_meta.json"
183
+ if not meta_file.exists():
184
+ raise BuildError(f"package {package_id!r} not installed in scope {scope!r}")
185
+
186
+ meta = json.loads(meta_file.read_text(encoding="utf-8"))
187
+ out_dir = Path(output_dir)
188
+ out_dir.mkdir(parents=True, exist_ok=True)
189
+ filename = f"{package_id.replace('.', '-')}-{meta['version']}.awpkg"
190
+ out_path = out_dir / filename
191
+
192
+ with zipfile.ZipFile(out_path, "w", compression=zipfile.ZIP_DEFLATED) as zf:
193
+ manifest_file = install_dir / "manifest.yaml"
194
+ if manifest_file.exists():
195
+ zf.write(manifest_file, "manifest.yaml")
196
+
197
+ for paths in meta.get("components", {}).values():
198
+ for p in paths:
199
+ src = install_dir / p
200
+ if src.exists():
201
+ zf.write(src, p)
202
+
203
+ readme = install_dir / "README.md"
204
+ if readme.exists():
205
+ zf.write(readme, "README.md")
206
+
207
+ return out_path