@onepointfour-packs/flaredeck-agent 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.
- package/LICENSE.md +14 -0
- package/README.md +102 -0
- package/dist/agent.d.ts +104 -0
- package/dist/agent.js +329 -0
- package/dist/agent.js.map +1 -0
- package/dist/approval.d.ts +72 -0
- package/dist/approval.js +161 -0
- package/dist/approval.js.map +1 -0
- package/dist/approvals.d.ts +2 -0
- package/dist/approvals.js +148 -0
- package/dist/approvals.js.map +1 -0
- package/dist/auth.d.ts +79 -0
- package/dist/auth.js +181 -0
- package/dist/auth.js.map +1 -0
- package/dist/automode.d.ts +33 -0
- package/dist/automode.js +69 -0
- package/dist/automode.js.map +1 -0
- package/dist/branches.d.ts +25 -0
- package/dist/branches.js +81 -0
- package/dist/branches.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +12 -0
- package/dist/cli.js.map +1 -0
- package/dist/codesearch.d.ts +27 -0
- package/dist/codesearch.js +111 -0
- package/dist/codesearch.js.map +1 -0
- package/dist/concurrency.d.ts +14 -0
- package/dist/concurrency.js +52 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config.d.ts +106 -0
- package/dist/config.js +119 -0
- package/dist/config.js.map +1 -0
- package/dist/engine-antigravity.d.ts +23 -0
- package/dist/engine-antigravity.js +357 -0
- package/dist/engine-antigravity.js.map +1 -0
- package/dist/engine-claude.d.ts +18 -0
- package/dist/engine-claude.js +64 -0
- package/dist/engine-claude.js.map +1 -0
- package/dist/engine.d.ts +122 -0
- package/dist/engine.js +36 -0
- package/dist/engine.js.map +1 -0
- package/dist/env.d.ts +1 -0
- package/dist/env.js +10 -0
- package/dist/env.js.map +1 -0
- package/dist/environment.d.ts +39 -0
- package/dist/environment.js +100 -0
- package/dist/environment.js.map +1 -0
- package/dist/flaredeck-check.d.ts +21 -0
- package/dist/flaredeck-check.js +12 -0
- package/dist/flaredeck-check.js.map +1 -0
- package/dist/flaredeck-proxy.d.ts +60 -0
- package/dist/flaredeck-proxy.js +186 -0
- package/dist/flaredeck-proxy.js.map +1 -0
- package/dist/flaredeck.d.ts +132 -0
- package/dist/flaredeck.js +106 -0
- package/dist/flaredeck.js.map +1 -0
- package/dist/gemini.d.ts +21 -0
- package/dist/gemini.js +59 -0
- package/dist/gemini.js.map +1 -0
- package/dist/gitguard.d.ts +2 -0
- package/dist/gitguard.js +90 -0
- package/dist/gitguard.js.map +1 -0
- package/dist/github.d.ts +38 -0
- package/dist/github.js +153 -0
- package/dist/github.js.map +1 -0
- package/dist/githubauth.d.ts +21 -0
- package/dist/githubauth.js +90 -0
- package/dist/githubauth.js.map +1 -0
- package/dist/intake.d.ts +124 -0
- package/dist/intake.js +383 -0
- package/dist/intake.js.map +1 -0
- package/dist/jam.d.ts +45 -0
- package/dist/jam.js +385 -0
- package/dist/jam.js.map +1 -0
- package/dist/jev.d.ts +31 -0
- package/dist/jev.js +75 -0
- package/dist/jev.js.map +1 -0
- package/dist/jevguard.d.ts +28 -0
- package/dist/jevguard.js +213 -0
- package/dist/jevguard.js.map +1 -0
- package/dist/mailbox.d.ts +22 -0
- package/dist/mailbox.js +51 -0
- package/dist/mailbox.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.js +764 -0
- package/dist/main.js.map +1 -0
- package/dist/markdown.d.ts +5 -0
- package/dist/markdown.js +81 -0
- package/dist/markdown.js.map +1 -0
- package/dist/oauth.d.ts +30 -0
- package/dist/oauth.js +216 -0
- package/dist/oauth.js.map +1 -0
- package/dist/permissions.d.ts +43 -0
- package/dist/permissions.js +57 -0
- package/dist/permissions.js.map +1 -0
- package/dist/preflight.d.ts +71 -0
- package/dist/preflight.js +116 -0
- package/dist/preflight.js.map +1 -0
- package/dist/providers.d.ts +26 -0
- package/dist/providers.js +27 -0
- package/dist/providers.js.map +1 -0
- package/dist/repopicker.d.ts +3 -0
- package/dist/repopicker.js +111 -0
- package/dist/repopicker.js.map +1 -0
- package/dist/runs.d.ts +59 -0
- package/dist/runs.js +211 -0
- package/dist/runs.js.map +1 -0
- package/dist/sandbox.d.ts +13 -0
- package/dist/sandbox.js +110 -0
- package/dist/sandbox.js.map +1 -0
- package/dist/schedules.d.ts +11 -0
- package/dist/schedules.js +85 -0
- package/dist/schedules.js.map +1 -0
- package/dist/secretguard.d.ts +4 -0
- package/dist/secretguard.js +115 -0
- package/dist/secretguard.js.map +1 -0
- package/dist/secrets.d.ts +27 -0
- package/dist/secrets.js +51 -0
- package/dist/secrets.js.map +1 -0
- package/dist/serve.d.ts +17 -0
- package/dist/serve.js +1206 -0
- package/dist/serve.js.map +1 -0
- package/dist/status.d.ts +73 -0
- package/dist/status.js +98 -0
- package/dist/status.js.map +1 -0
- package/dist/stream.d.ts +91 -0
- package/dist/stream.js +103 -0
- package/dist/stream.js.map +1 -0
- package/dist/streamtoken.d.ts +2 -0
- package/dist/streamtoken.js +30 -0
- package/dist/streamtoken.js.map +1 -0
- package/dist/team.d.ts +61 -0
- package/dist/team.js +136 -0
- package/dist/team.js.map +1 -0
- package/dist/ui.d.ts +110 -0
- package/dist/ui.js +348 -0
- package/dist/ui.js.map +1 -0
- package/dist/updater.d.ts +15 -0
- package/dist/updater.js +178 -0
- package/dist/updater.js.map +1 -0
- package/dist/workspace.d.ts +115 -0
- package/dist/workspace.js +247 -0
- package/dist/workspace.js.map +1 -0
- package/dist/worktree.d.ts +42 -0
- package/dist/worktree.js +140 -0
- package/dist/worktree.js.map +1 -0
- package/package.json +52 -0
- package/python/sidecar.py +178 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intake.js","sourceRoot":"","sources":["../src/intake.ts"],"names":[],"mappings":"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"}
|
package/dist/jam.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { type Tokens } from './oauth.js';
|
|
2
|
+
/**
|
|
3
|
+
* Jam (jam.dev) recordings, read by the HARNESS through Jam's MCP server used as a plain API.
|
|
4
|
+
*
|
|
5
|
+
* A bug card often carries a Jam link: a screen recording with the reporter's voice, the
|
|
6
|
+
* console and the network tab captured alongside. Reading that is intake work — it is what the
|
|
7
|
+
* card is about — so it happens here, before any model is woken, and what the model gets is
|
|
8
|
+
* text: the transcript, the console errors, the requests that failed. The agent is never given
|
|
9
|
+
* a Jam tool; it does not need one, and a model with a video tool will watch the video.
|
|
10
|
+
*
|
|
11
|
+
* Jam's MCP server speaks the same OAuth the harness already uses for FlareDeck (discovery,
|
|
12
|
+
* dynamic registration, PKCE), so `login --jam` is the same flow against a different origin,
|
|
13
|
+
* and the tokens live once per machine beside the person's FlareDeck login.
|
|
14
|
+
*/
|
|
15
|
+
export declare const JAM_ORIGIN = "https://mcp.jam.dev";
|
|
16
|
+
export declare function loadJam(): Tokens | null;
|
|
17
|
+
export declare function saveJam(tokens: Tokens): string;
|
|
18
|
+
/** One interactive login; the Jam workspace chosen in the browser is the one recordings are read from. */
|
|
19
|
+
export declare function loginJam(say: (s: string) => void): Promise<string>;
|
|
20
|
+
/** jam.dev/c/<uuid> links in a piece of text, deduplicated, in order of appearance. */
|
|
21
|
+
export declare function jamLinks(text: string): string[];
|
|
22
|
+
/**
|
|
23
|
+
* A minimal MCP client over streamable HTTP: initialize once, then tools/call. The session id
|
|
24
|
+
* the server hands back on initialize is echoed on every later call, as the transport requires.
|
|
25
|
+
*/
|
|
26
|
+
export declare class JamClient {
|
|
27
|
+
private session;
|
|
28
|
+
private initialised;
|
|
29
|
+
private tokens;
|
|
30
|
+
constructor(tokens: Tokens);
|
|
31
|
+
private token;
|
|
32
|
+
private rpc;
|
|
33
|
+
private init;
|
|
34
|
+
/** A tool's text result, parsed as JSON when it starts with JSON (Jam appends a prose guide after it). */
|
|
35
|
+
call(name: string, args: Record<string, unknown>): Promise<any>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* One recording as intake text. Each part is best-effort and labelled when missing — a Jam with
|
|
39
|
+
* no voice-over has no transcript, and that is information too.
|
|
40
|
+
*/
|
|
41
|
+
export declare function jamEvidence(url: string, tokens: Tokens, log: (t: string) => void): Promise<{
|
|
42
|
+
text: string;
|
|
43
|
+
ok: boolean;
|
|
44
|
+
error?: string;
|
|
45
|
+
}>;
|
package/dist/jam.js
ADDED
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { authorize, freshAccessToken } from './oauth.js';
|
|
5
|
+
/**
|
|
6
|
+
* Jam (jam.dev) recordings, read by the HARNESS through Jam's MCP server used as a plain API.
|
|
7
|
+
*
|
|
8
|
+
* A bug card often carries a Jam link: a screen recording with the reporter's voice, the
|
|
9
|
+
* console and the network tab captured alongside. Reading that is intake work — it is what the
|
|
10
|
+
* card is about — so it happens here, before any model is woken, and what the model gets is
|
|
11
|
+
* text: the transcript, the console errors, the requests that failed. The agent is never given
|
|
12
|
+
* a Jam tool; it does not need one, and a model with a video tool will watch the video.
|
|
13
|
+
*
|
|
14
|
+
* Jam's MCP server speaks the same OAuth the harness already uses for FlareDeck (discovery,
|
|
15
|
+
* dynamic registration, PKCE), so `login --jam` is the same flow against a different origin,
|
|
16
|
+
* and the tokens live once per machine beside the person's FlareDeck login.
|
|
17
|
+
*/
|
|
18
|
+
export const JAM_ORIGIN = 'https://mcp.jam.dev';
|
|
19
|
+
const JAM_MCP = `${JAM_ORIGIN}/mcp`;
|
|
20
|
+
const TIMEOUT_MS = 25_000;
|
|
21
|
+
const jamPath = () => join(process.env['XDG_CONFIG_HOME'] || join(homedir(), '.config'), 'flaredeck-agent', 'jam.json');
|
|
22
|
+
export function loadJam() {
|
|
23
|
+
try {
|
|
24
|
+
if (!existsSync(jamPath()))
|
|
25
|
+
return null;
|
|
26
|
+
const raw = JSON.parse(readFileSync(jamPath(), 'utf8'));
|
|
27
|
+
return raw?.accessToken ? raw : null;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function saveJam(tokens) {
|
|
34
|
+
const path = jamPath();
|
|
35
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
36
|
+
writeFileSync(path, `${JSON.stringify(tokens, null, 2)}\n`, { encoding: 'utf8', mode: 0o600 });
|
|
37
|
+
chmodSync(path, 0o600);
|
|
38
|
+
return path;
|
|
39
|
+
}
|
|
40
|
+
/** One interactive login; the Jam workspace chosen in the browser is the one recordings are read from. */
|
|
41
|
+
export async function loginJam(say) {
|
|
42
|
+
const tokens = await authorize(JAM_ORIGIN, say, 41790, { scope: 'mcp:read', resource: JAM_MCP });
|
|
43
|
+
return saveJam(tokens);
|
|
44
|
+
}
|
|
45
|
+
/** jam.dev/c/<uuid> links in a piece of text, deduplicated, in order of appearance. */
|
|
46
|
+
export function jamLinks(text) {
|
|
47
|
+
const out = [];
|
|
48
|
+
for (const m of text.matchAll(/https?:\/\/jam\.dev\/c\/([0-9a-f-]{36})/gi)) {
|
|
49
|
+
const url = `https://jam.dev/c/${m[1].toLowerCase()}`;
|
|
50
|
+
if (!out.includes(url))
|
|
51
|
+
out.push(url);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* A minimal MCP client over streamable HTTP: initialize once, then tools/call. The session id
|
|
57
|
+
* the server hands back on initialize is echoed on every later call, as the transport requires.
|
|
58
|
+
*/
|
|
59
|
+
export class JamClient {
|
|
60
|
+
session = null;
|
|
61
|
+
initialised = false;
|
|
62
|
+
tokens;
|
|
63
|
+
constructor(tokens) {
|
|
64
|
+
this.tokens = tokens;
|
|
65
|
+
}
|
|
66
|
+
async token() {
|
|
67
|
+
return freshAccessToken(JAM_ORIGIN, this.tokens, (next) => {
|
|
68
|
+
this.tokens = next;
|
|
69
|
+
saveJam(next);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async rpc(method, params) {
|
|
73
|
+
const res = await fetch(JAM_MCP, {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers: {
|
|
76
|
+
Authorization: `Bearer ${await this.token()}`,
|
|
77
|
+
'Content-Type': 'application/json',
|
|
78
|
+
Accept: 'application/json, text/event-stream',
|
|
79
|
+
...(this.session ? { 'Mcp-Session-Id': this.session } : {}),
|
|
80
|
+
},
|
|
81
|
+
body: JSON.stringify({ jsonrpc: '2.0', id: Date.now(), method, ...(params !== undefined ? { params } : {}) }),
|
|
82
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
83
|
+
});
|
|
84
|
+
const sid = res.headers.get('mcp-session-id');
|
|
85
|
+
if (sid)
|
|
86
|
+
this.session = sid;
|
|
87
|
+
const text = await res.text();
|
|
88
|
+
if (res.status === 401 || res.status === 403)
|
|
89
|
+
throw new Error(`Jam rejected the login (${res.status}) — run: flaredeck-agent login --jam`);
|
|
90
|
+
if (!res.ok)
|
|
91
|
+
throw new Error(`Jam MCP ${res.status}`);
|
|
92
|
+
// Plain JSON or SSE-framed: take the first JSON object either way.
|
|
93
|
+
const line = text.split('\n').map((l) => l.replace(/^data:\s*/, '').trim()).find((l) => l.startsWith('{'));
|
|
94
|
+
if (!line)
|
|
95
|
+
throw new Error('Jam MCP returned no JSON');
|
|
96
|
+
const body = JSON.parse(line);
|
|
97
|
+
if (body.error)
|
|
98
|
+
throw new Error(body.error.message || 'Jam MCP error');
|
|
99
|
+
return body.result;
|
|
100
|
+
}
|
|
101
|
+
async init() {
|
|
102
|
+
if (this.initialised)
|
|
103
|
+
return;
|
|
104
|
+
await this.rpc('initialize', {
|
|
105
|
+
protocolVersion: '2025-03-26',
|
|
106
|
+
capabilities: {},
|
|
107
|
+
clientInfo: { name: 'flaredeck-agent', version: '0.1.0' },
|
|
108
|
+
});
|
|
109
|
+
await fetch(JAM_MCP, {
|
|
110
|
+
method: 'POST',
|
|
111
|
+
headers: {
|
|
112
|
+
Authorization: `Bearer ${await this.token()}`,
|
|
113
|
+
'Content-Type': 'application/json',
|
|
114
|
+
Accept: 'application/json, text/event-stream',
|
|
115
|
+
...(this.session ? { 'Mcp-Session-Id': this.session } : {}),
|
|
116
|
+
},
|
|
117
|
+
body: JSON.stringify({ jsonrpc: '2.0', method: 'notifications/initialized' }),
|
|
118
|
+
signal: AbortSignal.timeout(TIMEOUT_MS),
|
|
119
|
+
}).catch(() => { });
|
|
120
|
+
this.initialised = true;
|
|
121
|
+
}
|
|
122
|
+
/** A tool's text result, parsed as JSON when it starts with JSON (Jam appends a prose guide after it). */
|
|
123
|
+
async call(name, args) {
|
|
124
|
+
await this.init();
|
|
125
|
+
const result = await this.rpc('tools/call', { name, arguments: args });
|
|
126
|
+
if (result?.isError)
|
|
127
|
+
throw new Error(textOf(result) || `${name} failed`);
|
|
128
|
+
const text = textOf(result);
|
|
129
|
+
return leadingJson(text) ?? text;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function textOf(result) {
|
|
133
|
+
return (result?.content ?? []).filter((c) => c?.type === 'text').map((c) => c.text).join('\n');
|
|
134
|
+
}
|
|
135
|
+
/** The JSON value a text starts with, ignoring whatever prose follows it. */
|
|
136
|
+
function leadingJson(text) {
|
|
137
|
+
const start = text.search(/[[{]/);
|
|
138
|
+
if (start < 0)
|
|
139
|
+
return undefined;
|
|
140
|
+
try {
|
|
141
|
+
return JSON.parse(text.slice(start));
|
|
142
|
+
}
|
|
143
|
+
catch { /* prose after the JSON */ }
|
|
144
|
+
// Walk back from the end to the last brace that closes a parseable value.
|
|
145
|
+
for (let end = text.length; end > start; end--) {
|
|
146
|
+
const ch = text[end - 1];
|
|
147
|
+
if (ch !== '}' && ch !== ']')
|
|
148
|
+
continue;
|
|
149
|
+
try {
|
|
150
|
+
return JSON.parse(text.slice(start, end));
|
|
151
|
+
}
|
|
152
|
+
catch { /* keep walking */ }
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
const MAX_TRANSCRIPT_CHARS = 4000;
|
|
157
|
+
const MAX_INTENT_CHARS = 3000;
|
|
158
|
+
const MAX_ROWS = 12;
|
|
159
|
+
const mmss = (ms) => `${Math.floor(ms / 60000)}:${String(Math.floor((ms % 60000) / 1000)).padStart(2, '0')}`;
|
|
160
|
+
const rows = (r) => (Array.isArray(r) ? r : r?.events ?? r?.items ?? r?.logs ?? r?.requests ?? []);
|
|
161
|
+
/** Everything a paged tool has, up to a cap — relevance is decided here, not by a server filter. */
|
|
162
|
+
async function allRows(client, name, args, cap = 400) {
|
|
163
|
+
const out = [];
|
|
164
|
+
let after;
|
|
165
|
+
let total = 0;
|
|
166
|
+
for (let page = 0; page < 5 && out.length < cap; page++) {
|
|
167
|
+
const r = await client.call(name, { ...args, limit: 200, ...(after !== undefined ? { after } : {}) });
|
|
168
|
+
const got = rows(r);
|
|
169
|
+
out.push(...got);
|
|
170
|
+
total = Number(r?.total ?? out.length);
|
|
171
|
+
if (!r?.hasMore || r?.nextCursor == null || !got.length)
|
|
172
|
+
break;
|
|
173
|
+
after = Number(r.nextCursor);
|
|
174
|
+
}
|
|
175
|
+
return { rows: out.slice(0, cap), total };
|
|
176
|
+
}
|
|
177
|
+
const SLOW_MS = 1000;
|
|
178
|
+
const NEAR_MS = 5000;
|
|
179
|
+
const TROUBLE = /error|exception|fail|unauthori[sz]|forbidden|timeout|timed out|retry|slow|deprecat|warn|cannot|could not|undefined is not|null is not|not found|refused|cors|unhandled|rejected/i;
|
|
180
|
+
const nearAny = (t, marks) => marks.some((m) => Math.abs(m - t) <= NEAR_MS);
|
|
181
|
+
const shortUrl = (u) => { try {
|
|
182
|
+
const x = new URL(u);
|
|
183
|
+
return `${x.host}${x.pathname}${x.search.length > 1 && x.search.length < 60 ? x.search : ''}`;
|
|
184
|
+
}
|
|
185
|
+
catch {
|
|
186
|
+
return u;
|
|
187
|
+
} };
|
|
188
|
+
/**
|
|
189
|
+
* One recording as intake text. Each part is best-effort and labelled when missing — a Jam with
|
|
190
|
+
* no voice-over has no transcript, and that is information too.
|
|
191
|
+
*/
|
|
192
|
+
export async function jamEvidence(url, tokens, log) {
|
|
193
|
+
const client = new JamClient(tokens);
|
|
194
|
+
const lines = [`### Jam ${url}`];
|
|
195
|
+
const started = Date.now();
|
|
196
|
+
let transcriptStatus = 'unknown';
|
|
197
|
+
let isVideo = true;
|
|
198
|
+
try {
|
|
199
|
+
const d = await client.call('getDetails', { jamId: url });
|
|
200
|
+
if (typeof d !== 'object' || !d)
|
|
201
|
+
throw new Error('details were not JSON');
|
|
202
|
+
isVideo = d.type === 'video';
|
|
203
|
+
const meta = [
|
|
204
|
+
d.title && `title: ${d.title}`,
|
|
205
|
+
d.type && `${d.type}${d.duration ? ` ${mmss(Number(d.duration))}` : ''}`,
|
|
206
|
+
d.author?.name && `by ${d.author.name}`,
|
|
207
|
+
d.createdAt && `recorded ${String(d.createdAt).slice(0, 16).replace('T', ' ')}`,
|
|
208
|
+
d.systemInfo?.browser?.name && `${d.systemInfo.browser.name} ${d.systemInfo.browser.version ?? ''}`.trim(),
|
|
209
|
+
d.systemInfo?.os?.name && String(d.systemInfo.os.name),
|
|
210
|
+
].filter(Boolean);
|
|
211
|
+
if (meta.length)
|
|
212
|
+
lines.push(meta.join(' · '));
|
|
213
|
+
if (d.description)
|
|
214
|
+
lines.push(`description: ${String(d.description).slice(0, 1500)}`);
|
|
215
|
+
const es = d.eventsSummary;
|
|
216
|
+
if (es) {
|
|
217
|
+
const hosts = Object.keys(es.network?.host ?? {}).join(', ');
|
|
218
|
+
const statuses = Object.entries(es.network?.httpStatus ?? {}).map(([k, v]) => `${k}×${v}`).join(' ');
|
|
219
|
+
lines.push(`captured: ${es.network?.total ?? 0} requests${hosts ? ` to ${hosts}` : ''}${statuses ? ` (${statuses})` : ''} · ${es.console?.total ?? 0} console lines · ${es.interactivity?.total ?? 0} user actions`);
|
|
220
|
+
}
|
|
221
|
+
transcriptStatus = String(d.postprocessing?.byWorkload?.transcript?.status ?? 'unknown');
|
|
222
|
+
const terr = d.postprocessing?.byWorkload?.transcript?.error;
|
|
223
|
+
if (transcriptStatus === 'skipped')
|
|
224
|
+
lines.push(`no narration: ${terr || 'microphone was off'}`);
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
const error = e instanceof Error ? e.message : String(e);
|
|
228
|
+
lines.push(`[details unavailable: ${error}]`);
|
|
229
|
+
return { text: lines.join('\n'), ok: false, error };
|
|
230
|
+
}
|
|
231
|
+
if (transcriptStatus !== 'skipped' && isVideo) {
|
|
232
|
+
try {
|
|
233
|
+
const t = await client.call('getVideoTranscript', { jamId: url });
|
|
234
|
+
const text = typeof t === 'string' ? t : t?.transcript ?? t?.text ?? JSON.stringify(t);
|
|
235
|
+
const spoken = vttToProse(String(text));
|
|
236
|
+
if (spoken)
|
|
237
|
+
lines.push('', 'What the reporter said:', spoken.length > MAX_TRANSCRIPT_CHARS ? `${spoken.slice(0, MAX_TRANSCRIPT_CHARS)} […]` : spoken);
|
|
238
|
+
}
|
|
239
|
+
catch (e) {
|
|
240
|
+
lines.push('', `[transcript unavailable: ${e instanceof Error ? e.message.slice(0, 120) : String(e)}]`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Moments the analysis flagged: logs and requests near them are relevant whatever their level.
|
|
244
|
+
const marks = [];
|
|
245
|
+
// Jam's own analysis of the recording: what the person was trying to do, segment by segment,
|
|
246
|
+
// with what went wrong. Already computed server-side, so it costs a call, not a video upload.
|
|
247
|
+
if (isVideo) {
|
|
248
|
+
try {
|
|
249
|
+
const a = await client.call('analyzeVideo', { jamId: url });
|
|
250
|
+
const segments = Array.isArray(a) ? a : a?.intents ?? a?.segments ?? [];
|
|
251
|
+
if (segments.length) {
|
|
252
|
+
const parts = [];
|
|
253
|
+
for (const s of segments) {
|
|
254
|
+
const head = `${mmss(Number(s.start_ms ?? 0))}–${mmss(Number(s.end_ms ?? 0))}${s.pageTitle ? ` ${s.pageTitle}` : ''}: ${s.summary ?? s.userGoal ?? ''}`;
|
|
255
|
+
const flagged = (s.findings ?? []).filter((f) => f?.impact && f.impact !== 'low');
|
|
256
|
+
for (const f of flagged)
|
|
257
|
+
if (Number.isFinite(Number(f.timestamp_ms)))
|
|
258
|
+
marks.push(Number(f.timestamp_ms));
|
|
259
|
+
const issues = flagged.map((f) => ` ! ${f.impact} ${f.type ?? ''}${Number.isFinite(Number(f.timestamp_ms)) ? ` at ${mmss(Number(f.timestamp_ms))}` : ''}: ${f.description}`);
|
|
260
|
+
parts.push([head, ...(s.userSucceeded === false ? [' (user did not succeed)'] : []), ...issues].join('\n'));
|
|
261
|
+
}
|
|
262
|
+
const text = parts.join('\n');
|
|
263
|
+
lines.push('', 'What happens in the recording (Jam\'s analysis):', text.length > MAX_INTENT_CHARS ? `${text.slice(0, MAX_INTENT_CHARS)} […]` : text);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
catch (e) {
|
|
267
|
+
lines.push('', `[video analysis unavailable: ${e instanceof Error ? e.message.slice(0, 120) : String(e)}]`);
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
try {
|
|
271
|
+
const u = await client.call('getUserEvents', { jamId: url, limit: 15 });
|
|
272
|
+
const evs = rows(u);
|
|
273
|
+
if (evs.length) {
|
|
274
|
+
lines.push('', `User actions (${evs.length} of ${u?.total ?? evs.length}):`);
|
|
275
|
+
let lastPage = '';
|
|
276
|
+
for (const e of evs) {
|
|
277
|
+
if (e.page_url && e.page_url !== lastPage) {
|
|
278
|
+
lines.push(` on ${e.page_url}`);
|
|
279
|
+
lastPage = e.page_url;
|
|
280
|
+
}
|
|
281
|
+
const target = e.interactivity_target_text || e.interactivity_target_selector || e.interactivity_target_tag || '';
|
|
282
|
+
lines.push(` ${mmss(Number(e.elapsed_ms ?? 0))} ${e.interactivity_action ?? e.event_type ?? ''} ${String(target).slice(0, 80)}`.trimEnd());
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
catch { /* optional */ }
|
|
287
|
+
// Network first: its failures and slow calls are also what makes a console line relevant.
|
|
288
|
+
let failedAt = [];
|
|
289
|
+
try {
|
|
290
|
+
const { rows: all, total } = await allRows(client, 'getNetworkRequests', { jamId: url });
|
|
291
|
+
const t = (r) => Number(r.elapsed_ms ?? 0);
|
|
292
|
+
const status = (r) => Number(r.network_status ?? r.status ?? 0);
|
|
293
|
+
const dur = (r) => Number(r.network_duration_ms ?? r.duration_ms ?? 0);
|
|
294
|
+
// Application calls only: no CORS preflights, no fonts, images or stylesheets.
|
|
295
|
+
const api = all.filter((r) => String(r.network_method ?? '').toUpperCase() !== 'OPTIONS' &&
|
|
296
|
+
!/^(font|image|text\/css)/i.test(String(r.network_response_mime ?? '')) &&
|
|
297
|
+
(r.network_is_xhr_or_fetch === true || /json|graphql/i.test(String(r.network_response_mime ?? ''))));
|
|
298
|
+
const failed = all.filter((r) => r.is_error === true || r.network_error_present === true || status(r) >= 400);
|
|
299
|
+
failedAt = failed.map(t);
|
|
300
|
+
const slow = api.filter((r) => dur(r) >= SLOW_MS && !failed.includes(r)).sort((a, b) => dur(b) - dur(a)).slice(0, 8);
|
|
301
|
+
const near = api.filter((r) => !failed.includes(r) && !slow.includes(r) && nearAny(t(r), marks)).slice(0, 6);
|
|
302
|
+
// The shape of the traffic: which APIs, how many calls, how slow at worst.
|
|
303
|
+
const byHost = new Map();
|
|
304
|
+
for (const r of api) {
|
|
305
|
+
const h = String(r.network_host ?? 'unknown');
|
|
306
|
+
const e = byHost.get(h) ?? { n: 0, max: 0, sum: 0 };
|
|
307
|
+
e.n++;
|
|
308
|
+
e.max = Math.max(e.max, dur(r));
|
|
309
|
+
e.sum += dur(r);
|
|
310
|
+
byHost.set(h, e);
|
|
311
|
+
}
|
|
312
|
+
const hostLine = [...byHost.entries()].map(([h, e]) => `${h}: ${e.n} calls, avg ${Math.round(e.sum / e.n)}ms, max ${Math.round(e.max)}ms`).join(' · ');
|
|
313
|
+
lines.push('', `Network (${all.length} of ${total} requests, ${api.length} API calls)${hostLine ? ` — ${hostLine}` : ''}`);
|
|
314
|
+
const line = (r, why) => {
|
|
315
|
+
const body = r.network_response_body ?? r.responseBody ?? '';
|
|
316
|
+
return ` ${mmss(t(r))} ${r.network_method ?? ''} ${shortUrl(String(r.network_url ?? ''))} → ${status(r) || r.network_status_text || '?'} ${Math.round(dur(r))}ms${why ? ` (${why})` : ''}${body ? ` · ${String(body).replace(/\s+/g, ' ').slice(0, 200)}` : ''}`;
|
|
317
|
+
};
|
|
318
|
+
if (failed.length) {
|
|
319
|
+
lines.push(` failed (${failed.length}):`);
|
|
320
|
+
for (const r of failed.slice(0, MAX_ROWS))
|
|
321
|
+
lines.push(line(r, ''));
|
|
322
|
+
}
|
|
323
|
+
if (slow.length) {
|
|
324
|
+
lines.push(` slow API calls (≥${SLOW_MS}ms):`);
|
|
325
|
+
for (const r of slow)
|
|
326
|
+
lines.push(line(r, ''));
|
|
327
|
+
}
|
|
328
|
+
if (near.length) {
|
|
329
|
+
lines.push(' around the moments Jam flagged:');
|
|
330
|
+
for (const r of near)
|
|
331
|
+
lines.push(line(r, ''));
|
|
332
|
+
}
|
|
333
|
+
if (!failed.length && !slow.length && !near.length)
|
|
334
|
+
lines.push(' nothing failed and nothing was slow.');
|
|
335
|
+
}
|
|
336
|
+
catch (e) {
|
|
337
|
+
lines.push('', `[network unavailable: ${e instanceof Error ? e.message : String(e)}]`);
|
|
338
|
+
}
|
|
339
|
+
try {
|
|
340
|
+
const { rows: all, total } = await allRows(client, 'getConsoleLogs', { jamId: url });
|
|
341
|
+
const level = (r) => String(r.console_level ?? r.level ?? r.logLevel ?? 'log').toLowerCase();
|
|
342
|
+
const msg = (r) => String(r.console_message ?? r.console_text ?? r.message ?? r.text ?? JSON.stringify(r));
|
|
343
|
+
const t = (r) => Number(r.elapsed_ms ?? 0);
|
|
344
|
+
const keep = all.filter((r) => {
|
|
345
|
+
const l = level(r);
|
|
346
|
+
if (l === 'error' || l === 'warn' || l === 'warning')
|
|
347
|
+
return true;
|
|
348
|
+
return TROUBLE.test(msg(r)) || nearAny(t(r), [...marks, ...failedAt]);
|
|
349
|
+
});
|
|
350
|
+
// Collapse repeats: the same message a hundred times is one line and a count.
|
|
351
|
+
const seen = new Map();
|
|
352
|
+
for (const r of keep) {
|
|
353
|
+
const k = `${level(r)}|${msg(r).slice(0, 160)}`;
|
|
354
|
+
const e = seen.get(k);
|
|
355
|
+
if (e)
|
|
356
|
+
e.n++;
|
|
357
|
+
else
|
|
358
|
+
seen.set(k, { r, n: 1 });
|
|
359
|
+
}
|
|
360
|
+
const picked = [...seen.values()].slice(0, MAX_ROWS);
|
|
361
|
+
if (picked.length) {
|
|
362
|
+
lines.push('', `Console (${picked.length} relevant of ${total} lines):`);
|
|
363
|
+
for (const { r, n } of picked)
|
|
364
|
+
lines.push(` ${mmss(t(r))} [${level(r)}] ${msg(r).replace(/\s+/g, ' ').slice(0, 300)}${n > 1 ? ` (×${n})` : ''}`);
|
|
365
|
+
}
|
|
366
|
+
else
|
|
367
|
+
lines.push('', `Console: ${total} lines, none that look relevant.`);
|
|
368
|
+
}
|
|
369
|
+
catch (e) {
|
|
370
|
+
lines.push('', `[console unavailable: ${e instanceof Error ? e.message : String(e)}]`);
|
|
371
|
+
}
|
|
372
|
+
log(`intake: jam ${url.split('/').pop()?.slice(0, 8)} read in ${Math.round((Date.now() - started) / 1000)}s`);
|
|
373
|
+
return { text: lines.join('\n'), ok: true };
|
|
374
|
+
}
|
|
375
|
+
/** WebVTT → the words, with the cue timings and numbering dropped. */
|
|
376
|
+
function vttToProse(vtt) {
|
|
377
|
+
return vtt
|
|
378
|
+
.split('\n')
|
|
379
|
+
.filter((l) => l.trim() && !/^WEBVTT/.test(l) && !/^\d+$/.test(l.trim()) && !/-->/.test(l) && !/^NOTE/.test(l))
|
|
380
|
+
.map((l) => l.replace(/<[^>]+>/g, '').trim())
|
|
381
|
+
.join(' ')
|
|
382
|
+
.replace(/\s+/g, ' ')
|
|
383
|
+
.trim();
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=jam.js.map
|
package/dist/jam.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jam.js","sourceRoot":"","sources":["../src/jam.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;GAYG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,qBAAqB,CAAC;AAChD,MAAM,OAAO,GAAG,GAAG,UAAU,MAAM,CAAC;AACpC,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAM,OAAO,GAAG,GAAW,EAAE,CAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,iBAAiB,EAAE,UAAU,CAAC,CAAC;AAEpG,MAAM,UAAU,OAAO;IACrB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QACxD,OAAO,GAAG,EAAE,WAAW,CAAC,CAAC,CAAE,GAAc,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,MAAc;IACpC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0GAA0G;AAC1G,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,GAAwB;IACrD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,2CAA2C,CAAC,EAAE,CAAC;QAC3E,MAAM,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,OAAO,SAAS;IACZ,OAAO,GAAkB,IAAI,CAAC;IAC9B,WAAW,GAAG,KAAK,CAAC;IACpB,MAAM,CAAS;IAEvB,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,KAAK;QACjB,OAAO,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACxD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,MAAgB;QAChD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;gBAC7C,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,qCAAqC;gBAC7C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7G,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC9C,IAAI,GAAG;YAAE,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,GAAG,CAAC,MAAM,sCAAsC,CAAC,CAAC;QAC3I,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACtD,mEAAmE;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,IAAI,CAAC,WAAW;YAAE,OAAO;QAC7B,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YAC3B,eAAe,EAAE,YAAY;YAC7B,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,OAAO,EAAE;SAC1D,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,OAAO,EAAE;YACnB,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE;gBAC7C,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,qCAAqC;gBAC7C,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC5D;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;YAC7E,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC;SACxC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAwD,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,0GAA0G;IAC1G,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAA6B;QACpD,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,IAAI,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,CAAC;QACzE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;IACnC,CAAC;CACF;AAED,SAAS,MAAM,CAAC,MAAW;IACzB,OAAO,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3G,CAAC;AAED,6EAA6E;AAC7E,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,0BAA0B,CAAC,CAAC;IAClF,0EAA0E;IAC1E,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG;YAAE,SAAS;QACvC,IAAI,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAClC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC;AAEpB,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACrH,MAAM,IAAI,GAAG,CAAC,CAAM,EAAS,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;AAE/G,oGAAoG;AACpG,KAAK,UAAU,OAAO,CAAC,MAAiB,EAAE,IAAY,EAAE,IAA6B,EAAE,GAAG,GAAG,GAAG;IAC9F,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,IAAI,KAAyB,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtG,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACjB,KAAK,GAAG,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,IAAI,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,UAAU,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,MAAM;QAC/D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,IAAI,CAAC;AACrB,MAAM,OAAO,GAAG,kLAAkL,CAAC;AACnM,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC;AAC9F,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;IAAC,OAAO,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAAC,CAAC;AAAC,MAAM,CAAC;IAAC,OAAO,CAAC,CAAC;AAAC,CAAC,CAAC,CAAC,CAAC;AAErL;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,MAAc,EAAE,GAAwB;IACrF,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,KAAK,GAAa,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE3B,IAAI,gBAAgB,GAAG,SAAS,CAAC;IACjC,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC1E,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;QAC7B,MAAM,IAAI,GAAG;YACX,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE;YAC9B,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;YACxE,CAAC,CAAC,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE;YACvC,CAAC,CAAC,SAAS,IAAI,YAAY,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;YAC/E,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE;YAC1G,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;SACvD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9C,IAAI,CAAC,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACtF,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3B,IAAI,EAAE,EAAE,CAAC;YACP,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACrG,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,oBAAoB,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,CAAC;QACvN,CAAC;QACD,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,SAAS,CAAC,CAAC;QACzF,MAAM,IAAI,GAAG,CAAC,CAAC,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,CAAC;QAC7D,IAAI,gBAAgB,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,oBAAoB,EAAE,CAAC,CAAC;IAClG,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,KAAK,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,GAAG,CAAC,CAAC;QAC9C,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,gBAAgB,KAAK,SAAS,IAAI,OAAO,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACvF,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACxC,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,EAAE,MAAM,CAAC,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACxJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,4BAA4B,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1G,CAAC;IACH,CAAC;IAED,+FAA+F;IAC/F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,6FAA6F;IAC7F,8FAA8F;IAC9F,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAU,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,QAAQ,IAAI,EAAE,CAAC;YAC/E,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;oBACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC;oBACxJ,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;oBACvF,KAAK,MAAM,CAAC,IAAI,OAAO;wBAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;oBACzG,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;oBACrL,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACjH,CAAC;gBACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kDAAkD,EAAE,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvJ,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,gCAAgC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9G,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,GAAG,CAAC,MAAM,OAAO,CAAC,EAAE,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7E,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAAC,CAAC;gBACvG,MAAM,MAAM,GAAG,CAAC,CAAC,yBAAyB,IAAI,CAAC,CAAC,6BAA6B,IAAI,CAAC,CAAC,wBAAwB,IAAI,EAAE,CAAC;gBAClH,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,oBAAoB,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YAC9I,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;IAE1B,0FAA0F;IAC1F,IAAI,QAAQ,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACzF,MAAM,CAAC,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC;QAC5E,+EAA+E;QAC/E,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAC3B,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,SAAS;YAC1D,CAAC,0BAA0B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;YACvE,CAAC,CAAC,CAAC,uBAAuB,KAAK,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvG,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,qBAAqB,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9G,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACrH,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAE7G,2EAA2E;QAC3E,MAAM,MAAM,GAAG,IAAI,GAAG,EAAmD,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC;YAC9C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;YACpD,CAAC,CAAC,CAAC,EAAE,CAAC;YAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvJ,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,GAAG,CAAC,MAAM,OAAO,KAAK,cAAc,GAAG,CAAC,MAAM,cAAc,QAAQ,CAAC,CAAC,CAAC,MAAM,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE3H,MAAM,IAAI,GAAG,CAAC,CAAM,EAAE,GAAW,EAAE,EAAE;YACnC,MAAM,IAAI,GAAG,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC;YAC7D,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,IAAI,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,mBAAmB,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACpQ,CAAC,CAAC;QACF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YAAC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QACtI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,OAAO,MAAM,CAAC,CAAC;YAAC,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QACpH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YAAC,KAAK,MAAM,CAAC,IAAI,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAAC,CAAC;QACpH,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC3G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACrF,MAAM,KAAK,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAClG,MAAM,GAAG,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QAChH,MAAM,CAAC,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YAClE,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,8EAA8E;QAC9E,MAAM,IAAI,GAAG,IAAI,GAAG,EAAiC,CAAC;QACtD,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAC,IAAI,CAAC;gBAAE,CAAC,CAAC,CAAC,EAAE,CAAC;;gBAAM,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAAC,CAAC;QAC9I,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QACrD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,MAAM,CAAC,MAAM,gBAAgB,KAAK,UAAU,CAAC,CAAC;YACzE,KAAK,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpJ,CAAC;;YAAM,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,KAAK,kCAAkC,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,yBAAyB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzF,CAAC;IAED,GAAG,CAAC,eAAe,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9G,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED,sEAAsE;AACtE,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG;SACP,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC9G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SAC5C,IAAI,CAAC,GAAG,CAAC;SACT,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AACZ,CAAC"}
|
package/dist/jev.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jev, TypeSafe AI's decision model, through OpenRouter's Decisions endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Jev does not write text. It answers typed questions about an input — a choice, a score, a
|
|
5
|
+
* yes/no — with probabilities, in one fast call that costs a fraction of a cent. That is exactly
|
|
6
|
+
* what the routing decision needs: not an essay about the card, a number for how hard it is and
|
|
7
|
+
* a probability that it touches production data. The text brief still comes from a language
|
|
8
|
+
* model; this is the classification beside it, and the two can be compared.
|
|
9
|
+
*/
|
|
10
|
+
export type JevVerdict = {
|
|
11
|
+
complexity: 'small' | 'medium' | 'large';
|
|
12
|
+
/** 0–2 probability-weighted score behind the bucket. */
|
|
13
|
+
score: number;
|
|
14
|
+
confidence: number;
|
|
15
|
+
/** Probability that doing the work right means reading or changing production data. */
|
|
16
|
+
production_data: number;
|
|
17
|
+
/** Probability that the thread shows the work already done or waiting on a person. */
|
|
18
|
+
settled: number;
|
|
19
|
+
/**
|
|
20
|
+
* Does doing this card properly mean RUNNING the project — a server up, a page loaded, a test
|
|
21
|
+
* executed — rather than only reading, deciding or writing code? It rides in the same request
|
|
22
|
+
* as the rest, so it costs nothing extra to ask.
|
|
23
|
+
*/
|
|
24
|
+
needs_running: number;
|
|
25
|
+
kind: 'bug' | 'feature' | 'question' | 'data_correction' | 'operations';
|
|
26
|
+
kind_confidence: number;
|
|
27
|
+
cost_usd: number;
|
|
28
|
+
input_tokens: number;
|
|
29
|
+
model: string;
|
|
30
|
+
};
|
|
31
|
+
export declare function classifyWithJev(digest: string, apiKey: string): Promise<JevVerdict>;
|
package/dist/jev.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Jev, TypeSafe AI's decision model, through OpenRouter's Decisions endpoint.
|
|
3
|
+
*
|
|
4
|
+
* Jev does not write text. It answers typed questions about an input — a choice, a score, a
|
|
5
|
+
* yes/no — with probabilities, in one fast call that costs a fraction of a cent. That is exactly
|
|
6
|
+
* what the routing decision needs: not an essay about the card, a number for how hard it is and
|
|
7
|
+
* a probability that it touches production data. The text brief still comes from a language
|
|
8
|
+
* model; this is the classification beside it, and the two can be compared.
|
|
9
|
+
*/
|
|
10
|
+
const ENDPOINT = 'https://openrouter.ai/api/alpha/decisions';
|
|
11
|
+
const MODEL = 'typesafe/jev-1.13';
|
|
12
|
+
const QUESTIONS = {
|
|
13
|
+
complexity: {
|
|
14
|
+
type: 'score',
|
|
15
|
+
instructions: 'How much engineering work is STILL TO BE DONE on this card, judging from the latest comments? Work already finished earlier in the thread does not count.',
|
|
16
|
+
criteria: [
|
|
17
|
+
'Small: a contained change or a lookup — one file, one query, a copy change, a question answered',
|
|
18
|
+
'Medium: a real fix or feature across a few files, with tests, in one service',
|
|
19
|
+
'Large: cross-layer or cross-service work, a design decision, a migration, or anything that changes production data',
|
|
20
|
+
],
|
|
21
|
+
},
|
|
22
|
+
production_data: {
|
|
23
|
+
type: 'noul',
|
|
24
|
+
instructions: 'Does the work STILL TO BE DONE on this card require reading or changing a production database or live customer data? Production runs that already happened earlier in the thread do not count; only what remains.',
|
|
25
|
+
},
|
|
26
|
+
needs_running: {
|
|
27
|
+
type: 'noul',
|
|
28
|
+
instructions: 'Does the work STILL TO BE DONE on this card require the project to be RUNNING — starting a server, loading a page, calling a live endpoint, executing a test suite — rather than only reading code, answering a question, or making a change that is verified by review? Finding a file, explaining behaviour, writing a note and editing code without running it do NOT require it.',
|
|
29
|
+
},
|
|
30
|
+
settled: {
|
|
31
|
+
type: 'noul',
|
|
32
|
+
instructions: 'Do the most recent comments show the work is already complete, or stopped waiting on a person to decide or approve something?',
|
|
33
|
+
},
|
|
34
|
+
kind: {
|
|
35
|
+
type: 'choice',
|
|
36
|
+
instructions: 'What kind of card is this?',
|
|
37
|
+
criteria: {
|
|
38
|
+
bug: 'Something that used to work or should work is broken',
|
|
39
|
+
feature: 'New behaviour or a change to existing behaviour that is not a defect',
|
|
40
|
+
question: 'Someone wants information or an investigation, not a change',
|
|
41
|
+
data_correction: 'Specific records in a database are wrong and must be corrected',
|
|
42
|
+
operations: 'Configuration, infrastructure, logging, deployment or access, not application code',
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
export async function classifyWithJev(digest, apiKey) {
|
|
47
|
+
const res = await fetch(ENDPOINT, {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
headers: { Authorization: `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
|
50
|
+
body: JSON.stringify({ model: MODEL, state: digest, questions: QUESTIONS }),
|
|
51
|
+
});
|
|
52
|
+
const body = await res.json().catch(() => ({}));
|
|
53
|
+
if (!res.ok)
|
|
54
|
+
throw new Error(`OpenRouter ${res.status}: ${body?.error?.message ?? body?.error ?? 'request failed'}`);
|
|
55
|
+
const a = body.answers ?? {};
|
|
56
|
+
const score = Number(a.complexity?.score ?? 1);
|
|
57
|
+
const kinds = ['bug', 'feature', 'question', 'data_correction', 'operations'];
|
|
58
|
+
const kind = kinds.includes(a.kind?.choice) ? a.kind.choice : 'bug';
|
|
59
|
+
return {
|
|
60
|
+
complexity: score < 0.67 ? 'small' : score < 1.5 ? 'medium' : 'large',
|
|
61
|
+
score,
|
|
62
|
+
confidence: Number(a.complexity?.confidence ?? 0),
|
|
63
|
+
production_data: Number(a.production_data?.noul ?? 0),
|
|
64
|
+
settled: Number(a.settled?.noul ?? 0),
|
|
65
|
+
// Defaults to 0: when Jev has not answered, the harness says nothing about the environment
|
|
66
|
+
// rather than telling an agent to go and build one.
|
|
67
|
+
needs_running: Number(a.needs_running?.noul ?? 0),
|
|
68
|
+
kind,
|
|
69
|
+
kind_confidence: Number(a.kind?.confidence ?? 0),
|
|
70
|
+
cost_usd: Number(body.usage?.cost ?? 0),
|
|
71
|
+
input_tokens: Number(body.usage?.input_tokens ?? 0),
|
|
72
|
+
model: String(body.model ?? MODEL),
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=jev.js.map
|
package/dist/jev.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jev.js","sourceRoot":"","sources":["../src/jev.ts"],"names":[],"mappings":"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"}
|