wangchuan 2.9.0 → 2.11.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 (75) hide show
  1. package/dist/bin/wangchuan.js +18 -1
  2. package/dist/bin/wangchuan.js.map +1 -1
  3. package/dist/src/agents/claude.d.ts +6 -0
  4. package/dist/src/agents/claude.d.ts.map +1 -0
  5. package/dist/src/agents/claude.js +27 -0
  6. package/dist/src/agents/claude.js.map +1 -0
  7. package/dist/src/agents/codebuddy.d.ts +6 -0
  8. package/dist/src/agents/codebuddy.d.ts.map +1 -0
  9. package/dist/src/agents/codebuddy.js +33 -0
  10. package/dist/src/agents/codebuddy.js.map +1 -0
  11. package/dist/src/agents/cursor.d.ts +6 -0
  12. package/dist/src/agents/cursor.d.ts.map +1 -0
  13. package/dist/src/agents/cursor.js +32 -0
  14. package/dist/src/agents/cursor.js.map +1 -0
  15. package/dist/src/agents/gemini.d.ts +6 -0
  16. package/dist/src/agents/gemini.d.ts.map +1 -0
  17. package/dist/src/agents/gemini.js +22 -0
  18. package/dist/src/agents/gemini.js.map +1 -0
  19. package/dist/src/agents/index.d.ts +26 -0
  20. package/dist/src/agents/index.d.ts.map +1 -0
  21. package/dist/src/agents/index.js +56 -0
  22. package/dist/src/agents/index.js.map +1 -0
  23. package/dist/src/agents/openclaw.d.ts +6 -0
  24. package/dist/src/agents/openclaw.d.ts.map +1 -0
  25. package/dist/src/agents/openclaw.js +25 -0
  26. package/dist/src/agents/openclaw.js.map +1 -0
  27. package/dist/src/agents/types.d.ts +15 -0
  28. package/dist/src/agents/types.d.ts.map +1 -0
  29. package/dist/src/agents/types.js +5 -0
  30. package/dist/src/agents/types.js.map +1 -0
  31. package/dist/src/agents/workbuddy.d.ts +6 -0
  32. package/dist/src/agents/workbuddy.d.ts.map +1 -0
  33. package/dist/src/agents/workbuddy.js +34 -0
  34. package/dist/src/agents/workbuddy.js.map +1 -0
  35. package/dist/src/commands/doctor.d.ts +14 -0
  36. package/dist/src/commands/doctor.d.ts.map +1 -0
  37. package/dist/src/commands/doctor.js +194 -0
  38. package/dist/src/commands/doctor.js.map +1 -0
  39. package/dist/src/commands/init.d.ts +7 -0
  40. package/dist/src/commands/init.d.ts.map +1 -1
  41. package/dist/src/commands/init.js +47 -13
  42. package/dist/src/commands/init.js.map +1 -1
  43. package/dist/src/commands/pull.d.ts.map +1 -1
  44. package/dist/src/commands/pull.js +11 -1
  45. package/dist/src/commands/pull.js.map +1 -1
  46. package/dist/src/commands/push.d.ts.map +1 -1
  47. package/dist/src/commands/push.js +11 -0
  48. package/dist/src/commands/push.js.map +1 -1
  49. package/dist/src/commands/report.d.ts +11 -0
  50. package/dist/src/commands/report.d.ts.map +1 -0
  51. package/dist/src/commands/report.js +141 -0
  52. package/dist/src/commands/report.js.map +1 -0
  53. package/dist/src/commands/sync.d.ts.map +1 -1
  54. package/dist/src/commands/sync.js +11 -1
  55. package/dist/src/commands/sync.js.map +1 -1
  56. package/dist/src/core/config.d.ts +3 -3
  57. package/dist/src/core/config.d.ts.map +1 -1
  58. package/dist/src/core/config.js +5 -143
  59. package/dist/src/core/config.js.map +1 -1
  60. package/dist/src/core/sync-lock.d.ts +31 -0
  61. package/dist/src/core/sync-lock.d.ts.map +1 -0
  62. package/dist/src/core/sync-lock.js +95 -0
  63. package/dist/src/core/sync-lock.js.map +1 -0
  64. package/dist/src/i18n.d.ts.map +1 -1
  65. package/dist/src/i18n.js +53 -0
  66. package/dist/src/i18n.js.map +1 -1
  67. package/dist/src/types.d.ts +5 -1
  68. package/dist/src/types.d.ts.map +1 -1
  69. package/dist/src/types.js +5 -1
  70. package/dist/src/types.js.map +1 -1
  71. package/dist/src/utils/logger.d.ts +10 -1
  72. package/dist/src/utils/logger.d.ts.map +1 -1
  73. package/dist/src/utils/logger.js +43 -10
  74. package/dist/src/utils/logger.js.map +1 -1
  75. package/package.json +1 -1
