service-forge 0.1.41__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.

Potentially problematic release.


This version of service-forge might be problematic. Click here for more details.

Files changed (262) hide show
  1. service_forge-0.1.41/.gitignore +45 -0
  2. service_forge-0.1.41/.gitmodules +3 -0
  3. service_forge-0.1.41/.python-version +1 -0
  4. service_forge-0.1.41/PKG-INFO +102 -0
  5. service_forge-0.1.41/README.md +62 -0
  6. service_forge-0.1.41/build-and-push-base.sh +49 -0
  7. service_forge-0.1.41/config_format.md +589 -0
  8. service_forge-0.1.41/configs/service/test_service.yaml +17 -0
  9. service_forge-0.1.41/configs/service/test_service_websocket.yaml +10 -0
  10. service_forge-0.1.41/configs/workflow/test_fastapi_node.yaml +12 -0
  11. service_forge-0.1.41/configs/workflow/test_if.yaml +19 -0
  12. service_forge-0.1.41/configs/workflow/test_if_console_input.yaml +29 -0
  13. service_forge-0.1.41/configs/workflow/test_kafka_api_node.yaml +15 -0
  14. service_forge-0.1.41/configs/workflow/test_query_llm.yaml +19 -0
  15. service_forge-0.1.41/configs/workflow/test_sub_workflow.yaml +45 -0
  16. service_forge-0.1.41/configs/workflow/test_switch.yaml +22 -0
  17. service_forge-0.1.41/configs/workflow/test_websocket.yaml +37 -0
  18. service_forge-0.1.41/docker-compose.yaml +199 -0
  19. service_forge-0.1.41/dockerfile.base +30 -0
  20. service_forge-0.1.41/dockerfile.service.example +15 -0
  21. service_forge-0.1.41/docs/WebSocket_API.md +528 -0
  22. service_forge-0.1.41/docs/javascript_client_example.js +184 -0
  23. service_forge-0.1.41/docs/sft_config_api_guide.md +260 -0
  24. service_forge-0.1.41/example/tag-service/.env.example +46 -0
  25. service_forge-0.1.41/example/tag-service/.sftignore +1 -0
  26. service_forge-0.1.41/example/tag-service/Dockerfile +17 -0
  27. service_forge-0.1.41/example/tag-service/README.md +0 -0
  28. service_forge-0.1.41/example/tag-service/alembic/README +1 -0
  29. service_forge-0.1.41/example/tag-service/alembic/env.py +110 -0
  30. service_forge-0.1.41/example/tag-service/alembic/script.py.mako +28 -0
  31. service_forge-0.1.41/example/tag-service/alembic/versions/3c2f486fa1d4_change_user_id_to_string.py +41 -0
  32. service_forge-0.1.41/example/tag-service/alembic/versions/483c59e9a5e1_add_type.py +28 -0
  33. service_forge-0.1.41/example/tag-service/alembic/versions/5fbbb21acc92_add_description_and_example.py +30 -0
  34. service_forge-0.1.41/example/tag-service/alembic/versions/78e0ab93b1e5_add_user_id.py +28 -0
  35. service_forge-0.1.41/example/tag-service/alembic/versions/8ff25e2b3fd9_create_database.py +37 -0
  36. service_forge-0.1.41/example/tag-service/alembic.ini +147 -0
  37. service_forge-0.1.41/example/tag-service/config.py +102 -0
  38. service_forge-0.1.41/example/tag-service/configs/service.yaml +65 -0
  39. service_forge-0.1.41/example/tag-service/configs/workflow/create_tag_workflow.yaml +22 -0
  40. service_forge-0.1.41/example/tag-service/configs/workflow/delete_tag_workflow.yaml +22 -0
  41. service_forge-0.1.41/example/tag-service/configs/workflow/get_tags_from_record.yaml +23 -0
  42. service_forge-0.1.41/example/tag-service/configs/workflow/kafka_workflow.yaml +28 -0
  43. service_forge-0.1.41/example/tag-service/configs/workflow/query_tags_param_workflow.yaml +23 -0
  44. service_forge-0.1.41/example/tag-service/configs/workflow/query_tags_workflow.yaml +23 -0
  45. service_forge-0.1.41/example/tag-service/configs/workflow/test_a2a_workflow.yaml +28 -0
  46. service_forge-0.1.41/example/tag-service/configs/workflow/test_context_workflow.yaml +26 -0
  47. service_forge-0.1.41/example/tag-service/configs/workflow/test_sse_workflow.yaml +22 -0
  48. service_forge-0.1.41/example/tag-service/configs/workflow/test_websocket_workflow.yaml +21 -0
  49. service_forge-0.1.41/example/tag-service/configs/workflow/update_tag_workflow.yaml +22 -0
  50. service_forge-0.1.41/example/tag-service/deployment.yaml +38 -0
  51. service_forge-0.1.41/example/tag-service/main.py +43 -0
  52. service_forge-0.1.41/example/tag-service/migrate.py +119 -0
  53. service_forge-0.1.41/example/tag-service/model/db/tag_base.py +19 -0
  54. service_forge-0.1.41/example/tag-service/model/http/create_tag_model.py +6 -0
  55. service_forge-0.1.41/example/tag-service/model/http/delete_tag_model.py +4 -0
  56. service_forge-0.1.41/example/tag-service/model/http/query_tags_model.py +8 -0
  57. service_forge-0.1.41/example/tag-service/model/http/test_sse_model.py +4 -0
  58. service_forge-0.1.41/example/tag-service/model/http/update_tag_model.py +7 -0
  59. service_forge-0.1.41/example/tag-service/nodes/__init__.py +9 -0
  60. service_forge-0.1.41/example/tag-service/nodes/get_tags_node.py +79 -0
  61. service_forge-0.1.41/example/tag-service/nodes/http_create_tag_node.py +31 -0
  62. service_forge-0.1.41/example/tag-service/nodes/http_delete_tag_node.py +35 -0
  63. service_forge-0.1.41/example/tag-service/nodes/http_query_tags_node.py +83 -0
  64. service_forge-0.1.41/example/tag-service/nodes/http_update_tag_node.py +39 -0
  65. service_forge-0.1.41/example/tag-service/nodes/test_a2a_node.py +24 -0
  66. service_forge-0.1.41/example/tag-service/nodes/test_context_node.py +24 -0
  67. service_forge-0.1.41/example/tag-service/nodes/test_sse_node.py +23 -0
  68. service_forge-0.1.41/example/tag-service/nodes/test_websocket_node.py +24 -0
  69. service_forge-0.1.41/example/tag-service/prompt/default_tag.json +24 -0
  70. service_forge-0.1.41/example/tag-service/prompt/get_tags.md +39 -0
  71. service_forge-0.1.41/example/tag-service/proto/.git +1 -0
  72. service_forge-0.1.41/example/tag-service/proto/.github/workflows/update_template.yml +38 -0
  73. service_forge-0.1.41/example/tag-service/proto/.gitignore +48 -0
  74. service_forge-0.1.41/example/tag-service/proto/Makefile +55 -0
  75. service_forge-0.1.41/example/tag-service/proto/README.md +109 -0
  76. service_forge-0.1.41/example/tag-service/proto/__init__.py +1 -0
  77. service_forge-0.1.41/example/tag-service/proto/entryService/chat_message.pb.go +243 -0
  78. service_forge-0.1.41/example/tag-service/proto/entryService/chat_message_pb2.py +39 -0
  79. service_forge-0.1.41/example/tag-service/proto/entryService/chat_message_pb2.pyi +35 -0
  80. service_forge-0.1.41/example/tag-service/proto/entryService/record.pb.go +271 -0
  81. service_forge-0.1.41/example/tag-service/proto/entryService/record_pb2.py +37 -0
  82. service_forge-0.1.41/example/tag-service/proto/entryService/record_pb2.pyi +45 -0
  83. service_forge-0.1.41/example/tag-service/proto/intentService/intent.pb.go +59 -0
  84. service_forge-0.1.41/example/tag-service/proto/intentService/intent_pb2.py +35 -0
  85. service_forge-0.1.41/example/tag-service/proto/intentService/intent_pb2.pyi +4 -0
  86. service_forge-0.1.41/example/tag-service/proto/intentService/intent_response.pb.go +299 -0
  87. service_forge-0.1.41/example/tag-service/proto/intentService/intent_response_pb2.py +39 -0
  88. service_forge-0.1.41/example/tag-service/proto/intentService/intent_response_pb2.pyi +51 -0
  89. service_forge-0.1.41/example/tag-service/proto/intentService/record_group.pb.go +158 -0
  90. service_forge-0.1.41/example/tag-service/proto/intentService/record_group_pb2.py +37 -0
  91. service_forge-0.1.41/example/tag-service/proto/intentService/record_group_pb2.pyi +19 -0
  92. service_forge-0.1.41/example/tag-service/proto/parse_topics.py +235 -0
  93. service_forge-0.1.41/example/tag-service/proto/proto/entryService/chat_message.proto +21 -0
  94. service_forge-0.1.41/example/tag-service/proto/proto/entryService/record.proto +25 -0
  95. service_forge-0.1.41/example/tag-service/proto/proto/intentService/intent.proto +21 -0
  96. service_forge-0.1.41/example/tag-service/proto/proto/intentService/intent_response.proto +30 -0
  97. service_forge-0.1.41/example/tag-service/proto/proto/intentService/record_group.proto +13 -0
  98. service_forge-0.1.41/example/tag-service/proto/proto/scheduleService/schedule.proto +12 -0
  99. service_forge-0.1.41/example/tag-service/proto/proto/tagService/tag.proto +12 -0
  100. service_forge-0.1.41/example/tag-service/proto/pyproject.toml +10 -0
  101. service_forge-0.1.41/example/tag-service/proto/scheduleService/schedule.pb.go +149 -0
  102. service_forge-0.1.41/example/tag-service/proto/scheduleService/schedule_pb2.py +37 -0
  103. service_forge-0.1.41/example/tag-service/proto/scheduleService/schedule_pb2.pyi +17 -0
  104. service_forge-0.1.41/example/tag-service/proto/tagService/tag.pb.go +150 -0
  105. service_forge-0.1.41/example/tag-service/proto/tagService/tag_pb2.py +37 -0
  106. service_forge-0.1.41/example/tag-service/proto/tagService/tag_pb2.pyi +19 -0
  107. service_forge-0.1.41/example/tag-service/proto/topics.go +17 -0
  108. service_forge-0.1.41/example/tag-service/proto/topics.py +16 -0
  109. service_forge-0.1.41/example/tag-service/proto/topics.yaml +102 -0
  110. service_forge-0.1.41/example/tag-service/proto/uv.lock +58 -0
  111. service_forge-0.1.41/example/tag-service/pyproject.toml +15 -0
  112. service_forge-0.1.41/example/tag-service/sf-meta.yaml +26 -0
  113. service_forge-0.1.41/example/tag-service/start.sh +10 -0
  114. service_forge-0.1.41/example/tag-service/tests/test_service_router.py +315 -0
  115. service_forge-0.1.41/example/tag-service/tests/test_websocket_client.py +159 -0
  116. service_forge-0.1.41/main.py +27 -0
  117. service_forge-0.1.41/prompt/test_query_llm_prompt.txt +1 -0
  118. service_forge-0.1.41/prompt/test_query_llm_system_prompt.txt +1 -0
  119. service_forge-0.1.41/publish_pypi.sh +4 -0
  120. service_forge-0.1.41/pyproject.toml +64 -0
  121. service_forge-0.1.41/scripts/cleanup_feedback_demo.sh +24 -0
  122. service_forge-0.1.41/scripts/create_feedback_table.py +49 -0
  123. service_forge-0.1.41/scripts/kafka_consumer.py +132 -0
  124. service_forge-0.1.41/scripts/start_feedback_demo.sh +134 -0
  125. service_forge-0.1.41/scripts/tag_kafka_producer.py +51 -0
  126. service_forge-0.1.41/scripts/tag_kafka_producer_json.py +42 -0
  127. service_forge-0.1.41/scripts/test_kafka.py +16 -0
  128. service_forge-0.1.41/scripts/view_feedback_db.sh +54 -0
  129. service_forge-0.1.41/src/service_forge/__init__.py +0 -0
  130. service_forge-0.1.41/src/service_forge/api/http_api.py +143 -0
  131. service_forge-0.1.41/src/service_forge/api/http_api_doc.py +455 -0
  132. service_forge-0.1.41/src/service_forge/api/kafka_api.py +214 -0
  133. service_forge-0.1.41/src/service_forge/api/routers/feedback/feedback_router.py +148 -0
  134. service_forge-0.1.41/src/service_forge/api/routers/meta_api/meta_api_router.py +57 -0
  135. service_forge-0.1.41/src/service_forge/api/routers/service/service_router.py +163 -0
  136. service_forge-0.1.41/src/service_forge/api/routers/trace/trace_router.py +326 -0
  137. service_forge-0.1.41/src/service_forge/api/routers/websocket/websocket_manager.py +83 -0
  138. service_forge-0.1.41/src/service_forge/api/routers/websocket/websocket_router.py +146 -0
  139. service_forge-0.1.41/src/service_forge/api/service_studio.py +9 -0
  140. service_forge-0.1.41/src/service_forge/current_service.py +14 -0
  141. service_forge-0.1.41/src/service_forge/db/__init__.py +1 -0
  142. service_forge-0.1.41/src/service_forge/db/database.py +254 -0
  143. service_forge-0.1.41/src/service_forge/db/migrations/feedback_migration.py +154 -0
  144. service_forge-0.1.41/src/service_forge/db/models/__init__.py +0 -0
  145. service_forge-0.1.41/src/service_forge/db/models/feedback.py +33 -0
  146. service_forge-0.1.41/src/service_forge/execution_context.py +106 -0
  147. service_forge-0.1.41/src/service_forge/frontend/static/assets/CreateNewNodeDialog-DkrEMxSH.js +1 -0
  148. service_forge-0.1.41/src/service_forge/frontend/static/assets/CreateNewNodeDialog-DwFcBiGp.css +1 -0
  149. service_forge-0.1.41/src/service_forge/frontend/static/assets/EditorSidePanel-BNVms9Fq.css +1 -0
  150. service_forge-0.1.41/src/service_forge/frontend/static/assets/EditorSidePanel-DZbB3ILL.js +1 -0
  151. service_forge-0.1.41/src/service_forge/frontend/static/assets/FeedbackPanel-CC8HX7Yo.js +1 -0
  152. service_forge-0.1.41/src/service_forge/frontend/static/assets/FeedbackPanel-ClgniIVk.css +1 -0
  153. service_forge-0.1.41/src/service_forge/frontend/static/assets/FormattedCodeViewer.vue_vue_type_script_setup_true_lang-BNuI1NCs.js +1 -0
  154. service_forge-0.1.41/src/service_forge/frontend/static/assets/NodeDetailWrapper-BqFFM7-r.js +1 -0
  155. service_forge-0.1.41/src/service_forge/frontend/static/assets/NodeDetailWrapper-pZBxv3J0.css +1 -0
  156. service_forge-0.1.41/src/service_forge/frontend/static/assets/TestRunningDialog-D0GrCoYs.js +1 -0
  157. service_forge-0.1.41/src/service_forge/frontend/static/assets/TestRunningDialog-dhXOsPgH.css +1 -0
  158. service_forge-0.1.41/src/service_forge/frontend/static/assets/TracePanelWrapper-B9zvDSc_.js +1 -0
  159. service_forge-0.1.41/src/service_forge/frontend/static/assets/TracePanelWrapper-BiednCrq.css +1 -0
  160. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowEditor-CcaGGbko.js +3 -0
  161. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowEditor-CmasOOYK.css +1 -0
  162. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowList-Copuwi-a.css +1 -0
  163. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowList-LrRJ7B7h.js +1 -0
  164. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowStudio-CthjgII2.css +1 -0
  165. service_forge-0.1.41/src/service_forge/frontend/static/assets/WorkflowStudio-FCyhGD4y.js +2 -0
  166. service_forge-0.1.41/src/service_forge/frontend/static/assets/api-BDer3rj7.css +1 -0
  167. service_forge-0.1.41/src/service_forge/frontend/static/assets/api-DyiqpKJK.js +1 -0
  168. service_forge-0.1.41/src/service_forge/frontend/static/assets/code-editor-DBSql_sc.js +12 -0
  169. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-collapse-item-D4LG0FJ0.css +1 -0
  170. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-empty-D4ZqTl4F.css +1 -0
  171. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-form-item-BWkJzdQ_.css +1 -0
  172. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-input-D6B3r8CH.css +1 -0
  173. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-select-B0XIb2QK.css +1 -0
  174. service_forge-0.1.41/src/service_forge/frontend/static/assets/el-tag-DljBBxJR.css +1 -0
  175. service_forge-0.1.41/src/service_forge/frontend/static/assets/element-ui-D3x2y3TA.js +12 -0
  176. service_forge-0.1.41/src/service_forge/frontend/static/assets/elkjs-Dm5QV7uy.js +24 -0
  177. service_forge-0.1.41/src/service_forge/frontend/static/assets/highlightjs-D4ATuRwX.js +3 -0
  178. service_forge-0.1.41/src/service_forge/frontend/static/assets/index-BMvodlwc.js +2 -0
  179. service_forge-0.1.41/src/service_forge/frontend/static/assets/index-CjSe8i2q.css +1 -0
  180. service_forge-0.1.41/src/service_forge/frontend/static/assets/js-yaml-yTPt38rv.js +32 -0
  181. service_forge-0.1.41/src/service_forge/frontend/static/assets/time-DKCKV6Ug.js +1 -0
  182. service_forge-0.1.41/src/service_forge/frontend/static/assets/ui-components-DQ7-U3pr.js +1 -0
  183. service_forge-0.1.41/src/service_forge/frontend/static/assets/vue-core-DL-LgTX0.js +1 -0
  184. service_forge-0.1.41/src/service_forge/frontend/static/assets/vue-flow-Dn7R8GPr.js +39 -0
  185. service_forge-0.1.41/src/service_forge/frontend/static/index.html +16 -0
  186. service_forge-0.1.41/src/service_forge/frontend/static/vite.svg +1 -0
  187. service_forge-0.1.41/src/service_forge/llm/__init__.py +67 -0
  188. service_forge-0.1.41/src/service_forge/llm/llm.py +56 -0
  189. service_forge-0.1.41/src/service_forge/model/__init__.py +0 -0
  190. service_forge-0.1.41/src/service_forge/model/feedback.py +30 -0
  191. service_forge-0.1.41/src/service_forge/model/meta_api/__init__.py +0 -0
  192. service_forge-0.1.41/src/service_forge/model/meta_api/schema.py +29 -0
  193. service_forge-0.1.41/src/service_forge/model/trace.py +82 -0
  194. service_forge-0.1.41/src/service_forge/model/websocket.py +13 -0
  195. service_forge-0.1.41/src/service_forge/proto/foo_input.py +5 -0
  196. service_forge-0.1.41/src/service_forge/service.py +308 -0
  197. service_forge-0.1.41/src/service_forge/service_config.py +58 -0
  198. service_forge-0.1.41/src/service_forge/sft/cli.py +130 -0
  199. service_forge-0.1.41/src/service_forge/sft/cmd/config_command.py +67 -0
  200. service_forge-0.1.41/src/service_forge/sft/cmd/deploy_service.py +123 -0
  201. service_forge-0.1.41/src/service_forge/sft/cmd/list_tars.py +41 -0
  202. service_forge-0.1.41/src/service_forge/sft/cmd/remote_deploy.py +160 -0
  203. service_forge-0.1.41/src/service_forge/sft/cmd/remote_list_tars.py +111 -0
  204. service_forge-0.1.41/src/service_forge/sft/cmd/service_command.py +149 -0
  205. service_forge-0.1.41/src/service_forge/sft/cmd/upload_service.py +36 -0
  206. service_forge-0.1.41/src/service_forge/sft/config/injector.py +176 -0
  207. service_forge-0.1.41/src/service_forge/sft/config/injector_default_files.py +143 -0
  208. service_forge-0.1.41/src/service_forge/sft/config/sf_metadata.py +34 -0
  209. service_forge-0.1.41/src/service_forge/sft/config/sft_config.py +218 -0
  210. service_forge-0.1.41/src/service_forge/sft/file/__init__.py +0 -0
  211. service_forge-0.1.41/src/service_forge/sft/file/ignore_pattern.py +80 -0
  212. service_forge-0.1.41/src/service_forge/sft/file/sft_file_manager.py +107 -0
  213. service_forge-0.1.41/src/service_forge/sft/kubernetes/kubernetes_manager.py +257 -0
  214. service_forge-0.1.41/src/service_forge/sft/util/assert_util.py +24 -0
  215. service_forge-0.1.41/src/service_forge/sft/util/logger.py +16 -0
  216. service_forge-0.1.41/src/service_forge/sft/util/name_util.py +8 -0
  217. service_forge-0.1.41/src/service_forge/sft/util/yaml_utils.py +57 -0
  218. service_forge-0.1.41/src/service_forge/storage/__init__.py +5 -0
  219. service_forge-0.1.41/src/service_forge/storage/feedback_storage.py +245 -0
  220. service_forge-0.1.41/src/service_forge/telemetry.py +66 -0
  221. service_forge-0.1.41/src/service_forge/utils/__init__.py +0 -0
  222. service_forge-0.1.41/src/service_forge/utils/default_type_converter.py +12 -0
  223. service_forge-0.1.41/src/service_forge/utils/register.py +39 -0
  224. service_forge-0.1.41/src/service_forge/utils/type_converter.py +104 -0
  225. service_forge-0.1.41/src/service_forge/utils/workflow_clone.py +124 -0
  226. service_forge-0.1.41/src/service_forge/workflow/__init__.py +1 -0
  227. service_forge-0.1.41/src/service_forge/workflow/context.py +14 -0
  228. service_forge-0.1.41/src/service_forge/workflow/edge.py +24 -0
  229. service_forge-0.1.41/src/service_forge/workflow/node.py +431 -0
  230. service_forge-0.1.41/src/service_forge/workflow/nodes/__init__.py +8 -0
  231. service_forge-0.1.41/src/service_forge/workflow/nodes/control/if_node.py +29 -0
  232. service_forge-0.1.41/src/service_forge/workflow/nodes/control/switch_node.py +28 -0
  233. service_forge-0.1.41/src/service_forge/workflow/nodes/input/console_input_node.py +26 -0
  234. service_forge-0.1.41/src/service_forge/workflow/nodes/llm/query_llm_node.py +41 -0
  235. service_forge-0.1.41/src/service_forge/workflow/nodes/nested/workflow_node.py +28 -0
  236. service_forge-0.1.41/src/service_forge/workflow/nodes/output/kafka_output_node.py +27 -0
  237. service_forge-0.1.41/src/service_forge/workflow/nodes/output/print_node.py +29 -0
  238. service_forge-0.1.41/src/service_forge/workflow/nodes/test/if_console_input_node.py +33 -0
  239. service_forge-0.1.41/src/service_forge/workflow/nodes/test/time_consuming_node.py +62 -0
  240. service_forge-0.1.41/src/service_forge/workflow/port.py +89 -0
  241. service_forge-0.1.41/src/service_forge/workflow/trigger.py +28 -0
  242. service_forge-0.1.41/src/service_forge/workflow/triggers/__init__.py +6 -0
  243. service_forge-0.1.41/src/service_forge/workflow/triggers/a2a_api_trigger.py +257 -0
  244. service_forge-0.1.41/src/service_forge/workflow/triggers/fast_api_trigger.py +238 -0
  245. service_forge-0.1.41/src/service_forge/workflow/triggers/kafka_api_trigger.py +47 -0
  246. service_forge-0.1.41/src/service_forge/workflow/triggers/once_trigger.py +23 -0
  247. service_forge-0.1.41/src/service_forge/workflow/triggers/period_trigger.py +29 -0
  248. service_forge-0.1.41/src/service_forge/workflow/triggers/websocket_api_trigger.py +216 -0
  249. service_forge-0.1.41/src/service_forge/workflow/workflow.py +313 -0
  250. service_forge-0.1.41/src/service_forge/workflow/workflow_callback.py +164 -0
  251. service_forge-0.1.41/src/service_forge/workflow/workflow_config.py +67 -0
  252. service_forge-0.1.41/src/service_forge/workflow/workflow_event.py +15 -0
  253. service_forge-0.1.41/src/service_forge/workflow/workflow_factory.py +260 -0
  254. service_forge-0.1.41/src/service_forge/workflow/workflow_group.py +51 -0
  255. service_forge-0.1.41/src/service_forge/workflow/workflow_type.py +52 -0
  256. service_forge-0.1.41/tests/__init__.py +2 -0
  257. service_forge-0.1.41/tests/test_a2a_client.py +143 -0
  258. service_forge-0.1.41/tests/test_sdk_ws.py +437 -0
  259. service_forge-0.1.41/tests/test_workflow.py +71 -0
  260. service_forge-0.1.41/tests/test_workflow_config.py +9 -0
  261. service_forge-0.1.41/tests/websocket_client_test.py +256 -0
  262. service_forge-0.1.41/uv.lock +2091 -0
