feat: add LLM step executor with vision and tool support, event workflow system, and inheritance

- Add LLM executor supporting OpenAI vision, tool calling, embeddings, and structured outputs
- Introduce event emitter/receiver workflows with deduplication and filtering (generate_event functions)
- Add workflow extends/override system enabling inheritance chains and step merge modes
- Update function naming to snake_case across all testdata (fileExists→file_exists, etc.)
- Add comprehensive test fixtures for linter, events, CDN, step dependencies, and extends workflows
This commit is contained in:
j3ssie
2026-01-20 18:23:57 +08:00
parent 9ed02e7eee
commit 1403d20a4d
219 changed files with 25734 additions and 1696 deletions
+34 -2
View File
@@ -15,7 +15,7 @@ curl http://localhost:8002/osm/api/workflows \
|-----------|------|---------|-------------|
| `source` | string | `db` | Data source: `db` (database) or `filesystem` (direct file scan) |
| `tags` | string | - | Comma-separated list of tags to filter by |
| `kind` | string | - | Filter by workflow kind: `flow` or `module` |
| `kind` | string | - | Filter by workflow kind: `flow`, `module` |
| `search` | string | - | Search in workflow name and description |
| `offset` | int | 0 | Pagination offset |
| `limit` | int | 50 | Maximum records to return |
@@ -27,10 +27,11 @@ curl http://localhost:8002/osm/api/workflows \
curl "http://localhost:8002/osm/api/workflows?tags=recon,subdomain" \
-H "Authorization: Bearer $TOKEN"
# Filter by kind
# Filter by kind (module)
curl "http://localhost:8002/osm/api/workflows?kind=module" \
-H "Authorization: Bearer $TOKEN"
# Search workflows
curl "http://localhost:8002/osm/api/workflows?search=enum" \
-H "Authorization: Bearer $TOKEN"
@@ -249,3 +250,34 @@ steps:
}
}
```
**Step Dependencies:**
Steps can have dependencies on other steps using the `depends_on` field:
```json
{
"steps": [
{
"index": 0,
"name": "step-a",
"type": "bash",
"command": "echo A"
},
{
"index": 1,
"name": "step-b",
"type": "bash",
"command": "echo B",
"depends_on": ["step-a"]
},
{
"index": 2,
"name": "step-c",
"type": "bash",
"command": "echo C",
"depends_on": ["step-a", "step-b"]
}
]
}
```