@uluops/ops-sdk 3.3.0 → 4.0.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/CHANGELOG.md +161 -0
- package/README.md +76 -14
- package/dist/client.d.ts +76 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +76 -0
- package/dist/client.js.map +1 -1
- package/dist/config/constants.d.ts +1 -1
- package/dist/config/generated-version.d.ts +1 -1
- package/dist/config/generated-version.js +1 -1
- package/dist/config/loaders.d.ts +30 -4
- package/dist/config/loaders.d.ts.map +1 -1
- package/dist/config/loaders.js +34 -4
- package/dist/config/loaders.js.map +1 -1
- package/dist/config/validators.d.ts +3 -0
- package/dist/config/validators.d.ts.map +1 -1
- package/dist/config/validators.js +8 -0
- package/dist/config/validators.js.map +1 -1
- package/dist/errors/errors.d.ts +7 -1
- package/dist/errors/errors.d.ts.map +1 -1
- package/dist/errors/errors.js +7 -1
- package/dist/errors/errors.js.map +1 -1
- package/dist/http/http-client.d.ts +10 -0
- package/dist/http/http-client.d.ts.map +1 -1
- package/dist/http/http-client.js +12 -1
- package/dist/http/http-client.js.map +1 -1
- package/dist/operations/analytics.d.ts +1 -1
- package/dist/operations/analytics.js +1 -1
- package/dist/operations/query-utils.d.ts +10 -0
- package/dist/operations/query-utils.d.ts.map +1 -1
- package/dist/operations/query-utils.js +10 -0
- package/dist/operations/query-utils.js.map +1 -1
- package/dist/operations/runs.d.ts +2 -1
- package/dist/operations/runs.d.ts.map +1 -1
- package/dist/operations/runs.js +2 -1
- package/dist/operations/runs.js.map +1 -1
- package/dist/types/analytics.d.ts +61 -328
- package/dist/types/analytics.d.ts.map +1 -1
- package/dist/types/response-schemas.d.ts +30 -30
- package/dist/types/response-schemas.d.ts.map +1 -1
- package/dist/types/response-schemas.js +56 -60
- package/dist/types/response-schemas.js.map +1 -1
- package/dist/utils/helpers.d.ts +2 -9
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +2 -13
- package/dist/utils/helpers.js.map +1 -1
- package/package.json +3 -1
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,167 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [4.0.0] - 2026-06-17
|
|
10
|
+
|
|
11
|
+
Analytics type system realigned to derive from the Zod response schemas, plus the
|
|
12
|
+
documentation and internal-hygiene fixes from a `consumer-validate` pipeline run
|
|
13
|
+
(run #5: docs 91 / public-interface 87 / dx 96, all gates passed). No runtime
|
|
14
|
+
behavior or endpoint changes — the breaking surface is limited to four removed
|
|
15
|
+
analytics **type** exports (see below).
|
|
16
|
+
|
|
17
|
+
### ⚠ BREAKING CHANGES
|
|
18
|
+
|
|
19
|
+
- **Removed four analytics type exports** that had no SDK producer method and
|
|
20
|
+
existed only to annotate `getByMetric()` results by hand: `CrossProjectPattern`,
|
|
21
|
+
`RegressionEntry`, `CostEntry`, `CategoryPerformanceEntry` (and their
|
|
22
|
+
`*ResponseSchema` counterparts). The underlying metrics — `cross_project_patterns`,
|
|
23
|
+
`regression_analysis`, `cost_analysis` — remain available unchanged through the
|
|
24
|
+
untyped `getByMetric()` path. **Migration:** if you imported these types, inline
|
|
25
|
+
an equivalent local interface or inspect the `getByMetric()` return directly. No
|
|
26
|
+
method signatures or runtime behavior changed.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- **Analytics types are now schema-derived.** Hand-written `interface` declarations
|
|
31
|
+
(`Period`, `AgentLifecycleEntry`, `AgentReliability`, `BurndownResult`,
|
|
32
|
+
`VelocityResult`, `DiscoveryResult`, `AgentMatrixResult`, `TrendSummary`,
|
|
33
|
+
`BlindSpot`, `MatrixAnalysis`, `SinglePointFailure`, `HighOverlap`, and related
|
|
34
|
+
row/point shapes) are now `z.infer` aliases of their Zod response schemas, so the
|
|
35
|
+
compile-time types and runtime validation can no longer drift apart. The exported
|
|
36
|
+
type names are unchanged; shapes now track the schemas exactly. New backing
|
|
37
|
+
schemas (`BlindSpotResponseSchema`, `SinglePointFailureResponseSchema`,
|
|
38
|
+
`HighOverlapResponseSchema`, `MatrixAnalysisResponseSchema`) are internal
|
|
39
|
+
implementation detail — like all `*ResponseSchema`s, they are not exported through
|
|
40
|
+
any public subpath. This release introduces **no new public exports**; the surface
|
|
41
|
+
change is the four removed types below plus the `interface`→`type` conversion.
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **Overstated 3.4.0 changelog claim.** The 3.4.0 entry said every `OpsClient`
|
|
46
|
+
delegate carries an `@see` link to its underlying operation; delegates actually
|
|
47
|
+
carry a summary line only. Corrected the wording to match what shipped.
|
|
48
|
+
- **Stale `runs.validate()` JSDoc example.** The `@example` referenced a
|
|
49
|
+
non-existent `preview.correlation` field and omitted the required
|
|
50
|
+
`recommendations` input. Corrected to use the actual `ValidateRunResponse`
|
|
51
|
+
fields (`wouldCreate` / `wouldUpdate` / `wouldRegress`).
|
|
52
|
+
- **`getByMetric()` `@throws` type.** Documented `@throws {Error}` but the
|
|
53
|
+
implementation throws `InputValidationError`; the tag now names the precise
|
|
54
|
+
class so consumers can branch on `instanceof`.
|
|
55
|
+
- **README `auth.login()` example.** Destructured the legacy optional `token`
|
|
56
|
+
field instead of the required `sessionToken`; following the example as written
|
|
57
|
+
yielded `undefined`.
|
|
58
|
+
- **README `raw_markdown` size limit.** Documented as 100,000 characters but the
|
|
59
|
+
schema enforces 500,000; the prose now matches the enforced ceiling.
|
|
60
|
+
- **README `types/enums` coverage.** The exports table and a new "Failure Code
|
|
61
|
+
Utilities" example now document the shipped runtime helpers `parseFailureCode`,
|
|
62
|
+
`buildFailureCode`, and `severityFromCode`, previously discoverable only by
|
|
63
|
+
source-diving.
|
|
64
|
+
|
|
65
|
+
### Removed
|
|
66
|
+
|
|
67
|
+
- **(Breaking — see above)** `CrossProjectPattern`, `RegressionEntry`, `CostEntry`,
|
|
68
|
+
`CategoryPerformanceEntry` and their `*ResponseSchema` exports.
|
|
69
|
+
- **Internal-only dead utilities** (not part of any export path, no production
|
|
70
|
+
callers): `toCamelCase` and the `sleep`/`retry`/`truncate`/`isPlainObject`/`isUuid`
|
|
71
|
+
re-exports from `src/utils/helpers.ts`, plus their tests. The API returns
|
|
72
|
+
camelCase directly, so no client-side casing conversion was needed; shared
|
|
73
|
+
utilities remain available from `@uluops/sdk-core` for internal use. No consumer
|
|
74
|
+
impact — none were reachable through the package `exports` map.
|
|
75
|
+
|
|
76
|
+
## [3.4.0] - 2026-06-16
|
|
77
|
+
|
|
78
|
+
Consumer-experience polish from a `consumer-validate` pipeline run (docs 93 /
|
|
79
|
+
public-interface 91 / dx 88, all gates passed). No runtime behavior changes to
|
|
80
|
+
existing successful calls; one error type is now more specific (see Changed).
|
|
81
|
+
|
|
82
|
+
### Security
|
|
83
|
+
|
|
84
|
+
- **Defensive string-length ceilings on issue-domain response fields (CWE-20).**
|
|
85
|
+
Completes the bounding started in 3.2.1, which covered only the history-event
|
|
86
|
+
schemas: `IssueResponseSchema` (fingerprint, title, failureMode, category,
|
|
87
|
+
agent, filePath), `OccurrenceResponseSchema` (agentName, description, filePath),
|
|
88
|
+
`IssueNoteResponseSchema` (content, createdBy), and `StatusHistoryResponseSchema`
|
|
89
|
+
(reason) now carry `.max()` bounds set at-or-above the tracker DB column sizes
|
|
90
|
+
(verified against prod 2026-06-16, with margin against future widenings). An
|
|
91
|
+
unbounded `z.string()` let a degenerate or malicious server force a large heap
|
|
92
|
+
allocation on the calling host before any consumer-side gate could run (the CLI
|
|
93
|
+
consumes these schemas in issue-picker mode and `formatIssue`); oversized
|
|
94
|
+
payloads now throw `ZodError` at parse time instead. Compliant servers are
|
|
95
|
+
unaffected. The reusable `MAX_*` ceiling constants are consolidated above the
|
|
96
|
+
schemas, and `createMockIssue` now eagerly validates against the schema so a
|
|
97
|
+
malformed/oversized test fixture fails at construction. Two tests assert the
|
|
98
|
+
bound fires on an oversized title (600 chars) and fingerprint (200 chars).
|
|
99
|
+
|
|
100
|
+
### Fixed
|
|
101
|
+
|
|
102
|
+
- **`bulkUpdateStatus` README example corrected.** The example iterated the result
|
|
103
|
+
in a `for…of` loop and read `result.success` / `result.issueId` / `result.error` —
|
|
104
|
+
but the method returns an aggregate object `{ updated: number, failed: string[] }`,
|
|
105
|
+
so the documented code threw `TypeError: results is not iterable` at runtime. The
|
|
106
|
+
API and TypeScript types were always correct; only the example was wrong.
|
|
107
|
+
- **`NotFoundError.details` README comment corrected** to the real shape
|
|
108
|
+
(`{ resource: "Project '…' not found" }`, not `{ id: '…' }`).
|
|
109
|
+
- **`client.issues.search()` `query` parameter documented as optional** (it is
|
|
110
|
+
`query?: string`; filter-only searches are valid) — the parameter table previously
|
|
111
|
+
marked it required.
|
|
112
|
+
- **Stale README version header** (was `3.2.1`) updated.
|
|
113
|
+
- **Analytics response types no longer drift from their Zod schemas.** Every
|
|
114
|
+
analytics type in `src/types/analytics.ts` is now derived via `z.infer` from its
|
|
115
|
+
schema in `response-schemas.ts`, collapsing a second hand-written copy that had
|
|
116
|
+
already diverged in two places: `ResolutionRate` exposed `avgTimeToResolveDays`
|
|
117
|
+
where the wire field is `averageTimeToResolve`, and `TaxonomyDistribution`
|
|
118
|
+
declared a phantom `mode` field (and typed `domain` as the `FailureDomain` enum)
|
|
119
|
+
that the endpoint never returns. Both now match runtime exactly. No consumer
|
|
120
|
+
imported these interface types directly — they consume the method return types —
|
|
121
|
+
so the only break is for anyone who hand-typed against fields that were already
|
|
122
|
+
`undefined` at runtime. The agent-matrix sub-shapes (`BlindSpot`,
|
|
123
|
+
`SinglePointFailure`, `HighOverlap`, `MatrixAnalysis`) gained standalone schemas
|
|
124
|
+
so they derive from a single source too. `AgentInfo` remains a hand-written
|
|
125
|
+
interface by design — it is a client-side projection from `getAgentPerformance`
|
|
126
|
+
with no API endpoint, hence no schema.
|
|
127
|
+
|
|
128
|
+
### Removed
|
|
129
|
+
|
|
130
|
+
- **Four unreachable analytics types and their schemas** — `CrossProjectPattern`,
|
|
131
|
+
`RegressionEntry`, `CostEntry`, `CategoryPerformanceEntry`. No typed client method
|
|
132
|
+
returned them (reachable only via the generic `getByMetric()`, which returns
|
|
133
|
+
`unknown`) and they had zero references across the SDK and all consumers. The
|
|
134
|
+
corresponding metric strings (`cross_project_patterns`, `regression_analysis`,
|
|
135
|
+
`cost_analysis`) still work via `getByMetric()`.
|
|
136
|
+
|
|
137
|
+
### Changed
|
|
138
|
+
|
|
139
|
+
- **`OpsHttpClient` now throws `InputValidationError` (not a base `Error`) for an
|
|
140
|
+
invalid `orgSlug`.** Aligns with every other constructor-time validation so callers
|
|
141
|
+
branching on `instanceof InputValidationError` catch it. `InputValidationError`
|
|
142
|
+
extends `Error`, so existing `instanceof Error` / catch-all handlers are unaffected.
|
|
143
|
+
|
|
144
|
+
### Docs
|
|
145
|
+
|
|
146
|
+
- **`client.issues.softDelete(issueId)` is now documented** in the README Issue
|
|
147
|
+
Operations section (previously the only public method with no README entry).
|
|
148
|
+
- **Error type guards documented.** Added a "Type Guards" section covering all twelve
|
|
149
|
+
guards (`isNotFoundError`, `isRateLimitError`, …) exported from `@uluops/ops-sdk/errors`.
|
|
150
|
+
- **Every `OpsClient` namespace delegate now carries a summary JSDoc line**, so IDE hover over
|
|
151
|
+
`client.runs.save`, `client.issues.search`, etc. surfaces a one-line description
|
|
152
|
+
instead of a bare signature. Full `@param`/`@returns`/`@throws` details live on the
|
|
153
|
+
underlying operation functions (visible in the generated TypeDoc).
|
|
154
|
+
- **`loadCredentials` / `loadConfig` gained full `@param`/`@returns` JSDoc** documenting
|
|
155
|
+
the `options > env > file` priority chain, plus a JSDoc block on the `OpsHttpClient`
|
|
156
|
+
constructor, `buildIssueListParams`, and the config import example at the package root
|
|
157
|
+
(now showing `loadConfig`, `loadEnvFiles`, `ENV_VARS`, `API_KEY_PREFIX`).
|
|
158
|
+
- **TypeDoc API-reference generation added** (`npm run docs:api` → `docs/api`,
|
|
159
|
+
`@internal` excluded). `typedoc` added as a dev dependency.
|
|
160
|
+
|
|
161
|
+
### Internal
|
|
162
|
+
|
|
163
|
+
- **Leaked internal helpers tagged `@internal`** (no longer surfaced in generated docs;
|
|
164
|
+
still exported to avoid a breaking change): `createErrorFromStatus`
|
|
165
|
+
(`@uluops/ops-sdk/errors`); `getGlobalConfigDir`, `getCredentialsPath`,
|
|
166
|
+
`loadStoredCredentials`, `isApiKey`, `validateCredentials`, `validateUuid`,
|
|
167
|
+
`validateRequiredString`, `validatePositiveInt` (`@uluops/ops-sdk/config`). These are
|
|
168
|
+
plumbing re-exported for advanced/tooling consumers and are not covered by semver.
|
|
169
|
+
|
|
9
170
|
## [3.3.0] - 2026-06-16
|
|
10
171
|
|
|
11
172
|
### Changed
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
Official TypeScript SDK with Zod runtime validation for the UluOps platform API. Track execution runs, manage issues, analyze trends, and integrate agent pipelines into your workflow.
|
|
13
13
|
|
|
14
|
-
**Current version:
|
|
14
|
+
**Current version: 4.0.0** | [Changelog](./CHANGELOG.md)
|
|
15
15
|
|
|
16
16
|
## Quick Start
|
|
17
17
|
|
|
@@ -227,8 +227,15 @@ import {
|
|
|
227
227
|
RateLimitError,
|
|
228
228
|
} from '@uluops/ops-sdk/errors';
|
|
229
229
|
|
|
230
|
-
// Config utilities
|
|
231
|
-
import {
|
|
230
|
+
// Config utilities (also re-exported from the package root)
|
|
231
|
+
import {
|
|
232
|
+
loadCredentials, // resolve credentials from options > env > credentials.json
|
|
233
|
+
loadConfig, // resolve full config (credentials + connection settings)
|
|
234
|
+
loadEnvFiles, // load .env files into process.env before reading config
|
|
235
|
+
DEFAULT_BASE_URL, // default API base URL
|
|
236
|
+
ENV_VARS, // map of the env var names the SDK reads
|
|
237
|
+
API_KEY_PREFIX, // expected API key prefix ('ulr_')
|
|
238
|
+
} from '@uluops/ops-sdk/config';
|
|
232
239
|
```
|
|
233
240
|
|
|
234
241
|
### Package Exports
|
|
@@ -241,7 +248,7 @@ import { loadCredentials, DEFAULT_BASE_URL } from '@uluops/ops-sdk/config';
|
|
|
241
248
|
| `@uluops/ops-sdk/types/issues` | Issue types only |
|
|
242
249
|
| `@uluops/ops-sdk/types/runs` | Run types only |
|
|
243
250
|
| `@uluops/ops-sdk/types/analytics` | Analytics types only |
|
|
244
|
-
| `@uluops/ops-sdk/types/enums` | Priority, Status, Severity enums |
|
|
251
|
+
| `@uluops/ops-sdk/types/enums` | Priority, Status, Severity enums + failure-code helpers (`parseFailureCode`, `buildFailureCode`, `severityFromCode`) |
|
|
245
252
|
| `@uluops/ops-sdk/types/responses` | API response types |
|
|
246
253
|
| `@uluops/ops-sdk/types/schemas` | Zod input validation schemas |
|
|
247
254
|
| `@uluops/ops-sdk/types/auth` | Auth/credential types |
|
|
@@ -262,6 +269,18 @@ import type { ApiResponse } from '@uluops/ops-sdk/types/responses';
|
|
|
262
269
|
import type { Credentials } from '@uluops/ops-sdk/config';
|
|
263
270
|
```
|
|
264
271
|
|
|
272
|
+
#### Failure Code Utilities
|
|
273
|
+
|
|
274
|
+
The `types/enums` subpath also ships runtime helpers for working with failure codes (the `DOMAIN-MODE/SEVERITY` taxonomy on recommendations):
|
|
275
|
+
|
|
276
|
+
```typescript
|
|
277
|
+
import { parseFailureCode, buildFailureCode, severityFromCode } from '@uluops/ops-sdk/types/enums';
|
|
278
|
+
|
|
279
|
+
parseFailureCode('SEM-INC/H'); // { domain: 'SEM', mode: 'INC', severityCode: 'H' } — or null if malformed
|
|
280
|
+
buildFailureCode('SEM', 'INC', 'H'); // 'SEM-INC/H'
|
|
281
|
+
severityFromCode('H'); // 'high' — or null if the code is unknown
|
|
282
|
+
```
|
|
283
|
+
|
|
265
284
|
## API Reference
|
|
266
285
|
|
|
267
286
|
### Client Configuration
|
|
@@ -325,7 +344,7 @@ Login with email and password.
|
|
|
325
344
|
| `password` | `string` | Yes | User password |
|
|
326
345
|
|
|
327
346
|
```typescript
|
|
328
|
-
const { user,
|
|
347
|
+
const { user, sessionToken } = await client.auth.login({
|
|
329
348
|
email: 'user@example.com',
|
|
330
349
|
password: 'password123',
|
|
331
350
|
});
|
|
@@ -1058,7 +1077,7 @@ Search issues across projects.
|
|
|
1058
1077
|
|
|
1059
1078
|
| Parameter | Type | Required | Description |
|
|
1060
1079
|
|-----------|------|----------|-------------|
|
|
1061
|
-
| `query` | `string` |
|
|
1080
|
+
| `query` | `string` | No | Search query (omit for filter-only searches) |
|
|
1062
1081
|
| `projects` | `string[]` | No | Filter by projects |
|
|
1063
1082
|
| `agents` | `string[]` | No | Filter by agents |
|
|
1064
1083
|
| `status` | `Status` | No | Filter by status |
|
|
@@ -1203,6 +1222,14 @@ Restore a soft-deleted issue.
|
|
|
1203
1222
|
const issue = await client.issues.restore('issue-uuid');
|
|
1204
1223
|
```
|
|
1205
1224
|
|
|
1225
|
+
#### `client.issues.softDelete(issueId)`
|
|
1226
|
+
|
|
1227
|
+
Soft-delete an active issue. Reversible via `restore()`. Returns `{ deleted: true }`.
|
|
1228
|
+
|
|
1229
|
+
```typescript
|
|
1230
|
+
await client.issues.softDelete('issue-uuid');
|
|
1231
|
+
```
|
|
1232
|
+
|
|
1206
1233
|
#### `client.issues.undoLastChange(issueId)`
|
|
1207
1234
|
|
|
1208
1235
|
Undo the last status change on an issue.
|
|
@@ -1221,12 +1248,12 @@ const results = await client.issues.bulkUpdateStatus([
|
|
|
1221
1248
|
{ issueId: 'issue-2', status: 'deferred', reason: 'Not a priority' },
|
|
1222
1249
|
]);
|
|
1223
1250
|
|
|
1224
|
-
//
|
|
1225
|
-
//
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1251
|
+
// The result is an aggregate object — `updated` counts the successes and
|
|
1252
|
+
// `failed` lists the issue IDs that could not be updated (e.g., not found
|
|
1253
|
+
// or an invalid status transition).
|
|
1254
|
+
console.log(`Updated ${results.updated} issue(s)`);
|
|
1255
|
+
if (results.failed.length > 0) {
|
|
1256
|
+
console.warn('Failed issue IDs:', results.failed);
|
|
1230
1257
|
}
|
|
1231
1258
|
```
|
|
1232
1259
|
|
|
@@ -1560,7 +1587,7 @@ try {
|
|
|
1560
1587
|
} catch (error) {
|
|
1561
1588
|
if (error instanceof NotFoundError) {
|
|
1562
1589
|
console.log(error.message); // "Project 'non-existent' not found"
|
|
1563
|
-
console.log(error.details); // {
|
|
1590
|
+
console.log(error.details); // { resource: "Project 'non-existent' not found" }
|
|
1564
1591
|
} else if (error instanceof UnauthorizedError) {
|
|
1565
1592
|
console.log('Please authenticate');
|
|
1566
1593
|
} else if (error instanceof RateLimitError) {
|
|
@@ -1590,6 +1617,41 @@ try {
|
|
|
1590
1617
|
| `TimeoutError` | - | Request timeout |
|
|
1591
1618
|
| `InputValidationError` | - | Client-side Zod validation failure |
|
|
1592
1619
|
|
|
1620
|
+
### Type Guards
|
|
1621
|
+
|
|
1622
|
+
Every error class also ships a type guard. These are an alternative to `instanceof`
|
|
1623
|
+
that narrows the error type without importing the class — useful in `switch`-style
|
|
1624
|
+
handling or when you only need a subset of the hierarchy:
|
|
1625
|
+
|
|
1626
|
+
```typescript
|
|
1627
|
+
import {
|
|
1628
|
+
isOpsApiError, // any server-returned API error
|
|
1629
|
+
isNotFoundError, // 404
|
|
1630
|
+
isUnauthorizedError, // 401
|
|
1631
|
+
isForbiddenError, // 403
|
|
1632
|
+
isValidationError, // 400
|
|
1633
|
+
isConflictError, // 409
|
|
1634
|
+
isUnprocessableError, // 422
|
|
1635
|
+
isRateLimitError, // 429
|
|
1636
|
+
isPayloadTooLargeError, // 413
|
|
1637
|
+
isServiceUnavailableError, // 503
|
|
1638
|
+
isNetworkError, // connection failure
|
|
1639
|
+
isTimeoutError, // request timeout
|
|
1640
|
+
} from '@uluops/ops-sdk/errors';
|
|
1641
|
+
|
|
1642
|
+
try {
|
|
1643
|
+
await client.runs.save(input);
|
|
1644
|
+
} catch (error) {
|
|
1645
|
+
if (isNotFoundError(error)) {
|
|
1646
|
+
// handle missing resource
|
|
1647
|
+
} else if (isRateLimitError(error)) {
|
|
1648
|
+
console.log(`Retry after ${error.details?.retryAfter}s`);
|
|
1649
|
+
} else if (isOpsApiError(error)) {
|
|
1650
|
+
console.log(`API error: ${error.code} - ${error.message}`);
|
|
1651
|
+
}
|
|
1652
|
+
}
|
|
1653
|
+
```
|
|
1654
|
+
|
|
1593
1655
|
### Automatic Retries
|
|
1594
1656
|
|
|
1595
1657
|
The SDK automatically retries on transient errors (502, 503, 504, 429) and network failures (DNS, connection reset, ECONNREFUSED) with exponential backoff:
|
|
@@ -1607,7 +1669,7 @@ const client = new OpsClient({
|
|
|
1607
1669
|
The API enforces the following payload limits:
|
|
1608
1670
|
|
|
1609
1671
|
- **Request body**: 1 MB maximum for most endpoints
|
|
1610
|
-
- **`raw_markdown`** field in `runs.save()`: up to
|
|
1672
|
+
- **`raw_markdown`** field in `runs.save()`: up to 500,000 characters
|
|
1611
1673
|
- **Recommendations array**: no hard limit, but very large arrays (1000+) may cause timeouts
|
|
1612
1674
|
- **Bulk operations**: capped at 100 items per request (e.g., `bulkUpdateStatus`)
|
|
1613
1675
|
|
package/dist/client.d.ts
CHANGED
|
@@ -69,117 +69,193 @@ export declare class OpsClient {
|
|
|
69
69
|
getAuthType(): 'api_key' | 'session' | null;
|
|
70
70
|
/** Authentication, API keys, sessions, and user profile management */
|
|
71
71
|
readonly auth: {
|
|
72
|
+
/** Register a new user account. */
|
|
72
73
|
register: (input: RegisterInput) => Promise<RegisterResponse>;
|
|
74
|
+
/** Log in with email + password, returning a session token. */
|
|
73
75
|
login: (input: LoginInput) => Promise<LoginResponse>;
|
|
76
|
+
/** Revoke all active sessions for the current user. */
|
|
74
77
|
logoutAll: () => Promise<{
|
|
75
78
|
sessionsRevoked: number;
|
|
76
79
|
}>;
|
|
80
|
+
/** Trigger a password-reset email for the given address. */
|
|
77
81
|
forgotPassword: (email: string) => Promise<MessageResponse>;
|
|
82
|
+
/** Complete a password reset using a token from the reset email. */
|
|
78
83
|
resetPassword: (input: ResetPasswordInput) => Promise<MessageResponse>;
|
|
84
|
+
/** Change the current user's password (requires current password). */
|
|
79
85
|
changePassword: (input: ChangePasswordInput) => Promise<MessageResponse>;
|
|
86
|
+
/** Set a first-time password for OAuth/admin-created accounts. */
|
|
80
87
|
setPassword: (password: string) => Promise<MessageResponse>;
|
|
88
|
+
/** Get the authenticated user (auth-scoped view). */
|
|
81
89
|
getMe: () => Promise<AuthUser>;
|
|
90
|
+
/** Get the current user's public profile. */
|
|
82
91
|
getProfile: () => Promise<{
|
|
83
92
|
user: PublicUser;
|
|
84
93
|
}>;
|
|
94
|
+
/** Update the current user's profile (partial; at least one field). */
|
|
85
95
|
updateProfile: (input: UpdateProfileInput) => Promise<{
|
|
86
96
|
user: PublicUser;
|
|
87
97
|
}>;
|
|
98
|
+
/** Fetch the current user's avatar bytes and content type. */
|
|
88
99
|
getAvatar: () => Promise<{
|
|
89
100
|
data: ArrayBuffer;
|
|
90
101
|
contentType: string;
|
|
91
102
|
}>;
|
|
103
|
+
/** Remove the current user's avatar. */
|
|
92
104
|
deleteAvatar: () => Promise<void>;
|
|
105
|
+
/** List the current user's API keys (metadata only). */
|
|
93
106
|
listApiKeys: () => Promise<PublicApiKey[]>;
|
|
107
|
+
/** Create an API key; the secret is returned once, on creation. */
|
|
94
108
|
createApiKey: (input?: CreateApiKeyInput) => Promise<ApiKeyCreatedResponse>;
|
|
109
|
+
/** Revoke an API key by id. */
|
|
95
110
|
revokeApiKey: (keyId: string) => Promise<void>;
|
|
111
|
+
/** List the current user's active sessions. */
|
|
96
112
|
listSessions: () => Promise<PublicSession[]>;
|
|
113
|
+
/** Revoke a single session by id. */
|
|
97
114
|
revokeSession: (sessionId: string) => Promise<void>;
|
|
98
115
|
};
|
|
99
116
|
/** Project CRUD, summaries, trends, issue listing, and bulk operations */
|
|
100
117
|
readonly projects: {
|
|
118
|
+
/** List all projects visible to the caller. */
|
|
101
119
|
list: () => Promise<Project[]>;
|
|
120
|
+
/** Get a project by id or name. */
|
|
102
121
|
get: (idOrName: string) => Promise<Project>;
|
|
122
|
+
/** Create a new project. */
|
|
103
123
|
create: (input: CreateProjectInput) => Promise<Project>;
|
|
124
|
+
/** Update a project's metadata. */
|
|
104
125
|
update: (idOrName: string, input: UpdateProjectInput) => Promise<Project>;
|
|
126
|
+
/** Permanently delete a project (requires confirmation). */
|
|
105
127
|
delete: (idOrName: string, input: DeleteProjectInput) => Promise<DeleteResult>;
|
|
128
|
+
/** Soft-delete a project; reversible via `restore()`. */
|
|
106
129
|
softDelete: (idOrName: string, input: DeleteProjectInput) => Promise<DeleteResult>;
|
|
130
|
+
/** Restore a soft-deleted project. */
|
|
107
131
|
restore: (idOrName: string) => Promise<Project>;
|
|
132
|
+
/** Rename a project. */
|
|
108
133
|
rename: (input: RenameProjectInput) => Promise<Project>;
|
|
134
|
+
/** Get aggregate summary stats for a project. */
|
|
109
135
|
getSummary: (idOrName: string) => Promise<ProjectSummaryResponse>;
|
|
136
|
+
/** Get time-series trends for a project. */
|
|
110
137
|
getTrends: (idOrName: string, query?: ProjectTrendsQuery) => Promise<ProjectTrends>;
|
|
138
|
+
/** List a project's issues (filtered). */
|
|
111
139
|
listIssues: (idOrName: string, query?: ListProjectIssuesQuery) => Promise<Issue[]>;
|
|
140
|
+
/** List a project's issues with a total count for pagination. */
|
|
112
141
|
listIssuesWithCount: (idOrName: string, query?: ListProjectIssuesQuery) => Promise<PaginatedIssues>;
|
|
142
|
+
/** Bulk-update the status of many issues in a project. */
|
|
113
143
|
bulkUpdateIssueStatus: (idOrName: string, updates: BulkIssueStatusUpdate[]) => Promise<BulkIssueStatusResult>;
|
|
144
|
+
/** Merge duplicate issues within a project. */
|
|
114
145
|
mergeIssues: (idOrName: string, input: MergeIssuesInput) => Promise<MergeIssuesResult>;
|
|
115
146
|
};
|
|
116
147
|
/** Execution run save, preview, diff, archive, and retrieval */
|
|
117
148
|
readonly runs: {
|
|
149
|
+
/** Save an execution run (agents, scores, recommendations). */
|
|
118
150
|
save: (input: SaveRunInput, options?: {
|
|
119
151
|
_skipClientValidation?: boolean;
|
|
120
152
|
}) => Promise<SaveRunResponse>;
|
|
153
|
+
/** Preview a save without persisting (dry-run). */
|
|
121
154
|
validate: (input: SaveRunInput, options?: {
|
|
122
155
|
_skipClientValidation?: boolean;
|
|
123
156
|
}) => Promise<ValidateRunResponse>;
|
|
157
|
+
/** Diff two runs to surface regressions/improvements. */
|
|
124
158
|
diff: (query: RunDiffQuery) => Promise<RunDiffResult>;
|
|
159
|
+
/** Archive old runs by number/date/keep-last filter. */
|
|
125
160
|
archive: (input: ArchiveRunsInput) => Promise<ArchiveRunsResult>;
|
|
161
|
+
/** Update a run identified by project + run number. */
|
|
126
162
|
update: (input: UpdateRunByNumberInput, options?: {
|
|
127
163
|
_skipClientValidation?: boolean;
|
|
128
164
|
}) => Promise<Run>;
|
|
165
|
+
/** List run summaries for a project. */
|
|
129
166
|
listByProject: (projectId: string, query?: ListRunsQuery) => Promise<RunSummary[]>;
|
|
167
|
+
/** Get the latest run for a project (optionally by workflow type). */
|
|
130
168
|
getLatest: (projectId: string, workflowType?: string) => Promise<Run>;
|
|
169
|
+
/** Get full details for a run (defaults to latest when runNumber omitted). */
|
|
131
170
|
getDetails: (projectId: string, runNumber?: number) => Promise<RunDetails>;
|
|
171
|
+
/** Get a single run by its id. */
|
|
132
172
|
get: (runId: string) => Promise<Run>;
|
|
173
|
+
/** Update a run identified directly by id. */
|
|
133
174
|
updateById: (runId: string, input: UpdateRunInput, options?: {
|
|
134
175
|
_skipClientValidation?: boolean;
|
|
135
176
|
}) => Promise<Run>;
|
|
177
|
+
/** Delete a run by id. */
|
|
136
178
|
delete: (runId: string) => Promise<DeleteResult>;
|
|
179
|
+
/** Get the structured analysis attached to a run. */
|
|
137
180
|
getAnalysis: (runId: string) => Promise<RunAnalysis>;
|
|
181
|
+
/** List analyses across a project's runs. */
|
|
138
182
|
getProjectAnalysis: (projectId: string, query?: ProjectAnalysisQuery) => Promise<ProjectAnalysisList>;
|
|
183
|
+
/** Query individual analysis records across runs. */
|
|
139
184
|
queryAnalysisRecords: (query?: AnalysisRecordsQuery) => Promise<AnalysisRecordsList>;
|
|
185
|
+
/** Get per-run analysis history for a single agent. */
|
|
140
186
|
getAgentRunsAnalysis: (agentName: string, query: AgentRunsAnalysisQuery) => Promise<AgentRunsAnalysis>;
|
|
141
187
|
};
|
|
142
188
|
/** Issue CRUD, search, status management, notes, and bulk operations */
|
|
143
189
|
readonly issues: {
|
|
190
|
+
/** Create a user-submitted issue. */
|
|
144
191
|
create: (input: CreateUserIssueInput) => Promise<Issue>;
|
|
192
|
+
/** Search issues by text/filters. */
|
|
145
193
|
search: (query: IssueSearchQuery) => Promise<Issue[]>;
|
|
194
|
+
/** Get an issue by its fingerprint within a project. */
|
|
146
195
|
getByFingerprint: (fingerprint: string, project: string) => Promise<Issue>;
|
|
196
|
+
/** Update an issue's status by fingerprint + project. */
|
|
147
197
|
updateStatusByFingerprint: (fingerprint: string, project: string, input: UpdateIssueStatusInput) => Promise<StatusUpdateResult>;
|
|
198
|
+
/** Get an issue by id. */
|
|
148
199
|
get: (issueId: string) => Promise<Issue>;
|
|
200
|
+
/** Get an issue with notes and history detail. */
|
|
149
201
|
getDetails: (issueId: string) => Promise<IssueDetails>;
|
|
202
|
+
/** Get an issue's change history. */
|
|
150
203
|
getHistory: (issueId: string) => Promise<IssueHistoryEnvelope>;
|
|
204
|
+
/** Update an issue's status by id. */
|
|
151
205
|
updateStatus: (issueId: string, input: UpdateIssueStatusInput) => Promise<Issue>;
|
|
206
|
+
/** Update an issue's metadata by id. */
|
|
152
207
|
update: (issueId: string, input: UpdateIssueInput) => Promise<Issue>;
|
|
208
|
+
/** Add a note to an issue. */
|
|
153
209
|
addNote: (issueId: string, input: CreateIssueNoteInput) => Promise<IssueNote>;
|
|
210
|
+
/** Restore a soft-deleted issue. */
|
|
154
211
|
restore: (issueId: string) => Promise<Issue>;
|
|
212
|
+
/** Soft-delete an active issue; reversible via `restore()`. */
|
|
155
213
|
softDelete: (issueId: string) => Promise<DeleteResult>;
|
|
214
|
+
/** Undo the most recent change to an issue. */
|
|
156
215
|
undoLastChange: (issueId: string) => Promise<Issue>;
|
|
216
|
+
/** Bulk-update issue statuses; returns `{ updated, failed }`. */
|
|
157
217
|
bulkUpdateStatus: (updates: BulkStatusUpdateItem[]) => Promise<BulkIssueStatusResult>;
|
|
218
|
+
/** List a project's issues by project id (filtered). */
|
|
158
219
|
listByProject: (projectId: string, query?: ListIssuesQuery) => Promise<Issue[]>;
|
|
159
220
|
};
|
|
160
221
|
/** Agent performance, taxonomy analytics, burndown, velocity, and discovery */
|
|
161
222
|
readonly analytics: {
|
|
223
|
+
/** Get per-agent performance metrics. */
|
|
162
224
|
getAgentPerformance: (query?: AnalyticsQuery) => Promise<AgentPerformance[]>;
|
|
225
|
+
/** Get agent reliability (convergence/recurrence) metrics. */
|
|
163
226
|
getAgentReliability: (query?: AgentReliabilityQuery) => Promise<AgentReliabilityResult>;
|
|
227
|
+
/** Get an agent's lifecycle timeline. */
|
|
164
228
|
getAgentLifecycle: (agentName: string, query?: AnalyticsQuery) => Promise<AgentLifecycleEntry[]>;
|
|
229
|
+
/** Get issue resolution-rate metrics. */
|
|
165
230
|
getResolutionRates: (query?: AnalyticsQuery) => Promise<ResolutionRateResult[]>;
|
|
231
|
+
/** Get files with the most recurring issues. */
|
|
166
232
|
getFileHotspots: (query?: AnalyticsQuery) => Promise<FileHotspotResult[]>;
|
|
233
|
+
/** Get the distribution of issues across the failure taxonomy. */
|
|
167
234
|
getTaxonomyDistribution: (query?: AnalyticsQuery) => Promise<TaxonomyDistributionResult[]>;
|
|
235
|
+
/** Get the full taxonomy analytics breakdown. */
|
|
168
236
|
getFullTaxonomy: (query?: AnalyticsQuery) => Promise<FullTaxonomyAnalyticsResult>;
|
|
237
|
+
/** Get issue burndown over time. */
|
|
169
238
|
getBurndown: (query?: BurndownQuery) => Promise<BurndownResultResponse>;
|
|
239
|
+
/** Get resolution velocity over time. */
|
|
170
240
|
getVelocity: (query?: VelocityQuery) => Promise<VelocityResultResponse>;
|
|
241
|
+
/** Get issue-discovery rate metrics. */
|
|
171
242
|
getDiscovery: (query?: DiscoveryQuery) => Promise<DiscoveryResultResponse>;
|
|
243
|
+
/** Get the agent comparison matrix. */
|
|
172
244
|
getAgentMatrix: (query?: AgentMatrixQuery) => Promise<AgentMatrixResultResponse>;
|
|
245
|
+
/** Get a high-level trend summary. */
|
|
173
246
|
getTrendSummary: (query?: AnalyticsQuery) => Promise<TrendSummaryResult[]>;
|
|
174
247
|
/**
|
|
175
248
|
* Get analytics by metric name (generic endpoint).
|
|
176
249
|
* Returns unvalidated data — use typed methods (getAgentPerformance, etc.) for validated responses.
|
|
250
|
+
*
|
|
177
251
|
*/
|
|
178
252
|
getByMetric: (metric: analyticsOps.AnalyticsMetric, query?: AnalyticsQuery) => Promise<unknown>;
|
|
253
|
+
/** List agents known to the analytics layer. */
|
|
179
254
|
listAgents: (query?: AnalyticsQuery) => Promise<AgentInfo[]>;
|
|
180
255
|
};
|
|
181
256
|
/** Failure taxonomy schema (domains, modes, severities) */
|
|
182
257
|
readonly taxonomy: {
|
|
258
|
+
/** Get the failure-taxonomy schema (domains, modes, severities). */
|
|
183
259
|
get: () => Promise<TaxonomyResponse>;
|
|
184
260
|
};
|
|
185
261
|
}
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAS7E,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAC;AAE1D,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,EACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,GAAG,EACH,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,aAAa,EACb,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EACV,KAAK,EACL,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAE3C;;;;OAIG;gBACS,MAAM,GAAE,eAAoB;IAgCxC;;;;;;OAMG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAepE;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAIpD;;;;OAIG;IACH,eAAe,IAAI,OAAO;IAK1B;;;;OAIG;IACH,WAAW,IAAI,SAAS,GAAG,SAAS,GAAG,IAAI;IAS3C,sEAAsE;IACtE,QAAQ,CAAC,IAAI;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|