@uluops/ops-sdk 6.4.1 → 6.5.1

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 (44) hide show
  1. package/CHANGELOG.md +52 -5
  2. package/README.md +158 -39
  3. package/dist/client.d.ts +31 -2
  4. package/dist/client.d.ts.map +1 -1
  5. package/dist/client.js +43 -2
  6. package/dist/client.js.map +1 -1
  7. package/dist/config/constants.d.ts +1 -1
  8. package/dist/config/generated-version.d.ts +1 -1
  9. package/dist/config/generated-version.js +1 -1
  10. package/dist/config/workspace-org.d.ts +25 -4
  11. package/dist/config/workspace-org.d.ts.map +1 -1
  12. package/dist/config/workspace-org.js +71 -18
  13. package/dist/config/workspace-org.js.map +1 -1
  14. package/dist/http/http-client.d.ts +5 -0
  15. package/dist/http/http-client.d.ts.map +1 -1
  16. package/dist/http/http-client.js +40 -3
  17. package/dist/http/http-client.js.map +1 -1
  18. package/dist/index.d.ts +1 -1
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -1
  21. package/dist/index.js.map +1 -1
  22. package/dist/operations/analytics.d.ts +1 -1
  23. package/dist/operations/analytics.js +1 -1
  24. package/dist/operations/orgs.d.ts +26 -0
  25. package/dist/operations/orgs.d.ts.map +1 -1
  26. package/dist/operations/orgs.js +31 -0
  27. package/dist/operations/orgs.js.map +1 -1
  28. package/dist/operations/projects.d.ts +28 -0
  29. package/dist/operations/projects.d.ts.map +1 -1
  30. package/dist/operations/projects.js +61 -0
  31. package/dist/operations/projects.js.map +1 -1
  32. package/dist/operations/runs.d.ts +1 -1
  33. package/dist/operations/runs.d.ts.map +1 -1
  34. package/dist/operations/runs.js +9 -4
  35. package/dist/operations/runs.js.map +1 -1
  36. package/dist/types/index.d.ts +1 -0
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/index.js +1 -0
  39. package/dist/types/index.js.map +1 -1
  40. package/dist/types/log.d.ts +410 -0
  41. package/dist/types/log.d.ts.map +1 -0
  42. package/dist/types/log.js +191 -0
  43. package/dist/types/log.js.map +1 -0
  44. package/package.json +6 -1
