@wandoupeas/coding-forge 0.1.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/LICENSE +21 -0
- package/README.md +347 -0
- package/dist/agent/adapters/base.d.ts +9 -0
- package/dist/agent/adapters/base.d.ts.map +1 -0
- package/dist/agent/adapters/base.js +2 -0
- package/dist/agent/adapters/base.js.map +1 -0
- package/dist/agent/adapters/claude-code.d.ts +4 -0
- package/dist/agent/adapters/claude-code.d.ts.map +1 -0
- package/dist/agent/adapters/claude-code.js +25 -0
- package/dist/agent/adapters/claude-code.js.map +1 -0
- package/dist/agent/adapters/codex.d.ts +4 -0
- package/dist/agent/adapters/codex.d.ts.map +1 -0
- package/dist/agent/adapters/codex.js +27 -0
- package/dist/agent/adapters/codex.js.map +1 -0
- package/dist/agent/adapters/command-bridge.d.ts +67 -0
- package/dist/agent/adapters/command-bridge.d.ts.map +1 -0
- package/dist/agent/adapters/command-bridge.js +266 -0
- package/dist/agent/adapters/command-bridge.js.map +1 -0
- package/dist/agent/adapters/index.d.ts +7 -0
- package/dist/agent/adapters/index.d.ts.map +1 -0
- package/dist/agent/adapters/index.js +25 -0
- package/dist/agent/adapters/index.js.map +1 -0
- package/dist/agent/adapters/stub.d.ts +3 -0
- package/dist/agent/adapters/stub.d.ts.map +1 -0
- package/dist/agent/adapters/stub.js +66 -0
- package/dist/agent/adapters/stub.js.map +1 -0
- package/dist/agent/context.d.ts +36 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +16 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/handlers/index.d.ts +6 -0
- package/dist/agent/handlers/index.d.ts.map +1 -0
- package/dist/agent/handlers/index.js +61 -0
- package/dist/agent/handlers/index.js.map +1 -0
- package/dist/agent/index.d.ts +18 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +37 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/types.d.ts +21 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +5 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/cli/agent-briefing.d.ts +24 -0
- package/dist/cli/agent-briefing.d.ts.map +1 -0
- package/dist/cli/agent-briefing.js +133 -0
- package/dist/cli/agent-briefing.js.map +1 -0
- package/dist/cli/commands/checkpoint.d.ts +12 -0
- package/dist/cli/commands/checkpoint.d.ts.map +1 -0
- package/dist/cli/commands/checkpoint.js +86 -0
- package/dist/cli/commands/checkpoint.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +14 -0
- package/dist/cli/commands/dashboard.d.ts.map +1 -0
- package/dist/cli/commands/dashboard.js +192 -0
- package/dist/cli/commands/dashboard.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +27 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +425 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +19 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +303 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/knowledge.d.ts +6 -0
- package/dist/cli/commands/knowledge.d.ts.map +1 -0
- package/dist/cli/commands/knowledge.js +408 -0
- package/dist/cli/commands/knowledge.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +50 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +248 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/mailbox.d.ts +12 -0
- package/dist/cli/commands/mailbox.d.ts.map +1 -0
- package/dist/cli/commands/mailbox.js +131 -0
- package/dist/cli/commands/mailbox.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +43 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +313 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +16 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +211 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/resume.d.ts +102 -0
- package/dist/cli/commands/resume.d.ts.map +1 -0
- package/dist/cli/commands/resume.js +256 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/review.d.ts +13 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +91 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/run.d.ts +19 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +161 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/superpowers.d.ts +21 -0
- package/dist/cli/commands/superpowers.d.ts.map +1 -0
- package/dist/cli/commands/superpowers.js +135 -0
- package/dist/cli/commands/superpowers.js.map +1 -0
- package/dist/cli/commands/ui.d.ts +14 -0
- package/dist/cli/commands/ui.d.ts.map +1 -0
- package/dist/cli/commands/ui.js +41 -0
- package/dist/cli/commands/ui.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +11 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +46 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +9 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +69 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/logger.d.ts +18 -0
- package/dist/cli/utils/logger.d.ts.map +1 -0
- package/dist/cli/utils/logger.js +57 -0
- package/dist/cli/utils/logger.js.map +1 -0
- package/dist/core/checkpoint.d.ts +54 -0
- package/dist/core/checkpoint.d.ts.map +1 -0
- package/dist/core/checkpoint.js +227 -0
- package/dist/core/checkpoint.js.map +1 -0
- package/dist/core/context.d.ts +36 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +71 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/deliverable.d.ts +34 -0
- package/dist/core/deliverable.d.ts.map +1 -0
- package/dist/core/deliverable.js +125 -0
- package/dist/core/deliverable.js.map +1 -0
- package/dist/core/harness-hints.d.ts +43 -0
- package/dist/core/harness-hints.d.ts.map +1 -0
- package/dist/core/harness-hints.js +162 -0
- package/dist/core/harness-hints.js.map +1 -0
- package/dist/core/logger.d.ts +104 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +199 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/mailbox.d.ts +69 -0
- package/dist/core/mailbox.d.ts.map +1 -0
- package/dist/core/mailbox.js +225 -0
- package/dist/core/mailbox.js.map +1 -0
- package/dist/core/planning.d.ts +110 -0
- package/dist/core/planning.d.ts.map +1 -0
- package/dist/core/planning.js +832 -0
- package/dist/core/planning.js.map +1 -0
- package/dist/core/runtime.d.ts +22 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +364 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/session.d.ts +62 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +266 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/superpowers-registry.d.ts +20 -0
- package/dist/core/superpowers-registry.d.ts.map +1 -0
- package/dist/core/superpowers-registry.js +180 -0
- package/dist/core/superpowers-registry.js.map +1 -0
- package/dist/core/superpowers-runs.d.ts +19 -0
- package/dist/core/superpowers-runs.d.ts.map +1 -0
- package/dist/core/superpowers-runs.js +231 -0
- package/dist/core/superpowers-runs.js.map +1 -0
- package/dist/core/task.d.ts +43 -0
- package/dist/core/task.d.ts.map +1 -0
- package/dist/core/task.js +232 -0
- package/dist/core/task.js.map +1 -0
- package/dist/core/threads.d.ts +23 -0
- package/dist/core/threads.d.ts.map +1 -0
- package/dist/core/threads.js +92 -0
- package/dist/core/threads.js.map +1 -0
- package/dist/core/worker.d.ts +48 -0
- package/dist/core/worker.d.ts.map +1 -0
- package/dist/core/worker.js +181 -0
- package/dist/core/worker.js.map +1 -0
- package/dist/core/workflow-context.d.ts +16 -0
- package/dist/core/workflow-context.d.ts.map +1 -0
- package/dist/core/workflow-context.js +102 -0
- package/dist/core/workflow-context.js.map +1 -0
- package/dist/core/workspace.d.ts +13 -0
- package/dist/core/workspace.d.ts.map +1 -0
- package/dist/core/workspace.js +208 -0
- package/dist/core/workspace.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +55 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/types/index.d.ts +298 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/ui/assets/index-DLwnhrrc.css +1 -0
- package/dist/ui/assets/index-cDUGEuwi.js +234 -0
- package/dist/ui/http/handlers/project-artifacts.d.ts +3 -0
- package/dist/ui/http/handlers/project-artifacts.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-artifacts.js +20 -0
- package/dist/ui/http/handlers/project-artifacts.js.map +1 -0
- package/dist/ui/http/handlers/project-overview.d.ts +3 -0
- package/dist/ui/http/handlers/project-overview.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-overview.js +20 -0
- package/dist/ui/http/handlers/project-overview.js.map +1 -0
- package/dist/ui/http/handlers/project-recovery.d.ts +3 -0
- package/dist/ui/http/handlers/project-recovery.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-recovery.js +20 -0
- package/dist/ui/http/handlers/project-recovery.js.map +1 -0
- package/dist/ui/http/handlers/project-runtime.d.ts +3 -0
- package/dist/ui/http/handlers/project-runtime.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-runtime.js +20 -0
- package/dist/ui/http/handlers/project-runtime.js.map +1 -0
- package/dist/ui/http/handlers/project-tasks.d.ts +3 -0
- package/dist/ui/http/handlers/project-tasks.d.ts.map +1 -0
- package/dist/ui/http/handlers/project-tasks.js +20 -0
- package/dist/ui/http/handlers/project-tasks.js.map +1 -0
- package/dist/ui/http/handlers/projects.d.ts +23 -0
- package/dist/ui/http/handlers/projects.d.ts.map +1 -0
- package/dist/ui/http/handlers/projects.js +29 -0
- package/dist/ui/http/handlers/projects.js.map +1 -0
- package/dist/ui/http/router.d.ts +5 -0
- package/dist/ui/http/router.d.ts.map +1 -0
- package/dist/ui/http/router.js +81 -0
- package/dist/ui/http/router.js.map +1 -0
- package/dist/ui/http/server.d.ts +29 -0
- package/dist/ui/http/server.d.ts.map +1 -0
- package/dist/ui/http/server.js +143 -0
- package/dist/ui/http/server.js.map +1 -0
- package/dist/ui/index.html +13 -0
- package/dist/ui/project-registry.d.ts +9 -0
- package/dist/ui/project-registry.d.ts.map +1 -0
- package/dist/ui/project-registry.js +19 -0
- package/dist/ui/project-registry.js.map +1 -0
- package/dist/ui/project-scanner.d.ts +10 -0
- package/dist/ui/project-scanner.d.ts.map +1 -0
- package/dist/ui/project-scanner.js +135 -0
- package/dist/ui/project-scanner.js.map +1 -0
- package/dist/ui/read-models/artifacts.d.ts +58 -0
- package/dist/ui/read-models/artifacts.d.ts.map +1 -0
- package/dist/ui/read-models/artifacts.js +97 -0
- package/dist/ui/read-models/artifacts.js.map +1 -0
- package/dist/ui/read-models/overview.d.ts +38 -0
- package/dist/ui/read-models/overview.d.ts.map +1 -0
- package/dist/ui/read-models/overview.js +55 -0
- package/dist/ui/read-models/overview.js.map +1 -0
- package/dist/ui/read-models/recovery.d.ts +18 -0
- package/dist/ui/read-models/recovery.d.ts.map +1 -0
- package/dist/ui/read-models/recovery.js +26 -0
- package/dist/ui/read-models/recovery.js.map +1 -0
- package/dist/ui/read-models/runtime.d.ts +53 -0
- package/dist/ui/read-models/runtime.d.ts.map +1 -0
- package/dist/ui/read-models/runtime.js +86 -0
- package/dist/ui/read-models/runtime.js.map +1 -0
- package/dist/ui/read-models/tasks.d.ts +34 -0
- package/dist/ui/read-models/tasks.d.ts.map +1 -0
- package/dist/ui/read-models/tasks.js +46 -0
- package/dist/ui/read-models/tasks.js.map +1 -0
- package/dist/utils/config.d.ts +30 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +152 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/file.d.ts +24 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +42 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/lock.d.ts +7 -0
- package/dist/utils/lock.d.ts.map +1 -0
- package/dist/utils/lock.js +36 -0
- package/dist/utils/lock.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* init 命令 - 初始化项目
|
|
3
|
+
*/
|
|
4
|
+
import { Command } from 'commander';
|
|
5
|
+
import { existsSync } from 'fs';
|
|
6
|
+
import { join } from 'path';
|
|
7
|
+
import logger from '../utils/logger.js';
|
|
8
|
+
import { createWorkspace } from '../../core/workspace.js';
|
|
9
|
+
import { buildDoctorReport } from './doctor.js';
|
|
10
|
+
import { buildOnboardingSummary } from './onboard.js';
|
|
11
|
+
import { writeText } from '../../utils/file.js';
|
|
12
|
+
export function createInitCommand() {
|
|
13
|
+
const command = new Command('init')
|
|
14
|
+
.description('初始化 WebForge 项目')
|
|
15
|
+
.argument('<project-name>', '项目名称')
|
|
16
|
+
.option('-t, --template <template>', '项目模板', 'default')
|
|
17
|
+
.action(async (projectName, options) => {
|
|
18
|
+
try {
|
|
19
|
+
await initProject(projectName, options);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
logger.error(`初始化失败: ${error}`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return command;
|
|
27
|
+
}
|
|
28
|
+
export async function initProject(projectName, options, basePath = process.cwd()) {
|
|
29
|
+
logger.info(`初始化项目: ${projectName}\n`);
|
|
30
|
+
const projectRoot = join(basePath, projectName);
|
|
31
|
+
const state = await createWorkspace(projectRoot, {
|
|
32
|
+
projectName,
|
|
33
|
+
template: options.template
|
|
34
|
+
});
|
|
35
|
+
await scaffoldRepoContract(projectRoot, projectName);
|
|
36
|
+
const verification = await buildInitVerificationSummary(projectRoot);
|
|
37
|
+
if (!verification.ok) {
|
|
38
|
+
throw new Error(`初始化后自检失败: doctor.fail=${verification.doctorFailCount}, doctor.warn=${verification.doctorWarnCount}, onboard.canProceed=${verification.onboardCanProceed}, protocolDocExists=${verification.protocolDocExists}, shouldReadHasAgents=${verification.shouldReadHasAgents}`);
|
|
39
|
+
}
|
|
40
|
+
logger.h1('项目初始化完成!');
|
|
41
|
+
logger.h2('初始化后自检');
|
|
42
|
+
logger.info(`doctor: fail=${verification.doctorFailCount} | warn=${verification.doctorWarnCount}`);
|
|
43
|
+
logger.info(`onboard: canProceed=${verification.onboardCanProceed ? 'yes' : 'no'}`);
|
|
44
|
+
logger.info(`protocol doc: ${verification.protocolDocPath}`);
|
|
45
|
+
logger.info('验证入口: webforge verify init');
|
|
46
|
+
console.log();
|
|
47
|
+
logger.info('下一步:');
|
|
48
|
+
logger.list([
|
|
49
|
+
`cd ${projectName}`,
|
|
50
|
+
`workspace: ${state.paths.workspace}`,
|
|
51
|
+
`runtime: ${state.paths.runtime}`,
|
|
52
|
+
'webforge onboard --json',
|
|
53
|
+
'如需重跑初始化后自检,执行 webforge verify init',
|
|
54
|
+
'必要时再拆开执行 webforge doctor / webforge resume / webforge logs runtime',
|
|
55
|
+
'把需求文档放进 .webforge/knowledge/requirements/'
|
|
56
|
+
]);
|
|
57
|
+
console.log();
|
|
58
|
+
}
|
|
59
|
+
async function scaffoldRepoContract(projectRoot, projectName) {
|
|
60
|
+
await writeIfMissing(join(projectRoot, 'AGENTS.md'), renderAgentsTemplate(projectName));
|
|
61
|
+
await writeIfMissing(join(projectRoot, 'docs', 'agent-guide.md'), renderAgentGuideTemplate(projectName));
|
|
62
|
+
await writeIfMissing(join(projectRoot, 'docs', 'methodology', 'superpowers-integration.md'), renderSuperpowersTemplate(projectName));
|
|
63
|
+
await writeIfMissing(join(projectRoot, 'docs', 'examples', 'agent-onboarding-protocol.md'), renderOnboardingProtocolTemplate(projectName));
|
|
64
|
+
}
|
|
65
|
+
async function writeIfMissing(path, content) {
|
|
66
|
+
if (existsSync(path)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
await writeText(path, content);
|
|
70
|
+
}
|
|
71
|
+
export async function buildInitVerificationSummary(projectRoot) {
|
|
72
|
+
const protocolDocPath = join(projectRoot, 'docs', 'examples', 'agent-onboarding-protocol.md');
|
|
73
|
+
const [doctor, onboarding] = await Promise.all([
|
|
74
|
+
buildDoctorReport(projectRoot),
|
|
75
|
+
buildOnboardingSummary(projectRoot)
|
|
76
|
+
]);
|
|
77
|
+
const protocolDocExists = existsSync(protocolDocPath);
|
|
78
|
+
const shouldReadHasAgents = onboarding.shouldRead.includes('AGENTS.md');
|
|
79
|
+
const ok = protocolDocExists &&
|
|
80
|
+
doctor.summary.fail === 0 &&
|
|
81
|
+
doctor.summary.warn === 0 &&
|
|
82
|
+
onboarding.canProceed === true &&
|
|
83
|
+
shouldReadHasAgents;
|
|
84
|
+
return {
|
|
85
|
+
protocolDocPath,
|
|
86
|
+
protocolDocExists,
|
|
87
|
+
doctorFailCount: doctor.summary.fail,
|
|
88
|
+
doctorWarnCount: doctor.summary.warn,
|
|
89
|
+
onboardCanProceed: onboarding.canProceed,
|
|
90
|
+
shouldReadHasAgents,
|
|
91
|
+
ok
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function renderAgentsTemplate(projectName) {
|
|
95
|
+
return `# ${projectName} WebForge 契约
|
|
96
|
+
|
|
97
|
+
这个仓库使用 WebForge 作为 repo-side harness。
|
|
98
|
+
你应直接以 Codex / Claude Code 身份在仓库里工作,并把 \`.webforge/\` 作为状态真相源。
|
|
99
|
+
|
|
100
|
+
## 标准 Onboarding Protocol
|
|
101
|
+
|
|
102
|
+
进入仓库后,默认先按这条协议工作:
|
|
103
|
+
|
|
104
|
+
1. 运行 \`webforge onboard --json\`
|
|
105
|
+
2. 读取返回的 \`shouldRead\`
|
|
106
|
+
3. 检查 \`recommendedActions\`
|
|
107
|
+
4. 如果 \`runtimeLogCommand\` 存在且出现 drift / blocked 信号,再运行对应的 \`webforge logs runtime <session>\`
|
|
108
|
+
5. 如需示例,直接看 \`docs/examples/agent-onboarding-protocol.md\`
|
|
109
|
+
|
|
110
|
+
如果你不走统一入口,至少也要按这个顺序拆开执行:
|
|
111
|
+
|
|
112
|
+
1. \`webforge doctor --json\`
|
|
113
|
+
2. \`webforge resume --json\`
|
|
114
|
+
3. 必要时 \`webforge logs runtime --json\`
|
|
115
|
+
|
|
116
|
+
## 进入仓库后的读取顺序
|
|
117
|
+
|
|
118
|
+
1. 读取 \`.webforge/runtime.json\`
|
|
119
|
+
2. 读取 \`.webforge/tasks.json\`
|
|
120
|
+
3. 读取 \`.webforge/phases.json\`
|
|
121
|
+
4. 读取 \`.webforge/sessions/index.json\`
|
|
122
|
+
5. 读取 \`.webforge/knowledge/index.json\`
|
|
123
|
+
6. 必要时再读取具体 knowledge、deliverable、mailbox 内容
|
|
124
|
+
|
|
125
|
+
## 工作原则
|
|
126
|
+
|
|
127
|
+
1. 不要发明第二套仓库外编排。
|
|
128
|
+
2. 所有状态变化都回写到 \`.webforge/\`。
|
|
129
|
+
3. CLI 是观察面和校验面,不是事实来源。
|
|
130
|
+
4. 如需方法增强,可使用 \`superpowers\`,但它不是状态数据库。
|
|
131
|
+
|
|
132
|
+
## 开始工作前
|
|
133
|
+
|
|
134
|
+
1. 先读本文件和 \`.webforge/\`
|
|
135
|
+
2. 优先运行 \`webforge onboard --json\`
|
|
136
|
+
3. 如果出现 \`runtime-context-drift\` 或 \`contextDrift=drifted\`,先回看 runtime 日志
|
|
137
|
+
4. 再决定下一步工作
|
|
138
|
+
`;
|
|
139
|
+
}
|
|
140
|
+
function renderAgentGuideTemplate(projectName) {
|
|
141
|
+
return `# ${projectName} Agent Guide
|
|
142
|
+
|
|
143
|
+
## 目标
|
|
144
|
+
|
|
145
|
+
本仓库通过 WebForge 约束 Codex / Claude Code 的工作方式,而不是再包一层外部 orchestrator。
|
|
146
|
+
|
|
147
|
+
## 建议工作顺序
|
|
148
|
+
|
|
149
|
+
1. 读取 \`AGENTS.md\`
|
|
150
|
+
2. 运行 \`webforge onboard --json\`
|
|
151
|
+
3. 按 \`shouldRead\` 读取 \`.webforge/runtime.json\`、\`tasks.json\`、\`sessions/index.json\` 等文件
|
|
152
|
+
4. 如果 \`recommendedActions\` 提示 drift,先运行 \`webforge logs runtime <session>\`
|
|
153
|
+
5. 如需照着执行的示例,先看 \`docs/examples/agent-onboarding-protocol.md\`
|
|
154
|
+
6. 需要设计时使用 \`brainstorming\`
|
|
155
|
+
7. 需要计划时使用 \`writing-plans\`
|
|
156
|
+
8. 完成工作后把结果回写到 \`.webforge/\`
|
|
157
|
+
|
|
158
|
+
## 恢复协议
|
|
159
|
+
|
|
160
|
+
\`onboard --json\` 是统一入口,会合并:
|
|
161
|
+
|
|
162
|
+
- \`doctor --json\`
|
|
163
|
+
- \`resume --json\`
|
|
164
|
+
- 最近一次 runtime 日志跳转
|
|
165
|
+
- 当前 \`workflow context / thread linkage\` 的恢复健康度
|
|
166
|
+
|
|
167
|
+
如果你需要拆开排查,按这个顺序:
|
|
168
|
+
|
|
169
|
+
1. \`webforge doctor --json\`
|
|
170
|
+
2. \`webforge resume --json\`
|
|
171
|
+
3. \`webforge logs runtime --json\`
|
|
172
|
+
|
|
173
|
+
当 \`doctor\` 出现 \`runtime-context-drift\`,或 \`resume.runtimeLog.contextDrift=drifted\` 时,不要直接沿当前上下文继续,先核对最近 runtime 与当前 workspace 的差异。
|
|
174
|
+
|
|
175
|
+
## 最低回写要求
|
|
176
|
+
|
|
177
|
+
- 任务推进: 更新 \`.webforge/tasks.json\`
|
|
178
|
+
- 执行状态: 更新 \`.webforge/runtime.json\`
|
|
179
|
+
- 新知识: 更新 \`.webforge/knowledge/\`
|
|
180
|
+
- 新交付物: 更新 \`.webforge/deliverables/\`
|
|
181
|
+
`;
|
|
182
|
+
}
|
|
183
|
+
function renderSuperpowersTemplate(projectName) {
|
|
184
|
+
return `# ${projectName} Superpowers Integration
|
|
185
|
+
|
|
186
|
+
## 边界
|
|
187
|
+
|
|
188
|
+
- WebForge 负责仓库状态、恢复入口和执行协议
|
|
189
|
+
- superpowers 负责设计、计划、评审、compact、线程化恢复等方法增强
|
|
190
|
+
|
|
191
|
+
## 推荐映射
|
|
192
|
+
|
|
193
|
+
- 设计收敛: \`brainstorming\`
|
|
194
|
+
- 计划拆解: \`writing-plans\`
|
|
195
|
+
- 实施执行: \`subagent-driven-development\`
|
|
196
|
+
- 会话压缩: \`strategic-compact\`
|
|
197
|
+
- 长程偏好学习: \`continuous-learning-v2\`
|
|
198
|
+
|
|
199
|
+
## 与恢复协议的连接点
|
|
200
|
+
|
|
201
|
+
- superpowers 产物必须回写到 \`.webforge/superpowers-runs.json\`
|
|
202
|
+
- thread / compact / worktree 线索必须能被 \`doctor / onboard / resume / logs\` 读到
|
|
203
|
+
- 如果最新 workflow 结果和当前 workspace 已经漂移,优先让 agent 回看 runtime 日志,而不是盲目继续
|
|
204
|
+
|
|
205
|
+
## 禁止事项
|
|
206
|
+
|
|
207
|
+
1. 不要把 superpowers 当作 \`.webforge/\` 的替代品
|
|
208
|
+
2. 不要把 superpowers 当作唯一记忆源
|
|
209
|
+
3. 不要让方法层覆盖仓库内状态契约
|
|
210
|
+
`;
|
|
211
|
+
}
|
|
212
|
+
function renderOnboardingProtocolTemplate(projectName) {
|
|
213
|
+
return `# ${projectName} Agent Onboarding Protocol
|
|
214
|
+
|
|
215
|
+
这份文档给进入本仓库工作的 Codex / Claude Code 使用。
|
|
216
|
+
|
|
217
|
+
目标只有一个:先恢复正确上下文,再决定要不要继续实现。
|
|
218
|
+
|
|
219
|
+
## 标准入口
|
|
220
|
+
|
|
221
|
+
优先使用统一入口:
|
|
222
|
+
|
|
223
|
+
\`\`\`bash
|
|
224
|
+
webforge onboard --json
|
|
225
|
+
\`\`\`
|
|
226
|
+
|
|
227
|
+
你需要从输出里依次处理:
|
|
228
|
+
|
|
229
|
+
1. \`doctor.summary\`
|
|
230
|
+
如果 \`fail > 0\`,先修仓库契约,不要直接开发。
|
|
231
|
+
2. \`resume.shouldRead\`
|
|
232
|
+
只读取这些必要文件,不要一上来扫描整个仓库。
|
|
233
|
+
3. \`resume.nextAction\`
|
|
234
|
+
这是当前最推荐的下一步。
|
|
235
|
+
4. \`recommendedActions\`
|
|
236
|
+
如果这里提示 drift / blocked / pending_review,先处理这些信号。
|
|
237
|
+
|
|
238
|
+
## 拆开排查时的顺序
|
|
239
|
+
|
|
240
|
+
如果你不想走统一入口,按这个顺序:
|
|
241
|
+
|
|
242
|
+
\`\`\`bash
|
|
243
|
+
webforge doctor --json
|
|
244
|
+
webforge resume --json
|
|
245
|
+
webforge logs runtime --json
|
|
246
|
+
\`\`\`
|
|
247
|
+
|
|
248
|
+
含义分别是:
|
|
249
|
+
|
|
250
|
+
- \`doctor --json\`
|
|
251
|
+
看仓库契约是否完整,以及最近 runtime 上下文有没有和当前 workspace 脱节
|
|
252
|
+
- \`resume --json\`
|
|
253
|
+
看下一步该做什么,以及应该读哪些文件
|
|
254
|
+
- \`logs runtime --json\`
|
|
255
|
+
看最近 runtime 事件流、日志恢复快照、当前工作区恢复快照
|
|
256
|
+
|
|
257
|
+
## 遇到 drift 时怎么做
|
|
258
|
+
|
|
259
|
+
如果出现下面任一信号:
|
|
260
|
+
|
|
261
|
+
- \`doctor.checks.runtime-context-drift.status = warn\`
|
|
262
|
+
- \`resume.runtimeLog.contextDrift.status = drifted\`
|
|
263
|
+
- \`recommendedActions\` 明确要求先回看 runtime
|
|
264
|
+
|
|
265
|
+
那么先执行:
|
|
266
|
+
|
|
267
|
+
\`\`\`bash
|
|
268
|
+
webforge logs runtime
|
|
269
|
+
\`\`\`
|
|
270
|
+
|
|
271
|
+
先确认:
|
|
272
|
+
|
|
273
|
+
1. 最近 runtime 对应的 \`workflowContext / threadLinkage\`
|
|
274
|
+
2. 当前工作区最新的 \`workflowContext / threadLinkage\`
|
|
275
|
+
3. 两者为什么不同
|
|
276
|
+
|
|
277
|
+
没有核对 drift 之前,不要默认沿当前上下文直接继续。
|
|
278
|
+
|
|
279
|
+
## 开始实现前至少要读
|
|
280
|
+
|
|
281
|
+
- \`AGENTS.md\`
|
|
282
|
+
- \`.webforge/runtime.json\`
|
|
283
|
+
- \`.webforge/tasks.json\`
|
|
284
|
+
- \`.webforge/sessions/index.json\`
|
|
285
|
+
- \`.webforge/knowledge/index.json\`
|
|
286
|
+
|
|
287
|
+
如果 \`shouldRead\` 还带了其他文件,以 \`shouldRead\` 为准。
|
|
288
|
+
|
|
289
|
+
## 完成后必须回写
|
|
290
|
+
|
|
291
|
+
- 任务变化回写到 \`.webforge/tasks.json\`
|
|
292
|
+
- 执行状态回写到 \`.webforge/runtime.json\`
|
|
293
|
+
- 新知识回写到 \`.webforge/knowledge/\`
|
|
294
|
+
- 新交付物回写到 \`.webforge/deliverables/\`
|
|
295
|
+
|
|
296
|
+
一句话:
|
|
297
|
+
|
|
298
|
+
\`\`\`text
|
|
299
|
+
onboard --json -> read shouldRead -> inspect drift if needed -> execute -> write back to .webforge/
|
|
300
|
+
\`\`\`
|
|
301
|
+
`;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/knowledge.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,sBAAsB,IAAI,OAAO,CAQhD"}
|