@oneharness/sdk 0.4.0 → 0.4.2

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.
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import type { ActionEvent, BatchReport, FailureKind, FallThrough, FallbackReport, OutputFormat, RunReport, RunResult, SessionReport, Status, Usage } from "./contracts.js";
2
+ import type { ActionEvent, BatchReport, FailureKind, FallThrough, FallbackReport, OutputFormat, RunReport, RunResult, SessionReport, Status, ToolCallStatus, Usage } from "./contracts.js";
3
3
  import type { DetectInfo, DetectReport } from "./detection.js";
4
4
  import type { HistoryRecord } from "./history.js";
5
5
  import type { HistoryList, HistorySessionSummary } from "./history-list.js";
@@ -46,4 +46,5 @@ export declare const RunStreamEnvelopeSchema: z.ZodType<RunStreamEnvelope>;
46
46
  export declare const SessionPhaseSchema: z.ZodType<SessionPhase>;
47
47
  export declare const SessionReportSchema: z.ZodType<SessionReport>;
48
48
  export declare const StatusSchema: z.ZodType<Status>;
49
+ export declare const ToolCallStatusSchema: z.ZodType<ToolCallStatus>;
49
50
  export declare const UsageSchema: z.ZodType<Usage>;
@@ -1,6 +1,8 @@
1
1
  /* Generated from oneharness Rust JSON Schemas. Do not edit. */
2
2
  import { z } from "zod";
