abstra 3.24.0__py3-none-any.whl → 3.24.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (235) hide show
  1. abstra/cli.py +8 -2
  2. {abstra-3.24.0.dist-info → abstra-3.24.1.dist-info}/METADATA +1 -2
  3. {abstra-3.24.0.dist-info → abstra-3.24.1.dist-info}/RECORD +178 -178
  4. abstra_internals/cloud_api/__init__.py +17 -8
  5. abstra_internals/contracts_generated.py +463 -453
  6. abstra_internals/controllers/ai.py +89 -1
  7. abstra_internals/controllers/git.py +2 -0
  8. abstra_internals/interface/cli/editor.py +2 -2
  9. abstra_internals/repositories/git/__init__.py +1 -14
  10. abstra_internals/repositories/git/git_test.py +4 -1214
  11. abstra_internals/repositories/git/native.py +2 -2
  12. abstra_internals/repositories/git/types.py +6 -0
  13. abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.aefce2d3.js +2 -0
  14. abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.28bc9fc9.js +2 -0
  15. abstra_statics/dist/assets/ApiKeys.3c1e70dc.js +2 -0
  16. abstra_statics/dist/assets/App.9d8bd2aa.js +2 -0
  17. abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.a64c7cee.js +2 -0
  18. abstra_statics/dist/assets/BaseLayout.72a6c8f2.js +2 -0
  19. abstra_statics/dist/assets/{Billing.60adc9fa.js → Billing.6b07f282.js} +2 -2
  20. abstra_statics/dist/assets/{Breadcrumb.26dec5f7.js → Breadcrumb.5c786c09.js} +2 -2
  21. abstra_statics/dist/assets/{Builds.f86210bc.js → Builds.d8c5c61b.js} +2 -2
  22. abstra_statics/dist/assets/{Card.6cfffb80.js → Card.fc77085c.js} +2 -2
  23. abstra_statics/dist/assets/{CircularLoading.a13d6a76.js → CircularLoading.998b223a.js} +2 -2
  24. abstra_statics/dist/assets/{CloseCircleOutlined.30bc25a8.js → CloseCircleOutlined.9ff269cc.js} +2 -2
  25. abstra_statics/dist/assets/{ConnectorsView.eb4c769f.js → ConnectorsView.e670738b.js} +2 -2
  26. abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.3ca66327.js +2 -0
  27. abstra_statics/dist/assets/ContentLayout.0db8d7fb.js +2 -0
  28. abstra_statics/dist/assets/{CrudView.c0824225.js → CrudView.cc6aeaf0.js} +2 -2
  29. abstra_statics/dist/assets/DocsButton.vue_vue_type_script_setup_true_lang.689d8ce7.js +2 -0
  30. abstra_statics/dist/assets/{EditorLogin.46db248f.js → EditorLogin.691452b4.js} +2 -2
  31. abstra_statics/dist/assets/{EditorsView.e72621fa.js → EditorsView.fcdf0186.js} +2 -2
  32. abstra_statics/dist/assets/EnvVars.5519b4ce.js +2 -0
  33. abstra_statics/dist/assets/{Error.864f05b3.js → Error.11fd1f21.js} +2 -2
  34. abstra_statics/dist/assets/ExclamationCircleOutlined.d0aa47da.js +2 -0
  35. abstra_statics/dist/assets/Files.6ea18d46.js +2 -0
  36. abstra_statics/dist/assets/{Form.556d0de2.js → Form.09de384c.js} +2 -2
  37. abstra_statics/dist/assets/{FormRunner.7f56a8c6.js → FormRunner.15be6fa0.js} +2 -2
  38. abstra_statics/dist/assets/Home.782c5702.js +2 -0
  39. abstra_statics/dist/assets/Home.7c495aa9.js +2 -0
  40. abstra_statics/dist/assets/{Live.50bacfea.js → Live.48c10605.js} +2 -2
  41. abstra_statics/dist/assets/LoadingContainer.82ac3d44.js +2 -0
  42. abstra_statics/dist/assets/LoadingOutlined.66639b08.js +2 -0
  43. abstra_statics/dist/assets/Login.4a05f5c5.js +2 -0
  44. abstra_statics/dist/assets/{Login.536a3067.js → Login.4e852955.js} +2 -2
  45. abstra_statics/dist/assets/{Login.vue_vue_type_script_setup_true_lang.1c3f108d.js → Login.vue_vue_type_script_setup_true_lang.5161f328.js} +2 -2
  46. abstra_statics/dist/assets/Logo.65e0b37c.js +2 -0
  47. abstra_statics/dist/assets/{Logs.f6135084.js → Logs.7d1acf32.js} +2 -2
  48. abstra_statics/dist/assets/{LogsController.6b666816.js → LogsController.0eb2eb30.js} +2 -2
  49. abstra_statics/dist/assets/Main.0313f4fc.js +2 -0
  50. abstra_statics/dist/assets/{MockForm.deda9355.js → MockForm.0b819a52.js} +2 -2
  51. abstra_statics/dist/assets/Navbar.ef64aa09.js +2 -0
  52. abstra_statics/dist/assets/{NewEditor.5f84de86.css → NewEditor.b9c410fe.css} +1 -1
  53. abstra_statics/dist/assets/NewEditor.c928dbe9.js +8 -0
  54. abstra_statics/dist/assets/OidcLoginCallback.42a7c4f9.js +2 -0
  55. abstra_statics/dist/assets/OidcLogoutCallback.35931a68.js +2 -0
  56. abstra_statics/dist/assets/OmniChat.73d9f6bb.js +6 -0
  57. abstra_statics/dist/assets/OmniChat.a21fec40.css +1 -0
  58. abstra_statics/dist/assets/{OnboardingView.9413ee50.js → OnboardingView.25042384.js} +2 -2
  59. abstra_statics/dist/assets/{Organization.7203cc0b.js → Organization.66f64939.js} +2 -2
  60. abstra_statics/dist/assets/Organizations.47868beb.js +2 -0
  61. abstra_statics/dist/assets/{PhArrowCounterClockwise.vue.8090d021.js → PhArrowCounterClockwise.vue.78877a50.js} +2 -2
  62. abstra_statics/dist/assets/{PhArrowSquareOut.vue.26582195.js → PhArrowSquareOut.vue.2ddfc219.js} +2 -2
  63. abstra_statics/dist/assets/{PhBookBookmark.vue.5b7ab079.js → PhBookBookmark.vue.41108214.js} +2 -2
  64. abstra_statics/dist/assets/{PhChats.vue.b5df7174.js → PhChats.vue.71e5cb89.js} +2 -2
  65. abstra_statics/dist/assets/{PhClockCounterClockwise.vue.812311ad.js → PhClockCounterClockwise.vue.854c3cb5.js} +2 -2
  66. abstra_statics/dist/assets/{PhCopy.vue.59b0f1b4.js → PhCopy.vue.d116ddfb.js} +2 -2
  67. abstra_statics/dist/assets/PhCopySimple.vue.5d0f839d.js +2 -0
  68. abstra_statics/dist/assets/{PhCube.vue.63ae7d32.js → PhCube.vue.abf4a034.js} +2 -2
  69. abstra_statics/dist/assets/{PhDatabase.vue.edfcb96b.js → PhDatabase.vue.a94d95f6.js} +2 -2
  70. abstra_statics/dist/assets/{PhDotsThreeVertical.vue.ab4580a5.js → PhDotsThreeVertical.vue.5e8ae2a9.js} +2 -2
  71. abstra_statics/dist/assets/PhDownloadSimple.vue.e88f64f1.js +2 -0
  72. abstra_statics/dist/assets/{PhFolderPlus.vue.05ba4a5c.js → PhFolderPlus.vue.21d377a3.js} +2 -2
  73. abstra_statics/dist/assets/{PhGear.vue.0e4a6135.js → PhGear.vue.363dd83c.js} +2 -2
  74. abstra_statics/dist/assets/{PhKey.vue.b2c184d1.js → PhKey.vue.23f3a465.js} +2 -2
  75. abstra_statics/dist/assets/{PhPencil.vue.2f2fe576.js → PhPencil.vue.feb383e2.js} +2 -2
  76. abstra_statics/dist/assets/{PhPencilSimple.vue.cc8620ae.js → PhPencilSimple.vue.ec0eebb4.js} +2 -2
  77. abstra_statics/dist/assets/{PhRocket.vue.e397203c.js → PhRocket.vue.261a42b2.js} +2 -2
  78. abstra_statics/dist/assets/{PhSignOut.vue.a271f14b.js → PhSignOut.vue.d1d6498f.js} +2 -2
  79. abstra_statics/dist/assets/{PhSparkle.vue.726defa2.js → PhSparkle.vue.b6712d34.js} +2 -2
  80. abstra_statics/dist/assets/{PhUserList.vue.6a29f16d.js → PhUserList.vue.e0b8c21b.js} +2 -2
  81. abstra_statics/dist/assets/{PhUsersThree.vue.275d13ab.js → PhUsersThree.vue.8889f957.js} +2 -2
  82. abstra_statics/dist/assets/{PhWarningCircle.vue.3b1aca1b.js → PhWarningCircle.vue.2087be7d.js} +2 -2
  83. abstra_statics/dist/assets/{PhWebhooksLogo.vue.5e772aac.js → PhWebhooksLogo.vue.d164db1e.js} +2 -2
  84. abstra_statics/dist/assets/{PlayerConfigProvider.e90a2b41.js → PlayerConfigProvider.28e29025.js} +2 -2
  85. abstra_statics/dist/assets/{PlayerNavbar.11ec1844.js → PlayerNavbar.aaad1dfd.js} +2 -2
  86. abstra_statics/dist/assets/Project.2de506d7.js +2 -0
  87. abstra_statics/dist/assets/ProjectLogin.22c8b093.js +2 -0
  88. abstra_statics/dist/assets/{ProjectSettings.52c19693.js → ProjectSettings.d065c292.js} +2 -2
  89. abstra_statics/dist/assets/{ProjectsView.22fa7a8e.js → ProjectsView.cbd118ac.js} +2 -2
  90. abstra_statics/dist/assets/{SaveButton.719393d2.js → SaveButton.428227de.js} +2 -2
  91. abstra_statics/dist/assets/ScrollArea.vue_vue_type_script_setup_true_lang.6d724b05.js +2 -0
  92. abstra_statics/dist/assets/{Sidebar.5cb8e04e.js → Sidebar.41173d8e.js} +2 -2
  93. abstra_statics/dist/assets/{Sql.23d80bad.js → Sql.c070dd2c.js} +4 -4
  94. abstra_statics/dist/assets/Steps.dd51a108.js +2 -0
  95. abstra_statics/dist/assets/TableCard.c9a1cf41.js +2 -0
  96. abstra_statics/dist/assets/TableEditor.1bc47a95.js +2 -0
  97. abstra_statics/dist/assets/{Tables.44d953f7.js → Tables.eff119eb.js} +2 -2
  98. abstra_statics/dist/assets/{TablesDiagram.8e47383c.js → TablesDiagram.d633acaf.js} +3 -3
  99. abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.cf7e34c5.js +2 -0
  100. abstra_statics/dist/assets/{Tasks.09551b19.js → Tasks.c311b05f.js} +2 -2
  101. abstra_statics/dist/assets/{UploadOutlined.eab75eb0.js → UploadOutlined.9aa845de.js} +2 -2
  102. abstra_statics/dist/assets/{View.5fd7ddf0.js → View.dd7ba25a.js} +2 -2
  103. abstra_statics/dist/assets/{View.vue_vue_type_script_setup_true_lang.a904f400.js → View.vue_vue_type_script_setup_true_lang.e6563207.js} +2 -2
  104. abstra_statics/dist/assets/{Watermark.ab3d818f.js → Watermark.9c9358e3.js} +2 -2
  105. abstra_statics/dist/assets/{WebEditor.d6ec6392.js → WebEditor.83f2a960.js} +2 -2
  106. abstra_statics/dist/assets/WidgetPreview.7c6a231c.js +2 -0
  107. abstra_statics/dist/assets/ant-design.42419021.js +2 -0
  108. abstra_statics/dist/assets/{apiKey.72f497ca.js → apiKey.403049eb.js} +2 -2
  109. abstra_statics/dist/assets/{asyncComputed.cf5282fc.js → asyncComputed.47aec2b5.js} +2 -2
  110. abstra_statics/dist/assets/{build.df2d55cc.js → build.45b511b6.js} +2 -2
  111. abstra_statics/dist/assets/colorHelpers.50ced1e9.js +2 -0
  112. abstra_statics/dist/assets/{console.2bf7f04d.js → console.f0f09e6f.js} +2 -2
  113. abstra_statics/dist/assets/constants.d569f33d.js +2 -0
  114. abstra_statics/dist/assets/{contracts.generated.590b1102.js → contracts.generated.aefe8d0a.js} +2 -2
  115. abstra_statics/dist/assets/{cssMode.7133c7cb.js → cssMode.23271d4a.js} +2 -2
  116. abstra_statics/dist/assets/datetime.82608dfb.js +2 -0
  117. abstra_statics/dist/assets/dayjs.7f71c60a.js +2 -0
  118. abstra_statics/dist/assets/editor.02184ced.js +2 -0
  119. abstra_statics/dist/assets/editor.main.0f931e87.js +2 -0
  120. abstra_statics/dist/assets/fetch.1b3d01a0.js +2 -0
  121. abstra_statics/dist/assets/files.8b58ee7e.js +2 -0
  122. abstra_statics/dist/assets/{folder.d8e23009.js → folder.13d3acac.js} +2 -2
  123. abstra_statics/dist/assets/{freemarker2.6698d1ea.js → freemarker2.f79b510b.js} +2 -2
  124. abstra_statics/dist/assets/{handlebars.a6c42dc0.js → handlebars.07d5febe.js} +2 -2
  125. abstra_statics/dist/assets/{html.493a5410.js → html.7d6a59b4.js} +2 -2
  126. abstra_statics/dist/assets/{htmlMode.a28b2fca.js → htmlMode.7779ff94.js} +2 -2
  127. abstra_statics/dist/assets/{index.5d6b1e62.js → index.482df04a.js} +2 -2
  128. abstra_statics/dist/assets/{index.79ce3bf1.js → index.581e2edd.js} +2 -2
  129. abstra_statics/dist/assets/{index.fb182bd1.js → index.966ac1b9.js} +2 -2
  130. abstra_statics/dist/assets/{index.4176fe88.js → index.c7a996a6.js} +2 -2
  131. abstra_statics/dist/assets/{index.c34a405a.js → index.c8a56795.js} +2 -2
  132. abstra_statics/dist/assets/{index.fb49354b.js → index.d31da2c3.js} +2 -2
  133. abstra_statics/dist/assets/{index.2af3391c.js → index.d53182ed.js} +2 -2
  134. abstra_statics/dist/assets/{index.4d20c159.js → index.e71a5f84.js} +2 -2
  135. abstra_statics/dist/assets/{javascript.3a36cf17.js → javascript.4c528c2c.js} +3 -3
  136. abstra_statics/dist/assets/{jsonMode.bead6ac8.js → jsonMode.d6441e9d.js} +2 -2
  137. abstra_statics/dist/assets/{jwt-decode.esm.d4517a10.js → jwt-decode.esm.54a1ea22.js} +8 -8
  138. abstra_statics/dist/assets/{linters.2f3141cb.js → linters.a0f2aa84.js} +2 -2
  139. abstra_statics/dist/assets/{liquid.0c337fae.js → liquid.0c441ad2.js} +3 -3
  140. abstra_statics/dist/assets/member.2260c37e.js +2 -0
  141. abstra_statics/dist/assets/{metadata.c3aed6e1.js → metadata.0098e20c.js} +2 -2
  142. abstra_statics/dist/assets/omniChatStore.dd7a1c46.js +8 -0
  143. abstra_statics/dist/assets/{organization.928c9bef.js → organization.668d1b58.js} +2 -2
  144. abstra_statics/dist/assets/player.4ab4aed5.js +2 -0
  145. abstra_statics/dist/assets/{plotly.min.7225d3a0.js → plotly.min.2a87d7e2.js} +2 -2
  146. abstra_statics/dist/assets/polling.b5a32c22.js +2 -0
  147. abstra_statics/dist/assets/{project.619b7244.js → project.1b8374f4.js} +2 -2
  148. abstra_statics/dist/assets/{python.05764499.js → python.7ac27a56.js} +3 -3
  149. abstra_statics/dist/assets/{razor.81a45581.js → razor.860a0279.js} +3 -3
  150. abstra_statics/dist/assets/record.e83a2eb2.js +2 -0
  151. abstra_statics/dist/assets/{redirect.f028a879.js → redirect.586749f4.js} +2 -2
  152. abstra_statics/dist/assets/repository.3a331f0f.js +2 -0
  153. abstra_statics/dist/assets/repository.66c7567c.js +2 -0
  154. abstra_statics/dist/assets/router.06ee2b9d.js +2 -0
  155. abstra_statics/dist/assets/{router.424f7da9.js → router.4dfadf5d.js} +3 -3
  156. abstra_statics/dist/assets/string.61e11a30.js +2 -0
  157. abstra_statics/dist/assets/{tables.1f68ec62.js → tables.1bcb1140.js} +2 -2
  158. abstra_statics/dist/assets/{tasksController.371896de.js → tasksController.f3adf725.js} +2 -2
  159. abstra_statics/dist/assets/{toggleHighContrast.0d0e5662.js → toggleHighContrast.9535bf54.js} +7 -7
  160. abstra_statics/dist/assets/{tsMode.6eadbf06.js → tsMode.c0f9fe1a.js} +2 -2
  161. abstra_statics/dist/assets/{typescript.1670e287.js → typescript.310eae6d.js} +3 -3
  162. abstra_statics/dist/assets/url.f5664225.js +2 -0
  163. abstra_statics/dist/assets/{useCodebaseEvents.53dec1f2.js → useCodebaseEvents.276cc8f0.js} +2 -2
  164. abstra_statics/dist/assets/{useTables.4f034cf8.js → useTables.18fc3efd.js} +2 -2
  165. abstra_statics/dist/assets/userStore.6ab1e5ac.js +2 -0
  166. abstra_statics/dist/assets/uuid.5b8ba8af.js +2 -0
  167. abstra_statics/dist/assets/{vue-flow-background.818c7852.js → vue-flow-background.af096866.js} +2 -2
  168. abstra_statics/dist/assets/{vue-flow-core.1180ec83.js → vue-flow-core.6cb99d32.js} +3 -3
  169. abstra_statics/dist/assets/{vue-quill.esm-bundler.c4f04985.js → vue-quill.esm-bundler.e3d34d0e.js} +2 -2
  170. abstra_statics/dist/assets/{workspaceStore.6244d03d.js → workspaceStore.fac1e9a9.js} +2 -2
  171. abstra_statics/dist/assets/{xml.f2867af8.js → xml.04864db4.js} +3 -3
  172. abstra_statics/dist/assets/{yaml.5427bb1b.js → yaml.f30375fe.js} +3 -3
  173. abstra_statics/dist/console.html +14 -14
  174. abstra_statics/dist/editor.html +13 -13
  175. abstra_statics/dist/player.html +9 -9
  176. abstra_internals/repositories/git/dulwich.py +0 -1353
  177. abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.eb8ccb64.js +0 -2
  178. abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.9f98292e.js +0 -2
  179. abstra_statics/dist/assets/ApiKeys.e975c4f3.js +0 -2
  180. abstra_statics/dist/assets/App.f62faff6.js +0 -2
  181. abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.5aa45ac1.js +0 -2
  182. abstra_statics/dist/assets/BaseLayout.1ec2c96d.js +0 -2
  183. abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.8d2e4672.js +0 -2
  184. abstra_statics/dist/assets/ContentLayout.d03fee5b.js +0 -2
  185. abstra_statics/dist/assets/DocsButton.vue_vue_type_script_setup_true_lang.3668aee4.js +0 -2
  186. abstra_statics/dist/assets/EnvVars.f9f9d61f.js +0 -2
  187. abstra_statics/dist/assets/ExclamationCircleOutlined.a489b996.js +0 -2
  188. abstra_statics/dist/assets/Files.afe615e1.js +0 -2
  189. abstra_statics/dist/assets/Home.287d17f8.js +0 -2
  190. abstra_statics/dist/assets/Home.5b7e9c23.js +0 -2
  191. abstra_statics/dist/assets/LoadingContainer.ebace8de.js +0 -2
  192. abstra_statics/dist/assets/LoadingOutlined.9e949112.js +0 -2
  193. abstra_statics/dist/assets/Login.bec408c9.js +0 -2
  194. abstra_statics/dist/assets/Logo.82d6ab70.js +0 -2
  195. abstra_statics/dist/assets/Main.77b115f8.js +0 -2
  196. abstra_statics/dist/assets/Navbar.4a6f2b09.js +0 -2
  197. abstra_statics/dist/assets/NewEditor.e558e47d.js +0 -8
  198. abstra_statics/dist/assets/OidcLoginCallback.7f514b45.js +0 -2
  199. abstra_statics/dist/assets/OidcLogoutCallback.038813a1.js +0 -2
  200. abstra_statics/dist/assets/OmniChat.05ba8d8a.css +0 -1
  201. abstra_statics/dist/assets/OmniChat.60d98deb.js +0 -6
  202. abstra_statics/dist/assets/Organizations.91220ca0.js +0 -2
  203. abstra_statics/dist/assets/PhCopySimple.vue.d41d9160.js +0 -2
  204. abstra_statics/dist/assets/PhDownloadSimple.vue.c2eaaad1.js +0 -2
  205. abstra_statics/dist/assets/Project.c16740fb.js +0 -2
  206. abstra_statics/dist/assets/ProjectLogin.e7a6f444.js +0 -2
  207. abstra_statics/dist/assets/ScrollArea.vue_vue_type_script_setup_true_lang.d4028954.js +0 -2
  208. abstra_statics/dist/assets/Steps.8e5d201a.js +0 -2
  209. abstra_statics/dist/assets/TableCard.59f95f8f.js +0 -2
  210. abstra_statics/dist/assets/TableEditor.8539f984.js +0 -2
  211. abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.6866fb32.js +0 -2
  212. abstra_statics/dist/assets/WidgetPreview.86b31dec.js +0 -2
  213. abstra_statics/dist/assets/ant-design.a865486e.js +0 -2
  214. abstra_statics/dist/assets/colorHelpers.37d9932b.js +0 -2
  215. abstra_statics/dist/assets/constants.7d38ec8b.js +0 -2
  216. abstra_statics/dist/assets/datetime.8de2ff28.js +0 -2
  217. abstra_statics/dist/assets/dayjs.f18bbbca.js +0 -2
  218. abstra_statics/dist/assets/editor.3a4714e3.js +0 -2
  219. abstra_statics/dist/assets/editor.main.9c635b9a.js +0 -2
  220. abstra_statics/dist/assets/fetch.89fd5b7b.js +0 -2
  221. abstra_statics/dist/assets/member.48d6f2cd.js +0 -2
  222. abstra_statics/dist/assets/omniChatStore.c53bcca2.js +0 -8
  223. abstra_statics/dist/assets/player.d3aeafc5.js +0 -2
  224. abstra_statics/dist/assets/polling.82ee6b45.js +0 -2
  225. abstra_statics/dist/assets/record.7f43486c.js +0 -2
  226. abstra_statics/dist/assets/repository.9534db4b.js +0 -2
  227. abstra_statics/dist/assets/repository.c15239ce.js +0 -2
  228. abstra_statics/dist/assets/router.262190ec.js +0 -2
  229. abstra_statics/dist/assets/string.0acf5572.js +0 -2
  230. abstra_statics/dist/assets/url.e8732f77.js +0 -2
  231. abstra_statics/dist/assets/userStore.31024da3.js +0 -2
  232. abstra_statics/dist/assets/uuid.bde15ce7.js +0 -2
  233. {abstra-3.24.0.dist-info → abstra-3.24.1.dist-info}/WHEEL +0 -0
  234. {abstra-3.24.0.dist-info → abstra-3.24.1.dist-info}/entry_points.txt +0 -0
  235. {abstra-3.24.0.dist-info → abstra-3.24.1.dist-info}/top_level.txt +0 -0
