@xera-ai/core 0.4.3 → 0.4.4

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.
@@ -0,0 +1,2 @@
1
+ export declare function disputesCmd(argv: string[]): Promise<number>;
2
+ //# sourceMappingURL=disputes.d.ts.map
@@ -0,0 +1 @@
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 +1,5 @@
1
1
  export interface DoctorOpts {
2
2
  cwd?: string;
3
3
  }
4
- export declare function doctorCmd(_argv: string[], opts?: DoctorOpts): Promise<number>;
4
+ export declare function doctorCmd(argv: string[], opts?: DoctorOpts): Promise<number>;
5
5
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
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,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAiDvF"}
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 +1 @@
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,CAqH7D"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"graph-record-script.d.ts","sourceRoot":"","sources":["../../src/bin-internal/graph-record-script.ts"],"names":[],"mappings":"AAwGA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsFxF"}
1
+ {"version":3,"file":"graph-record-script.d.ts","sourceRoot":"","sources":["../../src/bin-internal/graph-record-script.ts"],"names":[],"mappings":"AAqIA,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsFxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin-internal/index.ts"],"names":[],"mappings":"AAoDA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAczD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bin-internal/index.ts"],"names":[],"mappings":"AAsDA,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAczD"}
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/graph/store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,KAAK,EAIL,QAAQ,EAET,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAa3F;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAyCvD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAIzD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAgHxD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAMpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ9D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKzD"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/graph/store.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAEV,KAAK,EAIL,QAAQ,EAET,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,GAAG,MAAM,CAa3F;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,KAAK,EAAE,CAyCvD;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAIzD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAuHxD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,IAAI,CAMpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAQ9D;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKzD"}
@@ -127,6 +127,7 @@ export interface FailureNode {
127
127
  runId: string;
128
128
  traceId?: string;
129
129
  ts: string;
130
+ disputed?: boolean;
130
131
  }
