@qulib/core 0.1.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 (99) hide show
  1. package/README.md +146 -0
  2. package/bin/qulib.js +17 -0
  3. package/dist/adapters/adapter-factory.d.ts +5 -0
  4. package/dist/adapters/adapter-factory.d.ts.map +1 -0
  5. package/dist/adapters/adapter-factory.js +21 -0
  6. package/dist/adapters/adapter.interface.d.ts +7 -0
  7. package/dist/adapters/adapter.interface.d.ts.map +1 -0
  8. package/dist/adapters/adapter.interface.js +1 -0
  9. package/dist/adapters/api-adapter.d.ts +8 -0
  10. package/dist/adapters/api-adapter.d.ts.map +1 -0
  11. package/dist/adapters/api-adapter.js +9 -0
  12. package/dist/adapters/cypress-component-adapter.d.ts +8 -0
  13. package/dist/adapters/cypress-component-adapter.d.ts.map +1 -0
  14. package/dist/adapters/cypress-component-adapter.js +9 -0
  15. package/dist/adapters/cypress-e2e-adapter.d.ts +8 -0
  16. package/dist/adapters/cypress-e2e-adapter.d.ts.map +1 -0
  17. package/dist/adapters/cypress-e2e-adapter.js +9 -0
  18. package/dist/adapters/playwright-adapter.d.ts +8 -0
  19. package/dist/adapters/playwright-adapter.d.ts.map +1 -0
  20. package/dist/adapters/playwright-adapter.js +9 -0
  21. package/dist/analyze.d.ts +20 -0
  22. package/dist/analyze.d.ts.map +1 -0
  23. package/dist/analyze.js +21 -0
  24. package/dist/cli/index.d.ts +3 -0
  25. package/dist/cli/index.d.ts.map +1 -0
  26. package/dist/cli/index.js +102 -0
  27. package/dist/harness/decision-logger.d.ts +7 -0
  28. package/dist/harness/decision-logger.d.ts.map +1 -0
  29. package/dist/harness/decision-logger.js +68 -0
  30. package/dist/harness/run-options.d.ts +6 -0
  31. package/dist/harness/run-options.d.ts.map +1 -0
  32. package/dist/harness/run-options.js +1 -0
  33. package/dist/harness/state-manager.d.ts +6 -0
  34. package/dist/harness/state-manager.d.ts.map +1 -0
  35. package/dist/harness/state-manager.js +64 -0
  36. package/dist/index.d.ts +4 -0
  37. package/dist/index.d.ts.map +1 -0
  38. package/dist/index.js +1 -0
  39. package/dist/llm/context-builder.d.ts +3 -0
  40. package/dist/llm/context-builder.d.ts.map +1 -0
  41. package/dist/llm/context-builder.js +33 -0
  42. package/dist/llm/provider.d.ts +4 -0
  43. package/dist/llm/provider.d.ts.map +1 -0
  44. package/dist/llm/provider.js +56 -0
  45. package/dist/phases/act.d.ts +5 -0
  46. package/dist/phases/act.d.ts.map +1 -0
  47. package/dist/phases/act.js +41 -0
  48. package/dist/phases/observe.d.ts +10 -0
  49. package/dist/phases/observe.d.ts.map +1 -0
  50. package/dist/phases/observe.js +48 -0
  51. package/dist/phases/think.d.ts +6 -0
  52. package/dist/phases/think.d.ts.map +1 -0
  53. package/dist/phases/think.js +85 -0
  54. package/dist/reporters/json-reporter.d.ts +3 -0
  55. package/dist/reporters/json-reporter.d.ts.map +1 -0
  56. package/dist/reporters/json-reporter.js +8 -0
  57. package/dist/reporters/markdown-reporter.d.ts +3 -0
  58. package/dist/reporters/markdown-reporter.d.ts.map +1 -0
  59. package/dist/reporters/markdown-reporter.js +42 -0
  60. package/dist/schemas/config.schema.d.ts +327 -0
  61. package/dist/schemas/config.schema.d.ts.map +1 -0
  62. package/dist/schemas/config.schema.js +39 -0
  63. package/dist/schemas/decision-log.schema.d.ts +22 -0
  64. package/dist/schemas/decision-log.schema.d.ts.map +1 -0
  65. package/dist/schemas/decision-log.schema.js +8 -0
  66. package/dist/schemas/gap-analysis.schema.d.ts +363 -0
  67. package/dist/schemas/gap-analysis.schema.d.ts.map +1 -0
  68. package/dist/schemas/gap-analysis.schema.js +60 -0
  69. package/dist/schemas/index.d.ts +6 -0
  70. package/dist/schemas/index.d.ts.map +1 -0
  71. package/dist/schemas/index.js +5 -0
  72. package/dist/schemas/repo-analysis.schema.d.ts +165 -0
  73. package/dist/schemas/repo-analysis.schema.d.ts.map +1 -0
  74. package/dist/schemas/repo-analysis.schema.js +29 -0
  75. package/dist/schemas/route-inventory.schema.d.ts +241 -0
  76. package/dist/schemas/route-inventory.schema.d.ts.map +1 -0
  77. package/dist/schemas/route-inventory.schema.js +30 -0
  78. package/dist/tools/auth.d.ts +4 -0
  79. package/dist/tools/auth.d.ts.map +1 -0
  80. package/dist/tools/auth.js +35 -0
  81. package/dist/tools/cypress-explorer.d.ts +7 -0
  82. package/dist/tools/cypress-explorer.d.ts.map +1 -0
  83. package/dist/tools/cypress-explorer.js +5 -0
  84. package/dist/tools/explorer-factory.d.ts +4 -0
  85. package/dist/tools/explorer-factory.d.ts.map +1 -0
  86. package/dist/tools/explorer-factory.js +12 -0
  87. package/dist/tools/explorer.interface.d.ts +6 -0
  88. package/dist/tools/explorer.interface.d.ts.map +1 -0
  89. package/dist/tools/explorer.interface.js +1 -0
  90. package/dist/tools/gap-engine.d.ts +6 -0
  91. package/dist/tools/gap-engine.d.ts.map +1 -0
  92. package/dist/tools/gap-engine.js +101 -0
  93. package/dist/tools/playwright-explorer.d.ts +7 -0
  94. package/dist/tools/playwright-explorer.d.ts.map +1 -0
  95. package/dist/tools/playwright-explorer.js +150 -0
  96. package/dist/tools/repo-scanner.d.ts +3 -0
  97. package/dist/tools/repo-scanner.d.ts.map +1 -0
  98. package/dist/tools/repo-scanner.js +147 -0
  99. package/package.json +54 -0
