@getopencrawl/cli 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +75 -298
  2. package/bin/opencrawl.cjs +168 -0
  3. package/package.json +20 -14
  4. package/bin/opencrawl.mjs +0 -553
  5. package/browser.mjs +0 -166
  6. package/src/accounts.test.mjs +0 -223
  7. package/src/agent.mjs +0 -95
  8. package/src/agent.test.mjs +0 -58
  9. package/src/answer-contract.mjs +0 -112
  10. package/src/answer-view.mjs +0 -118
  11. package/src/browser.test.mjs +0 -72
  12. package/src/capture.mjs +0 -273
  13. package/src/capture.test.mjs +0 -171
  14. package/src/client.mjs +0 -183
  15. package/src/client.test.mjs +0 -34
  16. package/src/connect.mjs +0 -230
  17. package/src/connect.test.mjs +0 -131
  18. package/src/context.mjs +0 -34
  19. package/src/context.test.mjs +0 -32
  20. package/src/display.mjs +0 -4
  21. package/src/fixtures/letter-connections.json +0 -59
  22. package/src/fixtures/product-monitor-contract.json +0 -312
  23. package/src/fixtures/research-completion-hosted.json +0 -502
  24. package/src/fixtures/research-completion-v1.json +0 -58
  25. package/src/fixtures/research-completion-v2.json +0 -33
  26. package/src/fixtures/research-presentation-hosted.json +0 -720
  27. package/src/jobs.mjs +0 -117
  28. package/src/jobs.test.mjs +0 -67
  29. package/src/mcp-conversations.test.mjs +0 -80
  30. package/src/monitors.mjs +0 -146
  31. package/src/monitors.test.mjs +0 -62
  32. package/src/product-letter-capabilities.mjs +0 -71
  33. package/src/product-letter-read.mjs +0 -178
  34. package/src/product-monitor-login.test.mjs +0 -140
  35. package/src/product-monitors.mjs +0 -321
  36. package/src/product-monitors.test.mjs +0 -69
  37. package/src/research-agent-errors.test.mjs +0 -110
  38. package/src/research-agent-feedback.test.mjs +0 -28
  39. package/src/research-agent.mjs +0 -164
  40. package/src/research-agent.test.mjs +0 -231
  41. package/src/research-answer-contract.mjs +0 -3
  42. package/src/research-answer-contract.test.mjs +0 -14
  43. package/src/research-answer-view.mjs +0 -7
  44. package/src/research-answer-view.test.mjs +0 -27
  45. package/src/research-completion.mjs +0 -94
  46. package/src/research-completion.test.mjs +0 -110
  47. package/src/research-event.mjs +0 -39
  48. package/src/research-event.test.mjs +0 -57
  49. package/src/research-presentation.test.mjs +0 -56
  50. package/src/research.mjs +0 -141
  51. package/src/research.test.mjs +0 -97
  52. package/src/sessions.mjs +0 -165
  53. package/src/sessions.test.mjs +0 -151
  54. package/src/tasks.mjs +0 -115
  55. package/src/tasks.test.mjs +0 -83
  56. package/src/upload-commands.test.mjs +0 -140
  57. package/src/uploads.mjs +0 -141
  58. package/src/uploads.test.mjs +0 -64
