cowork-server 0.1.1__tar.gz

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 (327) hide show
  1. cowork_server-0.1.1/.github/workflows/publish.yml +51 -0
  2. cowork_server-0.1.1/.gitignore +219 -0
  3. cowork_server-0.1.1/.python-version +1 -0
  4. cowork_server-0.1.1/LICENSE +5 -0
  5. cowork_server-0.1.1/PKG-INFO +134 -0
  6. cowork_server-0.1.1/README.md +107 -0
  7. cowork_server-0.1.1/alembic/README +1 -0
  8. cowork_server-0.1.1/alembic/env.py +92 -0
  9. cowork_server-0.1.1/alembic/script.py.mako +28 -0
  10. cowork_server-0.1.1/alembic/versions/93375a6617f4_init.py +197 -0
  11. cowork_server-0.1.1/alembic.ini +149 -0
  12. cowork_server-0.1.1/cowork/__init__.py +0 -0
  13. cowork_server-0.1.1/cowork/__main__.py +4 -0
  14. cowork_server-0.1.1/cowork/api/__init__.py +0 -0
  15. cowork_server-0.1.1/cowork/api/v1/__init__.py +0 -0
  16. cowork_server-0.1.1/cowork/api/v1/endpoints/__init__.py +0 -0
  17. cowork_server-0.1.1/cowork/api/v1/endpoints/artifacts.py +161 -0
  18. cowork_server-0.1.1/cowork/api/v1/endpoints/compat/__init__.py +0 -0
  19. cowork_server-0.1.1/cowork/api/v1/endpoints/compat/stubs.py +153 -0
  20. cowork_server-0.1.1/cowork/api/v1/endpoints/connectors/__init__.py +0 -0
  21. cowork_server-0.1.1/cowork/api/v1/endpoints/connectors/connections.py +27 -0
  22. cowork_server-0.1.1/cowork/api/v1/endpoints/connectors/oauth.py +26 -0
  23. cowork_server-0.1.1/cowork/api/v1/endpoints/connectors/specs.py +29 -0
  24. cowork_server-0.1.1/cowork/api/v1/endpoints/connectors/submissions.py +95 -0
  25. cowork_server-0.1.1/cowork/api/v1/endpoints/conversations.py +116 -0
  26. cowork_server-0.1.1/cowork/api/v1/endpoints/files.py +52 -0
  27. cowork_server-0.1.1/cowork/api/v1/endpoints/health.py +20 -0
  28. cowork_server-0.1.1/cowork/api/v1/endpoints/memory.py +180 -0
  29. cowork_server-0.1.1/cowork/api/v1/endpoints/pins.py +45 -0
  30. cowork_server-0.1.1/cowork/api/v1/endpoints/project_files.py +257 -0
  31. cowork_server-0.1.1/cowork/api/v1/endpoints/projects.py +43 -0
  32. cowork_server-0.1.1/cowork/api/v1/endpoints/publish.py +55 -0
  33. cowork_server-0.1.1/cowork/api/v1/endpoints/responses.py +138 -0
  34. cowork_server-0.1.1/cowork/api/v1/endpoints/schedules.py +123 -0
  35. cowork_server-0.1.1/cowork/api/v1/endpoints/search.py +124 -0
  36. cowork_server-0.1.1/cowork/api/v1/endpoints/settings.py +252 -0
  37. cowork_server-0.1.1/cowork/api/v1/endpoints/skills.py +72 -0
  38. cowork_server-0.1.1/cowork/api/v1/router.py +69 -0
  39. cowork_server-0.1.1/cowork/cli.py +22 -0
  40. cowork_server-0.1.1/cowork/common/__init__.py +0 -0
  41. cowork_server-0.1.1/cowork/common/encryption.py +29 -0
  42. cowork_server-0.1.1/cowork/common/logger.py +214 -0
  43. cowork_server-0.1.1/cowork/common/settings/__init__.py +23 -0
  44. cowork_server-0.1.1/cowork/common/settings/app_settings.py +113 -0
  45. cowork_server-0.1.1/cowork/common/settings/user_settings.py +310 -0
  46. cowork_server-0.1.1/cowork/db/__init__.py +0 -0
  47. cowork_server-0.1.1/cowork/db/session.py +125 -0
  48. cowork_server-0.1.1/cowork/dev_setup.py +60 -0
  49. cowork_server-0.1.1/cowork/handlers/__init__.py +0 -0
  50. cowork_server-0.1.1/cowork/handlers/probe.py +397 -0
  51. cowork_server-0.1.1/cowork/handlers/responses.py +260 -0
  52. cowork_server-0.1.1/cowork/harnesses/__init__.py +6 -0
  53. cowork_server-0.1.1/cowork/harnesses/anton_harness/__init__.py +1 -0
  54. cowork_server-0.1.1/cowork/harnesses/anton_harness/harness.py +416 -0
  55. cowork_server-0.1.1/cowork/harnesses/anton_harness/scratchpad_cell_replay.py +60 -0
  56. cowork_server-0.1.1/cowork/harnesses/anton_harness/settings.py +30 -0
  57. cowork_server-0.1.1/cowork/harnesses/anton_harness/stream_formatter.py +241 -0
  58. cowork_server-0.1.1/cowork/harnesses/anton_harness/tools.py +958 -0
  59. cowork_server-0.1.1/cowork/harnesses/base.py +96 -0
  60. cowork_server-0.1.1/cowork/harnesses/hermes_harness/__init__.py +1 -0
  61. cowork_server-0.1.1/cowork/harnesses/hermes_harness/harness.py +365 -0
  62. cowork_server-0.1.1/cowork/harnesses/hermes_harness/settings.py +13 -0
  63. cowork_server-0.1.1/cowork/harnesses/hermes_harness/stream_formatter.py +132 -0
  64. cowork_server-0.1.1/cowork/harnesses/hermes_harness/tools.py +66 -0
  65. cowork_server-0.1.1/cowork/models/__init__.py +1 -0
  66. cowork_server-0.1.1/cowork/models/base.py +46 -0
  67. cowork_server-0.1.1/cowork/models/conversation.py +21 -0
  68. cowork_server-0.1.1/cowork/models/file.py +13 -0
  69. cowork_server-0.1.1/cowork/models/message.py +49 -0
  70. cowork_server-0.1.1/cowork/models/message_event.py +20 -0
  71. cowork_server-0.1.1/cowork/models/pin.py +16 -0
  72. cowork_server-0.1.1/cowork/models/project.py +15 -0
  73. cowork_server-0.1.1/cowork/models/schedule.py +61 -0
  74. cowork_server-0.1.1/cowork/models/setting.py +10 -0
  75. cowork_server-0.1.1/cowork/models/skill.py +16 -0
  76. cowork_server-0.1.1/cowork/scheduler.py +190 -0
  77. cowork_server-0.1.1/cowork/schemas/__init__.py +0 -0
  78. cowork_server-0.1.1/cowork/schemas/base.py +30 -0
  79. cowork_server-0.1.1/cowork/schemas/connectors.py +146 -0
  80. cowork_server-0.1.1/cowork/schemas/conversations.py +32 -0
  81. cowork_server-0.1.1/cowork/schemas/files.py +15 -0
  82. cowork_server-0.1.1/cowork/schemas/memory.py +53 -0
  83. cowork_server-0.1.1/cowork/schemas/pins.py +9 -0
  84. cowork_server-0.1.1/cowork/schemas/projects.py +12 -0
  85. cowork_server-0.1.1/cowork/schemas/responses.py +157 -0
  86. cowork_server-0.1.1/cowork/schemas/schedules.py +75 -0
  87. cowork_server-0.1.1/cowork/schemas/settings.py +15 -0
  88. cowork_server-0.1.1/cowork/schemas/skills.py +33 -0
  89. cowork_server-0.1.1/cowork/server.py +68 -0
  90. cowork_server-0.1.1/cowork/services/__init__.py +0 -0
  91. cowork_server-0.1.1/cowork/services/artifacts.py +443 -0
  92. cowork_server-0.1.1/cowork/services/connectors/__init__.py +0 -0
  93. cowork_server-0.1.1/cowork/services/connectors/connections.py +62 -0
  94. cowork_server-0.1.1/cowork/services/connectors/oauth/__init__.py +0 -0
  95. cowork_server-0.1.1/cowork/services/connectors/oauth/config.py +73 -0
  96. cowork_server-0.1.1/cowork/services/connectors/oauth/google.py +317 -0
  97. cowork_server-0.1.1/cowork/services/connectors/oauth/pkce.py +18 -0
  98. cowork_server-0.1.1/cowork/services/connectors/oauth/state.py +66 -0
  99. cowork_server-0.1.1/cowork/services/connectors/probe.py +515 -0
  100. cowork_server-0.1.1/cowork/services/connectors/specs/_registry.py +163 -0
  101. cowork_server-0.1.1/cowork/services/connectors/specs/accuweather.json +124 -0
  102. cowork_server-0.1.1/cowork/services/connectors/specs/airtable.json +97 -0
  103. cowork_server-0.1.1/cowork/services/connectors/specs/alphavantage.json +83 -0
  104. cowork_server-0.1.1/cowork/services/connectors/specs/amplitude.json +76 -0
  105. cowork_server-0.1.1/cowork/services/connectors/specs/apollo.json +90 -0
  106. cowork_server-0.1.1/cowork/services/connectors/specs/appdynamics.json +118 -0
  107. cowork_server-0.1.1/cowork/services/connectors/specs/asana.json +98 -0
  108. cowork_server-0.1.1/cowork/services/connectors/specs/ashby.json +52 -0
  109. cowork_server-0.1.1/cowork/services/connectors/specs/attio.json +87 -0
  110. cowork_server-0.1.1/cowork/services/connectors/specs/aws.json +333 -0
  111. cowork_server-0.1.1/cowork/services/connectors/specs/aws_aurora_mysql.json +207 -0
  112. cowork_server-0.1.1/cowork/services/connectors/specs/aws_aurora_postgres.json +195 -0
  113. cowork_server-0.1.1/cowork/services/connectors/specs/aws_cloudwatch.json +289 -0
  114. cowork_server-0.1.1/cowork/services/connectors/specs/aws_rds_mysql.json +163 -0
  115. cowork_server-0.1.1/cowork/services/connectors/specs/aws_rds_postgres.json +163 -0
  116. cowork_server-0.1.1/cowork/services/connectors/specs/aws_rds_sqlserver.json +116 -0
  117. cowork_server-0.1.1/cowork/services/connectors/specs/azure.json +140 -0
  118. cowork_server-0.1.1/cowork/services/connectors/specs/azure_cosmos_db.json +141 -0
  119. cowork_server-0.1.1/cowork/services/connectors/specs/azure_monitor.json +181 -0
  120. cowork_server-0.1.1/cowork/services/connectors/specs/azure_mysql.json +95 -0
  121. cowork_server-0.1.1/cowork/services/connectors/specs/azure_postgres.json +109 -0
  122. cowork_server-0.1.1/cowork/services/connectors/specs/azure_sql.json +231 -0
  123. cowork_server-0.1.1/cowork/services/connectors/specs/bamboohr.json +62 -0
  124. cowork_server-0.1.1/cowork/services/connectors/specs/basecamp.json +67 -0
  125. cowork_server-0.1.1/cowork/services/connectors/specs/better_stack.json +65 -0
  126. cowork_server-0.1.1/cowork/services/connectors/specs/bigquery.json +222 -0
  127. cowork_server-0.1.1/cowork/services/connectors/specs/bitbucket.json +107 -0
  128. cowork_server-0.1.1/cowork/services/connectors/specs/bolt.json +101 -0
  129. cowork_server-0.1.1/cowork/services/connectors/specs/braze.json +59 -0
  130. cowork_server-0.1.1/cowork/services/connectors/specs/bugsnag.json +100 -0
  131. cowork_server-0.1.1/cowork/services/connectors/specs/calendly.json +84 -0
  132. cowork_server-0.1.1/cowork/services/connectors/specs/cassandra.json +135 -0
  133. cowork_server-0.1.1/cowork/services/connectors/specs/census.json +59 -0
  134. cowork_server-0.1.1/cowork/services/connectors/specs/chargebee.json +60 -0
  135. cowork_server-0.1.1/cowork/services/connectors/specs/checkly.json +62 -0
  136. cowork_server-0.1.1/cowork/services/connectors/specs/chili_piper.json +97 -0
  137. cowork_server-0.1.1/cowork/services/connectors/specs/chorus_ai.json +61 -0
  138. cowork_server-0.1.1/cowork/services/connectors/specs/chroma.json +122 -0
  139. cowork_server-0.1.1/cowork/services/connectors/specs/churnzero.json +69 -0
  140. cowork_server-0.1.1/cowork/services/connectors/specs/circleci.json +102 -0
  141. cowork_server-0.1.1/cowork/services/connectors/specs/clari.json +60 -0
  142. cowork_server-0.1.1/cowork/services/connectors/specs/clay.json +59 -0
  143. cowork_server-0.1.1/cowork/services/connectors/specs/clearbit.json +63 -0
  144. cowork_server-0.1.1/cowork/services/connectors/specs/clickhouse.json +155 -0
  145. cowork_server-0.1.1/cowork/services/connectors/specs/clickup.json +86 -0
  146. cowork_server-0.1.1/cowork/services/connectors/specs/close.json +88 -0
  147. cowork_server-0.1.1/cowork/services/connectors/specs/cloudflare.json +105 -0
  148. cowork_server-0.1.1/cowork/services/connectors/specs/cockroachdb.json +129 -0
  149. cowork_server-0.1.1/cowork/services/connectors/specs/coda.json +53 -0
  150. cowork_server-0.1.1/cowork/services/connectors/specs/coingecko.json +93 -0
  151. cowork_server-0.1.1/cowork/services/connectors/specs/confluence.json +146 -0
  152. cowork_server-0.1.1/cowork/services/connectors/specs/copper.json +59 -0
  153. cowork_server-0.1.1/cowork/services/connectors/specs/coralogix.json +90 -0
  154. cowork_server-0.1.1/cowork/services/connectors/specs/couchbase.json +104 -0
  155. cowork_server-0.1.1/cowork/services/connectors/specs/customer_io.json +125 -0
  156. cowork_server-0.1.1/cowork/services/connectors/specs/databricks.json +147 -0
  157. cowork_server-0.1.1/cowork/services/connectors/specs/datadog.json +96 -0
  158. cowork_server-0.1.1/cowork/services/connectors/specs/deel.json +101 -0
  159. cowork_server-0.1.1/cowork/services/connectors/specs/digitalocean.json +92 -0
  160. cowork_server-0.1.1/cowork/services/connectors/specs/discord.json +111 -0
  161. cowork_server-0.1.1/cowork/services/connectors/specs/docusign.json +149 -0
  162. cowork_server-0.1.1/cowork/services/connectors/specs/doordash.json +107 -0
  163. cowork_server-0.1.1/cowork/services/connectors/specs/dynamodb.json +277 -0
  164. cowork_server-0.1.1/cowork/services/connectors/specs/dynatrace.json +111 -0
  165. cowork_server-0.1.1/cowork/services/connectors/specs/easypost.json +74 -0
  166. cowork_server-0.1.1/cowork/services/connectors/specs/elastic_apm.json +127 -0
  167. cowork_server-0.1.1/cowork/services/connectors/specs/elasticsearch.json +100 -0
  168. cowork_server-0.1.1/cowork/services/connectors/specs/etherscan.json +83 -0
  169. cowork_server-0.1.1/cowork/services/connectors/specs/fathom.json +61 -0
  170. cowork_server-0.1.1/cowork/services/connectors/specs/fifteen_five.json +60 -0
  171. cowork_server-0.1.1/cowork/services/connectors/specs/figma.json +91 -0
  172. cowork_server-0.1.1/cowork/services/connectors/specs/firestore.json +128 -0
  173. cowork_server-0.1.1/cowork/services/connectors/specs/fly_io.json +64 -0
  174. cowork_server-0.1.1/cowork/services/connectors/specs/folk.json +50 -0
  175. cowork_server-0.1.1/cowork/services/connectors/specs/freshbooks.json +66 -0
  176. cowork_server-0.1.1/cowork/services/connectors/specs/freshdesk.json +59 -0
  177. cowork_server-0.1.1/cowork/services/connectors/specs/front.json +98 -0
  178. cowork_server-0.1.1/cowork/services/connectors/specs/gainsight.json +60 -0
  179. cowork_server-0.1.1/cowork/services/connectors/specs/gcp.json +125 -0
  180. cowork_server-0.1.1/cowork/services/connectors/specs/gcp_cloud_monitoring.json +115 -0
  181. cowork_server-0.1.1/cowork/services/connectors/specs/gcp_cloudsql_mysql.json +165 -0
  182. cowork_server-0.1.1/cowork/services/connectors/specs/gcp_cloudsql_postgres.json +216 -0
  183. cowork_server-0.1.1/cowork/services/connectors/specs/gcp_spanner.json +142 -0
  184. cowork_server-0.1.1/cowork/services/connectors/specs/github.json +139 -0
  185. cowork_server-0.1.1/cowork/services/connectors/specs/gitlab.json +113 -0
  186. cowork_server-0.1.1/cowork/services/connectors/specs/gmail.json +135 -0
  187. cowork_server-0.1.1/cowork/services/connectors/specs/gong.json +66 -0
  188. cowork_server-0.1.1/cowork/services/connectors/specs/google_ads.json +104 -0
  189. cowork_server-0.1.1/cowork/services/connectors/specs/google_analytics_4.json +104 -0
  190. cowork_server-0.1.1/cowork/services/connectors/specs/google_calendar.json +108 -0
  191. cowork_server-0.1.1/cowork/services/connectors/specs/google_drive.json +110 -0
  192. cowork_server-0.1.1/cowork/services/connectors/specs/google_maps.json +100 -0
  193. cowork_server-0.1.1/cowork/services/connectors/specs/google_search_console.json +104 -0
  194. cowork_server-0.1.1/cowork/services/connectors/specs/grab.json +94 -0
  195. cowork_server-0.1.1/cowork/services/connectors/specs/grafana.json +98 -0
  196. cowork_server-0.1.1/cowork/services/connectors/specs/graylog.json +95 -0
  197. cowork_server-0.1.1/cowork/services/connectors/specs/greenhouse.json +89 -0
  198. cowork_server-0.1.1/cowork/services/connectors/specs/gusto.json +95 -0
  199. cowork_server-0.1.1/cowork/services/connectors/specs/heap.json +59 -0
  200. cowork_server-0.1.1/cowork/services/connectors/specs/helpscout.json +94 -0
  201. cowork_server-0.1.1/cowork/services/connectors/specs/here_maps.json +100 -0
  202. cowork_server-0.1.1/cowork/services/connectors/specs/heroku.json +98 -0
  203. cowork_server-0.1.1/cowork/services/connectors/specs/heroku_postgres.json +150 -0
  204. cowork_server-0.1.1/cowork/services/connectors/specs/hibob.json +71 -0
  205. cowork_server-0.1.1/cowork/services/connectors/specs/hightouch.json +59 -0
  206. cowork_server-0.1.1/cowork/services/connectors/specs/honeycomb.json +71 -0
  207. cowork_server-0.1.1/cowork/services/connectors/specs/hubspot.json +91 -0
  208. cowork_server-0.1.1/cowork/services/connectors/specs/influxdb.json +136 -0
  209. cowork_server-0.1.1/cowork/services/connectors/specs/instacart.json +79 -0
  210. cowork_server-0.1.1/cowork/services/connectors/specs/instana.json +61 -0
  211. cowork_server-0.1.1/cowork/services/connectors/specs/instantly.json +50 -0
  212. cowork_server-0.1.1/cowork/services/connectors/specs/intercom.json +130 -0
  213. cowork_server-0.1.1/cowork/services/connectors/specs/iterable.json +71 -0
  214. cowork_server-0.1.1/cowork/services/connectors/specs/jaeger.json +98 -0
  215. cowork_server-0.1.1/cowork/services/connectors/specs/jira.json +117 -0
  216. cowork_server-0.1.1/cowork/services/connectors/specs/klaviyo.json +52 -0
  217. cowork_server-0.1.1/cowork/services/connectors/specs/lattice.json +62 -0
  218. cowork_server-0.1.1/cowork/services/connectors/specs/launchdarkly.json +93 -0
  219. cowork_server-0.1.1/cowork/services/connectors/specs/lemlist.json +51 -0
  220. cowork_server-0.1.1/cowork/services/connectors/specs/lever.json +110 -0
  221. cowork_server-0.1.1/cowork/services/connectors/specs/linear.json +104 -0
  222. cowork_server-0.1.1/cowork/services/connectors/specs/linkedin_ads.json +81 -0
  223. cowork_server-0.1.1/cowork/services/connectors/specs/logz_io.json +152 -0
  224. cowork_server-0.1.1/cowork/services/connectors/specs/loki.json +131 -0
  225. cowork_server-0.1.1/cowork/services/connectors/specs/lusha.json +51 -0
  226. cowork_server-0.1.1/cowork/services/connectors/specs/lyft.json +71 -0
  227. cowork_server-0.1.1/cowork/services/connectors/specs/mailchimp.json +86 -0
  228. cowork_server-0.1.1/cowork/services/connectors/specs/mapbox.json +62 -0
  229. cowork_server-0.1.1/cowork/services/connectors/specs/mariadb.json +115 -0
  230. cowork_server-0.1.1/cowork/services/connectors/specs/marketo.json +114 -0
  231. cowork_server-0.1.1/cowork/services/connectors/specs/meta_ads.json +112 -0
  232. cowork_server-0.1.1/cowork/services/connectors/specs/microsoft_teams.json +120 -0
  233. cowork_server-0.1.1/cowork/services/connectors/specs/mixpanel.json +86 -0
  234. cowork_server-0.1.1/cowork/services/connectors/specs/monday.json +100 -0
  235. cowork_server-0.1.1/cowork/services/connectors/specs/mongodb.json +139 -0
  236. cowork_server-0.1.1/cowork/services/connectors/specs/mongodb_atlas.json +122 -0
  237. cowork_server-0.1.1/cowork/services/connectors/specs/mssql.json +217 -0
  238. cowork_server-0.1.1/cowork/services/connectors/specs/mysql.json +134 -0
  239. cowork_server-0.1.1/cowork/services/connectors/specs/neo4j.json +105 -0
  240. cowork_server-0.1.1/cowork/services/connectors/specs/neon.json +114 -0
  241. cowork_server-0.1.1/cowork/services/connectors/specs/netlify.json +86 -0
  242. cowork_server-0.1.1/cowork/services/connectors/specs/netsuite.json +93 -0
  243. cowork_server-0.1.1/cowork/services/connectors/specs/newrelic.json +82 -0
  244. cowork_server-0.1.1/cowork/services/connectors/specs/newsapi.json +53 -0
  245. cowork_server-0.1.1/cowork/services/connectors/specs/notion.json +101 -0
  246. cowork_server-0.1.1/cowork/services/connectors/specs/openstreetmap.json +153 -0
  247. cowork_server-0.1.1/cowork/services/connectors/specs/openweather.json +94 -0
  248. cowork_server-0.1.1/cowork/services/connectors/specs/opsgenie.json +76 -0
  249. cowork_server-0.1.1/cowork/services/connectors/specs/oracle.json +174 -0
  250. cowork_server-0.1.1/cowork/services/connectors/specs/otel_collector.json +147 -0
  251. cowork_server-0.1.1/cowork/services/connectors/specs/outlook.json +141 -0
  252. cowork_server-0.1.1/cowork/services/connectors/specs/outreach.json +76 -0
  253. cowork_server-0.1.1/cowork/services/connectors/specs/pagerduty.json +99 -0
  254. cowork_server-0.1.1/cowork/services/connectors/specs/pandadoc.json +87 -0
  255. cowork_server-0.1.1/cowork/services/connectors/specs/personio.json +73 -0
  256. cowork_server-0.1.1/cowork/services/connectors/specs/pinecone.json +76 -0
  257. cowork_server-0.1.1/cowork/services/connectors/specs/pingdom.json +63 -0
  258. cowork_server-0.1.1/cowork/services/connectors/specs/pipedrive.json +98 -0
  259. cowork_server-0.1.1/cowork/services/connectors/specs/planetscale.json +113 -0
  260. cowork_server-0.1.1/cowork/services/connectors/specs/plausible.json +69 -0
  261. cowork_server-0.1.1/cowork/services/connectors/specs/polygon_io.json +68 -0
  262. cowork_server-0.1.1/cowork/services/connectors/specs/postgres.json +116 -0
  263. cowork_server-0.1.1/cowork/services/connectors/specs/posthog.json +88 -0
  264. cowork_server-0.1.1/cowork/services/connectors/specs/prometheus.json +113 -0
  265. cowork_server-0.1.1/cowork/services/connectors/specs/qdrant.json +79 -0
  266. cowork_server-0.1.1/cowork/services/connectors/specs/quickbooks.json +91 -0
  267. cowork_server-0.1.1/cowork/services/connectors/specs/recurly.json +58 -0
  268. cowork_server-0.1.1/cowork/services/connectors/specs/redis.json +118 -0
  269. cowork_server-0.1.1/cowork/services/connectors/specs/redshift.json +95 -0
  270. cowork_server-0.1.1/cowork/services/connectors/specs/render.json +64 -0
  271. cowork_server-0.1.1/cowork/services/connectors/specs/reply_io.json +55 -0
  272. cowork_server-0.1.1/cowork/services/connectors/specs/rippling_hris.json +72 -0
  273. cowork_server-0.1.1/cowork/services/connectors/specs/rollbar.json +88 -0
  274. cowork_server-0.1.1/cowork/services/connectors/specs/rudderstack.json +106 -0
  275. cowork_server-0.1.1/cowork/services/connectors/specs/sage_intacct.json +104 -0
  276. cowork_server-0.1.1/cowork/services/connectors/specs/salesforce.json +122 -0
  277. cowork_server-0.1.1/cowork/services/connectors/specs/salesloft.json +65 -0
  278. cowork_server-0.1.1/cowork/services/connectors/specs/segment.json +125 -0
  279. cowork_server-0.1.1/cowork/services/connectors/specs/sentry.json +119 -0
  280. cowork_server-0.1.1/cowork/services/connectors/specs/shipbob.json +59 -0
  281. cowork_server-0.1.1/cowork/services/connectors/specs/shippo.json +70 -0
  282. cowork_server-0.1.1/cowork/services/connectors/specs/shipstation.json +68 -0
  283. cowork_server-0.1.1/cowork/services/connectors/specs/slack.json +113 -0
  284. cowork_server-0.1.1/cowork/services/connectors/specs/smartlead.json +60 -0
  285. cowork_server-0.1.1/cowork/services/connectors/specs/snowflake.json +102 -0
  286. cowork_server-0.1.1/cowork/services/connectors/specs/splunk.json +123 -0
  287. cowork_server-0.1.1/cowork/services/connectors/specs/spotify.json +109 -0
  288. cowork_server-0.1.1/cowork/services/connectors/specs/statuspage.json +64 -0
  289. cowork_server-0.1.1/cowork/services/connectors/specs/stripe.json +126 -0
  290. cowork_server-0.1.1/cowork/services/connectors/specs/sumo_logic.json +105 -0
  291. cowork_server-0.1.1/cowork/services/connectors/specs/supabase.json +161 -0
  292. cowork_server-0.1.1/cowork/services/connectors/specs/tempo.json +131 -0
  293. cowork_server-0.1.1/cowork/services/connectors/specs/todoist.json +89 -0
  294. cowork_server-0.1.1/cowork/services/connectors/specs/tomorrow_io.json +63 -0
  295. cowork_server-0.1.1/cowork/services/connectors/specs/tomtom.json +95 -0
  296. cowork_server-0.1.1/cowork/services/connectors/specs/trello.json +101 -0
  297. cowork_server-0.1.1/cowork/services/connectors/specs/typeform.json +98 -0
  298. cowork_server-0.1.1/cowork/services/connectors/specs/uber.json +98 -0
  299. cowork_server-0.1.1/cowork/services/connectors/specs/upstash.json +81 -0
  300. cowork_server-0.1.1/cowork/services/connectors/specs/uptimerobot.json +80 -0
  301. cowork_server-0.1.1/cowork/services/connectors/specs/vercel.json +96 -0
  302. cowork_server-0.1.1/cowork/services/connectors/specs/victoriametrics.json +116 -0
  303. cowork_server-0.1.1/cowork/services/connectors/specs/vitally.json +60 -0
  304. cowork_server-0.1.1/cowork/services/connectors/specs/weaviate.json +103 -0
  305. cowork_server-0.1.1/cowork/services/connectors/specs/workable.json +96 -0
  306. cowork_server-0.1.1/cowork/services/connectors/specs/xero.json +72 -0
  307. cowork_server-0.1.1/cowork/services/connectors/specs/youtube_data.json +97 -0
  308. cowork_server-0.1.1/cowork/services/connectors/specs/zendesk.json +114 -0
  309. cowork_server-0.1.1/cowork/services/connectors/specs/zipkin.json +146 -0
  310. cowork_server-0.1.1/cowork/services/connectors/specs/zoho_books.json +111 -0
  311. cowork_server-0.1.1/cowork/services/connectors/specs/zoominfo.json +87 -0
  312. cowork_server-0.1.1/cowork/services/connectors/submissions.py +55 -0
  313. cowork_server-0.1.1/cowork/services/conversations.py +181 -0
  314. cowork_server-0.1.1/cowork/services/files.py +87 -0
  315. cowork_server-0.1.1/cowork/services/memory.py +56 -0
  316. cowork_server-0.1.1/cowork/services/pins.py +40 -0
  317. cowork_server-0.1.1/cowork/services/projects.py +161 -0
  318. cowork_server-0.1.1/cowork/services/providers.py +212 -0
  319. cowork_server-0.1.1/cowork/services/publish.py +202 -0
  320. cowork_server-0.1.1/cowork/services/schedules.py +139 -0
  321. cowork_server-0.1.1/cowork/services/settings.py +148 -0
  322. cowork_server-0.1.1/cowork/services/skills.py +82 -0
  323. cowork_server-0.1.1/docs/DESIGN.md +27 -0
  324. cowork_server-0.1.1/docs/SERVER_MIGRATION.md +70 -0
  325. cowork_server-0.1.1/pyproject.toml +49 -0
  326. cowork_server-0.1.1/tests/__init__.py +0 -0
  327. cowork_server-0.1.1/uv.lock +1755 -0
