@molroo-io/sdk 0.5.2 → 0.6.2

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 (48) hide show
  1. package/README.md +59 -81
  2. package/dist/cjs/index.d.ts +2 -0
  3. package/dist/cjs/index.d.ts.map +1 -1
  4. package/dist/cjs/index.js +3 -1
  5. package/dist/cjs/persona.d.ts +26 -0
  6. package/dist/cjs/persona.d.ts.map +1 -1
  7. package/dist/cjs/persona.js +23 -0
  8. package/dist/cjs/world/client.d.ts +3 -3
  9. package/dist/cjs/world/client.js +3 -3
  10. package/dist/cjs/world/index.d.ts +4 -4
  11. package/dist/cjs/world/index.d.ts.map +1 -1
  12. package/dist/cjs/world/index.js +4 -4
  13. package/dist/cjs/world/types.d.ts +4 -4
  14. package/dist/cjs/world/types.d.ts.map +1 -1
  15. package/dist/cjs/world/{village.d.ts → world-domain.d.ts} +25 -25
  16. package/dist/cjs/world/world-domain.d.ts.map +1 -0
  17. package/dist/cjs/world/{village.js → world-domain.js} +36 -36
  18. package/dist/cjs/world/world-persona.d.ts +5 -5
  19. package/dist/cjs/world/world-persona.d.ts.map +1 -1
  20. package/dist/cjs/world/world-persona.js +14 -14
  21. package/dist/cjs/world/world.d.ts +61 -17
  22. package/dist/cjs/world/world.d.ts.map +1 -1
  23. package/dist/cjs/world/world.js +70 -27
  24. package/dist/esm/index.d.ts +2 -0
  25. package/dist/esm/index.d.ts.map +1 -1
  26. package/dist/esm/index.js +1 -0
  27. package/dist/esm/persona.d.ts +26 -0
  28. package/dist/esm/persona.d.ts.map +1 -1
  29. package/dist/esm/persona.js +23 -0
  30. package/dist/esm/world/client.d.ts +3 -3
  31. package/dist/esm/world/client.js +3 -3
  32. package/dist/esm/world/index.d.ts +4 -4
  33. package/dist/esm/world/index.d.ts.map +1 -1
  34. package/dist/esm/world/index.js +2 -2
  35. package/dist/esm/world/types.d.ts +4 -4
  36. package/dist/esm/world/types.d.ts.map +1 -1
  37. package/dist/esm/world/{village.d.ts → world-domain.d.ts} +25 -25
  38. package/dist/esm/world/world-domain.d.ts.map +1 -0
  39. package/dist/esm/world/{village.js → world-domain.js} +34 -34
  40. package/dist/esm/world/world-persona.d.ts +5 -5
  41. package/dist/esm/world/world-persona.d.ts.map +1 -1
  42. package/dist/esm/world/world-persona.js +14 -14
  43. package/dist/esm/world/world.d.ts +61 -17
  44. package/dist/esm/world/world.d.ts.map +1 -1
  45. package/dist/esm/world/world.js +68 -25
  46. package/package.json +1 -1
  47. package/dist/cjs/world/village.d.ts.map +0 -1
  48. package/dist/esm/world/village.d.ts.map +0 -1
@@ -1,40 +1,84 @@
1
1
  import { type ApiClient } from './client';
