@miniidealab/openlogos 0.6.4 → 0.6.5
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/index-cmd.d.ts +2 -0
- package/dist/commands/index-cmd.d.ts.map +1 -0
- package/dist/commands/index-cmd.js +207 -0
- package/dist/commands/index-cmd.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/opencode-plugin-template/commands/openlogos-index.md +9 -0
- package/opencode-plugin-template/openlogos.js +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.d.ts","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"AAwEA,wBAAgB,YAAY,SAkF3B"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { join, relative, extname } from 'node:path';
|
|
3
|
+
import { readLocale } from '../i18n.js';
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
// 文件扫描工具
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
function listFilesRecursive(dir) {
|
|
8
|
+
if (!existsSync(dir))
|
|
9
|
+
return [];
|
|
10
|
+
const results = [];
|
|
11
|
+
function scan(current) {
|
|
12
|
+
for (const entry of readdirSync(current)) {
|
|
13
|
+
const full = join(current, entry);
|
|
14
|
+
try {
|
|
15
|
+
const stat = statSync(full);
|
|
16
|
+
if (stat.isDirectory()) {
|
|
17
|
+
scan(full);
|
|
18
|
+
}
|
|
19
|
+
else if (stat.isFile() && !entry.endsWith('.gitkeep')) {
|
|
20
|
+
results.push(full);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch { /* skip inaccessible */ }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
scan(dir);
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
/** 从 glob 模式中提取允许的扩展名集合,例如 "**\/*.{md,json}" → ["md","json"] */
|
|
30
|
+
function extractExtensions(pattern) {
|
|
31
|
+
const braceMatch = pattern.match(/\*\.\{([^}]+)\}$/);
|
|
32
|
+
if (braceMatch) {
|
|
33
|
+
return new Set(braceMatch[1].split(',').map(e => e.trim()));
|
|
34
|
+
}
|
|
35
|
+
const singleMatch = pattern.match(/\*\.(\w+)$/);
|
|
36
|
+
if (singleMatch) {
|
|
37
|
+
return new Set([singleMatch[1]]);
|
|
38
|
+
}
|
|
39
|
+
return new Set();
|
|
40
|
+
}
|
|
41
|
+
function matchesPattern(filePath, pattern) {
|
|
42
|
+
const ext = extname(filePath).slice(1).toLowerCase();
|
|
43
|
+
const allowed = extractExtensions(pattern);
|
|
44
|
+
return allowed.size === 0 || allowed.has(ext);
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// 文件内容读取(前 N 行)
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
function readFirstNLines(filePath, n) {
|
|
50
|
+
try {
|
|
51
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
52
|
+
const lines = content.split('\n');
|
|
53
|
+
const truncated = lines.slice(0, n);
|
|
54
|
+
const suffix = lines.length > n ? `\n... (truncated, ${lines.length - n} more lines)` : '';
|
|
55
|
+
return truncated.join('\n') + suffix;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return '(unable to read file)';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export function indexCommand() {
|
|
62
|
+
const root = process.cwd();
|
|
63
|
+
const configPath = join(root, 'logos', 'logos.config.json');
|
|
64
|
+
if (!existsSync(configPath)) {
|
|
65
|
+
console.error('Error: logos/logos.config.json not found.');
|
|
66
|
+
console.error('Run `openlogos init` first to initialize the project.');
|
|
67
|
+
process.exit(1);
|
|
68
|
+
}
|
|
69
|
+
const yamlPath = join(root, 'logos', 'logos-project.yaml');
|
|
70
|
+
if (!existsSync(yamlPath)) {
|
|
71
|
+
console.error('Error: logos/logos-project.yaml not found.');
|
|
72
|
+
process.exit(1);
|
|
73
|
+
}
|
|
74
|
+
console.log('\nScanning project files for index generation...\n');
|
|
75
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
76
|
+
const documents = config.documents || {};
|
|
77
|
+
const locale = readLocale(root);
|
|
78
|
+
const files = [];
|
|
79
|
+
// 1. 扫描 logos.config.json 中的 documents(排除 changes)
|
|
80
|
+
for (const [key, doc] of Object.entries(documents)) {
|
|
81
|
+
if (key === 'changes')
|
|
82
|
+
continue;
|
|
83
|
+
// path 是相对于 logos/ 目录的,如 "./resources/prd"
|
|
84
|
+
const absDir = join(root, 'logos', doc.path.replace(/^\.\//, ''));
|
|
85
|
+
const allFiles = listFilesRecursive(absDir);
|
|
86
|
+
for (const absFile of allFiles) {
|
|
87
|
+
if (!matchesPattern(absFile, doc.pattern))
|
|
88
|
+
continue;
|
|
89
|
+
const relPath = relative(root, absFile).replace(/\\/g, '/');
|
|
90
|
+
const content = readFirstNLines(absFile, 80);
|
|
91
|
+
files.push({ relPath, content });
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// 2. 扫描 spec/ 目录(.md 和 .json)
|
|
95
|
+
const specDir = join(root, 'spec');
|
|
96
|
+
for (const absFile of listFilesRecursive(specDir)) {
|
|
97
|
+
const ext = extname(absFile).slice(1).toLowerCase();
|
|
98
|
+
if (ext !== 'md' && ext !== 'json')
|
|
99
|
+
continue;
|
|
100
|
+
const relPath = relative(root, absFile).replace(/\\/g, '/');
|
|
101
|
+
const content = readFirstNLines(absFile, 80);
|
|
102
|
+
files.push({ relPath, content });
|
|
103
|
+
}
|
|
104
|
+
// 3. 扫描 skills/*/SKILL.md
|
|
105
|
+
const skillsDir = join(root, 'skills');
|
|
106
|
+
if (existsSync(skillsDir)) {
|
|
107
|
+
for (const entry of readdirSync(skillsDir)) {
|
|
108
|
+
const skillMd = join(skillsDir, entry, 'SKILL.md');
|
|
109
|
+
if (existsSync(skillMd) && statSync(skillMd).isFile()) {
|
|
110
|
+
const relPath = `skills/${entry}/SKILL.md`;
|
|
111
|
+
const content = readFirstNLines(skillMd, 80);
|
|
112
|
+
files.push({ relPath, content });
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (files.length === 0) {
|
|
117
|
+
console.log('No files found to index. Make sure project documents exist in logos/resources/.\n');
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
console.log(` Found ${files.length} files to index.`);
|
|
121
|
+
// 读取当前 logos-project.yaml 全文(供 AI 参考)
|
|
122
|
+
const currentYaml = readFileSync(yamlPath, 'utf-8');
|
|
123
|
+
// 生成 Prompt
|
|
124
|
+
const prompt = buildPrompt(files, currentYaml, locale);
|
|
125
|
+
const promptPath = join(root, 'logos', 'index-prompt.md');
|
|
126
|
+
writeFileSync(promptPath, prompt);
|
|
127
|
+
console.log(` ✓ Generated: logos/index-prompt.md\n`);
|
|
128
|
+
console.log('Next step:');
|
|
129
|
+
console.log(' Tell your AI assistant: "Read logos/index-prompt.md and execute the instructions"\n');
|
|
130
|
+
console.log(' The AI will read each file\'s content and directly update logos/logos-project.yaml\n');
|
|
131
|
+
}
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
// Prompt 生成
|
|
134
|
+
// ---------------------------------------------------------------------------
|
|
135
|
+
function buildPrompt(files, currentYaml, locale) {
|
|
136
|
+
const isZh = locale === 'zh';
|
|
137
|
+
const header = isZh
|
|
138
|
+
? `# OpenLogos Index 更新任务
|
|
139
|
+
|
|
140
|
+
## 任务说明
|
|
141
|
+
|
|
142
|
+
请阅读下方各文件的内容摘要,然后**直接更新** \`logos/logos-project.yaml\` 的 \`resource_index\` 字段。
|
|
143
|
+
|
|
144
|
+
**规则:**
|
|
145
|
+
- 对于 \`resource_index\` 中**已有**的条目:评估 desc 是否足够详细,如可改善则优化
|
|
146
|
+
- 对于**未收录**的文件:添加新条目,desc 要详细说明文件内容和 AI 应在何时读取它
|
|
147
|
+
- desc 语言:**中文**,长度 30-80 字,说明「文件包含什么」以及「AI 在什么场景下必须读取」
|
|
148
|
+
- 格式:\`- path: <相对路径>\\n desc: <描述>\`
|
|
149
|
+
|
|
150
|
+
## 当前 logos-project.yaml 内容
|
|
151
|
+
|
|
152
|
+
\`\`\`yaml
|
|
153
|
+
${currentYaml}
|
|
154
|
+
\`\`\`
|
|
155
|
+
|
|
156
|
+
## 待分析的文件(共 ${files.length} 个)
|
|
157
|
+
|
|
158
|
+
`
|
|
159
|
+
: `# OpenLogos Index Update Task
|
|
160
|
+
|
|
161
|
+
## Instructions
|
|
162
|
+
|
|
163
|
+
Read the file content summaries below, then **directly update** \`logos/logos-project.yaml\`'s \`resource_index\` field.
|
|
164
|
+
|
|
165
|
+
**Rules:**
|
|
166
|
+
- For entries **already in** \`resource_index\`: evaluate if desc is detailed enough; improve if possible
|
|
167
|
+
- For **missing** files: add new entries with detailed desc explaining what the file contains and when AI should read it
|
|
168
|
+
- desc language: **English**, 30-80 words, covering "what the file contains" and "when AI must read it"
|
|
169
|
+
- Format: \`- path: <relative-path>\\n desc: <description>\`
|
|
170
|
+
|
|
171
|
+
## Current logos-project.yaml
|
|
172
|
+
|
|
173
|
+
\`\`\`yaml
|
|
174
|
+
${currentYaml}
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
## Files to Analyze (${files.length} total)
|
|
178
|
+
|
|
179
|
+
`;
|
|
180
|
+
let body = '';
|
|
181
|
+
for (let i = 0; i < files.length; i++) {
|
|
182
|
+
const f = files[i];
|
|
183
|
+
body += `### ${i + 1}. \`${f.relPath}\`\n\n`;
|
|
184
|
+
body += '```\n';
|
|
185
|
+
body += f.content;
|
|
186
|
+
body += '\n```\n\n';
|
|
187
|
+
}
|
|
188
|
+
const footer = isZh
|
|
189
|
+
? `## 执行要求
|
|
190
|
+
|
|
191
|
+
1. 逐个分析上方每个文件的内容
|
|
192
|
+
2. 为每个文件生成或优化 desc(中文,30-80 字)
|
|
193
|
+
3. **直接修改** \`logos/logos-project.yaml\` 的 \`resource_index\` 字段
|
|
194
|
+
4. 保持 YAML 格式正确(缩进 2 空格)
|
|
195
|
+
5. 完成后报告:新增 N 条,优化 M 条,跳过 K 条
|
|
196
|
+
`
|
|
197
|
+
: `## Execution Requirements
|
|
198
|
+
|
|
199
|
+
1. Analyze each file's content above
|
|
200
|
+
2. Generate or improve desc for each file (English, 30-80 words)
|
|
201
|
+
3. **Directly edit** \`logos/logos-project.yaml\`'s \`resource_index\` field
|
|
202
|
+
4. Maintain correct YAML format (2-space indent)
|
|
203
|
+
5. After completion, report: added N, improved M, skipped K
|
|
204
|
+
`;
|
|
205
|
+
return header + body + footer;
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=index-cmd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-cmd.js","sourceRoot":"","sources":["../../src/commands/index-cmd.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAcA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { archive } from './commands/archive.js';
|
|
|
8
8
|
import { verify } from './commands/verify.js';
|
|
9
9
|
import { launch } from './commands/launch.js';
|
|
10
10
|
import { detect } from './commands/detect.js';
|
|
11
|
+
import { indexCommand } from './commands/index-cmd.js';
|
|
11
12
|
import { VERSION, parseFormat } from './lib/json-output.js';
|
|
12
13
|
export { VERSION } from './lib/json-output.js';
|
|
13
14
|
const HELP = `
|
|
@@ -28,6 +29,7 @@ Commands:
|
|
|
28
29
|
merge <slug> Generate MERGE_PROMPT.md for AI to execute delta merging
|
|
29
30
|
archive <slug> Archive a completed change proposal
|
|
30
31
|
detect Show CLI version and project detection info
|
|
32
|
+
index Generate an AI-ready prompt to rebuild resource_index with file-content-based desc
|
|
31
33
|
|
|
32
34
|
Options:
|
|
33
35
|
--help, -h Show this help message
|
|
@@ -103,6 +105,9 @@ async function main() {
|
|
|
103
105
|
case 'detect':
|
|
104
106
|
detect(format);
|
|
105
107
|
break;
|
|
108
|
+
case 'index':
|
|
109
|
+
indexCommand();
|
|
110
|
+
break;
|
|
106
111
|
default:
|
|
107
112
|
console.error(`Unknown command: ${command}`);
|
|
108
113
|
console.log(HELP);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +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;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG/C,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "OpenLogos — generate AI-ready resource_index update prompt / 生成 AI 驱动的索引更新 Prompt"
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
在项目根执行:
|
|
6
|
+
|
|
7
|
+
!`openlogos index`
|
|
8
|
+
|
|
9
|
+
将终端输出告知用户;若成功,提示用户:「请读取 `logos/index-prompt.md` 并执行其中的更新指令」,AI 将读取各文件内容后直接更新 `logos/logos-project.yaml` 的 `resource_index` 字段。
|