@@ -0,0 +1,327 @@
1
+ import { z } from 'zod';
2
+ export type ExplorerType = 'playwright' | 'cypress';
3
+ export type AdapterType = 'playwright' | 'cypress-e2e' | 'cypress-component' | 'api' | 'accessibility';
4
+ declare const FormLoginAuthSchema: z.ZodObject<{
5
+ type: z.ZodLiteral<"form-login">;
6
+ loginUrl: z.ZodString;
7
+ credentials: z.ZodObject<{
8
+ username: z.ZodString;
9
+ password: z.ZodString;
10
+ }, "strip", z.ZodTypeAny, {
11
+ username: string;
12
+ password: string;
13
+ }, {
14
+ username: string;
15
+ password: string;
16
+ }>;
17
+ selectors: z.ZodObject<{
18
+ username: z.ZodString;
19
+ password: z.ZodString;
20
+ submit: z.ZodString;
21
+ }, "strip", z.ZodTypeAny, {
22
+ username: string;
23
+ password: string;
24
+ submit: string;
25
+ }, {
26
+ username: string;
27
+ password: string;
28
+ submit: string;
29
+ }>;
30
+ successIndicator: z.ZodObject<{
31
+ urlContains: z.ZodOptional<z.ZodString>;
32
+ selectorVisible: z.ZodOptional<z.ZodString>;
33
+ }, "strip", z.ZodTypeAny, {
34
+ urlContains?: string | undefined;
35
+ selectorVisible?: string | undefined;
36
+ }, {
37
+ urlContains?: string | undefined;
38
+ selectorVisible?: string | undefined;
39
+ }>;
40
+ }, "strip", z.ZodTypeAny, {
41
+ type: "form-login";
42
+ loginUrl: string;
43
+ credentials: {
44
+ username: string;
45
+ password: string;
46
+ };
47
+ selectors: {
48
+ username: string;
49
+ password: string;
50
+ submit: string;
51
+ };
52
+ successIndicator: {
53
+ urlContains?: string | undefined;
54
+ selectorVisible?: string | undefined;
55
+ };
56
+ }, {
57
+ type: "form-login";
58
+ loginUrl: string;
59
+ credentials: {
60
+ username: string;
61
+ password: string;
62
+ };
63
+ selectors: {
64
+ username: string;
65
+ password: string;
66
+ submit: string;
67
+ };
68
+ successIndicator: {
69
+ urlContains?: string | undefined;
70
+ selectorVisible?: string | undefined;
71
+ };
72
+ }>;
73
+ declare const StorageStateAuthSchema: z.ZodObject<{
74
+ type: z.ZodLiteral<"storage-state">;
75
+ path: z.ZodString;
76
+ }, "strip", z.ZodTypeAny, {
77
+ type: "storage-state";
78
+ path: string;
79
+ }, {
80
+ type: "storage-state";
81
+ path: string;
82
+ }>;
83
+ export declare const AuthConfigSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
84
+ type: z.ZodLiteral<"form-login">;
85
+ loginUrl: z.ZodString;
86
+ credentials: z.ZodObject<{
87
+ username: z.ZodString;
88
+ password: z.ZodString;
89
+ }, "strip", z.ZodTypeAny, {
90
+ username: string;
91
+ password: string;
92
+ }, {
93
+ username: string;
94
+ password: string;
95
+ }>;
96
+ selectors: z.ZodObject<{
97
+ username: z.ZodString;
98
+ password: z.ZodString;
99
+ submit: z.ZodString;
100
+ }, "strip", z.ZodTypeAny, {
101
+ username: string;
102
+ password: string;
103
+ submit: string;
104
+ }, {
105
+ username: string;
106
+ password: string;
107
+ submit: string;
108
+ }>;
109
+ successIndicator: z.ZodObject<{
110
+ urlContains: z.ZodOptional<z.ZodString>;
111
+ selectorVisible: z.ZodOptional<z.ZodString>;
112
+ }, "strip", z.ZodTypeAny, {
113
+ urlContains?: string | undefined;
114
+ selectorVisible?: string | undefined;
115
+ }, {
116
+ urlContains?: string | undefined;
117
+ selectorVisible?: string | undefined;
118
+ }>;
119
+ }, "strip", z.ZodTypeAny, {
120
+ type: "form-login";
121
+ loginUrl: string;
122
+ credentials: {
123
+ username: string;
124
+ password: string;
125
+ };
126
+ selectors: {
127
+ username: string;
128
+ password: string;
129
+ submit: string;
130
+ };
131
+ successIndicator: {
132
+ urlContains?: string | undefined;
133
+ selectorVisible?: string | undefined;
134
+ };
135
+ }, {
136
+ type: "form-login";
137
+ loginUrl: string;
138
+ credentials: {
139
+ username: string;
140
+ password: string;
141
+ };
142
+ selectors: {
143
+ username: string;
144
+ password: string;
145
+ submit: string;
146
+ };
147
+ successIndicator: {
148
+ urlContains?: string | undefined;
149
+ selectorVisible?: string | undefined;
150
+ };
151
+ }>, z.ZodObject<{
152
+ type: z.ZodLiteral<"storage-state">;
153
+ path: z.ZodString;
154
+ }, "strip", z.ZodTypeAny, {
155
+ type: "storage-state";
156
+ path: string;
157
+ }, {
158
+ type: "storage-state";
159
+ path: string;
160
+ }>]>;
161
+ export type FormLoginAuthConfig = z.infer<typeof FormLoginAuthSchema>;
162
+ export type StorageStateAuthConfig = z.infer<typeof StorageStateAuthSchema>;
163
+ export type AuthConfig = z.infer<typeof AuthConfigSchema>;
164
+ export declare const HarnessConfigSchema: z.ZodObject<{
165
+ maxPagesToScan: z.ZodNumber;
166
+ maxDepth: z.ZodNumber;
167
+ minPagesForConfidence: z.ZodDefault<z.ZodNumber>;
168
+ timeoutMs: z.ZodNumber;
169
+ retryCount: z.ZodNumber;
170
+ llmTokenBudget: z.ZodNumber;
171
+ testGenerationLimit: z.ZodNumber;
172
+ readOnlyMode: z.ZodBoolean;
173
+ requireHumanReview: z.ZodBoolean;
174
+ failOnConsoleError: z.ZodBoolean;
175
+ explorer: z.ZodDefault<z.ZodEnum<["playwright", "cypress"]>>;
176
+ defaultAdapter: z.ZodDefault<z.ZodEnum<["playwright", "cypress-e2e", "cypress-component", "api", "accessibility"]>>;
177
+ adapters: z.ZodDefault<z.ZodArray<z.ZodEnum<["playwright", "cypress-e2e", "cypress-component", "api", "accessibility"]>, "many">>;
178
+ auth: z.ZodOptional<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
179
+ type: z.ZodLiteral<"form-login">;
180
+ loginUrl: z.ZodString;
181
+ credentials: z.ZodObject<{
182
+ username: z.ZodString;
183
+ password: z.ZodString;
184
+ }, "strip", z.ZodTypeAny, {
185
+ username: string;
186
+ password: string;
187
+ }, {
188
+ username: string;
189
+ password: string;
190
+ }>;
191
+ selectors: z.ZodObject<{
192
+ username: z.ZodString;
193
+ password: z.ZodString;
194
+ submit: z.ZodString;
195
+ }, "strip", z.ZodTypeAny, {
196
+ username: string;
197
+ password: string;
198
+ submit: string;
199
+ }, {
200
+ username: string;
201
+ password: string;
202
+ submit: string;
203
+ }>;
204
+ successIndicator: z.ZodObject<{
205
+ urlContains: z.ZodOptional<z.ZodString>;
206
+ selectorVisible: z.ZodOptional<z.ZodString>;
207
+ }, "strip", z.ZodTypeAny, {
208
+ urlContains?: string | undefined;
209
+ selectorVisible?: string | undefined;
210
+ }, {
211
+ urlContains?: string | undefined;
212
+ selectorVisible?: string | undefined;
213
+ }>;
214
+ }, "strip", z.ZodTypeAny, {
215
+ type: "form-login";
216
+ loginUrl: string;
217
+ credentials: {
218
+ username: string;
219
+ password: string;
220
+ };
221
+ selectors: {
222
+ username: string;
223
+ password: string;
224
+ submit: string;
225
+ };
226
+ successIndicator: {
227
+ urlContains?: string | undefined;
228
+ selectorVisible?: string | undefined;
229
+ };
230
+ }, {
231
+ type: "form-login";
232
+ loginUrl: string;
233
+ credentials: {
234
+ username: string;
235
+ password: string;
236
+ };
237
+ selectors: {
238
+ username: string;
239
+ password: string;
240
+ submit: string;
241
+ };
242
+ successIndicator: {
243
+ urlContains?: string | undefined;
244
+ selectorVisible?: string | undefined;
245
+ };
246
+ }>, z.ZodObject<{
247
+ type: z.ZodLiteral<"storage-state">;
248
+ path: z.ZodString;
249
+ }, "strip", z.ZodTypeAny, {
250
+ type: "storage-state";
251
+ path: string;
252
+ }, {
253
+ type: "storage-state";
254
+ path: string;
255
+ }>]>>;
256
+ }, "strip", z.ZodTypeAny, {
257
+ maxPagesToScan: number;
258
+ maxDepth: number;
259
+ minPagesForConfidence: number;
260
+ timeoutMs: number;
261
+ retryCount: number;
262
+ llmTokenBudget: number;
263
+ testGenerationLimit: number;
264
+ readOnlyMode: boolean;
265
+ requireHumanReview: boolean;
266
+ failOnConsoleError: boolean;
267
+ explorer: "playwright" | "cypress";
268
+ defaultAdapter: "playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility";
269
+ adapters: ("playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility")[];
270
+ auth?: {
271
+ type: "form-login";
272
+ loginUrl: string;
273
+ credentials: {
274
+ username: string;
275
+ password: string;
276
+ };
277
+ selectors: {
278
+ username: string;
279
+ password: string;
280
+ submit: string;
281
+ };
282
+ successIndicator: {
283
+ urlContains?: string | undefined;
284
+ selectorVisible?: string | undefined;
285
+ };
286
+ } | {
287
+ type: "storage-state";
288
+ path: string;
289
+ } | undefined;
290
+ }, {
291
+ maxPagesToScan: number;
292
+ maxDepth: number;
293
+ timeoutMs: number;
294
+ retryCount: number;
295
+ llmTokenBudget: number;
296
+ testGenerationLimit: number;
297
+ readOnlyMode: boolean;
298
+ requireHumanReview: boolean;
299
+ failOnConsoleError: boolean;
300
+ minPagesForConfidence?: number | undefined;
301
+ explorer?: "playwright" | "cypress" | undefined;
302
+ defaultAdapter?: "playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility" | undefined;
303
+ adapters?: ("playwright" | "cypress-e2e" | "cypress-component" | "api" | "accessibility")[] | undefined;
304
+ auth?: {
305
+ type: "form-login";
306
+ loginUrl: string;
307
+ credentials: {
308
+ username: string;
309
+ password: string;
310
+ };
311
+ selectors: {
312
+ username: string;
313
+ password: string;
314
+ submit: string;
315
+ };
316
+ successIndicator: {
317
+ urlContains?: string | undefined;
318
+ selectorVisible?: string | undefined;
319
+ };
320
+ } | {
321
+ type: "storage-state";
322
+ path: string;
323
+ } | undefined;
324
+ }>;
325
+ export type HarnessConfig = z.infer<typeof HarnessConfigSchema>;
326
+ export {};
327
+ //# sourceMappingURL=config.schema.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,39 @@
1
+ import { z } from 'zod';
2
+ const FormLoginAuthSchema = z.object({
3
+ type: z.literal('form-login'),
4
+ loginUrl: z.string(),
5
+ credentials: z.object({
6
+ username: z.string(),
7
+ password: z.string(),
8
+ }),
9
+ selectors: z.object({
10
+ username: z.string(),
11
+ password: z.string(),
12
+ submit: z.string(),
13
+ }),
14
+ successIndicator: z.object({
15
+ urlContains: z.string().optional(),
16
+ selectorVisible: z.string().optional(),
17
+ }),
18
+ });
19
+ const StorageStateAuthSchema = z.object({
20
+ type: z.literal('storage-state'),
21
+ path: z.string(),
22
+ });
23
+ export const AuthConfigSchema = z.discriminatedUnion('type', [FormLoginAuthSchema, StorageStateAuthSchema]);
24
+ export const HarnessConfigSchema = z.object({
25
+ maxPagesToScan: z.number().int().positive(),
26
+ maxDepth: z.number().int().positive(),
27
+ minPagesForConfidence: z.number().int().min(1).default(3),
28
+ timeoutMs: z.number().int().positive(),
29
+ retryCount: z.number().int().min(0),
30
+ llmTokenBudget: z.number().int().positive(),
31
+ testGenerationLimit: z.number().int().positive(),
32
+ readOnlyMode: z.boolean(),
33
+ requireHumanReview: z.boolean(),
34
+ failOnConsoleError: z.boolean(),
35
+ explorer: z.enum(['playwright', 'cypress']).default('playwright'),
36
+ defaultAdapter: z.enum(['playwright', 'cypress-e2e', 'cypress-component', 'api', 'accessibility']).default('playwright'),
37
+ adapters: z.array(z.enum(['playwright', 'cypress-e2e', 'cypress-component', 'api', 'accessibility'])).default(['playwright']),
38
+ auth: AuthConfigSchema.optional(),
39
+ });
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ export declare const DecisionLogEntrySchema: z.ZodObject<{
3
+ timestamp: z.ZodString;
4
+ phase: z.ZodEnum<["observe", "think", "act", "harness"]>;
5
+ decision: z.ZodString;
6
+ reason: z.ZodString;
7
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
8
+ }, "strip", z.ZodTypeAny, {
9
+ reason: string;
10
+ timestamp: string;
11
+ phase: "observe" | "think" | "act" | "harness";
12
+ decision: string;
13
+ metadata?: Record<string, unknown> | undefined;
14
+ }, {
15
+ reason: string;
16
+ timestamp: string;
17
+ phase: "observe" | "think" | "act" | "harness";
18
+ decision: string;
19
+ metadata?: Record<string, unknown> | undefined;
20
+ }>;
21
+ export type DecisionLogEntry = z.infer<typeof DecisionLogEntrySchema>;
22
+ //# sourceMappingURL=decision-log.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decision-log.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/decision-log.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { z } from 'zod';
2
+ export const DecisionLogEntrySchema = z.object({
3
+ timestamp: z.string().datetime(),
4
+ phase: z.enum(['observe', 'think', 'act', 'harness']),
5
+ decision: z.string(),
6
+ reason: z.string(),
7
+ metadata: z.record(z.unknown()).optional(),
8
+ });