humanish 0.88.2 → 0.89.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 (55) hide show
  1. package/README.md +8 -0
  2. package/dist/export-bundle.js +6 -0
  3. package/dist/export-bundle.js.map +1 -1
  4. package/dist/export.js +67 -10
  5. package/dist/export.js.map +1 -1
  6. package/dist/feedback.d.ts +10 -0
  7. package/dist/feedback.js +58 -1
  8. package/dist/feedback.js.map +1 -1
  9. package/dist/index.d.ts +4 -0
  10. package/dist/index.js +2 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/observer-app.html +10 -9
  13. package/dist/observer.d.ts +2 -0
  14. package/dist/observer.js +52 -5
  15. package/dist/observer.js.map +1 -1
  16. package/dist/pricing.js +2 -2
  17. package/dist/pricing.js.map +1 -1
  18. package/dist/program.js +146 -3
  19. package/dist/program.js.map +1 -1
  20. package/dist/run.d.ts +3 -1
  21. package/dist/run.js +46 -18
  22. package/dist/run.js.map +1 -1
  23. package/dist/study-analysis-engine.d.ts +34 -0
  24. package/dist/study-analysis-engine.js +217 -0
  25. package/dist/study-analysis-engine.js.map +1 -0
  26. package/dist/study-analysis-evidence.d.ts +27 -0
  27. package/dist/study-analysis-evidence.js +420 -0
  28. package/dist/study-analysis-evidence.js.map +1 -0
  29. package/dist/study-analysis-provider.d.ts +38 -0
  30. package/dist/study-analysis-provider.js +140 -0
  31. package/dist/study-analysis-provider.js.map +1 -0
  32. package/dist/study-analysis-service.d.ts +45 -0
  33. package/dist/study-analysis-service.js +207 -0
  34. package/dist/study-analysis-service.js.map +1 -0
  35. package/dist/study-analysis-sharing.d.ts +11 -0
  36. package/dist/study-analysis-sharing.js +27 -0
  37. package/dist/study-analysis-sharing.js.map +1 -0
  38. package/dist/study-analysis-store.d.ts +30 -0
  39. package/dist/study-analysis-store.js +343 -0
  40. package/dist/study-analysis-store.js.map +1 -0
  41. package/dist/study-analysis-validation.d.ts +448 -0
  42. package/dist/study-analysis-validation.js +331 -0
  43. package/dist/study-analysis-validation.js.map +1 -0
  44. package/dist/study-analysis.d.ts +167 -0
  45. package/dist/study-analysis.js +4 -0
  46. package/dist/study-analysis.js.map +1 -0
  47. package/docs/architecture/observer.md +10 -1
  48. package/docs/contracts/feedback.md +9 -3
  49. package/docs/contracts/schemas.md +4 -1
  50. package/docs/contracts/study-analysis.md +150 -0
  51. package/docs/goals/current.md +4 -3
  52. package/docs/ramp/README.md +12 -2
  53. package/docs/release/0.89.0-study-findings.md +79 -0
  54. package/docs/release/0.89.1-analysis-finished-notice.md +24 -0
  55. package/package.json +3 -2
