assistant-cloud
Version:
Cloud integration for assistant-ui
73 lines (69 loc) • 2.36 kB
text/typescript
import {
AssistantCloudAPI,
type AssistantCloudConfig,
type SdkIdentity,
type AssistantCloudTelemetryConfig,
} from "./AssistantCloudAPI";
import { AssistantCloudAuthTokens } from "./AssistantCloudAuthTokens";
import { AssistantCloudProjects } from "./AssistantCloudProjects";
import { AssistantCloudRuns } from "./AssistantCloudRuns";
import { AssistantCloudThreads } from "./AssistantCloudThreads";
import { AssistantCloudFiles } from "./AssistantCloudFiles";
import {
AssistantCloudEvents,
clearPendingAssistantCloudEvents,
} from "./AssistantCloudEvents";
import { AssistantCloudScores } from "./AssistantCloudScores";
export class AssistantCloud {
public readonly threads;
public readonly projects;
public readonly auth;
public readonly runs;
public readonly files;
public readonly events;
public readonly scores;
public readonly telemetry: AssistantCloudTelemetryConfig;
public readonly registerSdk: (sdk: SdkIdentity) => void;
constructor(config: AssistantCloudConfig) {
const api = new AssistantCloudAPI(config);
this.registerSdk = api.registerSdk;
const t = config.telemetry;
const telemetry =
t === false
? { enabled: false }
: t === true || t === undefined
? { enabled: true }
: {
...t,
enabled: t.enabled !== false,
};
this.telemetry = new Proxy(telemetry, {
set: (target, property, value) => {
const updated = Reflect.set(target, property, value);
if (
(property === "enabled" || property === "events") &&
(target.enabled === false || target.events === false)
) {
clearPendingAssistantCloudEvents(this.events);
}
return updated;
},
});
this.threads = new AssistantCloudThreads(api);
this.projects = new AssistantCloudProjects(api);
this.auth = {
tokens: new AssistantCloudAuthTokens(api),
invalidate: () => {
api.invalidateAuth();
clearPendingAssistantCloudEvents(this.events);
},
};
this.runs = new AssistantCloudRuns(api);
this.files = new AssistantCloudFiles(api);
this.events = new AssistantCloudEvents(
api,
() => this.telemetry.enabled !== false && this.telemetry.events !== false,
);
this.scores = new AssistantCloudScores(api);
}
}