@xera-ai/core 0.4.4 → 0.8.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 (157) hide show
  1. package/dist/bin/internal.js +895 -537
  2. package/dist/src/index.js +109 -4
  3. package/package.json +6 -4
  4. package/src/artifact/status.ts +3 -0
  5. package/src/bin-internal/auth-setup.ts +116 -0
  6. package/src/bin-internal/exec.ts +42 -9
  7. package/src/bin-internal/graph-record.ts +3 -0
  8. package/src/bin-internal/index.ts +2 -0
  9. package/src/bin-internal/normalize.ts +13 -1
  10. package/src/bin-internal/report.ts +94 -2
  11. package/src/bin-internal/verify-prompts.ts +2 -1
  12. package/src/classifier/aggregate.ts +3 -0
  13. package/src/classifier/auth-expired.ts +44 -0
  14. package/src/classifier/contract-drift.ts +111 -0
  15. package/src/classifier/rate-limited.ts +25 -0
  16. package/src/config/schema.ts +51 -8
  17. package/src/graph/schema.ts +3 -0
  18. package/src/graph/types.ts +4 -1
  19. package/src/index.ts +2 -0
  20. package/src/scrub/index.ts +1 -0
  21. package/src/scrub/rules.ts +69 -0
  22. package/dist/adapter/types.d.ts +0 -70
  23. package/dist/adapter/types.d.ts.map +0 -1
  24. package/dist/artifact/hash.d.ts +0 -4
  25. package/dist/artifact/hash.d.ts.map +0 -1
  26. package/dist/artifact/meta.d.ts +0 -20
  27. package/dist/artifact/meta.d.ts.map +0 -1
  28. package/dist/artifact/paths.d.ts +0 -25
  29. package/dist/artifact/paths.d.ts.map +0 -1
  30. package/dist/artifact/status.d.ts +0 -75
  31. package/dist/artifact/status.d.ts.map +0 -1
  32. package/dist/auth/encrypt.d.ts +0 -4
  33. package/dist/auth/encrypt.d.ts.map +0 -1
  34. package/dist/auth/key.d.ts +0 -3
  35. package/dist/auth/key.d.ts.map +0 -1
  36. package/dist/auth/refresh.d.ts +0 -9
  37. package/dist/auth/refresh.d.ts.map +0 -1
  38. package/dist/auth/state.d.ts +0 -15
  39. package/dist/auth/state.d.ts.map +0 -1
  40. package/dist/bin-internal/disputes.d.ts +0 -2
  41. package/dist/bin-internal/disputes.d.ts.map +0 -1
  42. package/dist/bin-internal/doctor.d.ts +0 -5
  43. package/dist/bin-internal/doctor.d.ts.map +0 -1
  44. package/dist/bin-internal/eval-deterministic.d.ts +0 -5
  45. package/dist/bin-internal/eval-deterministic.d.ts.map +0 -1
  46. package/dist/bin-internal/eval-prepare.d.ts +0 -7
  47. package/dist/bin-internal/eval-prepare.d.ts.map +0 -1
  48. package/dist/bin-internal/eval-report.d.ts +0 -5
  49. package/dist/bin-internal/eval-report.d.ts.map +0 -1
  50. package/dist/bin-internal/exec.d.ts +0 -2
  51. package/dist/bin-internal/exec.d.ts.map +0 -1
  52. package/dist/bin-internal/fetch.d.ts +0 -5
  53. package/dist/bin-internal/fetch.d.ts.map +0 -1
  54. package/dist/bin-internal/graph-backfill.d.ts +0 -2
  55. package/dist/bin-internal/graph-backfill.d.ts.map +0 -1
  56. package/dist/bin-internal/graph-enrich.d.ts +0 -2
  57. package/dist/bin-internal/graph-enrich.d.ts.map +0 -1
  58. package/dist/bin-internal/graph-query.d.ts +0 -2
  59. package/dist/bin-internal/graph-query.d.ts.map +0 -1
  60. package/dist/bin-internal/graph-record-script.d.ts +0 -2
  61. package/dist/bin-internal/graph-record-script.d.ts.map +0 -1
  62. package/dist/bin-internal/graph-record.d.ts +0 -3
  63. package/dist/bin-internal/graph-record.d.ts.map +0 -1
  64. package/dist/bin-internal/graph-render.d.ts +0 -2
  65. package/dist/bin-internal/graph-render.d.ts.map +0 -1
  66. package/dist/bin-internal/graph-snapshot.d.ts +0 -2
  67. package/dist/bin-internal/graph-snapshot.d.ts.map +0 -1
  68. package/dist/bin-internal/heal-prepare.d.ts +0 -19
  69. package/dist/bin-internal/heal-prepare.d.ts.map +0 -1
  70. package/dist/bin-internal/impact-prepare.d.ts +0 -2
  71. package/dist/bin-internal/impact-prepare.d.ts.map +0 -1
  72. package/dist/bin-internal/index.d.ts +0 -2
  73. package/dist/bin-internal/index.d.ts.map +0 -1
  74. package/dist/bin-internal/lint.d.ts +0 -2
  75. package/dist/bin-internal/lint.d.ts.map +0 -1
  76. package/dist/bin-internal/normalize.d.ts +0 -2
  77. package/dist/bin-internal/normalize.d.ts.map +0 -1
  78. package/dist/bin-internal/post.d.ts +0 -2
  79. package/dist/bin-internal/post.d.ts.map +0 -1
  80. package/dist/bin-internal/promote.d.ts +0 -2
  81. package/dist/bin-internal/promote.d.ts.map +0 -1
  82. package/dist/bin-internal/report.d.ts +0 -2
  83. package/dist/bin-internal/report.d.ts.map +0 -1
  84. package/dist/bin-internal/status-cmd.d.ts +0 -2
  85. package/dist/bin-internal/status-cmd.d.ts.map +0 -1
  86. package/dist/bin-internal/typecheck.d.ts +0 -2
  87. package/dist/bin-internal/typecheck.d.ts.map +0 -1
  88. package/dist/bin-internal/unlock.d.ts +0 -2
  89. package/dist/bin-internal/unlock.d.ts.map +0 -1
  90. package/dist/bin-internal/validate-feature.d.ts +0 -2
  91. package/dist/bin-internal/validate-feature.d.ts.map +0 -1
  92. package/dist/bin-internal/verify-prompts.d.ts +0 -7
  93. package/dist/bin-internal/verify-prompts.d.ts.map +0 -1
  94. package/dist/classifier/aggregate.d.ts +0 -3
  95. package/dist/classifier/aggregate.d.ts.map +0 -1
  96. package/dist/classifier/history.d.ts +0 -13
  97. package/dist/classifier/history.d.ts.map +0 -1
  98. package/dist/classifier/types.d.ts +0 -26
  99. package/dist/classifier/types.d.ts.map +0 -1
  100. package/dist/config/define.d.ts +0 -3
  101. package/dist/config/define.d.ts.map +0 -1
  102. package/dist/config/load.d.ts +0 -3
  103. package/dist/config/load.d.ts.map +0 -1
  104. package/dist/config/schema.d.ts +0 -72
  105. package/dist/config/schema.d.ts.map +0 -1
  106. package/dist/eval/paths.d.ts +0 -15
  107. package/dist/eval/paths.d.ts.map +0 -1
  108. package/dist/eval/run-id.d.ts +0 -6
  109. package/dist/eval/run-id.d.ts.map +0 -1
  110. package/dist/eval/types.d.ts +0 -203
  111. package/dist/eval/types.d.ts.map +0 -1
  112. package/dist/graph/classify.d.ts +0 -42
  113. package/dist/graph/classify.d.ts.map +0 -1
  114. package/dist/graph/cost.d.ts +0 -21
  115. package/dist/graph/cost.d.ts.map +0 -1
  116. package/dist/graph/enrich.d.ts +0 -10
  117. package/dist/graph/enrich.d.ts.map +0 -1
  118. package/dist/graph/impact.d.ts +0 -31
  119. package/dist/graph/impact.d.ts.map +0 -1
  120. package/dist/graph/index.d.ts +0 -17
  121. package/dist/graph/index.d.ts.map +0 -1
  122. package/dist/graph/paths.d.ts +0 -10
  123. package/dist/graph/paths.d.ts.map +0 -1
  124. package/dist/graph/render.d.ts +0 -50
  125. package/dist/graph/render.d.ts.map +0 -1
  126. package/dist/graph/schema.d.ts +0 -180
  127. package/dist/graph/schema.d.ts.map +0 -1
  128. package/dist/graph/similarity.d.ts +0 -3
  129. package/dist/graph/similarity.d.ts.map +0 -1
  130. package/dist/graph/store.d.ts +0 -14
  131. package/dist/graph/store.d.ts.map +0 -1
  132. package/dist/graph/types.d.ts +0 -152
  133. package/dist/graph/types.d.ts.map +0 -1
  134. package/dist/graph/ulid.d.ts +0 -2
  135. package/dist/graph/ulid.d.ts.map +0 -1
  136. package/dist/index.d.ts +0 -20
  137. package/dist/index.d.ts.map +0 -1
  138. package/dist/jira/client.d.ts +0 -11
  139. package/dist/jira/client.d.ts.map +0 -1
  140. package/dist/jira/fields.d.ts +0 -7
  141. package/dist/jira/fields.d.ts.map +0 -1
  142. package/dist/jira/mcp-backend.d.ts +0 -3
  143. package/dist/jira/mcp-backend.d.ts.map +0 -1
  144. package/dist/jira/rest-backend.d.ts +0 -8
  145. package/dist/jira/rest-backend.d.ts.map +0 -1
  146. package/dist/jira/retry.d.ts +0 -8
  147. package/dist/jira/retry.d.ts.map +0 -1
  148. package/dist/jira/types.d.ts +0 -29
  149. package/dist/jira/types.d.ts.map +0 -1
  150. package/dist/lock/file-lock.d.ts +0 -12
  151. package/dist/lock/file-lock.d.ts.map +0 -1
  152. package/dist/logging/ndjson-logger.d.ts +0 -11
  153. package/dist/logging/ndjson-logger.d.ts.map +0 -1
  154. package/dist/reporter/jira-comment.d.ts +0 -9
  155. package/dist/reporter/jira-comment.d.ts.map +0 -1
  156. package/dist/reporter/status-writer.d.ts +0 -14
  157. package/dist/reporter/status-writer.d.ts.map +0 -1