@@ -0,0 +1,45 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+ venv/
12
+
13
+ # General
14
+ .DS_Store
15
+ __MACOSX/
16
+ .AppleDouble
17
+ .LSOverride
18
+ Icon[]
19
+ CLAUDE.md
20
+
21
+ # Thumbnails
22
+ ._*
23
+
24
+ # Files that might appear in the root of a volume
25
+ .DocumentRevisions-V100
26
+ .fseventsd
27
+ .Spotlight-V100
28
+ .TemporaryItems
29
+ .Trashes
30
+ .VolumeIcon.icns
31
+ .com.apple.timemachine.donotpresent
32
+
33
+ # Directories potentially created on remote AFP share
34
+ .AppleDB
35
+ .AppleDesktop
36
+ Network Trash Folder
37
+ Temporary Items
38
+ .apdisk
39
+
40
+ .env
41
+ .vscode/settings.json
42
+ .vscode/launch.json
43
+ .idea
44
+ example/tag-service/.vscode/settings.json
45
+ client_id.txt
@@ -0,0 +1,3 @@
1
+ [submodule "example/tag-service/proto"]
2
+ path = example/tag-service/proto
3
+ url = git@github.com:NextHCI/second-brain-proto.git
@@ -0,0 +1 @@
1
+ 3.11
@@ -0,0 +1,102 @@
1
+ Metadata-Version: 2.4
2
+ Name: service-forge
3
+ Version: 0.1.41
4
+ Summary: Add your description here
5
+ Author-email: euxcet <zcc.qwer@gmail.com>
6
+ Requires-Python: >=3.11
7
+ Requires-Dist: a2a-sdk>=0.3.22
8
+ Requires-Dist: aiokafka>=0.12.0
9
+ Requires-Dist: alembic>=1.17.0
10
+ Requires-Dist: asyncpg>=0.30.0
11
+ Requires-Dist: dotenv>=0.9.9
12
+ Requires-Dist: fastapi>=0.119.1
13
+ Requires-Dist: greenlet>=3.2.4
14
+ Requires-Dist: jinja2>=3.1.6
15
+ Requires-Dist: kubernetes>=28.0.0
16
+ Requires-Dist: loguru>=0.7.3
17
+ Requires-Dist: omegaconf>=2.3.0
18
+ Requires-Dist: openai>=2.3.0
19
+ Requires-Dist: opentelemetry-api>=1.38.0
20
+ Requires-Dist: opentelemetry-exporter-otlp>=1.38.0
21
+ Requires-Dist: opentelemetry-sdk>=1.38.0
22
+ Requires-Dist: protobuf>=6.33.1
23
+ Requires-Dist: psycopg2-binary>=2.9.11
24
+ Requires-Dist: pydantic>=2.12.0
25
+ Requires-Dist: pymongo>=4.15.5
26
+ Requires-Dist: pytest-asyncio>=1.2.0
27
+ Requires-Dist: pytest>=8.4.2
28
+ Requires-Dist: python-dotenv>=1.1.1
29
+ Requires-Dist: python-jose>=3.5.0
30
+ Requires-Dist: python-multipart>=0.0.20
31
+ Requires-Dist: redis>=7.1.0
32
+ Requires-Dist: requests>=2.32.5
33
+ Requires-Dist: restrictedpython>=8.0
34
+ Requires-Dist: rich>=13.0.0
35
+ Requires-Dist: sqlalchemy>=2.0.44
36
+ Requires-Dist: typer>=0.12.0
37
+ Requires-Dist: uvicorn>=0.38.0
38
+ Requires-Dist: websockets>=15.0.1
39
+ Description-Content-Type: text/markdown
40
+
41
+ # Service Forge
42
+
43
+ Automated service creation and maintenance tool.
44
+
45
+ ## Install
46
+
47
+ ```bash
48
+ pip install -e .
49
+ ```
50
+
51
+ ## CLI Usage (sft)
52
+
53
+ Service Forge 提供了命令行工具 `sft` 用于服务管理。
54
+
55
+ ### 服务上传和部署
56
+
57
+ ```bash
58
+ # 上传服务(打包并上传到服务器)
59
+ sft upload [project_path]
60
+
61
+ # 列出本地已打包的服务包
62
+ sft list
63
+
64
+ # 部署服务(只在服务器上使用)
65
+ sft deploy <name> <version>
66
+ ```
67
+
68
+ ### 配置管理
69
+
70
+ ```bash
71
+ # 列出所有配置项
72
+ sft config list
73
+
74
+ # 获取指定配置项的值
75
+ sft config get <key>
76
+
77
+ # 设置配置项的值
78
+ sft config set <key> <value>
79
+ ```
80
+
81
+ ### 服务管理
82
+
83
+ ```bash
84
+ # 列出所有服务
85
+ sft service list
86
+
87
+ # 删除服务(只在服务器上使用)
88
+ sft service delete <service_name> [--force, -f]
89
+
90
+ # 查看服务日志(只在服务器上使用)
91
+ sft service logs <service_name> [--container, -c] [--tail, -n] [--follow, -f] [--previous, -p]
92
+ ```
93
+
94
+ ## TODO
95
+
96
+ - [ ] Workflow相关更加精确的报错信息
97
+ - [ ] 完善通用节点
98
+ - [ ] 服务之间的相互调用
99
+ - [ ] 节点自动生成
100
+ - [ ] proto管理和注入
101
+ - [ ] 服务存活心跳包
102
+ - [ ] 各种类型的测试
@@ -0,0 +1,62 @@
1
+ # Service Forge
2
+
3
+ Automated service creation and maintenance tool.
4
+
5
+ ## Install
6
+
7
+ ```bash
8
+ pip install -e .
9
+ ```
10
+
11
+ ## CLI Usage (sft)
12
+
13
+ Service Forge 提供了命令行工具 `sft` 用于服务管理。
14
+
15
+ ### 服务上传和部署
16
+
17
+ ```bash
18
+ # 上传服务(打包并上传到服务器)
19
+ sft upload [project_path]
20
+
21
+ # 列出本地已打包的服务包
22
+ sft list
23
+
24
+ # 部署服务(只在服务器上使用)
25
+ sft deploy <name> <version>
26
+ ```
27
+
28
+ ### 配置管理
29
+
30
+ ```bash
31
+ # 列出所有配置项
32
+ sft config list
33
+
34
+ # 获取指定配置项的值
35
+ sft config get <key>
36
+
37
+ # 设置配置项的值
38
+ sft config set <key> <value>
39
+ ```
40
+
41
+ ### 服务管理
42
+
43
+ ```bash
44
+ # 列出所有服务
45
+ sft service list
46
+
47
+ # 删除服务(只在服务器上使用)
48
+ sft service delete <service_name> [--force, -f]
49
+
50
+ # 查看服务日志(只在服务器上使用)
51
+ sft service logs <service_name> [--container, -c] [--tail, -n] [--follow, -f] [--previous, -p]
52
+ ```
53
+
54
+ ## TODO
55
+
56
+ - [ ] Workflow相关更加精确的报错信息
57
+ - [ ] 完善通用节点
58
+ - [ ] 服务之间的相互调用
59
+ - [ ] 节点自动生成
60
+ - [ ] proto管理和注入
61
+ - [ ] 服务存活心跳包
62
+ - [ ] 各种类型的测试
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # 一键 Docker 构建和上传 service-forge 基础镜像脚本
3
+ # 配置参数
4
+ IMAGE_NAME="service-forge"
5
+ REGISTRY_ADDRESS="crpi-cev6qq28wwgwwj0y.cn-beijing.personal.cr.aliyuncs.com"
6
+ REPOSITORY_NAMESPACE="nexthci"
7
+ REPOSITORY_NAME="service-forge"
8
+ VERSION="latest"
9
+ DOCKERFILE="dockerfile.base"
10
+
11
+ echo "=== 开始构建 service-forge 基础镜像 ==="
12
+
13
+ if [ ! -f "$DOCKERFILE" ]; then
14
+ echo "错误: 找不到基础镜像 Dockerfile $DOCKERFILE!"
15
+ exit 1
16
+ fi
17
+
18
+ # 1. 构建 Docker 镜像
19
+ echo "步骤 1/3: 构建 Docker 基础镜像..."
20
+ docker build -f $DOCKERFILE -t $IMAGE_NAME:latest .
21
+ if [ $? -ne 0 ]; then
22
+ echo "错误: Docker 基础镜像构建失败!"
23
+ exit 1
24
+ fi
25
+ echo "✓ 基础镜像构建成功"
26
+
27
+ # 2. 获取镜像ID并标记
28
+ echo "步骤 2/3: 标记基础镜像..."
29
+ IMAGE_ID=$(docker images -q $IMAGE_NAME:latest)
30
+ if [ -z "$IMAGE_ID" ]; then
31
+ echo "错误: 找不到 $IMAGE_NAME:latest 镜像!"
32
+ exit 1
33
+ fi
34
+ TARGET_IMAGE="$REGISTRY_ADDRESS/$REPOSITORY_NAMESPACE/$REPOSITORY_NAME:$VERSION"
35
+ docker tag $IMAGE_ID $TARGET_IMAGE
36
+ echo "✓ 基础镜像标记完成: $TARGET_IMAGE"
37
+
38
+ # 3. 推送镜像
39
+ echo "步骤 3/3: 推送基础镜像到仓库..."
40
+ docker push $TARGET_IMAGE
41
+ if [ $? -ne 0 ]; then
42
+ echo "错误: 基础镜像推送失败!"
43
+ exit 1
44
+ fi
45
+ echo "✓ 基础镜像推送成功"
46
+
47
+
48
+ echo "=== 基础镜像构建完成 ==="
49
+ echo "基础镜像地址: $TARGET_IMAGE"