@qa-ai-stlc/core 0.0.0 → 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.
@@ -1,23 +1,48 @@
1
1
  import type { BrowserContext as PlaywrightBrowserContext } from 'playwright';
2
2
  /** Playwright's own `BrowserContext.storageState()` return shape: cookies plus per-origin storage. */
3
3
  export type StorageState = Awaited<ReturnType<PlaywrightBrowserContext['storageState']>>;
4
+ /** The one piece of a navigation response the engine reads: its HTTP status. */
5
+ export interface PageResponse {
6
+ status(): number;
7
+ }
8
+ export interface RouteRequest {
9
+ method(): string;
10
+ url(): string;
11
+ }
12
+ /** The narrow slice of Playwright's `Route` API safe mode needs to allow or cancel a request. */
13
+ export interface PageRoute {
14
+ request(): RouteRequest;
15
+ abort(): Promise<void>;
16
+ continue(): Promise<void>;
17
+ }
18
+ export type RouteHandler = (route: PageRoute) => Promise<void> | void;
4
19
  /**
5
- * The narrow slice of Playwright's `Page` API authentication needs. A real Playwright `Page`
6
- * satisfies this structurally; unit tests supply a small fake instead (AGENTS.md 5.3, 13).
20
+ * The narrow slice of Playwright's `Page` API authentication and crawling need. A real Playwright
21
+ * `Page` satisfies this structurally; unit tests supply a small fake instead (AGENTS.md 5.3, 13).
7
22
  */
8
23
  export interface AuthPage {
9
- goto(url: string): Promise<unknown>;
24
+ goto(url: string): Promise<PageResponse | null>;
10
25
  fill(selector: string, value: string): Promise<void>;
11
26
  click(selector: string): Promise<void>;
12
27
  waitForLoadState(state?: 'load' | 'domcontentloaded' | 'networkidle'): Promise<void>;
28
+ /** Intercepts every request matching `pattern` (a glob, per Playwright's own syntax). */
29
+ route(pattern: string, handler: RouteHandler): Promise<unknown>;
30
+ /** Runs `pageFunction` in the page's browsing context. Untyped: callers narrow the result. */
31
+ evaluate(pageFunction: () => unknown): Promise<unknown>;
32
+ /** The page's accessibility tree as free-form JSON (Playwright's own aria snapshot). */
33
+ ariaSnapshotJSON(): Promise<unknown>;
13
34
  }
14
35
  export interface AuthBrowserContext {
15
36
  newPage(): Promise<AuthPage>;
16
37
  storageState(): Promise<StorageState>;
17
38
  close(): Promise<void>;
18
39
  }