@@ -0,0 +1,448 @@
1
+ import { z } from "zod";
2
+ import { type StudyAnalysisArtifact, type StudyAnalysisCorrection, type StudyAnalysisInput, type StudyAnalysisResult } from "./study-analysis.js";
3
+ export declare const studyAnalysisResultSchema: z.ZodObject<{
4
+ summary: z.ZodString;
5
+ participants: z.ZodArray<z.ZodObject<{
6
+ streamId: z.ZodString;
7
+ summary: z.ZodString;
8
+ intent: z.ZodString;
9
+ outcome: z.ZodEnum<{
10
+ blocked: "blocked";
11
+ abandoned: "abandoned";
12
+ completed: "completed";
13
+ unknown: "unknown";
14
+ interrupted: "interrupted";
15
+ }>;
16
+ outcomeReason: z.ZodString;
17
+ evidenceIds: z.ZodArray<z.ZodString>;
18
+ feedback: z.ZodArray<z.ZodObject<{
19
+ evidenceId: z.ZodString;
20
+ text: z.ZodString;
21
+ }, z.core.$strict>>;
22
+ limitations: z.ZodArray<z.ZodString>;
23
+ }, z.core.$strict>>;
24
+ findings: z.ZodArray<z.ZodObject<{
25
+ id: z.ZodString;
26
+ title: z.ZodString;
27
+ summary: z.ZodString;
28
+ impact: z.ZodEnum<{
29
+ blocked_task: "blocked_task";
30
+ friction: "friction";
31
+ recovery: "recovery";
32
+ uncertain: "uncertain";
33
+ }>;
34
+ affectedStreamIds: z.ZodArray<z.ZodString>;
35
+ exposedStreamIds: z.ZodArray<z.ZodString>;
36
+ exposureReason: z.ZodString;
37
+ recovery: z.ZodEnum<{
38
+ unknown: "unknown";
39
+ recovered: "recovered";
40
+ not_observed: "not_observed";
41
+ }>;
42
+ confidence: z.ZodEnum<{
43
+ low: "low";
44
+ medium: "medium";
45
+ high: "high";
46
+ }>;
47
+ observations: z.ZodArray<z.ZodObject<{
48
+ claim: z.ZodString;
49
+ basis: z.ZodEnum<{
50
+ action: "action";
51
+ visual: "visual";
52
+ participant_statement: "participant_statement";
53
+ inference: "inference";
54
+ }>;
55
+ evidenceIds: z.ZodArray<z.ZodString>;
56
+ limitation: z.ZodString;
57
+ }, z.core.$strict>>;
58
+ nextStep: z.ZodString;
59
+ priorityReason: z.ZodString;
60
+ }, z.core.$strict>>;
61
+ limitations: z.ZodArray<z.ZodString>;
62
+ }, z.core.$strict>;
63
+ export declare const studyAnalysisResultJsonSchema: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
64
+ summary: z.ZodString;
65
+ participants: z.ZodArray<z.ZodObject<{
66
+ streamId: z.ZodString;
67
+ summary: z.ZodString;
68
+ intent: z.ZodString;
69
+ outcome: z.ZodEnum<{
70
+ blocked: "blocked";
71
+ abandoned: "abandoned";
72
+ completed: "completed";
73
+ unknown: "unknown";
74
+ interrupted: "interrupted";
75
+ }>;
76
+ outcomeReason: z.ZodString;
77
+ evidenceIds: z.ZodArray<z.ZodString>;
78
+ feedback: z.ZodArray<z.ZodObject<{
79
+ evidenceId: z.ZodString;
80
+ text: z.ZodString;
81
+ }, z.core.$strict>>;
82
+ limitations: z.ZodArray<z.ZodString>;
83
+ }, z.core.$strict>>;
84
+ findings: z.ZodArray<z.ZodObject<{
85
+ id: z.ZodString;
86
+ title: z.ZodString;
87
+ summary: z.ZodString;
88
+ impact: z.ZodEnum<{
89
+ blocked_task: "blocked_task";
90
+ friction: "friction";
91
+ recovery: "recovery";
92
+ uncertain: "uncertain";
93
+ }>;
94
+ affectedStreamIds: z.ZodArray<z.ZodString>;
95
+ exposedStreamIds: z.ZodArray<z.ZodString>;
96
+ exposureReason: z.ZodString;
97
+ recovery: z.ZodEnum<{
98
+ unknown: "unknown";
99
+ recovered: "recovered";
100
+ not_observed: "not_observed";
101
+ }>;
102
+ confidence: z.ZodEnum<{
103
+ low: "low";
104
+ medium: "medium";
105
+ high: "high";
106
+ }>;
107
+ observations: z.ZodArray<z.ZodObject<{
108
+ claim: z.ZodString;
109
+ basis: z.ZodEnum<{
110
+ action: "action";
111
+ visual: "visual";
112
+ participant_statement: "participant_statement";
113
+ inference: "inference";
114
+ }>;
115
+ evidenceIds: z.ZodArray<z.ZodString>;
116
+ limitation: z.ZodString;
117
+ }, z.core.$strict>>;
118
+ nextStep: z.ZodString;
119
+ priorityReason: z.ZodString;
120
+ }, z.core.$strict>>;
121
+ limitations: z.ZodArray<z.ZodString>;
122
+ }, z.core.$strict>>;
123
+ export declare const studyAnalysisCoverageSchema: z.ZodObject<{
124
+ includedStreamIds: z.ZodArray<z.ZodString>;
125
+ omittedStreamIds: z.ZodArray<z.ZodString>;
126
+ evidenceCount: z.ZodNumber;
127
+ captureCount: z.ZodNumber;
128
+ complete: z.ZodBoolean;
129
+ omissions: z.ZodArray<z.ZodString>;
130
+ }, z.core.$strict>;
131
+ export declare const studyAnalysisEvidenceSchema: z.ZodObject<{
132
+ id: z.ZodString;
133
+ streamId: z.ZodString;
134
+ eventId: z.ZodString;
135
+ kind: z.ZodString;
136
+ text: z.ZodString;
137
+ quoteEligible: z.ZodBoolean;
138
+ at: z.ZodNullable<z.ZodString>;
139
+ elapsedMs: z.ZodNullable<z.ZodNumber>;
140
+ frame: z.ZodNullable<z.ZodNumber>;
141
+ capture: z.ZodNullable<z.ZodObject<{
142
+ eventId: z.ZodString;
143
+ path: z.ZodString;
144
+ sha256: z.ZodString;
145
+ mimeType: z.ZodEnum<{
146
+ "image/png": "image/png";
147
+ "image/jpeg": "image/jpeg";
148
+ "image/webp": "image/webp";
149
+ }>;
150
+ }, z.core.$strict>>;
151
+ }, z.core.$strict>;
152
+ export declare const studyAnalysisParticipantProvenanceSchema: z.ZodObject<{
153
+ actorStatus: z.ZodNullable<z.ZodEnum<{
154
+ incomplete: "incomplete";
155
+ blocked: "blocked";
156
+ passed: "passed";
157
+ abandoned: "abandoned";
158
+ timed_out: "timed_out";
159
+ failed: "failed";
160
+ }>>;
161
+ completionReason: z.ZodNullable<z.ZodEnum<{
162
+ timed_out: "timed_out";
163
+ goal_satisfied: "goal_satisfied";
164
+ turn_completed: "turn_completed";
165
+ gave_up: "gave_up";
166
+ blocked_approval: "blocked_approval";
167
+ budget_reached: "budget_reached";
168
+ actor_error: "actor_error";
169
+ step_failed: "step_failed";
170
+ harness_error: "harness_error";
171
+ }>>;
172
+ stopCause: z.ZodNullable<z.ZodEnum<{
173
+ provider_output_limit: "provider_output_limit";
174
+ provider_token_limit: "provider_token_limit";
175
+ time_limit: "time_limit";
176
+ spend_limit: "spend_limit";
177
+ study_spend_limit: "study_spend_limit";
178
+ adapter_limit: "adapter_limit";
179
+ provider_incomplete: "provider_incomplete";
180
+ provider_status: "provider_status";
181
+ harness_aborted: "harness_aborted";
182
+ }>>;
183
+ goalSource: z.ZodNullable<z.ZodEnum<{
184
+ participant_report: "participant_report";
185
+ condition_matched: "condition_matched";
186
+ unavailable: "unavailable";
187
+ }>>;
188
+ declaredOutcome: z.ZodNullable<z.ZodEnum<{
189
+ reached: "reached";
190
+ not_reached: "not_reached";
191
+ blocked: "blocked";
192
+ }>>;
193
+ taskOutcomes: z.ZodNullable<z.ZodArray<z.ZodObject<{
194
+ taskId: z.ZodString;
195
+ completed: z.ZodBoolean;
196
+ observable: z.ZodBoolean;
197
+ inputsObserved: z.ZodNullable<z.ZodBoolean>;
198
+ turn: z.ZodNullable<z.ZodNumber>;
199
+ }, z.core.$strict>>>;
200
+ }, z.core.$strict>;
201
+ export declare const studyAnalysisArtifactSchema: z.ZodObject<{
202
+ schema: z.ZodLiteral<"humanish.study-analysis.v1">;
203
+ id: z.ZodString;
204
+ runId: z.ZodString;
205
+ status: z.ZodEnum<{
206
+ failed: "failed";
207
+ cancelled: "cancelled";
208
+ complete: "complete";
209
+ partial: "partial";
210
+ }>;
211
+ createdAt: z.ZodString;
212
+ completedAt: z.ZodString;
213
+ sourceRunSha256: z.ZodString;
214
+ inputDigest: z.ZodString;
215
+ configDigest: z.ZodString;
216
+ config: z.ZodObject<{
217
+ model: z.ZodString;
218
+ question: z.ZodNullable<z.ZodString>;
219
+ maxCostUsd: z.ZodNumber;
220
+ timeoutMs: z.ZodNumber;
221
+ maxOutputTokens: z.ZodNumber;
222
+ }, z.core.$strict>;
223
+ promptVersion: z.ZodString;
224
+ provider: z.ZodLiteral<"openai">;
225
+ usage: z.ZodObject<{
226
+ cacheWriteInputTokens: z.ZodNullable<z.ZodNumber>;
227
+ cachedInputTokens: z.ZodNullable<z.ZodNumber>;
228
+ usageComplete: z.ZodBoolean;
229
+ dispatched: z.ZodBoolean;
230
+ ratesAsOf: z.ZodNullable<z.ZodString>;
231
+ estimatedAdmissionUsd: z.ZodNullable<z.ZodNumber>;
232
+ inputTokens: z.ZodNullable<z.ZodNumber>;
233
+ outputTokens: z.ZodNullable<z.ZodNumber>;
234
+ estimatedCostUsd: z.ZodNullable<z.ZodNumber>;
235
+ }, z.core.$strict>;
236
+ participants: z.ZodArray<z.ZodObject<{
237
+ streamId: z.ZodString;
238
+ label: z.ZodString;
239
+ assignment: z.ZodNullable<z.ZodString>;
240
+ recordedStatus: z.ZodString;
241
+ recordedReason: z.ZodNullable<z.ZodString>;
242
+ provenance: z.ZodObject<{
243
+ actorStatus: z.ZodNullable<z.ZodEnum<{
244
+ incomplete: "incomplete";
245
+ blocked: "blocked";
246
+ passed: "passed";
247
+ abandoned: "abandoned";
248
+ timed_out: "timed_out";
249
+ failed: "failed";
250
+ }>>;
251
+ completionReason: z.ZodNullable<z.ZodEnum<{
252
+ timed_out: "timed_out";
253
+ goal_satisfied: "goal_satisfied";
254
+ turn_completed: "turn_completed";
255
+ gave_up: "gave_up";
256
+ blocked_approval: "blocked_approval";
257
+ budget_reached: "budget_reached";
258
+ actor_error: "actor_error";
259
+ step_failed: "step_failed";
260
+ harness_error: "harness_error";
261
+ }>>;
262
+ stopCause: z.ZodNullable<z.ZodEnum<{
263
+ provider_output_limit: "provider_output_limit";
264
+ provider_token_limit: "provider_token_limit";
265
+ time_limit: "time_limit";
266
+ spend_limit: "spend_limit";
267
+ study_spend_limit: "study_spend_limit";
268
+ adapter_limit: "adapter_limit";
269
+ provider_incomplete: "provider_incomplete";
270
+ provider_status: "provider_status";
271
+ harness_aborted: "harness_aborted";
272
+ }>>;
273
+ goalSource: z.ZodNullable<z.ZodEnum<{
274
+ participant_report: "participant_report";
275
+ condition_matched: "condition_matched";
276
+ unavailable: "unavailable";
277
+ }>>;
278
+ declaredOutcome: z.ZodNullable<z.ZodEnum<{
279
+ reached: "reached";
280
+ not_reached: "not_reached";
281
+ blocked: "blocked";
282
+ }>>;
283
+ taskOutcomes: z.ZodNullable<z.ZodArray<z.ZodObject<{
284
+ taskId: z.ZodString;
285
+ completed: z.ZodBoolean;
286
+ observable: z.ZodBoolean;
287
+ inputsObserved: z.ZodNullable<z.ZodBoolean>;
288
+ turn: z.ZodNullable<z.ZodNumber>;
289
+ }, z.core.$strict>>>;
290
+ }, z.core.$strict>;
291
+ }, z.core.$strict>>;
292
+ coverage: z.ZodObject<{
293
+ includedStreamIds: z.ZodArray<z.ZodString>;
294
+ omittedStreamIds: z.ZodArray<z.ZodString>;
295
+ evidenceCount: z.ZodNumber;
296
+ captureCount: z.ZodNumber;
297
+ complete: z.ZodBoolean;
298
+ omissions: z.ZodArray<z.ZodString>;
299
+ }, z.core.$strict>;
300
+ evidence: z.ZodArray<z.ZodObject<{
301
+ id: z.ZodString;
302
+ streamId: z.ZodString;
303
+ eventId: z.ZodString;
304
+ kind: z.ZodString;
305
+ text: z.ZodString;
306
+ quoteEligible: z.ZodBoolean;
307
+ at: z.ZodNullable<z.ZodString>;
308
+ elapsedMs: z.ZodNullable<z.ZodNumber>;
309
+ frame: z.ZodNullable<z.ZodNumber>;
310
+ capture: z.ZodNullable<z.ZodObject<{
311
+ eventId: z.ZodString;
312
+ path: z.ZodString;
313
+ sha256: z.ZodString;
314
+ mimeType: z.ZodEnum<{
315
+ "image/png": "image/png";
316
+ "image/jpeg": "image/jpeg";
317
+ "image/webp": "image/webp";
318
+ }>;
319
+ }, z.core.$strict>>;
320
+ }, z.core.$strict>>;
321
+ result: z.ZodNullable<z.ZodObject<{
322
+ summary: z.ZodString;
323
+ participants: z.ZodArray<z.ZodObject<{
324
+ streamId: z.ZodString;
325
+ summary: z.ZodString;
326
+ intent: z.ZodString;
327
+ outcome: z.ZodEnum<{
328
+ blocked: "blocked";
329
+ abandoned: "abandoned";
330
+ completed: "completed";
331
+ unknown: "unknown";
332
+ interrupted: "interrupted";
333
+ }>;
334
+ outcomeReason: z.ZodString;
335
+ evidenceIds: z.ZodArray<z.ZodString>;
336
+ feedback: z.ZodArray<z.ZodObject<{
337
+ evidenceId: z.ZodString;
338
+ text: z.ZodString;
339
+ }, z.core.$strict>>;
340
+ limitations: z.ZodArray<z.ZodString>;
341
+ }, z.core.$strict>>;
342
+ findings: z.ZodArray<z.ZodObject<{
343
+ id: z.ZodString;
344
+ title: z.ZodString;
345
+ summary: z.ZodString;
346
+ impact: z.ZodEnum<{
347
+ blocked_task: "blocked_task";
348
+ friction: "friction";
349
+ recovery: "recovery";
350
+ uncertain: "uncertain";
351
+ }>;
352
+ affectedStreamIds: z.ZodArray<z.ZodString>;
353
+ exposedStreamIds: z.ZodArray<z.ZodString>;
354
+ exposureReason: z.ZodString;
355
+ recovery: z.ZodEnum<{
356
+ unknown: "unknown";
357
+ recovered: "recovered";
358
+ not_observed: "not_observed";
359
+ }>;
360
+ confidence: z.ZodEnum<{
361
+ low: "low";
362
+ medium: "medium";
363
+ high: "high";
364
+ }>;
365
+ observations: z.ZodArray<z.ZodObject<{
366
+ claim: z.ZodString;
367
+ basis: z.ZodEnum<{
368
+ action: "action";
369
+ visual: "visual";
370
+ participant_statement: "participant_statement";
371
+ inference: "inference";
372
+ }>;
373
+ evidenceIds: z.ZodArray<z.ZodString>;
374
+ limitation: z.ZodString;
375
+ }, z.core.$strict>>;
376
+ nextStep: z.ZodString;
377
+ priorityReason: z.ZodString;
378
+ }, z.core.$strict>>;
379
+ limitations: z.ZodArray<z.ZodString>;
380
+ }, z.core.$strict>>;
381
+ error: z.ZodNullable<z.ZodString>;
382
+ }, z.core.$strict>;
383
+ export declare const studyAnalysisCorrectionSchema: z.ZodObject<{
384
+ schema: z.ZodLiteral<"humanish.study-analysis-correction.v1">;
385
+ id: z.ZodString;
386
+ analysisId: z.ZodString;
387
+ analysisSha256: z.ZodString;
388
+ findingId: z.ZodString;
389
+ findingSha256: z.ZodString;
390
+ createdAt: z.ZodString;
391
+ status: z.ZodEnum<{
392
+ confirmed: "confirmed";
393
+ dismissed: "dismissed";
394
+ amended: "amended";
395
+ }>;
396
+ reason: z.ZodString;
397
+ replacementClaim: z.ZodNullable<z.ZodString>;
398
+ }, z.core.$strict>;
399
+ /** Stable hashing is independent of object insertion order and excludes no fields implicitly. */
400
+ export declare function hashStudyAnalysisValue(value: unknown): string;
401
+ export declare function digestStudyAnalysisInput(input: Pick<StudyAnalysisInput, "runId" | "sourceRunSha256" | "participants" | "coverage" | "evidence">): string;
402
+ export declare function checkAnalysisResult(input: StudyAnalysisInput, value: unknown): {
403
+ ok: true;
404
+ result: StudyAnalysisResult;
405
+ } | {
406
+ ok: false;
407
+ errors: string[];
408
+ };
409
+ export declare function validateAnalysisResult(input: StudyAnalysisInput, value: unknown): StudyAnalysisResult;
410
+ export declare function validateStudyAnalysisArtifact(value: unknown): StudyAnalysisArtifact;
411
+ export declare function validateStudyAnalysisCorrection(value: unknown): StudyAnalysisCorrection;
412
+ /** Accounting survives a stale source without retaining generated or participant text. */
413
+ export declare const studyAnalysisExecutionReceiptSchema: z.ZodObject<{
414
+ usage: z.ZodObject<{
415
+ cacheWriteInputTokens: z.ZodNullable<z.ZodNumber>;
416
+ cachedInputTokens: z.ZodNullable<z.ZodNumber>;
417
+ usageComplete: z.ZodBoolean;
418
+ dispatched: z.ZodBoolean;
419
+ ratesAsOf: z.ZodNullable<z.ZodString>;
420
+ estimatedAdmissionUsd: z.ZodNullable<z.ZodNumber>;
421
+ inputTokens: z.ZodNullable<z.ZodNumber>;
422
+ outputTokens: z.ZodNullable<z.ZodNumber>;
423
+ estimatedCostUsd: z.ZodNullable<z.ZodNumber>;
424
+ }, z.core.$strict>;
425
+ provider: z.ZodLiteral<"openai">;
426
+ error: z.ZodNullable<z.ZodString>;
427
+ status: z.ZodEnum<{
428
+ failed: "failed";
429
+ cancelled: "cancelled";
430
+ complete: "complete";
431
+ partial: "partial";
432
+ }>;
433
+ id: z.ZodString;
434
+ completedAt: z.ZodString;
435
+ runId: z.ZodString;
436
+ createdAt: z.ZodString;
437
+ sourceRunSha256: z.ZodString;
438
+ inputDigest: z.ZodString;
439
+ configDigest: z.ZodString;
440
+ promptVersion: z.ZodString;
441
+ schema: z.ZodLiteral<"humanish.analysis-execution.v1">;
442
+ model: z.ZodString;
443
+ maxCostUsd: z.ZodNumber;
444
+ }, z.core.$strict>;
445
+ export type StudyAnalysisExecutionReceipt = z.infer<typeof studyAnalysisExecutionReceiptSchema>;
446
+ export declare function validateStudyAnalysisExecutionReceipt(value: unknown): StudyAnalysisExecutionReceipt;
447
+ /** Validate the packet before any paid request, including typed-library callers. */
448
+ export declare function validateStudyAnalysisInputMetadata(input: StudyAnalysisInput): void;