dirigent-server 0.10.2__tar.gz → 0.12.0__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 (145) hide show
  1. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/PKG-INFO +1 -1
  2. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/pyproject.toml +1 -1
  3. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/pyproject.toml.orig +1 -1
  4. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/connections.py +12 -5
  5. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/system.py +11 -11
  6. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/LICENSE +0 -0
  7. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/README.md +0 -0
  8. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/THIRD_PARTY_NOTICES.md +0 -0
  9. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/__init__.py +0 -0
  10. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/app.py +0 -0
  11. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/dependencies.py +0 -0
  12. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/errors.py +0 -0
  13. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/health.py +0 -0
  14. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/logging.py +0 -0
  15. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/pagination.py +0 -0
  16. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/py.typed +0 -0
  17. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/__init__.py +0 -0
  18. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/alerts.py +0 -0
  19. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/auth.py +0 -0
  20. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/blocks.py +0 -0
  21. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/hooks.py +0 -0
  22. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/pipelines.py +0 -0
  23. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/runs.py +0 -0
  24. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/schema.py +0 -0
  25. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/schemas.py +0 -0
  26. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/trigger_documents.py +0 -0
  27. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/triggers.py +0 -0
  28. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/users.py +0 -0
  29. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/routes/workers.py +0 -0
  30. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/security.py +0 -0
  31. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/.gitkeep +0 -0
  32. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/AdminOnly-DaihxNZC.js +0 -0
  33. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Alerting-BIhNmOxf.js +0 -0
  34. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Blocks-DAo8_PG9.js +0 -0
  35. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Breadcrumb-C8mERKVl.js +0 -0
  36. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/CodeEditor-B55U_qvj.css +0 -0
  37. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/CodeEditor-CeCQ17xS.js +0 -0
  38. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Connections-DsnMTiIk.js +0 -0
  39. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Dashboard-BqRQb7Y9.js +0 -0
  40. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Description-BP4Ga-RV.js +0 -0
  41. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Instant-C9TZFyg5.js +0 -0
  42. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/JsonBlock-CE3Z9rOk.js +0 -0
  43. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/KindChip-CuBFi3X9.js +0 -0
  44. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Markdown-CttJCcht.js +0 -0
  45. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Overview-D25nQ1mY.js +0 -0
  46. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/PageState-CvfT4nGl.js +0 -0
  47. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Panel-Cb5LtMYX.js +0 -0
  48. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Picker-BWWGdN86.js +0 -0
  49. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/PipelineEditor-CGYiQ_RS.js +0 -0
  50. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/PipelineGraph-VDlVb6oE.js +0 -0
  51. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/PipelinePreview-XjwlgU-a.js +0 -0
  52. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/PipelineTab-DkpDNs3l.js +0 -0
  53. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Refusal-JlhK6Mh_.js +0 -0
  54. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/RunDetail-DG3dbzT_.js +0 -0
  55. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/RunGraph-iHPOD_w8.js +0 -0
  56. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/SchemaForm-DDpXEjh5.js +0 -0
  57. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Schemas-B4DAs5a7.js +0 -0
  58. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Segmented-CR-Iqv1r.js +0 -0
  59. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/SettingsDialog-BhV4tAsN.js +0 -0
  60. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/StepPorts-CtcvnIvJ.js +0 -0
  61. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/TileCard-D1sr4_Pk.js +0 -0
  62. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Triggers-_p64iSNi.js +0 -0
  63. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Users-D0Ha-Dwb.js +0 -0
  64. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/Workers-B_pwpd3E.js +0 -0
  65. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/WorkersTable-C_fx8dTx.js +0 -0
  66. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/auth-tGoFbaSP.js +0 -0
  67. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/badge-DJ6MGkEI.js +0 -0
  68. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/blocks-DkD_WaQ6.js +0 -0
  69. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/chevron-down-CrkpqUMs.js +0 -0
  70. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/chunk-BV7QT456-Bfa1dvOx.js +0 -0
  71. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/connections-DORVdX7a.js +0 -0
  72. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/copy-r6NpGwbU.js +0 -0
  73. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/dist-BWSEJlfk.js +0 -0
  74. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/dropdown-menu-DTSgujsZ.js +0 -0
  75. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/editor.worker-BaAK1IVA.js +0 -0
  76. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/format-CR2ze2LO.js +0 -0
  77. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2 +0 -0
  78. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff +0 -0
  79. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff +0 -0
  80. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2 +0 -0
  81. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2 +0 -0
  82. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff +0 -0
  83. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff +0 -0
  84. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2 +0 -0
  85. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff +0 -0
  86. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2 +0 -0
  87. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff +0 -0
  88. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2 +0 -0
  89. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff +0 -0
  90. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2 +0 -0
  91. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff +0 -0
  92. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2 +0 -0
  93. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2 +0 -0
  94. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff +0 -0
  95. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2 +0 -0
  96. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff +0 -0
  97. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2 +0 -0
  98. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff +0 -0
  99. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2 +0 -0
  100. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff +0 -0
  101. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2 +0 -0
  102. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff +0 -0
  103. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff +0 -0
  104. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2 +0 -0
  105. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2 +0 -0
  106. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff +0 -0
  107. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2 +0 -0
  108. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2 +0 -0
  109. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2 +0 -0
  110. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2 +0 -0
  111. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2 +0 -0
  112. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2 +0 -0
  113. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/identity-BNZxCf_y.js +0 -0
  114. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/index-a02YzA4l.css +0 -0
  115. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/index-jhYU37cm.js +0 -0
  116. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/input-o9l61NKa.js +0 -0
  117. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/json.worker-C-kBQgxp.js +0 -0
  118. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/jsonMode-CrarWqyF.js +0 -0
  119. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/maximize-2-B2tdtoC6.js +0 -0
  120. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/paging-MGEIXfCZ.js +0 -0
  121. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/pipelines-C9zjqLmS.js +0 -0
  122. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/preferences-Cl9nlEI4.js +0 -0
  123. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/preload-helper-Czpn1I53.js +0 -0
  124. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/react-BatatxyT.js +0 -0
  125. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/resolveAriaLabelledBy-BSPxlOXj.js +0 -0
  126. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/rolldown-runtime-Dd_uD5pT.js +0 -0
  127. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/schema-form-FkbdR3oI.js +0 -0
  128. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/select-CKTm9cc4.js +0 -0
  129. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/shell-CC2rA5mh.js +0 -0
  130. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/status-Ctx8x8Mf.js +0 -0
  131. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/store-CVrCnru0.js +0 -0
  132. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/textarea-XMYmRm72.js +0 -0
  133. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/triggers-Bk6judIf.js +0 -0
  134. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/use-heartbeat-ByRKom_T.js +0 -0
  135. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/use-store-CgWwefFs.js +0 -0
  136. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/users-xhJLEYNg.js +0 -0
  137. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/utils-CRMSf51M.js +0 -0
  138. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/workers-D2C0PSb8.js +0 -0
  139. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/yaml-B8bSwfJE.js +0 -0
  140. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/assets/yaml.worker-D2mqiKN-.js +0 -0
  141. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/favicon-32.png +0 -0
  142. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/index.html +0 -0
  143. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/static/logo.png +0 -0
  144. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/transactions.py +0 -0
  145. {dirigent_server-0.10.2 → dirigent_server-0.12.0}/src/dirigent_server/ui.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirigent-server
