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.
Files changed (425) hide show
  1. flyto_core-1.7.4/CHANGELOG.md +333 -0
  2. flyto_core-1.7.4/LICENSE +262 -0
  3. flyto_core-1.7.4/LICENSE-COMMERCIAL.md +411 -0
  4. flyto_core-1.7.4/LICENSE-HEADER.txt +164 -0
  5. flyto_core-1.7.4/MANIFEST.in +16 -0
  6. flyto_core-1.7.4/NOTICE +151 -0
  7. flyto_core-1.7.4/PKG-INFO +338 -0
  8. flyto_core-1.7.4/README.md +278 -0
  9. flyto_core-1.7.4/i18n/en.json +244 -0
  10. flyto_core-1.7.4/i18n/ja.json +244 -0
  11. flyto_core-1.7.4/i18n/zh.json +244 -0
  12. flyto_core-1.7.4/pyproject.toml +119 -0
  13. flyto_core-1.7.4/setup.cfg +4 -0
  14. flyto_core-1.7.4/setup.py +8 -0
  15. flyto_core-1.7.4/src/cli/__init__.py +10 -0
  16. flyto_core-1.7.4/src/cli/config.py +44 -0
  17. flyto_core-1.7.4/src/cli/i18n.py +49 -0
  18. flyto_core-1.7.4/src/cli/interactive.py +409 -0
  19. flyto_core-1.7.4/src/cli/main.py +157 -0
  20. flyto_core-1.7.4/src/cli/params.py +127 -0
  21. flyto_core-1.7.4/src/cli/runner.py +138 -0
  22. flyto_core-1.7.4/src/cli/ui.py +41 -0
  23. flyto_core-1.7.4/src/cli/workflow.py +178 -0
  24. flyto_core-1.7.4/src/core/__init__.py +93 -0
  25. flyto_core-1.7.4/src/core/browser/__init__.py +6 -0
  26. flyto_core-1.7.4/src/core/browser/driver.py +485 -0
  27. flyto_core-1.7.4/src/core/catalog/__init__.py +30 -0
  28. flyto_core-1.7.4/src/core/catalog/category.py +125 -0
  29. flyto_core-1.7.4/src/core/catalog/module.py +229 -0
  30. flyto_core-1.7.4/src/core/catalog/outline.py +194 -0
  31. flyto_core-1.7.4/src/core/constants.py +381 -0
  32. flyto_core-1.7.4/src/core/engine/__init__.py +143 -0
  33. flyto_core-1.7.4/src/core/engine/breakpoint.py +62 -0
  34. flyto_core-1.7.4/src/core/engine/breakpoints/__init__.py +44 -0
  35. flyto_core-1.7.4/src/core/engine/breakpoints/manager.py +382 -0
  36. flyto_core-1.7.4/src/core/engine/breakpoints/models.py +162 -0
  37. flyto_core-1.7.4/src/core/engine/breakpoints/store.py +136 -0
  38. flyto_core-1.7.4/src/core/engine/evidence/__init__.py +33 -0
  39. flyto_core-1.7.4/src/core/engine/evidence/executor_hooks.py +229 -0
  40. flyto_core-1.7.4/src/core/engine/evidence/hook.py +188 -0
  41. flyto_core-1.7.4/src/core/engine/evidence/models.py +65 -0
  42. flyto_core-1.7.4/src/core/engine/evidence/store.py +266 -0
  43. flyto_core-1.7.4/src/core/engine/evidence.py +50 -0
  44. flyto_core-1.7.4/src/core/engine/exceptions.py +48 -0
  45. flyto_core-1.7.4/src/core/engine/flow_control.py +189 -0
  46. flyto_core-1.7.4/src/core/engine/hooks/__init__.py +82 -0
  47. flyto_core-1.7.4/src/core/engine/hooks/base.py +144 -0
  48. flyto_core-1.7.4/src/core/engine/hooks/implementations.py +319 -0
  49. flyto_core-1.7.4/src/core/engine/hooks/models.py +126 -0
  50. flyto_core-1.7.4/src/core/engine/hooks.py +52 -0
  51. flyto_core-1.7.4/src/core/engine/lineage/__init__.py +121 -0
  52. flyto_core-1.7.4/src/core/engine/lineage/analysis.py +119 -0
  53. flyto_core-1.7.4/src/core/engine/lineage/context.py +216 -0
  54. flyto_core-1.7.4/src/core/engine/lineage/models.py +516 -0
  55. flyto_core-1.7.4/src/core/engine/lineage/tracker.py +434 -0
  56. flyto_core-1.7.4/src/core/engine/lineage.py +54 -0
  57. flyto_core-1.7.4/src/core/engine/replay/__init__.py +26 -0
  58. flyto_core-1.7.4/src/core/engine/replay/manager.py +582 -0
  59. flyto_core-1.7.4/src/core/engine/replay/models.py +84 -0
  60. flyto_core-1.7.4/src/core/engine/replay.py +40 -0
  61. flyto_core-1.7.4/src/core/engine/step_executor/__init__.py +48 -0
  62. flyto_core-1.7.4/src/core/engine/step_executor/context_builder.py +75 -0
  63. flyto_core-1.7.4/src/core/engine/step_executor/executor.py +299 -0
  64. flyto_core-1.7.4/src/core/engine/step_executor/foreach.py +88 -0
  65. flyto_core-1.7.4/src/core/engine/step_executor/retry.py +119 -0
  66. flyto_core-1.7.4/src/core/engine/step_executor.py +34 -0
  67. flyto_core-1.7.4/src/core/engine/variable_resolver.py +229 -0
  68. flyto_core-1.7.4/src/core/engine/workflow/__init__.py +17 -0
  69. flyto_core-1.7.4/src/core/engine/workflow/debug.py +178 -0
  70. flyto_core-1.7.4/src/core/engine/workflow/engine.py +575 -0
  71. flyto_core-1.7.4/src/core/engine/workflow/output.py +120 -0
  72. flyto_core-1.7.4/src/core/engine/workflow/routing.py +185 -0
  73. flyto_core-1.7.4/src/core/engine/workflow_engine.py +46 -0
  74. flyto_core-1.7.4/src/core/modules/__init__.py +88 -0
  75. flyto_core-1.7.4/src/core/modules/atomic/__init__.py +105 -0
  76. flyto_core-1.7.4/src/core/modules/atomic/analysis/__init__.py +43 -0
  77. flyto_core-1.7.4/src/core/modules/atomic/analysis/analyze_readability.py +50 -0
  78. flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_forms.py +49 -0
  79. flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_metadata.py +48 -0
  80. flyto_core-1.7.4/src/core/modules/atomic/analysis/extract_tables.py +49 -0
  81. flyto_core-1.7.4/src/core/modules/atomic/analysis/find_patterns.py +48 -0
  82. flyto_core-1.7.4/src/core/modules/atomic/analysis/structure.py +45 -0
  83. flyto_core-1.7.4/src/core/modules/atomic/api/__init__.py +9 -0
  84. flyto_core-1.7.4/src/core/modules/atomic/api/http_get.py +117 -0
  85. flyto_core-1.7.4/src/core/modules/atomic/array/__init__.py +16 -0
  86. flyto_core-1.7.4/src/core/modules/atomic/array/chunk.py +93 -0
  87. flyto_core-1.7.4/src/core/modules/atomic/array/difference.py +88 -0
  88. flyto_core-1.7.4/src/core/modules/atomic/array/filter.py +107 -0
  89. flyto_core-1.7.4/src/core/modules/atomic/array/flatten.py +102 -0
  90. flyto_core-1.7.4/src/core/modules/atomic/array/intersection.py +84 -0
  91. flyto_core-1.7.4/src/core/modules/atomic/array/join.py +85 -0
  92. flyto_core-1.7.4/src/core/modules/atomic/array/map.py +106 -0
  93. flyto_core-1.7.4/src/core/modules/atomic/array/reduce.py +108 -0
  94. flyto_core-1.7.4/src/core/modules/atomic/array/sort.py +78 -0
  95. flyto_core-1.7.4/src/core/modules/atomic/array/unique.py +97 -0
  96. flyto_core-1.7.4/src/core/modules/atomic/browser/__init__.py +39 -0
  97. flyto_core-1.7.4/src/core/modules/atomic/browser/click.py +70 -0
  98. flyto_core-1.7.4/src/core/modules/atomic/browser/close.py +77 -0
  99. flyto_core-1.7.4/src/core/modules/atomic/browser/console.py +101 -0
  100. flyto_core-1.7.4/src/core/modules/atomic/browser/cookies.py +158 -0
  101. flyto_core-1.7.4/src/core/modules/atomic/browser/dialog.py +143 -0
  102. flyto_core-1.7.4/src/core/modules/atomic/browser/download.py +110 -0
  103. flyto_core-1.7.4/src/core/modules/atomic/browser/drag.py +142 -0
  104. flyto_core-1.7.4/src/core/modules/atomic/browser/evaluate.py +96 -0
  105. flyto_core-1.7.4/src/core/modules/atomic/browser/extract.py +145 -0
  106. flyto_core-1.7.4/src/core/modules/atomic/browser/find.py +118 -0
  107. flyto_core-1.7.4/src/core/modules/atomic/browser/frame.py +155 -0
  108. flyto_core-1.7.4/src/core/modules/atomic/browser/geolocation.py +131 -0
  109. flyto_core-1.7.4/src/core/modules/atomic/browser/goto.py +92 -0
  110. flyto_core-1.7.4/src/core/modules/atomic/browser/headless_manager.py +174 -0
  111. flyto_core-1.7.4/src/core/modules/atomic/browser/hover.py +84 -0
  112. flyto_core-1.7.4/src/core/modules/atomic/browser/launch.py +84 -0
  113. flyto_core-1.7.4/src/core/modules/atomic/browser/network.py +228 -0
  114. flyto_core-1.7.4/src/core/modules/atomic/browser/pdf.py +151 -0
  115. flyto_core-1.7.4/src/core/modules/atomic/browser/press.py +69 -0
  116. flyto_core-1.7.4/src/core/modules/atomic/browser/record.py +262 -0
  117. flyto_core-1.7.4/src/core/modules/atomic/browser/screenshot.py +64 -0
  118. flyto_core-1.7.4/src/core/modules/atomic/browser/scroll.py +137 -0
  119. flyto_core-1.7.4/src/core/modules/atomic/browser/select.py +111 -0
  120. flyto_core-1.7.4/src/core/modules/atomic/browser/storage.py +152 -0
  121. flyto_core-1.7.4/src/core/modules/atomic/browser/tab.py +180 -0
  122. flyto_core-1.7.4/src/core/modules/atomic/browser/type.py +81 -0
  123. flyto_core-1.7.4/src/core/modules/atomic/browser/upload.py +105 -0
  124. flyto_core-1.7.4/src/core/modules/atomic/browser/wait.py +86 -0
  125. flyto_core-1.7.4/src/core/modules/atomic/communication/__init__.py +19 -0
  126. flyto_core-1.7.4/src/core/modules/atomic/communication/email_read.py +196 -0
  127. flyto_core-1.7.4/src/core/modules/atomic/communication/email_send.py +172 -0
  128. flyto_core-1.7.4/src/core/modules/atomic/communication/slack_send.py +122 -0
  129. flyto_core-1.7.4/src/core/modules/atomic/communication/webhook_trigger.py +130 -0
  130. flyto_core-1.7.4/src/core/modules/atomic/data/__init__.py +18 -0
  131. flyto_core-1.7.4/src/core/modules/atomic/data/csv_read.py +123 -0
  132. flyto_core-1.7.4/src/core/modules/atomic/data/csv_write.py +114 -0
  133. flyto_core-1.7.4/src/core/modules/atomic/data/json_parse.py +85 -0
  134. flyto_core-1.7.4/src/core/modules/atomic/data/json_stringify.py +91 -0
  135. flyto_core-1.7.4/src/core/modules/atomic/data/json_to_csv.py +219 -0
  136. flyto_core-1.7.4/src/core/modules/atomic/data/text_template.py +94 -0
  137. flyto_core-1.7.4/src/core/modules/atomic/database/__init__.py +15 -0
  138. flyto_core-1.7.4/src/core/modules/atomic/database/insert.py +261 -0
  139. flyto_core-1.7.4/src/core/modules/atomic/database/query.py +309 -0
  140. flyto_core-1.7.4/src/core/modules/atomic/database/update.py +260 -0
  141. flyto_core-1.7.4/src/core/modules/atomic/datetime/__init__.py +25 -0
  142. flyto_core-1.7.4/src/core/modules/atomic/datetime/add.py +113 -0
  143. flyto_core-1.7.4/src/core/modules/atomic/datetime/format.py +102 -0
  144. flyto_core-1.7.4/src/core/modules/atomic/datetime/parse.py +112 -0
  145. flyto_core-1.7.4/src/core/modules/atomic/datetime/subtract.py +110 -0
  146. flyto_core-1.7.4/src/core/modules/atomic/document/__init__.py +35 -0
  147. flyto_core-1.7.4/src/core/modules/atomic/document/excel_read.py +158 -0
  148. flyto_core-1.7.4/src/core/modules/atomic/document/excel_write.py +159 -0
  149. flyto_core-1.7.4/src/core/modules/atomic/document/pdf_fill_form.py +223 -0
  150. flyto_core-1.7.4/src/core/modules/atomic/document/pdf_generate.py +200 -0
  151. flyto_core-1.7.4/src/core/modules/atomic/document/pdf_parse.py +164 -0
  152. flyto_core-1.7.4/src/core/modules/atomic/document/pdf_to_word.py +203 -0
  153. flyto_core-1.7.4/src/core/modules/atomic/document/word_parse.py +204 -0
  154. flyto_core-1.7.4/src/core/modules/atomic/document/word_to_pdf.py +280 -0
  155. flyto_core-1.7.4/src/core/modules/atomic/element/__init__.py +6 -0
  156. flyto_core-1.7.4/src/core/modules/atomic/element/attribute.py +119 -0
  157. flyto_core-1.7.4/src/core/modules/atomic/element/query.py +149 -0
  158. flyto_core-1.7.4/src/core/modules/atomic/element/text.py +104 -0
  159. flyto_core-1.7.4/src/core/modules/atomic/element_registry.py +199 -0
  160. flyto_core-1.7.4/src/core/modules/atomic/file/__init__.py +35 -0
  161. flyto_core-1.7.4/src/core/modules/atomic/file/copy.py +110 -0
  162. flyto_core-1.7.4/src/core/modules/atomic/file/delete.py +98 -0
  163. flyto_core-1.7.4/src/core/modules/atomic/file/exists.py +82 -0
  164. flyto_core-1.7.4/src/core/modules/atomic/file/move.py +102 -0
  165. flyto_core-1.7.4/src/core/modules/atomic/file/read.py +88 -0
  166. flyto_core-1.7.4/src/core/modules/atomic/file/write.py +86 -0
  167. flyto_core-1.7.4/src/core/modules/atomic/flow/__init__.py +44 -0
  168. flyto_core-1.7.4/src/core/modules/atomic/flow/branch.py +302 -0
  169. flyto_core-1.7.4/src/core/modules/atomic/flow/breakpoint.py +420 -0
  170. flyto_core-1.7.4/src/core/modules/atomic/flow/container.py +356 -0
  171. flyto_core-1.7.4/src/core/modules/atomic/flow/end.py +179 -0
  172. flyto_core-1.7.4/src/core/modules/atomic/flow/fork.py +181 -0
  173. flyto_core-1.7.4/src/core/modules/atomic/flow/goto.py +139 -0
  174. flyto_core-1.7.4/src/core/modules/atomic/flow/join.py +270 -0
  175. flyto_core-1.7.4/src/core/modules/atomic/flow/loop/__init__.py +23 -0
  176. flyto_core-1.7.4/src/core/modules/atomic/flow/loop/edge_mode.py +80 -0
  177. flyto_core-1.7.4/src/core/modules/atomic/flow/loop/module.py +417 -0
  178. flyto_core-1.7.4/src/core/modules/atomic/flow/loop/nested_mode.py +81 -0
  179. flyto_core-1.7.4/src/core/modules/atomic/flow/loop/resolver.py +81 -0
  180. flyto_core-1.7.4/src/core/modules/atomic/flow/loop.py +40 -0
  181. flyto_core-1.7.4/src/core/modules/atomic/flow/merge.py +224 -0
  182. flyto_core-1.7.4/src/core/modules/atomic/flow/start.py +110 -0
  183. flyto_core-1.7.4/src/core/modules/atomic/flow/subflow_ref.py +262 -0
  184. flyto_core-1.7.4/src/core/modules/atomic/flow/switch.py +302 -0
  185. flyto_core-1.7.4/src/core/modules/atomic/flow/trigger.py +186 -0
  186. flyto_core-1.7.4/src/core/modules/atomic/http/__init__.py +9 -0
  187. flyto_core-1.7.4/src/core/modules/atomic/http/request.py +294 -0
  188. flyto_core-1.7.4/src/core/modules/atomic/http/response_assert.py +414 -0
  189. flyto_core-1.7.4/src/core/modules/atomic/huggingface/__init__.py +40 -0
  190. flyto_core-1.7.4/src/core/modules/atomic/huggingface/_base.py +263 -0
  191. flyto_core-1.7.4/src/core/modules/atomic/huggingface/_runtime.py +251 -0
  192. flyto_core-1.7.4/src/core/modules/atomic/huggingface/constants.py +205 -0
  193. flyto_core-1.7.4/src/core/modules/atomic/huggingface/embedding.py +111 -0
  194. flyto_core-1.7.4/src/core/modules/atomic/huggingface/image_classification.py +85 -0
  195. flyto_core-1.7.4/src/core/modules/atomic/huggingface/speech_to_text.py +99 -0
  196. flyto_core-1.7.4/src/core/modules/atomic/huggingface/summarization.py +80 -0
  197. flyto_core-1.7.4/src/core/modules/atomic/huggingface/text_classification.py +83 -0
  198. flyto_core-1.7.4/src/core/modules/atomic/huggingface/text_generation.py +89 -0
  199. flyto_core-1.7.4/src/core/modules/atomic/huggingface/translation.py +85 -0
  200. flyto_core-1.7.4/src/core/modules/atomic/image/__init__.py +27 -0
  201. flyto_core-1.7.4/src/core/modules/atomic/image/compress.py +175 -0
  202. flyto_core-1.7.4/src/core/modules/atomic/image/convert.py +192 -0
  203. flyto_core-1.7.4/src/core/modules/atomic/image/download.py +149 -0
  204. flyto_core-1.7.4/src/core/modules/atomic/image/qrcode_generate.py +184 -0
  205. flyto_core-1.7.4/src/core/modules/atomic/image/resize.py +168 -0
  206. flyto_core-1.7.4/src/core/modules/atomic/llm/__init__.py +9 -0
  207. flyto_core-1.7.4/src/core/modules/atomic/llm/chat.py +460 -0
  208. flyto_core-1.7.4/src/core/modules/atomic/llm/code_fix.py +355 -0
  209. flyto_core-1.7.4/src/core/modules/atomic/math/__init__.py +35 -0
  210. flyto_core-1.7.4/src/core/modules/atomic/math/abs.py +77 -0
  211. flyto_core-1.7.4/src/core/modules/atomic/math/calculate.py +134 -0
  212. flyto_core-1.7.4/src/core/modules/atomic/math/ceil.py +84 -0
  213. flyto_core-1.7.4/src/core/modules/atomic/math/floor.py +84 -0
  214. flyto_core-1.7.4/src/core/modules/atomic/math/power.py +88 -0
  215. flyto_core-1.7.4/src/core/modules/atomic/math/round.py +81 -0
  216. flyto_core-1.7.4/src/core/modules/atomic/meta/__init__.py +11 -0
  217. flyto_core-1.7.4/src/core/modules/atomic/meta/generator.py +128 -0
  218. flyto_core-1.7.4/src/core/modules/atomic/meta/list_modules.py +250 -0
  219. flyto_core-1.7.4/src/core/modules/atomic/meta/update_docs.py +176 -0
  220. flyto_core-1.7.4/src/core/modules/atomic/object/__init__.py +30 -0
  221. flyto_core-1.7.4/src/core/modules/atomic/object/keys.py +77 -0
  222. flyto_core-1.7.4/src/core/modules/atomic/object/merge.py +83 -0
  223. flyto_core-1.7.4/src/core/modules/atomic/object/omit.py +79 -0
  224. flyto_core-1.7.4/src/core/modules/atomic/object/pick.py +81 -0
  225. flyto_core-1.7.4/src/core/modules/atomic/object/values.py +77 -0
  226. flyto_core-1.7.4/src/core/modules/atomic/port/__init__.py +9 -0
  227. flyto_core-1.7.4/src/core/modules/atomic/port/check.py +214 -0
  228. flyto_core-1.7.4/src/core/modules/atomic/port/wait.py +238 -0
  229. flyto_core-1.7.4/src/core/modules/atomic/process/__init__.py +10 -0
  230. flyto_core-1.7.4/src/core/modules/atomic/process/list.py +149 -0
  231. flyto_core-1.7.4/src/core/modules/atomic/process/start.py +307 -0
  232. flyto_core-1.7.4/src/core/modules/atomic/process/stop.py +273 -0
  233. flyto_core-1.7.4/src/core/modules/atomic/shell/__init__.py +8 -0
  234. flyto_core-1.7.4/src/core/modules/atomic/shell/exec.py +246 -0
  235. flyto_core-1.7.4/src/core/modules/atomic/string/__init__.py +40 -0
  236. flyto_core-1.7.4/src/core/modules/atomic/string/lowercase.py +69 -0
  237. flyto_core-1.7.4/src/core/modules/atomic/string/replace.py +82 -0
  238. flyto_core-1.7.4/src/core/modules/atomic/string/reverse.py +71 -0
  239. flyto_core-1.7.4/src/core/modules/atomic/string/split.py +76 -0
  240. flyto_core-1.7.4/src/core/modules/atomic/string/titlecase.py +74 -0
  241. flyto_core-1.7.4/src/core/modules/atomic/string/trim.py +69 -0
  242. flyto_core-1.7.4/src/core/modules/atomic/string/uppercase.py +69 -0
  243. flyto_core-1.7.4/src/core/modules/atomic/testing/__init__.py +46 -0
  244. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_contains.py +101 -0
  245. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_equal.py +101 -0
  246. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_greater_than.py +101 -0
  247. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_length.py +102 -0
  248. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_not_null.py +83 -0
  249. flyto_core-1.7.4/src/core/modules/atomic/testing/assert_true.py +83 -0
  250. flyto_core-1.7.4/src/core/modules/atomic/testing/e2e.py +88 -0
  251. flyto_core-1.7.4/src/core/modules/atomic/testing/gate.py +88 -0
  252. flyto_core-1.7.4/src/core/modules/atomic/testing/http_suite.py +84 -0
  253. flyto_core-1.7.4/src/core/modules/atomic/testing/lint.py +72 -0
  254. flyto_core-1.7.4/src/core/modules/atomic/testing/report.py +90 -0
  255. flyto_core-1.7.4/src/core/modules/atomic/testing/scenario.py +73 -0
  256. flyto_core-1.7.4/src/core/modules/atomic/testing/security.py +78 -0
  257. flyto_core-1.7.4/src/core/modules/atomic/testing/suite.py +87 -0
  258. flyto_core-1.7.4/src/core/modules/atomic/testing/unit.py +74 -0
  259. flyto_core-1.7.4/src/core/modules/atomic/testing/visual.py +78 -0
  260. flyto_core-1.7.4/src/core/modules/atomic/training/__init__.py +25 -0
  261. flyto_core-1.7.4/src/core/modules/atomic/training/analyze.py +52 -0
  262. flyto_core-1.7.4/src/core/modules/atomic/training/execute.py +54 -0
  263. flyto_core-1.7.4/src/core/modules/atomic/training/infer_schema.py +54 -0
  264. flyto_core-1.7.4/src/core/modules/atomic/training/stats.py +59 -0
  265. flyto_core-1.7.4/src/core/modules/atomic/ui/__init__.py +8 -0
  266. flyto_core-1.7.4/src/core/modules/atomic/ui/evaluate.py +404 -0
  267. flyto_core-1.7.4/src/core/modules/atomic/utility/__init__.py +14 -0
  268. flyto_core-1.7.4/src/core/modules/atomic/utility/datetime_now.py +141 -0
  269. flyto_core-1.7.4/src/core/modules/atomic/utility/delay.py +114 -0
  270. flyto_core-1.7.4/src/core/modules/atomic/utility/hash_md5.py +102 -0
  271. flyto_core-1.7.4/src/core/modules/atomic/utility/not.py +63 -0
  272. flyto_core-1.7.4/src/core/modules/atomic/utility/random_number.py +125 -0
  273. flyto_core-1.7.4/src/core/modules/atomic/utility/random_string.py +128 -0
  274. flyto_core-1.7.4/src/core/modules/atomic/vector/__init__.py +32 -0
  275. flyto_core-1.7.4/src/core/modules/atomic/vector/auto_archive.py +480 -0
  276. flyto_core-1.7.4/src/core/modules/atomic/vector/connector.py +252 -0
  277. flyto_core-1.7.4/src/core/modules/atomic/vector/embeddings.py +241 -0
  278. flyto_core-1.7.4/src/core/modules/atomic/vector/knowledge_manager.py +437 -0
  279. flyto_core-1.7.4/src/core/modules/atomic/vector/knowledge_store.py +353 -0
  280. flyto_core-1.7.4/src/core/modules/atomic/vector/quality_filter.py +385 -0
  281. flyto_core-1.7.4/src/core/modules/atomic/vector/rag.py +359 -0
  282. flyto_core-1.7.4/src/core/modules/atomic/vision/__init__.py +9 -0
  283. flyto_core-1.7.4/src/core/modules/atomic/vision/analyze.py +393 -0
  284. flyto_core-1.7.4/src/core/modules/atomic/vision/compare.py +319 -0
  285. flyto_core-1.7.4/src/core/modules/base.py +217 -0
  286. flyto_core-1.7.4/src/core/modules/composite/__init__.py +95 -0
  287. flyto_core-1.7.4/src/core/modules/composite/base/__init__.py +19 -0
  288. flyto_core-1.7.4/src/core/modules/composite/base/decorator.py +309 -0
  289. flyto_core-1.7.4/src/core/modules/composite/base/executor.py +120 -0
  290. flyto_core-1.7.4/src/core/modules/composite/base/module.py +172 -0
  291. flyto_core-1.7.4/src/core/modules/composite/base/registry.py +102 -0
  292. flyto_core-1.7.4/src/core/modules/composite/browser/__init__.py +10 -0
  293. flyto_core-1.7.4/src/core/modules/composite/browser/scrape_to_json.py +128 -0
  294. flyto_core-1.7.4/src/core/modules/composite/data/__init__.py +12 -0
  295. flyto_core-1.7.4/src/core/modules/composite/data/csv_to_json.py +96 -0
  296. flyto_core-1.7.4/src/core/modules/composite/data/json_transform_notify.py +114 -0
  297. flyto_core-1.7.4/src/core/modules/composite/developer/__init__.py +12 -0
  298. flyto_core-1.7.4/src/core/modules/composite/developer/api_to_notification.py +97 -0
  299. flyto_core-1.7.4/src/core/modules/composite/developer/github_daily_digest.py +106 -0
  300. flyto_core-1.7.4/src/core/modules/composite/notification/__init__.py +12 -0
  301. flyto_core-1.7.4/src/core/modules/composite/notification/multi_channel_alert.py +119 -0
  302. flyto_core-1.7.4/src/core/modules/composite/notification/scheduled_report.py +132 -0
  303. flyto_core-1.7.4/src/core/modules/composite/test/__init__.py +14 -0
  304. flyto_core-1.7.4/src/core/modules/composite/test/api_test.py +107 -0
  305. flyto_core-1.7.4/src/core/modules/composite/test/e2e_flow.py +101 -0
  306. flyto_core-1.7.4/src/core/modules/composite/test/quality_gate.py +111 -0
  307. flyto_core-1.7.4/src/core/modules/composite/test/ui_review.py +96 -0
  308. flyto_core-1.7.4/src/core/modules/composite/test/verify_fix.py +91 -0
  309. flyto_core-1.7.4/src/core/modules/connection_rules/__init__.py +45 -0
  310. flyto_core-1.7.4/src/core/modules/connection_rules/management.py +80 -0
  311. flyto_core-1.7.4/src/core/modules/connection_rules/models.py +42 -0
  312. flyto_core-1.7.4/src/core/modules/connection_rules/rules.py +661 -0
  313. flyto_core-1.7.4/src/core/modules/connection_rules/validation.py +246 -0
  314. flyto_core-1.7.4/src/core/modules/connection_rules.py +69 -0
  315. flyto_core-1.7.4/src/core/modules/integrations/__init__.py +48 -0
  316. flyto_core-1.7.4/src/core/modules/integrations/base/__init__.py +20 -0
  317. flyto_core-1.7.4/src/core/modules/integrations/base/client.py +254 -0
  318. flyto_core-1.7.4/src/core/modules/integrations/base/models.py +52 -0
  319. flyto_core-1.7.4/src/core/modules/integrations/base/pagination.py +141 -0
  320. flyto_core-1.7.4/src/core/modules/integrations/base/rate_limiter.py +60 -0
  321. flyto_core-1.7.4/src/core/modules/integrations/base/webhook.py +95 -0
  322. flyto_core-1.7.4/src/core/modules/integrations/base.py +38 -0
  323. flyto_core-1.7.4/src/core/modules/integrations/jira/__init__.py +21 -0
  324. flyto_core-1.7.4/src/core/modules/integrations/jira/integration.py +400 -0
  325. flyto_core-1.7.4/src/core/modules/integrations/jira/modules/__init__.py +13 -0
  326. flyto_core-1.7.4/src/core/modules/integrations/jira/modules/create_issue.py +164 -0
  327. flyto_core-1.7.4/src/core/modules/integrations/jira/modules/search_issues.py +126 -0
  328. flyto_core-1.7.4/src/core/modules/integrations/oauth/__init__.py +41 -0
  329. flyto_core-1.7.4/src/core/modules/integrations/oauth/client.py +255 -0
  330. flyto_core-1.7.4/src/core/modules/integrations/oauth/factories.py +164 -0
  331. flyto_core-1.7.4/src/core/modules/integrations/oauth/models.py +115 -0
  332. flyto_core-1.7.4/src/core/modules/integrations/oauth/pkce.py +37 -0
  333. flyto_core-1.7.4/src/core/modules/integrations/oauth/providers.py +68 -0
  334. flyto_core-1.7.4/src/core/modules/integrations/oauth.py +56 -0
  335. flyto_core-1.7.4/src/core/modules/integrations/salesforce/__init__.py +23 -0
  336. flyto_core-1.7.4/src/core/modules/integrations/salesforce/integration.py +397 -0
  337. flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/__init__.py +15 -0
  338. flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/create_record.py +126 -0
  339. flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/query.py +130 -0
  340. flyto_core-1.7.4/src/core/modules/integrations/salesforce/modules/update_record.py +105 -0
  341. flyto_core-1.7.4/src/core/modules/integrations/slack/__init__.py +22 -0
  342. flyto_core-1.7.4/src/core/modules/integrations/slack/integration.py +235 -0
  343. flyto_core-1.7.4/src/core/modules/integrations/slack/modules/__init__.py +13 -0
  344. flyto_core-1.7.4/src/core/modules/integrations/slack/modules/list_channels.py +105 -0
  345. flyto_core-1.7.4/src/core/modules/integrations/slack/modules/send_message.py +130 -0
  346. flyto_core-1.7.4/src/core/modules/registry/__init__.py +36 -0
  347. flyto_core-1.7.4/src/core/modules/registry/catalog.py +220 -0
  348. flyto_core-1.7.4/src/core/modules/registry/core.py +213 -0
  349. flyto_core-1.7.4/src/core/modules/registry/decorators.py +457 -0
  350. flyto_core-1.7.4/src/core/modules/registry/localization.py +33 -0
  351. flyto_core-1.7.4/src/core/modules/registry/ports.py +114 -0
  352. flyto_core-1.7.4/src/core/modules/schema/__init__.py +57 -0
  353. flyto_core-1.7.4/src/core/modules/schema/builders.py +231 -0
  354. flyto_core-1.7.4/src/core/modules/schema/presets.py +6386 -0
  355. flyto_core-1.7.4/src/core/modules/schema/validators.py +199 -0
  356. flyto_core-1.7.4/src/core/modules/third_party/__init__.py +22 -0
  357. flyto_core-1.7.4/src/core/modules/third_party/ai/__init__.py +13 -0
  358. flyto_core-1.7.4/src/core/modules/third_party/ai/agents/__init__.py +15 -0
  359. flyto_core-1.7.4/src/core/modules/third_party/ai/agents/autonomous.py +224 -0
  360. flyto_core-1.7.4/src/core/modules/third_party/ai/agents/chain.py +182 -0
  361. flyto_core-1.7.4/src/core/modules/third_party/ai/agents/llm_client.py +120 -0
  362. flyto_core-1.7.4/src/core/modules/third_party/ai/agents.py +29 -0
  363. flyto_core-1.7.4/src/core/modules/third_party/ai/local_ollama.py +234 -0
  364. flyto_core-1.7.4/src/core/modules/third_party/ai/openai_integration.py +391 -0
  365. flyto_core-1.7.4/src/core/modules/third_party/ai/services.py +394 -0
  366. flyto_core-1.7.4/src/core/modules/third_party/cloud/__init__.py +12 -0
  367. flyto_core-1.7.4/src/core/modules/third_party/cloud/azure.py +348 -0
  368. flyto_core-1.7.4/src/core/modules/third_party/cloud/gcs.py +315 -0
  369. flyto_core-1.7.4/src/core/modules/third_party/cloud/storage.py +416 -0
  370. flyto_core-1.7.4/src/core/modules/third_party/communication/__init__.py +11 -0
  371. flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/__init__.py +17 -0
  372. flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/discord.py +148 -0
  373. flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/email.py +187 -0
  374. flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/slack.py +168 -0
  375. flyto_core-1.7.4/src/core/modules/third_party/communication/messaging/telegram.py +164 -0
  376. flyto_core-1.7.4/src/core/modules/third_party/communication/twilio.py +334 -0
  377. flyto_core-1.7.4/src/core/modules/third_party/database/__init__.py +11 -0
  378. flyto_core-1.7.4/src/core/modules/third_party/database/connectors/__init__.py +17 -0
  379. flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mongodb_find.py +134 -0
  380. flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mongodb_insert.py +129 -0
  381. flyto_core-1.7.4/src/core/modules/third_party/database/connectors/mysql.py +125 -0
  382. flyto_core-1.7.4/src/core/modules/third_party/database/connectors/postgresql.py +110 -0
  383. flyto_core-1.7.4/src/core/modules/third_party/database/redis.py +246 -0
  384. flyto_core-1.7.4/src/core/modules/third_party/developer/__init__.py +11 -0
  385. flyto_core-1.7.4/src/core/modules/third_party/developer/github.py +467 -0
  386. flyto_core-1.7.4/src/core/modules/third_party/developer/http/__init__.py +15 -0
  387. flyto_core-1.7.4/src/core/modules/third_party/developer/http/requests.py +189 -0
  388. flyto_core-1.7.4/src/core/modules/third_party/developer/http/search.py +219 -0
  389. flyto_core-1.7.4/src/core/modules/third_party/developer/http.py +30 -0
  390. flyto_core-1.7.4/src/core/modules/third_party/payment/__init__.py +10 -0
  391. flyto_core-1.7.4/src/core/modules/third_party/payment/stripe.py +442 -0
  392. flyto_core-1.7.4/src/core/modules/third_party/productivity/__init__.py +11 -0
  393. flyto_core-1.7.4/src/core/modules/third_party/productivity/airtable.py +490 -0
  394. flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/__init__.py +17 -0
  395. flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/notion_create_page.py +142 -0
  396. flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/notion_query.py +155 -0
  397. flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/sheets_read.py +159 -0
  398. flyto_core-1.7.4/src/core/modules/third_party/productivity/tools/sheets_write.py +164 -0
  399. flyto_core-1.7.4/src/core/modules/types/__init__.py +83 -0
  400. flyto_core-1.7.4/src/core/modules/types/context.py +122 -0
  401. flyto_core-1.7.4/src/core/modules/types/data_types.py +52 -0
  402. flyto_core-1.7.4/src/core/modules/types/enums.py +152 -0
  403. flyto_core-1.7.4/src/core/modules/types/environment.py +106 -0
  404. flyto_core-1.7.4/src/core/modules/types/ports.py +127 -0
  405. flyto_core-1.7.4/src/core/modules/types/visibility.py +93 -0
  406. flyto_core-1.7.4/src/core/modules/types.py +90 -0
  407. flyto_core-1.7.4/src/core/testing/__init__.py +55 -0
  408. flyto_core-1.7.4/src/core/testing/assertions.py +499 -0
  409. flyto_core-1.7.4/src/core/testing/runner/__init__.py +48 -0
  410. flyto_core-1.7.4/src/core/testing/runner/executor.py +350 -0
  411. flyto_core-1.7.4/src/core/testing/runner/models.py +260 -0
  412. flyto_core-1.7.4/src/core/testing/runner.py +42 -0
  413. flyto_core-1.7.4/src/core/testing/snapshot.py +476 -0
  414. flyto_core-1.7.4/src/core/utils.py +283 -0
  415. flyto_core-1.7.4/src/core/validation/__init__.py +53 -0
  416. flyto_core-1.7.4/src/core/validation/connection.py +254 -0
  417. flyto_core-1.7.4/src/core/validation/errors.py +152 -0
  418. flyto_core-1.7.4/src/core/validation/index.py +170 -0
  419. flyto_core-1.7.4/src/core/validation/workflow.py +314 -0
  420. flyto_core-1.7.4/src/flyto_core.egg-info/PKG-INFO +338 -0
  421. flyto_core-1.7.4/src/flyto_core.egg-info/SOURCES.txt +423 -0
  422. flyto_core-1.7.4/src/flyto_core.egg-info/dependency_links.txt +1 -0
  423. flyto_core-1.7.4/src/flyto_core.egg-info/entry_points.txt +2 -0
  424. flyto_core-1.7.4/src/flyto_core.egg-info/requires.txt +34 -0
  425. 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
@@ -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