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.
- abstra/ai.py +2 -0
- abstra/cli.py +8 -3
- {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/METADATA +2 -1
- {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/RECORD +201 -191
- abstra_internals/consts/filepaths.py +1 -1
- abstra_internals/contracts_generated.py +5382 -5233
- abstra_internals/controllers/ai.py +23 -15
- abstra_internals/controllers/git.py +305 -0
- abstra_internals/controllers/main.py +10 -6
- abstra_internals/entities/forms/template.py +2 -2
- abstra_internals/environment.py +6 -0
- abstra_internals/interface/cli/deploy.py +1 -1
- abstra_internals/interface/sdk/ai.py +157 -19
- abstra_internals/repositories/git/__init__.py +38 -0
- abstra_internals/repositories/git/dulwich.py +1353 -0
- abstra_internals/repositories/git/git_test.py +1572 -0
- abstra_internals/repositories/git/native.py +578 -0
- abstra_internals/repositories/git/types.py +267 -0
- abstra_internals/repositories/linter/rules/env_in_bundle.py +5 -5
- abstra_internals/repositories/linter/rules/env_in_bundle_test.py +6 -6
- abstra_internals/repositories/linter/rules/venv_in_bundle.py +9 -16
- abstra_internals/server/blueprints/editor.py +4 -0
- abstra_internals/server/routes/ai.py +1 -18
- abstra_internals/server/routes/git.py +190 -0
- abstra_internals/server/routes/workspace.py +1 -1
- abstra_internals/services/file_watcher.py +32 -13
- abstra_internals/services/fs.py +8 -5
- abstra_internals/services/fs_test.py +4 -6
- abstra_internals/templates/__init__.py +0 -11
- abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.eb8ccb64.js +2 -0
- abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.9f98292e.js +2 -0
- abstra_statics/dist/assets/ApiKeys.e975c4f3.js +2 -0
- abstra_statics/dist/assets/App.f62faff6.js +2 -0
- abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.5aa45ac1.js +2 -0
- abstra_statics/dist/assets/BaseLayout.1ec2c96d.js +2 -0
- abstra_statics/dist/assets/Billing.60adc9fa.js +2 -0
- abstra_statics/dist/assets/{Breadcrumb.f11a16d0.js → Breadcrumb.26dec5f7.js} +2 -2
- abstra_statics/dist/assets/{Builds.2bf5dad8.js → Builds.f86210bc.js} +2 -2
- abstra_statics/dist/assets/{Card.6caecaa4.js → Card.6cfffb80.js} +2 -2
- abstra_statics/dist/assets/{CircularLoading.bc88c029.js → CircularLoading.a13d6a76.js} +2 -2
- abstra_statics/dist/assets/CloseCircleOutlined.30bc25a8.js +2 -0
- abstra_statics/dist/assets/{ConnectorsView.aeb00ce8.css → ConnectorsView.33c5380f.css} +1 -1
- abstra_statics/dist/assets/ConnectorsView.eb4c769f.js +2 -0
- abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.8d2e4672.js +2 -0
- abstra_statics/dist/assets/ContentLayout.d03fee5b.js +2 -0
- abstra_statics/dist/assets/{CrudView.79588134.js → CrudView.c0824225.js} +2 -2
- 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
- abstra_statics/dist/assets/{EditorLogin.e704b2ee.js → EditorLogin.46db248f.js} +2 -2
- abstra_statics/dist/assets/EditorsView.e72621fa.js +2 -0
- abstra_statics/dist/assets/EnvVars.f9f9d61f.js +2 -0
- abstra_statics/dist/assets/{Error.f378696f.js → Error.864f05b3.js} +2 -2
- abstra_statics/dist/assets/ExclamationCircleOutlined.a489b996.js +2 -0
- abstra_statics/dist/assets/{Files.06a52abd.js → Files.afe615e1.js} +2 -2
- abstra_statics/dist/assets/Form.556d0de2.js +2 -0
- abstra_statics/dist/assets/{FormRunner.2b75fd4d.js → FormRunner.7f56a8c6.js} +2 -2
- abstra_statics/dist/assets/Home.287d17f8.js +2 -0
- abstra_statics/dist/assets/Home.5b7e9c23.js +2 -0
- abstra_statics/dist/assets/{Live.08670b33.js → Live.50bacfea.js} +2 -2
- abstra_statics/dist/assets/LoadingContainer.ebace8de.js +2 -0
- abstra_statics/dist/assets/{LoadingOutlined.659d6aae.js → LoadingOutlined.9e949112.js} +2 -2
- abstra_statics/dist/assets/{Login.8491c4b7.js → Login.536a3067.js} +2 -2
- abstra_statics/dist/assets/Login.bec408c9.js +2 -0
- 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
- abstra_statics/dist/assets/{Logo.a32d36e7.js → Logo.82d6ab70.js} +2 -2
- abstra_statics/dist/assets/{Logs.030c8a19.js → Logs.f6135084.js} +2 -2
- abstra_statics/dist/assets/{LogsController.7e2c0c7a.js → LogsController.6b666816.js} +2 -2
- abstra_statics/dist/assets/Main.77b115f8.js +2 -0
- abstra_statics/dist/assets/{MockForm.8b56fd25.js → MockForm.deda9355.js} +2 -2
- abstra_statics/dist/assets/Navbar.4a6f2b09.js +2 -0
- abstra_statics/dist/assets/NewEditor.5f84de86.css +1 -0
- abstra_statics/dist/assets/NewEditor.e558e47d.js +8 -0
- abstra_statics/dist/assets/OidcLoginCallback.7f514b45.js +2 -0
- abstra_statics/dist/assets/OidcLogoutCallback.038813a1.js +2 -0
- abstra_statics/dist/assets/OmniChat.05ba8d8a.css +1 -0
- abstra_statics/dist/assets/OmniChat.60d98deb.js +6 -0
- abstra_statics/dist/assets/{OnboardingView.262e82cc.js → OnboardingView.9413ee50.js} +2 -2
- abstra_statics/dist/assets/{Organization.4f3ccb55.js → Organization.7203cc0b.js} +2 -2
- abstra_statics/dist/assets/Organizations.91220ca0.js +2 -0
- abstra_statics/dist/assets/{PhArrowCounterClockwise.vue.a1a917b9.js → PhArrowCounterClockwise.vue.8090d021.js} +2 -2
- abstra_statics/dist/assets/{PhArrowSquareOut.vue.eb4455ba.js → PhArrowSquareOut.vue.26582195.js} +2 -2
- abstra_statics/dist/assets/{PhBookBookmark.vue.7bb66888.js → PhBookBookmark.vue.5b7ab079.js} +2 -2
- abstra_statics/dist/assets/{PhChats.vue.88d84608.js → PhChats.vue.b5df7174.js} +2 -2
- abstra_statics/dist/assets/{PhClockCounterClockwise.vue.02d85ea5.js → PhClockCounterClockwise.vue.812311ad.js} +2 -2
- abstra_statics/dist/assets/{PhCopy.vue.5664181e.js → PhCopy.vue.59b0f1b4.js} +2 -2
- abstra_statics/dist/assets/{PhCopySimple.vue.beb69d1f.js → PhCopySimple.vue.d41d9160.js} +2 -2
- abstra_statics/dist/assets/{PhCube.vue.8de1132a.js → PhCube.vue.63ae7d32.js} +2 -2
- abstra_statics/dist/assets/PhDatabase.vue.edfcb96b.js +2 -0
- abstra_statics/dist/assets/{PhDotsThreeVertical.vue.9e306480.js → PhDotsThreeVertical.vue.ab4580a5.js} +2 -2
- abstra_statics/dist/assets/PhDownloadSimple.vue.c2eaaad1.js +2 -0
- abstra_statics/dist/assets/{PhFolderPlus.vue.658105d4.js → PhFolderPlus.vue.05ba4a5c.js} +2 -2
- abstra_statics/dist/assets/{PhGear.vue.68bce043.js → PhGear.vue.0e4a6135.js} +2 -2
- abstra_statics/dist/assets/{PhKey.vue.3f5192b6.js → PhKey.vue.b2c184d1.js} +2 -2
- abstra_statics/dist/assets/{PhPencil.vue.ee28fb6e.js → PhPencil.vue.2f2fe576.js} +2 -2
- abstra_statics/dist/assets/{PhPencilSimple.vue.148807f6.js → PhPencilSimple.vue.cc8620ae.js} +2 -2
- abstra_statics/dist/assets/{PhRocket.vue.7ba12859.js → PhRocket.vue.e397203c.js} +2 -2
- abstra_statics/dist/assets/{PhSignOut.vue.aa78b6eb.js → PhSignOut.vue.a271f14b.js} +2 -2
- abstra_statics/dist/assets/{PhSparkle.vue.7820be45.js → PhSparkle.vue.726defa2.js} +2 -2
- abstra_statics/dist/assets/{PhUserList.vue.04f21cbe.js → PhUserList.vue.6a29f16d.js} +2 -2
- abstra_statics/dist/assets/{PhUsersThree.vue.8b11b97d.js → PhUsersThree.vue.275d13ab.js} +2 -2
- abstra_statics/dist/assets/PhWarningCircle.vue.3b1aca1b.js +2 -0
- abstra_statics/dist/assets/{PhWebhooksLogo.vue.9e20d559.js → PhWebhooksLogo.vue.5e772aac.js} +2 -2
- abstra_statics/dist/assets/{PlayerConfigProvider.0915b29f.js → PlayerConfigProvider.e90a2b41.js} +2 -2
- abstra_statics/dist/assets/{PlayerNavbar.78cf73f2.js → PlayerNavbar.11ec1844.js} +2 -2
- abstra_statics/dist/assets/Project.c16740fb.js +2 -0
- abstra_statics/dist/assets/ProjectLogin.e7a6f444.js +2 -0
- abstra_statics/dist/assets/{ProjectSettings.f9bf9124.js → ProjectSettings.52c19693.js} +2 -2
- abstra_statics/dist/assets/{ProjectsView.407ea382.js → ProjectsView.22fa7a8e.js} +2 -2
- abstra_statics/dist/assets/{SaveButton.e70cd09e.js → SaveButton.719393d2.js} +2 -2
- 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
- abstra_statics/dist/assets/{Sidebar.e69f49bd.css → Sidebar.29baeab0.css} +1 -1
- abstra_statics/dist/assets/{Sidebar.ce129494.js → Sidebar.5cb8e04e.js} +2 -2
- abstra_statics/dist/assets/Sql.23d80bad.js +5 -0
- abstra_statics/dist/assets/Sql.90e6e2ba.css +1 -0
- abstra_statics/dist/assets/Steps.8e5d201a.js +2 -0
- abstra_statics/dist/assets/TableCard.529112b9.css +1 -0
- abstra_statics/dist/assets/TableCard.59f95f8f.js +2 -0
- abstra_statics/dist/assets/TableEditor.5853a363.css +1 -0
- abstra_statics/dist/assets/TableEditor.8539f984.js +2 -0
- abstra_statics/dist/assets/Tables.44d953f7.js +2 -0
- abstra_statics/dist/assets/TablesDiagram.8e47383c.js +15 -0
- abstra_statics/dist/assets/TablesDiagram.a588e7ff.css +1 -0
- abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.6866fb32.js +2 -0
- abstra_statics/dist/assets/{Tasks.c9ba3095.js → Tasks.09551b19.js} +2 -2
- abstra_statics/dist/assets/{UploadOutlined.c563b054.js → UploadOutlined.eab75eb0.js} +2 -2
- abstra_statics/dist/assets/View.5fd7ddf0.js +2 -0
- 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
- abstra_statics/dist/assets/{Watermark.c71c105b.js → Watermark.ab3d818f.js} +2 -2
- abstra_statics/dist/assets/WebEditor.d6ec6392.js +2 -0
- abstra_statics/dist/assets/{WidgetPreview.8bd406f7.js → WidgetPreview.86b31dec.js} +2 -2
- abstra_statics/dist/assets/{ant-design.06b818ab.js → ant-design.a865486e.js} +2 -2
- abstra_statics/dist/assets/apiKey.72f497ca.js +2 -0
- abstra_statics/dist/assets/{asyncComputed.bfb7341c.js → asyncComputed.cf5282fc.js} +2 -2
- abstra_statics/dist/assets/{build.aef51d48.js → build.df2d55cc.js} +2 -2
- abstra_statics/dist/assets/colorHelpers.37d9932b.js +2 -0
- abstra_statics/dist/assets/console.2bf7f04d.js +17 -0
- abstra_statics/dist/assets/{constants.b75d9567.js → constants.7d38ec8b.js} +2 -2
- abstra_statics/dist/assets/contracts.generated.590b1102.js +2 -0
- abstra_statics/dist/assets/{cssMode.0aa24dcd.js → cssMode.7133c7cb.js} +2 -2
- abstra_statics/dist/assets/{datetime.46141396.js → datetime.8de2ff28.js} +2 -2
- abstra_statics/dist/assets/dayjs.f18bbbca.js +2 -0
- abstra_statics/dist/assets/editor.3a4714e3.js +2 -0
- abstra_statics/dist/assets/editor.main.9c635b9a.js +2 -0
- abstra_statics/dist/assets/fetch.89fd5b7b.js +2 -0
- abstra_statics/dist/assets/{folder.fe6adcd2.js → folder.d8e23009.js} +2 -2
- abstra_statics/dist/assets/{freemarker2.8bd96640.js → freemarker2.6698d1ea.js} +2 -2
- abstra_statics/dist/assets/{handlebars.e5dd9b19.js → handlebars.a6c42dc0.js} +2 -2
- abstra_statics/dist/assets/{html.7bcef916.js → html.493a5410.js} +2 -2
- abstra_statics/dist/assets/{htmlMode.ce91c230.js → htmlMode.a28b2fca.js} +2 -2
- abstra_statics/dist/assets/{index.fe015dd3.js → index.2af3391c.js} +2 -2
- abstra_statics/dist/assets/{index.57a61691.js → index.4176fe88.js} +2 -2
- abstra_statics/dist/assets/{index.16664500.js → index.4d20c159.js} +2 -2
- abstra_statics/dist/assets/{index.ee218f7a.js → index.5d6b1e62.js} +2 -2
- abstra_statics/dist/assets/{index.06cad1f2.js → index.79ce3bf1.js} +2 -2
- abstra_statics/dist/assets/{index.161ccee5.js → index.c34a405a.js} +2 -2
- abstra_statics/dist/assets/index.fb182bd1.js +2 -0
- abstra_statics/dist/assets/{index.005bab7f.js → index.fb49354b.js} +2 -2
- abstra_statics/dist/assets/{javascript.4d5c0a37.js → javascript.3a36cf17.js} +2 -2
- abstra_statics/dist/assets/{jsonMode.0942a255.js → jsonMode.bead6ac8.js} +2 -2
- abstra_statics/dist/assets/{jwt-decode.esm.e1e8e181.js → jwt-decode.esm.d4517a10.js} +8 -8
- abstra_statics/dist/assets/{linters.39cc198f.js → linters.2f3141cb.js} +2 -2
- abstra_statics/dist/assets/{liquid.884b015e.js → liquid.0c337fae.js} +3 -3
- abstra_statics/dist/assets/member.48d6f2cd.js +2 -0
- abstra_statics/dist/assets/{metadata.034775c8.js → metadata.c3aed6e1.js} +2 -2
- abstra_statics/dist/assets/omniChatStore.c53bcca2.js +8 -0
- abstra_statics/dist/assets/{organization.a29009bc.js → organization.928c9bef.js} +2 -2
- abstra_statics/dist/assets/player.d3aeafc5.js +2 -0
- abstra_statics/dist/assets/{plotly.min.df1e817c.js → plotly.min.7225d3a0.js} +2 -2
- abstra_statics/dist/assets/{polling.84bf96db.js → polling.82ee6b45.js} +2 -2
- abstra_statics/dist/assets/{project.a9ad86e9.js → project.619b7244.js} +2 -2
- abstra_statics/dist/assets/{python.17c791bf.js → python.05764499.js} +3 -3
- abstra_statics/dist/assets/{razor.4b071c3b.js → razor.81a45581.js} +2 -2
- abstra_statics/dist/assets/record.7f43486c.js +2 -0
- abstra_statics/dist/assets/{redirect.cd158e43.js → redirect.f028a879.js} +2 -2
- abstra_statics/dist/assets/repository.9534db4b.js +2 -0
- abstra_statics/dist/assets/repository.c15239ce.js +2 -0
- abstra_statics/dist/assets/router.262190ec.js +2 -0
- abstra_statics/dist/assets/router.424f7da9.js +18 -0
- abstra_statics/dist/assets/string.0acf5572.js +2 -0
- abstra_statics/dist/assets/{tables.928d4c4a.js → tables.1f68ec62.js} +2 -2
- abstra_statics/dist/assets/{tasksController.95334db5.js → tasksController.371896de.js} +2 -2
- abstra_statics/dist/assets/{toggleHighContrast.67a76682.js → toggleHighContrast.0d0e5662.js} +7 -7
- abstra_statics/dist/assets/{tsMode.bd4befb2.js → tsMode.6eadbf06.js} +2 -2
- abstra_statics/dist/assets/{typescript.b5722de7.js → typescript.1670e287.js} +2 -2
- abstra_statics/dist/assets/url.e8732f77.js +2 -0
- abstra_statics/dist/assets/{useCodebaseEvents.47e4fcfe.js → useCodebaseEvents.53dec1f2.js} +2 -2
- abstra_statics/dist/assets/useTables.4f034cf8.js +2 -0
- abstra_statics/dist/assets/userStore.31024da3.js +2 -0
- abstra_statics/dist/assets/uuid.bde15ce7.js +2 -0
- abstra_statics/dist/assets/vue-flow-background.818c7852.js +2 -0
- abstra_statics/dist/assets/vue-flow-core.1180ec83.js +22 -0
- abstra_statics/dist/assets/{vue-quill.esm-bundler.d6a7c536.js → vue-quill.esm-bundler.c4f04985.js} +2 -2
- abstra_statics/dist/assets/{workspaceStore.cca10750.js → workspaceStore.6244d03d.js} +2 -2
- abstra_statics/dist/assets/{xml.0a62ffce.js → xml.f2867af8.js} +3 -3
- abstra_statics/dist/assets/{yaml.1efc213f.js → yaml.5427bb1b.js} +3 -3
- abstra_statics/dist/console.html +14 -15
- abstra_statics/dist/editor.html +13 -13
- abstra_statics/dist/player.html +9 -9
- tests/e2e/test_crud_files.py +1 -0
- abstra_internals/templates/abstraignore +0 -8
- abstra_statics/dist/assets/AbstraButton.vue_vue_type_script_setup_true_lang.3fce0fbb.js +0 -2
- abstra_statics/dist/assets/AbstraLogo.vue_vue_type_script_setup_true_lang.4fb1f88a.js +0 -2
- abstra_statics/dist/assets/ApiKeys.56b97ced.js +0 -2
- abstra_statics/dist/assets/App.bd5ec032.js +0 -2
- abstra_statics/dist/assets/App.vue_vue_type_style_index_0_lang.79524273.js +0 -2
- abstra_statics/dist/assets/BaseLayout.ac22ef55.js +0 -2
- abstra_statics/dist/assets/Billing.2c39d133.js +0 -2
- abstra_statics/dist/assets/CloseCircleOutlined.12f63f77.js +0 -2
- abstra_statics/dist/assets/ConnectorsView.97a8c63b.js +0 -2
- abstra_statics/dist/assets/ConsoleOmniChat.vue_vue_type_script_setup_true_lang.48b29302.js +0 -2
- abstra_statics/dist/assets/ContentLayout.072b3790.js +0 -2
- abstra_statics/dist/assets/EditorsView.987a7eda.js +0 -2
- abstra_statics/dist/assets/EnvVars.c5e84d82.js +0 -2
- abstra_statics/dist/assets/ExclamationCircleOutlined.f9a25080.js +0 -2
- abstra_statics/dist/assets/Form.4633ab8e.js +0 -2
- abstra_statics/dist/assets/Home.a883da25.js +0 -2
- abstra_statics/dist/assets/Home.d122da63.js +0 -2
- abstra_statics/dist/assets/LoadingContainer.b11f052c.js +0 -2
- abstra_statics/dist/assets/Login.84d39327.js +0 -2
- abstra_statics/dist/assets/Main.70db8614.js +0 -2
- abstra_statics/dist/assets/Navbar.6acd9007.js +0 -2
- abstra_statics/dist/assets/NewEditor.15e29eac.js +0 -8
- abstra_statics/dist/assets/NewEditor.6dd8f03b.css +0 -1
- abstra_statics/dist/assets/OidcLoginCallback.b65a6f9f.js +0 -2
- abstra_statics/dist/assets/OidcLogoutCallback.dabd09cf.js +0 -2
- abstra_statics/dist/assets/OmniChat.078af315.css +0 -1
- abstra_statics/dist/assets/OmniChat.6ed96f8e.js +0 -6
- abstra_statics/dist/assets/Organizations.d90dd629.js +0 -2
- abstra_statics/dist/assets/PhDownloadSimple.vue.6192bb0e.js +0 -2
- abstra_statics/dist/assets/PhPencilSimpleLine.vue.af76e884.js +0 -2
- abstra_statics/dist/assets/Project.34c75b7c.js +0 -2
- abstra_statics/dist/assets/ProjectLogin.9b8cb3d1.js +0 -2
- abstra_statics/dist/assets/Sql.3cdc910a.css +0 -1
- abstra_statics/dist/assets/Sql.4e31662a.js +0 -5
- abstra_statics/dist/assets/Steps.4c850501.js +0 -2
- abstra_statics/dist/assets/TableEditor.1e680eaf.css +0 -1
- abstra_statics/dist/assets/TableEditor.e7371677.js +0 -2
- abstra_statics/dist/assets/Tables.f2c23e20.js +0 -2
- abstra_statics/dist/assets/TablesDiagram.1ec45dd9.css +0 -1
- abstra_statics/dist/assets/TablesDiagram.8297ec4b.js +0 -15
- abstra_statics/dist/assets/TablesTabs.vue_vue_type_script_setup_true_lang.ec94f9e7.js +0 -2
- abstra_statics/dist/assets/View.4c3c38ba.js +0 -2
- abstra_statics/dist/assets/WebEditor.4ef39590.js +0 -2
- abstra_statics/dist/assets/apiKey.e3aa9e16.js +0 -2
- abstra_statics/dist/assets/colorHelpers.e94da383.js +0 -2
- abstra_statics/dist/assets/console.86947afb.js +0 -25
- abstra_statics/dist/assets/contracts.generated.7508e893.js +0 -2
- abstra_statics/dist/assets/dayjs.b4dc8227.js +0 -2
- abstra_statics/dist/assets/editor.4f4b7594.js +0 -2
- abstra_statics/dist/assets/editor.main.340c0a2d.js +0 -2
- abstra_statics/dist/assets/fetch.cfa094a0.js +0 -2
- abstra_statics/dist/assets/index.a884598f.js +0 -2
- abstra_statics/dist/assets/index.eb8f01b7.js +0 -2
- abstra_statics/dist/assets/member.af05829c.js +0 -2
- abstra_statics/dist/assets/omniChatStore.19fcae1a.js +0 -8
- abstra_statics/dist/assets/player.b9e54e21.js +0 -2
- abstra_statics/dist/assets/record.06867f70.js +0 -2
- abstra_statics/dist/assets/repository.40cf87c6.js +0 -2
- abstra_statics/dist/assets/repository.ecf19994.js +0 -2
- abstra_statics/dist/assets/router.8ccbba96.js +0 -10
- abstra_statics/dist/assets/router.c00c99d7.js +0 -2
- abstra_statics/dist/assets/string.ea3b2597.js +0 -2
- abstra_statics/dist/assets/url.62ce842c.js +0 -2
- abstra_statics/dist/assets/userStore.51f1e2d0.js +0 -2
- abstra_statics/dist/assets/uuid.f4308f15.js +0 -2
- abstra_statics/dist/assets/vue-flow-background.03bf6b4b.js +0 -22
- {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/WHEEL +0 -0
- {abstra-3.23.11.dist-info → abstra-3.24.0.dist-info}/entry_points.txt +0 -0
- {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
|
-
|
|
102
|
+
dict: The parsed NFSe data.
|
|
103
|
+
|
|
84
104
|
Raises:
|
|
85
|
-
ValueError: If
|
|
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
|
-
|
|
168
|
+
dict: The parsed NFe data.
|
|
169
|
+
|
|
98
170
|
Raises:
|
|
99
|
-
ValueError: If
|
|
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
|
|
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]):
|
|
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
|
|
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]):
|
|
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
|
|
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
|
+
]
|