@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.
- package/LICENSE +201 -0
- package/README.md +89 -0
- package/VERSIONING.md +74 -0
- package/api/routes.tsp +1052 -0
- package/api/streaming.tsp +335 -0
- package/common/errors.tsp +206 -0
- package/common/pagination.tsp +254 -0
- package/common/types.tsp +345 -0
- package/generated/README.md +26 -0
- package/generated/otel-keys.gen.tsp +1648 -0
- package/index.tsp +55 -0
- package/intelligence/causal-rules.tsp +34 -0
- package/intelligence/diagnostic-patterns.tsp +54 -0
- package/intelligence/investigation-strategies.tsp +37 -0
- package/intelligence/main.tsp +19 -0
- package/intelligence/seed/patterns.tsp +172 -0
- package/intelligence/seed/rules.tsp +44 -0
- package/intelligence/seed/strategies.tsp +56 -0
- package/intelligence/signals.tsp +60 -0
- package/models/agent/agent-run.tsp +154 -0
- package/models/agent/tool-call.tsp +122 -0
- package/models/agent/workflow-checkpoint.tsp +50 -0
- package/models/agent/workflow-execution.tsp +136 -0
- package/models/alerting.tsp +436 -0
- package/models/configurator.tsp +433 -0
- package/models/control-graph.tsp +197 -0
- package/models/db.tsp +810 -0
- package/models/deployment.tsp +365 -0
- package/models/error.tsp +433 -0
- package/models/genai.tsp +1368 -0
- package/models/http.tsp +600 -0
- package/models/identity.tsp +213 -0
- package/models/issues.tsp +484 -0
- package/models/log.tsp +140 -0
- package/models/messaging.tsp +304 -0
- package/models/otel-config.tsp +455 -0
- package/models/retention.tsp +240 -0
- package/models/rpc.tsp +309 -0
- package/models/search.tsp +243 -0
- package/models/session.tsp +274 -0
- package/models/system.tsp +400 -0
- package/models/test.tsp +346 -0
- package/models/triage.tsp +113 -0
- package/models/workflow.tsp +396 -0
- package/models/workspace.tsp +435 -0
- package/otel/enums.tsp +392 -0
- package/otel/logs.tsp +135 -0
- package/otel/metrics.tsp +358 -0
- package/otel/otel-conventions.tsp +14 -0
- package/otel/profiles.tsp +335 -0
- package/otel/resource.tsp +257 -0
- package/otel/span.tsp +307 -0
- package/package.json +88 -0
- package/tspconfig.yaml +49 -0
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// ANcpLua v2.0 - Workspace & Identity Entities
|
|
3
|
+
// =============================================================================
|
|
4
|
+
// Local-first workspace envelope, handshake, tokens, process registry.
|
|
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.Workspace;
|
|
14
|
+
|
|
15
|
+
// =============================================================================
|
|
16
|
+
// Project
|
|
17
|
+
// =============================================================================
|
|
18
|
+
|
|
19
|
+
@doc("Project registry: top-level organizational unit")
|
|
20
|
+
@extension("x-csharp-type", "ProjectEntity")
|
|
21
|
+
model ProjectEntity {
|
|
22
|
+
@doc("Project ID")
|
|
23
|
+
@key
|
|
24
|
+
@visibility(Lifecycle.Read)
|
|
25
|
+
id: string;
|
|
26
|
+
|
|
27
|
+
@doc("Project name")
|
|
28
|
+
@visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
|
|
29
|
+
name: string;
|
|
30
|
+
|
|
31
|
+
@doc("URL-safe slug (unique)")
|
|
32
|
+
@visibility(Lifecycle.Read, Lifecycle.Create)
|
|
33
|
+
slug: string;
|
|
34
|
+
|
|
35
|
+
@doc("Project description")
|
|
36
|
+
@visibility(Lifecycle.Read, Lifecycle.Create, Lifecycle.Update)
|
|
37
|
+
description?: string;
|
|
38
|
+
|
|
39
|
+
@doc("Creation timestamp")
|
|
40
|
+
@visibility(Lifecycle.Read)
|
|
41
|
+
@encodedName("application/json", "created_at")
|
|
42
|
+
createdAt: utcDateTime;
|
|
43
|
+
|
|
44
|
+
@doc("Last update timestamp")
|
|
45
|
+
@visibility(Lifecycle.Read)
|
|
46
|
+
@encodedName("application/json", "updated_at")
|
|
47
|
+
updatedAt: utcDateTime;
|
|
48
|
+
|
|
49
|
+
@doc("Archive timestamp (null if active)")
|
|
50
|
+
@visibility(Lifecycle.Read)
|
|
51
|
+
@encodedName("application/json", "archived_at")
|
|
52
|
+
archivedAt?: utcDateTime;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// =============================================================================
|
|
56
|
+
// Project Environment
|
|
57
|
+
// =============================================================================
|
|
58
|
+
|
|
59
|
+
@doc("Environment row per project (dev, staging, prod)")
|
|
60
|
+
@extension("x-csharp-type", "ProjectEnvironmentEntity")
|
|
61
|
+
model ProjectEnvironmentEntity {
|
|
62
|
+
@doc("Environment ID")
|
|
63
|
+
@key
|
|
64
|
+
id: string;
|
|
65
|
+
|
|
66
|
+
@doc("Owning project")
|
|
67
|
+
@encodedName("application/json", "project_id")
|
|
68
|
+
projectId: string;
|
|
69
|
+
|
|
70
|
+
@doc("Environment name (dev, staging, prod)")
|
|
71
|
+
name: string;
|
|
72
|
+
|
|
73
|
+
@doc("Display name for UI")
|
|
74
|
+
@encodedName("application/json", "display_name")
|
|
75
|
+
displayName: string;
|
|
76
|
+
|
|
77
|
+
@doc("Hex color for UI")
|
|
78
|
+
color?: string;
|
|
79
|
+
|
|
80
|
+
@doc("Sort order for display")
|
|
81
|
+
@encodedName("application/json", "sort_order")
|
|
82
|
+
sortOrder: int32;
|
|
83
|
+
|
|
84
|
+
@doc("Creation timestamp")
|
|
85
|
+
@encodedName("application/json", "created_at")
|
|
86
|
+
createdAt: utcDateTime;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// =============================================================================
|
|
90
|
+
// Local Node
|
|
91
|
+
// =============================================================================
|
|
92
|
+
|
|
93
|
+
@doc("Local agent/daemon registry entry")
|
|
94
|
+
@extension("x-csharp-type", "LocalNodeEntity")
|
|
95
|
+
model LocalNodeEntity {
|
|
96
|
+
@doc("Node ID")
|
|
97
|
+
@key
|
|
98
|
+
id: string;
|
|
99
|
+
|
|
100
|
+
@doc("Owning project")
|
|
101
|
+
@encodedName("application/json", "project_id")
|
|
102
|
+
projectId: string;
|
|
103
|
+
|
|
104
|
+
@doc("Environment")
|
|
105
|
+
@encodedName("application/json", "environment_id")
|
|
106
|
+
environmentId: string;
|
|
107
|
+
|
|
108
|
+
@doc("Machine hostname")
|
|
109
|
+
hostname: string;
|
|
110
|
+
|
|
111
|
+
@doc("OS-level machine identifier")
|
|
112
|
+
@encodedName("application/json", "machine_id")
|
|
113
|
+
machineId?: string;
|
|
114
|
+
|
|
115
|
+
@doc("Agent binary version")
|
|
116
|
+
@encodedName("application/json", "agent_version")
|
|
117
|
+
agentVersion?: string;
|
|
118
|
+
|
|
119
|
+
@doc("Operating system type")
|
|
120
|
+
@encodedName("application/json", "os_type")
|
|
121
|
+
osType?: string;
|
|
122
|
+
|
|
123
|
+
@doc("Operating system version")
|
|
124
|
+
@encodedName("application/json", "os_version")
|
|
125
|
+
osVersion?: string;
|
|
126
|
+
|
|
127
|
+
@doc("First seen timestamp")
|
|
128
|
+
@encodedName("application/json", "first_seen_at")
|
|
129
|
+
firstSeenAt: utcDateTime;
|
|
130
|
+
|
|
131
|
+
@doc("Last seen timestamp")
|
|
132
|
+
@encodedName("application/json", "last_seen_at")
|
|
133
|
+
lastSeenAt: utcDateTime;
|
|
134
|
+
|
|
135
|
+
@doc("Node status")
|
|
136
|
+
status: NodeStatus;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
@doc("Node online status")
|
|
140
|
+
enum NodeStatus {
|
|
141
|
+
@doc("Node is online")
|
|
142
|
+
online: "online",
|
|
143
|
+
|
|
144
|
+
@doc("Node is offline")
|
|
145
|
+
offline: "offline",
|
|
146
|
+
|
|
147
|
+
@doc("Node heartbeat is stale")
|
|
148
|
+
stale: "stale",
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// =============================================================================
|
|
152
|
+
// Workspace Envelope
|
|
153
|
+
// =============================================================================
|
|
154
|
+
|
|
155
|
+
@doc("Workspace envelope: the local-first workspace unit")
|
|
156
|
+
@extension("x-csharp-type", "WorkspaceEnvelopeEntity")
|
|
157
|
+
model WorkspaceEnvelopeEntity {
|
|
158
|
+
@doc("Workspace ID")
|
|
159
|
+
@key
|
|
160
|
+
id: string;
|
|
161
|
+
|
|
162
|
+
@doc("Owning project")
|
|
163
|
+
@encodedName("application/json", "project_id")
|
|
164
|
+
projectId: string;
|
|
165
|
+
|
|
166
|
+
@doc("Environment")
|
|
167
|
+
@encodedName("application/json", "environment_id")
|
|
168
|
+
environmentId: string;
|
|
169
|
+
|
|
170
|
+
@doc("Host node")
|
|
171
|
+
@encodedName("application/json", "node_id")
|
|
172
|
+
nodeId: string;
|
|
173
|
+
|
|
174
|
+
@doc("Workspace name")
|
|
175
|
+
name: string;
|
|
176
|
+
|
|
177
|
+
@doc("Local filesystem root path")
|
|
178
|
+
@encodedName("application/json", "root_path")
|
|
179
|
+
rootPath: string;
|
|
180
|
+
|
|
181
|
+
@doc("Last heartbeat timestamp")
|
|
182
|
+
@encodedName("application/json", "heartbeat_at")
|
|
183
|
+
heartbeatAt?: utcDateTime;
|
|
184
|
+
|
|
185
|
+
@doc("Heartbeat interval in seconds")
|
|
186
|
+
@encodedName("application/json", "heartbeat_interval_seconds")
|
|
187
|
+
heartbeatIntervalSeconds: int32;
|
|
188
|
+
|
|
189
|
+
@doc("Workspace status")
|
|
190
|
+
status: WorkspaceStatus;
|
|
191
|
+
|
|
192
|
+
@doc("Workspace-level configuration overrides")
|
|
193
|
+
@encodedName("application/json", "config_json")
|
|
194
|
+
configJson?: string;
|
|
195
|
+
|
|
196
|
+
@doc("Creation timestamp")
|
|
197
|
+
@encodedName("application/json", "created_at")
|
|
198
|
+
createdAt: utcDateTime;
|
|
199
|
+
|
|
200
|
+
@doc("Last update timestamp")
|
|
201
|
+
@encodedName("application/json", "updated_at")
|
|
202
|
+
updatedAt: utcDateTime;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
@doc("Workspace lifecycle status")
|
|
206
|
+
enum WorkspaceStatus {
|
|
207
|
+
@doc("Active and receiving data")
|
|
208
|
+
active: "active",
|
|
209
|
+
|
|
210
|
+
@doc("Temporarily suspended")
|
|
211
|
+
suspended: "suspended",
|
|
212
|
+
|
|
213
|
+
@doc("Archived (read-only)")
|
|
214
|
+
archived: "archived",
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// =============================================================================
|
|
218
|
+
// Handshake Session
|
|
219
|
+
// =============================================================================
|
|
220
|
+
|
|
221
|
+
@doc("Browser-local handshake session for workspace verification")
|
|
222
|
+
@extension("x-csharp-type", "HandshakeSessionEntity")
|
|
223
|
+
model HandshakeSessionEntity {
|
|
224
|
+
@doc("Session ID")
|
|
225
|
+
@key
|
|
226
|
+
id: string;
|
|
227
|
+
|
|
228
|
+
@doc("Target workspace")
|
|
229
|
+
@encodedName("application/json", "workspace_id")
|
|
230
|
+
workspaceId: string;
|
|
231
|
+
|
|
232
|
+
@doc("PKCE-style challenge")
|
|
233
|
+
challenge: string;
|
|
234
|
+
|
|
235
|
+
@doc("Challenge method")
|
|
236
|
+
@encodedName("application/json", "challenge_method")
|
|
237
|
+
challengeMethod: string;
|
|
238
|
+
|
|
239
|
+
@doc("Browser fingerprint")
|
|
240
|
+
@encodedName("application/json", "browser_fingerprint")
|
|
241
|
+
browserFingerprint?: string;
|
|
242
|
+
|
|
243
|
+
@doc("Origin URL")
|
|
244
|
+
@encodedName("application/json", "origin_url")
|
|
245
|
+
originUrl?: string;
|
|
246
|
+
|
|
247
|
+
@doc("Handshake state")
|
|
248
|
+
state: HandshakeState;
|
|
249
|
+
|
|
250
|
+
@doc("Verification timestamp")
|
|
251
|
+
@encodedName("application/json", "verified_at")
|
|
252
|
+
verifiedAt?: utcDateTime;
|
|
253
|
+
|
|
254
|
+
@doc("Expiration timestamp")
|
|
255
|
+
@encodedName("application/json", "expires_at")
|
|
256
|
+
expiresAt: utcDateTime;
|
|
257
|
+
|
|
258
|
+
@doc("Creation timestamp")
|
|
259
|
+
@encodedName("application/json", "created_at")
|
|
260
|
+
createdAt: utcDateTime;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
@doc("Handshake session state")
|
|
264
|
+
enum HandshakeState {
|
|
265
|
+
@doc("Waiting for verification")
|
|
266
|
+
pending: "pending",
|
|
267
|
+
|
|
268
|
+
@doc("Successfully verified")
|
|
269
|
+
verified: "verified",
|
|
270
|
+
|
|
271
|
+
@doc("Session expired")
|
|
272
|
+
expired: "expired",
|
|
273
|
+
|
|
274
|
+
@doc("Verification rejected")
|
|
275
|
+
rejected: "rejected",
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
// =============================================================================
|
|
279
|
+
// Workspace Token
|
|
280
|
+
// =============================================================================
|
|
281
|
+
|
|
282
|
+
@doc("Workspace-scoped API token metadata")
|
|
283
|
+
@extension("x-csharp-type", "WorkspaceTokenEntity")
|
|
284
|
+
model WorkspaceTokenEntity {
|
|
285
|
+
@doc("Token ID")
|
|
286
|
+
@key
|
|
287
|
+
id: string;
|
|
288
|
+
|
|
289
|
+
@doc("Owning workspace")
|
|
290
|
+
@encodedName("application/json", "workspace_id")
|
|
291
|
+
workspaceId: string;
|
|
292
|
+
|
|
293
|
+
@doc("Token display name")
|
|
294
|
+
name: string;
|
|
295
|
+
|
|
296
|
+
@doc("SHA-256 hash of token value")
|
|
297
|
+
@encodedName("application/json", "token_hash")
|
|
298
|
+
tokenHash: string;
|
|
299
|
+
|
|
300
|
+
@doc("First 8 chars for identification")
|
|
301
|
+
@encodedName("application/json", "token_prefix")
|
|
302
|
+
tokenPrefix: string;
|
|
303
|
+
|
|
304
|
+
@doc("Allowed scopes")
|
|
305
|
+
@encodedName("application/json", "scopes_json")
|
|
306
|
+
scopesJson?: string;
|
|
307
|
+
|
|
308
|
+
@doc("Last used timestamp")
|
|
309
|
+
@encodedName("application/json", "last_used_at")
|
|
310
|
+
lastUsedAt?: utcDateTime;
|
|
311
|
+
|
|
312
|
+
@doc("Expiration timestamp")
|
|
313
|
+
@encodedName("application/json", "expires_at")
|
|
314
|
+
expiresAt?: utcDateTime;
|
|
315
|
+
|
|
316
|
+
@doc("Revocation timestamp")
|
|
317
|
+
@encodedName("application/json", "revoked_at")
|
|
318
|
+
revokedAt?: utcDateTime;
|
|
319
|
+
|
|
320
|
+
@doc("Creation timestamp")
|
|
321
|
+
@encodedName("application/json", "created_at")
|
|
322
|
+
createdAt: utcDateTime;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// =============================================================================
|
|
326
|
+
// Process Registry
|
|
327
|
+
// =============================================================================
|
|
328
|
+
|
|
329
|
+
@doc("Local process identity per workspace")
|
|
330
|
+
@extension("x-csharp-type", "ProcessRegistryEntity")
|
|
331
|
+
model ProcessRegistryEntity {
|
|
332
|
+
@doc("Registry entry ID")
|
|
333
|
+
@key
|
|
334
|
+
id: string;
|
|
335
|
+
|
|
336
|
+
@doc("Owning workspace")
|
|
337
|
+
@encodedName("application/json", "workspace_id")
|
|
338
|
+
workspaceId: string;
|
|
339
|
+
|
|
340
|
+
@doc("Process type")
|
|
341
|
+
@encodedName("application/json", "process_type")
|
|
342
|
+
processType: ProcessType;
|
|
343
|
+
|
|
344
|
+
@doc("OS process ID")
|
|
345
|
+
pid: int32;
|
|
346
|
+
|
|
347
|
+
@doc("Listening port")
|
|
348
|
+
port?: int32;
|
|
349
|
+
|
|
350
|
+
@doc("Protocol")
|
|
351
|
+
protocol?: string;
|
|
352
|
+
|
|
353
|
+
@doc("Binary file path")
|
|
354
|
+
@encodedName("application/json", "binary_path")
|
|
355
|
+
binaryPath?: string;
|
|
356
|
+
|
|
357
|
+
@doc("Binary version")
|
|
358
|
+
@encodedName("application/json", "binary_version")
|
|
359
|
+
binaryVersion?: string;
|
|
360
|
+
|
|
361
|
+
@doc("Process start timestamp")
|
|
362
|
+
@encodedName("application/json", "started_at")
|
|
363
|
+
startedAt: utcDateTime;
|
|
364
|
+
|
|
365
|
+
@doc("Last heartbeat timestamp")
|
|
366
|
+
@encodedName("application/json", "last_heartbeat_at")
|
|
367
|
+
lastHeartbeatAt?: utcDateTime;
|
|
368
|
+
|
|
369
|
+
@doc("Process status")
|
|
370
|
+
status: ProcessStatus;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
@doc("ANcpLua process types")
|
|
374
|
+
enum ProcessType {
|
|
375
|
+
@doc("Collector backend")
|
|
376
|
+
collector: "collector",
|
|
377
|
+
|
|
378
|
+
@doc("MCP server")
|
|
379
|
+
mcp: "mcp",
|
|
380
|
+
|
|
381
|
+
@doc("Terminal span viewer")
|
|
382
|
+
watch: "watch",
|
|
383
|
+
|
|
384
|
+
@doc("Process anomaly detector")
|
|
385
|
+
watchdog: "watchdog",
|
|
386
|
+
|
|
387
|
+
@doc("CLI tool")
|
|
388
|
+
cli: "cli",
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
@doc("Process lifecycle status")
|
|
392
|
+
enum ProcessStatus {
|
|
393
|
+
@doc("Process is running")
|
|
394
|
+
running: "running",
|
|
395
|
+
|
|
396
|
+
@doc("Process has stopped")
|
|
397
|
+
stopped: "stopped",
|
|
398
|
+
|
|
399
|
+
@doc("Process crashed")
|
|
400
|
+
crashed: "crashed",
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
// =============================================================================
|
|
404
|
+
// Port Lease
|
|
405
|
+
// =============================================================================
|
|
406
|
+
|
|
407
|
+
@doc("Collision-proof port lease entry")
|
|
408
|
+
@extension("x-csharp-type", "PortLeaseEntity")
|
|
409
|
+
model PortLeaseEntity {
|
|
410
|
+
@doc("Leased port number")
|
|
411
|
+
port: int32;
|
|
412
|
+
|
|
413
|
+
@doc("Owning workspace")
|
|
414
|
+
@encodedName("application/json", "workspace_id")
|
|
415
|
+
workspaceId: string;
|
|
416
|
+
|
|
417
|
+
@doc("Owning process")
|
|
418
|
+
@encodedName("application/json", "process_id")
|
|
419
|
+
processId: string;
|
|
420
|
+
|
|
421
|
+
@doc("Protocol (tcp/udp)")
|
|
422
|
+
protocol: string;
|
|
423
|
+
|
|
424
|
+
@doc("Lease start timestamp")
|
|
425
|
+
@encodedName("application/json", "leased_at")
|
|
426
|
+
leasedAt: utcDateTime;
|
|
427
|
+
|
|
428
|
+
@doc("Lease expiration")
|
|
429
|
+
@encodedName("application/json", "expires_at")
|
|
430
|
+
expiresAt: utcDateTime;
|
|
431
|
+
|
|
432
|
+
@doc("Release timestamp (null if active)")
|
|
433
|
+
@encodedName("application/json", "released_at")
|
|
434
|
+
releasedAt?: utcDateTime;
|
|
435
|
+
}
|