@cloud411716/fancy-webnovel 0.1.74 → 0.1.76
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/infra.js +14 -0
- package/package.json +1 -1
- package/plugins/fancy-bootstrap/index.js +3 -1
- package/plugins/fancy-scan/index.js +3 -24
package/infra.js
CHANGED
|
@@ -66,3 +66,17 @@ export function spawnScript(cmd, args, { timeout = 30000, cwd } = {}) {
|
|
|
66
66
|
proc.on('error', (err) => resolve({ ok: false, output: '', error: err.message }));
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
|
+
|
|
70
|
+
// --------------------------------------------------------------------------
|
|
71
|
+
// activity — Activity Line 计时器(显示 Running… + 实时计时)
|
|
72
|
+
// 调用 startActivity() 返回 stop 函数,进入新阶段时先 stop 再 start
|
|
73
|
+
// --------------------------------------------------------------------------
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @param {import('@deepseek-ai/dsh-session').Session} session
|
|
77
|
+
* @returns {() => void} stop — 调用后停止计时
|
|
78
|
+
*/
|
|
79
|
+
export function startActivity(session) {
|
|
80
|
+
session.append('turn/start', { source: 'fancy-plugin' });
|
|
81
|
+
return () => session.append('turn/end', { source: 'fancy-plugin' });
|
|
82
|
+
}
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
5
|
import { dirname, join } from 'path';
|
|
6
6
|
import { existsSync } from 'fs';
|
|
7
|
-
import { notify, spawnScript } from '../../infra.js';
|
|
7
|
+
import { notify, spawnScript, startActivity } from '../../infra.js';
|
|
8
8
|
import { bootstrap } from './templates.js';
|
|
9
9
|
|
|
10
10
|
export const inject = ['commands', 'userQuestions'];
|
|
@@ -79,7 +79,9 @@ export async function apply(ctx) {
|
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
notify(session, bootstrap.notify({ type: 'initializing', projectRoot }));
|
|
82
|
+
const stopActivity = startActivity(session);
|
|
82
83
|
const result = await spawnScript('node', [join(SCRIPTS_DIR, 'init.js'), projectRoot], { timeout: 30000 });
|
|
84
|
+
stopActivity();
|
|
83
85
|
|
|
84
86
|
if (result.ok) {
|
|
85
87
|
notify(session, bootstrap.notify({ type: 'success' }));
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { fileURLToPath } from 'url';
|
|
5
5
|
import { dirname, join } from 'path';
|
|
6
6
|
import { existsSync } from 'fs';
|
|
7
|
-
import { notify, llmFollowup, spawnScript } from '../../infra.js';
|
|
7
|
+
import { notify, llmFollowup, spawnScript, startActivity } from '../../infra.js';
|
|
8
8
|
import { scan, PLATFORM_TABLE, platformLabel } from './templates.js';
|
|
9
9
|
|
|
10
10
|
export const inject = ['commands', 'userQuestions'];
|
|
@@ -20,23 +20,6 @@ export async function apply(ctx) {
|
|
|
20
20
|
const session = invocation.agent.session;
|
|
21
21
|
const rawInput = invocation.rawInput ? invocation.rawInput.trim() : '';
|
|
22
22
|
|
|
23
|
-
// ─── TEST: 验证直接用 invocation.agent.session 追加事件 ─────────────────
|
|
24
|
-
{
|
|
25
|
-
// invocation.agent.session 就是 Session 对象,直接 append
|
|
26
|
-
const s = invocation.agent.session;
|
|
27
|
-
notify(session, `[TEST] session.id = ${s?.id ?? 'UNDEFINED'}`);
|
|
28
|
-
if (s) {
|
|
29
|
-
// 追加一个 fake tool/call,看 status bar 是否出现进度
|
|
30
|
-
s.append('tool/call', {
|
|
31
|
-
callId: 'test-call-1',
|
|
32
|
-
name: 'fancy-scan/progress',
|
|
33
|
-
arguments: JSON.stringify({ platform: 'test', length: 'test' }),
|
|
34
|
-
});
|
|
35
|
-
notify(session, '[TEST] session.append(tool/call) 成功');
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
// ─── TEST 结束 ───────────────────────────────────────────────────────
|
|
39
|
-
|
|
40
23
|
// 获取项目根
|
|
41
24
|
let projectRoot = rawInput ? rawInput.split(/\s+/)[0] : '';
|
|
42
25
|
if (!projectRoot) projectRoot = process.cwd();
|
|
@@ -109,19 +92,15 @@ export async function apply(ctx) {
|
|
|
109
92
|
|
|
110
93
|
notify(session, scan.notify({ type: 'collecting', platform, length }));
|
|
111
94
|
|
|
112
|
-
|
|
113
|
-
const tick = setInterval(() => {
|
|
114
|
-
session.append('turn/start', { source: 'fancy-scan' });
|
|
115
|
-
}, 2000);
|
|
116
|
-
|
|
95
|
+
const stopActivity = startActivity(session);
|
|
117
96
|
const scriptResult = await spawnScript(
|
|
118
97
|
'node',
|
|
119
98
|
[join(SCAN_SCRIPTS_DIR, 'run-scan.js'),
|
|
120
99
|
'--project-root', projectRoot, '--platform', platform, '--length', length],
|
|
121
100
|
{ timeout: 120000 }
|
|
122
101
|
);
|
|
102
|
+
stopActivity();
|
|
123
103
|
|
|
124
|
-
clearInterval(tick);
|
|
125
104
|
if (!scriptResult.ok) {
|
|
126
105
|
const err = (typeof scriptResult.error === 'object' && scriptResult.error !== null)
|
|
127
106
|
? (scriptResult.error.message || JSON.stringify(scriptResult.error))
|