graphon-local 1.0.0__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 (356) hide show
  1. graphon_local-1.0.0/.github/pull_request_template.md +16 -0
  2. graphon_local-1.0.0/.github/workflows/cla.yml +52 -0
  3. graphon_local-1.0.0/.github/workflows/pr.yml +76 -0
  4. graphon_local-1.0.0/.github/workflows/pypi_publish.yml +57 -0
  5. graphon_local-1.0.0/.github/workflows/test.yml +31 -0
  6. graphon_local-1.0.0/.github/workflows/test_pypi_publish.yml +57 -0
  7. graphon_local-1.0.0/.gitignore +15 -0
  8. graphon_local-1.0.0/.idea/.gitignore +10 -0
  9. graphon_local-1.0.0/.idea/graphon.iml +17 -0
  10. graphon_local-1.0.0/.idea/inspectionProfiles/profiles_settings.xml +6 -0
  11. graphon_local-1.0.0/.idea/misc.xml +7 -0
  12. graphon_local-1.0.0/.idea/modules.xml +8 -0
  13. graphon_local-1.0.0/.idea/vcs.xml +7 -0
  14. graphon_local-1.0.0/.idea/workspace.xml +83 -0
  15. graphon_local-1.0.0/.python-version +1 -0
  16. graphon_local-1.0.0/CHANGELOG.md +36 -0
  17. graphon_local-1.0.0/CLA.md +23 -0
  18. graphon_local-1.0.0/CONTRIBUTING.md +175 -0
  19. graphon_local-1.0.0/LICENSE +201 -0
  20. graphon_local-1.0.0/Makefile +40 -0
  21. graphon_local-1.0.0/PKG-INFO +174 -0
  22. graphon_local-1.0.0/README.md +145 -0
  23. graphon_local-1.0.0/cog.toml +2 -0
  24. graphon_local-1.0.0/examples/__init__.py +1 -0
  25. graphon_local-1.0.0/examples/graphon_openai_slim/.env.example +31 -0
  26. graphon_local-1.0.0/examples/graphon_openai_slim/README.md +63 -0
  27. graphon_local-1.0.0/examples/graphon_openai_slim/__init__.py +1 -0
  28. graphon_local-1.0.0/examples/graphon_openai_slim/workflow.py +422 -0
  29. graphon_local-1.0.0/prek.toml +20 -0
  30. graphon_local-1.0.0/pyproject.toml +97 -0
  31. graphon_local-1.0.0/src/graphon/__init__.py +0 -0
  32. graphon_local-1.0.0/src/graphon/entities/__init__.py +11 -0
  33. graphon_local-1.0.0/src/graphon/entities/base_node_data.py +194 -0
  34. graphon_local-1.0.0/src/graphon/entities/exc.py +6 -0
  35. graphon_local-1.0.0/src/graphon/entities/graph_config.py +18 -0
  36. graphon_local-1.0.0/src/graphon/entities/graph_init_params.py +25 -0
  37. graphon_local-1.0.0/src/graphon/entities/pause_reason.py +51 -0
  38. graphon_local-1.0.0/src/graphon/entities/workflow_execution.py +67 -0
  39. graphon_local-1.0.0/src/graphon/entities/workflow_node_execution.py +155 -0
  40. graphon_local-1.0.0/src/graphon/entities/workflow_start_reason.py +8 -0
  41. graphon_local-1.0.0/src/graphon/enums.py +241 -0
  42. graphon_local-1.0.0/src/graphon/errors.py +16 -0
  43. graphon_local-1.0.0/src/graphon/file/__init__.py +28 -0
  44. graphon_local-1.0.0/src/graphon/file/constants.py +50 -0
  45. graphon_local-1.0.0/src/graphon/file/enums.py +49 -0
  46. graphon_local-1.0.0/src/graphon/file/file_factory.py +42 -0
  47. graphon_local-1.0.0/src/graphon/file/file_manager.py +152 -0
  48. graphon_local-1.0.0/src/graphon/file/helpers.py +71 -0
  49. graphon_local-1.0.0/src/graphon/file/models.py +234 -0
  50. graphon_local-1.0.0/src/graphon/file/protocols.py +65 -0
  51. graphon_local-1.0.0/src/graphon/file/runtime.py +110 -0
  52. graphon_local-1.0.0/src/graphon/file/tool_file_parser.py +9 -0
  53. graphon_local-1.0.0/src/graphon/graph/__init__.py +11 -0
  54. graphon_local-1.0.0/src/graphon/graph/edge.py +15 -0
  55. graphon_local-1.0.0/src/graphon/graph/graph.py +495 -0
  56. graphon_local-1.0.0/src/graphon/graph/graph_template.py +28 -0
  57. graphon_local-1.0.0/src/graphon/graph/validation.py +143 -0
  58. graphon_local-1.0.0/src/graphon/graph_engine/__init__.py +4 -0
  59. graphon_local-1.0.0/src/graphon/graph_engine/_engine_utils.py +20 -0
  60. graphon_local-1.0.0/src/graphon/graph_engine/command_channels/README.md +32 -0
  61. graphon_local-1.0.0/src/graphon/graph_engine/command_channels/__init__.py +7 -0
  62. graphon_local-1.0.0/src/graphon/graph_engine/command_channels/in_memory_channel.py +51 -0
  63. graphon_local-1.0.0/src/graphon/graph_engine/command_channels/protocol.py +39 -0
  64. graphon_local-1.0.0/src/graphon/graph_engine/command_channels/redis_channel.py +155 -0
  65. graphon_local-1.0.0/src/graphon/graph_engine/command_processing/__init__.py +19 -0
  66. graphon_local-1.0.0/src/graphon/graph_engine/command_processing/command_handlers.py +63 -0
  67. graphon_local-1.0.0/src/graphon/graph_engine/command_processing/command_processor.py +90 -0
  68. graphon_local-1.0.0/src/graphon/graph_engine/config.py +14 -0
  69. graphon_local-1.0.0/src/graphon/graph_engine/domain/__init__.py +13 -0
  70. graphon_local-1.0.0/src/graphon/graph_engine/domain/graph_execution.py +251 -0
  71. graphon_local-1.0.0/src/graphon/graph_engine/domain/node_execution.py +42 -0
  72. graphon_local-1.0.0/src/graphon/graph_engine/entities/__init__.py +0 -0
  73. graphon_local-1.0.0/src/graphon/graph_engine/entities/commands.py +70 -0
  74. graphon_local-1.0.0/src/graphon/graph_engine/error_handler.py +224 -0
  75. graphon_local-1.0.0/src/graphon/graph_engine/event_management/__init__.py +13 -0
  76. graphon_local-1.0.0/src/graphon/graph_engine/event_management/event_handlers.py +395 -0
  77. graphon_local-1.0.0/src/graphon/graph_engine/event_management/event_manager.py +184 -0
  78. graphon_local-1.0.0/src/graphon/graph_engine/graph_engine.py +409 -0
  79. graphon_local-1.0.0/src/graphon/graph_engine/graph_state_manager.py +307 -0
  80. graphon_local-1.0.0/src/graphon/graph_engine/graph_traversal/__init__.py +13 -0
  81. graphon_local-1.0.0/src/graphon/graph_engine/graph_traversal/edge_processor.py +225 -0
  82. graphon_local-1.0.0/src/graphon/graph_engine/graph_traversal/skip_propagator.py +94 -0
  83. graphon_local-1.0.0/src/graphon/graph_engine/layers/README.md +52 -0
  84. graphon_local-1.0.0/src/graphon/graph_engine/layers/__init__.py +15 -0
  85. graphon_local-1.0.0/src/graphon/graph_engine/layers/base.py +140 -0
  86. graphon_local-1.0.0/src/graphon/graph_engine/layers/debug_logging.py +317 -0
  87. graphon_local-1.0.0/src/graphon/graph_engine/layers/execution_limits.py +170 -0
  88. graphon_local-1.0.0/src/graphon/graph_engine/manager.py +85 -0
  89. graphon_local-1.0.0/src/graphon/graph_engine/orchestration/__init__.py +13 -0
  90. graphon_local-1.0.0/src/graphon/graph_engine/orchestration/dispatcher.py +147 -0
  91. graphon_local-1.0.0/src/graphon/graph_engine/orchestration/execution_coordinator.py +101 -0
  92. graphon_local-1.0.0/src/graphon/graph_engine/ready_queue/__init__.py +16 -0
  93. graphon_local-1.0.0/src/graphon/graph_engine/ready_queue/factory.py +46 -0
  94. graphon_local-1.0.0/src/graphon/graph_engine/ready_queue/in_memory.py +139 -0
  95. graphon_local-1.0.0/src/graphon/graph_engine/ready_queue/protocol.py +102 -0
  96. graphon_local-1.0.0/src/graphon/graph_engine/response_coordinator/__init__.py +9 -0
  97. graphon_local-1.0.0/src/graphon/graph_engine/response_coordinator/coordinator.py +765 -0
  98. graphon_local-1.0.0/src/graphon/graph_engine/response_coordinator/path.py +32 -0
  99. graphon_local-1.0.0/src/graphon/graph_engine/response_coordinator/session.py +63 -0
  100. graphon_local-1.0.0/src/graphon/graph_engine/worker.py +233 -0
  101. graphon_local-1.0.0/src/graphon/graph_engine/worker_management/__init__.py +11 -0
  102. graphon_local-1.0.0/src/graphon/graph_engine/worker_management/worker_pool.py +297 -0
  103. graphon_local-1.0.0/src/graphon/graph_events/__init__.py +84 -0
  104. graphon_local-1.0.0/src/graphon/graph_events/agent.py +17 -0
  105. graphon_local-1.0.0/src/graphon/graph_events/base.py +31 -0
  106. graphon_local-1.0.0/src/graphon/graph_events/graph.py +60 -0
  107. graphon_local-1.0.0/src/graphon/graph_events/human_input.py +0 -0
  108. graphon_local-1.0.0/src/graphon/graph_events/iteration.py +40 -0
  109. graphon_local-1.0.0/src/graphon/graph_events/loop.py +40 -0
  110. graphon_local-1.0.0/src/graphon/graph_events/node.py +130 -0
  111. graphon_local-1.0.0/src/graphon/http/__init__.py +17 -0
  112. graphon_local-1.0.0/src/graphon/http/client.py +102 -0
  113. graphon_local-1.0.0/src/graphon/http/protocols.py +53 -0
  114. graphon_local-1.0.0/src/graphon/http/response.py +104 -0
  115. graphon_local-1.0.0/src/graphon/http/runtime.py +17 -0
  116. graphon_local-1.0.0/src/graphon/model_runtime/README.md +51 -0
  117. graphon_local-1.0.0/src/graphon/model_runtime/README_CN.md +64 -0
  118. graphon_local-1.0.0/src/graphon/model_runtime/__init__.py +0 -0
  119. graphon_local-1.0.0/src/graphon/model_runtime/callbacks/__init__.py +0 -0
  120. graphon_local-1.0.0/src/graphon/model_runtime/callbacks/base_callback.py +158 -0
  121. graphon_local-1.0.0/src/graphon/model_runtime/callbacks/logging_callback.py +193 -0
  122. graphon_local-1.0.0/src/graphon/model_runtime/entities/__init__.py +49 -0
  123. graphon_local-1.0.0/src/graphon/model_runtime/entities/common_entities.py +18 -0
  124. graphon_local-1.0.0/src/graphon/model_runtime/entities/defaults.py +157 -0
  125. graphon_local-1.0.0/src/graphon/model_runtime/entities/llm_entities.py +210 -0
  126. graphon_local-1.0.0/src/graphon/model_runtime/entities/message_entities.py +281 -0
  127. graphon_local-1.0.0/src/graphon/model_runtime/entities/model_entities.py +252 -0
  128. graphon_local-1.0.0/src/graphon/model_runtime/entities/provider_entities.py +156 -0
  129. graphon_local-1.0.0/src/graphon/model_runtime/entities/rerank_entities.py +23 -0
  130. graphon_local-1.0.0/src/graphon/model_runtime/entities/text_embedding_entities.py +41 -0
  131. graphon_local-1.0.0/src/graphon/model_runtime/errors/__init__.py +0 -0
  132. graphon_local-1.0.0/src/graphon/model_runtime/errors/invoke.py +41 -0
  133. graphon_local-1.0.0/src/graphon/model_runtime/errors/validate.py +2 -0
  134. graphon_local-1.0.0/src/graphon/model_runtime/memory/__init__.py +3 -0
  135. graphon_local-1.0.0/src/graphon/model_runtime/memory/prompt_message_memory.py +20 -0
  136. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/__init__.py +0 -0
  137. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/_position.yaml +43 -0
  138. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/__init__.py +0 -0
  139. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/ai_model.py +266 -0
  140. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/large_language_model.py +648 -0
  141. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/moderation_model.py +24 -0
  142. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/rerank_model.py +58 -0
  143. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/speech2text_model.py +22 -0
  144. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/text_embedding_model.py +87 -0
  145. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/tokenizers/__init__.py +0 -0
  146. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/tokenizers/gpt2_tokenizer.py +64 -0
  147. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/base/tts_model.py +46 -0
  148. graphon_local-1.0.0/src/graphon/model_runtime/model_providers/model_provider_factory.py +204 -0
  149. graphon_local-1.0.0/src/graphon/model_runtime/runtime.py +179 -0
  150. graphon_local-1.0.0/src/graphon/model_runtime/schema_validators/__init__.py +0 -0
  151. graphon_local-1.0.0/src/graphon/model_runtime/schema_validators/common_validator.py +110 -0
  152. graphon_local-1.0.0/src/graphon/model_runtime/schema_validators/model_credential_schema_validator.py +29 -0
  153. graphon_local-1.0.0/src/graphon/model_runtime/schema_validators/provider_credential_schema_validator.py +19 -0
  154. graphon_local-1.0.0/src/graphon/model_runtime/slim/__init__.py +15 -0
  155. graphon_local-1.0.0/src/graphon/model_runtime/slim/config.py +86 -0
  156. graphon_local-1.0.0/src/graphon/model_runtime/slim/package_loader.py +517 -0
  157. graphon_local-1.0.0/src/graphon/model_runtime/slim/prepared_llm.py +193 -0
  158. graphon_local-1.0.0/src/graphon/model_runtime/slim/runtime.py +906 -0
  159. graphon_local-1.0.0/src/graphon/model_runtime/utils/__init__.py +0 -0
  160. graphon_local-1.0.0/src/graphon/model_runtime/utils/encoders.py +336 -0
  161. graphon_local-1.0.0/src/graphon/node_events/__init__.py +48 -0
  162. graphon_local-1.0.0/src/graphon/node_events/agent.py +18 -0
  163. graphon_local-1.0.0/src/graphon/node_events/base.py +40 -0
  164. graphon_local-1.0.0/src/graphon/node_events/iteration.py +36 -0
  165. graphon_local-1.0.0/src/graphon/node_events/loop.py +36 -0
  166. graphon_local-1.0.0/src/graphon/node_events/node.py +81 -0
  167. graphon_local-1.0.0/src/graphon/nodes/__init__.py +3 -0
  168. graphon_local-1.0.0/src/graphon/nodes/answer/__init__.py +0 -0
  169. graphon_local-1.0.0/src/graphon/nodes/answer/answer_node.py +94 -0
  170. graphon_local-1.0.0/src/graphon/nodes/answer/entities.py +61 -0
  171. graphon_local-1.0.0/src/graphon/nodes/base/__init__.py +15 -0
  172. graphon_local-1.0.0/src/graphon/nodes/base/entities.py +80 -0
  173. graphon_local-1.0.0/src/graphon/nodes/base/node.py +951 -0
  174. graphon_local-1.0.0/src/graphon/nodes/base/template.py +159 -0
  175. graphon_local-1.0.0/src/graphon/nodes/base/usage_tracking_mixin.py +30 -0
  176. graphon_local-1.0.0/src/graphon/nodes/base/variable_template_parser.py +143 -0
  177. graphon_local-1.0.0/src/graphon/nodes/code/__init__.py +3 -0
  178. graphon_local-1.0.0/src/graphon/nodes/code/code_node.py +674 -0
  179. graphon_local-1.0.0/src/graphon/nodes/code/entities.py +61 -0
  180. graphon_local-1.0.0/src/graphon/nodes/code/exc.py +10 -0
  181. graphon_local-1.0.0/src/graphon/nodes/code/limits.py +13 -0
  182. graphon_local-1.0.0/src/graphon/nodes/document_convertor/__init__.py +4 -0
  183. graphon_local-1.0.0/src/graphon/nodes/document_convertor/entities.py +8 -0
  184. graphon_local-1.0.0/src/graphon/nodes/document_convertor/exc.py +10 -0
  185. graphon_local-1.0.0/src/graphon/nodes/document_convertor/node.py +270 -0
  186. graphon_local-1.0.0/src/graphon/nodes/document_extractor/__init__.py +8 -0
  187. graphon_local-1.0.0/src/graphon/nodes/document_extractor/entities.py +16 -0
  188. graphon_local-1.0.0/src/graphon/nodes/document_extractor/exc.py +14 -0
  189. graphon_local-1.0.0/src/graphon/nodes/document_extractor/node.py +917 -0
  190. graphon_local-1.0.0/src/graphon/nodes/end/__init__.py +0 -0
  191. graphon_local-1.0.0/src/graphon/nodes/end/end_node.py +61 -0
  192. graphon_local-1.0.0/src/graphon/nodes/end/entities.py +28 -0
  193. graphon_local-1.0.0/src/graphon/nodes/http_request/__init__.py +22 -0
  194. graphon_local-1.0.0/src/graphon/nodes/http_request/config.py +37 -0
  195. graphon_local-1.0.0/src/graphon/nodes/http_request/entities.py +255 -0
  196. graphon_local-1.0.0/src/graphon/nodes/http_request/exc.py +26 -0
  197. graphon_local-1.0.0/src/graphon/nodes/http_request/executor.py +592 -0
  198. graphon_local-1.0.0/src/graphon/nodes/http_request/node.py +331 -0
  199. graphon_local-1.0.0/src/graphon/nodes/human_input/__init__.py +0 -0
  200. graphon_local-1.0.0/src/graphon/nodes/human_input/entities.py +226 -0
  201. graphon_local-1.0.0/src/graphon/nodes/human_input/enums.py +55 -0
  202. graphon_local-1.0.0/src/graphon/nodes/human_input/human_input_node.py +349 -0
  203. graphon_local-1.0.0/src/graphon/nodes/if_else/__init__.py +3 -0
  204. graphon_local-1.0.0/src/graphon/nodes/if_else/entities.py +25 -0
  205. graphon_local-1.0.0/src/graphon/nodes/if_else/if_else_node.py +136 -0
  206. graphon_local-1.0.0/src/graphon/nodes/iteration/__init__.py +5 -0
  207. graphon_local-1.0.0/src/graphon/nodes/iteration/entities.py +62 -0
  208. graphon_local-1.0.0/src/graphon/nodes/iteration/exc.py +26 -0
  209. graphon_local-1.0.0/src/graphon/nodes/iteration/iteration_node.py +760 -0
  210. graphon_local-1.0.0/src/graphon/nodes/iteration/iteration_start_node.py +22 -0
  211. graphon_local-1.0.0/src/graphon/nodes/list_operator/__init__.py +3 -0
  212. graphon_local-1.0.0/src/graphon/nodes/list_operator/entities.py +71 -0
  213. graphon_local-1.0.0/src/graphon/nodes/list_operator/exc.py +14 -0
  214. graphon_local-1.0.0/src/graphon/nodes/list_operator/node.py +491 -0
  215. graphon_local-1.0.0/src/graphon/nodes/llm/__init__.py +17 -0
  216. graphon_local-1.0.0/src/graphon/nodes/llm/entities.py +109 -0
  217. graphon_local-1.0.0/src/graphon/nodes/llm/exc.py +45 -0
  218. graphon_local-1.0.0/src/graphon/nodes/llm/file_saver.py +176 -0
  219. graphon_local-1.0.0/src/graphon/nodes/llm/llm_utils.py +630 -0
  220. graphon_local-1.0.0/src/graphon/nodes/llm/node.py +1534 -0
  221. graphon_local-1.0.0/src/graphon/nodes/llm/protocols.py +25 -0
  222. graphon_local-1.0.0/src/graphon/nodes/llm/runtime_protocols.py +127 -0
  223. graphon_local-1.0.0/src/graphon/nodes/loop/__init__.py +6 -0
  224. graphon_local-1.0.0/src/graphon/nodes/loop/entities.py +96 -0
  225. graphon_local-1.0.0/src/graphon/nodes/loop/loop_end_node.py +22 -0
  226. graphon_local-1.0.0/src/graphon/nodes/loop/loop_node.py +559 -0
  227. graphon_local-1.0.0/src/graphon/nodes/loop/loop_start_node.py +22 -0
  228. graphon_local-1.0.0/src/graphon/nodes/parameter_extractor/__init__.py +3 -0
  229. graphon_local-1.0.0/src/graphon/nodes/parameter_extractor/entities.py +139 -0
  230. graphon_local-1.0.0/src/graphon/nodes/parameter_extractor/exc.py +77 -0
  231. graphon_local-1.0.0/src/graphon/nodes/parameter_extractor/parameter_extractor_node.py +1012 -0
  232. graphon_local-1.0.0/src/graphon/nodes/parameter_extractor/prompts.py +244 -0
  233. graphon_local-1.0.0/src/graphon/nodes/protocols.py +36 -0
  234. graphon_local-1.0.0/src/graphon/nodes/question_classifier/__init__.py +4 -0
  235. graphon_local-1.0.0/src/graphon/nodes/question_classifier/entities.py +33 -0
  236. graphon_local-1.0.0/src/graphon/nodes/question_classifier/exc.py +6 -0
  237. graphon_local-1.0.0/src/graphon/nodes/question_classifier/question_classifier_node.py +447 -0
  238. graphon_local-1.0.0/src/graphon/nodes/question_classifier/template_prompts.py +133 -0
  239. graphon_local-1.0.0/src/graphon/nodes/runtime.py +100 -0
  240. graphon_local-1.0.0/src/graphon/nodes/start/__init__.py +3 -0
  241. graphon_local-1.0.0/src/graphon/nodes/start/entities.py +14 -0
  242. graphon_local-1.0.0/src/graphon/nodes/start/start_node.py +77 -0
  243. graphon_local-1.0.0/src/graphon/nodes/template_transform/__init__.py +3 -0
  244. graphon_local-1.0.0/src/graphon/nodes/template_transform/entities.py +11 -0
  245. graphon_local-1.0.0/src/graphon/nodes/template_transform/template_transform_node.py +147 -0
  246. graphon_local-1.0.0/src/graphon/nodes/tool/__init__.py +3 -0
  247. graphon_local-1.0.0/src/graphon/nodes/tool/entities.py +150 -0
  248. graphon_local-1.0.0/src/graphon/nodes/tool/exc.py +18 -0
  249. graphon_local-1.0.0/src/graphon/nodes/tool/tool_node.py +558 -0
  250. graphon_local-1.0.0/src/graphon/nodes/tool_runtime_entities.py +125 -0
  251. graphon_local-1.0.0/src/graphon/nodes/variable_aggregator/__init__.py +3 -0
  252. graphon_local-1.0.0/src/graphon/nodes/variable_aggregator/entities.py +29 -0
  253. graphon_local-1.0.0/src/graphon/nodes/variable_aggregator/variable_aggregator_node.py +50 -0
  254. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/__init__.py +0 -0
  255. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/common/__init__.py +0 -0
  256. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/common/exc.py +2 -0
  257. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/common/helpers.py +61 -0
  258. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v1/__init__.py +3 -0
  259. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v1/node.py +150 -0
  260. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v1/node_data.py +18 -0
  261. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/__init__.py +3 -0
  262. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/entities.py +31 -0
  263. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/enums.py +20 -0
  264. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/exc.py +40 -0
  265. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/helpers.py +154 -0
  266. graphon_local-1.0.0/src/graphon/nodes/variable_assigner/v2/node.py +325 -0
  267. graphon_local-1.0.0/src/graphon/prompt_entities.py +47 -0
  268. graphon_local-1.0.0/src/graphon/protocols/__init__.py +53 -0
  269. graphon_local-1.0.0/src/graphon/py.typed +0 -0
  270. graphon_local-1.0.0/src/graphon/runtime/__init__.py +28 -0
  271. graphon_local-1.0.0/src/graphon/runtime/graph_runtime_state.py +733 -0
  272. graphon_local-1.0.0/src/graphon/runtime/graph_runtime_state_protocol.py +78 -0
  273. graphon_local-1.0.0/src/graphon/runtime/read_only_wrappers.py +84 -0
  274. graphon_local-1.0.0/src/graphon/runtime/variable_pool.py +349 -0
  275. graphon_local-1.0.0/src/graphon/template_rendering.py +18 -0
  276. graphon_local-1.0.0/src/graphon/utils/__init__.py +0 -0
  277. graphon_local-1.0.0/src/graphon/utils/condition/__init__.py +0 -0
  278. graphon_local-1.0.0/src/graphon/utils/condition/entities.py +49 -0
  279. graphon_local-1.0.0/src/graphon/utils/condition/processor.py +603 -0
  280. graphon_local-1.0.0/src/graphon/utils/json_in_md_parser.py +67 -0
  281. graphon_local-1.0.0/src/graphon/variable_loader.py +80 -0
  282. graphon_local-1.0.0/src/graphon/variables/__init__.py +82 -0
  283. graphon_local-1.0.0/src/graphon/variables/consts.py +9 -0
  284. graphon_local-1.0.0/src/graphon/variables/exc.py +2 -0
  285. graphon_local-1.0.0/src/graphon/variables/factory.py +266 -0
  286. graphon_local-1.0.0/src/graphon/variables/input_entities.py +69 -0
  287. graphon_local-1.0.0/src/graphon/variables/segment_group.py +22 -0
  288. graphon_local-1.0.0/src/graphon/variables/segments.py +254 -0
  289. graphon_local-1.0.0/src/graphon/variables/types.py +325 -0
  290. graphon_local-1.0.0/src/graphon/variables/utils.py +40 -0
  291. graphon_local-1.0.0/src/graphon/variables/variables.py +183 -0
  292. graphon_local-1.0.0/src/graphon/workflow_type_encoder.py +50 -0
  293. graphon_local-1.0.0/tests/__init__.py +0 -0
  294. graphon_local-1.0.0/tests/entities/__init__.py +0 -0
  295. graphon_local-1.0.0/tests/entities/test_pause_reason.py +80 -0
  296. graphon_local-1.0.0/tests/entities/test_workflow_execution_status.py +31 -0
  297. graphon_local-1.0.0/tests/entities/test_workflow_node_execution.py +203 -0
  298. graphon_local-1.0.0/tests/examples/__init__.py +0 -0
  299. graphon_local-1.0.0/tests/examples/test_graphon_openai_slim.py +135 -0
  300. graphon_local-1.0.0/tests/file/__init__.py +0 -0
  301. graphon_local-1.0.0/tests/file/test_file_factory.py +18 -0
  302. graphon_local-1.0.0/tests/file/test_file_manager.py +165 -0
  303. graphon_local-1.0.0/tests/file/test_models.py +82 -0
  304. graphon_local-1.0.0/tests/graph/__init__.py +0 -0
  305. graphon_local-1.0.0/tests/graph/test_graph.py +389 -0
  306. graphon_local-1.0.0/tests/graph/test_graph_validation.py +258 -0
  307. graphon_local-1.0.0/tests/graph_engine/__init__.py +0 -0
  308. graphon_local-1.0.0/tests/graph_engine/graph_traversal/__init__.py +0 -0
  309. graphon_local-1.0.0/tests/graph_engine/graph_traversal/test_skip_propagator.py +216 -0
  310. graphon_local-1.0.0/tests/graph_engine/test_dispatch_patterns.py +103 -0
  311. graphon_local-1.0.0/tests/helpers/__init__.py +11 -0
  312. graphon_local-1.0.0/tests/helpers/builders.py +55 -0
  313. graphon_local-1.0.0/tests/http/__init__.py +1 -0
  314. graphon_local-1.0.0/tests/http/test_client.py +219 -0
  315. graphon_local-1.0.0/tests/model_runtime/__init__.py +0 -0
  316. graphon_local-1.0.0/tests/model_runtime/slim/__init__.py +0 -0
  317. graphon_local-1.0.0/tests/model_runtime/slim/test_runtime.py +641 -0
  318. graphon_local-1.0.0/tests/model_runtime/test_common_entities.py +16 -0
  319. graphon_local-1.0.0/tests/model_runtime/test_encoders.py +230 -0
  320. graphon_local-1.0.0/tests/model_runtime/test_large_language_model_non_stream_result.py +172 -0
  321. graphon_local-1.0.0/tests/model_runtime/test_large_language_model_tool_calls.py +236 -0
  322. graphon_local-1.0.0/tests/model_runtime/test_message_entities.py +33 -0
  323. graphon_local-1.0.0/tests/model_runtime/test_model_dispatch.py +94 -0
  324. graphon_local-1.0.0/tests/model_runtime/test_text_embedding_model.py +17 -0
  325. graphon_local-1.0.0/tests/node_events/__init__.py +0 -0
  326. graphon_local-1.0.0/tests/node_events/test_node_event_aliases.py +45 -0
  327. graphon_local-1.0.0/tests/node_events/test_node_run_result.py +19 -0
  328. graphon_local-1.0.0/tests/nodes/__init__.py +0 -0
  329. graphon_local-1.0.0/tests/nodes/base/__init__.py +0 -0
  330. graphon_local-1.0.0/tests/nodes/base/test_template.py +74 -0
  331. graphon_local-1.0.0/tests/nodes/base/test_variable_template_parser.py +45 -0
  332. graphon_local-1.0.0/tests/nodes/document_extractor/__init__.py +0 -0
  333. graphon_local-1.0.0/tests/nodes/document_extractor/test_docx_extraction.py +39 -0
  334. graphon_local-1.0.0/tests/nodes/http_request/__init__.py +0 -0
  335. graphon_local-1.0.0/tests/nodes/http_request/test_dispatch.py +219 -0
  336. graphon_local-1.0.0/tests/nodes/parameter_extractor/__init__.py +0 -0
  337. graphon_local-1.0.0/tests/nodes/parameter_extractor/test_entities.py +151 -0
  338. graphon_local-1.0.0/tests/nodes/parameter_extractor/test_prompts.py +128 -0
  339. graphon_local-1.0.0/tests/nodes/test_code_node.py +35 -0
  340. graphon_local-1.0.0/tests/nodes/test_container_dispatch.py +90 -0
  341. graphon_local-1.0.0/tests/nodes/tool/__init__.py +0 -0
  342. graphon_local-1.0.0/tests/nodes/tool/test_entities.py +48 -0
  343. graphon_local-1.0.0/tests/nodes/tool/test_tool_node.py +150 -0
  344. graphon_local-1.0.0/tests/nodes/variable_assigner/__init__.py +0 -0
  345. graphon_local-1.0.0/tests/nodes/variable_assigner/test_v1_node.py +156 -0
  346. graphon_local-1.0.0/tests/nodes/variable_assigner/test_v2_helpers.py +56 -0
  347. graphon_local-1.0.0/tests/nodes/variable_assigner/test_v2_node.py +180 -0
  348. graphon_local-1.0.0/tests/runtime/__init__.py +0 -0
  349. graphon_local-1.0.0/tests/runtime/test_graph_runtime_state.py +321 -0
  350. graphon_local-1.0.0/tests/runtime/test_variable_pool.py +142 -0
  351. graphon_local-1.0.0/tests/test_protocols_exports.py +121 -0
  352. graphon_local-1.0.0/tests/utils/__init__.py +0 -0
  353. graphon_local-1.0.0/tests/utils/test_condition_processor.py +124 -0
  354. graphon_local-1.0.0/tests/utils/test_json_in_md_parser.py +75 -0
  355. graphon_local-1.0.0/tests/utils/test_variable_utils.py +11 -0
  356. graphon_local-1.0.0/uv.lock +2768 -0
