@caltra/client 0.2.0 → 0.4.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/README.md +15 -20
- package/dist/authorization_code_provider.d.ts +9 -0
- package/dist/authorization_code_provider.d.ts.map +1 -0
- package/dist/authorization_code_provider.js +26 -0
- package/dist/authorization_code_provider.js.map +1 -0
- package/dist/client.d.ts +7 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +41 -5
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sessions.d.ts +10 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +11 -0
- package/dist/sessions.js.map +1 -0
- package/dist/token_provider.d.ts +15 -0
- package/dist/token_provider.d.ts.map +1 -0
- package/dist/{handoff_token_provider.js → token_provider.js} +15 -19
- package/dist/token_provider.js.map +1 -0
- package/dist/types.d.ts +14 -10
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/handoff_token_provider.d.ts +0 -18
- package/dist/handoff_token_provider.d.ts.map +0 -1
- package/dist/handoff_token_provider.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,36 +11,31 @@ npm install @caltra/client
|
|
|
11
11
|
## Use
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
|
-
import { CaltraClient
|
|
15
|
-
|
|
16
|
-
const handoffs = new CaltraHandoffTokenProvider({
|
|
17
|
-
apiUrl: "https://api.caltra.dev",
|
|
18
|
-
handoffProvider: async () => {
|
|
19
|
-
const response = await fetch("/api/caltra/handoff", { method: "POST" });
|
|
20
|
-
if (!response.ok) throw new Error("Caltra authentication failed.");
|
|
21
|
-
return (await response.json() as { handoff_code: string }).handoff_code;
|
|
22
|
-
},
|
|
23
|
-
});
|
|
14
|
+
import { CaltraClient } from "@caltra/client";
|
|
24
15
|
|
|
25
16
|
const client = new CaltraClient({
|
|
17
|
+
// Optional. Production defaults to https://api.caltra.dev.
|
|
26
18
|
apiUrl: "https://api.caltra.dev",
|
|
27
|
-
|
|
28
|
-
tokenProvider: async () => await handoffs.getToken(),
|
|
19
|
+
workspaceExternalId: piriaOrganization.id,
|
|
29
20
|
});
|
|
30
21
|
|
|
31
|
-
const
|
|
32
|
-
|
|
22
|
+
const session = await client.sessions.get({
|
|
23
|
+
externalId: "primary",
|
|
24
|
+
createIfMissing: { agentExternalId: "personal-assistant" },
|
|
25
|
+
});
|
|
33
26
|
const events = await client.openSessionEvents(session.id);
|
|
34
27
|
```
|
|
35
28
|
|
|
36
|
-
|
|
37
|
-
`
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
By default the SDK requests authorization from the same-origin `/api/caltra/authorize` route. Set
|
|
30
|
+
`authorizationRoute` to override it, or provide `authorizationCodeProvider` for a custom transport.
|
|
31
|
+
The server route authenticates the current user, uses `@caltra/server` to create a client
|
|
32
|
+
authorization with the stable external user ID and exact browser origin, and returns only
|
|
33
|
+
`authorization_code`. The SDK authenticates each code once at `/caltra/v1/auth/authenticate`,
|
|
34
|
+
caches only the resulting short-lived client token in memory, and requests a new authorization at
|
|
35
|
+
the server-provided refresh time. Never embed a Caltra server API key in a browser bundle.
|
|
41
36
|
|
|
42
37
|
The organization-level Clerk connection configures the upstream identity boundary separately. Until
|
|
43
38
|
direct Clerk exchange becomes available for SDK sessions, browser clients still use this
|
|
44
|
-
provider-neutral
|
|
39
|
+
provider-neutral client-authorization contract.
|
|
45
40
|
|
|
46
41
|
The package is ESM-only. See the [Caltra SDK repository](https://github.com/caltra-dev/caltra-sdk) for development and integration-app instructions.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Requests one-time authorization codes from the host application's same-origin server route. */
|
|
2
|
+
export declare class CaltraAuthorizationCodeEndpointProvider {
|
|
3
|
+
private readonly fetchImplementation;
|
|
4
|
+
private readonly route;
|
|
5
|
+
private readonly workspaceExternalId;
|
|
6
|
+
constructor(fetchImplementation: typeof fetch, route: string, workspaceExternalId: string);
|
|
7
|
+
get(): Promise<string>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=authorization_code_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization_code_provider.d.ts","sourceRoot":"","sources":["../src/authorization_code_provider.ts"],"names":[],"mappings":"AAKA,kGAAkG;AAClG,qBAAa,uCAAuC;IAEhD,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAFnB,mBAAmB,EAAE,OAAO,KAAK,EACjC,KAAK,EAAE,MAAM,EACb,mBAAmB,EAAE,MAAM;IAGxC,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;CAU7B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { CaltraApiError } from "./error.js";
|
|
3
|
+
const AuthorizationSchema = z.object({ authorization_code: z.string().min(1) }).passthrough();
|
|
4
|
+
/** Requests one-time authorization codes from the host application's same-origin server route. */
|
|
5
|
+
export class CaltraAuthorizationCodeEndpointProvider {
|
|
6
|
+
fetchImplementation;
|
|
7
|
+
route;
|
|
8
|
+
workspaceExternalId;
|
|
9
|
+
constructor(fetchImplementation, route, workspaceExternalId) {
|
|
10
|
+
this.fetchImplementation = fetchImplementation;
|
|
11
|
+
this.route = route;
|
|
12
|
+
this.workspaceExternalId = workspaceExternalId;
|
|
13
|
+
}
|
|
14
|
+
async get() {
|
|
15
|
+
const response = await this.fetchImplementation(this.route, {
|
|
16
|
+
body: JSON.stringify({ workspace_external_id: this.workspaceExternalId }),
|
|
17
|
+
credentials: "include",
|
|
18
|
+
headers: { "content-type": "application/json" },
|
|
19
|
+
method: "POST",
|
|
20
|
+
});
|
|
21
|
+
if (!response.ok)
|
|
22
|
+
throw await CaltraApiError.fromResponse(response);
|
|
23
|
+
return AuthorizationSchema.parse(await response.json()).authorization_code;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=authorization_code_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization_code_provider.js","sourceRoot":"","sources":["../src/authorization_code_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AAE9F,kGAAkG;AAClG,MAAM,OAAO,uCAAuC;IAE/B;IACA;IACA;IAHnB,YACmB,mBAAiC,EACjC,KAAa,EACb,mBAA2B;QAF3B,wBAAmB,GAAnB,mBAAmB,CAAc;QACjC,UAAK,GAAL,KAAK,CAAQ;QACb,wBAAmB,GAAnB,mBAAmB,CAAQ;IAC3C,CAAC;IAEJ,KAAK,CAAC,GAAG;QACP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,EAAE;YAC1D,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,qBAAqB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACzE,WAAW,EAAE,SAAS;YACtB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,MAAM,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpE,OAAO,mBAAmB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,kBAAkB,CAAC;IAC7E,CAAC;CACF"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { CaltraSessionEventConnection } from "./event_connection.js";
|
|
2
|
-
import
|
|
2
|
+
import { CaltraSessionsClient } from "./sessions.js";
|
|
3
|
+
import type { CaltraAgent, CaltraClientOptions, CaltraMessageSubmission, CaltraPage, CaltraPageInput, CaltraSession, CaltraSessionCreateIfMissing, CaltraSessionLookup, CaltraSessionMessage } from "./types.js";
|
|
3
4
|
/** Calls the versioned Caltra Client API without coupling applications to a React runtime. */
|
|
4
5
|
export declare class CaltraClient {
|
|
5
|
-
|
|
6
|
+
readonly sessions: CaltraSessionsClient;
|
|
6
7
|
private readonly apiUrl;
|
|
7
8
|
private readonly fetchImplementation;
|
|
9
|
+
private readonly tokenProvider;
|
|
8
10
|
constructor(options: CaltraClientOptions);
|
|
9
11
|
listAgents(input?: CaltraPageInput): Promise<CaltraPage<CaltraAgent>>;
|
|
10
12
|
listSessions(input?: CaltraPageInput): Promise<CaltraPage<CaltraSession>>;
|
|
11
13
|
createSession(input: {
|
|
12
14
|
agentId: string;
|
|
13
15
|
}): Promise<CaltraSession>;
|
|
16
|
+
getSession(input: CaltraSessionCreateIfMissing): Promise<CaltraSession>;
|
|
17
|
+
getSession(input: CaltraSessionLookup): Promise<CaltraSession | null>;
|
|
14
18
|
listSessionMessages(sessionId: string, input?: CaltraPageInput): Promise<CaltraPage<CaltraSessionMessage>>;
|
|
15
19
|
openSessionEvents(sessionId: string, options?: {
|
|
16
20
|
signal?: AbortSignal;
|
|
@@ -23,5 +27,6 @@ export declare class CaltraClient {
|
|
|
23
27
|
private request;
|
|
24
28
|
private headers;
|
|
25
29
|
private url;
|
|
30
|
+
private endpointAuthorizationCodeProvider;
|
|
26
31
|
}
|
|
27
32
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AAGrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EACV,WAAW,EACX,mBAAmB,EACnB,uBAAuB,EACvB,UAAU,EACV,eAAe,EACf,aAAa,EACb,4BAA4B,EAC5B,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAoCpB,8FAA8F;AAC9F,qBAAa,YAAY;IACvB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAe;IACnD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4B;gBAE9C,OAAO,EAAE,mBAAmB;IAalC,UAAU,CAAC,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAIzE,YAAY,CAAC,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAI7E,aAAa,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC;IAQjE,UAAU,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;IACvE,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAuBrE,mBAAmB,CACvB,SAAS,EAAE,MAAM,EACjB,KAAK,GAAE,eAAoB,GAC1B,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;IAQtC,iBAAiB,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACrC,OAAO,CAAC,4BAA4B,CAAC;IAelC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAYzF,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;YAIxB,OAAO;YAWP,OAAO;YAgBP,OAAO;IAMrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,iCAAiC;CAW1C"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { CaltraApiError } from "./error.js";
|
|
3
3
|
import { CaltraSessionEventConnection } from "./event_connection.js";
|
|
4
|
+
import { CaltraClientTokenProvider } from "./token_provider.js";
|
|
5
|
+
import { CaltraAuthorizationCodeEndpointProvider } from "./authorization_code_provider.js";
|
|
6
|
+
import { CaltraSessionsClient } from "./sessions.js";
|
|
4
7
|
const PageSchema = (item) => z.object({
|
|
5
8
|
data: z.array(item),
|
|
6
9
|
next_cursor: z.string().nullable(),
|
|
@@ -14,6 +17,7 @@ const AgentSchema = z.object({
|
|
|
14
17
|
const SessionSchema = z.object({
|
|
15
18
|
agent: z.object({ id: z.string().uuid(), name: z.string() }).strict(),
|
|
16
19
|
created_at: z.string(),
|
|
20
|
+
external_id: z.string().nullable(),
|
|
17
21
|
id: z.string().uuid(),
|
|
18
22
|
status: z.enum(["active", "closed"]),
|
|
19
23
|
updated_at: z.string(),
|
|
@@ -31,13 +35,17 @@ const SubmissionSchema = z.object({
|
|
|
31
35
|
}).strict();
|
|
32
36
|
/** Calls the versioned Caltra Client API without coupling applications to a React runtime. */
|
|
33
37
|
export class CaltraClient {
|
|
34
|
-
|
|
38
|
+
sessions;
|
|
35
39
|
apiUrl;
|
|
36
40
|
fetchImplementation;
|
|
41
|
+
tokenProvider;
|
|
37
42
|
constructor(options) {
|
|
38
|
-
this.
|
|
39
|
-
this.apiUrl = options.apiUrl.replace(/\/+$/, "");
|
|
43
|
+
this.apiUrl = (options.apiUrl ?? "https://api.caltra.dev").replace(/\/+$/, "");
|
|
40
44
|
this.fetchImplementation = options.fetch ?? globalThis.fetch.bind(globalThis);
|
|
45
|
+
const authorizationCodeProvider = options.authorizationCodeProvider
|
|
46
|
+
?? this.endpointAuthorizationCodeProvider(options);
|
|
47
|
+
this.tokenProvider = new CaltraClientTokenProvider(this.apiUrl, this.fetchImplementation, authorizationCodeProvider);
|
|
48
|
+
this.sessions = new CaltraSessionsClient(this);
|
|
41
49
|
}
|
|
42
50
|
async listAgents(input = {}) {
|
|
43
51
|
return await this.getPage("/agents", input, PageSchema(AgentSchema));
|
|
@@ -52,6 +60,27 @@ export class CaltraClient {
|
|
|
52
60
|
method: "POST",
|
|
53
61
|
});
|
|
54
62
|
}
|
|
63
|
+
async getSession(input) {
|
|
64
|
+
const createIfMissing = "createIfMissing" in input ? input.createIfMissing : undefined;
|
|
65
|
+
try {
|
|
66
|
+
return await this.request("/sessions/get", SessionSchema, {
|
|
67
|
+
body: JSON.stringify({
|
|
68
|
+
...(createIfMissing ? {
|
|
69
|
+
create_if_missing: { agent_external_id: createIfMissing.agentExternalId },
|
|
70
|
+
} : {}),
|
|
71
|
+
external_id: input.externalId,
|
|
72
|
+
}),
|
|
73
|
+
headers: { "content-type": "application/json" },
|
|
74
|
+
method: "POST",
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
if (!createIfMissing && error instanceof CaltraApiError
|
|
79
|
+
&& error.status === 404 && error.code === "resource_not_found")
|
|
80
|
+
return null;
|
|
81
|
+
throw error;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
55
84
|
async listSessionMessages(sessionId, input = {}) {
|
|
56
85
|
return await this.getPage(`/sessions/${encodeURIComponent(sessionId)}/messages`, input, PageSchema(MessageSchema));
|
|
57
86
|
}
|
|
@@ -76,7 +105,7 @@ export class CaltraClient {
|
|
|
76
105
|
});
|
|
77
106
|
}
|
|
78
107
|
async invalidateToken() {
|
|
79
|
-
|
|
108
|
+
this.tokenProvider.invalidate();
|
|
80
109
|
}
|
|
81
110
|
async getPage(path, input, schema) {
|
|
82
111
|
const url = this.url(path);
|
|
@@ -97,11 +126,18 @@ export class CaltraClient {
|
|
|
97
126
|
}
|
|
98
127
|
async headers(input) {
|
|
99
128
|
const headers = new Headers(input);
|
|
100
|
-
headers.set("authorization", `Bearer ${await this.
|
|
129
|
+
headers.set("authorization", `Bearer ${await this.tokenProvider.getToken()}`);
|
|
101
130
|
return headers;
|
|
102
131
|
}
|
|
103
132
|
url(path) {
|
|
104
133
|
return new URL(`${this.apiUrl}/client/v1${path}`);
|
|
105
134
|
}
|
|
135
|
+
endpointAuthorizationCodeProvider(options) {
|
|
136
|
+
if (!options.workspaceExternalId) {
|
|
137
|
+
throw new Error("workspaceExternalId is required when authorizationCodeProvider is omitted.");
|
|
138
|
+
}
|
|
139
|
+
const provider = new CaltraAuthorizationCodeEndpointProvider(this.fetchImplementation, options.authorizationRoute ?? "/api/caltra/authorize", options.workspaceExternalId);
|
|
140
|
+
return async () => await provider.get();
|
|
141
|
+
}
|
|
106
142
|
}
|
|
107
143
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { CaltraClient } from "./client.js";
|
|
2
|
+
export { CaltraSessionsClient } from "./sessions.js";
|
|
2
3
|
export { CaltraApiError } from "./error.js";
|
|
3
4
|
export { CaltraSessionEventConnection } from "./event_connection.js";
|
|
4
|
-
export {
|
|
5
|
-
export type { CaltraAgent, CaltraApiProblem, CaltraClientOptions, CaltraHandoffProvider, CaltraHandoffTokenProviderOptions, CaltraMessageCompletedEvent, CaltraMessageDeltaEvent, CaltraMessageStartedEvent, CaltraMessageSubmission, CaltraPage, CaltraPageInput, CaltraSession, CaltraSessionEvent, CaltraSessionMessage, CaltraTokenProvider, CaltraTokenConfiguration, } from "./types.js";
|
|
5
|
+
export type { CaltraAgent, CaltraApiProblem, CaltraAuthorizationCodeProvider, CaltraClientOptions, CaltraMessageCompletedEvent, CaltraMessageDeltaEvent, CaltraMessageStartedEvent, CaltraMessageSubmission, CaltraPage, CaltraPageInput, CaltraSession, CaltraSessionCreateIfMissing, CaltraSessionEvent, CaltraSessionMessage, CaltraSessionLookup, CaltraTokenConfiguration, } from "./types.js";
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EACV,WAAW,EACX,gBAAgB,EAChB,+BAA+B,EAC/B,mBAAmB,EACnB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,UAAU,EACV,eAAe,EACf,aAAa,EACb,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,GACzB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { CaltraClient } from "./client.js";
|
|
2
|
+
export { CaltraSessionsClient } from "./sessions.js";
|
|
2
3
|
export { CaltraApiError } from "./error.js";
|
|
3
4
|
export { CaltraSessionEventConnection } from "./event_connection.js";
|
|
4
|
-
export { CaltraHandoffTokenProvider } from "./handoff_token_provider.js";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,4BAA4B,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CaltraClient } from "./client.js";
|
|
2
|
+
import type { CaltraSession, CaltraSessionCreateIfMissing, CaltraSessionLookup } from "./types.js";
|
|
3
|
+
/** Groups session identity operations under the browser client's resource-oriented API. */
|
|
4
|
+
export declare class CaltraSessionsClient {
|
|
5
|
+
private readonly client;
|
|
6
|
+
constructor(client: CaltraClient);
|
|
7
|
+
get(input: CaltraSessionCreateIfMissing): Promise<CaltraSession>;
|
|
8
|
+
get(input: CaltraSessionLookup): Promise<CaltraSession | null>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EACV,aAAa,EACb,4BAA4B,EAC5B,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAEpB,2FAA2F;AAC3F,qBAAa,oBAAoB;IACnB,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,YAAY;IAE3C,GAAG,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,aAAa,CAAC;IAChE,GAAG,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAIrE"}
|
package/dist/sessions.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Groups session identity operations under the browser client's resource-oriented API. */
|
|
2
|
+
export class CaltraSessionsClient {
|
|
3
|
+
client;
|
|
4
|
+
constructor(client) {
|
|
5
|
+
this.client = client;
|
|
6
|
+
}
|
|
7
|
+
async get(input) {
|
|
8
|
+
return await this.client.getSession(input);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAOA,2FAA2F;AAC3F,MAAM,OAAO,oBAAoB;IACF;IAA7B,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;IAAG,CAAC;IAIrD,KAAK,CAAC,GAAG,CAAC,KAAyD;QACjE,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CaltraAuthorizationCodeProvider } from "./types.js";
|
|
2
|
+
/** Exchanges one-time authorization codes and retains only the resulting client token in memory. */
|
|
3
|
+
export declare class CaltraClientTokenProvider {
|
|
4
|
+
private readonly apiUrl;
|
|
5
|
+
private readonly fetchImplementation;
|
|
6
|
+
private readonly authorizationCodeProvider;
|
|
7
|
+
private configuration?;
|
|
8
|
+
private pending?;
|
|
9
|
+
constructor(apiUrl: string, fetchImplementation: typeof fetch, authorizationCodeProvider: CaltraAuthorizationCodeProvider);
|
|
10
|
+
getToken(): Promise<string>;
|
|
11
|
+
invalidate(): void;
|
|
12
|
+
private getConfiguration;
|
|
13
|
+
private authenticate;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=token_provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_provider.d.ts","sourceRoot":"","sources":["../src/token_provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,+BAA+B,EAA4B,MAAM,YAAY,CAAC;AAQ5F,oGAAoG;AACpG,qBAAa,yBAAyB;IAKlC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;IAN5C,OAAO,CAAC,aAAa,CAAC,CAA2B;IACjD,OAAO,CAAC,OAAO,CAAC,CAAoC;gBAGjC,MAAM,EAAE,MAAM,EACd,mBAAmB,EAAE,OAAO,KAAK,EACjC,yBAAyB,EAAE,+BAA+B;IAGvE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,UAAU,IAAI,IAAI;YAIJ,gBAAgB;YAchB,YAAY;CAsB3B"}
|
|
@@ -5,20 +5,17 @@ const TokenConfigurationSchema = z.object({
|
|
|
5
5
|
expires_at: z.iso.datetime(),
|
|
6
6
|
refresh_after: z.iso.datetime(),
|
|
7
7
|
}).strict();
|
|
8
|
-
/**
|
|
9
|
-
|
|
10
|
-
* Caltra client token in browser memory.
|
|
11
|
-
*/
|
|
12
|
-
export class CaltraHandoffTokenProvider {
|
|
13
|
-
options;
|
|
8
|
+
/** Exchanges one-time authorization codes and retains only the resulting client token in memory. */
|
|
9
|
+
export class CaltraClientTokenProvider {
|
|
14
10
|
apiUrl;
|
|
15
|
-
configuration;
|
|
16
11
|
fetchImplementation;
|
|
12
|
+
authorizationCodeProvider;
|
|
13
|
+
configuration;
|
|
17
14
|
pending;
|
|
18
|
-
constructor(
|
|
19
|
-
this.
|
|
20
|
-
this.
|
|
21
|
-
this.
|
|
15
|
+
constructor(apiUrl, fetchImplementation, authorizationCodeProvider) {
|
|
16
|
+
this.apiUrl = apiUrl;
|
|
17
|
+
this.fetchImplementation = fetchImplementation;
|
|
18
|
+
this.authorizationCodeProvider = authorizationCodeProvider;
|
|
22
19
|
}
|
|
23
20
|
async getToken() {
|
|
24
21
|
return (await this.getConfiguration()).clientToken;
|
|
@@ -27,13 +24,12 @@ export class CaltraHandoffTokenProvider {
|
|
|
27
24
|
this.configuration = undefined;
|
|
28
25
|
}
|
|
29
26
|
async getConfiguration() {
|
|
30
|
-
if (this.configuration
|
|
31
|
-
&& Date.now() < this.configuration.refreshAfter.getTime()) {
|
|
27
|
+
if (this.configuration && Date.now() < this.configuration.refreshAfter.getTime()) {
|
|
32
28
|
return this.configuration;
|
|
33
29
|
}
|
|
34
30
|
if (this.pending)
|
|
35
31
|
return await this.pending;
|
|
36
|
-
this.pending = this.
|
|
32
|
+
this.pending = this.authenticate();
|
|
37
33
|
try {
|
|
38
34
|
this.configuration = await this.pending;
|
|
39
35
|
return this.configuration;
|
|
@@ -42,10 +38,10 @@ export class CaltraHandoffTokenProvider {
|
|
|
42
38
|
this.pending = undefined;
|
|
43
39
|
}
|
|
44
40
|
}
|
|
45
|
-
async
|
|
46
|
-
const
|
|
47
|
-
const response = await this.fetchImplementation(`${this.apiUrl}/
|
|
48
|
-
body: JSON.stringify({
|
|
41
|
+
async authenticate() {
|
|
42
|
+
const authorizationCode = await this.authorizationCodeProvider();
|
|
43
|
+
const response = await this.fetchImplementation(`${this.apiUrl}/caltra/v1/auth/authenticate`, {
|
|
44
|
+
body: JSON.stringify({ authorization_code: authorizationCode }),
|
|
49
45
|
headers: { "content-type": "application/json" },
|
|
50
46
|
method: "POST",
|
|
51
47
|
});
|
|
@@ -63,4 +59,4 @@ export class CaltraHandoffTokenProvider {
|
|
|
63
59
|
return configuration;
|
|
64
60
|
}
|
|
65
61
|
}
|
|
66
|
-
//# sourceMappingURL=
|
|
62
|
+
//# sourceMappingURL=token_provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token_provider.js","sourceRoot":"","sources":["../src/token_provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,MAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;IAC5B,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC,MAAM,EAAE,CAAC;AAEZ,oGAAoG;AACpG,MAAM,OAAO,yBAAyB;IAKjB;IACA;IACA;IANX,aAAa,CAA4B;IACzC,OAAO,CAAqC;IAEpD,YACmB,MAAc,EACd,mBAAiC,EACjC,yBAA0D;QAF1D,WAAM,GAAN,MAAM,CAAQ;QACd,wBAAmB,GAAnB,mBAAmB,CAAc;QACjC,8BAAyB,GAAzB,yBAAyB,CAAiC;IAC1E,CAAC;IAEJ,KAAK,CAAC,QAAQ;QACZ,OAAO,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,WAAW,CAAC;IACrD,CAAC;IAED,UAAU;QACR,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACjF,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;QACD,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;QAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC;YACxC,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC3B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY;QACxB,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAC7C,GAAG,IAAI,CAAC,MAAM,8BAA8B,EAC5C;YACE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC;YAC/D,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,MAAM,EAAE,MAAM;SACf,CACF,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,MAAM,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACpE,MAAM,aAAa,GAAG;YACpB,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;YACrC,YAAY,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SAC5C,CAAC;QACF,IAAI,aAAa,CAAC,YAAY,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;QAC7E,CAAC;QACD,OAAO,aAAa,CAAC;IACvB,CAAC;CACF"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,20 +1,15 @@
|
|
|
1
|
-
export type
|
|
2
|
-
export type CaltraHandoffProvider = () => Promise<string>;
|
|
3
|
-
export interface CaltraHandoffTokenProviderOptions {
|
|
4
|
-
apiUrl: string;
|
|
5
|
-
fetch?: typeof fetch;
|
|
6
|
-
handoffProvider: CaltraHandoffProvider;
|
|
7
|
-
}
|
|
1
|
+
export type CaltraAuthorizationCodeProvider = () => Promise<string>;
|
|
8
2
|
export interface CaltraTokenConfiguration {
|
|
9
3
|
clientToken: string;
|
|
10
4
|
expiresAt: Date;
|
|
11
5
|
refreshAfter: Date;
|
|
12
6
|
}
|
|
13
7
|
export interface CaltraClientOptions {
|
|
14
|
-
apiUrl
|
|
8
|
+
apiUrl?: string;
|
|
9
|
+
authorizationCodeProvider?: CaltraAuthorizationCodeProvider;
|
|
10
|
+
authorizationRoute?: string;
|
|
15
11
|
fetch?: typeof fetch;
|
|
16
|
-
|
|
17
|
-
tokenProvider: CaltraTokenProvider;
|
|
12
|
+
workspaceExternalId?: string;
|
|
18
13
|
}
|
|
19
14
|
export interface CaltraPageInput {
|
|
20
15
|
cursor?: string;
|
|
@@ -36,10 +31,19 @@ export interface CaltraSession {
|
|
|
36
31
|
name: string;
|
|
37
32
|
};
|
|
38
33
|
created_at: string;
|
|
34
|
+
external_id: string | null;
|
|
39
35
|
id: string;
|
|
40
36
|
status: "active" | "closed";
|
|
41
37
|
updated_at: string;
|
|
42
38
|
}
|
|
39
|
+
export interface CaltraSessionLookup {
|
|
40
|
+
externalId: string;
|
|
41
|
+
}
|
|
42
|
+
export interface CaltraSessionCreateIfMissing extends CaltraSessionLookup {
|
|
43
|
+
createIfMissing: {
|
|
44
|
+
agentExternalId: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
43
47
|
export interface CaltraSessionMessage {
|
|
44
48
|
created_at: string;
|
|
45
49
|
id: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { CaltraHandoffTokenProviderOptions } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Exchanges customer-authenticated, single-use handoffs and retains only the resulting short-lived
|
|
4
|
-
* Caltra client token in browser memory.
|
|
5
|
-
*/
|
|
6
|
-
export declare class CaltraHandoffTokenProvider {
|
|
7
|
-
private readonly options;
|
|
8
|
-
private readonly apiUrl;
|
|
9
|
-
private configuration?;
|
|
10
|
-
private readonly fetchImplementation;
|
|
11
|
-
private pending?;
|
|
12
|
-
constructor(options: CaltraHandoffTokenProviderOptions);
|
|
13
|
-
getToken(): Promise<string>;
|
|
14
|
-
invalidate(): void;
|
|
15
|
-
private getConfiguration;
|
|
16
|
-
private exchange;
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=handoff_token_provider.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoff_token_provider.d.ts","sourceRoot":"","sources":["../src/handoff_token_provider.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,iCAAiC,EAElC,MAAM,YAAY,CAAC;AAQpB;;;GAGG;AACH,qBAAa,0BAA0B;IAMzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IALpC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,aAAa,CAAC,CAA2B;IACjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAe;IACnD,OAAO,CAAC,OAAO,CAAC,CAAoC;gBAEvB,OAAO,EAAE,iCAAiC;IAKjE,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjC,UAAU,IAAI,IAAI;YAIJ,gBAAgB;YAiBhB,QAAQ;CAsBvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"handoff_token_provider.js","sourceRoot":"","sources":["../src/handoff_token_provider.ts"],"names":[],"mappings":"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"}
|