cockpit-cli 0.1.2__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 (299) hide show
  1. cockpit_cli-0.1.2/.gitignore +21 -0
  2. cockpit_cli-0.1.2/LICENSE +21 -0
  3. cockpit_cli-0.1.2/PKG-INFO +467 -0
  4. cockpit_cli-0.1.2/README.md +403 -0
  5. cockpit_cli-0.1.2/pyproject.toml +109 -0
  6. cockpit_cli-0.1.2/src/cockpit/__init__.py +6 -0
  7. cockpit_cli-0.1.2/src/cockpit/__main__.py +25 -0
  8. cockpit_cli-0.1.2/src/cockpit/app.py +198 -0
  9. cockpit_cli-0.1.2/src/cockpit/application/__init__.py +2 -0
  10. cockpit_cli-0.1.2/src/cockpit/application/dispatch/__init__.py +2 -0
  11. cockpit_cli-0.1.2/src/cockpit/application/dispatch/command_dispatcher.py +114 -0
  12. cockpit_cli-0.1.2/src/cockpit/application/dispatch/command_parser.py +63 -0
  13. cockpit_cli-0.1.2/src/cockpit/application/dispatch/event_bus.py +49 -0
  14. cockpit_cli-0.1.2/src/cockpit/application/handlers/__init__.py +2 -0
  15. cockpit_cli-0.1.2/src/cockpit/application/handlers/base.py +38 -0
  16. cockpit_cli-0.1.2/src/cockpit/application/handlers/cron_handlers.py +92 -0
  17. cockpit_cli-0.1.2/src/cockpit/application/handlers/curl_handlers.py +133 -0
  18. cockpit_cli-0.1.2/src/cockpit/application/handlers/db_handlers.py +229 -0
  19. cockpit_cli-0.1.2/src/cockpit/application/handlers/docker_handlers.py +174 -0
  20. cockpit_cli-0.1.2/src/cockpit/application/handlers/layout_handlers.py +126 -0
  21. cockpit_cli-0.1.2/src/cockpit/application/handlers/layout_payload.py +48 -0
  22. cockpit_cli-0.1.2/src/cockpit/application/handlers/session_handlers.py +96 -0
  23. cockpit_cli-0.1.2/src/cockpit/application/handlers/tab_handlers.py +33 -0
  24. cockpit_cli-0.1.2/src/cockpit/application/handlers/terminal_handlers.py +204 -0
  25. cockpit_cli-0.1.2/src/cockpit/application/handlers/workspace_handlers.py +152 -0
  26. cockpit_cli-0.1.2/src/cockpit/application/services/__init__.py +2 -0
  27. cockpit_cli-0.1.2/src/cockpit/application/services/activity_log_service.py +293 -0
  28. cockpit_cli-0.1.2/src/cockpit/application/services/connection_service.py +74 -0
  29. cockpit_cli-0.1.2/src/cockpit/application/services/datasource_service.py +305 -0
  30. cockpit_cli-0.1.2/src/cockpit/application/services/layout_service.py +517 -0
  31. cockpit_cli-0.1.2/src/cockpit/application/services/navigation_controller.py +145 -0
  32. cockpit_cli-0.1.2/src/cockpit/application/services/plugin_service.py +752 -0
  33. cockpit_cli-0.1.2/src/cockpit/application/services/secret_service.py +896 -0
  34. cockpit_cli-0.1.2/src/cockpit/application/services/session_service.py +158 -0
  35. cockpit_cli-0.1.2/src/cockpit/application/services/web_admin_service.py +396 -0
  36. cockpit_cli-0.1.2/src/cockpit/application/services/workspace_service.py +94 -0
  37. cockpit_cli-0.1.2/src/cockpit/bootstrap.py +469 -0
  38. cockpit_cli-0.1.2/src/cockpit/domain/__init__.py +2 -0
  39. cockpit_cli-0.1.2/src/cockpit/domain/commands/__init__.py +2 -0
  40. cockpit_cli-0.1.2/src/cockpit/domain/commands/command.py +50 -0
  41. cockpit_cli-0.1.2/src/cockpit/domain/events/__init__.py +2 -0
  42. cockpit_cli-0.1.2/src/cockpit/domain/events/base.py +38 -0
  43. cockpit_cli-0.1.2/src/cockpit/domain/events/domain_events.py +50 -0
  44. cockpit_cli-0.1.2/src/cockpit/domain/events/runtime_events.py +61 -0
  45. cockpit_cli-0.1.2/src/cockpit/domain/models/__init__.py +2 -0
  46. cockpit_cli-0.1.2/src/cockpit/domain/models/datasource.py +47 -0
  47. cockpit_cli-0.1.2/src/cockpit/domain/models/layout.py +38 -0
  48. cockpit_cli-0.1.2/src/cockpit/domain/models/panel_state.py +20 -0
  49. cockpit_cli-0.1.2/src/cockpit/domain/models/plugin.py +42 -0
  50. cockpit_cli-0.1.2/src/cockpit/domain/models/secret.py +81 -0
  51. cockpit_cli-0.1.2/src/cockpit/domain/models/session.py +26 -0
  52. cockpit_cli-0.1.2/src/cockpit/domain/models/workspace.py +31 -0
  53. cockpit_cli-0.1.2/src/cockpit/infrastructure/__init__.py +2 -0
  54. cockpit_cli-0.1.2/src/cockpit/infrastructure/config/__init__.py +1 -0
  55. cockpit_cli-0.1.2/src/cockpit/infrastructure/config/config_loader.py +50 -0
  56. cockpit_cli-0.1.2/src/cockpit/infrastructure/cron/__init__.py +1 -0
  57. cockpit_cli-0.1.2/src/cockpit/infrastructure/cron/cron_adapter.py +353 -0
  58. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/__init__.py +1 -0
  59. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/base.py +40 -0
  60. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/chroma_adapter.py +147 -0
  61. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/mongodb_adapter.py +127 -0
  62. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/redis_adapter.py +94 -0
  63. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/sqlalchemy_adapter.py +147 -0
  64. cockpit_cli-0.1.2/src/cockpit/infrastructure/datasources/url_tools.py +36 -0
  65. cockpit_cli-0.1.2/src/cockpit/infrastructure/db/__init__.py +1 -0
  66. cockpit_cli-0.1.2/src/cockpit/infrastructure/db/database_adapter.py +349 -0
  67. cockpit_cli-0.1.2/src/cockpit/infrastructure/docker/__init__.py +1 -0
  68. cockpit_cli-0.1.2/src/cockpit/infrastructure/docker/docker_adapter.py +310 -0
  69. cockpit_cli-0.1.2/src/cockpit/infrastructure/filesystem/__init__.py +1 -0
  70. cockpit_cli-0.1.2/src/cockpit/infrastructure/filesystem/remote_filesystem_adapter.py +123 -0
  71. cockpit_cli-0.1.2/src/cockpit/infrastructure/git/__init__.py +1 -0
  72. cockpit_cli-0.1.2/src/cockpit/infrastructure/git/git_adapter.py +202 -0
  73. cockpit_cli-0.1.2/src/cockpit/infrastructure/http/__init__.py +1 -0
  74. cockpit_cli-0.1.2/src/cockpit/infrastructure/http/http_adapter.py +86 -0
  75. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/__init__.py +1 -0
  76. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/migrations.py +58 -0
  77. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/repositories.py +735 -0
  78. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/schema.py +151 -0
  79. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/snapshot_codec.py +101 -0
  80. cockpit_cli-0.1.2/src/cockpit/infrastructure/persistence/sqlite_store.py +76 -0
  81. cockpit_cli-0.1.2/src/cockpit/infrastructure/secrets/__init__.py +1 -0
  82. cockpit_cli-0.1.2/src/cockpit/infrastructure/secrets/cache_cipher.py +49 -0
  83. cockpit_cli-0.1.2/src/cockpit/infrastructure/secrets/secret_resolver.py +326 -0
  84. cockpit_cli-0.1.2/src/cockpit/infrastructure/secrets/vault_client.py +407 -0
  85. cockpit_cli-0.1.2/src/cockpit/infrastructure/shell/__init__.py +1 -0
  86. cockpit_cli-0.1.2/src/cockpit/infrastructure/shell/base.py +28 -0
  87. cockpit_cli-0.1.2/src/cockpit/infrastructure/shell/local_shell_adapter.py +56 -0
  88. cockpit_cli-0.1.2/src/cockpit/infrastructure/shell/shell_adapter_router.py +36 -0
  89. cockpit_cli-0.1.2/src/cockpit/infrastructure/ssh/__init__.py +1 -0
  90. cockpit_cli-0.1.2/src/cockpit/infrastructure/ssh/command_runner.py +80 -0
  91. cockpit_cli-0.1.2/src/cockpit/infrastructure/ssh/ssh_shell_adapter.py +54 -0
  92. cockpit_cli-0.1.2/src/cockpit/infrastructure/ssh/tunnel_manager.py +161 -0
  93. cockpit_cli-0.1.2/src/cockpit/infrastructure/system/__init__.py +1 -0
  94. cockpit_cli-0.1.2/src/cockpit/infrastructure/system/clipboard.py +69 -0
  95. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/__init__.py +1 -0
  96. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/admin_server.py +893 -0
  97. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/layout_editor/__init__.py +2 -0
  98. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/layout_editor/assets.py +30 -0
  99. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/layout_editor/static/assets/index-B7icxjs9.js +9 -0
  100. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/layout_editor/static/assets/index-DOF49nFj.css +1 -0
  101. cockpit_cli-0.1.2/src/cockpit/infrastructure/web/layout_editor/static/index.html +14 -0
  102. cockpit_cli-0.1.2/src/cockpit/plugins/__init__.py +1 -0
  103. cockpit_cli-0.1.2/src/cockpit/plugins/loader.py +116 -0
  104. cockpit_cli-0.1.2/src/cockpit/plugins/notes_plugin.py +104 -0
  105. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/__init__.py +13 -0
  106. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/contracts.py +94 -0
  107. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/host_client.py +265 -0
  108. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/host_main.py +342 -0
  109. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/remote_handler.py +34 -0
  110. cockpit_cli-0.1.2/src/cockpit/plugins/runtime/remote_panel.py +122 -0
  111. cockpit_cli-0.1.2/src/cockpit/runtime/__init__.py +2 -0
  112. cockpit_cli-0.1.2/src/cockpit/runtime/pty_manager.py +272 -0
  113. cockpit_cli-0.1.2/src/cockpit/runtime/stream_router.py +28 -0
  114. cockpit_cli-0.1.2/src/cockpit/runtime/task_supervisor.py +54 -0
  115. cockpit_cli-0.1.2/src/cockpit/shared/__init__.py +2 -0
  116. cockpit_cli-0.1.2/src/cockpit/shared/config.py +37 -0
  117. cockpit_cli-0.1.2/src/cockpit/shared/enums.py +51 -0
  118. cockpit_cli-0.1.2/src/cockpit/shared/risk.py +47 -0
  119. cockpit_cli-0.1.2/src/cockpit/shared/types.py +12 -0
  120. cockpit_cli-0.1.2/src/cockpit/shared/utils.py +46 -0
  121. cockpit_cli-0.1.2/src/cockpit/terminal/__init__.py +2 -0
  122. cockpit_cli-0.1.2/src/cockpit/terminal/bindings/__init__.py +2 -0
  123. cockpit_cli-0.1.2/src/cockpit/terminal/bindings/libvterm_build.py +104 -0
  124. cockpit_cli-0.1.2/src/cockpit/terminal/bindings/libvterm_ffi.py +23 -0
  125. cockpit_cli-0.1.2/src/cockpit/terminal/engine/__init__.py +22 -0
  126. cockpit_cli-0.1.2/src/cockpit/terminal/engine/base.py +20 -0
  127. cockpit_cli-0.1.2/src/cockpit/terminal/engine/factory.py +16 -0
  128. cockpit_cli-0.1.2/src/cockpit/terminal/engine/fallback.py +221 -0
  129. cockpit_cli-0.1.2/src/cockpit/terminal/engine/libvterm_engine.py +180 -0
  130. cockpit_cli-0.1.2/src/cockpit/terminal/engine/models.py +92 -0
  131. cockpit_cli-0.1.2/src/cockpit/tooling/__init__.py +2 -0
  132. cockpit_cli-0.1.2/src/cockpit/tooling/release.py +168 -0
  133. cockpit_cli-0.1.2/src/cockpit/ui/__init__.py +2 -0
  134. cockpit_cli-0.1.2/src/cockpit/ui/panels/__init__.py +1 -0
  135. cockpit_cli-0.1.2/src/cockpit/ui/panels/base_panel.py +38 -0
  136. cockpit_cli-0.1.2/src/cockpit/ui/panels/cron_panel.py +196 -0
  137. cockpit_cli-0.1.2/src/cockpit/ui/panels/curl_panel.py +173 -0
  138. cockpit_cli-0.1.2/src/cockpit/ui/panels/db_panel.py +422 -0
  139. cockpit_cli-0.1.2/src/cockpit/ui/panels/docker_panel.py +210 -0
  140. cockpit_cli-0.1.2/src/cockpit/ui/panels/git_panel.py +200 -0
  141. cockpit_cli-0.1.2/src/cockpit/ui/panels/logs_panel.py +219 -0
  142. cockpit_cli-0.1.2/src/cockpit/ui/panels/panel_host.py +385 -0
  143. cockpit_cli-0.1.2/src/cockpit/ui/panels/registry.py +82 -0
  144. cockpit_cli-0.1.2/src/cockpit/ui/panels/work_panel.py +685 -0
  145. cockpit_cli-0.1.2/src/cockpit/ui/screens/__init__.py +2 -0
  146. cockpit_cli-0.1.2/src/cockpit/ui/screens/app_shell.py +820 -0
  147. cockpit_cli-0.1.2/src/cockpit/ui/widgets/__init__.py +2 -0
  148. cockpit_cli-0.1.2/src/cockpit/ui/widgets/command_palette.py +88 -0
  149. cockpit_cli-0.1.2/src/cockpit/ui/widgets/confirmation_bar.py +25 -0
  150. cockpit_cli-0.1.2/src/cockpit/ui/widgets/embedded_terminal.py +590 -0
  151. cockpit_cli-0.1.2/src/cockpit/ui/widgets/file_context.py +40 -0
  152. cockpit_cli-0.1.2/src/cockpit/ui/widgets/file_explorer.py +177 -0
  153. cockpit_cli-0.1.2/src/cockpit/ui/widgets/header.py +8 -0
  154. cockpit_cli-0.1.2/src/cockpit/ui/widgets/slash_input.py +16 -0
  155. cockpit_cli-0.1.2/src/cockpit/ui/widgets/status_bar.py +39 -0
  156. cockpit_cli-0.1.2/src/cockpit/ui/widgets/tab_bar.py +74 -0
  157. cockpit_cli-0.1.2/src/cockpit/ui/widgets/terminal_buffer.py +27 -0
  158. cockpit_cli-0.1.2/tests/__init__.py +1 -0
  159. cockpit_cli-0.1.2/tests/e2e/__init__.py +1 -0
  160. cockpit_cli-0.1.2/tests/e2e/test_app_resume_flow.py +904 -0
  161. cockpit_cli-0.1.2/tests/e2e/test_embedded_terminal_widget.py +221 -0
  162. cockpit_cli-0.1.2/tests/integration/__init__.py +1 -0
  163. cockpit_cli-0.1.2/tests/integration/test_activity_log_service.py +141 -0
  164. cockpit_cli-0.1.2/tests/integration/test_datasource_live_backends.py +191 -0
  165. cockpit_cli-0.1.2/tests/integration/test_git_adapter.py +60 -0
  166. cockpit_cli-0.1.2/tests/integration/test_navigation_controller.py +347 -0
  167. cockpit_cli-0.1.2/tests/integration/test_pty_manager.py +246 -0
  168. cockpit_cli-0.1.2/tests/integration/test_sqlite_repositories.py +274 -0
  169. cockpit_cli-0.1.2/tests/integration/test_web_admin_server.py +546 -0
  170. cockpit_cli-0.1.2/tests/unit/__init__.py +1 -0
  171. cockpit_cli-0.1.2/tests/unit/test_app_cli.py +55 -0
  172. cockpit_cli-0.1.2/tests/unit/test_clipboard_service.py +51 -0
  173. cockpit_cli-0.1.2/tests/unit/test_command_parser.py +42 -0
  174. cockpit_cli-0.1.2/tests/unit/test_config_loader.py +58 -0
  175. cockpit_cli-0.1.2/tests/unit/test_connection_service.py +41 -0
  176. cockpit_cli-0.1.2/tests/unit/test_cron_adapter.py +133 -0
  177. cockpit_cli-0.1.2/tests/unit/test_cron_handler.py +70 -0
  178. cockpit_cli-0.1.2/tests/unit/test_curl_handler.py +81 -0
  179. cockpit_cli-0.1.2/tests/unit/test_database_adapter.py +98 -0
  180. cockpit_cli-0.1.2/tests/unit/test_datasource_service.py +200 -0
  181. cockpit_cli-0.1.2/tests/unit/test_db_handler.py +173 -0
  182. cockpit_cli-0.1.2/tests/unit/test_dispatcher.py +98 -0
  183. cockpit_cli-0.1.2/tests/unit/test_docker_adapter.py +202 -0
  184. cockpit_cli-0.1.2/tests/unit/test_docker_handler.py +144 -0
  185. cockpit_cli-0.1.2/tests/unit/test_event_bus.py +30 -0
  186. cockpit_cli-0.1.2/tests/unit/test_git_adapter_remote.py +74 -0
  187. cockpit_cli-0.1.2/tests/unit/test_http_adapter.py +40 -0
  188. cockpit_cli-0.1.2/tests/unit/test_layout_handler.py +136 -0
  189. cockpit_cli-0.1.2/tests/unit/test_layout_service.py +129 -0
  190. cockpit_cli-0.1.2/tests/unit/test_models.py +137 -0
  191. cockpit_cli-0.1.2/tests/unit/test_plugin_loader.py +104 -0
  192. cockpit_cli-0.1.2/tests/unit/test_plugin_service.py +492 -0
  193. cockpit_cli-0.1.2/tests/unit/test_release_tooling.py +81 -0
  194. cockpit_cli-0.1.2/tests/unit/test_remote_filesystem_adapter.py +82 -0
  195. cockpit_cli-0.1.2/tests/unit/test_secret_resolver.py +100 -0
  196. cockpit_cli-0.1.2/tests/unit/test_secret_service.py +303 -0
  197. cockpit_cli-0.1.2/tests/unit/test_snapshot_codec.py +49 -0
  198. cockpit_cli-0.1.2/tests/unit/test_ssh_shell_adapter.py +23 -0
  199. cockpit_cli-0.1.2/tests/unit/test_target_risk.py +41 -0
  200. cockpit_cli-0.1.2/tests/unit/test_terminal_engine.py +74 -0
  201. cockpit_cli-0.1.2/tests/unit/test_tunnel_manager.py +124 -0
  202. cockpit_cli-0.1.2/tests/unit/test_vault_client.py +83 -0
  203. cockpit_cli-0.1.2/tests/unit/test_workspace_handler.py +34 -0
  204. cockpit_cli-0.1.2/third_party/libvterm/.bzrignore +13 -0
  205. cockpit_cli-0.1.2/third_party/libvterm/.github/dependabot.yml +8 -0
  206. cockpit_cli-0.1.2/third_party/libvterm/.github/workflows/sync.yml +44 -0
  207. cockpit_cli-0.1.2/third_party/libvterm/CODE-MAP +81 -0
  208. cockpit_cli-0.1.2/third_party/libvterm/CONTRIBUTING +22 -0
  209. cockpit_cli-0.1.2/third_party/libvterm/LICENSE +23 -0
  210. cockpit_cli-0.1.2/third_party/libvterm/Makefile +142 -0
  211. cockpit_cli-0.1.2/third_party/libvterm/README.md +9 -0
  212. cockpit_cli-0.1.2/third_party/libvterm/bin/unterm.c +280 -0
  213. cockpit_cli-0.1.2/third_party/libvterm/bin/vterm-ctrl.c +354 -0
  214. cockpit_cli-0.1.2/third_party/libvterm/bin/vterm-dump.c +245 -0
  215. cockpit_cli-0.1.2/third_party/libvterm/doc/URLs +14 -0
  216. cockpit_cli-0.1.2/third_party/libvterm/doc/seqs.txt +283 -0
  217. cockpit_cli-0.1.2/third_party/libvterm/find-wide-chars.pl +30 -0
  218. cockpit_cli-0.1.2/third_party/libvterm/include/vterm.h +645 -0
  219. cockpit_cli-0.1.2/third_party/libvterm/include/vterm_keycodes.h +61 -0
  220. cockpit_cli-0.1.2/third_party/libvterm/src/encoding/DECdrawing.inc +36 -0
  221. cockpit_cli-0.1.2/third_party/libvterm/src/encoding/DECdrawing.tbl +31 -0
  222. cockpit_cli-0.1.2/third_party/libvterm/src/encoding/uk.inc +6 -0
  223. cockpit_cli-0.1.2/third_party/libvterm/src/encoding/uk.tbl +1 -0
  224. cockpit_cli-0.1.2/third_party/libvterm/src/encoding.c +230 -0
  225. cockpit_cli-0.1.2/third_party/libvterm/src/fullwidth.inc +111 -0
  226. cockpit_cli-0.1.2/third_party/libvterm/src/keyboard.c +226 -0
  227. cockpit_cli-0.1.2/third_party/libvterm/src/mouse.c +99 -0
  228. cockpit_cli-0.1.2/third_party/libvterm/src/parser.c +402 -0
  229. cockpit_cli-0.1.2/third_party/libvterm/src/pen.c +607 -0
  230. cockpit_cli-0.1.2/third_party/libvterm/src/rect.h +56 -0
  231. cockpit_cli-0.1.2/third_party/libvterm/src/screen.c +1214 -0
  232. cockpit_cli-0.1.2/third_party/libvterm/src/state.c +2380 -0
  233. cockpit_cli-0.1.2/third_party/libvterm/src/unicode.c +313 -0
  234. cockpit_cli-0.1.2/third_party/libvterm/src/utf8.h +39 -0
  235. cockpit_cli-0.1.2/third_party/libvterm/src/vterm.c +430 -0
  236. cockpit_cli-0.1.2/third_party/libvterm/src/vterm_internal.h +298 -0
  237. cockpit_cli-0.1.2/third_party/libvterm/t/02parser.test +266 -0
  238. cockpit_cli-0.1.2/third_party/libvterm/t/03encoding_utf8.test +122 -0
  239. cockpit_cli-0.1.2/third_party/libvterm/t/10state_putglyph.test +74 -0
  240. cockpit_cli-0.1.2/third_party/libvterm/t/11state_movecursor.test +224 -0
  241. cockpit_cli-0.1.2/third_party/libvterm/t/12state_scroll.test +160 -0
  242. cockpit_cli-0.1.2/third_party/libvterm/t/13state_edit.test +308 -0
  243. cockpit_cli-0.1.2/third_party/libvterm/t/14state_encoding.test +105 -0
  244. cockpit_cli-0.1.2/third_party/libvterm/t/15state_mode.test +86 -0
  245. cockpit_cli-0.1.2/third_party/libvterm/t/16state_resize.test +48 -0
  246. cockpit_cli-0.1.2/third_party/libvterm/t/17state_mouse.test +191 -0
  247. cockpit_cli-0.1.2/third_party/libvterm/t/18state_termprops.test +42 -0
  248. cockpit_cli-0.1.2/third_party/libvterm/t/20state_wrapping.test +69 -0
  249. cockpit_cli-0.1.2/third_party/libvterm/t/21state_tabstops.test +60 -0
  250. cockpit_cli-0.1.2/third_party/libvterm/t/22state_save.test +64 -0
  251. cockpit_cli-0.1.2/third_party/libvterm/t/25state_input.test +157 -0
  252. cockpit_cli-0.1.2/third_party/libvterm/t/26state_query.test +63 -0
  253. cockpit_cli-0.1.2/third_party/libvterm/t/27state_reset.test +32 -0
  254. cockpit_cli-0.1.2/third_party/libvterm/t/28state_dbl_wh.test +61 -0
  255. cockpit_cli-0.1.2/third_party/libvterm/t/29state_fallback.test +31 -0
  256. cockpit_cli-0.1.2/third_party/libvterm/t/30state_pen.test +133 -0
  257. cockpit_cli-0.1.2/third_party/libvterm/t/31state_rep.test +128 -0
  258. cockpit_cli-0.1.2/third_party/libvterm/t/32state_flow.test +28 -0
  259. cockpit_cli-0.1.2/third_party/libvterm/t/40state_selection.test +89 -0
  260. cockpit_cli-0.1.2/third_party/libvterm/t/60screen_ascii.test +69 -0
  261. cockpit_cli-0.1.2/third_party/libvterm/t/61screen_unicode.test +47 -0
  262. cockpit_cli-0.1.2/third_party/libvterm/t/62screen_damage.test +155 -0
  263. cockpit_cli-0.1.2/third_party/libvterm/t/63screen_resize.test +117 -0
  264. cockpit_cli-0.1.2/third_party/libvterm/t/64screen_pen.test +71 -0
  265. cockpit_cli-0.1.2/third_party/libvterm/t/65screen_protect.test +16 -0
  266. cockpit_cli-0.1.2/third_party/libvterm/t/66screen_extent.test +11 -0
  267. cockpit_cli-0.1.2/third_party/libvterm/t/67screen_dbl_wh.test +38 -0
  268. cockpit_cli-0.1.2/third_party/libvterm/t/68screen_termprops.test +17 -0
  269. cockpit_cli-0.1.2/third_party/libvterm/t/69screen_pushline.test +17 -0
  270. cockpit_cli-0.1.2/third_party/libvterm/t/69screen_reflow.test +88 -0
  271. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_01-movement-1.test +87 -0
  272. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_01-movement-2.test +40 -0
  273. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_01-movement-3.test +21 -0
  274. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_01-movement-4.test +36 -0
  275. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_02-screen-1.test +18 -0
  276. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_02-screen-2.test +29 -0
  277. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_02-screen-3.test +16 -0
  278. cockpit_cli-0.1.2/third_party/libvterm/t/90vttest_02-screen-4.test +17 -0
  279. cockpit_cli-0.1.2/third_party/libvterm/t/92lp1640917.test +13 -0
  280. cockpit_cli-0.1.2/third_party/libvterm/t/harness.c +1253 -0
  281. cockpit_cli-0.1.2/third_party/libvterm/t/run-test.pl +234 -0
  282. cockpit_cli-0.1.2/third_party/libvterm/tbl2inc_c.pl +30 -0
  283. cockpit_cli-0.1.2/third_party/libvterm/vterm.pc.in +8 -0
  284. cockpit_cli-0.1.2/web/layout-editor/index.html +13 -0
  285. cockpit_cli-0.1.2/web/layout-editor/package-lock.json +4573 -0
  286. cockpit_cli-0.1.2/web/layout-editor/package.json +26 -0
  287. cockpit_cli-0.1.2/web/layout-editor/src/App.tsx +318 -0
  288. cockpit_cli-0.1.2/web/layout-editor/src/api/layoutEditor.ts +63 -0
  289. cockpit_cli-0.1.2/web/layout-editor/src/components/Inspector.tsx +132 -0
  290. cockpit_cli-0.1.2/web/layout-editor/src/components/LayoutCanvas.tsx +194 -0
  291. cockpit_cli-0.1.2/web/layout-editor/src/components/PanelLibrary.tsx +51 -0
  292. cockpit_cli-0.1.2/web/layout-editor/src/main.tsx +12 -0
  293. cockpit_cli-0.1.2/web/layout-editor/src/state/editor.test.ts +72 -0
  294. cockpit_cli-0.1.2/web/layout-editor/src/state/editor.ts +352 -0
  295. cockpit_cli-0.1.2/web/layout-editor/src/styles.css +456 -0
  296. cockpit_cli-0.1.2/web/layout-editor/src/types.ts +44 -0
  297. cockpit_cli-0.1.2/web/layout-editor/tsconfig.json +22 -0
  298. cockpit_cli-0.1.2/web/layout-editor/tsconfig.node.json +10 -0
  299. cockpit_cli-0.1.2/web/layout-editor/vite.config.ts +12 -0