131
132
  export interface EdgeRecord {
132
133
  kind: EdgeKind;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -327,7 +327,7 @@ var ReportingSchema = z4.object({
327
327
  var RunSchema = z4.object({
328
328
  autoImpact: z4.object({
329
329
  enabled: z4.boolean().default(true),
330
- threshold: z4.number().nonnegative().default(6)
330
+ threshold: z4.number().nonnegative().default(8)
331
331
  }).prefault({})
332
332
  }).prefault({});
333
333
  var XeraConfigSchema = z4.object({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xera-ai/core",
3
- "version": "0.4.3",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -0,0 +1,88 @@
1
+ import { loadAllEvents } from '../graph/store';
2
+ import type { ClassificationDisputedPayload, Event } from '../graph/types';
3
+
4
+ function parseDuration(s: string): number {
5
+ // accepts "7d", "30d", "1h", "5m" — returns ms; returns 0 for invalid input
6
+ const match = s.match(/^(\d+)([dhm])$/);
7
+ if (!match) return 0;
8
+ const n = Number.parseInt(match[1]!, 10);
9
+ const unit = match[2]!;
10
+ if (unit === 'd') return n * 86400 * 1000;
11
+ if (unit === 'h') return n * 3600 * 1000;
12
+ if (unit === 'm') return n * 60 * 1000;
13
+ return 0;
14
+ }
15
+
16
+ interface DisputeRow {
17
+ ts: string;
18
+ runId: string;
19
+ scenarioId: string;
20
+ originalClassification: string;
21
+ disputedTo: string;
22
+ qaActor: string;
23
+ qaReason?: string;
24
+ }
25
+
26
+ function eventToRow(e: Event & { type: 'classification.disputed' }): DisputeRow {
27
+ const p = e.payload as ClassificationDisputedPayload;
28
+ const row: DisputeRow = {
29
+ ts: e.ts,
30
+ runId: p.runId,
31
+ scenarioId: p.scenarioId,
32
+ originalClassification: p.originalClassification,
33
+ disputedTo: p.disputedTo,
34
+ qaActor: p.qaActor,
35
+ };
36
+ if (p.qaReason) row.qaReason = p.qaReason;
37
+ return row;
38
+ }
39
+
40
+ function renderText(rows: DisputeRow[]): string {
41
+ if (rows.length === 0) return 'No disputes recorded.\n';
42
+ const lines: string[] = [];
43
+ lines.push(`${rows.length} dispute(s):`);
44
+ for (const r of rows) {
45
+ lines.push(
46
+ ` ${r.ts} | ${r.scenarioId} | ${r.originalClassification} → ${r.disputedTo} | ${r.qaActor}`,
47
+ );
48
+ if (r.qaReason) lines.push(` reason: ${r.qaReason}`);
49
+ }
50
+ return `${lines.join('\n')}\n`;
51
+ }
52
+
53
+ export async function disputesCmd(argv: string[]): Promise<number> {
54
+ let since: string | undefined;
55
+ let format: 'text' | 'json' = 'text';
56
+ for (let i = 0; i < argv.length; i++) {
57
+ if (argv[i] === '--since') {
58
+ since = argv[++i];
59
+ } else if (argv[i] === '--format') {
60
+ const v = argv[++i];
61
+ if (v === 'json' || v === 'text') format = v;
62
+ }
63
+ }
64
+
65
+ const repoRoot = process.cwd();
66
+ const events = loadAllEvents(repoRoot);
67
+ const disputes = events.filter(
68
+ (e): e is Event & { type: 'classification.disputed' } => e.type === 'classification.disputed',
69
+ );
70
+
71
+ let cutoffMs: number | undefined;
72
+ if (since) {
73
+ const sinceMs = parseDuration(since);
74
+ if (sinceMs > 0) cutoffMs = Date.now() - sinceMs;
75
+ }
76
+
77
+ const rows = disputes
78
+ .filter((e) => cutoffMs === undefined || Date.parse(e.ts) >= cutoffMs)
79
+ .map(eventToRow)
80
+ .sort((a, b) => (a.ts < b.ts ? 1 : -1));
81
+
82
+ if (format === 'json') {
83
+ process.stdout.write(JSON.stringify(rows, null, 2));
84
+ } else {
85
+ process.stdout.write(renderText(rows));
86
+ }
87
+ return 0;
88
+ }
@@ -117,8 +117,9 @@ function checkRootScripts(repoRoot: string): CheckResult[] {
117
117
  return missing.map((s) => ({ ok: false, message: `root package.json missing script: ${s}` }));
118
118
  }
119
119
 
120
- export async function doctorCmd(_argv: string[], opts: DoctorOpts = {}): Promise<number> {
120
+ export async function doctorCmd(argv: string[], opts: DoctorOpts = {}): Promise<number> {
121
121
  const repoRoot = opts.cwd ?? process.cwd();
122
+ const autoEnrich = argv.includes('--auto-enrich');
122
123
  const results: CheckResult[] = [
123
124
  ...checkGoldenEvalDir(repoRoot),
124
125
  ...checkRubricPrompt(repoRoot),
@@ -156,6 +157,17 @@ export async function doctorCmd(_argv: string[], opts: DoctorOpts = {}): Promise
156
157
  console.log(` These won't participate in v0.6.1+ features (TEST_OUTDATED, /xera-impact).`);
157
158
  console.log(` Run: bun run xera:graph-backfill`);
158
159
  console.log(` (Use --dry-run to preview.)`);
160
+ if (autoEnrich) {
161
+ console.log('[doctor] --auto-enrich: running backfill for unbackfilled tickets...');
162
+ // Lazy import to avoid circular deps
163
+ const { graphBackfillCmd } = await import('./graph-backfill');
164
+ const exitCode = await graphBackfillCmd([]);
165
+ if (exitCode === 0) {
166
+ console.log(`[doctor] auto-enrich: backfilled ${unbackfilled.length} tickets`);
167
+ } else {
168
+ console.error('[doctor] auto-enrich: backfill failed');
169
+ }
170
+ }
159
171
  }
160
172
  }
161
173
  }
@@ -15,6 +15,8 @@ export async function execCmd(argv: string[]): Promise<number> {
15
15
  console.error('[xera:exec] usage: exec <TICKET>');
16
16
  return 1;
17
17
  }
18
+ const grepIdx = argv.indexOf('--grep');
19
+ const grep = grepIdx > -1 ? argv[grepIdx + 1] : undefined;
18
20
  const cwd = process.cwd();
19
21
  const config = await loadConfig(cwd);
20
22
  const paths = resolveArtifactPaths(cwd, ticket);
@@ -117,6 +119,7 @@ export async function execCmd(argv: string[]): Promise<number> {
117
119
  // path to read.
118
120
  PLAYWRIGHT_JSON_OUTPUT_NAME: reportJsonPath,
119
121
  },
122
+ ...(grep && { grep }),
120
123
  });
121
124
  log.log({ step: 'exec.done', runId, exit: r.exitCode, ms: Date.now() - t0 });
122
125
 
@@ -30,18 +30,49 @@ const mk = <T extends Event['type']>(
30
30
  payload,
31
31
  }) as Event;
32
32
 
33
+ const P0_KEYWORDS = [
34
+ 'log in',
35
+ 'login',
36
+ 'sign in',
37
+ 'signin',
38
+ 'sign up',
39
+ 'signup',
40
+ 'auth',
41
+ 'authentic',
42
+ 'payment',
43
+ 'pay ',
44
+ 'checkout',
45
+ 'purchase',
46
+ 'charge',
47
+ 'password',
48
+ 'credential',
49
+ 'admin',
50
+ 'permission',
51
+ 'role',
52
+ 'must ',
53
+ 'critical',
54
+ ];
55
+
56
+ function inferPriority(name: string, gherkin: string): 'p0' | 'p1' {
57
+ const haystack = `${name} ${gherkin}`.toLowerCase();
58
+ for (const kw of P0_KEYWORDS) {
59
+ if (haystack.includes(kw)) return 'p0';
60
+ }
61
+ return 'p1';
62
+ }
63
+
33
64
  function parseFeature(
34
65
  text: string,
35
66
  ): Array<{ name: string; priority: 'p0' | 'p1' | 'p2'; gherkin: string }> {
36
67
  const scenarios: Array<{ name: string; priority: 'p0' | 'p1' | 'p2'; gherkin: string }> = [];
37
68
  const lines = text.split('\n');
38
- let currentTagPriority: 'p0' | 'p1' | 'p2' = 'p1';
69
+ let explicitTag: 'p0' | 'p1' | 'p2' | null = null;
39
70
  let i = 0;
40
71
  while (i < lines.length) {
41
72
  const line = lines[i]!.trim();
42
73
  if (line.startsWith('@')) {
43
74
  const tag = line.slice(1).split(/\s+/)[0]!.toLowerCase();
44
- if (tag === 'p0' || tag === 'p1' || tag === 'p2') currentTagPriority = tag;
75
+ if (tag === 'p0' || tag === 'p1' || tag === 'p2') explicitTag = tag;
45
76
  i++;
46
77
  continue;
47
78
  }
@@ -55,12 +86,10 @@ function parseFeature(
55
86
  !lines[i]!.trim().startsWith('@')
56
87
  )
57
88
  i++;
58
- scenarios.push({
59
- name,
60
- priority: currentTagPriority,
61
- gherkin: lines.slice(start, i).join('\n'),
62
- });
63
- currentTagPriority = 'p1';
89
+ const gherkin = lines.slice(start, i).join('\n');
90
+ const priority = explicitTag !== null ? explicitTag : inferPriority(name, gherkin);
91
+ scenarios.push({ name, priority, gherkin });
92
+ explicitTag = null;
64
93
  continue;
65
94
  }
66
95
  i++;
@@ -1,3 +1,4 @@
1
+ import { disputesCmd } from './disputes';
1
2
  import { doctorCmd } from './doctor';
2
3
  import { evalDeterministicCmd } from './eval-deterministic';
3
4
  import { evalPrepareCmd } from './eval-prepare';
@@ -24,6 +25,7 @@ import { validateFeatureCmd } from './validate-feature';
24
25
  import { verifyPromptsCmd } from './verify-prompts';
25
26
 
26
27
  const COMMANDS: Record<string, (argv: string[]) => Promise<number>> = {
28
+ disputes: disputesCmd,
27
29
  doctor: doctorCmd,
28
30
  'eval-deterministic': evalDeterministicCmd,
29
31
  'eval-prepare': evalPrepareCmd,
@@ -74,7 +74,7 @@ const RunSchema = z
74
74
  autoImpact: z
75
75
  .object({
76
76
  enabled: z.boolean().default(true),
77
- threshold: z.number().nonnegative().default(6.0),
77
+ threshold: z.number().nonnegative().default(8.0),
78
78
  })
79
79
  .prefault({}),
80
80
  })
@@ -185,7 +185,14 @@ export function deriveSnapshot(events: Event[]): Snapshot {
185
185
  edges.push(ed);
186
186
  break;
187
187
  }
188
- // run.classified and classification.disputed: not materialized in v0.6.0 snapshot
188
+ case 'classification.disputed': {
189
+ const existing = latestFailures[e.payload.scenarioId];
190
+ if (existing && existing.runId === e.payload.runId) {
191
+ existing.disputed = true;
192
+ }
193
+ break;
194
+ }
195
+ // run.classified: not materialized in snapshot
189
196
  default:
190
197
  break;
191
198
  }
@@ -154,6 +154,7 @@ export interface FailureNode {
154
154
  runId: string;
155
155
  traceId?: string;
156
156
  ts: string;
157
+ disputed?: boolean;
157
158
  }
158
159
 
159
160
  export interface EdgeRecord {