@liforma/publisher 0.6.0 → 0.9.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 (76) hide show
  1. package/README.md +48 -3
  2. package/dist/createPublisher.d.ts +5 -1
  3. package/dist/createPublisher.d.ts.map +1 -1
  4. package/dist/createPublisher.js +4 -0
  5. package/dist/createPublisher.js.map +1 -1
  6. package/dist/errors.d.ts +6 -0
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +2 -0
  9. package/dist/errors.js.map +1 -1
  10. package/dist/http.d.ts +1 -0
  11. package/dist/http.d.ts.map +1 -1
  12. package/dist/http.js +2 -1
  13. package/dist/http.js.map +1 -1
  14. package/dist/imageSource.d.ts +28 -0
  15. package/dist/imageSource.d.ts.map +1 -0
  16. package/dist/imageSource.js +155 -0
  17. package/dist/imageSource.js.map +1 -0
  18. package/dist/index.d.ts +9 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +1 -0
  21. package/dist/index.js.map +1 -1
  22. package/dist/publishStart.d.ts +9 -0
  23. package/dist/publishStart.d.ts.map +1 -1
  24. package/dist/publishStart.js +10 -2
  25. package/dist/publishStart.js.map +1 -1
  26. package/dist/resources/avatars.d.ts +12 -0
  27. package/dist/resources/avatars.d.ts.map +1 -1
  28. package/dist/resources/avatars.js +24 -1
  29. package/dist/resources/avatars.js.map +1 -1
  30. package/dist/resources/backdrops.d.ts +6 -0
  31. package/dist/resources/backdrops.d.ts.map +1 -1
  32. package/dist/resources/backdrops.js +13 -0
  33. package/dist/resources/backdrops.js.map +1 -1
  34. package/dist/resources/characters.d.ts +30 -0
  35. package/dist/resources/characters.d.ts.map +1 -1
  36. package/dist/resources/characters.js +43 -2
  37. package/dist/resources/characters.js.map +1 -1
  38. package/dist/resources/clothes.d.ts +19 -1
  39. package/dist/resources/clothes.d.ts.map +1 -1
  40. package/dist/resources/clothes.js +34 -3
  41. package/dist/resources/clothes.js.map +1 -1
  42. package/dist/resources/costumes.d.ts +6 -2
  43. package/dist/resources/costumes.d.ts.map +1 -1
  44. package/dist/resources/costumes.js +30 -2
  45. package/dist/resources/costumes.js.map +1 -1
  46. package/dist/resources/createFrom.d.ts +108 -0
  47. package/dist/resources/createFrom.d.ts.map +1 -0
  48. package/dist/resources/createFrom.js +509 -0
  49. package/dist/resources/createFrom.js.map +1 -0
  50. package/dist/resources/experiences.d.ts +42 -1
  51. package/dist/resources/experiences.d.ts.map +1 -1
  52. package/dist/resources/experiences.js +50 -3
  53. package/dist/resources/experiences.js.map +1 -1
  54. package/dist/resources/hair.d.ts +10 -2
  55. package/dist/resources/hair.d.ts.map +1 -1
  56. package/dist/resources/hair.js +21 -2
  57. package/dist/resources/hair.js.map +1 -1
  58. package/dist/resources/library.d.ts +50 -0
  59. package/dist/resources/library.d.ts.map +1 -0
  60. package/dist/resources/library.js +60 -0
  61. package/dist/resources/library.js.map +1 -0
  62. package/dist/resources/sets.d.ts +20 -0
  63. package/dist/resources/sets.d.ts.map +1 -1
  64. package/dist/resources/sets.js +34 -3
  65. package/dist/resources/sets.js.map +1 -1
  66. package/dist/resources/taxonomy.d.ts +10 -0
  67. package/dist/resources/taxonomy.d.ts.map +1 -0
  68. package/dist/resources/taxonomy.js +19 -0
  69. package/dist/resources/taxonomy.js.map +1 -0
  70. package/dist/schemas.d.ts +996 -19
  71. package/dist/schemas.d.ts.map +1 -1
  72. package/dist/schemas.js +145 -11
  73. package/dist/schemas.js.map +1 -1
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +1 -1
  76. package/package.json +1 -1
package/README.md CHANGED
@@ -1,19 +1,51 @@
1
1
  # @liforma/publisher
2
2
 
3
- Server SDK for the Liforma Publisher API — upload images, create backdrops, wrap sets, create costumes/clothes/hair/characters, and publish experiences.
3
+ Server SDK for the Liforma Publisher API — create a full experience in one call, or compose uploads, backdrops, sets, costumes/clothes/hair, and characters with the low-level namespaces.
4
4
 
5
5
  ```bash
6
6
  npm install @liforma/publisher
7
7
  ```
8
8
 
