gOdoo-cli 0.17.0__tar.gz → 1.0.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 (253) hide show
  1. godoo_cli-1.0.1/.agents/skills/godoo-changeset-review/SKILL.md +29 -0
  2. godoo_cli-1.0.1/.agents/skills/godoo-editor-validation/SKILL.md +26 -0
  3. godoo_cli-1.0.1/.agents/skills/godoo-runtime-validation/SKILL.md +54 -0
  4. godoo_cli-1.0.1/.agents/skills/godoo-source-workspaces/SKILL.md +20 -0
  5. godoo_cli-1.0.1/.dockerignore +18 -0
  6. godoo_cli-1.0.1/.env.sample +34 -0
  7. godoo_cli-1.0.1/.github/workflows/README.md +88 -0
  8. godoo_cli-1.0.1/.github/workflows/quality.yml +52 -0
  9. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.github/workflows/version-bump.yml +1 -1
  10. godoo_cli-1.0.1/.github/workflows/version-publish.yml +144 -0
  11. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.gitignore +5 -2
  12. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.pre-commit-config.yaml +3 -3
  13. godoo_cli-1.0.1/.vscode/extensions.json +16 -0
  14. godoo_cli-1.0.1/.vscode/settings.json +35 -0
  15. godoo_cli-1.0.1/.vscode/tasks.json +27 -0
  16. godoo_cli-1.0.1/AGENTS.md +37 -0
  17. godoo_cli-1.0.1/PKG-INFO +225 -0
  18. godoo_cli-1.0.1/README.md +190 -0
  19. godoo_cli-1.0.1/addons/godoo_test_succ_mod/__init__.py +3 -0
  20. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/addons/godoo_test_succ_mod/models/__init__.py +1 -1
  21. godoo_cli-1.0.1/addons/godoo_test_succ_mod/tests/__init__.py +3 -0
  22. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/addons/godoo_test_succ_mod/tests/data.py +2 -2
  23. godoo_cli-1.0.1/config/nginx.conf.template +84 -0
  24. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/config/postgresql.conf +15 -14
  25. godoo_cli-1.0.1/docker/Dockerfile +89 -0
  26. godoo_cli-1.0.1/docker/docker-compose.base.yml +93 -0
  27. godoo_cli-1.0.1/docker/docker-compose.dev.yml +52 -0
  28. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/docker/docker-compose.traefik.yml +1 -3
  29. godoo_cli-1.0.1/docker/postgres-init/10-vector.sql +3 -0
  30. godoo_cli-1.0.1/docs/architecture.md +77 -0
  31. godoo_cli-1.0.1/docs/downstream.md +260 -0
  32. godoo_cli-1.0.1/docs/hooks.md +209 -0
  33. godoo_cli-1.0.1/docs/lifecycle.md +322 -0
  34. godoo_cli-1.0.1/docs/workspace.md +120 -0
  35. godoo_cli-1.0.1/makefile +71 -0
  36. godoo_cli-1.0.1/odoo_manifest.yml +24 -0
  37. godoo_cli-1.0.1/package-lock.json +28 -0
  38. godoo_cli-1.0.1/package.json +6 -0
  39. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/pyproject.toml +32 -49
  40. godoo_cli-1.0.1/scripts/check_docstring_style.py +71 -0
  41. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/scripts/migrations/development/shrink_database.py +4 -9
  42. godoo_cli-1.0.1/src/godoo_cli/__about__.py +3 -0
  43. godoo_cli-1.0.1/src/godoo_cli/__init__.py +3 -0
  44. godoo_cli-1.0.1/src/godoo_cli/__main__.py +6 -0
  45. godoo_cli-1.0.1/src/godoo_cli/commands/__init__.py +9 -0
  46. godoo_cli-0.17.0/src/godoo_cli/cli_common.py → godoo_cli-1.0.1/src/godoo_cli/commands/common.py +51 -49
  47. godoo_cli-1.0.1/src/godoo_cli/commands/configuration.py +237 -0
  48. godoo_cli-1.0.1/src/godoo_cli/commands/db/__init__.py +5 -0
  49. godoo_cli-1.0.1/src/godoo_cli/commands/db/archive.py +122 -0
  50. godoo_cli-1.0.1/src/godoo_cli/commands/db/cli.py +45 -0
  51. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/db/passwords.py +6 -21
  52. godoo_cli-1.0.1/src/godoo_cli/commands/db/query.py +86 -0
  53. godoo_cli-1.0.1/src/godoo_cli/commands/db/reset.py +47 -0
  54. godoo_cli-1.0.1/src/godoo_cli/commands/odoo_bin/__init__.py +1 -0
  55. godoo_cli-1.0.1/src/godoo_cli/commands/root.py +99 -0
  56. godoo_cli-1.0.1/src/godoo_cli/commands/rpc/__init__.py +6 -0
  57. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/rpc/cli.py +3 -22
  58. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/rpc/config_parameters.py +12 -15
  59. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/rpc/importer.py +5 -15
  60. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/rpc/modules.py +16 -44
  61. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/commands/rpc/translations.py +8 -44
  62. godoo_cli-1.0.1/src/godoo_cli/commands/run.py +88 -0
  63. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/__init__.py +28 -0
  64. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/dependencies.py +129 -0
  65. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/init.py +398 -0
  66. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/launch.py +114 -0
  67. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/shell.py +163 -0
  68. {godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin → godoo_cli-1.0.1/src/godoo_cli/commands/runtime}/shell_scripts/odoo_banner.py +15 -26
  69. {godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin → godoo_cli-1.0.1/src/godoo_cli/commands/runtime}/shell_scripts/render_report.py +9 -44
  70. godoo_cli-1.0.1/src/godoo_cli/commands/runtime/status.py +39 -0
  71. godoo_cli-1.0.1/src/godoo_cli/commands/test/__init__.py +5 -0
  72. godoo_cli-1.0.1/src/godoo_cli/commands/test/cli.py +19 -0
  73. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/godoo_test/test_load_data.py → godoo_cli-1.0.1/src/godoo_cli/commands/test/load_data.py +34 -24
  74. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/godoo_test/test_run.py → godoo_cli-1.0.1/src/godoo_cli/commands/test/run.py +78 -59
  75. godoo_cli-1.0.1/src/godoo_cli/commands/upgrade.py +109 -0
  76. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/__init__.py +24 -0
  77. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/common.py +61 -0
  78. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/configure.py +47 -0
  79. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/image.py +81 -0
  80. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/storage.py +48 -0
  81. godoo_cli-1.0.1/src/godoo_cli/commands/workspace/sync.py +52 -0
  82. godoo_cli-1.0.1/src/godoo_cli/database/__init__.py +7 -0
  83. godoo_cli-1.0.1/src/godoo_cli/database/connection.py +128 -0
  84. godoo_cli-1.0.1/src/godoo_cli/database/postgres.py +51 -0
  85. godoo_cli-1.0.1/src/godoo_cli/database/settings.py +31 -0
  86. godoo_cli-1.0.1/src/godoo_cli/database/state.py +94 -0
  87. godoo_cli-1.0.1/src/godoo_cli/git/__init__.py +4 -0
  88. godoo_cli-1.0.1/src/godoo_cli/git/git_url.py +94 -0
  89. godoo_cli-1.0.1/src/godoo_cli/git/repository.py +173 -0
  90. godoo_cli-1.0.1/src/godoo_cli/helpers/__init__.py +1 -0
  91. godoo_cli-1.0.1/src/godoo_cli/helpers/hashing.py +24 -0
  92. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/helpers/modules_git.py +6 -23
  93. godoo_cli-1.0.1/src/godoo_cli/helpers/progress.py +58 -0
  94. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/helpers/system.py +27 -115
  95. godoo_cli-1.0.1/src/godoo_cli/models/__init__.py +6 -0
  96. godoo_cli-1.0.1/src/godoo_cli/models/godoo_git_repo.py +5 -0
  97. godoo_cli-1.0.1/src/godoo_cli/models/godoo_manifest.py +5 -0
  98. godoo_cli-1.0.1/src/godoo_cli/models/godoo_models.py +190 -0
  99. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/src/godoo_cli/models/godoo_modules.py +33 -41
  100. godoo_cli-1.0.1/src/godoo_cli/runtime/__init__.py +13 -0
  101. godoo_cli-1.0.1/src/godoo_cli/runtime/archive.py +759 -0
  102. godoo_cli-1.0.1/src/godoo_cli/runtime/baseline.py +68 -0
  103. godoo_cli-1.0.1/src/godoo_cli/runtime/dataset.py +74 -0
  104. godoo_cli-1.0.1/src/godoo_cli/runtime/filestore.py +190 -0
  105. godoo_cli-1.0.1/src/godoo_cli/runtime/hooks.py +345 -0
  106. godoo_cli-1.0.1/src/godoo_cli/runtime/lifecycle.py +352 -0
  107. godoo_cli-1.0.1/src/godoo_cli/runtime/locks.py +171 -0
  108. godoo_cli-1.0.1/src/godoo_cli/runtime/nginx.py +83 -0
  109. godoo_cli-1.0.1/src/godoo_cli/runtime/odoo.py +1088 -0
  110. godoo_cli-1.0.1/src/godoo_cli/runtime/promotion.py +251 -0
  111. godoo_cli-1.0.1/src/godoo_cli/runtime/reset.py +208 -0
  112. godoo_cli-1.0.1/src/godoo_cli/runtime/restore.py +235 -0
  113. godoo_cli-1.0.1/src/godoo_cli/runtime/status.py +83 -0
  114. godoo_cli-1.0.1/src/godoo_cli/workspace/__init__.py +29 -0
  115. godoo_cli-1.0.1/src/godoo_cli/workspace/editor.py +88 -0
  116. godoo_cli-1.0.1/src/godoo_cli/workspace/git.py +1092 -0
  117. godoo_cli-1.0.1/src/godoo_cli/workspace/image.py +207 -0
  118. godoo_cli-1.0.1/src/godoo_cli/workspace/manifest.py +122 -0
  119. godoo_cli-1.0.1/src/godoo_cli/workspace/operations.py +513 -0
  120. godoo_cli-1.0.1/src/godoo_cli/workspace/specifications.py +142 -0
  121. godoo_cli-1.0.1/src/godoo_cli/workspace/storage.py +89 -0
  122. godoo_cli-1.0.1/src/godoo_cli/workspace/types.py +112 -0
  123. godoo_cli-1.0.1/tests/__init__.py +5 -0
  124. godoo_cli-1.0.1/tests/commands/test_db_archive_cli.py +116 -0
  125. godoo_cli-1.0.1/tests/commands/test_db_query_cli.py +112 -0
  126. godoo_cli-1.0.1/tests/commands/test_odoo_bin_commands.py +596 -0
  127. godoo_cli-1.0.1/tests/commands/test_rpc_commands.py +77 -0
  128. godoo_cli-1.0.1/tests/commands/test_runtime_cli.py +275 -0
  129. godoo_cli-1.0.1/tests/commands/test_runtime_dependencies.py +355 -0
  130. godoo_cli-1.0.1/tests/commands/test_runtime_shell_scripts.py +39 -0
  131. godoo_cli-1.0.1/tests/commands/test_test_run.py +155 -0
  132. godoo_cli-1.0.1/tests/commands/test_upgrade.py +265 -0
  133. godoo_cli-1.0.1/tests/conftest.py +12 -0
  134. godoo_cli-1.0.1/tests/database/test_db_query.py +111 -0
  135. godoo_cli-1.0.1/tests/database/test_db_reset.py +817 -0
  136. godoo_cli-1.0.1/tests/database/test_db_restore.py +478 -0
  137. godoo_cli-1.0.1/tests/git/test_git_url_uri.py +43 -0
  138. godoo_cli-1.0.1/tests/integration/test_container_contract.py +255 -0
  139. godoo_cli-1.0.1/tests/integration/test_odoo_integration.py +631 -0
  140. godoo_cli-1.0.1/tests/runtime/test_archive_crc.py +191 -0
  141. godoo_cli-1.0.1/tests/runtime/test_baseline_recovery.py +172 -0
  142. godoo_cli-1.0.1/tests/runtime/test_database_copy.py +169 -0
  143. godoo_cli-1.0.1/tests/runtime/test_dataset.py +187 -0
  144. godoo_cli-1.0.1/tests/runtime/test_filestore.py +880 -0
  145. godoo_cli-1.0.1/tests/runtime/test_filestore_copy.py +132 -0
  146. godoo_cli-1.0.1/tests/runtime/test_hooks.py +242 -0
  147. godoo_cli-1.0.1/tests/runtime/test_init_hooks.py +246 -0
  148. godoo_cli-1.0.1/tests/runtime/test_init_policy.py +328 -0
  149. godoo_cli-1.0.1/tests/runtime/test_lifecycle.py +94 -0
  150. godoo_cli-1.0.1/tests/runtime/test_lifecycle_service.py +226 -0
  151. godoo_cli-1.0.1/tests/runtime/test_nginx.py +171 -0
  152. godoo_cli-1.0.1/tests/runtime/test_nginx_cli.py +92 -0
  153. godoo_cli-1.0.1/tests/runtime/test_odoo_config_generation.py +207 -0
  154. godoo_cli-1.0.1/tests/runtime/test_odoo_preflight.py +906 -0
  155. godoo_cli-1.0.1/tests/runtime/test_odoo_version_compatibility.py +114 -0
  156. godoo_cli-1.0.1/tests/runtime/test_report_url.py +127 -0
  157. godoo_cli-1.0.1/tests/runtime/test_reset_baseline.py +142 -0
  158. godoo_cli-1.0.1/tests/runtime/test_runtime_models.py +114 -0
  159. godoo_cli-1.0.1/tests/runtime/test_runtime_operations.py +325 -0
  160. godoo_cli-1.0.1/tests/runtime/test_runtime_source_environment.py +240 -0
  161. godoo_cli-1.0.1/tests/test_logging.py +75 -0
  162. godoo_cli-1.0.1/tests/workspace/test_godoo_manifest.py +51 -0
  163. godoo_cli-1.0.1/tests/workspace/test_workspace.py +199 -0
  164. godoo_cli-1.0.1/tests/workspace/test_workspace_git.py +1051 -0
  165. godoo_cli-1.0.1/tests/workspace/test_workspace_image.py +308 -0
  166. godoo_cli-1.0.1/tests/workspace/test_workspace_layout.py +55 -0
  167. godoo_cli-1.0.1/tests/workspace/test_workspace_runtime_env.py +89 -0
  168. godoo_cli-1.0.1/tests/workspace/test_workspace_storage.py +251 -0
  169. godoo_cli-1.0.1/uv.lock +2204 -0
  170. godoo_cli-0.17.0/.devcontainer/devcontainer.json +0 -103
  171. godoo_cli-0.17.0/.env.sample +0 -42
  172. godoo_cli-0.17.0/.eslintignore +0 -2
  173. godoo_cli-0.17.0/.eslintrc.yml +0 -187
  174. godoo_cli-0.17.0/.github/workflows/README.md +0 -85
  175. godoo_cli-0.17.0/.github/workflows/quality.yml +0 -101
  176. godoo_cli-0.17.0/.github/workflows/version-publish.yml +0 -75
  177. godoo_cli-0.17.0/.vscode/launch.json +0 -65
  178. godoo_cli-0.17.0/PKG-INFO +0 -218
  179. godoo_cli-0.17.0/README.md +0 -187
  180. godoo_cli-0.17.0/addons/godoo_test_succ_mod/__init__.py +0 -3
  181. godoo_cli-0.17.0/addons/godoo_test_succ_mod/tests/__init__.py +0 -3
  182. godoo_cli-0.17.0/assets/godoo-main-cli.png +0 -0
  183. godoo_cli-0.17.0/config/nginx-proxy_headers.conf +0 -13
  184. godoo_cli-0.17.0/config/nginx.conf +0 -116
  185. godoo_cli-0.17.0/config/supervisord.conf +0 -23
  186. godoo_cli-0.17.0/docker/Dockerfile +0 -222
  187. godoo_cli-0.17.0/docker/cups/Dockerfile +0 -46
  188. godoo_cli-0.17.0/docker/cups/config/cups-pdf.conf +0 -306
  189. godoo_cli-0.17.0/docker/cups/config/cupsd.conf +0 -129
  190. godoo_cli-0.17.0/docker/cups/cups_entrypoint.sh +0 -17
  191. godoo_cli-0.17.0/docker/depends_build.sh +0 -32
  192. godoo_cli-0.17.0/docker/depends_runtime.sh +0 -33
  193. godoo_cli-0.17.0/docker/docker-compose.base.yml +0 -43
  194. godoo_cli-0.17.0/docker/docker-compose.devcontainer-traefik.yml +0 -25
  195. godoo_cli-0.17.0/docker/docker-compose.devcontainer.yml +0 -18
  196. godoo_cli-0.17.0/docker/psql.gpg +0 -0
  197. godoo_cli-0.17.0/godoo_src.code-workspace +0 -16
  198. godoo_cli-0.17.0/makefile +0 -33
  199. godoo_cli-0.17.0/odoo_manifest.yml +0 -26
  200. godoo_cli-0.17.0/scripts/container_requirements.sh +0 -33
  201. godoo_cli-0.17.0/scripts/launchodoo.sh +0 -58
  202. godoo_cli-0.17.0/scripts/reset_devcontainer.sh +0 -120
  203. godoo_cli-0.17.0/src/godoo_cli/__about__.py +0 -11
  204. godoo_cli-0.17.0/src/godoo_cli/__init__.py +0 -13
  205. godoo_cli-0.17.0/src/godoo_cli/__main__.py +0 -10
  206. godoo_cli-0.17.0/src/godoo_cli/cli.py +0 -120
  207. godoo_cli-0.17.0/src/godoo_cli/commands/__init__.py +0 -28
  208. godoo_cli-0.17.0/src/godoo_cli/commands/backup/__init__.py +0 -10
  209. godoo_cli-0.17.0/src/godoo_cli/commands/backup/cli.py +0 -36
  210. godoo_cli-0.17.0/src/godoo_cli/commands/backup/dump.py +0 -112
  211. godoo_cli-0.17.0/src/godoo_cli/commands/backup/load.py +0 -117
  212. godoo_cli-0.17.0/src/godoo_cli/commands/backup/pull.py +0 -221
  213. godoo_cli-0.17.0/src/godoo_cli/commands/backup/util.py +0 -53
  214. godoo_cli-0.17.0/src/godoo_cli/commands/config.py +0 -44
  215. godoo_cli-0.17.0/src/godoo_cli/commands/db/__init__.py +0 -10
  216. godoo_cli-0.17.0/src/godoo_cli/commands/db/cli.py +0 -64
  217. godoo_cli-0.17.0/src/godoo_cli/commands/db/query.py +0 -174
  218. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/__init__.py +0 -6
  219. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/bootstrap.py +0 -212
  220. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/cli_generate.py +0 -150
  221. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/godoo_test/__init__.py +0 -5
  222. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/godoo_test/cli.py +0 -31
  223. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/launch.py +0 -196
  224. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/shell.py +0 -184
  225. godoo_cli-0.17.0/src/godoo_cli/commands/odoo_bin/shell_scripts/pregenerate_assets.py +0 -34
  226. godoo_cli-0.17.0/src/godoo_cli/commands/rpc/__init__.py +0 -19
  227. godoo_cli-0.17.0/src/godoo_cli/commands/source_get.py +0 -371
  228. godoo_cli-0.17.0/src/godoo_cli/git/__init__.py +0 -11
  229. godoo_cli-0.17.0/src/godoo_cli/git/git_odoo_addons.py +0 -133
  230. godoo_cli-0.17.0/src/godoo_cli/git/git_repo.py +0 -218
  231. godoo_cli-0.17.0/src/godoo_cli/git/git_url.py +0 -204
  232. godoo_cli-0.17.0/src/godoo_cli/git/zip_download.py +0 -58
  233. godoo_cli-0.17.0/src/godoo_cli/helpers/__init__.py +0 -1
  234. godoo_cli-0.17.0/src/godoo_cli/helpers/cli.py +0 -30
  235. godoo_cli-0.17.0/src/godoo_cli/helpers/modules_py.py +0 -88
  236. godoo_cli-0.17.0/src/godoo_cli/helpers/odoo_files.py +0 -37
  237. godoo_cli-0.17.0/src/godoo_cli/helpers/pip.py +0 -86
  238. godoo_cli-0.17.0/src/godoo_cli/models/__init__.py +0 -7
  239. godoo_cli-0.17.0/src/godoo_cli/models/db_connection.py +0 -133
  240. godoo_cli-0.17.0/src/godoo_cli/models/godoo_git_repo.py +0 -184
  241. godoo_cli-0.17.0/src/godoo_cli/models/godoo_manifest.py +0 -230
  242. godoo_cli-0.17.0/src/godoo_cli/models/godoo_models.py +0 -118
  243. godoo_cli-0.17.0/src/tests/test_git_clone.py +0 -29
  244. godoo_cli-0.17.0/uv.lock +0 -2163
  245. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.codecovrc +0 -0
  246. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.github/FUNDING.yml +0 -0
  247. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/.prettierrc.yml +0 -0
  248. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/LICENSE +0 -0
  249. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/addons/.gitkeep +0 -0
  250. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/addons/godoo_test_succ_mod/__manifest__.py +0 -0
  251. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/addons/godoo_test_succ_mod/tests/test_succ.py +0 -0
  252. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/assets/odoo_logo.png +0 -0
  253. {godoo_cli-0.17.0 → godoo_cli-1.0.1}/thirdparty/.gitkeep +0 -0