3
- Version: 0.10.2
3
+ Version: 0.12.0
4
4
  Summary: Dirigent FastAPI server: the REST API, its authentication, and the health probes.
5
5
  License-Expression: LicenseRef-Proprietary
6
6
  License-File: LICENSE
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dirigent-server"
3
- version = "0.10.2"
3
+ version = "0.12.0"
4
4
  description = "Dirigent FastAPI server: the REST API, its authentication, and the health probes."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "dirigent-server"
3
- version = "0.10.2"
3
+ version = "0.12.0"
4
4
  description = "Dirigent FastAPI server: the REST API, its authentication, and the health probes."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.13"
@@ -267,13 +267,20 @@ async def check_connection(
267
267
  services: ServicesDep,
268
268
  principal: AdminDep,
269
269
  ) -> HealthReport:
270
- """Open the credential and ask its kind whether the external system answers."""
270
+ """Open the credential and ask its kind whether the external system answers.
271
+
272
+ The probe runs between two transactions, never inside one: a transaction holds the write
273
+ lock from the moment it opens, and a probe can last a connect timeout. The row is written
274
+ afterwards with one statement, so a connection deleted meanwhile is simply not written.
275
+ """
271
276
  row = await find(session, code)
277
+ await session.commit()
272
278
  report = await check(row, services)
