@haystackeditor/cli 0.25.1 → 0.26.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 (97) hide show
  1. package/README.md +39 -455
  2. package/dist/capture/app-config.js +25 -1
  3. package/dist/commands/capture-brief.js +41 -32
  4. package/dist/commands/feedback.js +66 -0
  5. package/dist/commands/init-telemetry.js +53 -7
  6. package/dist/commands/init.js +7 -2
  7. package/dist/commands/lockfile-pin.js +307 -0
  8. package/dist/commands/verify.js +68 -13
  9. package/dist/index.js +27 -923
  10. package/dist/schema.js +4 -10
  11. package/dist/utils/haystack-api.js +0 -36
  12. package/package.json +1 -5
  13. package/schemas/feedback.v1.json +13 -0
  14. package/schemas/pre-verify.v2.json +240 -0
  15. package/schemas/verify-raw.v1.json +1132 -0
  16. package/schemas/verify.v2.json +655 -0
  17. package/dist/assets/hooks/agent-context/detect.ts +0 -316
  18. package/dist/assets/hooks/agent-context/format.ts +0 -100
  19. package/dist/assets/hooks/agent-context/index.ts +0 -41
  20. package/dist/assets/hooks/agent-context/parsers/claude.ts +0 -262
  21. package/dist/assets/hooks/agent-context/parsers/codex.ts +0 -416
  22. package/dist/assets/hooks/agent-context/parsers/gemini.ts +0 -155
  23. package/dist/assets/hooks/agent-context/parsers/opencode.ts +0 -174
  24. package/dist/assets/hooks/agent-context/tsconfig.json +0 -14
  25. package/dist/assets/hooks/agent-context/types.ts +0 -58
  26. package/dist/assets/hooks/llm-rules-template.md +0 -59
  27. package/dist/assets/hooks/package-lock.json +0 -598
  28. package/dist/assets/hooks/package.json +0 -12
  29. package/dist/assets/hooks/scripts/commit-msg.sh +0 -5
  30. package/dist/assets/hooks/scripts/post-commit.sh +0 -5
  31. package/dist/assets/hooks/scripts/pre-commit.sh +0 -175
  32. package/dist/assets/hooks/scripts/pre-push.sh +0 -25
  33. package/dist/assets/hooks/scripts/prepare-commit-msg.sh +0 -5
  34. package/dist/assets/hooks/truncation-checker/ast-analyzer.ts +0 -528
  35. package/dist/assets/hooks/truncation-checker/index.ts +0 -595
  36. package/dist/assets/hooks/truncation-checker/tsconfig.json +0 -13
  37. package/dist/assets/skills/map-cloud-verifier-universe/SKILL.md +0 -2051
  38. package/dist/assets/skills/map-cloud-verifier-universe/agents/openai.yaml +0 -4
  39. package/dist/assets/skills/map-cloud-verifier-universe/references/output-contract.md +0 -3411
  40. package/dist/assets/skills/map-your-system.md +0 -143
  41. package/dist/assets/skills/submit.md +0 -200
  42. package/dist/commands/ask.js +0 -20
  43. package/dist/commands/cloud-verifier-behaviors.js +0 -218
  44. package/dist/commands/cloud-verifier-data-store-census.js +0 -539
  45. package/dist/commands/cloud-verifier-data-store-drift.js +0 -158
  46. package/dist/commands/cloud-verifier-identity-census.js +0 -4060
  47. package/dist/commands/cloud-verifier-materialization.js +0 -704
  48. package/dist/commands/cloud-verifier-pascal-selector-census.js +0 -1382
  49. package/dist/commands/cloud-verifier-python-manifest-selector-census.js +0 -2015
  50. package/dist/commands/cloud-verifier-specialized-operational-census.js +0 -11432
  51. package/dist/commands/cloud-verifier-universe.js +0 -10178
  52. package/dist/commands/config.js +0 -549
  53. package/dist/commands/design-verify.js +0 -311
  54. package/dist/commands/dismiss.js +0 -159
  55. package/dist/commands/hooks.js +0 -226
  56. package/dist/commands/inbox.js +0 -137
  57. package/dist/commands/mcp.js +0 -201
  58. package/dist/commands/policy.js +0 -371
  59. package/dist/commands/pr-status.js +0 -207
  60. package/dist/commands/pr.js +0 -105
  61. package/dist/commands/prepare-universe-review.js +0 -1092
  62. package/dist/commands/production-source-deny-policy.js +0 -100
  63. package/dist/commands/request-review.js +0 -74
  64. package/dist/commands/review.js +0 -191
  65. package/dist/commands/rules.js +0 -98
  66. package/dist/commands/scaffold-provisional-universe.js +0 -806
  67. package/dist/commands/setup.js +0 -1170
  68. package/dist/commands/skills.js +0 -447
  69. package/dist/commands/submit.js +0 -745
  70. package/dist/commands/system-map.js +0 -228
  71. package/dist/commands/triage.js +0 -598
  72. package/dist/commands/webhooks.js +0 -241
  73. package/dist/states.js +0 -46
  74. package/dist/tools/detect.js +0 -832
  75. package/dist/triage/astra.js +0 -202
  76. package/dist/triage/prompts.js +0 -188
  77. package/dist/triage/runner.js +0 -200
  78. package/dist/triage/types.js +0 -7
  79. package/dist/utils/action-output.js +0 -26
  80. package/dist/utils/analysis-api.js +0 -416
  81. package/dist/utils/design-verifier-api.js +0 -294
  82. package/dist/utils/design-verifier-history.js +0 -79
  83. package/dist/utils/design-verifier-result.js +0 -424
  84. package/dist/utils/github-api.js +0 -324
  85. package/dist/utils/pending-state.js +0 -86
  86. package/dist/utils/pr-ref.js +0 -56
  87. package/dist/utils/prompter.js +0 -328
  88. package/schemas/action.v1.json +0 -22
  89. package/schemas/ask.v1.json +0 -40
  90. package/schemas/inbox.v1.json +0 -27
  91. package/schemas/pr-status.v1.json +0 -61
  92. package/schemas/pr.v1.json +0 -97
  93. package/schemas/pr.v3.json +0 -45
  94. package/schemas/setup.v1.json +0 -75
  95. package/schemas/submit.v1.json +0 -90
  96. package/schemas/triage.v1.json +0 -103
  97. package/schemas/triage.v2.json +0 -64