@@ -1,6 +1,13 @@
1
1
  /**
2
- * logger.ts — 统一日志输出,支持着色与级别过滤
2
+ * logger.ts — Structured logging with level filtering, timestamps, and JSON output
3
+ *
4
+ * Supports:
5
+ * WANGCHUAN_LOG_LEVEL env: silent | error | warn | info | debug (default: info)
6
+ * WANGCHUAN_LOG_FORMAT env: json — outputs JSON lines for machine parsing
7
+ * Timestamp prefix in debug mode: [ISO8601] [LEVEL] message
8
+ * trace() method for very verbose output (only emitted in debug level)
3
9
  */
10
+ export type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'debug';
4
11
  export declare const logger: {
5
12
  readonly info: (...a: unknown[]) => void;
6
13
  readonly ok: (...a: unknown[]) => void;
@@ -8,6 +15,8 @@ export declare const logger: {
8
15
  readonly error: (...a: unknown[]) => void;
9
16
  readonly debug: (...a: unknown[]) => void;
10
17
  readonly step: (...a: unknown[]) => void;
18
+ /** Very verbose tracing — only emitted when log level is debug */
19
+ readonly trace: (...a: unknown[]) => void;
11
20
  readonly banner: (text: string) => void;
12
21
  };
13
22
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAyBH,eAAO,MAAM,MAAM;0BACH,OAAO,EAAE;wBACT,OAAO,EAAE;0BACT,OAAO,EAAE;2BACT,OAAO,EAAE;2BACT,OAAO,EAAE;0BACT,OAAO,EAAE;4BAEV,MAAM,KAAG,IAAI;CAKlB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AA4CtE,eAAO,MAAM,MAAM;0BACH,OAAO,EAAE;wBACT,OAAO,EAAE;0BACT,OAAO,EAAE;2BACT,OAAO,EAAE;2BACT,OAAO,EAAE;0BACT,OAAO,EAAE;IAEvB,kEAAkE;2BACpD,OAAO,EAAE;4BAEV,MAAM,KAAG,IAAI;CAUlB,CAAC"}
@@ -1,21 +1,46 @@
1
1
  /**
2
- * logger.ts — 统一日志输出,支持着色与级别过滤
2
+ * logger.ts — Structured logging with level filtering, timestamps, and JSON output
3
+ *
4
+ * Supports:
5
+ * WANGCHUAN_LOG_LEVEL env: silent | error | warn | info | debug (default: info)
6
+ * WANGCHUAN_LOG_FORMAT env: json — outputs JSON lines for machine parsing
7
+ * Timestamp prefix in debug mode: [ISO8601] [LEVEL] message
8
+ * trace() method for very verbose output (only emitted in debug level)
3
9
  */
4
10
  import chalk from 'chalk';
5
- const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
6
- const rawLevel = process.env['WANGCHUAN_LOG_LEVEL'] ?? 'info';
11
+ const LEVELS = { silent: -1, error: 3, warn: 2, info: 1, debug: 0 };
12
+ const rawLevel = (process.env['WANGCHUAN_LOG_LEVEL'] ?? 'info');
7
13
  const currentLevel = LEVELS[rawLevel] ?? LEVELS.info;
14
+ const isJsonFormat = process.env['WANGCHUAN_LOG_FORMAT'] === 'json';
15
+ const isDebugLevel = currentLevel === LEVELS.debug;
8
16
  const prefix = {
9
- info: chalk.cyan(''),
10
- ok: chalk.green(''),
11
- warn: chalk.yellow(''),
12
- error: chalk.red(''),
13
- debug: chalk.gray('·'),
14
- step: chalk.blue(''),
17
+ info: chalk.cyan('\u2139'),
18
+ ok: chalk.green('\u2714'),
19
+ warn: chalk.yellow('\u26A0'),
20
+ error: chalk.red('\u2716'),
21
+ debug: chalk.gray('\u00B7'),
22
+ step: chalk.blue('\u203A'),
23
+ trace: chalk.gray('\u2026'),
15
24
  };
25
+ /** Emit a JSON line to stdout */
26
+ function emitJson(level, args) {
27
+ const msg = args.map(a => (typeof a === 'string' ? a : JSON.stringify(a))).join(' ');
28
+ const line = JSON.stringify({ level, msg, ts: new Date().toISOString() });
29
+ console.log(line);
30
+ }
16
31
  function log(level, symbol, ...args) {
17
32
  if (LEVELS[level] < currentLevel)
18
33
  return;
34
+ if (isJsonFormat) {
35
+ emitJson(level, args);
36
+ return;
37
+ }
38
+ if (isDebugLevel) {
39
+ const ts = chalk.gray(`[${new Date().toISOString()}]`);
40
+ const tag = chalk.gray(`[${level.toUpperCase()}]`);
41
+ console.log(ts, tag, symbol, ...args);
42
+ return;
43
+ }
19
44
  console.log(symbol, ...args);
20
45
  }
21
46
  export const logger = {
@@ -25,9 +50,17 @@ export const logger = {
25
50
  error: (...a) => log('error', prefix['error'], chalk.red(String(a[0])), ...a.slice(1)),
26
51
  debug: (...a) => log('debug', prefix['debug'], chalk.gray(String(a[0])), ...a.slice(1)),
27
52
  step: (...a) => log('info', prefix['step'], ...a),
53
+ /** Very verbose tracing — only emitted when log level is debug */
54
+ trace: (...a) => log('debug', prefix['trace'], chalk.gray(String(a[0])), ...a.slice(1)),
28
55
  banner(text) {
56
+ if (currentLevel === LEVELS.silent)
57
+ return;
58
+ if (isJsonFormat) {
59
+ emitJson('info', [`\u2554\u2550\u2550 ${text} \u2550\u2550\u2557`]);
60
+ return;
61
+ }
29
62
  console.log();
30
- console.log(chalk.bold.cyan(` ╔══ ${text} ══╗`));
63
+ console.log(chalk.bold.cyan(` \u2554\u2550\u2550 ${text} \u2550\u2550\u2557`));
31
64
  console.log();
32
65
  },
33
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,MAAM,GAA6B,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAElF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,MAAM,CAAC;AAC9D,MAAM,YAAY,GAAW,MAAM,CAAC,QAAoB,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;AAEzE,MAAM,MAAM,GAA2B;IACrC,IAAI,EAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB,EAAE,EAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IACvB,IAAI,EAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;IACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;IACrB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;IACtB,IAAI,EAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;CACvB,CAAC;AAEF,SAAS,GAAG,CAAC,KAAe,EAAE,MAAc,EAAE,GAAG,IAAe;IAC9D,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY;QAAE,OAAO;IACzC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAG,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAG,MAAM,CAAC,MAAM,CAAE,EAAG,GAAG,CAAC,CAAC;IAChE,EAAE,EAAK,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAG,MAAM,CAAC,IAAI,CAAE,EAAK,GAAG,CAAC,CAAC;IAChE,IAAI,EAAG,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAG,MAAM,CAAC,MAAM,CAAE,EAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrG,KAAK,EAAE,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAE,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrG,KAAK,EAAE,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAE,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,EAAG,CAAC,GAAG,CAAY,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAG,MAAM,CAAC,MAAM,CAAE,EAAG,GAAG,CAAC,CAAC;IAEhE,MAAM,CAAC,IAAY;QACjB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;CACO,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/utils/logger.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wangchuan",
3
- "version": "2.9.0",
3
+ "version": "2.11.0",
4
4
  "description": "忘川 · AI 记忆同步系统 — 智能体记忆永不遗失",
5
5
  "bin": {
6
6
  "wangchuan": "./dist/bin/wangchuan.js"