@@ -1,10 +1,17 @@
1
+ import base64
2
+ import io
1
3
  from dataclasses import dataclass
2
4
  from typing import Any, Dict, List
3
5
 
6
+ import pypdfium2 as pdfium
7
+
4
8
  from abstra_internals.cloud_api import get_session_path, get_tunnel_secret_key
5
9
  from abstra_internals.contracts_generated import (
6
10
  AbstraLibApiAiStreamRequest,
7
11
  CloudApiCliAiV2StreamRequest,
12
+ CloudApiCliAiV2StreamRequestContentItem,
13
+ CloudApiCliAiV2StreamRequestContentItemAssistantFileInput,
14
+ CloudApiCliAiV2StreamRequestContentItemAssistantTextInput,
8
15
  )
9
16
  from abstra_internals.controllers.main import MainController
10
17
  from abstra_internals.credentials import resolve_headers
@@ -71,15 +78,96 @@ class AiController:
71
78
  self.controller = controller
72
79
  self.repos = controller.repositories
73
80
 
81
+ def _extract_pdf_images(self, pdf_bytes: bytes) -> List[bytes]:
82
+ images = []
83
+ pdf_io = io.BytesIO(pdf_bytes)
84
+ for page in pdfium.PdfDocument(pdf_io):
85
+ bitmap = page.render(
86
+ scale=4, # 288 dpi
87
+ rotation=0,
88
+ )
89
+ pil_image = bitmap.to_pil()
90
+ image_io = io.BytesIO()
91
+ pil_image.save(image_io, format="png")
92
+ image_io.seek(0)
93
+ images.append(image_io.read())
94
+ return images
95
+
96
+ def _process_pdf_content(
97
+ self, pdf_file: CloudApiCliAiV2StreamRequestContentItemAssistantFileInput
98
+ ) -> List[CloudApiCliAiV2StreamRequestContentItem]:
99
+ processed_items = []
100
+ try:
101
+ pdf_bytes = base64.b64decode(pdf_file.file_content)
102
+ images = self._extract_pdf_images(pdf_bytes)
103
+
104
+ processed_items.append(
105
+ CloudApiCliAiV2StreamRequestContentItemAssistantTextInput(
106
+ type="text",
107
+ text=f"[PDF Document: {pdf_file.file_name} - {len(images)} page(s)]",
108
+ )
109
+ )
110
+
111
+ for idx, image_bytes in enumerate(images, 1):
112
+ image_base64 = base64.b64encode(image_bytes).decode("utf-8")
113
+ processed_items.append(
114
+ CloudApiCliAiV2StreamRequestContentItemAssistantFileInput(
115
+ type="file",
116
+ file_name=f"{pdf_file.file_name}_page_{idx}.png",
117
+ file_content=image_base64,
118
+ )
119
+ )
120
+ except Exception as e:
121
+ print(f"Error extracting PDF images: {e}")
122
+ processed_items.append(
123
+ CloudApiCliAiV2StreamRequestContentItemAssistantTextInput(
124
+ type="text",
125
+ text=f"[PDF Document: {pdf_file.file_name}]\nNote: Could not extract images from this PDF.",
126
+ )
127
+ )
128
+ return processed_items
129
+
130
+ def _process_content(
131
+ self, content: List[CloudApiCliAiV2StreamRequestContentItem]
132
+ ) -> List[CloudApiCliAiV2StreamRequestContentItem]:
133
+ processed_content = []
134
+
135
+ for item in content:
136
+ if isinstance(
137
+ item, CloudApiCliAiV2StreamRequestContentItemAssistantTextInput
138
+ ):
139
+ processed_content.append(item)
140
+ continue
141
+
142
+ if not item.file_name.lower().endswith(".pdf"):
143
+ processed_content.append(item)
144
+ continue
145
+
146
+ try:
147
+ processed_pdf_items = self._process_pdf_content(item)
148
+ processed_content.extend(processed_pdf_items)
149
+ except Exception as e:
150
+ print(f"Error extracting PDF images: {e}")
151
+ processed_content.append(
152
+ CloudApiCliAiV2StreamRequestContentItemAssistantTextInput(
153
+ type="text",
154
+ text=f"[PDF Document: {item.file_name}]\nNote: Could not extract images from this PDF.",
155
+ )
156
+ )
157
+
158
+ return processed_content
159
+
74
160
  def send_ai_message(
75
161
  self,
76
162
  body: AbstraLibApiAiStreamRequest,
77
163
  ):