40
+ export interface NewContextOptions {
41
+ /** Reuses a session `authenticate()` already captured, instead of logging in again. */
42
+ readonly storageState?: StorageState;
43
+ }
19
44
  export interface AuthBrowser {
20
- newContext(): Promise<AuthBrowserContext>;
45
+ newContext(options?: NewContextOptions): Promise<AuthBrowserContext>;
21
46
  /** The contexts an attached, already-authenticated browser owns (ADR-004, section 6.2 step 1). */
22
47
  contexts(): readonly AuthBrowserContext[];
23
48
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../src/ports/browser-launcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE7E,sGAAsG;AACtG,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEzF;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1C,kGAAkG;IAClG,QAAQ,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,yBAAyB,EAAE,eAGvC,CAAC"}
1
+ {"version":3,"file":"browser-launcher.d.ts","sourceRoot":"","sources":["../../src/ports/browser-launcher.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,IAAI,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAE7E,sGAAsG;AACtG,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAEzF,gFAAgF;AAChF,MAAM,WAAW,YAAY;IAC3B,MAAM,IAAI,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,IAAI,MAAM,CAAC;IACjB,GAAG,IAAI,MAAM,CAAC;CACf;AAED,iGAAiG;AACjG,MAAM,WAAW,SAAS;IACxB,OAAO,IAAI,YAAY,CAAC;IACxB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEtE;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAChD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,yFAAyF;IACzF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,8FAA8F;IAC9F,QAAQ,CAAC,YAAY,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACxD,wFAAwF;IACxF,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;CACtC;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrE,kGAAkG;IAClG,QAAQ,IAAI,SAAS,kBAAkB,EAAE,CAAC;IAC1C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,mGAAmG;AACnG,MAAM,WAAW,eAAe;IAC9B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC3D;AAED,eAAO,MAAM,yBAAyB,EAAE,eAGvC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"browser-launcher.js","sourceRoot":"","sources":["../../src/ports/browser-launcher.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoCtC,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC/B,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;CACtE,CAAC"}
1
+ {"version":3,"file":"browser-launcher.js","sourceRoot":"","sources":["../../src/ports/browser-launcher.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkEtC,MAAM,CAAC,MAAM,yBAAyB,GAAoB;IACxD,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;IAC/B,cAAc,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC;CACtE,CAAC"}
@@ -1,15 +1,22 @@
1
- import type { AuthBrowserContext, BrowserLauncher, StorageState } from '../ports/browser-launcher.js';
1
+ import type { AuthBrowserContext, BrowserLauncher, NewContextOptions, PageResponse, StorageState } from '../ports/browser-launcher.js';
2
2
  export interface FakePageCall {
3
- readonly method: 'goto' | 'fill' | 'click' | 'waitForLoadState';
3
+ readonly method: 'goto' | 'fill' | 'click' | 'waitForLoadState' | 'route' | 'evaluate' | 'ariaSnapshotJSON';
4
4
  readonly args: readonly unknown[];
5
5
  }
6
6
  export interface FakeBrowserLauncherOptions {
7
7
  readonly storageState?: StorageState;
8
8
  readonly contexts?: readonly AuthBrowserContext[];
9
+ /** Returned by every `page.goto()` call; defaults to a 200 response. */
10
+ readonly gotoResponse?: PageResponse | null;
11
+ /** Returned by every `page.evaluate()` call; defaults to `undefined`. */
12
+ readonly evaluateResult?: unknown;
13
+ /** Returned by every `page.ariaSnapshotJSON()` call; defaults to `undefined`. */
14
+ readonly ariaSnapshotResult?: unknown;
9
15
  }
10
16
  export interface FakeBrowserLauncher extends BrowserLauncher {
11
17
  readonly pageCalls: FakePageCall[];
12
18
  readonly closedBrowsers: number;
19
+ readonly newContextCalls: NewContextOptions[];
13
20
  }
14
21
  /** A fake `BrowserLauncher` for unit tests: no real browser is ever launched (AGENTS.md 5.3, 13). */
15
22
  export declare function createFakeBrowserLauncher(options?: FakeBrowserLauncherOptions): FakeBrowserLauncher;
@@ -1 +1 @@
1
- {"version":3,"file":"fake-browser-launcher.d.ts","sourceRoot":"","sources":["../../src/test-support/fake-browser-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,kBAAkB,EAElB,eAAe,EACf,YAAY,EACb,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,kBAAkB,CAAC;IAChE,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAuBD,qGAAqG;AACrG,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,mBAAmB,CAwCvG"}
1
+ {"version":3,"file":"fake-browser-launcher.d.ts","sourceRoot":"","sources":["../../src/test-support/fake-browser-launcher.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,kBAAkB,EAElB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACb,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,kBAAkB,GAAG,OAAO,GAAG,UAAU,GAAG,kBAAkB,CAAC;IAC5G,QAAQ,CAAC,IAAI,EAAE,SAAS,OAAO,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAClD,wEAAwE;IACxE,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC5C,yEAAyE;IACzE,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,mBAAoB,SAAQ,eAAe;IAC1D,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,iBAAiB,EAAE,CAAC;CAC/C;AAwCD,qGAAqG;AACrG,wBAAgB,yBAAyB,CAAC,OAAO,GAAE,0BAA+B,GAAG,mBAAmB,CA6CvG"}
@@ -1,11 +1,15 @@
1
1
  // Copyright The QA-AI-STLC Authors
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
  const EMPTY_STORAGE_STATE = { cookies: [], origins: [] };
4
- function createFakePage(calls) {
4
+ const DEFAULT_GOTO_RESPONSE = { status: () => 200 };
5
+ function createFakePage(calls, options) {
6
+ // `??` would also replace an explicitly configured `null` (a deliberately failed navigation),
7
+ // so presence is checked instead of nullishness.
8
+ const gotoResponse = 'gotoResponse' in options ? options.gotoResponse : DEFAULT_GOTO_RESPONSE;
5
9
  return {
6
10
  goto: (...args) => {
7
11
  calls.push({ method: 'goto', args });
8
- return Promise.resolve(undefined);
12
+ return Promise.resolve(gotoResponse);
9
13
  },
10
14
  fill: (...args) => {
11
15
  calls.push({ method: 'fill', args });
@@ -19,26 +23,43 @@ function createFakePage(calls) {
19
23
  calls.push({ method: 'waitForLoadState', args });
20
24
  return Promise.resolve();
21
25
  },
26
+ route: (...args) => {
27
+ calls.push({ method: 'route', args });
28
+ return Promise.resolve();
29
+ },
30
+ evaluate: (...args) => {
31
+ calls.push({ method: 'evaluate', args });
32
+ return Promise.resolve(options.evaluateResult);
33
+ },
34
+ ariaSnapshotJSON: (...args) => {
35
+ calls.push({ method: 'ariaSnapshotJSON', args });
36
+ return Promise.resolve(options.ariaSnapshotResult);
37
+ },
22
38
  };
23
39
  }
24
40
  /** A fake `BrowserLauncher` for unit tests: no real browser is ever launched (AGENTS.md 5.3, 13). */
25
41
  export function createFakeBrowserLauncher(options = {}) {
26
42
  const pageCalls = [];
43
+ const newContextCalls = [];
27
44
  let closedBrowsers = 0;
28
45
  const storageState = options.storageState ?? EMPTY_STORAGE_STATE;
29
46
  const launcher = {
30
47
  pageCalls,
48
+ newContextCalls,
31
49
  get closedBrowsers() {
32
50
  return closedBrowsers;
33
51
  },
34
52
  launch: () => {
35
53
  const context = {
36
- newPage: () => Promise.resolve(createFakePage(pageCalls)),
54
+ newPage: () => Promise.resolve(createFakePage(pageCalls, options)),
37
55
  storageState: () => Promise.resolve(storageState),
38
56
  close: () => Promise.resolve(),
39
57
  };
40
58
  const browser = {
41
- newContext: () => Promise.resolve(context),
59
+ newContext: (newContextOptions = {}) => {
60
+ newContextCalls.push(newContextOptions);
61
+ return Promise.resolve(context);
62
+ },
42
63
  contexts: () => [context],
43
64
  close: () => {
44
65
  closedBrowsers += 1;
@@ -1 +1 @@
1
- {"version":3,"file":"fake-browser-launcher.js","sourceRoot":"","sources":["../../src/test-support/fake-browser-launcher.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,sCAAsC;AAUtC,MAAM,mBAAmB,GAAiB,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAiBvE,SAAS,cAAc,CAAC,KAAqB;IAC3C,OAAO;QACL,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAChB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACrC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YACjB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,gBAAgB,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qGAAqG;AACrG,MAAM,UAAU,yBAAyB,CAAC,UAAsC,EAAE;IAChF,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAEjE,MAAM,QAAQ,GAAwB;QACpC,SAAS;QACT,IAAI,cAAc;YAChB,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,MAAM,OAAO,GAAuB;gBAClC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;gBACzD,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;gBACjD,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE;aAC/B,CAAC;YACF,MAAM,OAAO,GAAgB;gBAC3B,UAAU,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC1C,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC;gBACzB,KAAK,EAAE,GAAG,EAAE;oBACV,cAAc,IAAI,CAAC,CAAC;oBACpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;aACF,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,cAAc,EAAE,GAAG,EAAE;YACnB,MAAM,OAAO,GAAgB;gBAC3B,UAAU,EAAE,GAAG,EAAE,CACf,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;gBAC9F,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE;gBACtC,KAAK,EAAE,GAAG,EAAE;oBACV,cAAc,IAAI,CAAC,CAAC;oBACpB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;gBAC3B,CAAC;aACF,CAAC;YACF,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;KACF,CAAC;IACF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"fake-browser-launcher.js","sourceRoot":"","sources":["../../src/test-support/fake-browser-launcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qa-ai-stlc/core",
3
- "version": "0.0.0",
3
+ "version": "0.2.0",
4
4
  "description": "The QA-AI-STLC engine: .qa/ store, manifest hashing, config loading, and the injected clock/file-system/logger ports every other package builds on.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
@@ -28,7 +28,7 @@
28
28
  "clean": "node ../../scripts/clean-dir.mjs dist"
29
29
  },
30
30
  "dependencies": {
31
- "@qa-ai-stlc/schemas": "0.0.0",
31
+ "@qa-ai-stlc/schemas": "0.2.0",
32
32
  "playwright": "1.63.0",
33
33
  "yaml": "2.9.1",
34
34
  "zod": "4.6.5"