@smazzinni/sdk 0.4.1
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/README.md +167 -0
- package/dist/cjs/config.d.ts +27 -0
- package/dist/cjs/config.d.ts.map +1 -0
- package/dist/cjs/config.js +118 -0
- package/dist/cjs/config.js.map +1 -0
- package/dist/cjs/context.d.ts +16 -0
- package/dist/cjs/context.d.ts.map +1 -0
- package/dist/cjs/context.js +159 -0
- package/dist/cjs/context.js.map +1 -0
- package/dist/cjs/cost.d.ts +25 -0
- package/dist/cjs/cost.d.ts.map +1 -0
- package/dist/cjs/cost.js +49 -0
- package/dist/cjs/cost.js.map +1 -0
- package/dist/cjs/index.d.ts +32 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +50 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/redact.d.ts +12 -0
- package/dist/cjs/redact.d.ts.map +1 -0
- package/dist/cjs/redact.js +64 -0
- package/dist/cjs/redact.js.map +1 -0
- package/dist/cjs/session.d.ts +32 -0
- package/dist/cjs/session.d.ts.map +1 -0
- package/dist/cjs/session.js +65 -0
- package/dist/cjs/session.js.map +1 -0
- package/dist/cjs/steps.d.ts +12 -0
- package/dist/cjs/steps.d.ts.map +1 -0
- package/dist/cjs/steps.js +60 -0
- package/dist/cjs/steps.js.map +1 -0
- package/dist/cjs/store.d.ts +38 -0
- package/dist/cjs/store.d.ts.map +1 -0
- package/dist/cjs/store.js +125 -0
- package/dist/cjs/store.js.map +1 -0
- package/dist/cjs/types.d.ts +124 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +6 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/config.d.ts +27 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +110 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +16 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +153 -0
- package/dist/context.js.map +1 -0
- package/dist/cost.d.ts +25 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +43 -0
- package/dist/cost.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/index.js.map +1 -0
- package/dist/redact.d.ts +12 -0
- package/dist/redact.d.ts.map +1 -0
- package/dist/redact.js +59 -0
- package/dist/redact.js.map +1 -0
- package/dist/session.d.ts +32 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +61 -0
- package/dist/session.js.map +1 -0
- package/dist/steps.d.ts +12 -0
- package/dist/steps.d.ts.map +1 -0
- package/dist/steps.js +56 -0
- package/dist/steps.js.map +1 -0
- package/dist/store.d.ts +38 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +118 -0
- package/dist/store.js.map +1 -0
- package/dist/types.d.ts +124 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
package/dist/session.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// ReplayAI TypeScript SDK — ReplaySession: replay a recorded session and
|
|
2
|
+
// export it as a test. Wraps GET /api/sessions/:id and /export.
|
|
3
|
+
import { fetchExport, fetchSession } from "./store.js";
|
|
4
|
+
/**
|
|
5
|
+
* ReplaySession — load a previously-recorded session from the API and either
|
|
6
|
+
* re-run it (returning a `Trace`) or export it as a pytest/jest test.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* const replay = new ReplaySession("ses_8fa1", { liveLlm: false });
|
|
10
|
+
* replay.mock("issue_refund", JSON.stringify({ refund_id: "ref_3391" }));
|
|
11
|
+
* const trace = await replay.run({ agent: "support-agent-v3", framework: "LangChain" });
|
|
12
|
+
* console.log(trace.stepCount, trace.status);
|
|
13
|
+
* const code = await replay.export("pytest");
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export class ReplaySession {
|
|
17
|
+
sessionId;
|
|
18
|
+
liveLlm;
|
|
19
|
+
/** fnName → canned response (JSON string). */
|
|
20
|
+
mocks = {};
|
|
21
|
+
constructor(sessionId, opts) {
|
|
22
|
+
this.sessionId = sessionId;
|
|
23
|
+
this.liveLlm = opts?.liveLlm ?? false;
|
|
24
|
+
}
|
|
25
|
+
/** Register a canned response for a mocked function call. */
|
|
26
|
+
mock(fnName, response) {
|
|
27
|
+
this.mocks[fnName] = typeof response === "string" ? response : JSON.stringify(response);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Fetch the session and return a `Trace` view of it.
|
|
31
|
+
*
|
|
32
|
+
* The `agent`/`framework` opts are accepted for API parity with the Python
|
|
33
|
+
* SDK; the session's stored agent/framework take precedence.
|
|
34
|
+
*/
|
|
35
|
+
async run(opts) {
|
|
36
|
+
const result = await fetchSession(this.sessionId);
|
|
37
|
+
if (!result.ok) {
|
|
38
|
+
throw new Error(`ReplaySession.run: GET /api/sessions/${this.sessionId} → ${result.status} ${result.body}`);
|
|
39
|
+
}
|
|
40
|
+
const payload = result.session;
|
|
41
|
+
const session = payload.session;
|
|
42
|
+
if (!session) {
|
|
43
|
+
throw new Error(`ReplaySession.run: API response missing \`session\` field`);
|
|
44
|
+
}
|
|
45
|
+
const steps = session.steps ?? [];
|
|
46
|
+
return {
|
|
47
|
+
stepCount: steps.length ?? session.stepCount ?? 0,
|
|
48
|
+
status: session.status,
|
|
49
|
+
steps,
|
|
50
|
+
durationMs: session.durationMs,
|
|
51
|
+
tokenTotal: session.tokenTotal,
|
|
52
|
+
costUsd: session.costUsd,
|
|
53
|
+
sessionId: session.id,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/** Fetch the session exported as a pytest or jest test source string. */
|
|
57
|
+
async export(lang = "pytest") {
|
|
58
|
+
return fetchExport(this.sessionId, lang);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,gEAAgE;AAEhE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAWvD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,aAAa;IACf,SAAS,CAAS;IAClB,OAAO,CAAU;IAC1B,8CAA8C;IACrC,KAAK,GAA2B,EAAE,CAAC;IAE5C,YAAY,SAAiB,EAAE,IAA2B;QACxD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,KAAK,CAAC;IACxC,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,MAAc,EAAE,QAAyB;QAC5C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC1F,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,GAAG,CAAC,IAAgB;QACxB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,MAAM,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,CAC3F,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAqC,CAAC;QAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,KAAK,GAAkB,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,IAAI,CAAC;YACjD,MAAM,EAAE,OAAO,CAAC,MAAuB;YACvC,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,OAAO,CAAC,EAAE;SACtB,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,KAAK,CAAC,MAAM,CAAC,OAAmB,QAAQ;QACtC,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;CACF"}
|
package/dist/steps.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RecordStepInput } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Record a step into the current trace session.
|
|
4
|
+
*
|
|
5
|
+
* No-op when called outside a `withTrace()`/`trace()` context (unless strict
|
|
6
|
+
* mode is on, in which case it warns). Inputs and outputs are redacted with
|
|
7
|
+
* the configured patterns before persistence.
|
|
8
|
+
*/
|
|
9
|
+
export declare function recordStep(input: RecordStepInput): Promise<void>;
|
|
10
|
+
/** Sync variant — same as `recordStep()` but without the await ceremony. */
|
|
11
|
+
export declare function recordStepSync(input: RecordStepInput): void;
|
|
12
|
+
//# sourceMappingURL=steps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAqC,MAAM,YAAY,CAAC;AAerF;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAetE;AAED,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAe3D"}
|
package/dist/steps.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// ReplayAI TypeScript SDK — manual step recording.
|
|
2
|
+
import { appendStep } from "./context.js";
|
|
3
|
+
import { redactText } from "./redact.js";
|
|
4
|
+
const VALID_TYPES = ["llm_call", "tool_call", "retrieval", "decision", "error"];
|
|
5
|
+
const VALID_STATUSES = ["success", "failed", "running", "warning"];
|
|
6
|
+
function coerceType(v) {
|
|
7
|
+
if (v && VALID_TYPES.includes(v))
|
|
8
|
+
return v;
|
|
9
|
+
return "llm_call";
|
|
10
|
+
}
|
|
11
|
+
function coerceStatus(v) {
|
|
12
|
+
if (v && VALID_STATUSES.includes(v))
|
|
13
|
+
return v;
|
|
14
|
+
return "success";
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Record a step into the current trace session.
|
|
18
|
+
*
|
|
19
|
+
* No-op when called outside a `withTrace()`/`trace()` context (unless strict
|
|
20
|
+
* mode is on, in which case it warns). Inputs and outputs are redacted with
|
|
21
|
+
* the configured patterns before persistence.
|
|
22
|
+
*/
|
|
23
|
+
export async function recordStep(input) {
|
|
24
|
+
const step = {
|
|
25
|
+
type: coerceType(input.type),
|
|
26
|
+
name: input.name,
|
|
27
|
+
model: input.model ?? null,
|
|
28
|
+
tokensIn: input.tokensIn ?? 0,
|
|
29
|
+
tokensOut: input.tokensOut ?? 0,
|
|
30
|
+
input: redactText(input.input),
|
|
31
|
+
output: redactText(input.output),
|
|
32
|
+
status: coerceStatus(input.status),
|
|
33
|
+
t: input.t ?? input.offsetMs,
|
|
34
|
+
offsetMs: input.offsetMs ?? input.t,
|
|
35
|
+
durationMs: input.durationMs ?? 0,
|
|
36
|
+
};
|
|
37
|
+
appendStep(step);
|
|
38
|
+
}
|
|
39
|
+
/** Sync variant — same as `recordStep()` but without the await ceremony. */
|
|
40
|
+
export function recordStepSync(input) {
|
|
41
|
+
const step = {
|
|
42
|
+
type: coerceType(input.type),
|
|
43
|
+
name: input.name,
|
|
44
|
+
model: input.model ?? null,
|
|
45
|
+
tokensIn: input.tokensIn ?? 0,
|
|
46
|
+
tokensOut: input.tokensOut ?? 0,
|
|
47
|
+
input: redactText(input.input),
|
|
48
|
+
output: redactText(input.output),
|
|
49
|
+
status: coerceStatus(input.status),
|
|
50
|
+
t: input.t ?? input.offsetMs,
|
|
51
|
+
offsetMs: input.offsetMs ?? input.t,
|
|
52
|
+
durationMs: input.durationMs ?? 0,
|
|
53
|
+
};
|
|
54
|
+
appendStep(step);
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=steps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steps.js","sourceRoot":"","sources":["../src/steps.ts"],"names":[],"mappings":"AAAA,mDAAmD;AAEnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,MAAM,WAAW,GAAe,CAAC,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAC5F,MAAM,cAAc,GAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AAEjF,SAAS,UAAU,CAAC,CAAqB;IACvC,IAAI,CAAC,IAAK,WAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAa,CAAC;IACrE,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,CAAqB;IACzC,IAAI,CAAC,IAAK,cAA2B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,CAAe,CAAC;IAC1E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,KAAsB;IACrD,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;QAC/B,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;QACnC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;KAClC,CAAC;IACF,UAAU,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,KAAsB;IACnD,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC;QAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;QAC1B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,CAAC;QAC7B,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC;QAC/B,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC;QAC9B,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;QAClC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC;QACnC,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,CAAC;KAClC,CAAC;IACF,UAAU,CAAC,IAAI,CAAC,CAAC;AACnB,CAAC"}
|
package/dist/store.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SessionStatus, SessionStep } from "./types.js";
|
|
2
|
+
export interface FlushPayload {
|
|
3
|
+
/** Local correlation id (UUIDv4); the API assigns the canonical id. */
|
|
4
|
+
sessionId: string;
|
|
5
|
+
name: string;
|
|
6
|
+
agent: string;
|
|
7
|
+
project?: string;
|
|
8
|
+
framework: string;
|
|
9
|
+
tags: string[];
|
|
10
|
+
startedAt: Date;
|
|
11
|
+
durationMs: number;
|
|
12
|
+
status: SessionStatus;
|
|
13
|
+
tokenTotal: number;
|
|
14
|
+
costUsd: number;
|
|
15
|
+
steps: SessionStep[];
|
|
16
|
+
}
|
|
17
|
+
export interface FlushResult {
|
|
18
|
+
ok: boolean;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
url?: string;
|
|
21
|
+
error?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function getLastFlushResult(): FlushResult | null;
|
|
24
|
+
export declare function _resetLastFlushResult(): void;
|
|
25
|
+
/** POST a recorded session to `${apiUrl}/api/sessions`. */
|
|
26
|
+
export declare function flushSession(payload: FlushPayload): Promise<FlushResult>;
|
|
27
|
+
/** GET `/api/sessions/${id}` — used by `ReplaySession.run()`. */
|
|
28
|
+
export declare function fetchSession(sessionId: string): Promise<{
|
|
29
|
+
ok: true;
|
|
30
|
+
session: unknown;
|
|
31
|
+
} | {
|
|
32
|
+
ok: false;
|
|
33
|
+
status: number;
|
|
34
|
+
body: string;
|
|
35
|
+
}>;
|
|
36
|
+
/** GET `/api/sessions/${id}/export?lang=...` — used by `ReplaySession.export()`. */
|
|
37
|
+
export declare function fetchExport(sessionId: string, lang: "pytest" | "jest"): Promise<string>;
|
|
38
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,YAAY;IAC3B,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,wBAAgB,kBAAkB,IAAI,WAAW,GAAG,IAAI,CAEvD;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AA8BD,2DAA2D;AAC3D,wBAAsB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CA2C9E;AAED,iEAAiE;AACjE,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAYvF;AAED,oFAAoF;AACpF,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,QAAQ,GAAG,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CAajB"}
|
package/dist/store.js
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
// ReplayAI TypeScript SDK — store.
|
|
2
|
+
// POSTs a recorded session to the ReplayAI API. Swallows errors in non-strict
|
|
3
|
+
// mode so instrumented agents never break.
|
|
4
|
+
import { getConfig } from "./config.js";
|
|
5
|
+
// Module-level record of the most recent flush. Used by demos / callers that
|
|
6
|
+
// want the URL after `withTrace` completes (the documented `withTrace`
|
|
7
|
+
// signature returns the wrapped fn's value, not the session info).
|
|
8
|
+
let lastFlushResult = null;
|
|
9
|
+
export function getLastFlushResult() {
|
|
10
|
+
return lastFlushResult;
|
|
11
|
+
}
|
|
12
|
+
export function _resetLastFlushResult() {
|
|
13
|
+
lastFlushResult = null;
|
|
14
|
+
}
|
|
15
|
+
function buildBody(payload) {
|
|
16
|
+
return {
|
|
17
|
+
projectSlug: payload.project,
|
|
18
|
+
name: payload.name,
|
|
19
|
+
agent: payload.agent,
|
|
20
|
+
framework: payload.framework,
|
|
21
|
+
status: payload.status,
|
|
22
|
+
startedAt: payload.startedAt.toISOString(),
|
|
23
|
+
durationMs: payload.durationMs,
|
|
24
|
+
tokenTotal: payload.tokenTotal,
|
|
25
|
+
costUsd: payload.costUsd,
|
|
26
|
+
tags: payload.tags,
|
|
27
|
+
steps: payload.steps.map((s) => ({
|
|
28
|
+
type: s.type,
|
|
29
|
+
name: s.name,
|
|
30
|
+
t: s.t ?? s.offsetMs ?? 0,
|
|
31
|
+
offsetMs: s.offsetMs ?? s.t ?? 0,
|
|
32
|
+
durationMs: s.durationMs ?? 0,
|
|
33
|
+
status: s.status,
|
|
34
|
+
model: s.model ?? undefined,
|
|
35
|
+
tokensIn: s.tokensIn ?? undefined,
|
|
36
|
+
tokensOut: s.tokensOut ?? undefined,
|
|
37
|
+
input: s.input ?? "",
|
|
38
|
+
output: s.output ?? "",
|
|
39
|
+
})),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** POST a recorded session to `${apiUrl}/api/sessions`. */
|
|
43
|
+
export async function flushSession(payload) {
|
|
44
|
+
const cfg = getConfig();
|
|
45
|
+
const url = `${cfg.apiUrl}/api/sessions`;
|
|
46
|
+
const body = buildBody(payload);
|
|
47
|
+
const headers = {
|
|
48
|
+
"content-type": "application/json",
|
|
49
|
+
"user-agent": `@replayai/sdk ts/0.4.1`,
|
|
50
|
+
};
|
|
51
|
+
if (cfg.token)
|
|
52
|
+
headers.authorization = `Bearer ${cfg.token}`;
|
|
53
|
+
try {
|
|
54
|
+
const res = await fetch(url, {
|
|
55
|
+
method: "POST",
|
|
56
|
+
headers,
|
|
57
|
+
body: JSON.stringify(body),
|
|
58
|
+
});
|
|
59
|
+
if (!res.ok) {
|
|
60
|
+
const text = await res.text().catch(() => "");
|
|
61
|
+
const msg = `ReplayAI flush failed: ${res.status} ${res.statusText}${text ? ` — ${text}` : ""}`;
|
|
62
|
+
if (cfg.strict)
|
|
63
|
+
throw new Error(msg);
|
|
64
|
+
console.warn(`[replayai] ${msg}`);
|
|
65
|
+
const result = { ok: false, error: msg };
|
|
66
|
+
lastFlushResult = result;
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
const json = (await res.json());
|
|
70
|
+
const sid = json.session?.id;
|
|
71
|
+
const result = {
|
|
72
|
+
ok: true,
|
|
73
|
+
sessionId: sid,
|
|
74
|
+
url: sid ? `${cfg.dashboardUrl}/?s=${sid}` : undefined,
|
|
75
|
+
};
|
|
76
|
+
lastFlushResult = result;
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
81
|
+
if (cfg.strict)
|
|
82
|
+
throw err;
|
|
83
|
+
console.warn(`[replayai] flush error: ${msg}`);
|
|
84
|
+
const result = { ok: false, error: msg };
|
|
85
|
+
lastFlushResult = result;
|
|
86
|
+
return result;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** GET `/api/sessions/${id}` — used by `ReplaySession.run()`. */
|
|
90
|
+
export async function fetchSession(sessionId) {
|
|
91
|
+
const cfg = getConfig();
|
|
92
|
+
const url = `${cfg.apiUrl}/api/sessions/${encodeURIComponent(sessionId)}`;
|
|
93
|
+
const headers = {};
|
|
94
|
+
if (cfg.token)
|
|
95
|
+
headers.authorization = `Bearer ${cfg.token}`;
|
|
96
|
+
const res = await fetch(url, { headers });
|
|
97
|
+
if (!res.ok) {
|
|
98
|
+
const body = await res.text().catch(() => "");
|
|
99
|
+
return { ok: false, status: res.status, body };
|
|
100
|
+
}
|
|
101
|
+
const json = await res.json();
|
|
102
|
+
return { ok: true, session: json };
|
|
103
|
+
}
|
|
104
|
+
/** GET `/api/sessions/${id}/export?lang=...` — used by `ReplaySession.export()`. */
|
|
105
|
+
export async function fetchExport(sessionId, lang) {
|
|
106
|
+
const cfg = getConfig();
|
|
107
|
+
const url = `${cfg.apiUrl}/api/sessions/${encodeURIComponent(sessionId)}/export?lang=${encodeURIComponent(lang)}`;
|
|
108
|
+
const headers = {};
|
|
109
|
+
if (cfg.token)
|
|
110
|
+
headers.authorization = `Bearer ${cfg.token}`;
|
|
111
|
+
const res = await fetch(url, { headers });
|
|
112
|
+
if (!res.ok) {
|
|
113
|
+
const body = await res.text().catch(() => "");
|
|
114
|
+
throw new Error(`ReplaySession.export: GET ${url} → ${res.status} ${res.statusText}${body ? ` — ${body}` : ""}`);
|
|
115
|
+
}
|
|
116
|
+
return await res.text();
|
|
117
|
+
}
|
|
118
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
export type StepType = "llm_call" | "tool_call" | "retrieval" | "decision" | "error";
|
|
2
|
+
export type StepStatus = "success" | "failed" | "running" | "warning";
|
|
3
|
+
export type SessionStatus = "success" | "failed" | "running";
|
|
4
|
+
/** A single recorded step inside a session. Mirrors the API's SessionStep. */
|
|
5
|
+
export interface SessionStep {
|
|
6
|
+
id?: string;
|
|
7
|
+
type: StepType;
|
|
8
|
+
name: string;
|
|
9
|
+
/** ms offset from session start (alias of offsetMs) */
|
|
10
|
+
t?: number;
|
|
11
|
+
offsetMs?: number;
|
|
12
|
+
durationMs?: number;
|
|
13
|
+
status: StepStatus;
|
|
14
|
+
model?: string | null;
|
|
15
|
+
tokensIn?: number | null;
|
|
16
|
+
tokensOut?: number | null;
|
|
17
|
+
input?: string;
|
|
18
|
+
output?: string;
|
|
19
|
+
}
|
|
20
|
+
/** A full agent session as returned by the API. */
|
|
21
|
+
export interface AgentSession {
|
|
22
|
+
id: string;
|
|
23
|
+
projectId?: string;
|
|
24
|
+
name: string;
|
|
25
|
+
agent: string;
|
|
26
|
+
framework: string;
|
|
27
|
+
status: SessionStatus;
|
|
28
|
+
startedAt: string;
|
|
29
|
+
durationMs: number;
|
|
30
|
+
tokenTotal: number;
|
|
31
|
+
costUsd: number;
|
|
32
|
+
tags: string[];
|
|
33
|
+
steps: SessionStep[];
|
|
34
|
+
/** Present on list responses. */
|
|
35
|
+
stepCount?: number;
|
|
36
|
+
/** Present when joined with project on the detail endpoint. */
|
|
37
|
+
project?: AgentProject;
|
|
38
|
+
}
|
|
39
|
+
export interface AgentProject {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
slug: string;
|
|
43
|
+
framework: string;
|
|
44
|
+
description?: string | null;
|
|
45
|
+
createdAt: string;
|
|
46
|
+
sessionCount?: number;
|
|
47
|
+
}
|
|
48
|
+
/** Options accepted by `trace()` and `withTrace()`. */
|
|
49
|
+
export interface TraceOptions {
|
|
50
|
+
/** Project slug or id. Falls back to REPLAYAI_PROJECT env var. */
|
|
51
|
+
project?: string;
|
|
52
|
+
tags?: string[];
|
|
53
|
+
framework?: string;
|
|
54
|
+
startedAt?: Date;
|
|
55
|
+
/** Agent name (defaults to the trace name). */
|
|
56
|
+
agent?: string;
|
|
57
|
+
/** Per-call override of the sample rate (0.0–1.0). */
|
|
58
|
+
sampleRate?: number;
|
|
59
|
+
}
|
|
60
|
+
/** Lightweight view of a recorded/replayed trace. */
|
|
61
|
+
export interface Trace {
|
|
62
|
+
stepCount: number;
|
|
63
|
+
status: SessionStatus;
|
|
64
|
+
steps: SessionStep[];
|
|
65
|
+
durationMs?: number;
|
|
66
|
+
tokenTotal?: number;
|
|
67
|
+
costUsd?: number;
|
|
68
|
+
sessionId?: string;
|
|
69
|
+
sessionUrl?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface ReplaySessionOptions {
|
|
72
|
+
liveLlm?: boolean;
|
|
73
|
+
}
|
|
74
|
+
export interface RunOptions {
|
|
75
|
+
agent: string;
|
|
76
|
+
framework?: string;
|
|
77
|
+
}
|
|
78
|
+
export interface RecordStepInput {
|
|
79
|
+
type?: StepType;
|
|
80
|
+
name: string;
|
|
81
|
+
model?: string | null;
|
|
82
|
+
tokensIn?: number;
|
|
83
|
+
tokensOut?: number;
|
|
84
|
+
input?: unknown;
|
|
85
|
+
output?: unknown;
|
|
86
|
+
status?: StepStatus;
|
|
87
|
+
/** ms offset from session start; inferred if omitted. */
|
|
88
|
+
offsetMs?: number;
|
|
89
|
+
/** alias for offsetMs */
|
|
90
|
+
t?: number;
|
|
91
|
+
durationMs?: number;
|
|
92
|
+
}
|
|
93
|
+
export interface ConfigOptions {
|
|
94
|
+
project?: string;
|
|
95
|
+
token?: string;
|
|
96
|
+
storage?: "local" | "cloud" | "both";
|
|
97
|
+
storagePath?: string;
|
|
98
|
+
apiUrl?: string;
|
|
99
|
+
dashboardUrl?: string;
|
|
100
|
+
sampleRate?: number;
|
|
101
|
+
strict?: boolean;
|
|
102
|
+
redactPatterns?: Array<string | RegExp>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Internal representation of a session being recorded. Populated by
|
|
106
|
+
* `withTrace()`/`trace()` and flushed by `store.flushSession()`.
|
|
107
|
+
*/
|
|
108
|
+
export interface InternalSession {
|
|
109
|
+
id: string;
|
|
110
|
+
name: string;
|
|
111
|
+
agent: string;
|
|
112
|
+
project?: string;
|
|
113
|
+
framework: string;
|
|
114
|
+
tags: string[];
|
|
115
|
+
startedAt: Date;
|
|
116
|
+
/** wall-clock ms captured on enter — used for offset inference */
|
|
117
|
+
__startMs: number;
|
|
118
|
+
steps: SessionStep[];
|
|
119
|
+
status: SessionStatus;
|
|
120
|
+
error?: unknown;
|
|
121
|
+
endAt?: Date;
|
|
122
|
+
}
|
|
123
|
+
export type ExportLang = "pytest" | "jest";
|
|
124
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,qEAAqE;AACrE,6EAA6E"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@smazzinni/sdk",
|
|
3
|
+
"version": "0.4.1",
|
|
4
|
+
"description": "TypeScript SDK for ReplayAI \u2014 instrument JS/TS agents, record sessions, replay & export tests.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/cjs/index.js",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": {
|
|
13
|
+
"types": "./dist/index.d.ts",
|
|
14
|
+
"default": "./dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"require": {
|
|
17
|
+
"types": "./dist/cjs/index.d.ts",
|
|
18
|
+
"default": "./dist/cjs/index.js"
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"./package.json": "./package.json"
|
|
22
|
+
},
|
|
23
|
+
"files": [
|
|
24
|
+
"dist",
|
|
25
|
+
"README.md"
|
|
26
|
+
],
|
|
27
|
+
"scripts": {
|
|
28
|
+
"clean": "rm -rf dist",
|
|
29
|
+
"build": "tsc -p tsconfig.esm.json && tsc -p tsconfig.cjs.json && node -e \"require('fs').mkdirSync('dist/cjs',{recursive:true});require('fs').writeFileSync('dist/cjs/package.json','{\\\"type\\\":\\\"commonjs\\\"}\\n')\"",
|
|
30
|
+
"prepublishOnly": "bun run build",
|
|
31
|
+
"version-check": "node -e \"console.log(require('./dist/cjs/index.js').VERSION)\"",
|
|
32
|
+
"quickstart": "bun examples/quickstart.ts"
|
|
33
|
+
},
|
|
34
|
+
"devDependencies": {
|
|
35
|
+
"@types/node": "^20.14.0",
|
|
36
|
+
"typescript": "^5.5.4"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18"
|
|
40
|
+
},
|
|
41
|
+
"keywords": [
|
|
42
|
+
"replayai",
|
|
43
|
+
"ai",
|
|
44
|
+
"agents",
|
|
45
|
+
"observability",
|
|
46
|
+
"testing",
|
|
47
|
+
"llm",
|
|
48
|
+
"tracing"
|
|
49
|
+
],
|
|
50
|
+
"publishConfig": {
|
|
51
|
+
"registry": "https://registry.npmjs.org",
|
|
52
|
+
"access": "public"
|
|
53
|
+
},
|
|
54
|
+
"repository": {
|
|
55
|
+
"type": "git",
|
|
56
|
+
"url": "git://github.com/smazzinni/replayai.git",
|
|
57
|
+
"directory": "sdks/typescript"
|
|
58
|
+
}
|
|
59
|
+
}
|