@qcobro/sdk 1.25.0 → 1.27.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/dist/client.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { AppRouter } from "@qcobro/apiserver";
3
3
  import type { LoginInput, ApiKeyLoginInput } from "@qcobro/common";
4
4
  import { PortfoliosResource } from "./resources/portfolios.js";
5
5
  import { AgentTemplatesResource } from "./resources/agentTemplates.js";
6
+ import { AgentEvaluationsResource } from "./resources/agentEvaluations.js";
6
7
  /** Tokens issued by the QCobro Identity service. */
7
8
  export interface Tokens {
8
9
  /** Short-lived bearer token attached to every authenticated request. */
@@ -31,6 +32,13 @@ export interface ClientOptions {
31
32
  refreshToken?: string;
32
33
  /** The accessKeyId of the workspace to act in. Also settable via {@link Client.useWorkspace}. */
33
34
  workspace?: string;
35
+ /**
36
+ * `WebSocket` implementation used for subscriptions (`agentEvaluations.evaluate`) —
37
+ * the `realtime-streaming` transport at `/trpc-ws`. Defaults to the global `WebSocket`
38
+ * (stable in modern Node and every browser). Provide a ponyfill in older Node runtimes
39
+ * that lack it.
40
+ */
41
+ WebSocket?: typeof WebSocket;
34
42
  /**
35
43
  * When `true` (the default), an `UNAUTHORIZED` response triggers a single
36
44
  * token refresh and one replay of the failed request, provided a refresh
@@ -69,8 +77,10 @@ export declare class Client {
69
77
  readonly trpc: CreateTRPCClient<AppRouter>;
70
78
  /** Portfolio operations (list, get, create, update, delete, accounts, sync). */
71
79
  readonly portfolios: PortfoliosResource;
72
- /** Agent template operations (list, get, create, sync). */
80
+ /** Agent template operations (list, get, create, sync, preview). */
73
81
  readonly agentTemplates: AgentTemplatesResource;
82
+ /** Agent evaluation operations (evaluate — streams over the WebSocket transport). */
83
+ readonly agentEvaluations: AgentEvaluationsResource;
74
84
  constructor(options?: ClientOptions);
75
85
  /**
76
86
  * Run a request, transparently refreshing the access token once on an
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmC,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACtF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAQvE,oDAAoD;AACpD,MAAM,WAAW,MAAM;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAM;;IACjB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE3C,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,2DAA2D;IAC3D,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;gBASpC,OAAO,GAAE,aAAkB;IA4BvC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgClD;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/C;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/D;;;;;;OAMG;IACG,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKvC,mFAAmF;IACnF,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,mEAAmE;IACnE,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAKhC"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAQ3E,oDAAoD;AACpD,MAAM,WAAW,MAAM;IACrB,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,uFAAuF;IACvF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iGAAiG;IACjG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,OAAO,SAAS,CAAC;IAC7B;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAM;;IACjB;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAE3C,gFAAgF;IAChF,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IAExC,oEAAoE;IACpE,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAEhD,qFAAqF;IACrF,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;gBASxC,OAAO,GAAE,aAAkB;IAgDvC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAgClD;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/C;;;;;;;;;;;;;;;OAeG;IACG,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAO/D;;;;;;OAMG;IACG,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAWrD;;;OAGG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKvC,mFAAmF;IACnF,IAAI,SAAS,IAAI,MAAM,GAAG,SAAS,CAElC;IAED,mEAAmE;IACnE,SAAS,IAAI,MAAM;IAInB;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;CAKhC"}
package/dist/client.js CHANGED
@@ -1,6 +1,7 @@
1
- import { createTRPCClient, httpBatchLink } from "@trpc/client";
1
+ import { createTRPCClient, createWSClient, httpBatchLink, splitLink, wsLink } from "@trpc/client";
2
2
  import { PortfoliosResource } from "./resources/portfolios.js";
3
3
  import { AgentTemplatesResource } from "./resources/agentTemplates.js";
4
+ import { AgentEvaluationsResource } from "./resources/agentEvaluations.js";
4
5
  /** Header the apiserver reads to scope a request to a workspace. */
5
6
  const WORKSPACE_HEADER = "x-workspace";
6
7
  /** Default QCobro API base URL, used when no `endpoint` is provided. */
@@ -35,8 +36,10 @@ export class Client {
35
36
  trpc;
36
37
  /** Portfolio operations (list, get, create, update, delete, accounts, sync). */
37
38
  portfolios;
38
- /** Agent template operations (list, get, create, sync). */
39
+ /** Agent template operations (list, get, create, sync, preview). */
39
40
  agentTemplates;
41
+ /** Agent evaluation operations (evaluate — streams over the WebSocket transport). */
42
+ agentEvaluations;
40
43
  #accessToken;
41
44
  #refreshToken;
42
45
  #workspace;
@@ -48,27 +51,46 @@ export class Client {
48
51
  this.#refreshToken = options.refreshToken;
49
52
  this.#workspace = options.workspace;
50
53
  this.#autoRefresh = options.autoRefresh ?? true;
51
- const url = `${(options.endpoint ?? DEFAULT_ENDPOINT).replace(/\/+$/, "")}/trpc`;
54
+ const base = (options.endpoint ?? DEFAULT_ENDPOINT).replace(/\/+$/, "");
55
+ const url = `${base}/trpc`;
56
+ // Realtime-streaming capability's WebSocket transport (`/trpc-ws`), used only for
57
+ // subscription-type operations (agentEvaluations.evaluate) — mirrors the webapp's
58
+ // `lib/trpc.ts` split exactly. `connectionParams` carries the same auth the HTTP link
59
+ // sends as headers, since a WebSocket handshake can't carry custom headers.
60
+ const wsClient = createWSClient({
61
+ url: () => `${base.replace(/^http/, "ws")}/trpc-ws`,
62
+ WebSocket: options.WebSocket,
63
+ connectionParams: () => ({
64
+ token: this.#accessToken ?? "",
65
+ workspace: this.#workspace ?? ""
66
+ }),
67
+ lazy: { enabled: true, closeMs: 0 }
68
+ });
52
69
  this.trpc = createTRPCClient({
53
70
  links: [
54
- httpBatchLink({
55
- url,
56
- fetch: options.fetch,
57
- // Read current auth state on every request so a `login()` or
58
- // `useWorkspace()` after construction applies without rebuilding.
59
- headers: () => {
60
- const headers = {};
61
- if (this.#accessToken)
62
- headers.Authorization = `Bearer ${this.#accessToken}`;
63
- if (this.#workspace)
64
- headers[WORKSPACE_HEADER] = this.#workspace;
65
- return headers;
66
- }
71
+ splitLink({
72
+ condition: (op) => op.type === "subscription",
73
+ true: wsLink({ client: wsClient }),
74
+ false: httpBatchLink({
75
+ url,
76
+ fetch: options.fetch,
77
+ // Read current auth state on every request so a `login()` or
78
+ // `useWorkspace()` after construction applies without rebuilding.
79
+ headers: () => {
80
+ const headers = {};
81
+ if (this.#accessToken)
82
+ headers.Authorization = `Bearer ${this.#accessToken}`;
83
+ if (this.#workspace)
84
+ headers[WORKSPACE_HEADER] = this.#workspace;
85
+ return headers;
86
+ }
87
+ })
67
88
  })
68
89
  ]
69
90
  });
70
91
  this.portfolios = new PortfoliosResource(this.trpc, (fn) => this.request(fn));
71
92
  this.agentTemplates = new AgentTemplatesResource(this.trpc, (fn) => this.request(fn));
93
+ this.agentEvaluations = new AgentEvaluationsResource(this.trpc);
72
94
  }
73
95
  /**
74
96
  * Run a request, transparently refreshing the access token once on an
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { Client } from "./client.js";
10
10
  export type { ClientOptions, Tokens } from "./client.js";
11
11
  export { PortfoliosResource } from "./resources/portfolios.js";
12
12
  export { AgentTemplatesResource } from "./resources/agentTemplates.js";
13
+ export { AgentEvaluationsResource } from "./resources/agentEvaluations.js";
13
14
  export { listPortfoliosSchema, getPortfolioSchema, listAccountsSchema } from "./schemas.js";
14
15
  export type { ListPortfoliosInput, GetPortfolioInput, ListAccountsInput } from "./schemas.js";
15
16
  export { listAgentTemplatesSchema, getAgentTemplateSchema } from "./schemas.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAKvE,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAInF,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAK3E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC5F,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAInF,OAAO,EAAE,eAAe,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@
9
9
  export { Client } from "./client.js";
10
10
  export { PortfoliosResource } from "./resources/portfolios.js";
11
11
  export { AgentTemplatesResource } from "./resources/agentTemplates.js";
12
+ export { AgentEvaluationsResource } from "./resources/agentEvaluations.js";
12
13
  // Schemas for inputs the apiserver defines inline (not in `@qcobro/common`), so
13
14
  // other packages (e.g. `@qcobro/mcp`, `@qcobro/ctl`) can validate against the
14
15
  // same rules the SDK itself uses, without duplicating them.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,gFAAgF;AAChF,8EAA8E;AAC9E,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGhF,0EAA0E;AAC1E,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAmB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,gFAAgF;AAChF,8EAA8E;AAC9E,4DAA4D;AAC5D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGhF,0EAA0E;AAC1E,sEAAsE;AACtE,OAAO,EAAE,eAAe,EAAmB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { CreateTRPCClient } from "@trpc/client";
2
+ import type { AppRouter } from "@qcobro/apiserver";
3
+ import { type EvalEvent } from "@qcobro/common";
4
+ type RouterClient = CreateTRPCClient<AppRouter>;
5
+ type AgentEvaluations = RouterClient["agentEvaluations"];
6
+ type EvaluateInput = Parameters<AgentEvaluations["evaluate"]["subscribe"]>[0];
7
+ /**
8
+ * Agent evaluation operations.
9
+ *
10
+ * `evaluate` starts a streaming evaluation of a `VOICE_AI`, `EMAIL`, or `WHATSAPP` agent —
11
+ * either an existing template by id (with caller-supplied scenarios) or a YAML eval
12
+ * template (agent definition + its own embedded scenarios, never persisted) — and returns
13
+ * an async iterable of events, consumed with `for await`. It is distinct from and unrelated
14
+ * to `@qcobro/common`'s `evaluate(events, parameters)` (the `engine-scorecard` capability),
15
+ * which judges dispatch/engine behavior, not agent conversation logic.
16
+ *
17
+ * Streams over the `realtime-streaming` WebSocket transport (`/trpc-ws`), the same one the
18
+ * webapp's Gestiones list uses — tRPC's callback-based `.subscribe` is adapted into an
19
+ * async generator here so callers never touch that transport directly.
20
+ *
21
+ * Obtain an instance via `client.agentEvaluations`; do not construct it directly.
22
+ */
23
+ export declare class AgentEvaluationsResource {
24
+ #private;
25
+ /** @internal */
26
+ constructor(trpc: RouterClient);
27
+ evaluate(input: EvaluateInput): AsyncGenerator<EvalEvent>;
28
+ }
29
+ export {};
30
+ //# sourceMappingURL=agentEvaluations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentEvaluations.d.ts","sourceRoot":"","sources":["../../src/resources/agentEvaluations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGrE,KAAK,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAChD,KAAK,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;AACzD,KAAK,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9E;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,wBAAwB;;IAGnC,gBAAgB;gBACJ,IAAI,EAAE,YAAY;IAIvB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CAAC,SAAS,CAAC;CAgDjE"}
@@ -0,0 +1,72 @@
1
+ import { evaluateInputSchema } from "@qcobro/common";
2
+ import { parse } from "../validate.js";
3
+ /**
4
+ * Agent evaluation operations.
5
+ *
6
+ * `evaluate` starts a streaming evaluation of a `VOICE_AI`, `EMAIL`, or `WHATSAPP` agent —
7
+ * either an existing template by id (with caller-supplied scenarios) or a YAML eval
8
+ * template (agent definition + its own embedded scenarios, never persisted) — and returns
9
+ * an async iterable of events, consumed with `for await`. It is distinct from and unrelated
10
+ * to `@qcobro/common`'s `evaluate(events, parameters)` (the `engine-scorecard` capability),
11
+ * which judges dispatch/engine behavior, not agent conversation logic.
12
+ *
13
+ * Streams over the `realtime-streaming` WebSocket transport (`/trpc-ws`), the same one the
14
+ * webapp's Gestiones list uses — tRPC's callback-based `.subscribe` is adapted into an
15
+ * async generator here so callers never touch that transport directly.
16
+ *
17
+ * Obtain an instance via `client.agentEvaluations`; do not construct it directly.
18
+ */
19
+ export class AgentEvaluationsResource {
20
+ #trpc;
21
+ /** @internal */
22
+ constructor(trpc) {
23
+ this.#trpc = trpc;
24
+ }
25
+ async *evaluate(input) {
26
+ const parsed = parse(evaluateInputSchema, input);
27
+ const queue = [];
28
+ let waiter = null;
29
+ let done = false;
30
+ let failure = null;
31
+ const wake = () => {
32
+ const resolve = waiter;
33
+ waiter = null;
34
+ resolve?.();
35
+ };
36
+ const subscription = this.#trpc.agentEvaluations.evaluate.subscribe(parsed, {
37
+ onData: (event) => {
38
+ queue.push(event);
39
+ wake();
40
+ },
41
+ onError: (err) => {
42
+ failure = err;
43
+ done = true;
44
+ wake();
45
+ },
46
+ onComplete: () => {
47
+ done = true;
48
+ wake();
49
+ }
50
+ });
51
+ try {
52
+ for (;;) {
53
+ if (queue.length > 0) {
54
+ yield queue.shift();
55
+ continue;
56
+ }
57
+ if (done) {
58
+ if (failure)
59
+ throw failure;
60
+ return;
61
+ }
62
+ await new Promise((resolve) => {
63
+ waiter = resolve;
64
+ });
65
+ }
66
+ }
67
+ finally {
68
+ subscription.unsubscribe();
69
+ }
70
+ }
71
+ }
72
+ //# sourceMappingURL=agentEvaluations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentEvaluations.js","sourceRoot":"","sources":["../../src/resources/agentEvaluations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAkB,MAAM,gBAAgB,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAMvC;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,wBAAwB;IAC1B,KAAK,CAAe;IAE7B,gBAAgB;IAChB,YAAY,IAAkB;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAoB;QAClC,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,EAAE,KAAK,CAAkB,CAAC;QAElE,MAAM,KAAK,GAAgB,EAAE,CAAC;QAC9B,IAAI,MAAM,GAAwB,IAAI,CAAC;QACvC,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,OAAO,GAAY,IAAI,CAAC;QAE5B,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,MAAM,OAAO,GAAG,MAAM,CAAC;YACvB,MAAM,GAAG,IAAI,CAAC;YACd,OAAO,EAAE,EAAE,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE;YAC1E,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;gBAChB,KAAK,CAAC,IAAI,CAAC,KAAkB,CAAC,CAAC;gBAC/B,IAAI,EAAE,CAAC;YACT,CAAC;YACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACf,OAAO,GAAG,GAAG,CAAC;gBACd,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,EAAE,CAAC;YACT,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBACf,IAAI,GAAG,IAAI,CAAC;gBACZ,IAAI,EAAE,CAAC;YACT,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,SAAS,CAAC;gBACR,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,MAAM,KAAK,CAAC,KAAK,EAAe,CAAC;oBACjC,SAAS;gBACX,CAAC;gBACD,IAAI,IAAI,EAAE,CAAC;oBACT,IAAI,OAAO;wBAAE,MAAM,OAAO,CAAC;oBAC3B,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;oBAClC,MAAM,GAAG,OAAO,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -7,6 +7,7 @@ type ListInput = Parameters<AgentTemplates["list"]["query"]>[0];
7
7
  type GetInput = Parameters<AgentTemplates["get"]["query"]>[0];
8
8
  type CreateInput = Parameters<AgentTemplates["create"]["mutate"]>[0];
9
9
  type SyncInput = Parameters<AgentTemplates["sync"]["mutate"]>[0];
10
+ type PreviewInput = Parameters<AgentTemplates["preview"]["query"]>[0];
10
11
  /** Runs a request, transparently refreshing + replaying once on `UNAUTHORIZED`. */
11
12
  type RequestRunner = <T>(fn: () => Promise<T>) => Promise<T>;
12
13
  /**
@@ -17,8 +18,9 @@ type RequestRunner = <T>(fn: () => Promise<T>) => Promise<T>;
17
18
  * shared `@qcobro/common` schemas before any request is sent — invalid input
18
19
  * throws a {@link ValidationError} and never reaches the network.
19
20
  *
20
- * `sync` re-attempts a voice template's Fonoster sync; it is not a
21
- * conversational-intelligence evaluation QCobro has no such feature today.
21
+ * `sync` re-attempts a voice template's Fonoster sync it is not a
22
+ * conversational-intelligence evaluation. For that, see `client.agentEvaluations.evaluate`
23
+ * (VOICE_AI/EMAIL/WHATSAPP) and `preview` below (SMS/VOICE_PRERECORDED render-only preview).
22
24
  *
23
25
  * Obtain an instance via `client.agentTemplates`; do not construct it directly.
24
26
  */
@@ -31,10 +33,10 @@ export declare class AgentTemplatesResource {
31
33
  type: import("@prisma/client").$Enums.AgentType;
32
34
  id: string;
33
35
  name: string;
34
- workspaceRef: string;
35
36
  archivedAt: string | null;
36
37
  createdAt: string;
37
38
  updatedAt: string;
39
+ workspaceRef: string;
38
40
  }[]>;
39
41
  /** Get a single agent template by id within the active workspace. */
40
42
  get(input: GetInput): Promise<{
@@ -43,11 +45,11 @@ export declare class AgentTemplatesResource {
43
45
  campaigns: {
44
46
  id: string;
45
47
  name: string;
46
- workspaceRef: string;
47
48
  createdAt: string;
48
49
  updatedAt: string;
49
- status: import("@prisma/client").$Enums.CampaignStatus;
50
+ workspaceRef: string;
50
51
  agentTemplateId: string;
52
+ status: import("@prisma/client").$Enums.CampaignStatus;
51
53
  pauseReason: import("@prisma/client").$Enums.CampaignPauseReason | null;
52
54
  startDate: string;
53
55
  endDate: string | null;
@@ -59,47 +61,47 @@ export declare class AgentTemplatesResource {
59
61
  whatsAppSenderNumberId: string | null;
60
62
  }[];
61
63
  name: string;
62
- workspaceRef: string;
63
64
  archivedAt: string | null;
64
65
  createdAt: string;
65
66
  updatedAt: string;
67
+ workspaceRef: string;
66
68
  voiceAiConfig: {
67
69
  language: string;
68
- firstMessage: string | null;
69
- voice: string;
70
+ templateId: string;
71
+ fonosterAppName: string;
70
72
  fonosterAppRef: string | null;
73
+ voice: string;
71
74
  systemPrompt: string;
72
- fonosterAppName: string;
73
- templateId: string;
75
+ firstMessage: string | null;
74
76
  } | null;
75
77
  voicePrerecordedConfig: {
76
78
  language: string;
77
- voice: string;
78
- fonosterAppRef: string | null;
79
+ templateId: string;
79
80
  fonosterAppName: string;
81
+ fonosterAppRef: string | null;
82
+ voice: string;
80
83
  script: string;
81
- templateId: string;
82
84
  } | null;
83
85
  smsConfig: {
86
+ templateId: string;
84
87
  messageBody: string;
85
88
  senderId: string | null;
86
- templateId: string;
87
89
  } | null;
88
90
  emailConfig: {
89
91
  fromEmail: string;
90
92
  fromName: string;
91
- subject: string;
93
+ templateId: string;
92
94
  systemPrompt: string;
93
95
  messageBody: string;
96
+ subject: string;
94
97
  maxReplies: number | null;
95
- templateId: string;
96
98
  } | null;
97
99
  whatsAppConfig: {
100
+ templateId: string;
98
101
  systemPrompt: string;
99
102
  messageBody: string;
100
103
  maxReplies: number | null;
101
104
  templateName: string;
102
- templateId: string;
103
105
  } | null;
104
106
  }>;
105
107
  /** Create an agent template in the active workspace. `type` determines its required fields. */
@@ -107,10 +109,10 @@ export declare class AgentTemplatesResource {
107
109
  type: import("@qcobro/common").AgentType;
108
110
  id: string;
109
111
  name: string;
110
- workspaceRef: string;
111
112
  archivedAt: string | null;
112
113
  createdAt: string;
113
114
  updatedAt: string;
115
+ workspaceRef: string;
114
116
  }>;
115
117
  /**
116
118
  * Manually re-attempt the Fonoster sync for a voice agent template.
@@ -122,10 +124,18 @@ export declare class AgentTemplatesResource {
122
124
  type: import("@qcobro/common").AgentType;
123
125
  id: string;
124
126
  name: string;
125
- workspaceRef: string;
126
127
  archivedAt: string | null;
127
128
  createdAt: string;
128
129
  updatedAt: string;
130
+ workspaceRef: string;
131
+ }>;
132
+ /**
133
+ * Render an `SMS`/`VOICE_PRERECORDED` template's message body or script against a
134
+ * sample account — no conversation, no streaming. Accepts either an existing template
135
+ * by id or a not-yet-created YAML definition (both alongside a sample `account`).
136
+ */
137
+ preview(input: PreviewInput): Promise<{
138
+ rendered: string;
129
139
  }>;
130
140
  }
131
141
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"agentTemplates.d.ts","sourceRoot":"","sources":["../../src/resources/agentTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASnD,KAAK,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAChD,KAAK,cAAc,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAErD,oFAAoF;AACpF,KAAK,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,KAAK,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,KAAK,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AASjE,mFAAmF;AACnF,KAAK,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7D;;;;;;;;;;;;GAYG;AACH,qBAAa,sBAAsB;;IAIjC,gBAAgB;gBACJ,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa;IAKtD,kGAAkG;IAC5F,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;;;;;;;;;IAK5B,qEAAqE;IAC/D,GAAG,CAAC,KAAK,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKzB,+FAA+F;IACzF,MAAM,CAAC,KAAK,EAAE,WAAW;;;;;;;;;IAK/B;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,SAAS;;;;;;;;;CAI5B"}
1
+ {"version":3,"file":"agentTemplates.d.ts","sourceRoot":"","sources":["../../src/resources/agentTemplates.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASnD,KAAK,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAChD,KAAK,cAAc,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC;AAErD,oFAAoF;AACpF,KAAK,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAChE,KAAK,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9D,KAAK,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrE,KAAK,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,KAAK,YAAY,GAAG,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtE,mFAAmF;AACnF,KAAK,aAAa,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,qBAAa,sBAAsB;;IAIjC,gBAAgB;gBACJ,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa;IAKtD,kGAAkG;IAC5F,IAAI,CAAC,KAAK,CAAC,EAAE,SAAS;;;;;;;;;IAK5B,qEAAqE;IAC/D,GAAG,CAAC,KAAK,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAKzB,+FAA+F;IACzF,MAAM,CAAC,KAAK,EAAE,WAAW;;;;;;;;;IAK/B;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,SAAS;;;;;;;;;IAK3B;;;;OAIG;IACG,OAAO,CAAC,KAAK,EAAE,YAAY;;;CAIlC"}
@@ -1,12 +1,6 @@
1
- import { createAgentTemplateSchema, syncAgentTemplateSchema, ValidationError } from "@qcobro/common";
1
+ import { createAgentTemplateSchema, previewInputSchema, syncAgentTemplateSchema } from "@qcobro/common";
2
2
  import { listAgentTemplatesSchema, getAgentTemplateSchema } from "../schemas.js";
3
- /** Validate `input` against `schema`, throwing a structured {@link ValidationError} on failure. */
4
- function parse(schema, input) {
5
- const result = schema.safeParse(input);
6
- if (!result.success)
7
- throw new ValidationError(result.error);
8
- return result.data;
9
- }
3
+ import { parse } from "../validate.js";
10
4
  /**
11
5
  * Agent template operations.
12
6
  *
@@ -15,8 +9,9 @@ function parse(schema, input) {
15
9
  * shared `@qcobro/common` schemas before any request is sent — invalid input
16
10
  * throws a {@link ValidationError} and never reaches the network.
17
11
  *
18
- * `sync` re-attempts a voice template's Fonoster sync; it is not a
19
- * conversational-intelligence evaluation QCobro has no such feature today.
12
+ * `sync` re-attempts a voice template's Fonoster sync it is not a
13
+ * conversational-intelligence evaluation. For that, see `client.agentEvaluations.evaluate`
14
+ * (VOICE_AI/EMAIL/WHATSAPP) and `preview` below (SMS/VOICE_PRERECORDED render-only preview).
20
15
  *
21
16
  * Obtain an instance via `client.agentTemplates`; do not construct it directly.
22
17
  */
@@ -53,5 +48,14 @@ export class AgentTemplatesResource {
53
48
  const parsed = parse(syncAgentTemplateSchema, input);
54
49
  return this.#request(() => this.#trpc.agentTemplates.sync.mutate(parsed));
55
50
  }
51
+ /**
52
+ * Render an `SMS`/`VOICE_PRERECORDED` template's message body or script against a
53
+ * sample account — no conversation, no streaming. Accepts either an existing template
54
+ * by id or a not-yet-created YAML definition (both alongside a sample `account`).
55
+ */
56
+ async preview(input) {
57
+ const parsed = parse(previewInputSchema, input);
58
+ return this.#request(() => this.#trpc.agentTemplates.preview.query(parsed));
59
+ }
56
60
  }
57
61
  //# sourceMappingURL=agentTemplates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agentTemplates.js","sourceRoot":"","sources":["../../src/resources/agentTemplates.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAWjF,mGAAmG;AACnG,SAAS,KAAK,CAA4B,MAAe,EAAE,KAAc;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAKD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,sBAAsB;IACxB,KAAK,CAAe;IACpB,QAAQ,CAAgB;IAEjC,gBAAgB;IAChB,YAAY,IAAkB,EAAE,OAAsB;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAc,CAAC;QACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,GAAG,CAAC,KAAe;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAa,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAgB,CAAC;QACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,KAAgB;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAc,CAAC;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;CACF"}
1
+ {"version":3,"file":"agentTemplates.js","sourceRoot":"","sources":["../../src/resources/agentTemplates.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACjF,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAevC;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,sBAAsB;IACxB,KAAK,CAAe;IACpB,QAAQ,CAAgB;IAEjC,gBAAgB;IAChB,YAAY,IAAkB,EAAE,OAAsB;QACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,IAAI,CAAC,KAAiB;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAc,CAAC;QACnE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,qEAAqE;IACrE,KAAK,CAAC,GAAG,CAAC,KAAe;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAa,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,+FAA+F;IAC/F,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAgB,CAAC;QACtE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,KAAgB;QACzB,MAAM,MAAM,GAAG,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAc,CAAC;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,MAAM,MAAM,GAAG,KAAK,CAAC,kBAAkB,EAAE,KAAK,CAAiB,CAAC;QAChE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -30,71 +30,71 @@ export declare class PortfoliosResource {
30
30
  list(input?: ListInput): Promise<{
31
31
  id: string;
32
32
  name: string;
33
- workspaceRef: string;
34
33
  archivedAt: string | null;
35
34
  createdAt: string;
36
35
  updatedAt: string;
36
+ workspaceRef: string;
37
+ clientId: string;
37
38
  accountCount: number;
39
+ totalOutstandingBalance: number;
38
40
  recoveredAmount: number;
39
41
  lastSyncedAt: string | null;
40
- clientId: string;
41
- totalOutstandingBalance: number;
42
42
  }[]>;
43
43
  /** Get a single portfolio by id within the active workspace. */
44
44
  get(input: GetInput): Promise<{
45
45
  id: string;
46
46
  name: string;
47
- workspaceRef: string;
48
47
  archivedAt: string | null;
49
48
  createdAt: string;
50
49
  updatedAt: string;
50
+ workspaceRef: string;
51
+ clientId: string;
51
52
  accountCount: number;
53
+ totalOutstandingBalance: number;
52
54
  recoveredAmount: number;
53
55
  lastSyncedAt: string | null;
54
- clientId: string;
55
- totalOutstandingBalance: number;
56
56
  }>;
57
57
  /** Create a portfolio in the active workspace. */
58
58
  create(input: CreateInput): Promise<{
59
59
  id: string;
60
60
  name: string;
61
- workspaceRef: string;
62
61
  archivedAt: string | null;
63
62
  createdAt: string;
64
63
  updatedAt: string;
64
+ workspaceRef: string;
65
+ clientId: string;
65
66
  accountCount: number;
67
+ totalOutstandingBalance: number;
66
68
  recoveredAmount: number;
67
69
  lastSyncedAt: string | null;
68
- clientId: string;
69
- totalOutstandingBalance: number;
70
70
  }>;
71
71
  /** Update a portfolio. Set `archived: true` to archive it, `false` to restore it. */
72
72
  update(input: UpdateInput): Promise<{
73
73
  id: string;
74
74
  name: string;
75
- workspaceRef: string;
76
75
  archivedAt: string | null;
77
76
  createdAt: string;
78
77
  updatedAt: string;
78
+ workspaceRef: string;
79
+ clientId: string;
79
80
  accountCount: number;
81
+ totalOutstandingBalance: number;
80
82
  recoveredAmount: number;
81
83
  lastSyncedAt: string | null;
82
- clientId: string;
83
- totalOutstandingBalance: number;
84
84
  }>;
85
85
  /** Delete a portfolio in the active workspace. */
86
86
  delete(input: DeleteInput): Promise<{
87
87
  id: string;
88
88
  name: string;
89
- workspaceRef: string;
90
89
  archivedAt: string | null;
91
90
  createdAt: string;
92
91
  updatedAt: string;
92
+ workspaceRef: string;
93
+ clientId: string;
93
94
  accountCount: number;
95
+ totalOutstandingBalance: number;
94
96
  recoveredAmount: number;
95
97
  lastSyncedAt: string | null;
96
- clientId: string;
97
- totalOutstandingBalance: number;
98
98
  }>;
99
99
  /** List a page of a portfolio's accounts, with the total count. */
100
100
  listAccounts(input: ListAccountsInput): Promise<{
@@ -104,11 +104,10 @@ export declare class PortfoliosResource {
104
104
  archivedAt: string | null;
105
105
  createdAt: string;
106
106
  updatedAt: string;
107
- email: string | null;
108
- outstandingBalance: number;
109
- phone: string | null;
110
107
  externalId: string;
111
108
  fullName: string;
109
+ phone: string | null;
110
+ email: string | null;
112
111
  preferredLanguage: string | null;
113
112
  bestTimeToCall: string | null;
114
113
  customerSegment: string | null;
@@ -116,6 +115,7 @@ export declare class PortfoliosResource {
116
115
  termsAmount: number;
117
116
  termsFrequency: string | null;
118
117
  termsLength: number;
118
+ outstandingBalance: number;
119
119
  daysPastDue: number;
120
120
  missedInstallments: number;
121
121
  lastPaymentDate: string | null;
@@ -0,0 +1,4 @@
1
+ import { z } from "zod";
2
+ /** Validate `input` against `schema`, throwing a structured {@link ValidationError} on failure. */
3
+ export declare function parse<TSchema extends z.ZodType>(schema: TSchema, input: unknown): z.infer<TSchema>;
4
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,mGAAmG;AACnG,wBAAgB,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC,OAAO,EAC7C,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,GACb,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAIlB"}
@@ -0,0 +1,9 @@
1
+ import { ValidationError } from "@qcobro/common";
2
+ /** Validate `input` against `schema`, throwing a structured {@link ValidationError} on failure. */
3
+ export function parse(schema, input) {
4
+ const result = schema.safeParse(input);
5
+ if (!result.success)
6
+ throw new ValidationError(result.error);
7
+ return result.data;
8
+ }
9
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,mGAAmG;AACnG,MAAM,UAAU,KAAK,CACnB,MAAe,EACf,KAAc;IAEd,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qcobro/sdk",
3
- "version": "1.25.0",
3
+ "version": "1.27.0",
4
4
  "description": "Developer-friendly TypeScript SDK for the QCobro API.",
5
5
  "type": "module",
6
6
  "exports": {
@@ -20,12 +20,12 @@
20
20
  "docs": "typedoc"
21
21
  },
22
22
  "dependencies": {
23
- "@qcobro/common": "^1.24.1",
23
+ "@qcobro/common": "^1.27.0",
24
24
  "@trpc/client": "^11.0.0",
25
25
  "zod": "^4.0.0"
26
26
  },
27
27
  "devDependencies": {
28
- "@qcobro/apiserver": "^1.24.1",
28
+ "@qcobro/apiserver": "^1.27.0",
29
29
  "@trpc/server": "^11.0.0",
30
30
  "@types/express": "^5.0.0",
31
31
  "express": "^5.0.0",