@@ -0,0 +1,111 @@
1
+ import type { ClassifyResult } from './rate-limited';
2
+
3
+ export interface OpenAPISchema {
4
+ type?: 'object' | 'array' | 'string' | 'integer' | 'number' | 'boolean' | 'null';
5
+ properties?: Record<string, OpenAPISchema>;
6
+ required?: readonly string[];
7
+ items?: OpenAPISchema;
8
+ }
9
+
10
+ interface OpenAPIOperation {
11
+ responses?: Record<string, { content?: Record<string, { schema?: OpenAPISchema }> }>;
12
+ requestBody?: { content?: Record<string, { schema?: OpenAPISchema }> };
13
+ }
14
+
15
+ export interface OpenAPIDocument {
16
+ paths: Record<
17
+ string,
18
+ Partial<Record<'get' | 'post' | 'put' | 'patch' | 'delete', OpenAPIOperation>>
19
+ >;
20
+ }
21
+
22
+ export interface ContractDriftCall {
23
+ method: string;
24
+ url: string;
25
+ status: number;
26
+ respBody: unknown;
27
+ }
28
+
29
+ export interface ClassifyContractDriftInput {
30
+ calls: readonly ContractDriftCall[];
31
+ openapi: OpenAPIDocument | null;
32
+ }
33
+
34
+ function matchPath(specPaths: readonly string[], actualUrl: string): string | null {
35
+ const path = actualUrl.split('?')[0] ?? actualUrl;
36
+ for (const tmpl of specPaths) {
37
+ const re = new RegExp(`^${tmpl.replace(/\{[^}]+\}/g, '[^/]+')}$`);
38
+ if (re.test(path)) return tmpl;
39
+ }
40
+ return null;
41
+ }
42
+
43
+ function matchesSchema(body: unknown, schema: OpenAPISchema | undefined): boolean {
44
+ if (!schema) return true;
45
+ if (schema.type === 'object') {
46
+ if (typeof body !== 'object' || body === null || Array.isArray(body)) return false;
47
+ const obj = body as Record<string, unknown>;
48
+ for (const req of schema.required ?? []) {
49
+ if (!(req in obj)) return false;
50
+ }
51
+ return true;
52
+ }
53
+ if (schema.type === 'array') return Array.isArray(body);
54
+ if (schema.type === 'string') return typeof body === 'string';
55
+ if (schema.type === 'integer' || schema.type === 'number') return typeof body === 'number';
56
+ if (schema.type === 'boolean') return typeof body === 'boolean';
57
+ if (schema.type === 'null') return body === null;
58
+ return true;
59
+ }
60
+
61
+ const VERBS = ['get', 'post', 'put', 'patch', 'delete'] as const;
62
+ type Verb = (typeof VERBS)[number];
63
+
64
+ function isVerb(s: string): s is Verb {
65
+ return (VERBS as readonly string[]).includes(s);
66
+ }
67
+
68
+ export function classifyContractDrift(input: ClassifyContractDriftInput): ClassifyResult | null {
69
+ if (input.openapi === null) return null;
70
+ const specPaths = Object.keys(input.openapi.paths);
71
+
72
+ for (const call of input.calls) {
73
+ const tmpl = matchPath(specPaths, call.url);
74
+ if (!tmpl) {
75
+ return {
76
+ class: 'CONTRACT_DRIFT',
77
+ rationale: `Endpoint ${call.method} ${call.url} not found in OpenAPI`,
78
+ };
79
+ }
80
+ const methodLower = call.method.toLowerCase();
81
+ if (!isVerb(methodLower)) {
82
+ return {
83
+ class: 'CONTRACT_DRIFT',
84
+ rationale: `Method ${call.method} not supported by classifier for ${tmpl}`,
85
+ };
86
+ }
87
+ const pathItem = input.openapi.paths[tmpl];
88
+ const op = pathItem?.[methodLower];
89
+ if (!op) {
90
+ return {
91
+ class: 'CONTRACT_DRIFT',
92
+ rationale: `${call.method} not defined for ${tmpl} in OpenAPI`,
93
+ };
94
+ }
95
+ const respDef = op.responses?.[String(call.status)];
96
+ if (!respDef) {
97
+ return {
98
+ class: 'CONTRACT_DRIFT',
99
+ rationale: `Status ${call.status} not enumerated for ${call.method} ${tmpl} in OpenAPI`,
100
+ };
101
+ }
102
+ const schema = respDef.content?.['application/json']?.schema;
103
+ if (!matchesSchema(call.respBody, schema)) {
104
+ return {
105
+ class: 'CONTRACT_DRIFT',
106
+ rationale: `Response body for ${call.method} ${tmpl} (${call.status}) does not match OpenAPI schema`,
107
+ };
108
+ }
109
+ }
110
+ return null;
111
+ }
@@ -0,0 +1,25 @@
1
+ import type { Classification } from '../artifact/status';
2
+
3
+ export interface HttpCallSummary {
4
+ method: string;
5
+ url: string;
6
+ status: number;
7
+ }
8
+
9
+ export interface ClassifyResult {
10
+ class: Classification;
11
+ rationale: string;
12
+ }
13
+
14
+ export interface ClassifyRateLimitedInput {
15
+ calls: readonly HttpCallSummary[];
16
+ }
17
+
18
+ export function classifyRateLimited(input: ClassifyRateLimitedInput): ClassifyResult | null {
19
+ const hit = input.calls.find((c) => c.status === 429);
20
+ if (!hit) return null;
21
+ return {
22
+ class: 'RATE_LIMITED',
23
+ rationale: `Captured HTTP 429 on ${hit.method} ${hit.url}`,
24
+ };
25
+ }
@@ -31,6 +31,37 @@ const WebSchema = z
31
31
  path: ['defaultEnv'],
