engine7 7.1.38 → 7.1.40

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 (54) hide show
  1. package/dist/cli.mjs +81 -45
  2. package/dist/engine-startup.mjs +4856 -3650
  3. package/dist/main.mjs +4852 -3646
  4. package/package.json +2 -1
  5. package/templates/skills/superpowers/brainstorming/SKILL.md +151 -0
  6. package/templates/skills/superpowers/brainstorming/scripts/frame-template.html +213 -0
  7. package/templates/skills/superpowers/brainstorming/scripts/helper.js +167 -0
  8. package/templates/skills/superpowers/brainstorming/scripts/server.cjs +723 -0
  9. package/templates/skills/superpowers/brainstorming/scripts/start-server.sh +209 -0
  10. package/templates/skills/superpowers/brainstorming/scripts/stop-server.sh +120 -0
  11. package/templates/skills/superpowers/brainstorming/spec-document-reviewer-prompt.md +49 -0
  12. package/templates/skills/superpowers/brainstorming/visual-companion.md +298 -0
  13. package/templates/skills/superpowers/dispatching-parallel-agents/SKILL.md +167 -0
  14. package/templates/skills/superpowers/executing-plans/SKILL.md +64 -0
  15. package/templates/skills/superpowers/finishing-a-development-branch/SKILL.md +201 -0
  16. package/templates/skills/superpowers/receiving-code-review/SKILL.md +205 -0
  17. package/templates/skills/superpowers/requesting-code-review/SKILL.md +95 -0
  18. package/templates/skills/superpowers/requesting-code-review/code-reviewer.md +172 -0
  19. package/templates/skills/superpowers/subagent-driven-development/SKILL.md +503 -0
  20. package/templates/skills/superpowers/subagent-driven-development/implementer-prompt.md +142 -0
  21. package/templates/skills/superpowers/subagent-driven-development/re-review-prompt.md +106 -0
  22. package/templates/skills/superpowers/subagent-driven-development/scripts/review-package +46 -0
  23. package/templates/skills/superpowers/subagent-driven-development/scripts/sdd-workspace +40 -0
  24. package/templates/skills/superpowers/subagent-driven-development/scripts/task-brief +41 -0
  25. package/templates/skills/superpowers/subagent-driven-development/task-reviewer-prompt.md +185 -0
  26. package/templates/skills/superpowers/systematic-debugging/CREATION-LOG.md +119 -0
  27. package/templates/skills/superpowers/systematic-debugging/SKILL.md +283 -0
  28. package/templates/skills/superpowers/systematic-debugging/condition-based-waiting-example.ts +158 -0
  29. package/templates/skills/superpowers/systematic-debugging/condition-based-waiting.md +115 -0
  30. package/templates/skills/superpowers/systematic-debugging/defense-in-depth.md +122 -0
  31. package/templates/skills/superpowers/systematic-debugging/find-polluter.sh +72 -0
  32. package/templates/skills/superpowers/systematic-debugging/root-cause-tracing.md +169 -0
  33. package/templates/skills/superpowers/systematic-debugging/test-academic.md +14 -0
  34. package/templates/skills/superpowers/systematic-debugging/test-pressure-1.md +58 -0
  35. package/templates/skills/superpowers/systematic-debugging/test-pressure-2.md +68 -0
  36. package/templates/skills/superpowers/systematic-debugging/test-pressure-3.md +69 -0
  37. package/templates/skills/superpowers/test-driven-development/SKILL.md +320 -0
  38. package/templates/skills/superpowers/test-driven-development/writing-good-tests.md +198 -0
  39. package/templates/skills/superpowers/using-git-worktrees/SKILL.md +167 -0
  40. package/templates/skills/superpowers/using-superpowers/SKILL.md +62 -0
  41. package/templates/skills/superpowers/using-superpowers/references/antigravity-tools.md +23 -0
  42. package/templates/skills/superpowers/using-superpowers/references/codex-tools.md +39 -0
  43. package/templates/skills/superpowers/using-superpowers/references/gemini-tools.md +63 -0
  44. package/templates/skills/superpowers/using-superpowers/references/pi-tools.md +16 -0
  45. package/templates/skills/superpowers/verification-before-completion/SKILL.md +120 -0
  46. package/templates/skills/superpowers/writing-plans/SKILL.md +168 -0
  47. package/templates/skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +49 -0
  48. package/templates/skills/superpowers/writing-skills/SKILL.md +679 -0
  49. package/templates/skills/superpowers/writing-skills/anthropic-best-practices.md +1150 -0
  50. package/templates/skills/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +189 -0
  51. package/templates/skills/superpowers/writing-skills/graphviz-conventions.dot +172 -0
  52. package/templates/skills/superpowers/writing-skills/persuasion-principles.md +187 -0
  53. package/templates/skills/superpowers/writing-skills/render-graphs.js +168 -0
  54. package/templates/skills/superpowers/writing-skills/testing-skills-with-subagents.md +384 -0
