@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.
Files changed (118) hide show
  1. package/AGENTS.md +2 -1
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +63 -1
  4. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.d.ts +3 -1
  5. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +14 -2
  6. package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
  7. package/dist/ApiClient/WebSocketClient/events.d.ts +11 -0
  8. package/dist/ApiClient/WebSocketClient/index.d.ts +3 -1
  9. package/dist/ApiClient/WebSocketClient/index.js +4 -1
  10. package/dist/ApiClient/WebSocketClient/index.js.map +1 -1
  11. package/dist/ApiClient/index.d.ts +10 -1
  12. package/dist/ApiClient/index.js +16 -3
  13. package/dist/ApiClient/index.js.map +1 -1
  14. package/dist/ApiGroup.d.ts +3 -0
  15. package/dist/ApiGroup.js +13 -0
  16. package/dist/ApiGroup.js.map +1 -1
  17. package/dist/Chat/ChatTools.js +2 -1
  18. package/dist/Chat/ChatTools.js.map +1 -1
  19. package/dist/Chat/index.d.ts +9 -1
  20. package/dist/Chat/index.js +46 -6
  21. package/dist/Chat/index.js.map +1 -1
  22. package/dist/Chat/modelRouting.d.ts +2 -0
  23. package/dist/Chat/modelRouting.js +6 -2
  24. package/dist/Chat/modelRouting.js.map +1 -1
  25. package/dist/Chat/types.d.ts +50 -1
  26. package/dist/CreativeWorkflows/index.js +4 -5
  27. package/dist/CreativeWorkflows/index.js.map +1 -1
  28. package/dist/CreativeWorkflows/types.d.ts +7 -0
  29. package/dist/Projects/createJobRequestMessage.js +4 -1
  30. package/dist/Projects/createJobRequestMessage.js.map +1 -1
  31. package/dist/Projects/index.js +4 -3
  32. package/dist/Projects/index.js.map +1 -1
  33. package/dist/Projects/types/ModelOptions.d.ts +1 -0
  34. package/dist/Projects/types/ModelOptions.js +2 -1
  35. package/dist/Projects/types/ModelOptions.js.map +1 -1
  36. package/dist/Projects/types/ModelTiersRaw.d.ts +1 -0
  37. package/dist/Projects/types/ModelTiersRaw.js.map +1 -1
  38. package/dist/Projects/types/events.d.ts +3 -0
  39. package/dist/Projects/types/index.d.ts +35 -9
  40. package/dist/Projects/types/index.js.map +1 -1
  41. package/dist/index.d.ts +11 -3
  42. package/dist/index.js +1 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/lib/RestClient.d.ts +3 -2
  45. package/dist/lib/RestClient.js +2 -3
  46. package/dist/lib/RestClient.js.map +1 -1
  47. package/dist/lib/attribution.d.ts +24 -0
  48. package/dist/lib/attribution.js +264 -0
  49. package/dist/lib/attribution.js.map +1 -0
  50. package/dist/lib/validation.d.ts +6 -0
  51. package/dist/lib/validation.js +40 -7
  52. package/dist/lib/validation.js.map +1 -1
  53. package/dist/types/attribution.d.ts +67 -0
  54. package/dist/types/attribution.js +3 -0
  55. package/dist/types/attribution.js.map +1 -0
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js +14 -2
  59. package/dist-esm/ApiClient/WebSocketClient/BrowserWebSocketClient/index.js.map +1 -1
  60. package/dist-esm/ApiClient/WebSocketClient/index.js +4 -1
  61. package/dist-esm/ApiClient/WebSocketClient/index.js.map +1 -1
  62. package/dist-esm/ApiClient/index.js +16 -3
  63. package/dist-esm/ApiClient/index.js.map +1 -1
  64. package/dist-esm/ApiGroup.js +13 -0
  65. package/dist-esm/ApiGroup.js.map +1 -1
  66. package/dist-esm/Chat/ChatTools.js +2 -1
  67. package/dist-esm/Chat/ChatTools.js.map +1 -1
  68. package/dist-esm/Chat/index.js +46 -6
  69. package/dist-esm/Chat/index.js.map +1 -1
  70. package/dist-esm/Chat/modelRouting.js +6 -2
  71. package/dist-esm/Chat/modelRouting.js.map +1 -1
  72. package/dist-esm/CreativeWorkflows/index.js +4 -5
  73. package/dist-esm/CreativeWorkflows/index.js.map +1 -1
  74. package/dist-esm/Projects/createJobRequestMessage.js +5 -2
  75. package/dist-esm/Projects/createJobRequestMessage.js.map +1 -1
  76. package/dist-esm/Projects/index.js +4 -3
  77. package/dist-esm/Projects/index.js.map +1 -1
  78. package/dist-esm/Projects/types/ModelOptions.js +2 -1
  79. package/dist-esm/Projects/types/ModelOptions.js.map +1 -1
  80. package/dist-esm/Projects/types/ModelTiersRaw.js.map +1 -1
  81. package/dist-esm/Projects/types/index.js.map +1 -1
  82. package/dist-esm/index.js +1 -0
  83. package/dist-esm/index.js.map +1 -1
  84. package/dist-esm/lib/RestClient.js +2 -3
  85. package/dist-esm/lib/RestClient.js.map +1 -1
  86. package/dist-esm/lib/attribution.js +257 -0
  87. package/dist-esm/lib/attribution.js.map +1 -0
  88. package/dist-esm/lib/validation.js +39 -7
  89. package/dist-esm/lib/validation.js.map +1 -1
  90. package/dist-esm/types/attribution.js +2 -0
  91. package/dist-esm/types/attribution.js.map +1 -0
  92. package/dist-esm/version.js +1 -1
  93. package/llms-full.txt +45 -4
  94. package/llms.txt +14 -2
  95. package/package.json +2 -1
  96. package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/index.ts +16 -2
  97. package/src/ApiClient/WebSocketClient/events.ts +12 -0
  98. package/src/ApiClient/WebSocketClient/index.ts +10 -1
  99. package/src/ApiClient/index.ts +42 -2
  100. package/src/ApiGroup.ts +25 -0
  101. package/src/Chat/ChatTools.ts +5 -1
  102. package/src/Chat/index.ts +73 -6
  103. package/src/Chat/modelRouting.ts +15 -2
  104. package/src/Chat/types.ts +59 -1
  105. package/src/CreativeWorkflows/index.ts +11 -3
  106. package/src/CreativeWorkflows/types.ts +7 -0
  107. package/src/Projects/createJobRequestMessage.ts +7 -2
  108. package/src/Projects/index.ts +5 -3
  109. package/src/Projects/types/ModelOptions.ts +3 -1
  110. package/src/Projects/types/ModelTiersRaw.ts +1 -0
  111. package/src/Projects/types/events.ts +4 -0
  112. package/src/Projects/types/index.ts +35 -9
  113. package/src/index.ts +43 -2
  114. package/src/lib/RestClient.ts +10 -3
  115. package/src/lib/attribution.ts +304 -0
  116. package/src/lib/validation.ts +44 -7
  117. package/src/types/attribution.ts +89 -0
  118. 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
