@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 +11 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +38 -16
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/resources/agentEvaluations.d.ts +30 -0
- package/dist/resources/agentEvaluations.d.ts.map +1 -0
- package/dist/resources/agentEvaluations.js +72 -0
- package/dist/resources/agentEvaluations.js.map +1 -0
- package/dist/resources/agentTemplates.d.ts +29 -19
- package/dist/resources/agentTemplates.d.ts.map +1 -1
- package/dist/resources/agentTemplates.js +14 -10
- package/dist/resources/agentTemplates.js.map +1 -1
- package/dist/resources/portfolios.d.ts +18 -18
- package/dist/validate.d.ts +4 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +9 -0
- package/dist/validate.js.map +1 -0
- package/package.json +3 -3
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
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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;
|
|
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
|
|
21
|
-
* conversational-intelligence evaluation
|
|
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
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
+
templateId: string;
|
|
71
|
+
fonosterAppName: string;
|
|
70
72
|
fonosterAppRef: string | null;
|
|
73
|
+
voice: string;
|
|
71
74
|
systemPrompt: string;
|
|
72
|
-
|
|
73
|
-
templateId: string;
|
|
75
|
+
firstMessage: string | null;
|
|
74
76
|
} | null;
|
|
75
77
|
voicePrerecordedConfig: {
|
|
76
78
|
language: string;
|
|
77
|
-
|
|
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
|
-
|
|
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;
|
|
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,
|
|
1
|
+
import { createAgentTemplateSchema, previewInputSchema, syncAgentTemplateSchema } from "@qcobro/common";
|
|
2
2
|
import { listAgentTemplatesSchema, getAgentTemplateSchema } from "../schemas.js";
|
|
3
|
-
|
|
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
|
|
19
|
-
* conversational-intelligence evaluation
|
|
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":"
|
|
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"}
|
package/dist/validate.js
ADDED
|
@@ -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.
|
|
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.
|
|
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.
|
|
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",
|