devmind 1.0.2 → 1.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.
Files changed (122) hide show
  1. package/README.md +126 -162
  2. package/dist/cli/handlers.d.ts +2 -0
  3. package/dist/cli/handlers.js +140 -0
  4. package/dist/cli/handlers.js.map +1 -0
  5. package/dist/cli/register-all.d.ts +2 -0
  6. package/dist/cli/register-all.js +11 -0
  7. package/dist/cli/register-all.js.map +1 -0
  8. package/dist/cli/register-analysis.d.ts +2 -0
  9. package/dist/cli/register-analysis.js +137 -0
  10. package/dist/cli/register-analysis.js.map +1 -0
  11. package/dist/cli/register-codebase.d.ts +2 -0
  12. package/dist/cli/register-codebase.js +22 -0
  13. package/dist/cli/register-codebase.js.map +1 -0
  14. package/dist/cli/register-database.d.ts +2 -0
  15. package/dist/cli/register-database.js +44 -0
  16. package/dist/cli/register-database.js.map +1 -0
  17. package/dist/cli/register-memory.d.ts +2 -0
  18. package/dist/cli/register-memory.js +58 -0
  19. package/dist/cli/register-memory.js.map +1 -0
  20. package/dist/cli.js +9 -316
  21. package/dist/cli.js.map +1 -1
  22. package/dist/codebase/index.js +2 -2
  23. package/dist/codebase/index.js.map +1 -1
  24. package/dist/codebase/parsers/typescript.d.ts +1 -0
  25. package/dist/codebase/parsers/typescript.js +3 -0
  26. package/dist/codebase/parsers/typescript.js.map +1 -1
  27. package/dist/codebase/scanners/filesystem.d.ts +1 -0
  28. package/dist/codebase/scanners/filesystem.js +131 -4
  29. package/dist/codebase/scanners/filesystem.js.map +1 -1
  30. package/dist/commands/analyze.d.ts +1 -0
  31. package/dist/commands/analyze.js +166 -24
  32. package/dist/commands/analyze.js.map +1 -1
  33. package/dist/commands/audit-design.d.ts +8 -0
  34. package/dist/commands/audit-design.js +158 -0
  35. package/dist/commands/audit-design.js.map +1 -0
  36. package/dist/commands/audit-report.d.ts +18 -0
  37. package/dist/commands/audit-report.js +30 -0
  38. package/dist/commands/audit-report.js.map +1 -0
  39. package/dist/commands/audit-source.d.ts +21 -0
  40. package/dist/commands/audit-source.js +57 -0
  41. package/dist/commands/audit-source.js.map +1 -0
  42. package/dist/commands/audit.d.ts +1 -0
  43. package/dist/commands/audit.js +174 -73
  44. package/dist/commands/audit.js.map +1 -1
  45. package/dist/commands/claude-plugin.d.ts +8 -0
  46. package/dist/commands/claude-plugin.js +123 -0
  47. package/dist/commands/claude-plugin.js.map +1 -0
  48. package/dist/commands/codex-plugin.d.ts +9 -0
  49. package/dist/commands/codex-plugin.js +145 -0
  50. package/dist/commands/codex-plugin.js.map +1 -0
  51. package/dist/commands/context.js +66 -5
  52. package/dist/commands/context.js.map +1 -1
  53. package/dist/commands/design-system.d.ts +8 -0
  54. package/dist/commands/design-system.js +95 -0
  55. package/dist/commands/design-system.js.map +1 -0
  56. package/dist/commands/extract.d.ts +13 -0
  57. package/dist/commands/extract.js +79 -16
  58. package/dist/commands/extract.js.map +1 -1
  59. package/dist/commands/openclaw-plugin.d.ts +8 -0
  60. package/dist/commands/openclaw-plugin.js +103 -0
  61. package/dist/commands/openclaw-plugin.js.map +1 -0
  62. package/dist/commands/retrieve.d.ts +12 -0
  63. package/dist/commands/retrieve.js +230 -0
  64. package/dist/commands/retrieve.js.map +1 -0
  65. package/dist/commands/status.d.ts +1 -0
  66. package/dist/commands/status.js +54 -18
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/core/cache-json.d.ts +7 -0
  69. package/dist/core/cache-json.js +60 -0
  70. package/dist/core/cache-json.js.map +1 -0
  71. package/dist/core/errors.d.ts +2 -0
  72. package/dist/core/errors.js +49 -1
  73. package/dist/core/errors.js.map +1 -1
  74. package/dist/core/index.d.ts +4 -0
  75. package/dist/core/index.js +4 -0
  76. package/dist/core/index.js.map +1 -1
  77. package/dist/core/learning-parser.d.ts +6 -0
  78. package/dist/core/learning-parser.js +23 -0
  79. package/dist/core/learning-parser.js.map +1 -0
  80. package/dist/core/profile.d.ts +18 -0
  81. package/dist/core/profile.js +37 -0
  82. package/dist/core/profile.js.map +1 -0
  83. package/dist/core/source-file-cache.d.ts +13 -0
  84. package/dist/core/source-file-cache.js +85 -0
  85. package/dist/core/source-file-cache.js.map +1 -0
  86. package/dist/database/cli/register-all.d.ts +2 -0
  87. package/dist/database/cli/register-all.js +9 -0
  88. package/dist/database/cli/register-all.js.map +1 -0
  89. package/dist/database/cli/register-database.d.ts +2 -0
  90. package/dist/database/cli/register-database.js +44 -0
  91. package/dist/database/cli/register-database.js.map +1 -0
  92. package/dist/database/cli/register-interactive.d.ts +2 -0
  93. package/dist/database/cli/register-interactive.js +29 -0
  94. package/dist/database/cli/register-interactive.js.map +1 -0
  95. package/dist/database/cli/register-memory.d.ts +2 -0
  96. package/dist/database/cli/register-memory.js +47 -0
  97. package/dist/database/cli/register-memory.js.map +1 -0
  98. package/dist/database/cli.js +5 -112
  99. package/dist/database/cli.js.map +1 -1
  100. package/dist/database/commands/checkpoint.js +8 -10
  101. package/dist/database/commands/checkpoint.js.map +1 -1
  102. package/dist/database/commands/generate.js +6 -7
  103. package/dist/database/commands/generate.js.map +1 -1
  104. package/dist/database/commands/handoff.js +9 -8
  105. package/dist/database/commands/handoff.js.map +1 -1
  106. package/dist/database/commands/learn.d.ts +4 -0
  107. package/dist/database/commands/learn.js +245 -43
  108. package/dist/database/commands/learn.js.map +1 -1
  109. package/dist/database/commands/memory.js +1 -1
  110. package/dist/database/commands/validate.js +6 -4
  111. package/dist/database/commands/validate.js.map +1 -1
  112. package/dist/database/commands/watch.js +1 -1
  113. package/dist/database/commands/watch.js.map +1 -1
  114. package/dist/database/generators/templates.js +26 -26
  115. package/dist/database/generators/templates.js.map +1 -1
  116. package/dist/database/utils/json-output.d.ts +4 -0
  117. package/dist/database/utils/json-output.js +7 -0
  118. package/dist/database/utils/json-output.js.map +1 -1
  119. package/dist/generators/unified.d.ts +13 -0
  120. package/dist/generators/unified.js +390 -46
  121. package/dist/generators/unified.js.map +1 -1
  122. package/package.json +2 -2
