zcw-shared 2.26.0 → 2.29.1

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 (171) hide show
  1. package/dist/constants/agentAvatar3d.d.ts +15 -0
  2. package/dist/constants/agentAvatar3d.js +64 -0
  3. package/dist/constants/agentAvatar3d.js.map +1 -0
  4. package/dist/constants/agentAvatar3dModular.d.ts +34 -0
  5. package/dist/constants/agentAvatar3dModular.js +93 -0
  6. package/dist/constants/agentAvatar3dModular.js.map +1 -0
  7. package/dist/constants/agentPresence3dLabels.d.ts +11 -0
  8. package/dist/constants/agentPresence3dLabels.js +12 -0
  9. package/dist/constants/agentPresence3dLabels.js.map +1 -0
  10. package/dist/constants/aiApiRoutes.d.ts +8 -0
  11. package/dist/constants/aiApiRoutes.js +23 -0
  12. package/dist/constants/aiApiRoutes.js.map +1 -0
  13. package/dist/functions/ai/agentAvatar3dArkitMorph.d.ts +14 -0
  14. package/dist/functions/ai/agentAvatar3dArkitMorph.js +149 -0
  15. package/dist/functions/ai/agentAvatar3dArkitMorph.js.map +1 -0
  16. package/dist/functions/ai/agentAvatar3dCapabilities.d.ts +44 -0
  17. package/dist/functions/ai/agentAvatar3dCapabilities.js +121 -0
  18. package/dist/functions/ai/agentAvatar3dCapabilities.js.map +1 -0
  19. package/dist/functions/ai/agentAvatar3dFacePresets.d.ts +13 -0
  20. package/dist/functions/ai/agentAvatar3dFacePresets.js +79 -0
  21. package/dist/functions/ai/agentAvatar3dFacePresets.js.map +1 -0
  22. package/dist/functions/ai/agentAvatar3dMaterialTint.d.ts +7 -0
  23. package/dist/functions/ai/agentAvatar3dMaterialTint.js +45 -0
  24. package/dist/functions/ai/agentAvatar3dMaterialTint.js.map +1 -0
  25. package/dist/functions/ai/agentAvatar3dMorphCatalog.d.ts +18 -0
  26. package/dist/functions/ai/agentAvatar3dMorphCatalog.js +222 -0
  27. package/dist/functions/ai/agentAvatar3dMorphCatalog.js.map +1 -0
  28. package/dist/functions/ai/aiAgentConsumerDto.d.ts +26 -0
  29. package/dist/functions/ai/aiAgentConsumerDto.js +33 -0
  30. package/dist/functions/ai/aiAgentConsumerDto.js.map +1 -0
  31. package/dist/functions/ai/applyAiAgentAvatar3dFace.d.ts +23 -0
  32. package/dist/functions/ai/applyAiAgentAvatar3dFace.js +140 -0
  33. package/dist/functions/ai/applyAiAgentAvatar3dFace.js.map +1 -0
  34. package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.d.ts +3 -0
  35. package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.js +28 -0
  36. package/dist/functions/ai/getEffectiveAvatar3dMorphWeights.js.map +1 -0
  37. package/dist/functions/ai/normalizeAiAgentAvatar3d.d.ts +4 -0
  38. package/dist/functions/ai/normalizeAiAgentAvatar3d.js +57 -0
  39. package/dist/functions/ai/normalizeAiAgentAvatar3d.js.map +1 -0
  40. package/dist/functions/ai/normalizeAiAgentAvatar3dFace.d.ts +4 -0
  41. package/dist/functions/ai/normalizeAiAgentAvatar3dFace.js +84 -0
  42. package/dist/functions/ai/normalizeAiAgentAvatar3dFace.js.map +1 -0
  43. package/dist/functions/ai/normalizeAiAgentAvatar3dModular.d.ts +14 -0
  44. package/dist/functions/ai/normalizeAiAgentAvatar3dModular.js +92 -0
  45. package/dist/functions/ai/normalizeAiAgentAvatar3dModular.js.map +1 -0
  46. package/dist/functions/ai/proceduralHumanoidMorph.d.ts +5 -0
  47. package/dist/functions/ai/proceduralHumanoidMorph.js +9 -0
  48. package/dist/functions/ai/proceduralHumanoidMorph.js.map +1 -0
  49. package/dist/functions/ai/randomizeAgentAvatar3dAppearance.d.ts +9 -0
  50. package/dist/functions/ai/randomizeAgentAvatar3dAppearance.js +108 -0
  51. package/dist/functions/ai/randomizeAgentAvatar3dAppearance.js.map +1 -0
  52. package/dist/functions/ai/randomizeModularAvatar3dAppearance.d.ts +7 -0
  53. package/dist/functions/ai/randomizeModularAvatar3dAppearance.js +60 -0
  54. package/dist/functions/ai/randomizeModularAvatar3dAppearance.js.map +1 -0
  55. package/dist/functions/ai/resolveAvatar3dModular.d.ts +4 -0
  56. package/dist/functions/ai/resolveAvatar3dModular.js +22 -0
  57. package/dist/functions/ai/resolveAvatar3dModular.js.map +1 -0
  58. package/dist/functions/ai/toAiAgentCatalogRow.d.ts +12 -0
  59. package/dist/functions/ai/toAiAgentCatalogRow.js +13 -0
  60. package/dist/functions/ai/toAiAgentCatalogRow.js.map +1 -0
  61. package/dist/functions/ai/toAiAgentTaskRunForConsumer.d.ts +10 -0
  62. package/dist/functions/ai/toAiAgentTaskRunForConsumer.js +12 -0
  63. package/dist/functions/ai/toAiAgentTaskRunForConsumer.js.map +1 -0
  64. package/dist/functions/api/createApiClient.d.ts +1 -6
  65. package/dist/functions/api/createApiClient.js +1 -55
  66. package/dist/functions/api/createApiClient.js.map +1 -1
  67. package/dist/functions/api/createPublicAuthRequest.js +3 -1
  68. package/dist/functions/api/createPublicAuthRequest.js.map +1 -1
  69. package/dist/functions/auth/permissionSatisfies.js +10 -3
  70. package/dist/functions/auth/permissionSatisfies.js.map +1 -1
  71. package/dist/functions/browser/readBrowserHost.d.ts +3 -0
  72. package/dist/functions/browser/readBrowserHost.js +42 -5
  73. package/dist/functions/browser/readBrowserHost.js.map +1 -1
  74. package/dist/functions/browser/readBrowserImageCompressDeps.js +11 -5
  75. package/dist/functions/browser/readBrowserImageCompressDeps.js.map +1 -1
  76. package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js +3 -3
  77. package/dist/functions/browser/readBrowserLassoSelectionEnvironment.js.map +1 -1
  78. package/dist/functions/browser/readBrowserVueHookDeps.js +22 -4
  79. package/dist/functions/browser/readBrowserVueHookDeps.js.map +1 -1
  80. package/dist/functions/chat/chatMorePageConfig.js +8 -0
  81. package/dist/functions/chat/chatMorePageConfig.js.map +1 -1
  82. package/dist/functions/chat/chatShellTabConfig.d.ts +4 -1
  83. package/dist/functions/chat/chatShellTabConfig.js +14 -2
  84. package/dist/functions/chat/chatShellTabConfig.js.map +1 -1
  85. package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js +1 -2
  86. package/dist/functions/chat/createBrowserChatRootFontSizeAccess.js.map +1 -1
  87. package/dist/functions/cloudDisk/buildCloudDiskListTabResult.d.ts +2 -2
  88. package/dist/functions/cloudDisk/extractCloudDiskPrivateFolderData.d.ts +3 -3
  89. package/dist/functions/cloudDisk/extractCloudDiskPrivateFolderData.js.map +1 -1
  90. package/dist/functions/cloudDisk/mapCloudDiskFileToNode.d.ts +2 -2
  91. package/dist/functions/cloudDisk/mapCloudDiskFileToNode.js.map +1 -1
  92. package/dist/functions/cloudDisk/sortCloudDiskNodes.js +4 -4
  93. package/dist/functions/cloudDisk/sortCloudDiskNodes.js.map +1 -1
  94. package/dist/functions/dom/readBrowserDomDeps.js +9 -7
  95. package/dist/functions/dom/readBrowserDomDeps.js.map +1 -1
  96. package/dist/functions/im/forwardBundleItemToChatMessage.js +9 -7
  97. package/dist/functions/im/forwardBundleItemToChatMessage.js.map +1 -1
  98. package/dist/functions/im/imChatMessageCopyPlain.js +2 -2
  99. package/dist/functions/im/imChatMessageCopyPlain.js.map +1 -1
  100. package/dist/functions/im/imComposerToolbar.js +25 -1
  101. package/dist/functions/im/imComposerToolbar.js.map +1 -1
  102. package/dist/functions/im/imForwardBundleTitle.js +2 -2
  103. package/dist/functions/im/imForwardBundleTitle.js.map +1 -1
  104. package/dist/functions/im/imForwardSnapshot.js +2 -2
  105. package/dist/functions/im/imForwardSnapshot.js.map +1 -1
  106. package/dist/functions/im/imMessageNormalize.d.ts +2 -2
  107. package/dist/functions/im/imPlaceholderSnippet.d.ts +1 -1
  108. package/dist/functions/im/imPlaceholderSnippet.js +1 -1
  109. package/dist/functions/im/imPlaceholderSnippet.js.map +1 -1
  110. package/dist/functions/qiankun/bootstrapQiankunDomPatch.d.ts +1 -0
  111. package/dist/functions/qiankun/bootstrapQiankunDomPatch.js +165 -0
  112. package/dist/functions/qiankun/bootstrapQiankunDomPatch.js.map +1 -0
  113. package/dist/functions/qiankun/createQiankunVueApp.d.ts +2 -0
  114. package/dist/functions/qiankun/createQiankunVueApp.js +4 -1
  115. package/dist/functions/qiankun/createQiankunVueApp.js.map +1 -1
  116. package/dist/functions/vue-router/normalizeWebHistoryBase.d.ts +1 -0
  117. package/dist/functions/vue-router/normalizeWebHistoryBase.js +19 -0
  118. package/dist/functions/vue-router/normalizeWebHistoryBase.js.map +1 -0
  119. package/dist/functions/vue-router/pushInAppRoute.d.ts +6 -0
  120. package/dist/functions/vue-router/pushInAppRoute.js +13 -0
  121. package/dist/functions/vue-router/pushInAppRoute.js.map +1 -0
  122. package/dist/permissions/basePermissions.d.ts +4 -0
  123. package/dist/permissions/basePermissions.js +12 -0
  124. package/dist/permissions/basePermissions.js.map +1 -0
  125. package/dist/permissions/catalog.d.ts +3 -0
  126. package/dist/permissions/catalog.js +11 -0
  127. package/dist/permissions/catalog.js.map +1 -1
  128. package/dist/permissions/permissionCatalogForUi.d.ts +2 -0
  129. package/dist/permissions/permissionCatalogForUi.js +12 -0
  130. package/dist/permissions/permissionCatalogForUi.js.map +1 -0
  131. package/dist/schemas/auth.schema.d.ts +11 -358
  132. package/dist/schemas/auth.schema.js +5 -35
  133. package/dist/schemas/auth.schema.js.map +1 -1
  134. package/dist/schemas/video.schema.d.ts +98 -156
  135. package/dist/schemas/video.schema.js +9 -13
  136. package/dist/schemas/video.schema.js.map +1 -1
  137. package/dist/vue-hooks/dom/useLassoSelection.js +4 -3
  138. package/dist/vue-hooks/dom/useLassoSelection.js.map +1 -1
  139. package/package.json +45 -16
  140. package/types/address.d.ts +4 -35
  141. package/types/ai-admin.d.ts +33 -0
  142. package/types/ai-agent.d.ts +43 -0
  143. package/types/ai-chat.d.ts +39 -23
  144. package/types/api-contract-helpers.d.ts +24 -0
  145. package/types/api-contract.d.ts +6 -0
  146. package/types/auth.d.ts +15 -27
  147. package/types/cloud-disk.d.ts +38 -50
  148. package/types/community.d.ts +7 -0
  149. package/types/im-ai-agent.d.ts +2 -1
  150. package/types/im-api.d.ts +12 -8
  151. package/types/im-call.d.ts +4 -3
  152. package/types/im-composer.d.ts +2 -0
  153. package/types/im-remote-assist.d.ts +83 -0
  154. package/types/lowcode.d.ts +10 -47
  155. package/types/music.d.ts +4 -30
  156. package/types/notification.d.ts +4 -34
  157. package/types/openapi.d.ts +25040 -0
  158. package/types/order.d.ts +5 -57
  159. package/types/org.d.ts +13 -0
  160. package/types/oss.d.ts +4 -23
  161. package/types/page-config.d.ts +14 -14
  162. package/types/payment.d.ts +10 -20
  163. package/types/performance.d.ts +4 -11
  164. package/types/product.d.ts +5 -37
  165. package/types/rbac.d.ts +11 -32
  166. package/types/recharge.d.ts +11 -0
  167. package/types/report.d.ts +7 -25
  168. package/types/review.d.ts +11 -13
  169. package/types/sticker-pack.d.ts +10 -25
  170. package/types/user.d.ts +11 -33
  171. package/types/video.d.ts +15 -66
