flyto-core 1.7.4__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.
- flyto_core-1.7.4/CHANGELOG.md +333 -0
- flyto_core-1.7.4/LICENSE +262 -0
- flyto_core-1.7.4/LICENSE-COMMERCIAL.md +411 -0
- flyto_core-1.7.4/LICENSE-HEADER.txt +164 -0
- flyto_core-1.7.4/MANIFEST.in +16 -0
- flyto_core-1.7.4/NOTICE +151 -0
- flyto_core-1.7.4/PKG-INFO +338 -0
- flyto_core-1.7.4/README.md +278 -0
- flyto_core-1.7.4/i18n/en.json +244 -0
- flyto_core-1.7.4/i18n/ja.json +244 -0
- flyto_core-1.7.4/i18n/zh.json +244 -0
- flyto_core-1.7.4/pyproject.toml +119 -0
- flyto_core-1.7.4/setup.cfg +4 -0
- flyto_core-1.7.4/setup.py +8 -0
- flyto_core-1.7.4/src/cli/__init__.py +10 -0
- flyto_core-1.7.4/src/cli/config.py +44 -0
- flyto_core-1.7.4/src/cli/i18n.py +49 -0
- flyto_core-1.7.4/src/cli/interactive.py +409 -0
- flyto_core-1.7.4/src/cli/main.py +157 -0
- flyto_core-1.7.4/src/cli/params.py +127 -0
- flyto_core-1.7.4/src/cli/runner.py +138 -0
- flyto_core-1.7.4/src/cli/ui.py +41 -0
- flyto_core-1.7.4/src/cli/workflow.py +178 -0
- flyto_core-1.7.4/src/core/__init__.py +93 -0
- flyto_core-1.7.4/src/core/browser/__init__.py +6 -0
- flyto_core-1.7.4/src/core/browser/driver.py +485 -0
- flyto_core-1.7.4/src/core/catalog/__init__.py +30 -0
- flyto_core-1.7.4/src/core/catalog/category.py +125 -0
- flyto_core-1.7.4/src/core/catalog/module.py +229 -0
- flyto_core-1.7.4/src/core/catalog/outline.py +194 -0
- flyto_core-1.7.4/src/core/constants.py +381 -0
- flyto_core-1.7.4/src/core/engine/__init__.py +143 -0
- flyto_core-1.7.4/src/core/engine/breakpoint.py +62 -0
- flyto_core-1.7.4/src/core/engine/breakpoints/__init__.py +44 -0
- flyto_core-1.7.4/src/core/engine/breakpoints/manager.py +382 -0
- flyto_core-1.7.4/src/core/engine/breakpoints/models.py +162 -0
- flyto_core-1.7.4/src/core/engine/breakpoints/store.py +136 -0
- flyto_core-1.7.4/src/core/engine/evidence/__init__.py +33 -0
- flyto_core-1.7.4/src/core/engine/evidence/executor_hooks.py +229 -0
- flyto_core-1.7.4/src/core/engine/evidence/hook.py +188 -0
- flyto_core-1.7.4/src/core/engine/evidence/models.py +65 -0
- flyto_core-1.7.4/src/core/engine/evidence/store.py +266 -0
- flyto_core-1.7.4/src/core/engine/evidence.py +50 -0
- flyto_core-1.7.4/src/core/engine/exceptions.py +48 -0
- flyto_core-1.7.4/src/core/engine/flow_control.py +189 -0
- flyto_core-1.7.4/src/core/engine/hooks/__init__.py +82 -0
- flyto_core-1.7.4/src/core/engine/hooks/base.py +144 -0
- flyto_core-1.7.4/src/core/engine/hooks/implementations.py +319 -0
- flyto_core-1.7.4/src/core/engine/hooks/models.py +126 -0
- flyto_core-1.7.4/src/core/engine/hooks.py +52 -0
- flyto_core-1.7.4/src/core/engine/lineage/__init__.py +121 -0
- flyto_core-1.7.4/src/core/engine/lineage/analysis.py +119 -0
- flyto_core-1.7.4/src/core/engine/lineage/context.py +216 -0
- flyto_core-1.7.4/src/core/engine/lineage/models.py +516 -0
- flyto_core-1.7.4/src/core/engine/lineage/tracker.py +434 -0
- flyto_core-1.7.4/src/core/engine/lineage.py +54 -0
- flyto_core-1.7.4/src/core/engine/replay/__init__.py +26 -0
- flyto_core-1.7.4/src/core/engine/replay/manager.py +582 -0
- flyto_core-1.7.4/src/core/engine/replay/models.py +84 -0
- flyto_core-1.7.4/src/core/engine/replay.py +40 -0
- flyto_core-1.7.4/src/core/engine/step_executor/__init__.py +48 -0
- flyto_core-1.7.4/src/core/engine/step_executor/context_builder.py +75 -0
- flyto_core-1.7.4/src/core/engine/step_executor/executor.py +299 -0
- flyto_core-1.7.4/src/core/engine/step_executor/foreach.py +88 -0
- flyto_core-1.7.4/src/core/engine/step_executor/retry.py +119 -0
- flyto_core-1.7.4/src/core/engine/step_executor.py +34 -0
- flyto_core-1.7.4/src/core/engine/variable_resolver.py +229 -0
- flyto_core-1.7.4/src/core/engine/workflow/__init__.py +17 -0
- flyto_core-1.7.4/src/core/engine/workflow/debug.py +178 -0
- flyto_core-1.7.4/src/core/engine/workflow/engine.py +575 -0
- flyto_core-1.7.4/src/core/engine/workflow/output.py +120 -0
- flyto_core-1.7.4/src/core/engine/workflow/routing.py +185 -0
- flyto_core-1.7.4/src/core/engine/workflow_engine.py +46 -0
- flyto_core-1.7.4/src/core/modules/__init__.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/__init__.py +105 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/__init__.py +43 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/analyze_readability.py +50 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_forms.py +49 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_metadata.py +48 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_tables.py +49 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/find_patterns.py +48 -0
- flyto_core-1.7.4/src/core/modules/atomic/analysis/structure.py +45 -0
- flyto_core-1.7.4/src/core/modules/atomic/api/__init__.py +9 -0
- flyto_core-1.7.4/src/core/modules/atomic/api/http_get.py +117 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/__init__.py +16 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/chunk.py +93 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/difference.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/filter.py +107 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/flatten.py +102 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/intersection.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/join.py +85 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/map.py +106 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/reduce.py +108 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/sort.py +78 -0
- flyto_core-1.7.4/src/core/modules/atomic/array/unique.py +97 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/__init__.py +39 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/click.py +70 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/close.py +77 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/console.py +101 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/cookies.py +158 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/dialog.py +143 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/download.py +110 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/drag.py +142 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/evaluate.py +96 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/extract.py +145 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/find.py +118 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/frame.py +155 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/geolocation.py +131 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/goto.py +92 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/headless_manager.py +174 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/hover.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/launch.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/network.py +228 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/pdf.py +151 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/press.py +69 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/record.py +262 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/screenshot.py +64 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/scroll.py +137 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/select.py +111 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/storage.py +152 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/tab.py +180 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/type.py +81 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/upload.py +105 -0
- flyto_core-1.7.4/src/core/modules/atomic/browser/wait.py +86 -0
- flyto_core-1.7.4/src/core/modules/atomic/communication/__init__.py +19 -0
- flyto_core-1.7.4/src/core/modules/atomic/communication/email_read.py +196 -0
- flyto_core-1.7.4/src/core/modules/atomic/communication/email_send.py +172 -0
- flyto_core-1.7.4/src/core/modules/atomic/communication/slack_send.py +122 -0
- flyto_core-1.7.4/src/core/modules/atomic/communication/webhook_trigger.py +130 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/__init__.py +18 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/csv_read.py +123 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/csv_write.py +114 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/json_parse.py +85 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/json_stringify.py +91 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/json_to_csv.py +219 -0
- flyto_core-1.7.4/src/core/modules/atomic/data/text_template.py +94 -0
- flyto_core-1.7.4/src/core/modules/atomic/database/__init__.py +15 -0
- flyto_core-1.7.4/src/core/modules/atomic/database/insert.py +261 -0
- flyto_core-1.7.4/src/core/modules/atomic/database/query.py +309 -0
- flyto_core-1.7.4/src/core/modules/atomic/database/update.py +260 -0
- flyto_core-1.7.4/src/core/modules/atomic/datetime/__init__.py +25 -0
- flyto_core-1.7.4/src/core/modules/atomic/datetime/add.py +113 -0
- flyto_core-1.7.4/src/core/modules/atomic/datetime/format.py +102 -0
- flyto_core-1.7.4/src/core/modules/atomic/datetime/parse.py +112 -0
- flyto_core-1.7.4/src/core/modules/atomic/datetime/subtract.py +110 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/__init__.py +35 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/excel_read.py +158 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/excel_write.py +159 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/pdf_fill_form.py +223 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/pdf_generate.py +200 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/pdf_parse.py +164 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/pdf_to_word.py +203 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/word_parse.py +204 -0
- flyto_core-1.7.4/src/core/modules/atomic/document/word_to_pdf.py +280 -0
- flyto_core-1.7.4/src/core/modules/atomic/element/__init__.py +6 -0
- flyto_core-1.7.4/src/core/modules/atomic/element/attribute.py +119 -0
- flyto_core-1.7.4/src/core/modules/atomic/element/query.py +149 -0
- flyto_core-1.7.4/src/core/modules/atomic/element/text.py +104 -0
- flyto_core-1.7.4/src/core/modules/atomic/element_registry.py +199 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/__init__.py +35 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/copy.py +110 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/delete.py +98 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/exists.py +82 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/move.py +102 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/read.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/file/write.py +86 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/__init__.py +44 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/branch.py +302 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/breakpoint.py +420 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/container.py +356 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/end.py +179 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/fork.py +181 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/goto.py +139 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/join.py +270 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop/__init__.py +23 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop/edge_mode.py +80 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop/module.py +417 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop/nested_mode.py +81 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop/resolver.py +81 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/loop.py +40 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/merge.py +224 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/start.py +110 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/subflow_ref.py +262 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/switch.py +302 -0
- flyto_core-1.7.4/src/core/modules/atomic/flow/trigger.py +186 -0
- flyto_core-1.7.4/src/core/modules/atomic/http/__init__.py +9 -0
- flyto_core-1.7.4/src/core/modules/atomic/http/request.py +294 -0
- flyto_core-1.7.4/src/core/modules/atomic/http/response_assert.py +414 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/__init__.py +40 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/_base.py +263 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/_runtime.py +251 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/constants.py +205 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/embedding.py +111 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/image_classification.py +85 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/speech_to_text.py +99 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/summarization.py +80 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/text_classification.py +83 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/text_generation.py +89 -0
- flyto_core-1.7.4/src/core/modules/atomic/huggingface/translation.py +85 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/__init__.py +27 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/compress.py +175 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/convert.py +192 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/download.py +149 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/qrcode_generate.py +184 -0
- flyto_core-1.7.4/src/core/modules/atomic/image/resize.py +168 -0
- flyto_core-1.7.4/src/core/modules/atomic/llm/__init__.py +9 -0
- flyto_core-1.7.4/src/core/modules/atomic/llm/chat.py +460 -0
- flyto_core-1.7.4/src/core/modules/atomic/llm/code_fix.py +355 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/__init__.py +35 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/abs.py +77 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/calculate.py +134 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/ceil.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/floor.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/power.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/math/round.py +81 -0
- flyto_core-1.7.4/src/core/modules/atomic/meta/__init__.py +11 -0
- flyto_core-1.7.4/src/core/modules/atomic/meta/generator.py +128 -0
- flyto_core-1.7.4/src/core/modules/atomic/meta/list_modules.py +250 -0
- flyto_core-1.7.4/src/core/modules/atomic/meta/update_docs.py +176 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/__init__.py +30 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/keys.py +77 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/merge.py +83 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/omit.py +79 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/pick.py +81 -0
- flyto_core-1.7.4/src/core/modules/atomic/object/values.py +77 -0
- flyto_core-1.7.4/src/core/modules/atomic/port/__init__.py +9 -0
- flyto_core-1.7.4/src/core/modules/atomic/port/check.py +214 -0
- flyto_core-1.7.4/src/core/modules/atomic/port/wait.py +238 -0
- flyto_core-1.7.4/src/core/modules/atomic/process/__init__.py +10 -0
- flyto_core-1.7.4/src/core/modules/atomic/process/list.py +149 -0
- flyto_core-1.7.4/src/core/modules/atomic/process/start.py +307 -0
- flyto_core-1.7.4/src/core/modules/atomic/process/stop.py +273 -0
- flyto_core-1.7.4/src/core/modules/atomic/shell/__init__.py +8 -0
- flyto_core-1.7.4/src/core/modules/atomic/shell/exec.py +246 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/__init__.py +40 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/lowercase.py +69 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/replace.py +82 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/reverse.py +71 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/split.py +76 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/titlecase.py +74 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/trim.py +69 -0
- flyto_core-1.7.4/src/core/modules/atomic/string/uppercase.py +69 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/__init__.py +46 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_contains.py +101 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_equal.py +101 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_greater_than.py +101 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_length.py +102 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_not_null.py +83 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/assert_true.py +83 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/e2e.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/gate.py +88 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/http_suite.py +84 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/lint.py +72 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/report.py +90 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/scenario.py +73 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/security.py +78 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/suite.py +87 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/unit.py +74 -0
- flyto_core-1.7.4/src/core/modules/atomic/testing/visual.py +78 -0
- flyto_core-1.7.4/src/core/modules/atomic/training/__init__.py +25 -0
- flyto_core-1.7.4/src/core/modules/atomic/training/analyze.py +52 -0
- flyto_core-1.7.4/src/core/modules/atomic/training/execute.py +54 -0
- flyto_core-1.7.4/src/core/modules/atomic/training/infer_schema.py +54 -0
- flyto_core-1.7.4/src/core/modules/atomic/training/stats.py +59 -0
- flyto_core-1.7.4/src/core/modules/atomic/ui/__init__.py +8 -0
- flyto_core-1.7.4/src/core/modules/atomic/ui/evaluate.py +404 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/__init__.py +14 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/datetime_now.py +141 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/delay.py +114 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/hash_md5.py +102 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/not.py +63 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/random_number.py +125 -0
- flyto_core-1.7.4/src/core/modules/atomic/utility/random_string.py +128 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/__init__.py +32 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/auto_archive.py +480 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/connector.py +252 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/embeddings.py +241 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/knowledge_manager.py +437 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/knowledge_store.py +353 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/quality_filter.py +385 -0
- flyto_core-1.7.4/src/core/modules/atomic/vector/rag.py +359 -0
- flyto_core-1.7.4/src/core/modules/atomic/vision/__init__.py +9 -0
- flyto_core-1.7.4/src/core/modules/atomic/vision/analyze.py +393 -0
- flyto_core-1.7.4/src/core/modules/atomic/vision/compare.py +319 -0
- flyto_core-1.7.4/src/core/modules/base.py +217 -0
- flyto_core-1.7.4/src/core/modules/composite/__init__.py +95 -0
- flyto_core-1.7.4/src/core/modules/composite/base/__init__.py +19 -0
- flyto_core-1.7.4/src/core/modules/composite/base/decorator.py +309 -0
- flyto_core-1.7.4/src/core/modules/composite/base/executor.py +120 -0
- flyto_core-1.7.4/src/core/modules/composite/base/module.py +172 -0
- flyto_core-1.7.4/src/core/modules/composite/base/registry.py +102 -0
- flyto_core-1.7.4/src/core/modules/composite/browser/__init__.py +10 -0
- flyto_core-1.7.4/src/core/modules/composite/browser/scrape_to_json.py +128 -0
- flyto_core-1.7.4/src/core/modules/composite/data/__init__.py +12 -0
- flyto_core-1.7.4/src/core/modules/composite/data/csv_to_json.py +96 -0
- flyto_core-1.7.4/src/core/modules/composite/data/json_transform_notify.py +114 -0
- flyto_core-1.7.4/src/core/modules/composite/developer/__init__.py +12 -0
- flyto_core-1.7.4/src/core/modules/composite/developer/api_to_notification.py +97 -0
- flyto_core-1.7.4/src/core/modules/composite/developer/github_daily_digest.py +106 -0
- flyto_core-1.7.4/src/core/modules/composite/notification/__init__.py +12 -0
- flyto_core-1.7.4/src/core/modules/composite/notification/multi_channel_alert.py +119 -0
- flyto_core-1.7.4/src/core/modules/composite/notification/scheduled_report.py +132 -0
- flyto_core-1.7.4/src/core/modules/composite/test/__init__.py +14 -0
- flyto_core-1.7.4/src/core/modules/composite/test/api_test.py +107 -0
- flyto_core-1.7.4/src/core/modules/composite/test/e2e_flow.py +101 -0
- flyto_core-1.7.4/src/core/modules/composite/test/quality_gate.py +111 -0
- flyto_core-1.7.4/src/core/modules/composite/test/ui_review.py +96 -0
- flyto_core-1.7.4/src/core/modules/composite/test/verify_fix.py +91 -0
- flyto_core-1.7.4/src/core/modules/connection_rules/__init__.py +45 -0
- flyto_core-1.7.4/src/core/modules/connection_rules/management.py +80 -0
- flyto_core-1.7.4/src/core/modules/connection_rules/models.py +42 -0
- flyto_core-1.7.4/src/core/modules/connection_rules/rules.py +661 -0
- flyto_core-1.7.4/src/core/modules/connection_rules/validation.py +246 -0
- flyto_core-1.7.4/src/core/modules/connection_rules.py +69 -0
- flyto_core-1.7.4/src/core/modules/integrations/__init__.py +48 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/__init__.py +20 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/client.py +254 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/models.py +52 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/pagination.py +141 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/rate_limiter.py +60 -0
- flyto_core-1.7.4/src/core/modules/integrations/base/webhook.py +95 -0
- flyto_core-1.7.4/src/core/modules/integrations/base.py +38 -0
- flyto_core-1.7.4/src/core/modules/integrations/jira/__init__.py +21 -0
- flyto_core-1.7.4/src/core/modules/integrations/jira/integration.py +400 -0
- flyto_core-1.7.4/src/core/modules/integrations/jira/modules/__init__.py +13 -0
- flyto_core-1.7.4/src/core/modules/integrations/jira/modules/create_issue.py +164 -0
- flyto_core-1.7.4/src/core/modules/integrations/jira/modules/search_issues.py +126 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/__init__.py +41 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/client.py +255 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/factories.py +164 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/models.py +115 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/pkce.py +37 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth/providers.py +68 -0
- flyto_core-1.7.4/src/core/modules/integrations/oauth.py +56 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/__init__.py +23 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/integration.py +397 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/__init__.py +15 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/create_record.py +126 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/query.py +130 -0
- flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/update_record.py +105 -0
- flyto_core-1.7.4/src/core/modules/integrations/slack/__init__.py +22 -0
- flyto_core-1.7.4/src/core/modules/integrations/slack/integration.py +235 -0
- flyto_core-1.7.4/src/core/modules/integrations/slack/modules/__init__.py +13 -0
- flyto_core-1.7.4/src/core/modules/integrations/slack/modules/list_channels.py +105 -0
- flyto_core-1.7.4/src/core/modules/integrations/slack/modules/send_message.py +130 -0
- flyto_core-1.7.4/src/core/modules/registry/__init__.py +36 -0
- flyto_core-1.7.4/src/core/modules/registry/catalog.py +220 -0
- flyto_core-1.7.4/src/core/modules/registry/core.py +213 -0
- flyto_core-1.7.4/src/core/modules/registry/decorators.py +457 -0
- flyto_core-1.7.4/src/core/modules/registry/localization.py +33 -0
- flyto_core-1.7.4/src/core/modules/registry/ports.py +114 -0
- flyto_core-1.7.4/src/core/modules/schema/__init__.py +57 -0
- flyto_core-1.7.4/src/core/modules/schema/builders.py +231 -0
- flyto_core-1.7.4/src/core/modules/schema/presets.py +6386 -0
- flyto_core-1.7.4/src/core/modules/schema/validators.py +199 -0
- flyto_core-1.7.4/src/core/modules/third_party/__init__.py +22 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/__init__.py +13 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/agents/__init__.py +15 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/agents/autonomous.py +224 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/agents/chain.py +182 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/agents/llm_client.py +120 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/agents.py +29 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/local_ollama.py +234 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/openai_integration.py +391 -0
- flyto_core-1.7.4/src/core/modules/third_party/ai/services.py +394 -0
- flyto_core-1.7.4/src/core/modules/third_party/cloud/__init__.py +12 -0
- flyto_core-1.7.4/src/core/modules/third_party/cloud/azure.py +348 -0
- flyto_core-1.7.4/src/core/modules/third_party/cloud/gcs.py +315 -0
- flyto_core-1.7.4/src/core/modules/third_party/cloud/storage.py +416 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/__init__.py +11 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/__init__.py +17 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/discord.py +148 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/email.py +187 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/slack.py +168 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/telegram.py +164 -0
- flyto_core-1.7.4/src/core/modules/third_party/communication/twilio.py +334 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/__init__.py +11 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/connectors/__init__.py +17 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mongodb_find.py +134 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mongodb_insert.py +129 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mysql.py +125 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/connectors/postgresql.py +110 -0
- flyto_core-1.7.4/src/core/modules/third_party/database/redis.py +246 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/__init__.py +11 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/github.py +467 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/http/__init__.py +15 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/http/requests.py +189 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/http/search.py +219 -0
- flyto_core-1.7.4/src/core/modules/third_party/developer/http.py +30 -0
- flyto_core-1.7.4/src/core/modules/third_party/payment/__init__.py +10 -0
- flyto_core-1.7.4/src/core/modules/third_party/payment/stripe.py +442 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/__init__.py +11 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/airtable.py +490 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/__init__.py +17 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/notion_create_page.py +142 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/notion_query.py +155 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/sheets_read.py +159 -0
- flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/sheets_write.py +164 -0
- flyto_core-1.7.4/src/core/modules/types/__init__.py +83 -0
- flyto_core-1.7.4/src/core/modules/types/context.py +122 -0
- flyto_core-1.7.4/src/core/modules/types/data_types.py +52 -0
- flyto_core-1.7.4/src/core/modules/types/enums.py +152 -0
- flyto_core-1.7.4/src/core/modules/types/environment.py +106 -0
- flyto_core-1.7.4/src/core/modules/types/ports.py +127 -0
- flyto_core-1.7.4/src/core/modules/types/visibility.py +93 -0
- flyto_core-1.7.4/src/core/modules/types.py +90 -0
- flyto_core-1.7.4/src/core/testing/__init__.py +55 -0
- flyto_core-1.7.4/src/core/testing/assertions.py +499 -0
- flyto_core-1.7.4/src/core/testing/runner/__init__.py +48 -0
- flyto_core-1.7.4/src/core/testing/runner/executor.py +350 -0
- flyto_core-1.7.4/src/core/testing/runner/models.py +260 -0
- flyto_core-1.7.4/src/core/testing/runner.py +42 -0
- flyto_core-1.7.4/src/core/testing/snapshot.py +476 -0
- flyto_core-1.7.4/src/core/utils.py +283 -0
- flyto_core-1.7.4/src/core/validation/__init__.py +53 -0
- flyto_core-1.7.4/src/core/validation/connection.py +254 -0
- flyto_core-1.7.4/src/core/validation/errors.py +152 -0
- flyto_core-1.7.4/src/core/validation/index.py +170 -0
- flyto_core-1.7.4/src/core/validation/workflow.py +314 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/PKG-INFO +338 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/SOURCES.txt +423 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/dependency_links.txt +1 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/entry_points.txt +2 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/requires.txt +34 -0
- flyto_core-1.7.4/src/flyto_core.egg-info/top_level.txt +2 -0
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- **Loop Module Consolidation** - Simplified loop module registrations
|
|
12
|
+
- Consolidated from 4 IDs (`core.flow.loop`, `flow.loop`, `loop`, `foreach`) to 2 clear modules
|
|
13
|
+
- `flow.loop` - Repeat N times (params: `times`, `target`)
|
|
14
|
+
- `flow.foreach` - Iterate over list (params: `items`, `steps`)
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
- **Execution Environment Safety System** (Security Feature)
|
|
18
|
+
- `ExecutionEnvironment` enum: `LOCAL` | `CLOUD` | `ALL`
|
|
19
|
+
- `LOCAL_ONLY_CATEGORIES` set for automatic environment detection
|
|
20
|
+
- `MODULE_ENVIRONMENT_OVERRIDES` dict for per-module overrides
|
|
21
|
+
- `get_module_environment()` function to determine module environment
|
|
22
|
+
- `is_module_allowed_in_environment()` function for runtime checks
|
|
23
|
+
- **LOCAL_ONLY Categories** (blocked in cloud deployment):
|
|
24
|
+
- `browser.*` - Browser automation (security risk, resource heavy)
|
|
25
|
+
- `page.*` - Browser page operations
|
|
26
|
+
- `scraper.*` - Web scraping operations
|
|
27
|
+
- `element.*` - DOM element operations
|
|
28
|
+
- `file.*` - Local filesystem access
|
|
29
|
+
- `desktop.*`, `app.*` - Desktop automation (future)
|
|
30
|
+
- **Specific LOCAL_ONLY Modules** (in otherwise cloud-safe categories):
|
|
31
|
+
- `database.sqlite_query`, `database.sqlite_execute` - Local SQLite
|
|
32
|
+
- `image.read_local` - Local file image reading
|
|
33
|
+
- `utility.shell_exec`, `utility.run_command` - Shell execution
|
|
34
|
+
|
|
35
|
+
- **P2 Feature Modules** (9 new modules)
|
|
36
|
+
- `image.resize` - Resize images with multiple algorithms (lanczos, bilinear, bicubic, nearest)
|
|
37
|
+
- `image.compress` - Compress images with quality control and target file size
|
|
38
|
+
- `pdf.generate` - Generate PDF from HTML or text content using reportlab
|
|
39
|
+
- `word.parse` - Parse Word documents (docx) to extract text, tables, images, metadata
|
|
40
|
+
- `email.read` - Read emails via IMAP with folder/filter support
|
|
41
|
+
- `slack.send` - Send Slack messages via incoming webhook with blocks/attachments
|
|
42
|
+
- `webhook.trigger` - Send HTTP requests to webhook endpoints (GET/POST/PUT/PATCH/DELETE)
|
|
43
|
+
- `database.insert` - Insert data into database tables (PostgreSQL, MySQL, SQLite)
|
|
44
|
+
- `database.update` - Update data in database tables with WHERE conditions
|
|
45
|
+
|
|
46
|
+
- **P1 Feature Modules** (7 new modules)
|
|
47
|
+
- `image.download` - Download images from URL with custom headers
|
|
48
|
+
- `image.convert` - Convert images between formats (PNG, JPEG, WEBP, etc.)
|
|
49
|
+
- `pdf.parse` - Extract text and metadata from PDF files
|
|
50
|
+
- `excel.read` - Read data from Excel files (xlsx, xls)
|
|
51
|
+
- `excel.write` - Write data to Excel files with auto-width columns
|
|
52
|
+
- `email.send` - Send emails via SMTP with attachments support
|
|
53
|
+
- `database.query` - Execute SQL queries on PostgreSQL, MySQL, SQLite
|
|
54
|
+
|
|
55
|
+
- **Module Tiered Architecture** (ADR-001)
|
|
56
|
+
- `UIVisibility` enum for module UI visibility control (DEFAULT/EXPERT/HIDDEN)
|
|
57
|
+
- `ContextType` enum for module context requirements (browser/page/file/data/api_response)
|
|
58
|
+
- `requires_context` and `provides_context` fields in `@register_module`
|
|
59
|
+
- `ui_visibility`, `ui_label`, `ui_description`, `ui_group`, `ui_icon`, `ui_color` fields
|
|
60
|
+
- `ui_params_schema` for automatic UI form generation in composites
|
|
61
|
+
- `ConnectionValidator` class for workflow validation
|
|
62
|
+
- `can_connect()` and `validate_workflow()` helper functions
|
|
63
|
+
- `DEFAULT_CONTEXT_REQUIREMENTS` and `DEFAULT_CONTEXT_PROVISIONS` for category-based defaults
|
|
64
|
+
|
|
65
|
+
- **Smart UI Visibility Auto-Detection**
|
|
66
|
+
- `DEFAULT_VISIBILITY_CATEGORIES` mapping in `types.py` for category-based visibility
|
|
67
|
+
- `get_default_visibility(category)` helper function
|
|
68
|
+
- Categories automatically classified:
|
|
69
|
+
- **DEFAULT** (shown to all users): `ai`, `agent`, `notification`, `communication`, `api`, `browser`, `cloud`, `database`, `db`, `productivity`, `payment`, `image`
|
|
70
|
+
- **EXPERT** (advanced users): `string`, `text`, `array`, `object`, `math`, `datetime`, `file`, `element`, `flow`, `data`, `utility`, `meta`, `test`, `atomic`
|
|
71
|
+
|
|
72
|
+
- **Architecture Documentation**
|
|
73
|
+
- `docs/architecture/ADR_001_MODULE_TIERED_ARCHITECTURE.md`
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
- `@register_module` decorator now supports context-based connection validation
|
|
77
|
+
- `@register_module` decorator now auto-detects `ui_visibility` based on category when not specified
|
|
78
|
+
- `@register_composite` decorator now supports UI form generation via `ui_params_schema`
|
|
79
|
+
- `ModuleLevel` enum extended with COMPOSITE, TEMPLATE, PATTERN levels
|
|
80
|
+
- Composite modules now default to `ui_visibility=DEFAULT` (visible to normal users)
|
|
81
|
+
- Atomic modules visibility now depends on category (see Smart UI Visibility above)
|
|
82
|
+
|
|
83
|
+
### Deprecated
|
|
84
|
+
- Legacy `label`, `description`, `icon`, `color` fields in favor of `ui_*` prefixed versions
|
|
85
|
+
|
|
86
|
+
### Important Notes for Module Developers
|
|
87
|
+
|
|
88
|
+
**UI Visibility Classification:**
|
|
89
|
+
|
|
90
|
+
When creating new modules, the `ui_visibility` is now auto-detected based on category:
|
|
91
|
+
|
|
92
|
+
```python
|
|
93
|
+
# These categories will show in the main module list (DEFAULT):
|
|
94
|
+
# ai, agent, notification, api, browser, cloud, database, productivity, payment, image
|
|
95
|
+
|
|
96
|
+
@register_module(
|
|
97
|
+
module_id="ai.my_new_model",
|
|
98
|
+
category="ai",
|
|
99
|
+
# ui_visibility auto-detected as DEFAULT (user-facing)
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# These categories will show in Expert Mode only (EXPERT):
|
|
103
|
+
# string, array, object, math, datetime, file, element, flow, data, utility, meta, test
|
|
104
|
+
|
|
105
|
+
@register_module(
|
|
106
|
+
module_id="string.custom_parser",
|
|
107
|
+
category="string",
|
|
108
|
+
# ui_visibility auto-detected as EXPERT (programming primitive)
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
# To override auto-detection:
|
|
112
|
+
@register_module(
|
|
113
|
+
module_id="browser.internal_helper",
|
|
114
|
+
category="browser",
|
|
115
|
+
ui_visibility=UIVisibility.HIDDEN, # Explicitly hide from UI
|
|
116
|
+
)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Visibility Guidelines:**
|
|
120
|
+
- **DEFAULT**: Complete, standalone features users can use directly (e.g., "Send Slack Message", "Generate Image with DALL-E")
|
|
121
|
+
- **EXPERT**: Low-level operations requiring programming knowledge (e.g., "Split String", "Filter Array", "Click Element")
|
|
122
|
+
- **HIDDEN**: Internal system modules not meant for direct user access
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## [1.5.0] - 2025-12-04
|
|
127
|
+
|
|
128
|
+
### Added
|
|
129
|
+
- **Level 4: Advanced Patterns** - Enterprise-grade execution patterns (`src/core/modules/patterns/`)
|
|
130
|
+
- `BasePattern` base class for all patterns
|
|
131
|
+
- `PatternRegistry` for managing patterns
|
|
132
|
+
- `PatternExecutor` for unified pattern execution
|
|
133
|
+
- `@register_pattern` decorator for easy registration
|
|
134
|
+
- `PatternResult` and `PatternState` for execution tracking
|
|
135
|
+
|
|
136
|
+
- **Retry Patterns**
|
|
137
|
+
- `pattern.retry.exponential_backoff` - Exponential backoff with jitter
|
|
138
|
+
- `pattern.retry.linear_backoff` - Linear delay increase
|
|
139
|
+
|
|
140
|
+
- **Parallel Patterns**
|
|
141
|
+
- `pattern.parallel.map` - Parallel execution with concurrency control
|
|
142
|
+
- `pattern.parallel.race` - Execute multiple functions, return first success
|
|
143
|
+
|
|
144
|
+
- **Resilience Patterns**
|
|
145
|
+
- `pattern.circuit_breaker` - Circuit breaker with CLOSED/OPEN/HALF_OPEN states
|
|
146
|
+
|
|
147
|
+
- **Rate Limiting Patterns**
|
|
148
|
+
- `pattern.rate_limiter.token_bucket` - Token bucket algorithm
|
|
149
|
+
- `pattern.rate_limiter.sliding_window` - Sliding window algorithm
|
|
150
|
+
|
|
151
|
+
- **Batch Patterns**
|
|
152
|
+
- `pattern.batch.processor` - Batch processing with chunking
|
|
153
|
+
- `pattern.batch.aggregator` - Aggregate items and flush on threshold
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
- Four-Level Module Architecture now complete:
|
|
157
|
+
- Level 1: Workflow Templates (6 templates)
|
|
158
|
+
- Level 2: Atomic Modules (150+ modules)
|
|
159
|
+
- Level 3: Composite Modules (7 modules)
|
|
160
|
+
- Level 4: Advanced Patterns (9 patterns)
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## [1.4.0] - 2025-12-04
|
|
165
|
+
|
|
166
|
+
### Added
|
|
167
|
+
- **Four-Level Module Architecture Implementation**
|
|
168
|
+
- Level 3: Composite Modules (7 modules across 4 categories)
|
|
169
|
+
- Level 1: Workflow Templates (6 marketplace-ready templates)
|
|
170
|
+
|
|
171
|
+
- **Composite Module System** (`src/core/modules/composite/`)
|
|
172
|
+
- `CompositeModule` base class for high-level workflows
|
|
173
|
+
- `CompositeRegistry` for managing composite modules
|
|
174
|
+
- `CompositeExecutor` for executing composite workflows
|
|
175
|
+
- `@register_composite` decorator for easy module registration
|
|
176
|
+
|
|
177
|
+
- **Browser Composites**
|
|
178
|
+
- `composite.browser.search_and_notify` - Web search with notification
|
|
179
|
+
- `composite.browser.scrape_to_json` - Web scraping to JSON
|
|
180
|
+
- `composite.browser.screenshot_and_save` - Screenshot capture
|
|
181
|
+
|
|
182
|
+
- **Developer Composites**
|
|
183
|
+
- `composite.developer.github_daily_digest` - GitHub repo monitoring
|
|
184
|
+
- `composite.developer.api_to_notification` - API to notification pipeline
|
|
185
|
+
|
|
186
|
+
- **Notification Composites**
|
|
187
|
+
- `composite.notification.multi_channel_alert` - Multi-channel alerts
|
|
188
|
+
- `composite.notification.scheduled_report` - Scheduled report delivery
|
|
189
|
+
|
|
190
|
+
- **Data Composites**
|
|
191
|
+
- `composite.data.csv_to_json` - CSV to JSON conversion
|
|
192
|
+
- `composite.data.json_transform_notify` - JSON transform with notification
|
|
193
|
+
|
|
194
|
+
- **Level 1 Workflow Templates** (`workflows/templates/`)
|
|
195
|
+
- `google_search_to_slack.yaml` - Google search to Slack
|
|
196
|
+
- `github_repo_monitor.yaml` - GitHub repository monitoring
|
|
197
|
+
- `webpage_screenshot.yaml` - Webpage screenshot capture
|
|
198
|
+
- `multi_channel_alert.yaml` - Multi-channel alert system
|
|
199
|
+
- `web_scraper.yaml` - Web scraping workflow
|
|
200
|
+
- `api_monitor.yaml` - API health monitoring
|
|
201
|
+
|
|
202
|
+
### Changed
|
|
203
|
+
- Updated `composite/__init__.py` to export all composite modules
|
|
204
|
+
- Composite modules now support variable resolution with `${params.*}`, `${steps.*}`, `${env.*}`
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## [1.3.0] - 2025-12-04
|
|
209
|
+
|
|
210
|
+
### Added
|
|
211
|
+
- New constants for AI models: `DEFAULT_ANTHROPIC_MODEL`, `DEFAULT_GEMINI_MODEL`
|
|
212
|
+
- Environment variable constants: `GOOGLE_AI_API_KEY`, `SLACK_WEBHOOK_URL`, `DISCORD_WEBHOOK_URL`, `TELEGRAM_BOT_TOKEN`
|
|
213
|
+
- Logging to all third-party integration modules
|
|
214
|
+
|
|
215
|
+
### Changed
|
|
216
|
+
- **third_party/ai/agents.py**: Use `OLLAMA_DEFAULT_URL`, `APIEndpoints.DEFAULT_OPENAI_MODEL`, `EnvVars.OPENAI_API_KEY`, `DEFAULT_LLM_MAX_TOKENS`
|
|
217
|
+
- **third_party/ai/local_ollama.py**: Use `OLLAMA_DEFAULT_URL` instead of hardcoded URL
|
|
218
|
+
- **third_party/ai/openai_integration.py**: Use `APIEndpoints.DEFAULT_OPENAI_MODEL`, `EnvVars.OPENAI_API_KEY`
|
|
219
|
+
- **third_party/ai/services.py**: Use centralized API endpoints for Anthropic and Google Gemini
|
|
220
|
+
- **third_party/communication/twilio.py**: Use `APIEndpoints.twilio_messages()`, `EnvVars.TWILIO_*`
|
|
221
|
+
- **third_party/communication/messaging.py**: Use `EnvVars` for Slack, Discord, Telegram
|
|
222
|
+
- **third_party/developer/github.py**: Use `APIEndpoints.github_*()`, `EnvVars.GITHUB_TOKEN`
|
|
223
|
+
- **third_party/payment/stripe.py**: Use `APIEndpoints.STRIPE_*`, `EnvVars.STRIPE_API_KEY`
|
|
224
|
+
- **third_party/productivity/airtable.py**: Use `APIEndpoints.airtable_table()`, `EnvVars.AIRTABLE_API_KEY`
|
|
225
|
+
- **third_party/productivity/tools.py**: Use `APIEndpoints.notion_*()`, `EnvVars.NOTION_API_KEY`
|
|
226
|
+
- Moved all inline `import os` statements to file-level imports
|
|
227
|
+
- All error messages now use f-strings with constant names for clarity
|
|
228
|
+
|
|
229
|
+
### Fixed
|
|
230
|
+
- Removed duplicate `import json` statements
|
|
231
|
+
- Consistent logging pattern across all modules
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## [1.2.0] - 2025-12-04
|
|
236
|
+
|
|
237
|
+
### Added
|
|
238
|
+
- Browser constants: `DEFAULT_BROWSER_TIMEOUT_MS`, `DEFAULT_VIEWPORT_WIDTH`, `DEFAULT_VIEWPORT_HEIGHT`, `DEFAULT_USER_AGENT`
|
|
239
|
+
- LLM constants: `DEFAULT_LLM_MAX_TOKENS`, `OLLAMA_DEFAULT_URL`, `OLLAMA_EMBEDDINGS_ENDPOINT`
|
|
240
|
+
- Validation constants: `MIN_DESCRIPTION_LENGTH`, `MAX_DESCRIPTION_LENGTH`, `MAX_TIMEOUT_LIMIT`, `MAX_RETRIES_LIMIT`
|
|
241
|
+
- Extended `APIEndpoints` class with Anthropic, Notion, Twilio, OpenAI endpoints
|
|
242
|
+
- Extended `EnvVars` class with database and cloud storage variables
|
|
243
|
+
- New utility functions: `truncate_string()`, `ensure_list()`, `ensure_dict()`, `safe_execute()`, `log_execution()`
|
|
244
|
+
|
|
245
|
+
### Changed
|
|
246
|
+
- **browser/driver.py**: Use constants instead of hardcoded timeouts and viewport sizes
|
|
247
|
+
- **vector/auto_archive.py**: Replace `print()` with `logger.debug()`/`logger.error()`
|
|
248
|
+
- **vector/embeddings.py**: Use constants and improved exception handling
|
|
249
|
+
- **string/*.py**: Convert absolute imports to relative imports
|
|
250
|
+
- **cli/main.py**: Extract constants, use logging, remove `os.system()`
|
|
251
|
+
|
|
252
|
+
### Fixed
|
|
253
|
+
- **utility/not.py**: Implement complete logical negation (was TODO placeholder)
|
|
254
|
+
- Security issue: Replaced `os.system('clear')` with ANSI escape sequence
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## [1.1.0] - 2025-12-04
|
|
259
|
+
|
|
260
|
+
### Added
|
|
261
|
+
- `src/core/constants.py` - Centralized constants management
|
|
262
|
+
- `DEFAULT_MAX_RETRIES`, `DEFAULT_RETRY_DELAY_MS`, `DEFAULT_TIMEOUT_SECONDS`
|
|
263
|
+
- `EXPONENTIAL_BACKOFF_BASE`, `MAX_LOG_RESULT_LENGTH`
|
|
264
|
+
- `WorkflowStatus` enum class
|
|
265
|
+
- `APIEndpoints` class for API URL management
|
|
266
|
+
- `EnvVars` class for environment variable names
|
|
267
|
+
- `ErrorMessages` class for error message templates
|
|
268
|
+
- `src/core/utils.py` - Shared utility functions
|
|
269
|
+
- `get_api_key()` - Retrieve API keys from environment
|
|
270
|
+
- `validate_api_key()` - Validate API key presence
|
|
271
|
+
- `validate_required_param()` - Validate required parameters
|
|
272
|
+
- `get_param()` - Get parameter with default value
|
|
273
|
+
- `auto_convert_type()` - Automatic type conversion
|
|
274
|
+
|
|
275
|
+
### Changed
|
|
276
|
+
- **base.py**: Added `get_param()` and `require_param()` methods
|
|
277
|
+
- **workflow_engine.py**: Use constants and relative imports
|
|
278
|
+
- **registry.py**: Use logger instead of print statements
|
|
279
|
+
- All hardcoded magic numbers moved to constants
|
|
280
|
+
- Unified relative import paths across modules
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## [1.0.0] - 2025-12-04
|
|
285
|
+
|
|
286
|
+
### Added
|
|
287
|
+
- Initial release of Flyto Core
|
|
288
|
+
- YAML workflow automation engine
|
|
289
|
+
- 127+ atomic modules across categories:
|
|
290
|
+
- `string.*` - Text manipulation (8 modules)
|
|
291
|
+
- `array.*` - Array operations (10 modules)
|
|
292
|
+
- `object.*` - Object manipulation (5 modules)
|
|
293
|
+
- `file.*` - File system operations (6 modules)
|
|
294
|
+
- `datetime.*` - Date/time operations (4 modules)
|
|
295
|
+
- `math.*` - Mathematical operations (7 modules)
|
|
296
|
+
- `data.*` - Data parsing (5 modules)
|
|
297
|
+
- `browser.*` - Browser automation (9 modules)
|
|
298
|
+
- `utility.*` - Utilities (7 modules)
|
|
299
|
+
- `ai.*` - AI integrations (4 modules)
|
|
300
|
+
- CLI interface with interactive mode
|
|
301
|
+
- Variable resolution with `${step_id.field}` syntax
|
|
302
|
+
- Error handling with retry support
|
|
303
|
+
- Internationalization (en, zh, ja)
|
|
304
|
+
- Playwright integration for browser automation
|
|
305
|
+
- Third-party integrations:
|
|
306
|
+
- AI: OpenAI, Anthropic, Ollama
|
|
307
|
+
- Communication: Twilio, Slack, Discord, Telegram
|
|
308
|
+
- Developer: GitHub, HTTP APIs
|
|
309
|
+
- Payment: Stripe
|
|
310
|
+
- Productivity: Notion, Airtable, Google Sheets
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Version History Summary
|
|
315
|
+
|
|
316
|
+
| Version | Date | Highlights |
|
|
317
|
+
|---------|------|------------|
|
|
318
|
+
| 1.5.0 | 2025-12-04 | Level 4 Advanced Patterns (Enterprise) |
|
|
319
|
+
| 1.4.0 | 2025-12-04 | Level 3 Composite Modules + Level 1 Templates |
|
|
320
|
+
| 1.3.0 | 2025-12-04 | Third-party module refactoring |
|
|
321
|
+
| 1.2.0 | 2025-12-04 | Browser/LLM constants, utility functions |
|
|
322
|
+
| 1.1.0 | 2025-12-04 | Constants and utils infrastructure |
|
|
323
|
+
| 1.0.0 | 2025-12-04 | Initial release |
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
[Unreleased]: https://github.com/flytohub/flyto-core/compare/v1.5.0...HEAD
|
|
328
|
+
[1.5.0]: https://github.com/flytohub/flyto-core/compare/v1.4.0...v1.5.0
|
|
329
|
+
[1.4.0]: https://github.com/flytohub/flyto-core/compare/v1.3.0...v1.4.0
|
|
330
|
+
[1.3.0]: https://github.com/flytohub/flyto-core/compare/v1.2.0...v1.3.0
|
|
331
|
+
[1.2.0]: https://github.com/flytohub/flyto-core/compare/v1.1.0...v1.2.0
|
|
332
|
+
[1.1.0]: https://github.com/flytohub/flyto-core/compare/v1.0.0...v1.1.0
|
|
333
|
+
[1.0.0]: https://github.com/flytohub/flyto-core/releases/tag/v1.0.0
|
flyto_core-1.7.4/LICENSE
ADDED
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# Flyto Core License
|
|
2
|
+
|
|
3
|
+
## Source Available License v1.0
|
|
4
|
+
|
|
5
|
+
**Copyright (c) 2025 Flyto. All Rights Reserved.**
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Summary
|
|
10
|
+
|
|
11
|
+
| Permission | Status |
|
|
12
|
+
|------------|--------|
|
|
13
|
+
| ✅ View source code | Allowed |
|
|
14
|
+
| ✅ Use for personal projects | Allowed |
|
|
15
|
+
| ✅ Use for internal business operations | Allowed |
|
|
16
|
+
| ✅ Modify for personal/internal use | Allowed |
|
|
17
|
+
| ✅ Educational and research use | Allowed |
|
|
18
|
+
| ❌ Sell the software | **Not Allowed** |
|
|
19
|
+
| ❌ Offer as a commercial service | **Not Allowed** |
|
|
20
|
+
| ❌ Include in commercial products | **Not Allowed** |
|
|
21
|
+
| ❌ Redistribute for profit | **Not Allowed** |
|
|
22
|
+
|
|
23
|
+
For commercial licensing, see [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md).
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## 1. Definitions
|
|
28
|
+
|
|
29
|
+
**1.1 "Software"** means the Flyto Core source code, documentation, configuration files, and any associated materials made available under this License.
|
|
30
|
+
|
|
31
|
+
**1.2 "Licensor"** means Flyto and its affiliates, the copyright holder of the Software.
|
|
32
|
+
|
|
33
|
+
**1.3 "You" (or "Your")** means the individual or legal entity exercising permissions granted by this License.
|
|
34
|
+
|
|
35
|
+
**1.4 "Commercial Use"** means any use of the Software that is primarily intended for or directed toward commercial advantage or monetary compensation. This includes, but is not limited to:
|
|
36
|
+
|
|
37
|
+
- (a) Selling the Software or any derivative works;
|
|
38
|
+
- (b) Offering the Software as a hosted service, SaaS, PaaS, or any cloud-based service;
|
|
39
|
+
- (c) Integrating the Software into products or services that are sold or licensed for a fee;
|
|
40
|
+
- (d) Using the Software to provide paid consulting, implementation, or support services where the Software is a primary component of the service offering;
|
|
41
|
+
- (e) Bundling the Software with commercial hardware or software packages.
|
|
42
|
+
|
|
43
|
+
**1.5 "Non-Commercial Use"** means any use that does not constitute Commercial Use, including:
|
|
44
|
+
|
|
45
|
+
- (a) Personal projects and learning;
|
|
46
|
+
- (b) Academic research and education;
|
|
47
|
+
- (c) Internal business operations where the Software is not offered to third parties;
|
|
48
|
+
- (d) Non-profit organizational use;
|
|
49
|
+
- (e) Open-source projects that are themselves non-commercial.
|
|
50
|
+
|
|
51
|
+
**1.6 "Derivative Works"** means any work that is based on or derived from the Software, including modifications, translations, adaptations, or any work that would constitute a derivative work under copyright law.
|
|
52
|
+
|
|
53
|
+
**1.7 "Contribution"** means any work of authorship submitted to the Licensor for inclusion in the Software.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 2. Grant of Rights
|
|
58
|
+
|
|
59
|
+
Subject to the terms and conditions of this License, the Licensor hereby grants You a worldwide, royalty-free, non-exclusive, non-transferable license to:
|
|
60
|
+
|
|
61
|
+
**2.1 View and Study**
|
|
62
|
+
- Access and read the source code;
|
|
63
|
+
- Study the Software's design, architecture, and implementation.
|
|
64
|
+
|
|
65
|
+
**2.2 Use for Non-Commercial Purposes**
|
|
66
|
+
- Execute and run the Software for Non-Commercial Use;
|
|
67
|
+
- Use the Software for personal projects, education, and research;
|
|
68
|
+
- Use the Software for internal business operations.
|
|
69
|
+
|
|
70
|
+
**2.3 Modify for Non-Commercial Purposes**
|
|
71
|
+
- Create Derivative Works for Non-Commercial Use;
|
|
72
|
+
- Adapt the Software to Your specific non-commercial needs.
|
|
73
|
+
|
|
74
|
+
**2.4 Distribute for Non-Commercial Purposes**
|
|
75
|
+
- Share the Software with others for Non-Commercial Use;
|
|
76
|
+
- Publish Derivative Works under the same license terms.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 3. Restrictions
|
|
81
|
+
|
|
82
|
+
**3.1 Commercial Use Prohibited**
|
|
83
|
+
You may NOT use the Software for any Commercial Use without obtaining a separate commercial license from the Licensor. Any Commercial Use without proper licensing is a violation of this License and may result in legal action.
|
|
84
|
+
|
|
85
|
+
**3.2 No Sublicensing for Commercial Purposes**
|
|
86
|
+
You may NOT grant sublicenses that permit Commercial Use of the Software.
|
|
87
|
+
|
|
88
|
+
**3.3 No Removal of Notices**
|
|
89
|
+
You may NOT remove, alter, or obscure any copyright, trademark, or attribution notices included in the Software.
|
|
90
|
+
|
|
91
|
+
**3.4 No Misrepresentation**
|
|
92
|
+
You may NOT misrepresent the origin of the Software or claim that You created the original Software.
|
|
93
|
+
|
|
94
|
+
**3.5 No Trademark Rights**
|
|
95
|
+
This License does NOT grant You any rights to use the Licensor's trademarks, trade names, logos, or service marks.
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## 4. Attribution Requirements
|
|
100
|
+
|
|
101
|
+
**4.1 Retention of Notices**
|
|
102
|
+
You must retain all copyright, patent, trademark, and attribution notices present in the Software.
|
|
103
|
+
|
|
104
|
+
**4.2 Derivative Works Attribution**
|
|
105
|
+
If You create Derivative Works, You must:
|
|
106
|
+
- (a) Include a prominent notice stating that You have modified the Software;
|
|
107
|
+
- (b) Retain this License file in its entirety;
|
|
108
|
+
- (c) Include the following attribution in Your documentation or user interface:
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
Powered by Flyto Core (https://github.com/flytohub/flyto-core)
|
|
112
|
+
Licensed under the Flyto Source Available License
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 5. Contributions
|
|
118
|
+
|
|
119
|
+
**5.1 Contribution License**
|
|
120
|
+
By submitting a Contribution to the Licensor, You agree that:
|
|
121
|
+
- (a) Your Contribution is Your original work or You have the right to submit it;
|
|
122
|
+
- (b) You grant the Licensor a perpetual, worldwide, non-exclusive, royalty-free license to use, modify, and distribute Your Contribution;
|
|
123
|
+
- (c) Your Contribution may be included in both open-source and commercial versions of the Software.
|
|
124
|
+
|
|
125
|
+
**5.2 No Compensation**
|
|
126
|
+
Unless separately agreed in writing, Contributions are provided without expectation of compensation.
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 6. Disclaimer of Warranty
|
|
131
|
+
|
|
132
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE, AND NON-INFRINGEMENT.
|
|
133
|
+
|
|
134
|
+
THE LICENSOR DOES NOT WARRANT THAT:
|
|
135
|
+
- (a) The Software will meet Your requirements;
|
|
136
|
+
- (b) The Software will be uninterrupted, timely, secure, or error-free;
|
|
137
|
+
- (c) The results obtained from using the Software will be accurate or reliable;
|
|
138
|
+
- (d) Any errors in the Software will be corrected.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 7. Limitation of Liability
|
|
143
|
+
|
|
144
|
+
IN NO EVENT SHALL THE LICENSOR BE LIABLE FOR ANY:
|
|
145
|
+
- (a) Indirect, incidental, special, consequential, or punitive damages;
|
|
146
|
+
- (b) Loss of profits, revenue, data, or business opportunities;
|
|
147
|
+
- (c) Cost of procurement of substitute goods or services;
|
|
148
|
+
- (d) Business interruption;
|
|
149
|
+
|
|
150
|
+
ARISING OUT OF OR IN CONNECTION WITH THIS LICENSE OR THE USE OR INABILITY TO USE THE SOFTWARE, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
|
|
151
|
+
|
|
152
|
+
THE LICENSOR'S TOTAL LIABILITY SHALL NOT EXCEED THE AMOUNT YOU PAID FOR THE SOFTWARE (IF ANY), OR ONE HUNDRED DOLLARS ($100 USD), WHICHEVER IS GREATER.
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## 8. Term and Termination
|
|
157
|
+
|
|
158
|
+
**8.1 Term**
|
|
159
|
+
This License is effective until terminated.
|
|
160
|
+
|
|
161
|
+
**8.2 Automatic Termination**
|
|
162
|
+
This License terminates automatically if You:
|
|
163
|
+
- (a) Fail to comply with any term of this License;
|
|
164
|
+
- (b) Engage in Commercial Use without proper licensing;
|
|
165
|
+
- (c) Initiate patent litigation against the Licensor regarding the Software.
|
|
166
|
+
|
|
167
|
+
**8.3 Effect of Termination**
|
|
168
|
+
Upon termination:
|
|
169
|
+
- (a) All rights granted under this License cease immediately;
|
|
170
|
+
- (b) You must destroy all copies of the Software in Your possession;
|
|
171
|
+
- (c) Sections 6, 7, 9, and 10 survive termination.
|
|
172
|
+
|
|
173
|
+
**8.4 Reinstatement**
|
|
174
|
+
If You cure a violation within 30 days of becoming aware of it, Your rights under this License may be reinstated at the Licensor's discretion.
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 9. Governing Law and Dispute Resolution
|
|
179
|
+
|
|
180
|
+
**9.1 Governing Law**
|
|
181
|
+
This License shall be governed by and construed in accordance with the laws of the jurisdiction in which the Licensor is incorporated, without regard to conflict of law principles.
|
|
182
|
+
|
|
183
|
+
**9.2 Dispute Resolution**
|
|
184
|
+
Any disputes arising under this License shall be resolved through:
|
|
185
|
+
- (a) Good faith negotiation between the parties;
|
|
186
|
+
- (b) If negotiation fails, binding arbitration under internationally recognized arbitration rules;
|
|
187
|
+
- (c) The prevailing party shall be entitled to recover reasonable attorneys' fees.
|
|
188
|
+
|
|
189
|
+
**9.3 Injunctive Relief**
|
|
190
|
+
The Licensor may seek injunctive relief in any court of competent jurisdiction to prevent unauthorized Commercial Use.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## 10. General Provisions
|
|
195
|
+
|
|
196
|
+
**10.1 Entire Agreement**
|
|
197
|
+
This License constitutes the entire agreement between You and the Licensor regarding the Software and supersedes all prior agreements.
|
|
198
|
+
|
|
199
|
+
**10.2 Severability**
|
|
200
|
+
If any provision of this License is held to be unenforceable, the remaining provisions shall remain in full force and effect.
|
|
201
|
+
|
|
202
|
+
**10.3 No Waiver**
|
|
203
|
+
Failure to enforce any provision of this License does not constitute a waiver of that provision or any other provision.
|
|
204
|
+
|
|
205
|
+
**10.4 Assignment**
|
|
206
|
+
You may not assign or transfer this License without the Licensor's prior written consent. The Licensor may assign this License without restriction.
|
|
207
|
+
|
|
208
|
+
**10.5 Amendments**
|
|
209
|
+
The Licensor may publish revised versions of this License. You may choose to use the Software under the terms of the version under which You originally received it.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## 11. Commercial Licensing
|
|
214
|
+
|
|
215
|
+
For Commercial Use, You must obtain a commercial license from the Licensor.
|
|
216
|
+
|
|
217
|
+
**Contact Information:**
|
|
218
|
+
- Email: licensing@flyto.dev
|
|
219
|
+
- Website: https://flyto.dev/licensing
|
|
220
|
+
- See: [LICENSE-COMMERCIAL.md](LICENSE-COMMERCIAL.md)
|
|
221
|
+
|
|
222
|
+
Commercial licenses are available with:
|
|
223
|
+
- Full commercial use rights
|
|
224
|
+
- Priority support
|
|
225
|
+
- Custom terms and conditions
|
|
226
|
+
- Enterprise deployment options
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## 12. Quick Reference
|
|
231
|
+
|
|
232
|
+
### What You CAN Do (Non-Commercial)
|
|
233
|
+
|
|
234
|
+
| Activity | Allowed |
|
|
235
|
+
|----------|---------|
|
|
236
|
+
| Read and study the source code | ✅ |
|
|
237
|
+
| Use for personal projects | ✅ |
|
|
238
|
+
| Use for learning and education | ✅ |
|
|
239
|
+
| Use for academic research | ✅ |
|
|
240
|
+
| Use internally within your company | ✅ |
|
|
241
|
+
| Modify for your own use | ✅ |
|
|
242
|
+
| Share with attribution | ✅ |
|
|
243
|
+
| Contribute improvements | ✅ |
|
|
244
|
+
|
|
245
|
+
### What You CANNOT Do (Without Commercial License)
|
|
246
|
+
|
|
247
|
+
| Activity | Prohibited |
|
|
248
|
+
|----------|------------|
|
|
249
|
+
| Sell the software | ❌ |
|
|
250
|
+
| Offer as SaaS/cloud service | ❌ |
|
|
251
|
+
| Include in commercial products | ❌ |
|
|
252
|
+
| Provide paid services using the software | ❌ |
|
|
253
|
+
| Remove copyright notices | ❌ |
|
|
254
|
+
| Claim you created it | ❌ |
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
**Flyto Core — Source Available License v1.0**
|
|
259
|
+
|
|
260
|
+
Copyright (c) 2025 Flyto. All Rights Reserved.
|
|
261
|
+
|
|
262
|
+
For questions about this license, contact: licensing@flyto2.com
|