@ancplua/qyl-api-schema 0.2.0

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 (54) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +89 -0
  3. package/VERSIONING.md +74 -0
  4. package/api/routes.tsp +1052 -0
  5. package/api/streaming.tsp +335 -0
  6. package/common/errors.tsp +206 -0
  7. package/common/pagination.tsp +254 -0
  8. package/common/types.tsp +345 -0
  9. package/generated/README.md +26 -0
  10. package/generated/otel-keys.gen.tsp +1648 -0
  11. package/index.tsp +55 -0
  12. package/intelligence/causal-rules.tsp +34 -0
  13. package/intelligence/diagnostic-patterns.tsp +54 -0
  14. package/intelligence/investigation-strategies.tsp +37 -0
  15. package/intelligence/main.tsp +19 -0
  16. package/intelligence/seed/patterns.tsp +172 -0
  17. package/intelligence/seed/rules.tsp +44 -0
  18. package/intelligence/seed/strategies.tsp +56 -0
  19. package/intelligence/signals.tsp +60 -0
  20. package/models/agent/agent-run.tsp +154 -0
  21. package/models/agent/tool-call.tsp +122 -0
  22. package/models/agent/workflow-checkpoint.tsp +50 -0
  23. package/models/agent/workflow-execution.tsp +136 -0
  24. package/models/alerting.tsp +436 -0
  25. package/models/configurator.tsp +433 -0
  26. package/models/control-graph.tsp +197 -0
  27. package/models/db.tsp +810 -0
  28. package/models/deployment.tsp +365 -0
  29. package/models/error.tsp +433 -0
  30. package/models/genai.tsp +1368 -0
  31. package/models/http.tsp +600 -0
  32. package/models/identity.tsp +213 -0
  33. package/models/issues.tsp +484 -0
  34. package/models/log.tsp +140 -0
  35. package/models/messaging.tsp +304 -0
  36. package/models/otel-config.tsp +455 -0
  37. package/models/retention.tsp +240 -0
  38. package/models/rpc.tsp +309 -0
  39. package/models/search.tsp +243 -0
  40. package/models/session.tsp +274 -0
  41. package/models/system.tsp +400 -0
  42. package/models/test.tsp +346 -0
  43. package/models/triage.tsp +113 -0
  44. package/models/workflow.tsp +396 -0
  45. package/models/workspace.tsp +435 -0
  46. package/otel/enums.tsp +392 -0
  47. package/otel/logs.tsp +135 -0
  48. package/otel/metrics.tsp +358 -0
  49. package/otel/otel-conventions.tsp +14 -0
  50. package/otel/profiles.tsp +335 -0
  51. package/otel/resource.tsp +257 -0
  52. package/otel/span.tsp +307 -0
  53. package/package.json +88 -0
  54. package/tspconfig.yaml +49 -0