package/dist/cli.mjs CHANGED
@@ -1,8 +1,13 @@
1
1
  const require=(await import('node:module')).createRequire(import.meta.url)
2
2
  var __defProp = Object.defineProperty;
3
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __esm = (fn, res) => function __init() {
5
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
4
+ var __esm = (fn, res, err) => function __init() {
5
+ if (err) throw err[0];
6
+ try {
7
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
+ } catch (e) {
9
+ throw err = [e], e;
10
+ }
6
11
  };
7
12
  var __export = (target, all) => {
8
13
  for (var name in all)
@@ -205,12 +210,19 @@ async function doExport(opts) {
205
210
  configFiles.push(f);
206
211
  }
207
212
  }
213
+ const EVEROS_SKIP = /* @__PURE__ */ new Set([".tmp", ".lock", "import.log", "import_progress.json"]);
208
214
  const everosDir = path.join(stateDir, ".everos");
209
215
  const everosFiles = [];
210
216
  if (fs.existsSync(everosDir)) {
211
217
  for (const f of collectAllFiles(everosDir)) {
218
+ if (EVEROS_SKIP.has(path.basename(f))) continue;
212
219
  everosFiles.push(f);
213
220
  }
221
+ const walFile = path.join(everosDir, ".index", "sqlite", "system.db-wal");
222
+ if (fs.existsSync(walFile) && fs.statSync(walFile).size > 0) {
223
+ console.warn(`\u26A0\uFE0F .everos/system.db-wal \u975E\u7A7A\u2014\u2014everos \u670D\u52A1\u53EF\u80FD\u6B63\u5728\u5199\u5165\uFF0C\u5FEB\u7167\u53EF\u80FD\u4E0D\u4E00\u81F4`);
224
+ console.warn(` \u5EFA\u8BAE: \u5148\u505C everos \u670D\u52A1\u518D export\uFF0C\u6216 import \u540E\u91CD\u5EFA\u7D22\u5F15`);
225
+ }
214
226
  }
215
227
  console.log(` workspace \u6587\u4EF6: ${wsFiles.length}`);
216
228
  console.log(` session jsonl: ${sessionFiles.length} (\u6700\u8FD17\u5929)`);
@@ -221,6 +233,12 @@ async function doExport(opts) {
221
233
  [DRY RUN] \u4F1A\u6253\u5305\u4EE5\u4E0B\u6587\u4EF6:`);
222
234
  wsFiles.slice(0, 20).forEach((f) => console.log(` ${path.relative(workspace, f)}`));
223
235
  if (wsFiles.length > 20) console.log(` ... \u8FD8\u6709 ${wsFiles.length - 20} \u4E2A\u6587\u4EF6`);
236
+ if (everosFiles.length > 0) {
237
+ console.log(`
238
+ [DRY RUN] everos (${everosFiles.length} \u6587\u4EF6):`);
239
+ everosFiles.slice(0, 10).forEach((f) => console.log(` ${path.relative(stateDir, f)}`));
240
+ if (everosFiles.length > 10) console.log(` ... \u8FD8\u6709 ${everosFiles.length - 10} \u4E2A\u6587\u4EF6`);
241
+ }
224
242
  console.log(`
225
243
  [DRY RUN] \u4E0D\u5B9E\u9645\u6253\u5305`);
226
244
  return;
@@ -233,54 +251,47 @@ async function doExport(opts) {
233
251
  fs.mkdirSync(stagingDir, { recursive: true });
234
252
  let fileCount = 0;
235
253
  let totalSize = 0;
236
- for (const srcFile of wsFiles) {
237
- const relPath = path.relative(workspace, srcFile);
238
- const destFile = path.join(stagingDir, "workspace", relPath);
254
+ let copyFail = 0;
255
+ const copyOne = (srcFile, relRoot, destRoot) => {
256
+ const relPath = path.relative(relRoot, srcFile);
257
+ const destFile = path.join(destRoot, relPath);
239
258
  fs.mkdirSync(path.dirname(destFile), { recursive: true });
240
- if (isTextFile(srcFile)) {
241
- const content = fs.readFileSync(srcFile, "utf-8");
242
- fs.writeFileSync(destFile, sanitizeContent(content, dirs));
243
- } else {
244
- fs.copyFileSync(srcFile, destFile);
259
+ try {
260
+ if (isTextFile(srcFile)) {
261
+ const content = fs.readFileSync(srcFile, "utf-8");
262
+ fs.writeFileSync(destFile, sanitizeContent(content, dirs));
263
+ } else {
264
+ fs.copyFileSync(srcFile, destFile);
265
+ }
266
+ fileCount++;
267
+ totalSize += fs.statSync(srcFile).size;
268
+ } catch (e) {
269
+ copyFail++;
270
+ console.warn(` \u26A0\uFE0F \u62F7\u8D1D\u5931\u8D25: ${relPath} (${e.code || e.message})`);
245
271
  }
246
- fileCount++;
247
- totalSize += fs.statSync(srcFile).size;
248
- }
272
+ };
273
+ for (const srcFile of wsFiles) copyOne(srcFile, workspace, path.join(stagingDir, "workspace"));
249
274
  for (const srcFile of sessionFiles) {
250
275
  const relPath = path.relative(stateDir, srcFile);
251
276
  const destFile = path.join(stagingDir, relPath);
252
277
  fs.mkdirSync(path.dirname(destFile), { recursive: true });
253
- let content = fs.readFileSync(srcFile, "utf-8");
254
- content = sanitizeContent(content, dirs);
255
- const baseName = path.basename(srcFile);
256
- if (baseName === "session-index.json" || baseName === "platform-map.json") {
257
- content = content.split("\\\\").join("/");
258
- }
259
- fs.writeFileSync(destFile, content);
260
- fileCount++;
261
- totalSize += fs.statSync(srcFile).size;
262
- }
263
- for (const srcFile of configFiles) {
264
- const relPath = path.relative(stateDir, srcFile);
265
- const destFile = path.join(stagingDir, relPath);
266
- fs.mkdirSync(path.dirname(destFile), { recursive: true });
267
- if (isTextFile(srcFile)) {
268
- const content = fs.readFileSync(srcFile, "utf-8");
269
- fs.writeFileSync(destFile, sanitizeContent(content, dirs));
270
- } else {
271
- fs.copyFileSync(srcFile, destFile);
278
+ try {
279
+ let content = fs.readFileSync(srcFile, "utf-8");
280
+ content = sanitizeContent(content, dirs);
281
+ const baseName = path.basename(srcFile);
282
+ if (baseName === "session-index.json" || baseName === "platform-map.json") {
283
+ content = content.split("\\\\").join("/");
284
+ }
285
+ fs.writeFileSync(destFile, content);
286
+ fileCount++;
287
+ totalSize += fs.statSync(srcFile).size;
288
+ } catch (e) {
289
+ copyFail++;
290
+ console.warn(` \u26A0\uFE0F \u62F7\u8D1D\u5931\u8D25: ${relPath} (${e.code || e.message})`);
272
291
  }
273
- fileCount++;
274
- totalSize += fs.statSync(srcFile).size;
275
- }
276
- for (const srcFile of everosFiles) {
277
- const relPath = path.relative(stateDir, srcFile);
278
- const destFile = path.join(stagingDir, relPath);
279
- fs.mkdirSync(path.dirname(destFile), { recursive: true });
280
- fs.copyFileSync(srcFile, destFile);
281
- fileCount++;
282
- totalSize += fs.statSync(srcFile).size;
283
292
  }
293
+ for (const srcFile of configFiles) copyOne(srcFile, stateDir, stagingDir);
294
+ for (const srcFile of everosFiles) copyOne(srcFile, stateDir, stagingDir);
284
295
  const manifest = {
285
296
  agentName,
286
297
  version,
@@ -302,11 +313,11 @@ async function doExport(opts) {
302
313
  const tarExe = process.platform === "win32" ? "C:\\Windows\\System32\\tar.exe" : "tar";
303
314
  execSync(`"${tarExe}" -czf "${archiveFile}" -C "${tmpDir}" ${agentName}`, { stdio: "pipe" });
304
315
  const archiveSize = fs.statSync(archiveFile).size;
305
- console.log(`\u2705 \u6253\u5305\u5B8C\u6210: ${archiveFile} (${(archiveSize / 1024 / 1024).toFixed(1)} MB, ${fileCount} \u6587\u4EF6)`);
316
+ console.log(`\u2705 \u6253\u5305\u5B8C\u6210: ${archiveFile} (${(archiveSize / 1024 / 1024).toFixed(1)} MB, ${fileCount} \u6587\u4EF6${copyFail ? `, \u5931\u8D25 ${copyFail}` : ""})`);
306
317
  const cfg = loadTravelConfig();
307
318
  if (!cfg || !cfg.githubToken) {
308
319
  console.log(`
309
- \u26A0\uFE0F \u672A\u914D\u7F6E GitHub\uFF0Ctar.gz \u5DF2\u751F\u6210: ${tarFile}`);
320
+ \u26A0\uFE0F \u672A\u914D\u7F6E GitHub\uFF0Ctar.gz \u5DF2\u751F\u6210: ${archiveFile}`);
310
321
  console.log(` \u914D\u7F6E GitHub: \u7F16\u8F91 ${CONFIG_PATH}`);
311
322
  console.log(` \u6216\u624B\u52A8\u4E0A\u4F20\u5230 GitHub private repo release`);
312
323
  return;
@@ -400,6 +411,28 @@ async function doImport(opts) {
400
411
  restoredCount++;
401
412
  }
402
413
  }