@@ -0,0 +1,410 @@
1
+ /**
2
+ * `ulu log` — the project's second history (ulu log spec v0.1.13 §3.2 D2/D10/D12,
3
+ * §3.3 D3/D13/D14, §3.6 D6/D15/D16; checklist Phase 3).
4
+ *
5
+ * Three reads: `projects.getLog` (the stream — runs and decisions interleaved
6
+ * newest first, keyset-paged), `projects.getLogStat` (the rollup) and
7
+ * `orgs.getLogStat` (the same rollup org-wide plus a per-project table). The
8
+ * shapes here are the API's business objects (`ops-uluops-api`
9
+ * `src/business-objects/project-log.ts`) parsed strictly at the boundary — a
10
+ * field the server adds is dropped, a field it removes fails the parse.
11
+ *
12
+ * Three ledger facts every consumer must keep (spec §2): `reason` is optional
13
+ * and `null` means *no reason recorded*; `source` is `'agent'` or `null`, and
14
+ * `null` is *unattributed*, never *human*; a `regression` event is a row a RUN
15
+ * re-detected, while a `resolved → open` decision without a run is *reopened
16
+ * by decision* (D12) — the SDK types both and does not collapse them.
17
+ */
18
+ import { z } from 'zod';
19
+ /** Event kinds the stream can carry; `kind` filters to a subset. */
20
+ export declare const LOG_EVENT_KINDS: readonly ["run", "decision", "regression"];
21
+ export type LogEventKind = (typeof LOG_EVENT_KINDS)[number];
22
+ /**
23
+ * Query for `projects.getLog`. Keys go to the wire AS NAMED (`workflowType`,
24
+ * `includeArchived`) — the API's schema is camelCase and would silently ignore a
25
+ * snake_cased key, so this query deliberately does not pass through the
26
+ * SDK's generic `toApiQuery` (which snake_cases).
27
+ */
28
+ export interface ProjectLogQuery {
29
+ /** ISO 8601; `since <= until` or the API answers 400. */
30
+ since?: string;
31
+ until?: string;
32
+ /** 1–500, default 50. Outside the range is a 400 (the API does not clamp). */
33
+ limit?: number;
34
+ /** Opaque — pass back a `nextCursor` verbatim. Anything else is a 400. */
35
+ cursor?: string;
36
+ /** Subset of event kinds; default all three. */
37
+ kind?: LogEventKind[];
38
+ /** Filters `run` events only — a ledger row has no workflow. */
39
+ workflowType?: string;
40
+ /** Two-sided: runs by snapshot agent name, ledger rows by `issues.agent`. */
41
+ agent?: string;
42
+ /** Archived runs are excluded unless this is `true`. */
43
+ includeArchived?: boolean;
44
+ }
45
+ /** Window for either rollup (§3.3): two frames on two clocks; no window means all time. */
46
+ export interface LogStatQuery {
47
+ since?: string;
48
+ until?: string;
49
+ }
50
+ export declare const LogRunEventSchema: z.ZodObject<{
51
+ type: z.ZodLiteral<"run">;
52
+ runNumber: z.ZodNumber;
53
+ at: z.ZodString;
54
+ workflowType: z.ZodString;
55
+ definitionType: z.ZodNullable<z.ZodString>;
56
+ definitionName: z.ZodNullable<z.ZodString>;
57
+ definitionVersion: z.ZodNullable<z.ZodString>;
58
+ averageScore: z.ZodNullable<z.ZodNumber>;
59
+ allGatesPassed: z.ZodNullable<z.ZodBoolean>;
60
+ counts: z.ZodNullable<z.ZodObject<{
61
+ new: z.ZodNumber;
62
+ recurring: z.ZodNumber;
63
+ regressions: z.ZodNumber;
64
+ observed: z.ZodNumber;
65
+ }, z.core.$strip>>;
66
+ agents: z.ZodArray<z.ZodString>;
67
+ }, z.core.$strip>;
68
+ export type LogRunEvent = z.infer<typeof LogRunEventSchema>;
69
+ export declare const LogDecisionEventSchema: z.ZodObject<{
70
+ type: z.ZodLiteral<"decision">;
71
+ issueId: z.ZodString;
72
+ fingerprint: z.ZodString;
73
+ title: z.ZodString;
74
+ from: z.ZodNullable<z.ZodString>;
75
+ to: z.ZodString;
76
+ reason: z.ZodNullable<z.ZodString>;
77
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
78
+ at: z.ZodString;
79
+ seq: z.ZodNumber;
80
+ }, z.core.$strip>;
81
+ export type LogDecisionEvent = z.infer<typeof LogDecisionEventSchema>;
82
+ export declare const LogRegressionEventSchema: z.ZodObject<{
83
+ type: z.ZodLiteral<"regression">;
84
+ issueId: z.ZodString;
85
+ fingerprint: z.ZodString;
86
+ title: z.ZodString;
87
+ viaRunNumber: z.ZodNullable<z.ZodNumber>;
88
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
89
+ at: z.ZodString;
90
+ seq: z.ZodNumber;
91
+ }, z.core.$strip>;
92
+ export type LogRegressionEvent = z.infer<typeof LogRegressionEventSchema>;
93
+ export declare const LogEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
94
+ type: z.ZodLiteral<"run">;
95
+ runNumber: z.ZodNumber;
96
+ at: z.ZodString;
97
+ workflowType: z.ZodString;
98
+ definitionType: z.ZodNullable<z.ZodString>;
99
+ definitionName: z.ZodNullable<z.ZodString>;
100
+ definitionVersion: z.ZodNullable<z.ZodString>;
101
+ averageScore: z.ZodNullable<z.ZodNumber>;
102
+ allGatesPassed: z.ZodNullable<z.ZodBoolean>;
103
+ counts: z.ZodNullable<z.ZodObject<{
104
+ new: z.ZodNumber;
105
+ recurring: z.ZodNumber;
106
+ regressions: z.ZodNumber;
107
+ observed: z.ZodNumber;
108
+ }, z.core.$strip>>;
109
+ agents: z.ZodArray<z.ZodString>;
110
+ }, z.core.$strip>, z.ZodObject<{
111
+ type: z.ZodLiteral<"decision">;
112
+ issueId: z.ZodString;
113
+ fingerprint: z.ZodString;
114
+ title: z.ZodString;
115
+ from: z.ZodNullable<z.ZodString>;
116
+ to: z.ZodString;
117
+ reason: z.ZodNullable<z.ZodString>;
118
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
119
+ at: z.ZodString;
120
+ seq: z.ZodNumber;
121
+ }, z.core.$strip>, z.ZodObject<{
122
+ type: z.ZodLiteral<"regression">;
123
+ issueId: z.ZodString;
124
+ fingerprint: z.ZodString;
125
+ title: z.ZodString;
126
+ viaRunNumber: z.ZodNullable<z.ZodNumber>;
127
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
128
+ at: z.ZodString;
129
+ seq: z.ZodNumber;
130
+ }, z.core.$strip>], "type">;
131
+ export type LogEvent = z.infer<typeof LogEventSchema>;
132
+ /** One page of the stream. The envelope IS the page (no `data` wrapper outside `data[]`). */
133
+ export declare const ProjectLogPageSchema: z.ZodObject<{
134
+ data: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
135
+ type: z.ZodLiteral<"run">;
136
+ runNumber: z.ZodNumber;
137
+ at: z.ZodString;
138
+ workflowType: z.ZodString;
139
+ definitionType: z.ZodNullable<z.ZodString>;
140
+ definitionName: z.ZodNullable<z.ZodString>;
141
+ definitionVersion: z.ZodNullable<z.ZodString>;
142
+ averageScore: z.ZodNullable<z.ZodNumber>;
143
+ allGatesPassed: z.ZodNullable<z.ZodBoolean>;
144
+ counts: z.ZodNullable<z.ZodObject<{
145
+ new: z.ZodNumber;
146
+ recurring: z.ZodNumber;
147
+ regressions: z.ZodNumber;
148
+ observed: z.ZodNumber;
149
+ }, z.core.$strip>>;
150
+ agents: z.ZodArray<z.ZodString>;
151
+ }, z.core.$strip>, z.ZodObject<{
152
+ type: z.ZodLiteral<"decision">;
153
+ issueId: z.ZodString;
154
+ fingerprint: z.ZodString;
155
+ title: z.ZodString;
156
+ from: z.ZodNullable<z.ZodString>;
157
+ to: z.ZodString;
158
+ reason: z.ZodNullable<z.ZodString>;
159
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
160
+ at: z.ZodString;
161
+ seq: z.ZodNumber;
162
+ }, z.core.$strip>, z.ZodObject<{
163
+ type: z.ZodLiteral<"regression">;
164
+ issueId: z.ZodString;
165
+ fingerprint: z.ZodString;
166
+ title: z.ZodString;
167
+ viaRunNumber: z.ZodNullable<z.ZodNumber>;
168
+ source: z.ZodNullable<z.ZodLiteral<"agent">>;
169
+ at: z.ZodString;
170
+ seq: z.ZodNumber;
171
+ }, z.core.$strip>], "type">>;
172
+ count: z.ZodNumber;
173
+ hasMore: z.ZodBoolean;
174
+ nextCursor: z.ZodOptional<z.ZodString>;
175
+ }, z.core.$strip>;
176
+ export type ProjectLogPage = z.infer<typeof ProjectLogPageSchema>;
177
+ /** D14: fixed over all seven statuses; `merged` normally 0; `open` counts transitions INTO open (reopens). */
178
+ export declare const LogByStatusSchema: z.ZodObject<{
179
+ open: z.ZodNumber;
180
+ completed: z.ZodNumber;
181
+ deferred: z.ZodNumber;
182
+ wontfix: z.ZodNumber;
183
+ merged: z.ZodNumber;
184
+ 'false-positive': z.ZodNumber;
185
+ observation: z.ZodNumber;
186
+ }, z.core.$strip>;
187
+ /** Fixed over the five non-open statuses. */
188
+ export declare const LogWithReasonSchema: z.ZodObject<{
189
+ completed: z.ZodNumber;
190
+ deferred: z.ZodNumber;
191
+ wontfix: z.ZodNumber;
192
+ 'false-positive': z.ZodNumber;
193
+ observation: z.ZodNumber;
194
+ }, z.core.$strip>;
195
+ export declare const LogStatBodySchema: z.ZodObject<{
196
+ window: z.ZodObject<{
197
+ since: z.ZodNullable<z.ZodString>;
198
+ until: z.ZodNullable<z.ZodString>;
199
+ }, z.core.$strip>;
200
+ examined: z.ZodObject<{
201
+ runs: z.ZodNumber;
202
+ first: z.ZodNullable<z.ZodString>;
203
+ last: z.ZodNullable<z.ZodString>;
204
+ byWorkflow: z.ZodArray<z.ZodObject<{
205
+ workflowType: z.ZodString;
206
+ runs: z.ZodNumber;
207
+ }, z.core.$strip>>;
208
+ definitions: z.ZodNumber;
209
+ }, z.core.$strip>;
210
+ found: z.ZodObject<{
211
+ issues: z.ZodNumber;
212
+ }, z.core.$strip>;
213
+ decided: z.ZodObject<{
214
+ completed: z.ZodNumber;
215
+ deferred: z.ZodNumber;
216
+ wontfix: z.ZodNumber;
217
+ 'false-positive': z.ZodNumber;
218
+ observation: z.ZodNumber;
219
+ open: z.ZodNumber;
220
+ withReason: z.ZodObject<{
221
+ completed: z.ZodNumber;
222
+ deferred: z.ZodNumber;
223
+ wontfix: z.ZodNumber;
224
+ 'false-positive': z.ZodNumber;
225
+ observation: z.ZodNumber;
226
+ }, z.core.$strip>;
227
+ }, z.core.$strip>;
228
+ cameBack: z.ZodObject<{
229
+ detected: z.ZodNumber;
230
+ detectedEvents: z.ZodNumber;
231
+ reopened: z.ZodNumber;
232
+ reopenedEvents: z.ZodNumber;
233
+ lastDetectedAtAllTime: z.ZodNullable<z.ZodString>;
234
+ }, z.core.$strip>;
235
+ activity: z.ZodObject<{
236
+ decisions: z.ZodNumber;
237
+ byStatus: z.ZodObject<{
238
+ open: z.ZodNumber;
239
+ completed: z.ZodNumber;
240
+ deferred: z.ZodNumber;
241
+ wontfix: z.ZodNumber;
242
+ merged: z.ZodNumber;
243
+ 'false-positive': z.ZodNumber;
244
+ observation: z.ZodNumber;
245
+ }, z.core.$strip>;
246
+ restated: z.ZodNumber;
247
+ runsWithCorrelation: z.ZodNumber;
248
+ }, z.core.$strip>;
249
+ }, z.core.$strip>;
250
+ export type LogStatBody = z.infer<typeof LogStatBodySchema>;
251
+ export declare const ProjectLogStatSchema: z.ZodObject<{
252
+ window: z.ZodObject<{
253
+ since: z.ZodNullable<z.ZodString>;
254
+ until: z.ZodNullable<z.ZodString>;
255
+ }, z.core.$strip>;
256
+ examined: z.ZodObject<{
257
+ runs: z.ZodNumber;
258
+ first: z.ZodNullable<z.ZodString>;
259
+ last: z.ZodNullable<z.ZodString>;
260
+ byWorkflow: z.ZodArray<z.ZodObject<{
261
+ workflowType: z.ZodString;
262
+ runs: z.ZodNumber;
263
+ }, z.core.$strip>>;
264
+ definitions: z.ZodNumber;
265
+ }, z.core.$strip>;
266
+ found: z.ZodObject<{
267
+ issues: z.ZodNumber;
268
+ }, z.core.$strip>;
269
+ decided: z.ZodObject<{
270
+ completed: z.ZodNumber;
271
+ deferred: z.ZodNumber;
272
+ wontfix: z.ZodNumber;
273
+ 'false-positive': z.ZodNumber;
274
+ observation: z.ZodNumber;
275
+ open: z.ZodNumber;
276
+ withReason: z.ZodObject<{
277
+ completed: z.ZodNumber;
278
+ deferred: z.ZodNumber;
279
+ wontfix: z.ZodNumber;
280
+ 'false-positive': z.ZodNumber;
281
+ observation: z.ZodNumber;
282
+ }, z.core.$strip>;
283
+ }, z.core.$strip>;
284
+ cameBack: z.ZodObject<{
285
+ detected: z.ZodNumber;
286
+ detectedEvents: z.ZodNumber;
287
+ reopened: z.ZodNumber;
288
+ reopenedEvents: z.ZodNumber;
289
+ lastDetectedAtAllTime: z.ZodNullable<z.ZodString>;
290
+ }, z.core.$strip>;
291
+ activity: z.ZodObject<{
292
+ decisions: z.ZodNumber;
293
+ byStatus: z.ZodObject<{
294
+ open: z.ZodNumber;
295
+ completed: z.ZodNumber;
296
+ deferred: z.ZodNumber;
297
+ wontfix: z.ZodNumber;
298
+ merged: z.ZodNumber;
299
+ 'false-positive': z.ZodNumber;
300
+ observation: z.ZodNumber;
301
+ }, z.core.$strip>;
302
+ restated: z.ZodNumber;
303
+ runsWithCorrelation: z.ZodNumber;
304
+ }, z.core.$strip>;
305
+ projectId: z.ZodString;
306
+ }, z.core.$strip>;
307
+ export type ProjectLogStat = z.infer<typeof ProjectLogStatSchema>;
308
+ /** One row of the org rollup's table (D15): each column is that project's own rollup measure. */
309
+ export declare const OrgLogProjectSummarySchema: z.ZodObject<{
310
+ name: z.ZodString;
311
+ runs: z.ZodNumber;
312
+ issues: z.ZodNumber;
313
+ fixed: z.ZodNumber;
314
+ regressions: z.ZodNumber;
315
+ lastRunAt: z.ZodNullable<z.ZodString>;
316
+ }, z.core.$strip>;
317
+ export type OrgLogProjectSummary = z.infer<typeof OrgLogProjectSummarySchema>;
318
+ export declare const OrgLogStatSchema: z.ZodObject<{
319
+ window: z.ZodObject<{
320
+ since: z.ZodNullable<z.ZodString>;
321
+ until: z.ZodNullable<z.ZodString>;
322
+ }, z.core.$strip>;
323
+ examined: z.ZodObject<{
324
+ runs: z.ZodNumber;
325
+ first: z.ZodNullable<z.ZodString>;
326
+ last: z.ZodNullable<z.ZodString>;
327
+ byWorkflow: z.ZodArray<z.ZodObject<{
328
+ workflowType: z.ZodString;
329
+ runs: z.ZodNumber;
330
+ }, z.core.$strip>>;
331
+ definitions: z.ZodNumber;
332
+ }, z.core.$strip>;
333
+ found: z.ZodObject<{
334
+ issues: z.ZodNumber;
335
+ }, z.core.$strip>;
336
+ decided: z.ZodObject<{
337
+ completed: z.ZodNumber;
338
+ deferred: z.ZodNumber;
339
+ wontfix: z.ZodNumber;
340
+ 'false-positive': z.ZodNumber;
341
+ observation: z.ZodNumber;
342
+ open: z.ZodNumber;
343
+ withReason: z.ZodObject<{
344
+ completed: z.ZodNumber;
345
+ deferred: z.ZodNumber;
346
+ wontfix: z.ZodNumber;
347
+ 'false-positive': z.ZodNumber;
348
+ observation: z.ZodNumber;
349
+ }, z.core.$strip>;
350
+ }, z.core.$strip>;
351
+ cameBack: z.ZodObject<{
352
+ detected: z.ZodNumber;
353
+ detectedEvents: z.ZodNumber;
354
+ reopened: z.ZodNumber;
355
+ reopenedEvents: z.ZodNumber;
356
+ lastDetectedAtAllTime: z.ZodNullable<z.ZodString>;
357
+ }, z.core.$strip>;
358
+ activity: z.ZodObject<{
359
+ decisions: z.ZodNumber;
360
+ byStatus: z.ZodObject<{
361
+ open: z.ZodNumber;
362
+ completed: z.ZodNumber;
363
+ deferred: z.ZodNumber;
364
+ wontfix: z.ZodNumber;
365
+ merged: z.ZodNumber;
366
+ 'false-positive': z.ZodNumber;
367
+ observation: z.ZodNumber;
368
+ }, z.core.$strip>;
369
+ restated: z.ZodNumber;
370
+ runsWithCorrelation: z.ZodNumber;
371
+ }, z.core.$strip>;
372
+ org: z.ZodString;
373
+ computedAt: z.ZodString;
374
+ projects: z.ZodArray<z.ZodObject<{
375
+ name: z.ZodString;
376
+ runs: z.ZodNumber;
377
+ issues: z.ZodNumber;
378
+ fixed: z.ZodNumber;
379
+ regressions: z.ZodNumber;
380
+ lastRunAt: z.ZodNullable<z.ZodString>;
381
+ }, z.core.$strip>>;
382
+ hasMoreProjects: z.ZodBoolean;
383
+ }, z.core.$strip>;
384
+ export type OrgLogStat = z.infer<typeof OrgLogStatSchema>;
385
+ export declare const OrgListEntrySchema: z.ZodObject<{
386
+ id: z.ZodString;
387
+ name: z.ZodString;
388
+ slug: z.ZodString;
389
+ isPersonal: z.ZodBoolean;
390
+ role: z.ZodString;
391
+ memberCount: z.ZodNumber;
392
+ subscriptionTier: z.ZodString;
393
+ paymentStatus: z.ZodNullable<z.ZodString>;
394
+ suspendedAt: z.ZodNullable<z.ZodString>;
395
+ }, z.core.$strip>;
396
+ export type OrgListEntry = z.infer<typeof OrgListEntrySchema>;
397
+ export declare const OrgListResponseSchema: z.ZodObject<{
398
+ organizations: z.ZodArray<z.ZodObject<{
399
+ id: z.ZodString;
400
+ name: z.ZodString;
401
+ slug: z.ZodString;
402
+ isPersonal: z.ZodBoolean;
403
+ role: z.ZodString;
404
+ memberCount: z.ZodNumber;
405
+ subscriptionTier: z.ZodString;
406
+ paymentStatus: z.ZodNullable<z.ZodString>;
407
+ suspendedAt: z.ZodNullable<z.ZodString>;
408
+ }, z.core.$strip>>;
409
+ }, z.core.$strip>;
410
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * `ulu log` — the project's second history (ulu log spec v0.1.13 §3.2 D2/D10/D12,
3
+ * §3.3 D3/D13/D14, §3.6 D6/D15/D16; checklist Phase 3).
4
+ *
5
+ * Three reads: `projects.getLog` (the stream — runs and decisions interleaved
6
+ * newest first, keyset-paged), `projects.getLogStat` (the rollup) and
7
+ * `orgs.getLogStat` (the same rollup org-wide plus a per-project table). The
8
+ * shapes here are the API's business objects (`ops-uluops-api`
9
+ * `src/business-objects/project-log.ts`) parsed strictly at the boundary — a
10
+ * field the server adds is dropped, a field it removes fails the parse.
11
+ *
12
+ * Three ledger facts every consumer must keep (spec §2): `reason` is optional
13
+ * and `null` means *no reason recorded*; `source` is `'agent'` or `null`, and
14
+ * `null` is *unattributed*, never *human*; a `regression` event is a row a RUN
15
+ * re-detected, while a `resolved → open` decision without a run is *reopened
16
+ * by decision* (D12) — the SDK types both and does not collapse them.
17
+ */
18
+ import { z } from 'zod';
19
+ // ============================================
20
+ // QUERIES
21
+ // ============================================
22
+ /** Event kinds the stream can carry; `kind` filters to a subset. */
23
+ export const LOG_EVENT_KINDS = ['run', 'decision', 'regression'];
24
+ // ============================================
25
+ // STREAM (§3.2)
26
+ // ============================================
27
+ const nullableString = z.string().nullable();
28
+ export const LogRunEventSchema = z.object({
29
+ type: z.literal('run'),
30
+ runNumber: z.number().int(),
31
+ /** As reported by the saving client — `pipeline_runs.timestamp` (1 s precision). */
32
+ at: z.string(),
33
+ workflowType: z.string(),
34
+ definitionType: nullableString,
35
+ definitionName: nullableString,
36
+ definitionVersion: nullableString,
37
+ averageScore: z.number().nullable(),
38
+ allGatesPassed: z.boolean().nullable(),
39
+ /** `null` on runs saved before migration 065 — stays `null`, never zeros. */
40
+ counts: z.object({
41
+ new: z.number().int(),
42
+ recurring: z.number().int(),
43
+ regressions: z.number().int(),
44
+ observed: z.number().int(),
45
+ }).nullable(),
46
+ agents: z.array(z.string()),
47
+ });
48
+ export const LogDecisionEventSchema = z.object({
49
+ type: z.literal('decision'),
50
+ issueId: z.string(),
51
+ /** 12-char prefix — what the `issues history` picker prints. */
52
+ fingerprint: z.string(),
53
+ title: z.string(),
54
+ from: nullableString,
55
+ to: z.string(),
56
+ /** `null` = no reason recorded. */
57
+ reason: nullableString,
58
+ /** `'agent'` or `null`; `null` is unattributed, never "human". */
59
+ source: z.literal('agent').nullable(),
60
+ /** Server clock — `status_history.changed_at` (ms precision). */
61
+ at: z.string(),
62
+ /** Insertion order within a second for post-080 rows; frozen-arbitrary before. Never chronology. */
63
+ seq: z.number().int(),
64
+ });
65
+ export const LogRegressionEventSchema = z.object({
66
+ type: z.literal('regression'),
67
+ issueId: z.string(),
68
+ fingerprint: z.string(),
69
+ title: z.string(),
70
+ /** `null` when the detecting run is archived or otherwise unresolvable — render *via run ?*. */
71
+ viaRunNumber: z.number().int().nullable(),
72
+ source: z.literal('agent').nullable(),
73
+ at: z.string(),
74
+ seq: z.number().int(),
75
+ });
76
+ export const LogEventSchema = z.discriminatedUnion('type', [LogRunEventSchema, LogDecisionEventSchema, LogRegressionEventSchema]);
77
+ /** One page of the stream. The envelope IS the page (no `data` wrapper outside `data[]`). */
78
+ export const ProjectLogPageSchema = z.object({
79
+ data: z.array(LogEventSchema),
80
+ count: z.number().int().nonnegative(),
81
+ hasMore: z.boolean(),
82
+ nextCursor: z.string().optional(),
83
+ });
84
+ // ============================================
85
+ // ROLLUP (§3.3) — shared body, project and org heads
86
+ // ============================================
87
+ const nullableIso = z.string().nullable();
88
+ /** D14: fixed over all seven statuses; `merged` normally 0; `open` counts transitions INTO open (reopens). */
89
+ export const LogByStatusSchema = z.object({
90
+ open: z.number().int(),
91
+ completed: z.number().int(),
92
+ deferred: z.number().int(),
93
+ wontfix: z.number().int(),
94
+ merged: z.number().int(),
95
+ 'false-positive': z.number().int(),
96
+ observation: z.number().int(),
97
+ });
98
+ /** Fixed over the five non-open statuses. */
99
+ export const LogWithReasonSchema = z.object({
100
+ completed: z.number().int(),
101
+ deferred: z.number().int(),
102
+ wontfix: z.number().int(),
103
+ 'false-positive': z.number().int(),
104
+ observation: z.number().int(),
105
+ });
106
+ export const LogStatBodySchema = z.object({
107
+ window: z.object({ since: nullableIso, until: nullableIso }),
108
+ /** Cohort frame — run clock. */
109
+ examined: z.object({
110
+ runs: z.number().int(),
111
+ first: nullableIso,
112
+ last: nullableIso,
113
+ byWorkflow: z.array(z.object({ workflowType: z.string(), runs: z.number().int() })),
114
+ /** Distinct definitions; (name, version) fallback for NULL ids. Not additive across projects. */
115
+ definitions: z.number().int(),
116
+ }),
117
+ found: z.object({ issues: z.number().int() }),
118
+ /** CURRENT status of each found issue — sums to `found.issues`; not "decisions in the window". */
119
+ decided: z.object({
120
+ completed: z.number().int(),
121
+ deferred: z.number().int(),
122
+ wontfix: z.number().int(),
123
+ 'false-positive': z.number().int(),
124
+ observation: z.number().int(),
125
+ open: z.number().int(),
126
+ withReason: LogWithReasonSchema,
127
+ }),
128
+ /** D12: distinct issues, with the row count beside each. */
129
+ cameBack: z.object({
130
+ /** A run re-detected it (`run_id IS NOT NULL`). */
131
+ detected: z.number().int(),
132
+ detectedEvents: z.number().int(),
133
+ /** Reopened by decision (no run). Never "by hand". */
134
+ reopened: z.number().int(),
135
+ reopenedEvents: z.number().int(),
136
+ /** ANY window, by definition. */
137
+ lastDetectedAtAllTime: nullableIso,
138
+ }),
139
+ /** Activity frame — ledger clock. */
140
+ activity: z.object({
141
+ decisions: z.number().int(),
142
+ byStatus: LogByStatusSchema,
143
+ /** D13: re-stated dispositions (self-transitions) — counted, never listed. */
144
+ restated: z.number().int(),
145
+ /** Runs in the window with correlation counts recorded (saved after migration 065). */
146
+ runsWithCorrelation: z.number().int(),
147
+ }),
148
+ });
149
+ export const ProjectLogStatSchema = LogStatBodySchema.extend({ projectId: z.string() });
150
+ /** One row of the org rollup's table (D15): each column is that project's own rollup measure. */
151
+ export const OrgLogProjectSummarySchema = z.object({
152
+ name: z.string(),
153
+ /** = `examined.runs` */
154
+ runs: z.number().int(),
155
+ /** = `found.issues` */
156
+ issues: z.number().int(),
157
+ /** = `decided.completed` */
158
+ fixed: z.number().int(),
159
+ /** = `cameBack.detected` — run-caught only, not reopens by decision. */
160
+ regressions: z.number().int(),
161
+ /** The sort key (last run in the window, desc); `null` sorts last, by name. */
162
+ lastRunAt: nullableIso,
163
+ });
164
+ export const OrgLogStatSchema = LogStatBodySchema.extend({
165
+ /** The org slug the call named. */
166
+ org: z.string(),
167
+ /**
168
+ * When these numbers were computed. The org rollup is served from a 60 s TTL
169
+ * cache per (org, window) (D16) — a response can be that old, and this says how old.
170
+ */
171
+ computedAt: z.string(),
172
+ /** Live projects of the org, last run desc then name; at most 100 — `hasMoreProjects` says when the cap bit. */
173
+ projects: z.array(OrgLogProjectSummarySchema),
174
+ hasMoreProjects: z.boolean(),
175
+ });
176
+ // ============================================
177
+ // ORG LIST (`GET /orgs`) — what `ulu log --orgs` iterates
178
+ // ============================================
179
+ export const OrgListEntrySchema = z.object({
180
+ id: z.string(),
181
+ name: z.string(),
182
+ slug: z.string(),
183
+ isPersonal: z.boolean(),
184
+ role: z.string(),
185
+ memberCount: z.number().int().nonnegative(),
186
+ subscriptionTier: z.string(),
187
+ paymentStatus: z.string().nullable(),
188
+ suspendedAt: z.string().nullable(),
189
+ });
190
+ export const OrgListResponseSchema = z.object({ organizations: z.array(OrgListEntrySchema) });
191
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/types/log.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uluops/ops-sdk",
3
- "version": "6.4.1",
3
+ "version": "6.5.1",
4
4
  "description": "Track execution runs, manage issues, and query analytics against the UluOps platform API — typed TypeScript client with Zod runtime validation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -86,6 +86,11 @@
86
86
  "type": "git",
87
87
  "url": "git+https://github.com/Uluops/-uluops-ops-sdk.git"
88
88
  },
89
+ "homepage": "https://github.com/Uluops/-uluops-ops-sdk#readme",
90
+ "bugs": {
91
+ "url": "https://github.com/Uluops/-uluops-ops-sdk/issues"
92
+ },
93
+ "sideEffects": false,
89
94
  "dependencies": {
90
95
  "@uluops/sdk-core": "0.17.0",
91
96
  "zod": "4.3.6"