@huyuan-ai/cli 1.3.1 → 1.4.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/UPGRADE.md +11 -0
- package/dist/integrations/opencli/commands/doubao-ask-with-citations.d.ts.map +1 -1
- package/dist/integrations/opencli/commands/doubao-ask-with-citations.js +38 -102
- package/dist/integrations/opencli/commands/doubao-ask-with-citations.js.map +1 -1
- package/dist/sites/doubao/ask-with-citations.d.ts +0 -1
- package/dist/sites/doubao/ask-with-citations.d.ts.map +1 -1
- package/dist/sites/doubao/ask-with-citations.js +0 -1
- package/dist/sites/doubao/ask-with-citations.js.map +1 -1
- package/dist/sites/doubao/register.d.ts.map +1 -1
- package/dist/sites/doubao/register.js +0 -1
- package/dist/sites/doubao/register.js.map +1 -1
- package/package.json +1 -1
package/UPGRADE.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
本文档说明各版本相对上一版本的重要变更,以及从旧版升级时的注意点。
|
|
4
4
|
|
|
5
|
+
## 1.4.0
|
|
6
|
+
|
|
7
|
+
### 变更
|
|
8
|
+
|
|
9
|
+
- **`doubao ask-with-citations`**:助手正文判稳与内置 `doubao/ask` 对齐,复用 OpenCLI `waitForDoubaoResponse`(不再使用自研的 `message_text_content` 间隔采样)。
|
|
10
|
+
- **引用采集**:回答返回后增加短轮询,等待参考资料入口(按钮或「参考 N 篇资料」文案)就绪后再打开面板抓取 JSON,减少空引用。
|
|
11
|
+
|
|
12
|
+
### 破坏性变更
|
|
13
|
+
|
|
14
|
+
- 移除 CLI 选项 **`--answer-stable-gap-ms`**。若脚本或别名中仍传入该参数,请删除;正文等待时长仅由 **`--timeout`** 控制(与 `doubao ask` 一致)。
|
|
15
|
+
|
|
5
16
|
## 1.3.1
|
|
6
17
|
|
|
7
18
|
### 修复
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubao-ask-with-citations.d.ts","sourceRoot":"","sources":["../../../../src/integrations/opencli/commands/doubao-ask-with-citations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doubao-ask-with-citations.d.ts","sourceRoot":"","sources":["../../../../src/integrations/opencli/commands/doubao-ask-with-citations.ts"],"names":[],"mappings":"AAiBA,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B"}
|
|
@@ -2,8 +2,41 @@
|
|
|
2
2
|
* 注册 `doubao/ask-with-citations`:在 `bootstrapOpencli` 的 discoverClis 之后执行,
|
|
3
3
|
* 与内置 `doubao/ask` 并列,不修改 vendor/opencli 源码。
|
|
4
4
|
*/
|
|
5
|
-
import { DOUBAO_DOMAIN, sendDoubaoMessage } from '../../../../vendor/opencli/dist/clis/doubao/utils.js';
|
|
5
|
+
import { DOUBAO_DOMAIN, getDoubaoTranscriptLines, getDoubaoVisibleTurns, sendDoubaoMessage, waitForDoubaoResponse, } from '../../../../vendor/opencli/dist/clis/doubao/utils.js';
|
|
6
6
|
import { cli, Strategy } from '../../../../vendor/opencli/dist/src/registry.js';
|
|
7
|
+
/** 回答结束后,等待引用入口挂载的最长时间(秒),与 `timeout` 无关的独立预算 */
|
|
8
|
+
const REFERENCE_ENTRY_WAIT_SECONDS = 30;
|
|
9
|
+
/** 不点击:仅探测最后一条助手消息是否已出现引用入口(按钮或「参考 N 篇资料」文案) */
|
|
10
|
+
function getReferenceEntryProbeScript() {
|
|
11
|
+
return `
|
|
12
|
+
(() => {
|
|
13
|
+
const messageList = document.querySelector('[data-testid="message-list"]');
|
|
14
|
+
if (!messageList) return { ready: false };
|
|
15
|
+
const unions = Array.from(messageList.querySelectorAll('[data-testid="union_message"]'));
|
|
16
|
+
const lastAssistant = [...unions].reverse().find((u) =>
|
|
17
|
+
u.querySelector('[data-testid="receive_message"]')
|
|
18
|
+
);
|
|
19
|
+
if (!lastAssistant) return { ready: false };
|
|
20
|
+
const btn = lastAssistant.querySelector('[data-testid="search-reference-ui-v3"]');
|
|
21
|
+
if (btn && btn instanceof HTMLElement) return { ready: true };
|
|
22
|
+
const textProbe = lastAssistant.innerText || '';
|
|
23
|
+
if (/参考\\s*\\d+\\s*篇资料/.test(textProbe)) return { ready: true };
|
|
24
|
+
return { ready: false };
|
|
25
|
+
})()
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
async function waitForReferenceEntryReady(page, maxSeconds, verbose) {
|
|
29
|
+
const deadline = Date.now() + Math.max(1, maxSeconds) * 1000;
|
|
30
|
+
while (Date.now() < deadline) {
|
|
31
|
+
const raw = await page.evaluate(getReferenceEntryProbeScript());
|
|
32
|
+
if (raw?.ready)
|
|
33
|
+
return;
|
|
34
|
+
await page.wait(0.5);
|
|
35
|
+
}
|
|
36
|
+
if (verbose) {
|
|
37
|
+
process.stderr.write('[doubao/ask-with-citations] 引用入口在超时内未就绪,仍将尝试打开面板\n');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
7
40
|
function getClickReferenceEntryScript() {
|
|
8
41
|
return `
|
|
9
42
|
(() => {
|
|
@@ -100,99 +133,6 @@ function normalizeUrl(url) {
|
|
|
100
133
|
return url;
|
|
101
134
|
}
|
|
102
135
|
}
|
|
103
|
-
/**
|
|
104
|
-
* 豆包检索会先出现「正在搜索」「找到 N 篇资料」等占位。
|
|
105
|
-
* 判稳改为:仅看最后一条 message_text_content;占位文本不参与终稿;流式结束用两次采样间隔(默认 5s)文本相同。
|
|
106
|
-
*/
|
|
107
|
-
function isTransientAssistantReply(text) {
|
|
108
|
-
const t = text.trim();
|
|
109
|
-
if (!t)
|
|
110
|
-
return true;
|
|
111
|
-
if (t.length > 200)
|
|
112
|
-
return false;
|
|
113
|
-
if (/\n/.test(t) && t.length > 80)
|
|
114
|
-
return false;
|
|
115
|
-
// 检索中间态:仅「篇数/找到」提示、尚无正文(易与最终回答混淆)
|
|
116
|
-
if (t.length <= 48) {
|
|
117
|
-
if (/^(已)?找到\s*\d+\s*篇(资料|结果|内容)?[\s…\.]*$/u.test(t))
|
|
118
|
-
return true;
|
|
119
|
-
if (/^参考\s*\d+\s*篇资料[\s…\.]*$/u.test(t))
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
// 短句且仍以「正在…搜索/思考」为主,视为占位(避免「正在为您搜索…」等变体被当成最终答案)
|
|
123
|
-
if (t.length < 100 && /^正在(联网)?(搜索|检索|查找|分析|思考|生成)/u.test(t))
|
|
124
|
-
return true;
|
|
125
|
-
if (t.length < 80
|
|
126
|
-
&& /^(搜索中|思考中|生成中|请稍候|加载中|联网搜索|正在联网)/u.test(t)) {
|
|
127
|
-
return true;
|
|
128
|
-
}
|
|
129
|
-
return /^(正在(联网)?(搜索|检索|查找|分析|思考|生成)[\s…\.]*|搜索中|思考中|生成中|请稍候|加载中|联网搜索[中…\.]*)$/u.test(t);
|
|
130
|
-
}
|
|
131
|
-
function sanitizeAssistantText(value, promptText) {
|
|
132
|
-
return value
|
|
133
|
-
.replace(promptText, '')
|
|
134
|
-
.replace(/内容由豆包 AI 生成/g, '')
|
|
135
|
-
.replace(/在此处拖放文件/g, '')
|
|
136
|
-
.replace(/文件数量:.*$/g, '')
|
|
137
|
-
.replace(/\{"namedChunks".*$/g, '')
|
|
138
|
-
.replace(/window\._SSR_DATA.*$/g, '')
|
|
139
|
-
.trim();
|
|
140
|
-
}
|
|
141
|
-
/** 与 Puppeteer 脚本一致:最后一条助手 message_text_content 的 innerText */
|
|
142
|
-
function getLastAssistantMessageTextContentScript() {
|
|
143
|
-
return `
|
|
144
|
-
(() => {
|
|
145
|
-
const nodes = document.querySelectorAll(
|
|
146
|
-
'[data-testid="receive_message"] [data-testid="message_text_content"]'
|
|
147
|
-
);
|
|
148
|
-
const last = nodes.length > 0 ? nodes[nodes.length - 1] : null;
|
|
149
|
-
return last ? (last.innerText || '').trim() : '';
|
|
150
|
-
})()
|
|
151
|
-
`;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* 以 DOM 最后一条正文为准;间隔 stableGapMs 两次采样文本相同且非占位 → 流式结束(借鉴外部 Puppeteer 判稳)。
|
|
155
|
-
*/
|
|
156
|
-
async function waitForLastMessageTextContentStable(page, promptText, timeoutSeconds, stableGapMs) {
|
|
157
|
-
const deadline = Date.now() + Math.max(1, timeoutSeconds) * 1000;
|
|
158
|
-
const gapSec = Math.max(0.5, stableGapMs / 1000);
|
|
159
|
-
let lastSubstantive = '';
|
|
160
|
-
let firstPoll = true;
|
|
161
|
-
while (Date.now() < deadline) {
|
|
162
|
-
const raw = await page.evaluate(getLastAssistantMessageTextContentScript());
|
|
163
|
-
const t1 = sanitizeAssistantText(typeof raw === 'string' ? raw : '', promptText);
|
|
164
|
-
if (!t1) {
|
|
165
|
-
const rest = (deadline - Date.now()) / 1000;
|
|
166
|
-
await page.wait(Math.min(firstPoll ? 1.5 : 2, Math.max(0.1, rest)));
|
|
167
|
-
firstPoll = false;
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
if (isTransientAssistantReply(t1)) {
|
|
171
|
-
const rest = (deadline - Date.now()) / 1000;
|
|
172
|
-
await page.wait(Math.min(2, Math.max(0.1, rest)));
|
|
173
|
-
firstPoll = false;
|
|
174
|
-
continue;
|
|
175
|
-
}
|
|
176
|
-
lastSubstantive = t1;
|
|
177
|
-
const remainingMs = deadline - Date.now();
|
|
178
|
-
if (remainingMs < stableGapMs) {
|
|
179
|
-
break;
|
|
180
|
-
}
|
|
181
|
-
await page.wait(gapSec);
|
|
182
|
-
const raw2 = await page.evaluate(getLastAssistantMessageTextContentScript());
|
|
183
|
-
const t2 = sanitizeAssistantText(typeof raw2 === 'string' ? raw2 : '', promptText);
|
|
184
|
-
if (t1 === t2 && !isTransientAssistantReply(t2)) {
|
|
185
|
-
return t2;
|
|
186
|
-
}
|
|
187
|
-
if (!isTransientAssistantReply(t2) && t2.length > 0) {
|
|
188
|
-
lastSubstantive = t2;
|
|
189
|
-
}
|
|
190
|
-
const rest = (deadline - Date.now()) / 1000;
|
|
191
|
-
await page.wait(Math.min(1, Math.max(0.1, rest)));
|
|
192
|
-
firstPoll = false;
|
|
193
|
-
}
|
|
194
|
-
return lastSubstantive;
|
|
195
|
-
}
|
|
196
136
|
async function waitForCitationPanel(page, maxSeconds) {
|
|
197
137
|
const deadline = Date.now() + maxSeconds * 1000;
|
|
198
138
|
while (Date.now() < deadline) {
|
|
@@ -285,12 +225,6 @@ cli({
|
|
|
285
225
|
help: 'Max seconds to wait for reference panel items after click (default: 25)',
|
|
286
226
|
default: '25',
|
|
287
227
|
},
|
|
288
|
-
{
|
|
289
|
-
name: 'answerStableGapMs',
|
|
290
|
-
required: false,
|
|
291
|
-
help: 'Milliseconds between two samples of last assistant message_text_content for stream-done (default: 5000)',
|
|
292
|
-
default: '5000',
|
|
293
|
-
},
|
|
294
228
|
],
|
|
295
229
|
columns: ['Role', 'Text', 'Citations'],
|
|
296
230
|
func: async (page, kwargs, debug) => {
|
|
@@ -298,10 +232,11 @@ cli({
|
|
|
298
232
|
const timeout = parseInt(String(kwargs.timeout ?? '60'), 10) || 60;
|
|
299
233
|
const summaryMaxChars = parseInt(String(kwargs.citationSummaryMaxChars ?? '2000'), 10);
|
|
300
234
|
const panelWaitSeconds = parseInt(String(kwargs.citationPanelWaitSeconds ?? '25'), 10) || 25;
|
|
301
|
-
const answerStableGapMs = Math.max(500, parseInt(String(kwargs.answerStableGapMs ?? '5000'), 10) || 5000);
|
|
302
235
|
const verbose = debug === true;
|
|
236
|
+
const beforeTurns = await getDoubaoVisibleTurns(page);
|
|
237
|
+
const beforeLines = await getDoubaoTranscriptLines(page);
|
|
303
238
|
await sendDoubaoMessage(page, text);
|
|
304
|
-
const response = await
|
|
239
|
+
const response = await waitForDoubaoResponse(page, beforeLines, beforeTurns, text, timeout);
|
|
305
240
|
if (!response) {
|
|
306
241
|
return [
|
|
307
242
|
{ Role: 'User', Text: text, Citations: '[]' },
|
|
@@ -312,6 +247,7 @@ cli({
|
|
|
312
247
|
},
|
|
313
248
|
];
|
|
314
249
|
}
|
|
250
|
+
await waitForReferenceEntryReady(page, REFERENCE_ENTRY_WAIT_SECONDS, verbose);
|
|
315
251
|
const { citations } = await collectCitationsFromPanel(page, { panelWaitSeconds, summaryMaxChars: Number.isFinite(summaryMaxChars) ? summaryMaxChars : 2000 }, verbose);
|
|
316
252
|
const citationsJson = JSON.stringify(citations);
|
|
317
253
|
return [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doubao-ask-with-citations.js","sourceRoot":"","sources":["../../../../src/integrations/opencli/commands/doubao-ask-with-citations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"doubao-ask-with-citations.js","sourceRoot":"","sources":["../../../../src/integrations/opencli/commands/doubao-ask-with-citations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-with-citations.d.ts","sourceRoot":"","sources":["../../../src/sites/doubao/ask-with-citations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,
|
|
1
|
+
{"version":3,"file":"ask-with-citations.d.ts","sourceRoot":"","sources":["../../../src/sites/doubao/ask-with-citations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,MAAM,MAAM,gCAAgC,GAAG;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,EAAE,MAAM,CAAC;IAChC,wBAAwB,EAAE,MAAM,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gCAAgC,EACzC,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAoBf"}
|
|
@@ -14,7 +14,6 @@ export async function runDoubaoAskWithCitations(prompt, options, command) {
|
|
|
14
14
|
timeout: options.timeout ?? '60',
|
|
15
15
|
citationSummaryMaxChars: options.citationSummaryMaxChars ?? '2000',
|
|
16
16
|
citationPanelWaitSeconds: options.citationPanelWaitSeconds ?? '25',
|
|
17
|
-
answerStableGapMs: options.answerStableGapMs ?? '5000',
|
|
18
17
|
};
|
|
19
18
|
await executeOpencliRegistryCommand('doubao/ask-with-citations', kwargs, command, { format: options.format, verbose: options.verbose });
|
|
20
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ask-with-citations.js","sourceRoot":"","sources":["../../../src/sites/doubao/ask-with-citations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wDAAwD,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ask-with-citations.js","sourceRoot":"","sources":["../../../src/sites/doubao/ask-with-citations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,6BAA6B,EAAE,MAAM,wDAAwD,CAAC;AACvG,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAU7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAc,EACd,OAAyC,EACzC,OAAgB;IAEhB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAqC;QAC/C,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAChC,uBAAuB,EAAE,OAAO,CAAC,uBAAuB,IAAI,MAAM;QAClE,wBAAwB,EAAE,OAAO,CAAC,wBAAwB,IAAI,IAAI;KACnE,CAAC;IAEF,MAAM,6BAA6B,CACjC,2BAA2B,EAC3B,MAAM,EACN,OAAO,EACP,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CACrD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/sites/doubao/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/sites/doubao/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOzC,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8CrD"}
|
|
@@ -20,7 +20,6 @@ export function registerDoubao(program) {
|
|
|
20
20
|
.option('--timeout <seconds>', '等待回复的最长时间(秒)', '60')
|
|
21
21
|
.option('--citation-summary-max-chars <n>', '每条引用摘要的最大字符数(0 表示不截断)', '2000')
|
|
22
22
|
.option('--citation-panel-wait-seconds <n>', '点击「参考 N 篇资料」后等待面板出现的最长时间(秒)', '25')
|
|
23
|
-
.option('--answer-stable-gap-ms <ms>', '判定助手正文流式结束:两次采样最后一条 message_text_content 的间隔(毫秒,默认 5000)', '5000')
|
|
24
23
|
.option('-f, --format <fmt>', '输出格式: json, table, plain, yaml, md, csv(默认 json)', 'json')
|
|
25
24
|
.option('-v, --verbose', '调试输出', false)
|
|
26
25
|
.action(async (prompt, options, command) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/sites/doubao/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAC;AAClE,OAAO,EACL,yBAAyB,GAE1B,MAAM,yBAAyB,CAAC;AAEjC,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE3E,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iBAAiB,CAAC;SAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,cAAc,EAAE,IAAI,CAAC;SACnD,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,EAAE,OAAO,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC;SACtC,MAAM,CACL,KAAK,EACH,MAAc,EACd,OAA4B,EAC5B,OAAgB,EAChB,EAAE;QACF,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEJ,MAAM;SACH,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,cAAc,EAAE,IAAI,CAAC;SACnD,MAAM,CACL,kCAAkC,EAClC,uBAAuB,EACvB,MAAM,CACP;SACA,MAAM,CACL,mCAAmC,EACnC,6BAA6B,EAC7B,IAAI,CACL;SACA,MAAM,
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/sites/doubao/register.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAA4B,MAAM,UAAU,CAAC;AAClE,OAAO,EACL,yBAAyB,GAE1B,MAAM,yBAAyB,CAAC;AAEjC,8DAA8D;AAC9D,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAE3E,MAAM;SACH,OAAO,CAAC,KAAK,CAAC;SACd,WAAW,CAAC,iBAAiB,CAAC;SAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,cAAc,EAAE,IAAI,CAAC;SACnD,MAAM,CAAC,oBAAoB,EAAE,yCAAyC,EAAE,OAAO,CAAC;SAChF,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC;SACtC,MAAM,CACL,KAAK,EACH,MAAc,EACd,OAA4B,EAC5B,OAAgB,EAChB,EAAE;QACF,MAAM,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;IAEJ,MAAM;SACH,OAAO,CAAC,oBAAoB,CAAC;SAC7B,WAAW,CAAC,iCAAiC,CAAC;SAC9C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;SAC5B,MAAM,CAAC,qBAAqB,EAAE,cAAc,EAAE,IAAI,CAAC;SACnD,MAAM,CACL,kCAAkC,EAClC,uBAAuB,EACvB,MAAM,CACP;SACA,MAAM,CACL,mCAAmC,EACnC,6BAA6B,EAC7B,IAAI,CACL;SACA,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,EAAE,MAAM,CAAC;SACxF,MAAM,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC;SACtC,MAAM,CACL,KAAK,EACH,MAAc,EACd,OAAyC,EACzC,OAAgB,EAChB,EAAE;QACF,MAAM,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,CACF,CAAC;AACN,CAAC"}
|