@@ -0,0 +1,655 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://docs.haystackeditor.com/cli/schemas/verify.v2.json",
4
+ "title": "Haystack verify: the report on the current change",
5
+ "description": "Machine-readable output of `haystack verify --json`: what the text report says, as data. `crawl` is null when there was nothing to verify or no crawl could be started; `onboarding` is set when onboarding stood in the way. The service's whole crawl record is `haystack verify --raw` (`haystack schema verify-raw`).",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "schema_version",
10
+ "crawl"
11
+ ],
12
+ "properties": {
13
+ "schema_version": {
14
+ "const": "2.0.0"
15
+ },
16
+ "change": {
17
+ "description": "Schema 1.0.2: what this verify checked: the capture's base commit (where HEAD meets origin's default branch), its work commit (committed and uncommitted changes), and the files that differ between them.",
18
+ "type": "object",
19
+ "additionalProperties": false,
20
+ "required": [
21
+ "baseCommit",
22
+ "workCommit",
23
+ "files"
24
+ ],
25
+ "properties": {
26
+ "baseCommit": {
27
+ "$ref": "#/$defs/commit"
28
+ },
29
+ "workCommit": {
30
+ "$ref": "#/$defs/commit"
31
+ },
32
+ "files": {
33
+ "type": "array",
34
+ "items": {
35
+ "type": "string"
36
+ }
37
+ }
38
+ }
39
+ },
40
+ "onboarding": {
41
+ "oneOf": [
42
+ {
43
+ "type": "null"
44
+ },
45
+ {
46
+ "$ref": "#/$defs/onboardingStatus"
47
+ }
48
+ ]
49
+ },
50
+ "crawl": {
51
+ "oneOf": [
52
+ {
53
+ "type": "null"
54
+ },
55
+ {
56
+ "type": "object",
57
+ "additionalProperties": false,
58
+ "required": [
59
+ "runId",
60
+ "repository",
61
+ "title",
62
+ "baseCommit",
63
+ "workCommit",
64
+ "status",
65
+ "headline",
66
+ "bugs",
67
+ "findings",
68
+ "spots",
69
+ "ideas",
70
+ "neverRan",
71
+ "notFinishedInTime",
72
+ "outsideServiceGaps",
73
+ "error",
74
+ "machinesNotProvenShutDown"
75
+ ],
76
+ "properties": {
77
+ "runId": {
78
+ "$ref": "#/$defs/runId"
79
+ },
80
+ "repository": {
81
+ "type": "string"
82
+ },
83
+ "title": {
84
+ "type": "string",
85
+ "description": "The change title the crawl's judge read."
86
+ },
87
+ "baseCommit": {
88
+ "$ref": "#/$defs/commit"
89
+ },
90
+ "workCommit": {
91
+ "$ref": "#/$defs/commit"
92
+ },
93
+ "status": {
94
+ "$ref": "#/$defs/status",
95
+ "description": "As reported: a running crawl that has answered reads as completed."
96
+ },
97
+ "headline": {
98
+ "type": "string",
99
+ "description": "One sentence: how many bugs it found, none, or why it could not finish."
100
+ },
101
+ "bugs": {
102
+ "$ref": "#/$defs/count"
103
+ },
104
+ "findings": {
105
+ "description": "Bugs first, then the undecided, then what the judge called intended.",
106
+ "type": "array",
107
+ "items": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": [
111
+ "id",
112
+ "verdict",
113
+ "why",
114
+ "start",
115
+ "steps",
116
+ "outsideServices"
117
+ ],
118
+ "properties": {
119
+ "id": {
120
+ "type": "string"
121
+ },
122
+ "verdict": {
123
+ "enum": [
124
+ "bug",
125
+ "cant-tell",
126
+ "being-judged",
127
+ "not-a-bug"
128
+ ]
129
+ },
130
+ "why": {
131
+ "type": [
132
+ "string",
133
+ "null"
134
+ ]
135
+ },
136
+ "start": {
137
+ "type": "string",
138
+ "description": "Where the steps start."
139
+ },
140
+ "steps": {
141
+ "type": "array",
142
+ "items": {
143
+ "type": "string"
144
+ },
145
+ "description": "The steps to see it."
146
+ },
147
+ "outsideServices": {
148
+ "description": "Outside-service calls on its path, answered by Haystack stand-ins; null when none.",
149
+ "oneOf": [
150
+ {
151
+ "type": "null"
152
+ },
153
+ {
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "required": [
157
+ "withoutChange",
158
+ "withChange"
159
+ ],
160
+ "properties": {
161
+ "withoutChange": {
162
+ "type": "array",
163
+ "items": {
164
+ "type": "string"
165
+ }
166
+ },
167
+ "withChange": {
168
+ "type": "array",
169
+ "items": {
170
+ "type": "string"
171
+ }
172
+ }
173
+ }
174
+ }
175
+ ]
176
+ }
177
+ }
178
+ }
179
+ },
180
+ "spots": {
181
+ "description": "Every changed spot and how far the crawl got with it, in words.",
182
+ "type": "array",
183
+ "items": {
184
+ "type": "object",
185
+ "additionalProperties": false,
186
+ "required": [
187
+ "file",
188
+ "line",
189
+ "reached",
190
+ "reachedBy",
191
+ "findingIds"
192
+ ],
193
+ "properties": {
194
+ "file": {
195
+ "type": "string"
196
+ },
197
+ "line": {
198
+ "type": "integer",
199
+ "minimum": 1
200
+ },
201
+ "reached": {
202
+ "type": "string"
203
+ },
204
+ "reachedBy": {
205
+ "oneOf": [
206
+ {
207
+ "type": "null"
208
+ },
209
+ {
210
+ "type": "object",
211
+ "additionalProperties": false,
212
+ "required": [
213
+ "start",
214
+ "steps",
215
+ "page"
216
+ ],
217
+ "properties": {
218
+ "start": {
219
+ "type": "string"
220
+ },
221
+ "steps": {
222
+ "type": "array",
223
+ "items": {
224
+ "type": "string"
225
+ }
226
+ },
227
+ "page": {
228
+ "type": [
229
+ "string",
230
+ "null"
231
+ ]
232
+ }
233
+ }
234
+ }
235
+ ]
236
+ },
237
+ "findingIds": {
238
+ "type": "array",
239
+ "items": {
240
+ "type": "string"
241
+ }
242
+ }
243
+ }
244
+ }
245
+ },
246
+ "ideas": {
247
+ "description": "What became of each idea the agent gave; null when it gave none.",
248
+ "oneOf": [
249
+ {
250
+ "type": "null"
251
+ },
252
+ {
253
+ "type": "array",
254
+ "items": {
255
+ "type": "object",
256
+ "additionalProperties": false,
257
+ "required": [
258
+ "text",
259
+ "result",
260
+ "reason",
261
+ "findingIds"
262
+ ],
263
+ "properties": {
264
+ "text": {
265
+ "type": "string"
266
+ },
267
+ "result": {
268
+ "enum": [
269
+ "tried",
270
+ "could not try",
271
+ "not finished"
272
+ ]
273
+ },
274
+ "reason": {
275
+ "type": "string"
276
+ },
277
+ "findingIds": {
278
+ "type": "array",
279
+ "items": {
280
+ "type": "string"
281
+ }
282
+ }
283
+ }
284
+ }
285
+ }
286
+ ]
287
+ },
288
+ "neverRan": {
289
+ "description": "Changed code no path ran; null until the crawl has explored.",
290
+ "oneOf": [
291
+ {
292
+ "type": "null"
293
+ },
294
+ {
295
+ "type": "object",
296
+ "additionalProperties": false,
297
+ "required": [
298
+ "files",
299
+ "functions"
300
+ ],
301
+ "properties": {
302
+ "files": {
303
+ "type": "array",
304
+ "items": {
305
+ "type": "string"
306
+ }
307
+ },
308
+ "functions": {
309
+ "oneOf": [
310
+ {
311
+ "type": "null"
312
+ },
313
+ {
314
+ "type": "object",
315
+ "additionalProperties": false,
316
+ "required": [
317
+ "ran",
318
+ "total"
319
+ ],
320
+ "properties": {
321
+ "ran": {
322
+ "$ref": "#/$defs/count"
323
+ },
324
+ "total": {
325
+ "$ref": "#/$defs/count"
326
+ }
327
+ }
328
+ }
329
+ ]
330
+ }
331
+ }
332
+ }
333
+ ]
334
+ },
335
+ "notFinishedInTime": {
336
+ "$ref": "#/$defs/count"
337
+ },
338
+ "outsideServiceGaps": {
339
+ "type": "array",
340
+ "items": {
341
+ "type": "string"
342
+ },
343
+ "description": "Calls the copy's stand-ins could not serve: missing coverage, never bugs."
344
+ },
345
+ "error": {
346
+ "oneOf": [
347
+ {
348
+ "type": "null"
349
+ },
350
+ {
351
+ "type": "object",
352
+ "additionalProperties": false,
353
+ "required": [
354
+ "code",
355
+ "message"
356
+ ],
357
+ "properties": {
358
+ "code": {
359
+ "type": "string"
360
+ },
361
+ "message": {
362
+ "type": "string"
363
+ }
364
+ }
365
+ }
366
+ ]
367
+ },
368
+ "machinesNotProvenShutDown": {
369
+ "$ref": "#/$defs/count"
370
+ }
371
+ }
372
+ }
373
+ ]
374
+ }
375
+ },
376
+ "$defs": {
377
+ "runId": {
378
+ "type": "string",
379
+ "pattern": "^cv_[0-9a-f]{48}$"
380
+ },
381
+ "commit": {
382
+ "type": "string",
383
+ "pattern": "^[0-9a-f]{40}$"
384
+ },
385
+ "count": {
386
+ "type": "integer",
387
+ "minimum": 0
388
+ },
389
+ "status": {
390
+ "enum": [
391
+ "queued",
392
+ "preparing",
393
+ "crawling",
394
+ "draining",
395
+ "completed",
396
+ "prepared",
397
+ "incomplete",
398
+ "cancelled"
399
+ ]
400
+ },
401
+ "onboardingStatus": {
402
+ "type": "object",
403
+ "required": [
404
+ "version",
405
+ "repository",
406
+ "baseCommit",
407
+ "state",
408
+ "onboardRunId",
409
+ "recordDigest",
410
+ "checkpoint",
411
+ "block",
412
+ "dataAbsences",
413
+ "versionChoices"
414
+ ],
415
+ "properties": {
416
+ "version": {
417
+ "const": "app-onboarding-v1"
418
+ },
419
+ "repository": {
420
+ "type": "string"
421
+ },
422
+ "baseCommit": {
423
+ "$ref": "#/$defs/commit"
424
+ },
425
+ "state": {
426
+ "enum": [
427
+ "ready",
428
+ "onboarding",
429
+ "blocked",
430
+ "incomplete",
431
+ "cancelled",
432
+ "not-started"
433
+ ]
434
+ },
435
+ "onboardRunId": {
436
+ "oneOf": [
437
+ {
438
+ "type": "null"
439
+ },
440
+ {
441
+ "type": "string",
442
+ "pattern": "^ob_[0-9a-f]{48}$"
443
+ }
444
+ ]
445
+ },
446
+ "recordDigest": {
447
+ "oneOf": [
448
+ {
449
+ "type": "null"
450
+ },
451
+ {
452
+ "type": "string",
453
+ "pattern": "^[0-9a-f]{64}$"
454
+ }
455
+ ]
456
+ },
457
+ "checkpoint": {
458
+ "oneOf": [
459
+ {
460
+ "type": "null"
461
+ },
462
+ {
463
+ "type": "object",
464
+ "required": [
465
+ "status",
466
+ "stage",
467
+ "execution",
468
+ "owned"
469
+ ],
470
+ "properties": {
471
+ "status": {
472
+ "enum": [
473
+ "queued",
474
+ "running",
475
+ "cleanup-pending",
476
+ "published",
477
+ "reused",
478
+ "blocked",
479
+ "incomplete",
480
+ "cancelled"
481
+ ]
482
+ },
483
+ "stage": {
484
+ "enum": [
485
+ "inventory",
486
+ "plan",
487
+ "runtime",
488
+ "boot",
489
+ "data",
490
+ "accounts",
491
+ "workflow",
492
+ "publish",
493
+ "cleanup"
494
+ ]
495
+ },
496
+ "owned": {
497
+ "$ref": "#/$defs/strings"
498
+ },
499
+ "execution": {
500
+ "type": "object",
501
+ "required": [
502
+ "stages"
503
+ ],
504
+ "properties": {
505
+ "stages": {
506
+ "type": "array",
507
+ "items": {
508
+ "type": "object",
509
+ "required": [
510
+ "stage",
511
+ "status"
512
+ ],
513
+ "properties": {
514
+ "stage": {
515
+ "enum": [
516
+ "inventory",
517
+ "plan",
518
+ "runtime",
519
+ "boot",
520
+ "data",
521
+ "accounts",
522
+ "workflow",
523
+ "publish",
524
+ "cleanup"
525
+ ]
526
+ },
527
+ "status": {
528
+ "enum": [
529
+ "pending",
530
+ "running",
531
+ "ok",
532
+ "reused",
533
+ "failed",
534
+ "blocked"
535
+ ]
536
+ }
537
+ }
538
+ }
539
+ }
540
+ }
541
+ }
542
+ }
543
+ }
544
+ ]
545
+ },
546
+ "block": {
547
+ "oneOf": [
548
+ {
549
+ "type": "null"
550
+ },
551
+ {
552
+ "$ref": "#/$defs/onboardingBlock"
553
+ }
554
+ ]
555
+ },
556
+ "dataAbsences": {
557
+ "$ref": "#/$defs/strings"
558
+ },
559
+ "versionChoices": {
560
+ "$ref": "#/$defs/strings"
561
+ }
562
+ }
563
+ },
564
+ "onboardingBlock": {
565
+ "type": "object",
566
+ "required": [
567
+ "kind",
568
+ "stage",
569
+ "reason",
570
+ "evidence",
571
+ "ask"
572
+ ],
573
+ "properties": {
574
+ "kind": {
575
+ "enum": [
576
+ "not-enabled",
577
+ "no-web-app",
578
+ "unsupported",
579
+ "question",
580
+ "outside-credential",
581
+ "outside-dependency",
582
+ "evidence-too-large",
583
+ "budget",
584
+ "proof-failed"
585
+ ]
586
+ },
587
+ "stage": {
588
+ "enum": [
589
+ "admission",
590
+ "inventory",
591
+ "plan",
592
+ "runtime",
593
+ "boot",
594
+ "data",
595
+ "accounts",
596
+ "workflow",
597
+ "publish",
598
+ "cleanup"
599
+ ]
600
+ },
601
+ "reason": {
602
+ "type": "string"
603
+ },
604
+ "evidence": {
605
+ "$ref": "#/$defs/strings"
606
+ },
607
+ "names": {
608
+ "$ref": "#/$defs/strings"
609
+ },
610
+ "ask": {
611
+ "oneOf": [
612
+ {
613
+ "type": "null"
614
+ },
615
+ {
616
+ "type": "object",
617
+ "required": [
618
+ "message"
619
+ ],
620
+ "properties": {
621
+ "message": {
622
+ "type": "string"
623
+ },
624
+ "command": {
625
+ "type": "string"
626
+ },
627
+ "question": {
628
+ "type": "object",
629
+ "required": [
630
+ "id",
631
+ "choices"
632
+ ],
633
+ "properties": {
634
+ "id": {
635
+ "type": "string"
636
+ },
637
+ "choices": {
638
+ "$ref": "#/$defs/strings"
639
+ }
640
+ }
641
+ }
642
+ }
643
+ }
644
+ ]
645
+ }
646
+ }
647
+ },
648
+ "strings": {
649
+ "type": "array",
650
+ "items": {
651
+ "type": "string"
652
+ }
653
+ }
654
+ }
655
+ }