abstra 3.23.11__py3-none-any.whl → 3.24.0__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 (268) hide show
  1. abstra/ai.py +2 -0
  2. abstra/cli.py +8 -3
  3. {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/METADATA +2 -1
  4. {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/RECORD +201 -191
  5. abstra_internals/consts/filepaths.py +1 -1
  6. abstra_internals/contracts_generated.py +5382 -5233
  7. abstra_internals/controllers/ai.py +23 -15
  8. abstra_internals/controllers/git.py +305 -0
  9. abstra_internals/controllers/main.py +10 -6
  10. abstra_internals/entities/forms/template.py +2 -2
  11. abstra_internals/environment.py +6 -0
  12. abstra_internals/interface/cli/deploy.py +1 -1
  13. abstra_internals/interface/sdk/ai.py +157 -19
  14. abstra_internals/repositories/git/__init__.py +38 -0
  15. abstra_internals/repositories/git/dulwich.py +1353 -0
  16. abstra_internals/repositories/git/git_test.py +1572 -0
  17. abstra_internals/repositories/git/native.py +578 -0
  18. abstra_internals/repositories/git/types.py +267 -0
  19. abstra_internals/repositories/linter/rules/env_in_bundle.py +5 -5
  20. abstra_internals/repositories/linter/rules/env_in_bundle_test.py +6 -6
  21. abstra_internals/repositories/linter/rules/venv_in_bundle.py +9 -16
  22. abstra_internals/server/blueprints/editor.py +4 -0
  23. abstra_internals/server/routes/ai.py +1 -18
  24. abstra_internals/server/routes/git.py +190 -0
  25. abstra_internals/server/routes/workspace.py +1 -1
  26. abstra_internals/services/file_watcher.py +32 -13
  27. abstra_internals/services/fs.py +8 -5
  28. abstra_internals/services/fs_test.py +4 -6
  29. abstra_internals/templates/__init__.py +0 -11
  30. abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.eb8ccb64.js +2 -0
  31. abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.9f98292e.js +2 -0
  32. abstra_statics/dist/assets/ApiKeys.e975c4f3.js +2 -0
  33. abstra_statics/dist/assets/App.f62faff6.js +2 -0
  34. abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.5aa45ac1.js +2 -0
  35. abstra_statics/dist/assets/BaseLayout.1ec2c96d.js +2 -0
  36. abstra_statics/dist/assets/Billing.60adc9fa.js +2 -0
  37. abstra_statics/dist/assets/{Breadcrumb.f11a16d0.js → Breadcrumb.26dec5f7.js} +2 -2
  38. abstra_statics/dist/assets/{Builds.2bf5dad8.js → Builds.f86210bc.js} +2 -2
  39. abstra_statics/dist/assets/{Card.6caecaa4.js → Card.6cfffb80.js} +2 -2
  40. abstra_statics/dist/assets/{CircularLoading.bc88c029.js → CircularLoading.a13d6a76.js} +2 -2
  41. abstra_statics/dist/assets/CloseCircleOutlined.30bc25a8.js +2 -0
  42. abstra_statics/dist/assets/{ConnectorsView.aeb00ce8.css → ConnectorsView.33c5380f.css} +1 -1
  43. abstra_statics/dist/assets/ConnectorsView.eb4c769f.js +2 -0
  44. abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.8d2e4672.js +2 -0
  45. abstra_statics/dist/assets/ContentLayout.d03fee5b.js +2 -0
  46. abstra_statics/dist/assets/{CrudView.79588134.js → CrudView.c0824225.js} +2 -2
  47. abstra_statics/dist/assets/{DocsButton.vue_vue_type_script_setup_true_lang.6566ff97.js → DocsButton.vue_vue_type_script_setup_true_lang.3668aee4.js} +2 -2
  48. abstra_statics/dist/assets/{EditorLogin.e704b2ee.js → EditorLogin.46db248f.js} +2 -2
  49. abstra_statics/dist/assets/EditorsView.e72621fa.js +2 -0
  50. abstra_statics/dist/assets/EnvVars.f9f9d61f.js +2 -0
  51. abstra_statics/dist/assets/{Error.f378696f.js → Error.864f05b3.js} +2 -2
  52. abstra_statics/dist/assets/ExclamationCircleOutlined.a489b996.js +2 -0
  53. abstra_statics/dist/assets/{Files.06a52abd.js → Files.afe615e1.js} +2 -2
  54. abstra_statics/dist/assets/Form.556d0de2.js +2 -0
  55. abstra_statics/dist/assets/{FormRunner.2b75fd4d.js → FormRunner.7f56a8c6.js} +2 -2
  56. abstra_statics/dist/assets/Home.287d17f8.js +2 -0
  57. abstra_statics/dist/assets/Home.5b7e9c23.js +2 -0
  58. abstra_statics/dist/assets/{Live.08670b33.js → Live.50bacfea.js} +2 -2
  59. abstra_statics/dist/assets/LoadingContainer.ebace8de.js +2 -0
  60. abstra_statics/dist/assets/{LoadingOutlined.659d6aae.js → LoadingOutlined.9e949112.js} +2 -2
  61. abstra_statics/dist/assets/{Login.8491c4b7.js → Login.536a3067.js} +2 -2
  62. abstra_statics/dist/assets/Login.bec408c9.js +2 -0
  63. abstra_statics/dist/assets/{Login.vue_vue_type_script_setup_true_lang.eb94ecc3.js → Login.vue_vue_type_script_setup_true_lang.1c3f108d.js} +2 -2
  64. abstra_statics/dist/assets/{Logo.a32d36e7.js → Logo.82d6ab70.js} +2 -2
  65. abstra_statics/dist/assets/{Logs.030c8a19.js → Logs.f6135084.js} +2 -2
  66. abstra_statics/dist/assets/{LogsController.7e2c0c7a.js → LogsController.6b666816.js} +2 -2
  67. abstra_statics/dist/assets/Main.77b115f8.js +2 -0
  68. abstra_statics/dist/assets/{MockForm.8b56fd25.js → MockForm.deda9355.js} +2 -2
  69. abstra_statics/dist/assets/Navbar.4a6f2b09.js +2 -0
  70. abstra_statics/dist/assets/NewEditor.5f84de86.css +1 -0
  71. abstra_statics/dist/assets/NewEditor.e558e47d.js +8 -0
  72. abstra_statics/dist/assets/OidcLoginCallback.7f514b45.js +2 -0
  73. abstra_statics/dist/assets/OidcLogoutCallback.038813a1.js +2 -0
  74. abstra_statics/dist/assets/OmniChat.05ba8d8a.css +1 -0
  75. abstra_statics/dist/assets/OmniChat.60d98deb.js +6 -0
  76. abstra_statics/dist/assets/{OnboardingView.262e82cc.js → OnboardingView.9413ee50.js} +2 -2
  77. abstra_statics/dist/assets/{Organization.4f3ccb55.js → Organization.7203cc0b.js} +2 -2
  78. abstra_statics/dist/assets/Organizations.91220ca0.js +2 -0
  79. abstra_statics/dist/assets/{PhArrowCounterClockwise.vue.a1a917b9.js → PhArrowCounterClockwise.vue.8090d021.js} +2 -2
  80. abstra_statics/dist/assets/{PhArrowSquareOut.vue.eb4455ba.js → PhArrowSquareOut.vue.26582195.js} +2 -2
  81. abstra_statics/dist/assets/{PhBookBookmark.vue.7bb66888.js → PhBookBookmark.vue.5b7ab079.js} +2 -2
  82. abstra_statics/dist/assets/{PhChats.vue.88d84608.js → PhChats.vue.b5df7174.js} +2 -2
  83. abstra_statics/dist/assets/{PhClockCounterClockwise.vue.02d85ea5.js → PhClockCounterClockwise.vue.812311ad.js} +2 -2
  84. abstra_statics/dist/assets/{PhCopy.vue.5664181e.js → PhCopy.vue.59b0f1b4.js} +2 -2
  85. abstra_statics/dist/assets/{PhCopySimple.vue.beb69d1f.js → PhCopySimple.vue.d41d9160.js} +2 -2
  86. abstra_statics/dist/assets/{PhCube.vue.8de1132a.js → PhCube.vue.63ae7d32.js} +2 -2
  87. abstra_statics/dist/assets/PhDatabase.vue.edfcb96b.js +2 -0
  88. abstra_statics/dist/assets/{PhDotsThreeVertical.vue.9e306480.js → PhDotsThreeVertical.vue.ab4580a5.js} +2 -2
  89. abstra_statics/dist/assets/PhDownloadSimple.vue.c2eaaad1.js +2 -0
  90. abstra_statics/dist/assets/{PhFolderPlus.vue.658105d4.js → PhFolderPlus.vue.05ba4a5c.js} +2 -2
  91. abstra_statics/dist/assets/{PhGear.vue.68bce043.js → PhGear.vue.0e4a6135.js} +2 -2
  92. abstra_statics/dist/assets/{PhKey.vue.3f5192b6.js → PhKey.vue.b2c184d1.js} +2 -2
  93. abstra_statics/dist/assets/{PhPencil.vue.ee28fb6e.js → PhPencil.vue.2f2fe576.js} +2 -2
  94. abstra_statics/dist/assets/{PhPencilSimple.vue.148807f6.js → PhPencilSimple.vue.cc8620ae.js} +2 -2
  95. abstra_statics/dist/assets/{PhRocket.vue.7ba12859.js → PhRocket.vue.e397203c.js} +2 -2
  96. abstra_statics/dist/assets/{PhSignOut.vue.aa78b6eb.js → PhSignOut.vue.a271f14b.js} +2 -2
  97. abstra_statics/dist/assets/{PhSparkle.vue.7820be45.js → PhSparkle.vue.726defa2.js} +2 -2
  98. abstra_statics/dist/assets/{PhUserList.vue.04f21cbe.js → PhUserList.vue.6a29f16d.js} +2 -2
  99. abstra_statics/dist/assets/{PhUsersThree.vue.8b11b97d.js → PhUsersThree.vue.275d13ab.js} +2 -2
  100. abstra_statics/dist/assets/PhWarningCircle.vue.3b1aca1b.js +2 -0
  101. abstra_statics/dist/assets/{PhWebhooksLogo.vue.9e20d559.js → PhWebhooksLogo.vue.5e772aac.js} +2 -2
  102. abstra_statics/dist/assets/{PlayerConfigProvider.0915b29f.js → PlayerConfigProvider.e90a2b41.js} +2 -2
  103. abstra_statics/dist/assets/{PlayerNavbar.78cf73f2.js → PlayerNavbar.11ec1844.js} +2 -2
  104. abstra_statics/dist/assets/Project.c16740fb.js +2 -0
  105. abstra_statics/dist/assets/ProjectLogin.e7a6f444.js +2 -0
  106. abstra_statics/dist/assets/{ProjectSettings.f9bf9124.js → ProjectSettings.52c19693.js} +2 -2
  107. abstra_statics/dist/assets/{ProjectsView.407ea382.js → ProjectsView.22fa7a8e.js} +2 -2
  108. abstra_statics/dist/assets/{SaveButton.e70cd09e.js → SaveButton.719393d2.js} +2 -2
  109. abstra_statics/dist/assets/{ScrollArea.vue_vue_type_script_setup_true_lang.cf352882.js → ScrollArea.vue_vue_type_script_setup_true_lang.d4028954.js} +2 -2
  110. abstra_statics/dist/assets/{Sidebar.e69f49bd.css → Sidebar.29baeab0.css} +1 -1
  111. abstra_statics/dist/assets/{Sidebar.ce129494.js → Sidebar.5cb8e04e.js} +2 -2
  112. abstra_statics/dist/assets/Sql.23d80bad.js +5 -0
  113. abstra_statics/dist/assets/Sql.90e6e2ba.css +1 -0
  114. abstra_statics/dist/assets/Steps.8e5d201a.js +2 -0
  115. abstra_statics/dist/assets/TableCard.529112b9.css +1 -0
  116. abstra_statics/dist/assets/TableCard.59f95f8f.js +2 -0
  117. abstra_statics/dist/assets/TableEditor.5853a363.css +1 -0
  118. abstra_statics/dist/assets/TableEditor.8539f984.js +2 -0
  119. abstra_statics/dist/assets/Tables.44d953f7.js +2 -0
  120. abstra_statics/dist/assets/TablesDiagram.8e47383c.js +15 -0
  121. abstra_statics/dist/assets/TablesDiagram.a588e7ff.css +1 -0
  122. abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.6866fb32.js +2 -0
  123. abstra_statics/dist/assets/{Tasks.c9ba3095.js → Tasks.09551b19.js} +2 -2
  124. abstra_statics/dist/assets/{UploadOutlined.c563b054.js → UploadOutlined.eab75eb0.js} +2 -2
  125. abstra_statics/dist/assets/View.5fd7ddf0.js +2 -0
  126. abstra_statics/dist/assets/{View.vue_vue_type_script_setup_true_lang.a00f21c8.js → View.vue_vue_type_script_setup_true_lang.a904f400.js} +2 -2
  127. abstra_statics/dist/assets/{Watermark.c71c105b.js → Watermark.ab3d818f.js} +2 -2
  128. abstra_statics/dist/assets/WebEditor.d6ec6392.js +2 -0
  129. abstra_statics/dist/assets/{WidgetPreview.8bd406f7.js → WidgetPreview.86b31dec.js} +2 -2
  130. abstra_statics/dist/assets/{ant-design.06b818ab.js → ant-design.a865486e.js} +2 -2
  131. abstra_statics/dist/assets/apiKey.72f497ca.js +2 -0
  132. abstra_statics/dist/assets/{asyncComputed.bfb7341c.js → asyncComputed.cf5282fc.js} +2 -2
  133. abstra_statics/dist/assets/{build.aef51d48.js → build.df2d55cc.js} +2 -2
  134. abstra_statics/dist/assets/colorHelpers.37d9932b.js +2 -0
  135. abstra_statics/dist/assets/console.2bf7f04d.js +17 -0
  136. abstra_statics/dist/assets/{constants.b75d9567.js → constants.7d38ec8b.js} +2 -2
  137. abstra_statics/dist/assets/contracts.generated.590b1102.js +2 -0
  138. abstra_statics/dist/assets/{cssMode.0aa24dcd.js → cssMode.7133c7cb.js} +2 -2
  139. abstra_statics/dist/assets/{datetime.46141396.js → datetime.8de2ff28.js} +2 -2
  140. abstra_statics/dist/assets/dayjs.f18bbbca.js +2 -0
  141. abstra_statics/dist/assets/editor.3a4714e3.js +2 -0
  142. abstra_statics/dist/assets/editor.main.9c635b9a.js +2 -0
  143. abstra_statics/dist/assets/fetch.89fd5b7b.js +2 -0
  144. abstra_statics/dist/assets/{folder.fe6adcd2.js → folder.d8e23009.js} +2 -2
  145. abstra_statics/dist/assets/{freemarker2.8bd96640.js → freemarker2.6698d1ea.js} +2 -2
  146. abstra_statics/dist/assets/{handlebars.e5dd9b19.js → handlebars.a6c42dc0.js} +2 -2
  147. abstra_statics/dist/assets/{html.7bcef916.js → html.493a5410.js} +2 -2
  148. abstra_statics/dist/assets/{htmlMode.ce91c230.js → htmlMode.a28b2fca.js} +2 -2
  149. abstra_statics/dist/assets/{index.fe015dd3.js → index.2af3391c.js} +2 -2
  150. abstra_statics/dist/assets/{index.57a61691.js → index.4176fe88.js} +2 -2
  151. abstra_statics/dist/assets/{index.16664500.js → index.4d20c159.js} +2 -2
  152. abstra_statics/dist/assets/{index.ee218f7a.js → index.5d6b1e62.js} +2 -2
  153. abstra_statics/dist/assets/{index.06cad1f2.js → index.79ce3bf1.js} +2 -2
  154. abstra_statics/dist/assets/{index.161ccee5.js → index.c34a405a.js} +2 -2
  155. abstra_statics/dist/assets/index.fb182bd1.js +2 -0
  156. abstra_statics/dist/assets/{index.005bab7f.js → index.fb49354b.js} +2 -2
  157. abstra_statics/dist/assets/{javascript.4d5c0a37.js → javascript.3a36cf17.js} +2 -2
  158. abstra_statics/dist/assets/{jsonMode.0942a255.js → jsonMode.bead6ac8.js} +2 -2
  159. abstra_statics/dist/assets/{jwt-decode.esm.e1e8e181.js → jwt-decode.esm.d4517a10.js} +8 -8
  160. abstra_statics/dist/assets/{linters.39cc198f.js → linters.2f3141cb.js} +2 -2
  161. abstra_statics/dist/assets/{liquid.884b015e.js → liquid.0c337fae.js} +3 -3
  162. abstra_statics/dist/assets/member.48d6f2cd.js +2 -0
  163. abstra_statics/dist/assets/{metadata.034775c8.js → metadata.c3aed6e1.js} +2 -2
  164. abstra_statics/dist/assets/omniChatStore.c53bcca2.js +8 -0
  165. abstra_statics/dist/assets/{organization.a29009bc.js → organization.928c9bef.js} +2 -2
  166. abstra_statics/dist/assets/player.d3aeafc5.js +2 -0
  167. abstra_statics/dist/assets/{plotly.min.df1e817c.js → plotly.min.7225d3a0.js} +2 -2
  168. abstra_statics/dist/assets/{polling.84bf96db.js → polling.82ee6b45.js} +2 -2
  169. abstra_statics/dist/assets/{project.a9ad86e9.js → project.619b7244.js} +2 -2
  170. abstra_statics/dist/assets/{python.17c791bf.js → python.05764499.js} +3 -3
  171. abstra_statics/dist/assets/{razor.4b071c3b.js → razor.81a45581.js} +2 -2
  172. abstra_statics/dist/assets/record.7f43486c.js +2 -0
  173. abstra_statics/dist/assets/{redirect.cd158e43.js → redirect.f028a879.js} +2 -2
  174. abstra_statics/dist/assets/repository.9534db4b.js +2 -0
  175. abstra_statics/dist/assets/repository.c15239ce.js +2 -0
  176. abstra_statics/dist/assets/router.262190ec.js +2 -0
  177. abstra_statics/dist/assets/router.424f7da9.js +18 -0
  178. abstra_statics/dist/assets/string.0acf5572.js +2 -0
  179. abstra_statics/dist/assets/{tables.928d4c4a.js → tables.1f68ec62.js} +2 -2
  180. abstra_statics/dist/assets/{tasksController.95334db5.js → tasksController.371896de.js} +2 -2
  181. abstra_statics/dist/assets/{toggleHighContrast.67a76682.js → toggleHighContrast.0d0e5662.js} +7 -7
  182. abstra_statics/dist/assets/{tsMode.bd4befb2.js → tsMode.6eadbf06.js} +2 -2
  183. abstra_statics/dist/assets/{typescript.b5722de7.js → typescript.1670e287.js} +2 -2
  184. abstra_statics/dist/assets/url.e8732f77.js +2 -0
  185. abstra_statics/dist/assets/{useCodebaseEvents.47e4fcfe.js → useCodebaseEvents.53dec1f2.js} +2 -2
  186. abstra_statics/dist/assets/useTables.4f034cf8.js +2 -0
  187. abstra_statics/dist/assets/userStore.31024da3.js +2 -0
  188. abstra_statics/dist/assets/uuid.bde15ce7.js +2 -0
  189. abstra_statics/dist/assets/vue-flow-background.818c7852.js +2 -0
  190. abstra_statics/dist/assets/vue-flow-core.1180ec83.js +22 -0
  191. abstra_statics/dist/assets/{vue-quill.esm-bundler.d6a7c536.js → vue-quill.esm-bundler.c4f04985.js} +2 -2
  192. abstra_statics/dist/assets/{workspaceStore.cca10750.js → workspaceStore.6244d03d.js} +2 -2
  193. abstra_statics/dist/assets/{xml.0a62ffce.js → xml.f2867af8.js} +3 -3
  194. abstra_statics/dist/assets/{yaml.1efc213f.js → yaml.5427bb1b.js} +3 -3
  195. abstra_statics/dist/console.html +14 -15
  196. abstra_statics/dist/editor.html +13 -13
  197. abstra_statics/dist/player.html +9 -9
  198. tests/e2e/test_crud_files.py +1 -0
  199. abstra_internals/templates/abstraignore +0 -8
  200. abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.3fce0fbb.js +0 -2
  201. abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.4fb1f88a.js +0 -2
  202. abstra_statics/dist/assets/ApiKeys.56b97ced.js +0 -2
  203. abstra_statics/dist/assets/App.bd5ec032.js +0 -2
  204. abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.79524273.js +0 -2
  205. abstra_statics/dist/assets/BaseLayout.ac22ef55.js +0 -2
  206. abstra_statics/dist/assets/Billing.2c39d133.js +0 -2
  207. abstra_statics/dist/assets/CloseCircleOutlined.12f63f77.js +0 -2
  208. abstra_statics/dist/assets/ConnectorsView.97a8c63b.js +0 -2
  209. abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.48b29302.js +0 -2
  210. abstra_statics/dist/assets/ContentLayout.072b3790.js +0 -2
  211. abstra_statics/dist/assets/EditorsView.987a7eda.js +0 -2
  212. abstra_statics/dist/assets/EnvVars.c5e84d82.js +0 -2
  213. abstra_statics/dist/assets/ExclamationCircleOutlined.f9a25080.js +0 -2
  214. abstra_statics/dist/assets/Form.4633ab8e.js +0 -2
  215. abstra_statics/dist/assets/Home.a883da25.js +0 -2
  216. abstra_statics/dist/assets/Home.d122da63.js +0 -2
  217. abstra_statics/dist/assets/LoadingContainer.b11f052c.js +0 -2
  218. abstra_statics/dist/assets/Login.84d39327.js +0 -2
  219. abstra_statics/dist/assets/Main.70db8614.js +0 -2
  220. abstra_statics/dist/assets/Navbar.6acd9007.js +0 -2
  221. abstra_statics/dist/assets/NewEditor.15e29eac.js +0 -8
  222. abstra_statics/dist/assets/NewEditor.6dd8f03b.css +0 -1
  223. abstra_statics/dist/assets/OidcLoginCallback.b65a6f9f.js +0 -2
  224. abstra_statics/dist/assets/OidcLogoutCallback.dabd09cf.js +0 -2
  225. abstra_statics/dist/assets/OmniChat.078af315.css +0 -1
  226. abstra_statics/dist/assets/OmniChat.6ed96f8e.js +0 -6
  227. abstra_statics/dist/assets/Organizations.d90dd629.js +0 -2
  228. abstra_statics/dist/assets/PhDownloadSimple.vue.6192bb0e.js +0 -2
  229. abstra_statics/dist/assets/PhPencilSimpleLine.vue.af76e884.js +0 -2
  230. abstra_statics/dist/assets/Project.34c75b7c.js +0 -2
  231. abstra_statics/dist/assets/ProjectLogin.9b8cb3d1.js +0 -2
  232. abstra_statics/dist/assets/Sql.3cdc910a.css +0 -1
  233. abstra_statics/dist/assets/Sql.4e31662a.js +0 -5
  234. abstra_statics/dist/assets/Steps.4c850501.js +0 -2
  235. abstra_statics/dist/assets/TableEditor.1e680eaf.css +0 -1
  236. abstra_statics/dist/assets/TableEditor.e7371677.js +0 -2
  237. abstra_statics/dist/assets/Tables.f2c23e20.js +0 -2
  238. abstra_statics/dist/assets/TablesDiagram.1ec45dd9.css +0 -1
  239. abstra_statics/dist/assets/TablesDiagram.8297ec4b.js +0 -15
  240. abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.ec94f9e7.js +0 -2
  241. abstra_statics/dist/assets/View.4c3c38ba.js +0 -2
  242. abstra_statics/dist/assets/WebEditor.4ef39590.js +0 -2
  243. abstra_statics/dist/assets/apiKey.e3aa9e16.js +0 -2
  244. abstra_statics/dist/assets/colorHelpers.e94da383.js +0 -2
  245. abstra_statics/dist/assets/console.86947afb.js +0 -25
  246. abstra_statics/dist/assets/contracts.generated.7508e893.js +0 -2
  247. abstra_statics/dist/assets/dayjs.b4dc8227.js +0 -2
  248. abstra_statics/dist/assets/editor.4f4b7594.js +0 -2
  249. abstra_statics/dist/assets/editor.main.340c0a2d.js +0 -2
  250. abstra_statics/dist/assets/fetch.cfa094a0.js +0 -2
  251. abstra_statics/dist/assets/index.a884598f.js +0 -2
  252. abstra_statics/dist/assets/index.eb8f01b7.js +0 -2
  253. abstra_statics/dist/assets/member.af05829c.js +0 -2
  254. abstra_statics/dist/assets/omniChatStore.19fcae1a.js +0 -8
  255. abstra_statics/dist/assets/player.b9e54e21.js +0 -2
  256. abstra_statics/dist/assets/record.06867f70.js +0 -2
  257. abstra_statics/dist/assets/repository.40cf87c6.js +0 -2
  258. abstra_statics/dist/assets/repository.ecf19994.js +0 -2
  259. abstra_statics/dist/assets/router.8ccbba96.js +0 -10
  260. abstra_statics/dist/assets/router.c00c99d7.js +0 -2
  261. abstra_statics/dist/assets/string.ea3b2597.js +0 -2
  262. abstra_statics/dist/assets/url.62ce842c.js +0 -2
  263. abstra_statics/dist/assets/userStore.51f1e2d0.js +0 -2
  264. abstra_statics/dist/assets/uuid.f4308f15.js +0 -2
  265. abstra_statics/dist/assets/vue-flow-background.03bf6b4b.js +0 -22
  266. {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/WHEEL +0 -0
  267. {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/entry_points.txt +0 -0
  268. {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/top_level.txt +0 -0
@@ -7,6 +7,7 @@ from abstra_internals.contracts_generated import (
7
7
  CloudApiCliModelsNfeResponse,
8
8
  CloudApiCliModelsNfseResponse,
9
9
  CloudApiCliModelsUsDriverLicenseResponse,
10
+ CloudApiCliModelsUsPassportResponse,
10
11
  )
11
12
  from abstra_internals.controllers.sdk.sdk_ai import Format, Prompt
12
13
  from abstra_internals.controllers.sdk.sdk_context import SDKContextStore
@@ -74,43 +75,130 @@ def prompt(
74
75
  )
75
76
 
76
77
 
77
- def parse_nfse(document_path: Union[Path, str]) -> CloudApiCliModelsNfseResponse:
78
+ def parse_nfse(document_path: Union["Path", str]) -> CloudApiCliModelsNfseResponse:
78
79
  """
79
- Parse a Nota Fiscal de Serviço Eletrônica (NFSe) document.
80
+ Parse a Nota Fiscal de Serviço Eletrônica (NFSe) document using AI-powered OCR to extract service invoice information and tax details from Brazilian electronic service invoices.
81
+
82
+ The parser extracts service invoice details including:
83
+ - cnpj_prestador/cnpj_tomador: CNPJ numbers of service provider/recipient
84
+ - razao_social_prestador/razao_social_tomador: Company names
85
+ - valor_liquido_centavos/valor_total_centavos: Net/total amounts in cents
86
+ - numero_nota: Invoice number
87
+ - codigo_servico: Service code number
88
+ - data_emissao: Issue date (YYYY-MM-DD)
89
+ - descricao: Service description
90
+ - endereco_prestador/endereco_tomador: Full addresses
91
+ - bairro_prestador/bairro_tomador: District/neighborhood information
92
+ - cep_prestador/cep_tomador: ZIP codes
93
+ - municipio_prestador: City of service provider
94
+ - uf_prestador/uf_tomador: State abbreviations (e.g., "SP", "RJ")
95
+ - email_prestador/email_tomador: Email addresses
96
+ - inscricao_municipal_prestador: Municipal registration
97
+
80
98
  Args:
81
99
  document_path (Union[Path, str]): The path to the NFSe document to be parsed.
100
+
82
101
  Returns:
83
- CloudApiCliModelsNfseResponse: The parsed NFSe response.
102
+ dict: The parsed NFSe data.
103
+
84
104
  Raises:
85
- ValueError: If the document path is invalid or the parsing fails.
105
+ ValueError: If document path is invalid or parsing fails.
86
106
  """
87
107
  data = SDKContextStore.get_by_thread().ai_sdk.parse_document(document_path, "nfse")
88
108
  return CloudApiCliModelsNfseResponse.from_dict(data)
89
109
 
90
110
 
91
- def parse_nfe(document_path: Union[Path, str]) -> CloudApiCliModelsNfeResponse:
111
+ def parse_nfe(document_path: Union["Path", str]) -> CloudApiCliModelsNfeResponse:
92
112
  """
93
- Parse a Nota Fiscal Eletrônica (NFe) document.
113
+ Parse a Nota Fiscal Eletrônica (NFe) document using AI-powered OCR to extract comprehensive fiscal information from Brazilian electronic invoices including company data, product details, tax calculations, and transportation info.
114
+
115
+ The parser extracts 70+ fields including:
116
+
117
+ **Company Information:**
118
+ - chave_acesso: Access key for verification (44 characters)
119
+ - numero_nota: Invoice number (string)
120
+ - serie: Series number
121
+ - cnpj_emitente/razao_social_emitente: Issuer company CNPJ and name
122
+ - cpf_cnpj_destinatario/nome_destinatario/razao_social_destinatario: Recipient tax ID and names
123
+ - endereco_emitente/endereco_destinatario: Full addresses
124
+ - bairro_emitente/bairro_distrito_destinatario: Districts/neighborhoods
125
+ - cep_emitente/cep_destinatario: ZIP codes
126
+ - municipio_emitente/municipio_destinatario: Cities
127
+ - uf_emitente/uf_destinatario: States
128
+ - telefone_emitente/telefone_destinatario: Phone numbers
129
+ - inscricao_estadual_emitente/inscricao_estadual_destinatario: State registrations
130
+ - inscricao_municipal: Municipal registration
131
+
132
+ **Financial Information:**
133
+ - data_emissao/data_entrada_saida: Issue and entry/exit timestamps
134
+ - data_protocolo_autorizacao/protocolo_autorizacao: Authorization data
135
+ - valor_produtos/valor_total: Product and total amounts
136
+ - valor_icms/valor_ipi/valor_issqn: Tax amounts (ICMS, IPI, ISSQN)
137
+ - valor_frete/valor_seguro/outras_despesas: Additional costs
138
+ - valor_fcp_st/valor_tributos: Additional tax values
139
+ - desconto: Discount amount
140
+
141
+ **Product Information:**
142
+ - descricao_produto/codigo_produto: Product description and code
143
+ - quantidade/unidade/valor_unitario: Product quantity, unit, unit value
144
+ - ncm_sh: NCM/SH classification code
145
+ - cfop: Fiscal operation code
146
+ - cst: Tax situation code
147
+ - aliquota_icms/base_calculo_icms: ICMS tax rate and calculation base
148
+ - aliquota_ipi/base_calculo_icms_st: IPI rate and ICMS-ST base
149
+
150
+ **Transportation Information:**
151
+ - natureza_operacao: Nature of operation
152
+ - razao_social_transportadora/cnpj_transportadora: Carrier info
153
+ - endereco_transportadora/municipio_transportadora/uf_transportadora: Carrier location
154
+ - inscricao_estadual_transportadora: Carrier state registration
155
+ - placa_veiculo/uf_veiculo: Vehicle plate and state
156
+ - codigo_antt: ANTT code
157
+ - frete_por_conta: Freight responsibility
158
+ - peso_bruto_kg/peso_liquido_kg: Gross/net weight in kg
159
+ - numero_volumes/quantidade_volumes: Volume count
160
+ - marca_volumes/especie: Volume marking and type
161
+ - hora_saida: Departure time
162
+ - informacoes_adicionais: Additional information text
163
+
94
164
  Args:
95
165
  document_path (Union[Path, str]): The path to the NFe document to be parsed.
166
+
96
167
  Returns:
97
- CloudApiCliModelsNfeResponse: The parsed NFe response.
168
+ dict: The parsed NFe data.
169
+
98
170
  Raises:
99
- ValueError: If the document path is invalid or the parsing fails.
171
+ ValueError: If document path is invalid or parsing fails.
100
172
  """
101
173
  data = SDKContextStore.get_by_thread().ai_sdk.parse_document(document_path, "nfe")
102
174
  return CloudApiCliModelsNfeResponse.from_dict(data)
103
175
 
104
176
 
105
- def parse_boleto(document_path: Union[Path, str]) -> CloudApiCliModelsBoletoResponse:
177
+ def parse_boleto(document_path: Union["Path", str]) -> CloudApiCliModelsBoletoResponse:
106
178
  """
107
- Parse a Boleto document.
179
+ Parse a Brazilian Boleto (bank slip) document using AI-powered OCR for automated payment processing.
180
+
181
+ Extracts payment information and banking details including:
182
+ - codigo_de_barras: Barcode number for payment processing
183
+ - valor: Payment amount in centavos (cents)
184
+ - vencimento: Due date (YYYY-MM-DD)
185
+ - beneficiario/pagador: Beneficiary and payer names
186
+ - cpf_cnpj_beneficiario/cpf_cnpj_pagador: Tax IDs
187
+ - agencia_cod_beneficiario: Bank agency and beneficiary code
188
+ - carteira: Bank wallet/portfolio number
189
+ - data_emissao/data_processamento: Issue and processing dates
190
+ - endereco_beneficiario/endereco_pagador: Addresses
191
+ - nosso_numero: Bank's internal reference number
192
+ - numero_documento: Document number
193
+
108
194
  Args:
109
195
  document_path (Union[Path, str]): The path to the Boleto document to be parsed.
196
+
110
197
  Returns:
111
198
  dict: The parsed Boleto data.
199
+
112
200
  Raises:
113
- ValueError: If the document path is invalid or the parsing fails.
201
+ ValueError: If document path is invalid or parsing fails.
114
202
  """
115
203
  data = SDKContextStore.get_by_thread().ai_sdk.parse_document(
116
204
  document_path, "boleto"
@@ -119,16 +207,26 @@ def parse_boleto(document_path: Union[Path, str]) -> CloudApiCliModelsBoletoResp
119
207
 
120
208
 
121
209
  def parse_us_driver_license(
122
- document_path: Union[Path, str],
210
+ document_path: Union["Path", str],
123
211
  ) -> CloudApiCliModelsUsDriverLicenseResponse:
124
212
  """
125
- Parse a US Driver License document.
213
+ Parse a US Driver License document using AI-powered OCR to extract personal information and license details.
214
+
215
+ The parser extracts key information including:
216
+ - Personal details (name, date of birth, address)
217
+ - License information (license number, class, expiration date)
218
+ - Physical characteristics (height, weight, eye color)
219
+ - Address information (street, city, state, zip code)
220
+ - Endorsements and restrictions
221
+
126
222
  Args:
127
- document_path (Union[Path, str]): The path to the Driver License document to be parsed.
223
+ document_path (Union[Path, str]): Path to the US Driver License document (PDF, JPEG, or PNG).
224
+
128
225
  Returns:
129
226
  dict: The parsed Driver License data.
227
+
130
228
  Raises:
131
- ValueError: If the document path is invalid or the parsing fails.
229
+ ValueError: If document path is invalid or parsing fails.
132
230
  """
133
231
 
134
232
  data = SDKContextStore.get_by_thread().ai_sdk.parse_document(
@@ -138,19 +236,59 @@ def parse_us_driver_license(
138
236
 
139
237
 
140
238
  def parse_bank_statement(
141
- document_path: Union[Path, str],
239
+ document_path: Union["Path", str],
142
240
  ) -> CloudApiCliModelsBankStatementResponse:
143
241
  """
144
- Parse a Bank Statement document.
242
+ Parse a Bank Statement document using AI-powered OCR to extract account information and transaction details.
243
+
244
+ The parser extracts banking information including:
245
+ - Account information (account number, account holder name, bank details)
246
+ - Balance information (opening balance, closing balance, available balance)
247
+ - Transaction history (date, description, amount, balance)
248
+ - Statement period (from date, to date)
249
+ - Bank and branch information
250
+ - Customer contact information
251
+
145
252
  Args:
146
- document_path (Union[Path, str]): The path to the Bank Statement document to be parsed.
253
+ document_path (Union[Path, str]): Path to the Bank Statement document (PDF, JPEG, or PNG).
254
+
147
255
  Returns:
148
256
  dict: The parsed Bank Statement data.
257
+
149
258
  Raises:
150
- ValueError: If the document path is invalid or the parsing fails.
259
+ ValueError: If document path is invalid or parsing fails.
151
260
  """
152
261
 
153
262
  data = SDKContextStore.get_by_thread().ai_sdk.parse_document(
154
263
  document_path, "bank-statement"
155
264
  )
156
265
  return CloudApiCliModelsBankStatementResponse.from_dict(data)
266
+
267
+
268
+ def parse_us_passport(document_path: Path) -> CloudApiCliModelsUsPassportResponse:
269
+ """
270
+ Parse a US Passport document using AI-powered OCR to extract personal information and document details from US passports, including MRZ (Machine Readable Zone) processing.
271
+
272
+ The parser extracts the following key information:
273
+ - family_name: Last name/surname of passport holder
274
+ - given_names: First and middle names
275
+ - document_id: Passport document number (e.g., "E00007730")
276
+ - date_of_birth: Birth date in YYYY-MM-DD format
277
+ - issue_date: Passport issuance date in YYYY-MM-DD format
278
+ - expiration_date: Passport expiration date in YYYY-MM-DD format
279
+ - mrz_code: Machine Readable Zone code from passport bottom
280
+ - portrait: Reference to passport photo if available
281
+
282
+ Args:
283
+ document_path (Path): Path to the US Passport document (PDF, JPEG, or PNG).
284
+
285
+ Returns:
286
+ dict: The parsed US Passport data.
287
+
288
+ Raises:
289
+ ValueError: If document path is invalid or parsing fails.
290
+ """
291
+ data = SDKContextStore.get_by_thread().ai_sdk.parse_document(
292
+ document_path, "us-passport"
293
+ )
294
+ return CloudApiCliModelsUsPassportResponse.from_dict(data)
@@ -0,0 +1,38 @@
1
+ import shutil
2
+
3
+ from abstra_internals.environment import FORCE_GIT_CLIENT
4
+
5
+ from .dulwich import DulwichGitRepository
6
+ from .native import NativeGitRepository
7
+ from .types import (
8
+ AheadBehindInfo,
9
+ GitCommit,
10
+ GitRepositoryInterface,
11
+ GitStatus,
12
+ GitStatusResponse,
13
+ RemoteGitStatus,
14
+ )
15
+
16
+
17
+ 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)
26
+
27
+
28
+ __all__ = [
29
+ "GitCommit",
30
+ "GitStatus",
31
+ "RemoteGitStatus",
32
+ "GitStatusResponse",
33
+ "GitRepositoryInterface",
34
+ "NativeGitRepository",
35
+ "DulwichGitRepository",
36
+ "create_git_repository",
37
+ "AheadBehindInfo",
38
+ ]