@oxy.so/bloom 7.1.0 → 7.1.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 (43) hide show
  1. package/assets/character-runtime/managed-avatar.mjs +258 -0
  2. package/assets/character-runtime/render-budget.mjs +144 -0
  3. package/assets/character-runtime/runtime.mjs +49 -18
  4. package/docs/adoption-matrix.mdx +1 -1
  5. package/docs/agent-avatar.mdx +11 -2
  6. package/lib/commonjs/agent-avatar/AgentAvatarProvider.js +8 -3
  7. package/lib/commonjs/agent-avatar/AgentAvatarProvider.js.map +1 -1
  8. package/lib/commonjs/agent-avatar/CharacterAvatar.js +3 -2
  9. package/lib/commonjs/agent-avatar/CharacterAvatar.js.map +1 -1
  10. package/lib/commonjs/agent-avatar/context.js +4 -1
  11. package/lib/commonjs/agent-avatar/context.js.map +1 -1
  12. package/lib/commonjs/agent-creator/AgentCreatorBase.js +7 -5
  13. package/lib/commonjs/agent-creator/AgentCreatorBase.js.map +1 -1
  14. package/lib/commonjs/agent-creator/CharacterControls.js +4 -2
  15. package/lib/commonjs/agent-creator/CharacterControls.js.map +1 -1
  16. package/lib/module/agent-avatar/AgentAvatarProvider.js +9 -4
  17. package/lib/module/agent-avatar/AgentAvatarProvider.js.map +1 -1
  18. package/lib/module/agent-avatar/CharacterAvatar.js +3 -2
  19. package/lib/module/agent-avatar/CharacterAvatar.js.map +1 -1
  20. package/lib/module/agent-avatar/context.js +3 -0
  21. package/lib/module/agent-avatar/context.js.map +1 -1
  22. package/lib/module/agent-creator/AgentCreatorBase.js +9 -7
  23. package/lib/module/agent-creator/AgentCreatorBase.js.map +1 -1
  24. package/lib/module/agent-creator/CharacterControls.js +5 -3
  25. package/lib/module/agent-creator/CharacterControls.js.map +1 -1
  26. package/lib/typescript/commonjs/agent-avatar/AgentAvatarProvider.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/agent-avatar/CharacterAvatar.d.ts.map +1 -1
  28. package/lib/typescript/commonjs/agent-avatar/context.d.ts +4 -1
  29. package/lib/typescript/commonjs/agent-avatar/context.d.ts.map +1 -1
  30. package/lib/typescript/commonjs/agent-creator/AgentCreatorBase.d.ts.map +1 -1
  31. package/lib/typescript/commonjs/agent-creator/CharacterControls.d.ts.map +1 -1
  32. package/lib/typescript/module/agent-avatar/AgentAvatarProvider.d.ts.map +1 -1
  33. package/lib/typescript/module/agent-avatar/CharacterAvatar.d.ts.map +1 -1
  34. package/lib/typescript/module/agent-avatar/context.d.ts +4 -1
  35. package/lib/typescript/module/agent-avatar/context.d.ts.map +1 -1
  36. package/lib/typescript/module/agent-creator/AgentCreatorBase.d.ts.map +1 -1
  37. package/lib/typescript/module/agent-creator/CharacterControls.d.ts.map +1 -1
  38. package/package.json +1 -1
  39. package/src/agent-avatar/AgentAvatarProvider.tsx +11 -4
  40. package/src/agent-avatar/CharacterAvatar.tsx +9 -4
  41. package/src/agent-avatar/context.ts +5 -1
  42. package/src/agent-creator/AgentCreatorBase.tsx +13 -5
  43. package/src/agent-creator/CharacterControls.tsx +7 -3