@@ -1,502 +0,0 @@
1
- {
2
- "provenance": "Actual local TestClient admission/SQLite worker/parent validators/adapter, synthetic model/search/page inputs, no external calls.",
3
- "runs": {
4
- "admitted": {
5
- "id": "job_f90b8d2cb63f4a8188d26b367bca44fd",
6
- "agent_id": "ragent_e302f75f38c34b37adfb5c24f373e198",
7
- "agent_revision": 1,
8
- "status": "queued",
9
- "phase": "queued",
10
- "created_at": "2026-10-25T06:11:10.864Z",
11
- "started_at": null,
12
- "finished_at": null,
13
- "outcome": null,
14
- "findings": [],
15
- "gaps": [],
16
- "usage": {
17
- "completion": {
18
- "version": 1,
19
- "policy": "completion_v1",
20
- "policy_sha256": "1e465f634773191ff5e101b9589547d8af81c9c30f63fbc4febea477d58e009f",
21
- "limits": {
22
- "model_calls": 5,
23
- "web_searches": 5,
24
- "pages": 9,
25
- "page_requests": 12,
26
- "page_bytes": 6291456,
27
- "work_seconds": 360,
28
- "crawl_seconds": 60
29
- },
30
- "reason": "admitted",
31
- "validated_passes": 0,
32
- "whole_request_completeness": "not_certified",
33
- "notices": []
34
- }
35
- },
36
- "error": null
37
- },
38
- "repaired": {
39
- "id": "job_4cc55b65347c4600b41eec6b183295e5",
40
- "agent_id": "ragent_df312d0934bd45c3beac90cec25ab05e",
41
- "agent_revision": 1,
42
- "status": "completed",
43
- "phase": "finished",
44
- "created_at": "2026-10-25T06:11:10.926Z",
45
- "started_at": "2026-10-25T06:11:10.931Z",
46
- "finished_at": "2026-10-25T06:11:11.030Z",
47
- "outcome": "findings",
48
- "findings": [
49
- {
50
- "id": "finding_c66ffe562c7b147339327066",
51
- "claim": "The scanner starts from the control panel.",
52
- "relevance": "Selected for this research brief.",
53
- "qualifiers": [
54
- "Hold the amber key before starting a cold scanner."
55
- ],
56
- "citations": [
57
- {
58
- "id": "P1",
59
- "url": "https://northlight.example/docs/start",
60
- "title": "Northlight original",
61
- "quote": "The scanner starts from the control panel.\nHold the amber key before starting a cold scanner.",
62
- "start": 0,
63
- "end": 93,
64
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
65
- "observed_at": "2026-10-25T00:00:00Z",
66
- "published_at": null,
67
- "source_kind": "web_page",
68
- "collection_id": null,
69
- "document_id": null,
70
- "version_id": null,
71
- "page": {
72
- "requested_url": "https://northlight.example/docs/start",
73
- "final_url": "https://northlight.example/docs/start",
74
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
75
- "start": 0,
76
- "end": 93,
77
- "total_chars": 93,
78
- "extractor": "public-static-v3"
79
- }
80
- }
81
- ]
82
- },
83
- {
84
- "id": "finding_d47757767ca82ca7275c7d03",
85
- "claim": "The cold-start extension requires the Fleet plan and a paid module.",
86
- "relevance": "Selected for this research brief.",
87
- "qualifiers": [],
88
- "citations": [
89
- {
90
- "id": "P2",
91
- "url": "https://northlight.example/pricing",
92
- "title": "Northlight original",
93
- "quote": "The cold-start extension requires the Fleet plan and a paid module.",
94
- "start": 0,
95
- "end": 67,
96
- "body_sha256": "66e29862af9ded9cbab10eab9436342d07aacf11d71da6677c8953249b0ba508",
97
- "observed_at": "2026-10-25T00:00:00Z",
98
- "published_at": null,
99
- "source_kind": "web_page",
100
- "collection_id": null,
101
- "document_id": null,
102
- "version_id": null,
103
- "page": {
104
- "requested_url": "https://northlight.example/pricing",
105
- "final_url": "https://northlight.example/pricing",
106
- "body_sha256": "66e29862af9ded9cbab10eab9436342d07aacf11d71da6677c8953249b0ba508",
107
- "start": 0,
108
- "end": 67,
109
- "total_chars": 67,
110
- "extractor": "public-static-v3"
111
- }
112
- }
113
- ]
114
- }
115
- ],
116
- "gaps": [],
117
- "usage": {
118
- "model_calls": 5,
119
- "input_tokens": 50,
120
- "output_tokens": 50,
121
- "answer_contract": {
122
- "version": 1,
123
- "state": "assessed_nonexhaustive",
124
- "reason": null,
125
- "scope": "admitted_retained_windows_only",
126
- "source_scope": [
127
- {
128
- "evidence_id": "P1",
129
- "source_sha256": "8961e2910de4e3f1f6ca0b241b11b56a2fbd8471fea36e02c12ce07bbdf2a342",
130
- "window_text_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
131
- "window_chars": 93,
132
- "source_kind": "web_page",
133
- "page": {
134
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
135
- "start": 0,
136
- "end": 93,
137
- "total_chars": 93
138
- }
139
- },
140
- {
141
- "evidence_id": "P2",
142
- "source_sha256": "759f6fb7af246e91b633600cfb3e0289645e941ddbfb602794857807f53eaa29",
143
- "window_text_sha256": "66e29862af9ded9cbab10eab9436342d07aacf11d71da6677c8953249b0ba508",
144
- "window_chars": 67,
145
- "source_kind": "web_page",
146
- "page": {
147
- "body_sha256": "66e29862af9ded9cbab10eab9436342d07aacf11d71da6677c8953249b0ba508",
148
- "start": 0,
149
- "end": 67,
150
- "total_chars": 67
151
- }
152
- }
153
- ],
154
- "inventory": "nonexhaustive",
155
- "whole_request_completeness": "not_certified",
156
- "goal_sha256": "ce765a7e84834a671c89aff572911f9b407e1ed370e07a58a1937bfb36c1d624",
157
- "components": [
158
- {
159
- "component_id": "C1",
160
- "start": 12,
161
- "end": 32,
162
- "text": "cold-start interlock",
163
- "status": "literal_answer",
164
- "reason": null,
165
- "fact_refs": [
166
- {
167
- "finding_id": "finding_c66ffe562c7b147339327066",
168
- "field": "claim",
169
- "qualifier_ordinal": 0,
170
- "literal_text_sha256": "80b74778c1a58b31da0d7dda4893cf672646993eb38ce0e35c8d1b7170f253d8"
171
- },
172
- {
173
- "finding_id": "finding_c66ffe562c7b147339327066",
174
- "field": "qualifier",
175
- "qualifier_ordinal": 1,
176
- "literal_text_sha256": "77611e20553c78e11fd59271a6248fca385d184f7a2f890d35ddcd0518aab1a5"
177
- }
178
- ],
179
- "evidence_ids": [
180
- "P1"
181
- ],
182
- "source_state": "supported"
183
- },
184
- {
185
- "component_id": "C2",
186
- "start": 41,
187
- "end": 58,
188
- "text": "paid entitlement.",
189
- "status": "literal_answer",
190
- "reason": null,
191
- "fact_refs": [
192
- {
193
- "finding_id": "finding_d47757767ca82ca7275c7d03",
194
- "field": "claim",
195
- "qualifier_ordinal": 0,
196
- "literal_text_sha256": "66e29862af9ded9cbab10eab9436342d07aacf11d71da6677c8953249b0ba508"
197
- }
198
- ],
199
- "evidence_ids": [
200
- "P2"
201
- ],
202
- "source_state": "supported"
203
- }
204
- ],
205
- "notice_components_omitted": 0,
206
- "gap_notice": null
207
- },
208
- "web_searches": 2,
209
- "pages_fetched": 2,
210
- "page_requests": 2,
211
- "page_bytes": 200,
212
- "completion": {
213
- "version": 1,
214
- "policy": "completion_v1",
215
- "policy_sha256": "1e465f634773191ff5e101b9589547d8af81c9c30f63fbc4febea477d58e009f",
216
- "limits": {
217
- "model_calls": 5,
218
- "web_searches": 5,
219
- "pages": 9,
220
- "page_requests": 12,
221
- "page_bytes": 6291456,
222
- "work_seconds": 360,
223
- "crawl_seconds": 60
224
- },
225
- "reason": "completion_reviewed",
226
- "validated_passes": 2,
227
- "whole_request_completeness": "not_certified",
228
- "notices": [
229
- "bounded_sources"
230
- ],
231
- "timing_ms": {
232
- "total": 5000,
233
- "phases": [
234
- {
235
- "phase": "completion_discover",
236
- "elapsed_ms": 1000
237
- },
238
- {
239
- "phase": "synthesize",
240
- "elapsed_ms": 2000
241
- },
242
- {
243
- "phase": "completion_search",
244
- "elapsed_ms": 0
245
- },
246
- {
247
- "phase": "completion_synthesize",
248
- "elapsed_ms": 2000
249
- }
250
- ]
251
- }
252
- },
253
- "model_stages": {
254
- "version": 5,
255
- "planning_calls": 1,
256
- "passes": [
257
- {
258
- "version": 4,
259
- "synthesis_calls": 1,
260
- "review_calls": 1,
261
- "draft_findings": 1,
262
- "admitted_findings": 1,
263
- "selector_omissions": [],
264
- "review_decisions": [
265
- {
266
- "ordinal": 1,
267
- "selected_quotes_support_all_claims_and_qualifiers": true,
268
- "source_context_preserves_restrictions_and_date": true,
269
- "addresses_requested_goal": true
270
- }
271
- ]
272
- },
273
- {
274
- "version": 4,
275
- "synthesis_calls": 1,
276
- "review_calls": 1,
277
- "draft_findings": 2,
278
- "admitted_findings": 2,
279
- "selector_omissions": [],
280
- "review_decisions": [
281
- {
282
- "ordinal": 1,
283
- "selected_quotes_support_all_claims_and_qualifiers": true,
284
- "source_context_preserves_restrictions_and_date": true,
285
- "addresses_requested_goal": true
286
- },
287
- {
288
- "ordinal": 2,
289
- "selected_quotes_support_all_claims_and_qualifiers": true,
290
- "source_context_preserves_restrictions_and_date": true,
291
- "addresses_requested_goal": true
292
- }
293
- ]
294
- }
295
- ]
296
- },
297
- "evidence_sources": 2,
298
- "web_sources": 2,
299
- "synthesis_evidence_ids": [
300
- "P1",
301
- "P2"
302
- ],
303
- "evidence_limits": {
304
- "version": 1,
305
- "reasons": []
306
- }
307
- },
308
- "error": null
309
- },
310
- "unknown": {
311
- "id": "job_ef3d70bddc564ae896103c4738baee06",
312
- "agent_id": "ragent_b811b3aeef484761bd3de45a13e0ff36",
313
- "agent_revision": 1,
314
- "status": "unknown",
315
- "phase": "finished",
316
- "created_at": "2026-10-25T06:11:11.091Z",
317
- "started_at": "2026-10-25T06:11:11.095Z",
318
- "finished_at": "2026-10-25T06:11:11.149Z",
319
- "outcome": null,
320
- "findings": [],
321
- "gaps": [],
322
- "usage": {
323
- "completion": {
324
- "version": 1,
325
- "policy": "completion_v1",
326
- "policy_sha256": "1e465f634773191ff5e101b9589547d8af81c9c30f63fbc4febea477d58e009f",
327
- "limits": {
328
- "model_calls": 5,
329
- "web_searches": 5,
330
- "pages": 9,
331
- "page_requests": 12,
332
- "page_bytes": 6291456,
333
- "work_seconds": 360,
334
- "crawl_seconds": 60
335
- },
336
- "reason": "unknown",
337
- "validated_passes": 1,
338
- "whole_request_completeness": "not_certified",
339
- "notices": [],
340
- "completed_usage_lower_bound": {
341
- "model_calls": 3,
342
- "web_searches": 1,
343
- "input_tokens": 30,
344
- "output_tokens": 30
345
- }
346
- }
347
- },
348
- "error": {
349
- "code": "unknown",
350
- "message": "This run could not be confirmed. It will not dispatch again automatically."
351
- }
352
- },
353
- "unassessed": {
354
- "id": "job_b6908b92c10a418b8a7e80364b62de61",
355
- "agent_id": "ragent_30db2c1bfb6b4810be45bc98547f9dd0",
356
- "agent_revision": 1,
357
- "status": "completed",
358
- "phase": "finished",
359
- "created_at": "2026-10-25T06:11:11.215Z",
360
- "started_at": "2026-10-25T06:11:11.219Z",
361
- "finished_at": "2026-10-25T06:11:11.274Z",
362
- "outcome": "findings",
363
- "findings": [
364
- {
365
- "id": "finding_b495dc2941c27d0e8490d707",
366
- "claim": "The scanner starts from the control panel.",
367
- "relevance": "Selected for this research brief.",
368
- "qualifiers": [],
369
- "citations": [
370
- {
371
- "id": "P1",
372
- "url": "https://northlight.example/docs/start",
373
- "title": "Northlight original",
374
- "quote": "The scanner starts from the control panel.\nHold the amber key before starting a cold scanner.",
375
- "start": 0,
376
- "end": 93,
377
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
378
- "observed_at": "2026-10-25T00:00:00Z",
379
- "published_at": null,
380
- "source_kind": "web_page",
381
- "collection_id": null,
382
- "document_id": null,
383
- "version_id": null,
384
- "page": {
385
- "requested_url": "https://northlight.example/docs/start",
386
- "final_url": "https://northlight.example/docs/start",
387
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
388
- "start": 0,
389
- "end": 93,
390
- "total_chars": 93,
391
- "extractor": "public-static-v3"
392
- }
393
- }
394
- ]
395
- }
396
- ],
397
- "gaps": [],
398
- "usage": {
399
- "model_calls": 3,
400
- "input_tokens": 30,
401
- "output_tokens": 30,
402
- "answer_contract": {
403
- "version": 1,
404
- "state": "unassessed",
405
- "reason": "component_contract_invalid",
406
- "scope": "admitted_retained_windows_only",
407
- "source_scope": [
408
- {
409
- "evidence_id": "P1",
410
- "source_sha256": "8961e2910de4e3f1f6ca0b241b11b56a2fbd8471fea36e02c12ce07bbdf2a342",
411
- "window_text_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
412
- "window_chars": 93,
413
- "source_kind": "web_page",
414
- "page": {
415
- "body_sha256": "dd984d44939313fb7d3facdcd23ebb51745bc305fb26911b8f44e73ac19c4021",
416
- "start": 0,
417
- "end": 93,
418
- "total_chars": 93
419
- }
420
- }
421
- ],
422
- "inventory": "nonexhaustive",
423
- "whole_request_completeness": "not_certified",
424
- "goal_sha256": "ce765a7e84834a671c89aff572911f9b407e1ed370e07a58a1937bfb36c1d624",
425
- "components": [],
426
- "notice_components_omitted": 0,
427
- "gap_notice": null
428
- },
429
- "web_searches": 1,
430
- "pages_fetched": 1,
431
- "page_requests": 1,
432
- "page_bytes": 100,
433
- "completion": {
434
- "version": 1,
435
- "policy": "completion_v1",
436
- "policy_sha256": "1e465f634773191ff5e101b9589547d8af81c9c30f63fbc4febea477d58e009f",
437
- "limits": {
438
- "model_calls": 5,
439
- "web_searches": 5,
440
- "pages": 9,
441
- "page_requests": 12,
442
- "page_bytes": 6291456,
443
- "work_seconds": 360,
444
- "crawl_seconds": 60
445
- },
446
- "reason": "unassessed",
447
- "validated_passes": 1,
448
- "whole_request_completeness": "not_certified",
449
- "notices": [
450
- "bounded_sources",
451
- "unassessed"
452
- ],
453
- "timing_ms": {
454
- "total": 3000,
455
- "phases": [
456
- {
457
- "phase": "completion_discover",
458
- "elapsed_ms": 1000
459
- },
460
- {
461
- "phase": "synthesize",
462
- "elapsed_ms": 2000
463
- }
464
- ]
465
- }
466
- },
467
- "model_stages": {
468
- "version": 5,
469
- "planning_calls": 1,
470
- "passes": [
471
- {
472
- "version": 4,
473
- "synthesis_calls": 1,
474
- "review_calls": 1,
475
- "draft_findings": 1,
476
- "admitted_findings": 1,
477
- "selector_omissions": [],
478
- "review_decisions": [
479
- {
480
- "ordinal": 1,
481
- "selected_quotes_support_all_claims_and_qualifiers": true,
482
- "source_context_preserves_restrictions_and_date": true,
483
- "addresses_requested_goal": true
484
- }
485
- ]
486
- }
487
- ]
488
- },
489
- "evidence_sources": 1,
490
- "web_sources": 1,
491
- "synthesis_evidence_ids": [
492
- "P1"
493
- ],
494
- "evidence_limits": {
495
- "version": 1,
496
- "reasons": []
497
- }
498
- },
499
- "error": null
500
- }
501
- }
502
- }
@@ -1,58 +0,0 @@
1
- {
2
- "completion": {
3
- "version": 1,
4
- "policy": "completion_v1",
5
- "policy_sha256": "1e465f634773191ff5e101b9589547d8af81c9c30f63fbc4febea477d58e009f",
6
- "limits": {
7
- "model_calls": 5,
8
- "web_searches": 5,
9
- "pages": 9,
10
- "page_requests": 12,
11
- "page_bytes": 6291456,
12
- "work_seconds": 360,
13
- "crawl_seconds": 60
14
- },
15
- "reason": "completion_reviewed",
16
- "validated_passes": 2,
17
- "whole_request_completeness": "not_certified",
18
- "notices": [
19
- "bounded_sources",
20
- "evidence_omitted",
21
- "repair_input_bound",
22
- "unassessed"
23
- ],
24
- "timing_ms": {
25
- "total": 360000,
26
- "phases": [
27
- {
28
- "phase": "completion_discover",
29
- "elapsed_ms": 1000
30
- },
31
- {
32
- "phase": "synthesize",
33
- "elapsed_ms": 210000
34
- },
35
- {
36
- "phase": "completion_search",
37
- "elapsed_ms": 1000
38
- },
39
- {
40
- "phase": "completion_synthesize",
41
- "elapsed_ms": 148000
42
- }
43
- ]
44
- },
45
- "completed_usage_lower_bound": {
46
- "model_calls": 5,
47
- "web_searches": 5,
48
- "input_tokens": 1000000000,
49
- "output_tokens": 1000000000
50
- }
51
- },
52
- "notice_text": {
53
- "bounded_sources": "This run inspected bounded saved source windows. It does not establish whole-question completeness.",
54
- "evidence_omitted": "Some discovery, acquisition or source windows were omitted or unavailable. Read the saved gaps and evidence limits before using this answer.",
55
- "repair_input_bound": "The completion pass could not use additional material within the input allowance. Earlier validated findings were retained.",
56
- "unassessed": "Requested-detail coverage could not be assessed. No completion pass was inferred from that missing assessment."
57
- }
58
- }
@@ -1,33 +0,0 @@
1
- {
2
- "provenance": "Constructed finite interface controls, not a hosted run.",
3
- "admitted": {
4
- "version": 2,
5
- "policy": "completion_v2",
6
- "policy_sha256": "e8793d22da1e547e689b17053f3cc7c8094f25ec77add02c79ce11243825dc21",
7
- "limits": {
8
- "model_calls": 7,
9
- "web_searches": 5,
10
- "pages": 9,
11
- "page_requests": 12,
12
- "page_bytes": 6291456,
13
- "work_seconds": 480,
14
- "crawl_seconds": 60
15
- },
16
- "reason": "admitted",
17
- "validated_passes": 0,
18
- "whole_request_completeness": "not_certified",
19
- "notices": []
20
- },
21
- "presentation": {
22
- "version": 1,
23
- "status": "partial",
24
- "canonical_sha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
25
- "calls_reserved": 2,
26
- "calls_completed": 1,
27
- "calls_uncertain": 1,
28
- "known_input_tokens": 1234,
29
- "known_output_tokens": 99,
30
- "usage_is_lower_bound": true,
31
- "elapsed_ms": 120001
32
- }
33
- }