@aalis/plugin-persona 0.12.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,9 +5,15 @@ declare const _default: import("@aalis/core").PluginDefinition<{
5
5
  logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
6
6
  events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
7
7
  hooks: import("@aalis/core").ServiceDescriptor<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
8
- platform: import("@aalis/core").OptionalUse<import("@aalis/api-platform").PlatformAdapter, import("@aalis/core").ServiceRef<import("@aalis/api-platform").PlatformAdapter>>;
9
- storage: import("@aalis/core").OptionalUse<StorageService, import("@aalis/core").ServiceRef<StorageService>>;
10
- sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/core").ServiceRef<import("@aalis/api-session-manager").SessionManagerService>>;
8
+ /** 登记 /clear 的 persona 类型 */
9
+ contributions: import("@aalis/core").OptionalUse<import("@aalis/api-contributions").ContributionRegistry, import("@aalis/api-contributions").Contributions>;
10
+ platform: import("@aalis/core").OptionalUse<import("@aalis/api-platform").PlatformAdapter, import("@aalis/api-platform").PlatformAdapter>;
11
+ storage: import("@aalis/core").OptionalUse<StorageService, import("@aalis/api-storage").BoundStorage>;
12
+ sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/api-session-manager").SessionManagerService>;
13
+ /** 按会话读本插件的四项;缺席时只取插件配置里的值 */
14
+ sessionFields: import("@aalis/core").OptionalUse<import("@aalis/api-session-settings").SessionSettingsService, import("@aalis/api-session-settings").SessionFields>;
15
+ /** 按会话字段的全局层:宿主配置文档里本实例的那一段 */
16
+ document: import("@aalis/core").OptionalUse<import("@aalis/api-host-config").HostConfig, import("@aalis/api-host-config").OwnHostConfig>;
11
17
  }>;
12
18
  export default _default;
13
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAGL,KAAK,cAAc,EAGpB,MAAM,oBAAoB,CAAC;;;;;;;;;;;AA2b5B,wBAQG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqB,KAAK,cAAc,EAA2C,MAAM,oBAAoB,CAAC;;;;;;;IA6dnH,6BAA6B;;;;;IAK7B,8BAA8B;;IAE9B,+BAA+B;;;AAKjC,wBAQG"}
package/dist/index.js CHANGED
@@ -1,55 +1,91 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
- import { inferSessionScope } from '@aalis/api-gateway';
2
+ import { contributions as contributionsCap } from '@aalis/api-contributions';
3
3
  import { hooks as hooksCap } from '@aalis/api-hooks';
4
- import { persona, } from '@aalis/api-persona';
5
- import { getPlatformSelfIdentity, platform as platformService } from '@aalis/api-platform';
6
- import { sessionManager as sessionManagerService } from '@aalis/api-session-manager';
7
- import { createStorageGateway, isStorageNotFound, storage as storageService, toStorageUri, } from '@aalis/api-storage';
4
+ import { ownHostConfig } from '@aalis/api-host-config';
5
+ import { persona } from '@aalis/api-persona';
6
+ import { getPlatformSelfIdentity, platform as platformService, sessionTypeLabel } from '@aalis/api-platform';
7
+ import { rootSessionOf, sessionManager as sessionManagerService } from '@aalis/api-session-manager';
8
+ import { sessionFields } from '@aalis/api-session-settings';
9
+ import { isStorageNotFound, storage as storageService, toStorageUri } from '@aalis/api-storage';
8
10
  import { config as configCap, definePlugin, events as eventsCap, logger as loggerCap, optional, provide as provideCap, } from '@aalis/core';
9
11
  import { defineConfig, parseConfig } from '@aalis/schema-config';
12
+ import { textOf, toSource } from '@aalis/schema-i18n';
13
+ import { oneSpeaker } from '@aalis/schema-message';
10
14
  import { extractJsonCandidate, tryParseJsonObject } from '@aalis/util-json-repair';
11
15
  import { parse as parseYaml } from 'yaml';
16
+ import { t } from './texts.js';
12
17
  // ===== 插件元数据 =====
18
+ /** 主卡:「人设」的作者默认(人设目录里的 default.yaml,没有时用内置的默认角色) */
19
+ const DEFAULT_PERSONA = 'default';
13
20
  const configSchema = defineConfig({
14
- persona: {
15
- type: 'select',
16
- label: '人设',
17
- description: '人设文件名(不含后缀)',
18
- default: 'default',
19
- onInvalid: 'error',
20
- dynamicOptions: 'persona',
21
- },
22
21
  personasDir: {
23
22
  type: 'string',
24
- label: '人设目录',
25
- description: "人设文件所在目录的 storage URI(如 data:/personas;不含 ':/' 时首段视为存储根名,单段裸名归 data 根)",
26
- default: 'data/personas',
23
+ label: t('personasDirLabel'),
24
+ description: t('personasDirDescription'),
25
+ default: 'personas:/',
27
26
  onInvalid: 'error',
28
27
  },
29
28
  statePersistence: {
30
29
  type: 'boolean',
31
- label: '状态持久化',
32
- description: '启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中',
30
+ label: t('statePersistenceLabel'),
31
+ description: t('statePersistenceDescription'),
33
32
  default: false,
34
33
  },
35
34
  timeInjection: {
36
35
  type: 'boolean',
37
- label: '时间注入',
38
- description: '启用后,当前时间会自动注入到系统提示中',
36
+ label: t('timeInjectionLabel'),
37
+ description: t('timeInjectionDescription'),
39
38
  default: true,
40
39
  },
41
40
  timeZone: {
42
41
  type: 'string',
43
- label: '时区 (IANA)',
44
- description: '例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。',
42
+ label: t('timeZoneLabel'),
43
+ description: t('timeZoneDescription'),
45
44
  default: '',
46
45
  },
46
+ // ----- 按会话字段:人设服务按调用方给的会话读 -----
47
+ persona: {
48
+ type: 'select',
49
+ label: t('personaLabel'),
50
+ description: t('personaDescription'),
51
+ // 可选项是人设服务的 listModels
52
+ dynamicOptions: 'persona',
53
+ allowCustom: true,
54
+ default: DEFAULT_PERSONA,
55
+ session: { prominence: 'common', order: 10, minLevel: 1 },
56
+ },
57
+ systemPromptExtra: {
58
+ type: 'textarea',
59
+ label: t('extraLabel'),
60
+ description: t('extraDescription'),
61
+ default: '',
62
+ session: { prominence: 'common', order: 40 },
63
+ },
64
+ disableOutputFormat: {
65
+ type: 'boolean',
66
+ label: t('plainLabel'),
67
+ description: t('plainDescription'),
68
+ default: false,
69
+ session: { prominence: 'advanced' },
70
+ },
71
+ clientSideJsonRendering: {
72
+ type: 'select',
73
+ label: t('renderLabel'),
74
+ description: t('renderDescription'),
75
+ options: [
76
+ { value: 'card', label: t('renderCard') },
77
+ { value: 'on', label: t('renderOn') },
78
+ { value: 'off', label: t('renderOff') },
79
+ ],
80
+ default: 'card',
81
+ session: { prominence: 'advanced' },
82
+ },
47
83
  });
48
84
  // ===== 实现 =====
