@aexol/spectral 0.9.264 → 0.9.269
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/extensions/dataset-uploader/cleaner.d.ts +8 -0
- package/dist/extensions/dataset-uploader/cleaner.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/cleaner.js +27 -1
- package/dist/extensions/dataset-uploader/exporter.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/exporter.js +9 -1
- package/dist/extensions/dataset-uploader/scrubber.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/scrubber.js +15 -0
- package/dist/extensions/dataset-uploader/upload.d.ts.map +1 -1
- package/dist/extensions/dataset-uploader/upload.js +5 -1
- package/dist/generated/zeus/const.d.ts.map +1 -1
- package/dist/generated/zeus/const.js +190 -2
- package/dist/generated/zeus/index.d.ts +1194 -0
- package/dist/generated/zeus/index.d.ts.map +1 -1
- package/dist/generated/zeus/index.js +24 -0
- package/dist/memory/tokens.d.ts.map +1 -1
- package/dist/memory/tokens.js +8 -1
- package/dist/sdk/ai/env-api-keys.d.ts.map +1 -1
- package/dist/sdk/ai/env-api-keys.js +38 -8
- package/dist/sdk/coding-agent/core/agent-session.d.ts +2 -1
- package/dist/sdk/coding-agent/core/agent-session.d.ts.map +1 -1
- package/dist/sdk/coding-agent/core/agent-session.js +9 -2
- package/package.json +1 -1
|
@@ -48,6 +48,14 @@ export interface CleanDatasetResult {
|
|
|
48
48
|
}
|
|
49
49
|
/** Derive the default clean output path: `export-x.jsonl` → `export-x.clean.jsonl`. */
|
|
50
50
|
export declare function defaultCleanPath(inputPath: string): string;
|
|
51
|
+
/**
|
|
52
|
+
* Normalize conversation entries to the strict sharegpt contract
|
|
53
|
+
* (`{from, value}`). Internal markers such as `_trunc` (attached by
|
|
54
|
+
* exporter variants to truncated observations) are stripped at
|
|
55
|
+
* serialization time — the marker logic itself is untouched, the key
|
|
56
|
+
* simply never reaches a clean file or the vault.
|
|
57
|
+
*/
|
|
58
|
+
export declare function normalizeConversationEntries(sample: Record<string, unknown>): Record<string, unknown>;
|
|
51
59
|
/**
|
|
52
60
|
* Clean a dataset JSONL file: scrub all string fields, apply optional
|
|
53
61
|
* filters, write `<name>.clean.jsonl` next to the input.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleaner.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/cleaner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,2EAA2E;IAC3E,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AA6CD,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"cleaner.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/cleaner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,2EAA2E;IAC3E,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC/C;AA6CD,uFAAuF;AACvF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAczB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CA2DpB"}
|
|
@@ -59,6 +59,32 @@ export function defaultCleanPath(inputPath) {
|
|
|
59
59
|
}
|
|
60
60
|
return `${inputPath}.clean.jsonl`;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Normalize conversation entries to the strict sharegpt contract
|
|
64
|
+
* (`{from, value}`). Internal markers such as `_trunc` (attached by
|
|
65
|
+
* exporter variants to truncated observations) are stripped at
|
|
66
|
+
* serialization time — the marker logic itself is untouched, the key
|
|
67
|
+
* simply never reaches a clean file or the vault.
|
|
68
|
+
*/
|
|
69
|
+
export function normalizeConversationEntries(sample) {
|
|
70
|
+
const conversations = sample.conversations;
|
|
71
|
+
if (!Array.isArray(conversations))
|
|
72
|
+
return sample;
|
|
73
|
+
let changed = false;
|
|
74
|
+
const normalized = conversations.map((entry) => {
|
|
75
|
+
if (entry === null || typeof entry !== "object" || Array.isArray(entry))
|
|
76
|
+
return entry;
|
|
77
|
+
const record = entry;
|
|
78
|
+
if (!("_trunc" in record))
|
|
79
|
+
return entry;
|
|
80
|
+
changed = true;
|
|
81
|
+
const { _trunc: _dropped, ...rest } = record;
|
|
82
|
+
return rest;
|
|
83
|
+
});
|
|
84
|
+
if (!changed)
|
|
85
|
+
return sample;
|
|
86
|
+
return { ...sample, conversations: normalized };
|
|
87
|
+
}
|
|
62
88
|
/**
|
|
63
89
|
* Clean a dataset JSONL file: scrub all string fields, apply optional
|
|
64
90
|
* filters, write `<name>.clean.jsonl` next to the input.
|
|
@@ -94,7 +120,7 @@ export function cleanDataset(inputPath, options = {}) {
|
|
|
94
120
|
removedByFilter.keepOnlyToolCalls++;
|
|
95
121
|
continue;
|
|
96
122
|
}
|
|
97
|
-
kept.push(scrubDeep(sample, options.extraValues, counts));
|
|
123
|
+
kept.push(normalizeConversationEntries(scrubDeep(sample, options.extraValues, counts)));
|
|
98
124
|
}
|
|
99
125
|
const outputPath = options.outputPath ?? defaultCleanPath(inputPath);
|
|
100
126
|
mkdirSync(dirname(outputPath), { recursive: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/exporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;
|
|
1
|
+
{"version":3,"file":"exporter.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/exporter.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ import { createRequire } from "node:module";
|
|
|
39
39
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
40
40
|
import { dirname, join } from "node:path";
|
|
41
41
|
import { getConfigDir } from "../../config.js";
|
|
42
|
+
import { scrub } from "./scrubber.js";
|
|
42
43
|
const _require = createRequire(import.meta.url);
|
|
43
44
|
let nodeSqliteModule;
|
|
44
45
|
let nodeSqliteProbed = false;
|
|
@@ -187,9 +188,16 @@ export function parseAssistantEvents(eventsJsonl, capChars = null, includeThinki
|
|
|
187
188
|
const text = extractResultText(event.result);
|
|
188
189
|
if (text.length === 0)
|
|
189
190
|
break;
|
|
191
|
+
// Scrub BEFORE the truncation cap: a secret cut mid-token by the
|
|
192
|
+
// cap would no longer match the scrubber's patterns (e.g. a JWT
|
|
193
|
+
// losing its signature segment), so the full text is sanitised
|
|
194
|
+
// first and then cut. Pattern-only scrub (no extraValues — the
|
|
195
|
+
// export step does not collect secret-store/.env values;
|
|
196
|
+
// dataset_clean applies the full scrub to the whole file later).
|
|
197
|
+
const sanitized = scrub(text).text;
|
|
190
198
|
entries.push({
|
|
191
199
|
from: "observation",
|
|
192
|
-
value: (event.isError ? "[ERROR] " : "") + capObservation(capChars,
|
|
200
|
+
value: (event.isError ? "[ERROR] " : "") + capObservation(capChars, sanitized),
|
|
193
201
|
});
|
|
194
202
|
break;
|
|
195
203
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"scrubber.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/scrubber.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,cAAc,EAAE,CAAC;CAC9B;AA6CD;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,WAAW,CAiDvE"}
|
|
@@ -28,6 +28,17 @@ const AUTH_HEADER_PATTERN = /\b(authorization\s*[:=]\s*)(?:bearer\s+)?[A-Za-z0-9
|
|
|
28
28
|
const BEARER_PATTERN = /\bbearer\s+[A-Za-z0-9._~+/=-]+/gi;
|
|
29
29
|
/** Bare JWT: three base64url segments, the first starting with "eyJ". */
|
|
30
30
|
const JWT_PATTERN = /\beyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\b/g;
|
|
31
|
+
/**
|
|
32
|
+
* Partial / truncated JWT: an "eyJ"-prefixed base64url run with one or two
|
|
33
|
+
* dot-separated segments. A JWT cut mid-string (e.g. by observation
|
|
34
|
+
* truncation) loses its signature segment, so JWT_PATTERN no longer
|
|
35
|
+
* matches — but the surviving payload prefix still leaks identifying
|
|
36
|
+
* claims (teamId, machineName, ...). Runs AFTER the full-3-segment
|
|
37
|
+
* pattern, so complete JWTs are redacted as one unit first and identically
|
|
38
|
+
* to before. The "eyJ" prefix (base64 of `{"`) keeps ordinary prose and
|
|
39
|
+
* non-JWT base64 blobs from matching.
|
|
40
|
+
*/
|
|
41
|
+
const JWT_PARTIAL_PATTERN = /\beyJ[A-Za-z0-9_-]{10,}(?:\.[A-Za-z0-9_-]+){0,2}\b/g;
|
|
31
42
|
/**
|
|
32
43
|
* Home directory segment: /Users/<name> followed by "/" or end-of-text.
|
|
33
44
|
* Normalized to /home (the marker would break the surrounding path).
|
|
@@ -77,6 +88,10 @@ export function scrub(text, extraValues) {
|
|
|
77
88
|
counts.jwt = (counts.jwt ?? 0) + 1;
|
|
78
89
|
return "[REDACTED:jwt]";
|
|
79
90
|
});
|
|
91
|
+
out = out.replace(JWT_PARTIAL_PATTERN, () => {
|
|
92
|
+
counts.jwt = (counts.jwt ?? 0) + 1;
|
|
93
|
+
return "[REDACTED:jwt]";
|
|
94
|
+
});
|
|
80
95
|
out = out.replace(HOME_PATH_PATTERN, () => {
|
|
81
96
|
counts.home_path = (counts.home_path ?? 0) + 1;
|
|
82
97
|
return "/home";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/upload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/extensions/dataset-uploader/upload.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAaH,eAAO,MAAM,kBAAkB,KAAK,CAAC;AAErC,0DAA0D;AAC1D,eAAO,MAAM,mBAAmB,2BAA2B,CAAC;AAE5D,yEAAyE;AACzE,eAAO,MAAM,wBAAwB,wBAAwB,CAAC;AAE9D,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,wGAAwG;IACxG,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iEAAiE;IACjE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,2EAA2E;IAC3E,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnE,kFAAkF;IAClF,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAC9D,uEAAuE;IACvE,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAQD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,eAAe,GAAG,IAAI,GAAG,IAAI,CAE7E;AAmFD;;;;;GAKG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAgI9B;AAMD,mEAAmE;AACnE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA2CxE"}
|
|
@@ -28,6 +28,7 @@ import { ensureAuthenticated } from "../../auth-helper.js";
|
|
|
28
28
|
import { readStudioBinding } from "../../studio-binding.js";
|
|
29
29
|
import { renderContentToString } from "../aexol-backend-client.js";
|
|
30
30
|
import { loadJsonl } from "./analyzer.js";
|
|
31
|
+
import { normalizeConversationEntries } from "./cleaner.js";
|
|
31
32
|
import { scrub } from "./scrubber.js";
|
|
32
33
|
export const DEFAULT_BATCH_SIZE = 50;
|
|
33
34
|
/** Backend MCP tool that ingests one batch of samples. */
|
|
@@ -149,7 +150,10 @@ export async function uploadDataset(options) {
|
|
|
149
150
|
}
|
|
150
151
|
notes.push("Per-project batching is not supported by the exporter JSONL (no per-sample project provenance); " +
|
|
151
152
|
"a single projectId from the binding is used for all batches.");
|
|
152
|
-
|
|
153
|
+
// Serialize with conversation entries normalized to the strict sharegpt
|
|
154
|
+
// contract ({from, value}) — internal markers such as `_trunc` never
|
|
155
|
+
// reach the vault, even when the input file was not run through clean.
|
|
156
|
+
const validSamples = samples.map((s) => JSON.stringify(normalizeConversationEntries(s)));
|
|
153
157
|
const invalidLines = malformedLines;
|
|
154
158
|
// ---- pre-upload residue warning (pattern-only dry-run scrub) ------------
|
|
155
159
|
// Runs in BOTH dry-run and real uploads, before the first network batch.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/generated/zeus/const.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"const.d.ts","sourceRoot":"","sources":["../../../src/generated/zeus/const.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAC,GAAG,CAogC5C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAC,GAAG,CAmjD1C,CAAA;AAED,eAAO,MAAM,GAAG;;;;CAIf,CAAA"}
|
|
@@ -229,8 +229,13 @@ export const AllTypesProps = {
|
|
|
229
229
|
adminVastAiOffers: {
|
|
230
230
|
query: "AdminVastAiOfferQueryInput"
|
|
231
231
|
},
|
|
232
|
+
adminUpCloudGpuPrices: {},
|
|
233
|
+
adminUpCloudServers: {},
|
|
234
|
+
adminUpCloudServer: {},
|
|
232
235
|
adminRunPodPods: {},
|
|
233
|
-
adminDeployConfig: {}
|
|
236
|
+
adminDeployConfig: {},
|
|
237
|
+
adminColdStartRuns: {},
|
|
238
|
+
adminColdStartRun: {}
|
|
234
239
|
},
|
|
235
240
|
Mutation: {
|
|
236
241
|
register: {
|
|
@@ -399,6 +404,18 @@ export const AllTypesProps = {
|
|
|
399
404
|
input: "AdminUpdateDeployConfigInput"
|
|
400
405
|
},
|
|
401
406
|
adminDeleteDeployConfig: {},
|
|
407
|
+
adminCreateColdStartProfile: {
|
|
408
|
+
input: "AdminColdStartProfileInput"
|
|
409
|
+
},
|
|
410
|
+
adminUpdateColdStartProfile: {
|
|
411
|
+
input: "AdminUpdateColdStartProfileInput"
|
|
412
|
+
},
|
|
413
|
+
adminDeleteColdStartProfile: {},
|
|
414
|
+
adminStartColdStartRun: {},
|
|
415
|
+
adminStopColdStartRun: {
|
|
416
|
+
mode: "ColdStartStopMode"
|
|
417
|
+
},
|
|
418
|
+
adminPollColdStartRun: {},
|
|
402
419
|
adminCreateBuiltInModel: {
|
|
403
420
|
input: "CreateBuiltInModelInput"
|
|
404
421
|
},
|
|
@@ -434,6 +451,13 @@ export const AllTypesProps = {
|
|
|
434
451
|
adminStartVastAiInstance: {},
|
|
435
452
|
adminStopVastAiInstance: {},
|
|
436
453
|
adminDestroyVastAiInstance: {},
|
|
454
|
+
adminUpCloudDeployServer: {
|
|
455
|
+
input: "UpCloudDeployInput"
|
|
456
|
+
},
|
|
457
|
+
adminUpCloudStartServer: {},
|
|
458
|
+
adminUpCloudStopServer: {},
|
|
459
|
+
adminUpCloudAddFirewallPorts: {},
|
|
460
|
+
adminUpCloudDestroyServer: {},
|
|
437
461
|
adminCreateRunPod: {
|
|
438
462
|
input: "AdminCreateRunPodInput"
|
|
439
463
|
},
|
|
@@ -565,6 +589,10 @@ export const AllTypesProps = {
|
|
|
565
589
|
AdminVastAiOfferQueryInput: {},
|
|
566
590
|
AdminCreateVastAiInstanceInput: {},
|
|
567
591
|
AdminUpdateVastAiInstanceInput: {},
|
|
592
|
+
UpCloudLabelInput: {},
|
|
593
|
+
UpCloudDeployInput: {
|
|
594
|
+
labels: "UpCloudLabelInput"
|
|
595
|
+
},
|
|
568
596
|
AdminCreateRunPodInput: {
|
|
569
597
|
env: "JSON"
|
|
570
598
|
},
|
|
@@ -573,6 +601,15 @@ export const AllTypesProps = {
|
|
|
573
601
|
},
|
|
574
602
|
AdminCreateDeployConfigInput: {},
|
|
575
603
|
AdminUpdateDeployConfigInput: {},
|
|
604
|
+
ColdStartRunStatus: "enum",
|
|
605
|
+
GpuProvider: "enum",
|
|
606
|
+
AdminColdStartProfileInput: {
|
|
607
|
+
provider: "GpuProvider"
|
|
608
|
+
},
|
|
609
|
+
AdminUpdateColdStartProfileInput: {
|
|
610
|
+
provider: "GpuProvider"
|
|
611
|
+
},
|
|
612
|
+
ColdStartStopMode: "enum",
|
|
576
613
|
BaseModelUpdateInput: {},
|
|
577
614
|
BaseModelCreateInput: {
|
|
578
615
|
capabilities: "JSON"
|
|
@@ -1161,12 +1198,21 @@ export const ReturnTypes = {
|
|
|
1161
1198
|
adminVastAiSettings: "AdminVastAiSettings",
|
|
1162
1199
|
adminVastAiOffers: "AdminVastAiOffer",
|
|
1163
1200
|
adminVastAiInstances: "AdminVastAiInstance",
|
|
1201
|
+
adminUpCloudAccount: "UpCloudAccount",
|
|
1202
|
+
adminUpCloudGpuPlans: "UpCloudGpuPlan",
|
|
1203
|
+
adminUpCloudGpuPrices: "UpCloudPlanPrices",
|
|
1204
|
+
adminUpCloudTemplates: "UpCloudTemplate",
|
|
1205
|
+
adminUpCloudServers: "UpCloudServer",
|
|
1206
|
+
adminUpCloudServer: "UpCloudServer",
|
|
1164
1207
|
adminRunPodAccount: "AdminRunPodAccount",
|
|
1165
1208
|
adminRunPodSettings: "AdminRunPodSettings",
|
|
1166
1209
|
adminRunPodPods: "AdminRunPodPod",
|
|
1167
1210
|
adminRunPodGpuTypes: "AdminRunPodGpuType",
|
|
1168
1211
|
adminDeployConfigs: "AdminDeployConfig",
|
|
1169
|
-
adminDeployConfig: "AdminDeployConfig"
|
|
1212
|
+
adminDeployConfig: "AdminDeployConfig",
|
|
1213
|
+
adminColdStartProfiles: "AdminColdStartProfile",
|
|
1214
|
+
adminColdStartRuns: "ColdStartRun",
|
|
1215
|
+
adminColdStartRun: "ColdStartRun"
|
|
1170
1216
|
},
|
|
1171
1217
|
Mutation: {
|
|
1172
1218
|
register: "AuthPayload",
|
|
@@ -1260,6 +1306,13 @@ export const ReturnTypes = {
|
|
|
1260
1306
|
adminCreateDeployConfig: "AdminDeployConfig",
|
|
1261
1307
|
adminUpdateDeployConfig: "AdminDeployConfig",
|
|
1262
1308
|
adminDeleteDeployConfig: "Boolean",
|
|
1309
|
+
adminCreateColdStartProfile: "AdminColdStartProfile",
|
|
1310
|
+
adminUpdateColdStartProfile: "AdminColdStartProfile",
|
|
1311
|
+
adminDeleteColdStartProfile: "Boolean",
|
|
1312
|
+
adminStartColdStartRun: "StartColdStartResult",
|
|
1313
|
+
adminStopColdStartRun: "ColdStartRun",
|
|
1314
|
+
adminPollColdStartRun: "ColdStartRun",
|
|
1315
|
+
adminReconcileColdStartRuns: "ReconcileColdStartRunsResult",
|
|
1263
1316
|
adminCreateBuiltInModel: "UserModel",
|
|
1264
1317
|
adminUpdateBuiltInModel: "UserModel",
|
|
1265
1318
|
adminDeleteBuiltInModel: "Boolean",
|
|
@@ -1277,6 +1330,11 @@ export const ReturnTypes = {
|
|
|
1277
1330
|
adminStartVastAiInstance: "AdminVastAiOperation",
|
|
1278
1331
|
adminStopVastAiInstance: "AdminVastAiOperation",
|
|
1279
1332
|
adminDestroyVastAiInstance: "AdminVastAiOperation",
|
|
1333
|
+
adminUpCloudDeployServer: "UpCloudServer",
|
|
1334
|
+
adminUpCloudStartServer: "UpCloudOperation",
|
|
1335
|
+
adminUpCloudStopServer: "UpCloudOperation",
|
|
1336
|
+
adminUpCloudAddFirewallPorts: "UpCloudOperation",
|
|
1337
|
+
adminUpCloudDestroyServer: "UpCloudOperation",
|
|
1280
1338
|
adminCreateRunPod: "AdminRunPodPod",
|
|
1281
1339
|
adminUpdateRunPod: "AdminRunPodPod",
|
|
1282
1340
|
adminStartRunPod: "AdminRunPodOperation",
|
|
@@ -1362,6 +1420,7 @@ export const ReturnTypes = {
|
|
|
1362
1420
|
subscriptionConnectable: "Boolean",
|
|
1363
1421
|
upstreamApiFormat: "ModelApiFormat",
|
|
1364
1422
|
restrictedToTeams: "Boolean",
|
|
1423
|
+
coldStartEnabled: "Boolean",
|
|
1365
1424
|
allowedTeamIds: "ID",
|
|
1366
1425
|
defaultThinkingLevel: "String",
|
|
1367
1426
|
contextWindow: "Int",
|
|
@@ -1864,6 +1923,59 @@ export const ReturnTypes = {
|
|
|
1864
1923
|
status: "String",
|
|
1865
1924
|
message: "String"
|
|
1866
1925
|
},
|
|
1926
|
+
UpCloudAccount: {
|
|
1927
|
+
username: "String",
|
|
1928
|
+
creditsEur: "Float",
|
|
1929
|
+
paidCreditsEur: "Float",
|
|
1930
|
+
resourceLimitsCores: "Int",
|
|
1931
|
+
resourceLimitsGpus: "Int",
|
|
1932
|
+
resourceLimitsMemoryMiB: "Int",
|
|
1933
|
+
resourceLimitsPublicIpv4: "Int"
|
|
1934
|
+
},
|
|
1935
|
+
UpCloudGpuPlan: {
|
|
1936
|
+
name: "String",
|
|
1937
|
+
cores: "Int",
|
|
1938
|
+
memoryGb: "Float",
|
|
1939
|
+
gpuAmount: "Int",
|
|
1940
|
+
gpuModel: "String",
|
|
1941
|
+
spot: "Boolean"
|
|
1942
|
+
},
|
|
1943
|
+
UpCloudPlanPrice: {
|
|
1944
|
+
plan: "String",
|
|
1945
|
+
hourlyEur: "Float",
|
|
1946
|
+
spotHourlyEur: "Float"
|
|
1947
|
+
},
|
|
1948
|
+
UpCloudPlanPrices: {
|
|
1949
|
+
byPlan: "UpCloudPlanPrice",
|
|
1950
|
+
storageStandardEurPerGbMonth: "Float",
|
|
1951
|
+
storageMaxiopsEurPerGbMonth: "Float",
|
|
1952
|
+
publicIpv4EurPerMonth: "Float"
|
|
1953
|
+
},
|
|
1954
|
+
UpCloudTemplate: {
|
|
1955
|
+
uuid: "String",
|
|
1956
|
+
title: "String",
|
|
1957
|
+
sizeGb: "Int",
|
|
1958
|
+
cloudInit: "Boolean"
|
|
1959
|
+
},
|
|
1960
|
+
UpCloudLabel: {
|
|
1961
|
+
key: "String",
|
|
1962
|
+
value: "String"
|
|
1963
|
+
},
|
|
1964
|
+
UpCloudServer: {
|
|
1965
|
+
uuid: "String",
|
|
1966
|
+
title: "String",
|
|
1967
|
+
hostname: "String",
|
|
1968
|
+
plan: "String",
|
|
1969
|
+
zone: "String",
|
|
1970
|
+
state: "String",
|
|
1971
|
+
publicIp: "String",
|
|
1972
|
+
labels: "UpCloudLabel"
|
|
1973
|
+
},
|
|
1974
|
+
UpCloudOperation: {
|
|
1975
|
+
uuid: "String",
|
|
1976
|
+
status: "String",
|
|
1977
|
+
message: "String"
|
|
1978
|
+
},
|
|
1867
1979
|
AdminRunPodAccount: {
|
|
1868
1980
|
balance: "Float",
|
|
1869
1981
|
spendPerHr: "Float",
|
|
@@ -1926,6 +2038,82 @@ export const ReturnTypes = {
|
|
|
1926
2038
|
createdAt: "DateTime",
|
|
1927
2039
|
updatedAt: "DateTime"
|
|
1928
2040
|
},
|
|
2041
|
+
AdminColdStartProfile: {
|
|
2042
|
+
id: "String",
|
|
2043
|
+
name: "String",
|
|
2044
|
+
description: "String",
|
|
2045
|
+
provider: "GpuProvider",
|
|
2046
|
+
targetUserModelSlug: "String",
|
|
2047
|
+
servedModelName: "String",
|
|
2048
|
+
hfModel: "String",
|
|
2049
|
+
gpuNames: "String",
|
|
2050
|
+
minGpus: "Int",
|
|
2051
|
+
minVramGb: "Int",
|
|
2052
|
+
maxPricePerHour: "Float",
|
|
2053
|
+
maxPricePerHourCurrency: "String",
|
|
2054
|
+
minReliability: "Float",
|
|
2055
|
+
verifiedOnly: "Boolean",
|
|
2056
|
+
datacenterOnly: "Boolean",
|
|
2057
|
+
geolocations: "String",
|
|
2058
|
+
dockerImage: "String",
|
|
2059
|
+
startCommand: "String",
|
|
2060
|
+
diskGb: "Int",
|
|
2061
|
+
exposedPorts: "String",
|
|
2062
|
+
useVolume: "Boolean",
|
|
2063
|
+
volumeSizeGb: "Int",
|
|
2064
|
+
volumeMountPath: "String",
|
|
2065
|
+
reuseExistingVolume: "Boolean",
|
|
2066
|
+
lastVolumeMachineId: "String",
|
|
2067
|
+
lastVolumeName: "String",
|
|
2068
|
+
pollIntervalSec: "Int",
|
|
2069
|
+
readyTimeoutSec: "Int",
|
|
2070
|
+
healthProbePath: "String",
|
|
2071
|
+
maxRuntimeHours: "Int",
|
|
2072
|
+
autoDestroyOnFailure: "Boolean",
|
|
2073
|
+
autoStartOnRequest: "Boolean",
|
|
2074
|
+
enabled: "Boolean",
|
|
2075
|
+
createdAt: "DateTime",
|
|
2076
|
+
updatedAt: "DateTime"
|
|
2077
|
+
},
|
|
2078
|
+
ColdStartRun: {
|
|
2079
|
+
id: "String",
|
|
2080
|
+
profileId: "String",
|
|
2081
|
+
userModelId: "String",
|
|
2082
|
+
status: "ColdStartRunStatus",
|
|
2083
|
+
provider: "GpuProvider",
|
|
2084
|
+
offerId: "String",
|
|
2085
|
+
machineId: "String",
|
|
2086
|
+
instanceId: "String",
|
|
2087
|
+
publicIp: "String",
|
|
2088
|
+
hostPort: "Int",
|
|
2089
|
+
gpuName: "String",
|
|
2090
|
+
numGpus: "Int",
|
|
2091
|
+
pricePerHourUsd: "Float",
|
|
2092
|
+
volumeId: "String",
|
|
2093
|
+
discoveredUrl: "String",
|
|
2094
|
+
servedModelName: "String",
|
|
2095
|
+
previousCustomBaseUrl: "String",
|
|
2096
|
+
previousBaseModel: "String",
|
|
2097
|
+
volumeName: "String",
|
|
2098
|
+
error: "String",
|
|
2099
|
+
onstartScript: "String",
|
|
2100
|
+
attemptedOfferIds: "String",
|
|
2101
|
+
needsManualAction: "Boolean",
|
|
2102
|
+
startedAt: "DateTime",
|
|
2103
|
+
readyAt: "DateTime",
|
|
2104
|
+
finishedAt: "DateTime",
|
|
2105
|
+
createdAt: "DateTime",
|
|
2106
|
+
updatedAt: "DateTime"
|
|
2107
|
+
},
|
|
2108
|
+
StartColdStartResult: {
|
|
2109
|
+
run: "ColdStartRun",
|
|
2110
|
+
created: "Boolean"
|
|
2111
|
+
},
|
|
2112
|
+
ReconcileColdStartRunsResult: {
|
|
2113
|
+
resumed: "Int",
|
|
2114
|
+
failed: "Int",
|
|
2115
|
+
swept: "Int"
|
|
2116
|
+
},
|
|
1929
2117
|
OpenRouterModelProvider: {
|
|
1930
2118
|
name: "String",
|
|
1931
2119
|
label: "String"
|