32
32
  });
33
33
 
34
+ const HttpAuthRoleSchema = z.object({
35
+ tokenEnv: z.string().optional(),
36
+ userEnv: z.string().optional(),
37
+ passEnv: z.string().optional(),
38
+ tokenUrl: z.string().url().optional(),
39
+ clientIdEnv: z.string().optional(),
40
+ clientSecretEnv: z.string().optional(),
41
+ scope: z.string().optional(),
42
+ });
43
+
44
+ const HttpAuthSchema = z.object({
45
+ strategy: z.enum(['bearer', 'apiKey', 'basic', 'oauth-cc', 'custom', 'none']).default('none'),
46
+ ttl: z.string().default('8h'),
47
+ refreshBuffer: z.string().default('30m'),
48
+ roles: z.record(z.string(), HttpAuthRoleSchema).default({}),
49
+ });
50
+
51
+ const HttpSchema = z
52
+ .object({
53
+ baseUrl: z.record(z.string(), z.string().url()).refine((m) => Object.keys(m).length > 0, {
54
+ message: 'baseUrl must have at least one environment',
55
+ }),
56
+ defaultEnv: z.string(),
57
+ spec: z.string().optional(),
58
+ auth: HttpAuthSchema.prefault({}),
59
+ })
60
+ .refine((h) => h.baseUrl[h.defaultEnv] !== undefined, {
61
+ message: 'defaultEnv must exist in baseUrl map',
62
+ path: ['defaultEnv'],
63
+ });
64
+
34
65
  const JiraSchema = z.object({
35
66
  baseUrl: z.string().url(),
36
67
  projectKeys: z.array(z.string().min(1)).min(1),
@@ -80,13 +111,25 @@ const RunSchema = z
80
111
  })