9
+ ## One-shot composition (happy path)
10
+
9
11
  ```ts
12
+ import { readFileSync } from 'node:fs';
10
13
  import { createPublisher } from '@liforma/publisher';
11
14
 
12
15
  const publisher = createPublisher(process.env.LIFORMA_PROJECT_ID!, {
13
- apiKey: process.env.LIFORMA_API_KEY!,
14
- retryPolicy: { maxAttempts: 3 }
16
+ apiKey: process.env.LIFORMA_API_KEY!
17
+ });
18
+
19
+ const avatars = await publisher.avatars.list();
20
+ const avatar = avatars[0]!;
21
+
22
+ const result = await publisher.experiences.createFrom({
23
+ title: 'Hotel check-in',
24
+ backdrop: {
25
+ image: { bytes: readFileSync('./lobby.png'), contentType: 'image/png' }
26
+ },
27
+ character: {
28
+ avatarId: avatar.id,
29
+ name: 'Front desk',
30
+ voice: avatar.defaultVoiceId,
31
+ sttLang: avatar.defaultSttLang,
32
+ personality: 'Friendly hotel receptionist'
33
+ },
34
+ startingMessage: 'Good evening. How may I help you?',
35
+ systemInstructions: 'The customer is checking in.',
36
+ publish: true
15
37
  });
16
38
 
39
+ console.log(result.experience.id, result.created);
40
+ ```
41
+
42
+ `ImageSource` accepts `Blob`, `{ bytes, contentType }`, `{ url }` (imported into Liforma storage — never a permanent dependency), or `{ uploadId }`. Reuse existing library items with `{ id }` on backdrop/character/plates (`id` wins if both `id` and create fields are present). Progress uses `{ stage, job }` because multiple plate jobs may run concurrently.
43
+
44
+ If `externalId` matches an existing experience or character, `createFrom` returns that resource’s live composition (`created.* === false` for reused members). Character `externalId` hits probe-create without wardrobe first so retries do not spawn orphan plates.
45
+
46
+ ## Low-level namespaces
47
+
48
+ ```ts
17
49
  const background = await publisher.uploadImage(lobbyPng, { contentType: 'image/png' });
18
50
  const backdrop = await publisher.backdrops.create({ name: 'Hotel lobby', image: background });
19
51
  const set = await publisher.sets.create({ name: 'Hotel lobby', backdropId: backdrop.id });
@@ -57,4 +89,17 @@ Experience responses describe the current draft. Use `hasPublishedRevision` and
57
89
 
58
90
  Use a **live** API key on the server only. Never ship this package or the key to a browser.
59
91
 
92
+ ## Move between projects (same org)
93
+
94
+ Construct the client for the **destination** project. Every move call requires `sourceApiKey` (preview and commit):
95
+
96
+ ```ts
97
+ await dest.library.move(
98
+ { sourceProjectId: 'proj_src', experienceIds: ['exp_…'], dryRun: true },
99
+ { sourceApiKey: process.env.LIFORMA_SOURCE_PROJECT_KEY! }
100
+ );
101
+ ```
102
+
103
+ Same-org enable/detach/reparent only — not cross-org remix. See alpha docs for class A vs B behaviour.
104
+
60
105
  Docs (alpha): https://docs.liforma.ai/_alpha/publisher-sdk
@@ -6,7 +6,9 @@ import { type ClothesClient } from './resources/clothes.js';
6
6
  import { type CostumesClient } from './resources/costumes.js';
7
7
  import { type ExperiencesClient } from './resources/experiences.js';
8
8
  import { type HairClient } from './resources/hair.js';
9
+ import { type LibraryClient } from './resources/library.js';
9
10
  import { type SetsClient } from './resources/sets.js';
11
+ import { type TaxonomyClient } from './resources/taxonomy.js';
10
12
  import { type RetryPolicy } from './retry.js';
11
13
  import type { ImageBytes } from './hash.js';
12
14
  export type CreatePublisherOptions = {
@@ -15,7 +17,7 @@ export type CreatePublisherOptions = {
15
17
  readonly fetch?: typeof fetch;
16
18
  readonly retryPolicy?: RetryPolicy;
17
19
  };
18
- export type { AvatarsClient, BackdropsClient, CharactersClient, ClothesClient, CostumesClient, ExperiencesClient, HairClient, JobsClient, SetsClient };
20
+ export type { AvatarsClient, BackdropsClient, CharactersClient, ClothesClient, CostumesClient, ExperiencesClient, HairClient, JobsClient, LibraryClient, SetsClient, TaxonomyClient };
19
21
  export declare function createPublisher(projectId: string, options?: CreatePublisherOptions): {
20
22
  projectId: string;
21
23
  baseUrl: string;
@@ -27,9 +29,11 @@ export declare function createPublisher(projectId: string, options?: CreatePubli
27
29
  contentType: string;
28
30
  signal?: AbortSignal;
29
31
  }) => Promise<import("./upload.js").UploadedImage>;
32
+ taxonomy: TaxonomyClient;
30
33
  avatars: AvatarsClient;
31
34
  characters: CharactersClient;
32
35
  experiences: ExperiencesClient;
36
+ library: LibraryClient;
33
37
  sets: SetsClient;
34
38
  backdrops: BackdropsClient;
35
39
  clothes: ClothesClient;
@@ -1 +1 @@
1
- {"version":3,"file":"createPublisher.d.ts","sourceRoot":"","sources":["../src/createPublisher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAExE,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,MAAM,sBAAsB,GAAG;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,YAAY,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,CAAC;AAiBF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;;;yBAOhE,UAAU,iBAAiB;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;4BAIrF,UAAU,iBACF;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;;;;;;;;;;EAa9D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
1
+ {"version":3,"file":"createPublisher.d.ts","sourceRoot":"","sources":["../src/createPublisher.ts"],"names":[],"mappings":"AAEA,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAEpF,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,MAAM,MAAM,sBAAsB,GAAG;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC;CACnC,CAAC;AAEF,YAAY,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,CAAC;AAiBF,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;;;yBAOhE,UAAU,iBAAiB;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;4BAIrF,UAAU,iBACF;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE;;;;;;;;;;;;EAe9D;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC"}
@@ -7,7 +7,9 @@ import { createClothesClient } from './resources/clothes.js';
7
7
  import { createCostumesClient } from './resources/costumes.js';
8
8
  import { createExperiencesClient } from './resources/experiences.js';
9
9
  import { createHairClient } from './resources/hair.js';
10
+ import { createLibraryClient } from './resources/library.js';
10
11
  import { createSetsClient } from './resources/sets.js';
12
+ import { createTaxonomyClient } from './resources/taxonomy.js';
11
13
  import { assertServerRuntime, resolveApiKey, resolveBaseUrl } from './runtime.js';
12
14
  import { resolveRetryPolicy } from './retry.js';
13
15
  import { uploadDepthMap, uploadImage } from './upload.js';
@@ -32,9 +34,11 @@ export function createPublisher(projectId, options = {}) {
32
34
  baseUrl: http.baseUrl,
33
35
  uploadImage: (input, uploadOptions) => uploadImage(http, input, uploadOptions),
34
36
  uploadDepthMap: (input, uploadOptions) => uploadDepthMap(http, input, uploadOptions),
37
+ taxonomy: createTaxonomyClient(http),
35
38
  avatars: createAvatarsClient(http),
36
39
  characters: createCharactersClient(http),
37
40
  experiences: createExperiencesClient(http),
41
+ library: createLibraryClient(http),
38
42
  sets: createSetsClient(http),
39
43
  backdrops: createBackdropsClient(http),
40
44
  clothes: createClothesClient(http),
@@ -1 +1 @@
1
- {"version":3,"file":"createPublisher.js","sourceRoot":"","sources":["../src/createPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAwB,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAuB,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAA0B,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAqB1D,SAAS,QAAQ,CAAC,SAAiB,EAAE,UAAkC,EAAE;IACxE,mBAAmB,EAAE,CAAC;IACtB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO;QACN,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;KACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,UAAkC,EAAE;IACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE1C,OAAO;QACN,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QAErB,WAAW,EAAE,CAAC,KAAiB,EAAE,aAA4D,EAAE,EAAE,CAChG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;QAExC,cAAc,EAAE,CACf,KAAiB,EACjB,aAA4D,EAC3D,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;QAE/C,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACxC,WAAW,EAAE,uBAAuB,CAAC,IAAI,CAAC;QAC1C,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACpC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;KAC5B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"createPublisher.js","sourceRoot":"","sources":["../src/createPublisher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,qBAAqB,EAAwB,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAyB,MAAM,2BAA2B,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,oBAAoB,EAAuB,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,uBAAuB,EAA0B,MAAM,4BAA4B,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAuB,MAAM,yBAAyB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAoB,MAAM,YAAY,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAuB1D,SAAS,QAAQ,CAAC,SAAiB,EAAE,UAAkC,EAAE;IACxE,mBAAmB,EAAE,CAAC;IACtB,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,EAAE,EAAE,CAAC;QACT,MAAM,IAAI,qBAAqB,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO;QACN,SAAS,EAAE,EAAE;QACb,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC;QACrC,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC;QACxC,SAAS,EAAE,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAC7D,WAAW,EAAE,kBAAkB,CAAC,OAAO,CAAC,WAAW,CAAC;KACpD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,UAAkC,EAAE;IACtF,MAAM,IAAI,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAE1C,OAAO;QACN,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QAErB,WAAW,EAAE,CAAC,KAAiB,EAAE,aAA4D,EAAE,EAAE,CAChG,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;QAExC,cAAc,EAAE,CACf,KAAiB,EACjB,aAA4D,EAC3D,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC;QAE/C,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACpC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,UAAU,EAAE,sBAAsB,CAAC,IAAI,CAAC;QACxC,WAAW,EAAE,uBAAuB,CAAC,IAAI,CAAC;QAC1C,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,SAAS,EAAE,qBAAqB,CAAC,IAAI,CAAC;QACtC,OAAO,EAAE,mBAAmB,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC5B,QAAQ,EAAE,oBAAoB,CAAC,IAAI,CAAC;QACpC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC;KAC5B,CAAC;AACH,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,4 +1,8 @@
1
1
  import type { PublishJob } from './schemas.js';
2
+ export type PublisherErrorContext = {
3
+ readonly operation?: 'experiences.createFrom';
4
+ readonly step?: 'resolveImage' | 'backdrop' | 'costume' | 'clothes' | 'hair' | 'set' | 'character' | 'experience';
5
+ };
2
6
  export declare class LiformaPublisherError extends Error {
3
7
  readonly code: string;
4
8
  readonly status: number | undefined;
@@ -6,6 +10,7 @@ export declare class LiformaPublisherError extends Error {
6
10
  readonly details: Record<string, unknown> | undefined;
7
11
  readonly retryable: boolean;
8
12
  readonly job: PublishJob | undefined;
13
+ readonly context: PublisherErrorContext | undefined;
9
14
  constructor(message: string, options?: {
10
15
  readonly code?: string;
11
16
  readonly status?: number;
@@ -13,6 +18,7 @@ export declare class LiformaPublisherError extends Error {
13
18
  readonly details?: Record<string, unknown>;
14
19
  readonly retryable?: boolean;
15
20
  readonly job?: PublishJob;
21
+ readonly context?: PublisherErrorContext;
16
22
  readonly cause?: unknown;
17
23
  });
18
24
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAAC;gBAGpC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;QAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KACzB;CAWF;AAQD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAItE;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GACf,qBAAqB,CA0CvB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,wBAAwB,CAAC;IAC9C,QAAQ,CAAC,IAAI,CAAC,EACX,cAAc,GACd,UAAU,GACV,SAAS,GACT,SAAS,GACT,MAAM,GACN,KAAK,GACL,WAAW,GACX,YAAY,CAAC;CAChB,CAAC;AAEF,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IACtD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,SAAS,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,GAAG,SAAS,CAAC;gBAGnD,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QACT,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;QAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC;QAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,qBAAqB,CAAC;QACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;KACzB;CAYF;AAQD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAErE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAItE;AAED,wBAAgB,0BAA0B,CACzC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,OAAO,GACf,qBAAqB,CA0CvB"}
package/dist/errors.js CHANGED
@@ -5,6 +5,7 @@ export class LiformaPublisherError extends Error {
5
5
  details;
6
6
  retryable;
7
7
  job;
8
+ context;
8
9
  constructor(message, options) {
9
10
  super(message, options?.cause !== undefined ? { cause: options.cause } : undefined);
10
11
  this.name = 'LiformaPublisherError';
@@ -14,6 +15,7 @@ export class LiformaPublisherError extends Error {
14
15
  this.details = options?.details;
15
16
  this.retryable = Boolean(options?.retryable);
16
17
  this.job = options?.job;
18
+ this.context = options?.context;
17
19
  }
18
20
  }
19
21
  const RETRYABLE_CODES = new Set([
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/http.d.ts CHANGED
@@ -12,6 +12,7 @@ export type RequestOptions = {
12
12
  readonly body?: unknown;
13
13
  readonly signal?: AbortSignal;
14
14
  readonly retry?: boolean;
15
+ readonly headers?: Readonly<Record<string, string>>;
15
16
  };
16
17
  export declare function publisherRequest<T>(http: PublisherHttp, path: string, schema: z.ZodType<T>, options?: RequestOptions): Promise<{
17
18
  data: T;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,CAAC,EACvC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA6ExD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvE"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAIN,KAAK,mBAAmB,EACxB,MAAM,YAAY,CAAC;AAGpB,MAAM,MAAM,aAAa,GAAG;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,OAAO,KAAK,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,EAAE,mBAAmB,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IACtD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD,CAAC;AAEF,wBAAsB,gBAAgB,CAAC,CAAC,EACvC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,cAAmB,GAC1B,OAAO,CAAC;IAAE,IAAI,EAAE,CAAC,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8ExD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAGvE"}
package/dist/http.js CHANGED
@@ -16,7 +16,8 @@ export async function publisherRequest(http, path, schema, options = {}) {
16
16
  authorization: `Bearer ${http.apiKey}`,
17
17
  accept: 'application/json',
18
18
  'liforma-publisher-version': PUBLISHER_SDK_VERSION,
19
- ...(options.body === undefined ? {} : { 'content-type': 'application/json' })
19
+ ...(options.body === undefined ? {} : { 'content-type': 'application/json' }),
20
+ ...(options.headers ?? {})
20
21
  },
21
22
  body: options.body === undefined ? undefined : JSON.stringify(options.body),
22
23
  signal: options.signal
package/dist/http.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,EAEL,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAiBrD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,IAAmB,EACnB,IAAY,EACZ,MAAoB,EACpB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,SAA4C,CAAC;IAEjD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;gBACpC,MAAM;gBACN,OAAO,EAAE;oBACR,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,MAAM,EAAE,kBAAkB;oBAC1B,2BAA2B,EAAE,qBAAqB;oBAClD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;iBAC7E;gBACD,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3E,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;YACjC,SAAS,GAAG,IAAI,qBAAqB,CACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,EAClE;gBACC,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,KAAK;aACZ,CACD,CAAC;YACF,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3E,SAAS;YACV,CAAC;YACD,MAAM,SAAS,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,SAAS,GAAG,0BAA0B,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChF,IAAI,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC3E,MAAM,OAAO,GACZ,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjD,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/C,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrC,SAAS;YACV,CAAC;YACD,MAAM,SAAS,CAAC;QACjB,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,4BAA4B,EAAE;gBAC7D,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,SAAS;gBAClE,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,EAAE;gBACzE,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,SAAS;gBAClE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;aACxC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAmB,EAAE,MAAc;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;IAC7D,OAAO,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAClG,OAAO,EACN,kBAAkB,EAClB,YAAY,EACZ,KAAK,EAEL,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAkBrD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,IAAmB,EACnB,IAAY,EACZ,MAAoB,EACpB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;IACzE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,SAA4C,CAAC;IAEjD,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;gBACpC,MAAM;gBACN,OAAO,EAAE;oBACR,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;oBACtC,MAAM,EAAE,kBAAkB;oBAC1B,2BAA2B,EAAE,qBAAqB;oBAClD,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;oBAC7E,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;iBAC1B;gBACD,IAAI,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC;gBAC3E,MAAM,EAAE,OAAO,CAAC,MAAM;aACtB,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;YACjC,SAAS,GAAG,IAAI,qBAAqB,CACpC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,EAClE;gBACC,IAAI,EAAE,eAAe;gBACrB,SAAS,EAAE,IAAI;gBACf,KAAK,EAAE,KAAK;aACZ,CACD,CAAC;YACF,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC3B,MAAM,KAAK,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC3E,SAAS;YACV,CAAC;YACD,MAAM,SAAS,CAAC;QACjB,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,SAAS,GAAG,0BAA0B,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YAChF,IAAI,OAAO,CAAC,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,IAAI,OAAO,GAAG,WAAW,EAAE,CAAC;gBAC3E,MAAM,OAAO,GACZ,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACjD,kBAAkB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC/C,MAAM,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrC,SAAS;YACV,CAAC;YACD,MAAM,SAAS,CAAC;QACjB,CAAC;QAED,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,IAAI,qBAAqB,CAAC,4BAA4B,EAAE;gBAC7D,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,SAAS;gBAClE,KAAK,EAAE,KAAK;aACZ,CAAC,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,EAAE;gBACzE,IAAI,EAAE,kBAAkB;gBACxB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,IAAI,SAAS;gBAClE,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;aACxC,CAAC,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;IAClF,CAAC;IAED,MAAM,SAAS,IAAI,IAAI,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAmB,EAAE,MAAc;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;IAC7D,OAAO,gBAAgB,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC;AACrE,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { PublisherHttp } from './http.js';
2
+ import { type UploadedImage } from './upload.js';
3
+ export type ImageContentType = 'image/png' | 'image/jpeg' | 'image/webp';
4
+ /**
5
+ * Always resolves to a Liforma-hosted upload (or an existing uploadId).
6
+ * `{ url }` means import a copy — never a permanent runtime dependency.
7
+ */
8
+ export type ImageSource = Blob | {
9
+ readonly bytes: Uint8Array | ArrayBuffer;
10
+ readonly contentType: ImageContentType;
11
+ readonly filename?: string;
12
+ } | {
13
+ readonly url: string;
14
+ readonly contentType?: ImageContentType;
15
+ } | {
16
+ readonly uploadId: string;
17
+ };
18
+ export type ResolvedUpload = UploadedImage | string;
19
+ export type ResolveImageSourceOptions = {
20
+ readonly signal?: AbortSignal;
21
+ readonly purpose?: 'colour' | 'depth';
22
+ };
23
+ /**
24
+ * Resolve an ImageSource to a Liforma upload id / UploadedImage.
25
+ * URL sources are fetched and copied into Liforma storage.
26
+ */
27
+ export declare function resolveImageSource(http: PublisherHttp, image: ImageSource, options?: ResolveImageSourceOptions): Promise<ResolvedUpload>;
28
+ //# sourceMappingURL=imageSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageSource.d.ts","sourceRoot":"","sources":["../src/imageSource.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAiD,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhG,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,WAAW,GACpB,IAAI,GACJ;IACA,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC1B,GACD;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,yBAAyB,GAAG;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CACtC,CAAC;AA8JF;;;GAGG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,yBAA8B,GACrC,OAAO,CAAC,cAAc,CAAC,CAkCzB"}
@@ -0,0 +1,155 @@
1
+ import { LiformaPublisherError } from './errors.js';
2
+ import { MAX_UPLOAD_BYTES, uploadDepthMap, uploadImage } from './upload.js';
3
+ const SUPPORTED_CONTENT_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp']);
4
+ function isImageContentType(value) {
5
+ return SUPPORTED_CONTENT_TYPES.has(value);
6
+ }
7
+ function normalizeContentType(raw) {
8
+ if (!raw)
9
+ return null;
10
+ const base = raw.split(';')[0]?.trim().toLowerCase() ?? '';
11
+ if (base === 'image/jpg')
12
+ return 'image/jpeg';
13
+ if (isImageContentType(base))
14
+ return base;
15
+ return null;
16
+ }
17
+ function assertSupportedContentType(contentType) {
18
+ const normalized = normalizeContentType(contentType);
19
+ if (!normalized) {
20
+ throw new LiformaPublisherError(`Unsupported image contentType "${contentType}". Use image/png, image/jpeg, or image/webp.`, { code: 'INVALID_IMAGE_INPUT' });
21
+ }
22
+ return normalized;
23
+ }
24
+ function isTypedBytes(value) {
25
+ return 'bytes' in value && 'contentType' in value;
26
+ }
27
+ function isUrlSource(value) {
28
+ return 'url' in value && typeof value.url === 'string';
29
+ }
30
+ function isUploadIdSource(value) {
31
+ return 'uploadId' in value && typeof value.uploadId === 'string';
32
+ }
33
+ async function uploadResolved(http, bytes, contentType, options) {
34
+ const purpose = options.purpose ?? 'colour';
35
+ if (purpose === 'depth') {
36
+ return uploadDepthMap(http, bytes, { contentType, signal: options.signal });
37
+ }
38
+ return uploadImage(http, bytes, { contentType, signal: options.signal });
39
+ }
40
+ async function readBodyCapped(response, maxBytes) {
41
+ const contentLength = response.headers.get('content-length');
42
+ if (contentLength != null && contentLength.trim() !== '') {
43
+ const declared = Number(contentLength);
44
+ if (Number.isFinite(declared) && declared > maxBytes) {
45
+ throw new LiformaPublisherError('Image bytes must not exceed 20 MiB.', {
46
+ code: 'UPLOAD_TOO_LARGE'
47
+ });
48
+ }
49
+ }
50
+ const reader = response.body?.getReader();
51
+ if (!reader) {
52
+ const buffer = new Uint8Array(await response.arrayBuffer());
53
+ if (buffer.byteLength > maxBytes) {
54
+ throw new LiformaPublisherError('Image bytes must not exceed 20 MiB.', {
55
+ code: 'UPLOAD_TOO_LARGE'
56
+ });
57
+ }
58
+ return buffer;
59
+ }
60
+ const chunks = [];
61
+ let total = 0;
62
+ try {
63
+ for (;;) {
64
+ const { done, value } = await reader.read();
65
+ if (done)
66
+ break;
67
+ if (!value || value.byteLength === 0)
68
+ continue;
69
+ total += value.byteLength;
70
+ if (total > maxBytes) {
71
+ throw new LiformaPublisherError('Image bytes must not exceed 20 MiB.', {
72
+ code: 'UPLOAD_TOO_LARGE'
73
+ });
74
+ }
75
+ chunks.push(value);
76
+ }
77
+ }
78
+ catch (error) {
79
+ await reader.cancel().catch(() => undefined);
80
+ throw error;
81
+ }
82
+ if (total === 0) {
83
+ return new Uint8Array();
84
+ }
85
+ const out = new Uint8Array(total);
86
+ let offset = 0;
87
+ for (const chunk of chunks) {
88
+ out.set(chunk, offset);
89
+ offset += chunk.byteLength;
90
+ }
91
+ return out;
92
+ }
93
+ async function importFromUrl(http, source, options) {
94
+ const url = source.url.trim();
95
+ if (!url) {
96
+ throw new LiformaPublisherError('url is required.', { code: 'INVALID_IMAGE_INPUT' });
97
+ }
98
+ let response;
99
+ try {
100
+ response = await http.fetchImpl(url, { method: 'GET', signal: options.signal });
101
+ }
102
+ catch (error) {
103
+ options.signal?.throwIfAborted();
104
+ throw new LiformaPublisherError(error instanceof Error ? error.message : 'Failed to fetch image URL.', { code: 'IMAGE_URL_FETCH_FAILED', retryable: true, cause: error });
105
+ }
106
+ if (!response.ok) {
107
+ throw new LiformaPublisherError(`Image URL fetch failed (${response.status}).`, {
108
+ code: 'IMAGE_URL_FETCH_FAILED',
109
+ status: response.status,
110
+ retryable: response.status >= 500
111
+ });
112
+ }
113
+ const headerType = normalizeContentType(response.headers.get('content-type'));
114
+ const contentType = headerType ??
115
+ (source.contentType ? assertSupportedContentType(source.contentType) : null);
116
+ if (!contentType) {
117
+ throw new LiformaPublisherError('Image URL response did not include a supported Content-Type. Pass contentType on the source.', { code: 'INVALID_IMAGE_INPUT' });
118
+ }
119
+ const buffer = await readBodyCapped(response, MAX_UPLOAD_BYTES);
120
+ if (buffer.byteLength === 0) {
121
+ throw new LiformaPublisherError('Image URL returned empty body.', {
122
+ code: 'INVALID_IMAGE_INPUT'
123
+ });
124
+ }
125
+ return uploadResolved(http, buffer, contentType, options);
126
+ }
127
+ /**
128
+ * Resolve an ImageSource to a Liforma upload id / UploadedImage.
129
+ * URL sources are fetched and copied into Liforma storage.
130
+ */
131
+ export async function resolveImageSource(http, image, options = {}) {
132
+ if (typeof Blob !== 'undefined' && image instanceof Blob) {
133
+ const contentType = assertSupportedContentType(image.type || '');
134
+ return uploadResolved(http, image, contentType, options);
135
+ }
136
+ if (!image || typeof image !== 'object') {
137
+ throw new LiformaPublisherError('ImageSource must be a Blob, { bytes, contentType }, { url }, or { uploadId }.', { code: 'INVALID_IMAGE_INPUT' });
138
+ }
139
+ if (isUploadIdSource(image)) {
140
+ const uploadId = image.uploadId.trim();
141
+ if (!uploadId) {
142
+ throw new LiformaPublisherError('uploadId is required.', { code: 'INVALID_IMAGE_INPUT' });
143
+ }
144
+ return uploadId;
145
+ }
146
+ if (isUrlSource(image)) {
147
+ return importFromUrl(http, image, options);
148
+ }
149
+ if (isTypedBytes(image)) {
150
+ const contentType = assertSupportedContentType(image.contentType);
151
+ return uploadResolved(http, image.bytes, contentType, options);
152
+ }
153
+ throw new LiformaPublisherError('ImageSource must be a Blob, { bytes, contentType }, { url }, or { uploadId }. Bare Uint8Array/ArrayBuffer is not supported.', { code: 'INVALID_IMAGE_INPUT' });
154
+ }
155
+ //# sourceMappingURL=imageSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageSource.js","sourceRoot":"","sources":["../src/imageSource.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,19 +1,25 @@
1
1
  export { createPublisher } from './createPublisher.js';
2
2
  export type { CreatePublisherOptions, Publisher } from './createPublisher.js';
3
- export type { AvatarsClient, BackdropsClient, CharactersClient, ClothesClient, CostumesClient, ExperiencesClient, HairClient, JobsClient, SetsClient } from './createPublisher.js';
3
+ export type { AvatarsClient, BackdropsClient, CharactersClient, ClothesClient, CostumesClient, ExperiencesClient, HairClient, JobsClient, LibraryClient, SetsClient, TaxonomyClient } from './createPublisher.js';
4
+ export type { LibraryMoveInput, LibraryMoveOptions, LibraryMoveResult } from './resources/library.js';
5
+ export type { UpdateAvatarInput } from './resources/avatars.js';
6
+ export type { TaxonomyFilterResource } from './resources/taxonomy.js';
4
7
  export type { CreateBackdropInput } from './resources/backdrops.js';
5
8
  export type { CreateCharacterInput, UpdateCharacterInput } from './resources/characters.js';
6
9
  export type { BackgroundMode, CreateClothesInput, UpdateClothesInput } from './resources/clothes.js';
7
- export type { CreateExperienceInput, UpdateExperienceInput } from './resources/experiences.js';
10
+ export type { CreateExperienceInput, CreateFromBackdropInput, CreateFromCharacterInput, CreateFromExperienceInput, CreateFromOptions, CreateFromProgress, CreateFromResult, CreateFromStage, PlateOrId, UpdateExperienceInput } from './resources/experiences.js';
8
11
  export type { CreateCostumeInput, UpdateCostumeInput } from './resources/costumes.js';
9
12
  export type { CreateHairInput, UpdateHairInput } from './resources/hair.js';
10
13
  export type { CreateSetInput, UpdateSetInput } from './resources/sets.js';
11
14
  export type { RequestOptions, TimeoutOptions, WaitOptions } from './options.js';
12
15
  export type { RetryPolicy } from './retry.js';
13
16
  export type { ImageBytes } from './hash.js';
17
+ export type { ImageContentType, ImageSource, ResolvedUpload } from './imageSource.js';
18
+ export { resolveImageSource } from './imageSource.js';
14
19
  export { MAX_UPLOAD_BYTES } from './upload.js';
15
20
  export type { UploadedImage } from './upload.js';
16
21
  export { LiformaPublisherError, isRetryableError } from './errors.js';
22
+ export type { PublisherErrorContext } from './errors.js';
17
23
  export { PERSONA_ETHNICITY_VALUES, PERSONA_GENDER_VALUES } from './schemas.js';
18
- export type { Avatar, PersonaEthnicity, PersonaGender, AppearanceResourceStatus, PublishJob, PublishJobError, PublishJobErrorCategory, PublishJobStatus, PublishResourceStatus, CharacterResource, ClothesResource, CostumeResource, CreateClothesPublishResponse, CreateCostumePublishResponse, CreateHairPublishResponse, CreateBackdropPublishResponse, CreatePublishResponse, DeletedResource, ExperienceResource, ExperienceStatus, HairResource, LocationResourceStatus, SetResource, BackdropResource } from './schemas.js';
24
+ export type { Avatar, PersonaEthnicity, PersonaGender, AppearanceResourceStatus, PublishJob, PublishJobError, PublishJobErrorCategory, PublishJobStatus, PublishResourceStatus, CharacterResource, ClothesResource, CostumeResource, CreateClothesPublishResponse, CreateCostumePublishResponse, CreateHairPublishResponse, CreateBackdropPublishResponse, CreatePublishResponse, DeletedResource, ExperienceResource, ExperienceInteractionInput, ExperienceStatus, HairResource, LocationResourceStatus, SetResource, BackdropResource } from './schemas.js';
19
25
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9E,YAAY,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,qBAAqB,EACrB,qBAAqB,EACrB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EACX,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC9E,YAAY,EACX,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,UAAU,EACV,aAAa,EACb,UAAU,EACV,cAAc,EACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,YAAY,EACX,oBAAoB,EACpB,oBAAoB,EACpB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EACX,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACX,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,SAAS,EACT,qBAAqB,EACrB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1E,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChF,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/E,YAAY,EACX,MAAM,EACN,gBAAgB,EAChB,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,eAAe,EACf,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,4BAA4B,EAC5B,4BAA4B,EAC5B,yBAAyB,EACzB,6BAA6B,EAC7B,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,0BAA0B,EAC1B,gBAAgB,EAChB,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,gBAAgB,EAChB,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export { createPublisher } from './createPublisher.js';
2
+ export { resolveImageSource } from './imageSource.js';
2
3
  export { MAX_UPLOAD_BYTES } from './upload.js';
3
4
  export { LiformaPublisherError, isRetryableError } from './errors.js';
4
5
  export { PERSONA_ETHNICITY_VALUES, PERSONA_GENDER_VALUES } from './schemas.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAiCvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmDvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC"}
@@ -1,7 +1,16 @@
1
1
  import { type PublisherHttp } from './http.js';
2
2
  import type { PublishJob } from './schemas.js';
3
3
  import type { z } from 'zod';
4
+ export type StartedPublishJob = {
5
+ readonly job: PublishJob;
6
+ /** Newly provisioned this call (false when HTTP 200 ready-reuse). */
7
+ readonly created: boolean;
8
+ readonly status: number;
9
+ };
4
10
  export declare function startJobFromEnvelope(http: PublisherHttp, path: string, schema: z.ZodType<{
5
11
  job: PublishJob;
6
12
  }>, body: Record<string, unknown>, signal?: AbortSignal): Promise<PublishJob>;
13
+ export declare function startJobWithOutcome(http: PublisherHttp, path: string, schema: z.ZodType<{
14
+ job: PublishJob;
15
+ }>, body: Record<string, unknown>, signal?: AbortSignal): Promise<StartedPublishJob>;
7
16
  //# sourceMappingURL=publishStart.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishStart.d.ts","sourceRoot":"","sources":["../src/publishStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,EACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CAOrB"}
1
+ {"version":3,"file":"publishStart.d.ts","sourceRoot":"","sources":["../src/publishStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,wBAAsB,oBAAoB,CACzC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,EACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC,CAGrB;AAED,wBAAsB,mBAAmB,CACxC,IAAI,EAAE,aAAa,EACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC;IAAE,GAAG,EAAE,UAAU,CAAA;CAAE,CAAC,EACtC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,iBAAiB,CAAC,CAW5B"}
@@ -1,10 +1,18 @@
1
1
  import { projectPath, publisherRequest } from './http.js';
2
2
  export async function startJobFromEnvelope(http, path, schema, body, signal) {
3
- const { data } = await publisherRequest(http, projectPath(http, path), schema, {
3
+ const started = await startJobWithOutcome(http, path, schema, body, signal);
4
+ return started.job;
5
+ }
6
+ export async function startJobWithOutcome(http, path, schema, body, signal) {
7
+ const { data, status } = await publisherRequest(http, projectPath(http, path), schema, {
4
8
  method: 'POST',
5
9
  body,
6
10
  signal
7
11
  });
8
- return data.job;
12
+ return {
13
+ job: data.job,
14
+ created: status !== 200,
15
+ status
16
+ };
9
17
  }
10
18
  //# sourceMappingURL=publishStart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"publishStart.js","sourceRoot":"","sources":["../src/publishStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAsB,MAAM,WAAW,CAAC;AAI9E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,IAAmB,EACnB,IAAY,EACZ,MAAsC,EACtC,IAA6B,EAC7B,MAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE;QAC9E,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,MAAM;KACN,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,GAAG,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"publishStart.js","sourceRoot":"","sources":["../src/publishStart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAsB,MAAM,WAAW,CAAC;AAW9E,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,IAAmB,EACnB,IAAY,EACZ,MAAsC,EACtC,IAA6B,EAC7B,MAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC,GAAG,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACxC,IAAmB,EACnB,IAAY,EACZ,MAAsC,EACtC,IAA6B,EAC7B,MAAoB;IAEpB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE;QACtF,MAAM,EAAE,MAAM;QACd,IAAI;QACJ,MAAM;KACN,CAAC,CAAC;IACH,OAAO;QACN,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,OAAO,EAAE,MAAM,KAAK,GAAG;QACvB,MAAM;KACN,CAAC;AACH,CAAC"}
@@ -1,8 +1,20 @@
1
1
  import { type PublisherHttp } from '../http.js';
2
2
  import type { RequestOptions } from '../options.js';
3
3
  import { type Avatar } from '../schemas.js';
4
+ export type UpdateAvatarInput = {
5
+ readonly gender?: string | null;
6
+ readonly age?: number | null;
7
+ readonly ethnicity?: string | null;
8
+ readonly species?: string | null;
9
+ readonly style?: string | null;
10
+ readonly country?: string | null;
11
+ readonly outfitTaxonomy?: Record<string, unknown>;
12
+ readonly hairTaxonomy?: Record<string, unknown>;
13
+ };
4
14
  export type AvatarsClient = {
5
15
  list(options?: RequestOptions): Promise<Avatar[]>;
16
+ get(id: string, options?: RequestOptions): Promise<Avatar>;
17
+ update(id: string, patch: UpdateAvatarInput, options?: RequestOptions): Promise<Avatar>;
6
18
  };
7
19
  export declare function createAvatarsClient(http: PublisherHttp): AvatarsClient;
8
20
  //# sourceMappingURL=avatars.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"avatars.d.ts","sourceRoot":"","sources":["../../src/resources/avatars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAA6B,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAClD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CAYtE"}
1
+ {"version":3,"file":"avatars.d.ts","sourceRoot":"","sources":["../../src/resources/avatars.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAGN,KAAK,MAAM,EACX,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC3B,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAClD,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACxF,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,aAAa,CA6CtE"}