@@ -0,0 +1,51 @@
1
+ name: Publish to PyPI
2
+
3
+ permissions:
4
+ contents: read
5
+
6
+ on:
7
+ release:
8
+ types: [published]
9
+
10
+ concurrency:
11
+ group: release
12
+ cancel-in-progress: false
13
+
14
+ jobs:
15
+ publish:
16
+ name: Build and publish to PyPI
17
+ runs-on: ubuntu-latest
18
+ environment: pypi
19
+ permissions:
20
+ contents: read # required to checkout private repo
21
+ id-token: write # required for trusted publisher (OIDC)
22
+ steps:
23
+ - uses: actions/checkout@v4
24
+
25
+ - name: Setup uv
26
+ uses: astral-sh/setup-uv@v5
27
+ with:
28
+ python-version: "3.12"
29
+
30
+ - name: Verify tag matches package version
31
+ run: |
32
+ PKG_VERSION=$(python -c "
33
+ import re
34
+ with open('pyproject.toml') as f:
35
+ m = re.search(r'version\s*=\s*\"(.+?)\"', f.read())
36
+ print(m.group(1))
37
+ ")
38
+ TAG_VERSION="${GITHUB_REF_NAME#v}"
39
+ if [ "$PKG_VERSION" != "$TAG_VERSION" ]; then
40
+ echo "ERROR: Tag version ($TAG_VERSION) does not match pyproject.toml version ($PKG_VERSION)"
41
+ exit 1
42
+ fi
43
+ echo "Version check passed: $PKG_VERSION"
44
+
45
+ - name: Build package
46
+ run: uv build
47
+
48
+ - name: Publish to PyPI
49
+ uses: pypa/gh-action-pypi-publish@release/v1
50
+ # Uses trusted publisher (OIDC) — no API token needed.
51
+ # Configure at: https://pypi.org/manage/project/cowork-server/settings/publishing/
@@ -0,0 +1,219 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[codz]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ share/python-wheels/
24
+ *.egg-info/
25
+ .installed.cfg
26
+ *.egg
27
+ MANIFEST
28
+
29
+ # PyInstaller
30
+ # Usually these files are written by a python script from a template
31
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
32
+ *.manifest
33
+ *.spec
34
+
35
+ # Installer logs
36
+ pip-log.txt
37
+ pip-delete-this-directory.txt
38
+
39
+ # Unit test / coverage reports
40
+ htmlcov/
41
+ .tox/
42
+ .nox/
43
+ .coverage
44
+ .coverage.*
45
+ .cache
46
+ nosetests.xml
47
+ coverage.xml
48
+ *.cover
49
+ *.py.cover
50
+ .hypothesis/
51
+ .pytest_cache/
52
+ cover/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ db.sqlite3
62
+ db.sqlite3-journal
63
+
64
+ # Flask stuff:
65
+ instance/
66
+ .webassets-cache
67
+
68
+ # Scrapy stuff:
69
+ .scrapy
70
+
71
+ # Sphinx documentation
72
+ docs/_build/
73
+
74
+ # PyBuilder
75
+ .pybuilder/
76
+ target/
77
+
78
+ # Jupyter Notebook
79
+ .ipynb_checkpoints
80
+
81
+ # IPython
82
+ profile_default/
83
+ ipython_config.py
84
+
85
+ # pyenv
86
+ # For a library or package, you might want to ignore these files since the code is
87
+ # intended to run in multiple environments; otherwise, check them in:
88
+ # .python-version
89
+
90
+ # pipenv
91
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
92
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
93
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
94
+ # install all needed dependencies.
95
+ #Pipfile.lock
96
+
97
+ # UV
98
+ # Similar to Pipfile.lock, it is generally recommended to include uv.lock in version control.
99
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
100
+ # commonly ignored for libraries.
101
+ #uv.lock
102
+
103
+ # poetry
104
+ # Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
105
+ # This is especially recommended for binary packages to ensure reproducibility, and is more
106
+ # commonly ignored for libraries.
107
+ # https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
108
+ #poetry.lock
109
+ #poetry.toml
110
+
111
+ # pdm
112
+ # Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
113
+ # pdm recommends including project-wide configuration in pdm.toml, but excluding .pdm-python.
114
+ # https://pdm-project.org/en/latest/usage/project/#working-with-version-control
115
+ #pdm.lock
116
+ #pdm.toml
117
+ .pdm-python
118
+ .pdm-build/
119
+
120
+ # pixi
121
+ # Similar to Pipfile.lock, it is generally recommended to include pixi.lock in version control.
122
+ #pixi.lock
123
+ # Pixi creates a virtual environment in the .pixi directory, just like venv module creates one
124
+ # in the .venv directory. It is recommended not to include this directory in version control.
125
+ .pixi
126
+
127
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
128
+ __pypackages__/
129
+
130
+ # Celery stuff
131
+ celerybeat-schedule
132
+ celerybeat.pid
133
+
134
+ # SageMath parsed files
135
+ *.sage.py
136
+
137
+ # Environments
138
+ .env
139
+ .envrc
140
+ .venv
141
+ env/
142
+ venv/
143
+ ENV/
144
+ env.bak/
145
+ venv.bak/
146
+
147
+ # Spyder project settings
148
+ .spyderproject
149
+ .spyproject
150
+
151
+ # Rope project settings
152
+ .ropeproject
153
+
154
+ # mkdocs documentation
155
+ /site
156
+
157
+ # mypy
158
+ .mypy_cache/
159
+ .dmypy.json
160
+ dmypy.json
161
+
162
+ # Pyre type checker
163
+ .pyre/
164
+
165
+ # pytype static type analyzer
166
+ .pytype/
167
+
168
+ # Cython debug symbols
169
+ cython_debug/
170
+
171
+ # PyCharm
172
+ # JetBrains specific template is maintained in a separate JetBrains.gitignore that can
173
+ # be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
174
+ # and can be added to the global gitignore or merged into this file. For a more nuclear
175
+ # option (not recommended) you can uncomment the following to ignore the entire idea folder.
176
+ #.idea/
177
+
178
+ # Abstra
179
+ # Abstra is an AI-powered process automation framework.
180
+ # Ignore directories containing user credentials, local state, and settings.
181
+ # Learn more at https://abstra.io/docs
182
+ .abstra/
183
+
184
+ # Visual Studio Code
185
+ # Visual Studio Code specific template is maintained in a separate VisualStudioCode.gitignore
186
+ # that can be found at https://github.com/github/gitignore/blob/main/Global/VisualStudioCode.gitignore
187
+ # and can be added to the global gitignore or merged into this file. However, if you prefer,
188
+ # you could uncomment the following to ignore the entire vscode folder
189
+ # .vscode/
190
+
191
+ # Ruff stuff:
192
+ .ruff_cache/
193
+
194
+ # PyPI configuration file
195
+ .pypirc
196
+
197
+ # Cursor
198
+ # Cursor is an AI-powered code editor. `.cursorignore` specifies files/directories to
199
+ # exclude from AI features like autocomplete and code analysis. Recommended for sensitive data
200
+ # refer to https://docs.cursor.com/context/ignore-files
201
+ .cursorignore
202
+ .cursorindexingignore
203
+
204
+ # IDE
205
+ .idea/
206
+ .vscode/
207
+ *.swp
208
+ *.swo
209
+
210
+ # Marimo
211
+ marimo/_static/
212
+ marimo/_lsp/
213
+ __marimo__/
214
+
215
+ # Misc
216
+ .DS_Store
217
+
218
+ deployment/**/charts
219
+ deployment/**/requirements.lock
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,5 @@
1
+ Copyright (c) 2026 MindsDB, Inc. All rights reserved.
2
+
3
+ This software is proprietary and confidential. No part of this software may be
4
+ reproduced, distributed, or transmitted in any form or by any means, without the
5
+ prior written permission of MindsDB, Inc.
@@ -0,0 +1,134 @@
1
+ Metadata-Version: 2.4
2
+ Name: cowork-server
3
+ Version: 0.1.1
4
+ Summary: FastAPI backend for the Minds Cowork desktop app
5
+ Project-URL: Homepage, https://github.com/mindsdb/cowork-server
6
+ Project-URL: Repository, https://github.com/mindsdb/cowork-server
7
+ Project-URL: Issues, https://github.com/mindsdb/cowork-server/issues
8
+ Author-email: MindsDB Inc <admin@mindsdb.com>
9
+ License-Expression: LicenseRef-Proprietary
10
+ License-File: LICENSE
11
+ Classifier: Framework :: FastAPI
12
+ Classifier: Operating System :: OS Independent
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Python: >=3.12
16
+ Requires-Dist: anton
17
+ Requires-Dist: cryptography>=48.0.0
18
+ Requires-Dist: fastapi>=0.136.1
19
+ Requires-Dist: pydantic-settings>=2.14.1
20
+ Requires-Dist: pydantic>=2.12.5
21
+ Requires-Dist: python-multipart>=0.0.28
22
+ Requires-Dist: sqlmodel>=0.0.38
23
+ Requires-Dist: uvicorn>=0.47.0
24
+ Provides-Extra: hermes
25
+ Requires-Dist: hermes-agent; extra == 'hermes'
26
+ Description-Content-Type: text/markdown
27
+
28
+ # Cowork Server
29
+
30
+ FastAPI backend for the [Anton](https://github.com/mindsdb/cowork) desktop app. Manages projects, conversations, files, scheduling, memory, and agent orchestration with a SQLite-backed data layer.
31
+
32
+ ## Quick Start
33
+
34
+ Requires Python 3.12+ and [uv](https://docs.astral.sh/uv/).
35
+
36
+ ```sh
37
+ # Install and run
38
+ uv tool install cowork-server
39
+ cowork-server
40
+ ```
41
+
42
+ The server starts on `http://127.0.0.1:26866`. Confirm with:
43
+
44
+ ```sh
45
+ curl http://127.0.0.1:26866/api/v1/health/
46
+ ```
47
+
48
+ ## Development
49
+
50
+ ```sh
51
+ # Run from source (auto-manages virtualenv + deps)
52
+ uv run cowork-server
53
+ ```
54
+
55
+ When running alongside the Electron app in dev mode, the app spawns the server automatically — no manual start needed.
56
+
57
+ ### Dev setup helper
58
+
59
+ ```sh
60
+ uv run cowork-dev-setup
61
+ ```
62
+
63
+ Initializes the database and validates configuration.
64
+
65
+ ## Architecture
66
+
67
+ ```
68
+ cowork/
69
+ api/v1/endpoints/ # FastAPI route handlers
70
+ services/ # Business logic
71
+ models/ # SQLModel / DB models
72
+ schemas/ # Pydantic request/response schemas
73
+ db/ # Database session and migrations
74
+ common/ # Shared utilities, settings
75
+ harnesses/ # Agent adapters (Anton, Hermes, etc.)
76
+ ```
77
+
78
+ The server is designed to be **agent-agnostic** — core features (projects, conversations, files) are shared across agents, while agent-specific behavior lives in harness adapters. See [docs/DESIGN.md](docs/DESIGN.md) for the full architectural rationale.
79
+
80
+ ## API
81
+
82
+ All endpoints live under `/api/v1/`. Key resource groups:
83
+
84
+ | Path | Description |
85
+ |------|-------------|
86
+ | `/health` | Readiness probe |
87
+ | `/projects` | Project CRUD and working-folder management |
88
+ | `/conversations` | Conversation threads and message history |
89
+ | `/responses` | Streaming agent responses (SSE) |
90
+ | `/files` | OpenAI-compatible file uploads |
91
+ | `/schedules` | Recurring task scheduling |
92
+ | `/skills` | Agent skill definitions |
93
+ | `/memory` | Persistent agent memory |
94
+ | `/artifacts` | Agent-produced file previews |
95
+ | `/publish` | Publish HTML artifacts to 4nton.ai |
96
+ | `/connectors` | Third-party service connections and OAuth |
97
+ | `/settings` | User preferences and API keys |
98
+
99
+ ## Configuration
100
+
101
+ Configuration is read from the database (`UserSettings` table) and can be managed through the Settings UI in the desktop app or via `PUT /api/v1/settings/`.
102
+
103
+ Environment variables fall into two namespaces:
104
+
105
+ **Server-level** (`COWORK_*`) — control the cowork-server process itself:
106
+
107
+ | Variable | Default | Description |
108
+ |----------|---------|-------------|
109
+ | `COWORK_SERVER_PORT` | `26866` | Server port |
110
+ | `COWORK_SERVER_HOST` | `127.0.0.1` | Bind address |
111
+ | `COWORK_PROJECTS_DIR` | `~/.cowork/projects` | Project storage root |
112
+ | `COWORK_FILES_DIR` | `~/.cowork/files` | Uploaded files root |
113
+ | `COWORK_VAULT_DIR` | `~/.cowork/data-vault` | Connector credential vault |
114
+
115
+ **Harness-level** (`ANTON_*`, `HERMES_*`) — configure a specific agent harness. These are read by the harness adapter, not by cowork-server core. They use the harness prefix because the upstream agent libraries (anton, hermes-agent) define them:
116
+
117
+ | Variable | Harness | Description |
118
+ |----------|---------|-------------|
119
+ | `ANTON_PUBLISH_URL` | Anton | Artifact publish endpoint |
120
+ | `ANTON_SKILLS_ROOT_DIR` | Anton | Skill file storage |
121
+ | `ANTON_GLOBAL_MEMORY_ROOT_DIR` | Anton | Global memory files |
122
+ | `HERMES_HOME` / `HERMES_ROOT_DIR` | Hermes | Hermes data root |
123
+
124
+ In Docker/Lightsail deployments, the container also receives `ANTON_MINDS_API_KEY`, `ANTON_OPENAI_API_KEY`, etc. — these are consumed by the Anton agent library directly (not by cowork-server settings), and are injected by the provisioning lambda via cloud-init user-data.
125
+
126
+ ## Docs
127
+
128
+ - [docs/DESIGN.md](docs/DESIGN.md) — Architectural overview and design decisions
129
+ - [docs/MIGRATION.md](docs/MIGRATION.md) — Migration guide from the legacy server
130
+ - [docs/MIGRATION_PROGRESS.md](docs/MIGRATION_PROGRESS.md) — Migration status tracker
131
+
132
+ ## License
133
+
134
+ See [LICENSE](LICENSE).
@@ -0,0 +1,107 @@
1
+ # Cowork Server
2
+
3
+ FastAPI backend for the [Anton](https://github.com/mindsdb/cowork) desktop app. Manages projects, conversations, files, scheduling, memory, and agent orchestration with a SQLite-backed data layer.
4
+
5
+ ## Quick Start
6
+
7
+ Requires Python 3.12+ and [uv](https://docs.astral.sh/uv/).
8
+
9
+ ```sh
10
+ # Install and run
11
+ uv tool install cowork-server
12
+ cowork-server
13
+ ```
14
+
15
+ The server starts on `http://127.0.0.1:26866`. Confirm with:
16
+
17
+ ```sh
18
+ curl http://127.0.0.1:26866/api/v1/health/
19
+ ```
20
+
21
+ ## Development
22
+
23
+ ```sh
24
+ # Run from source (auto-manages virtualenv + deps)
25
+ uv run cowork-server
26
+ ```
27
+
28
+ When running alongside the Electron app in dev mode, the app spawns the server automatically — no manual start needed.
29
+
30
+ ### Dev setup helper
31
+
32
+ ```sh
33
+ uv run cowork-dev-setup
34
+ ```
35
+
36
+ Initializes the database and validates configuration.
37
+
38
+ ## Architecture
39
+
40
+ ```
41
+ cowork/
42
+ api/v1/endpoints/ # FastAPI route handlers
43
+ services/ # Business logic
44
+ models/ # SQLModel / DB models
45
+ schemas/ # Pydantic request/response schemas
46
+ db/ # Database session and migrations
47
+ common/ # Shared utilities, settings
48
+ harnesses/ # Agent adapters (Anton, Hermes, etc.)
49
+ ```
50
+
51
+ The server is designed to be **agent-agnostic** — core features (projects, conversations, files) are shared across agents, while agent-specific behavior lives in harness adapters. See [docs/DESIGN.md](docs/DESIGN.md) for the full architectural rationale.
52
+
53
+ ## API
54
+
55
+ All endpoints live under `/api/v1/`. Key resource groups:
56
+
57
+ | Path | Description |
58
+ |------|-------------|
59
+ | `/health` | Readiness probe |
60
+ | `/projects` | Project CRUD and working-folder management |
61
+ | `/conversations` | Conversation threads and message history |
62
+ | `/responses` | Streaming agent responses (SSE) |
63
+ | `/files` | OpenAI-compatible file uploads |
64
+ | `/schedules` | Recurring task scheduling |
65
+ | `/skills` | Agent skill definitions |
66
+ | `/memory` | Persistent agent memory |
67
+ | `/artifacts` | Agent-produced file previews |
68
+ | `/publish` | Publish HTML artifacts to 4nton.ai |
69
+ | `/connectors` | Third-party service connections and OAuth |
70
+ | `/settings` | User preferences and API keys |
71
+
72
+ ## Configuration
73
+
74
+ Configuration is read from the database (`UserSettings` table) and can be managed through the Settings UI in the desktop app or via `PUT /api/v1/settings/`.
75
+
76
+ Environment variables fall into two namespaces:
77
+
78
+ **Server-level** (`COWORK_*`) — control the cowork-server process itself:
79
+
80
+ | Variable | Default | Description |
81
+ |----------|---------|-------------|
82
+ | `COWORK_SERVER_PORT` | `26866` | Server port |
83
+ | `COWORK_SERVER_HOST` | `127.0.0.1` | Bind address |
84
+ | `COWORK_PROJECTS_DIR` | `~/.cowork/projects` | Project storage root |
85
+ | `COWORK_FILES_DIR` | `~/.cowork/files` | Uploaded files root |
86
+ | `COWORK_VAULT_DIR` | `~/.cowork/data-vault` | Connector credential vault |
87
+
88
+ **Harness-level** (`ANTON_*`, `HERMES_*`) — configure a specific agent harness. These are read by the harness adapter, not by cowork-server core. They use the harness prefix because the upstream agent libraries (anton, hermes-agent) define them:
89
+
90
+ | Variable | Harness | Description |
91
+ |----------|---------|-------------|
92
+ | `ANTON_PUBLISH_URL` | Anton | Artifact publish endpoint |
93
+ | `ANTON_SKILLS_ROOT_DIR` | Anton | Skill file storage |
94
+ | `ANTON_GLOBAL_MEMORY_ROOT_DIR` | Anton | Global memory files |
95
+ | `HERMES_HOME` / `HERMES_ROOT_DIR` | Hermes | Hermes data root |
96
+
97
+ In Docker/Lightsail deployments, the container also receives `ANTON_MINDS_API_KEY`, `ANTON_OPENAI_API_KEY`, etc. — these are consumed by the Anton agent library directly (not by cowork-server settings), and are injected by the provisioning lambda via cloud-init user-data.
98
+
99
+ ## Docs
100
+
101
+ - [docs/DESIGN.md](docs/DESIGN.md) — Architectural overview and design decisions
102
+ - [docs/MIGRATION.md](docs/MIGRATION.md) — Migration guide from the legacy server
103
+ - [docs/MIGRATION_PROGRESS.md](docs/MIGRATION_PROGRESS.md) — Migration status tracker
104
+
105
+ ## License
106
+
107
+ See [LICENSE](LICENSE).
@@ -0,0 +1 @@
1
+ Generic single-database configuration.
@@ -0,0 +1,92 @@
1
+ from logging.config import fileConfig
2
+ from pathlib import Path
3
+
4
+ from sqlalchemy import create_engine, pool
5
+ from sqlalchemy.engine import make_url
6
+ from sqlmodel import SQLModel
7
+
8
+ from alembic import context
9
+ from cowork.common.settings.app_settings import get_app_settings
10
+
11
+
12
+ def _ensure_sqlite_dir(url: str) -> None:
13
+ parsed = make_url(url)
14
+ if not parsed.drivername.startswith("sqlite"):
15
+ return
16
+ db_path = parsed.database
17
+ if db_path and db_path != ":memory:":
18
+ Path(db_path).parent.mkdir(parents=True, exist_ok=True)
19
+
20
+
21
+ # this is the Alembic Config object, which provides
22
+ # access to the values within the .ini file in use.
23
+ config = context.config
24
+
25
+ # Interpret the config file for Python logging.
26
+ # This line sets up loggers basically.
27
+ if config.config_file_name is not None:
28
+ fileConfig(config.config_file_name)
29
+
30
+ # add your model's MetaData object here
31
+ # for 'autogenerate' support
32
+ # from myapp import mymodel
33
+ # target_metadata = mymodel.Base.metadata
34
+ # target_metadata = None
35
+ target_metadata = SQLModel.metadata
36
+
37
+ # other values from the config, defined by the needs of env.py,
38
+ # can be acquired:
39
+ # my_important_option = config.get_main_option("my_important_option")
40
+ # ... etc.
41
+
42
+
43
+ def run_migrations_offline() -> None:
44
+ """Run migrations in 'offline' mode.
45
+
46
+ This configures the context with just a URL
47
+ and not an Engine, though an Engine is acceptable
48
+ here as well. By skipping the Engine creation
49
+ we don't even need a DBAPI to be available.
50
+
51
+ Calls to context.execute() here emit the given string to the
52
+ script output.
53
+
54
+ """
55
+ database_uri = get_app_settings().database.uri
56
+ url = database_uri or config.get_main_option("sqlalchemy.url", database_uri)
57
+ _ensure_sqlite_dir(url)
58
+ context.configure(
59
+ url=url,
60
+ target_metadata=target_metadata,
61
+ literal_binds=True,
62
+ dialect_opts={"paramstyle": "named"},
63
+ render_as_batch=True,
64
+ )
65
+
66
+ with context.begin_transaction():
67
+ context.run_migrations()
68
+
69
+
70
+ def run_migrations_online() -> None:
71
+ """Run migrations in 'online' mode.
72
+
73
+ In this scenario we need to create an Engine
74
+ and associate a connection with the context.
75
+
76
+ """
77
+ database_uri = get_app_settings().database.uri
78
+ url = database_uri or config.get_main_option("sqlalchemy.url", database_uri)
79
+ _ensure_sqlite_dir(url)
80
+ connectable = create_engine(url, poolclass=pool.NullPool)
81
+
82
+ with connectable.connect() as connection:
83
+ context.configure(connection=connection, target_metadata=target_metadata, render_as_batch=True)
84
+
85
+ with context.begin_transaction():
86
+ context.run_migrations()
87
+
88
+
89
+ if context.is_offline_mode():
90
+ run_migrations_offline()
91
+ else:
92
+ run_migrations_online()
@@ -0,0 +1,28 @@
1
+ """${message}
2
+
3
+ Revision ID: ${up_revision}
4
+ Revises: ${down_revision | comma,n}
5
+ Create Date: ${create_date}
6
+
7
+ """
8
+ from typing import Sequence, Union
9
+
10
+ from alembic import op
11
+ import sqlalchemy as sa
12
+ ${imports if imports else ""}
13
+
14
+ # revision identifiers, used by Alembic.
15
+ revision: str = ${repr(up_revision)}
16
+ down_revision: Union[str, Sequence[str], None] = ${repr(down_revision)}
17
+ branch_labels: Union[str, Sequence[str], None] = ${repr(branch_labels)}
18
+ depends_on: Union[str, Sequence[str], None] = ${repr(depends_on)}
19
+
20
+
21
+ def upgrade() -> None:
22
+ """Upgrade schema."""
23
+ ${upgrades if upgrades else "pass"}
24
+
25
+
26
+ def downgrade() -> None:
27
+ """Downgrade schema."""
28
+ ${downgrades if downgrades else "pass"}