- * Array of LoRA IDs to apply.
99
- * Available LoRAs are model-specific. The worker will download the LoRA
100
- * if not already present on the persistent volume.
101
- * LoRA IDs are resolved to filenames via the worker config API.
102
- * Example: ['multiple_angles']
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
- * Array of LoRA strengths corresponding to each LoRA in the loras array.
107
- * Values should be between 0.0 and 2.0. Defaults to 1.0 if not specified.
108
- * Example: [0.9]
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 Plus supports up to 3 context images.
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":";;AA8eA,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"}
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
- 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, 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, RawProject, ToastMessage, DataEntity, InputMedia };
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
@@ -182,6 +182,7 @@ class SogniClient {
182
182
  socketUrl: socketEndpoint,
183
183
  appId: config.appId,
184
184
  appSource: config.appSource,
185
+ attribution: config.attribution,
185
186
  socketEventSubscriptions: config.socketEventSubscriptions,
186
187
  networkType: network,
187
188
  logger,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -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 RestRequestInit extends RequestInit {
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?: Pick<RestRequestInit, 'timeoutMs'>): Promise<T>;
19
+ post<T = JSONValue>(path: string, body?: Record<string, unknown>, options?: RestPostOptions): Promise<T>;
19
20
  }
20
21
  export default RestClient;
@@ -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
- return this.request(this.formatUrl(path), Object.assign({ method: 'POST', headers: {
124
- 'Content-Type': 'application/json'
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":"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"}
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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"}
@@ -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 {};
@@ -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
- function getMaxCustomImageSize(modelId) {
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: 256,
35
- max: getMaxCustomImageSize(modelId),
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 = ['z_image_', 'krea2_', 'qwen_image_', 'flux2_', 'wan_', 'ace_step'];
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