3
3
  export const ActionEventSchema = z.looseObject({
4
+ duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
5
+ finished_at: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
4
6
  index: z
5
7
  .int()
6
8
  .gte(0)
@@ -9,6 +11,11 @@ export const ActionEventSchema = z.looseObject({
9
11
  kind: z.string().refine((value) => value !== undefined, { message: "Required" }),
10
12
  name: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
11
13
  output: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
14
+ started_at: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
15
+ status: z
16
+ .union([z.lazy(() => ToolCallStatusSchema), z.null()])
17
+ .refine((value) => value !== undefined, { message: "Required" }),
18
+ tool_call_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
12
19
  });
13
20
  export const BatchReportSchema = z.looseObject({
14
21
  forked: z.boolean().refine((value) => value !== undefined, { message: "Required" }),
@@ -110,37 +117,159 @@ export const HistoryLookupBySessionSchema = z.strictObject({
110
117
  .min(1)
111
118
  .refine((value) => value !== undefined, { message: "Required" }),
112
119
  });
113
- export const HistoryRecordSchema = z.looseObject({
114
- duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
115
- events: z
116
- .union([z.array(z.lazy(() => ActionEventSchema)), z.null()])
117
- .refine((value) => value !== undefined, { message: "Required" }),
118
- exit_code: z.union([z.int(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
119
- failure_kind: z
120
- .union([z.lazy(() => FailureKindSchema), z.null()])
121
- .refine((value) => value !== undefined, { message: "Required" }),
122
- harness: z.string().refine((value) => value !== undefined, { message: "Required" }),
123
- history_id: z
124
- .string()
125
- .min(36)
126
- .regex(new RegExp("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", "u"))
127
- .refine((value) => [...value].length <= 36, { message: "Too long: expected at most 36 characters" })
128
- .refine((value) => value !== undefined, { message: "Required" }),
129
- labels: z.lazy(() => HistoryLabelsSchema).optional(),
130
- model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
131
- name: z.string().refine((value) => value !== undefined, { message: "Required" }),
132
- permission_mode: z.lazy(() => PermissionModeSchema).refine((value) => value !== undefined, { message: "Required" }),
133
- project: z.string().refine((value) => value !== undefined, { message: "Required" }),
134
- prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
135
- schema_version: z.string().refine((value) => value !== undefined, { message: "Required" }),
136
- session: z.string().refine((value) => value !== undefined, { message: "Required" }),
137
- session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
138
- status: z.lazy(() => StatusSchema).refine((value) => value !== undefined, { message: "Required" }),
139
- text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
140
- text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
141
- timestamp: z.string().refine((value) => value !== undefined, { message: "Required" }),
142
- usage: z.lazy(() => UsageSchema).refine((value) => value !== undefined, { message: "Required" }),
143
- });
120
+ export const HistoryRecordSchema = z.union([
121
+ z.looseObject({
122
+ duration_ms: z
123
+ .int()
124
+ .gte(0)
125
+ .refine((value) => value !== undefined, { message: "Required" }),
126
+ events: z
127
+ .union([
128
+ z.array(z.union([
129
+ z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
130
+ duration_ms: z
131
+ .int()
132
+ .gte(0)
133
+ .refine((value) => value !== undefined, { message: "Required" }),
134
+ finished_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
135
+ kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
136
+ started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
137
+ status: z.literal("completed").refine((value) => value !== undefined, { message: "Required" }),
138
+ tool_call_id: z
139
+ .string()
140
+ .min(1)
141
+ .refine((value) => value !== undefined, { message: "Required" }),
142
+ })),
143
+ z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
144
+ duration_ms: z
145
+ .int()
146
+ .gte(0)
147
+ .refine((value) => value !== undefined, { message: "Required" }),
148
+ finished_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
149
+ kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
150
+ started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
151
+ status: z.literal("failed").refine((value) => value !== undefined, { message: "Required" }),
152
+ tool_call_id: z
153
+ .string()
154
+ .min(1)
155
+ .refine((value) => value !== undefined, { message: "Required" }),
156
+ })),
157
+ z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
158
+ kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
159
+ started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
160
+ status: z.literal("timeout").refine((value) => value !== undefined, { message: "Required" }),
161
+ tool_call_id: z
162
+ .string()
163
+ .min(1)
164
+ .refine((value) => value !== undefined, { message: "Required" }),
165
+ })),
166
+ z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
167
+ kind: z.literal("tool_call").refine((value) => value !== undefined, { message: "Required" }),
168
+ started_at: z.string().refine((value) => value !== undefined, { message: "Required" }),
169
+ status: z.literal("interrupted").refine((value) => value !== undefined, { message: "Required" }),
170
+ tool_call_id: z
171
+ .string()
172
+ .min(1)
173
+ .refine((value) => value !== undefined, { message: "Required" }),
174
+ })),
175
+ z.intersection(z.lazy(() => ActionEventSchema), z.looseObject({
176
+ kind: z.literal("tool_result").optional(),
177
+ })),
178
+ ])),
179
+ z.null(),
180
+ ])
181
+ .refine((value) => value !== undefined, { message: "Required" }),
182
+ exit_code: z.union([z.int(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
183
+ failure_kind: z
184
+ .union([z.lazy(() => FailureKindSchema), z.null()])
185
+ .refine((value) => value !== undefined, { message: "Required" }),
186
+ finished_at: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
187
+ harness: z.string().refine((value) => value !== undefined, { message: "Required" }),
188
+ history_id: z
189
+ .string()
190
+ .min(36)
191
+ .regex(new RegExp("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", "u"))
192
+ .refine((value) => [...value].length <= 36, { message: "Too long: expected at most 36 characters" })
193
+ .refine((value) => value !== undefined, { message: "Required" }),
194
+ labels: z.lazy(() => HistoryLabelsSchema).optional(),
195
+ model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
196
+ model_ms: z
197
+ .int()
198
+ .gte(0)
199
+ .refine((value) => value !== undefined, { message: "Required" }),
200
+ name: z.string().refine((value) => value !== undefined, { message: "Required" }),
201
+ permission_mode: z.lazy(() => PermissionModeSchema).refine((value) => value !== undefined, { message: "Required" }),
202
+ project: z.string().refine((value) => value !== undefined, { message: "Required" }),
203
+ prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
204
+ schema_version: z.literal("0.3").refine((value) => value !== undefined, { message: "Required" }),
205
+ session: z.string().refine((value) => value !== undefined, { message: "Required" }),
206
+ session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
207
+ started_at: z
208
+ .string()
209
+ .min(1)
210
+ .refine((value) => value !== undefined, { message: "Required" }),
211
+ status: z.lazy(() => StatusSchema).refine((value) => value !== undefined, { message: "Required" }),
212
+ text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
213
+ text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
214
+ time_to_first_token_ms: z.union([z.int().gte(0), z.null()]).optional(),
215
+ timestamp: z.string().refine((value) => value !== undefined, { message: "Required" }),
216
+ tool_ms: z
217
+ .int()
218
+ .gte(0)
219
+ .refine((value) => value !== undefined, { message: "Required" }),
220
+ usage: z.lazy(() => UsageSchema).refine((value) => value !== undefined, { message: "Required" }),
221
+ }),
222
+ z.looseObject({
223
+ duration_ms: z.union([z.int().gte(0), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
224
+ events: z
225
+ .union([
226
+ z.array(z.looseObject({
227
+ index: z
228
+ .int()
229
+ .gte(0)
230
+ .refine((value) => value !== undefined, { message: "Required" }),
231
+ input: z.unknown().refine((value) => value !== undefined, { message: "Required" }),
232
+ kind: z.string().refine((value) => value !== undefined, { message: "Required" }),
233
+ name: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
234
+ output: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
235
+ })),
236
+ z.null(),
237
+ ])
238
+ .refine((value) => value !== undefined, { message: "Required" }),
239
+ exit_code: z.union([z.int(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
240
+ failure_kind: z
241
+ .union([z.lazy(() => FailureKindSchema), z.null()])
242
+ .refine((value) => value !== undefined, { message: "Required" }),
243
+ finished_at: z.union([z.string(), z.null()]).optional(),
244
+ harness: z.string().refine((value) => value !== undefined, { message: "Required" }),
245
+ history_id: z
246
+ .string()
247
+ .min(36)
248
+ .regex(new RegExp("^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$", "u"))
249
+ .refine((value) => [...value].length <= 36, { message: "Too long: expected at most 36 characters" })
250
+ .refine((value) => value !== undefined, { message: "Required" }),
251
+ labels: z.lazy(() => HistoryLabelsSchema).optional(),
252
+ model: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
253
+ model_ms: z.union([z.int().gte(0), z.null()]).optional(),
254
+ name: z.string().refine((value) => value !== undefined, { message: "Required" }),
255
+ permission_mode: z.lazy(() => PermissionModeSchema).refine((value) => value !== undefined, { message: "Required" }),
256
+ project: z.string().refine((value) => value !== undefined, { message: "Required" }),
257
+ prompt: z.string().refine((value) => value !== undefined, { message: "Required" }),
258
+ schema_version: z
259
+ .union([z.literal("0.1"), z.literal("0.2")])
260
+ .refine((value) => value !== undefined, { message: "Required" }),
261
+ session: z.string().refine((value) => value !== undefined, { message: "Required" }),
262
+ session_id: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
263
+ started_at: z.union([z.string(), z.null()]).optional(),
264
+ status: z.lazy(() => StatusSchema).refine((value) => value !== undefined, { message: "Required" }),
265
+ text: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
266
+ text_source: z.union([z.string(), z.null()]).refine((value) => value !== undefined, { message: "Required" }),
267
+ time_to_first_token_ms: z.union([z.int().gte(0), z.null()]).optional(),
268
+ timestamp: z.string().refine((value) => value !== undefined, { message: "Required" }),
269
+ tool_ms: z.union([z.int().gte(0), z.null()]).optional(),
270
+ usage: z.lazy(() => UsageSchema).refine((value) => value !== undefined, { message: "Required" }),
271
+ }),
272
+ ]);
144
273
  export const HistoryRecordsSchema = z.array(z.lazy(() => HistoryRecordSchema));
145
274
  export const HistorySessionSummarySchema = z.looseObject({
146
275
  harnesses: z.array(z.string()).refine((value) => value !== undefined, { message: "Required" }),
@@ -303,6 +432,12 @@ export const StatusSchema = z.union([
303
432
  z.literal("skipped"),
304
433
  z.literal("planned"),
305
434
  ]);
435
+ export const ToolCallStatusSchema = z.union([
436
+ z.literal("completed"),
437
+ z.literal("failed"),
438
+ z.literal("timeout"),
439
+ z.literal("interrupted"),
440
+ ]);
306
441
  export const UsageSchema = z.looseObject({
307
442
  cache_read_tokens: z
308
443
  .union([z.int().gte(0), z.null()])
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oneharness/sdk",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "Typed Node.js SDK for oneharness",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -19,7 +19,7 @@
19
19
  "node": ">=20"
20
20
  },
21
21
  "dependencies": {
22
- "oneharness-cli": "0.4.0",
22
+ "oneharness-cli": "0.4.2",
23
23
  "zod": "^4.4.3"
24
24
  }
25
25
  }