Skip to content

Commit 178aa73

Browse files
authored
Merge pull request #770 from objectstack-ai/copilot/fix-254823548-1136691870-32eeed23-67fe-4750-9f50-c28071ee953c
2 parents efe9a42 + 8afc3f7 commit 178aa73

6 files changed

Lines changed: 1278 additions & 53 deletions

File tree

ROADMAP.md

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ Multi-stage triggers, action pipelines, execution logs, and cron scheduling stan
148148
| State machine & approval processes || `automation/state-machine.zod.ts`, `automation/workflow.zod.ts` |
149149
| Retry policies with exponential backoff || `automation/webhook.zod.ts` |
150150
| `IAutomationService` contract || `contracts/automation-service.ts` (typed: `FlowParsed`, `ExecutionLog`) |
151-
| `service-automation` DAG engine (MVP) || `@objectstack/service-automation` (42 tests) |
151+
| `service-automation` DAG engine (MVP) || `@objectstack/service-automation` (67 tests) |
152152
| Execution log/history storage protocol || `automation/execution.zod.ts``ExecutionLogSchema`, `ExecutionStepLogSchema` |
153153
| Execution error tracking & diagnostics || `automation/execution.zod.ts``ExecutionErrorSchema`, `ExecutionErrorSeverity` |
154154
| Conflict resolution for concurrent executions || `automation/execution.zod.ts``ConcurrencyPolicySchema` |
@@ -157,6 +157,15 @@ Multi-stage triggers, action pipelines, execution logs, and cron scheduling stan
157157
| Automation API protocol (REST CRUD schemas) || `api/automation-api.zod.ts` → 9 endpoints, all with `input`/`output` schemas |
158158
| Automation HTTP route handler (9 routes) || `runtime/http-dispatcher.ts``handleAutomation()` CRUD + toggle + runs |
159159
| Client SDK `automation` namespace (10 methods) || `client/src/index.ts``list`, `get`, `create`, `update`, `delete`, `toggle`, `runs.*` |
160+
| Fault edge error path support || `@objectstack/service-automation` → fault-type edge routing in DAG executor |
161+
| Node step-level execution logging || `@objectstack/service-automation` → per-node timing/status in `ExecutionLogEntry.steps` |
162+
| Retry with exponential backoff & jitter || `automation/flow.zod.ts``backoffMultiplier`, `maxRetryDelayMs`, `jitter` |
163+
| Parallel branch execution (Promise.all) || `@objectstack/service-automation` → unconditional edges run in parallel |
164+
| Node timeout mechanism (Promise.race) || `automation/flow.zod.ts``timeoutMs` per node, engine enforces via `Promise.race` |
165+
| DAG cycle detection on registerFlow || `@objectstack/service-automation` → DFS-based cycle detection with friendly error messages |
166+
| Safe expression evaluation (no `new Function`) || `@objectstack/service-automation` → operator-based parser, no code execution |
167+
| Node input/output schema validation || `automation/flow.zod.ts``inputSchema`/`outputSchema` per node, runtime validation |
168+
| Flow version history & rollback || `automation/flow.zod.ts``FlowVersionHistorySchema`, engine version management |
160169

161170
### 3. File Direct Upload & Resumable Upload Protocol
162171

@@ -446,13 +455,13 @@ business/custom objects, aligning with industry best practices (e.g., ServiceNow
446455

447456
| Contract | Priority | Package | Notes |
448457
|:---|:---:|:---|:---|
449-
| `IAutomationService` | **P2** | `@objectstack/service-automation` | ✅ Plugin-based DAG flow engine + HTTP API + Client SDK (42 tests) |
458+
| `IAutomationService` | **P2** | `@objectstack/service-automation` | ✅ Plugin-based DAG flow engine + HTTP API + Client SDK (67 tests) |
450459
| `IWorkflowService` | **P2** | `@objectstack/service-workflow` | State machine + approval processes |
451460
| `IGraphQLService` | **P2** | `@objectstack/service-graphql` | Auto-generated GraphQL from objects |
452461
| `IAIService` | **P2** | `@objectstack/service-ai` | LLM integration (OpenAI/Anthropic/local) |
453462
| `IAnalyticsService` | **P3** | `@objectstack/service-analytics` | BI/OLAP queries |
454463

455-
- [x] `service-automation` — Implement `IAutomationService` with plugin-based DAG flow engine (MVP: CRUD/Logic/HTTP nodes), HTTP API CRUD (9 routes), Client SDK (10 methods), execution history
464+
- [x] `service-automation` — Implement `IAutomationService` with plugin-based DAG flow engine (CRUD/Logic/HTTP nodes, fault edges, parallel branches, cycle detection, safe eval, timeout, versioning), HTTP API CRUD (9 routes), Client SDK (10 methods), execution history with step-level logging
456465
- [ ] `service-workflow` — Implement `IWorkflowService` with state machine runtime
457466
- [ ] `service-graphql` — Implement `IGraphQLService` with auto-schema generation
458467
- [ ] `service-ai` — Implement `IAIService` with multi-provider LLM routing
@@ -721,7 +730,7 @@ Final polish and advanced features.
721730
| 16 | Search Service | `ISearchService` || `@objectstack/service-search` (planned) | Spec only |
722731
| 17 | Notification Service | `INotificationService` || `@objectstack/service-notification` (planned) | Spec only |
723732
| 18 | AI Service | `IAIService` || `@objectstack/service-ai` (planned) | Spec only |
724-
| 19 | Automation Service | `IAutomationService` || `@objectstack/service-automation` | DAG engine + HTTP API CRUD + Client SDK + typed returns (42 tests) |
733+
| 19 | Automation Service | `IAutomationService` || `@objectstack/service-automation` | DAG engine + HTTP API CRUD + Client SDK + typed returns (67 tests) |
725734
| 20 | Workflow Service | `IWorkflowService` || `@objectstack/service-workflow` (planned) | Spec only |
726735
| 21 | GraphQL Service | `IGraphQLService` || `@objectstack/service-graphql` (planned) | Spec only |
727736
| 22 | i18n Service | `II18nService` || `@objectstack/service-i18n` | File-based locale loading |

0 commit comments

Comments
 (0)