@@ -1 +1 @@
1
- {"version":3,"file":"AgentAvatarProvider.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/AgentAvatarProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAaxD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,QAAQ,GACT,EAAE,wBAAwB,2CAqD1B"}
1
+ {"version":3,"file":"AgentAvatarProvider.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/AgentAvatarProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAiBxD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,QAAQ,GACT,EAAE,wBAAwB,2CAwD1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterAvatar.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/CharacterAvatar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmJhD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,2CA2FtD"}
1
+ {"version":3,"file":"CharacterAvatar.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/CharacterAvatar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmJhD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,2CAgGtD"}
@@ -9,8 +9,11 @@ export type CharacterCapabilities = {
9
9
  /** The application hosts the optional renderer assets at this module URL. */
10
10
  export declare const CharacterRuntimeContext: import("react").Context<{
11
11
  runtimeUrl?: string;
12
+ reportCapabilities?: (value: CharacterCapabilities) => void;
13
+ }>;
14
+ /** Only editors subscribe to catalog updates; renderer input stays stable. */
15
+ export declare const CharacterCapabilitiesContext: import("react").Context<{
12
16
  capabilities?: CharacterCapabilities;
13
17
  capabilitiesByKey?: ReadonlyMap<string, CharacterCapabilities>;
14
- reportCapabilities?: (value: CharacterCapabilities) => void;
15
18
  }>;
16
19
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,qCACrB,cAAc,KAAK,IAAI,SAC7B,CAAC;AAER,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AACF,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;iBACrB,MAAM;mBACJ,qBAAqB;wBAChB,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC;yBACzC,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI;EACvD,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,qCACrB,cAAc,KAAK,IAAI,SAC7B,CAAC;AAER,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AACF,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;iBACrB,MAAM;yBACE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI;EACvD,CAAC;AAEP,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B;mBACxB,qBAAqB;wBAChB,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC;EAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentCreatorBase.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/AgentCreatorBase.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,2CA2hBxD"}
1
+ {"version":3,"file":"AgentCreatorBase.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/AgentCreatorBase.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,2CAgiBxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterControls.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/CharacterControls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAM1C,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAC;CAClE,kDA6HA"}
1
+ {"version":3,"file":"CharacterControls.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/CharacterControls.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAM1C,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAC;CAClE,kDA8HA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentAvatarProvider.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/AgentAvatarProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAaxD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,QAAQ,GACT,EAAE,wBAAwB,2CAqD1B"}
1
+ {"version":3,"file":"AgentAvatarProvider.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/AgentAvatarProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AAiBxD,0FAA0F;AAC1F,wBAAgB,mBAAmB,CAAC,EAClC,UAAU,EACV,QAAQ,GACT,EAAE,wBAAwB,2CAwD1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterAvatar.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/CharacterAvatar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmJhD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,2CA2FtD"}
1
+ {"version":3,"file":"CharacterAvatar.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/CharacterAvatar.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAmJhD,wFAAwF;AACxF,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,2CAgGtD"}
@@ -9,8 +9,11 @@ export type CharacterCapabilities = {
9
9
  /** The application hosts the optional renderer assets at this module URL. */
10
10
  export declare const CharacterRuntimeContext: import("react").Context<{
11
11
  runtimeUrl?: string;
12
+ reportCapabilities?: (value: CharacterCapabilities) => void;
13
+ }>;
14
+ /** Only editors subscribe to catalog updates; renderer input stays stable. */
15
+ export declare const CharacterCapabilitiesContext: import("react").Context<{
12
16
  capabilities?: CharacterCapabilities;
13
17
  capabilitiesByKey?: ReadonlyMap<string, CharacterCapabilities>;
14
- reportCapabilities?: (value: CharacterCapabilities) => void;
15
18
  }>;
16
19
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,qCACrB,cAAc,KAAK,IAAI,SAC7B,CAAC;AAER,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AACF,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;iBACrB,MAAM;mBACJ,qBAAqB;wBAChB,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC;yBACzC,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI;EACvD,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/agent-avatar/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,qCACrB,cAAc,KAAK,IAAI,SAC7B,CAAC;AAER,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC,CAAC;AACF,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;iBACrB,MAAM;yBACE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI;EACvD,CAAC;AAEP,8EAA8E;AAC9E,eAAO,MAAM,4BAA4B;mBACxB,qBAAqB;wBAChB,WAAW,CAAC,MAAM,EAAE,qBAAqB,CAAC;EAC1D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AgentCreatorBase.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/AgentCreatorBase.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,2CA2hBxD"}
1
+ {"version":3,"file":"AgentCreatorBase.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/AgentCreatorBase.tsx"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,2CAgiBxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"CharacterControls.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/CharacterControls.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAM1C,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAC;CAClE,kDA6HA"}
1
+ {"version":3,"file":"CharacterControls.d.ts","sourceRoot":"","sources":["../../../../src/agent-creator/CharacterControls.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAEV,qBAAqB,EACtB,MAAM,kCAAkC,CAAC;AAM1C,0GAA0G;AAC1G,wBAAgB,iBAAiB,CAAC,EAChC,SAAS,EACT,eAAe,EACf,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,qBAAqB,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,qBAAqB,GAAG,SAAS,KAAK,IAAI,CAAC;CAClE,kDA8HA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@oxy.so/bloom",
3
- "version": "7.1.0",
3
+ "version": "7.1.1",
4
4
  "packageManager": "bun@1.3.14",
5
5
  "description": "Bloom UI — Oxy ecosystem component library for React Native + Expo + Web",
6
6
  "main": "lib/commonjs/index.js",
@@ -1,6 +1,10 @@
1
1
  import { useMemo, useState, useCallback, useEffect, useRef } from 'react';
2
2
  import type { AgentAvatarProviderProps } from './types';
3
- import { type CharacterCapabilities, CharacterRuntimeContext } from './context';
3
+ import {
4
+ type CharacterCapabilities,
5
+ CharacterRuntimeContext,
6
+ CharacterCapabilitiesContext,
7
+ } from './context';
4
8
 
5
9
  const EMPTY_CAPABILITIES: ReadonlyMap<string, CharacterCapabilities> =
6
10
  new Map();
@@ -61,12 +65,15 @@ export function AgentAvatarProvider({
61
65
  [runtimeUrl],
62
66
  );
63
67
  const value = useMemo(
64
- () => ({ runtimeUrl, capabilitiesByKey, reportCapabilities }),
65
- [runtimeUrl, capabilitiesByKey, reportCapabilities],
68
+ () => ({ runtimeUrl, reportCapabilities }),
69
+ [runtimeUrl, reportCapabilities],
66
70
  );
71
+ const catalog = useMemo(() => ({ capabilitiesByKey }), [capabilitiesByKey]);
67
72
  return (
68
73
  <CharacterRuntimeContext.Provider value={value}>
69
- {children}
74
+ <CharacterCapabilitiesContext.Provider value={catalog}>
75
+ {children}
76
+ </CharacterCapabilitiesContext.Provider>
70
77
  </CharacterRuntimeContext.Provider>
71
78
  );
72
79
  }
@@ -201,13 +201,17 @@ export function CharacterAvatar(props: AgentAvatarProps) {
201
201
  };
202
202
  }, []);
203
203
  useEffect(() => setFailed(false), [runtimeUrl, config.character]);
204
+ const legacy = useMemo(
205
+ () =>
206
+ !config.character || config.character.preset === 'bloom'
207
+ ? legacyRecipe(config)
208
+ : undefined,
209
+ [config],
210
+ );
204
211
  const value = useMemo(
205
212
  () => ({
206
213
  config,
207
- legacy:
208
- !config.character || config.character.preset === 'bloom'
209
- ? legacyRecipe(config)
210
- : undefined,
214
+ legacy,
211
215
  paused: paused || !active,
212
216
  portrait,
213
217
  workingKey,
@@ -219,6 +223,7 @@ export function CharacterAvatar(props: AgentAvatarProps) {
219
223
  }),
220
224
  [
221
225
  config,
226
+ legacy,
222
227
  paused,
223
228
  portrait,
224
229
  active,
@@ -14,7 +14,11 @@ export type CharacterCapabilities = {
14
14
  /** The application hosts the optional renderer assets at this module URL. */
15
15
  export const CharacterRuntimeContext = createContext<{
16
16
  runtimeUrl?: string;
17
+ reportCapabilities?: (value: CharacterCapabilities) => void;
18
+ }>({});
19
+
20
+ /** Only editors subscribe to catalog updates; renderer input stays stable. */
21
+ export const CharacterCapabilitiesContext = createContext<{
17
22
  capabilities?: CharacterCapabilities;
18
23
  capabilitiesByKey?: ReadonlyMap<string, CharacterCapabilities>;
19
- reportCapabilities?: (value: CharacterCapabilities) => void;
20
24
  }>({});
@@ -1,8 +1,11 @@
1
- import { useContext, useState } from 'react';
1
+ import { useContext, useMemo, useState } from 'react';
2
2
  import { Platform } from 'react-native';
3
3
  import { AgentAvatar, type AvatarConfig } from '../agent-avatar';
4
4
  import type { AvatarCharacterCategory } from '../agent-avatar/config-character';
5
- import { CharacterRuntimeContext } from '../agent-avatar/context';
5
+ import {
6
+ CharacterRuntimeContext,
7
+ CharacterCapabilitiesContext,
8
+ } from '../agent-avatar/context';
6
9
  import {
7
10
  legacyCharacterRecipe,
8
11
  legacyNativeShape,
@@ -46,13 +49,18 @@ export function AgentCreatorBase(props: AgentCreatorProps) {
46
49
  const [reactionKey, setReactionKey] = useState(0);
47
50
  const [workingKey, setWorkingKey] = useState(0);
48
51
  const runtime = useContext(CharacterRuntimeContext);
52
+ const catalog = useContext(CharacterCapabilitiesContext);
53
+ const previewConfig = useMemo(
54
+ () => ({ ...c, lookAt: 'wander' as const }),
55
+ [c],
56
+ );
49
57
  const { runtimeUrl } = runtime;
50
58
  const beta = Boolean(c.character && c.character.preset !== 'bloom');
51
59
  const nativeShape = legacyNativeShape(c);
52
60
  const key = JSON.stringify(beta ? c.character : legacyCharacterRecipe(c));
53
61
  const capabilities =
54
- runtime.capabilitiesByKey?.get(key) ??
55
- (runtime.capabilities?.key === key ? runtime.capabilities : undefined);
62
+ catalog.capabilitiesByKey?.get(key) ??
63
+ (catalog.capabilities?.key === key ? catalog.capabilities : undefined);
56
64
  const betaColor =
57
65
  capabilities?.selected.color ?? c.character?.selections?.color;
58
66
  const customColorValue = beta
@@ -315,7 +323,7 @@ export function AgentCreatorBase(props: AgentCreatorProps) {
315
323
  }}
316
324
  >
317
325
  <AgentAvatar
318
- config={{ ...c, lookAt: 'wander' }}
326
+ config={previewConfig}
319
327
  size={162}
320
328
  interactive={Boolean(runtimeUrl)}
321
329
  reactionKey={reactionKey}
@@ -1,5 +1,8 @@
1
1
  import { useContext } from 'react';
2
- import { CharacterRuntimeContext } from '../agent-avatar/context';
2
+ import {
3
+ CharacterRuntimeContext,
4
+ CharacterCapabilitiesContext,
5
+ } from '../agent-avatar/context';
3
6
  import type {
4
7
  AvatarCharacterCategory,
5
8
  AvatarCharacterConfig,
@@ -20,8 +23,9 @@ export function CharacterControls({
20
23
  onChange: (character: AvatarCharacterConfig | undefined) => void;
21
24
  }) {
22
25
  const messages = useAgentCreatorMessages();
23
- const { runtimeUrl, capabilities, capabilitiesByKey } = useContext(
24
- CharacterRuntimeContext,
26
+ const { runtimeUrl } = useContext(CharacterRuntimeContext);
27
+ const { capabilities, capabilitiesByKey } = useContext(
28
+ CharacterCapabilitiesContext,
25
29
  );
26
30
  const {
27
31
  Select,