@xgjktech/xg_cwork_im 1.19.17 → 1.19.18

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.js CHANGED
@@ -51,7 +51,7 @@ function isGatewayProcess() {
51
51
  */
52
52
  const MODULE_EPOCH = nextModuleEpoch();
53
53
  /** 插件自身版本。⚠️ 手动维护:每次发版 bump package.json version 时同步改这里。 */
54
- const PLUGIN_VERSION = "1.19.17";
54
+ const PLUGIN_VERSION = "1.19.18";
55
55
  console.log(`[xg_cwork_im] [reload] module imported epoch=${MODULE_EPOCH} pid=${process.pid} title=${(process.title || "(none)").trim()} ` +
56
56
  `pluginVersion=${PLUGIN_VERSION}`);
57
57
  const plugin = {
@@ -38,11 +38,11 @@ function makeAction(eventId, overrides = {}) {
38
38
  function writeAction(stateDir, action) {
39
39
  const db = new DatabaseSync(resolvePlanDbPath(stateDir));
40
40
  try {
41
- db.exec(`
42
- CREATE TABLE IF NOT EXISTS actions (
43
- event_id TEXT PRIMARY KEY,
44
- doc TEXT NOT NULL
45
- ) STRICT;
41
+ db.exec(`
42
+ CREATE TABLE IF NOT EXISTS actions (
43
+ event_id TEXT PRIMARY KEY,
44
+ doc TEXT NOT NULL
45
+ ) STRICT;
46
46
  `);
47
47
  db.prepare("INSERT INTO actions (event_id, doc) VALUES (?, ?)").run(action.eventId, JSON.stringify(action));
48
48
  }
@@ -76,24 +76,24 @@ describe("buildAgentContextPromptBlock nasVolumes", () => {
76
76
  background,
77
77
  },
78
78
  });
79
- assert.equal(result.block, `## 当前项目
80
-
81
- ### 本次会话文件目录
82
- 本次会话需要读取的文件位于以下已授权目录:
83
- - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读)
84
- - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读)
85
- - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写)
86
- - 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
87
-
88
- ### 目录用途
89
- - **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
90
-
91
- ### 操作约束
92
- - 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
93
- - 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
94
-
95
- ## 项目背景
96
-
79
+ assert.equal(result.block, `## 当前项目
80
+
81
+ ### 本次会话文件目录
82
+ 本次会话需要读取的文件位于以下已授权目录:
83
+ - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/deliverables\`(只读)
84
+ - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0000\`(只读)
85
+ - \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`(可读写)
86
+ - 首选文件写入目录:\`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\`
87
+
88
+ ### 目录用途
89
+ - **项目产出**:项目相关文件优先保存到可写目录 \`/workspace/touqian/2026/08/3090270000000000307/CP202205250005/sequences/0001/input\` 或其子目录。
90
+
91
+ ### 操作约束
92
+ - 仅在上述已授权 NAS 目录下读取或处理项目文件;不要在 workspace 其他位置查找类似目录。
93
+ - 对用户统一称为「本项目」,不要提及 OpenClaw workspace 等实现细节。
94
+
95
+ ## 项目背景
96
+
97
97
  ${background}`);
98
98
  });
99
99
  });
@@ -7,7 +7,6 @@ import type { ImStreamClient } from "./connection.js";
7
7
  import type { BotIdentity, WsMessageParams, XgImConfig } from "./types.js";
8
8
  import type { AutoRouteResult } from "./auto-model-router.js";
9
9
  import type { InboundTrigger } from "./inbound-terminal-state.js";