@@ -0,0 +1,396 @@
1
+ // =============================================================================
2
+ // ANcpLua v2.0 - Workflow DAG Runtime Entities
3
+ // =============================================================================
4
+ // Workflow runs, nodes, checkpoints, shared state, events, routing rules.
5
+ // =============================================================================
6
+
7
+ import "@typespec/openapi";
8
+ import "../common/types.tsp";
9
+
10
+ using TypeSpec.OpenAPI;
11
+ using Qyl.Api.Contracts.Common;
12
+
13
+ namespace Qyl.Api.Contracts.Domains.Workflow;
14
+
15
+ // =============================================================================
16
+ // Workflow Run
17
+ // =============================================================================
18
+
19
+ @doc("Top-level workflow execution")
20
+ @extension("x-csharp-type", "WorkflowRunEntity")
21
+ model WorkflowRunEntity {
22
+ @doc("Run ID")
23
+ @key
24
+ id: string;
25
+
26
+ @doc("Workflow definition ID")
27
+ @encodedName("application/json", "workflow_id")
28
+ workflowId: string;
29
+
30
+ @doc("Workflow definition version")
31
+ @encodedName("application/json", "workflow_version")
32
+ workflowVersion: int32;
33
+
34
+ @doc("Owning project")
35
+ @encodedName("application/json", "project_id")
36
+ projectId: string;
37
+
38
+ @doc("Trigger type")
39
+ @encodedName("application/json", "trigger_type")
40
+ triggerType: WorkflowTriggerType;
41
+
42
+ @doc("Trigger source identifier")
43
+ @encodedName("application/json", "trigger_source")
44
+ triggerSource?: string;
45
+
46
+ @doc("Run input data")
47
+ @encodedName("application/json", "input_json")
48
+ inputJson?: string;
49
+
50
+ @doc("Run output data")
51
+ @encodedName("application/json", "output_json")
52
+ outputJson?: string;
53
+
54
+ @doc("Run status")
55
+ status: WorkflowRunStatus;
56
+
57
+ @doc("Error message if failed")
58
+ @encodedName("application/json", "error_message")
59
+ errorMessage?: string;
60
+
61
+ @doc("Parent run ID for sub-workflows")
62
+ @encodedName("application/json", "parent_run_id")
63
+ parentRunId?: string;
64
+
65
+ @doc("Correlation ID for tracing")
66
+ @encodedName("application/json", "correlation_id")
67
+ correlationId?: string;
68
+
69
+ @doc("Start timestamp")
70
+ @encodedName("application/json", "started_at")
71
+ startedAt?: utcDateTime;
72
+
73
+ @doc("Completion timestamp")
74
+ @encodedName("application/json", "completed_at")
75
+ completedAt?: utcDateTime;
76
+
77
+ @doc("Duration in milliseconds")
78
+ @encodedName("application/json", "duration_ms")
79
+ durationMs?: int32;
80
+
81
+ @doc("Creation timestamp")
82
+ @encodedName("application/json", "created_at")
83
+ createdAt: utcDateTime;
84
+ }
85
+
86
+ @doc("Workflow trigger types")
87
+ enum WorkflowTriggerType {
88
+ @doc("Manual trigger")
89
+ manual: "manual",
90
+
91
+ @doc("Alert-triggered")
92
+ alert: "alert",
93
+
94
+ @doc("Schedule-triggered")
95
+ schedule: "schedule",
96
+
97
+ @doc("Event-triggered")
98
+ event: "event",
99
+
100
+ @doc("API-triggered")
101
+ api: "api",
102
+
103
+ @doc("MCP tool-triggered")
104
+ mcp: "mcp",
105
+ }
106
+
107
+ @doc("Workflow run status")
108
+ enum WorkflowRunStatus {
109
+ @doc("Pending start")
110
+ pending: "pending",
111
+
112
+ @doc("Currently running")
113
+ running: "running",
114
+
115
+ @doc("Paused/waiting for input")
116
+ paused: "paused",
117
+
118
+ @doc("Successfully completed")
119
+ completed: "completed",
120
+
121
+ @doc("Failed with error")
122
+ failed: "failed",
123
+
124
+ @doc("Cancelled")
125
+ cancelled: "cancelled",
126
+
127
+ @doc("Timed out")
128
+ timedOut: "timed_out",
129
+ }
130
+
131
+ // =============================================================================
132
+ // Workflow Node
133
+ // =============================================================================
134
+
135
+ @doc("Individual DAG node execution")
136
+ @extension("x-csharp-type", "WorkflowNodeEntity")
137
+ model WorkflowNodeEntity {
138
+ @doc("Execution ID")
139
+ @key
140
+ id: string;
141
+
142
+ @doc("Parent run")
143
+ @encodedName("application/json", "run_id")
144
+ runId: string;
145
+
146
+ @doc("Node definition ID")
147
+ @encodedName("application/json", "node_id")
148
+ nodeId: string;
149
+
150
+ @doc("Node type")
151
+ @encodedName("application/json", "node_type")
152
+ nodeType: WorkflowNodeType;
153
+
154
+ @doc("Node name")
155
+ @encodedName("application/json", "node_name")
156
+ nodeName: string;
157
+
158
+ @doc("Attempt number (1-based)")
159
+ attempt: int32;
160
+
161
+ @doc("Node input data")
162
+ @encodedName("application/json", "input_json")
163
+ inputJson?: string;
164
+
165
+ @doc("Node output data")
166
+ @encodedName("application/json", "output_json")
167
+ outputJson?: string;
168
+
169
+ @doc("Node status")
170
+ status: WorkflowRunStatus;
171
+
172
+ @doc("Error message if failed")
173
+ @encodedName("application/json", "error_message")
174
+ errorMessage?: string;
175
+
176
+ @doc("Retry count")
177
+ @encodedName("application/json", "retry_count")
178
+ retryCount: int32;
179
+
180
+ @doc("Maximum retries allowed")
181
+ @encodedName("application/json", "max_retries")
182
+ maxRetries: int32;
183
+
184
+ @doc("Timeout in milliseconds")
185
+ @encodedName("application/json", "timeout_ms")
186
+ timeoutMs?: int32;
187
+
188
+ @doc("Start timestamp")
189
+ @encodedName("application/json", "started_at")
190
+ startedAt?: utcDateTime;
191
+
192
+ @doc("Completion timestamp")
193
+ @encodedName("application/json", "completed_at")
194
+ completedAt?: utcDateTime;
195
+
196
+ @doc("Duration in milliseconds")
197
+ @encodedName("application/json", "duration_ms")
198
+ durationMs?: int32;
199
+
200
+ @doc("Creation timestamp")
201
+ @encodedName("application/json", "created_at")
202
+ createdAt: utcDateTime;
203
+ }
204
+
205
+ @doc("Workflow node types")
206
+ enum WorkflowNodeType {
207
+ @doc("AI agent invocation")
208
+ agent: "agent",
209
+
210
+ @doc("Tool/function call")
211
+ tool: "tool",
212
+
213
+ @doc("Conditional branch")
214
+ condition: "condition",
215
+
216
+ @doc("Parallel fork")
217
+ fork: "fork",
218
+
219
+ @doc("Join/barrier")
220
+ join: "join",
221
+
222
+ @doc("Human approval gate")
223
+ approval: "approval",
224
+
225
+ @doc("Sub-workflow invocation")
226
+ subWorkflow: "sub_workflow",
227
+
228
+ @doc("Transform/map node")
229
+ transform: "transform",
230
+
231
+ @doc("Wait/delay node")
232
+ wait: "wait",
233
+ }
234
+
235
+ // =============================================================================
236
+ // Workflow Checkpoint
237
+ // =============================================================================
238
+
239
+ @doc("Durable node snapshot for crash recovery")
240
+ @extension("x-csharp-type", "WorkflowCheckpointEntity")
241
+ model WorkflowCheckpointEntity {
242
+ @doc("Checkpoint ID")
243
+ @key
244
+ id: string;
245
+
246
+ @doc("Parent run")
247
+ @encodedName("application/json", "run_id")
248
+ runId: string;
249
+
250
+ @doc("Node that created the checkpoint")
251
+ @encodedName("application/json", "node_id")
252
+ nodeId: string;
253
+
254
+ @doc("Checkpoint type")
255
+ @encodedName("application/json", "checkpoint_type")
256
+ checkpointType: string;
257
+
258
+ @doc("Serialized state")
259
+ @encodedName("application/json", "state_json")
260
+ stateJson: string;
261
+
262
+ @doc("Monotonic sequence number")
263
+ @encodedName("application/json", "sequence_number")
264
+ sequenceNumber: int64;
265
+
266
+ @doc("Creation timestamp")
267
+ @encodedName("application/json", "created_at")
268
+ createdAt: utcDateTime;
269
+ }
270
+
271
+ // =============================================================================
272
+ // Workflow Shared State
273
+ // =============================================================================
274
+
275
+ @doc("Cross-node versioned KV store per run")
276
+ @extension("x-csharp-type", "WorkflowSharedStateEntity")
277
+ model WorkflowSharedStateEntity {
278
+ @doc("Run ID")
279
+ @encodedName("application/json", "run_id")
280
+ runId: string;
281
+
282
+ @doc("State key")
283
+ key: string;
284
+
285
+ @doc("State value")
286
+ @encodedName("application/json", "value_json")
287
+ valueJson: string;
288
+
289
+ @doc("Optimistic concurrency version")
290
+ version: int32;
291
+
292
+ @doc("Last updater")
293
+ @encodedName("application/json", "updated_by")
294
+ updatedBy?: string;
295
+
296
+ @doc("Creation timestamp")
297
+ @encodedName("application/json", "created_at")
298
+ createdAt: utcDateTime;
299
+
300
+ @doc("Last update timestamp")
301
+ @encodedName("application/json", "updated_at")
302
+ updatedAt: utcDateTime;
303
+ }
304
+
305
+ // =============================================================================
306
+ // Workflow Event
307
+ // =============================================================================
308
+
309
+ @doc("Append-only workflow event")
310
+ @extension("x-csharp-type", "WorkflowEventEntity")
311
+ model WorkflowEventEntity {
312
+ @doc("Event ID")
313
+ @key
314
+ id: string;
315
+
316
+ @doc("Parent run")
317
+ @encodedName("application/json", "run_id")
318
+ runId: string;
319
+
320
+ @doc("Source node (null for run-level events)")
321
+ @encodedName("application/json", "node_id")
322
+ nodeId?: string;
323
+
324
+ @doc("Event type")
325
+ @encodedName("application/json", "event_type")
326
+ eventType: string;
327
+
328
+ @doc("Event name")
329
+ @encodedName("application/json", "event_name")
330
+ eventName: string;
331
+
332
+ @doc("Event payload")
333
+ @encodedName("application/json", "payload_json")
334
+ payloadJson?: string;
335
+
336
+ @doc("Monotonic sequence number")
337
+ @encodedName("application/json", "sequence_number")
338
+ sequenceNumber: int64;
339
+
340
+ @doc("Event source identifier")
341
+ source?: string;
342
+
343
+ @doc("Correlation ID")
344
+ @encodedName("application/json", "correlation_id")
345
+ correlationId?: string;
346
+
347
+ @doc("Event timestamp")
348
+ timestamp: utcDateTime;
349
+ }
350
+
351
+ // =============================================================================
352
+ // Workflow Routing Rule
353
+ // =============================================================================
354
+
355
+ @doc("DAG conditional branch predicate")
356
+ @extension("x-csharp-type", "WorkflowRoutingRuleEntity")
357
+ model WorkflowRoutingRuleEntity {
358
+ @doc("Rule ID")
359
+ @key
360
+ id: string;
361
+
362
+ @doc("Workflow definition")
363
+ @encodedName("application/json", "workflow_id")
364
+ workflowId: string;
365
+
366
+ @doc("Source node")
367
+ @encodedName("application/json", "source_node_id")
368
+ sourceNodeId: string;
369
+
370
+ @doc("Target node")
371
+ @encodedName("application/json", "target_node_id")
372
+ targetNodeId: string;
373
+
374
+ @doc("Condition type")
375
+ @encodedName("application/json", "condition_type")
376
+ conditionType: string;
377
+
378
+ @doc("Condition expression")
379
+ @encodedName("application/json", "condition_expression")
380
+ conditionExpression: string;
381
+
382
+ @doc("Evaluation priority (higher first)")
383
+ priority: int32;
384
+
385
+ @doc("Whether this is the default/fallback route")
386
+ @encodedName("application/json", "is_default")
387
+ isDefault: boolean;
388
+
389
+ @doc("Creation timestamp")
390
+ @encodedName("application/json", "created_at")
391
+ createdAt: utcDateTime;
392
+
393
+ @doc("Last update timestamp")
394
+ @encodedName("application/json", "updated_at")
395
+ updatedAt: utcDateTime;
396
+ }