@sogni-ai/sogni-client 5.1.0 → 5.3.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/AGENTS.md +2 -1
- package/CHANGELOG.md +26 -0
- package/README.md +63 -1
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +3 -1
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +14 -2
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
- package/dist/ApiClient/WebSocketClient/events.d.ts +11 -0
- package/dist/ApiClient/WebSocketClient/index.d.ts +3 -1
- package/dist/ApiClient/WebSocketClient/index.js +4 -1
- package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
- package/dist/ApiClient/index.d.ts +10 -1
- package/dist/ApiClient/index.js +16 -3
- package/dist/ApiClient/index.js.map +1 -1
- package/dist/ApiGroup.d.ts +3 -0
- package/dist/ApiGroup.js +13 -0
- package/dist/ApiGroup.js.map +1 -1
- package/dist/Chat/ChatTools.js +2 -1
- package/dist/Chat/ChatTools.js.map +1 -1
- package/dist/Chat/index.d.ts +9 -1
- package/dist/Chat/index.js +46 -6
- package/dist/Chat/index.js.map +1 -1
- package/dist/Chat/modelRouting.d.ts +2 -0
- package/dist/Chat/modelRouting.js +6 -2
- package/dist/Chat/modelRouting.js.map +1 -1
- package/dist/Chat/types.d.ts +50 -1
- package/dist/CreativeWorkflows/index.js +4 -5
- package/dist/CreativeWorkflows/index.js.map +1 -1
- package/dist/CreativeWorkflows/types.d.ts +7 -0
- package/dist/Projects/createJobRequestMessage.js +4 -1
- package/dist/Projects/createJobRequestMessage.js.map +1 -1
- package/dist/Projects/index.js +4 -3
- package/dist/Projects/index.js.map +1 -1
- package/dist/Projects/types/ModelOptions.d.ts +1 -0
- package/dist/Projects/types/ModelOptions.js +2 -1
- package/dist/Projects/types/ModelOptions.js.map +1 -1
- package/dist/Projects/types/ModelTiersRaw.d.ts +1 -0
- package/dist/Projects/types/ModelTiersRaw.js.map +1 -1
- package/dist/Projects/types/events.d.ts +3 -0
- package/dist/Projects/types/index.d.ts +35 -9
- package/dist/Projects/types/index.js.map +1 -1
- package/dist/index.d.ts +11 -3
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/RestClient.d.ts +3 -2
- package/dist/lib/RestClient.js +2 -3
- package/dist/lib/RestClient.js.map +1 -1
- package/dist/lib/attribution.d.ts +24 -0
- package/dist/lib/attribution.js +264 -0
- package/dist/lib/attribution.js.map +1 -0
- package/dist/lib/validation.d.ts +6 -0
- package/dist/lib/validation.js +40 -7
- package/dist/lib/validation.js.map +1 -1
- package/dist/types/attribution.d.ts +67 -0
- package/dist/types/attribution.js +3 -0
- package/dist/types/attribution.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +14 -2
- package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
- package/dist-esm/ApiClient/WebSocketClient/index.js +4 -1
- package/dist-esm/ApiClient/WebSocketClient/index.js.map +1 -1
- package/dist-esm/ApiClient/index.js +16 -3
- package/dist-esm/ApiClient/index.js.map +1 -1
- package/dist-esm/ApiGroup.js +13 -0
- package/dist-esm/ApiGroup.js.map +1 -1
- package/dist-esm/Chat/ChatTools.js +2 -1
- package/dist-esm/Chat/ChatTools.js.map +1 -1
- package/dist-esm/Chat/index.js +46 -6
- package/dist-esm/Chat/index.js.map +1 -1
- package/dist-esm/Chat/modelRouting.js +6 -2
- package/dist-esm/Chat/modelRouting.js.map +1 -1
- package/dist-esm/CreativeWorkflows/index.js +4 -5
- package/dist-esm/CreativeWorkflows/index.js.map +1 -1
- package/dist-esm/Projects/createJobRequestMessage.js +5 -2
- package/dist-esm/Projects/createJobRequestMessage.js.map +1 -1
- package/dist-esm/Projects/index.js +4 -3
- package/dist-esm/Projects/index.js.map +1 -1
- package/dist-esm/Projects/types/ModelOptions.js +2 -1
- package/dist-esm/Projects/types/ModelOptions.js.map +1 -1
- package/dist-esm/Projects/types/ModelTiersRaw.js.map +1 -1
- package/dist-esm/Projects/types/index.js.map +1 -1
- package/dist-esm/index.js +1 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/lib/RestClient.js +2 -3
- package/dist-esm/lib/RestClient.js.map +1 -1
- package/dist-esm/lib/attribution.js +257 -0
- package/dist-esm/lib/attribution.js.map +1 -0
- package/dist-esm/lib/validation.js +39 -7
- package/dist-esm/lib/validation.js.map +1 -1
- package/dist-esm/types/attribution.js +2 -0
- package/dist-esm/types/attribution.js.map +1 -0
- package/dist-esm/version.js +1 -1
- package/llms-full.txt +45 -4
- package/llms.txt +14 -2
- package/package.json +2 -1
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +16 -2
- package/src/ApiClient/WebSocketClient/events.ts +12 -0
- package/src/ApiClient/WebSocketClient/index.ts +10 -1
- package/src/ApiClient/index.ts +42 -2
- package/src/ApiGroup.ts +25 -0
- package/src/Chat/ChatTools.ts +5 -1
- package/src/Chat/index.ts +73 -6
- package/src/Chat/modelRouting.ts +15 -2
- package/src/Chat/types.ts +59 -1
- package/src/CreativeWorkflows/index.ts +11 -3
- package/src/CreativeWorkflows/types.ts +7 -0
- package/src/Projects/createJobRequestMessage.ts +7 -2
- package/src/Projects/index.ts +5 -3
- package/src/Projects/types/ModelOptions.ts +3 -1
- package/src/Projects/types/ModelTiersRaw.ts +1 -0
- package/src/Projects/types/events.ts +4 -0
- package/src/Projects/types/index.ts +35 -9
- package/src/index.ts +43 -2
- package/src/lib/RestClient.ts +10 -3
- package/src/lib/attribution.ts +304 -0
- package/src/lib/validation.ts +44 -7
- package/src/types/attribution.ts +89 -0
- package/src/version.ts +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SupernetType } from '../../ApiClient/WebSocketClient/types.js';
|
|
2
2
|
import { ControlNetParams, VideoControlNetParams } from './ControlNetParams.js';
|
|
3
3
|
import { TokenType } from '../../types/token.js';
|
|
4
|
+
import type { WorkloadAttributionInput } from '../../types/attribution.js';
|
|
4
5
|
export interface SupportedModel {
|
|
5
6
|
id: string;
|
|
6
7
|
name: string;
|
|
@@ -95,17 +96,36 @@ export interface BaseProjectParams {
|
|
|
95
96
|
*/
|
|
96
97
|
appSource?: string;
|
|
97
98
|
/**
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
99
|
+
* Optional workload attribution for this project. Fields override the
|
|
100
|
+
* immutable defaults configured on SogniClient.
|
|
101
|
+
*/
|
|
102
|
+
attribution?: WorkloadAttributionInput;
|
|
103
|
+
/**
|
|
104
|
+
* LoRA IDs to apply, in the order they should be chained.
|
|
105
|
+
*
|
|
106
|
+
* Which LoRAs are available depends on the model; the Krea 2 family carries
|
|
107
|
+
* the largest set. Workers download a LoRA on first use, so the first render
|
|
108
|
+
* with an uncached one takes longer to start.
|
|
109
|
+
*
|
|
110
|
+
* Order is significant. The LoRAs are applied in sequence and the same set in
|
|
111
|
+
* a different order produces a measurably different image, because these
|
|
112
|
+
* models run fp8-quantized and the patches do not commute.
|
|
113
|
+
*
|
|
114
|
+
* Up to 8 per render. IDs are resolved to filenames by the worker.
|
|
115
|
+
* Example: ['krea2-detail-enhancer', 'krea2-amateur']
|
|
103
116
|
*/
|
|
104
117
|
loras?: string[];
|
|
105
118
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
119
|
+
* Strength for each entry in `loras`, positionally matched. Defaults to 1.0.
|
|
120
|
+
*
|
|
121
|
+
* Not restricted to positive values. Most Krea 2 LoRAs are bipolar sliders
|
|
122
|
+
* where a negative strength applies the inverse effect and 0 does nothing -
|
|
123
|
+
* Warm Light warms at 2 and cools at -2. Each LoRA has its own valid range
|
|
124
|
+
* and its author's recommended band; values outside the valid range are
|
|
125
|
+
* clamped server-side, and pushing past the recommended band usually costs
|
|
126
|
+
* detail rather than adding effect.
|
|
127
|
+
*
|
|
128
|
+
* Example: [3, -2]
|
|
109
129
|
*/
|
|
110
130
|
loraStrengths?: number[];
|
|
111
131
|
}
|
|
@@ -373,7 +393,8 @@ export interface ImageProjectParams extends BaseProjectParams {
|
|
|
373
393
|
* Context images for multi-reference image generation.
|
|
374
394
|
* GPT Image 2 supports up to 16 context images.
|
|
375
395
|
* Flux.2 Dev supports up to 6 context images.
|
|
376
|
-
* Qwen Image Edit
|
|
396
|
+
* Qwen Image Edit supports up to 3 context images.
|
|
397
|
+
* Krea 2 Identity Edit supports up to 2 context images.
|
|
377
398
|
* Flux Kontext supports up to 2 context images.
|
|
378
399
|
*/
|
|
379
400
|
contextImages?: InputMedia[];
|
|
@@ -387,6 +408,11 @@ export interface ImageProjectParams extends BaseProjectParams {
|
|
|
387
408
|
* to get the list of available schedulers.
|
|
388
409
|
*/
|
|
389
410
|
scheduler?: string;
|
|
411
|
+
/**
|
|
412
|
+
* VAE filename, available options depend on the model. Use `sogni.projects.getModelOptions(modelId)`
|
|
413
|
+
* to get the list of available VAEs.
|
|
414
|
+
*/
|
|
415
|
+
vae?: string;
|
|
390
416
|
/**
|
|
391
417
|
* Size preset ID to use. You can query available size presets
|
|
392
418
|
* from `sogni.projects.sizePresets(network, modelId)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Projects/types/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Projects/types/index.ts"],"names":[],"mappings":";;AAwgBA,sCAEC;AAED,sCAEC;AAED,sCAEC;AAVD,SAAgB,aAAa,CAAC,MAAqB;IACjD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAqB;IACjD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC;AAED,SAAgB,aAAa,CAAC,MAAqB;IACjD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;AACjC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import ProjectsApi from './Projects/index.js';
|
|
|
9
9
|
import Job, { JobStatus } from './Projects/Job.js';
|
|
10
10
|
import Project, { ProjectStatus } from './Projects/Project.js';
|
|
11
11
|
import { AudioOutputFormat, AudioProjectParams, AvailableModel, BillingMode, ImageProjectParams, ImageOutputFormat, ProjectParams, VideoProjectParams, AudioFormat, VideoFormat, VideoOutputFormat, VideoWorkflowType, SizePreset, EstimateRequest, CostEstimation, InputMedia } from './Projects/types/index.js';
|
|
12
|
-
import type { ProjectEvent, JobEvent } from './Projects/types/events.js';
|
|
12
|
+
import type { ProjectEvent, JobEvent, JobPreparation } from './Projects/types/events.js';
|
|
13
13
|
import type { RawProject } from './Projects/types/RawProject.js';
|
|
14
14
|
import type { Balances, Reward, TxHistoryEntry } from './Account/types.js';
|
|
15
15
|
import type { CreateSubscriptionCheckoutOptions, SubscriptionCheckoutResult, SubscriptionEntitlementSnapshot, SubscriptionPlanId, SubscriptionPlanInterval, SubscriptionPlan, SubscriptionPortalSession, SubscriptionRedirectType, SubscriptionStatus, SubscriptionTerm, SubscriptionUsage, TrialEligibility, TrialReasonCode } from './Account/subscription.types.js';
|
|
@@ -20,7 +20,7 @@ import ChatApi from './Chat/index.js';
|
|
|
20
20
|
import ChatJobError, { ChatJobErrorFields } from './Chat/ChatJobError.js';
|
|
21
21
|
import ChatStream from './Chat/ChatStream.js';
|
|
22
22
|
import ChatToolsApi from './Chat/ChatTools.js';
|
|
23
|
-
import { ChatMessage, ChatCompletionParams, ChatCompletionChunk, ChatCompletionResult, ChatJobStateEvent, ChatResponseFormat, ChatRunEvent, ChatRunRecord, ChatRunStatus, StartChatRunParams, StreamChatRunEventsOptions, ContentPart, HostedChatCompletionParams, HostedChatCompletionResult, HostedChatCompletionChoice, HostedChatCompletionMessage, HostedCreativeWorkflowReference, TextContentPart, ImageUrlContentPart, TokenUsage as ChatTokenUsage, LLMCostEstimation, LLMJobCost, LLMModelInfo, LLMParamConstraint, LLMSamplingDefaults, ToolDefinition, ToolCall, ToolCallDelta, ToolCallFunction, ToolChoice, ToolFunction, SogniToolsMode, ToolExecutionProgress, ToolExecutionResult, ToolHistoryEntry, ToolExecutionOptions } from './Chat/types.js';
|
|
23
|
+
import { ChatMessage, ChatCompletionParams, ChatCompletionChunk, ChatCompletionResult, ChatJobStateEvent, ChatResponseFormat, ChatRunEvent, ChatRunRecord, ChatRunStatus, StartChatRunParams, StreamChatRunEventsOptions, ContentPart, HostedChatCompletionParams, HostedChatCompletionResult, HostedChatCompletionChoice, HostedChatCompletionMessage, HostedCreativeWorkflowReference, HostedSynchronousToolName, HostedToolExecutionParams, HostedToolExecutionResult, TextContentPart, ImageUrlContentPart, TokenUsage as ChatTokenUsage, LLMCostEstimation, LLMJobCost, LLMModelInfo, LLMParamConstraint, LLMSamplingDefaults, ToolDefinition, ToolCall, ToolCallDelta, ToolCallFunction, ToolChoice, ToolFunction, SogniToolsMode, ToolExecutionProgress, ToolExecutionResult, ToolHistoryEntry, ToolExecutionOptions } from './Chat/types.js';
|
|
24
24
|
import { SogniTools, isSogniToolCall, parseToolCallArguments } from './Chat/tools.js';
|
|
25
25
|
import CreativeWorkflowsApi, { parseCreativeWorkflowSseChunk } from './CreativeWorkflows/index.js';
|
|
26
26
|
import CreativeWorkflowTemplatesApi from './CreativeWorkflows/Templates/index.js';
|
|
@@ -34,7 +34,8 @@ import type { SubscriptionErrorCode } from './types/ErrorData.js';
|
|
|
34
34
|
import isSubscriptionLimitError from './lib/isSubscriptionLimitError.js';
|
|
35
35
|
import { TokenType } from './types/token.js';
|
|
36
36
|
import { ApiKeyAuthManager, TokenAuthData } from './lib/AuthManager/index.js';
|
|
37
|
-
|
|
37
|
+
import type { AgentAttributionMetadata, AgentSurface, ConnectionAttribution, ExecutionMode, InteractionKind, OperationLineage, OperationScope, SogniAttributionConfig, WorkloadAttribution, WorkloadAttributionDefaults, WorkloadAttributionInput, WorkloadKind } from './types/attribution.js';
|
|
38
|
+
export type { AudioFormat, AudioOutputFormat, AudioProjectParams, AvailableModel, BillingMode, ChatCompletionChunk, ChatCompletionParams, ChatCompletionResult, ChatJobErrorFields, ChatJobStateEvent, ChatMessage, ChatResponseFormat, ChatRunEvent, ChatRunRecord, ChatRunStatus, ChatTokenUsage, StartChatRunParams, StreamChatRunEventsOptions, ContentPart, HostedChatCompletionChoice, HostedChatCompletionMessage, HostedChatCompletionParams, HostedChatCompletionResult, HostedCreativeWorkflowReference, HostedSynchronousToolName, HostedToolExecutionParams, HostedToolExecutionResult, CreativeWorkflowArtifact, CreativeWorkflowEvent, CreativeWorkflowRecord, CreativeWorkflowSseEvent, CreativeWorkflowStatus, ImageUrlContentPart, ListCreativeWorkflowOptions, LLMCostEstimation, LLMJobCost, LLMModelInfo, LLMParamConstraint, LLMSamplingDefaults, ControlNetMode, ControlNetName, ControlNetParams, TextContentPart, ErrorData, ImageProjectParams, ImageOutputFormat, JobStatus, Logger, LogLevel, ProjectParams, ProjectStatus, CreativeWorkflowHostedToolName, StartCreativeWorkflowOptions, StartCreativeWorkflowParams, StartCreativeWorkflowDependency, StartCreativeWorkflowInput, StartCreativeWorkflowStep, StreamCreativeWorkflowEventsOptions, ResumeCreativeWorkflowOptions, ResumeCreativeWorkflowParams, ResumeCreativeWorkflowResult, ReseedCreativeWorkflowOptions, ReseedCreativeWorkflowParams, ReseedCreativeWorkflowResult, ForkWorkflowTemplateBody, ListWorkflowTemplatesOptions, ListWorkflowTemplatesResult, WorkflowTemplate, WorkflowTemplateAuthor, WorkflowTemplateRequestOptions, WorkflowTemplateStability, WorkflowTemplateVisibility, WorkflowTemplateVisibilityFilter, RunRecord, ReplayWriteResult, ReplayRecordSummary, ReplayRequestOptions, ListReplayRecordsOptions, ListReplayRecordsResult, GetReplayRecordResult, SupernetType, TokenType, ToolCall, ToolCallDelta, ToolCallFunction, ToolChoice, ToolDefinition, ToolExecutionOptions, ToolExecutionProgress, ToolExecutionResult, ToolFunction, ToolHistoryEntry, SogniToolsMode, AuthenticatedData, SocketEventName, SocketEventSubscriptionInput, SocketEventSubscriptionName, SocketEventSubscriptions, SocketEventSubscriptionsUpdatedData, SocketEventSubscriptionUpdate, SocketSubscriptionEntitlementData, VideoControlNetName, VideoControlNetParams, VideoFormat, VideoOutputFormat, VideoProjectParams, VideoWorkflowType, Balances, Reward, TxHistoryEntry, CreateSubscriptionCheckoutOptions, SubscriptionCheckoutResult, SubscriptionEntitlementSnapshot, SubscriptionPlanId, SubscriptionPlanInterval, SubscriptionPlan, SubscriptionErrorCode, SubscriptionPortalSession, SubscriptionRedirectType, SubscriptionStatus, SubscriptionTerm, SubscriptionUsage, TrialEligibility, TrialReasonCode, SizePreset, EstimateRequest, CostEstimation, ProjectEvent, JobEvent, JobPreparation, RawProject, ToastMessage, DataEntity, InputMedia, AgentAttributionMetadata, AgentSurface, ConnectionAttribution, ExecutionMode, InteractionKind, OperationLineage, OperationScope, SogniAttributionConfig, WorkloadAttribution, WorkloadAttributionDefaults, WorkloadAttributionInput, WorkloadKind };
|
|
38
39
|
export { ApiError, ApiKeyAuthManager, ChatJobError, ChatStream, ChatToolsApi, CreativeWorkflowsApi, CreativeWorkflowTemplatesApi, ReplayApi, CurrentAccount, Job, Project, SogniTools, SUBSCRIPTION_ERROR_CODES, isSubscriptionLimitError, isSogniToolCall, parseCreativeWorkflowSseChunk, parseToolCallArguments };
|
|
39
40
|
export interface SogniClientConfig {
|
|
40
41
|
/**
|
|
@@ -46,6 +47,13 @@ export interface SogniClientConfig {
|
|
|
46
47
|
* The socket server uses this as the default source for project and chat requests from this client.
|
|
47
48
|
*/
|
|
48
49
|
appSource?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Optional immutable connection and per-workload attribution defaults.
|
|
52
|
+
*
|
|
53
|
+
* Individual project, chat, tool, and workflow calls can override workload
|
|
54
|
+
* fields without mutating other concurrent requests.
|
|
55
|
+
*/
|
|
56
|
+
attribution?: SogniAttributionConfig;
|
|
49
57
|
/**
|
|
50
58
|
* Initial WebSocket event subscriptions for this connection.
|
|
51
59
|
*
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,kEAA4C;AAC5C,oFAAyD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/RestClient.d.ts
CHANGED
|
@@ -2,8 +2,9 @@ import TypedEventEmitter, { EventMap } from './TypedEventEmitter.js';
|
|
|
2
2
|
import { JSONValue } from '../types/json.js';
|
|
3
3
|
import { Logger } from './DefaultLogger.js';
|
|
4
4
|
import { AuthManager } from './AuthManager/index.js';
|
|
5
|
-
interface
|
|
5
|
+
interface RestPostOptions {
|
|
6
6
|
timeoutMs?: number;
|
|
7
|
+
headers?: Record<string, string>;
|
|
7
8
|
}
|
|
8
9
|
declare class RestClient<E extends EventMap = never> extends TypedEventEmitter<E> {
|
|
9
10
|
readonly baseUrl: string;
|
|
@@ -15,6 +16,6 @@ declare class RestClient<E extends EventMap = never> extends TypedEventEmitter<E
|
|
|
15
16
|
private request;
|
|
16
17
|
private processResponse;
|
|
17
18
|
get<T = JSONValue>(path: string, query?: Record<string, any>): Promise<T>;
|
|
18
|
-
post<T = JSONValue>(path: string, body?: Record<string, unknown>, options?:
|
|
19
|
+
post<T = JSONValue>(path: string, body?: Record<string, unknown>, options?: RestPostOptions): Promise<T>;
|
|
19
20
|
}
|
|
20
21
|
export default RestClient;
|
package/dist/lib/RestClient.js
CHANGED
|
@@ -120,9 +120,8 @@ class RestClient extends TypedEventEmitter_js_1.default {
|
|
|
120
120
|
return this.request(this.formatUrl(path, query));
|
|
121
121
|
}
|
|
122
122
|
post(path, body = {}, options = {}) {
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
}, body: JSON.stringify(body) }, options));
|
|
123
|
+
const { headers = {} } = options, requestOptions = __rest(options, ["headers"]);
|
|
124
|
+
return this.request(this.formatUrl(path), Object.assign({ method: 'POST', headers: Object.assign({ 'Content-Type': 'application/json' }, headers), body: JSON.stringify(body) }, requestOptions));
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
exports.default = RestClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/lib/RestClient.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAAmE;AACnE,kFAAqE;
|
|
1
|
+
{"version":3,"file":"RestClient.js","sourceRoot":"","sources":["../../src/lib/RestClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ConnectionAttribution, WorkloadAttributionDefaults, WorkloadAttributionInput } from '../types/attribution.js';
|
|
2
|
+
export type NormalizedConnectionAttribution = Partial<ConnectionAttribution>;
|
|
3
|
+
export type NormalizedWorkloadAttribution = WorkloadAttributionInput;
|
|
4
|
+
export declare function normalizeConnectionAttribution(input: ConnectionAttribution | Partial<ConnectionAttribution> | undefined): NormalizedConnectionAttribution | undefined;
|
|
5
|
+
/**
|
|
6
|
+
* Merge immutable client defaults with one operation's overrides and add
|
|
7
|
+
* lineage derived from the underlying request ID. Invalid runtime values are
|
|
8
|
+
* dropped instead of rejecting an otherwise valid inference request.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveWorkloadAttribution(defaults: WorkloadAttributionDefaults | undefined, overrides: WorkloadAttributionInput | undefined, fallbackOperationId?: string): NormalizedWorkloadAttribution | undefined;
|
|
11
|
+
/** Add flat camelCase connection attribution fields to a WebSocket URL. */
|
|
12
|
+
export declare function appendConnectionAttributionQuery(url: URL, attribution: NormalizedConnectionAttribution | undefined): void;
|
|
13
|
+
/** Return flat camelCase workload fields for socket request payloads. */
|
|
14
|
+
export declare function workloadAttributionToWireFields(attribution: NormalizedWorkloadAttribution | undefined): Record<string, string>;
|
|
15
|
+
export interface SogniAttributionHeaderInput {
|
|
16
|
+
appSource?: string;
|
|
17
|
+
connection?: NormalizedConnectionAttribution;
|
|
18
|
+
workload?: NormalizedWorkloadAttribution;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build headers only for requests whose caller has already established that
|
|
22
|
+
* the destination is a Sogni-owned endpoint.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildSogniAttributionHeaders({ appSource, connection, workload }: SogniAttributionHeaderInput): Record<string, string>;
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeConnectionAttribution = normalizeConnectionAttribution;
|
|
4
|
+
exports.resolveWorkloadAttribution = resolveWorkloadAttribution;
|
|
5
|
+
exports.appendConnectionAttributionQuery = appendConnectionAttributionQuery;
|
|
6
|
+
exports.workloadAttributionToWireFields = workloadAttributionToWireFields;
|
|
7
|
+
exports.buildSogniAttributionHeaders = buildSogniAttributionHeaders;
|
|
8
|
+
const MAX_METADATA_LENGTH = 128;
|
|
9
|
+
const MAX_VERSION_LENGTH = 32;
|
|
10
|
+
const MAX_OPERATION_ID_LENGTH = 128;
|
|
11
|
+
const UNSAFE_HEADER_CHARACTER = /[\u0000-\u001f\u007f]/;
|
|
12
|
+
const VERSION_PATTERN = /^[0-9][0-9A-Za-z.+_-]*$/;
|
|
13
|
+
const OPERATION_ID_PATTERN = /^[A-Za-z0-9][A-Za-z0-9._:-]*$/;
|
|
14
|
+
const INTERACTION_KINDS = new Set([
|
|
15
|
+
'human_ui',
|
|
16
|
+
'external_agent',
|
|
17
|
+
'service',
|
|
18
|
+
'unknown'
|
|
19
|
+
]);
|
|
20
|
+
const WORKLOAD_KINDS = new Set(['direct', 'agent_mediated', 'service', 'unknown']);
|
|
21
|
+
const OPERATION_SCOPES = new Set(['top_level', 'child', 'unknown']);
|
|
22
|
+
const AGENT_SURFACES = new Set([
|
|
23
|
+
'native_web',
|
|
24
|
+
'native_mobile',
|
|
25
|
+
'native_desktop',
|
|
26
|
+
'plugin',
|
|
27
|
+
'personal_skill',
|
|
28
|
+
'mcp',
|
|
29
|
+
'cli',
|
|
30
|
+
'sdk',
|
|
31
|
+
'openai_compatible',
|
|
32
|
+
'direct_api',
|
|
33
|
+
'unknown'
|
|
34
|
+
]);
|
|
35
|
+
const EXECUTION_MODES = new Set(['browser', 'durable', 'server', 'unknown']);
|
|
36
|
+
function normalizeEnum(value, allowed) {
|
|
37
|
+
if (typeof value !== 'string')
|
|
38
|
+
return undefined;
|
|
39
|
+
const normalized = value.trim();
|
|
40
|
+
return allowed.has(normalized) ? normalized : undefined;
|
|
41
|
+
}
|
|
42
|
+
function normalizeBoundedString(value, maxLength) {
|
|
43
|
+
if (typeof value !== 'string')
|
|
44
|
+
return undefined;
|
|
45
|
+
const normalized = value.trim();
|
|
46
|
+
if (normalized.length === 0 ||
|
|
47
|
+
normalized.length > maxLength ||
|
|
48
|
+
UNSAFE_HEADER_CHARACTER.test(normalized)) {
|
|
49
|
+
return undefined;
|
|
50
|
+
}
|
|
51
|
+
return normalized;
|
|
52
|
+
}
|
|
53
|
+
function normalizeVersion(value) {
|
|
54
|
+
const normalized = normalizeBoundedString(value, MAX_VERSION_LENGTH);
|
|
55
|
+
return normalized && VERSION_PATTERN.test(normalized) ? normalized : undefined;
|
|
56
|
+
}
|
|
57
|
+
function normalizeOperationId(value) {
|
|
58
|
+
if (typeof value !== 'string' ||
|
|
59
|
+
value.length === 0 ||
|
|
60
|
+
value.length > MAX_OPERATION_ID_LENGTH ||
|
|
61
|
+
value.trim() !== value ||
|
|
62
|
+
UNSAFE_HEADER_CHARACTER.test(value) ||
|
|
63
|
+
!OPERATION_ID_PATTERN.test(value)) {
|
|
64
|
+
return undefined;
|
|
65
|
+
}
|
|
66
|
+
return value;
|
|
67
|
+
}
|
|
68
|
+
function normalizeAgentMetadata(input) {
|
|
69
|
+
if (!input || typeof input !== 'object')
|
|
70
|
+
return {};
|
|
71
|
+
const result = {};
|
|
72
|
+
const agentFramework = normalizeBoundedString(input.agentFramework, MAX_METADATA_LENGTH);
|
|
73
|
+
const agentFrameworkVersion = normalizeVersion(input.agentFrameworkVersion);
|
|
74
|
+
const agentSurface = normalizeEnum(input.agentSurface, AGENT_SURFACES);
|
|
75
|
+
const agentSurfaceVersion = normalizeVersion(input.agentSurfaceVersion);
|
|
76
|
+
const executionMode = normalizeEnum(input.executionMode, EXECUTION_MODES);
|
|
77
|
+
if (agentFramework)
|
|
78
|
+
result.agentFramework = agentFramework;
|
|
79
|
+
if (agentFrameworkVersion)
|
|
80
|
+
result.agentFrameworkVersion = agentFrameworkVersion;
|
|
81
|
+
if (agentSurface)
|
|
82
|
+
result.agentSurface = agentSurface;
|
|
83
|
+
if (agentSurfaceVersion)
|
|
84
|
+
result.agentSurfaceVersion = agentSurfaceVersion;
|
|
85
|
+
if (executionMode)
|
|
86
|
+
result.executionMode = executionMode;
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
function mergeDefined(defaults, overrides) {
|
|
90
|
+
const merged = Object.assign({}, (defaults !== null && defaults !== void 0 ? defaults : {}));
|
|
91
|
+
if (overrides && typeof overrides === 'object') {
|
|
92
|
+
const defaultValues = (defaults !== null && defaults !== void 0 ? defaults : {});
|
|
93
|
+
const overrideValues = overrides;
|
|
94
|
+
for (const [key, value] of Object.entries(overrides)) {
|
|
95
|
+
if (value !== undefined)
|
|
96
|
+
merged[key] = value;
|
|
97
|
+
}
|
|
98
|
+
// A version belongs to its framework/surface. Do not accidentally retain
|
|
99
|
+
// one default's version when a request changes the corresponding identity.
|
|
100
|
+
if (overrideValues.agentFramework !== undefined &&
|
|
101
|
+
overrideValues.agentFramework !== defaultValues.agentFramework &&
|
|
102
|
+
overrideValues.agentFrameworkVersion === undefined) {
|
|
103
|
+
delete merged.agentFrameworkVersion;
|
|
104
|
+
}
|
|
105
|
+
if (overrideValues.agentSurface !== undefined &&
|
|
106
|
+
overrideValues.agentSurface !== defaultValues.agentSurface &&
|
|
107
|
+
overrideValues.agentSurfaceVersion === undefined) {
|
|
108
|
+
delete merged.agentSurfaceVersion;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return merged;
|
|
112
|
+
}
|
|
113
|
+
function hasValues(value) {
|
|
114
|
+
return Object.keys(value).length > 0;
|
|
115
|
+
}
|
|
116
|
+
function normalizeConnectionAttribution(input) {
|
|
117
|
+
if (!input || typeof input !== 'object')
|
|
118
|
+
return undefined;
|
|
119
|
+
const result = normalizeAgentMetadata(input);
|
|
120
|
+
const interactionKind = normalizeEnum(input.interactionKind, INTERACTION_KINDS);
|
|
121
|
+
if (interactionKind)
|
|
122
|
+
result.interactionKind = interactionKind;
|
|
123
|
+
return hasValues(result) ? result : undefined;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Merge immutable client defaults with one operation's overrides and add
|
|
127
|
+
* lineage derived from the underlying request ID. Invalid runtime values are
|
|
128
|
+
* dropped instead of rejecting an otherwise valid inference request.
|
|
129
|
+
*/
|
|
130
|
+
function resolveWorkloadAttribution(defaults, overrides, fallbackOperationId) {
|
|
131
|
+
if (!defaults && !overrides)
|
|
132
|
+
return undefined;
|
|
133
|
+
const merged = mergeDefined(defaults, overrides);
|
|
134
|
+
const result = normalizeAgentMetadata(merged);
|
|
135
|
+
const workloadKind = normalizeEnum(merged.workloadKind, WORKLOAD_KINDS);
|
|
136
|
+
const operationScope = normalizeEnum(merged.operationScope, OPERATION_SCOPES);
|
|
137
|
+
const operationId = normalizeOperationId(merged.operationId);
|
|
138
|
+
const rootOperationId = normalizeOperationId(merged.rootOperationId);
|
|
139
|
+
const parentOperationId = normalizeOperationId(merged.parentOperationId);
|
|
140
|
+
if (workloadKind)
|
|
141
|
+
result.workloadKind = workloadKind;
|
|
142
|
+
if (operationScope)
|
|
143
|
+
result.operationScope = operationScope;
|
|
144
|
+
if (operationId)
|
|
145
|
+
result.operationId = operationId;
|
|
146
|
+
if (rootOperationId)
|
|
147
|
+
result.rootOperationId = rootOperationId;
|
|
148
|
+
if (parentOperationId)
|
|
149
|
+
result.parentOperationId = parentOperationId;
|
|
150
|
+
if (result.workloadKind && result.workloadKind !== 'agent_mediated') {
|
|
151
|
+
delete result.agentFramework;
|
|
152
|
+
delete result.agentFrameworkVersion;
|
|
153
|
+
}
|
|
154
|
+
// Do not turn an empty/invalid attribution object into attributed traffic
|
|
155
|
+
// solely because the transport happens to have a request ID.
|
|
156
|
+
if (!hasValues(result))
|
|
157
|
+
return undefined;
|
|
158
|
+
if (!result.operationId) {
|
|
159
|
+
const fallback = normalizeOperationId(fallbackOperationId);
|
|
160
|
+
if (fallback)
|
|
161
|
+
result.operationId = fallback;
|
|
162
|
+
}
|
|
163
|
+
if (result.operationId && !result.operationScope) {
|
|
164
|
+
result.operationScope =
|
|
165
|
+
result.parentOperationId ||
|
|
166
|
+
(result.rootOperationId && result.rootOperationId !== result.operationId)
|
|
167
|
+
? 'child'
|
|
168
|
+
: 'top_level';
|
|
169
|
+
}
|
|
170
|
+
if (result.operationScope === 'child' && result.rootOperationId && !result.parentOperationId) {
|
|
171
|
+
result.parentOperationId = result.rootOperationId;
|
|
172
|
+
}
|
|
173
|
+
if (result.operationScope === 'top_level' && result.operationId) {
|
|
174
|
+
result.rootOperationId = result.operationId;
|
|
175
|
+
delete result.parentOperationId;
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
/** Add flat camelCase connection attribution fields to a WebSocket URL. */
|
|
180
|
+
function appendConnectionAttributionQuery(url, attribution) {
|
|
181
|
+
if (!attribution)
|
|
182
|
+
return;
|
|
183
|
+
const fields = [
|
|
184
|
+
'interactionKind',
|
|
185
|
+
'agentFramework',
|
|
186
|
+
'agentFrameworkVersion',
|
|
187
|
+
'agentSurface',
|
|
188
|
+
'agentSurfaceVersion',
|
|
189
|
+
'executionMode'
|
|
190
|
+
];
|
|
191
|
+
for (const field of fields) {
|
|
192
|
+
const value = attribution[field];
|
|
193
|
+
if (typeof value === 'string')
|
|
194
|
+
url.searchParams.set(field, value);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
/** Return flat camelCase workload fields for socket request payloads. */
|
|
198
|
+
function workloadAttributionToWireFields(attribution) {
|
|
199
|
+
if (!attribution)
|
|
200
|
+
return {};
|
|
201
|
+
const result = {};
|
|
202
|
+
for (const field of [
|
|
203
|
+
'workloadKind',
|
|
204
|
+
'agentFramework',
|
|
205
|
+
'agentFrameworkVersion',
|
|
206
|
+
'agentSurface',
|
|
207
|
+
'agentSurfaceVersion',
|
|
208
|
+
'executionMode',
|
|
209
|
+
'operationScope',
|
|
210
|
+
'operationId',
|
|
211
|
+
'rootOperationId',
|
|
212
|
+
'parentOperationId'
|
|
213
|
+
]) {
|
|
214
|
+
const value = attribution[field];
|
|
215
|
+
if (typeof value === 'string')
|
|
216
|
+
result[field] = value;
|
|
217
|
+
}
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Build headers only for requests whose caller has already established that
|
|
222
|
+
* the destination is a Sogni-owned endpoint.
|
|
223
|
+
*/
|
|
224
|
+
function buildSogniAttributionHeaders({ appSource, connection, workload }) {
|
|
225
|
+
const headers = {};
|
|
226
|
+
const normalizedAppSource = normalizeBoundedString(appSource, MAX_METADATA_LENGTH);
|
|
227
|
+
if (normalizedAppSource)
|
|
228
|
+
headers['X-App-Source'] = normalizedAppSource;
|
|
229
|
+
if (connection === null || connection === void 0 ? void 0 : connection.interactionKind) {
|
|
230
|
+
headers['X-Sogni-Interaction-Kind'] = connection.interactionKind;
|
|
231
|
+
}
|
|
232
|
+
if (workload === null || workload === void 0 ? void 0 : workload.workloadKind) {
|
|
233
|
+
headers['X-Sogni-Workload-Kind'] = workload.workloadKind;
|
|
234
|
+
}
|
|
235
|
+
if (workload === null || workload === void 0 ? void 0 : workload.agentFramework) {
|
|
236
|
+
headers['X-Sogni-Agent-Framework'] = workload.agentFramework;
|
|
237
|
+
}
|
|
238
|
+
if (workload === null || workload === void 0 ? void 0 : workload.agentFrameworkVersion) {
|
|
239
|
+
headers['X-Sogni-Agent-Framework-Version'] = workload.agentFrameworkVersion;
|
|
240
|
+
}
|
|
241
|
+
if (workload === null || workload === void 0 ? void 0 : workload.agentSurface) {
|
|
242
|
+
headers['X-Sogni-Agent-Surface'] = workload.agentSurface;
|
|
243
|
+
}
|
|
244
|
+
if (workload === null || workload === void 0 ? void 0 : workload.agentSurfaceVersion) {
|
|
245
|
+
headers['X-Sogni-Agent-Surface-Version'] = workload.agentSurfaceVersion;
|
|
246
|
+
}
|
|
247
|
+
if (workload === null || workload === void 0 ? void 0 : workload.executionMode) {
|
|
248
|
+
headers['X-Sogni-Execution-Mode'] = workload.executionMode;
|
|
249
|
+
}
|
|
250
|
+
if (workload === null || workload === void 0 ? void 0 : workload.operationScope) {
|
|
251
|
+
headers['X-Sogni-Operation-Scope'] = workload.operationScope;
|
|
252
|
+
}
|
|
253
|
+
if (workload === null || workload === void 0 ? void 0 : workload.operationId) {
|
|
254
|
+
headers['X-Sogni-Operation-Id'] = workload.operationId;
|
|
255
|
+
}
|
|
256
|
+
if (workload === null || workload === void 0 ? void 0 : workload.rootOperationId) {
|
|
257
|
+
headers['X-Sogni-Root-Operation-Id'] = workload.rootOperationId;
|
|
258
|
+
}
|
|
259
|
+
if (workload === null || workload === void 0 ? void 0 : workload.parentOperationId) {
|
|
260
|
+
headers['X-Sogni-Parent-Operation-Id'] = workload.parentOperationId;
|
|
261
|
+
}
|
|
262
|
+
return headers;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=attribution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"attribution.js","sourceRoot":"","sources":["../../src/lib/attribution.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/validation.d.ts
CHANGED
|
@@ -28,6 +28,7 @@ export declare function isComfyModel(modelId: string): boolean;
|
|
|
28
28
|
* - GPT Image 2: 16 images
|
|
29
29
|
* - Flux.2 Dev: 6 images
|
|
30
30
|
* - Qwen Image Edit: 3 images
|
|
31
|
+
* - Krea 2 Identity Edit: 2 images
|
|
31
32
|
* - Flux Kontext: 2 images
|
|
32
33
|
* - Default: 3 images
|
|
33
34
|
*/
|
|
@@ -42,4 +43,9 @@ export declare function validateSampler(value: string | undefined, options: Mode
|
|
|
42
43
|
* Returns the validated value unchanged - sogni-socket handles normalization.
|
|
43
44
|
*/
|
|
44
45
|
export declare function validateScheduler(value: string | undefined, options: ModelOptions): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Validate a model-specific VAE value against allowed options.
|
|
48
|
+
* Returns the validated value unchanged; sogni-socket passes the filename to ComfyUI.
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateVae(value: string | undefined, options: ModelOptions): string | null;
|
|
45
51
|
export {};
|
package/dist/lib/validation.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.isComfyModel = isComfyModel;
|
|
|
9
9
|
exports.getMaxContextImages = getMaxContextImages;
|
|
10
10
|
exports.validateSampler = validateSampler;
|
|
11
11
|
exports.validateScheduler = validateScheduler;
|
|
12
|
+
exports.validateVae = validateVae;
|
|
12
13
|
const index_js_1 = require("../ApiClient/index.js");
|
|
13
14
|
const EXTENDED_IMAGE_SIZE_MODEL_IDS = new Set([
|
|
14
15
|
'z_image_bf16',
|
|
@@ -20,19 +21,27 @@ const EXTENDED_IMAGE_SIZE_MODEL_IDS = new Set([
|
|
|
20
21
|
'qwen_image_2512_fp8_lightning',
|
|
21
22
|
'flux2_dev_fp8'
|
|
22
23
|
]);
|
|
23
|
-
|
|
24
|
+
const KREA_IDENTITY_EDIT_MODEL_IDS = new Set([
|
|
25
|
+
'krea2_identity_edit_v1_2',
|
|
26
|
+
'dark_beast_krea2_identity_edit_v1_2'
|
|
27
|
+
]);
|
|
28
|
+
function getCustomImageSizeBounds(modelId) {
|
|
29
|
+
if (modelId && KREA_IDENTITY_EDIT_MODEL_IDS.has(modelId)) {
|
|
30
|
+
return { min: 512, max: 2048 };
|
|
31
|
+
}
|
|
24
32
|
if (modelId === 'gpt-image-2') {
|
|
25
|
-
return 3840;
|
|
33
|
+
return { min: 256, max: 3840 };
|
|
26
34
|
}
|
|
27
35
|
if (modelId && EXTENDED_IMAGE_SIZE_MODEL_IDS.has(modelId)) {
|
|
28
|
-
return 2560;
|
|
36
|
+
return { min: 256, max: 2560 };
|
|
29
37
|
}
|
|
30
|
-
return 2048;
|
|
38
|
+
return { min: 256, max: 2048 };
|
|
31
39
|
}
|
|
32
40
|
function validateCustomImageSize(value, { modelId, propertyName = 'Width and height' } = {}) {
|
|
41
|
+
const bounds = getCustomImageSizeBounds(modelId);
|
|
33
42
|
return validateNumber(value, {
|
|
34
|
-
min:
|
|
35
|
-
max:
|
|
43
|
+
min: bounds.min,
|
|
44
|
+
max: bounds.max,
|
|
36
45
|
propertyName
|
|
37
46
|
});
|
|
38
47
|
}
|
|
@@ -90,7 +99,16 @@ function validateTeacacheThreshold(value) {
|
|
|
90
99
|
return num;
|
|
91
100
|
}
|
|
92
101
|
function isComfyModel(modelId) {
|
|
93
|
-
const COMFY_PREFIXES = [
|
|
102
|
+
const COMFY_PREFIXES = [
|
|
103
|
+
'z_image_',
|
|
104
|
+
'dark_beast_z_image_',
|
|
105
|
+
'krea2_',
|
|
106
|
+
'dark_beast_krea2_',
|
|
107
|
+
'qwen_image_',
|
|
108
|
+
'flux2_',
|
|
109
|
+
'wan_',
|
|
110
|
+
'ace_step'
|
|
111
|
+
];
|
|
94
112
|
return COMFY_PREFIXES.some((prefix) => modelId.startsWith(prefix));
|
|
95
113
|
}
|
|
96
114
|
/**
|
|
@@ -98,6 +116,7 @@ function isComfyModel(modelId) {
|
|
|
98
116
|
* - GPT Image 2: 16 images
|
|
99
117
|
* - Flux.2 Dev: 6 images
|
|
100
118
|
* - Qwen Image Edit: 3 images
|
|
119
|
+
* - Krea 2 Identity Edit: 2 images
|
|
101
120
|
* - Flux Kontext: 2 images
|
|
102
121
|
* - Default: 3 images
|
|
103
122
|
*/
|
|
@@ -111,6 +130,9 @@ function getMaxContextImages(modelId) {
|
|
|
111
130
|
if (modelId.startsWith('qwen_image_')) {
|
|
112
131
|
return 3;
|
|
113
132
|
}
|
|
133
|
+
if (KREA_IDENTITY_EDIT_MODEL_IDS.has(modelId)) {
|
|
134
|
+
return 2;
|
|
135
|
+
}
|
|
114
136
|
if (modelId.includes('kontext')) {
|
|
115
137
|
return 2;
|
|
116
138
|
}
|
|
@@ -147,4 +169,15 @@ function validateScheduler(value, options) {
|
|
|
147
169
|
}
|
|
148
170
|
return validateOption(value, options.scheduler.allowed, `Invalid scheduler ${value}. Must be one of "${options.scheduler.allowed.join('", "')}".`);
|
|
149
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Validate a model-specific VAE value against allowed options.
|
|
174
|
+
* Returns the validated value unchanged; sogni-socket passes the filename to ComfyUI.
|
|
175
|
+
*/
|
|
176
|
+
function validateVae(value, options) {
|
|
177
|
+
var _a;
|
|
178
|
+
if (!('vae' in options) || !((_a = options.vae) === null || _a === void 0 ? void 0 : _a.allowed.length) || !value) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return validateOption(value, options.vae.allowed, `Invalid VAE ${value}. Must be one of "${options.vae.allowed.join('", "')}".`);
|
|
182
|
+
}
|
|
150
183
|
//# sourceMappingURL=validation.js.map
|