@@ -0,0 +1,29 @@
1
+ ---
2
+ name: godoo-changeset-review
3
+ description:
4
+ Review a broad gOdoo working-tree changeset for regressions, compatibility, and simplification across CLI, workspace,
5
+ and runtime boundaries. Use for whole-changeset reviews, not routine single-file fixes.
6
+ ---
7
+
8
+ # gOdoo changeset review
9
+
10
+ Establish the review baseline from staged, unstaged, and untracked files. Distinguish existing user work from edits made
11
+ during the review; do not stage or revert unrelated files.
12
+
13
+ Partition substantial reviews by contracts: source ownership and generated configuration, runtime/database behavior, and
14
+ CLI/public interfaces. Load only the matching source-workspace or runtime skill for each partition. Give workers file
15
+ ownership, the baseline, and the questions they must resolve; the parent owns shared validation and integration.
16
+ Delegate review slots from the parent so nested reviewers cannot exhaust capacity.
17
+
18
+ Trace changed behavior through its callers, command registration, environment options, tests, and documentation. Include
19
+ new untracked modules. Check host/container boundaries and retained compatibility paths where the diff crosses them. A
20
+ smaller file is not evidence of a simpler design; examine duplicated state, lock ownership, and failure recovery.
21
+
22
+ Return actionable findings with file locations, a concrete trigger, and the affected contract. Separate demonstrated
23
+ regressions from optional cleanup. Review alone does not authorize implementation, source synchronization, or runtime
24
+ replacement.
25
+
26
+ For authorized fixes, give the existing worker its in-scope failures to repair. Run focused checks during implementation
27
+ and `make lint` / `make test` after integration. Add editor or live-runtime checks only when the changed behavior needs
28
+ them. Report skipped or blocked validation separately from passing checks, and inspect worker evidence and the final
29
+ diff without repeating the entire investigation.
@@ -0,0 +1,26 @@
1
+ ---
2
+ name: godoo-editor-validation
3
+ description:
4
+ Validate gOdoo editor diagnostics, VS Code Problems, and debugpy attachment against resolved shared sources.
5
+ ---
6
+
7
+ # gOdoo editor validation
8
+
9
+ Read `docs/workspace.md`, then open the generated `<project>.code-workspace`.
10
+
11
+ gOdoo sets `python.languageServer` to `None` so the installed Odoo IDE extension provides Python and Odoo analysis
12
+ without a competing Pylance server. Keep the Python extension for interpreter selection and debugging. The generated
13
+ `python.analysis.extraPaths` covers the resolved project, Odoo, third-party, and archive addon roots. The supported
14
+ source mapping is the generated multi-root workspace plus its generated extra paths.
15
+
16
+ Reload the window after generation, save representative project, Odoo, and addon files, then inspect VS Code Problems.
17
+ Confirm each diagnostic refers to the intended selected host worktree. Problems validate editor analysis, not execution.
18
+
19
+ Inspect exact editor diagnostics in VS Code's Problems panel. Do not require a repository-specific extension or claim
20
+ that command-line lint and tests reproduce the aggregate Problems view. The Problems API is available only inside VS
21
+ Code's extension host, and Odoo IDE does not provide a supported external diagnostics transport. Record this UI check as
22
+ unverified when the active editor is unavailable.
23
+
24
+ Start the downstream debug service separately, attach with the generated `gOdoo: attach` configuration, set a breakpoint
25
+ in exercised code, and confirm the selected host/container mappings and local variables. Runtime startup belongs to
26
+ downstream/runtime validation.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: godoo-runtime-validation
3
+ description:
4
+ Validate gOdoo runtime lifecycle and upstream-change adoption in downstream Compose projects, including installed
5
+ revision checks, init/launch, subprocess output, debugging, endpoints, and real Odoo integration tests.
6
+ ---
7
+
8
+ # gOdoo runtime validation
9
+
10
+ Resolve the gOdoo checkout and downstream project first. Read `docs/lifecycle.md`, `docs/downstream.md`, and the
11
+ relevant implementation/tests in that gOdoo checkout. Read the downstream Make target, Dockerfile, and selected Compose
12
+ files for the behavior under investigation.
13
+
14
+ ## Identify what is being tested
15
+
16
+ Record the upstream revision and relevant uncommitted changes, the downstream revision, and its configured gOdoo
17
+ dependency or pin. For an available built or running target, also establish the image ID and installed gOdoo revision
18
+ from build evidence or package metadata. A host checkout, Dockerfile pin, or package version alone does not prove which
19
+ commit is running. If the revision cannot be established, report that gap before drawing runtime conclusions.
20
+
21
+ Keep Odoo/addon source provenance separate from the installed gOdoo CLI revision. Resolve the selected Compose project,
22
+ services, source mounts, and database/filestore target; avoid dumping unrelated environment values.
23
+
24
+ ## Check downstream adoption
25
+
26
+ Trace each relevant upstream contract change to its downstream consumer and focused validation: command flags,
27
+ environment options, source paths, lifecycle hooks, or generated proxy configuration. Keep source and CLI behavior
28
+ upstream; downstream owns images, Compose, mounts, runtime users, service ordering, and project hooks. Check whether the
29
+ downstream pin includes the required fix before proposing another implementation.
30
+
31
+ `runtime init` owns restore, bootstrap, and reconciliation as a one-shot job. `runtime launch` only starts prepared
32
+ state. Keep `init` ahead of `app` with `service_completed_successfully`. gOdoo provides no downstream service
33
+ orchestration.
34
+
35
+ Use the downstream Make/Compose path for authorized runtime validation. Reuse host-resolved workspace paths rather than
36
+ assembling a substitute container with guessed addon mounts. A pin change needs a rebuilt artifact and, when live
37
+ verification is in scope, a recreated target before it establishes runtime behavior. Temporary source overlays prove
38
+ only the overlaid configuration.
39
+
40
+ Start the downstream debug service separately before attaching with generated `gOdoo: attach`. Report source checks,
41
+ built-artifact checks, runtime startup, debugger attachment, lifecycle state, and endpoint results separately. Never
42
+ start services merely to validate source/editor configuration. A compatibility review does not itself authorize
43
+ rebuilds, resets, restores, or upgrades; use any existing authorization and resolve the target before stateful work.
44
+
45
+ ## When progress or logging is the problem
46
+
47
+ Trace child stdout/stderr through gOdoo, the init service, and Compose. Check terminal and captured-output behavior
48
+ where relevant, including native progress streams, feedback during quiet finite phases, and process exit status. Input
49
+ reaching 100% does not establish that a restore finished. Captured-output tests do not prove terminal redraw; check the
50
+ reported Make/Compose surface when authorized and available, otherwise name that remaining verification.
51
+
52
+ Finish with the affected contracts, incompatibilities and their owning repository, the smallest required repair, and
53
+ checks tied to the revision/environment actually tested. Stop a review when those findings and remaining verification
54
+ steps are clear; perform repairs or runtime operations only within the requested scope.
@@ -0,0 +1,20 @@
1
+ ---
2
+ name: godoo-source-workspaces
3
+ description:
4
+ Work on gOdoo manifests, shared source roots, Git worktrees, source locks, archive caches, or generated editor
5
+ workspace and debug files.
6
+ ---
7
+
8
+ # gOdoo source workspaces
9
+
10
+ Read `docs/workspace.md` first. `odoo_manifest.yml` is authoritative and requires `odoo`; third-party prefixes are
11
+ validated before locks or paths and cannot alter host/container depth. Git owns pools, worktrees, branches, locks, and
12
+ archive caches below the shared source root. Never hand-edit managed worktrees or generated `.godoo/` and workspace
13
+ files.
14
+
15
+ Run `workspace sync` only with authority for the shared source root; it may reset verified managed worktrees.
16
+ `workspace configure` regenerates state from checked sources. `workspace check` is offline and read-only. Run workspace
17
+ commands from the project directory because that cwd supplies `.env` and manifest-relative paths.
18
+
19
+ Use the actual owning tests: `test_workspace_git.py` and `test_workspace_layout.py` for Git identity/confinement,
20
+ `test_workspace.py` for generated state, and `test_workspace_storage.py` for storage.
@@ -0,0 +1,18 @@
1
+ .env
2
+ .git/
3
+ dist/
4
+ .env.*
5
+ !.env.sample
6
+ .venv/
7
+ .vscode/
8
+ *.code-workspace
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+ .mypy_cache/
12
+ **/__pycache__/
13
+ **/*.py[cod]
14
+ .coverage
15
+ coverage.xml
16
+ htmlcov/
17
+ junit/
18
+ .godoo/*
@@ -0,0 +1,34 @@
1
+ # Required workspace source root: absolute, outside this project, reachable by Docker Desktop.
2
+ GODOO_SOURCES_ROOT=/Users/you/dev/sources
3
+ # ODOO_MANIFEST defaults to ./odoo_manifest.yml.
4
+
5
+ # Required runtime/database values. Provide downstream secrets outside source control.
6
+ ODOO_MAIN_DB=odoo
7
+ ODOO_DB_FILTER=odoo
8
+ ODOO_DB_PASSWORD=change-me
9
+ ODOO_DB_USER=odoo_user
10
+ ODOO_DB_HOST=db
11
+ ODOO_DB_PORT=5432
12
+
13
+ # Runtime path overrides; representative downstream defaults are explicit.
14
+ # ODOO_MAIN_FOLDER=/odoo/odoo
15
+ # ODOO_WORKSPACE_ADDON_LOCATION=/odoo/godoo_workspace/addons
16
+ # ODOO_CONF_PATH=/odoo/config/odoo.conf
17
+ # ODOO_DATA_DIR=/var/lib/odoo
18
+ # GODOO_X_SENDFILE=true
19
+ # GODOO_REPORT_URL=http://nginx
20
+ # GODOO_NGINX_CONFIG_PATH=/odoo/config/nginx-static.conf
21
+
22
+ # Runtime lifecycle overrides. Hook directories must exist in the runtime environment.
23
+ # GODOO_RUNTIME_SEED=/odoo_restore/runtime.zip
24
+ # GODOO_VERIFY_ARCHIVE_CRC=false
25
+ # GODOO_HOOK_DIRS=/odoo/godoo_workspace/hooks
26
+ # GODOO_ENVIRONMENT=development
27
+ # GODOO_RECONCILE_UPGRADE_PATH=/odoo/godoo_workspace/migration/upgrade
28
+ # GODOO_RECONCILE_PRE_UPGRADE_SCRIPTS=/odoo/godoo_workspace/migration/pre-upgrade.py
29
+
30
+ # Optional XML-RPC connection.
31
+ # ODOO_RPC_HOST=http://localhost:8069
32
+ # ODOO_RPC_USER=admin
33
+ # ODOO_RPC_PASSWORD=admin
34
+ # ODOO_RPC_DB_NAME=odoo
@@ -0,0 +1,88 @@
1
+ # CI and releases
2
+
3
+ [Documentation](../../README.md#documentation) · [Repository architecture](../../docs/architecture.md)
4
+
5
+ CI checks the host package. Release workflows publish Python distributions to PyPI and create a GitHub Release; they do
6
+ not publish runtime images or host-adapter bundles.
7
+
8
+ ## Workflow map
9
+
10
+ | Workflow | Trigger | Result |
11
+ | ------------------------------------------ | -------------------------------------------------- | ---------------------------------------------------------------- |
12
+ | [Quality](quality.yml) | Pull request, push to `main`, or manual dispatch | Python 3.11/3.12 checks and test/coverage artifacts |
13
+ | [Version bump](version-bump.yml) | Manual dispatch with a bump type | Version change on `release/<version>` and an editable release PR |
14
+ | [Release and publish](version-publish.yml) | Merged PR into `main` carrying the `release` label | Verified Python package publication, tag, and GitHub Release |
15
+
16
+ ## Quality checks
17
+
18
+ Arrows show the steps in each Python job. The final artifact upload uses `if: always()`, so it is also attempted when an
19
+ earlier step fails; reports may be absent if their producing step never ran. The PR author diagnoses failures, and the
20
+ reviewer checks the linked Actions results before accepting the change.
21
+
22
+ ```mermaid
23
+ flowchart TD
24
+ Trigger["GitHub receives a pull request,<br/>a main push, or a manual Quality dispatch"]
25
+ Trigger --> Matrix["GitHub Actions runs two independent jobs:<br/>Python 3.11 and Python 3.12"]
26
+ Matrix --> Install["Each job: install locked uv dependencies"]
27
+ Install --> Wheel["Build wheel and install it in a fresh environment;<br/>check package import and CLI help outside checkout"]
28
+ Wheel --> Lint["make lint<br/>Check source rules and formatting"]
29
+ Lint --> Test["make test<br/>Run repository tests and produce JUnit and coverage XML"]
30
+ Test --> Upload["Upload test-results artifact<br/>for that Python version"]
31
+ Install -.->|if a later step fails, still attempt upload| Upload
32
+ Upload --> Review["PR author and reviewer inspect failures<br/>and test artifacts on the GitHub Actions run"]
33
+ ```
34
+
35
+ The wheel smoke test installs into a fresh environment and checks imports and CLI help outside the checkout. The
36
+ workflow installs PostgreSQL development headers and copies `.env.sample` for repository tests. JUnit and coverage
37
+ upload is attempted even after failure. Real Odoo/PostgreSQL integration tests remain opt-in.
38
+
39
+ ```bash
40
+ # Reproduce the main host checks locally after configuring the project .env.
41
+ uv sync --locked
42
+ make lint
43
+ make test
44
+
45
+ # Inspect recent CI runs with GitHub CLI.
46
+ gh run list --workflow quality.yml --limit 5
47
+ ```
48
+
49
+ ## Create a release
50
+
51
+ The maintainer chooses and reviews the release; GitHub Actions performs the version change and publication steps. The
52
+ release notes are the PR description. They are separate from the JUnit test and coverage artifacts above.
53
+
54
+ ```mermaid
55
+ flowchart TD
56
+ Maintainer["Maintainer manually runs<br/>Version Bump with a chosen bump type"]
57
+ Maintainer --> Bump["version-bump.yml: update package version,<br/>push release/version branch, and open release PR"]
58
+ Bump --> Review["Maintainer edits the PR's release notes<br/>and reviews its diff and available CI results"]
59
+ Review --> Merge["Maintainer merges the release-labeled PR into main"]
60
+ Merge --> Verify["version-publish.yml verifies release identity:<br/>repository, branch, PR title, version, merge commit, and tag"]
61
+ Verify --> Publish["Build Python distributions<br/>and publish them to PyPI"]
62
+ Publish --> Tag["Create vVERSION tag at the merge commit,<br/>or verify an existing tag points there"]
63
+ Tag --> Release["Create GitHub Release using the merged PR description;<br/>preserve an existing release"]
64
+ ```
65
+
66
+ ```bash
67
+ # Maintainers: choose patch, minor, major, rc, beta, or alpha.
68
+ # This dispatch creates and pushes a release branch and opens a PR.
69
+ gh workflow run version-bump.yml --ref main -f bump_type=patch
70
+ ```
71
+
72
+ Edit the generated PR description before merging: it becomes the release notes. Keep these identities aligned:
73
+
74
+ | Identity | Required value |
75
+ | ----------------- | ----------------------------------- |
76
+ | Source repository | This repository |
77
+ | Target branch | `main` |
78
+ | PR title | `🔖 Release <version>` |
79
+ | Source branch | `release/<version>` |
80
+ | Package version | The same version, verified by Hatch |
81
+ | Tag | `v<version>` at the PR merge commit |
82
+
83
+ The publication workflow rejects an existing tag pointing elsewhere. It publishes to PyPI before creating the tag and
84
+ GitHub Release. Existing GitHub Releases keep their descriptions; alpha, beta, and release-candidate versions are marked
85
+ as prereleases.
86
+
87
+ If a run fails, inspect the failed step and existing PyPI/tag/release state before retrying that run. Do not move an
88
+ existing release tag to bypass a mismatch.
@@ -0,0 +1,52 @@
1
+ name: Quality
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches: [main]
7
+ pull_request:
8
+
9
+ concurrency:
10
+ group: quality-${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ permissions:
14
+ contents: read
15
+
16
+ jobs:
17
+ QualityChecks:
18
+ runs-on: ubuntu-latest
19
+ strategy:
20
+ matrix:
21
+ python-version: ["3.11", "3.12"]
22
+ steps:
23
+ - uses: actions/checkout@v5
24
+ - uses: astral-sh/setup-uv@v6
25
+ with:
26
+ python-version: ${{ matrix.python-version }}
27
+ enable-cache: true
28
+ - run: sudo apt-get update && sudo apt-get install -y libpq-dev
29
+ - run: uv sync --locked
30
+ - name: Build and smoke test wheel
31
+ run: |
32
+ set -eu
33
+ smoke_dir="$(mktemp -d)"
34
+ trap 'rm -rf "$smoke_dir"' EXIT
35
+ uv build --wheel --out-dir "$smoke_dir"
36
+ uv venv "$smoke_dir/venv"
37
+ uv pip install --python "$smoke_dir/venv/bin/python" "$smoke_dir"/*.whl
38
+ cd "$smoke_dir"
39
+ env -u PYTHONPATH "$smoke_dir/venv/bin/python" -c "import godoo_cli"
40
+ env -u PYTHONPATH "$smoke_dir/venv/bin/godoo" --help
41
+ - run: cp .env.sample .env
42
+ - run: make lint
43
+ - run: make test PYTEST_ARGS="--junitxml=junit/pytest-results.xml --cov-report=xml -o junit_family=legacy"
44
+ env:
45
+ GODOO_SOURCES_ROOT: ""
46
+ - uses: actions/upload-artifact@v4
47
+ if: always()
48
+ with:
49
+ name: test-results-${{ matrix.python-version }}
50
+ path: |
51
+ junit/pytest-results.xml
52
+ coverage.xml
@@ -69,7 +69,7 @@ jobs:
69
69
  # Commit and push the changes
70
70
  git add -A
71
71
  git commit -m "🔖 Bump version ${{ steps.version_info.outputs.CURRENT_VERSION }} → $NEW_VERSION"
72
- git push --force origin "$RELEASE_BRANCH"
72
+ git push origin "$RELEASE_BRANCH"
73
73
 
74
74
  - name: Generate Release Notes
75
75
  id: changelog
@@ -0,0 +1,144 @@
1
+ name: Release and Publish
2
+
3
+ on:
4
+ pull_request:
5
+ types: [closed]
6
+ branches: [main]
7
+
8
+ permissions:
9
+ contents: write
10
+ pull-requests: read
11
+
12
+ concurrency:
13
+ group: release-${{ github.event.pull_request.head.ref }}
14
+ cancel-in-progress: false
15
+
16
+ jobs:
17
+ release:
18
+ if: >-
19
+ github.event.pull_request.merged == true &&
20
+ contains(github.event.pull_request.labels.*.name, 'release')
21
+ runs-on: ubuntu-latest
22
+ env:
23
+ PR_TITLE: ${{ github.event.pull_request.title }}
24
+ PR_HEAD_REF: ${{ github.event.pull_request.head.ref }}
25
+ PR_HEAD_REPO: ${{ github.event.pull_request.head.repo.full_name }}
26
+ EXPECTED_REPO: ${{ github.repository }}
27
+ MERGE_SHA: ${{ github.event.pull_request.merge_commit_sha }}
28
+ PR_BODY: ${{ github.event.pull_request.body }}
29
+ steps:
30
+ - uses: actions/checkout@v4
31
+ with:
32
+ fetch-depth: 0
33
+ ref: ${{ github.event.pull_request.merge_commit_sha }}
34
+
35
+ - name: Verify release pull request
36
+ id: release
37
+ shell: bash
38
+ run: |
39
+ set -euo pipefail
40
+ if [[ "$PR_HEAD_REPO" != "$EXPECTED_REPO" ]]; then
41
+ echo "Release pull request must come from this repository." >&2
42
+ exit 1
43
+ fi
44
+ if [[ "$PR_TITLE" != "🔖 Release "* ]]; then
45
+ echo "Release pull request title must start with '🔖 Release '." >&2
46
+ exit 1
47
+ fi
48
+ RELEASE_VERSION="${PR_TITLE#🔖 Release }"
49
+ if [[ ! "$RELEASE_VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+(a[0-9]+|b[0-9]+|rc[0-9]+)?$ ]]; then
50
+ echo "Release pull request title must end with a semantic version." >&2
51
+ exit 1
52
+ fi
53
+ if [[ "$PR_HEAD_REF" != "release/$RELEASE_VERSION" ]]; then
54
+ echo "Expected release branch release/$RELEASE_VERSION, got $PR_HEAD_REF." >&2
55
+ exit 1
56
+ fi
57
+ if [[ "$(git rev-parse HEAD)" != "$MERGE_SHA" ]]; then
58
+ echo "Checked out commit does not match the release merge commit." >&2
59
+ exit 1
60
+ fi
61
+ echo "version=$RELEASE_VERSION" >> "$GITHUB_OUTPUT"
62
+
63
+ - name: Set up Python
64
+ uses: actions/setup-python@v5
65
+ with:
66
+ python-version: "3.12"
67
+
68
+ - name: Install Hatch
69
+ uses: pypa/hatch@install
70
+
71
+ - name: Verify package version
72
+ env:
73
+ RELEASE_VERSION: ${{ steps.release.outputs.version }}
74
+ run: |
75
+ set -euo pipefail
76
+ VERSION="$(hatch version)"
77
+ if [[ "$VERSION" != "$RELEASE_VERSION" ]]; then
78
+ echo "Version mismatch: project has $VERSION, release pull request is $RELEASE_VERSION." >&2
79
+ exit 1
80
+ fi
81
+
82
+ - name: Preflight existing Git tag
83
+ env:
84
+ RELEASE_VERSION: ${{ steps.release.outputs.version }}
85
+ run: |
86
+ set -euo pipefail
87
+ TAG="v$RELEASE_VERSION"
88
+ git fetch --tags origin
89
+ if git show-ref --verify --quiet "refs/tags/$TAG"; then
90
+ TAG_COMMIT="$(git rev-parse "$TAG^{commit}")"
91
+ if [[ "$TAG_COMMIT" != "$MERGE_SHA" ]]; then
92
+ echo "Existing tag $TAG points to $TAG_COMMIT, expected $MERGE_SHA." >&2
93
+ exit 1
94
+ fi
95
+ fi
96
+
97
+ - name: Build distributions
98
+ run: hatch build
99
+
100
+ - name: Publish to PyPI
101
+ env:
102
+ HATCH_INDEX_USER: __token__
103
+ HATCH_INDEX_AUTH: ${{ secrets.PYPI_TOKEN }}
104
+ run: hatch publish
105
+
106
+ - name: Create or verify Git tag
107
+ env:
108
+ RELEASE_VERSION: ${{ steps.release.outputs.version }}
109
+ run: |
110
+ set -euo pipefail
111
+ TAG="v$RELEASE_VERSION"
112
+ git fetch --tags origin
113
+ if git show-ref --verify --quiet "refs/tags/$TAG"; then
114
+ TAG_COMMIT="$(git rev-parse "$TAG^{commit}")"
115
+ if [[ "$TAG_COMMIT" != "$MERGE_SHA" ]]; then
116
+ echo "Existing tag $TAG points to $TAG_COMMIT, expected $MERGE_SHA." >&2
117
+ exit 1
118
+ fi
119
+ else
120
+ git config user.name "github-actions[bot]"
121
+ git config user.email "github-actions[bot]@users.noreply.github.com"
122
+ git tag -a "$TAG" "$MERGE_SHA" -m "Release $TAG"
123
+ git push origin "refs/tags/$TAG"
124
+ fi
125
+
126
+ - name: Create GitHub Release if missing
127
+ env:
128
+ GH_TOKEN: ${{ github.token }}
129
+ RELEASE_VERSION: ${{ steps.release.outputs.version }}
130
+ shell: bash
131
+ run: |
132
+ set -euo pipefail
133
+ TAG="v$RELEASE_VERSION"
134
+ if gh release view "$TAG" >/dev/null 2>&1; then
135
+ echo "GitHub Release $TAG already exists; preserving its description."
136
+ exit 0
137
+ fi
138
+ NOTES_FILE="$RUNNER_TEMP/release-notes.md"
139
+ printf '%s' "$PR_BODY" > "$NOTES_FILE"
140
+ RELEASE_FLAGS=()
141
+ if [[ "$RELEASE_VERSION" =~ (a[0-9]+|b[0-9]+|rc[0-9]+)$ ]]; then
142
+ RELEASE_FLAGS+=(--prerelease)
143
+ fi
144
+ gh release create "$TAG" --verify-tag --title "$TAG" --notes-file "$NOTES_FILE" "${RELEASE_FLAGS[@]}"
@@ -1,11 +1,15 @@
1
1
  .DS_Store
2
+ node_modules/
3
+ !.vscode/settings.json
2
4
  import
3
- pyrightconfig.json
4
5
  remote_instance_data/
5
6
  config/odoo.conf
6
7
  *.pass
7
8
  *.nogit.*
8
9
  .env
10
+ .godoo/
11
+ /*.code-workspace
12
+ /pyrightconfig.json
9
13
  *:Zone.Identifier
10
14
  *.xlsx
11
15
  ### Python ###
@@ -116,7 +120,6 @@ celerybeat.pid
116
120
  *.sage.py
117
121
 
118
122
  # Environments
119
- .env
120
123
  .venv
121
124
  env/
122
125
  venv/
@@ -49,9 +49,9 @@ repos:
49
49
  args: ["--fix"]
50
50
 
51
51
  - repo: https://github.com/astral-sh/ruff-pre-commit
52
- rev: v0.10.0
52
+ rev: v0.16.5
53
53
  hooks:
54
- - id: ruff
54
+ - id: ruff-check
55
55
  args: [--fix]
56
56
  - id: ruff-format
57
57
 
@@ -61,5 +61,5 @@ repos:
61
61
  - id: prettier
62
62
  name: prettier
63
63
  additional_dependencies:
64
- - "prettier@2.7.1"
64
+ - "prettier@3.7.4"
65
65
  files: \.(css|htm|html|js|json|jsx|less|md|scss|toml|ts|yaml|yml)$
@@ -0,0 +1,16 @@
1
+ {
2
+ "recommendations": [
3
+ "ms-python.python",
4
+ "ms-python.pylint",
5
+ "charliermarsh.ruff",
6
+ "esbenp.prettier-vscode",
7
+ "redhat.vscode-xml",
8
+ "mtxr.sqltools",
9
+ "mtxr.sqltools-driver-pg",
10
+ "jigar-patel.odoosnippets",
11
+ "trinhanhngoc.vscode-odoo",
12
+ "Odoo.owl-vision",
13
+ "eamodio.gitlens",
14
+ "github.vscode-github-actions"
15
+ ]
16
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ "python.testing.unittestEnabled": false,
3
+ "python.testing.pytestEnabled": false,
4
+ "xml.symbols.enabled": false,
5
+ "python.languageServer": "Pylance",
6
+ "python.defaultInterpreterPath": "${workspaceFolder}/.venv/bin/python",
7
+ "ruff.path": ["${workspaceFolder}/.venv/bin/ruff"],
8
+ "ruff.configurationPreference": "filesystemFirst",
9
+ "prettier.prettierPath": "./node_modules/prettier",
10
+ "[python]": {
11
+ "editor.defaultFormatter": "charliermarsh.ruff",
12
+ "editor.formatOnSave": true,
13
+ "editor.codeActionsOnSave": {
14
+ "source.fixAll.ruff": "explicit",
15
+ "source.organizeImports.ruff": "explicit"
16
+ }
17
+ },
18
+ "editor.defaultFormatter": "esbenp.prettier-vscode",
19
+ "editor.formatOnSave": true,
20
+ "[json]": {
21
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
22
+ },
23
+ "[markdown]": {
24
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
25
+ },
26
+ "[yaml]": {
27
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
28
+ },
29
+ "[dockercompose]": {
30
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
31
+ },
32
+ "[github-actions-workflow]": {
33
+ "editor.defaultFormatter": "esbenp.prettier-vscode"
34
+ }
35
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "version": "2.0.0",
3
+ "tasks": [
4
+ {
5
+ "label": "gOdoo: lint",
6
+ "type": "shell",
7
+ "command": "make",
8
+ "args": ["lint"],
9
+ "options": {
10
+ "cwd": "${workspaceFolder}"
11
+ },
12
+ "problemMatcher": [],
13
+ "group": "build"
14
+ },
15
+ {
16
+ "label": "gOdoo: tests",
17
+ "type": "shell",
18
+ "command": "make",
19
+ "args": ["test"],
20
+ "options": {
21
+ "cwd": "${workspaceFolder}"
22
+ },
23
+ "problemMatcher": [],
24
+ "group": "test"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,37 @@
1
+ # gOdoo repository contracts
2
+
3
+ Keep only repo-specific behavior that code and tooling do not make obvious. Prefer existing patterns and the smallest
4
+ coherent change.
5
+
6
+ ## Execution
7
+
8
+ - The host owns Git, workspace commands, VS Code, linting, and the development `.venv`. Odoo runs in the selected
9
+ environment (`VIRTUAL_ENV`, otherwise the project `.venv`). Downstream owns Docker and system packages; gOdoo never
10
+ detects or orchestrates containers.
11
+ - Load the matching skill under `.agents/skills/` for source-workspace or runtime work; load both only when a change
12
+ crosses those boundaries.
13
+ - Use `godoo-editor-validation` for VS Code diagnostics and development-flow checks, and `godoo-changeset-review` for
14
+ whole-changeset reviews.
15
+ - Keep shared Docker validation sequential.
16
+
17
+ ## Code and CLI
18
+
19
+ - Every shell script under `scripts/` has a purpose comment immediately below its shebang.
20
+ - Operational Python modules define and use `LOGGER = logging.getLogger(__name__)`; passive metadata, value-type, and
21
+ re-export modules do not carry unused loggers. Reserve `rich.print()` for user-facing output.
22
+ - Export command groups through `src/godoo_cli/commands/__init__.py` and attach them in
23
+ `src/godoo_cli/commands/root.py`. Reuse env-first option metadata from `src/godoo_cli/commands/common.py`; new options
24
+ need an environment fallback unless there is a concrete reason not to provide one.
25
+ - For Typer commands, keep behavior in the function docstring and parameter help in `Annotated` metadata.
26
+
27
+ ## Validation
28
+
29
+ - Implementers run only focused proof for owned behavior; they never run full `make lint` or `make test` unless
30
+ explicitly the integration owner.
31
+ - The coordinator or named integration owner runs `make lint` and `make test` sequentially on the final tree, plus
32
+ applicable editor, workspace, runtime, and live-surface checks.
33
+ - For whole-changeset review, the validator receives a coordinator-generated current staged, unstaged, and untracked
34
+ diff snapshot and coverage manifest before implementer reports or prior findings; it performs an independent first
35
+ pass, then may consume those reports for a targeted second pass.
36
+ - Validate relevant Python typing boundaries and editor configuration with the editor-validation skill; lint and unit
37
+ tests do not establish that editor diagnostics are clear.