81
112
  .prefault({});
82
113
 
83
- export const XeraConfigSchema = z.object({
84
- jira: JiraSchema,
85
- web: WebSchema,
86
- ai: AISchema,
87
- reporting: ReportingSchema,
88
- run: RunSchema.prefault({}),
89
- adapters: z.array(z.string().min(1)).min(1).default(['web']),
90
- });
114
+ export const XeraConfigSchema = z
115
+ .object({
116
+ jira: JiraSchema,
117
+ web: WebSchema.optional(),
118
+ http: HttpSchema.optional(),
119
+ ai: AISchema,
120
+ reporting: ReportingSchema,
121
+ run: RunSchema.prefault({}),
122
+ adapters: z
123
+ .array(z.enum(['web', 'http']))
124
+ .min(1)
125
+ .default(['web']),
126
+ })
127
+ .refine((c) => c.web !== undefined || c.http !== undefined, {
128
+ message: 'At least one of `web` or `http` must be configured',
129
+ })
130
+ .refine((c) => c.adapters.every((a) => (a === 'web' ? c.web : c.http) !== undefined), {
131
+ message: 'Every adapter in `adapters` must have a corresponding config block',
132
+ path: ['adapters'],
133
+ });
91
134
 
92
135
  export type XeraConfig = z.infer<typeof XeraConfigSchema>;