@@ -0,0 +1,16 @@
1
+ ## Important
2
+
3
+ 1. Make sure you have read our [contribution guidelines](../CONTRIBUTING.md)
4
+ 2. Use a Conventional Commits title for this pull request, and mark breaking changes with `!`
5
+ 3. Keep the change focused and reviewable, and link any related issue when applicable
6
+
7
+ ## Summary
8
+
9
+ ## Checklist
10
+
11
+ - [ ] This pull request title follows Conventional Commits, and any breaking change is marked with `!`
12
+ - [ ] I ran `make pre` before pushing this branch
13
+ - [ ] If CLA Assistant prompted me, I signed [CLA.md](../CLA.md) in the pull request conversation
14
+ - [ ] I added or updated tests for behavior changes, or this change does not require tests
15
+ - [ ] I updated the relevant repository documentation when needed
16
+ - [ ] This change is focused and reviewable
@@ -0,0 +1,52 @@
1
+ name: CLA Assistant
2
+
3
+ on:
4
+ issue_comment:
5
+ types:
6
+ - created
7
+ pull_request_target:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+
13
+ permissions:
14
+ actions: write
15
+ contents: write
16
+ pull-requests: write
17
+ statuses: write
18
+
19
+ jobs:
20
+ cla-assistant:
21
+ if: >
22
+ github.event_name == 'pull_request_target' ||
23
+ (
24
+ github.event_name == 'issue_comment' &&
25
+ github.event.issue.pull_request &&
26
+ (
27
+ github.event.comment.body == 'recheck' ||
28
+ github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA'
29
+ )
30
+ )
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - name: CLA Assistant
34
+ uses: contributor-assistant/github-action@v2.6.1
35
+ env:
36
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
37
+ with:
38
+ path-to-signatures: "signatures/version1/cla.json"
39
+ path-to-document: "https://github.com/${{ github.repository }}/blob/${{ github.event.repository.default_branch }}/CLA.md"
40
+ # This branch must be created ahead of time and remain writable to the workflow.
41
+ # Keep it separate from the protected default branch used for normal development.
42
+ branch: "cla-signatures"
43
+ allowlist: "dependabot[bot],github-actions[bot]"
44
+ create-file-commit-message: "chore(cla): create CLA signatures storage"
45
+ signed-commit-message: "chore(cla): $contributorName signed the CLA for #$pullRequestNo"
46
+ custom-notsigned-prcomment: >
47
+ Thanks for the contribution. Before we can review or merge this pull request, please read
48
+ [our CLA](https://github.com/${{ github.repository }}/blob/${{ github.event.repository.default_branch }}/CLA.md) and add this exact
49
+ comment once: `I have read the CLA Document and I hereby sign the CLA`
50
+ custom-allsigned-prcomment: >
51
+ All contributors on this pull request have signed the CLA.
52
+ lock-pullrequest-aftermerge: false
@@ -0,0 +1,76 @@
1
+ name: Pull Request Checks
2
+
3
+ on:
4
+ pull_request:
5
+ branches:
6
+ - main
7
+ types:
8
+ - opened
9
+ - reopened
10
+ - edited
11
+ - synchronize
12
+
13
+ permissions: {}
14
+
15
+ jobs:
16
+ validate-pr-title:
17
+ name: Validate PR title
18
+ runs-on: ubuntu-latest
19
+ permissions:
20
+ pull-requests: read
21
+ steps:
22
+ - name: Validate PR title against CONTRIBUTING.md
23
+ uses: amannn/action-semantic-pull-request@v6
24
+ env:
25
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
26
+ with:
27
+ types: |
28
+ feat
29
+ fix
30
+ docs
31
+ style
32
+ refactor
33
+ perf
34
+ test
35
+ build
36
+ ci
37
+ chore
38
+ revert
39
+
40
+ validate-commit-messages:
41
+ name: Validate commit messages
42
+ runs-on: ubuntu-latest
43
+ permissions:
44
+ contents: read
45
+ steps:
46
+ - name: Checkout PR head
47
+ uses: actions/checkout@v6
48
+ with:
49
+ fetch-depth: 0
50
+ ref: ${{ github.event.pull_request.head.sha }}
51
+
52
+ - name: Validate commit history against CONTRIBUTING.md
53
+ uses: cocogitto/cocogitto-action@v4
54
+ with:
55
+ command: check
56
+
57
+ check:
58
+ name: Check
59
+ runs-on: ubuntu-latest
60
+ permissions:
61
+ contents: read
62
+ steps:
63
+ - name: Checkout
64
+ uses: actions/checkout@v6
65
+
66
+ - name: Setup Python and uv
67
+ uses: astral-sh/setup-uv@v7
68
+
69
+ - name: Run checks
70
+ run: make check
71
+
72
+ test:
73
+ needs: check
74
+ permissions:
75
+ contents: read
76
+ uses: ./.github/workflows/test.yml
@@ -0,0 +1,57 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions: {}
9
+
10
+ jobs:
11
+ test:
12
+ uses: ./.github/workflows/test.yml
13
+ permissions:
14
+ contents: read
15
+
16
+ build:
17
+ name: Build release distributions
18
+ runs-on: ubuntu-latest
19
+ needs: test
20
+ permissions:
21
+ contents: read
22
+ steps:
23
+ - name: Checkout
24
+ uses: actions/checkout@v6
25
+
26
+ - name: Install uv and Python 3.12
27
+ uses: astral-sh/setup-uv@v7
28
+ with:
29
+ python-version: "3.12"
30
+
31
+ - name: Build distributions
32
+ run: make build
33
+
34
+ - name: Upload distributions
35
+ uses: actions/upload-artifact@v7
36
+ with:
37
+ name: python-package-distributions
38
+ path: dist/*
39
+ if-no-files-found: error
40
+
41
+ publish:
42
+ name: Publish package distributions to PyPI
43
+ runs-on: ubuntu-latest
44
+ needs: build
45
+ environment:
46
+ name: pypi
47
+ permissions:
48
+ id-token: write
49
+ steps:
50
+ - name: Download distributions
51
+ uses: actions/download-artifact@v8
52
+ with:
53
+ name: python-package-distributions
54
+ path: dist
55
+
56
+ - name: Publish package distributions to PyPI
57
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,31 @@
1
+ name: Test
2
+
3
+ on:
4
+ workflow_call:
5
+
6
+ permissions: {}
7
+
8
+ jobs:
9
+ test:
10
+ name: Test (Python ${{ matrix.python-version }})
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ contents: read
14
+ strategy:
15
+ fail-fast: false
16
+ matrix:
17
+ python-version:
18
+ - "3.12"
19
+ - "3.13"
20
+ - "3.14"
21
+ steps:
22
+ - name: Checkout
23
+ uses: actions/checkout@v6
24
+
25
+ - name: Setup uv and Python
26
+ uses: astral-sh/setup-uv@v7
27
+ with:
28
+ python-version: ${{ matrix.python-version }}
29
+
30
+ - name: Run tests
31
+ run: make test
@@ -0,0 +1,57 @@
1
+ name: Publish to TestPyPI
2
+
3
+ on:
4
+ workflow_dispatch:
5
+
6
+ permissions: {}
7
+
8
+ jobs:
9
+ test:
10
+ uses: ./.github/workflows/test.yml
11
+ permissions:
12
+ contents: read
13
+
14
+ build:
15
+ name: Build release distributions
16
+ runs-on: ubuntu-latest
17
+ needs: test
18
+ permissions:
19
+ contents: read
20
+ steps:
21
+ - name: Checkout
22
+ uses: actions/checkout@v6
23
+
24
+ - name: Install uv and Python 3.12
25
+ uses: astral-sh/setup-uv@v7
26
+ with:
27
+ python-version: "3.12"
28
+
29
+ - name: Build distributions
30
+ run: make build
31
+
32
+ - name: Upload distributions
33
+ uses: actions/upload-artifact@v7
34
+ with:
35
+ name: python-package-distributions
36
+ path: dist/*
37
+ if-no-files-found: error
38
+
39
+ publish:
40
+ name: Publish package distributions to TestPyPI
41
+ runs-on: ubuntu-latest
42
+ needs: build
43
+ environment:
44
+ name: testpypi
45
+ permissions:
46
+ id-token: write
47
+ steps:
48
+ - name: Download distributions
49
+ uses: actions/download-artifact@v8
50
+ with:
51
+ name: python-package-distributions
52
+ path: dist
53
+
54
+ - name: Publish package distributions to TestPyPI
55
+ uses: pypa/gh-action-pypi-publish@release/v1
56
+ with:
57
+ repository-url: https://test.pypi.org/legacy/
@@ -0,0 +1,15 @@
1
+ # Byte-compiled
2
+ __pycache__/
3
+
4
+ # Distribution
5
+ dist/
6
+
7
+ # Unit test
8
+ .pytest_cache/
9
+
10
+ # Environments
11
+ .venv
12
+ examples/*/.env
13
+
14
+ # Ruff stuff:
15
+ .ruff_cache/
@@ -0,0 +1,10 @@
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Ignored default folder with query files
5
+ /queries/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
9
+ # Editor-based HTTP Client requests
10
+ /httpRequests/
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$">
5
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
6
+ </content>
7
+ <orderEntry type="jdk" jdkName="Python 3.12" jdkType="Python SDK" />
8
+ <orderEntry type="sourceFolder" forTests="false" />
9
+ </component>
10
+ <component name="PyDocumentationSettings">
11
+ <option name="format" value="PLAIN" />
12
+ <option name="myDocStringFormat" value="Plain" />
13
+ </component>
14
+ <component name="TestRunnerService">
15
+ <option name="PROJECT_TEST_RUNNER" value="py.test" />
16
+ </component>
17
+ </module>
@@ -0,0 +1,6 @@
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="Black">
4
+ <option name="sdkName" value="Python 3.12" />
5
+ </component>
6
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12" project-jdk-type="Python SDK" />
7
+ </project>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/graphon.iml" filepath="$PROJECT_DIR$/.idea/graphon.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="" vcs="Git" />
5
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
6
+ </component>
7
+ </project>
@@ -0,0 +1,83 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ChangeListManager">
4
+ <list default="true" id="b6abce57-5698-4e4d-ac25-de6412f015fb" name="Changes" comment="">
5
+ <change beforePath="$PROJECT_DIR$/pyproject.toml" beforeDir="false" afterPath="$PROJECT_DIR$/pyproject.toml" afterDir="false" />
6
+ <change beforePath="$PROJECT_DIR$/src/graphon/enums.py" beforeDir="false" afterPath="$PROJECT_DIR$/src/graphon/enums.py" afterDir="false" />
7
+ </list>
8
+ <option name="SHOW_DIALOG" value="false" />
9
+ <option name="HIGHLIGHT_CONFLICTS" value="true" />
10
+ <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
11
+ <option name="LAST_RESOLUTION" value="IGNORE" />
12
+ </component>
13
+ <component name="FlaskConsoleOptions" custom-start-script="import sys; print('Python %s on %s' % (sys.version, sys.platform)); sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;from flask.cli import ScriptInfo, NoAppException&#10;for module in [&quot;main.py&quot;, &quot;wsgi.py&quot;, &quot;app.py&quot;]:&#10; try: locals().update(ScriptInfo(app_import_path=module, create_app=None).load_app().make_shell_context()); print(&quot;\nFlask App: %s&quot; % app.import_name); break&#10; except NoAppException: pass">
14
+ <envs>
15
+ <env key="FLASK_APP" value="app" />
16
+ </envs>
17
+ <option name="myCustomStartScript" value="import sys; print('Python %s on %s' % (sys.version, sys.platform)); sys.path.extend([WORKING_DIR_AND_PYTHON_PATHS])&#10;from flask.cli import ScriptInfo, NoAppException&#10;for module in [&quot;main.py&quot;, &quot;wsgi.py&quot;, &quot;app.py&quot;]:&#10; try: locals().update(ScriptInfo(app_import_path=module, create_app=None).load_app().make_shell_context()); print(&quot;\nFlask App: %s&quot; % app.import_name); break&#10; except NoAppException: pass" />
18
+ <option name="myEnvs">
19
+ <map>
20
+ <entry key="FLASK_APP" value="app" />
21
+ </map>
22
+ </option>
23
+ </component>
24
+ <component name="Git.Settings">
25
+ <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
26
+ </component>
27
+ <component name="ProjectColorInfo">{
28
+ &quot;associatedIndex&quot;: 2
29
+ }</component>
30
+ <component name="ProjectId" id="3Bv7ikH3kGOPK4XLgsezUQZ7zTj" />
31
+ <component name="ProjectViewState">
32
+ <option name="hideEmptyMiddlePackages" value="true" />
33
+ <option name="showLibraryContents" value="true" />
34
+ </component>
35
+ <component name="PropertiesComponent"><![CDATA[{
36
+ "keyToString": {
37
+ "ModuleVcsDetector.initialDetectionPerformed": "true",
38
+ "RunOnceActivity.ShowReadmeOnStart": "true",
39
+ "RunOnceActivity.git.unshallow": "true",
40
+ "RunOnceActivity.typescript.service.memoryLimit.init": "true",
41
+ "ai.playground.ignore.import.keys.banner.in.settings": "true",
42
+ "git-widget-placeholder": "main",
43
+ "ignore.virus.scanning.warn.message": "true",
44
+ "last_opened_file_path": "D:/ubuntu_space/graphon",
45
+ "nodejs_package_manager_path": "npm",
46
+ "settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable",
47
+ "vue.rearranger.settings.migration": "true"
48
+ }
49
+ }]]></component>
50
+ <component name="SharedIndexes">
51
+ <attachedChunks>
52
+ <set>
53
+ <option value="bundled-js-predefined-d6986cc7102b-9b0f141eb926-JavaScript-PY-253.29346.308" />
54
+ <option value="bundled-python-sdk-ca5e2b39c7df-6e1f45a539f7-com.jetbrains.pycharm.pro.sharedIndexes.bundled-PY-253.29346.308" />
55
+ </set>
56
+ </attachedChunks>
57
+ </component>
58
+ <component name="TaskManager">
59
+ <task active="true" id="Default" summary="Default task">
60
+ <changelist id="b6abce57-5698-4e4d-ac25-de6412f015fb" name="Changes" comment="" />
61
+ <created>1775357818975</created>
62
+ <option name="number" value="Default" />
63
+ <option name="presentableId" value="Default" />
64
+ <updated>1775357818975</updated>
65
+ <workItem from="1775357819985" duration="10243000" />
66
+ <workItem from="1775376694301" duration="217000" />
67
+ </task>
68
+ <servers />
69
+ </component>
70
+ <component name="TypeScriptGeneratedFilesManager">
71
+ <option name="version" value="3" />
72
+ </component>
73
+ <component name="XDebuggerManager">
74
+ <breakpoint-manager>
75
+ <breakpoints>
76
+ <line-breakpoint enabled="true" suspend="THREAD" type="python-line">
77
+ <url>file://$PROJECT_DIR$/src/graphon/nodes/document_convertor/node.py</url>
78
+ <option name="timeStamp" value="1" />
79
+ </line-breakpoint>
80
+ </breakpoints>
81
+ </breakpoint-manager>
82
+ </component>
83
+ </project>
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,36 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines.
3
+
4
+ - - -
5
+ ## v0.1.2 - 2026-03-27
6
+ #### Bug Fixes
7
+ - (**parameter-extractor**) align prompt placeholders - (d456361) - WH-2099
8
+
9
+ - - -
10
+
11
+ ## v0.1.1 - 2026-03-27
12
+ #### Documentation
13
+ - (**readme**) simplify command reference - (fa0f3bd) - WH-2099
14
+ #### Build system
15
+ - support automatic bump - (127b249) - WH-2099
16
+ #### Refactoring
17
+ - (**graph-engine**) relocate command channel protocol - (ecfeea4) - WH-2099
18
+ - import symbols from defining modules - (35c172f) - WH-2099
19
+ #### Miscellaneous Chores
20
+ - add missing init files - (2be637c) - WH-2099
21
+
22
+ - - -
23
+
24
+ ## v0.1.0 - 2026-03-27
25
+ #### Features
26
+ - add py.typed file - (ba63ee2) - WH-2099
27
+ - initialize graphon project - (a59bfc3) - WH-2099
28
+ #### Build system
29
+ - add package license metadata - (7ad5f88) - WH-2099
30
+ - update project description and source URL - (442c7aa) - WH-2099
31
+ #### Continuous Integration
32
+ - centralize test workflow and expand Python support - (bcf8a79) - WH-2099
33
+
34
+ - - -
35
+
36
+ Changelog generated by [cocogitto](https://github.com/cocogitto/cocogitto).
@@ -0,0 +1,23 @@
1
+ # Contributor License Agreement
2
+
3
+ Thank you for your interest in the open source project(s) managed by LangGenius, Inc. ("LangGenius"). In order to clarify the intellectual property license granted with Contributions from any person or entity, LangGenius must have a Contributor License Agreement ("CLA") on file that has been signed by each contributor, indicating agreement to the license terms below. This license is for your protection as a contributor as well as the protection of LangGenius and its users. It does not change your rights to use your own contributions for any other purpose.
4
+
5
+ You accept and agree to the following terms and conditions for Your present and future Contributions submitted to LangGenius. Except for the license granted herein to LangGenius and recipients of software distributed by LangGenius, You reserve all right, title, and interest in and to Your Contributions.
6
+
7
+ 1. Definitions.
8
+ "You" (or "Your") shall mean the copyright owner or legal entity authorized by the copyright owner that is making this Agreement with LangGenius. For legal entities, the entity making a Contribution and all other entities that control, are controlled by, or are under common control with that entity are considered to be a single Contributor. For the purposes of this definition, “control” means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
9
+ "Contribution" shall mean any original work of authorship, including any modifications or additions to an existing work, that is intentionally submitted by You to LangGenius for inclusion in, or documentation of, any of the products owned or managed by LangGenius (the "Work"). For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to LangGenius or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, LangGenius for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by You as "Not a Contribution."
10
+
11
+ 2. Grant of Copyright License. Subject to the terms and conditions of this Agreement, You hereby grant to LangGenius and to recipients of software distributed by LangGenius a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Your Contributions and such derivative works.
12
+
13
+ 3. Grant of Patent License. Subject to the terms and conditions of this Agreement, You hereby grant to LangGenius and to recipients of software distributed by LangGenius a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by You that are necessarily infringed by Your Contribution(s) alone or by combination of Your Contribution(s) with the Work to which such Contribution(s) was submitted. If any entity institutes patent litigation against You or any other entity (including a cross-claim or counterclaim in a lawsuit) alleging that Your Contribution, or the Work to which You have contributed, constitutes direct or contributory patent infringement, then any patent licenses granted to that entity under this Agreement for that Contribution or Work shall terminate as of the date such litigation is filed.
14
+
15
+ 4. You represent that you are legally entitled to grant the above license. If You are an individual, and if Your employer(s) has rights to intellectual property that you create that includes Your Contributions, you represent that You have received permission to make Contributions on behalf of that employer, or that Your employer has waived such rights for your Contributions to LangGenius. If You are a Corporation, any individual who makes a contribution from an account associated with You will be considered authorized to Contribute on Your behalf.
16
+
17
+ 5. You represent that each of Your Contributions is Your original creation (see section 7 for submissions on behalf of others). You represent that Your Contribution submissions include complete details of any third-party license or other restriction (including, but not limited to, related patents and trademarks) of which you are personally aware and which are associated with any part of Your Contributions.
18
+
19
+ 6. You are not expected to provide support for Your Contributions, except to the extent You desire to provide support. You may provide support for free, for a fee, or not at all. Unless required by applicable law or agreed to in writing, You provide Your Contributions on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE.
20
+
21
+ 7. Should You wish to submit work that is not Your original creation, You may submit it to LangGenius separately from any Contribution, identifying the complete details of its source and of any license or other restriction (including, but not limited to, related patents, trademarks, and license agreements) of which you are personally aware, and conspicuously marking the work as "Submitted on behalf of a third-party: [named here]".
22
+
23
+ 8. You agree to notify LangGenius of any facts or circumstances of which you become aware that would make these representations inaccurate in any respect.