@hypercli.com/sdk 0.9.1
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 +629 -0
- package/dist/acp-driver.d.ts +72 -0
- package/dist/acp-driver.d.ts.map +1 -0
- package/dist/acp-driver.js +147 -0
- package/dist/acp-driver.js.map +1 -0
- package/dist/acp-pool.d.ts +70 -0
- package/dist/acp-pool.d.ts.map +1 -0
- package/dist/acp-pool.js +181 -0
- package/dist/acp-pool.js.map +1 -0
- package/dist/acp.d.ts +179 -0
- package/dist/acp.d.ts.map +1 -0
- package/dist/acp.js +487 -0
- package/dist/acp.js.map +1 -0
- package/dist/agent-persona.d.ts +68 -0
- package/dist/agent-persona.d.ts.map +1 -0
- package/dist/agent-persona.js +78 -0
- package/dist/agent-persona.js.map +1 -0
- package/dist/agent-slots.d.ts +18 -0
- package/dist/agent-slots.d.ts.map +1 -0
- package/dist/agent-slots.js +24 -0
- package/dist/agent-slots.js.map +1 -0
- package/dist/agent-urls.d.ts +47 -0
- package/dist/agent-urls.d.ts.map +1 -0
- package/dist/agent-urls.js +178 -0
- package/dist/agent-urls.js.map +1 -0
- package/dist/agent.d.ts +482 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +926 -0
- package/dist/agent.js.map +1 -0
- package/dist/agents.d.ts +1452 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +4022 -0
- package/dist/agents.js.map +1 -0
- package/dist/billing.d.ts +72 -0
- package/dist/billing.d.ts.map +1 -0
- package/dist/billing.js +93 -0
- package/dist/billing.js.map +1 -0
- package/dist/browser-jobs.d.ts +24 -0
- package/dist/browser-jobs.d.ts.map +1 -0
- package/dist/browser-jobs.js +209 -0
- package/dist/browser-jobs.js.map +1 -0
- package/dist/browser.d.ts +41 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +57 -0
- package/dist/browser.js.map +1 -0
- package/dist/buzz-activity.d.ts +169 -0
- package/dist/buzz-activity.d.ts.map +1 -0
- package/dist/buzz-activity.js +844 -0
- package/dist/buzz-activity.js.map +1 -0
- package/dist/channels.d.ts +99 -0
- package/dist/channels.d.ts.map +1 -0
- package/dist/channels.js +27 -0
- package/dist/channels.js.map +1 -0
- package/dist/chat-integrations.d.ts +44 -0
- package/dist/chat-integrations.d.ts.map +1 -0
- package/dist/chat-integrations.js +138 -0
- package/dist/chat-integrations.js.map +1 -0
- package/dist/client.d.ts +88 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +144 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +44 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +192 -0
- package/dist/config.js.map +1 -0
- package/dist/connectors.d.ts +80 -0
- package/dist/connectors.d.ts.map +1 -0
- package/dist/connectors.js +2 -0
- package/dist/connectors.js.map +1 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +26 -0
- package/dist/errors.js.map +1 -0
- package/dist/files.d.ts +60 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +128 -0
- package/dist/files.js.map +1 -0
- package/dist/http.d.ts +56 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +362 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -0
- package/dist/index.js.map +1 -0
- package/dist/instances.d.ts +94 -0
- package/dist/instances.d.ts.map +1 -0
- package/dist/instances.js +197 -0
- package/dist/instances.js.map +1 -0
- package/dist/integrations.d.ts +111 -0
- package/dist/integrations.d.ts.map +1 -0
- package/dist/integrations.js +206 -0
- package/dist/integrations.js.map +1 -0
- package/dist/job/base.d.ts +86 -0
- package/dist/job/base.d.ts.map +1 -0
- package/dist/job/base.js +206 -0
- package/dist/job/base.js.map +1 -0
- package/dist/job/comfyui.d.ts +259 -0
- package/dist/job/comfyui.d.ts.map +1 -0
- package/dist/job/comfyui.js +1563 -0
- package/dist/job/comfyui.js.map +1 -0
- package/dist/job/gradio.d.ts +48 -0
- package/dist/job/gradio.d.ts.map +1 -0
- package/dist/job/gradio.js +90 -0
- package/dist/job/gradio.js.map +1 -0
- package/dist/job-codecs.d.ts +66 -0
- package/dist/job-codecs.d.ts.map +1 -0
- package/dist/job-codecs.js +132 -0
- package/dist/job-codecs.js.map +1 -0
- package/dist/jobs.d.ts +148 -0
- package/dist/jobs.d.ts.map +1 -0
- package/dist/jobs.js +480 -0
- package/dist/jobs.js.map +1 -0
- package/dist/keys.d.ts +99 -0
- package/dist/keys.d.ts.map +1 -0
- package/dist/keys.js +145 -0
- package/dist/keys.js.map +1 -0
- package/dist/logs.d.ts +54 -0
- package/dist/logs.d.ts.map +1 -0
- package/dist/logs.js +256 -0
- package/dist/logs.js.map +1 -0
- package/dist/managed-context.d.ts +20 -0
- package/dist/managed-context.d.ts.map +1 -0
- package/dist/managed-context.js +95 -0
- package/dist/managed-context.js.map +1 -0
- package/dist/mcp.d.ts +7 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +8 -0
- package/dist/mcp.js.map +1 -0
- package/dist/memory.d.ts +87 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +79 -0
- package/dist/memory.js.map +1 -0
- package/dist/models.d.ts +15 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +19 -0
- package/dist/models.js.map +1 -0
- package/dist/openclaw-control-ui-origin.d.ts +23 -0
- package/dist/openclaw-control-ui-origin.d.ts.map +1 -0
- package/dist/openclaw-control-ui-origin.js +53 -0
- package/dist/openclaw-control-ui-origin.js.map +1 -0
- package/dist/renders.d.ts +187 -0
- package/dist/renders.d.ts.map +1 -0
- package/dist/renders.js +360 -0
- package/dist/renders.js.map +1 -0
- package/dist/routines.d.ts +59 -0
- package/dist/routines.d.ts.map +1 -0
- package/dist/routines.js +135 -0
- package/dist/routines.js.map +1 -0
- package/dist/runners.d.ts +61 -0
- package/dist/runners.d.ts.map +1 -0
- package/dist/runners.js +127 -0
- package/dist/runners.js.map +1 -0
- package/dist/sessions.d.ts +280 -0
- package/dist/sessions.d.ts.map +1 -0
- package/dist/sessions.js +292 -0
- package/dist/sessions.js.map +1 -0
- package/dist/skills.d.ts +170 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +2 -0
- package/dist/skills.js.map +1 -0
- package/dist/user.d.ts +78 -0
- package/dist/user.d.ts.map +1 -0
- package/dist/user.js +143 -0
- package/dist/user.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +3 -0
- package/dist/version.js.map +1 -0
- package/dist/voice-session.d.ts +66 -0
- package/dist/voice-session.d.ts.map +1 -0
- package/dist/voice-session.js +366 -0
- package/dist/voice-session.js.map +1 -0
- package/dist/voice-transcription-session.d.ts +64 -0
- package/dist/voice-transcription-session.d.ts.map +1 -0
- package/dist/voice-transcription-session.js +228 -0
- package/dist/voice-transcription-session.js.map +1 -0
- package/dist/voice.d.ts +62 -0
- package/dist/voice.d.ts.map +1 -0
- package/dist/voice.js +134 -0
- package/dist/voice.js.map +1 -0
- package/dist/workspace-tomd.d.ts +61 -0
- package/dist/workspace-tomd.d.ts.map +1 -0
- package/dist/workspace-tomd.js +177 -0
- package/dist/workspace-tomd.js.map +1 -0
- package/dist/workspaces.d.ts +255 -0
- package/dist/workspaces.d.ts.map +1 -0
- package/dist/workspaces.js +653 -0
- package/dist/workspaces.js.map +1 -0
- package/package.json +115 -0
- package/runtime/config-require.browser.js +4 -0
- package/runtime/config-require.d.ts +2 -0
- package/runtime/config-require.node.js +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../src/instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
function gpuConfigFromDict(data) {
|
|
2
|
+
return {
|
|
3
|
+
gpuCount: data.gpu_count || 1,
|
|
4
|
+
cpuCores: data.cpu_cores || 0,
|
|
5
|
+
memoryGb: data.memory_gb || 0,
|
|
6
|
+
storageGb: data.storage_gb || 0,
|
|
7
|
+
regions: data.regions || [],
|
|
8
|
+
constraints: data.constraints || null,
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
function gpuTypeFromDict(id, data) {
|
|
12
|
+
return {
|
|
13
|
+
id,
|
|
14
|
+
name: data.name || id,
|
|
15
|
+
description: data.description || '',
|
|
16
|
+
configs: (data.configs || []).map(gpuConfigFromDict),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function regionFromDict(id, data) {
|
|
20
|
+
return {
|
|
21
|
+
id,
|
|
22
|
+
description: data.description || id,
|
|
23
|
+
country: data.country || '',
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function pricingTierFromDict(region, data) {
|
|
27
|
+
return {
|
|
28
|
+
region,
|
|
29
|
+
onDemand: data['on-demand'] ?? null,
|
|
30
|
+
interruptible: data.interruptable ?? null, // Note: API has typo
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function gpuPricingFromKey(key, data) {
|
|
34
|
+
// Parse key like "h100_x8" -> gpu_type="h100", gpu_count=8
|
|
35
|
+
const parts = key.split('_x');
|
|
36
|
+
const gpuType = parts[0];
|
|
37
|
+
const gpuCount = parts.length > 1 ? parseInt(parts[1]) : 1;
|
|
38
|
+
const tiers = Object.entries(data).map(([region, prices]) => pricingTierFromDict(region, prices));
|
|
39
|
+
return { gpuType, gpuCount, tiers };
|
|
40
|
+
}
|
|
41
|
+
export class Instances {
|
|
42
|
+
http;
|
|
43
|
+
typesCache = null;
|
|
44
|
+
regionsCache = null;
|
|
45
|
+
pricingCache = null;
|
|
46
|
+
constructor(http) {
|
|
47
|
+
this.http = http;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get available GPU types
|
|
51
|
+
*/
|
|
52
|
+
async types(refresh = false) {
|
|
53
|
+
if (this.typesCache === null || refresh) {
|
|
54
|
+
const data = await this.http.get('/instances/types');
|
|
55
|
+
this.typesCache = {};
|
|
56
|
+
for (const [id, info] of Object.entries(data)) {
|
|
57
|
+
this.typesCache[id] = gpuTypeFromDict(id, info);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return this.typesCache;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get available regions
|
|
64
|
+
*/
|
|
65
|
+
async regions(refresh = false) {
|
|
66
|
+
if (this.regionsCache === null || refresh) {
|
|
67
|
+
const data = await this.http.get('/instances/regions');
|
|
68
|
+
this.regionsCache = {};
|
|
69
|
+
for (const [id, info] of Object.entries(data)) {
|
|
70
|
+
this.regionsCache[id] = regionFromDict(id, info);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return this.regionsCache;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get pricing information
|
|
77
|
+
*/
|
|
78
|
+
async pricing(refresh = false) {
|
|
79
|
+
if (this.pricingCache === null || refresh) {
|
|
80
|
+
const data = await this.http.get('/instances/pricing');
|
|
81
|
+
this.pricingCache = {};
|
|
82
|
+
for (const [key, prices] of Object.entries(data)) {
|
|
83
|
+
this.pricingCache[key] = gpuPricingFromKey(key, prices);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return this.pricingCache;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get a specific GPU type by ID
|
|
90
|
+
*/
|
|
91
|
+
async getType(gpuType) {
|
|
92
|
+
const types = await this.types();
|
|
93
|
+
return types[gpuType] || null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get a specific region by ID
|
|
97
|
+
*/
|
|
98
|
+
async getRegion(regionId) {
|
|
99
|
+
const regions = await this.regions();
|
|
100
|
+
return regions[regionId] || null;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get price for a specific GPU configuration
|
|
104
|
+
*/
|
|
105
|
+
async getPrice(gpuType, gpuCount = 1, region, interruptible = true) {
|
|
106
|
+
const key = `${gpuType}_x${gpuCount}`;
|
|
107
|
+
const pricing = await this.pricing();
|
|
108
|
+
const gpuPricing = pricing[key];
|
|
109
|
+
if (gpuPricing && region) {
|
|
110
|
+
for (const tier of gpuPricing.tiers) {
|
|
111
|
+
if (tier.region === region) {
|
|
112
|
+
return interruptible ? tier.interruptible : tier.onDemand;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get real-time GPU capacity by type and region
|
|
120
|
+
*/
|
|
121
|
+
async capacity(gpuType) {
|
|
122
|
+
const params = {};
|
|
123
|
+
if (gpuType) {
|
|
124
|
+
params.gpu_type = gpuType;
|
|
125
|
+
}
|
|
126
|
+
return await this.http.get('/api/jobs/instances/capacity', params);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* List available GPU configurations, optionally filtered
|
|
130
|
+
*/
|
|
131
|
+
async listAvailable(gpuType, region) {
|
|
132
|
+
const types = await this.types();
|
|
133
|
+
const regions = await this.regions();
|
|
134
|
+
const pricing = await this.pricing();
|
|
135
|
+
const results = [];
|
|
136
|
+
for (const [typeId, gpu] of Object.entries(types)) {
|
|
137
|
+
if (gpuType && typeId !== gpuType)
|
|
138
|
+
continue;
|
|
139
|
+
for (const config of gpu.configs) {
|
|
140
|
+
if (!config.regions.length)
|
|
141
|
+
continue;
|
|
142
|
+
if (region && !config.regions.includes(region))
|
|
143
|
+
continue;
|
|
144
|
+
const key = `${typeId}_x${config.gpuCount}`;
|
|
145
|
+
const gpuPricing = pricing[key];
|
|
146
|
+
for (const r of config.regions) {
|
|
147
|
+
if (region && r !== region)
|
|
148
|
+
continue;
|
|
149
|
+
const regionInfo = regions[r];
|
|
150
|
+
let priceSpot = null;
|
|
151
|
+
let priceOnDemand = null;
|
|
152
|
+
if (gpuPricing) {
|
|
153
|
+
for (const tier of gpuPricing.tiers) {
|
|
154
|
+
if (tier.region === r) {
|
|
155
|
+
priceSpot = tier.interruptible;
|
|
156
|
+
priceOnDemand = tier.onDemand;
|
|
157
|
+
break;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
results.push({
|
|
162
|
+
gpuType: typeId,
|
|
163
|
+
gpuName: gpu.name,
|
|
164
|
+
gpuCount: config.gpuCount,
|
|
165
|
+
cpuCores: config.cpuCores,
|
|
166
|
+
memoryGb: config.memoryGb,
|
|
167
|
+
storageGb: config.storageGb,
|
|
168
|
+
region: r,
|
|
169
|
+
regionName: regionInfo?.description || r,
|
|
170
|
+
country: regionInfo?.country || '',
|
|
171
|
+
priceSpot,
|
|
172
|
+
priceOnDemand,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return results;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Get available regions for a GPU type and count
|
|
181
|
+
*/
|
|
182
|
+
availableRegions(gpu, gpuCount = 1) {
|
|
183
|
+
for (const config of gpu.configs) {
|
|
184
|
+
if (config.gpuCount === gpuCount) {
|
|
185
|
+
return config.regions;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return [];
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get available GPU counts for a type
|
|
192
|
+
*/
|
|
193
|
+
availableCounts(gpu) {
|
|
194
|
+
return gpu.configs.filter(c => c.regions.length > 0).map(c => c.gpuCount);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=instances.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instances.js","sourceRoot":"","sources":["../src/instances.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
export declare function deriveIntegrationsApiBase(agentsApiBase?: string): string;
|
|
2
|
+
export interface Provider {
|
|
3
|
+
name: string;
|
|
4
|
+
providerId: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
auth: string;
|
|
7
|
+
modes: string[];
|
|
8
|
+
backend: string;
|
|
9
|
+
iconUrl: string;
|
|
10
|
+
categories: string[] | null;
|
|
11
|
+
docsUrl: string | null;
|
|
12
|
+
description: string | null;
|
|
13
|
+
connectFlow?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ConnectionInfo {
|
|
16
|
+
id: string;
|
|
17
|
+
errors: string[];
|
|
18
|
+
hyperEnabled: boolean | null;
|
|
19
|
+
/** User-pencilled display name, or provider-derived label. */
|
|
20
|
+
label: string | null;
|
|
21
|
+
createdAt: string | null;
|
|
22
|
+
}
|
|
23
|
+
export interface ConnectionEntry extends Provider {
|
|
24
|
+
connected: boolean;
|
|
25
|
+
backendAvailable: boolean;
|
|
26
|
+
connection: ConnectionInfo | null;
|
|
27
|
+
connections?: ConnectionInfo[];
|
|
28
|
+
}
|
|
29
|
+
export interface ConnectSession {
|
|
30
|
+
provider: string;
|
|
31
|
+
authorizeUrl: string;
|
|
32
|
+
expiresAt: string | null;
|
|
33
|
+
stack: string;
|
|
34
|
+
}
|
|
35
|
+
export interface TokenResponse {
|
|
36
|
+
provider: string;
|
|
37
|
+
accessToken: string;
|
|
38
|
+
expiresAt: string | null;
|
|
39
|
+
stack: string;
|
|
40
|
+
}
|
|
41
|
+
export interface CredentialsResponse {
|
|
42
|
+
provider: string;
|
|
43
|
+
connectionId: string;
|
|
44
|
+
credentials: Record<string, unknown>;
|
|
45
|
+
stack: string;
|
|
46
|
+
}
|
|
47
|
+
export interface ProxyOptions {
|
|
48
|
+
method?: string;
|
|
49
|
+
body?: any;
|
|
50
|
+
query?: Record<string, string | number | Array<string | number>>;
|
|
51
|
+
connectionId?: string;
|
|
52
|
+
headers?: Record<string, string>;
|
|
53
|
+
}
|
|
54
|
+
export declare class IntegrationsAPI {
|
|
55
|
+
private apiBase;
|
|
56
|
+
private apiKey;
|
|
57
|
+
private timeout;
|
|
58
|
+
constructor(apiKey: string, options?: {
|
|
59
|
+
apiBase?: string;
|
|
60
|
+
agentsApiBase?: string;
|
|
61
|
+
timeout?: number;
|
|
62
|
+
});
|
|
63
|
+
private headers;
|
|
64
|
+
private request;
|
|
65
|
+
/** GET /providers — catalog of configured integration providers. */
|
|
66
|
+
listProviders(): Promise<Provider[]>;
|
|
67
|
+
/** GET /connections — per-provider connection state for the caller. */
|
|
68
|
+
listConnections(): Promise<ConnectionEntry[]>;
|
|
69
|
+
/** POST /connections/{provider}/start — begin an OAuth connect session. */
|
|
70
|
+
startConnection(provider: string, connectionId?: string, newConnection?: boolean): Promise<ConnectSession>;
|
|
71
|
+
/**
|
|
72
|
+
* POST /connections/{provider}/complete — verify and enable the connection.
|
|
73
|
+
* Throws APIError 409 while the OAuth flow is still unfinished (pollable).
|
|
74
|
+
*/
|
|
75
|
+
completeConnection(provider: string, connectionId?: string): Promise<{
|
|
76
|
+
provider: string;
|
|
77
|
+
connected: boolean;
|
|
78
|
+
connection: ConnectionInfo | null;
|
|
79
|
+
stack: string;
|
|
80
|
+
}>;
|
|
81
|
+
/** PATCH /connections/{provider} — enable/disable without disconnecting. */
|
|
82
|
+
setConnectionEnabled(provider: string, enabled: boolean, connectionId?: string): Promise<{
|
|
83
|
+
provider: string;
|
|
84
|
+
enabled: boolean;
|
|
85
|
+
}>;
|
|
86
|
+
/** PATCH /connections/{provider} — set the user's display name; null clears it. */
|
|
87
|
+
setConnectionLabel(provider: string, label: string | null, connectionId?: string): Promise<{
|
|
88
|
+
provider: string;
|
|
89
|
+
label: string | null;
|
|
90
|
+
}>;
|
|
91
|
+
/** DELETE /connections/{provider}. */
|
|
92
|
+
disconnect(provider: string, connectionId?: string): Promise<{
|
|
93
|
+
provider: string;
|
|
94
|
+
deleted: boolean;
|
|
95
|
+
}>;
|
|
96
|
+
/** POST /token/{provider} — mint a fresh access token for the connection. */
|
|
97
|
+
mintToken(provider: string, connectionId?: string): Promise<TokenResponse>;
|
|
98
|
+
/** Native Nango credentials; can include long-lived secrets. Requires credentials mode. */
|
|
99
|
+
credentials(provider: string, connectionId?: string): Promise<CredentialsResponse>;
|
|
100
|
+
/** Import native Nango credentials. Existing connection IDs must belong to the caller. */
|
|
101
|
+
importConnection(provider: string, credentials: Record<string, unknown>, options?: {
|
|
102
|
+
connectionId?: string;
|
|
103
|
+
connectionConfig?: Record<string, unknown>;
|
|
104
|
+
}): Promise<ConnectionInfo>;
|
|
105
|
+
/**
|
|
106
|
+
* ANY /proxy/{provider}/{path} — authenticated passthrough to the provider's
|
|
107
|
+
* upstream API with the connection's credentials attached server-side.
|
|
108
|
+
*/
|
|
109
|
+
proxy(provider: string, path: string, options?: ProxyOptions): Promise<any>;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=integrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations facade API - OAuth-backed third-party provider connections
|
|
3
|
+
* (GitHub, Slack, ...) fronted by the /integrations FastAPI service.
|
|
4
|
+
*/
|
|
5
|
+
import { requestWithRetry, responseAPIError } from './http.js';
|
|
6
|
+
import { getAgentsApiBaseUrl } from './config.js';
|
|
7
|
+
export function deriveIntegrationsApiBase(agentsApiBase) {
|
|
8
|
+
const raw = (agentsApiBase || getAgentsApiBaseUrl()).replace(/\/$/, '');
|
|
9
|
+
const url = new URL(raw.includes('://') ? raw : `https://${raw}`);
|
|
10
|
+
let path = url.pathname.replace(/\/$/, '');
|
|
11
|
+
if (path.endsWith('/integrations')) {
|
|
12
|
+
return `${url.protocol}//${url.host}${path}`;
|
|
13
|
+
}
|
|
14
|
+
if (path.endsWith('/agents')) {
|
|
15
|
+
path = path.slice(0, -'/agents'.length);
|
|
16
|
+
}
|
|
17
|
+
return `${url.protocol}//${url.host}${path}/integrations`;
|
|
18
|
+
}
|
|
19
|
+
function stringOrNull(value) {
|
|
20
|
+
return typeof value === 'string' ? value : value === null ? null : value === undefined ? null : String(value);
|
|
21
|
+
}
|
|
22
|
+
function providerFromDict(data) {
|
|
23
|
+
return {
|
|
24
|
+
name: data?.name || '',
|
|
25
|
+
providerId: data?.provider_id ?? data?.providerId ?? '',
|
|
26
|
+
displayName: data?.display_name ?? data?.displayName ?? data?.name ?? '',
|
|
27
|
+
auth: data?.auth || '',
|
|
28
|
+
modes: Array.isArray(data?.modes) ? data.modes.map(String) : [],
|
|
29
|
+
backend: data?.backend || '',
|
|
30
|
+
iconUrl: data?.icon_url ?? data?.iconUrl ?? '',
|
|
31
|
+
categories: Array.isArray(data?.categories) ? data.categories.map(String) : null,
|
|
32
|
+
docsUrl: stringOrNull(data?.docs_url ?? data?.docsUrl),
|
|
33
|
+
description: stringOrNull(data?.description),
|
|
34
|
+
connectFlow: data?.connect_flow,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
function connectionInfoFromDict(data) {
|
|
38
|
+
return {
|
|
39
|
+
id: String(data?.id ?? data?.connection_id ?? ''),
|
|
40
|
+
errors: Array.isArray(data?.errors) ? data.errors.map(String) : [],
|
|
41
|
+
hyperEnabled: data?.hyper_enabled ?? data?.hyperEnabled ?? (typeof data?.enabled === 'boolean' ? data.enabled : null),
|
|
42
|
+
label: typeof data?.label === 'string' && data.label ? data.label : null,
|
|
43
|
+
createdAt: stringOrNull(data?.created_at ?? data?.createdAt),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function connectionEntryFromDict(name, data) {
|
|
47
|
+
return {
|
|
48
|
+
...providerFromDict({ name, ...data }),
|
|
49
|
+
connected: Boolean(data?.connected),
|
|
50
|
+
backendAvailable: data?.backend_available !== undefined ? Boolean(data.backend_available) : true,
|
|
51
|
+
connection: data?.connection ? connectionInfoFromDict(data.connection) : null,
|
|
52
|
+
connections: Array.isArray(data?.connections) ? data.connections.map(connectionInfoFromDict) : undefined,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function connectSessionFromDict(data) {
|
|
56
|
+
return {
|
|
57
|
+
provider: data?.provider || '',
|
|
58
|
+
authorizeUrl: data?.authorize_url ?? data?.authorizeUrl ?? '',
|
|
59
|
+
expiresAt: stringOrNull(data?.expires_at ?? data?.expiresAt),
|
|
60
|
+
stack: data?.stack || '',
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function tokenResponseFromDict(data) {
|
|
64
|
+
return {
|
|
65
|
+
provider: data?.provider || '',
|
|
66
|
+
accessToken: data?.access_token ?? data?.accessToken ?? '',
|
|
67
|
+
expiresAt: stringOrNull(data?.expires_at ?? data?.expiresAt),
|
|
68
|
+
stack: data?.stack || '',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
async function handleResponse(response, method) {
|
|
72
|
+
if (response.status >= 400) {
|
|
73
|
+
throw await responseAPIError(response, method);
|
|
74
|
+
}
|
|
75
|
+
if (response.status === 204 || response.status === 205)
|
|
76
|
+
return undefined;
|
|
77
|
+
const text = await response.text();
|
|
78
|
+
if (!text)
|
|
79
|
+
return undefined;
|
|
80
|
+
try {
|
|
81
|
+
return JSON.parse(text);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return text;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function encodeRef(value) {
|
|
88
|
+
return encodeURIComponent(value);
|
|
89
|
+
}
|
|
90
|
+
function encodePath(value) {
|
|
91
|
+
return value
|
|
92
|
+
.replace(/^\/+/, '')
|
|
93
|
+
.replace(/\/+$/, '')
|
|
94
|
+
.split('/')
|
|
95
|
+
.map(encodeURIComponent)
|
|
96
|
+
.join('/');
|
|
97
|
+
}
|
|
98
|
+
export class IntegrationsAPI {
|
|
99
|
+
apiBase;
|
|
100
|
+
apiKey;
|
|
101
|
+
timeout;
|
|
102
|
+
constructor(apiKey, options = {}) {
|
|
103
|
+
if (!apiKey) {
|
|
104
|
+
throw new Error('API key required for integrations');
|
|
105
|
+
}
|
|
106
|
+
this.apiKey = apiKey;
|
|
107
|
+
this.apiBase = (options.apiBase || deriveIntegrationsApiBase(options.agentsApiBase)).replace(/\/$/, '');
|
|
108
|
+
this.timeout = options.timeout ?? 90000;
|
|
109
|
+
}
|
|
110
|
+
headers() {
|
|
111
|
+
return {
|
|
112
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
113
|
+
'Content-Type': 'application/json',
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async request(method, path, body, query, extraHeaders) {
|
|
117
|
+
const response = await requestWithRetry({
|
|
118
|
+
method,
|
|
119
|
+
url: `${this.apiBase}${path}`,
|
|
120
|
+
headers: { ...this.headers(), ...extraHeaders },
|
|
121
|
+
body,
|
|
122
|
+
params: query,
|
|
123
|
+
retries: method === 'GET' ? 3 : 1,
|
|
124
|
+
timeout: this.timeout,
|
|
125
|
+
});
|
|
126
|
+
return handleResponse(response, method);
|
|
127
|
+
}
|
|
128
|
+
/** GET /providers — catalog of configured integration providers. */
|
|
129
|
+
async listProviders() {
|
|
130
|
+
const data = await this.request('GET', '/providers');
|
|
131
|
+
const providers = Array.isArray(data?.providers) ? data.providers : [];
|
|
132
|
+
return providers.map(providerFromDict);
|
|
133
|
+
}
|
|
134
|
+
/** GET /connections — per-provider connection state for the caller. */
|
|
135
|
+
async listConnections() {
|
|
136
|
+
const data = await this.request('GET', '/connections');
|
|
137
|
+
const connections = data?.connections && typeof data.connections === 'object' ? data.connections : {};
|
|
138
|
+
return Object.entries(connections).map(([name, entry]) => connectionEntryFromDict(name, entry));
|
|
139
|
+
}
|
|
140
|
+
/** POST /connections/{provider}/start — begin an OAuth connect session. */
|
|
141
|
+
async startConnection(provider, connectionId, newConnection = false) {
|
|
142
|
+
const query = {};
|
|
143
|
+
if (connectionId)
|
|
144
|
+
query.connection_id = connectionId;
|
|
145
|
+
if (newConnection)
|
|
146
|
+
query.new_connection = 'true';
|
|
147
|
+
const data = await this.request('POST', `/connections/${encodeRef(provider)}/start`, undefined, query);
|
|
148
|
+
return connectSessionFromDict(data);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* POST /connections/{provider}/complete — verify and enable the connection.
|
|
152
|
+
* Throws APIError 409 while the OAuth flow is still unfinished (pollable).
|
|
153
|
+
*/
|
|
154
|
+
async completeConnection(provider, connectionId) {
|
|
155
|
+
const data = await this.request('POST', `/connections/${encodeRef(provider)}/complete`, undefined, connectionId ? { connection_id: connectionId } : undefined);
|
|
156
|
+
return {
|
|
157
|
+
provider: data?.provider || '',
|
|
158
|
+
connected: Boolean(data?.connected),
|
|
159
|
+
connection: data?.connection ? connectionInfoFromDict(data.connection) : null,
|
|
160
|
+
stack: data?.stack || '',
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/** PATCH /connections/{provider} — enable/disable without disconnecting. */
|
|
164
|
+
async setConnectionEnabled(provider, enabled, connectionId) {
|
|
165
|
+
return this.request('PATCH', `/connections/${encodeRef(provider)}`, { enabled }, connectionId ? { connection_id: connectionId } : undefined);
|
|
166
|
+
}
|
|
167
|
+
/** PATCH /connections/{provider} — set the user's display name; null clears it. */
|
|
168
|
+
async setConnectionLabel(provider, label, connectionId) {
|
|
169
|
+
return this.request('PATCH', `/connections/${encodeRef(provider)}`, { label }, connectionId ? { connection_id: connectionId } : undefined);
|
|
170
|
+
}
|
|
171
|
+
/** DELETE /connections/{provider}. */
|
|
172
|
+
async disconnect(provider, connectionId) {
|
|
173
|
+
return this.request('DELETE', `/connections/${encodeRef(provider)}`, undefined, connectionId ? { connection_id: connectionId } : undefined);
|
|
174
|
+
}
|
|
175
|
+
/** POST /token/{provider} — mint a fresh access token for the connection. */
|
|
176
|
+
async mintToken(provider, connectionId) {
|
|
177
|
+
const data = await this.request('POST', `/token/${encodeRef(provider)}`, undefined, connectionId ? { connection_id: connectionId } : undefined);
|
|
178
|
+
return tokenResponseFromDict(data);
|
|
179
|
+
}
|
|
180
|
+
/** Native Nango credentials; can include long-lived secrets. Requires credentials mode. */
|
|
181
|
+
async credentials(provider, connectionId) {
|
|
182
|
+
const data = await this.request('POST', `/credentials/${encodeRef(provider)}`, undefined, connectionId ? { connection_id: connectionId } : undefined);
|
|
183
|
+
return { provider: data.provider, connectionId: data.connection_id, credentials: data.credentials, stack: data.stack };
|
|
184
|
+
}
|
|
185
|
+
/** Import native Nango credentials. Existing connection IDs must belong to the caller. */
|
|
186
|
+
async importConnection(provider, credentials, options = {}) {
|
|
187
|
+
const data = await this.request('POST', `/connections/${encodeRef(provider)}/import`, { credentials, connection_config: options.connectionConfig ?? {} }, options.connectionId ? { connection_id: options.connectionId } : undefined);
|
|
188
|
+
return connectionInfoFromDict(data.connection);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* ANY /proxy/{provider}/{path} — authenticated passthrough to the provider's
|
|
192
|
+
* upstream API with the connection's credentials attached server-side.
|
|
193
|
+
*/
|
|
194
|
+
async proxy(provider, path, options = {}) {
|
|
195
|
+
const method = (options.method || 'GET').toUpperCase();
|
|
196
|
+
const headers = {};
|
|
197
|
+
if (options.connectionId)
|
|
198
|
+
headers['X-HyperCLI-Connection-Id'] = options.connectionId;
|
|
199
|
+
for (const [key, value] of Object.entries(options.headers ?? {}))
|
|
200
|
+
headers[`Nango-Proxy-${key}`] = value;
|
|
201
|
+
const [pathname, queryString] = path.split('?', 2);
|
|
202
|
+
const query = { ...Object.fromEntries(new URLSearchParams(queryString)), ...options.query };
|
|
203
|
+
return this.request(method, `/proxy/${encodeRef(provider)}/${encodePath(pathname)}`, options.body, query, headers);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=integrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../src/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base job class for GPU workloads
|
|
3
|
+
*/
|
|
4
|
+
import type { HyperCLI } from '../client.js';
|
|
5
|
+
import type { Job } from '../jobs.js';
|
|
6
|
+
export interface BaseJobOptions {
|
|
7
|
+
image?: string;
|
|
8
|
+
gpuType?: string;
|
|
9
|
+
gpuCount?: number;
|
|
10
|
+
runtime?: number;
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Base class for managed GPU jobs with lifecycle helpers
|
|
15
|
+
*/
|
|
16
|
+
export declare class BaseJob {
|
|
17
|
+
client: HyperCLI;
|
|
18
|
+
job: Job;
|
|
19
|
+
static DEFAULT_IMAGE: string;
|
|
20
|
+
static DEFAULT_GPU_TYPE: string;
|
|
21
|
+
static HEALTH_ENDPOINT: string;
|
|
22
|
+
static HEALTH_TIMEOUT: number;
|
|
23
|
+
/**
|
|
24
|
+
* Consumer-side hostname settling window. The API returns after committing
|
|
25
|
+
* the Cloudflare record; waiting before the first lookup avoids caching a
|
|
26
|
+
* transient NXDOMAIN in recursive resolvers.
|
|
27
|
+
*/
|
|
28
|
+
static DEFAULT_HOSTNAME_SETTLE_DELAY: number;
|
|
29
|
+
protected _baseUrl: string | null;
|
|
30
|
+
constructor(client: HyperCLI, job: Job);
|
|
31
|
+
get jobId(): string;
|
|
32
|
+
get hostname(): string | null;
|
|
33
|
+
get baseUrl(): string;
|
|
34
|
+
get authHeaders(): Record<string, string>;
|
|
35
|
+
/**
|
|
36
|
+
* Find an existing running job, optionally filtering by image
|
|
37
|
+
*/
|
|
38
|
+
static getRunning<T extends typeof BaseJob>(this: T, client: HyperCLI, imageFilter?: string): Promise<InstanceType<T> | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Get a job by ID, hostname, or IP address
|
|
41
|
+
*/
|
|
42
|
+
static getByInstance<T extends typeof BaseJob>(this: T, client: HyperCLI, instance: string, state?: string): Promise<InstanceType<T>>;
|
|
43
|
+
/**
|
|
44
|
+
* Create a new job
|
|
45
|
+
*/
|
|
46
|
+
static create<T extends typeof BaseJob>(this: T, client: HyperCLI, options?: BaseJobOptions): Promise<InstanceType<T>>;
|
|
47
|
+
/**
|
|
48
|
+
* Get existing running job or create new one
|
|
49
|
+
*/
|
|
50
|
+
static getOrCreate<T extends typeof BaseJob>(this: T, client: HyperCLI, options?: BaseJobOptions & {
|
|
51
|
+
reuse?: boolean;
|
|
52
|
+
}): Promise<InstanceType<T>>;
|
|
53
|
+
/**
|
|
54
|
+
* Refresh job state from API
|
|
55
|
+
*/
|
|
56
|
+
refresh(): Promise<this>;
|
|
57
|
+
/**
|
|
58
|
+
* Wait for job to reach running state via API polling
|
|
59
|
+
*/
|
|
60
|
+
waitForRunning(timeout?: number, pollInterval?: number): Promise<boolean>;
|
|
61
|
+
/**
|
|
62
|
+
* Alias for waitForRunning
|
|
63
|
+
*/
|
|
64
|
+
waitForHostname(timeout?: number, pollInterval?: number): Promise<boolean>;
|
|
65
|
+
/**
|
|
66
|
+
* Check if the service is responding
|
|
67
|
+
*/
|
|
68
|
+
checkHealth(): Promise<boolean>;
|
|
69
|
+
/**
|
|
70
|
+
* Wait for an EXISTING running job to respond to health checks
|
|
71
|
+
*/
|
|
72
|
+
waitExisting(timeout?: number): Promise<boolean>;
|
|
73
|
+
/**
|
|
74
|
+
* Wait for a NEW job to be ready (running state + health check passing)
|
|
75
|
+
*/
|
|
76
|
+
waitReady(timeout?: number, pollInterval?: number, dnsDelay?: number): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Cancel the job
|
|
79
|
+
*/
|
|
80
|
+
shutdown(): Promise<any>;
|
|
81
|
+
/**
|
|
82
|
+
* Extend job runtime
|
|
83
|
+
*/
|
|
84
|
+
extend(runtime: number): Promise<this>;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/job/base.ts"],"names":[],"mappings":"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"}
|