49
85
  class PersonaServiceImpl {
86
+ settingsOf;
50
87
  card;
51
88
  _outputFormat;
52
- fileName;
53
89
  statePersistence;
54
90
  timeInjection;
55
91
  timeZone;
@@ -61,9 +97,11 @@ class PersonaServiceImpl {
61
97
  sessionStates = new Map();
62
98
  /** 当前处理消息的会话身份(按异步上下文隔离,杜绝并发会话间串档)。 */
63
99
  identityStore = new AsyncLocalStorage();
64
- constructor(card, fileName, options) {
100
+ constructor(card, options,
101
+ /** 调用方给的会话的四项:插件按会话读,不给会话时按插件配置 */
102
+ settingsOf) {
103
+ this.settingsOf = settingsOf;
65
104
  this.card = card;
66
- this.fileName = fileName;
67
105
  this.statePersistence = options.statePersistence;
68
106
  this.timeInjection = options.timeInjection;
69
107
  this.timeZone = options.timeZone;
@@ -79,9 +117,9 @@ class PersonaServiceImpl {
79
117
  removeCardCacheEntry(name) {
80
118
  this.cardCache.delete(name);
81
119
  }
82
- /** 重新加载“主角色卡”(fileName 对应的卡),供 watch 调用 */
120
+ /** 重新加载主卡,供 watch 调用 */
83
121
  reloadPrimaryCardFromCache() {
84
- const refreshed = this.cardCache.get(this.fileName);
122
+ const refreshed = this.cardCache.get(DEFAULT_PERSONA);
85
123
  if (refreshed) {
86
124
  this.card = refreshed;
87
125
  this._outputFormat = refreshed.outputFormat
@@ -109,10 +147,6 @@ class PersonaServiceImpl {
109
147
  saveSessionState(sessionId, state) {
110
148
  this.sessionStates.set(sessionId, state);
111
149
  }
112
- /** 读取会话状态(用于跨会话工具回报目标 agent 内心情况) */
113
- getSessionState(sessionId) {
114
- return this.sessionStates.get(sessionId);
115
- }
116
150
  /** 清除指定会话的状态 */
117
151
  clearSessionState(sessionId) {
118
152
  this.sessionStates.delete(sessionId);
@@ -121,12 +155,9 @@ class PersonaServiceImpl {
121
155
  clearAllStates() {
122
156
  this.sessionStates.clear();
123
157
  }
124
- /** 根据 options 获取生效的角色卡(不查 session-manager,由调用方传入) */
125
- getEffectiveCard(options) {
126
- if (options?.persona && options.persona !== this.fileName) {
127
- return this.loadCard(options.persona) ?? this.card;
128
- }
129
- return this.card;
158
+ /** 「人设」指的角色卡:主卡之外的卡找不到时回落主卡 */
159
+ cardFor(persona) {
160
+ return persona !== DEFAULT_PERSONA ? (this.loadCard(persona) ?? this.card) : this.card;
130
161
  }
131
162
  /** 按名称动态加载角色卡(仅查 cache,启动时预填) */
132
163
  loadCard(name) {
@@ -149,7 +180,8 @@ class PersonaServiceImpl {
149
180
  return this.identityStore.run(identity, fn);
150
181
  }
151
182
  getSystemPrompt(options) {
152
- const effectiveCard = this.getEffectiveCard(options);
183
+ const settings = this.settingsOf(options);
184
+ const effectiveCard = this.cardFor(settings.persona);
153
185
  let prompt = '';
154
186
  if (effectiveCard.name) {
155
187
  prompt += `你的名字是 ${effectiveCard.name}。`;
@@ -162,11 +194,11 @@ class PersonaServiceImpl {
162
194
  }
163
195
  prompt += effectiveCard.prompt;
164
196
  // 会话级额外提示:接在人设之后、格式说明之前,格式说明仍是整段的收尾
165
- const extra = options?.systemPromptExtra?.trim();
197
+ const extra = settings.systemPromptExtra.trim();
166
198
  if (extra)
167
199
  prompt += `\n\n${extra}`;
168
- // 追加结构化输出指令 — 尊重调用方传入的 disableOutputFormat
169
- const effectiveFormat = options?.disableOutputFormat ? undefined : this.getCardOutputFormat(effectiveCard);
200
+ // 追加结构化输出指令 — 这个会话设了不用结构化输出时不加
201
+ const effectiveFormat = settings.disableOutputFormat ? undefined : this.getCardOutputFormat(effectiveCard);
170
202
  if (effectiveFormat) {
171
203
  // 角色卡若提供 outputFormatPrompt,则用其替换默认 header/footer;
172
204
  // schema 块仍由插件根据 fields 自动生成,避免与字段定义脱节。
@@ -259,15 +291,13 @@ class PersonaServiceImpl {
259
291
  const selfLabel = id.selfNickname ? `${id.selfNickname}${id.selfId ? `(${id.selfId})` : ''}` : id.selfId;
260
292
  prompt += `你在当前平台的账号:${selfLabel}\n`;
261
293
  }
262
- if (id.sessionType === 'group') {
263
- // 解析 sessionId 提取群号
264
- const parts = id.sessionId.split(':');
265
- const groupId = parts.length >= 4 ? parts.slice(3).join(':') : undefined;
266
- prompt += '会话类型:群聊\n';
294
+ if (id.sessionType)
295
+ prompt += `会话类型:${id.sessionType}\n`;
296
+ if (id.multiParty) {
267
297
  if (id.groupName)
268
298
  prompt += `群名称:${id.groupName}\n`;
269
- if (groupId)
270
- prompt += `群号:${groupId}\n`;
299
+ if (id.groupId)
300
+ prompt += `群号:${id.groupId}\n`;
271
301
  // 自身群身份(关键:避免 LLM 误以为自己是普通群员)
272
302
  if (id.selfRole) {
273
303
  const roleLabel = id.selfRole === 'owner' ? '群主' : id.selfRole === 'admin' ? '管理员' : '普通成员';
@@ -277,11 +307,8 @@ class PersonaServiceImpl {
277
307
  prompt += `你在该群的专属头衔:${id.selfTitle}\n`;
278
308
  }
279
309
  }
280
- else if (id.sessionType === 'private') {
281
- prompt += '会话类型:私聊\n';
282
- }
283
- else if (id.sessionType === 'channel') {
284
- prompt += '会话类型:频道\n';
310
+ if (id.entryPlatform) {
311
+ prompt += `当前消息经 ${id.entryPlatform} 发来\n`;
285
312
  }
286
313
  if (id.userId) {
287
314
  prompt += `当前消息发送者 ID:${id.userId}\n`;
@@ -296,13 +323,12 @@ class PersonaServiceImpl {
296
323
  if (id.senderTitle) {
297
324
  prompt += `当前消息发送者群头衔:${id.senderTitle}\n`;
298
325
  }
299
- if (id.sessionType === 'group') {
326
+ if (id.multiParty) {
300
327
  // 防误认:群名片可被改成「群主」等字样,曾导致把普通成员当群主。
301
328
  prompt +=
302
329
  '身份判定:「群身份」由平台核验,可信;昵称与头衔只是可自定义的显示文本,可能出现「群主」「管理员」等与真实身份不符的字样,历史消息前缀里的名字同理。判断成员真实身份只认群身份字段,未标注时不要凭名字或头衔推断。\n';
303
330
  }
304
- prompt +=
305
- '短期历史范围:上下文中的历史消息均来自当前会话,即上述群聊/私聊/频道;跨会话或跨群内容只会以长期记忆片段形式单独标注。\n';
331
+ prompt += '短期历史范围:上下文中的历史消息均来自当前会话;跨会话或跨群内容只会以长期记忆片段形式单独标注。\n';
306
332
  }
307
333
  // 状态持久化注入
308
334
  if (this.statePersistence) {
@@ -322,32 +348,23 @@ class PersonaServiceImpl {
322
348
  return prompt.replace(/^\n+/, '');
323
349
  }
324
350
  getPersonaName(options) {
325
- const card = this.getEffectiveCard(options);
326
- return card.name || `${card === this.card ? this.fileName : options?.persona},未设置名字`;
351
+ return this.cardFor(this.settingsOf(options).persona).name;
327
352
  }
328
- /** 该角色卡是否配置为客户端渲染 JSON */
353
+ /** 这个会话是否客户端渲染 JSON:「客户端渲染 JSON」为开或关时按它,按角色卡时看卡上的 */
329
354
  isClientSideJsonRendering(options) {
330
- if (options?.clientSideJsonRendering !== undefined) {
331
- return options.clientSideJsonRendering;
332
- }
333
- const effectiveCard = this.getEffectiveCard(options);
334
- return !!effectiveCard.clientSideJsonRendering;
355
+ const settings = this.settingsOf(options);
356
+ if (settings.clientSideJsonRendering !== 'card')
357
+ return settings.clientSideJsonRendering === 'on';
358
+ return !!this.cardFor(settings.persona).clientSideJsonRendering;
335
359
  }
336
360
  getOutputFormat(options) {
337
- if (options?.disableOutputFormat)
361
+ const settings = this.settingsOf(options);
362
+ if (settings.disableOutputFormat)
338
363
  return undefined;
339
- const effectiveCard = this.getEffectiveCard(options);
340
- return this.getCardOutputFormat(effectiveCard);
364
+ return this.getCardOutputFormat(this.cardFor(settings.persona));
341
365
  }
342
366
  getNickNames(options) {
343
- return this.getEffectiveCard(options).nick_name ?? [];
344
- }
345
- isTimeInjectionEnabled() {
346
- return this.timeInjection;
347
- }
348
- getPersonaSkills(options) {
349
- const effectiveCard = this.getEffectiveCard(options);
350
- return effectiveCard.skills;
367
+ return this.cardFor(this.settingsOf(options).persona).nick_name ?? [];
351
368
  }
352
369
  async listModels() {
353
370
  return [...this.cardCache.keys()];
@@ -360,13 +377,19 @@ const uses = {
360
377
  logger: loggerCap,
361
378
  events: eventsCap,
362
379
  hooks: hooksCap,
380
+ /** 登记 /clear 的 persona 类型 */
381
+ contributions: optional(contributionsCap),
363
382
  platform: optional(platformService),
364
383
  storage: optional(storageService),
365
384
  sessionManager: optional(sessionManagerService),
385
+ /** 按会话读本插件的四项;缺席时只取插件配置里的值 */
386
+ sessionFields: optional(sessionFields),
387
+ /** 按会话字段的全局层:宿主配置文档里本实例的那一段 */
388
+ document: optional(ownHostConfig),
366
389
  };
367
390
  export default definePlugin({
368
391
  name: '@aalis/plugin-persona',
369
- displayName: '人设系统',
392
+ displayName: t('displayName'),
370
393
  subsystem: 'persona',
371
394
  configSchema,
372
395
  provides: [persona],
@@ -375,11 +398,10 @@ export default definePlugin({
375
398
  });
376
399
  async function run(caps) {
377
400
  const { provide, config, logger, events, hooks } = caps;
378
- const cfg = parseConfig(configSchema, config, logger);
379
- const personaName = cfg.persona || configSchema.persona.default;
401
+ const cfg = parseConfig(configSchema, config.use, logger.use);
380
402
  const personasDirRaw = cfg.personasDir || configSchema.personasDir.default;
381
403
  const { statePersistence, timeInjection, timeZone } = cfg;
382
- const storage = createStorageGateway(caps.storage);
404
+ const storage = caps.storage.use;
383
405
  const personasDir = toStorageUri(personasDirRaw);
384
406
  /** 读到了但解析不出卡的标记——与"文件不存在"区分开,避免坏卡被当成没有卡 */
385
407
  const INVALID = 'invalid';
@@ -399,7 +421,7 @@ async function run(caps) {
399
421
  return asCard(parsed, uri);
400
422
  }
401
423
  catch (err) {
402
- logger.warn(`角色卡解析失败,已跳过:${uri} —— ${err instanceof Error ? err.message : err}`);
424
+ logger.use.warn(`角色卡解析失败,已跳过:${uri} —— ${err instanceof Error ? err.message : err}`);
403
425
  return INVALID;
404
426
  }
405
427
  }
@@ -413,7 +435,7 @@ async function run(caps) {
413
435
  return undefined;
414
436
  const list = typeof value === 'string' ? [value] : Array.isArray(value) ? value : undefined;
415
437
  if (!list) {
416
- logger.warn(`角色卡的 nick_name 应为字符串列表,已忽略:${uri}`);
438
+ logger.use.warn(`角色卡的 nick_name 应为字符串列表,已忽略:${uri}`);
417
439
  return undefined;
418
440
  }
419
441
  return list.flatMap(n => (typeof n === 'string' && n.trim() ? [n.trim()] : []));
@@ -435,7 +457,6 @@ async function run(caps) {
435
457
  : undefined,
436
458
  nick_name: asNickNames(parsed.nick_name, uri),
437
459
  clientSideJsonRendering: parsed.clientSideJsonRendering,
438
- skills: parsed.skills,
439
460
  };
440
461
  }
441
462
  function joinUri(base, sub) {
@@ -486,10 +507,10 @@ async function run(caps) {
486
507
  return seenNames;
487
508
  }
488
509
  let card;
489
- const found = await findCard(personaName);
510
+ const found = await findCard(DEFAULT_PERSONA);
490
511
  if (found && found !== INVALID) {
491
512
  card = found.card;
492
- logger.info(`已加载角色卡: ${card.name} (${found.uri})`);
513
+ logger.use.info(`已加载角色卡: ${card.name} (${found.uri})`);
493
514
  }
494
515
  else {
495
516
  card = {
@@ -498,31 +519,28 @@ async function run(caps) {
498
519
  prompt: '请友好、专业地与用户交流。',
499
520
  };
500
521
  if (found === INVALID) {
501
- logger.warn(`角色卡 "${personaName}" 存在但解析失败(原因见上条告警),暂用内置默认角色`);
522
+ logger.use.warn(`角色卡 "${DEFAULT_PERSONA}" 存在但解析失败(原因见上条告警),暂用内置默认角色`);
502
523
  }
503
524
  else {
504
- logger.info(`未找到角色卡 "${personaName}",使用默认角色`);
525
+ logger.use.info(`未找到角色卡 "${DEFAULT_PERSONA}",使用内置默认角色`);
505
526
  }
506
527
  }
507
- const service = new PersonaServiceImpl(card, personaName, {
508
- statePersistence,
509
- timeInjection,
510
- timeZone,
511
- });
512
- provide(persona, service);
528
+ const fields = caps.sessionFields.use.fields(configSchema, caps);
529
+ const service = new PersonaServiceImpl(card, { statePersistence, timeInjection, timeZone }, options => fields.get(options?.sessionId, { platform: options?.platform }));
530
+ provide.use(persona, service);
513
531
  /** 全量扫描 → cache(listModels / 动态切换用),剔除已消失的卡,并按 cache 刷新主卡 */
514
532
  async function scanOnce(reason) {
515
533
  try {
516
534
  const known = await scanAll(service);
517
535
  for (const n of await service.listModels()) {
518
- if (!known.has(n) && n !== personaName)
536
+ if (!known.has(n) && n !== DEFAULT_PERSONA)
519
537
  service.removeCardCacheEntry(n);
520
538
  }
521
539
  service.reloadPrimaryCardFromCache();
522
- logger.debug(`persona ${reason},已知 ${known.size} 张卡`);
540
+ logger.use.debug(`persona ${reason},已知 ${known.size} 张卡`);
523
541
  }
524
542
  catch (err) {
525
- logger.warn(`persona 扫描失败(${reason}):${err}`);
543
+ logger.use.warn(`persona 扫描失败(${reason}):${err}`);
526
544
  }
527
545
  }
528
546
  // 扫描串行化:同一时刻只跑一次;进行中再触发,只排一次尾随重扫(期间的多次触发并成这一次)。
@@ -549,7 +567,7 @@ async function run(caps) {
549
567
  // 跟随 storage:在场即补建人设目录、挂监听、全量扫描;提供者换代(重启 / 改配置 / 晚上线)时重挂。
550
568
  // 换代时 follow 先跑上次返回的清理,关掉挂在旧提供者上的监听。
551
569
  // 首挂放在 sticky 的 app:ready 里并等它扫完,保持「start() 返回时主卡已按存储加载」;此刻 storage 不在场则等它上线再挂。
552
- events.on('app:ready', async () => {
570
+ events.use.on('app:ready', async () => {
553
571
  let first;
554
572
  caps.storage.follow(() => {
555
573
  const offs = [];
@@ -575,7 +593,7 @@ async function run(caps) {
575
593
  offs.push(storage.watch(personasDir, () => void refresh(`目录变化已重新加载(${personasDir})`)));
576
594
  }
577
595
  catch (err) {
578
- logger.warn(`persona 目录监听失败(${personasDir}):${err}`);
596
+ logger.use.warn(`persona 目录监听失败(${personasDir}):${err}`);
579
597
  }
580
598
  await refresh('扫描完成');
581
599
  })();
@@ -588,8 +606,9 @@ async function run(caps) {
588
606
  });
589
607
  await first;
590
608
  });
591
- // 参与 memory:clear 清除当前会话的 persona 状态
592
- hooks.middleware('memory:clear', async (data, next) => {
609
+ // 参与 memory:clear 清除当前会话的 persona 状态;登记 persona 类型,/clear -t 才选得中
610
+ caps.contributions.use.contribute('memory:clear-type', { id: 'persona', label: t('clearType') });
611
+ hooks.use.middleware('memory:clear', async (data, next) => {
593
612
  // 类型过滤:仅在清除 context/persona/全部 时参与
594
613
  if (data.types && !data.types.includes('context') && !data.types.includes('persona')) {
595
614
  await next();
@@ -598,89 +617,74 @@ async function run(caps) {
598
617
  try {
599
618
  if (data.scope === 'all') {
600
619
  service.clearAllStates();
601
- data.results.push({ source: 'persona', type: 'persona', success: true, message: '所有会话角色状态已清空' });
620
+ data.results.push({ source: 'persona', type: 'persona', success: true, message: t('clearedAll') });
602
621
  }
603
622
  else if (data.sessionId) {
604
623
  service.clearSessionState(data.sessionId);
605
- data.results.push({ source: 'persona', type: 'persona', success: true, message: '当前会话角色状态已清空' });
624
+ data.results.push({ source: 'persona', type: 'persona', success: true, message: t('clearedSession') });
606
625
  }
607
626
  }
608
627
  catch (err) {
609
- const msg = err instanceof Error ? err.message : String(err);
610
- data.results.push({ source: 'persona', type: 'persona', success: false, message: `角色状态清空失败: ${msg}` });
628
+ data.results.push({
629
+ source: 'persona',
630
+ type: 'persona',
631
+ success: false,
632
+ message: t('clearFailed', { error: textOf(err) }),
633
+ });
611
634
  }
612
635
  await next();
613
636
  });
614
- // 跟踪当前会话信息(始终启用):身份装进 AsyncLocalStorage 的异步上下文,
637
+ // 跟踪当前会话信息(始终启用):一轮开始时把身份装进 AsyncLocalStorage 的异步上下文,
615
638
  // 穿透 await 不串、并发会话各自隔离——杜绝跨会话身份泄漏进他人 LLM 提示。
616
- hooks.middleware('agent:input:before', async (data, next) => {
617
- const selfIdentity = getPlatformSelfIdentity(caps.platform, data.message.platform, data.message.sessionId);
639
+ // 会话事实(平台、自身账号、会话类型与群号)按根会话记下的来源字段取(房间里的子任务也在房间的平台、账号与聊天窗口上);
640
+ // 从 WebUI 往群里插话时回复发进群里。没有出生平台的会话按开轮那条输入的平台;没有聊天窗口的(WebUI、终端,或没装会话管理)
641
+ // 不写会话类型与群信息,不看消息上的类型名。说话人事实(发送者 ID、昵称、群身份与头衔)取自开轮的输入,只在它们的说话人
642
+ // 相同时写:几个人的话一起开的一轮没有单一的当前发送者。
643
+ hooks.use.middleware('agent:turn:before', async (data, next) => {
644
+ const [{ message }] = data.inputs;
645
+ const sm = caps.sessionManager.present ? caps.sessionManager.use : undefined;
646
+ const session = sm?.getSession(message.sessionId);
647
+ const root = sm && rootSessionOf(session, id => sm.getSession(id));
648
+ const origin = root?.originPlatform;
649
+ const chat = root?.originChat;
650
+ const sessionPlatform = origin ?? message.platform;
651
+ const selfIdentity = getPlatformSelfIdentity(caps.platform, sessionPlatform, root?.id ?? message.sessionId);
618
652
  const identity = {
619
- sessionId: data.message.sessionId,
620
- platform: data.message.platform,
621
- // 合成回合(scheduler / workflow / delegate / idle)不经适配器、没有 sessionType:按会话 ID 约定推断(与上方
622
- // 取群号同一约定)。只用于提示词、不回写消息:这时入站相位已跑完(flow-control 判作用域时自己推断),写回
623
- // 只会让这个按约定的推断随归档写进消息元数据,被下游当成适配器给出的类型
624
- sessionType: data.message.sessionType ?? inferSessionScope(data.message.platform, data.message.sessionId)?.sessionType,
653
+ sessionId: message.sessionId,
654
+ platform: sessionPlatform,
655
+ entryPlatform: origin !== undefined && origin !== message.platform ? message.platform : undefined,
656
+ // 只用于提示词,不回写消息
657
+ sessionType: chat && toSource(sessionTypeLabel(caps.platform, sessionPlatform, chat.type) ?? chat.type),
658
+ multiParty: chat?.multiParty,
659
+ groupId: chat?.multiParty ? chat.targetId : undefined,
625
660
  selfId: selfIdentity?.selfId,
626
661
  selfNickname: selfIdentity?.nickname,
627
- userId: data.message.userId,
628
- nickname: data.message.nickname,
629
- groupName: data.message.groupName,
630
- selfRole: data.message.selfRole,
631
- selfTitle: data.message.selfTitle,
632
- senderRole: data.message.senderRole,
633
- senderTitle: data.message.senderTitle,
662
+ groupName: message.groupName,
663
+ selfRole: message.selfRole,
664
+ selfTitle: message.selfTitle,
665
+ ...(oneSpeaker(data.inputs.map(input => input.message))
666
+ ? {
667
+ userId: message.userId,
668
+ nickname: message.nickname,
669
+ senderRole: message.senderRole,
670
+ senderTitle: message.senderTitle,
671
+ }
672
+ : {}),
634
673
  };
635
674
  await service.runWithIdentity(identity, () => next());
636
675
  });
637
- // agent:reply:before 钩子:统一处理 JSON 解析
638
- // 1. 有 outputFormat 时:结构化解析 + 状态持久化
639
- // 2. 无 outputFormat 时:回退提取(模型意外用 JSON 包裹回复时自动解包)
676
+ // agent:reply:before 钩子:会话的卡有 outputFormat 时做结构化解析、校验重试与状态持久化
640
677
  const baseFormat = service.getOutputFormat();
641
678
  if (baseFormat) {
642
- logger.info(`角色卡启用结构化输出 (回复字段: ${baseFormat.replyField})`);
679
+ logger.use.info(`角色卡启用结构化输出 (回复字段: ${baseFormat.replyField})`);
643
680
  }
644
- hooks.middleware('agent:reply:before', async (data, next) => {
681
+ hooks.use.middleware('agent:reply:before', async (data, next) => {
645
682
  await next();
646
- // 从 session-manager 构造 PersonaSessionOptions,统一传给 service 方法
647
- let personaOpts;
648
- try {
649
- const sm = caps.sessionManager.current;
650
- if (sm && data.sessionId) {
651
- const resolved = sm.resolveConfig(data.sessionId, data.platform);
652
- personaOpts = {
653
- persona: resolved.persona,
654
- disableOutputFormat: resolved.disableOutputFormat,
655
- clientSideJsonRendering: resolved.clientSideJsonRendering,
656
- };
657
- }
658
- }
659
- catch {
660
- /* session-manager 不可用,使用全局默认 */
661
- }
683
+ // 按这一轮的会话取卡与两个结构化输出开关
684
+ const personaOpts = { sessionId: data.sessionId, platform: data.platform };
662
685
  const outputFormat = service.getOutputFormat(personaOpts);
663
- // ===== 无 outputFormat:回退 JSON 提取 =====
664
- // 当角色卡未定义 outputFormat 时,模型偶尔仍会用 JSON 包裹回复
665
- // 此处自动解包,提取回复字段
666
- if (!outputFormat) {
667
- const trimmed = data.content.trim();
668
- if (!trimmed.startsWith('{'))
669
- return;
670
- const { parsed: obj } = tryParseJsonObject(trimmed);
671
- if (!obj)
672
- return;
673
- const replyKeys = ['response', 'reply', 'content', 'answer', 'text', 'msg', 'message'];
674
- for (const key of replyKeys) {
675
- if (typeof obj[key] === 'string') {
676
- data.content = obj[key];
677
- logger.debug(`JSON 回退提取: 使用字段 "${key}"`);
678
- return;
679
- }
680
- }
686
+ if (!outputFormat)
681
687
  return;
682
- }
683
- // ===== 有 outputFormat:结构化解析 =====
684
688
  const clientRendered = service.isClientSideJsonRendering(personaOpts);
685
689
  const persistStateFromParsed = (parsedObj, fmt) => {
686
690
  const state = {};
@@ -707,107 +711,80 @@ async function run(caps) {
707
711
  }
708
712
  if (Object.keys(state).length > 0) {
709
713
  service.saveSessionState(data.sessionId, state);
710
- logger.debug(`状态已持久化 (session=${data.sessionId}): ${JSON.stringify(state)}`);
714
+ logger.use.debug(`状态已持久化 (session=${data.sessionId}): ${JSON.stringify(state)}`);
711
715
  }
712
716
  };
713
717
  const jsonStr = extractJsonCandidate(data.content);
714
718
  const { parsed, repairsApplied } = tryParseJsonObject(jsonStr);
715
719
  if (parsed && repairsApplied.length > 0) {
716
- logger.debug(`outputFormat JSON 自动修复成功:${repairsApplied.join(' → ')}`);
720
+ logger.use.debug(`outputFormat JSON 自动修复成功:${repairsApplied.join(' → ')}`);
717
721
  }
718
722
  try {
719
723
  if (!parsed)
720
724
  throw new Error('JSON 解析失败');
721
- let reply = parsed[outputFormat.replyField];
722
- // 回退:模型可能使用了错误的字段名(如 response 代替 message)
723
- if (typeof reply !== 'string') {
724
- const aliases = ['response', 'reply', 'content', 'answer', 'text', 'msg'];
725
- for (const alias of aliases) {
726
- if (alias !== outputFormat.replyField && typeof parsed[alias] === 'string') {
727
- reply = parsed[alias];
728
- logger.debug(`outputFormat 回退:模型使用了 "${alias}" 而非 "${outputFormat.replyField}",已自动纠正`);
729
- break;
730
- }
731
- }
732
- }
733
- // 仍未找到:若 JSON 中只有一个字符串字段,使用它
725
+ // 只认声明的回复字段。主动不回话的合法写法是回复字段为空字符串(如 {"message":"","state":"..."})
726
+ const reply = parsed[outputFormat.replyField];
734
727
  if (typeof reply !== 'string') {
735
- const stringEntries = Object.entries(parsed).filter(([, v]) => typeof v === 'string');
736
- if (stringEntries.length === 1) {
737
- reply = stringEntries[0][1];
738
- logger.debug(`outputFormat 回退:仅一个字符串字段 "${stringEntries[0][0]}",作为回复使用`);
739
- }
728
+ throw new Error(`JSON 合法但找不到回复字段 "${outputFormat.replyField}"(实际字段: ${Object.keys(parsed).join(',')})`);
740
729
  }
741
- if (typeof reply === 'string') {
742
- if (parsed[outputFormat.replyField] !== reply) {
743
- parsed[outputFormat.replyField] = reply;
730
+ // 严格字段校验:声明的所有字段都必须出现且类型正确,缺一不可 → 否则 retry。
731
+ // 这样可以避免模型养成省略 state/mood 等状态字段的坏习惯,让上下文信号始终完整。
732
+ const missing = [];
733
+ const typeMismatch = [];
734
+ for (const [key, def] of Object.entries(outputFormat.fields)) {
735
+ const val = parsed[key];
736
+ if (val === undefined || val === null) {
737
+ missing.push(key);
738
+ continue;
744
739
  }
745
- // 严格字段校验:声明的所有字段都必须出现且类型正确,缺一不可 → 否则 retry。
746
- // 这样可以避免模型养成省略 state/mood 等状态字段的坏习惯,让上下文信号始终完整。
747
- const missing = [];
748
- const typeMismatch = [];
749
- for (const [key, def] of Object.entries(outputFormat.fields)) {
750
- const val = parsed[key];
751
- if (val === undefined || val === null) {
752
- missing.push(key);
753
- continue;
754
- }
755
- const expectedType = def.type ?? 'string';
756
- const actualType = typeof val;
757
- if (expectedType === 'number') {
758
- if (actualType !== 'number' && !(actualType === 'string' && !Number.isNaN(Number(val)))) {
759
- typeMismatch.push(`${key}(期望 number, 实际 ${actualType})`);
760
- }
740
+ const expectedType = def.type ?? 'string';
741
+ const actualType = typeof val;
742
+ if (expectedType === 'number') {
743
+ if (actualType !== 'number' && !(actualType === 'string' && !Number.isNaN(Number(val)))) {
744
+ typeMismatch.push(`${key}(期望 number, 实际 ${actualType})`);
761
745
  }
762
- else if (expectedType === 'boolean') {
763
- if (actualType !== 'boolean' && !(actualType === 'string' && (val === 'true' || val === 'false'))) {
764
- typeMismatch.push(`${key}(期望 boolean, 实际 ${actualType})`);
765
- }
766
- }
767
- else if (actualType !== 'string') {
768
- typeMismatch.push(`${key}(期望 string, 实际 ${actualType})`);
769
- }
770
- }
771
- if (missing.length > 0 || typeMismatch.length > 0) {
772
- const parts = [];
773
- if (missing.length > 0)
774
- parts.push(`缺失字段: ${missing.join(',')}`);
775
- if (typeMismatch.length > 0)
776
- parts.push(`类型错误: ${typeMismatch.join(',')}`);
777
- throw new Error(parts.join('; '));
778
746
  }
779
- data.archiveContent = JSON.stringify(parsed);
780
- // 可见正文单独交给 agent 落库:客户端渲染模式下 content 仍是整串 JSON
781
- data.visibleContent = reply;
782
- // 客户端渲染模式:保留完整 JSON 给前端,不提取回复字段
783
- if (!clientRendered) {
784
- data.content = reply;
785
- }
786
- // 输出所有字段概要
787
- const fieldSummary = Object.entries(parsed)
788
- .filter(([k]) => k !== outputFormat.replyField)
789
- .map(([k, v]) => {
790
- const s = typeof v === 'string' ? v : JSON.stringify(v);
791
- return `${k}=${s.length > 60 ? `${s.slice(0, 60)}...` : s}`;
792
- })
793
- .join(', ');
794
- if (reply.length > 0) {
795
- logger.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: ${reply.slice(0, 100)}`);
796
- }
797
- else {
798
- logger.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: (空,静默)`);
747
+ else if (expectedType === 'boolean') {
748
+ if (actualType !== 'boolean' && !(actualType === 'string' && (val === 'true' || val === 'false'))) {
749
+ typeMismatch.push(`${key}(期望 boolean, 实际 ${actualType})`);
750
+ }
799
751
  }
800
- // 状态持久化:保存非回复字段(按 field type 强制类型)
801
- if (statePersistence) {
802
- persistStateFromParsed(parsed, outputFormat);
752
+ else if (actualType !== 'string') {
753
+ typeMismatch.push(`${key}(期望 string, 实际 ${actualType})`);
803
754
  }
804
755
  }
756
+ if (missing.length > 0 || typeMismatch.length > 0) {
757
+ const parts = [];
758
+ if (missing.length > 0)
759
+ parts.push(`缺失字段: ${missing.join(',')}`);
760
+ if (typeMismatch.length > 0)
761
+ parts.push(`类型错误: ${typeMismatch.join(',')}`);
762
+ throw new Error(parts.join('; '));
763
+ }
764
+ data.archiveContent = JSON.stringify(parsed);
765
+ // 可见正文单独交给 agent 落库:客户端渲染模式下 content 仍是整串 JSON
766
+ data.visibleContent = reply;
767
+ // 客户端渲染模式:保留完整 JSON 给前端,不提取回复字段
768
+ if (!clientRendered) {
769
+ data.content = reply;
770
+ }
771
+ // 输出所有字段概要
772
+ const fieldSummary = Object.entries(parsed)
773
+ .filter(([k]) => k !== outputFormat.replyField)
774
+ .map(([k, v]) => {
775
+ const s = typeof v === 'string' ? v : JSON.stringify(v);
776
+ return `${k}=${s.length > 60 ? `${s.slice(0, 60)}...` : s}`;
777
+ })
778
+ .join(', ');
779
+ if (reply.length > 0) {
780
+ logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: ${reply.slice(0, 100)}`);
781
+ }
805
782
  else {
806
- // JSON 合法但找不到回复字段(无 replyField、无 alias、也不是单字符串字段)
807
- // 视为模型违约 → 抛错让 catch 触发 retry,要求重新输出符合 outputFormat 的 JSON。
808
- // 注意:agent 主动静默的合法表达是 reply 字段=空字符串(如 {"message":"","state":"..."}),
809
- // 那种情况会走上面的 typeof reply === 'string' 分支并被识别为"(空,静默)"。
810
- throw new Error(`JSON 合法但找不到回复字段 "${outputFormat.replyField}"(实际字段: ${Object.keys(parsed).join(',')})`);
783
+ logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: (空,静默)`);
784
+ }
785
+ // 状态持久化:保存非回复字段(按 field type 强制类型)
786
+ if (statePersistence) {
787
+ persistStateFromParsed(parsed, outputFormat);
811
788
  }
812
789
  }
813
790
  catch (err) {
@@ -819,7 +796,7 @@ async function run(caps) {
819
796
  data.maxRetries = maxRetries;
820
797
  if (attempt < maxRetries) {
821
798
  // 还有重试名额:要求模型严格按照 outputFormat 重新输出 JSON
822
- logger.debug(`outputFormat 解码失败 (attempt=${attempt}/${maxRetries}),请求重试:${message}; json=${preview}`);
799
+ logger.use.debug(`outputFormat 解码失败 (attempt=${attempt}/${maxRetries}),请求重试:${message}; json=${preview}`);
823
800
  const fieldSpec = Object.entries(outputFormat.fields)
824
801
  .map(([k, v]) => ` - "${k}"(${v.description ?? ''}${k === outputFormat.replyField ? ';最终回复内容写在这里' : ''})`)
825
802
  .join('\n');
@@ -830,16 +807,14 @@ async function run(caps) {
830
807
  ')。请严格按照以下字段输出一个合法 JSON 对象(不要包 markdown 代码块,所有声明的字段都必须出现,缺一不可):\n' +
831
808
  fieldSpec +
832
809
  '\n请勿输出任何 JSON 之外的文本。' +
833
- '\n注意:如果你的本意只是"汇报已完成 / 不想再对外发送新内容",请把回复字段留空(空字符串),仅用其他状态字段说明情况——不要省略任何字段,也不要在回复字段里写汇报性文字,否则会被当作新消息发送到对方平台。';
810
+ '\n请只修正格式,保留本来需要传达的正文,并写入回复字段;确实不需对外回复时,才将回复字段留空(空字符串)。';
834
811
  }
835
812
  else {
836
813
  // 重试用尽:静默丢弃(避免原始 JSON 被当成回复发出)
837
- // 同时通过 archiveContent 写入一条"系统提醒",让下一轮 LLM 看到自己上次因格式不符被丢弃
838
- logger.warn(`outputFormat 解码连续 ${attempt + 1} 次失败(已用尽 ${maxRetries} 次重试),静默丢弃回复:${message}; json=${preview}`);
814
+ logger.use.warn(`outputFormat 解码连续 ${attempt + 1} 次失败(已用尽 ${maxRetries} 次重试),静默丢弃回复:${message}; json=${preview}`);
839
815
  data.retryRequested = false;
840
816
  data.retryFeedback = undefined;
841
817
  data.content = '';
842
- data.archiveContent = `(系统提示:上一条回复因不符合 outputFormat 规定被丢弃,原因:${message}。下次回复请严格按照 system prompt 中规定的 JSON 格式输出,所有声明的字段都必须出现。)`;
843
818
  }
844
819
  }
845
820
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,EAAE,KAAK,IAAI,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAmD,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,QAAQ,IAAI,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,cAAc,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAuB,OAAO,IAAI,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACrH,OAAO,EAEL,MAAM,IAAI,SAAS,EACnB,YAAY,EACZ,MAAM,IAAI,SAAS,EACnB,MAAM,IAAI,SAAS,EACnB,QAAQ,EACR,OAAO,IAAI,UAAU,GACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AA0B/B,oBAAoB;AAEpB,oDAAoD;AACpD,MAAM,eAAe,GAAG,SAAS,CAAC;AAElC,MAAM,YAAY,GAAG,YAAY,CAAC;IAChC,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,CAAC,kBAAkB,CAAC;QAC5B,WAAW,EAAE,CAAC,CAAC,wBAAwB,CAAC;QACxC,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE,OAAO;KACnB;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,CAAC,uBAAuB,CAAC;QACjC,WAAW,EAAE,CAAC,CAAC,6BAA6B,CAAC;QAC7C,OAAO,EAAE,KAAK;KACf;IACD,aAAa,EAAE;QACb,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,CAAC,oBAAoB,CAAC;QAC9B,WAAW,EAAE,CAAC,CAAC,0BAA0B,CAAC;QAC1C,OAAO,EAAE,IAAI;KACd;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,CAAC,eAAe,CAAC;QACzB,WAAW,EAAE,CAAC,CAAC,qBAAqB,CAAC;QACrC,OAAO,EAAE,EAAE;KACZ;IACD,kCAAkC;IAClC,OAAO,EAAE;QACP,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC;QACxB,WAAW,EAAE,CAAC,CAAC,oBAAoB,CAAC;QACpC,uBAAuB;QACvB,cAAc,EAAE,SAAS;QACzB,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;KAC1D;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,WAAW,EAAE,CAAC,CAAC,kBAAkB,CAAC;QAClC,OAAO,EAAE,EAAE;QACX,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE;KAC7C;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC;QACtB,WAAW,EAAE,CAAC,CAAC,kBAAkB,CAAC;QAClC,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;KACpC;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,CAAC,CAAC,aAAa,CAAC;QACvB,WAAW,EAAE,CAAC,CAAC,mBAAmB,CAAC;QACnC,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE;YACzC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE;YACrC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE;SACxC;QACD,OAAO,EAAE,MAAM;QACf,OAAO,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE;KACpC;CACF,CAAC,CAAC;AA+CH,iBAAiB;AAEjB,MAAM,kBAAkB;IAoBH;IAnBX,IAAI,CAAc;IAClB,aAAa,CAAgB;IAC7B,gBAAgB,CAAU;IAC1B,aAAa,CAAU;IACvB,QAAQ,CAAS;IACzB,qDAAqD;IAC7C,SAAS,GAAG,IAAI,GAAG,EAAuB,CAAC;IACnD,yDAAyD;IACjD,WAAW,GAAG,IAAI,OAAO,EAAoC,CAAC;IAEtE,wBAAwB;IAChB,aAAa,GAAG,IAAI,GAAG,EAAmC,CAAC;IACnE,uCAAuC;IAC/B,aAAa,GAAG,IAAI,iBAAiB,EAAmB,CAAC;IAEjE,YACE,IAAiB,EACjB,OAAgF;IAChF,mCAAmC;IAClB,UAAgE;QAAhE,eAAU,GAAV,UAAU,CAAsD;QAEjF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAEjC,oBAAoB;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC5G,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,iBAAiB,CAAC,IAAY,EAAE,IAAiB;QAC/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,oBAAoB,CAAC,IAAY;QAC/B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,wBAAwB;IACxB,0BAA0B;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;YACtB,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,YAAY;gBACzC,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,mBAAmB,CAAC;gBAChG,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;IACH,CAAC;IAED,6CAA6C;IACrC,MAAM,CAAC,oBAAoB,CACjC,GAA4E,EAC5E,OAAgB;QAEhB,MAAM,MAAM,GAAsC,EAAE,CAAC;QACrD,IAAI,UAA8B,CAAC;QACnC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAG/E,CAAC;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YACvE,IAAI,GAAG,CAAC,KAAK;gBAAE,UAAU,GAAG,GAAG,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,UAAU;YAAE,OAAO,SAAS,CAAC;QAClC,8BAA8B;QAC9B,MAAM,iBAAiB,GAAG,OAAO,IAAI,CAAC,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC5D,CAAC;IAED,aAAa;IACb,gBAAgB,CAAC,SAAiB,EAAE,KAA8B;QAChE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,iBAAiB,CAAC,SAAiB;QACjC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED,eAAe;IACf,cAAc;QACZ,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,+BAA+B;IACvB,OAAO,CAAC,OAAe;QAC7B,OAAO,OAAO,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;IACzF,CAAC;IAED,iCAAiC;IACzB,QAAQ,CAAC,IAAY;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,iCAAiC;IACzB,mBAAmB,CAAC,IAAiB;QAC3C,IAAI,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC,aAAa,CAAC;QAClD,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;QAC/E,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY;YAC3B,CAAC,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC;YACtF,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC;QACxC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,sDAAsD;IACtD,eAAe,CAAI,QAAyB,EAAE,EAAW;QACvD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,eAAe,CAAC,OAA+B;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,SAAS,aAAa,CAAC,IAAI,GAAG,CAAC;QAC3C,CAAC;QACD,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,aAAa,CAAC,WAAW,MAAM,CAAC;QAC/C,CAAC;QACD,IAAI,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,SAAS,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1D,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC;QAE/B,oCAAoC;QACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAChD,IAAI,KAAK;YAAE,MAAM,IAAI,OAAO,KAAK,EAAE,CAAC;QAEpC,+BAA+B;QAC/B,MAAM,eAAe,GAAG,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC3G,IAAI,eAAe,EAAE,CAAC;YACpB,mDAAmD;YACnD,wCAAwC;YACxC,MAAM,YAAY,GAAG,aAAa,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;YAC9D,MAAM,IAAI,MAAM,CAAC;YACjB,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,YAAY,IAAI,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,kBAAkB,CAAC;gBAC7B,MAAM;oBACJ,2EAA2E,CAAC;YAChF,CAAC;YACD,MAAM,IAAI,KAAK,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACvD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChD,IAAI,WAAmB,CAAC;gBACxB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAAE,WAAW,GAAG,GAAG,CAAC;qBAC1C,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;oBAAE,WAAW,GAAG,MAAM,CAAC;;oBACnD,WAAW,GAAG,OAAO,CAAC;gBAC3B,MAAM,IAAI,MAAM,GAAG,MAAM,WAAW,GAAG,KAAK,IAAI,CAAC;YACnD,CAAC,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC;YAChB,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,4BAA4B;gBAC5B,MAAM,IAAI,WAAW,CAAC;gBACtB,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;oBAC/B,MAAM,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;gBAC3F,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,4BAA4B,CAAC;gBACvC,MAAM,IAAI,wCAAwC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAA+B;QAC/C,KAAK,OAAO,CAAC;QACb,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAEzC,OAAO;QACP,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,mBAAmB;YACnB,IAAI,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YACnF,qBAAqB;YACrB,IAAI,CAAC;gBACH,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YACrD,CAAC;YAAC,MAAM,CAAC;gBACP,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC,eAAe,EAAE,CAAC,QAAQ,CAAC;YACxD,CAAC;YACD,qCAAqC;YACrC,MAAM,WAAW,GACf,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;iBAC5E,aAAa,CAAC,GAAG,CAAC;iBAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC1C,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,SAAS;gBACd,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,KAAK;aACd,CAAC,CAAC;YACH,MAAM;gBACJ,+DAA+D,CAAC;YAClE,MAAM,IAAI,QAAQ,OAAO,IAAI,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC;QAChF,CAAC;QAED,+CAA+C;QAC/C,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC;YAClB,MAAM,IAAI,gBAAgB,CAAC;YAC3B,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM,IAAI,QAAQ,EAAE,CAAC,QAAQ,IAAI,CAAC;YACpC,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,YAAY,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,YAAY,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC;gBACzG,MAAM,IAAI,aAAa,SAAS,IAAI,CAAC;YACvC,CAAC;YACD,IAAI,EAAE,CAAC,WAAW;gBAAE,MAAM,IAAI,QAAQ,EAAE,CAAC,WAAW,IAAI,CAAC;YACzD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,EAAE,CAAC,SAAS;oBAAE,MAAM,IAAI,OAAO,EAAE,CAAC,SAAS,IAAI,CAAC;gBACpD,IAAI,EAAE,CAAC,OAAO;oBAAE,MAAM,IAAI,MAAM,EAAE,CAAC,OAAO,IAAI,CAAC;gBAC/C,8BAA8B;gBAC9B,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAChB,MAAM,SAAS,GAAG,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5F,MAAM,IAAI,WAAW,SAAS,IAAI,CAAC;gBACrC,CAAC;gBACD,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;oBACjB,MAAM,IAAI,aAAa,EAAE,CAAC,SAAS,IAAI,CAAC;gBAC1C,CAAC;YACH,CAAC;YACD,IAAI,EAAE,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM,IAAI,SAAS,EAAE,CAAC,aAAa,OAAO,CAAC;YAC7C,CAAC;YACD,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;gBACd,MAAM,IAAI,cAAc,EAAE,CAAC,MAAM,IAAI,CAAC;YACxC,CAAC;YACD,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC;gBAChB,MAAM,IAAI,aAAa,EAAE,CAAC,QAAQ,IAAI,CAAC;YACzC,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBACtG,MAAM,IAAI,cAAc,eAAe,IAAI,CAAC;YAC9C,CAAC;YACD,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACnB,MAAM,IAAI,cAAc,EAAE,CAAC,WAAW,IAAI,CAAC;YAC7C,CAAC;YACD,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC;gBAClB,kCAAkC;gBAClC,MAAM;oBACJ,6GAA6G,CAAC;YAClH,CAAC;YACD,MAAM,IAAI,oDAAoD,CAAC;QACjE,CAAC;QAED,UAAU;QACV,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/E,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,iBAAiB,CAAC;gBAC5B,0CAA0C;gBAC1C,uCAAuC;gBACvC,uCAAuC;gBACvC,MAAM,IAAI,2CAA2C,CAAC;gBACtD,MAAM,IAAI,4CAA4C,CAAC;gBACvD,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,cAAc,CAAC,OAA+B;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;IAC7D,CAAC;IAED,qDAAqD;IACrD,yBAAyB,CAAC,OAA+B;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,uBAAuB,KAAK,MAAM;YAAE,OAAO,QAAQ,CAAC,uBAAuB,KAAK,IAAI,CAAC;QAClG,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,uBAAuB,CAAC;IAClE,CAAC;IAED,eAAe,CAAC,OAA+B;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,QAAQ,CAAC,mBAAmB;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,YAAY,CAAC,OAA+B;QAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;CACF;AAED,mBAAmB;AAEnB,MAAM,IAAI,GAAG;IACX,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,QAAQ;IACf,6BAA6B;IAC7B,aAAa,EAAE,QAAQ,CAAC,gBAAgB,CAAC;IACzC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC;IACnC,OAAO,EAAE,QAAQ,CAAC,cAAc,CAAC;IACjC,cAAc,EAAE,QAAQ,CAAC,qBAAqB,CAAC;IAC/C,8BAA8B;IAC9B,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC;IACtC,+BAA+B;IAC/B,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC;CAClC,CAAC;AAGF,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,CAAC,CAAC,aAAa,CAAC;IAC7B,SAAS,EAAE,SAAS;IACpB,YAAY;IACZ,QAAQ,EAAE,CAAC,OAAO,CAAC;IACnB,IAAI;IACJ,KAAK,EAAE,GAAG;CACX,CAAC,CAAC;AAEH,KAAK,UAAU,GAAG,CAAC,IAAU;IAC3B,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACxD,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,IAAI,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC;IAC3E,MAAM,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAC;IAE1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;IAEjC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;IAEjD,2CAA2C;IAC3C,MAAM,OAAO,GAAG,SAAkB,CAAC;IAEnC,KAAK,UAAU,kBAAkB,CAAC,GAAW;QAC3C,IAAI,GAAW,CAAC;QAChB,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,CAAW,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC,CAAC,4BAA4B;QAChD,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAY,CAAC;YACzC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YACjC,CAAC;YACD,OAAO,MAAM,CAAC,MAAiC,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,GAAG,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACrF,OAAO,OAAO,CAAC;QACjB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,SAAS,WAAW,CAAC,KAAc,EAAE,GAAW;QAC9C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;QAC5D,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,KAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3G,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,8BAA8B,GAAG,EAAE,CAAC,CAAC;YACrD,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED,0CAA0C;IAC1C,SAAS,MAAM,CAAC,MAA+B,EAAE,GAAW;QAC1D,OAAO;YACL,IAAI,EAAG,MAAM,CAAC,IAAe,IAAI,EAAE;YACnC,WAAW,EAAG,MAAM,CAAC,WAAsB,IAAI,EAAE;YACjD,MAAM,EAAG,MAAM,CAAC,MAAiB,IAAI,EAAE;YACvC,MAAM,EAAE,MAAM,CAAC,MAA8B;YAC7C,YAAY,EAAE,MAAM,CAAC,YAAuD;YAC5E,kBAAkB,EAAE,MAAM,CAAC,kBAAwC;YACnE,6CAA6C;YAC7C,mBAAmB,EACjB,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ;gBAC9C,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;gBAC5C,MAAM,CAAC,mBAAmB,IAAI,CAAC;gBAC7B,CAAC,CAAC,MAAM,CAAC,mBAAmB;gBAC5B,CAAC,CAAC,SAAS;YACf,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC;YAC7C,uBAAuB,EAAE,MAAM,CAAC,uBAA8C;SAC/E,CAAC;IACJ,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,GAAW;QACxC,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,IAAY;QAClC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;YAClD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACrB,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,CAAC;IAED,8EAA8E;IAC9E,KAAK,UAAU,OAAO,CAAC,GAAuB;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,IAAI,MAAmD,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC;gBAAE,MAAM,GAAG,CAAC;YACvC,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,CAAC,WAAW;gBAAE,SAAS;YAChC,MAAM,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,CAAC;gBAAE,SAAS;YACjB,MAAM,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACtC,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACjD,IAAI,IAAI,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,GAAG,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;gBACtC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,IAAiB,CAAC;IACtB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;IAC9C,IAAI,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC/B,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IACzD,CAAC;SAAM,CAAC;QACN,IAAI,GAAG;YACL,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,aAAa;YAC1B,MAAM,EAAE,eAAe;SACxB,CAAC;QACF,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACtB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,eAAe,6BAA6B,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,eAAe,YAAY,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,IAAI,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,OAAO,CAAC,EAAE,CACpG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAChE,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE9B,6DAA6D;IAC7D,KAAK,UAAU,QAAQ,CAAC,MAAc;QACpC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,MAAM,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,eAAe;oBAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,CAAC,0BAA0B,EAAE,CAAC;YACrC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,MAAM,OAAO,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,uCAAuC;IACvC,IAAI,QAAmC,CAAC;IACxC,IAAI,MAAiC,CAAC;IACtC,SAAS,OAAO,CAAC,MAAc;QAC7B,IAAI,MAAM;YAAE,OAAO,MAAM,CAAC;QAC1B,IAAI,QAAQ,EAAE,CAAC;YACb,6DAA6D;YAC7D,MAAM,IAAI,GAAG,GAAkB,EAAE;gBAC/B,MAAM,GAAG,SAAS,CAAC;gBACnB,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC;YACF,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;YACvC,QAAQ,GAAG,SAAS,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,0DAA0D;IAC1D,qCAAqC;IACrC,gFAAgF;IAChF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QACpC,IAAI,KAAgC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;YACvB,MAAM,IAAI,GAAsB,EAAE,CAAC;YACnC,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;gBACvB,kCAAkC;gBAClC,gDAAgD;gBAChD,IAAI,CAAC;oBACH,MAAM,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAClC,CAAC;gBAAC,MAAM,CAAC;oBACP,IAAI,CAAC;wBACH,MAAM,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACnC,CAAC;oBAAC,MAAM,CAAC;wBACP,yBAAyB;oBAC3B,CAAC;gBACH,CAAC;gBACD,IAAI,SAAS;oBAAE,OAAO;gBACtB,uCAAuC;gBACvC,IAAI,CAAC;oBACH,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,aAAa,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;gBACzF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,WAAW,KAAK,GAAG,EAAE,CAAC,CAAC;gBAC3D,CAAC;gBACD,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC,EAAE,CAAC;YACL,KAAK,KAAK,IAAI,CAAC;YACf,OAAO,GAAG,EAAE;gBACV,SAAS,GAAG,IAAI,CAAC;gBACjB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;oBAAE,GAAG,EAAE,CAAC;YAC1C,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACjG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACxD,mCAAmC;QACnC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrF,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,cAAc,EAAE,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YACrG,CAAC;iBAAM,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;gBAChB,MAAM,EAAE,SAAS;gBACjB,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aAClD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,EAAE,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,6CAA6C;IAC7C,8DAA8D;IAC9D,qEAAqE;IACrE,+DAA+D;IAC/D,8BAA8B;IAC9B,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC7D,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,OAAO,GAAG,EAAE,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,IAAI,EAAE,cAAc,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,EAAE,UAAU,CAAC;QAC9B,MAAM,eAAe,GAAG,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC;QACnD,MAAM,YAAY,GAAG,uBAAuB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC;QAC5G,MAAM,QAAQ,GAAoB;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,eAAe;YACzB,aAAa,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACjG,eAAe;YACf,WAAW,EAAE,IAAI,IAAI,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;YACvG,UAAU,EAAE,IAAI,EAAE,UAAU;YAC5B,OAAO,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;YACrD,MAAM,EAAE,YAAY,EAAE,MAAM;YAC5B,YAAY,EAAE,YAAY,EAAE,QAAQ;YACpC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACrD,CAAC,CAAC;oBACE,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;oBAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC;QACF,MAAM,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,8DAA8D;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAE7C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,UAAU,CAAC,UAAU,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QAC9D,MAAM,IAAI,EAAE,CAAC;QAEb,sBAAsB;QACtB,MAAM,WAAW,GAA0B,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClG,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAE1D,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,MAAM,cAAc,GAAG,OAAO,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAEtE,MAAM,sBAAsB,GAAG,CAAC,SAAkC,EAAE,GAAiB,EAAQ,EAAE;YAC7F,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,IAAI,GAAG,KAAK,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;oBAC3D,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC;oBACnD,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBACzB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;wBAC3B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;wBACtB,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC;yBAAM,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;wBACnC,IAAI,OAAO,GAAG,KAAK,QAAQ;4BAAE,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;;4BAC7C,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;oBAC1B,CAAC;yBAAM,CAAC;wBACN,IAAI,OAAO,GAAG,KAAK,QAAQ;4BAAE,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;oBACjD,CAAC;oBACD,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACnB,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAChD,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,MAAM,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,4BAA4B,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC1C,iEAAiE;YACjE,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CACb,oBAAoB,YAAY,CAAC,UAAU,WAAW,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CACvF,CAAC;YACJ,CAAC;YAED,4CAA4C;YAC5C,gDAAgD;YAChD,MAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAa,EAAE,CAAC;YAClC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;oBACtC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC;gBAC1C,MAAM,UAAU,GAAG,OAAO,GAAG,CAAC;gBAC9B,IAAI,YAAY,KAAK,QAAQ,EAAE,CAAC;oBAC9B,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxF,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,kBAAkB,UAAU,GAAG,CAAC,CAAC;oBAC3D,CAAC;gBACH,CAAC;qBAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;oBACtC,IAAI,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;wBAClG,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,mBAAmB,UAAU,GAAG,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;qBAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;oBACnC,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,kBAAkB,UAAU,GAAG,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBACjE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,SAAS,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC3E,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC;YAED,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAC7C,+CAA+C;YAC/C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAE5B,gCAAgC;YAChC,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACvB,CAAC;YACD,WAAW;YACX,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC;iBAC9C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;gBACd,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACxD,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9D,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,CAAC,GAAG,CAAC,KAAK,CACd,sBAAsB,YAAY,OAAO,YAAY,CAAC,UAAU,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC3F,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,sBAAsB,YAAY,OAAO,YAAY,CAAC,UAAU,UAAU,CAAC,CAAC;YAC/F,CAAC;YACD,mCAAmC;YACnC,IAAI,gBAAgB,EAAE,CAAC;gBACrB,sBAAsB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAE/E,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;YAClC,kCAAkC;YAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAE7B,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;gBACzB,yCAAyC;gBACzC,MAAM,CAAC,GAAG,CAAC,KAAK,CACd,8BAA8B,OAAO,IAAI,UAAU,UAAU,OAAO,UAAU,OAAO,EAAE,CACxF,CAAC;gBACF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC;qBAClD,GAAG,CACF,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CACT,QAAQ,CAAC,KAAK,CAAC,CAAC,WAAW,IAAI,EAAE,GAAG,CAAC,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,GAAG,CAC5F;qBACA,IAAI,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,CAAC,aAAa;oBAChB,oCAAoC;wBACpC,OAAO;wBACP,kEAAkE;wBAClE,SAAS;wBACT,sBAAsB;wBACtB,wDAAwD,CAAC;YAC7D,CAAC;iBAAM,CAAC;gBACN,+BAA+B;gBAC/B,MAAM,CAAC,GAAG,CAAC,IAAI,CACb,qBAAqB,OAAO,GAAG,CAAC,YAAY,UAAU,gBAAgB,OAAO,UAAU,OAAO,EAAE,CACjG,CAAC;gBACF,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;gBAC/B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,28 @@
1
+ declare const _default: {
2
+ readonly displayName: "Persona system";
3
+ readonly personasDirLabel: "Persona directory";
4
+ readonly personasDirDescription: "Storage URI of the directory holding the persona files (personas:/ by default, which is self/personas in the home directory; without ':/' the first segment is taken as the storage root name, and a single bare name goes to the data root)";
5
+ readonly statePersistenceLabel: "State persistence";
6
+ readonly statePersistenceDescription: "When on, the persona state (mood, current activity and other outputFormat fields) carries over within the same session and is injected into the next prompt";
7
+ readonly timeInjectionLabel: "Time injection";
8
+ readonly timeInjectionDescription: "When on, the current time is injected into the system prompt automatically";
9
+ readonly timeZoneLabel: "Time zone (IANA)";
10
+ readonly timeZoneDescription: "For example Asia/Shanghai, Europe/London, America/New_York. Empty uses the system's local time zone.";
11
+ readonly personaLabel: "Persona";
12
+ readonly personaDescription: "Persona card name (without the extension); default is the default card in the persona directory, or the built-in default persona when there is none";
13
+ readonly extraLabel: "Extra prompt";
14
+ readonly extraDescription: "Appended after the persona prompt and before the structured output instructions; nothing is appended when empty";
15
+ readonly plainLabel: "No structured output";
16
+ readonly plainDescription: "Ignore the card’s structured output format and reply in plain text";
17
+ readonly renderLabel: "Client-side JSON rendering";
18
+ readonly renderDescription: "Hand the structured output JSON to the client as is, without extracting the reply field";
19
+ readonly renderCard: "Per card";
20
+ readonly renderOn: "On";
21
+ readonly renderOff: "Off";
22
+ readonly clearType: "Session persona state";
23
+ readonly clearedAll: "Cleared the persona state of all sessions";
24
+ readonly clearedSession: "Cleared the persona state of this session";
25
+ readonly clearFailed: "Clearing persona state failed: {error}";
26
+ };
27
+ export default _default;
28
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBA8BG"}
@@ -0,0 +1,28 @@
1
+ import { defineLocale } from '@aalis/schema-i18n';
2
+ export default defineLocale()({
3
+ displayName: 'Persona system',
4
+ personasDirLabel: 'Persona directory',
5
+ personasDirDescription: "Storage URI of the directory holding the persona files (personas:/ by default, which is self/personas in the home directory; without ':/' the first segment is taken as the storage root name, and a single bare name goes to the data root)",
6
+ statePersistenceLabel: 'State persistence',
7
+ statePersistenceDescription: 'When on, the persona state (mood, current activity and other outputFormat fields) carries over within the same session and is injected into the next prompt',
8
+ timeInjectionLabel: 'Time injection',
9
+ timeInjectionDescription: 'When on, the current time is injected into the system prompt automatically',
10
+ timeZoneLabel: 'Time zone (IANA)',
11
+ timeZoneDescription: "For example Asia/Shanghai, Europe/London, America/New_York. Empty uses the system's local time zone.",
12
+ personaLabel: 'Persona',
13
+ personaDescription: 'Persona card name (without the extension); default is the default card in the persona directory, or the built-in default persona when there is none',
14
+ extraLabel: 'Extra prompt',
15
+ extraDescription: 'Appended after the persona prompt and before the structured output instructions; nothing is appended when empty',
16
+ plainLabel: 'No structured output',
17
+ plainDescription: 'Ignore the card’s structured output format and reply in plain text',
18
+ renderLabel: 'Client-side JSON rendering',
19
+ renderDescription: 'Hand the structured output JSON to the client as is, without extracting the reply field',
20
+ renderCard: 'Per card',
21
+ renderOn: 'On',
22
+ renderOff: 'Off',
23
+ clearType: 'Session persona state',
24
+ clearedAll: 'Cleared the persona state of all sessions',
25
+ clearedSession: 'Cleared the persona state of this session',
26
+ clearFailed: 'Clearing persona state failed: {error}',
27
+ });
28
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,WAAW,EAAE,gBAAgB;IAC7B,gBAAgB,EAAE,mBAAmB;IACrC,sBAAsB,EACpB,8OAA8O;IAChP,qBAAqB,EAAE,mBAAmB;IAC1C,2BAA2B,EACzB,6JAA6J;IAC/J,kBAAkB,EAAE,gBAAgB;IACpC,wBAAwB,EAAE,4EAA4E;IACtG,aAAa,EAAE,kBAAkB;IACjC,mBAAmB,EACjB,sGAAsG;IACxG,YAAY,EAAE,SAAS;IACvB,kBAAkB,EAChB,qJAAqJ;IACvJ,UAAU,EAAE,cAAc;IAC1B,gBAAgB,EACd,iHAAiH;IACnH,UAAU,EAAE,sBAAsB;IAClC,gBAAgB,EAAE,oEAAoE;IACtF,WAAW,EAAE,4BAA4B;IACzC,iBAAiB,EAAE,yFAAyF;IAC5G,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE,2CAA2C;IACvD,cAAc,EAAE,2CAA2C;IAC3D,WAAW,EAAE,wCAAwC;CACtD,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ declare const SOURCE: {
2
+ readonly displayName: "人设系统";
3
+ readonly personasDirLabel: "人设目录";
4
+ readonly personasDirDescription: "人设文件所在目录的 storage URI(默认 personas:/,即家目录的 self/personas;不含 ':/' 时首段视为存储根名,单段裸名归 data 根)";
5
+ readonly statePersistenceLabel: "状态持久化";
6
+ readonly statePersistenceDescription: "启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中";
7
+ readonly timeInjectionLabel: "时间注入";
8
+ readonly timeInjectionDescription: "启用后,当前时间会自动注入到系统提示中";
9
+ readonly timeZoneLabel: "时区 (IANA)";
10
+ readonly timeZoneDescription: "例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。";
11
+ readonly personaLabel: "人设";
12
+ readonly personaDescription: "角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色";
13
+ readonly extraLabel: "额外提示";
14
+ readonly extraDescription: "追加在人设提示之后、结构化输出格式说明之前;为空时不追加";
15
+ readonly plainLabel: "不用结构化输出";
16
+ readonly plainDescription: "不用角色卡的结构化输出格式,回复纯文本";
17
+ readonly renderLabel: "客户端渲染 JSON";
18
+ readonly renderDescription: "结构化输出的 JSON 原样交给客户端渲染,不提取回复字段";
19
+ readonly renderCard: "按角色卡";
20
+ readonly renderOn: "开";
21
+ readonly renderOff: "关";
22
+ readonly clearType: "会话角色状态";
23
+ readonly clearedAll: "所有会话角色状态已清空";
24
+ readonly clearedSession: "当前会话角色状态已清空";
25
+ readonly clearFailed: "角色状态清空失败:{error}";
26
+ };
27
+ export type Source = typeof SOURCE;
28
+ export declare const t: import("@aalis/schema-i18n").TextFactory<{
29
+ readonly displayName: "人设系统";
30
+ readonly personasDirLabel: "人设目录";
31
+ readonly personasDirDescription: "人设文件所在目录的 storage URI(默认 personas:/,即家目录的 self/personas;不含 ':/' 时首段视为存储根名,单段裸名归 data 根)";
32
+ readonly statePersistenceLabel: "状态持久化";
33
+ readonly statePersistenceDescription: "启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中";
34
+ readonly timeInjectionLabel: "时间注入";
35
+ readonly timeInjectionDescription: "启用后,当前时间会自动注入到系统提示中";
36
+ readonly timeZoneLabel: "时区 (IANA)";
37
+ readonly timeZoneDescription: "例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。";
38
+ readonly personaLabel: "人设";
39
+ readonly personaDescription: "角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色";
40
+ readonly extraLabel: "额外提示";
41
+ readonly extraDescription: "追加在人设提示之后、结构化输出格式说明之前;为空时不追加";
42
+ readonly plainLabel: "不用结构化输出";
43
+ readonly plainDescription: "不用角色卡的结构化输出格式,回复纯文本";
44
+ readonly renderLabel: "客户端渲染 JSON";
45
+ readonly renderDescription: "结构化输出的 JSON 原样交给客户端渲染,不提取回复字段";
46
+ readonly renderCard: "按角色卡";
47
+ readonly renderOn: "开";
48
+ readonly renderOff: "关";
49
+ readonly clearType: "会话角色状态";
50
+ readonly clearedAll: "所有会话角色状态已清空";
51
+ readonly clearedSession: "当前会话角色状态已清空";
52
+ readonly clearFailed: "角色状态清空失败:{error}";
53
+ }>;
54
+ export {};
55
+ //# sourceMappingURL=texts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;CA2BF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;EAAmG,CAAC"}
package/dist/texts.js ADDED
@@ -0,0 +1,31 @@
1
+ // 本插件自己的原文字典:显示名、配置项,按会话字段的称呼、说明与选项,/clear 的类型显示名与结果行
2
+ import { defineTexts } from '@aalis/schema-i18n';
3
+ import en from './locales/en.js';
4
+ const SOURCE = {
5
+ displayName: '人设系统',
6
+ personasDirLabel: '人设目录',
7
+ personasDirDescription: "人设文件所在目录的 storage URI(默认 personas:/,即家目录的 self/personas;不含 ':/' 时首段视为存储根名,单段裸名归 data 根)",
8
+ statePersistenceLabel: '状态持久化',
9
+ statePersistenceDescription: '启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中',
10
+ timeInjectionLabel: '时间注入',
11
+ timeInjectionDescription: '启用后,当前时间会自动注入到系统提示中',
12
+ timeZoneLabel: '时区 (IANA)',
13
+ timeZoneDescription: '例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。',
14
+ personaLabel: '人设',
15
+ personaDescription: '角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色',
16
+ extraLabel: '额外提示',
17
+ extraDescription: '追加在人设提示之后、结构化输出格式说明之前;为空时不追加',
18
+ plainLabel: '不用结构化输出',
19
+ plainDescription: '不用角色卡的结构化输出格式,回复纯文本',
20
+ renderLabel: '客户端渲染 JSON',
21
+ renderDescription: '结构化输出的 JSON 原样交给客户端渲染,不提取回复字段',
22
+ renderCard: '按角色卡',
23
+ renderOn: '开',
24
+ renderOff: '关',
25
+ clearType: '会话角色状态',
26
+ clearedAll: '所有会话角色状态已清空',
27
+ clearedSession: '当前会话角色状态已清空',
28
+ clearFailed: '角色状态清空失败:{error}',
29
+ };
30
+ export const t = defineTexts({ ns: '@aalis/plugin-persona', language: 'zh-CN', source: SOURCE, locales: { en } });
31
+ //# sourceMappingURL=texts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,MAAM;IACnB,gBAAgB,EAAE,MAAM;IACxB,sBAAsB,EACpB,yFAAyF;IAC3F,qBAAqB,EAAE,OAAO;IAC9B,2BAA2B,EACzB,uDAAuD;IACzD,kBAAkB,EAAE,MAAM;IAC1B,wBAAwB,EAAE,qBAAqB;IAC/C,aAAa,EAAE,WAAW;IAC1B,mBAAmB,EAAE,6DAA6D;IAClF,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,kDAAkD;IACtE,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,8BAA8B;IAChD,UAAU,EAAE,SAAS;IACrB,gBAAgB,EAAE,qBAAqB;IACvC,WAAW,EAAE,YAAY;IACzB,iBAAiB,EAAE,+BAA+B;IAClD,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,aAAa;IACzB,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,kBAAkB;CACvB,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/plugin-persona",
3
- "version": "0.12.1",
3
+ "version": "0.14.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,32 +24,39 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@aalis/schema-config": ">=0.14.0 <1.0.0",
28
- "@aalis/api-gateway": ">=0.8.0 <1.0.0",
29
- "@aalis/api-persona": ">=0.8.1 <1.0.0",
30
- "@aalis/api-platform": ">=0.8.0 <1.0.0",
31
- "@aalis/api-session-manager": ">=0.10.0 <1.0.0",
32
- "@aalis/api-storage": ">=0.7.0 <1.0.0",
33
- "@aalis/util-json-repair": ">=0.5.4 <1.0.0",
27
+ "@aalis/schema-config": ">=0.16.0 <1.0.0",
28
+ "@aalis/api-persona": ">=0.10.0 <1.0.0",
29
+ "@aalis/api-platform": ">=0.11.0 <1.0.0",
30
+ "@aalis/api-session-manager": ">=0.12.0 <1.0.0",
31
+ "@aalis/api-storage": ">=0.9.0 <1.0.0",
32
+ "@aalis/util-json-repair": ">=0.6.0 <1.0.0",
34
33
  "yaml": "^2.7.0",
35
- "@aalis/api-hooks": ">=0.1.0 <1.0.0"
34
+ "@aalis/api-hooks": ">=0.3.0 <1.0.0",
35
+ "@aalis/api-contributions": ">=0.2.0 <1.0.0",
36
+ "@aalis/api-host-config": ">=0.3.0 <1.0.0",
37
+ "@aalis/api-session-settings": ">=0.1.0 <1.0.0",
38
+ "@aalis/schema-i18n": ">=0.1.0 <1.0.0",
39
+ "@aalis/schema-message": ">=0.11.0 <1.0.0"
36
40
  },
37
41
  "devDependencies": {
38
42
  "@types/node": "^22.0.0",
39
43
  "typescript": "^5.7.0",
40
- "@aalis/api-agent": "0.9.1",
41
- "@aalis/core": "0.19.1",
42
- "@aalis/api-memory": "0.7.1"
44
+ "@aalis/core": "0.21.0",
45
+ "@aalis/api-agent": "0.11.0",
46
+ "@aalis/api-memory": "0.9.0"
43
47
  },
44
48
  "peerDependencies": {
45
- "@aalis/core": ">=0.18.0 <1.0.0"
49
+ "@aalis/core": ">=0.21.0 <1.0.0"
46
50
  },
47
51
  "aalis": {
48
52
  "service": {
49
53
  "optional": [
50
54
  "platform",
51
55
  "storage",
52
- "session-manager"
56
+ "session-manager",
57
+ "host-config",
58
+ "session-settings",
59
+ "contributions"
53
60
  ],
54
61
  "provides": [
55
62
  "persona"