414
+ const everosStaging = path.join(stagingDir, ".everos");
415
+ if (fs.existsSync(everosStaging)) {
416
+ const everosFiles = collectAllFiles(everosStaging);
417
+ for (const srcFile of everosFiles) {
418
+ const relPath = path.relative(stagingDir, srcFile);
419
+ const destFile = path.join(stateDir, relPath);
420
+ fs.mkdirSync(path.dirname(destFile), { recursive: true });
421
+ try {
422
+ if (isTextFile(srcFile)) {
423
+ const content = fs.readFileSync(srcFile, "utf-8");
424
+ fs.writeFileSync(destFile, restoreContent(content, dirs));
425
+ } else {
426
+ fs.copyFileSync(srcFile, destFile);
427
+ }
428
+ restoredCount++;
429
+ } catch (e) {
430
+ skipCount++;
431
+ console.log(` \u26A0\uFE0F \u8DF3\u8FC7: ${path.relative(everosStaging, srcFile)} (${e.code || e.message})`);
432
+ }
433
+ }
434
+ console.log(` everos: ${everosFiles.length} \u6587\u4EF6\u5DF2\u6062\u590D`);
435
+ }
403
436
  console.log(`\u2705 \u6062\u590D\u5B8C\u6210: ${restoredCount} \u6587\u4EF6 \u2192 ${stateDir}${skipCount ? ` (\u8DF3\u8FC7 ${skipCount})` : ""}`);
404
437
  const platformConfigName = process.platform === "darwin" ? "xiaoke-mac.json" : "xiaoke-win.json";
405
438
  const restoredConfigPath = path.join(stateDir, "configs", platformConfigName);
@@ -582,7 +615,10 @@ var init_cli_travel = __esm({
582
615
  ".bat",
583
616
  ".sh",
584
617
  ".csv",
585
- ".html"
618
+ ".html",
619
+ ".toml",
620
+ ".list"
621
+ // .everos 的 everos.toml/config.toml/ome.toml/everos-env.list
586
622
  ]);
587
623
  }
588
624
  });