speccore 8.3.193 → 8.3.195
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/README.en.md +212 -60
- package/README.md +183 -331
- package/dist/cli.js +16 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/analyze.d.ts +1 -0
- package/dist/commands/analyze.d.ts.map +1 -1
- package/dist/commands/analyze.js +160 -25
- package/dist/commands/analyze.js.map +1 -1
- package/dist/commands/change.js +51 -13
- package/dist/commands/change.js.map +1 -1
- package/dist/commands/doc2spec.d.ts.map +1 -1
- package/dist/commands/doc2spec.js +201 -7
- package/dist/commands/doc2spec.js.map +1 -1
- package/dist/commands/execute.js +59 -7
- package/dist/commands/execute.js.map +1 -1
- package/dist/commands/iteration/split.d.ts.map +1 -1
- package/dist/commands/iteration/split.js +51 -12
- package/dist/commands/iteration/split.js.map +1 -1
- package/dist/commands/plan.d.ts.map +1 -1
- package/dist/commands/plan.js +84 -12
- package/dist/commands/plan.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +63 -3
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/req-doc.d.ts +1 -0
- package/dist/commands/req-doc.d.ts.map +1 -1
- package/dist/commands/req-doc.js +145 -54
- package/dist/commands/req-doc.js.map +1 -1
- package/dist/commands/run.d.ts +2 -0
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +45 -8
- package/dist/commands/run.js.map +1 -1
- package/dist/core/ask-engine.d.ts.map +1 -1
- package/dist/core/ask-engine.js +30 -4
- package/dist/core/ask-engine.js.map +1 -1
- package/dist/core/ask-llm.d.ts +12 -0
- package/dist/core/ask-llm.d.ts.map +1 -1
- package/dist/core/ask-llm.js +101 -4
- package/dist/core/ask-llm.js.map +1 -1
- package/dist/core/content-delivery.d.ts +9 -1
- package/dist/core/content-delivery.d.ts.map +1 -1
- package/dist/core/content-delivery.js +11 -0
- package/dist/core/content-delivery.js.map +1 -1
- package/dist/core/context-budget.d.ts +62 -0
- package/dist/core/context-budget.d.ts.map +1 -0
- package/dist/core/context-budget.js +128 -0
- package/dist/core/context-budget.js.map +1 -0
- package/dist/core/intent-recognition.d.ts.map +1 -1
- package/dist/core/intent-recognition.js +24 -6
- package/dist/core/intent-recognition.js.map +1 -1
- package/dist/core/pipeline-engine.d.ts +2 -0
- package/dist/core/pipeline-engine.d.ts.map +1 -1
- package/dist/core/pipeline-engine.js +9 -1
- package/dist/core/pipeline-engine.js.map +1 -1
- package/dist/core/prompt-builder.d.ts.map +1 -1
- package/dist/core/prompt-builder.js +18 -68
- package/dist/core/prompt-builder.js.map +1 -1
- package/dist/core/spec-paths.js +1 -1
- package/dist/core/spec-paths.js.map +1 -1
- package/dist/core/unified-config.d.ts +16 -0
- package/dist/core/unified-config.d.ts.map +1 -1
- package/dist/core/unified-config.js +57 -0
- package/dist/core/unified-config.js.map +1 -1
- package/dist/core/unit-context-assembler.js +21 -14
- package/dist/core/unit-context-assembler.js.map +1 -1
- package/dist/core/verify-engine.d.ts +1 -0
- package/dist/core/verify-engine.d.ts.map +1 -1
- package/dist/core/verify-engine.js +11 -8
- package/dist/core/verify-engine.js.map +1 -1
- package/package.json +1 -1
|
@@ -419,7 +419,38 @@ async function iterationSplitCommand(options) {
|
|
|
419
419
|
// v8.3.166+: 输出 subagent 标记(task-decomposer)
|
|
420
420
|
// v8.3.169+: 尝试通过 Qoder SDK 直接调度子 Agent
|
|
421
421
|
const promptText = (0, prompt_builder_1.formatPrompt)(prompt) + featureBatchHint;
|
|
422
|
-
|
|
422
|
+
let llmHandled = false;
|
|
423
|
+
let aiProvider = 'host';
|
|
424
|
+
try {
|
|
425
|
+
const { loadConfigWithMeta } = await Promise.resolve().then(() => __importStar(require('../../core/unified-config')));
|
|
426
|
+
const { config } = await loadConfigWithMeta();
|
|
427
|
+
aiProvider = config.settings.ai?.provider || 'host';
|
|
428
|
+
}
|
|
429
|
+
catch { /* 默认 host */ }
|
|
430
|
+
// v8.3.196+: 用自配 LLM 生成任务 JSON,成功设 llmHandled(供 llm 优先 / auto 回退复用)
|
|
431
|
+
const tryLlmTaskify = async () => {
|
|
432
|
+
try {
|
|
433
|
+
const { callLlm, resolveAiProviders } = await Promise.resolve().then(() => __importStar(require('../../core/ask-llm')));
|
|
434
|
+
const providers = await resolveAiProviders('taskify');
|
|
435
|
+
const llmContent = await callLlm('你是任务拆解专家。请按 prompt 要求拆分任务,只输出 JSON 数组格式的任务列表,不要输出 JSON 以外的文字。', promptText, providers, 4000);
|
|
436
|
+
if (llmContent) {
|
|
437
|
+
options.response = llmContent;
|
|
438
|
+
llmHandled = true;
|
|
439
|
+
return true;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
catch (e) {
|
|
443
|
+
logger_1.logger.debug(`[split] 自配 LLM 生成失败: ${e.message}`);
|
|
444
|
+
}
|
|
445
|
+
return false;
|
|
446
|
+
};
|
|
447
|
+
// llm 优先模式:先用自配 LLM,失败回退宿主
|
|
448
|
+
if (aiProvider === 'llm') {
|
|
449
|
+
if (!(await tryLlmTaskify())) {
|
|
450
|
+
logger_1.logger.warn('⚠️ [llm] 自配 LLM 未生成任务,回退宿主模式');
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
if (!llmHandled && !process.stdout.isTTY) {
|
|
423
454
|
try {
|
|
424
455
|
const agentCtx = {
|
|
425
456
|
subagent: 'task-decomposer',
|
|
@@ -442,21 +473,29 @@ async function iterationSplitCommand(options) {
|
|
|
442
473
|
process.exitCode = 0;
|
|
443
474
|
return;
|
|
444
475
|
}
|
|
476
|
+
// 宿主 SDK 调度失败(success=false)→ auto 时回退自配 LLM
|
|
477
|
+
if (aiProvider === 'auto')
|
|
478
|
+
await tryLlmTaskify();
|
|
445
479
|
}
|
|
446
480
|
catch (e) {
|
|
447
|
-
logger_1.logger.debug(`[split] SDK 调度尝试失败: ${e.message}
|
|
481
|
+
logger_1.logger.debug(`[split] SDK 调度尝试失败: ${e.message}`);
|
|
482
|
+
// 宿主异常 → auto 时回退自配 LLM
|
|
483
|
+
if (aiProvider === 'auto')
|
|
484
|
+
await tryLlmTaskify();
|
|
448
485
|
}
|
|
449
486
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
487
|
+
if (!llmHandled) {
|
|
488
|
+
const output = [
|
|
489
|
+
`[SPECCORE_SESSION_AGENT: task-decomposer]`,
|
|
490
|
+
`[SPECCORE_CONTEXT_BUDGET: 12000]`,
|
|
491
|
+
`[SPECCORE_CONTEXT_TYPE: full]`,
|
|
492
|
+
``,
|
|
493
|
+
promptText,
|
|
494
|
+
].join('\n');
|
|
495
|
+
process.stdout.write(output);
|
|
496
|
+
process.exitCode = 10;
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
460
499
|
}
|
|
461
500
|
// ── Response 模式 ──
|
|
462
501
|
if (options.response) {
|