@yasserkhanorg/e2e-agents 0.5.2 → 0.5.3

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.
@@ -3,6 +3,7 @@ import type { AIFlowImpactConfig } from './config.js';
3
3
  export interface AIFlowAnalysisResult {
4
4
  enabled: boolean;
5
5
  used: boolean;
6
+ ran: boolean;
6
7
  provider: string;
7
8
  flowCount: number;
8
9
  warnings: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"ai_flow_analysis.d.ts","sourceRoot":"","sources":["../../src/agent/ai_flow_analysis.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAkBpD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;CACvB;AA2JD,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,YAAY,EAAE,EACrB,YAAY,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAgM/B"}
1
+ {"version":3,"file":"ai_flow_analysis.d.ts","sourceRoot":"","sources":["../../src/agent/ai_flow_analysis.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,YAAY,EAAE,UAAU,EAAe,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,aAAa,CAAC;AAkBpD,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,UAAU,EAAE,CAAC;CACvB;AA2JD,wBAAsB,mBAAmB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,YAAY,EAAE,EACrB,YAAY,EAAE,MAAM,EAAE,GACvB,OAAO,CAAC,oBAAoB,CAAC,CAuM/B"}
@@ -154,6 +154,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
154
154
  return {
155
155
  enabled: false,
156
156
  used: false,
157
+ ran: false,
157
158
  provider: providerName,
158
159
  flowCount: 0,
159
160
  warnings,
@@ -165,6 +166,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
165
166
  return {
166
167
  enabled: true,
167
168
  used: false,
169
+ ran: false,
168
170
  provider: providerName,
169
171
  flowCount: 0,
170
172
  warnings,
@@ -194,6 +196,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
194
196
  return {
195
197
  enabled: true,
196
198
  used: false,
199
+ ran: false,
197
200
  provider: providerName,
198
201
  flowCount: 0,
199
202
  warnings,
@@ -240,6 +243,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
240
243
  return {
241
244
  enabled: true,
242
245
  used: false,
246
+ ran: false,
243
247
  provider: provider.name,
244
248
  flowCount: 0,
245
249
  warnings,
@@ -251,6 +255,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
251
255
  return {
252
256
  enabled: true,
253
257
  used: false,
258
+ ran: false,
254
259
  provider: provider.name,
255
260
  flowCount: 0,
256
261
  warnings,
@@ -310,6 +315,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
310
315
  return {
311
316
  enabled: true,
312
317
  used: false,
318
+ ran: true, // AI was called and responded — no user-facing flows impacted
313
319
  provider: provider.name,
314
320
  flowCount: 0,
315
321
  warnings,
@@ -319,6 +325,7 @@ async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, changedFil
319
325
  return {
320
326
  enabled: true,
321
327
  used: true,
328
+ ran: true,
322
329
  provider: provider.name,
323
330
  flowCount: flows.length,
324
331
  warnings,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AA+R7C,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,OAAO,CAAC;CAClB;AAYD,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA6SzF;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0TtF"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,aAAa,CAAC;AA+R7C,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,OAAO,CAAC;CAClB;AAYD,wBAAsB,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiTzF;AAED,wBAAsB,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8TtF"}
@@ -334,6 +334,11 @@ async function runImpact(_config, _options) {
334
334
  flows = aiFlow.flows;
335
335
  flowMappingSource = 'ai';
336
336
  }
337
+ else if (aiFlow.ran) {
338
+ // AI ran successfully but found no user-facing flows — treat as zero impact.
339
+ flows = [];
340
+ flowMappingSource = 'ai';
341
+ }
337
342
  else if (_config.impact.aiFlow.strict || _config.profile === 'mattermost') {
338
343
  throw new Error('AI flow analysis is required but unavailable. Check Anthropic/LLM provider configuration.');
339
344
  }
@@ -612,6 +617,11 @@ async function runGap(_config, _options) {
612
617
  flows = aiFlow.flows;
613
618
  flowMappingSource = 'ai';
614
619
  }
620
+ else if (aiFlow.ran) {
621
+ // AI ran successfully but found no user-facing flows — treat as zero impact.
622
+ flows = [];
623
+ flowMappingSource = 'ai';
624
+ }
615
625
  else if (_config.impact.aiFlow.strict || _config.profile === 'mattermost') {
616
626
  throw new Error('AI flow analysis is required but unavailable. Check Anthropic/LLM provider configuration.');
617
627
  }
@@ -151,6 +151,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
151
151
  return {
152
152
  enabled: false,
153
153
  used: false,
154
+ ran: false,
154
155
  provider: providerName,
155
156
  flowCount: 0,
156
157
  warnings,
@@ -162,6 +163,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
162
163
  return {
163
164
  enabled: true,
164
165
  used: false,
166
+ ran: false,
165
167
  provider: providerName,
166
168
  flowCount: 0,
167
169
  warnings,
@@ -191,6 +193,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
191
193
  return {
192
194
  enabled: true,
193
195
  used: false,
196
+ ran: false,
194
197
  provider: providerName,
195
198
  flowCount: 0,
196
199
  warnings,
@@ -237,6 +240,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
237
240
  return {
238
241
  enabled: true,
239
242
  used: false,
243
+ ran: false,
240
244
  provider: provider.name,
241
245
  flowCount: 0,
242
246
  warnings,
@@ -248,6 +252,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
248
252
  return {
249
253
  enabled: true,
250
254
  used: false,
255
+ ran: false,
251
256
  provider: provider.name,
252
257
  flowCount: 0,
253
258
  warnings,
@@ -307,6 +312,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
307
312
  return {
308
313
  enabled: true,
309
314
  used: false,
315
+ ran: true, // AI was called and responded — no user-facing flows impacted
310
316
  provider: provider.name,
311
317
  flowCount: 0,
312
318
  warnings,
@@ -316,6 +322,7 @@ export async function mapAIFlowsFromFiles(appRoot, testsRoot, config, files, cha
316
322
  return {
317
323
  enabled: true,
318
324
  used: true,
325
+ ran: true,
319
326
  provider: provider.name,
320
327
  flowCount: flows.length,
321
328
  warnings,
@@ -330,6 +330,11 @@ export async function runImpact(_config, _options) {
330
330
  flows = aiFlow.flows;
331
331
  flowMappingSource = 'ai';
332
332
  }
333
+ else if (aiFlow.ran) {
334
+ // AI ran successfully but found no user-facing flows — treat as zero impact.
335
+ flows = [];
336
+ flowMappingSource = 'ai';
337
+ }
333
338
  else if (_config.impact.aiFlow.strict || _config.profile === 'mattermost') {
334
339
  throw new Error('AI flow analysis is required but unavailable. Check Anthropic/LLM provider configuration.');
335
340
  }
@@ -608,6 +613,11 @@ export async function runGap(_config, _options) {
608
613
  flows = aiFlow.flows;
609
614
  flowMappingSource = 'ai';
610
615
  }
616
+ else if (aiFlow.ran) {
617
+ // AI ran successfully but found no user-facing flows — treat as zero impact.
618
+ flows = [];
619
+ flowMappingSource = 'ai';
620
+ }
611
621
  else if (_config.impact.aiFlow.strict || _config.profile === 'mattermost') {
612
622
  throw new Error('AI flow analysis is required but unavailable. Check Anthropic/LLM provider configuration.');
613
623
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yasserkhanorg/e2e-agents",
3
- "version": "0.5.2",
3
+ "version": "0.5.3",
4
4
  "description": "Pluggable LLM provider library for AI-powered test automation. Use Claude, Ollama, or your own LLM. Integrate with Playwright, Jest, or any test framework. MCP server for test agents, cost tracking, and hybrid provider mode.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/esm/index.js",