@miniidealab/openlogos 0.2.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/dist/commands/archive.d.ts +2 -0
- package/dist/commands/archive.d.ts.map +1 -0
- package/dist/commands/archive.js +35 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/change.d.ts +2 -0
- package/dist/commands/change.d.ts.map +1 -0
- package/dist/commands/change.js +41 -0
- package/dist/commands/change.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +237 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/merge.d.ts +9 -0
- package/dist/commands/merge.d.ts.map +1 -0
- package/dist/commands/merge.js +83 -0
- package/dist/commands/merge.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +101 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +76 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/verify.d.ts +30 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +330 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/i18n.d.ts +15 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +382 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/package.json +52 -0
package/dist/i18n.js
ADDED
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export function readLocale(root) {
|
|
4
|
+
const configPath = join(root, 'logos', 'logos.config.json');
|
|
5
|
+
if (!existsSync(configPath))
|
|
6
|
+
return 'en';
|
|
7
|
+
try {
|
|
8
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
9
|
+
if (config.locale === 'zh')
|
|
10
|
+
return 'zh';
|
|
11
|
+
}
|
|
12
|
+
catch { /* ignore */ }
|
|
13
|
+
return 'en';
|
|
14
|
+
}
|
|
15
|
+
const messages = {
|
|
16
|
+
en: {
|
|
17
|
+
// init
|
|
18
|
+
'init.creating': 'Creating OpenLogos project structure for "{name}"{source}...',
|
|
19
|
+
'init.done': 'Project initialized. Next steps:',
|
|
20
|
+
'init.step1': ' 1. Review logos/logos.config.json to verify project settings',
|
|
21
|
+
'init.nameTip': ' Tip: Project name "{name}" was auto-detected{source}.\n To change it, edit logos/logos.config.json and run `openlogos sync`.',
|
|
22
|
+
'init.step2': ' 2. Start with Phase 1: tell AI "Help me write requirements"',
|
|
23
|
+
'init.step3': ' 3. Run `openlogos status` to check progress at any time',
|
|
24
|
+
'init.nameConflict': 'Project name conflict detected:',
|
|
25
|
+
'init.nameChoice1': ' 1. "{name}" ← your input',
|
|
26
|
+
'init.nameChoice2': ' 2. "{name}" ← from {source}',
|
|
27
|
+
'init.namePrompt': 'Which name would you like to use? [1/2] (default: 1): ',
|
|
28
|
+
'init.langPrompt': 'Your choice [1/2] (default: 1): ',
|
|
29
|
+
// status
|
|
30
|
+
'phase.1': 'Phase 1 · Requirements (WHY)',
|
|
31
|
+
'phase.2': 'Phase 2 · Product Design (WHAT)',
|
|
32
|
+
'phase.3-0': 'Phase 3-0 · Architecture',
|
|
33
|
+
'phase.3-1': 'Phase 3-1 · Scenario Modeling',
|
|
34
|
+
'phase.3-2-api': 'Phase 3-2 · API Design',
|
|
35
|
+
'phase.3-2-db': 'Phase 3-2 · Database Design',
|
|
36
|
+
'phase.3-3a': 'Phase 3-3a · Test Case Design (Unit + Scenario)',
|
|
37
|
+
'phase.3-3b': 'Phase 3-3b · API Orchestration Tests',
|
|
38
|
+
'phase.3-5': 'Phase 3-5 · Test Acceptance (verify)',
|
|
39
|
+
'status.activeProposals': 'Active Change Proposals',
|
|
40
|
+
'status.allDone': 'All phases complete! Run `openlogos verify` to check test acceptance.',
|
|
41
|
+
'status.allDoneHint': ' → Or tell AI: "Implement S01 according to specs"',
|
|
42
|
+
'status.suggestNext': 'Suggested next step: {label}',
|
|
43
|
+
'suggest.phase1': 'Tell AI: "Help me write requirements"',
|
|
44
|
+
'suggest.phase2': 'Tell AI: "Do product design based on requirements"',
|
|
45
|
+
'suggest.phase3-0': 'Tell AI: "Help me design the technical architecture"',
|
|
46
|
+
'suggest.phase3-1': 'Tell AI: "Help me draw S01 sequence diagram"',
|
|
47
|
+
'suggest.phase3-2-api': 'Tell AI: "Help me design the API"',
|
|
48
|
+
'suggest.phase3-2-db': 'Tell AI: "Help me design the database"',
|
|
49
|
+
'suggest.phase3-3a': 'Tell AI: "Help me design test cases"',
|
|
50
|
+
'suggest.phase3-3b': 'Tell AI: "Help me design orchestration tests"',
|
|
51
|
+
'suggest.phase3-5': 'Run your tests, then run `openlogos verify`',
|
|
52
|
+
'suggest.fallback': 'Continue improving documents',
|
|
53
|
+
// verify
|
|
54
|
+
'verify.title': 'OpenLogos Test Verification',
|
|
55
|
+
'verify.readingResults': 'Reading test results: {path}',
|
|
56
|
+
'verify.readingCases': 'Reading test cases: logos/resources/test/',
|
|
57
|
+
'verify.summary': 'Results Summary',
|
|
58
|
+
'verify.totalDefined': 'Total defined: {count} cases ({ut} UT + {st} ST)',
|
|
59
|
+
'verify.totalExecuted': 'Total executed: {count} cases',
|
|
60
|
+
'verify.passed': 'Passed: {count}',
|
|
61
|
+
'verify.failed': 'Failed: {count}',
|
|
62
|
+
'verify.skipped': 'Skipped: {count}',
|
|
63
|
+
'verify.coverage': 'Coverage: {pct}% ({covered}/{total})',
|
|
64
|
+
'verify.passRate': 'Pass rate: {pct}% ({passed}/{total})',
|
|
65
|
+
'verify.gatePass': 'Gate 3.5: PASS',
|
|
66
|
+
'verify.gateFail': 'Gate 3.5: FAIL',
|
|
67
|
+
'verify.gateFailCoverage': 'Gate 3.5: FAIL (incomplete coverage)',
|
|
68
|
+
'verify.failedCases': 'Failed cases:',
|
|
69
|
+
'verify.uncoveredCases': 'Uncovered cases ({count}):',
|
|
70
|
+
'verify.reportPath': 'Report: {path}',
|
|
71
|
+
'verify.noResults': 'No test results found at {path}.\nRun your tests first, then try again.',
|
|
72
|
+
'verify.noCases': 'No test case specs found in logos/resources/test/.\nRun test design (Step 3a) first.',
|
|
73
|
+
'verify.checklistTitle': 'Design-time Coverage (Layer 1)',
|
|
74
|
+
'verify.checklistSummary': 'Checklist: {checked}/{total} assertions confirmed',
|
|
75
|
+
'verify.checklistUnchecked': 'Unchecked assertions ({count}):',
|
|
76
|
+
'verify.gateFailChecklist': 'Gate 3.5: FAIL (design-time checklist incomplete)',
|
|
77
|
+
'verify.acTitle': 'Acceptance Criteria Traceability (Layer 3)',
|
|
78
|
+
'verify.acSummary': 'AC traceability: {passed}/{total} criteria passed',
|
|
79
|
+
'verify.acFailed': 'Failing criteria ({count}):',
|
|
80
|
+
'verify.gateFailAc': 'Gate 3.5: FAIL (acceptance criteria not fully traced)',
|
|
81
|
+
// change
|
|
82
|
+
'change.creating': 'Creating change proposal: {slug}',
|
|
83
|
+
'change.done': 'Change proposal created. Next steps:',
|
|
84
|
+
'change.step1': ' 1. Tell AI: "Help me fill in change proposal {slug}"',
|
|
85
|
+
'change.step2': ' 2. AI will analyze impact and fill in proposal.md + tasks.md',
|
|
86
|
+
'change.step3': ' 3. Then work through tasks.md, putting deltas in deltas/',
|
|
87
|
+
'change.step4': ' 4. When done, run `openlogos merge {slug}` to generate merge instructions',
|
|
88
|
+
// merge
|
|
89
|
+
'merge.summary': 'Merge Summary:',
|
|
90
|
+
'merge.proposal': ' - Change proposal: {slug}',
|
|
91
|
+
'merge.deltaCount': ' - Delta files: {count}',
|
|
92
|
+
'merge.aiHint': 'Tell AI: "Read logos/changes/{slug}/MERGE_PROMPT.md and execute merge"',
|
|
93
|
+
'merge.archiveHint': 'After merge, run `openlogos archive {slug}` to archive the proposal.',
|
|
94
|
+
// archive
|
|
95
|
+
'archive.done': '✓ Change proposal \'{slug}\' archived.',
|
|
96
|
+
'archive.path': ' logos/changes/{slug}/ → logos/changes/archive/{slug}/',
|
|
97
|
+
},
|
|
98
|
+
zh: {
|
|
99
|
+
// init
|
|
100
|
+
'init.creating': 'Creating OpenLogos project structure for "{name}"{source}...',
|
|
101
|
+
'init.done': '项目初始化完成。下一步:',
|
|
102
|
+
'init.step1': ' 1. 检查 logos/logos.config.json 确认项目配置',
|
|
103
|
+
'init.nameTip': ' 提示:项目名 "{name}" 是自动探测的{source}。\n 如需修改,编辑 logos/logos.config.json 后运行 `openlogos sync`。',
|
|
104
|
+
'init.step2': ' 2. 开始 Phase 1:对 AI 说「帮我写需求文档」',
|
|
105
|
+
'init.step3': ' 3. 随时运行 `openlogos status` 查看进度',
|
|
106
|
+
'init.nameConflict': '检测到项目名不一致:',
|
|
107
|
+
'init.nameChoice1': ' 1. "{name}" ← 你的输入',
|
|
108
|
+
'init.nameChoice2': ' 2. "{name}" ← 来自 {source}',
|
|
109
|
+
'init.namePrompt': '使用哪个名称?[1/2](默认 1):',
|
|
110
|
+
'init.langPrompt': '请选择 [1/2](默认 1):',
|
|
111
|
+
// status
|
|
112
|
+
'phase.1': 'Phase 1 · 需求文档 (WHY)',
|
|
113
|
+
'phase.2': 'Phase 2 · 产品设计 (WHAT)',
|
|
114
|
+
'phase.3-0': 'Phase 3-0 · 技术架构',
|
|
115
|
+
'phase.3-1': 'Phase 3-1 · 场景建模',
|
|
116
|
+
'phase.3-2-api': 'Phase 3-2 · API 设计',
|
|
117
|
+
'phase.3-2-db': 'Phase 3-2 · 数据库设计',
|
|
118
|
+
'phase.3-3a': 'Phase 3-3a · 测试用例设计(单元 + 场景)',
|
|
119
|
+
'phase.3-3b': 'Phase 3-3b · API 编排测试',
|
|
120
|
+
'phase.3-5': 'Phase 3-5 · 测试验收(verify)',
|
|
121
|
+
'status.activeProposals': '活跃变更提案',
|
|
122
|
+
'status.allDone': '所有阶段已完成!运行 `openlogos verify` 查看测试验收结果。',
|
|
123
|
+
'status.allDoneHint': ' → 或对 AI 说:「按 S01 的规格帮我实现」',
|
|
124
|
+
'status.suggestNext': '建议下一步:{label}',
|
|
125
|
+
'suggest.phase1': '对 AI 说:「帮我写需求文档」',
|
|
126
|
+
'suggest.phase2': '对 AI 说:「基于需求文档做产品设计」',
|
|
127
|
+
'suggest.phase3-0': '对 AI 说:「帮我设计技术架构」',
|
|
128
|
+
'suggest.phase3-1': '对 AI 说:「帮我画 S01 的时序图」',
|
|
129
|
+
'suggest.phase3-2-api': '对 AI 说:「帮我设计 API」',
|
|
130
|
+
'suggest.phase3-2-db': '对 AI 说:「帮我设计数据库」',
|
|
131
|
+
'suggest.phase3-3a': '对 AI 说:「帮我设计测试用例」',
|
|
132
|
+
'suggest.phase3-3b': '对 AI 说:「帮我设计编排测试」',
|
|
133
|
+
'suggest.phase3-5': '运行测试后执行 `openlogos verify`',
|
|
134
|
+
'suggest.fallback': '继续完善文档',
|
|
135
|
+
// verify
|
|
136
|
+
'verify.title': 'OpenLogos 测试验收',
|
|
137
|
+
'verify.readingResults': '读取测试结果:{path}',
|
|
138
|
+
'verify.readingCases': '读取测试用例:logos/resources/test/',
|
|
139
|
+
'verify.summary': '结果摘要',
|
|
140
|
+
'verify.totalDefined': '定义用例: {count} 个({ut} UT + {st} ST)',
|
|
141
|
+
'verify.totalExecuted': '执行用例: {count} 个',
|
|
142
|
+
'verify.passed': '通过: {count}',
|
|
143
|
+
'verify.failed': '失败: {count}',
|
|
144
|
+
'verify.skipped': '跳过: {count}',
|
|
145
|
+
'verify.coverage': '覆盖度:{pct}%({covered}/{total})',
|
|
146
|
+
'verify.passRate': '通过率:{pct}%({passed}/{total})',
|
|
147
|
+
'verify.gatePass': 'Gate 3.5:PASS',
|
|
148
|
+
'verify.gateFail': 'Gate 3.5:FAIL',
|
|
149
|
+
'verify.gateFailCoverage': 'Gate 3.5:FAIL(覆盖不完整)',
|
|
150
|
+
'verify.failedCases': '失败用例:',
|
|
151
|
+
'verify.uncoveredCases': '未覆盖用例({count}):',
|
|
152
|
+
'verify.reportPath': '报告:{path}',
|
|
153
|
+
'verify.noResults': '未找到测试结果文件:{path}\n请先运行测试,再重试。',
|
|
154
|
+
'verify.noCases': '未找到测试用例规格文件(logos/resources/test/)。\n请先完成测试设计(Step 3a)。',
|
|
155
|
+
'verify.checklistTitle': '设计时覆盖度(Layer 1)',
|
|
156
|
+
'verify.checklistSummary': '覆盖度校验:{checked}/{total} 项确认',
|
|
157
|
+
'verify.checklistUnchecked': '未确认项({count}):',
|
|
158
|
+
'verify.gateFailChecklist': 'Gate 3.5:FAIL(设计时覆盖度校验未通过)',
|
|
159
|
+
'verify.acTitle': '验收条件追溯(Layer 3)',
|
|
160
|
+
'verify.acSummary': '验收追溯:{passed}/{total} 个验收条件通过',
|
|
161
|
+
'verify.acFailed': '未通过的验收条件({count}):',
|
|
162
|
+
'verify.gateFailAc': 'Gate 3.5:FAIL(验收条件追溯未完全通过)',
|
|
163
|
+
// change
|
|
164
|
+
'change.creating': '创建变更提案:{slug}',
|
|
165
|
+
'change.done': '变更提案已创建。下一步:',
|
|
166
|
+
'change.step1': ' 1. 对 AI 说:「帮我填写变更提案 {slug}」',
|
|
167
|
+
'change.step2': ' 2. AI 将分析影响范围并填写 proposal.md + tasks.md',
|
|
168
|
+
'change.step3': ' 3. 然后按 tasks.md 逐项产出 delta 文件到 deltas/',
|
|
169
|
+
'change.step4': ' 4. 完成后运行 `openlogos merge {slug}` 生成合并指令',
|
|
170
|
+
// merge
|
|
171
|
+
'merge.summary': '合并摘要:',
|
|
172
|
+
'merge.proposal': ' - 变更提案:{slug}',
|
|
173
|
+
'merge.deltaCount': ' - Delta 文件:{count} 个',
|
|
174
|
+
'merge.aiHint': '对 AI 说:「读取 logos/changes/{slug}/MERGE_PROMPT.md 并执行合并」',
|
|
175
|
+
'merge.archiveHint': '合并完成后,运行 `openlogos archive {slug}` 归档提案。',
|
|
176
|
+
// archive
|
|
177
|
+
'archive.done': '✓ 变更提案 \'{slug}\' 已归档。',
|
|
178
|
+
'archive.path': ' logos/changes/{slug}/ → logos/changes/archive/{slug}/',
|
|
179
|
+
},
|
|
180
|
+
};
|
|
181
|
+
export function t(locale, key, vars) {
|
|
182
|
+
let msg = messages[locale]?.[key] ?? messages['en'][key] ?? key;
|
|
183
|
+
if (vars) {
|
|
184
|
+
for (const [k, v] of Object.entries(vars)) {
|
|
185
|
+
msg = msg.replaceAll(`{${k}}`, v);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return msg;
|
|
189
|
+
}
|
|
190
|
+
// Phase label key mapping (used by status.ts)
|
|
191
|
+
export const PHASE_KEYS = [
|
|
192
|
+
'phase.1', 'phase.2', 'phase.3-0', 'phase.3-1',
|
|
193
|
+
'phase.3-2-api', 'phase.3-2-db', 'phase.3-3a', 'phase.3-3b',
|
|
194
|
+
'phase.3-5',
|
|
195
|
+
];
|
|
196
|
+
export const SUGGEST_KEYS = {
|
|
197
|
+
'phase.1': 'suggest.phase1',
|
|
198
|
+
'phase.2': 'suggest.phase2',
|
|
199
|
+
'phase.3-0': 'suggest.phase3-0',
|
|
200
|
+
'phase.3-1': 'suggest.phase3-1',
|
|
201
|
+
'phase.3-2-api': 'suggest.phase3-2-api',
|
|
202
|
+
'phase.3-2-db': 'suggest.phase3-2-db',
|
|
203
|
+
'phase.3-3a': 'suggest.phase3-3a',
|
|
204
|
+
'phase.3-3b': 'suggest.phase3-3b',
|
|
205
|
+
'phase.3-5': 'suggest.phase3-5',
|
|
206
|
+
};
|
|
207
|
+
// --- Long-form templates ---
|
|
208
|
+
export function proposalTemplate(locale, slug) {
|
|
209
|
+
if (locale === 'zh') {
|
|
210
|
+
return `# 变更提案:${slug}
|
|
211
|
+
|
|
212
|
+
## 变更原因
|
|
213
|
+
[为什么要做这个变更?来源于哪个需求/反馈/Bug?]
|
|
214
|
+
|
|
215
|
+
## 变更类型
|
|
216
|
+
[需求级 / 设计级 / 接口级 / 代码级]
|
|
217
|
+
|
|
218
|
+
## 变更范围
|
|
219
|
+
- 影响的需求文档:[列表]
|
|
220
|
+
- 影响的功能规格:[列表]
|
|
221
|
+
- 影响的业务场景:[列表]
|
|
222
|
+
- 影响的 API:[列表]
|
|
223
|
+
- 影响的 DB 表:[列表]
|
|
224
|
+
- 影响的编排测试:[列表]
|
|
225
|
+
|
|
226
|
+
## 变更概述
|
|
227
|
+
[用 1-3 段话概述具体改什么]
|
|
228
|
+
`;
|
|
229
|
+
}
|
|
230
|
+
return `# Change Proposal: ${slug}
|
|
231
|
+
|
|
232
|
+
## Reason
|
|
233
|
+
[Why is this change needed? Which requirement/feedback/bug triggered it?]
|
|
234
|
+
|
|
235
|
+
## Change Type
|
|
236
|
+
[Requirements / Design / Interface / Code]
|
|
237
|
+
|
|
238
|
+
## Scope
|
|
239
|
+
- Affected requirements: [list]
|
|
240
|
+
- Affected feature specs: [list]
|
|
241
|
+
- Affected scenarios: [list]
|
|
242
|
+
- Affected APIs: [list]
|
|
243
|
+
- Affected DB tables: [list]
|
|
244
|
+
- Affected orchestration tests: [list]
|
|
245
|
+
|
|
246
|
+
## Summary
|
|
247
|
+
[Describe what will change in 1-3 paragraphs]
|
|
248
|
+
`;
|
|
249
|
+
}
|
|
250
|
+
export function tasksTemplate(locale) {
|
|
251
|
+
if (locale === 'zh') {
|
|
252
|
+
return `# 实现任务
|
|
253
|
+
|
|
254
|
+
## Phase 1: 文档变更
|
|
255
|
+
- [ ] 更新需求文档的场景和验收条件
|
|
256
|
+
- [ ] 更新产品设计文档的功能规格
|
|
257
|
+
|
|
258
|
+
## Phase 2: 设计变更
|
|
259
|
+
- [ ] 更新原型
|
|
260
|
+
- [ ] 更新场景时序图
|
|
261
|
+
- [ ] 更新 API YAML
|
|
262
|
+
- [ ] 更新 DB DDL
|
|
263
|
+
|
|
264
|
+
## Phase 3: 编排与代码
|
|
265
|
+
- [ ] 更新 API 编排测试用例
|
|
266
|
+
- [ ] 实现代码变更
|
|
267
|
+
- [ ] 部署到测试环境
|
|
268
|
+
- [ ] 运行编排验收
|
|
269
|
+
`;
|
|
270
|
+
}
|
|
271
|
+
return `# Implementation Tasks
|
|
272
|
+
|
|
273
|
+
## Phase 1: Document Changes
|
|
274
|
+
- [ ] Update requirements scenarios and acceptance criteria
|
|
275
|
+
- [ ] Update product design feature specs
|
|
276
|
+
|
|
277
|
+
## Phase 2: Design Changes
|
|
278
|
+
- [ ] Update prototypes
|
|
279
|
+
- [ ] Update scenario sequence diagrams
|
|
280
|
+
- [ ] Update API YAML
|
|
281
|
+
- [ ] Update DB DDL
|
|
282
|
+
|
|
283
|
+
## Phase 3: Orchestration & Code
|
|
284
|
+
- [ ] Update API orchestration test cases
|
|
285
|
+
- [ ] Implement code changes
|
|
286
|
+
- [ ] Deploy to test environment
|
|
287
|
+
- [ ] Run orchestration acceptance
|
|
288
|
+
`;
|
|
289
|
+
}
|
|
290
|
+
export function mergePromptTemplate(locale, slug, proposalContent, deltas) {
|
|
291
|
+
if (locale === 'zh') {
|
|
292
|
+
let prompt = `# 合并指令
|
|
293
|
+
|
|
294
|
+
## 变更提案
|
|
295
|
+
- 提案名称:${slug}
|
|
296
|
+
- 提案目录:logos/changes/${slug}/
|
|
297
|
+
|
|
298
|
+
## 提案内容
|
|
299
|
+
|
|
300
|
+
${proposalContent}
|
|
301
|
+
|
|
302
|
+
## 需要合并的 Delta 文件
|
|
303
|
+
|
|
304
|
+
`;
|
|
305
|
+
for (let i = 0; i < deltas.length; i++) {
|
|
306
|
+
const d = deltas[i];
|
|
307
|
+
prompt += `### ${i + 1}. ${d.relativePath}
|
|
308
|
+
|
|
309
|
+
- Delta 文件:\`${d.deltaFullPath}\`
|
|
310
|
+
- 目标目录:\`${d.targetDir}/\`
|
|
311
|
+
- 操作:读取 delta 中的 ADDED / MODIFIED / REMOVED 标记,合并到目标目录中对应的主文档
|
|
312
|
+
|
|
313
|
+
`;
|
|
314
|
+
}
|
|
315
|
+
prompt += `## 执行要求
|
|
316
|
+
|
|
317
|
+
1. 逐个 Delta 文件处理,每处理完一个报告修改摘要
|
|
318
|
+
2. 对于 ADDED 标记:在主文档的指定位置插入新内容
|
|
319
|
+
3. 对于 MODIFIED 标记:替换主文档中同名章节的内容
|
|
320
|
+
4. 对于 REMOVED 标记:从主文档中删除对应章节
|
|
321
|
+
5. 保持主文档的原有格式和风格
|
|
322
|
+
6. 如果主文档有"最后更新"时间戳,同步更新
|
|
323
|
+
7. 所有变更完成后,列出修改清单
|
|
324
|
+
8. 完成后提醒用户运行 \`openlogos archive ${slug}\`
|
|
325
|
+
`;
|
|
326
|
+
return prompt;
|
|
327
|
+
}
|
|
328
|
+
let prompt = `# Merge Instruction
|
|
329
|
+
|
|
330
|
+
## Change Proposal
|
|
331
|
+
- Proposal: ${slug}
|
|
332
|
+
- Directory: logos/changes/${slug}/
|
|
333
|
+
|
|
334
|
+
## Proposal Content
|
|
335
|
+
|
|
336
|
+
${proposalContent}
|
|
337
|
+
|
|
338
|
+
## Delta Files to Merge
|
|
339
|
+
|
|
340
|
+
`;
|
|
341
|
+
for (let i = 0; i < deltas.length; i++) {
|
|
342
|
+
const d = deltas[i];
|
|
343
|
+
prompt += `### ${i + 1}. ${d.relativePath}
|
|
344
|
+
|
|
345
|
+
- Delta file: \`${d.deltaFullPath}\`
|
|
346
|
+
- Target directory: \`${d.targetDir}/\`
|
|
347
|
+
- Action: Read ADDED / MODIFIED / REMOVED markers in the delta and merge into the corresponding main document in the target directory
|
|
348
|
+
|
|
349
|
+
`;
|
|
350
|
+
}
|
|
351
|
+
prompt += `## Execution Requirements
|
|
352
|
+
|
|
353
|
+
1. Process each delta file one by one, report a summary after each
|
|
354
|
+
2. For ADDED markers: insert new content at the specified location in the main document
|
|
355
|
+
3. For MODIFIED markers: replace the content of the same-named section in the main document
|
|
356
|
+
4. For REMOVED markers: delete the corresponding section from the main document
|
|
357
|
+
5. Preserve the original formatting and style of the main document
|
|
358
|
+
6. If the main document has a "last updated" timestamp, update it
|
|
359
|
+
7. After all changes are complete, list the modification summary
|
|
360
|
+
8. Remind the user to run \`openlogos archive ${slug}\`
|
|
361
|
+
`;
|
|
362
|
+
return prompt;
|
|
363
|
+
}
|
|
364
|
+
export function conventionsForYaml(locale) {
|
|
365
|
+
if (locale === 'zh') {
|
|
366
|
+
return `conventions:
|
|
367
|
+
- "遵循 OpenLogos 三层推进模型(Why → What → How)"
|
|
368
|
+
- "每次变更必须先创建 logos/changes/ 变更提案"`;
|
|
369
|
+
}
|
|
370
|
+
return `conventions:
|
|
371
|
+
- "Follow the OpenLogos three-layer progression (Why → What → How)"
|
|
372
|
+
- "Every change must start with a logos/changes/ change proposal"`;
|
|
373
|
+
}
|
|
374
|
+
export function conventionsForAgentsMd(locale) {
|
|
375
|
+
if (locale === 'zh') {
|
|
376
|
+
return `- 遵循 OpenLogos 三层推进模型(Why → What → How)
|
|
377
|
+
- 每次变更必须先创建 logos/changes/ 变更提案`;
|
|
378
|
+
}
|
|
379
|
+
return `- Follow the OpenLogos three-layer progression (Why → What → How)
|
|
380
|
+
- Every change must start with a logos/changes/ change proposal`;
|
|
381
|
+
}
|
|
382
|
+
//# sourceMappingURL=i18n.js.map
|
package/dist/i18n.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { init } from './commands/init.js';
|
|
3
|
+
import { sync } from './commands/sync.js';
|
|
4
|
+
import { status } from './commands/status.js';
|
|
5
|
+
import { change } from './commands/change.js';
|
|
6
|
+
import { merge } from './commands/merge.js';
|
|
7
|
+
import { archive } from './commands/archive.js';
|
|
8
|
+
import { verify } from './commands/verify.js';
|
|
9
|
+
const HELP = `
|
|
10
|
+
openlogos - CLI tool for the OpenLogos methodology
|
|
11
|
+
|
|
12
|
+
Usage:
|
|
13
|
+
openlogos <command> [options]
|
|
14
|
+
|
|
15
|
+
Commands:
|
|
16
|
+
init [name] Initialize a new OpenLogos project structure
|
|
17
|
+
sync Regenerate AI instruction files (AGENTS.md, CLAUDE.md)
|
|
18
|
+
status Show current project phase and suggest next steps
|
|
19
|
+
verify Verify test results against test case specs
|
|
20
|
+
change <slug> Create a change proposal for iterative updates
|
|
21
|
+
merge <slug> Generate MERGE_PROMPT.md for AI to execute delta merging
|
|
22
|
+
archive <slug> Archive a completed change proposal
|
|
23
|
+
|
|
24
|
+
Options:
|
|
25
|
+
--help, -h Show this help message
|
|
26
|
+
--version, -v Show version number
|
|
27
|
+
|
|
28
|
+
Examples:
|
|
29
|
+
openlogos init my-saas-project
|
|
30
|
+
openlogos sync
|
|
31
|
+
openlogos status
|
|
32
|
+
openlogos verify
|
|
33
|
+
openlogos change add-remember-me
|
|
34
|
+
openlogos merge add-remember-me
|
|
35
|
+
openlogos archive add-remember-me
|
|
36
|
+
|
|
37
|
+
Learn more: https://openlogos.ai
|
|
38
|
+
`;
|
|
39
|
+
const VERSION = '0.1.0';
|
|
40
|
+
async function main() {
|
|
41
|
+
const args = process.argv.slice(2);
|
|
42
|
+
if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
|
|
43
|
+
console.log(HELP);
|
|
44
|
+
process.exit(0);
|
|
45
|
+
}
|
|
46
|
+
if (args.includes('--version') || args.includes('-v')) {
|
|
47
|
+
console.log(VERSION);
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
const command = args[0];
|
|
51
|
+
switch (command) {
|
|
52
|
+
case 'init':
|
|
53
|
+
await init(args[1]);
|
|
54
|
+
break;
|
|
55
|
+
case 'sync':
|
|
56
|
+
sync();
|
|
57
|
+
break;
|
|
58
|
+
case 'status':
|
|
59
|
+
status();
|
|
60
|
+
break;
|
|
61
|
+
case 'verify':
|
|
62
|
+
verify();
|
|
63
|
+
break;
|
|
64
|
+
case 'change':
|
|
65
|
+
change(args[1]);
|
|
66
|
+
break;
|
|
67
|
+
case 'merge':
|
|
68
|
+
merge(args[1]);
|
|
69
|
+
break;
|
|
70
|
+
case 'archive':
|
|
71
|
+
archive(args[1]);
|
|
72
|
+
break;
|
|
73
|
+
default:
|
|
74
|
+
console.error(`Unknown command: ${command}`);
|
|
75
|
+
console.log(HELP);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
main();
|
|
80
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BZ,CAAC;AAEF,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM;QACR,KAAK,MAAM;YACT,IAAI,EAAE,CAAC;YACP,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,EAAE,CAAC;YACT,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,EAAE,CAAC;YACT,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM;QACR,KAAK,OAAO;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACf,MAAM;QACR,KAAK,SAAS;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACjB,MAAM;QACR;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@miniidealab/openlogos",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "CLI tool for the OpenLogos software engineering methodology",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"openlogos": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc",
|
|
11
|
+
"dev": "tsc --watch",
|
|
12
|
+
"start": "node dist/index.js",
|
|
13
|
+
"lint": "eslint src/",
|
|
14
|
+
"test": "vitest run",
|
|
15
|
+
"test:watch": "vitest"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"openlogos",
|
|
19
|
+
"software-engineering",
|
|
20
|
+
"methodology",
|
|
21
|
+
"ai",
|
|
22
|
+
"cli"
|
|
23
|
+
],
|
|
24
|
+
"author": "MiniIdea",
|
|
25
|
+
"license": "Apache-2.0",
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://openlogos.ai",
|
|
30
|
+
"bugs": {
|
|
31
|
+
"url": "https://github.com/miniidealab/openlogos/issues"
|
|
32
|
+
},
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "git+https://github.com/miniidealab/openlogos.git",
|
|
36
|
+
"directory": "cli"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=18.0.0"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"dist"
|
|
43
|
+
],
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@eslint/js": "^9.39.4",
|
|
46
|
+
"@types/node": "^25.5.0",
|
|
47
|
+
"eslint": "^9.39.4",
|
|
48
|
+
"typescript": "^6.0.2",
|
|
49
|
+
"typescript-eslint": "^8.58.0",
|
|
50
|
+
"vitest": "^3.2.4"
|
|
51
|
+
}
|
|
52
|
+
}
|