78
164
  try:
165
+ processed_content = self._process_content(body.content)
166
+
79
167
  yield from self.repos.ai.get_ai_messages(
80
168
  CloudApiCliAiV2StreamRequest(
81
169
  conversation_id=body.conversation_id,
82
- content=body.content,
170
+ content=processed_content,
83
171
  context={
84
172
  **body.context,
85
173
  "libVersion": str(get_local_package_version()),
@@ -165,6 +165,8 @@ class GitController:
165
165
 
166
166
  status_response = GitStatusResponse(
167
167
  available=status.available,
168
+ git_installed=status.git_installed,
169
+ is_monorepo=status.is_monorepo,
168
170
  branch=status.branch,
169
171
  branches=status.branches,
170
172
  last_commit=status.last_commit,
@@ -80,7 +80,7 @@ def ensure_certificates():
80
80
  print(f"Failed to restore certificates: {update_e}")
81
81
 
82
82
 
83
- def editor(headless: bool):
83
+ def editor(headless: bool, verbose: bool = False):
84
84
  ensure_certificates()
85
85
 
86
86
  load_dotenv(Settings.root_path / ".env")
@@ -119,6 +119,6 @@ def editor(headless: bool):
119
119
  if not headless:
120
120
  background_open_editor()
121
121
 
122
- connect_tunnel()
122
+ connect_tunnel(verbose=verbose)
123
123
 
124
124
  server.serve_forever()
@@ -1,8 +1,3 @@
1
- import shutil
2
-
3
- from abstra_internals.environment import FORCE_GIT_CLIENT
4
-
5
- from .dulwich import DulwichGitRepository
6
1
  from .native import NativeGitRepository
7
2
  from .types import (
8
3
  AheadBehindInfo,
@@ -15,14 +10,7 @@ from .types import (
15
10
 
16
11
 
17
12
  def create_git_repository(working_directory) -> GitRepositoryInterface:
18
- if FORCE_GIT_CLIENT == "native":
19
- return NativeGitRepository(working_directory)
20
- elif FORCE_GIT_CLIENT == "dulwich":
21
- return DulwichGitRepository(working_directory)
22
- elif shutil.which("git") is not None:
23
- return NativeGitRepository(working_directory)
24
- else:
25
- return DulwichGitRepository(working_directory)
13
+ return NativeGitRepository(working_directory)
26
14
 
27
15
 
28
16
  __all__ = [
@@ -32,7 +20,6 @@ __all__ = [
32
20
  "GitStatusResponse",
33
21
  "GitRepositoryInterface",
34
22
  "NativeGitRepository",
35
- "DulwichGitRepository",
36
23
  "create_git_repository",
37
24
  "AheadBehindInfo",
38
25
  ]