273
- row.last_check_at = utcnow()
274
- row.last_check_healthy = report.healthy
275
- row.last_check_detail = report.detail
276
- await session.flush()
279
+ await session.execute(
280
+ sa.update(Connection)
281
+ .where(Connection.code == code)
282
+ .values(last_check_at=utcnow(), last_check_healthy=report.healthy, last_check_detail=report.detail)
283
+ )
277
284
  return report
278
285
 
279
286
 
@@ -1,6 +1,4 @@
1
- """What this instance is, and whether everything it depends on is answering."""
2
-
3
- import asyncio
1
+ """What this instance is, and what each connection said when it was last checked."""
4
2
 
5
3
  import sqlalchemy as sa
6
4
  from fastapi import APIRouter
@@ -10,7 +8,6 @@ from dirigent_core import __version__
10
8
  from dirigent_core.models import Connection, Worker, utcnow
11
9
  from dirigent_core.registry import STALE_AFTER
12
10
  from dirigent_server.dependencies import ServicesDep, SessionDep, SettingsDep
13
- from dirigent_server.routes.connections import check
14
11
  from dirigent_server.security import PrincipalDep
15
12
  from dirigent_server.transactions import Transactional
16
13
 
@@ -20,7 +17,7 @@ router = APIRouter(route_class=Transactional, tags=["system"])
20
17
  @router.get(
21
18
  "/system/info",
22
19
  operation_id="getSystemInfo",
23
- summary="Describe the instance and check every connection",
20
+ summary="Describe the instance and repeat every connection's last check",
24
21
  response_model=SystemInfo,
25
22
  )
26
23
  async def system_info(
@@ -29,10 +26,13 @@ async def system_info(
29
26
  settings: SettingsDep,
30
27
  principal: PrincipalDep,
31
28
  ) -> SystemInfo:
32
- """Describe the instance, and fan out over every connection's own health check."""
29
+ """Describe the instance from what it holds, without opening any connection.
30
+
31
+ A connection's health is what its last check wrote on the row: this read is made on every
32
+ page load, and must not run anyone's connect timeout.
33
+ """
33
34
  catalog = services.host.catalog()
34
35
  rows = list((await session.execute(sa.select(Connection).order_by(Connection.code))).scalars())
35
- reports = await asyncio.gather(*(check(row, services) for row in rows))
36
36
  live = await session.execute(
37
37
  sa.select(sa.func.count()).select_from(Worker).where(Worker.last_seen_at >= utcnow() - STALE_AFTER)
38
38
  )
@@ -54,10 +54,10 @@ async def system_info(
54
54
  code=row.code,
55
55
  name=row.name,
56
56
  kind=row.kind,
57
- connected=report.healthy,
58
- detail=report.detail,
59
- version=report.version,
57
+ last_check_at=row.last_check_at,
58
+ last_check_healthy=row.last_check_healthy,
59
+ last_check_detail=row.last_check_detail,
60
60
  )
61
- for row, report in zip(rows, reports, strict=True)
61
+ for row in rows
62
62
  ],
63
63
  )