quantum-ai-sdk 0.2.1 → 0.2.2
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 +14 -1
- package/dist/client.js +20 -1
- package/dist/index.d.ts +1 -1
- package/dist/jobs.d.ts +19 -1
- package/dist/jobs.js +72 -0
- package/dist/types.d.ts +10 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { RealtimeSender, RealtimeReceiver } from "./realtime.js";
|
|
2
2
|
import type { RealtimeConfig, RealtimeSession } from "./realtime.js";
|
|
3
|
-
import type { AccountPricingResponse, AgentEvent, AgentRequest, AlignRequest, AlignResponse, AsyncJobResponse, AuthAppleRequest, AuthResponse, AvatarsResponse, BalanceResponse, BatchJobInfo, BatchJobsResponse, BatchJsonlResponse, BatchSubmitRequest, BatchSubmitResponse, ChatRequest, ChatResponse, ChunkDocumentRequest, ChunkDocumentResponse, ClientOptions, CloneVoiceRequest, CloneVoiceResponse, CreateKeyRequest, CreateKeyResponse, CreditBalanceResponse, CreditPacksResponse, CreditPurchaseRequest, CreditPurchaseResponse, CreditTiersResponse, DeleteResponse, DevProgramApplyRequest, DevProgramApplyResponse, DialogueRequest, DialogueResponse, DigitalTwinRequest, DocumentRequest, DocumentResponse, DubRequest, DubResponse, EmbedRequest, EmbedResponse, HeyGenTemplatesResponse, HeyGenVoicesResponse, ImageEditRequest, ImageEditResponse, ImageRequest, ImageResponse, InstanceResponse, InstancesResponse, IsolateVoiceRequest, IsolateVoiceResponse, JobCreateRequest, JobCreateResponse, JobListResponse, JobStatusResponse, ListKeysResponse, MissionEvent, MissionRequest, ModelInfo, MusicRequest, MusicResponse, PhotoAvatarRequest, PricingInfo, ProcessDocumentRequest, ProcessDocumentResponse, ProvisionRequest, ProvisionResponse, RAGCorpus, RAGSearchRequest, RAGSearchResponse, RemixVoiceRequest, RemixVoiceResponse, ResponseMeta, SessionChatRequest, SessionChatResponse, SoundEffectRequest, SoundEffectResponse, SpeechToSpeechRequest, SpeechToSpeechResponse, SSHKeyRequest, StarfishTTSRequest, StarfishTTSResponse, StatusResponse, STTRequest, STTResponse, StreamEvent, SurrealRAGProvidersResponse, SurrealRAGSearchRequest, SurrealRAGSearchResponse, TemplatesResponse, TTSRequest, TTSResponse, UsageQuery, UsageResponse, UsageSummaryResponse, VideoRequest, VideoResponse, VideoStudioRequest, VideoTranslateRequest, VoiceDesignRequest, VoiceDesignResponse, VoicesResponse } from "./types.js";
|
|
3
|
+
import type { AccountPricingResponse, AgentEvent, AgentRequest, AlignRequest, AlignResponse, AsyncJobResponse, AuthAppleRequest, AuthResponse, AvatarsResponse, BalanceResponse, BatchJobInfo, BatchJobsResponse, BatchJsonlResponse, BatchSubmitRequest, BatchSubmitResponse, ChatRequest, ChatResponse, ChunkDocumentRequest, ChunkDocumentResponse, ClientOptions, CloneVoiceRequest, CloneVoiceResponse, CreateKeyRequest, CreateKeyResponse, CreditBalanceResponse, CreditPacksResponse, CreditPurchaseRequest, CreditPurchaseResponse, CreditTiersResponse, DeleteResponse, DevProgramApplyRequest, DevProgramApplyResponse, DialogueRequest, DialogueResponse, DigitalTwinRequest, DocumentRequest, DocumentResponse, DubRequest, DubResponse, EmbedRequest, EmbedResponse, HeyGenTemplatesResponse, HeyGenVoicesResponse, ImageEditRequest, ImageEditResponse, ImageRequest, ImageResponse, InstanceResponse, InstancesResponse, IsolateVoiceRequest, IsolateVoiceResponse, JobCreateRequest, JobCreateResponse, JobListResponse, JobStreamEvent, JobStatusResponse, ListKeysResponse, MissionEvent, MissionRequest, ModelInfo, MusicRequest, MusicResponse, PhotoAvatarRequest, PricingInfo, ProcessDocumentRequest, ProcessDocumentResponse, ProvisionRequest, ProvisionResponse, RAGCorpus, RAGSearchRequest, RAGSearchResponse, RemixVoiceRequest, RemixVoiceResponse, ResponseMeta, SessionChatRequest, SessionChatResponse, SoundEffectRequest, SoundEffectResponse, SpeechToSpeechRequest, SpeechToSpeechResponse, SSHKeyRequest, StarfishTTSRequest, StarfishTTSResponse, StatusResponse, STTRequest, STTResponse, StreamEvent, SurrealRAGProvidersResponse, SurrealRAGSearchRequest, SurrealRAGSearchResponse, TemplatesResponse, TTSRequest, TTSResponse, UsageQuery, UsageResponse, UsageSummaryResponse, VideoRequest, VideoResponse, VideoStudioRequest, VideoTranslateRequest, VoiceDesignRequest, VoiceDesignResponse, VoicesResponse } from "./types.js";
|
|
4
4
|
/**
|
|
5
5
|
* QuantumClient is the Quantum AI API client.
|
|
6
6
|
*
|
|
@@ -177,6 +177,19 @@ export declare class QuantumClient {
|
|
|
177
177
|
pollJob(jobId: string, intervalMs?: number, maxAttempts?: number): Promise<JobStatusResponse>;
|
|
178
178
|
/** List all jobs for the authenticated user. */
|
|
179
179
|
listJobs(): Promise<JobListResponse>;
|
|
180
|
+
/**
|
|
181
|
+
* Submit a chat completion as an async job.
|
|
182
|
+
* Use for long-running models (e.g. Opus) where sync chat may time out.
|
|
183
|
+
* Params are the same shape as ChatRequest (model, messages, tools, etc.)
|
|
184
|
+
*/
|
|
185
|
+
chatJob(req: Omit<ChatRequest, "stream">): Promise<JobCreateResponse>;
|
|
186
|
+
/**
|
|
187
|
+
* Stream job progress via SSE. Yields events as the job runs.
|
|
188
|
+
* Events: progress (status update), complete (with result), error.
|
|
189
|
+
*/
|
|
190
|
+
streamJob(jobId: string, signal?: AbortSignal): AsyncIterableIterator<JobStreamEvent>;
|
|
191
|
+
/** Generate a 3D model via the async jobs system. */
|
|
192
|
+
generate3D(model: string, prompt?: string, imageUrl?: string): Promise<JobCreateResponse>;
|
|
180
193
|
/** Create a scoped API key. */
|
|
181
194
|
createKey(req: CreateKeyRequest): Promise<CreateKeyResponse>;
|
|
182
195
|
/** List all API keys for the authenticated user. */
|
package/dist/client.js
CHANGED
|
@@ -10,7 +10,7 @@ import { extractDocument, chunkDocument, processDocument } from "./documents.js"
|
|
|
10
10
|
import { ragSearch, ragCorpora, surrealRagSearch, surrealRagProviders } from "./rag.js";
|
|
11
11
|
import { listModels, getPricing } from "./models.js";
|
|
12
12
|
import { accountBalance, accountUsage, accountUsageSummary, accountPricing, } from "./account.js";
|
|
13
|
-
import { createJob, getJob, pollJob, listJobs } from "./jobs.js";
|
|
13
|
+
import { createJob, getJob, pollJob, listJobs, chatJob, streamJob, generate3D } from "./jobs.js";
|
|
14
14
|
import { createKey, listKeys, revokeKey } from "./keys.js";
|
|
15
15
|
import { computeTemplates, computeProvision, computeInstances, computeInstance, computeDelete, computeSSHKey, computeKeepalive, } from "./compute.js";
|
|
16
16
|
import { listVoices, cloneVoice, deleteVoice } from "./voices.js";
|
|
@@ -305,6 +305,25 @@ export class QuantumClient {
|
|
|
305
305
|
async listJobs() {
|
|
306
306
|
return listJobs(this);
|
|
307
307
|
}
|
|
308
|
+
/**
|
|
309
|
+
* Submit a chat completion as an async job.
|
|
310
|
+
* Use for long-running models (e.g. Opus) where sync chat may time out.
|
|
311
|
+
* Params are the same shape as ChatRequest (model, messages, tools, etc.)
|
|
312
|
+
*/
|
|
313
|
+
async chatJob(req) {
|
|
314
|
+
return chatJob(this, req);
|
|
315
|
+
}
|
|
316
|
+
/**
|
|
317
|
+
* Stream job progress via SSE. Yields events as the job runs.
|
|
318
|
+
* Events: progress (status update), complete (with result), error.
|
|
319
|
+
*/
|
|
320
|
+
streamJob(jobId, signal) {
|
|
321
|
+
return streamJob(this, jobId, signal);
|
|
322
|
+
}
|
|
323
|
+
/** Generate a 3D model via the async jobs system. */
|
|
324
|
+
async generate3D(model, prompt, imageUrl) {
|
|
325
|
+
return generate3D(this, model, prompt, imageUrl);
|
|
326
|
+
}
|
|
308
327
|
// ── API Keys ──────────────────────────────────────────────────────
|
|
309
328
|
/** Create a scoped API key. */
|
|
310
329
|
async createKey(req) {
|
package/dist/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export { responseText, responseThinking, responseToolCalls } from "./chat.js";
|
|
|
4
4
|
export { realtimeConnect, realtimeConnectDirect, realtimeSession, realtimeEnd, realtimeRefresh, RealtimeSender, RealtimeReceiver } from "./realtime.js";
|
|
5
5
|
export type { RealtimeConfig, RealtimeEvent, RealtimeSession } from "./realtime.js";
|
|
6
6
|
export { contact } from "./contact.js";
|
|
7
|
-
export type { ClientOptions, ResponseMeta, ChatRequest, ChatMessage, ChatTool, ContentBlock, ChatUsage, ChatResponse, StreamEvent, StreamDelta, StreamToolUse, SessionChatRequest, SessionChatResponse, SessionToolResult, ContextConfig, ContextMetadata, AgentRequest, AgentWorkerConfig, AgentEvent, MissionRequest, MissionWorkerConfig, MissionEvent, ImageRequest, ImageResponse, GeneratedImage, ImageEditRequest, ImageEditResponse, TTSRequest, TTSResponse, STTRequest, STTResponse, MusicRequest, MusicClip, MusicResponse, SoundEffectRequest, SoundEffectResponse, DialogueRequest, DialogueResponse, DialogueVoice, SpeechToSpeechRequest, SpeechToSpeechResponse, IsolateVoiceRequest, IsolateVoiceResponse, RemixVoiceRequest, RemixVoiceResponse, DubRequest, DubResponse, AlignRequest, AlignResponse, AlignedWord, VoiceDesignRequest, VoiceDesignResponse, VoicePreview, StarfishTTSRequest, StarfishTTSResponse, VideoRequest, VideoResponse, GeneratedVideo, VideoStudioRequest, VideoTranslateRequest, PhotoAvatarRequest, DigitalTwinRequest, AsyncJobResponse, AvatarsResponse, HeyGenAvatar, HeyGenTemplatesResponse, HeyGenTemplate, HeyGenVoicesResponse, HeyGenVoice, EmbedRequest, EmbedResponse, DocumentRequest, DocumentResponse, ChunkDocumentRequest, ChunkDocumentResponse, DocumentChunk, ProcessDocumentRequest, ProcessDocumentResponse, RAGSearchRequest, RAGSearchResponse, RAGResult, RAGCorpus, SurrealRAGSearchRequest, SurrealRAGSearchResponse, SurrealRAGResult, SurrealRAGProvidersResponse, SurrealRAGProviderInfo, ModelInfo, PricingInfo, BalanceResponse, UsageEntry, UsageResponse, UsageQuery, UsageSummaryMonth, UsageSummaryResponse, PricingEntry, AccountPricingResponse, JobCreateRequest, JobCreateResponse, JobStatusResponse, JobListResponse, JobListItem, CreateKeyRequest, CreateKeyResponse, KeyDetails, ListKeysResponse, ComputeTemplate, TemplatesResponse, ProvisionRequest, ProvisionResponse, ComputeInstanceInfo, InstancesResponse, InstanceDetailInfo, InstanceResponse, SSHKeyRequest, DeleteResponse, VoiceInfo, VoicesResponse, CloneVoiceRequest, CloneVoiceResponse, ContactRequest, BatchJobInput, BatchSubmitRequest, BatchSubmitResponse, BatchJsonlResponse, BatchJobInfo, BatchJobsResponse, CreditPack, CreditPacksResponse, CreditPurchaseRequest, CreditPurchaseResponse, CreditBalanceResponse, CreditTier, CreditTiersResponse, DevProgramApplyRequest, DevProgramApplyResponse, AuthUser, AuthResponse, AuthAppleRequest, StatusResponse, } from "./types.js";
|
|
7
|
+
export type { ClientOptions, ResponseMeta, ChatRequest, ChatMessage, ChatTool, ContentBlock, ChatUsage, ChatResponse, StreamEvent, StreamDelta, StreamToolUse, SessionChatRequest, SessionChatResponse, SessionToolResult, ContextConfig, ContextMetadata, AgentRequest, AgentWorkerConfig, AgentEvent, MissionRequest, MissionWorkerConfig, MissionEvent, ImageRequest, ImageResponse, GeneratedImage, ImageEditRequest, ImageEditResponse, TTSRequest, TTSResponse, STTRequest, STTResponse, MusicRequest, MusicClip, MusicResponse, SoundEffectRequest, SoundEffectResponse, DialogueRequest, DialogueResponse, DialogueVoice, SpeechToSpeechRequest, SpeechToSpeechResponse, IsolateVoiceRequest, IsolateVoiceResponse, RemixVoiceRequest, RemixVoiceResponse, DubRequest, DubResponse, AlignRequest, AlignResponse, AlignedWord, VoiceDesignRequest, VoiceDesignResponse, VoicePreview, StarfishTTSRequest, StarfishTTSResponse, VideoRequest, VideoResponse, GeneratedVideo, VideoStudioRequest, VideoTranslateRequest, PhotoAvatarRequest, DigitalTwinRequest, AsyncJobResponse, AvatarsResponse, HeyGenAvatar, HeyGenTemplatesResponse, HeyGenTemplate, HeyGenVoicesResponse, HeyGenVoice, EmbedRequest, EmbedResponse, DocumentRequest, DocumentResponse, ChunkDocumentRequest, ChunkDocumentResponse, DocumentChunk, ProcessDocumentRequest, ProcessDocumentResponse, RAGSearchRequest, RAGSearchResponse, RAGResult, RAGCorpus, SurrealRAGSearchRequest, SurrealRAGSearchResponse, SurrealRAGResult, SurrealRAGProvidersResponse, SurrealRAGProviderInfo, ModelInfo, PricingInfo, BalanceResponse, UsageEntry, UsageResponse, UsageQuery, UsageSummaryMonth, UsageSummaryResponse, PricingEntry, AccountPricingResponse, JobCreateRequest, JobCreateResponse, JobStatusResponse, JobListResponse, JobStreamEvent, JobListItem, CreateKeyRequest, CreateKeyResponse, KeyDetails, ListKeysResponse, ComputeTemplate, TemplatesResponse, ProvisionRequest, ProvisionResponse, ComputeInstanceInfo, InstancesResponse, InstanceDetailInfo, InstanceResponse, SSHKeyRequest, DeleteResponse, VoiceInfo, VoicesResponse, CloneVoiceRequest, CloneVoiceResponse, ContactRequest, BatchJobInput, BatchSubmitRequest, BatchSubmitResponse, BatchJsonlResponse, BatchJobInfo, BatchJobsResponse, CreditPack, CreditPacksResponse, CreditPurchaseRequest, CreditPurchaseResponse, CreditBalanceResponse, CreditTier, CreditTiersResponse, DevProgramApplyRequest, DevProgramApplyResponse, AuthUser, AuthResponse, AuthAppleRequest, StatusResponse, } from "./types.js";
|
|
8
8
|
export { DEFAULT_BASE_URL, TICKS_PER_USD } from "./types.js";
|
|
9
9
|
import type { ChatMessage } from "./types.js";
|
|
10
10
|
/** Create a user message. */
|
package/dist/jobs.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { QuantumClient } from "./client.js";
|
|
2
|
-
import type { JobCreateRequest, JobCreateResponse, JobListResponse, JobStatusResponse } from "./types.js";
|
|
2
|
+
import type { ChatRequest, JobCreateRequest, JobCreateResponse, JobListResponse, JobStatusResponse, JobStreamEvent } from "./types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Create an async job. Returns the job ID for polling.
|
|
5
5
|
* @internal
|
|
@@ -26,3 +26,21 @@ export declare function listJobs(client: QuantumClient): Promise<JobListResponse
|
|
|
26
26
|
* @internal
|
|
27
27
|
*/
|
|
28
28
|
export declare function generate3D(client: QuantumClient, model: string, prompt?: string, imageUrl?: string): Promise<JobCreateResponse>;
|
|
29
|
+
/**
|
|
30
|
+
* Submit a chat completion as an async job. Useful for long-running
|
|
31
|
+
* models (e.g. Opus) where synchronous /qai/v1/chat may time out.
|
|
32
|
+
*
|
|
33
|
+
* Params are the same shape as ChatRequest (model, messages, tools, etc.)
|
|
34
|
+
* Use streamJob() or pollJob() to get the result.
|
|
35
|
+
* @internal
|
|
36
|
+
*/
|
|
37
|
+
export declare function chatJob(client: QuantumClient, req: Omit<ChatRequest, "stream">): Promise<JobCreateResponse>;
|
|
38
|
+
/**
|
|
39
|
+
* Stream job progress via SSE. Yields events as the job runs.
|
|
40
|
+
*
|
|
41
|
+
* Events: { type: "progress", status } | { type: "complete", result, cost_ticks } | { type: "error", error }
|
|
42
|
+
*
|
|
43
|
+
* If the job is already terminal, yields one event and returns.
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
export declare function streamJob(client: QuantumClient, jobId: string, signal?: AbortSignal): AsyncIterableIterator<JobStreamEvent>;
|
package/dist/jobs.js
CHANGED
|
@@ -54,3 +54,75 @@ export async function generate3D(client, model, prompt, imageUrl) {
|
|
|
54
54
|
params.image_url = imageUrl;
|
|
55
55
|
return createJob(client, { type: "3d/generate", params });
|
|
56
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Submit a chat completion as an async job. Useful for long-running
|
|
59
|
+
* models (e.g. Opus) where synchronous /qai/v1/chat may time out.
|
|
60
|
+
*
|
|
61
|
+
* Params are the same shape as ChatRequest (model, messages, tools, etc.)
|
|
62
|
+
* Use streamJob() or pollJob() to get the result.
|
|
63
|
+
* @internal
|
|
64
|
+
*/
|
|
65
|
+
export async function chatJob(client, req) {
|
|
66
|
+
return createJob(client, {
|
|
67
|
+
type: "chat",
|
|
68
|
+
params: req,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Stream job progress via SSE. Yields events as the job runs.
|
|
73
|
+
*
|
|
74
|
+
* Events: { type: "progress", status } | { type: "complete", result, cost_ticks } | { type: "error", error }
|
|
75
|
+
*
|
|
76
|
+
* If the job is already terminal, yields one event and returns.
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
export async function* streamJob(client, jobId, signal) {
|
|
80
|
+
// Job stream is GET, not POST — use _doJSON's fetch directly.
|
|
81
|
+
const headers = {
|
|
82
|
+
Authorization: `Bearer ${client._apiKey}`,
|
|
83
|
+
Accept: "text/event-stream",
|
|
84
|
+
};
|
|
85
|
+
const response = await client._fetch(`${client._baseUrl}/qai/v1/jobs/${jobId}/stream`, { method: "GET", headers, signal });
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
throw new Error(`Job stream error (${response.status})`);
|
|
88
|
+
}
|
|
89
|
+
const reader = response.body;
|
|
90
|
+
if (!reader) {
|
|
91
|
+
throw new Error("qai: response body is null");
|
|
92
|
+
}
|
|
93
|
+
const decoder = new TextDecoder();
|
|
94
|
+
const streamReader = reader.getReader();
|
|
95
|
+
let buffer = "";
|
|
96
|
+
try {
|
|
97
|
+
while (true) {
|
|
98
|
+
const { done, value } = await streamReader.read();
|
|
99
|
+
if (done)
|
|
100
|
+
break;
|
|
101
|
+
buffer += decoder.decode(value, { stream: true });
|
|
102
|
+
const lines = buffer.split("\n");
|
|
103
|
+
buffer = lines.pop() ?? "";
|
|
104
|
+
for (const line of lines) {
|
|
105
|
+
if (!line.startsWith("data: "))
|
|
106
|
+
continue;
|
|
107
|
+
const payload = line.slice(6);
|
|
108
|
+
if (payload === "[DONE]")
|
|
109
|
+
return;
|
|
110
|
+
let event;
|
|
111
|
+
try {
|
|
112
|
+
event = JSON.parse(payload);
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
yield { type: "error", error: "parse SSE: invalid JSON" };
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
yield event;
|
|
119
|
+
if (event.type === "complete" || event.type === "error") {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
streamReader.releaseLock();
|
|
127
|
+
}
|
|
128
|
+
}
|
package/dist/types.d.ts
CHANGED
|
@@ -725,6 +725,16 @@ export interface JobListItem {
|
|
|
725
725
|
export interface JobListResponse {
|
|
726
726
|
jobs: JobListItem[];
|
|
727
727
|
}
|
|
728
|
+
/** SSE event from GET /qai/v1/jobs/{id}/stream */
|
|
729
|
+
export interface JobStreamEvent {
|
|
730
|
+
type: "progress" | "complete" | "error";
|
|
731
|
+
job_id?: string;
|
|
732
|
+
status?: string;
|
|
733
|
+
result?: unknown;
|
|
734
|
+
error?: string;
|
|
735
|
+
cost_ticks?: number;
|
|
736
|
+
completed_at?: string;
|
|
737
|
+
}
|
|
728
738
|
export interface CreateKeyRequest {
|
|
729
739
|
name: string;
|
|
730
740
|
scopes?: string[];
|