@@ -78,6 +78,9 @@ const classification = z.enum([
78
78
  'FLAKY',
79
79
  'PASS',
80
80
  'TEST_OUTDATED',
81
+ 'CONTRACT_DRIFT',
82
+ 'RATE_LIMITED',
83
+ 'AUTH_EXPIRED',
81
84
  ]);
82
85
 
83
86
  const runClassified = z
@@ -12,7 +12,10 @@ export type Classification =
12
12
  | 'SELECTOR_DRIFT'
13
13
  | 'FLAKY'
14
14
  | 'PASS'
15
- | 'TEST_OUTDATED';
15
+ | 'TEST_OUTDATED'
16
+ | 'CONTRACT_DRIFT'
17
+ | 'RATE_LIMITED'
18
+ | 'AUTH_EXPIRED';
16
19
 
17
20
  export interface TicketFetchedPayload {
18
21
  ticketId: string;
package/src/index.ts CHANGED
@@ -8,6 +8,7 @@ export * from './auth/encrypt';
8
8
  export * from './auth/key';
9
9
  export * from './auth/refresh';
10
10
  export * from './auth/state';
11
+ export type { OpenAPIDocument, OpenAPISchema } from './classifier/contract-drift';
11
12
  export * from './config/define';
12
13
  export * from './config/load';
13
14
  export * from './config/schema';
@@ -17,3 +18,4 @@ export * from './jira/retry';
17
18
  export * from './jira/types';
18
19
  export * from './lock/file-lock';
19
20
  export * from './logging/ndjson-logger';
21
+ export * from './scrub';
@@ -0,0 +1 @@
1
+ export * from './rules';
@@ -0,0 +1,69 @@
1
+ export const SENSITIVE_HEADERS: readonly string[] = [
2
+ 'authorization',
3
+ 'cookie',
4
+ 'set-cookie',
5
+ 'x-api-key',
6
+ 'x-auth-token',
7
+ 'x-csrf-token',
8
+ 'proxy-authorization',
9
+ ];
10
+
11
+ export const SENSITIVE_BODY_KEYS: readonly RegExp[] = [
12
+ /password/i,
13
+ /passwd/i,
14
+ /token/i,
15
+ /secret/i,
16
+ /api[-_]?key/i,
17
+ /access[-_]?key/i,
18
+ /private[-_]?key/i,
19
+ /authorization/i,
20
+ /credit[-_]?card/i,
21
+ /card[-_]?number/i,
22
+ /cvv/i,
23
+ ];
24
+
25
+ export const JWT_RE = /\beyJ[A-Za-z0-9_-]{7,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{5,}\b/;
26
+ export const CREDIT_CARD_RE = /\b(?:\d{4}[-\s]?){3}\d{4}\b/;
27
+ export const EMAIL_RE = /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/;
28
+ // E.164-ish phone with optional + and separators. Conservative: require at least 7 digits.
29
+ export const PHONE_RE = /(?:\+?\d[\d\s().-]{6,}\d)/;
30
+
31
+ const JWT_RE_G = new RegExp(JWT_RE.source, 'g');
32
+ const CREDIT_CARD_RE_G = new RegExp(CREDIT_CARD_RE.source, 'g');
33
+ export const EMAIL_RE_G = new RegExp(EMAIL_RE.source, 'g');
34
+ export const PHONE_RE_G = new RegExp(PHONE_RE.source, 'g');
35
+
36
+ const REDACTED = '[REDACTED]';
37
+
38
+ export function scrubHeaders(headers: Record<string, string>): Record<string, string> {
39
+ const out: Record<string, string> = {};
40
+ for (const [k, v] of Object.entries(headers)) {
41
+ out[k] = SENSITIVE_HEADERS.includes(k.toLowerCase()) ? REDACTED : v;
42
+ }
43
+ return out;
44
+ }
45
+
46
+ export function scrubBodyJson(body: unknown): unknown {
47
+ if (Array.isArray(body)) return body.map(scrubBodyJson);
48
+ if (body && typeof body === 'object') {
49
+ const out: Record<string, unknown> = {};
50
+ for (const [k, v] of Object.entries(body)) {
51
+ if (SENSITIVE_BODY_KEYS.some((re) => re.test(k))) {
52
+ out[k] = REDACTED;
53
+ } else {
54
+ out[k] = scrubBodyJson(v);
55
+ }
56
+ }
57
+ return out;
58
+ }
59
+ if (typeof body === 'string') return scrubFreeText(body);
60
+ return body;
61
+ }
62
+
63
+ export function scrubFreeText(s: string): string {
64
+ return s
65
+ .replace(JWT_RE_G, REDACTED)
66
+ .replace(CREDIT_CARD_RE_G, REDACTED)
67
+ .replace(EMAIL_RE_G, REDACTED)
68
+ .replace(PHONE_RE_G, REDACTED);
69
+ }
@@ -1,70 +0,0 @@
1
- import type { Classification } from '../artifact/status';
2
- import type { XeraConfig } from '../config/schema';
3
- export interface GenerateInput {
4
- ticketDir: string;
5
- feature: string;
6
- story: string;
7
- config: XeraConfig;
8
- }
9
- export interface GenerateResult {
10
- artifacts: string[];
11
- warnings: string[];
12
- }
13
- export interface ExecuteInput {
14
- ticketDir: string;
15
- config: XeraConfig;
16
- runId: string;
17
- env: string;
18
- }
19
- export interface ScenarioResult {
20
- name: string;
21
- outcome: 'PASS' | 'FAIL' | 'SKIPPED';
22
- failure?: {
23
- step?: string;
24
- errorMessage?: string;
25
- domSnapshotAtFailure?: string;
26
- networkAtFailure?: Array<{
27
- method: string;
28
- url: string;
29
- status: number;
30
- }>;
31
- consoleAtFailure?: string[];
32
- screenshotPath?: string;
33
- };
34
- }
35
- export interface RunResult {
36
- runId: string;
37
- outcome: 'PASS' | 'FAIL';
38
- scenarios: ScenarioResult[];
39
- artifactsDir: string;
40
- rawReportPath: string;
41
- normalizedReportPath: string;
42
- }
43
- export interface ClassifyContext {
44
- history: Array<{
45
- ts: string;
46
- result: 'PASS' | 'FAIL';
47
- class: Classification;
48
- }>;
49
- storyHashChanged: boolean;
50
- specHashChanged: boolean;
51
- }
52
- export interface DoctorReport {
53
- ok: boolean;
54
- checks: Array<{
55
- name: string;
56
- ok: boolean;
57
- message?: string;
58
- }>;
59
- }
60
- export interface TestAdapter {
61
- readonly id: string;
62
- generate(input: GenerateInput): Promise<GenerateResult>;
63
- execute(input: ExecuteInput): Promise<RunResult>;
64
- classify?(run: RunResult, ctx: ClassifyContext): Partial<{
65
- class: Classification;
66
- rationale: string;
67
- }>;
68
- doctor(): Promise<DoctorReport>;
69
- }
70
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapter/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,gBAAgB,CAAC,EAAE,KAAK,CAAC;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,GAAG,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC/E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxD,OAAO,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,CACP,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,eAAe,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;CACjC"}
@@ -1,4 +0,0 @@
1
- export declare function hashString(s: string): string;
2
- export declare function hashFile(path: string): string;
3
- export declare function hashFileIfExists(path: string): string | null;
4
- //# sourceMappingURL=hash.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/artifact/hash.ts"],"names":[],"mappings":"AAGA,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG5D"}
@@ -1,20 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const MetaJsonSchema: z.ZodObject<{
3
- ticket: z.ZodString;
4
- adapter: z.ZodString;
5
- xera_version: z.ZodString;
6
- prompts_version: z.ZodString;
7
- fetched_at: z.ZodOptional<z.ZodString>;
8
- story_hash: z.ZodOptional<z.ZodString>;
9
- feature_generated_at: z.ZodOptional<z.ZodString>;
10
- feature_generated_from_story_hash: z.ZodOptional<z.ZodString>;
11
- feature_hash: z.ZodOptional<z.ZodString>;
12
- script_generated_at: z.ZodOptional<z.ZodString>;
13
- script_generated_from_feature_hash: z.ZodOptional<z.ZodString>;
14
- script_warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
15
- }, z.core.$strip>;
16
- export type MetaJson = z.infer<typeof MetaJsonSchema>;
17
- export declare function readMeta(path: string): MetaJson | null;
18
- export declare function writeMeta(path: string, meta: MetaJson): void;
19
- export declare function updateMeta(path: string, patch: Partial<MetaJson>): MetaJson;
20
- //# sourceMappingURL=meta.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/artifact/meta.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;iBAazB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGtD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAG5D;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAQ3E"}
@@ -1,25 +0,0 @@
1
- export interface RunPaths {
2
- runDir: string;
3
- reportJsonPath: string;
4
- tracePath: string;
5
- normalizedPath: string;
6
- screenshotsDir: string;
7
- videoDir: string;
8
- }
9
- export interface ArtifactPaths {
10
- ticketDir: string;
11
- storyPath: string;
12
- featurePath: string;
13
- specPath: string;
14
- pageObjectsDir: string;
15
- runsDir: string;
16
- metaPath: string;
17
- statusPath: string;
18
- logPath: string;
19
- lockPath: string;
20
- authDir: string;
21
- runPath: (runId: string) => RunPaths;
22
- }
23
- export declare function resolveArtifactPaths(repoRoot: string, ticket: string): ArtifactPaths;
24
- export declare function generateRunId(now?: Date): string;
25
- //# sourceMappingURL=paths.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/artifact/paths.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;CACtC;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,CA6BpF;AAED,wBAAgB,aAAa,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM,CAE5D"}
@@ -1,75 +0,0 @@
1
- import { z } from 'zod';
2
- declare const ClassificationEnum: z.ZodEnum<{
3
- PASS: "PASS";
4
- REAL_BUG: "REAL_BUG";
5
- SELECTOR_DRIFT: "SELECTOR_DRIFT";
6
- FLAKY: "FLAKY";
7
- TEST_BUG: "TEST_BUG";
8
- TEST_OUTDATED: "TEST_OUTDATED";
9
- }>;
10
- export declare const HistoryEntrySchema: z.ZodObject<{
11
- ts: z.ZodString;
12
- result: z.ZodEnum<{
13
- PASS: "PASS";
14
- FAIL: "FAIL";
15
- }>;
16
- class: z.ZodEnum<{
17
- PASS: "PASS";
18
- REAL_BUG: "REAL_BUG";
19
- SELECTOR_DRIFT: "SELECTOR_DRIFT";
20
- FLAKY: "FLAKY";
21
- TEST_BUG: "TEST_BUG";
22
- TEST_OUTDATED: "TEST_OUTDATED";
23
- }>;
24
- }, z.core.$strip>;
25
- export declare const StatusJsonSchema: z.ZodObject<{
26
- ticket: z.ZodString;
27
- lastRun: z.ZodString;
28
- result: z.ZodEnum<{
29
- PASS: "PASS";
30
- FAIL: "FAIL";
31
- }>;
32
- classification: z.ZodEnum<{
33
- PASS: "PASS";
34
- REAL_BUG: "REAL_BUG";
35
- SELECTOR_DRIFT: "SELECTOR_DRIFT";
36
- FLAKY: "FLAKY";
37
- TEST_BUG: "TEST_BUG";
38
- TEST_OUTDATED: "TEST_OUTDATED";
39
- }>;
40
- confidence: z.ZodEnum<{
41
- low: "low";
42
- medium: "medium";
43
- high: "high";
44
- }>;
45
- scenarios: z.ZodObject<{
46
- total: z.ZodNumber;
47
- passed: z.ZodNumber;
48
- failed: z.ZodNumber;
49
- skipped: z.ZodNumber;
50
- }, z.core.$strip>;
51
- history: z.ZodDefault<z.ZodArray<z.ZodObject<{
52
- ts: z.ZodString;
53
- result: z.ZodEnum<{
54
- PASS: "PASS";
55
- FAIL: "FAIL";
56
- }>;
57
- class: z.ZodEnum<{
58
- PASS: "PASS";
59
- REAL_BUG: "REAL_BUG";
60
- SELECTOR_DRIFT: "SELECTOR_DRIFT";
61
- FLAKY: "FLAKY";
62
- TEST_BUG: "TEST_BUG";
63
- TEST_OUTDATED: "TEST_OUTDATED";
64
- }>;
65
- }, z.core.$strip>>>;
66
- last_jira_comment_id: z.ZodOptional<z.ZodString>;
67
- }, z.core.$strip>;
68
- export type StatusJson = z.infer<typeof StatusJsonSchema>;
69
- export type HistoryEntry = z.infer<typeof HistoryEntrySchema>;
70
- export type Classification = z.infer<typeof ClassificationEnum>;
71
- export declare function readStatus(path: string): StatusJson | null;
72
- export declare function writeStatus(path: string, status: StatusJson): void;
73
- export declare function appendHistory(path: string, entry: HistoryEntry): StatusJson;
74
- export {};
75
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/artifact/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,kBAAkB;;;;;;;EAOtB,CAAC;AAIH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;iBAI7B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAc3B,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC1D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC9D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAIhE,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAG1D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAGlE;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,UAAU,CAQ3E"}
@@ -1,4 +0,0 @@
1
- export declare function generateKey(): string;
2
- export declare function encrypt(plaintext: string, keyHex: string): string;
3
- export declare function decrypt(ciphertext: string, keyHex: string): string;
4
- //# sourceMappingURL=encrypt.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"encrypt.d.ts","sourceRoot":"","sources":["../../src/auth/encrypt.ts"],"names":[],"mappings":"AAQA,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAQD,wBAAgB,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOjE;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAYlE"}
@@ -1,3 +0,0 @@
1
- export declare const AUTH_KEY_ENV = "XERA_AUTH_KEY";
2
- export declare function resolveAuthKey(): string;
3
- //# sourceMappingURL=key.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"key.d.ts","sourceRoot":"","sources":["../../src/auth/key.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,wBAAgB,cAAc,IAAI,MAAM,CAWvC"}
@@ -1,9 +0,0 @@
1
- import type { AuthStateEntry } from './state';
2
- export type { AuthStateEntry } from './state';
3
- export declare function parseDuration(d: string): number;
4
- export interface RefreshPolicy {
5
- ttl: string;
6
- refreshBuffer: string;
7
- }
8
- export declare function needsRefresh(entry: AuthStateEntry | null, policy: RefreshPolicy, now?: Date): boolean;
9
- //# sourceMappingURL=refresh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"refresh.d.ts","sourceRoot":"","sources":["../../src/auth/refresh.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAQ/C;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,YAAY,CAC1B,KAAK,EAAE,cAAc,GAAG,IAAI,EAC5B,MAAM,EAAE,aAAa,EACrB,GAAG,GAAE,IAAiB,GACrB,OAAO,CAST"}
@@ -1,15 +0,0 @@
1
- import { z } from 'zod';
2
- export declare const AuthStateEntrySchema: z.ZodObject<{
3
- role: z.ZodString;
4
- strategy: z.ZodEnum<{
5
- storageState: "storageState";
6
- apiToken: "apiToken";
7
- }>;
8
- created_at: z.ZodString;
9
- expires_at: z.ZodString;
10
- payload: z.ZodRecord<z.ZodString, z.ZodUnknown>;
11
- }, z.core.$strip>;
12
- export type AuthStateEntry = z.infer<typeof AuthStateEntrySchema>;
13
- export declare function writeAuthState(authDir: string, entry: AuthStateEntry): void;
14
- export declare function readAuthState(authDir: string, role: string): AuthStateEntry | null;
15
- //# sourceMappingURL=state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/auth/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;;;;;;;;iBAM/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,CAI3E;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMlF"}
@@ -1,2 +0,0 @@
1
- export declare function disputesCmd(argv: string[]): Promise<number>;
2
- //# sourceMappingURL=disputes.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"disputes.d.ts","sourceRoot":"","sources":["../../src/bin-internal/disputes.ts"],"names":[],"mappings":"AAoDA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCjE"}
@@ -1,5 +0,0 @@
1
- export interface DoctorOpts {
2
- cwd?: string;
3
- }
4
- export declare function doctorCmd(argv: string[], opts?: DoctorOpts): Promise<number>;
5
- //# sourceMappingURL=doctor.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/bin-internal/doctor.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA8GD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DtF"}
@@ -1,5 +0,0 @@
1
- export interface EvalDeterministicOpts {
2
- cwd?: string;
3
- }
4
- export declare function evalDeterministicCmd(argv: string[], opts?: EvalDeterministicOpts): Promise<number>;
5
- //# sourceMappingURL=eval-deterministic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eval-deterministic.d.ts","sourceRoot":"","sources":["../../src/bin-internal/eval-deterministic.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,qBAAqB;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAwFD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,GAAE,qBAA0B,GAC/B,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
@@ -1,7 +0,0 @@
1
- export interface EvalPrepareOpts {
2
- cwd?: string;
3
- now?: () => Date;
4
- getGitSha?: () => string | null;
5
- }
6
- export declare function evalPrepareCmd(argv: string[], opts?: EvalPrepareOpts): Promise<number>;
7
- //# sourceMappingURL=eval-prepare.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eval-prepare.d.ts","sourceRoot":"","sources":["../../src/bin-internal/eval-prepare.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,eAAe;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;CACjC;AAgED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmIhG"}
@@ -1,5 +0,0 @@
1
- export interface EvalReportOpts {
2
- cwd?: string;
3
- }
4
- export declare function evalReportCmd(argv: string[], opts?: EvalReportOpts): Promise<number>;
5
- //# sourceMappingURL=eval-report.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"eval-report.d.ts","sourceRoot":"","sources":["../../src/bin-internal/eval-report.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA+CD,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgH9F"}
@@ -1,2 +0,0 @@
1
- export declare function execCmd(argv: string[]): Promise<number>;
2
- //# sourceMappingURL=exec.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"exec.d.ts","sourceRoot":"","sources":["../../src/bin-internal/exec.ts"],"names":[],"mappings":"AAWA,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwH7D"}