@@ -0,0 +1,21 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+
4
+ .cockpit/
5
+ .superpowers/
6
+
7
+ .pytest_cache/
8
+ .mypy_cache/
9
+ .ruff_cache/
10
+ .venv/
11
+ .sbom-venv/
12
+ build/
13
+ dist/
14
+ release-assets/
15
+ vendor/
16
+ /cockpit/
17
+ /home/
18
+ /src/cockpit/terminal/bindings/_libvterm.so
19
+ /src/cockpit/terminal/bindings/cockpit/
20
+ /src/cockpit/terminal/bindings/home/
21
+ /web/layout-editor/node_modules/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 DamienDrash
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,467 @@
1
+ Metadata-Version: 2.4
2
+ Name: cockpit-cli
3
+ Version: 0.1.2
4
+ Summary: Keyboard-first TUI platform for developer workspaces.
5
+ License-File: LICENSE
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: cffi>=1.17
8
+ Requires-Dist: packaging>=24.0
9
+ Requires-Dist: pyyaml>=6.0
10
+ Requires-Dist: sqlalchemy>=2.0
11
+ Requires-Dist: textual>=0.58.0
12
+ Provides-Extra: all-datasources
13
+ Requires-Dist: chromadb>=0.5; extra == 'all-datasources'
14
+ Requires-Dist: duckdb-engine>=0.13; extra == 'all-datasources'
15
+ Requires-Dist: duckdb>=1.1; extra == 'all-datasources'
16
+ Requires-Dist: google-cloud-bigquery>=3.30; extra == 'all-datasources'
17
+ Requires-Dist: ibis-framework>=10.0; extra == 'all-datasources'
18
+ Requires-Dist: mariadb>=1.1; extra == 'all-datasources'
19
+ Requires-Dist: psycopg[binary]>=3.2; extra == 'all-datasources'
20
+ Requires-Dist: pybigquery>=0.10; extra == 'all-datasources'
21
+ Requires-Dist: pymongo>=4.10; extra == 'all-datasources'
22
+ Requires-Dist: pymysql>=1.1; extra == 'all-datasources'
23
+ Requires-Dist: pyodbc>=5.1; extra == 'all-datasources'
24
+ Requires-Dist: redis>=5.0; extra == 'all-datasources'
25
+ Requires-Dist: snowflake-sqlalchemy>=1.6; extra == 'all-datasources'
26
+ Provides-Extra: analytics
27
+ Requires-Dist: ibis-framework>=10.0; extra == 'analytics'
28
+ Provides-Extra: bigquery
29
+ Requires-Dist: google-cloud-bigquery>=3.30; extra == 'bigquery'
30
+ Requires-Dist: pybigquery>=0.10; extra == 'bigquery'
31
+ Provides-Extra: chroma
32
+ Requires-Dist: chromadb>=0.5; extra == 'chroma'
33
+ Provides-Extra: dev
34
+ Requires-Dist: build>=1.2; extra == 'dev'
35
+ Requires-Dist: textual>=0.58.0; extra == 'dev'
36
+ Provides-Extra: duckdb
37
+ Requires-Dist: duckdb-engine>=0.13; extra == 'duckdb'
38
+ Requires-Dist: duckdb>=1.1; extra == 'duckdb'
39
+ Provides-Extra: mariadb
40
+ Requires-Dist: mariadb>=1.1; extra == 'mariadb'
41
+ Provides-Extra: mongo
42
+ Requires-Dist: pymongo>=4.10; extra == 'mongo'
43
+ Provides-Extra: mssql
44
+ Requires-Dist: pyodbc>=5.1; extra == 'mssql'
45
+ Provides-Extra: mysql
46
+ Requires-Dist: pymysql>=1.1; extra == 'mysql'
47
+ Provides-Extra: postgres
48
+ Requires-Dist: psycopg[binary]>=3.2; extra == 'postgres'
49
+ Provides-Extra: redis
50
+ Requires-Dist: redis>=5.0; extra == 'redis'
51
+ Provides-Extra: release
52
+ Requires-Dist: build>=1.2; extra == 'release'
53
+ Requires-Dist: cyclonedx-bom>=4.2; extra == 'release'
54
+ Requires-Dist: sigstore>=3.6; extra == 'release'
55
+ Provides-Extra: secrets
56
+ Requires-Dist: cryptography>=44.0; extra == 'secrets'
57
+ Requires-Dist: keyring>=25.6; extra == 'secrets'
58
+ Provides-Extra: snowflake
59
+ Requires-Dist: snowflake-sqlalchemy>=1.6; extra == 'snowflake'
60
+ Provides-Extra: vault
61
+ Requires-Dist: cryptography>=44.0; extra == 'vault'
62
+ Requires-Dist: keyring>=25.6; extra == 'vault'
63
+ Description-Content-Type: text/markdown
64
+
65
+ # cockpit-cli
66
+
67
+ Keyboard-first developer workspace cockpit for Linux.
68
+
69
+ `cockpit-cli` combines a Textual TUI, a local web admin plane, persisted sessions,
70
+ guarded mutating actions, and a plugin-capable datasource platform. The app is
71
+ Linux-first and optimized for local development, SSH-backed environments, and
72
+ operator workflows that need one command/event model across terminal, Git,
73
+ Docker, Cron, DB, HTTP, and layout management.
74
+
75
+ ## Core Capabilities
76
+
77
+ - persisted workspaces and sessions backed by SQLite
78
+ - local and SSH-backed workspaces with resume across restarts
79
+ - Textual TUI with `Work`, `Git`, `Docker`, `Cron`, `DB`, `Curl`, and `Logs`
80
+ - editable split layouts with persisted variants
81
+ - command palette, slash commands, and keybindings through one dispatcher
82
+ - guarded mutating flows for Docker, Cron, DB, and HTTP actions
83
+ - local web admin for datasource profiles, plugin installs, layouts, and diagnostics
84
+ - Vault-first secret registry with compatibility providers for env, file, and keyring
85
+ - plugin install/update/pin/remove with repo or package requirements
86
+ - plugin compatibility, permission allowlists, and on-disk integrity verification before runtime activation
87
+ - broad datasource support through SQLAlchemy dialects plus non-SQL adapters
88
+ - terminal scrollback, search, keyboard or mouse-assisted selection, export, and clipboard copy
89
+
90
+ ## Supported Datasource Families
91
+
92
+ Built-in datasource profiles support these backends:
93
+
94
+ - `sqlite`
95
+ - `postgres` / `postgresql`
96
+ - `mysql`
97
+ - `mariadb`
98
+ - `mssql`
99
+ - `duckdb`
100
+ - `bigquery`
101
+ - `snowflake`
102
+ - `mongodb`
103
+ - `redis`
104
+ - `chromadb`
105
+
106
+ Relational and analytics backends run through SQLAlchemy with external dialects
107
+ where appropriate. Non-SQL backends use dedicated adapters. Additional
108
+ datasources can be supplied by plugins.
109
+
110
+ ## Tech Stack
111
+
112
+ - Python 3.11+
113
+ - Textual
114
+ - SQLite
115
+ - YAML + TCSS
116
+ - SQLAlchemy
117
+ - optional Ibis and backend-specific drivers
118
+
119
+ ## Repository Layout
120
+
121
+ ```text
122
+ config/
123
+ commands.yaml
124
+ connections.example.yaml
125
+ datasources.example.yaml
126
+ keybindings.yaml
127
+ layouts/
128
+ plugins.example.yaml
129
+ themes/
130
+ docs/
131
+ superpowers/
132
+ packaging/
133
+ arch/
134
+ src/cockpit/
135
+ tests/
136
+ ```
137
+
138
+ ## Installation
139
+
140
+ ### Core install
141
+
142
+ ```bash
143
+ git clone git@github.com:DamienDrash/cockpit_cli.git
144
+ cd cockpit_cli
145
+ python -m venv .venv
146
+ source .venv/bin/activate
147
+ pip install -e .
148
+ ```
149
+
150
+ ### Full datasource install
151
+
152
+ ```bash
153
+ pip install -e '.[all-datasources]'
154
+ ```
155
+
156
+ Or install only the extras you need, for example:
157
+
158
+ ```bash
159
+ pip install -e '.[postgres,mysql,duckdb,mongo,redis]'
160
+ ```
161
+
162
+ Enable Vault, encrypted local cache support, and keyring compatibility:
163
+
164
+ ```bash
165
+ pip install -e '.[vault,secrets]'
166
+ ```
167
+
168
+ Install release and verification tooling:
169
+
170
+ ```bash
171
+ pip install -e '.[release]'
172
+ ```
173
+
174
+ ## Quick Start
175
+
176
+ Open the current directory:
177
+
178
+ ```bash
179
+ cockpit-cli open .
180
+ ```
181
+
182
+ Resume the last session:
183
+
184
+ ```bash
185
+ cockpit-cli resume
186
+ ```
187
+
188
+ List connection aliases:
189
+
190
+ ```bash
191
+ cockpit-cli connections
192
+ ```
193
+
194
+ List configured datasource profiles:
195
+
196
+ ```bash
197
+ cockpit-cli datasources
198
+ ```
199
+
200
+ Run the local web admin:
201
+
202
+ ```bash
203
+ cockpit-cli admin --open-browser
204
+ ```
205
+
206
+ ## TUI Commands
207
+
208
+ Common commands:
209
+
210
+ ```text
211
+ /workspace open .
212
+ /workspace open @prod:/srv/app
213
+ /workspace reopen_last
214
+ /session restore
215
+ /tab focus db
216
+ /layout apply_default
217
+ /layout toggle_orientation
218
+ /layout grow
219
+ /layout shrink
220
+ /terminal focus
221
+ /terminal restart
222
+ /terminal search "error"
223
+ /terminal search_next
224
+ /terminal search_prev
225
+ /terminal export .cockpit/terminal-buffer.txt
226
+ /terminal copy
227
+ /docker restart
228
+ /docker stop
229
+ /docker remove
230
+ /cron enable
231
+ /cron disable
232
+ /db run_query "SELECT 1"
233
+ /curl send GET https://example.com
234
+ ```
235
+
236
+ ## Web Admin
237
+
238
+ The local web admin exposes:
239
+
240
+ - datasource profile creation and deletion
241
+ - datasource execution for quick operator queries and mutations
242
+ - Vault profile management, login, lease diagnostics, transit actions, and managed secret references
243
+ - plugin install/update/pin/enable/remove
244
+ - layout cloning and split edits
245
+ - diagnostics for commands, panels, datasources, secrets, plugins, tunnels, and tool availability
246
+
247
+ It runs locally only and reuses the same application services as the TUI.
248
+
249
+ ## Connection Profiles
250
+
251
+ Connection aliases live in `config/connections.yaml`. Start from
252
+ [connections.example.yaml](/home/damien/Dokumente/cockpit/config/connections.example.yaml).
253
+
254
+ Example:
255
+
256
+ ```yaml
257
+ connections:
258
+ prod:
259
+ target: deploy@example.com
260
+ default_path: /srv/app
261
+ description: Production target
262
+ ```
263
+
264
+ Then open through either form:
265
+
266
+ ```bash
267
+ cockpit-cli open --connection prod /srv/app
268
+ cockpit-cli open @prod:/srv/app/current
269
+ ```
270
+
271
+ ## Datasource Profiles
272
+
273
+ Datasource profiles can be managed in the web admin or through
274
+ `config/datasources.yaml`. Start from
275
+ [datasources.example.yaml](/home/damien/Dokumente/cockpit/config/datasources.example.yaml).
276
+
277
+ Each profile captures:
278
+
279
+ - backend
280
+ - connection URL
281
+ - optional secret reference mappings for `${PLACEHOLDER}` interpolation
282
+ - optional driver
283
+ - risk level
284
+ - local or SSH target
285
+ - SSH tunneling for tunnel-safe remote SQL and NoSQL backends
286
+ - database name
287
+ - capabilities
288
+
289
+ Example secret-backed datasource snippet:
290
+
291
+ ```yaml
292
+ profiles:
293
+ - id: analytics-postgres
294
+ name: Analytics Postgres
295
+ backend: postgres
296
+ connection_url: postgresql+psycopg://${DB_USER}:${DB_PASS}@db.internal:5432/analytics
297
+ target_kind: ssh
298
+ target_ref: deploy@example.com
299
+ secret_refs:
300
+ DB_USER: env:ANALYTICS_DB_USER
301
+ DB_PASS:
302
+ provider: keyring
303
+ service: cockpit
304
+ username: analytics-password
305
+
306
+ Vault-backed references are also supported directly, for example:
307
+
308
+ ```yaml
309
+ profiles:
310
+ - id: app-postgres
311
+ name: App Postgres
312
+ backend: postgres
313
+ connection_url: postgresql://${DB_USER}:${DB_PASS}@db.internal:5432/app
314
+ secret_refs:
315
+ DB_USER: vault+dynamic://ops-vault/database/app#username
316
+ DB_PASS: vault+dynamic://ops-vault/database/app#password
317
+ ```
318
+ ```
319
+
320
+ ## Plugin System
321
+
322
+ Two plugin paths exist:
323
+
324
+ 1. Static config loading from `config/plugins.yaml`
325
+ 2. Managed installs through the web admin using pip-compatible requirements
326
+
327
+ Managed plugin installs support:
328
+
329
+ - package names
330
+ - pinned versions
331
+ - local paths
332
+ - git requirements
333
+ - trusted source prefix enforcement
334
+ - permission allowlists before runtime activation
335
+ - compatibility checks against the running cockpit version
336
+ - install-time and runtime integrity hashes
337
+
338
+ Plugins can contribute:
339
+
340
+ - panels
341
+ - commands
342
+ - datasource families
343
+ - admin pages
344
+
345
+ See [plugins.example.yaml](/home/damien/Dokumente/cockpit/config/plugins.example.yaml)
346
+ and [notes_plugin.py](/home/damien/Dokumente/cockpit/src/cockpit/plugins/notes_plugin.py).
347
+
348
+ ## Packaging
349
+
350
+ Release artifacts included in the repo:
351
+
352
+ - `sdist`
353
+ - `wheel`
354
+ - Arch/CachyOS `PKGBUILD` in [packaging/arch/PKGBUILD](/home/damien/Dokumente/cockpit/packaging/arch/PKGBUILD)
355
+ - tag-driven GitHub release workflow in [.github/workflows/release.yml](/home/damien/Dokumente/cockpit/.github/workflows/release.yml)
356
+ - release checksum manifest generation (`SHA256SUMS.txt`)
357
+ - CycloneDX SBOM generation for Python and frontend dependencies
358
+ - Sigstore keyless bundles for published release assets
359
+ - GitHub provenance attestation generation
360
+ - PyPI Trusted Publishing from the same canonical package artifacts
361
+
362
+ ## Development
363
+
364
+ Run tests:
365
+
366
+ ```bash
367
+ PYTHONPATH=src python -m unittest discover -s tests -p 'test_*.py' -v
368
+ ```
369
+
370
+ Run UI/E2E tests with the dependency environment:
371
+
372
+ ```bash
373
+ PYTHONPATH=src:/tmp/cockpit-deps python -m unittest \
374
+ tests.e2e.test_embedded_terminal_widget \
375
+ tests.e2e.test_app_resume_flow -v
376
+ ```
377
+
378
+ CI lives in [.github/workflows/ci.yml](/home/damien/Dokumente/cockpit/.github/workflows/ci.yml).
379
+ It compiles the code, runs the unittest suite, builds `sdist` plus `wheel`, and runs a live service matrix against PostgreSQL, MySQL, Redis, and MongoDB.
380
+ It also exercises a release dry-run path that builds the frontend bundle, assembles Python artifacts, and emits SBOM plus checksum metadata without publishing.
381
+ Tagged pushes additionally publish release artifacts through [.github/workflows/release.yml](/home/damien/Dokumente/cockpit/.github/workflows/release.yml).
382
+
383
+ ## Release Verification
384
+
385
+ Published GitHub releases include:
386
+
387
+ - `sdist`
388
+ - `wheel`
389
+ - `SHA256SUMS.txt`
390
+ - `release-manifest.json`
391
+ - Python and frontend CycloneDX SBOM files
392
+ - Sigstore bundle files for release assets
393
+ - GitHub build provenance bundle output
394
+
395
+ Verify checksums:
396
+
397
+ ```bash
398
+ sha256sum -c SHA256SUMS.txt
399
+ ```
400
+
401
+ Verify a signed artifact:
402
+
403
+ ```bash
404
+ python -m pip install sigstore
405
+ python -m sigstore verify github cockpit_cli-<version>-py3-none-any.whl \
406
+ --bundle cockpit_cli-<version>-py3-none-any.whl.sigstore.json \
407
+ --repository DamienDrash/cockpit_cli \
408
+ --ref refs/tags/v<version> \
409
+ --trigger push
410
+ ```
411
+
412
+ Verify provenance:
413
+
414
+ ```bash
415
+ gh attestation verify cockpit_cli-<version>-py3-none-any.whl \
416
+ --repo DamienDrash/cockpit_cli
417
+ ```
418
+
419
+ Maintainer release steps are documented in
420
+ [docs/releasing.md](/home/damien/Dokumente/cockpit/docs/releasing.md).
421
+
422
+ ## Operator Notes
423
+
424
+ Terminal selection flow:
425
+
426
+ - `Ctrl+Space` starts or clears a terminal line selection
427
+ - `Shift+Up` and `Shift+Down` expand the active selection
428
+ - `Ctrl+Shift+C` copies the selection
429
+ - `Ctrl+Alt+C` copies the full terminal buffer
430
+ - mouse wheel scrolls through scrollback
431
+ - clicking and dragging inside the embedded terminal expands the current line selection
432
+
433
+ Managed secrets:
434
+
435
+ - create them in the web admin under `Secrets`
436
+ - reference them inside datasource `secret_refs` as `stored:secret-name`
437
+ - Vault profiles support `token`, `AppRole`, and `OIDC/JWT` login modes
438
+ - Vault-managed entries support `kv` and dynamic secret references
439
+ - Vault transit operations are available from the web admin for encrypt/decrypt/sign/verify
440
+ - Vault sessions can use encrypted local cache where enabled
441
+ - compatibility `env`, `file`, and `keyring` providers remain supported for migration and bootstrap flows
442
+
443
+ Plugin trust policy:
444
+
445
+ - `config/plugins.yaml` can define `trusted_sources` and `allowed_permissions`
446
+ - plugins requesting permissions outside the configured allowlist stay installed but do not activate at runtime
447
+
448
+ Tunnel operations:
449
+
450
+ - remote datasource tunnels show reconnect counts and last-failure diagnostics in the web admin
451
+ - dead tunnels can be reconnected directly from the diagnostics page
452
+
453
+ Contribution and release notes:
454
+
455
+ - [CONTRIBUTING.md](/home/damien/Dokumente/cockpit/CONTRIBUTING.md)
456
+ - [CHANGELOG.md](/home/damien/Dokumente/cockpit/CHANGELOG.md)
457
+ - [SECURITY.md](/home/damien/Dokumente/cockpit/SECURITY.md)
458
+ - [docs/releasing.md](/home/damien/Dokumente/cockpit/docs/releasing.md)
459
+
460
+ ## Linux Scope
461
+
462
+ This project is currently Linux-first. The repository includes first-class
463
+ packaging for Arch-like systems, including CachyOS.
464
+
465
+ ## License
466
+
467
+ MIT. See [LICENSE](/home/damien/Dokumente/cockpit/LICENSE).