service-forge 0.1.15__tar.gz → 0.1.48__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.
- {service_forge-0.1.15 → service_forge-0.1.48}/.gitignore +3 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/PKG-INFO +12 -7
- {service_forge-0.1.15 → service_forge-0.1.48}/README.md +8 -6
- service_forge-0.1.48/configs/service/test_service.yaml +17 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_query_llm.yaml +5 -1
- service_forge-0.1.48/docker-compose.yaml +199 -0
- service_forge-0.1.48/example/tag-service/alembic/versions/3c2f486fa1d4_change_user_id_to_string.py +41 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/service.yaml +20 -3
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/create_tag_workflow.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/delete_tag_workflow.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/get_tags_from_record.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/kafka_workflow.yaml +1 -1
- service_forge-0.1.48/example/tag-service/configs/workflow/query_tags_param_workflow.yaml +23 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/test_a2a_workflow.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/test_context_workflow.yaml +2 -2
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/test_sse_workflow.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/test_websocket_workflow.yaml +7 -6
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/update_tag_workflow.yaml +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/main.py +2 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/migrate.py +5 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/db/tag_base.py +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/__init__.py +2 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/http_query_tags_node.py +3 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/test_a2a_node.py +1 -1
- service_forge-0.1.48/example/tag-service/nodes/test_websocket_node.py +24 -0
- service_forge-0.1.48/example/tag-service/proto/.git +1 -0
- service_forge-0.1.48/example/tag-service/proto/.github/workflows/update_template.yml +38 -0
- service_forge-0.1.48/example/tag-service/proto/.gitignore +48 -0
- service_forge-0.1.48/example/tag-service/proto/Makefile +55 -0
- service_forge-0.1.48/example/tag-service/proto/README.md +109 -0
- service_forge-0.1.48/example/tag-service/proto/__init__.py +1 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/chat_message.pb.go +243 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/chat_message_pb2.py +39 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/chat_message_pb2.pyi +35 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/record.pb.go +271 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/record_pb2.py +37 -0
- service_forge-0.1.48/example/tag-service/proto/entryService/record_pb2.pyi +45 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent.pb.go +59 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent_pb2.py +35 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent_pb2.pyi +4 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent_response.pb.go +299 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent_response_pb2.py +39 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/intent_response_pb2.pyi +51 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/record_group.pb.go +158 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/record_group_pb2.py +37 -0
- service_forge-0.1.48/example/tag-service/proto/intentService/record_group_pb2.pyi +19 -0
- service_forge-0.1.48/example/tag-service/proto/parse_topics.py +235 -0
- service_forge-0.1.48/example/tag-service/proto/proto/entryService/chat_message.proto +21 -0
- service_forge-0.1.48/example/tag-service/proto/proto/entryService/record.proto +25 -0
- service_forge-0.1.48/example/tag-service/proto/proto/intentService/intent.proto +21 -0
- service_forge-0.1.48/example/tag-service/proto/proto/intentService/intent_response.proto +30 -0
- service_forge-0.1.48/example/tag-service/proto/proto/intentService/record_group.proto +13 -0
- service_forge-0.1.48/example/tag-service/proto/proto/scheduleService/schedule.proto +12 -0
- service_forge-0.1.48/example/tag-service/proto/proto/tagService/tag.proto +12 -0
- service_forge-0.1.48/example/tag-service/proto/pyproject.toml +10 -0
- service_forge-0.1.48/example/tag-service/proto/scheduleService/schedule.pb.go +149 -0
- service_forge-0.1.48/example/tag-service/proto/scheduleService/schedule_pb2.py +37 -0
- service_forge-0.1.48/example/tag-service/proto/scheduleService/schedule_pb2.pyi +17 -0
- service_forge-0.1.48/example/tag-service/proto/tagService/tag.pb.go +150 -0
- service_forge-0.1.48/example/tag-service/proto/tagService/tag_pb2.py +37 -0
- service_forge-0.1.48/example/tag-service/proto/tagService/tag_pb2.pyi +19 -0
- service_forge-0.1.48/example/tag-service/proto/topics.go +17 -0
- service_forge-0.1.48/example/tag-service/proto/topics.py +16 -0
- service_forge-0.1.48/example/tag-service/proto/topics.yaml +102 -0
- service_forge-0.1.48/example/tag-service/proto/uv.lock +58 -0
- service_forge-0.1.48/example/tag-service/sf-meta.yaml +16 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/tests/test_websocket_client.py +18 -4
- {service_forge-0.1.15 → service_forge-0.1.48}/pyproject.toml +4 -1
- service_forge-0.1.48/scripts/cleanup_feedback_demo.sh +24 -0
- service_forge-0.1.48/scripts/create_feedback_table.py +49 -0
- service_forge-0.1.48/scripts/start_feedback_demo.sh +134 -0
- service_forge-0.1.48/scripts/view_feedback_db.sh +54 -0
- service_forge-0.1.48/src/service_forge/api/http_api.py +143 -0
- service_forge-0.1.48/src/service_forge/api/kafka_api.py +214 -0
- service_forge-0.1.48/src/service_forge/api/routers/feedback/feedback_router.py +516 -0
- service_forge-0.1.48/src/service_forge/api/routers/meta_api/meta_api_router.py +57 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/api/routers/service/service_router.py +46 -22
- service_forge-0.1.48/src/service_forge/api/routers/trace/trace_router.py +485 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/api/routers/websocket/websocket_router.py +69 -1
- service_forge-0.1.48/src/service_forge/api/service_studio.py +9 -0
- service_forge-0.1.48/src/service_forge/current_service.py +14 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/db/database.py +46 -32
- service_forge-0.1.48/src/service_forge/db/migrations/feedback_migration.py +176 -0
- service_forge-0.1.48/src/service_forge/db/models/feedback.py +35 -0
- service_forge-0.1.48/src/service_forge/execution_context.py +106 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/EditorSidePanel-BLIPel8z.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/EditorSidePanel-BNVms9Fq.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/FeedbackPanel-CUndA78i.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/FeedbackPanel-DufEqQxi.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/FloatPagination-C3Q9DXfH.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/FloatPagination-x9oqNWsY.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/FormattedCodeViewer.vue_vue_type_script_setup_true_lang-D-r0d4Is.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/NodeDetailWrapper-KfsWKrNS.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/NodeDetailWrapper-tuRfvIsa.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/TracePanelWrapper-BLAMynpF.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/TracePanelWrapper-CGsS47oK.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowEditor-D8-6OZ8Y.js +3 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowEditor-DMina2Ac.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowList-B-B_BNi1.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowList-Copuwi-a.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowStudio-B8WFoV8O.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/WorkflowStudio-cipvlP3c.js +2 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/api-BDer3rj7.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/api-DyiqpKJK.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/code-editor-DFIoHxr7.js +12 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/el-collapse-item-D4LG0FJ0.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/el-empty-D4ZqTl4F.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/el-tag-DljBBxJR.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/element-ui-CA4rbiJ9.js +12 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/elkjs-daFYuoNQ.js +24 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/highlightjs-D4ATuRwX.js +3 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/index-BrGO8rHI.js +2 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/index-CjSe8i2q.css +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/js-yaml-yTPt38rv.js +32 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/ui-components-DQ2lkQGO.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/vue-core-C3hq3bxF.js +1 -0
- service_forge-0.1.48/src/service_forge/frontend/static/assets/vue-flow-BEraqp1L.js +39 -0
- service_forge-0.1.48/src/service_forge/frontend/static/index.html +15 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/llm/__init__.py +5 -0
- service_forge-0.1.48/src/service_forge/model/feedback.py +32 -0
- service_forge-0.1.48/src/service_forge/model/meta_api/__init__.py +0 -0
- service_forge-0.1.48/src/service_forge/model/meta_api/schema.py +29 -0
- service_forge-0.1.48/src/service_forge/model/trace.py +93 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/service.py +65 -49
- service_forge-0.1.48/src/service_forge/service_config.py +58 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cli.py +52 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cmd/deploy_service.py +80 -9
- service_forge-0.1.48/src/service_forge/sft/cmd/remote_deploy.py +160 -0
- service_forge-0.1.48/src/service_forge/sft/cmd/remote_list_tars.py +111 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cmd/upload_service.py +14 -6
- service_forge-0.1.48/src/service_forge/sft/config/injector.py +176 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/config/injector_default_files.py +19 -7
- service_forge-0.1.48/src/service_forge/sft/config/sf_metadata.py +34 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/config/sft_config.py +47 -6
- service_forge-0.1.48/src/service_forge/sft/file/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/file/sft_file_manager.py +6 -2
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/util/assert_util.py +0 -1
- service_forge-0.1.48/src/service_forge/storage/__init__.py +5 -0
- service_forge-0.1.48/src/service_forge/storage/feedback_storage.py +249 -0
- service_forge-0.1.48/src/service_forge/telemetry.py +66 -0
- service_forge-0.1.48/src/service_forge/utils/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/utils/default_type_converter.py +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/utils/type_converter.py +5 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/utils/workflow_clone.py +1 -4
- service_forge-0.1.48/src/service_forge/workflow/node.py +431 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/llm/query_llm_node.py +1 -1
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/fast_api_trigger.py +66 -29
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/websocket_api_trigger.py +74 -44
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow.py +142 -49
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow_callback.py +28 -5
- service_forge-0.1.48/src/service_forge/workflow/workflow_config.py +67 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow_factory.py +93 -86
- {service_forge-0.1.15 → service_forge-0.1.48}/uv.lock +483 -338
- service_forge-0.1.15/backend/env.example +0 -2
- service_forge-0.1.15/backend/main.py +0 -35
- service_forge-0.1.15/backend/models/__init__.py +0 -1
- service_forge-0.1.15/backend/models/workflow_model.py +0 -81
- service_forge-0.1.15/backend/routers/__init__.py +0 -1
- service_forge-0.1.15/backend/routers/workflow.py +0 -41
- service_forge-0.1.15/backend/run.py +0 -10
- service_forge-0.1.15/backend/utils/__init__.py +0 -1
- service_forge-0.1.15/configs/service/test_service.yaml +0 -9
- service_forge-0.1.15/example/tag-service/sf-meta.yaml +0 -26
- service_forge-0.1.15/frontend/.gitignore +0 -24
- service_forge-0.1.15/frontend/LICENSE +0 -21
- service_forge-0.1.15/frontend/README.md +0 -62
- service_forge-0.1.15/frontend/biome.json +0 -11
- service_forge-0.1.15/frontend/data_sample.npy +0 -0
- service_forge-0.1.15/frontend/index.html +0 -13
- service_forge-0.1.15/frontend/lefthook.yml +0 -2
- service_forge-0.1.15/frontend/package-lock.json +0 -3340
- service_forge-0.1.15/frontend/package.json +0 -38
- service_forge-0.1.15/frontend/pnpm-lock.yaml +0 -2282
- service_forge-0.1.15/frontend/public/vite.svg +0 -1
- service_forge-0.1.15/frontend/src/App.tsx +0 -161
- service_forge-0.1.15/frontend/src/components/WorkflowSidebar.css +0 -82
- service_forge-0.1.15/frontend/src/components/WorkflowSidebar.tsx +0 -79
- service_forge-0.1.15/frontend/src/index.css +0 -17
- service_forge-0.1.15/frontend/src/main.tsx +0 -11
- service_forge-0.1.15/frontend/src/services/api.ts +0 -65
- service_forge-0.1.15/frontend/src/vite-env.d.ts +0 -1
- service_forge-0.1.15/frontend/src/workflow/components/ControlPanel.tsx +0 -129
- service_forge-0.1.15/frontend/src/workflow/components/Edges/BaseEdge/index.tsx +0 -124
- service_forge-0.1.15/frontend/src/workflow/components/Edges/BaseEdge/useRebuildEdge.tsx +0 -10
- service_forge-0.1.15/frontend/src/workflow/components/Edges/EdgeController/index.tsx +0 -109
- service_forge-0.1.15/frontend/src/workflow/components/Edges/EdgeController/smart-edge.ts +0 -570
- service_forge-0.1.15/frontend/src/workflow/components/Edges/EdgeController/useEdgeDraggable.tsx +0 -147
- service_forge-0.1.15/frontend/src/workflow/components/Edges/Marker.tsx +0 -55
- service_forge-0.1.15/frontend/src/workflow/components/Edges/index.tsx +0 -7
- service_forge-0.1.15/frontend/src/workflow/components/Nodes/BaseNode/index.tsx +0 -56
- service_forge-0.1.15/frontend/src/workflow/components/Nodes/BaseNode/styles.css +0 -73
- service_forge-0.1.15/frontend/src/workflow/components/Nodes/index.tsx +0 -7
- service_forge-0.1.15/frontend/src/workflow/components/ReactflowInstance.tsx +0 -16
- service_forge-0.1.15/frontend/src/workflow/components/WorkflowRunner.tsx +0 -97
- service_forge-0.1.15/frontend/src/workflow/data/convert.ts +0 -97
- service_forge-0.1.15/frontend/src/workflow/data/data.json +0 -83
- service_forge-0.1.15/frontend/src/workflow/data/types.ts +0 -100
- service_forge-0.1.15/frontend/src/workflow/layout/edge/algorithms/a-star.ts +0 -219
- service_forge-0.1.15/frontend/src/workflow/layout/edge/algorithms/index.ts +0 -127
- service_forge-0.1.15/frontend/src/workflow/layout/edge/algorithms/simple.ts +0 -113
- service_forge-0.1.15/frontend/src/workflow/layout/edge/edge.ts +0 -267
- service_forge-0.1.15/frontend/src/workflow/layout/edge/index.ts +0 -73
- service_forge-0.1.15/frontend/src/workflow/layout/edge/point.ts +0 -396
- service_forge-0.1.15/frontend/src/workflow/layout/edge/style.ts +0 -200
- service_forge-0.1.15/frontend/src/workflow/layout/metadata.ts +0 -101
- service_forge-0.1.15/frontend/src/workflow/layout/node/algorithms/d3-dag.ts +0 -125
- service_forge-0.1.15/frontend/src/workflow/layout/node/algorithms/d3-hierarchy.ts +0 -93
- service_forge-0.1.15/frontend/src/workflow/layout/node/algorithms/dagre-tree.ts +0 -65
- service_forge-0.1.15/frontend/src/workflow/layout/node/algorithms/elk.ts +0 -134
- service_forge-0.1.15/frontend/src/workflow/layout/node/algorithms/origin.ts +0 -20
- service_forge-0.1.15/frontend/src/workflow/layout/node/index.ts +0 -85
- service_forge-0.1.15/frontend/src/workflow/layout/useAutoLayout.ts +0 -60
- service_forge-0.1.15/frontend/src/workflow/states/reactflow.ts +0 -24
- service_forge-0.1.15/frontend/tsconfig.app.json +0 -32
- service_forge-0.1.15/frontend/tsconfig.json +0 -7
- service_forge-0.1.15/frontend/tsconfig.node.json +0 -26
- service_forge-0.1.15/frontend/vite.config.ts +0 -11
- service_forge-0.1.15/src/service_forge/api/deprecated_websocket_api.py +0 -86
- service_forge-0.1.15/src/service_forge/api/deprecated_websocket_manager.py +0 -425
- service_forge-0.1.15/src/service_forge/api/http_api.py +0 -148
- service_forge-0.1.15/src/service_forge/api/kafka_api.py +0 -126
- service_forge-0.1.15/src/service_forge/api/routers/service/__init__.py +0 -4
- service_forge-0.1.15/src/service_forge/api/task_manager.py +0 -141
- service_forge-0.1.15/src/service_forge/service_config.py +0 -158
- service_forge-0.1.15/src/service_forge/sft/config/injector.py +0 -119
- service_forge-0.1.15/src/service_forge/sft/config/sf_metadata.py +0 -30
- service_forge-0.1.15/src/service_forge/workflow/node.py +0 -184
- {service_forge-0.1.15 → service_forge-0.1.48}/.gitmodules +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/.python-version +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/build-and-push-base.sh +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/config_format.md +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/service/test_service_websocket.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_fastapi_node.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_if.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_if_console_input.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_kafka_api_node.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_sub_workflow.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_switch.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/configs/workflow/test_websocket.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/dockerfile.base +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/dockerfile.service.example +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/docs/WebSocket_API.md +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/docs/javascript_client_example.js +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/docs/sft_config_api_guide.md +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/.env.example +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/.sftignore +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/Dockerfile +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/README.md +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/README +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/env.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/script.py.mako +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/versions/483c59e9a5e1_add_type.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/versions/5fbbb21acc92_add_description_and_example.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/versions/78e0ab93b1e5_add_user_id.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic/versions/8ff25e2b3fd9_create_database.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/alembic.ini +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/config.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/configs/workflow/query_tags_workflow.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/deployment.yaml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/http/create_tag_model.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/http/delete_tag_model.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/http/query_tags_model.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/http/test_sse_model.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/model/http/update_tag_model.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/get_tags_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/http_create_tag_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/http_delete_tag_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/http_update_tag_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/test_context_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/test_sse_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/prompt/default_tag.json +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/prompt/get_tags.md +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/pyproject.toml +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/start.sh +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/tests/test_service_router.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/main.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/prompt/test_query_llm_prompt.txt +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/prompt/test_query_llm_system_prompt.txt +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/publish_pypi.sh +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/scripts/kafka_consumer.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/scripts/tag_kafka_producer.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/scripts/tag_kafka_producer_json.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/scripts/test_kafka.py +0 -0
- {service_forge-0.1.15/src/service_forge/model → service_forge-0.1.48/src/service_forge}/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/api/http_api_doc.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/api/routers/websocket/websocket_manager.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/db/__init__.py +0 -0
- {service_forge-0.1.15/src/service_forge/sft/file → service_forge-0.1.48/src/service_forge/db/models}/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/llm/llm.py +0 -0
- {service_forge-0.1.15/src/service_forge/utils → service_forge-0.1.48/src/service_forge/model}/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/model/websocket.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/proto/foo_input.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cmd/config_command.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cmd/list_tars.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/cmd/service_command.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/file/ignore_pattern.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/kubernetes/kubernetes_manager.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/util/logger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/util/name_util.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/sft/util/yaml_utils.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/utils/register.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/context.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/edge.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/control/if_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/control/switch_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/input/console_input_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/nested/workflow_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/output/kafka_output_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/output/print_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/test/if_console_input_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/nodes/test/time_consuming_node.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/port.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/trigger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/a2a_api_trigger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/kafka_api_trigger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/once_trigger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/triggers/period_trigger.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow_event.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow_group.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/src/service_forge/workflow/workflow_type.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/__init__.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/test_a2a_client.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/test_sdk_ws.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/test_workflow.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/test_workflow_config.py +0 -0
- {service_forge-0.1.15 → service_forge-0.1.48}/tests/websocket_client_test.py +0 -0
|
@@ -8,6 +8,7 @@ wheels/
|
|
|
8
8
|
|
|
9
9
|
# Virtual environments
|
|
10
10
|
.venv
|
|
11
|
+
venv/
|
|
11
12
|
|
|
12
13
|
# General
|
|
13
14
|
.DS_Store
|
|
@@ -15,6 +16,7 @@ __MACOSX/
|
|
|
15
16
|
.AppleDouble
|
|
16
17
|
.LSOverride
|
|
17
18
|
Icon[]
|
|
19
|
+
CLAUDE.md
|
|
18
20
|
|
|
19
21
|
# Thumbnails
|
|
20
22
|
._*
|
|
@@ -38,5 +40,6 @@ Temporary Items
|
|
|
38
40
|
.env
|
|
39
41
|
.vscode/settings.json
|
|
40
42
|
.vscode/launch.json
|
|
43
|
+
.idea
|
|
41
44
|
example/tag-service/.vscode/settings.json
|
|
42
45
|
client_id.txt
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: service-forge
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.48
|
|
4
4
|
Summary: Add your description here
|
|
5
5
|
Author-email: euxcet <zcc.qwer@gmail.com>
|
|
6
6
|
Requires-Python: >=3.11
|
|
@@ -16,6 +16,9 @@ Requires-Dist: kubernetes>=28.0.0
|
|
|
16
16
|
Requires-Dist: loguru>=0.7.3
|
|
17
17
|
Requires-Dist: omegaconf>=2.3.0
|
|
18
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
|
|
19
22
|
Requires-Dist: protobuf>=6.33.1
|
|
20
23
|
Requires-Dist: psycopg2-binary>=2.9.11
|
|
21
24
|
Requires-Dist: pydantic>=2.12.0
|
|
@@ -90,9 +93,11 @@ sft service logs <service_name> [--container, -c] [--tail, -n] [--follow, -f] [-
|
|
|
90
93
|
|
|
91
94
|
## TODO
|
|
92
95
|
|
|
93
|
-
- [
|
|
94
|
-
- [
|
|
95
|
-
- [
|
|
96
|
-
- [
|
|
97
|
-
- [ ]
|
|
98
|
-
- [ ]
|
|
96
|
+
- [ ] 数据库中自动添加trace_id
|
|
97
|
+
- [ ] Workflow相关更加精确的报错信息
|
|
98
|
+
- [ ] 完善通用节点
|
|
99
|
+
- [ ] 服务之间的相互调用
|
|
100
|
+
- [ ] 节点自动生成
|
|
101
|
+
- [ ] proto管理和注入
|
|
102
|
+
- [ ] 服务存活心跳包
|
|
103
|
+
- [ ] 各种类型的测试
|
|
@@ -53,9 +53,11 @@ sft service logs <service_name> [--container, -c] [--tail, -n] [--follow, -f] [-
|
|
|
53
53
|
|
|
54
54
|
## TODO
|
|
55
55
|
|
|
56
|
-
- [
|
|
57
|
-
- [
|
|
58
|
-
- [
|
|
59
|
-
- [
|
|
60
|
-
- [ ]
|
|
61
|
-
- [ ]
|
|
56
|
+
- [ ] 数据库中自动添加trace_id
|
|
57
|
+
- [ ] Workflow相关更加精确的报错信息
|
|
58
|
+
- [ ] 完善通用节点
|
|
59
|
+
- [ ] 服务之间的相互调用
|
|
60
|
+
- [ ] 节点自动生成
|
|
61
|
+
- [ ] proto管理和注入
|
|
62
|
+
- [ ] 服务存活心跳包
|
|
63
|
+
- [ ] 各种类型的测试
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
name: test_service
|
|
2
|
+
workflows:
|
|
3
|
+
- ../workflow/test_query_llm.yaml
|
|
4
|
+
enable_http: true
|
|
5
|
+
http_host: 0.0.0.0
|
|
6
|
+
http_port: 37200
|
|
7
|
+
enable_kafka: false
|
|
8
|
+
kafka_host: localhost
|
|
9
|
+
kafka_port: 9092
|
|
10
|
+
|
|
11
|
+
databases:
|
|
12
|
+
- name: feedback_db
|
|
13
|
+
postgres_user: postgres
|
|
14
|
+
postgres_password: Luxuyang410641F
|
|
15
|
+
postgres_host: localhost
|
|
16
|
+
postgres_port: 5433
|
|
17
|
+
postgres_db: service_forge_feedback
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
x-common: &common
|
|
2
|
+
networks:
|
|
3
|
+
- signoz-net
|
|
4
|
+
restart: unless-stopped
|
|
5
|
+
logging:
|
|
6
|
+
options:
|
|
7
|
+
max-size: 50m
|
|
8
|
+
max-file: "3"
|
|
9
|
+
x-clickhouse-defaults: &clickhouse-defaults
|
|
10
|
+
!!merge <<: *common
|
|
11
|
+
# addding non LTS version due to this fix https://github.com/ClickHouse/ClickHouse/commit/32caf8716352f45c1b617274c7508c86b7d1afab
|
|
12
|
+
image: clickhouse/clickhouse-server:24.1.2-alpine
|
|
13
|
+
tty: true
|
|
14
|
+
labels:
|
|
15
|
+
signoz.io/scrape: "true"
|
|
16
|
+
signoz.io/port: "9363"
|
|
17
|
+
signoz.io/path: "/metrics"
|
|
18
|
+
depends_on:
|
|
19
|
+
init-clickhouse:
|
|
20
|
+
condition: service_completed_successfully
|
|
21
|
+
zookeeper-1:
|
|
22
|
+
condition: service_healthy
|
|
23
|
+
healthcheck:
|
|
24
|
+
test:
|
|
25
|
+
- CMD
|
|
26
|
+
- wget
|
|
27
|
+
- --spider
|
|
28
|
+
- -q
|
|
29
|
+
- 0.0.0.0:8123/ping
|
|
30
|
+
interval: 30s
|
|
31
|
+
timeout: 5s
|
|
32
|
+
retries: 3
|
|
33
|
+
ulimits:
|
|
34
|
+
nproc: 65535
|
|
35
|
+
nofile:
|
|
36
|
+
soft: 262144
|
|
37
|
+
hard: 262144
|
|
38
|
+
x-zookeeper-defaults: &zookeeper-defaults
|
|
39
|
+
!!merge <<: *common
|
|
40
|
+
image: zookeeper
|
|
41
|
+
user: root
|
|
42
|
+
labels:
|
|
43
|
+
signoz.io/scrape: "true"
|
|
44
|
+
signoz.io/port: "9141"
|
|
45
|
+
signoz.io/path: "/metrics"
|
|
46
|
+
healthcheck:
|
|
47
|
+
test:
|
|
48
|
+
- CMD-SHELL
|
|
49
|
+
- curl -s -m 2 http://localhost:8080/commands/ruok | grep error | grep null
|
|
50
|
+
interval: 30s
|
|
51
|
+
timeout: 5s
|
|
52
|
+
retries: 3
|
|
53
|
+
x-db-depend: &db-depend
|
|
54
|
+
!!merge <<: *common
|
|
55
|
+
depends_on:
|
|
56
|
+
clickhouse:
|
|
57
|
+
condition: service_healthy
|
|
58
|
+
schema-migrator-sync:
|
|
59
|
+
condition: service_completed_successfully
|
|
60
|
+
services:
|
|
61
|
+
init-clickhouse:
|
|
62
|
+
!!merge <<: *common
|
|
63
|
+
image: clickhouse/clickhouse-server:24.1.2-alpine
|
|
64
|
+
container_name: signoz-init-clickhouse
|
|
65
|
+
command:
|
|
66
|
+
- bash
|
|
67
|
+
- -c
|
|
68
|
+
- |
|
|
69
|
+
version="v0.0.1"
|
|
70
|
+
node_os=$$(uname -s | tr '[:upper:]' '[:lower:]')
|
|
71
|
+
node_arch=$$(uname -m | sed s/aarch64/arm64/ | sed s/x86_64/amd64/)
|
|
72
|
+
echo "Fetching histogram-binary for $${node_os}/$${node_arch}"
|
|
73
|
+
cd /tmp
|
|
74
|
+
wget -O histogram-quantile.tar.gz "https://github.com/SigNoz/signoz/releases/download/histogram-quantile%2F$${version}/histogram-quantile_$${node_os}_$${node_arch}.tar.gz"
|
|
75
|
+
tar -xvzf histogram-quantile.tar.gz
|
|
76
|
+
mv histogram-quantile /var/lib/clickhouse/user_scripts/histogramQuantile
|
|
77
|
+
restart: on-failure
|
|
78
|
+
volumes:
|
|
79
|
+
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
|
|
80
|
+
zookeeper-1:
|
|
81
|
+
!!merge <<: *zookeeper-defaults
|
|
82
|
+
container_name: signoz-zookeeper-1
|
|
83
|
+
# ports:
|
|
84
|
+
# - "2181:2181"
|
|
85
|
+
# - "2888:2888"
|
|
86
|
+
# - "3888:3888"
|
|
87
|
+
volumes:
|
|
88
|
+
- zookeeper-1:/bitnami/zookeeper
|
|
89
|
+
environment:
|
|
90
|
+
- ZOO_SERVER_ID=1
|
|
91
|
+
- ALLOW_ANONYMOUS_LOGIN=yes
|
|
92
|
+
- ZOO_AUTOPURGE_INTERVAL=1
|
|
93
|
+
- ZOO_ENABLE_PROMETHEUS_METRICS=yes
|
|
94
|
+
- ZOO_PROMETHEUS_METRICS_PORT_NUMBER=9141
|
|
95
|
+
clickhouse:
|
|
96
|
+
!!merge <<: *clickhouse-defaults
|
|
97
|
+
container_name: signoz-clickhouse
|
|
98
|
+
# ports:
|
|
99
|
+
# - "9000:9000"
|
|
100
|
+
# - "8123:8123"
|
|
101
|
+
# - "9181:9181"
|
|
102
|
+
volumes:
|
|
103
|
+
# - ../common/clickhouse/config.xml:/etc/clickhouse-server/config.xml
|
|
104
|
+
# - ../common/clickhouse/users.xml:/etc/clickhouse-server/users.xml
|
|
105
|
+
# - ../common/clickhouse/custom-function.xml:/etc/clickhouse-server/custom-function.xml
|
|
106
|
+
- ../common/clickhouse/user_scripts:/var/lib/clickhouse/user_scripts/
|
|
107
|
+
# - ../common/clickhouse/cluster.xml:/etc/clickhouse-server/config.d/cluster.xml
|
|
108
|
+
- clickhouse:/var/lib/clickhouse/
|
|
109
|
+
# - ../common/clickhouse/storage.xml:/etc/clickhouse-server/config.d/storage.xml
|
|
110
|
+
signoz:
|
|
111
|
+
!!merge <<: *db-depend
|
|
112
|
+
image: signoz/signoz:${VERSION:-v0.91.0}
|
|
113
|
+
container_name: signoz
|
|
114
|
+
command:
|
|
115
|
+
- --config=/root/config/prometheus.yml
|
|
116
|
+
ports:
|
|
117
|
+
- "8080:8080" # signoz port
|
|
118
|
+
# - "6060:6060" # pprof port
|
|
119
|
+
volumes:
|
|
120
|
+
- ../common/signoz/prometheus.yml:/root/config/prometheus.yml
|
|
121
|
+
- ../common/dashboards:/root/config/dashboards
|
|
122
|
+
- sqlite:/var/lib/signoz/
|
|
123
|
+
environment:
|
|
124
|
+
- SIGNOZ_ALERTMANAGER_PROVIDER=signoz
|
|
125
|
+
- SIGNOZ_TELEMETRYSTORE_CLICKHOUSE_DSN=tcp://clickhouse:9000
|
|
126
|
+
- SIGNOZ_SQLSTORE_SQLITE_PATH=/var/lib/signoz/signoz.db
|
|
127
|
+
- DASHBOARDS_PATH=/root/config/dashboards
|
|
128
|
+
- STORAGE=clickhouse
|
|
129
|
+
- GODEBUG=netdns=go
|
|
130
|
+
- TELEMETRY_ENABLED=true
|
|
131
|
+
- DEPLOYMENT_TYPE=docker-standalone-amd
|
|
132
|
+
- DOT_METRICS_ENABLED=true
|
|
133
|
+
healthcheck:
|
|
134
|
+
test:
|
|
135
|
+
- CMD
|
|
136
|
+
- wget
|
|
137
|
+
- --spider
|
|
138
|
+
- -q
|
|
139
|
+
- localhost:8080/api/v1/health
|
|
140
|
+
interval: 30s
|
|
141
|
+
timeout: 5s
|
|
142
|
+
retries: 3
|
|
143
|
+
otel-collector:
|
|
144
|
+
!!merge <<: *db-depend
|
|
145
|
+
image: signoz/signoz-otel-collector:${OTELCOL_TAG:-v0.128.2}
|
|
146
|
+
container_name: signoz-otel-collector
|
|
147
|
+
command:
|
|
148
|
+
- --config=/etc/otel-collector-config.yaml
|
|
149
|
+
- --manager-config=/etc/manager-config.yaml
|
|
150
|
+
- --copy-path=/var/tmp/collector-config.yaml
|
|
151
|
+
- --feature-gates=-pkg.translator.prometheus.NormalizeName
|
|
152
|
+
volumes:
|
|
153
|
+
- ./otel-collector-config.yaml:/etc/otel-collector-config.yaml
|
|
154
|
+
- ../common/signoz/otel-collector-opamp-config.yaml:/etc/manager-config.yaml
|
|
155
|
+
environment:
|
|
156
|
+
- OTEL_RESOURCE_ATTRIBUTES=host.name=signoz-host,os.type=linux
|
|
157
|
+
- LOW_CARDINAL_EXCEPTION_GROUPING=false
|
|
158
|
+
ports:
|
|
159
|
+
# - "1777:1777" # pprof extension
|
|
160
|
+
- "4317:4317" # OTLP gRPC receiver
|
|
161
|
+
- "4318:4318" # OTLP HTTP receiver
|
|
162
|
+
depends_on:
|
|
163
|
+
signoz:
|
|
164
|
+
condition: service_healthy
|
|
165
|
+
schema-migrator-sync:
|
|
166
|
+
!!merge <<: *common
|
|
167
|
+
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.128.2}
|
|
168
|
+
container_name: schema-migrator-sync
|
|
169
|
+
command:
|
|
170
|
+
- sync
|
|
171
|
+
- --dsn=tcp://clickhouse:9000
|
|
172
|
+
- --dev
|
|
173
|
+
- --cluster-name=default
|
|
174
|
+
- --up=
|
|
175
|
+
depends_on:
|
|
176
|
+
clickhouse:
|
|
177
|
+
condition: service_healthy
|
|
178
|
+
restart: on-failure
|
|
179
|
+
schema-migrator-async:
|
|
180
|
+
!!merge <<: *db-depend
|
|
181
|
+
image: signoz/signoz-schema-migrator:${OTELCOL_TAG:-v0.128.2}
|
|
182
|
+
container_name: schema-migrator-async
|
|
183
|
+
command:
|
|
184
|
+
- async
|
|
185
|
+
- --dsn=tcp://clickhouse:9000
|
|
186
|
+
- --dev
|
|
187
|
+
- --cluster-name=default
|
|
188
|
+
- --up=
|
|
189
|
+
restart: on-failure
|
|
190
|
+
networks:
|
|
191
|
+
signoz-net:
|
|
192
|
+
name: signoz-net
|
|
193
|
+
volumes:
|
|
194
|
+
clickhouse:
|
|
195
|
+
name: signoz-clickhouse
|
|
196
|
+
sqlite:
|
|
197
|
+
name: signoz-sqlite
|
|
198
|
+
zookeeper-1:
|
|
199
|
+
name: signoz-zookeeper-1
|
service_forge-0.1.48/example/tag-service/alembic/versions/3c2f486fa1d4_change_user_id_to_string.py
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"""change_user_id_to_string
|
|
2
|
+
|
|
3
|
+
Revision ID: 3c2f486fa1d4
|
|
4
|
+
Revises: 78e0ab93b1e5
|
|
5
|
+
Create Date: 2026-01-09 23:14:18.264394
|
|
6
|
+
|
|
7
|
+
"""
|
|
8
|
+
from typing import Sequence, Union
|
|
9
|
+
|
|
10
|
+
from alembic import op
|
|
11
|
+
import sqlalchemy as sa
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# revision identifiers, used by Alembic.
|
|
15
|
+
revision: str = '3c2f486fa1d4'
|
|
16
|
+
down_revision: Union[str, Sequence[str], None] = '78e0ab93b1e5'
|
|
17
|
+
branch_labels: Union[str, Sequence[str], None] = None
|
|
18
|
+
depends_on: Union[str, Sequence[str], None] = None
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def upgrade() -> None:
|
|
22
|
+
"""Upgrade schema."""
|
|
23
|
+
# Change column type from Integer to String
|
|
24
|
+
# postgresql_using will automatically convert integer values to text
|
|
25
|
+
op.alter_column('tag', 'user_id',
|
|
26
|
+
type_=sa.String(255),
|
|
27
|
+
existing_type=sa.Integer(),
|
|
28
|
+
existing_nullable=True,
|
|
29
|
+
postgresql_using='user_id::text')
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def downgrade() -> None:
|
|
33
|
+
"""Downgrade schema."""
|
|
34
|
+
# Change column type from String back to Integer
|
|
35
|
+
# postgresql_using will automatically convert text values to integer
|
|
36
|
+
# Note: This will fail if any user_id values are not valid integers
|
|
37
|
+
op.alter_column('tag', 'user_id',
|
|
38
|
+
type_=sa.Integer(),
|
|
39
|
+
existing_type=sa.String(255),
|
|
40
|
+
existing_nullable=True,
|
|
41
|
+
postgresql_using='user_id::integer')
|
|
@@ -2,12 +2,13 @@ name: tag_service
|
|
|
2
2
|
workflows:
|
|
3
3
|
# - ./workflow/kafka_workflow.yaml
|
|
4
4
|
- ./workflow/query_tags_workflow.yaml
|
|
5
|
+
- ./workflow/query_tags_param_workflow.yaml
|
|
5
6
|
# - ./workflow/create_tag_workflow.yaml
|
|
6
7
|
# - ./workflow/update_tag_workflow.yaml
|
|
7
8
|
# - ./workflow/delete_tag_workflow.yaml
|
|
8
9
|
# - ./workflow/get_tags_from_record.yaml
|
|
9
10
|
# - ./workflow/test_sse_workflow.yaml
|
|
10
|
-
|
|
11
|
+
- ./workflow/test_websocket_workflow.yaml
|
|
11
12
|
# - ./workflow/test_a2a_workflow.yaml
|
|
12
13
|
# - ./workflow/test_context_workflow.yaml
|
|
13
14
|
|
|
@@ -39,10 +40,26 @@ databases:
|
|
|
39
40
|
mongo_host: localhost
|
|
40
41
|
mongo_port: 27017
|
|
41
42
|
mongo_user: admin
|
|
42
|
-
mongo_db:
|
|
43
|
+
mongo_db:
|
|
43
44
|
mongo_password: mongo123
|
|
44
45
|
|
|
45
46
|
- name: tag-redis
|
|
46
47
|
redis_host: localhost
|
|
47
48
|
redis_port: 6379
|
|
48
|
-
redis_password: myredispass
|
|
49
|
+
redis_password: myredispass
|
|
50
|
+
|
|
51
|
+
signoz:
|
|
52
|
+
api_url: http://signoz.vps.shiweinan.com:37919
|
|
53
|
+
api_key: JlxvqRtNFu5yc4o1bRcJyzeolA96iWzAyQnBePRRJd0=
|
|
54
|
+
|
|
55
|
+
feedback:
|
|
56
|
+
api_url: http://localhost:8000/api/v1/feedback
|
|
57
|
+
api_timeout: 10
|
|
58
|
+
|
|
59
|
+
trace:
|
|
60
|
+
enable: false
|
|
61
|
+
url: http://localhost:4318/v1/traces
|
|
62
|
+
headers: ""
|
|
63
|
+
arg: 1.0
|
|
64
|
+
namespace: secondbrain
|
|
65
|
+
hostname: ""
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: query_tags_workflow
|
|
2
|
+
description: Query tags
|
|
3
|
+
nodes:
|
|
4
|
+
- name: fast_api_server
|
|
5
|
+
type: FastAPITrigger
|
|
6
|
+
args:
|
|
7
|
+
app: app
|
|
8
|
+
path: /tags/{id}
|
|
9
|
+
method: GET
|
|
10
|
+
data_type: <{QUERY_TAGS_MODEL}>
|
|
11
|
+
outputs:
|
|
12
|
+
data: http_query_tags|query
|
|
13
|
+
user_id: http_query_tags|user_id
|
|
14
|
+
|
|
15
|
+
- name: http_query_tags
|
|
16
|
+
type: HttpQueryTagsNode
|
|
17
|
+
args:
|
|
18
|
+
outputs:
|
|
19
|
+
tags: null
|
|
20
|
+
|
|
21
|
+
outputs:
|
|
22
|
+
- name: result0
|
|
23
|
+
port: http_query_tags|tags
|
|
@@ -6,15 +6,16 @@ nodes:
|
|
|
6
6
|
args:
|
|
7
7
|
app: app
|
|
8
8
|
path: /test_websocket
|
|
9
|
-
data_type: <{
|
|
9
|
+
data_type: <{TEST_WEBSOCKET_MODEL}>
|
|
10
10
|
outputs:
|
|
11
|
-
data:
|
|
11
|
+
data: test_websocket|message
|
|
12
|
+
client_id: test_websocket|client_id
|
|
12
13
|
|
|
13
|
-
- name:
|
|
14
|
-
type:
|
|
14
|
+
- name: test_websocket
|
|
15
|
+
type: TestWebSocketNode
|
|
15
16
|
args:
|
|
16
|
-
outputs:
|
|
17
|
+
outputs:
|
|
17
18
|
|
|
18
19
|
outputs:
|
|
19
20
|
- name: result
|
|
20
|
-
port:
|
|
21
|
+
port: test_websocket|result
|
|
@@ -2,7 +2,7 @@ import os
|
|
|
2
2
|
import asyncio
|
|
3
3
|
from dotenv import load_dotenv
|
|
4
4
|
from loguru import logger
|
|
5
|
-
|
|
5
|
+
from typing import Any
|
|
6
6
|
from service_forge.service import Service
|
|
7
7
|
from service_forge.sft.config.sf_metadata import load_metadata
|
|
8
8
|
from proto.topics import TAG_REQUEST, TAG_RESPONSE
|
|
@@ -33,6 +33,7 @@ async def main():
|
|
|
33
33
|
'DELETE_TAG_MODEL': DeleteTagModel,
|
|
34
34
|
'GET_TAGS_MODEL': Record,
|
|
35
35
|
'TEST_SSE_MODEL': TestSSEModel,
|
|
36
|
+
'TEST_WEBSOCKET_MODEL': Any,
|
|
36
37
|
}
|
|
37
38
|
)
|
|
38
39
|
await service.start()
|
|
@@ -2,6 +2,7 @@ import asyncio
|
|
|
2
2
|
import json
|
|
3
3
|
import sys
|
|
4
4
|
import uuid
|
|
5
|
+
from service_forge.service_config import ServiceConfig
|
|
5
6
|
|
|
6
7
|
from asyncpg import InvalidCatalogNameError
|
|
7
8
|
from loguru import logger
|
|
@@ -100,6 +101,10 @@ async def update_default_tag(database: PostgresDatabase):
|
|
|
100
101
|
async def main():
|
|
101
102
|
logger.info("Starting database migration process")
|
|
102
103
|
|
|
104
|
+
config = ServiceConfig.from_yaml_file("configs/service.yaml")
|
|
105
|
+
for database in config.databases:
|
|
106
|
+
print(database.postgres_host, database.postgres_port, database.postgres_user, database.postgres_password, database.postgres_db)
|
|
107
|
+
|
|
103
108
|
database_manager = DatabaseManager.from_config(config_path="configs/service.yaml")
|
|
104
109
|
database = database_manager.get_default_postgres_database()
|
|
105
110
|
if database is None:
|
|
@@ -12,7 +12,7 @@ class TagBase(Base):
|
|
|
12
12
|
id = Column(UUID(as_uuid=True), primary_key=True, default=uuid.uuid4)
|
|
13
13
|
name = Column(String(50), nullable=False)
|
|
14
14
|
type = Column(String(50), nullable=True)
|
|
15
|
-
user_id = Column(
|
|
15
|
+
user_id = Column(String(255), nullable=True)
|
|
16
16
|
description = Column(String(255), nullable=True)
|
|
17
17
|
example = Column(String(255), nullable=True)
|
|
18
18
|
created_at = Column(DateTime, default=datetime.now)
|
|
@@ -5,4 +5,5 @@ from .http_update_tag_node import HttpUpdateTagNode
|
|
|
5
5
|
from .http_delete_tag_node import HttpDeleteTagNode
|
|
6
6
|
from .test_sse_node import TestSSENode
|
|
7
7
|
from .test_context_node import TestContextNode
|
|
8
|
-
from .test_a2a_node import TestA2ANode
|
|
8
|
+
from .test_a2a_node import TestA2ANode
|
|
9
|
+
from .test_websocket_node import TestWebSocketNode
|
{service_forge-0.1.15 → service_forge-0.1.48}/example/tag-service/nodes/http_query_tags_node.py
RENAMED
|
@@ -5,6 +5,7 @@ from model.db.tag_base import TagBase
|
|
|
5
5
|
from model.http.query_tags_model import QueryTagsModel
|
|
6
6
|
from sqlalchemy import select, or_, func
|
|
7
7
|
from pydantic import BaseModel
|
|
8
|
+
from fastapi import HTTPException
|
|
8
9
|
|
|
9
10
|
class HttpQueryTagsItem(BaseModel):
|
|
10
11
|
id: str
|
|
@@ -21,7 +22,7 @@ class HttpQueryTagsResult(BaseModel):
|
|
|
21
22
|
|
|
22
23
|
class HttpQueryTagsNode(Node):
|
|
23
24
|
DEFAULT_INPUT_PORTS = [
|
|
24
|
-
Port("user_id",
|
|
25
|
+
Port("user_id", str),
|
|
25
26
|
Port("query", QueryTagsModel)
|
|
26
27
|
]
|
|
27
28
|
|
|
@@ -33,6 +34,7 @@ class HttpQueryTagsNode(Node):
|
|
|
33
34
|
super().__init__(name)
|
|
34
35
|
|
|
35
36
|
async def _run(self, query: QueryTagsModel, user_id: int) -> None:
|
|
37
|
+
self.global_context.variables["test"] = self.global_context.variables.get("test", 0) + 1
|
|
36
38
|
if query.ids:
|
|
37
39
|
tag_ids = query.ids.split(",")
|
|
38
40
|
# search tags in database
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import asyncio
|
|
2
|
+
from typing import AsyncIterator
|
|
3
|
+
from service_forge.workflow.node import Node
|
|
4
|
+
from service_forge.workflow.port import Port
|
|
5
|
+
from model.http.test_sse_model import TestSSEModel
|
|
6
|
+
import uuid
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
class TestWebSocketNode(Node):
|
|
10
|
+
DEFAULT_INPUT_PORTS = [
|
|
11
|
+
Port("message", Any),
|
|
12
|
+
Port("client_id", uuid.UUID),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
DEFAULT_OUTPUT_PORTS = [
|
|
16
|
+
Port("result", str)
|
|
17
|
+
]
|
|
18
|
+
|
|
19
|
+
def __init__(self, name: str):
|
|
20
|
+
super().__init__(name)
|
|
21
|
+
|
|
22
|
+
async def _run(self, message: Any, client_id: uuid.UUID) -> AsyncIterator[str]:
|
|
23
|
+
print("client_id", client_id, 'data', message)
|
|
24
|
+
self.activate_output_edges('result', "Done!")
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
gitdir: ../../../.git/modules/example/example-service/proto
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Update Template Repo Submodules
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches:
|
|
5
|
+
- main
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
update_modules:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: checkout_template_repo
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
with:
|
|
16
|
+
repository: NextHCI/kafka-pipeline-template
|
|
17
|
+
submodules: true
|
|
18
|
+
token: ${{ secrets.UPDATE_TEMPLATE_PAT_TOKEN }}
|
|
19
|
+
|
|
20
|
+
- name: setup github auth
|
|
21
|
+
run: |
|
|
22
|
+
git config --global user.name "GitHub Actions - update submodules"
|
|
23
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
24
|
+
git config --global url."https://x-access-token:${{ secrets.UPDATE_TEMPLATE_PAT_TOKEN }}@github.com/".insteadOf "https://github.com/"
|
|
25
|
+
git config --global submodule.recurse true
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
- name: Pull & update submodules recursively
|
|
30
|
+
run: |
|
|
31
|
+
git submodule update --init --recursive
|
|
32
|
+
git submodule update --recursive --remote
|
|
33
|
+
|
|
34
|
+
- name: Commit
|
|
35
|
+
run: |
|
|
36
|
+
git add --all
|
|
37
|
+
git commit -m "Update protobuf submodules" || echo "No changes to commit"
|
|
38
|
+
git push
|