2
- import { Village } from './village';
3
- import type { VillageData, CreateVillageOptions, PaginationOptions } from './types';
4
- export interface WorldOptions {
2
+ import { World } from './world-domain';
3
+ import { MolrooPersona } from '../persona';
4
+ import type { PersonaSummary } from '../persona';
5
+ import type { PersonaConfigData } from '../types';
6
+ import type { LLMInput } from '../llm/resolve';
7
+ import type { MemoryAdapter, MemoryConfig, RecallLimits } from '../memory/types';
8
+ import type { EventAdapter } from '../events/types';
9
+ import type { WorldData, CreateWorldOptions, PaginationOptions } from './types';
10
+ export interface MolrooOptions {
5
11
  apiKey: string;
6
12
  baseUrl?: string;
7
13
  }
14
+ /** Per-persona options passed when creating/connecting personas via the Molroo client. */
15
+ export interface PersonaOptions {
16
+ llm?: LLMInput;
17
+ engineLlm?: LLMInput;
18
+ memory?: MemoryAdapter | MemoryConfig;
19
+ recall?: RecallLimits;
20
+ events?: EventAdapter;
21
+ }
8
22
  /**
9
- * Entry point for the World SDK.
23
+ * Unified entry point for the molroo SDK.
10
24
  *
11
25
  * @example
12
26
  * ```typescript
13
- * import { World } from '@molroo-io/sdk';
27
+ * import { Molroo } from '@molroo-io/sdk/world';
28
+ *
29
+ * const molroo = new Molroo({ apiKey: 'mk_live_...' });
30
+ *
31
+ * // Persona
32
+ * const sera = await molroo.createPersona({ identity: { name: 'Sera' }, ... }, { llm });
33
+ * await sera.chat('Hello!');
14
34
  *
15
- * const world = new World({ apiKey: 'mk_live_...' });
16
- * const village = await world.createVillage({ name: 'My Village' });
17
- * const result = await village.interact({ target: 'sera', action: 'greet' });
35
+ * // World
36
+ * const world = await molroo.createWorld({ name: 'Cafe' });
37
+ * await world.addPersona({ personaConfigId: sera.id, config: {...} });
18
38
  * ```
19
39
  */
20
- export declare class World {
40
+ export declare class Molroo {
21
41
  /** @internal — exposed for advanced use only. */
22
42
  readonly _client: ApiClient;
23
- constructor(options: WorldOptions);
43
+ private readonly _baseUrl;
44
+ private readonly _apiKey;
45
+ constructor(options: MolrooOptions);
46
+ /**
47
+ * Create a new persona and return a connected {@link MolrooPersona} instance.
48
+ */
49
+ createPersona(personaConfig: PersonaConfigData, options?: PersonaOptions): Promise<MolrooPersona>;
50
+ /**
51
+ * Connect to an existing persona by ID.
52
+ */
53
+ connectPersona(personaId: string, options?: PersonaOptions): Promise<MolrooPersona>;
54
+ /**
55
+ * Generate a persona from a natural-language description, create it on the API,
56
+ * and return a connected {@link MolrooPersona} instance.
57
+ */
58
+ generatePersona(description: string, options: PersonaOptions & {
59
+ llm: LLMInput;
60
+ }): Promise<MolrooPersona>;
61
+ /**
62
+ * List all personas for the authenticated tenant.
63
+ */
64
+ listPersonas(): Promise<{
65
+ personas: PersonaSummary[];
66
+ nextCursor?: string;
67
+ }>;
24
68
  /**
25
- * Create a new village and return a {@link Village} instance.
69
+ * Create a new world and return a {@link World} instance.
26
70
  */
27
- createVillage(options: CreateVillageOptions): Promise<Village>;
71
+ createWorld(options: CreateWorldOptions): Promise<World>;
28
72
  /**
29
- * Fetch an existing village by ID and return a {@link Village} instance.
73
+ * Fetch an existing world by ID and return a {@link World} instance.
30
74
  */
31
- getVillage(id: string): Promise<Village>;
75
+ getWorld(id: string): Promise<World>;
32
76
  /**
33
- * List villages. Returns raw data objects (not Village instances) for
77
+ * List worlds. Returns raw data objects (not World instances) for
34
78
  * efficiency when only metadata is needed.
35
79
  */
36
- listVillages(options?: PaginationOptions): Promise<{
37
- villages: VillageData[];
80
+ listWorlds(options?: PaginationOptions): Promise<{
81
+ worlds: WorldData[];
38
82
  nextCursor: string | null;
39
83
  }>;
40
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../../src/world/world.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiCjB,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAQD;;;;;;;;;;;GAWG;AACH,qBAAa,KAAK;IAChB,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;gBAEhB,OAAO,EAAE,YAAY;IAOjC;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAwBpE;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB9C;;;OAGG;IACG,YAAY,CAChB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CA6BnE"}
1
+ {"version":3,"file":"world.d.ts","sourceRoot":"","sources":["../../../src/world/world.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAiCjB,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,QAAQ,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,GAAG,YAAY,CAAC;IACtC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAQD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,MAAM;IACjB,iDAAiD;IACjD,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,OAAO,EAAE,aAAa;IAalC;;OAEG;IACG,aAAa,CACjB,aAAa,EAAE,iBAAiB,EAChC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAOzB;;OAEG;IACG,cAAc,CAClB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC;IAOzB;;;OAGG;IACG,eAAe,CACnB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GAAG;QAAE,GAAG,EAAE,QAAQ,CAAA;KAAE,GAC1C,OAAO,CAAC,aAAa,CAAC;IAOzB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAWlF;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC;IAwB9D;;OAEG;IACG,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAmB1C;;;OAGG;IACG,UAAU,CACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CA6B/D"}
@@ -1,11 +1,12 @@
1
- // INFO: @F001 Top-level domain class — see plan step 4
1
+ // INFO: @F001 Top-level SDK entry point — see plan step 4
2
2
  import { createWorldClient, unwrap } from './client';
3
- import { Village } from './village';
3
+ import { World } from './world-domain';
4
+ import { MolrooPersona } from '../persona';
4
5
  // ---------------------------------------------------------------------------
5
6
  // Internal helper
6
7
  // ---------------------------------------------------------------------------
7
- /** Map raw snake_case API village object to camelCase VillageData. */
8
- function toVillageData(raw) {
8
+ /** Map raw snake_case API response to camelCase WorldData. */
9
+ function toWorldData(raw) {
9
10
  return {
10
11
  id: raw.id,
11
12
  tenantId: raw.tenant_id,
@@ -19,32 +20,74 @@ function toVillageData(raw) {
19
20
  }
20
21
  const DEFAULT_BASE_URL = 'https://api.molroo.io';
21
22
  // ---------------------------------------------------------------------------
22
- // World class
23
+ // Molroo class
23
24
  // ---------------------------------------------------------------------------
24
25
  /**
25
- * Entry point for the World SDK.
26
+ * Unified entry point for the molroo SDK.
26
27
  *
27
28
  * @example
28
29
  * ```typescript
29
- * import { World } from '@molroo-io/sdk';
30
+ * import { Molroo } from '@molroo-io/sdk/world';
30
31
  *
31
- * const world = new World({ apiKey: 'mk_live_...' });
32
- * const village = await world.createVillage({ name: 'My Village' });
33
- * const result = await village.interact({ target: 'sera', action: 'greet' });
32
+ * const molroo = new Molroo({ apiKey: 'mk_live_...' });
33
+ *
34
+ * // Persona
35
+ * const sera = await molroo.createPersona({ identity: { name: 'Sera' }, ... }, { llm });
36
+ * await sera.chat('Hello!');
37
+ *
38
+ * // World
39
+ * const world = await molroo.createWorld({ name: 'Cafe' });
40
+ * await world.addPersona({ personaConfigId: sera.id, config: {...} });
34
41
  * ```
35
42
  */
36
- export class World {
43
+ export class Molroo {
37
44
  constructor(options) {
45
+ this._baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;
46
+ this._apiKey = options.apiKey;
38
47
  this._client = createWorldClient({
39
- baseUrl: options.baseUrl ?? DEFAULT_BASE_URL,
40
- apiKey: options.apiKey,
48
+ baseUrl: this._baseUrl,
49
+ apiKey: this._apiKey,
50
+ });
51
+ }
52
+ // ---------------------------------------------------------------------------
53
+ // Persona
54
+ // ---------------------------------------------------------------------------
55
+ /**
56
+ * Create a new persona and return a connected {@link MolrooPersona} instance.
57
+ */
58
+ async createPersona(personaConfig, options) {
59
+ return MolrooPersona.create({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, personaConfig);
60
+ }
61
+ /**
62
+ * Connect to an existing persona by ID.
63
+ */
64
+ async connectPersona(personaId, options) {
65
+ return MolrooPersona.connect({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, personaId);
66
+ }
67
+ /**
68
+ * Generate a persona from a natural-language description, create it on the API,
69
+ * and return a connected {@link MolrooPersona} instance.
70
+ */
71
+ async generatePersona(description, options) {
72
+ return MolrooPersona.generate({ baseUrl: this._baseUrl, apiKey: this._apiKey, ...options }, description);
73
+ }
74
+ /**
75
+ * List all personas for the authenticated tenant.
76
+ */
77
+ async listPersonas() {
78
+ return MolrooPersona.listPersonas({
79
+ baseUrl: this._baseUrl,
80
+ apiKey: this._apiKey,
41
81
  });
42
82
  }
83
+ // ---------------------------------------------------------------------------
84
+ // World
85
+ // ---------------------------------------------------------------------------
43
86
  /**
44
- * Create a new village and return a {@link Village} instance.
87
+ * Create a new world and return a {@link World} instance.
45
88
  */
46
- async createVillage(options) {
47
- const { data } = await this._client.POST('/villages', {
89
+ async createWorld(options) {
90
+ const { data } = await this._client.POST('/worlds', {
48
91
  body: {
49
92
  name: options.name,
50
93
  description: options.description,
@@ -53,24 +96,24 @@ export class World {
53
96
  },
54
97
  });
55
98
  const raw = unwrap(data);
56
- return new Village(this._client, toVillageData(raw));
99
+ return new World(this._client, toWorldData(raw));
57
100
  }
58
101
  /**
59
- * Fetch an existing village by ID and return a {@link Village} instance.
102
+ * Fetch an existing world by ID and return a {@link World} instance.
60
103
  */
61
- async getVillage(id) {
62
- const { data } = await this._client.GET('/villages/{id}', {
104
+ async getWorld(id) {
105
+ const { data } = await this._client.GET('/worlds/{id}', {
63
106
  params: { path: { id } },
64
107
  });
65
108
  const raw = unwrap(data);
66
- return new Village(this._client, toVillageData(raw));
109
+ return new World(this._client, toWorldData(raw));
67
110
  }
68
111
  /**
69
- * List villages. Returns raw data objects (not Village instances) for
112
+ * List worlds. Returns raw data objects (not World instances) for
70
113
  * efficiency when only metadata is needed.
71
114
  */
72
- async listVillages(options) {
73
- const { data } = await this._client.GET('/villages', {
115
+ async listWorlds(options) {
116
+ const { data } = await this._client.GET('/worlds', {
74
117
  params: {
75
118
  query: {
76
119
  limit: options?.limit?.toString(),
@@ -80,7 +123,7 @@ export class World {
80
123
  });
81
124
  const raw = unwrap(data);
82
125
  return {
83
- villages: (raw.villages ?? []).map(toVillageData),
126
+ worlds: (raw.worlds ?? []).map(toWorldData),
84
127
  nextCursor: raw.nextCursor ?? null,
85
128
  };
86
129
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@molroo-io/sdk",
3
- "version": "0.5.2",
3
+ "version": "0.6.2",
4
4
  "description": "Unified SDK for molroo emotion engine — persona, world, memory adapters, LLM integration",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",
@@ -1 +0,0 @@
1
- {"version":3,"file":"village.d.ts","sourceRoot":"","sources":["../../../src/world/village.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAEjB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAsCjB;;;;;GAKG;AACH,qBAAa,OAAO;IAClB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,KAAK,CAAc;IAE3B,sEAAsE;gBAC1D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW;IAOhD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uDAAuD;IACvD,IAAI,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,CAEhC;IAID;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,gCAAgC;IAC1B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,sFAAsF;IAChF,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC9D,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwCxE,yCAAyC;IACnC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASxC,kCAAkC;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrD,0CAA0C;IACpC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY;IAMvE,8CAA8C;IACxC,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAcpE,4DAA4D;IACtD,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAsB1C,gDAAgD;IAC1C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,mDAAmD;IAC7C,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,8CAA8C;IACxC,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAS7C,mCAAmC;IAC7B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,8CAA8C;IACxC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAmBjE,+CAA+C;IACzC,SAAS,CACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAiBhE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"village.d.ts","sourceRoot":"","sources":["../../../src/world/village.ts"],"names":[],"mappings":"AACA,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,KAAK,EACV,WAAW,EACX,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EAEjB,mBAAmB,EACnB,UAAU,EACV,SAAS,EACT,sBAAsB,EACtB,eAAe,EACf,cAAc,EACd,UAAU,EACV,iBAAiB,EAClB,MAAM,SAAS,CAAC;AAsCjB;;;;;GAKG;AACH,qBAAa,OAAO;IAClB,gBAAgB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAY;IACpC,OAAO,CAAC,KAAK,CAAc;IAE3B,sEAAsE;gBAC1D,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW;IAOhD,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,uDAAuD;IACvD,IAAI,IAAI,IAAI,QAAQ,CAAC,WAAW,CAAC,CAEhC;IAID;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB1D,gCAAgC;IAC1B,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,sFAAsF;IAChF,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAC9D,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwCxE,yCAAyC;IACnC,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IASxC,kCAAkC;IAC5B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrD,0CAA0C;IACpC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQrD;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY;IAMvE,8CAA8C;IACxC,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC;IAcpE,4DAA4D;IACtD,WAAW,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAsB1C,gDAAgD;IAC1C,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQnD,mDAAmD;IAC7C,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrE,8CAA8C;IACxC,iBAAiB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAS7C,mCAAmC;IAC7B,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/D,8CAA8C;IACxC,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAmBjE,+CAA+C;IACzC,SAAS,CACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC;QAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;CAiBhE"}