@@ -1,7 +1,28 @@
1
1
  import * as path from 'path';
2
2
  import * as fs from 'fs';
3
- import { glob } from 'glob';
4
- import { logger, ensureDir, writeFileSafe, readFileSafe } from '../core/index.js';
3
+ import * as fsPromises from 'fs/promises';
4
+ import { logger, ensureDir, writeFileSafe, readFileSafe, createProfiler, readCacheJson, getSourceFilesWithCache, } from '../core/index.js';
5
+ async function readFilesInBatches(rootPath, relativePaths, batchSize = 48) {
6
+ const results = new Map();
7
+ for (let i = 0; i < relativePaths.length; i += batchSize) {
8
+ const batch = relativePaths.slice(i, i + batchSize);
9
+ const loaded = await Promise.all(batch.map(async (relPath) => {
10
+ try {
11
+ const content = await fsPromises.readFile(path.join(rootPath, relPath), 'utf-8');
12
+ return { relPath, content };
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }));
18
+ for (const item of loaded) {
19
+ if (!item)
20
+ continue;
21
+ results.set(item.relPath, item.content);
22
+ }
23
+ }
24
+ return results;
25
+ }
5
26
  function normalizeSentence(input) {
6
27
  return input.trim().replace(/\s+/g, ' ').replace(/[.;:,]+$/, '');
7
28
  }
@@ -90,6 +111,7 @@ async function appendToLearnFile(outputDir, learnings) {
90
111
  return learnPath;
91
112
  }
92
113
  export async function runExtraction(options) {
114
+ const profiler = createProfiler(!!options.profile);
93
115
  const outputDir = options.output || '.devmind';
94
116
  const rootPath = path.resolve(options.path || '.');
95
117
  const candidates = [];
@@ -107,22 +129,53 @@ export async function runExtraction(options) {
107
129
  // ignore unreadable files
108
130
  }
109
131
  }
110
- const sourceFiles = await glob('**/*.{ts,tsx,js,jsx,py,go,java,rb,php,rs}', {
111
- cwd: rootPath,
132
+ const sourceList = await profiler.section('extract.listSources', async () => getSourceFilesWithCache({
133
+ outputDir,
134
+ rootPath,
135
+ includeGlob: '**/*.{ts,tsx,js,jsx,py,go,java,rb,php,rs}',
112
136
  ignore: ['node_modules/**', '.git/**', '.devmind/**', 'dist/**', 'build/**'],
113
- nodir: true,
137
+ }));
138
+ const sourceFiles = sourceList.files;
139
+ const analyzeCache = await profiler.section('extract.loadAnalyzeCache', async () => {
140
+ const cachePath = path.join(outputDir, 'cache', 'analyze-cache.json');
141
+ const parsed = await readCacheJson(cachePath);
142
+ return parsed?.files || {};
114
143
  });
115
- for (const relPath of sourceFiles) {
116
- const fullPath = path.join(rootPath, relPath);
117
- try {
118
- const content = fs.readFileSync(fullPath, 'utf-8');
119
- candidates.push(...collectFromSourceComments(content));
120
- }
121
- catch {
122
- // ignore unreadable files
144
+ const sourceContents = new Map();
145
+ const missingFiles = [];
146
+ let cacheReused = 0;
147
+ await profiler.section('extract.reuseCachedSources', async () => {
148
+ for (const relPath of sourceFiles) {
149
+ const cached = analyzeCache[relPath];
150
+ if (cached?.content === undefined) {
151
+ missingFiles.push(relPath);
152
+ continue;
153
+ }
154
+ const fullPath = path.join(rootPath, relPath);
155
+ try {
156
+ const stat = fs.statSync(fullPath);
157
+ if (stat.mtimeMs === cached.mtimeMs && stat.size === cached.size) {
158
+ sourceContents.set(relPath, cached.content);
159
+ cacheReused += 1;
160
+ continue;
161
+ }
162
+ }
163
+ catch {
164
+ // fall through to missing path
165
+ }
166
+ missingFiles.push(relPath);
123
167
  }
168
+ });
169
+ const diskSourceContents = await profiler.section('extract.readSources', async () => readFilesInBatches(rootPath, missingFiles));
170
+ for (const [relPath, content] of diskSourceContents.entries()) {
171
+ sourceContents.set(relPath, content);
172
+ }
173
+ for (const content of sourceContents.values()) {
174
+ candidates.push(...collectFromSourceComments(content));
124
175
  }
125
- const extracted = dedupeLearnings(candidates).slice(0, 25);
176
+ const extracted = dedupeLearnings(candidates)
177
+ .sort((a, b) => a.category.localeCompare(b.category) || a.content.localeCompare(b.content))
178
+ .slice(0, 25);
126
179
  const reportPath = path.join(outputDir, 'analysis', 'EXTRACTED_LEARNINGS.md');
127
180
  await ensureDir(path.dirname(reportPath));
128
181
  let report = '# Extracted Learnings\n\n';
@@ -138,14 +191,24 @@ export async function runExtraction(options) {
138
191
  await writeFileSafe(reportPath, report);
139
192
  let learnPath = null;
140
193
  if (options.apply && extracted.length > 0) {
141
- learnPath = await appendToLearnFile(outputDir, extracted);
194
+ learnPath = await profiler.section('extract.appendLearn', async () => appendToLearnFile(outputDir, extracted));
142
195
  }
143
- return {
196
+ const result = {
144
197
  extracted: extracted.length,
145
198
  report: reportPath,
146
199
  applied: !!options.apply,
147
200
  learnPath,
201
+ sourceCache: {
202
+ reused: cacheReused,
203
+ diskReads: missingFiles.length,
204
+ },
205
+ sourceListCache: sourceList.cacheHit,
148
206
  };
207
+ if (!options.json && !options.silent) {
208
+ logger.info(`Source cache reuse: ${cacheReused}, disk reads: ${missingFiles.length}`);
209
+ }
210
+ const profile = profiler.report();
211
+ return profile ? { ...result, profile } : result;
149
212
  }
150
213
  export async function extract(options) {
151
214
  const result = await runExtraction(options);
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsBlF,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACjC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,UAAU,CAAC;IAC1F,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,aAAa,CAAC;IACjG,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,UAAU,CAAC;IACjG,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,cAAc,CAAC;IACnG,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAAC,OAAe;IAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAwB,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QACpE,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,SAAS;QAChC,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC;YAC9B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAAe;IAChD,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG;QACf,kDAAkD;QAClD,oBAAoB;QACpB,mBAAmB;KACpB,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC1C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/C,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;gBAAE,SAAS;YAC/B,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,aAAa,CAAC,IAAI,CAAC;gBAC7B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAA0B;IACjD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAwB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,SAAiB,EAAE,SAA8B;IAChF,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ;YACN,iHAAiH,CAAC;IACtH,CAAC;IAED,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,KAAK,IAAI,MAAM,SAAS,MAAM,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,OAAO,WAAW,CAAC;IAC5E,CAAC;IAED,MAAM,aAAa,CAAC,SAAS,EAAE,GAAG,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC;IACtD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAuB;IACzD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,IAAI,UAAU,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;IACnD,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,CAAC,oBAAoB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;IACpF,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QACvC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,2CAA2C,EAAE;QAC1E,GAAG,EAAE,QAAQ;QACb,MAAM,EAAE,CAAC,iBAAiB,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC;QAC5E,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACnD,UAAU,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAE3D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;IAC9E,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,2BAA2B,CAAC;IACzC,MAAM,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;IACvD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,0CAA0C,CAAC;IACvD,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,MAAM,IAAI,CAAC,QAAQ,OAAO,IAAI,CAAC,OAAO,MAAM,CAAC;QACzD,CAAC;IACH,CAAC;IACD,MAAM,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,IAAI,OAAO,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,SAAS,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,MAAM;QAC3B,MAAM,EAAE,UAAU;QAClB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK;QACxB,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAuB;IACnD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;aAAM,IAAI,MAAM,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/commands/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface OpenClawPluginOptions {
2
+ name?: string;
3
+ force?: boolean;
4
+ json?: boolean;
5
+ project?: boolean;
6
+ }
7
+ export declare function openclawPlugin(options: OpenClawPluginOptions): Promise<void>;
8
+ export {};
@@ -0,0 +1,103 @@
1
+ import * as os from 'os';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs/promises';
4
+ import { logger, ensureDir, readFileSafe, writeFileSafe } from '../core/index.js';
5
+ async function fileExists(filePath) {
6
+ try {
7
+ await fs.access(filePath);
8
+ return true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ async function resolveSkillSource() {
15
+ const candidates = [
16
+ path.resolve(process.cwd(), 'integrations', 'openclaw', 'SKILL.md'),
17
+ path.resolve(process.cwd(), 'SKILL.md'),
18
+ ];
19
+ for (const candidate of candidates) {
20
+ if (await fileExists(candidate)) {
21
+ return candidate;
22
+ }
23
+ }
24
+ return null;
25
+ }
26
+ function resolveTargets(skillName, includeProject) {
27
+ const homeDir = os.homedir();
28
+ const cwd = process.cwd();
29
+ const userSkillsRoot = path.join(homeDir, '.openclaw', 'skills');
30
+ const targets = [
31
+ {
32
+ kind: 'user',
33
+ skillDir: path.join(userSkillsRoot, skillName),
34
+ skillPath: path.join(userSkillsRoot, skillName, 'SKILL.md'),
35
+ },
36
+ ];
37
+ if (includeProject) {
38
+ const projectRoot = path.join(cwd, '.openclaw', 'skills');
39
+ targets.push({
40
+ kind: 'project',
41
+ skillDir: path.join(projectRoot, skillName),
42
+ skillPath: path.join(projectRoot, skillName, 'SKILL.md'),
43
+ });
44
+ }
45
+ return targets;
46
+ }
47
+ export async function openclawPlugin(options) {
48
+ const skillName = options.name || 'devmind';
49
+ const force = !!options.force;
50
+ const jsonMode = !!options.json;
51
+ const includeProject = !!options.project;
52
+ const skillSource = await resolveSkillSource();
53
+ if (!skillSource) {
54
+ const message = 'No SKILL.md found to install for OpenClaw plugin.';
55
+ if (jsonMode) {
56
+ console.log(JSON.stringify({ success: false, error: message }, null, 2));
57
+ return;
58
+ }
59
+ logger.error(message);
60
+ return;
61
+ }
62
+ const skillContent = await readFileSafe(skillSource);
63
+ const targets = resolveTargets(skillName, includeProject);
64
+ const conflicts = [];
65
+ for (const target of targets) {
66
+ if ((await fileExists(target.skillPath)) && !force) {
67
+ conflicts.push(target.skillPath);
68
+ }
69
+ }
70
+ if (conflicts.length > 0) {
71
+ const message = `OpenClaw skill already exists. Use --force to overwrite. Conflicts: ${conflicts.join(', ')}`;
72
+ if (jsonMode) {
73
+ console.log(JSON.stringify({ success: false, error: message, conflicts }, null, 2));
74
+ return;
75
+ }
76
+ logger.warn(message);
77
+ return;
78
+ }
79
+ for (const target of targets) {
80
+ await ensureDir(target.skillDir);
81
+ await writeFileSafe(target.skillPath, skillContent);
82
+ }
83
+ const installed = targets.map((target) => target.skillPath);
84
+ if (jsonMode) {
85
+ console.log(JSON.stringify({
86
+ success: true,
87
+ skill: skillName,
88
+ source: skillSource,
89
+ installed,
90
+ notes: ['Restart OpenClaw session to pick up installed skills.'],
91
+ }, null, 2));
92
+ return;
93
+ }
94
+ logger.success('OpenClaw skill installed for DevMind.');
95
+ logger.info(` Skill: ${skillName}`);
96
+ logger.info(` Source: ${skillSource}`);
97
+ logger.info(' Installed paths:');
98
+ for (const installedPath of installed) {
99
+ logger.info(` - ${installedPath}`);
100
+ }
101
+ logger.info('Restart OpenClaw session to pick up installed skills.');
102
+ }
103
+ //# sourceMappingURL=openclaw-plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclaw-plugin.js","sourceRoot":"","sources":["../../src/commands/openclaw-plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ interface RetrieveOptions {
2
+ output?: string;
3
+ query: string;
4
+ type?: string;
5
+ tags?: string;
6
+ limit?: string | number;
7
+ maxWords?: string | number;
8
+ json?: boolean;
9
+ profile?: boolean;
10
+ }
11
+ export declare function retrieve(options: RetrieveOptions): Promise<void>;
12
+ export {};
@@ -0,0 +1,230 @@
1
+ import * as path from 'path';
2
+ import { createHash } from 'crypto';
3
+ import { logger, readFileSafe, createProfiler } from '../core/index.js';
4
+ function isJsonFlagEnabled(options) {
5
+ if (options.json === true)
6
+ return true;
7
+ try {
8
+ return options.opts?.().json === true;
9
+ }
10
+ catch {
11
+ return false;
12
+ }
13
+ }
14
+ function jsonFail(message) {
15
+ console.log(JSON.stringify({
16
+ success: false,
17
+ error: message,
18
+ timestamp: new Date().toISOString(),
19
+ }, null, 2));
20
+ }
21
+ function tokenize(input) {
22
+ return input
23
+ .toLowerCase()
24
+ .replace(/[^a-z0-9_\s-]/g, ' ')
25
+ .split(/\s+/)
26
+ .map((token) => token.trim())
27
+ .filter((token) => token.length >= 2);
28
+ }
29
+ function hashContent(content) {
30
+ return createHash('sha256').update(content, 'utf8').digest('hex').slice(0, 16);
31
+ }
32
+ function metadataScore(section, tokens) {
33
+ const haystack = `${section.id} ${section.title} ${section.type} ${section.tags.join(' ')}`.toLowerCase();
34
+ let score = section.priority === 'high' ? 2 : section.priority === 'medium' ? 1 : 0;
35
+ for (const token of tokens) {
36
+ if (haystack.includes(token))
37
+ score += 3;
38
+ }
39
+ return score;
40
+ }
41
+ function contentScore(content, tokens) {
42
+ const lc = content.toLowerCase();
43
+ let score = 0;
44
+ for (const token of tokens) {
45
+ if (lc.includes(token))
46
+ score += 2;
47
+ }
48
+ return score;
49
+ }
50
+ function parseIndexSections(indexContent) {
51
+ const parsed = JSON.parse(indexContent);
52
+ return parsed.sections || [];
53
+ }
54
+ function sliceByLines(content, startLine, endLine) {
55
+ const lines = content.split('\n');
56
+ return lines.slice(startLine - 1, endLine).join('\n').trim();
57
+ }
58
+ function parseTags(tagsRaw) {
59
+ if (!tagsRaw)
60
+ return [];
61
+ return tagsRaw
62
+ .split(',')
63
+ .map((tag) => tag.trim().toLowerCase())
64
+ .filter(Boolean);
65
+ }
66
+ function clampInt(value, fallback) {
67
+ if (value === undefined)
68
+ return fallback;
69
+ const parsed = Number(value);
70
+ if (!Number.isFinite(parsed))
71
+ return fallback;
72
+ return Math.max(1, Math.floor(parsed));
73
+ }
74
+ export async function retrieve(options) {
75
+ const jsonMode = isJsonFlagEnabled(options);
76
+ const profiler = createProfiler(!!options.profile);
77
+ const outputDir = options.output || '.devmind';
78
+ const query = options.query || '';
79
+ const tokens = tokenize(query);
80
+ const typeFilter = options.type?.toLowerCase();
81
+ const tagFilter = parseTags(options.tags);
82
+ const limit = clampInt(options.limit, 6);
83
+ const maxWords = clampInt(options.maxWords, 1400);
84
+ const indexPath = path.join(outputDir, 'index.json');
85
+ const agentsPath = path.join(outputDir, 'AGENTS.md');
86
+ let indexSections = [];
87
+ let agentsContent = '';
88
+ try {
89
+ indexSections = parseIndexSections(await profiler.section('retrieve.loadIndex', async () => readFileSafe(indexPath)));
90
+ agentsContent = await profiler.section('retrieve.loadAgents', async () => readFileSafe(agentsPath));
91
+ }
92
+ catch (error) {
93
+ const message = `Failed to load retrieval files in ${outputDir}. Run "devmind scan" or "devmind generate --all".`;
94
+ if (jsonMode) {
95
+ jsonFail(message);
96
+ return;
97
+ }
98
+ logger.error(message);
99
+ return;
100
+ }
101
+ if (indexSections.length === 0) {
102
+ const message = 'No section metadata found in index.json. Regenerate context first.';
103
+ if (jsonMode) {
104
+ jsonFail(message);
105
+ return;
106
+ }
107
+ logger.error(message);
108
+ return;
109
+ }
110
+ let filtered = indexSections.filter((section) => {
111
+ if (typeFilter && section.type !== typeFilter)
112
+ return false;
113
+ if (tagFilter.length > 0 && !tagFilter.every((tag) => section.tags.map((t) => t.toLowerCase()).includes(tag))) {
114
+ return false;
115
+ }
116
+ return true;
117
+ });
118
+ if (filtered.length === 0) {
119
+ if (jsonMode) {
120
+ console.log(JSON.stringify({
121
+ success: true,
122
+ query,
123
+ outputDir,
124
+ selected: [],
125
+ message: 'No sections matched the requested filters.',
126
+ timestamp: new Date().toISOString(),
127
+ }, null, 2));
128
+ return;
129
+ }
130
+ logger.warn('No sections matched the requested filters.');
131
+ return;
132
+ }
133
+ // Stage 1: metadata filter + ranking
134
+ filtered = filtered
135
+ .map((section) => ({ section, stage1Score: metadataScore(section, tokens) }))
136
+ .sort((a, b) => b.stage1Score - a.stage1Score ||
137
+ a.section.id.localeCompare(b.section.id) ||
138
+ a.section.startLine - b.section.startLine)
139
+ .slice(0, Math.min(24, filtered.length))
140
+ .map((item) => item.section);
141
+ // Stage 2: content ranking
142
+ const ranked = filtered.map((section) => {
143
+ const content = sliceByLines(agentsContent, section.startLine, section.endLine);
144
+ const hash = hashContent(content);
145
+ if (hash !== section.contentHash) {
146
+ if (!jsonMode) {
147
+ logger.warn(`Section hash mismatch for ${section.id}; consider regenerating context.`);
148
+ }
149
+ }
150
+ const score = metadataScore(section, tokens) * 2 + contentScore(content, tokens);
151
+ return {
152
+ section,
153
+ stage1Score: metadataScore(section, tokens),
154
+ content,
155
+ score,
156
+ };
157
+ });
158
+ ranked.sort((a, b) => b.score - a.score ||
159
+ b.stage1Score - a.stage1Score ||
160
+ a.section.id.localeCompare(b.section.id) ||
161
+ a.section.startLine - b.section.startLine);
162
+ const selected = ranked.slice(0, limit);
163
+ const picked = [];
164
+ let wordBudget = 0;
165
+ for (const item of selected) {
166
+ const words = item.content.split(/\s+/).filter(Boolean).length;
167
+ if (wordBudget + words > maxWords && picked.length > 0)
168
+ continue;
169
+ picked.push(item);
170
+ wordBudget += words;
171
+ }
172
+ if (jsonMode) {
173
+ const profile = profiler.report();
174
+ console.log(JSON.stringify(profile
175
+ ? {
176
+ query,
177
+ outputDir,
178
+ selected: picked.map((item) => ({
179
+ id: item.section.id,
180
+ title: item.section.title,
181
+ type: item.section.type,
182
+ tags: item.section.tags,
183
+ source: item.section.source,
184
+ startLine: item.section.startLine,
185
+ endLine: item.section.endLine,
186
+ score: item.score,
187
+ content: item.content,
188
+ })),
189
+ profile,
190
+ }
191
+ : {
192
+ query,
193
+ outputDir,
194
+ selected: picked.map((item) => ({
195
+ id: item.section.id,
196
+ title: item.section.title,
197
+ type: item.section.type,
198
+ tags: item.section.tags,
199
+ source: item.section.source,
200
+ startLine: item.section.startLine,
201
+ endLine: item.section.endLine,
202
+ score: item.score,
203
+ content: item.content,
204
+ })),
205
+ }, null, 2));
206
+ return;
207
+ }
208
+ let output = '# Retrieved Context\n\n';
209
+ output += `Query: ${query || '(none)'}\n`;
210
+ output += `Selected sections: ${picked.length}\n\n`;
211
+ for (const item of picked) {
212
+ output += `## ${item.section.title}\n\n`;
213
+ output += `- ID: \`${item.section.id}\`\n`;
214
+ output += `- Type: \`${item.section.type}\`\n`;
215
+ output += `- Tags: ${item.section.tags.map((tag) => `\`${tag}\``).join(', ') || '(none)'}\n`;
216
+ output += `- Source: \`${item.section.source}\`\n`;
217
+ output += `- Lines: \`${item.section.startLine}-${item.section.endLine}\`\n\n`;
218
+ output += `${item.content}\n\n`;
219
+ }
220
+ console.log(output.trim());
221
+ const profile = profiler.report();
222
+ if (profile) {
223
+ logger.info('Performance Profile');
224
+ logger.info(`Total: ${profile.totalMs.toFixed(1)}ms`);
225
+ for (const step of profile.steps) {
226
+ logger.info(`- ${step.name}: ${step.ms.toFixed(1)}ms`);
227
+ }
228
+ }
229
+ }
230
+ //# sourceMappingURL=retrieve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrieve.js","sourceRoot":"","sources":["../../src/commands/retrieve.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ interface StatusOptions {
2
2
  output?: string;
3
3
  path?: string;
4
4
  json?: boolean;
5
+ profile?: boolean;
5
6
  }
6
7
  export declare function status(options: StatusOptions): Promise<void>;
7
8
  export {};