@nodaro/sdk 1.11.0 → 1.13.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/dist/index.cjs +51 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +192 -1
- package/dist/index.d.ts +192 -1
- package/dist/index.js +50 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -237,6 +237,15 @@ interface Job {
|
|
|
237
237
|
created_at: string;
|
|
238
238
|
started_at: string | null;
|
|
239
239
|
completed_at: string | null;
|
|
240
|
+
/**
|
|
241
|
+
* Provenance: which kind of caller created the job — one of
|
|
242
|
+
* `"internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web" | "api"`.
|
|
243
|
+
* `source_detail` narrows it (origin host, `extension/<name>` label,
|
|
244
|
+
* `sdk/<version>`, MCP client name, developer-app id). Descriptive only;
|
|
245
|
+
* lets a library view label or filter media by origin.
|
|
246
|
+
*/
|
|
247
|
+
source?: string | null;
|
|
248
|
+
source_detail?: string | null;
|
|
240
249
|
}
|
|
241
250
|
interface CancelJobResult {
|
|
242
251
|
success: true;
|
|
@@ -4171,6 +4180,16 @@ interface LibraryAsset {
|
|
|
4171
4180
|
readonly isLibraryItem: boolean;
|
|
4172
4181
|
/** How the asset entered storage (e.g. "manual_upload" | "generated"). */
|
|
4173
4182
|
readonly uploadSource: string;
|
|
4183
|
+
/**
|
|
4184
|
+
* WHICH SURFACE the media came from — `"internal" | "mcp" | "app" | "cli" |
|
|
4185
|
+
* "sdk" | "extension" | "web" | "api"`. Distinct from `uploadSource`, which
|
|
4186
|
+
* says how it entered storage (uploaded vs generated), not who was calling.
|
|
4187
|
+
* `null` on assets created before origin tracking existed — render as
|
|
4188
|
+
* "unknown", don't infer.
|
|
4189
|
+
*/
|
|
4190
|
+
readonly source: string | null;
|
|
4191
|
+
/** Specific identity within `source` (origin host, `extension/<name>`, `sdk/<version>`, MCP client, app id). */
|
|
4192
|
+
readonly sourceDetail: string | null;
|
|
4174
4193
|
readonly createdAt: string;
|
|
4175
4194
|
}
|
|
4176
4195
|
interface ListLibraryParams {
|
|
@@ -4189,6 +4208,13 @@ interface ListLibraryParams {
|
|
|
4189
4208
|
* Media Library picker).
|
|
4190
4209
|
*/
|
|
4191
4210
|
readonly owned?: boolean;
|
|
4211
|
+
/**
|
|
4212
|
+
* Filter to media that originated from one surface (see
|
|
4213
|
+
* {@link LibraryAsset.source}) — e.g. `"extension"` for everything a
|
|
4214
|
+
* browser extension produced. Assets predating origin tracking have a null
|
|
4215
|
+
* source and match no value, so they appear only when this is omitted.
|
|
4216
|
+
*/
|
|
4217
|
+
readonly source?: "internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web" | "api";
|
|
4192
4218
|
}
|
|
4193
4219
|
interface ListLibraryResult {
|
|
4194
4220
|
readonly data: LibraryAsset[];
|
|
@@ -4429,6 +4455,151 @@ declare class CommunityResource {
|
|
|
4429
4455
|
}>;
|
|
4430
4456
|
}
|
|
4431
4457
|
|
|
4458
|
+
/**
|
|
4459
|
+
* Workflow-template marketplace — the PUBLIC-BY-DESIGN surfaces only:
|
|
4460
|
+
* browse cards, a single template with its full snapshot, and the free
|
|
4461
|
+
* clone-into-my-project action. Creator/admin surfaces (publish, mine,
|
|
4462
|
+
* favorites, metadata patch, tutorial flags) are deliberately NOT part of
|
|
4463
|
+
* the public SDK contract; first-party apps reach them via
|
|
4464
|
+
* `client.request()`.
|
|
4465
|
+
*/
|
|
4466
|
+
/** Card returned by the marketplace browse (no snapshot payload). */
|
|
4467
|
+
interface TemplateBrowseCard {
|
|
4468
|
+
id: string;
|
|
4469
|
+
slug: string;
|
|
4470
|
+
name: string;
|
|
4471
|
+
description: string | null;
|
|
4472
|
+
estimatedCredits: number;
|
|
4473
|
+
category: string;
|
|
4474
|
+
outputTypes: string[];
|
|
4475
|
+
tags: string[];
|
|
4476
|
+
nodeTypesUsed: string[];
|
|
4477
|
+
providersUsed: string[];
|
|
4478
|
+
nodeCount: number;
|
|
4479
|
+
complexity: string;
|
|
4480
|
+
previewMediaUrl: string | null;
|
|
4481
|
+
previewMediaType: "image" | "video" | null;
|
|
4482
|
+
creatorId: string;
|
|
4483
|
+
creatorDisplayName: string | null;
|
|
4484
|
+
cloneCount: number;
|
|
4485
|
+
favoriteCount: number;
|
|
4486
|
+
createdAt: string;
|
|
4487
|
+
}
|
|
4488
|
+
type TemplateSort = "newest" | "popular" | "most-favorited";
|
|
4489
|
+
interface BrowseTemplatesParams {
|
|
4490
|
+
/** Opaque cursor from the previous page's `nextCursor`. */
|
|
4491
|
+
cursor?: string;
|
|
4492
|
+
limit?: number;
|
|
4493
|
+
category?: string;
|
|
4494
|
+
outputType?: string;
|
|
4495
|
+
tag?: string;
|
|
4496
|
+
/** Full-text search over name/description/tags. */
|
|
4497
|
+
search?: string;
|
|
4498
|
+
sort?: TemplateSort;
|
|
4499
|
+
/** Only templates using this node type. */
|
|
4500
|
+
nodeType?: string;
|
|
4501
|
+
/** Only templates using this provider/model id. */
|
|
4502
|
+
provider?: string;
|
|
4503
|
+
complexity?: string;
|
|
4504
|
+
}
|
|
4505
|
+
interface BrowseTemplatesResult {
|
|
4506
|
+
data: TemplateBrowseCard[];
|
|
4507
|
+
/** Pass back as `cursor` to fetch the next page; `null` on the last page. */
|
|
4508
|
+
nextCursor: string | null;
|
|
4509
|
+
}
|
|
4510
|
+
/**
|
|
4511
|
+
* A single public template (`GET /v1/templates/:slug`) — the browse-card
|
|
4512
|
+
* fields plus the full workflow snapshot the viewer/clone consume. The route
|
|
4513
|
+
* returns the whole camelCased row, so additional columns may appear beyond
|
|
4514
|
+
* the ones typed here; the index signature keeps them reachable without
|
|
4515
|
+
* casting.
|
|
4516
|
+
*/
|
|
4517
|
+
interface Template extends TemplateBrowseCard {
|
|
4518
|
+
markdownDescription: string | null;
|
|
4519
|
+
/** React Flow node snapshots (generic node JSON, execution data stripped on clone). */
|
|
4520
|
+
snapshotNodes: unknown[];
|
|
4521
|
+
snapshotEdges: unknown[];
|
|
4522
|
+
snapshotSettings: Record<string, unknown>;
|
|
4523
|
+
/** Channels the template is listed in (e.g. "marketplace", "tutorial"). */
|
|
4524
|
+
listedIn: string[];
|
|
4525
|
+
readonly [key: string]: unknown;
|
|
4526
|
+
}
|
|
4527
|
+
interface CloneTemplateParams {
|
|
4528
|
+
/** Target project (must belong to the caller). */
|
|
4529
|
+
projectId: string;
|
|
4530
|
+
/** Optional name for the cloned workflow; defaults to the template's name. */
|
|
4531
|
+
name?: string;
|
|
4532
|
+
}
|
|
4533
|
+
interface CloneTemplateResult {
|
|
4534
|
+
workflowId: string;
|
|
4535
|
+
projectId: string;
|
|
4536
|
+
}
|
|
4537
|
+
declare class TemplatesResource {
|
|
4538
|
+
private client;
|
|
4539
|
+
constructor(client: NodaroClient);
|
|
4540
|
+
/** Browse the public template marketplace (cursor-paginated, no auth required). */
|
|
4541
|
+
browse(params?: BrowseTemplatesParams): Promise<BrowseTemplatesResult>;
|
|
4542
|
+
/** Fetch one public template by slug, including its full workflow snapshot. */
|
|
4543
|
+
get(slug: string): Promise<Template>;
|
|
4544
|
+
/** Clone a template into one of the caller's projects. Free — no credits charged. */
|
|
4545
|
+
clone(slug: string, params: CloneTemplateParams): Promise<CloneTemplateResult>;
|
|
4546
|
+
}
|
|
4547
|
+
|
|
4548
|
+
/**
|
|
4549
|
+
* Public tutorials directory (`GET /v1/tutorials`) — video tutorials and
|
|
4550
|
+
* flow (template) tutorials, pre-grouped under the shared category taxonomy.
|
|
4551
|
+
* Read-only by design; curation is an admin surface outside the public SDK.
|
|
4552
|
+
*/
|
|
4553
|
+
interface TutorialVideoItem {
|
|
4554
|
+
id: string;
|
|
4555
|
+
type: "video";
|
|
4556
|
+
title: string;
|
|
4557
|
+
description: string | null;
|
|
4558
|
+
videoUrl: string;
|
|
4559
|
+
thumbnailUrl: string | null;
|
|
4560
|
+
categoryId: string;
|
|
4561
|
+
sortOrder: number;
|
|
4562
|
+
createdAt: string;
|
|
4563
|
+
updatedAt: string;
|
|
4564
|
+
}
|
|
4565
|
+
/** A workflow template surfaced as a tutorial; `slug` feeds `client.templates`. */
|
|
4566
|
+
interface TutorialFlowItem {
|
|
4567
|
+
id: string;
|
|
4568
|
+
type: "flow";
|
|
4569
|
+
templateId: string;
|
|
4570
|
+
slug: string | null;
|
|
4571
|
+
title: string;
|
|
4572
|
+
description: string | null;
|
|
4573
|
+
markdownDescription: string | null;
|
|
4574
|
+
previewMediaUrl: string | null;
|
|
4575
|
+
previewMediaType: "image" | "video" | null;
|
|
4576
|
+
complexity: string;
|
|
4577
|
+
estimatedCredits: number;
|
|
4578
|
+
nodeTypesUsed: string[];
|
|
4579
|
+
providersUsed: string[];
|
|
4580
|
+
nodeCount: number;
|
|
4581
|
+
categoryId: string;
|
|
4582
|
+
tutorialSortOrder: number;
|
|
4583
|
+
workflowId: string;
|
|
4584
|
+
createdAt: string;
|
|
4585
|
+
}
|
|
4586
|
+
interface TutorialCategory {
|
|
4587
|
+
id: string;
|
|
4588
|
+
name: string;
|
|
4589
|
+
slug: string;
|
|
4590
|
+
sortOrder: number;
|
|
4591
|
+
videos: TutorialVideoItem[];
|
|
4592
|
+
flows: TutorialFlowItem[];
|
|
4593
|
+
}
|
|
4594
|
+
declare class TutorialsResource {
|
|
4595
|
+
private client;
|
|
4596
|
+
constructor(client: NodaroClient);
|
|
4597
|
+
/** All enabled tutorial categories with their videos and flow tutorials. Public. */
|
|
4598
|
+
list(): Promise<{
|
|
4599
|
+
categories: TutorialCategory[];
|
|
4600
|
+
}>;
|
|
4601
|
+
}
|
|
4602
|
+
|
|
4432
4603
|
interface ClientOptions {
|
|
4433
4604
|
/** Backend base URL, e.g. "https://nodaro.example.com" or empty string for same-origin. */
|
|
4434
4605
|
baseUrl: string;
|
|
@@ -4438,6 +4609,14 @@ interface ClientOptions {
|
|
|
4438
4609
|
fetch?: typeof fetch;
|
|
4439
4610
|
/** Default request timeout in ms. Default 60s. */
|
|
4440
4611
|
timeoutMs?: number;
|
|
4612
|
+
/**
|
|
4613
|
+
* Overrides the `X-Nodaro-Client` label. Defaults to `sdk/<version>`.
|
|
4614
|
+
*
|
|
4615
|
+
* Exists for `@nodaro/cli`, which is a wrapper AROUND this SDK: without an
|
|
4616
|
+
* override every CLI invocation would be recorded as an SDK call and the two
|
|
4617
|
+
* surfaces could never be told apart.
|
|
4618
|
+
*/
|
|
4619
|
+
clientLabel?: string;
|
|
4441
4620
|
}
|
|
4442
4621
|
interface RequestOptions {
|
|
4443
4622
|
body?: unknown;
|
|
@@ -4461,11 +4640,21 @@ interface UserIdentity {
|
|
|
4461
4640
|
readonly avatarUrl: string | null;
|
|
4462
4641
|
/** Subscription tier (e.g. "free", "pro"). */
|
|
4463
4642
|
readonly tier: string;
|
|
4643
|
+
/**
|
|
4644
|
+
* Whether the user holds an admin role. DESCRIPTIVE only — use it to decide
|
|
4645
|
+
* whether to render admin surfaces without capability-probing an admin
|
|
4646
|
+
* endpoint; every admin API stays enforced server-side regardless.
|
|
4647
|
+
*/
|
|
4648
|
+
readonly isAdmin: boolean;
|
|
4464
4649
|
}
|
|
4465
4650
|
declare class NodaroClient {
|
|
4466
4651
|
readonly baseUrl: string;
|
|
4467
4652
|
readonly auth: Auth;
|
|
4468
4653
|
readonly timeoutMs: number;
|
|
4654
|
+
/** Value sent as `X-Nodaro-Client`; recorded by the backend as job provenance. */
|
|
4655
|
+
readonly clientLabel: string;
|
|
4656
|
+
/** Whether to actually send it — see the note on {@link CLIENT_HEADER}. */
|
|
4657
|
+
private readonly sendClientHeader;
|
|
4469
4658
|
private readonly fetchOverride;
|
|
4470
4659
|
/**
|
|
4471
4660
|
* Resolved lazily so consumers can swap `globalThis.fetch` after the
|
|
@@ -4499,6 +4688,8 @@ declare class NodaroClient {
|
|
|
4499
4688
|
readonly presets: PresetsResource;
|
|
4500
4689
|
readonly pickerCatalogs: PickerCatalogsResource;
|
|
4501
4690
|
readonly community: CommunityResource;
|
|
4691
|
+
readonly templates: TemplatesResource;
|
|
4692
|
+
readonly tutorials: TutorialsResource;
|
|
4502
4693
|
constructor(opts: ClientOptions);
|
|
4503
4694
|
request<T>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
4504
4695
|
/**
|
|
@@ -4600,4 +4791,4 @@ interface ApiErrorBody {
|
|
|
4600
4791
|
}
|
|
4601
4792
|
declare function throwFromResponse(status: number, body: ApiErrorBody): never;
|
|
4602
4793
|
|
|
4603
|
-
export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, CommunityResource, type ContinueVideoProResult, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateProjectInput, type CreateWorkflowInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, CreditsResource, type DeleteAppRunResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EnhanceInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, InsufficientCreditsError, type Job, JobAbortedError, JobFailedError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListObjectsParams, type ListWorkflowsParams, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, MediaResource, type ModelCostsResult, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, type OutputType, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, PresetsResource, type Project, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RotateSecretResult, type RunAndWaitOptions, type RunManyResult, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
|
4794
|
+
export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateProjectInput, type CreateWorkflowInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, CreditsResource, type DeleteAppRunResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EnhanceInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, InsufficientCreditsError, type Job, JobAbortedError, JobFailedError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListObjectsParams, type ListWorkflowsParams, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, MediaResource, type ModelCostsResult, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, type OutputType, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, PresetsResource, type Project, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RotateSecretResult, type RunAndWaitOptions, type RunManyResult, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
package/dist/index.d.ts
CHANGED
|
@@ -237,6 +237,15 @@ interface Job {
|
|
|
237
237
|
created_at: string;
|
|
238
238
|
started_at: string | null;
|
|
239
239
|
completed_at: string | null;
|
|
240
|
+
/**
|
|
241
|
+
* Provenance: which kind of caller created the job — one of
|
|
242
|
+
* `"internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web" | "api"`.
|
|
243
|
+
* `source_detail` narrows it (origin host, `extension/<name>` label,
|
|
244
|
+
* `sdk/<version>`, MCP client name, developer-app id). Descriptive only;
|
|
245
|
+
* lets a library view label or filter media by origin.
|
|
246
|
+
*/
|
|
247
|
+
source?: string | null;
|
|
248
|
+
source_detail?: string | null;
|
|
240
249
|
}
|
|
241
250
|
interface CancelJobResult {
|
|
242
251
|
success: true;
|
|
@@ -4171,6 +4180,16 @@ interface LibraryAsset {
|
|
|
4171
4180
|
readonly isLibraryItem: boolean;
|
|
4172
4181
|
/** How the asset entered storage (e.g. "manual_upload" | "generated"). */
|
|
4173
4182
|
readonly uploadSource: string;
|
|
4183
|
+
/**
|
|
4184
|
+
* WHICH SURFACE the media came from — `"internal" | "mcp" | "app" | "cli" |
|
|
4185
|
+
* "sdk" | "extension" | "web" | "api"`. Distinct from `uploadSource`, which
|
|
4186
|
+
* says how it entered storage (uploaded vs generated), not who was calling.
|
|
4187
|
+
* `null` on assets created before origin tracking existed — render as
|
|
4188
|
+
* "unknown", don't infer.
|
|
4189
|
+
*/
|
|
4190
|
+
readonly source: string | null;
|
|
4191
|
+
/** Specific identity within `source` (origin host, `extension/<name>`, `sdk/<version>`, MCP client, app id). */
|
|
4192
|
+
readonly sourceDetail: string | null;
|
|
4174
4193
|
readonly createdAt: string;
|
|
4175
4194
|
}
|
|
4176
4195
|
interface ListLibraryParams {
|
|
@@ -4189,6 +4208,13 @@ interface ListLibraryParams {
|
|
|
4189
4208
|
* Media Library picker).
|
|
4190
4209
|
*/
|
|
4191
4210
|
readonly owned?: boolean;
|
|
4211
|
+
/**
|
|
4212
|
+
* Filter to media that originated from one surface (see
|
|
4213
|
+
* {@link LibraryAsset.source}) — e.g. `"extension"` for everything a
|
|
4214
|
+
* browser extension produced. Assets predating origin tracking have a null
|
|
4215
|
+
* source and match no value, so they appear only when this is omitted.
|
|
4216
|
+
*/
|
|
4217
|
+
readonly source?: "internal" | "mcp" | "app" | "cli" | "sdk" | "extension" | "web" | "api";
|
|
4192
4218
|
}
|
|
4193
4219
|
interface ListLibraryResult {
|
|
4194
4220
|
readonly data: LibraryAsset[];
|
|
@@ -4429,6 +4455,151 @@ declare class CommunityResource {
|
|
|
4429
4455
|
}>;
|
|
4430
4456
|
}
|
|
4431
4457
|
|
|
4458
|
+
/**
|
|
4459
|
+
* Workflow-template marketplace — the PUBLIC-BY-DESIGN surfaces only:
|
|
4460
|
+
* browse cards, a single template with its full snapshot, and the free
|
|
4461
|
+
* clone-into-my-project action. Creator/admin surfaces (publish, mine,
|
|
4462
|
+
* favorites, metadata patch, tutorial flags) are deliberately NOT part of
|
|
4463
|
+
* the public SDK contract; first-party apps reach them via
|
|
4464
|
+
* `client.request()`.
|
|
4465
|
+
*/
|
|
4466
|
+
/** Card returned by the marketplace browse (no snapshot payload). */
|
|
4467
|
+
interface TemplateBrowseCard {
|
|
4468
|
+
id: string;
|
|
4469
|
+
slug: string;
|
|
4470
|
+
name: string;
|
|
4471
|
+
description: string | null;
|
|
4472
|
+
estimatedCredits: number;
|
|
4473
|
+
category: string;
|
|
4474
|
+
outputTypes: string[];
|
|
4475
|
+
tags: string[];
|
|
4476
|
+
nodeTypesUsed: string[];
|
|
4477
|
+
providersUsed: string[];
|
|
4478
|
+
nodeCount: number;
|
|
4479
|
+
complexity: string;
|
|
4480
|
+
previewMediaUrl: string | null;
|
|
4481
|
+
previewMediaType: "image" | "video" | null;
|
|
4482
|
+
creatorId: string;
|
|
4483
|
+
creatorDisplayName: string | null;
|
|
4484
|
+
cloneCount: number;
|
|
4485
|
+
favoriteCount: number;
|
|
4486
|
+
createdAt: string;
|
|
4487
|
+
}
|
|
4488
|
+
type TemplateSort = "newest" | "popular" | "most-favorited";
|
|
4489
|
+
interface BrowseTemplatesParams {
|
|
4490
|
+
/** Opaque cursor from the previous page's `nextCursor`. */
|
|
4491
|
+
cursor?: string;
|
|
4492
|
+
limit?: number;
|
|
4493
|
+
category?: string;
|
|
4494
|
+
outputType?: string;
|
|
4495
|
+
tag?: string;
|
|
4496
|
+
/** Full-text search over name/description/tags. */
|
|
4497
|
+
search?: string;
|
|
4498
|
+
sort?: TemplateSort;
|
|
4499
|
+
/** Only templates using this node type. */
|
|
4500
|
+
nodeType?: string;
|
|
4501
|
+
/** Only templates using this provider/model id. */
|
|
4502
|
+
provider?: string;
|
|
4503
|
+
complexity?: string;
|
|
4504
|
+
}
|
|
4505
|
+
interface BrowseTemplatesResult {
|
|
4506
|
+
data: TemplateBrowseCard[];
|
|
4507
|
+
/** Pass back as `cursor` to fetch the next page; `null` on the last page. */
|
|
4508
|
+
nextCursor: string | null;
|
|
4509
|
+
}
|
|
4510
|
+
/**
|
|
4511
|
+
* A single public template (`GET /v1/templates/:slug`) — the browse-card
|
|
4512
|
+
* fields plus the full workflow snapshot the viewer/clone consume. The route
|
|
4513
|
+
* returns the whole camelCased row, so additional columns may appear beyond
|
|
4514
|
+
* the ones typed here; the index signature keeps them reachable without
|
|
4515
|
+
* casting.
|
|
4516
|
+
*/
|
|
4517
|
+
interface Template extends TemplateBrowseCard {
|
|
4518
|
+
markdownDescription: string | null;
|
|
4519
|
+
/** React Flow node snapshots (generic node JSON, execution data stripped on clone). */
|
|
4520
|
+
snapshotNodes: unknown[];
|
|
4521
|
+
snapshotEdges: unknown[];
|
|
4522
|
+
snapshotSettings: Record<string, unknown>;
|
|
4523
|
+
/** Channels the template is listed in (e.g. "marketplace", "tutorial"). */
|
|
4524
|
+
listedIn: string[];
|
|
4525
|
+
readonly [key: string]: unknown;
|
|
4526
|
+
}
|
|
4527
|
+
interface CloneTemplateParams {
|
|
4528
|
+
/** Target project (must belong to the caller). */
|
|
4529
|
+
projectId: string;
|
|
4530
|
+
/** Optional name for the cloned workflow; defaults to the template's name. */
|
|
4531
|
+
name?: string;
|
|
4532
|
+
}
|
|
4533
|
+
interface CloneTemplateResult {
|
|
4534
|
+
workflowId: string;
|
|
4535
|
+
projectId: string;
|
|
4536
|
+
}
|
|
4537
|
+
declare class TemplatesResource {
|
|
4538
|
+
private client;
|
|
4539
|
+
constructor(client: NodaroClient);
|
|
4540
|
+
/** Browse the public template marketplace (cursor-paginated, no auth required). */
|
|
4541
|
+
browse(params?: BrowseTemplatesParams): Promise<BrowseTemplatesResult>;
|
|
4542
|
+
/** Fetch one public template by slug, including its full workflow snapshot. */
|
|
4543
|
+
get(slug: string): Promise<Template>;
|
|
4544
|
+
/** Clone a template into one of the caller's projects. Free — no credits charged. */
|
|
4545
|
+
clone(slug: string, params: CloneTemplateParams): Promise<CloneTemplateResult>;
|
|
4546
|
+
}
|
|
4547
|
+
|
|
4548
|
+
/**
|
|
4549
|
+
* Public tutorials directory (`GET /v1/tutorials`) — video tutorials and
|
|
4550
|
+
* flow (template) tutorials, pre-grouped under the shared category taxonomy.
|
|
4551
|
+
* Read-only by design; curation is an admin surface outside the public SDK.
|
|
4552
|
+
*/
|
|
4553
|
+
interface TutorialVideoItem {
|
|
4554
|
+
id: string;
|
|
4555
|
+
type: "video";
|
|
4556
|
+
title: string;
|
|
4557
|
+
description: string | null;
|
|
4558
|
+
videoUrl: string;
|
|
4559
|
+
thumbnailUrl: string | null;
|
|
4560
|
+
categoryId: string;
|
|
4561
|
+
sortOrder: number;
|
|
4562
|
+
createdAt: string;
|
|
4563
|
+
updatedAt: string;
|
|
4564
|
+
}
|
|
4565
|
+
/** A workflow template surfaced as a tutorial; `slug` feeds `client.templates`. */
|
|
4566
|
+
interface TutorialFlowItem {
|
|
4567
|
+
id: string;
|
|
4568
|
+
type: "flow";
|
|
4569
|
+
templateId: string;
|
|
4570
|
+
slug: string | null;
|
|
4571
|
+
title: string;
|
|
4572
|
+
description: string | null;
|
|
4573
|
+
markdownDescription: string | null;
|
|
4574
|
+
previewMediaUrl: string | null;
|
|
4575
|
+
previewMediaType: "image" | "video" | null;
|
|
4576
|
+
complexity: string;
|
|
4577
|
+
estimatedCredits: number;
|
|
4578
|
+
nodeTypesUsed: string[];
|
|
4579
|
+
providersUsed: string[];
|
|
4580
|
+
nodeCount: number;
|
|
4581
|
+
categoryId: string;
|
|
4582
|
+
tutorialSortOrder: number;
|
|
4583
|
+
workflowId: string;
|
|
4584
|
+
createdAt: string;
|
|
4585
|
+
}
|
|
4586
|
+
interface TutorialCategory {
|
|
4587
|
+
id: string;
|
|
4588
|
+
name: string;
|
|
4589
|
+
slug: string;
|
|
4590
|
+
sortOrder: number;
|
|
4591
|
+
videos: TutorialVideoItem[];
|
|
4592
|
+
flows: TutorialFlowItem[];
|
|
4593
|
+
}
|
|
4594
|
+
declare class TutorialsResource {
|
|
4595
|
+
private client;
|
|
4596
|
+
constructor(client: NodaroClient);
|
|
4597
|
+
/** All enabled tutorial categories with their videos and flow tutorials. Public. */
|
|
4598
|
+
list(): Promise<{
|
|
4599
|
+
categories: TutorialCategory[];
|
|
4600
|
+
}>;
|
|
4601
|
+
}
|
|
4602
|
+
|
|
4432
4603
|
interface ClientOptions {
|
|
4433
4604
|
/** Backend base URL, e.g. "https://nodaro.example.com" or empty string for same-origin. */
|
|
4434
4605
|
baseUrl: string;
|
|
@@ -4438,6 +4609,14 @@ interface ClientOptions {
|
|
|
4438
4609
|
fetch?: typeof fetch;
|
|
4439
4610
|
/** Default request timeout in ms. Default 60s. */
|
|
4440
4611
|
timeoutMs?: number;
|
|
4612
|
+
/**
|
|
4613
|
+
* Overrides the `X-Nodaro-Client` label. Defaults to `sdk/<version>`.
|
|
4614
|
+
*
|
|
4615
|
+
* Exists for `@nodaro/cli`, which is a wrapper AROUND this SDK: without an
|
|
4616
|
+
* override every CLI invocation would be recorded as an SDK call and the two
|
|
4617
|
+
* surfaces could never be told apart.
|
|
4618
|
+
*/
|
|
4619
|
+
clientLabel?: string;
|
|
4441
4620
|
}
|
|
4442
4621
|
interface RequestOptions {
|
|
4443
4622
|
body?: unknown;
|
|
@@ -4461,11 +4640,21 @@ interface UserIdentity {
|
|
|
4461
4640
|
readonly avatarUrl: string | null;
|
|
4462
4641
|
/** Subscription tier (e.g. "free", "pro"). */
|
|
4463
4642
|
readonly tier: string;
|
|
4643
|
+
/**
|
|
4644
|
+
* Whether the user holds an admin role. DESCRIPTIVE only — use it to decide
|
|
4645
|
+
* whether to render admin surfaces without capability-probing an admin
|
|
4646
|
+
* endpoint; every admin API stays enforced server-side regardless.
|
|
4647
|
+
*/
|
|
4648
|
+
readonly isAdmin: boolean;
|
|
4464
4649
|
}
|
|
4465
4650
|
declare class NodaroClient {
|
|
4466
4651
|
readonly baseUrl: string;
|
|
4467
4652
|
readonly auth: Auth;
|
|
4468
4653
|
readonly timeoutMs: number;
|
|
4654
|
+
/** Value sent as `X-Nodaro-Client`; recorded by the backend as job provenance. */
|
|
4655
|
+
readonly clientLabel: string;
|
|
4656
|
+
/** Whether to actually send it — see the note on {@link CLIENT_HEADER}. */
|
|
4657
|
+
private readonly sendClientHeader;
|
|
4469
4658
|
private readonly fetchOverride;
|
|
4470
4659
|
/**
|
|
4471
4660
|
* Resolved lazily so consumers can swap `globalThis.fetch` after the
|
|
@@ -4499,6 +4688,8 @@ declare class NodaroClient {
|
|
|
4499
4688
|
readonly presets: PresetsResource;
|
|
4500
4689
|
readonly pickerCatalogs: PickerCatalogsResource;
|
|
4501
4690
|
readonly community: CommunityResource;
|
|
4691
|
+
readonly templates: TemplatesResource;
|
|
4692
|
+
readonly tutorials: TutorialsResource;
|
|
4502
4693
|
constructor(opts: ClientOptions);
|
|
4503
4694
|
request<T>(method: string, path: string, options?: RequestOptions): Promise<T>;
|
|
4504
4695
|
/**
|
|
@@ -4600,4 +4791,4 @@ interface ApiErrorBody {
|
|
|
4600
4791
|
}
|
|
4601
4792
|
declare function throwFromResponse(status: number, body: ApiErrorBody): never;
|
|
4602
4793
|
|
|
4603
|
-
export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, CommunityResource, type ContinueVideoProResult, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateProjectInput, type CreateWorkflowInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, CreditsResource, type DeleteAppRunResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EnhanceInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, InsufficientCreditsError, type Job, JobAbortedError, JobFailedError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListObjectsParams, type ListWorkflowsParams, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, MediaResource, type ModelCostsResult, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, type OutputType, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, PresetsResource, type Project, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RotateSecretResult, type RunAndWaitOptions, type RunManyResult, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
|
4794
|
+
export { type AccessTokenResponse, type AnalyzeInput, type AnalyzeResult, type AppRun, type AppRunResult, type ApplyChatProposalResult, type ApproveCreatureMainImageResult, type ApproveMainImageResult, type ApproveObjectMainImageResult, type ApprovePortraitResult, AppsResource, AudioResource, type Auth, type BranchPipelineInput, type BranchPipelineResult, type BrowseTemplatesParams, type BrowseTemplatesResult, CREATURE_ASSET_TYPES, CallbackAuth, type CancelExecutionParams, type CancelJobResult, type Character, type CharacterDetail, type CharacterUsage, CharactersResource, type ChatStageResult, type ChatTurn, type ClientOptions, type CloneTemplateParams, type CloneTemplateResult, CommunityResource, type ContinueVideoProResult, type CreateCreatureInput, type CreateDeveloperAppInput, type CreateDeveloperAppResult, type CreateLocationInput, type CreateObjectInput, type CreateProjectInput, type CreateWorkflowInput, type Creature, type CreatureAssetType, type CreatureDetail, type CreatureReferencePhoto, type CreatureReferencePhotoKind, CreaturesResource, CreditsResource, type DeleteAppRunResult, type DeveloperApp, type DeveloperAppScope, type DeveloperAppStatus, DeveloperAppsResource, type DownloadVideoProgress, type DubbingInput, type DuplicateCharacterInput, type EnhanceInput, type ExchangeCodeInput, type ExecutionStatus, type ExecutionTriggerType, ExecutionsResource, type FactoryPresetsResult, ForbiddenError, type GenerateAssetInput, type GenerateCharacterInput, type GenerateCharacterResult, type GenerateCreatureAssetInput, type GenerateCreatureAssetResult, type GenerateCreatureInput, type GenerateCreatureMotionInput, type GenerateCreatureMotionResult, type GenerateCreatureResult, type GenerateImageParams, type GenerateInput, type GenerateLocationAssetInput, type GenerateLocationInput, type GenerateLocationResult, type GenerateMotionInput, type GenerateObjectAssetInput, type GenerateObjectAssetResult, type GenerateObjectInput, type GenerateObjectMotionInput, type GenerateObjectMotionResult, type GenerateObjectResult, type GenerateSurroundContinuationInput, type GenerateVideoParams, type GetPickerCatalogOptions, InsufficientCreditsError, type Job, JobAbortedError, JobFailedError, type JobStatus, type JobStatusResult, JobTimeoutError, JobsResource, type LibraryAsset, LibraryResource, type ListAppRunsParams, type ListAppsParams, type ListAppsResult, type ListCharactersParams, type ListCreaturesParams, type ListExecutionsForWorkflowParams, type ListExecutionsPage, type ListLibraryParams, type ListLibraryResult, type ListLocationsParams, type ListObjectsParams, type ListWorkflowsParams, type Location, type LocationDetail, type LocationReferencePhoto, type LocationReferencePhotoKind, LocationsResource, MediaResource, type ModelCostsResult, NodaroClient, NodaroError, type NodeCategory, type NodeDescriptor, type NodeExecutionState, type NodeInputField, type NodeInputSchema, type NodeJobOutput, type NodePreset, type NodePresetGroup, NodesResource, NotFoundError, type OAuthAppInfo, OAuthResource, type Object$1 as Object, type ObjectCategory, type ObjectDetail, type ObjectReferencePhoto, type ObjectReferencePhotoKind, ObjectsResource, type OutputType, type PickerCatalog, type PickerCatalogSummary, PickerCatalogsResource, type PickerDimension, type PickerOption, PipelinesResource, PresetsResource, type Project, ProjectsResource, PromptHelperResource, type PromptResult, type PublishedApp, type PublishedAppDetail, RateLimitedError, type RecaptionCreatureResult, type RecaptionLocationResult, type RecaptionObjectResult, type RecaptionResult, type ReduceInput, ReduceResource, type ReduceResult, type ReferencePhoto, type ReferencePhotoKind, type RotateSecretResult, type RunAndWaitOptions, type RunManyResult, type RunNodeResult, type RunWorkflowParams, type RunWorkflowResult, StaticTokenAuth, type StopVideoProResult, StorageExceededError, type StructuredReferenceParams, type Template, type TemplateBrowseCard, type TemplateSort, TemplatesResource, type TutorialCategory, type TutorialFlowItem, type TutorialVideoItem, TutorialsResource, UnauthorizedError, type UpdateCreatureInput, type UpdateCreatureResult, type UpdateDeveloperAppInput, type UpdateLocationInput, type UpdateLocationResult, type UpdateObjectInput, type UpdateObjectResult, type UpdateProjectInput, type UpdateWorkflowInput, type UploadResult, UploadsResource, type UpsertCharacterInput, type UpsertCharacterResult, type UpsertCreatureInput, type UpsertCreatureResult, type UpsertObjectInput, type UpsertObjectResult, type UserBalance, type UserIdentity, type VcpAnalysis, type VcpAnalysisSpeaker, type VcpAnalyzeInput, type VcpExportInput, type VcpExportTrack, type VideoMetadata, VideoProResource, type VoiceChangerProInput, type VoiceChangerProVoice, type VoiceDesignInput, type VoiceRemixInput, VoicesResource, type Workflow, WorkflowConflictError, type WorkflowExecution, type WorkflowExecutionSummary, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
package/dist/index.js
CHANGED
|
@@ -1932,6 +1932,7 @@ var LibraryResource = class {
|
|
|
1932
1932
|
if (params.limit !== void 0) qs.set("limit", String(params.limit));
|
|
1933
1933
|
if (params.cursor) qs.set("cursor", params.cursor);
|
|
1934
1934
|
if (params.owned !== void 0) qs.set("owned", String(params.owned));
|
|
1935
|
+
if (params.source) qs.set("source", params.source);
|
|
1935
1936
|
const query = qs.toString();
|
|
1936
1937
|
return this.client.request("GET", `/v1/library${query ? `?${query}` : ""}`);
|
|
1937
1938
|
}
|
|
@@ -2116,11 +2117,52 @@ var CommunityResource = class {
|
|
|
2116
2117
|
}
|
|
2117
2118
|
};
|
|
2118
2119
|
|
|
2120
|
+
// src/resources/templates.ts
|
|
2121
|
+
var TemplatesResource = class {
|
|
2122
|
+
constructor(client) {
|
|
2123
|
+
this.client = client;
|
|
2124
|
+
}
|
|
2125
|
+
client;
|
|
2126
|
+
/** Browse the public template marketplace (cursor-paginated, no auth required). */
|
|
2127
|
+
browse(params = {}) {
|
|
2128
|
+
return this.client.request("GET", "/v1/templates/browse", { query: { ...params } });
|
|
2129
|
+
}
|
|
2130
|
+
/** Fetch one public template by slug, including its full workflow snapshot. */
|
|
2131
|
+
get(slug) {
|
|
2132
|
+
return this.client.request("GET", `/v1/templates/${encodeURIComponent(slug)}`);
|
|
2133
|
+
}
|
|
2134
|
+
/** Clone a template into one of the caller's projects. Free — no credits charged. */
|
|
2135
|
+
clone(slug, params) {
|
|
2136
|
+
return this.client.request("POST", `/v1/templates/${encodeURIComponent(slug)}/clone`, {
|
|
2137
|
+
body: params
|
|
2138
|
+
});
|
|
2139
|
+
}
|
|
2140
|
+
};
|
|
2141
|
+
|
|
2142
|
+
// src/resources/tutorials.ts
|
|
2143
|
+
var TutorialsResource = class {
|
|
2144
|
+
constructor(client) {
|
|
2145
|
+
this.client = client;
|
|
2146
|
+
}
|
|
2147
|
+
client;
|
|
2148
|
+
/** All enabled tutorial categories with their videos and flow tutorials. Public. */
|
|
2149
|
+
list() {
|
|
2150
|
+
return this.client.request("GET", "/v1/tutorials");
|
|
2151
|
+
}
|
|
2152
|
+
};
|
|
2153
|
+
|
|
2119
2154
|
// src/client.ts
|
|
2155
|
+
var SDK_VERSION = "1.13.0" ;
|
|
2156
|
+
var CLIENT_HEADER = "X-Nodaro-Client";
|
|
2157
|
+
var isBrowser = () => typeof window !== "undefined" && typeof window.document !== "undefined";
|
|
2120
2158
|
var NodaroClient = class {
|
|
2121
2159
|
baseUrl;
|
|
2122
2160
|
auth;
|
|
2123
2161
|
timeoutMs;
|
|
2162
|
+
/** Value sent as `X-Nodaro-Client`; recorded by the backend as job provenance. */
|
|
2163
|
+
clientLabel;
|
|
2164
|
+
/** Whether to actually send it — see the note on {@link CLIENT_HEADER}. */
|
|
2165
|
+
sendClientHeader;
|
|
2124
2166
|
fetchOverride;
|
|
2125
2167
|
/**
|
|
2126
2168
|
* Resolved lazily so consumers can swap `globalThis.fetch` after the
|
|
@@ -2156,11 +2198,15 @@ var NodaroClient = class {
|
|
|
2156
2198
|
presets;
|
|
2157
2199
|
pickerCatalogs;
|
|
2158
2200
|
community;
|
|
2201
|
+
templates;
|
|
2202
|
+
tutorials;
|
|
2159
2203
|
constructor(opts) {
|
|
2160
2204
|
this.baseUrl = opts.baseUrl.replace(/\/$/, "");
|
|
2161
2205
|
this.auth = opts.auth;
|
|
2162
2206
|
this.fetchOverride = opts.fetch;
|
|
2163
2207
|
this.timeoutMs = opts.timeoutMs ?? 6e4;
|
|
2208
|
+
this.clientLabel = opts.clientLabel ?? `sdk/${SDK_VERSION}`;
|
|
2209
|
+
this.sendClientHeader = opts.clientLabel !== void 0 || !isBrowser();
|
|
2164
2210
|
this.workflows = new WorkflowsResource(this);
|
|
2165
2211
|
this.projects = new ProjectsResource(this);
|
|
2166
2212
|
this.jobs = new JobsResource(this);
|
|
@@ -2186,6 +2232,8 @@ var NodaroClient = class {
|
|
|
2186
2232
|
this.presets = new PresetsResource(this);
|
|
2187
2233
|
this.pickerCatalogs = new PickerCatalogsResource(this);
|
|
2188
2234
|
this.community = new CommunityResource(this);
|
|
2235
|
+
this.templates = new TemplatesResource(this);
|
|
2236
|
+
this.tutorials = new TutorialsResource(this);
|
|
2189
2237
|
}
|
|
2190
2238
|
async request(method, path, options = {}) {
|
|
2191
2239
|
const url = this.buildUrl(path, options.query);
|
|
@@ -2193,6 +2241,7 @@ var NodaroClient = class {
|
|
|
2193
2241
|
const isFormData = typeof FormData !== "undefined" && options.body instanceof FormData;
|
|
2194
2242
|
const headers = {
|
|
2195
2243
|
...isFormData ? {} : { "Content-Type": "application/json" },
|
|
2244
|
+
...this.sendClientHeader ? { [CLIENT_HEADER]: this.clientLabel } : {},
|
|
2196
2245
|
...options.headers ?? {}
|
|
2197
2246
|
};
|
|
2198
2247
|
if (token) headers["Authorization"] = `Bearer ${token}`;
|
|
@@ -2277,6 +2326,6 @@ function supabaseAuth(supabase) {
|
|
|
2277
2326
|
};
|
|
2278
2327
|
}
|
|
2279
2328
|
|
|
2280
|
-
export { AppsResource, AudioResource, CREATURE_ASSET_TYPES, CallbackAuth, CharactersResource, CommunityResource, CreaturesResource, CreditsResource, DeveloperAppsResource, ExecutionsResource, ForbiddenError, InsufficientCreditsError, JobAbortedError, JobFailedError, JobTimeoutError, JobsResource, LibraryResource, LocationsResource, MediaResource, NodaroClient, NodaroError, NodesResource, NotFoundError, OAuthResource, ObjectsResource, PickerCatalogsResource, PipelinesResource, PresetsResource, ProjectsResource, PromptHelperResource, RateLimitedError, ReduceResource, StaticTokenAuth, StorageExceededError, UnauthorizedError, UploadsResource, VideoProResource, VoicesResource, WorkflowConflictError, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
|
2329
|
+
export { AppsResource, AudioResource, CREATURE_ASSET_TYPES, CallbackAuth, CharactersResource, CommunityResource, CreaturesResource, CreditsResource, DeveloperAppsResource, ExecutionsResource, ForbiddenError, InsufficientCreditsError, JobAbortedError, JobFailedError, JobTimeoutError, JobsResource, LibraryResource, LocationsResource, MediaResource, NodaroClient, NodaroError, NodesResource, NotFoundError, OAuthResource, ObjectsResource, PickerCatalogsResource, PipelinesResource, PresetsResource, ProjectsResource, PromptHelperResource, RateLimitedError, ReduceResource, StaticTokenAuth, StorageExceededError, TemplatesResource, TutorialsResource, UnauthorizedError, UploadsResource, VideoProResource, VoicesResource, WorkflowConflictError, WorkflowsResource, buildPersonSeedPrompt, createClient, supabaseAuth, throwFromResponse };
|
|
2281
2330
|
//# sourceMappingURL=index.js.map
|
|
2282
2331
|
//# sourceMappingURL=index.js.map
|