@qulib/core 0.2.1 → 0.3.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 (87) hide show
  1. package/README.md +45 -3
  2. package/dist/analyze.d.ts +16 -4
  3. package/dist/analyze.d.ts.map +1 -1
  4. package/dist/analyze.js +98 -38
  5. package/dist/cli/cost-doctor.d.ts +2 -0
  6. package/dist/cli/cost-doctor.d.ts.map +1 -0
  7. package/dist/cli/cost-doctor.js +72 -0
  8. package/dist/cli/index.js +61 -0
  9. package/dist/harness/progress-log.d.ts +7 -0
  10. package/dist/harness/progress-log.d.ts.map +1 -0
  11. package/dist/harness/progress-log.js +1 -0
  12. package/dist/harness/run-options.d.ts +2 -0
  13. package/dist/harness/run-options.d.ts.map +1 -1
  14. package/dist/index.d.ts +6 -2
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -0
  17. package/dist/llm/content-hash.d.ts +2 -0
  18. package/dist/llm/content-hash.d.ts.map +1 -0
  19. package/dist/llm/content-hash.js +4 -0
  20. package/dist/llm/context-builder.js +1 -1
  21. package/dist/llm/cost-intelligence.d.ts +29 -0
  22. package/dist/llm/cost-intelligence.d.ts.map +1 -0
  23. package/dist/llm/cost-intelligence.js +153 -0
  24. package/dist/llm/provider.d.ts +11 -1
  25. package/dist/llm/provider.d.ts.map +1 -1
  26. package/dist/llm/provider.js +43 -4
  27. package/dist/phases/act.d.ts.map +1 -1
  28. package/dist/phases/act.js +4 -1
  29. package/dist/phases/observe.js +1 -1
  30. package/dist/phases/think-finalize.d.ts +6 -0
  31. package/dist/phases/think-finalize.d.ts.map +1 -0
  32. package/dist/phases/think-finalize.js +164 -0
  33. package/dist/phases/think.d.ts +2 -0
  34. package/dist/phases/think.d.ts.map +1 -1
  35. package/dist/phases/think.js +16 -65
  36. package/dist/reporters/markdown-reporter.d.ts.map +1 -1
  37. package/dist/reporters/markdown-reporter.js +23 -3
  38. package/dist/schemas/config.schema.d.ts +364 -0
  39. package/dist/schemas/config.schema.d.ts.map +1 -1
  40. package/dist/schemas/config.schema.js +55 -1
  41. package/dist/schemas/cost-intelligence.schema.d.ts +229 -0
  42. package/dist/schemas/cost-intelligence.schema.d.ts.map +1 -0
  43. package/dist/schemas/cost-intelligence.schema.js +41 -0
  44. package/dist/schemas/decision-log.schema.d.ts +2 -2
  45. package/dist/schemas/gap-analysis.schema.d.ts +288 -49
  46. package/dist/schemas/gap-analysis.schema.d.ts.map +1 -1
  47. package/dist/schemas/gap-analysis.schema.js +7 -3
  48. package/dist/schemas/index.d.ts +3 -1
  49. package/dist/schemas/index.d.ts.map +1 -1
  50. package/dist/schemas/index.js +3 -1
  51. package/dist/schemas/public-surface.schema.d.ts +268 -0
  52. package/dist/schemas/public-surface.schema.d.ts.map +1 -0
  53. package/dist/schemas/public-surface.schema.js +15 -0
  54. package/dist/schemas/repo-analysis.schema.d.ts +6 -6
  55. package/dist/tools/auth-block-gap.d.ts +3 -0
  56. package/dist/tools/auth-block-gap.d.ts.map +1 -0
  57. package/dist/tools/auth-block-gap.js +19 -0
  58. package/dist/tools/auth-detector.d.ts +2 -1
  59. package/dist/tools/auth-detector.d.ts.map +1 -1
  60. package/dist/tools/auth-detector.js +28 -3
  61. package/dist/tools/auth-explorer.d.ts +4 -0
  62. package/dist/tools/auth-explorer.d.ts.map +1 -0
  63. package/dist/tools/auth-explorer.js +346 -0
  64. package/dist/tools/auth-surface-analyzer.d.ts +4 -0
  65. package/dist/tools/auth-surface-analyzer.d.ts.map +1 -0
  66. package/dist/tools/auth-surface-analyzer.js +154 -0
  67. package/dist/tools/cypress-explorer.d.ts +2 -1
  68. package/dist/tools/cypress-explorer.d.ts.map +1 -1
  69. package/dist/tools/cypress-explorer.js +1 -1
  70. package/dist/tools/explorer.interface.d.ts +2 -1
  71. package/dist/tools/explorer.interface.d.ts.map +1 -1
  72. package/dist/tools/gap-engine.d.ts +3 -1
  73. package/dist/tools/gap-engine.d.ts.map +1 -1
  74. package/dist/tools/gap-engine.js +39 -12
  75. package/dist/tools/oauth-providers.d.ts +7 -0
  76. package/dist/tools/oauth-providers.d.ts.map +1 -0
  77. package/dist/tools/oauth-providers.js +21 -0
  78. package/dist/tools/playwright-explorer.d.ts +2 -1
  79. package/dist/tools/playwright-explorer.d.ts.map +1 -1
  80. package/dist/tools/playwright-explorer.js +21 -3
  81. package/dist/tools/public-surface.d.ts +5 -0
  82. package/dist/tools/public-surface.d.ts.map +1 -0
  83. package/dist/tools/public-surface.js +13 -0
  84. package/dist/tools/user-providers.d.ts +15 -0
  85. package/dist/tools/user-providers.d.ts.map +1 -0
  86. package/dist/tools/user-providers.js +62 -0
  87. package/package.json +6 -2