@@ -0,0 +1,28 @@
1
+ import { AVATAR3D_LEGACY_FACE_TO_CATALOG, createEmptyAvatar3dMorphWeights, listAvatar3dMorphCatalogIds, } from './agentAvatar3dMorphCatalog.js';
2
+ export function mergeLegacyFaceFieldsToMorphWeights(face) {
3
+ const base = { ...(face.morphWeights ?? {}) };
4
+ for (const [legacyKey, catalogId] of Object.entries(AVATAR3D_LEGACY_FACE_TO_CATALOG)) {
5
+ const v = face[legacyKey];
6
+ if (typeof v !== 'number' || !Number.isFinite(v))
7
+ continue;
8
+ if (base[catalogId] === undefined || base[catalogId] === 0) {
9
+ base[catalogId] = Math.max(-1, Math.min(1, v));
10
+ }
11
+ }
12
+ return base;
13
+ }
14
+ export function getEffectiveAvatar3dMorphWeights(face) {
15
+ const empty = createEmptyAvatar3dMorphWeights();
16
+ if (!face)
17
+ return empty;
18
+ const merged = mergeLegacyFaceFieldsToMorphWeights(face);
19
+ const out = { ...empty };
20
+ for (const id of listAvatar3dMorphCatalogIds()) {
21
+ const v = merged[id];
22
+ if (v !== undefined && Number.isFinite(v)) {
23
+ out[id] = Math.max(-1, Math.min(1, v));
24
+ }
25
+ }
26
+ return out;
27
+ }
28
+ //# sourceMappingURL=getEffectiveAvatar3dMorphWeights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEffectiveAvatar3dMorphWeights.js","sourceRoot":"","sources":["../../../src/functions/ai/getEffectiveAvatar3dMorphWeights.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AAGpC,MAAM,UAAU,mCAAmC,CACjD,IAAyB;IAEzB,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,EAAE,CAAA;IAC7C,KAAK,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACrF,MAAM,CAAC,GAAI,IAAgC,CAAC,SAAS,CAAC,CAAA;QACtD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,SAAQ;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAGD,MAAM,UAAU,gCAAgC,CAC9C,IAAiC;IAEjC,MAAM,KAAK,GAAG,+BAA+B,EAAE,CAAA;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAA;IACvB,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAA;IACxB,KAAK,MAAM,EAAE,IAAI,2BAA2B,EAAE,EAAE,CAAC;QAC/C,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;QACpB,IAAI,CAAC,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1C,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AiAgentAvatar3d } from '../../../types/ai-agent';
2
+ export declare function normalizeAiAgentAvatar3d(raw: unknown): AiAgentAvatar3d;
3
+ export declare function isEmptyAiAgentAvatar3d(cfg: AiAgentAvatar3d): boolean;
4
+ export declare function finalizeAiAgentAvatar3dForStorage(cfg: AiAgentAvatar3d): AiAgentAvatar3d;
@@ -0,0 +1,57 @@
1
+ import { AVATAR3D_BUILTIN_HUMANOID } from './proceduralHumanoidMorph.js';
2
+ import { normalizeAiAgentAvatar3dFace } from './normalizeAiAgentAvatar3dFace.js';
3
+ import { normalizeAiAgentAvatar3dModular } from './normalizeAiAgentAvatar3dModular.js';
4
+ import { modularAvatar3dBaseStoragePath } from './normalizeAiAgentAvatar3dModular.js';
5
+ import { DEFAULT_AGENT_AVATAR_3D_MODEL_PATH } from '../../constants/agentAvatar3d.js';
6
+ const MAX_SCALE = 20;
7
+ const MIN_SCALE = 0.05;
8
+ export function normalizeAiAgentAvatar3d(raw) {
9
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
10
+ return {};
11
+ const o = raw;
12
+ const modelUrl = String(o.modelUrl ?? o.model_url ?? '').trim();
13
+ const builtinRaw = String(o.builtin ?? '').trim();
14
+ const builtin = builtinRaw === AVATAR3D_BUILTIN_HUMANOID ? AVATAR3D_BUILTIN_HUMANOID : undefined;
15
+ const modular = normalizeAiAgentAvatar3dModular(o.modular);
16
+ if (!modelUrl && !builtin && !modular)
17
+ return {};
18
+ const scaleRaw = Number(o.scale);
19
+ const scale = Number.isFinite(scaleRaw) && scaleRaw > 0
20
+ ? Math.min(MAX_SCALE, Math.max(MIN_SCALE, scaleRaw))
21
+ : 1;
22
+ const rotRaw = Number(o.rotationY ?? o.rotation_y);
23
+ const rotationY = Number.isFinite(rotRaw) ? rotRaw : 0;
24
+ const formatRaw = String(o.format ?? 'glb').trim().toLowerCase();
25
+ const format = formatRaw === 'fbx' || formatRaw === 'gltf' ? formatRaw : 'glb';
26
+ const face = normalizeAiAgentAvatar3dFace(o.face);
27
+ const effectiveModelUrl = modelUrl ||
28
+ (modular ? modularAvatar3dBaseStoragePath(modular) : undefined) ||
29
+ DEFAULT_AGENT_AVATAR_3D_MODEL_PATH;
30
+ return {
31
+ ...(modular ? { modular } : {}),
32
+ ...(builtin ? { builtin } : {}),
33
+ ...(effectiveModelUrl ? { modelUrl: effectiveModelUrl, format } : {}),
34
+ scale,
35
+ rotationY,
36
+ ...(face ? { face } : {}),
37
+ };
38
+ }
39
+ export function isEmptyAiAgentAvatar3d(cfg) {
40
+ return (!String(cfg.modelUrl ?? '').trim() &&
41
+ !cfg.builtin &&
42
+ !cfg.modular);
43
+ }
44
+ export function finalizeAiAgentAvatar3dForStorage(cfg) {
45
+ const modular = cfg.modular
46
+ ? normalizeAiAgentAvatar3dModular(cfg.modular)
47
+ : undefined;
48
+ if (!modular)
49
+ return cfg;
50
+ const basePath = modularAvatar3dBaseStoragePath(modular);
51
+ return {
52
+ ...cfg,
53
+ modular,
54
+ ...(basePath ? { modelUrl: basePath } : {}),
55
+ };
56
+ }
57
+ //# sourceMappingURL=normalizeAiAgentAvatar3d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAiAgentAvatar3d.js","sourceRoot":"","sources":["../../../src/functions/ai/normalizeAiAgentAvatar3d.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { AiAgentAvatar3dFace } from '../../../types/ai-agent';
2
+ export declare const DEFAULT_AVATAR3D_FACE: AiAgentAvatar3dFace;
3
+ export declare function normalizeAiAgentAvatar3dFace(raw: unknown): AiAgentAvatar3dFace | undefined;
4
+ export declare function mergeAvatar3dFaceWithDefaults(face?: AiAgentAvatar3dFace | null): AiAgentAvatar3dFace;
@@ -0,0 +1,84 @@
1
+ const HEX6 = /^#[0-9a-f]{6}$/i;
2
+ export const DEFAULT_AVATAR3D_FACE = {
3
+ skinColor: '#ffdbac',
4
+ hairColor: '#3d2314',
5
+ eyeColor: '#4a6741',
6
+ faceWidth: 0,
7
+ faceRound: 0,
8
+ eyeSize: 0,
9
+ noseSize: 0,
10
+ mouthSize: 0,
11
+ };
12
+ function normalizeHexColor(raw) {
13
+ const s = String(raw ?? '').trim();
14
+ if (HEX6.test(s))
15
+ return s.toLowerCase();
16
+ if (/^[0-9a-f]{6}$/i.test(s))
17
+ return `#${s.toLowerCase()}`;
18
+ return undefined;
19
+ }
20
+ function clampMorph(raw) {
21
+ const n = Number(raw);
22
+ if (!Number.isFinite(n))
23
+ return undefined;
24
+ return Math.max(-1, Math.min(1, n));
25
+ }
26
+ import { listAvatar3dMorphCatalogIds, } from './agentAvatar3dMorphCatalog.js';
27
+ function normalizeMorphWeights(raw) {
28
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
29
+ return undefined;
30
+ const allowed = new Set(listAvatar3dMorphCatalogIds());
31
+ const out = {};
32
+ for (const [k, v] of Object.entries(raw)) {
33
+ const key = String(k).trim();
34
+ if (!key || !allowed.has(key))
35
+ continue;
36
+ const w = clampMorph(v);
37
+ if (w === undefined || w === 0)
38
+ continue;
39
+ out[key] = w;
40
+ }
41
+ return Object.keys(out).length > 0 ? out : undefined;
42
+ }
43
+ export function normalizeAiAgentAvatar3dFace(raw) {
44
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
45
+ return undefined;
46
+ const o = raw;
47
+ const face = {};
48
+ const skin = normalizeHexColor(o.skinColor ?? o.skin_color);
49
+ if (skin)
50
+ face.skinColor = skin;
51
+ const hair = normalizeHexColor(o.hairColor ?? o.hair_color);
52
+ if (hair)
53
+ face.hairColor = hair;
54
+ const eye = normalizeHexColor(o.eyeColor ?? o.eye_color);
55
+ if (eye)
56
+ face.eyeColor = eye;
57
+ const faceWidth = clampMorph(o.faceWidth ?? o.face_width);
58
+ if (faceWidth !== undefined)
59
+ face.faceWidth = faceWidth;
60
+ const faceRound = clampMorph(o.faceRound ?? o.face_round);
61
+ if (faceRound !== undefined)
62
+ face.faceRound = faceRound;
63
+ const eyeSize = clampMorph(o.eyeSize ?? o.eye_size);
64
+ if (eyeSize !== undefined)
65
+ face.eyeSize = eyeSize;
66
+ const noseSize = clampMorph(o.noseSize ?? o.nose_size);
67
+ if (noseSize !== undefined)
68
+ face.noseSize = noseSize;
69
+ const mouthSize = clampMorph(o.mouthSize ?? o.mouth_size);
70
+ if (mouthSize !== undefined)
71
+ face.mouthSize = mouthSize;
72
+ const morphWeights = normalizeMorphWeights(o.morphWeights ?? o.morph_weights);
73
+ if (morphWeights)
74
+ face.morphWeights = morphWeights;
75
+ return Object.keys(face).length > 0 ? face : undefined;
76
+ }
77
+ export function mergeAvatar3dFaceWithDefaults(face) {
78
+ return {
79
+ ...DEFAULT_AVATAR3D_FACE,
80
+ ...(face ?? {}),
81
+ morphWeights: { ...(face?.morphWeights ?? {}) },
82
+ };
83
+ }
84
+ //# sourceMappingURL=normalizeAiAgentAvatar3dFace.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAiAgentAvatar3dFace.js","sourceRoot":"","sources":["../../../src/functions/ai/normalizeAiAgentAvatar3dFace.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { AiAgentAvatar3dModular, AiAgentAvatar3dModularSlots } from '../../../types/ai-agent';
2
+ import { type Avatar3dModularAttachMode, type Avatar3dModularSlotId } from '../../constants/agentAvatar3dModular';
3
+ export declare function createEmptyAvatar3dModularSlots(): AiAgentAvatar3dModularSlots;
4
+ export declare function normalizeAiAgentAvatar3dModularSlots(raw: unknown): AiAgentAvatar3dModularSlots;
5
+ export declare function normalizeAiAgentAvatar3dModular(raw: unknown): AiAgentAvatar3dModular | undefined;
6
+ export interface ResolvedAvatar3dModularLayer {
7
+ slot: Avatar3dModularSlotId | 'base';
8
+ partId: string;
9
+ storagePath: string;
10
+ attachMode: Avatar3dModularAttachMode | 'base';
11
+ hideBaseMeshHints?: string[];
12
+ }
13
+ export declare function resolveModularAvatar3dLayers(modular: AiAgentAvatar3dModular): ResolvedAvatar3dModularLayer[];
14
+ export declare function modularAvatar3dBaseStoragePath(modular: AiAgentAvatar3dModular): string | undefined;
@@ -0,0 +1,92 @@
1
+ import { AVATAR3D_MODULAR_SLOT_ORDER, AVATAR3D_MODULAR_SYSTEM_VERSION, AVATAR3D_STANDARD_SKELETON_PROFILE, DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID, getAvatar3dModularBasePartById, getAvatar3dModularSlotPartById, normalizeModularBasePartId, } from '../../constants/agentAvatar3dModular.js';
2
+ const SLOT_KEYS = [
3
+ 'hair',
4
+ 'top',
5
+ 'bottom',
6
+ 'shoes',
7
+ 'gloves',
8
+ 'headwear',
9
+ 'faceAccessory',
10
+ ];
11
+ function cleanPartId(raw) {
12
+ const id = String(raw ?? '').trim();
13
+ return id.length > 0 ? id : undefined;
14
+ }
15
+ export function createEmptyAvatar3dModularSlots() {
16
+ return {};
17
+ }
18
+ export function normalizeAiAgentAvatar3dModularSlots(raw) {
19
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {
20
+ return createEmptyAvatar3dModularSlots();
21
+ }
22
+ const o = raw;
23
+ const slots = {};
24
+ for (const key of SLOT_KEYS) {
25
+ const id = cleanPartId(o[key]);
26
+ if (id)
27
+ slots[key] = id;
28
+ }
29
+ return slots;
30
+ }
31
+ export function normalizeAiAgentAvatar3dModular(raw) {
32
+ if (!raw || typeof raw !== 'object' || Array.isArray(raw))
33
+ return undefined;
34
+ const o = raw;
35
+ const version = String(o.version ?? '').trim();
36
+ if (version !== AVATAR3D_MODULAR_SYSTEM_VERSION)
37
+ return undefined;
38
+ const rawBasePartId = cleanPartId(o.basePartId ?? o.base_part_id) ??
39
+ DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID;
40
+ const basePartId = normalizeModularBasePartId(rawBasePartId);
41
+ const baseMeta = getAvatar3dModularBasePartById(basePartId);
42
+ const slots = normalizeAiAgentAvatar3dModularSlots(o.slots);
43
+ const validatedSlots = {};
44
+ for (const [key, partId] of Object.entries(slots)) {
45
+ const meta = getAvatar3dModularSlotPartById(partId);
46
+ if (!meta)
47
+ continue;
48
+ validatedSlots[key] = partId;
49
+ }
50
+ return {
51
+ version: AVATAR3D_MODULAR_SYSTEM_VERSION,
52
+ basePartId: baseMeta ? basePartId : DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID,
53
+ skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
54
+ slots: validatedSlots,
55
+ };
56
+ }
57
+ export function resolveModularAvatar3dLayers(modular) {
58
+ const basePartId = normalizeModularBasePartId(modular.basePartId);
59
+ const base = getAvatar3dModularBasePartById(basePartId);
60
+ if (!base)
61
+ return [];
62
+ const layers = [
63
+ {
64
+ slot: 'base',
65
+ partId: base.id,
66
+ storagePath: base.storagePath,
67
+ attachMode: 'base',
68
+ },
69
+ ];
70
+ for (const slotId of AVATAR3D_MODULAR_SLOT_ORDER) {
71
+ const slotKey = slotId;
72
+ const partId = modular.slots[slotKey];
73
+ if (!partId)
74
+ continue;
75
+ const meta = getAvatar3dModularSlotPartById(partId);
76
+ if (!meta || meta.slot !== slotId)
77
+ continue;
78
+ layers.push({
79
+ slot: slotId,
80
+ partId: meta.id,
81
+ storagePath: meta.storagePath,
82
+ attachMode: meta.attachMode,
83
+ hideBaseMeshHints: meta.hideBaseMeshHints,
84
+ });
85
+ }
86
+ return layers;
87
+ }
88
+ export function modularAvatar3dBaseStoragePath(modular) {
89
+ const base = getAvatar3dModularBasePartById(normalizeModularBasePartId(modular.basePartId));
90
+ return base?.storagePath;
91
+ }
92
+ //# sourceMappingURL=normalizeAiAgentAvatar3dModular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeAiAgentAvatar3dModular.js","sourceRoot":"","sources":["../../../src/functions/ai/normalizeAiAgentAvatar3dModular.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AiAgentAvatar3dFace } from '../../../types/ai-agent';
2
+ export declare const AVATAR3D_BUILTIN_HUMANOID: "humanoid_v1";
3
+ export type Avatar3dBuiltinId = typeof AVATAR3D_BUILTIN_HUMANOID;
4
+ export declare function proceduralHumanoidMorphFactors(face?: AiAgentAvatar3dFace | null): Record<string, number>;
5
+ export declare function morphToScaleFactor(v: number, span?: number): number;
@@ -0,0 +1,9 @@
1
+ import { getEffectiveAvatar3dMorphWeights } from './getEffectiveAvatar3dMorphWeights.js';
2
+ export const AVATAR3D_BUILTIN_HUMANOID = 'humanoid_v1';
3
+ export function proceduralHumanoidMorphFactors(face) {
4
+ return getEffectiveAvatar3dMorphWeights(face);
5
+ }
6
+ export function morphToScaleFactor(v, span = 0.25) {
7
+ return 1 + v * span;
8
+ }
9
+ //# sourceMappingURL=proceduralHumanoidMorph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proceduralHumanoidMorph.js","sourceRoot":"","sources":["../../../src/functions/ai/proceduralHumanoidMorph.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAGrF,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAsB,CAAA;AAK/D,MAAM,UAAU,8BAA8B,CAC5C,IAAiC;IAEjC,OAAO,gCAAgC,CAAC,IAAI,CAAC,CAAA;AAC/C,CAAC;AAGD,MAAM,UAAU,kBAAkB,CAAC,CAAS,EAAE,IAAI,GAAG,IAAI;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;AACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { AiAgentAvatar3dFace } from '../../../types/ai-agent';
2
+ export interface RandomizedAgentAvatar3dAppearance {
3
+ modelUrl: string;
4
+ outfitModelUrl?: string;
5
+ accessoryModelUrl?: string;
6
+ face: AiAgentAvatar3dFace;
7
+ summary: string;
8
+ }
9
+ export declare function randomizeAgentAvatar3dAppearance(): RandomizedAgentAvatar3dAppearance;
@@ -0,0 +1,108 @@
1
+ import { BUILTIN_AGENT_AVATAR_3D_MODELS, getBuiltinAgentAvatar3dModelById, isRecommendedBuiltinAgentAvatar3dModel, } from '../../constants/agentAvatar3d.js';
2
+ import { AGENT_AVATAR3D_FACE_PRESETS } from './agentAvatar3dFacePresets.js';
3
+ import { createRandomAvatar3dMorphWeights, } from './agentAvatar3dMorphCatalog.js';
4
+ import { applyAvatar3dFacePreset } from './agentAvatar3dFacePresets.js';
5
+ import { mergeAvatar3dFaceWithDefaults } from './normalizeAiAgentAvatar3dFace.js';
6
+ function pick(items) {
7
+ return items[Math.floor(Math.random() * items.length)];
8
+ }
9
+ function maybe(probability) {
10
+ return Math.random() < probability;
11
+ }
12
+ function storagePathForId(id) {
13
+ return getBuiltinAgentAvatar3dModelById(id)?.storagePath;
14
+ }
15
+ function recommendedIds(category) {
16
+ return BUILTIN_AGENT_AVATAR_3D_MODELS
17
+ .filter((m) => m.category === category && isRecommendedBuiltinAgentAvatar3dModel(m))
18
+ .map((m) => m.id);
19
+ }
20
+ function labelForId(id) {
21
+ return getBuiltinAgentAvatar3dModelById(id)?.label ?? id;
22
+ }
23
+ function randomFaceForMorphCapableBase() {
24
+ if (maybe(0.45) && AGENT_AVATAR3D_FACE_PRESETS.length > 0) {
25
+ const preset = pick(AGENT_AVATAR3D_FACE_PRESETS);
26
+ const applied = applyAvatar3dFacePreset(preset.id);
27
+ return mergeAvatar3dFaceWithDefaults({
28
+ morphWeights: applied.morphWeights,
29
+ skinColor: applied.skinColor,
30
+ hairColor: applied.hairColor,
31
+ eyeColor: applied.eyeColor,
32
+ });
33
+ }
34
+ return mergeAvatar3dFaceWithDefaults({
35
+ morphWeights: createRandomAvatar3dMorphWeights(),
36
+ });
37
+ }
38
+ export function randomizeAgentAvatar3dAppearance() {
39
+ const kaykitIds = recommendedIds('character').filter((id) => id.startsWith('kaykit_'));
40
+ const layeredBaseIds = ['half_body', 'half_body', 'half_body', 'rpm_sample'];
41
+ const outfitIds = BUILTIN_AGENT_AVATAR_3D_MODELS
42
+ .filter((m) => m.category === 'outfit')
43
+ .map((m) => m.id);
44
+ const accessoryIds = BUILTIN_AGENT_AVATAR_3D_MODELS
45
+ .filter((m) => m.category === 'accessory')
46
+ .map((m) => m.id);
47
+ if (kaykitIds.length > 0 && maybe(0.35)) {
48
+ const kaykitId = pick(kaykitIds);
49
+ const path = storagePathForId(kaykitId);
50
+ if (!path)
51
+ return randomizeAgentAvatar3dAppearance();
52
+ return {
53
+ modelUrl: path,
54
+ face: mergeAvatar3dFaceWithDefaults({ morphWeights: {} }),
55
+ summary: `整套造型:${labelForId(kaykitId)}`,
56
+ };
57
+ }
58
+ const baseId = pick(layeredBaseIds);
59
+ const basePath = storagePathForId(baseId);
60
+ if (!basePath) {
61
+ const fallback = storagePathForId('half_body');
62
+ if (!fallback) {
63
+ return {
64
+ modelUrl: '/models/agent-avatar-half-body.glb',
65
+ face: randomFaceForMorphCapableBase(),
66
+ summary: '默认半身 + 随机捏脸',
67
+ };
68
+ }
69
+ return {
70
+ modelUrl: fallback,
71
+ face: randomFaceForMorphCapableBase(),
72
+ summary: '真实半身 + 随机捏脸',
73
+ };
74
+ }
75
+ let outfitModelUrl;
76
+ let accessoryModelUrl;
77
+ const parts = [labelForId(baseId)];
78
+ const face = baseId === 'half_body' || baseId === 'rpm_sample'
79
+ ? randomFaceForMorphCapableBase()
80
+ : mergeAvatar3dFaceWithDefaults({ morphWeights: {} });
81
+ if (baseId === 'half_body' && outfitIds.length > 0 && maybe(0.3)) {
82
+ const outfitId = pick(outfitIds);
83
+ const outfitPath = storagePathForId(outfitId);
84
+ if (outfitPath) {
85
+ outfitModelUrl = outfitPath;
86
+ parts.push(`服饰层 ${labelForId(outfitId)}`);
87
+ }
88
+ }
89
+ if (accessoryIds.length > 0 && maybe(0.55)) {
90
+ const accessoryId = pick(accessoryIds);
91
+ const accessoryPath = storagePathForId(accessoryId);
92
+ if (accessoryPath) {
93
+ accessoryModelUrl = accessoryPath;
94
+ parts.push(`配饰 ${labelForId(accessoryId)}`);
95
+ }
96
+ }
97
+ if (baseId === 'half_body') {
98
+ parts.push('随机捏脸');
99
+ }
100
+ return {
101
+ modelUrl: basePath,
102
+ ...(outfitModelUrl ? { outfitModelUrl } : {}),
103
+ ...(accessoryModelUrl ? { accessoryModelUrl } : {}),
104
+ face,
105
+ summary: parts.join(' · '),
106
+ };
107
+ }
108
+ //# sourceMappingURL=randomizeAgentAvatar3dAppearance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randomizeAgentAvatar3dAppearance.js","sourceRoot":"","sources":["../../../src/functions/ai/randomizeAgentAvatar3dAppearance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AiAgentAvatar3dModular, AiAgentAvatar3dFace } from '../../../types/ai-agent';
2
+ export interface RandomizedModularAvatar3dAppearance {
3
+ modular: AiAgentAvatar3dModular;
4
+ face: AiAgentAvatar3dFace;
5
+ summary: string;
6
+ }
7
+ export declare function randomizeModularAvatar3dAppearance(): RandomizedModularAvatar3dAppearance;
@@ -0,0 +1,60 @@
1
+ import { AVATAR3D_MODULAR_SLOT_ORDER, DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID, getAvatar3dModularBasePartById, listAvatar3dModularSlotPartsForProfile, AVATAR3D_STANDARD_SKELETON_PROFILE, } from '../../constants/agentAvatar3dModular.js';
2
+ import { AGENT_PRESENCE_3D_LABELS } from '../../constants/agentPresence3dLabels.js';
3
+ import { AGENT_AVATAR3D_FACE_PRESETS } from './agentAvatar3dFacePresets.js';
4
+ import { createRandomAvatar3dMorphWeights } from './agentAvatar3dMorphCatalog.js';
5
+ import { applyAvatar3dFacePreset } from './agentAvatar3dFacePresets.js';
6
+ import { mergeAvatar3dFaceWithDefaults } from './normalizeAiAgentAvatar3dFace.js';
7
+ import { normalizeAiAgentAvatar3dModular } from './normalizeAiAgentAvatar3dModular.js';
8
+ function pick(items) {
9
+ return items[Math.floor(Math.random() * items.length)];
10
+ }
11
+ function maybe(probability) {
12
+ return Math.random() < probability;
13
+ }
14
+ function randomFace() {
15
+ if (maybe(0.45) && AGENT_AVATAR3D_FACE_PRESETS.length > 0) {
16
+ const preset = pick(AGENT_AVATAR3D_FACE_PRESETS);
17
+ const applied = applyAvatar3dFacePreset(preset.id);
18
+ return mergeAvatar3dFaceWithDefaults({
19
+ morphWeights: applied.morphWeights,
20
+ skinColor: applied.skinColor,
21
+ hairColor: applied.hairColor,
22
+ eyeColor: applied.eyeColor,
23
+ });
24
+ }
25
+ return mergeAvatar3dFaceWithDefaults({
26
+ morphWeights: createRandomAvatar3dMorphWeights(),
27
+ });
28
+ }
29
+ function slotKeyForId(slotId) {
30
+ return slotId;
31
+ }
32
+ export function randomizeModularAvatar3dAppearance() {
33
+ const basePartId = DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID;
34
+ const baseMeta = getAvatar3dModularBasePartById(basePartId);
35
+ const slots = {};
36
+ const parts = [baseMeta.label];
37
+ for (const slotId of AVATAR3D_MODULAR_SLOT_ORDER) {
38
+ const pool = listAvatar3dModularSlotPartsForProfile(AVATAR3D_STANDARD_SKELETON_PROFILE, slotId);
39
+ if (pool.length === 0)
40
+ continue;
41
+ if (!maybe(0.4))
42
+ continue;
43
+ const part = pick(pool);
44
+ slots[slotKeyForId(slotId)] = part.id;
45
+ parts.push(part.label);
46
+ }
47
+ parts.push(AGENT_PRESENCE_3D_LABELS.randomFaceSummary);
48
+ const modular = normalizeAiAgentAvatar3dModular({
49
+ version: 'v1',
50
+ basePartId,
51
+ skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
52
+ slots,
53
+ });
54
+ return {
55
+ modular,
56
+ face: randomFace(),
57
+ summary: parts.join(' · '),
58
+ };
59
+ }
60
+ //# sourceMappingURL=randomizeModularAvatar3dAppearance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"randomizeModularAvatar3dAppearance.js","sourceRoot":"","sources":["../../../src/functions/ai/randomizeModularAvatar3dAppearance.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAC3B,qCAAqC,EACrC,8BAA8B,EAC9B,sCAAsC,EACtC,kCAAkC,GAEnC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAMhF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAA;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,gCAAgC,CAAA;AAC9E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAA;AAQnF,SAAS,IAAI,CAAI,KAAU;IACzB,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,SAAS,KAAK,CAAC,WAAmB;IAChC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAA;AACpC,CAAC;AAED,SAAS,UAAU;IACjB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAChD,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAClD,OAAO,6BAA6B,CAAC;YACnC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;SAC3B,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,6BAA6B,CAAC;QACnC,YAAY,EAAE,gCAAgC,EAAE;KACjD,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAA6B;IACjD,OAAO,MAAM,CAAA;AACf,CAAC;AAGD,MAAM,UAAU,kCAAkC;IAChD,MAAM,UAAU,GAAG,qCAAqC,CAAA;IACxD,MAAM,QAAQ,GAAG,8BAA8B,CAAC,UAAU,CAAE,CAAA;IAC5D,MAAM,KAAK,GAAgC,EAAE,CAAA;IAC7C,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAExC,KAAK,MAAM,MAAM,IAAI,2BAA2B,EAAE,CAAC;QACjD,MAAM,IAAI,GAAG,sCAAsC,CACjD,kCAAkC,EAClC,MAAM,CACP,CAAA;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YAAE,SAAQ;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;QACvB,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAA;QACrC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,iBAAiB,CAAC,CAAA;IAEtD,MAAM,OAAO,GAAG,+BAA+B,CAAC;QAC9C,OAAO,EAAE,IAAI;QACb,UAAU;QACV,eAAe,EAAE,kCAAkC;QACnD,KAAK;KACN,CAAE,CAAA;IAEH,OAAO;QACL,OAAO;QACP,IAAI,EAAE,UAAU,EAAE;QAClB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;KAC3B,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { AiAgentAvatar3d, AiAgentAvatar3dModular } from '../../../types/ai-agent';
2
+ import { type ResolvedAvatar3dModularLayer } from './normalizeAiAgentAvatar3dModular';
3
+ export declare function ensureAvatar3dModular(cfg: AiAgentAvatar3d): AiAgentAvatar3dModular | undefined;
4
+ export declare function resolveAvatar3dModularLayersFromConfig(cfg: AiAgentAvatar3d): ResolvedAvatar3dModularLayer[];
@@ -0,0 +1,22 @@
1
+ import { DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID, AVATAR3D_STANDARD_SKELETON_PROFILE, } from '../../constants/agentAvatar3dModular.js';
2
+ import { normalizeAiAgentAvatar3dModular, resolveModularAvatar3dLayers, } from './normalizeAiAgentAvatar3dModular.js';
3
+ export function ensureAvatar3dModular(cfg) {
4
+ if (cfg.modular)
5
+ return normalizeAiAgentAvatar3dModular(cfg.modular);
6
+ const modelUrl = String(cfg.modelUrl ?? '').trim();
7
+ if (!modelUrl && !cfg.builtin)
8
+ return undefined;
9
+ return normalizeAiAgentAvatar3dModular({
10
+ version: 'v1',
11
+ basePartId: DEFAULT_AVATAR3D_MODULAR_BASE_PART_ID,
12
+ skeletonProfile: AVATAR3D_STANDARD_SKELETON_PROFILE,
13
+ slots: {},
14
+ });
15
+ }
16
+ export function resolveAvatar3dModularLayersFromConfig(cfg) {
17
+ const modular = ensureAvatar3dModular(cfg);
18
+ if (!modular)
19
+ return [];
20
+ return resolveModularAvatar3dLayers(modular);
21
+ }
22
+ //# sourceMappingURL=resolveAvatar3dModular.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveAvatar3dModular.js","sourceRoot":"","sources":["../../../src/functions/ai/resolveAvatar3dModular.ts"],"names":[],"mappings":"AACA,OAAO,EACL,qCAAqC,EACrC,kCAAkC,GACnC,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,+BAA+B,EAE/B,4BAA4B,GAC7B,MAAM,mCAAmC,CAAA;AAE1C,MAAM,UAAU,qBAAqB,CACnC,GAAoB;IAEpB,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IAEpE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAClD,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAE/C,OAAO,+BAA+B,CAAC;QACrC,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,qCAAqC;QACjD,eAAe,EAAE,kCAAkC;QACnD,KAAK,EAAE,EAAE;KACV,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,sCAAsC,CACpD,GAAoB;IAEpB,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC1C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAA;IACvB,OAAO,4BAA4B,CAAC,OAAO,CAAC,CAAA;AAC9C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ImAiAgentCatalogRow } from '../../../types/im-ai-agent';
2
+ export type AiAgentRowForCatalog = {
3
+ id: string;
4
+ user_id: string;
5
+ display_name?: string | null;
6
+ bio?: string | null;
7
+ avatar_url?: string | null;
8
+ account_kind?: string | null;
9
+ enabled?: boolean | null;
10
+ attachment_payload_format?: string | null;
11
+ };
12
+ export declare function toAiAgentCatalogRow(row: AiAgentRowForCatalog): ImAiAgentCatalogRow;
@@ -0,0 +1,13 @@
1
+ export function toAiAgentCatalogRow(row) {
2
+ return {
3
+ id: row.id,
4
+ user_id: row.user_id,
5
+ display_name: row.display_name ?? '',
6
+ bio: row.bio ?? '',
7
+ avatar_url: row.avatar_url ?? '',
8
+ account_kind: row.account_kind ?? 'ai_agent',
9
+ enabled: row.enabled ?? false,
10
+ attachment_payload_format: row.attachment_payload_format ?? undefined,
11
+ };
12
+ }
13
+ //# sourceMappingURL=toAiAgentCatalogRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toAiAgentCatalogRow.js","sourceRoot":"","sources":["../../../src/functions/ai/toAiAgentCatalogRow.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,mBAAmB,CACjC,GAAyB;IAEzB,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,EAAE;QACpC,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE;QAClB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,EAAE;QAChC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,UAAU;QAC5C,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,KAAK;QAC7B,yBAAyB,EAAE,GAAG,CAAC,yBAAyB,IAAI,SAAS;KACtE,CAAA;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type AiAgentTaskRunRowLike = {
2
+ id: string;
3
+ agent_id: string;
4
+ fsm_state: string;
5
+ terminal_status: string | null;
6
+ started_at: string;
7
+ ended_at: string | null;
8
+ reply_preview: string | null;
9
+ };
10
+ export declare function toAiAgentTaskRunForConsumer(row: AiAgentTaskRunRowLike): AiAgentTaskRunRowLike;
@@ -0,0 +1,12 @@
1
+ export function toAiAgentTaskRunForConsumer(row) {
2
+ return {
3
+ id: row.id,
4
+ agent_id: row.agent_id,
5
+ fsm_state: row.fsm_state,
6
+ terminal_status: row.terminal_status,
7
+ started_at: row.started_at,
8
+ ended_at: row.ended_at,
9
+ reply_preview: row.reply_preview,
10
+ };
11
+ }
12
+ //# sourceMappingURL=toAiAgentTaskRunForConsumer.js.map