10
- import type { NasVolume } from "./agent-context-types.js";
11
10
  export interface PendingDispatch {
12
11
  route: {
13
12
  sessionKey: string;
@@ -17,8 +16,6 @@ export interface PendingDispatch {
17
16
  params: WsMessageParams;
18
17
  currentIdentity: BotIdentity;
19
18
  agentWorkspaceDir?: string;
20
- /** 本会话 NAS 挂载声明;同一 sessionKey 下必须保持不变。 */
21
- nasVolumes?: NasVolume[];
22
19
  /** 本条消息单轮模型(OpenClaw replyOptions.modelOverride) */
23
20
  modelOverride?: string;
24
21
  /** 本条消息单轮推理等级(OpenClaw replyOptions.thinkingLevelOverride;用户显式 /think 时不设) */
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-session-queue.d.ts","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IACzB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAC/C,cAAc,EAAE,MAAM,UAAU,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,GAAG,CAAC;IACR,WAAW,EAAE,MAAM,cAAc,CAAC;CACrC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA8GhG"}
1
+ {"version":3,"file":"gateway-session-queue.d.ts","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,eAAe,CAAC;IACxB,eAAe,EAAE,WAAW,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8EAA8E;IAC9E,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gDAAgD;IAChD,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,YAAY;IACZ,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,yCAAyC;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IAC/C,cAAc,EAAE,MAAM,UAAU,CAAC;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,GAAG,CAAC;IACR,WAAW,EAAE,MAAM,cAAc,CAAC;CACrC,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA6GhG"}
@@ -57,7 +57,6 @@ export function createRunWithSessionQueue(options) {
57
57
  currentIdentity: pending.currentIdentity,
58
58
  streamClient,
59
59
  agentWorkspaceDir: pending.agentWorkspaceDir,
60
- nasVolumes: pending.nasVolumes,
61
60
  modelOverride: pending.modelOverride,
62
61
  thinkingLevelOverride: pending.thinkingLevelOverride,
63
62
  autoRouteMeta: pending.autoRouteMeta,
@@ -1 +1 @@
1
- {"version":3,"file":"gateway-session-queue.js","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway-session-queue.js","sourceRoot":"","sources":["../../src/gateway-session-queue.ts"],"names":[],"mappings":"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"}
@@ -18,15 +18,15 @@ function seedAgentDb(baseDir, agentId, rows) {
18
18
  const dbPath = join(agentDir, "openclaw-agent.sqlite");
19
19
  const db = new DatabaseSync(dbPath);
20
20
  try {
21
- db.exec(`
22
- CREATE TABLE session_progress_cards (
23
- session_key TEXT NOT NULL PRIMARY KEY,
24
- markdown TEXT,
25
- steps_json TEXT,
26
- revision INTEGER NOT NULL,
27
- created_at INTEGER NOT NULL,
28
- updated_at INTEGER NOT NULL
29
- ) STRICT;
21
+ db.exec(`
22
+ CREATE TABLE session_progress_cards (
23
+ session_key TEXT NOT NULL PRIMARY KEY,
24
+ markdown TEXT,
25
+ steps_json TEXT,
26
+ revision INTEGER NOT NULL,
27
+ created_at INTEGER NOT NULL,
28
+ updated_at INTEGER NOT NULL
29
+ ) STRICT;
30
30
  `);
31
31
  const insert = db.prepare("INSERT INTO session_progress_cards (session_key, markdown, steps_json, revision, created_at, updated_at) VALUES (?, ?, ?, ?, ?, ?);");
32
32
  for (const row of rows) {
@@ -21,15 +21,15 @@ function seedCard(baseDir, agentId, sessionKey, opts) {
21
21
  mkdirSync(agentDir, { recursive: true });
22
22
  const db = new DatabaseSync(join(agentDir, "openclaw-agent.sqlite"));
23
23
  try {
24
- db.exec(`
25
- CREATE TABLE IF NOT EXISTS session_progress_cards (
26
- session_key TEXT NOT NULL PRIMARY KEY,
27
- markdown TEXT,
28
- steps_json TEXT,
29
- revision INTEGER NOT NULL,
30
- created_at INTEGER NOT NULL,
31
- updated_at INTEGER NOT NULL
32
- ) STRICT;
24
+ db.exec(`
25
+ CREATE TABLE IF NOT EXISTS session_progress_cards (
26
+ session_key TEXT NOT NULL PRIMARY KEY,
27
+ markdown TEXT,
28
+ steps_json TEXT,
29
+ revision INTEGER NOT NULL,
30
+ created_at INTEGER NOT NULL,
31
+ updated_at INTEGER NOT NULL
32
+ ) STRICT;
33
33
  `);
34
34
  db.prepare("INSERT INTO session_progress_cards (session_key, markdown, steps_json, revision, created_at, updated_at) VALUES (?, ?, ?, 1, ?, ?);").run(sessionKey, opts.markdown ?? null, opts.stepsJson, opts.createdAtMs ?? NOW - HOUR, opts.updatedAtMs ?? NOW - 5 * 60_000);
35
35
  }
@@ -21,6 +21,11 @@ function pickUsageFields(entry) {
21
21
  ...(entry.inputTokens != null ? { inputTokens: entry.inputTokens } : {}),
22
22
  ...(entry.outputTokens != null ? { outputTokens: entry.outputTokens } : {}),
23
23
  ...(entry.totalTokens != null ? { totalTokens: entry.totalTokens } : {}),
24
+ ...(entry.totalTokensFresh != null ? { totalTokensFresh: entry.totalTokensFresh } : {}),
25
+ ...(entry.contextTokens != null ? { contextTokens: entry.contextTokens } : {}),
26
+ ...(entry.contextBudgetStatus?.promptBudgetBeforeReserve != null
27
+ ? { promptBudgetBeforeReserve: entry.contextBudgetStatus.promptBudgetBeforeReserve }
28
+ : {}),
24
29
  ...(entry.cacheRead != null ? { cacheRead: entry.cacheRead } : {}),
25
30
  ...(entry.cacheWrite != null ? { cacheWrite: entry.cacheWrite } : {}),
26
31
  ...(entry.estimatedCostUsd != null ? { estimatedCostUsd: entry.estimatedCostUsd } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"run-usage-session.js","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,gBAAgB,EAChB,wBAAwB,GAE3B,MAAM,2CAA2C,CAAC;AAGnD,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,wBAAwB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IACxC,OAAO;QACH,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"run-usage-session.js","sourceRoot":"","sources":["../../src/run-usage-session.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,gBAAgB,EAChB,wBAAwB,GAE3B,MAAM,2CAA2C,CAAC;AAGnD,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACG,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU;QAAE,OAAO,SAAS,CAAC;IAEhD,MAAM,KAAK,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,EAAE,QAAQ,EAAE,GAAG,wBAAwB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,KAAmB;IACxC,OAAO;QACH,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9E,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,yBAAyB,IAAI,IAAI;YAC5D,CAAC,CAAC,EAAE,yBAAyB,EAAE,KAAK,CAAC,mBAAmB,CAAC,yBAAyB,EAAE;YACpF,CAAC,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,GAAG,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,GAAG,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1F,CAAC;AACN,CAAC"}
@@ -13,6 +13,12 @@ export type SessionUsageFields = {
13
13
  inputTokens?: number;
14
14
  outputTokens?: number;
15
15
  totalTokens?: number;
16
+ /** totalTokens 是否为最新上下文快照;false 表示已过期,前端以「~」近似展示 */
17
+ totalTokensFresh?: boolean;
18
+ /** 模型上下文窗口上限(圆环分母兜底) */
19
+ contextTokens?: number;
20
+ /** 提示词预算(contextBudgetStatus.promptBudgetBeforeReserve,圆环优先分母) */
21
+ promptBudgetBeforeReserve?: number;
16
22
  cacheRead?: number;
17
23
  cacheWrite?: number;
18
24
  estimatedCostUsd?: number;
@@ -24,6 +30,9 @@ export type RunUsageSnapshot = {
24
30
  inputTokens?: number;
25
31
  outputTokens?: number;
26
32
  totalTokens?: number;
33
+ totalTokensFresh?: boolean;
34
+ contextTokens?: number;
35
+ promptBudgetBeforeReserve?: number;
27
36
  cacheReadTokens?: number;
28
37
  cacheWriteTokens?: number;
29
38
  estimatedCostUsd?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"run-usage.d.ts","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,MAAM,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAaF,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAa/E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,EAC5C,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,gBAAgB,GAAG,SAAS,CAoC9B;AAkBD,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnD,oBAAoB,CAMtB"}
1
+ {"version":3,"file":"run-usage.d.ts","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kEAAkE;IAClE,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,MAAM,EAAE,SAAS,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAaF,0CAA0C;AAC1C,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,GAAG,SAAS,GAAG,OAAO,CAa/E;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,EAC5C,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1B,gBAAgB,GAAG,SAAS,CA0C9B;AAuBD,wBAAgB,sBAAsB,CAClC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GACnD,oBAAoB,CAMtB"}
@@ -49,10 +49,12 @@ export function buildRunUsageFromSessionEntry(entry, opts) {
49
49
  const estimatedCostUsd = typeof entry.estimatedCostUsd === "number" && Number.isFinite(entry.estimatedCostUsd)
50
50
  ? entry.estimatedCostUsd
51
51
  : undefined;
52
- let totalTokens = positiveInt(entry.totalTokens);
53
- if (totalTokens == null && inputTokens != null && outputTokens != null) {
54
- totalTokens = inputTokens + outputTokens;
55
- }
52
+ // totalTokens 为 OpenClaw 上下文 prompt 快照,用于「当前会话用量圆环」的分子。
53
+ // 缺 entry 值时**不做** input+output 兜底,避免把计费合计误当上下文占用。
54
+ const totalTokens = positiveInt(entry.totalTokens);
55
+ const totalTokensFresh = typeof entry.totalTokensFresh === "boolean" ? entry.totalTokensFresh : undefined;
56
+ const contextTokens = positiveInt(entry.contextTokens);
57
+ const promptBudgetBeforeReserve = positiveInt(entry.promptBudgetBeforeReserve);
56
58
  const snapshot = {
57
59
  ...(provider ? { provider } : {}),
58
60
  ...(model ? { model } : {}),
@@ -60,6 +62,9 @@ export function buildRunUsageFromSessionEntry(entry, opts) {
60
62
  ...(inputTokens != null ? { inputTokens } : {}),
61
63
  ...(outputTokens != null ? { outputTokens } : {}),
62
64
  ...(totalTokens != null ? { totalTokens } : {}),
65
+ ...(totalTokensFresh != null ? { totalTokensFresh } : {}),
66
+ ...(contextTokens != null ? { contextTokens } : {}),
67
+ ...(promptBudgetBeforeReserve != null ? { promptBudgetBeforeReserve } : {}),
63
68
  ...(cacheReadTokens != null ? { cacheReadTokens } : {}),
64
69
  ...(cacheWriteTokens != null ? { cacheWriteTokens } : {}),
65
70
  ...(estimatedCostUsd != null ? { estimatedCostUsd } : {}),
@@ -77,6 +82,11 @@ function runUsageSnapshotToWire(usage) {
77
82
  ...(usage.inputTokens != null ? { inputTokens: usage.inputTokens } : {}),
78
83
  ...(usage.outputTokens != null ? { outputTokens: usage.outputTokens } : {}),
79
84
  ...(usage.totalTokens != null ? { totalTokens: usage.totalTokens } : {}),
85
+ ...(usage.totalTokensFresh != null ? { totalTokensFresh: usage.totalTokensFresh } : {}),
86
+ ...(usage.contextTokens != null ? { contextTokens: usage.contextTokens } : {}),
87
+ ...(usage.promptBudgetBeforeReserve != null
88
+ ? { promptBudgetBeforeReserve: usage.promptBudgetBeforeReserve }
89
+ : {}),
80
90
  ...(usage.cacheReadTokens != null ? { cacheReadTokens: usage.cacheReadTokens } : {}),
81
91
  ...(usage.cacheWriteTokens != null ? { cacheWriteTokens: usage.cacheWriteTokens } : {}),
82
92
  ...(usage.estimatedCostUsd != null ? { estimatedCostUsd: usage.estimatedCostUsd } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"run-usage.js","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-usage.js","sourceRoot":"","sources":["../../src/run-usage.ts"],"names":[],"mappings":"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"}
@@ -19,12 +19,29 @@ describe("buildRunUsageFromSessionEntry", () => {
19
19
  assert.equal(u.modelRef, "openai/gpt-5.5");
20
20
  assert.equal(u.inputTokens, 1_200);
21
21
  assert.equal(u.outputTokens, 89);
22
- assert.equal(u.totalTokens, 1_289);
22
+ assert.equal(u.totalTokens, undefined);
23
23
  assert.equal(u.cacheReadTokens, 10_000);
24
24
  assert.equal(u.cacheWriteTokens, 0);
25
25
  assert.equal(u.estimatedCostUsd, 0.0123);
26
26
  assert.equal(u.runId, "run-1");
27
27
  });
28
+ it("maps context ring fields (contextTokens / promptBudget / freshness)", () => {
29
+ const u = buildRunUsageFromSessionEntry({
30
+ modelProvider: "openai",
31
+ model: "gpt-5.5",
32
+ inputTokens: 100,
33
+ outputTokens: 20,
34
+ totalTokens: 26_002,
35
+ totalTokensFresh: false,
36
+ contextTokens: 200_000,
37
+ promptBudgetBeforeReserve: 180_000,
38
+ });
39
+ assert.ok(u);
40
+ assert.equal(u.totalTokens, 26_002);
41
+ assert.equal(u.totalTokensFresh, false);
42
+ assert.equal(u.contextTokens, 200_000);
43
+ assert.equal(u.promptBudgetBeforeReserve, 180_000);
44
+ });
28
45
  it("prefers explicit totalTokens from session", () => {
29
46
  const u = buildRunUsageFromSessionEntry({
30
47
  modelProvider: "xgjk-newapi",
@@ -36,6 +53,15 @@ describe("buildRunUsageFromSessionEntry", () => {
36
53
  assert.ok(u);
37
54
  assert.equal(u.totalTokens, 26_002);
38
55
  });
56
+ it("does not fall back to input+output for totalTokens (context snapshot only)", () => {
57
+ const u = buildRunUsageFromSessionEntry({
58
+ inputTokens: 10,
59
+ outputTokens: 2,
60
+ });
61
+ assert.ok(u);
62
+ assert.equal(u.totalTokens, undefined);
63
+ assert.equal(u.modelRef, undefined);
64
+ });
39
65
  it("accepts model-only entry", () => {
40
66
  const u = buildRunUsageFromSessionEntry({
41
67
  modelProvider: "openai",
@@ -46,15 +72,6 @@ describe("buildRunUsageFromSessionEntry", () => {
46
72
  assert.equal(u.inputTokens, undefined);
47
73
  assert.equal(hasReportableUsage(u), true);
48
74
  });
49
- it("accepts tokens-only entry", () => {
50
- const u = buildRunUsageFromSessionEntry({
51
- inputTokens: 10,
52
- outputTokens: 2,
53
- });
54
- assert.ok(u);
55
- assert.equal(u.totalTokens, 12);
56
- assert.equal(u.modelRef, undefined);
57
- });
58
75
  it("returns undefined for empty entry", () => {
59
76
  assert.equal(buildRunUsageFromSessionEntry({}), undefined);
60
77
  assert.equal(buildRunUsageFromSessionEntry(null), undefined);
@@ -86,5 +103,25 @@ describe("toImStreamRunUsageData", () => {
86
103
  },
87
104
  });
88
105
  });
106
+ it("passes context ring fields through to the wire payload", () => {
107
+ const data = toImStreamRunUsageData({
108
+ inputTokens: 100,
109
+ outputTokens: 5,
110
+ totalTokens: 26_002,
111
+ totalTokensFresh: true,
112
+ contextTokens: 200_000,
113
+ promptBudgetBeforeReserve: 180_000,
114
+ source: "session",
115
+ }, { groupId: "g1", replyToMsgId: "m1" });
116
+ assert.deepEqual(data.usage, {
117
+ inputTokens: 100,
118
+ outputTokens: 5,
119
+ totalTokens: 26_002,
120
+ totalTokensFresh: true,
121
+ contextTokens: 200_000,
122
+ promptBudgetBeforeReserve: 180_000,
123
+ source: "session",
124
+ });
125
+ });
89
126
  });
90
127
  //# sourceMappingURL=run-usage.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"run-usage.test.js","sourceRoot":"","sources":["../../src/run-usage.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-usage.test.js","sourceRoot":"","sources":["../../src/run-usage.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xgjktech/xg_cwork_im",
3
- "version": "1.19.17",
3
+ "version": "1.19.18",
4
4
  "description": "XG CWork IM channel plugin for OpenClaw",
5
5
  "keywords": [
6
6
  "bot",
@@ -1,14 +0,0 @@
1
- /**
2
- * 单聊轮次结束但未向 IM 发出正文时的兜底话术(如模型输出 NO_REPLY、deliver 未被调用)。
3
- */
4
- import type { WsMessageParams } from "./types.js";
5
- export declare function shouldSendSingleChatNoReplyFallback(args: {
6
- params: WsMessageParams;
7
- hasFirstReply: boolean;
8
- deliverCallCount: number;
9
- dispatchError?: unknown;
10
- lastDeliverError?: unknown;
11
- }): boolean;
12
- /** 单聊静默轮次兜底:简短告知并引导重试。 */
13
- export declare function buildSingleChatNoReplyFallbackText(): string;
14
- //# sourceMappingURL=single-chat-no-reply-fallback.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-chat-no-reply-fallback.d.ts","sourceRoot":"","sources":["../../src/single-chat-no-reply-fallback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,wBAAgB,mCAAmC,CAAC,IAAI,EAAE;IACtD,MAAM,EAAE,eAAe,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAMV;AAED,0BAA0B;AAC1B,wBAAgB,kCAAkC,IAAI,MAAM,CAE3D"}
@@ -1,20 +0,0 @@
1
- /**
2
- * 单聊轮次结束但未向 IM 发出正文时的兜底话术(如模型输出 NO_REPLY、deliver 未被调用)。
3
- */
4
- import { isImSingleChat } from "./inbound-chat-type.js";
5
- export function shouldSendSingleChatNoReplyFallback(args) {
6
- if (args.hasFirstReply)
7
- return false;
8
- if (args.dispatchError !== undefined || args.lastDeliverError !== undefined)
9
- return false;
10
- if (!isImSingleChat(args.params))
11
- return false;
12
- if (args.deliverCallCount > 0)
13
- return false;
14
- return true;
15
- }
16
- /** 单聊静默轮次兜底:简短告知并引导重试。 */
17
- export function buildSingleChatNoReplyFallbackText() {
18
- return "消息已收到,但这一轮没有生成回复。请换个说法或把需求说具体一些后再试。";
19
- }
20
- //# sourceMappingURL=single-chat-no-reply-fallback.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"single-chat-no-reply-fallback.js","sourceRoot":"","sources":["../../src/single-chat-no-reply-fallback.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,MAAM,UAAU,mCAAmC,CAAC,IAMnD;IACG,IAAI,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IACrC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC1F,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,kCAAkC;IAC9C,OAAO,qCAAqC,CAAC;AACjD,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
- import type { ImStreamClient } from "./connection.js";
3
- interface SubagentWsTarget {
4
- streamClient: ImStreamClient;
5
- groupId: string;
6
- replyToMsgId: string;
7
- }
8
- export declare function registerSubagentProgressHooks(api: OpenClawPluginApi): void;
9
- export declare function setSubagentWsTarget(childSessionKey: string, target: SubagentWsTarget): void;
10
- export {};
11
- //# sourceMappingURL=subagent-progress-hooks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subagent-progress-hooks.d.ts","sourceRoot":"","sources":["../../src/subagent-progress-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,UAAU,gBAAgB;IACtB,YAAY,EAAE,cAAc,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB;AAYD,wBAAgB,6BAA6B,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,CAqC1E;AAED,wBAAgB,mBAAmB,CAC/B,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,gBAAgB,GACzB,IAAI,CAEN"}
@@ -1,41 +0,0 @@
1
- const subagentWsTargets = new Map();
2
- export function registerSubagentProgressHooks(api) {
3
- // subagent_progress is not in the installed SDK's PluginHookName type union,
4
- // but the runtime supports it. Cast to bypass the type check.
5
- api.on("subagent_progress", async (event) => {
6
- const childSessionKey = event.childSessionKey;
7
- if (!childSessionKey)
8
- return;
9
- const target = subagentWsTargets.get(childSessionKey);
10
- if (!target)
11
- return;
12
- let displayText;
13
- if (event.phase === "started") {
14
- displayText = "子任务已启动";
15
- }
16
- else if (event.phase === "ended") {
17
- displayText = event.outcome === "ok" ? "子任务已完成" : `子任务异常: ${event.outcome ?? "unknown"}`;
18
- }
19
- else {
20
- displayText = "子任务状态更新";
21
- }
22
- try {
23
- await target.streamClient.streamProgress({
24
- groupId: target.groupId,
25
- replyToMsgId: target.replyToMsgId,
26
- event: "RUN_EVENT",
27
- displayText,
28
- });
29
- }
30
- catch {
31
- // WS best-effort: don't propagate errors from progress events
32
- }
33
- if (event.phase === "ended") {
34
- subagentWsTargets.delete(childSessionKey);
35
- }
36
- });
37
- }
38
- export function setSubagentWsTarget(childSessionKey, target) {
39
- subagentWsTargets.set(childSessionKey, target);
40
- }
41
- //# sourceMappingURL=subagent-progress-hooks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"subagent-progress-hooks.js","sourceRoot":"","sources":["../../src/subagent-progress-hooks.ts"],"names":[],"mappings":"AAiBA,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;AAE9D,MAAM,UAAU,6BAA6B,CAAC,GAAsB;IAChE,6EAA6E;IAC7E,8DAA8D;IAC7D,GAAG,CAAC,EAA8F,CAC/F,mBAAmB,EACnB,KAAK,EAAE,KAA4B,EAAE,EAAE;QACnC,MAAM,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC9C,IAAI,CAAC,eAAe;YAAE,OAAO;QAE7B,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,WAAmB,CAAC;QACxB,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC5B,WAAW,GAAG,QAAQ,CAAC;QAC3B,CAAC;aAAM,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YACjC,WAAW,GAAG,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;QAC7F,CAAC;aAAM,CAAC;YACJ,WAAW,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,IAAI,CAAC;YACD,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC;gBACrC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,KAAK,EAAE,WAAW;gBAClB,WAAW;aACd,CAAC,CAAC;QACP,CAAC;QAAC,MAAM,CAAC;YACL,8DAA8D;QAClE,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;YAC1B,iBAAiB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC,CACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAC/B,eAAuB,EACvB,MAAwB;IAExB,iBAAiB,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC"}