@@ -168,7 +168,9 @@ export declare const HarnessConfigSchema: z.ZodObject<{
168
168
  timeoutMs: z.ZodNumber;
169
169
  retryCount: z.ZodNumber;
170
170
  llmTokenBudget: z.ZodNumber;
171
+ llmMaxOutputTokensPerCall: z.ZodOptional<z.ZodNumber>;
171
172
  testGenerationLimit: z.ZodNumber;
173
+ enableLlmScenarios: z.ZodDefault<z.ZodBoolean>;
172
174
  readOnlyMode: z.ZodBoolean;
173
175
  requireHumanReview: z.ZodBoolean;
174
176
  failOnConsoleError: z.ZodBoolean;
@@ -261,12 +263,14 @@ export declare const HarnessConfigSchema: z.ZodObject<{
261
263
  retryCount: number;
262
264
  llmTokenBudget: number;
263
265
  testGenerationLimit: number;
266
+ enableLlmScenarios: boolean;
264
267
  readOnlyMode: boolean;
265
268
  requireHumanReview: boolean;
266
269
  failOnConsoleError: boolean;
267
270
  explorer: "playwright" | "cypress";
268
271
  defaultAdapter: "playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility";
269
272
  adapters: ("playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility")[];
273
+ llmMaxOutputTokensPerCall?: number | undefined;
270
274
  auth?: {
271
275
  type: "form-login";
272
276
  loginUrl: string;
@@ -298,6 +302,8 @@ export declare const HarnessConfigSchema: z.ZodObject<{
298
302
  requireHumanReview: boolean;
299
303
  failOnConsoleError: boolean;
300
304
  minPagesForConfidence?: number | undefined;
305
+ llmMaxOutputTokensPerCall?: number | undefined;
306
+ enableLlmScenarios?: boolean | undefined;
301
307
  explorer?: "playwright" | "cypress" | undefined;
302
308
  defaultAdapter?: "playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility" | undefined;
303
309
  adapters?: ("playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility")[] | undefined;
@@ -323,6 +329,7 @@ export declare const HarnessConfigSchema: z.ZodObject<{
323
329
  } | undefined;
324
330
  }>;
325
331
  export type HarnessConfig = z.infer<typeof HarnessConfigSchema>;
332
+ export declare function resolveMaxOutputTokensPerLlmCall(config: HarnessConfig): number;
326
333
  export declare const DetectedAuthSchema: z.ZodObject<{
327
334
  hasAuth: z.ZodBoolean;
328
335
  type: z.ZodEnum<["none", "form-login", "oauth", "magic-link", "unknown"]>;
@@ -384,5 +391,362 @@ export declare const DetectedAuthSchema: z.ZodObject<{
384
391
  recommendation: string;
385
392
  }>;
386
393
  export type DetectedAuth = z.infer<typeof DetectedAuthSchema>;
394
+ export declare const AuthPathRequirementsSchema: z.ZodDiscriminatedUnion<"method", [z.ZodObject<{
395
+ method: z.ZodLiteral<"storage-state">;
396
+ instruction: z.ZodString;
397
+ }, "strip", z.ZodTypeAny, {
398
+ method: "storage-state";
399
+ instruction: string;
400
+ }, {
401
+ method: "storage-state";
402
+ instruction: string;
403
+ }>, z.ZodObject<{
404
+ method: z.ZodLiteral<"credentials">;
405
+ fields: z.ZodArray<z.ZodObject<{
406
+ name: z.ZodString;
407
+ label: z.ZodString;
408
+ type: z.ZodEnum<["text", "password", "email", "select", "checkbox"]>;
409
+ observedOptions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
410
+ }, "strip", z.ZodTypeAny, {
411
+ type: "password" | "text" | "email" | "select" | "checkbox";
412
+ name: string;
413
+ label: string;
414
+ observedOptions: string[];
415
+ }, {
416
+ type: "password" | "text" | "email" | "select" | "checkbox";
417
+ name: string;
418
+ label: string;
419
+ observedOptions?: string[] | undefined;
420
+ }>, "many">;
421
+ }, "strip", z.ZodTypeAny, {
422
+ method: "credentials";
423
+ fields: {
424
+ type: "password" | "text" | "email" | "select" | "checkbox";
425
+ name: string;
426
+ label: string;
427
+ observedOptions: string[];
428
+ }[];
429
+ }, {
430
+ method: "credentials";
431
+ fields: {
432
+ type: "password" | "text" | "email" | "select" | "checkbox";
433
+ name: string;
434
+ label: string;
435
+ observedOptions?: string[] | undefined;
436
+ }[];
437
+ }>, z.ZodObject<{
438
+ method: z.ZodLiteral<"unknown">;
439
+ instruction: z.ZodString;
440
+ }, "strip", z.ZodTypeAny, {
441
+ method: "unknown";
442
+ instruction: string;
443
+ }, {
444
+ method: "unknown";
445
+ instruction: string;
446
+ }>]>;
447
+ export declare const AuthPathSchema: z.ZodObject<{
448
+ id: z.ZodString;
449
+ label: z.ZodString;
450
+ type: z.ZodEnum<["oauth", "oauth-unknown", "form-login", "form-multi", "magic-link", "unknown"]>;
451
+ provider: z.ZodNullable<z.ZodString>;
452
+ source: z.ZodEnum<["built-in", "user-local", "heuristic"]>;
453
+ automatable: z.ZodBoolean;
454
+ confidence: z.ZodEnum<["high", "medium", "low"]>;
455
+ requirements: z.ZodDiscriminatedUnion<"method", [z.ZodObject<{
456
+ method: z.ZodLiteral<"storage-state">;
457
+ instruction: z.ZodString;
458
+ }, "strip", z.ZodTypeAny, {
459
+ method: "storage-state";
460
+ instruction: string;
461
+ }, {
462
+ method: "storage-state";
463
+ instruction: string;
464
+ }>, z.ZodObject<{
465
+ method: z.ZodLiteral<"credentials">;
466
+ fields: z.ZodArray<z.ZodObject<{
467
+ name: z.ZodString;
468
+ label: z.ZodString;
469
+ type: z.ZodEnum<["text", "password", "email", "select", "checkbox"]>;
470
+ observedOptions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
471
+ }, "strip", z.ZodTypeAny, {
472
+ type: "password" | "text" | "email" | "select" | "checkbox";
473
+ name: string;
474
+ label: string;
475
+ observedOptions: string[];
476
+ }, {
477
+ type: "password" | "text" | "email" | "select" | "checkbox";
478
+ name: string;
479
+ label: string;
480
+ observedOptions?: string[] | undefined;
481
+ }>, "many">;
482
+ }, "strip", z.ZodTypeAny, {
483
+ method: "credentials";
484
+ fields: {
485
+ type: "password" | "text" | "email" | "select" | "checkbox";
486
+ name: string;
487
+ label: string;
488
+ observedOptions: string[];
489
+ }[];
490
+ }, {
491
+ method: "credentials";
492
+ fields: {
493
+ type: "password" | "text" | "email" | "select" | "checkbox";
494
+ name: string;
495
+ label: string;
496
+ observedOptions?: string[] | undefined;
497
+ }[];
498
+ }>, z.ZodObject<{
499
+ method: z.ZodLiteral<"unknown">;
500
+ instruction: z.ZodString;
501
+ }, "strip", z.ZodTypeAny, {
502
+ method: "unknown";
503
+ instruction: string;
504
+ }, {
505
+ method: "unknown";
506
+ instruction: string;
507
+ }>]>;
508
+ }, "strip", z.ZodTypeAny, {
509
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
510
+ provider: string | null;
511
+ label: string;
512
+ id: string;
513
+ source: "built-in" | "user-local" | "heuristic";
514
+ automatable: boolean;
515
+ confidence: "high" | "medium" | "low";
516
+ requirements: {
517
+ method: "storage-state";
518
+ instruction: string;
519
+ } | {
520
+ method: "credentials";
521
+ fields: {
522
+ type: "password" | "text" | "email" | "select" | "checkbox";
523
+ name: string;
524
+ label: string;
525
+ observedOptions: string[];
526
+ }[];
527
+ } | {
528
+ method: "unknown";
529
+ instruction: string;
530
+ };
531
+ }, {
532
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
533
+ provider: string | null;
534
+ label: string;
535
+ id: string;
536
+ source: "built-in" | "user-local" | "heuristic";
537
+ automatable: boolean;
538
+ confidence: "high" | "medium" | "low";
539
+ requirements: {
540
+ method: "storage-state";
541
+ instruction: string;
542
+ } | {
543
+ method: "credentials";
544
+ fields: {
545
+ type: "password" | "text" | "email" | "select" | "checkbox";
546
+ name: string;
547
+ label: string;
548
+ observedOptions?: string[] | undefined;
549
+ }[];
550
+ } | {
551
+ method: "unknown";
552
+ instruction: string;
553
+ };
554
+ }>;
555
+ export declare const AuthExplorationSchema: z.ZodObject<{
556
+ url: z.ZodString;
557
+ authRequired: z.ZodBoolean;
558
+ authScope: z.ZodEnum<["site-wide", "section-only", "optional", "none"]>;
559
+ authPaths: z.ZodArray<z.ZodObject<{
560
+ id: z.ZodString;
561
+ label: z.ZodString;
562
+ type: z.ZodEnum<["oauth", "oauth-unknown", "form-login", "form-multi", "magic-link", "unknown"]>;
563
+ provider: z.ZodNullable<z.ZodString>;
564
+ source: z.ZodEnum<["built-in", "user-local", "heuristic"]>;
565
+ automatable: z.ZodBoolean;
566
+ confidence: z.ZodEnum<["high", "medium", "low"]>;
567
+ requirements: z.ZodDiscriminatedUnion<"method", [z.ZodObject<{
568
+ method: z.ZodLiteral<"storage-state">;
569
+ instruction: z.ZodString;
570
+ }, "strip", z.ZodTypeAny, {
571
+ method: "storage-state";
572
+ instruction: string;
573
+ }, {
574
+ method: "storage-state";
575
+ instruction: string;
576
+ }>, z.ZodObject<{
577
+ method: z.ZodLiteral<"credentials">;
578
+ fields: z.ZodArray<z.ZodObject<{
579
+ name: z.ZodString;
580
+ label: z.ZodString;
581
+ type: z.ZodEnum<["text", "password", "email", "select", "checkbox"]>;
582
+ observedOptions: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
583
+ }, "strip", z.ZodTypeAny, {
584
+ type: "password" | "text" | "email" | "select" | "checkbox";
585
+ name: string;
586
+ label: string;
587
+ observedOptions: string[];
588
+ }, {
589
+ type: "password" | "text" | "email" | "select" | "checkbox";
590
+ name: string;
591
+ label: string;
592
+ observedOptions?: string[] | undefined;
593
+ }>, "many">;
594
+ }, "strip", z.ZodTypeAny, {
595
+ method: "credentials";
596
+ fields: {
597
+ type: "password" | "text" | "email" | "select" | "checkbox";
598
+ name: string;
599
+ label: string;
600
+ observedOptions: string[];
601
+ }[];
602
+ }, {
603
+ method: "credentials";
604
+ fields: {
605
+ type: "password" | "text" | "email" | "select" | "checkbox";
606
+ name: string;
607
+ label: string;
608
+ observedOptions?: string[] | undefined;
609
+ }[];
610
+ }>, z.ZodObject<{
611
+ method: z.ZodLiteral<"unknown">;
612
+ instruction: z.ZodString;
613
+ }, "strip", z.ZodTypeAny, {
614
+ method: "unknown";
615
+ instruction: string;
616
+ }, {
617
+ method: "unknown";
618
+ instruction: string;
619
+ }>]>;
620
+ }, "strip", z.ZodTypeAny, {
621
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
622
+ provider: string | null;
623
+ label: string;
624
+ id: string;
625
+ source: "built-in" | "user-local" | "heuristic";
626
+ automatable: boolean;
627
+ confidence: "high" | "medium" | "low";
628
+ requirements: {
629
+ method: "storage-state";
630
+ instruction: string;
631
+ } | {
632
+ method: "credentials";
633
+ fields: {
634
+ type: "password" | "text" | "email" | "select" | "checkbox";
635
+ name: string;
636
+ label: string;
637
+ observedOptions: string[];
638
+ }[];
639
+ } | {
640
+ method: "unknown";
641
+ instruction: string;
642
+ };
643
+ }, {
644
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
645
+ provider: string | null;
646
+ label: string;
647
+ id: string;
648
+ source: "built-in" | "user-local" | "heuristic";
649
+ automatable: boolean;
650
+ confidence: "high" | "medium" | "low";
651
+ requirements: {
652
+ method: "storage-state";
653
+ instruction: string;
654
+ } | {
655
+ method: "credentials";
656
+ fields: {
657
+ type: "password" | "text" | "email" | "select" | "checkbox";
658
+ name: string;
659
+ label: string;
660
+ observedOptions?: string[] | undefined;
661
+ }[];
662
+ } | {
663
+ method: "unknown";
664
+ instruction: string;
665
+ };
666
+ }>, "many">;
667
+ observedAt: z.ZodString;
668
+ suggestedAgentBehavior: z.ZodString;
669
+ unrecognizedButtons: z.ZodDefault<z.ZodArray<z.ZodObject<{
670
+ label: z.ZodString;
671
+ hint: z.ZodString;
672
+ }, "strip", z.ZodTypeAny, {
673
+ label: string;
674
+ hint: string;
675
+ }, {
676
+ label: string;
677
+ hint: string;
678
+ }>, "many">>;
679
+ }, "strip", z.ZodTypeAny, {
680
+ url: string;
681
+ authRequired: boolean;
682
+ authScope: "none" | "site-wide" | "section-only" | "optional";
683
+ authPaths: {
684
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
685
+ provider: string | null;
686
+ label: string;
687
+ id: string;
688
+ source: "built-in" | "user-local" | "heuristic";
689
+ automatable: boolean;
690
+ confidence: "high" | "medium" | "low";
691
+ requirements: {
692
+ method: "storage-state";
693
+ instruction: string;
694
+ } | {
695
+ method: "credentials";
696
+ fields: {
697
+ type: "password" | "text" | "email" | "select" | "checkbox";
698
+ name: string;
699
+ label: string;
700
+ observedOptions: string[];
701
+ }[];
702
+ } | {
703
+ method: "unknown";
704
+ instruction: string;
705
+ };
706
+ }[];
707
+ observedAt: string;
708
+ suggestedAgentBehavior: string;
709
+ unrecognizedButtons: {
710
+ label: string;
711
+ hint: string;
712
+ }[];
713
+ }, {
714
+ url: string;
715
+ authRequired: boolean;
716
+ authScope: "none" | "site-wide" | "section-only" | "optional";
717
+ authPaths: {
718
+ type: "unknown" | "form-login" | "oauth" | "magic-link" | "oauth-unknown" | "form-multi";
719
+ provider: string | null;
720
+ label: string;
721
+ id: string;
722
+ source: "built-in" | "user-local" | "heuristic";
723
+ automatable: boolean;
724
+ confidence: "high" | "medium" | "low";
725
+ requirements: {
726
+ method: "storage-state";
727
+ instruction: string;
728
+ } | {
729
+ method: "credentials";
730
+ fields: {
731
+ type: "password" | "text" | "email" | "select" | "checkbox";
732
+ name: string;
733
+ label: string;
734
+ observedOptions?: string[] | undefined;
735
+ }[];
736
+ } | {
737
+ method: "unknown";
738
+ instruction: string;
739
+ };
740
+ }[];
741
+ observedAt: string;
742
+ suggestedAgentBehavior: string;
743
+ unrecognizedButtons?: {
744
+ label: string;
745
+ hint: string;
746
+ }[] | undefined;
747
+ }>;
748
+ export type AuthPathRequirements = z.infer<typeof AuthPathRequirementsSchema>;
749
+ export type AuthPath = z.infer<typeof AuthPathSchema>;
750
+ export type AuthExploration = z.infer<typeof AuthExplorationSchema>;
387
751
  export {};
388
752
  //# sourceMappingURL=config.schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,mBAAmB,GAAG,KAAK,GAAG,eAAe,CAAC;AAEvG,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBvB,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8E,CAAC;AAE5G,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAe9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/config.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG,YAAY,GAAG,aAAa,GAAG,mBAAmB,GAAG,KAAK,GAAG,eAAe,CAAC;AAEvG,QAAA,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBvB,CAAC;AAEH,QAAA,MAAM,sBAAsB;;;;;;;;;EAG1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAA8E,CAAC;AAE5G,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACtE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAE9E;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAcrC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAehC,CAAC;AAEH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC"}
@@ -27,8 +27,22 @@ export const HarnessConfigSchema = z.object({
27
27
  minPagesForConfidence: z.number().int().min(1).default(3),
28
28
  timeoutMs: z.number().int().positive(),
29
29
  retryCount: z.number().int().min(0),
30
- llmTokenBudget: z.number().int().positive(),
30
+ llmTokenBudget: z
31
+ .number()
32
+ .int()
33
+ .positive()
34
+ .describe('Legacy name: max output tokens for a single LLM completion request. Prefer llmMaxOutputTokensPerCall when set.'),
35
+ llmMaxOutputTokensPerCall: z
36
+ .number()
37
+ .int()
38
+ .positive()
39
+ .optional()
40
+ .describe('When set, overrides llmTokenBudget (same semantics: per-completion output cap, not a multi-call total).'),
31
41
  testGenerationLimit: z.number().int().positive(),
42
+ enableLlmScenarios: z
43
+ .boolean()
44
+ .default(true)
45
+ .describe('When false, scenario generation uses templates only (no LLM calls).'),
32
46
  readOnlyMode: z.boolean(),
33
47
  requireHumanReview: z.boolean(),
34
48
  failOnConsoleError: z.boolean(),
@@ -37,6 +51,9 @@ export const HarnessConfigSchema = z.object({
37
51
  adapters: z.array(z.enum(['playwright', 'cypress-e2e', 'cypress-component', 'api', 'accessibility'])).default(['playwright']),
38
52
  auth: AuthConfigSchema.optional(),
39
53
  });
54
+ export function resolveMaxOutputTokensPerLlmCall(config) {
55
+ return config.llmMaxOutputTokensPerCall ?? config.llmTokenBudget;
56
+ }
40
57
  export const DetectedAuthSchema = z.object({
41
58
  hasAuth: z.boolean(),
42
59
  type: z.enum(['none', 'form-login', 'oauth', 'magic-link', 'unknown']),
@@ -55,3 +72,40 @@ export const DetectedAuthSchema = z.object({
55
72
  })),
56
73
  recommendation: z.string(),
57
74
  });
75
+ export const AuthPathRequirementsSchema = z.discriminatedUnion('method', [
76
+ z.object({ method: z.literal('storage-state'), instruction: z.string() }),
77
+ z.object({
78
+ method: z.literal('credentials'),
79
+ fields: z.array(z.object({
80
+ name: z.string(),
81
+ label: z.string(),
82
+ type: z.enum(['text', 'password', 'email', 'select', 'checkbox']),
83
+ observedOptions: z.array(z.string()).default([]),
84
+ })),
85
+ }),
86
+ z.object({ method: z.literal('unknown'), instruction: z.string() }),
87
+ ]);
88
+ export const AuthPathSchema = z.object({
89
+ id: z.string(),
90
+ label: z.string(),
91
+ type: z.enum(['oauth', 'oauth-unknown', 'form-login', 'form-multi', 'magic-link', 'unknown']),
92
+ provider: z.string().nullable(),
93
+ source: z.enum(['built-in', 'user-local', 'heuristic']),
94
+ automatable: z.boolean(),
95
+ confidence: z.enum(['high', 'medium', 'low']),
96
+ requirements: AuthPathRequirementsSchema,
97
+ });
98
+ export const AuthExplorationSchema = z.object({
99
+ url: z.string(),
100
+ authRequired: z.boolean(),
101
+ authScope: z.enum(['site-wide', 'section-only', 'optional', 'none']),
102
+ authPaths: z.array(AuthPathSchema),
103
+ observedAt: z.string(),
104
+ suggestedAgentBehavior: z.string(),
105
+ unrecognizedButtons: z
106
+ .array(z.object({
107
+ label: z.string(),
108
+ hint: z.string(),
109
+ }))
110
+ .default([]),
111
+ });