openclaw-telegram-manager 2.0.2 → 2.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.
Files changed (83) hide show
  1. package/README.md +10 -3
  2. package/dist/commands/archive.d.ts.map +1 -1
  3. package/dist/commands/archive.js +4 -6
  4. package/dist/commands/archive.js.map +1 -1
  5. package/dist/commands/autopilot.d.ts +3 -0
  6. package/dist/commands/autopilot.d.ts.map +1 -0
  7. package/dist/commands/autopilot.js +127 -0
  8. package/dist/commands/autopilot.js.map +1 -0
  9. package/dist/commands/daily-report.d.ts +4 -0
  10. package/dist/commands/daily-report.d.ts.map +1 -0
  11. package/dist/commands/daily-report.js +155 -0
  12. package/dist/commands/daily-report.js.map +1 -0
  13. package/dist/commands/doctor-all.d.ts.map +1 -1
  14. package/dist/commands/doctor-all.js +48 -14
  15. package/dist/commands/doctor-all.js.map +1 -1
  16. package/dist/commands/doctor.d.ts.map +1 -1
  17. package/dist/commands/doctor.js +3 -2
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/help.d.ts.map +1 -1
  20. package/dist/commands/help.js +0 -1
  21. package/dist/commands/help.js.map +1 -1
  22. package/dist/commands/init.d.ts +6 -1
  23. package/dist/commands/init.d.ts.map +1 -1
  24. package/dist/commands/init.js +73 -28
  25. package/dist/commands/init.js.map +1 -1
  26. package/dist/commands/list.d.ts.map +1 -1
  27. package/dist/commands/list.js +0 -1
  28. package/dist/commands/list.js.map +1 -1
  29. package/dist/commands/rename.d.ts.map +1 -1
  30. package/dist/commands/rename.js +4 -6
  31. package/dist/commands/rename.js.map +1 -1
  32. package/dist/commands/snooze.d.ts.map +1 -1
  33. package/dist/commands/snooze.js +3 -5
  34. package/dist/commands/snooze.js.map +1 -1
  35. package/dist/commands/status.js +2 -2
  36. package/dist/commands/status.js.map +1 -1
  37. package/dist/commands/sync.d.ts.map +1 -1
  38. package/dist/commands/sync.js +1 -4
  39. package/dist/commands/sync.js.map +1 -1
  40. package/dist/commands/upgrade.d.ts.map +1 -1
  41. package/dist/commands/upgrade.js +4 -8
  42. package/dist/commands/upgrade.js.map +1 -1
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +43 -10
  45. package/dist/index.js.map +1 -1
  46. package/dist/lib/activity.d.ts +3 -0
  47. package/dist/lib/activity.d.ts.map +1 -0
  48. package/dist/lib/activity.js +11 -0
  49. package/dist/lib/activity.js.map +1 -0
  50. package/dist/lib/auth.d.ts.map +1 -1
  51. package/dist/lib/auth.js +1 -0
  52. package/dist/lib/auth.js.map +1 -1
  53. package/dist/lib/capsule.d.ts +5 -0
  54. package/dist/lib/capsule.d.ts.map +1 -1
  55. package/dist/lib/capsule.js +17 -2
  56. package/dist/lib/capsule.js.map +1 -1
  57. package/dist/lib/doctor-checks.d.ts +6 -1
  58. package/dist/lib/doctor-checks.d.ts.map +1 -1
  59. package/dist/lib/doctor-checks.js +54 -34
  60. package/dist/lib/doctor-checks.js.map +1 -1
  61. package/dist/lib/include-generator.d.ts.map +1 -1
  62. package/dist/lib/include-generator.js +21 -5
  63. package/dist/lib/include-generator.js.map +1 -1
  64. package/dist/lib/registry.d.ts.map +1 -1
  65. package/dist/lib/registry.js +18 -0
  66. package/dist/lib/registry.js.map +1 -1
  67. package/dist/lib/telegram.d.ts +25 -5
  68. package/dist/lib/telegram.d.ts.map +1 -1
  69. package/dist/lib/telegram.js +96 -46
  70. package/dist/lib/telegram.js.map +1 -1
  71. package/dist/lib/types.d.ts +8 -4
  72. package/dist/lib/types.d.ts.map +1 -1
  73. package/dist/lib/types.js +5 -2
  74. package/dist/lib/types.js.map +1 -1
  75. package/dist/plugin.js +1250 -714
  76. package/dist/setup.js +80 -4
  77. package/dist/setup.js.map +1 -1
  78. package/dist/tool.d.ts +2 -0
  79. package/dist/tool.d.ts.map +1 -1
  80. package/dist/tool.js +52 -7
  81. package/dist/tool.js.map +1 -1
  82. package/package.json +1 -1
  83. package/skills/tm/SKILL.md +15 -3
package/dist/index.js CHANGED
@@ -39,15 +39,50 @@ export default function register(api) {
39
39
  api.logger.error('telegram-manager: configDir or workspaceDir not available. Plugin cannot initialize.');
40
40
  return;
41
41
  }
42
+ let resolvedPostFn; // null = tried & unavailable
43
+ const lazyPostFn = async (groupId, threadId, text, keyboard) => {
44
+ if (resolvedPostFn === null)
45
+ throw new Error('openclaw SDK unavailable – cannot post');
46
+ if (resolvedPostFn === undefined) {
47
+ try {
48
+ // Dynamic path prevents Vite/tsc from resolving at build time
49
+ const sdkPath = ['openclaw', 'dist', 'plugin-sdk', 'index.js'].join('/');
50
+ const sdk = (await import(/* @vite-ignore */ sdkPath));
51
+ if (typeof sdk['sendMessageTelegram'] === 'function') {
52
+ const sendMsg = sdk['sendMessageTelegram'];
53
+ resolvedPostFn = async (gId, tId, txt, kb) => {
54
+ const opts = {
55
+ messageThreadId: Number(tId),
56
+ textMode: 'html',
57
+ };
58
+ if (kb)
59
+ opts.buttons = kb.inline_keyboard;
60
+ await sendMsg(gId, txt, opts);
61
+ };
62
+ api.logger.info('telegram-manager: postFn wired via plugin-sdk');
63
+ }
64
+ else {
65
+ resolvedPostFn = null;
66
+ }
67
+ }
68
+ catch {
69
+ resolvedPostFn = null;
70
+ }
71
+ }
72
+ if (!resolvedPostFn)
73
+ throw new Error('openclaw SDK unavailable – cannot post');
74
+ await resolvedPostFn(groupId, threadId, text, keyboard);
75
+ };
42
76
  const tool = createTopicManagerTool({
43
77
  logger: api.logger,
44
78
  configDir,
45
79
  workspaceDir,
46
80
  rpc: api.rpc,
81
+ postFn: lazyPostFn,
47
82
  });
48
83
  api.registerTool({
49
84
  name: 'topic_manager',
50
- description: 'Manage Telegram forum topics as deterministic workcells. Sub-commands: init, doctor, list, status, sync, rename, upgrade, snooze, archive, unarchive, help.',
85
+ description: 'Manage Telegram forum topics as deterministic workcells. Sub-commands: init, doctor, list, status, sync, rename, upgrade, snooze, archive, unarchive, autopilot, help.',
51
86
  parameters: Type.Object({
52
87
  command: Type.String({
53
88
  description: "Sub-command and arguments (e.g., 'init', 'doctor --all', 'rename new-name')",
@@ -68,7 +103,7 @@ export default function register(api) {
68
103
  if (api.registerCommand) {
69
104
  api.registerCommand({
70
105
  name: 'tm',
71
- description: 'Manage Telegram forum topics as deterministic workcells. Sub-commands: init, doctor, list, status, sync, rename, upgrade, snooze, archive, unarchive, help.',
106
+ description: 'Manage Telegram forum topics as deterministic workcells. Sub-commands: init, doctor, list, status, sync, rename, upgrade, snooze, archive, unarchive, autopilot, help.',
72
107
  acceptsArgs: true,
73
108
  requireAuth: false,
74
109
  async handler(ctx) {
@@ -82,6 +117,9 @@ export default function register(api) {
82
117
  // messageThreadId is present at runtime for Telegram forum topics
83
118
  // (confirmed in gateway source) but not yet in the public docs.
84
119
  const threadId = ctx.messageThreadId != null ? String(ctx.messageThreadId) : undefined;
120
+ // Best-effort topicTitle extraction from gateway context
121
+ const topicTitle = ctx['topicTitle'] ??
122
+ ctx['topicName'];
85
123
  const execContext = {};
86
124
  if (userId)
87
125
  execContext.userId = userId;
@@ -89,20 +127,15 @@ export default function register(api) {
89
127
  execContext.groupId = groupId;
90
128
  if (threadId)
91
129
  execContext.threadId = threadId;
130
+ if (topicTitle != null)
131
+ execContext.topicTitle = String(topicTitle);
92
132
  const result = await tool.execute('cmd', { command: ctx.args }, execContext);
93
133
  const reply = {
94
134
  text: result.text,
95
135
  };
96
- const telegramData = {};
97
136
  if (result.inlineKeyboard) {
98
137
  // OpenClaw expects the raw 2D button array, not the InlineKeyboardMarkup wrapper
99
- telegramData.buttons = result.inlineKeyboard.inline_keyboard;
100
- }
101
- if (result.parseMode) {
102
- telegramData.parse_mode = result.parseMode;
103
- }
104
- if (Object.keys(telegramData).length > 0) {
105
- reply.channelData = { telegram: telegramData };
138
+ reply.channelData = { telegram: { buttons: result.inlineKeyboard.inline_keyboard } };
106
139
  }
107
140
  return reply;
108
141
  },
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type ActivityTier = 'hot' | 'warm' | 'cold';
2
+ export declare function computeActivityTier(lastMessageAt: string | null): ActivityTier;
3
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../src/lib/activity.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEnD,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,YAAY,CAM9E"}
@@ -0,0 +1,11 @@
1
+ export function computeActivityTier(lastMessageAt) {
2
+ if (!lastMessageAt)
3
+ return 'cold';
4
+ const hours = (Date.now() - new Date(lastMessageAt).getTime()) / 3_600_000;
5
+ if (hours < 4)
6
+ return 'hot';
7
+ if (hours < 24)
8
+ return 'warm';
9
+ return 'cold';
10
+ }
11
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/lib/activity.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,mBAAmB,CAAC,aAA4B;IAC9D,IAAI,CAAC,aAAa;QAAE,OAAO,MAAM,CAAC;IAClC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAC;IAC3E,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,eAAO,MAAM,QAAQ;;;CAGX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAuBhE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMxD;AAID,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,UAAU,CAgCZ"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAI3C,eAAO,MAAM,QAAQ;;;CAGX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAwBhE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAMxD;AAID,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,QAAQ,EAClB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,UAAU,CAgCZ"}
package/dist/lib/auth.js CHANGED
@@ -12,6 +12,7 @@ const ADMIN_COMMANDS = new Set([
12
12
  'rename',
13
13
  'archive',
14
14
  'unarchive',
15
+ 'autopilot',
15
16
  ]);
16
17
  const USER_COMMANDS = new Set([
17
18
  'init',
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAIX,0EAA0E;AAE1E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,cAAc;IACd,YAAY;IACZ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACxD,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IAC1D,wEAAwE;IACxE,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAe,EACf,QAAkB,EAClB,cAAyB;IAEzB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAE3C,mFAAmF;IACnF,+EAA+E;IAC/E,iFAAiF;IACjF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACzC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,mEAAmE;SAC7E,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAEzC,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,mEAAmE;KAC7E,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAE1E,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACN,CAAC;AAIX,0EAA0E;AAE1E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC7B,cAAc;IACd,YAAY;IACZ,MAAM;IACN,MAAM;IACN,QAAQ;IACR,SAAS;IACT,WAAW;IACX,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,MAAM;IACN,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,SAAS;IACT,QAAQ;CACT,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAC;IACxD,IAAI,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IAC1D,wEAAwE;IACxE,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AASD;;;;;;;;GAQG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAc,EACd,OAAe,EACf,QAAkB,EAClB,cAAyB;IAEzB,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,MAAM,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC;IAE3C,mFAAmF;IACnF,+EAA+E;IAC/E,iFAAiF;IACjF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC;QAClD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,OAAO;YAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACzC,OAAO;YACL,UAAU,EAAE,KAAK;YACjB,OAAO,EAAE,mEAAmE;SAC7E,CAAC;IACJ,CAAC;IAED,mDAAmD;IACnD,IAAI,OAAO;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAEzC,IAAI,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,mEAAmE;KAC7E,CAAC;AACJ,CAAC"}
@@ -21,6 +21,11 @@ export interface UpgradeResult {
21
21
  * @param name - human-readable label used in template headers
22
22
  */
23
23
  export declare function upgradeCapsule(projectsBase: string, slug: string, name: string, type: TopicType, currentVersion: number): UpgradeResult;
24
+ /**
25
+ * Write a capsule file only if its content has actually changed.
26
+ * Returns true if the file was written, false if skipped (identical content).
27
+ */
28
+ export declare function writeCapsuleFileIfChanged(filePath: string, newContent: string): boolean;
24
29
  export interface CapsuleValidation {
25
30
  missing: string[];
26
31
  present: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../../src/lib/capsule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuD5C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,GACd,IAAI,CAkCN;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,MAAM,GACrB,aAAa,CA+Cf;AAID,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,GACd,iBAAiB,CAqBnB"}
1
+ {"version":3,"file":"capsule.d.ts","sourceRoot":"","sources":["../../src/lib/capsule.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AA0D5C;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,GACd,IAAI,CAkCN;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,EACf,cAAc,EAAE,MAAM,GACrB,aAAa,CA+Cf;AAID;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAOvF;AAID,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,SAAS,GACd,iBAAiB,CAqBnB"}
@@ -6,12 +6,13 @@ import { jailCheck, rejectSymlink } from './security.js';
6
6
  // These are the source-of-truth defaults, matching src/templates/.
7
7
  const BASE_TEMPLATES = {
8
8
  'README.md': (name) => `# ${name}\n\n_Describe what this topic is about._\n`,
9
- 'STATUS.md': (name) => `# Status: ${name}\n\n## Last done (UTC)\n\n${new Date().toISOString()}\n\n_No work recorded yet._\n\n## Next 3 actions\n\n1. [T-1] _Define first task in TODO.md_\n2. [T-2] _Define second task in TODO.md_\n3. [T-3] _Define third task in TODO.md_\n`,
10
- 'TODO.md': (name) => `# TODO: ${name}\n\n## Backlog\n\n- [T-1] _First task placeholder replace with actual task_\n- [T-2] _Second task placeholder — replace with actual task_\n- [T-3] _Third task placeholder — replace with actual task_\n\n## Completed\n\n_None yet._\n`,
9
+ 'STATUS.md': (name) => `# Status: ${name}\n\n> This file is maintained by the agent — just send messages in the chat.\n\n## Last done (UTC)\n\n${new Date().toISOString()}\n\n_Waiting for first instructions._\n\n## Next actions (now)\n\n1. _e.g. Set up project scaffolding_\n\n## Upcoming actions\n\n_See TODO.md for full backlog._\n`,
10
+ 'TODO.md': (name) => `# TODO: ${name}\n\n## Backlog\n\n- [T-1] _e.g. Set up project scaffolding_\n- [T-2] _Waiting for next task_\n- [T-3] _Waiting for next task_\n\n## Completed\n\n_None yet._\n`,
11
11
  'COMMANDS.md': (name) => `# Commands: ${name}\n\n_Build, deploy, test, and other commands for this topic. Kept here so they're not lost on reset._\n`,
12
12
  'LINKS.md': (name) => `# Links: ${name}\n\n_URLs, paths, and service endpoints for this topic._\n`,
13
13
  'CRON.md': (name) => `# Cron: ${name}\n\n_Cron job IDs and schedules for this topic._\n`,
14
14
  'NOTES.md': (name) => `# Notes: ${name}\n\n_Anything worth remembering about this topic._\n`,
15
+ 'LEARNINGS.md': (name) => `# Learnings: ${name}\n\n_Hard-won insights, mistakes, and workarounds._\n_Agent prepends here automatically. Most recent entries first._\n`,
15
16
  };
16
17
  const OVERLAY_TEMPLATES = {
17
18
  'ARCHITECTURE.md': (name) => `# Architecture: ${name}\n\n_Components, data flow, dependencies, and design decisions._\n`,
@@ -110,6 +111,20 @@ export function upgradeCapsule(projectsBase, slug, name, type, currentVersion) {
110
111
  addedFiles,
111
112
  };
112
113
  }
114
+ // ── No-op write guard ───────────────────────────────────────────────────
115
+ /**
116
+ * Write a capsule file only if its content has actually changed.
117
+ * Returns true if the file was written, false if skipped (identical content).
118
+ */
119
+ export function writeCapsuleFileIfChanged(filePath, newContent) {
120
+ if (fs.existsSync(filePath)) {
121
+ const existing = fs.readFileSync(filePath, 'utf-8');
122
+ if (existing === newContent)
123
+ return false;
124
+ }
125
+ fs.writeFileSync(filePath, newContent, { mode: CAPSULE_FILE_MODE });
126
+ return true;
127
+ }
113
128
  /**
114
129
  * Validate that a capsule has all expected files.
115
130
  * Returns lists of present and missing files.
@@ -1 +1 @@
1
- {"version":3,"file":"capsule.js","sourceRoot":"","sources":["../../src/lib/capsule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capsule.js","sourceRoot":"","sources":["../../src/lib/capsule.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ export declare function runCapsuleChecks(entry: TopicEntry, projectsBase: string
16
16
  */
17
17
  export declare function runStatusQualityChecks(statusContent: string, entry: TopicEntry): DoctorCheckResult[];
18
18
  /**
19
- * Check that task IDs in "Next 3 actions" exist in TODO.md.
19
+ * Check that task IDs in "Next actions (now)" exist in TODO.md.
20
20
  */
21
21
  export declare function runNextVsTodoChecks(statusContent: string, todoContent: string): DoctorCheckResult[];
22
22
  /**
@@ -47,4 +47,9 @@ export declare function runSpamControlCheck(entry: TopicEntry): DoctorCheckResul
47
47
  * It reads capsule files and runs all checks.
48
48
  */
49
49
  export declare function runAllChecksForTopic(entry: TopicEntry, projectsBase: string, includeContent?: string, registry?: Registry, cronJobsPath?: string): DoctorCheckResult[];
50
+ /**
51
+ * Snapshot STATUS.md and TODO.md to .tm-backup/ when all checks pass.
52
+ * Only creates a backup if no ERROR or WARN findings exist.
53
+ */
54
+ export declare function backupCapsuleIfHealthy(projectsBase: string, slug: string, results: DoctorCheckResult[]): void;
50
55
  //# sourceMappingURL=doctor-checks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-checks.d.ts","sourceRoot":"","sources":["../../src/lib/doctor-checks.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAqB1E;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CA2BrB;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,iBAAiB,EAAE,CA4BrB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CAkDrB;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,UAAU,GAChB,iBAAiB,EAAE,CAiFrB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAoCrB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,iBAAiB,EAAE,CA4BrB;AAmBD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CA4CrB;AAID;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CA2DrB;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CA8BrB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,GAChB,iBAAiB,EAAE,CAerB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,QAAQ,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAmDrB"}
1
+ {"version":3,"file":"doctor-checks.d.ts","sourceRoot":"","sources":["../../src/lib/doctor-checks.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAwB1E;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CA2BrB;AAID;;GAEG;AACH,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,GACzB,iBAAiB,EAAE,CA4BrB;AAID;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,GACnB,iBAAiB,EAAE,CAkDrB;AAUD;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,UAAU,GAChB,iBAAiB,EAAE,CAmFrB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,iBAAiB,EAAE,CAqCrB;AAID;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,iBAAiB,EAAE,CA4BrB;AAmBD;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CA4CrB;AAID;;GAEG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CAoDrB;AAID;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,kBAAkB,EAAE,MAAM,EAC1B,QAAQ,EAAE,QAAQ,GACjB,iBAAiB,EAAE,CAgCrB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,GAChB,iBAAiB,EAAE,CAgBrB;AAID;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,UAAU,EACjB,YAAY,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EACvB,QAAQ,CAAC,EAAE,QAAQ,EACnB,YAAY,CAAC,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAmDrB;AAOD;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,EAAE,GAC3B,IAAI,CAkBN"}
@@ -1,5 +1,6 @@
1
1
  import * as fs from 'node:fs';
2
2
  import * as path from 'node:path';
3
+ import JSON5 from 'json5';
3
4
  import { Severity, CAPSULE_VERSION, OVERLAY_FILES, SPAM_THRESHOLD, } from './types.js';
4
5
  import { jailCheck } from './security.js';
5
6
  import { computeRegistryHash, extractRegistryHash } from './include-generator.js';
@@ -7,8 +8,10 @@ import { computeRegistryHash, extractRegistryHash } from './include-generator.js
7
8
  function isIgnored(entry, checkId) {
8
9
  return entry.ignoreChecks.includes(checkId);
9
10
  }
10
- function check(severity, checkId, message, fixable) {
11
- return { severity, checkId, message, fixable };
11
+ function check(severity, checkId, message, fixable, remediation) {
12
+ return remediation
13
+ ? { severity, checkId, message, fixable, remediation }
14
+ : { severity, checkId, message, fixable };
12
15
  }
13
16
  // ── Registry / mapping checks ──────────────────────────────────────────
14
17
  /**
@@ -19,7 +22,7 @@ export function runRegistryChecks(entry, projectsBase) {
19
22
  const capsuleDir = path.join(projectsBase, entry.slug);
20
23
  // Check path exists
21
24
  if (!fs.existsSync(capsuleDir)) {
22
- results.push(check(Severity.ERROR, 'pathMissing', `Capsule path does not exist: projects/${entry.slug}/`, false));
25
+ results.push(check(Severity.ERROR, 'pathMissing', `Capsule path does not exist: projects/${entry.slug}/`, false, 'Run /tm init to create the capsule, or remove the registry entry'));
23
26
  return results; // No point checking further if path doesn't exist
24
27
  }
25
28
  // Check that the folder name matches the slug
@@ -70,12 +73,12 @@ export function runCapsuleChecks(entry, projectsBase) {
70
73
  return results;
71
74
  // STATUS.md is critical
72
75
  if (!fs.existsSync(path.join(capsuleDir, 'STATUS.md'))) {
73
- results.push(check(Severity.ERROR, 'statusMissing', 'STATUS.md is missing from capsule', true));
76
+ results.push(check(Severity.ERROR, 'statusMissing', 'STATUS.md is missing from capsule', true, 'Run /tm upgrade to recreate STATUS.md, or restore from .tm-backup/STATUS.md if available'));
74
77
  }
75
78
  // TODO.md is important
76
79
  if (!fs.existsSync(path.join(capsuleDir, 'TODO.md'))) {
77
80
  if (!isIgnored(entry, 'todoMissing')) {
78
- results.push(check(Severity.WARN, 'todoMissing', 'TODO.md is missing from capsule', true));
81
+ results.push(check(Severity.WARN, 'todoMissing', 'TODO.md is missing from capsule', true, 'Run /tm upgrade to recreate TODO.md'));
79
82
  }
80
83
  }
81
84
  // Overlay files are optional but worth noting
@@ -91,14 +94,14 @@ export function runCapsuleChecks(entry, projectsBase) {
91
94
  // Capsule version behind
92
95
  if (entry.capsuleVersion < CAPSULE_VERSION) {
93
96
  if (!isIgnored(entry, 'capsuleVersionBehind')) {
94
- results.push(check(Severity.INFO, 'capsuleVersionBehind', `Capsule version ${entry.capsuleVersion} is behind current ${CAPSULE_VERSION}. Run /tm upgrade.`, false));
97
+ results.push(check(Severity.INFO, 'capsuleVersionBehind', `Capsule version ${entry.capsuleVersion} is behind current ${CAPSULE_VERSION}. Will auto-upgrade on next command.`, false));
95
98
  }
96
99
  }
97
100
  return results;
98
101
  }
99
102
  // ── STATUS.md quality checks ───────────────────────────────────────────
100
103
  const LAST_DONE_RE = /^##\s*Last done\s*\(UTC\)/im;
101
- const NEXT_ACTIONS_RE = /^##\s*Next 3 actions/im;
104
+ const NEXT_ACTIONS_RE = /^##\s*Next (?:3 )?actions(?: \(now\))?/im;
102
105
  const TIMESTAMP_RE = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
103
106
  const TASK_ID_RE = /\[T-\d+\]/g;
104
107
  const ADHOC_RE = /\[AD-HOC\]/g;
@@ -110,7 +113,7 @@ export function runStatusQualityChecks(statusContent, entry) {
110
113
  // "Last done (UTC)" section check
111
114
  if (!LAST_DONE_RE.test(statusContent)) {
112
115
  if (!isIgnored(entry, 'lastDoneMissing')) {
113
- results.push(check(Severity.ERROR, 'lastDoneMissing', 'STATUS.md missing "Last done (UTC)" section', true));
116
+ results.push(check(Severity.ERROR, 'lastDoneMissing', 'STATUS.md missing "Last done (UTC)" section', true, 'Add "## Last done (UTC)" section with a timestamp to STATUS.md, or restore from .tm-backup/STATUS.md if available'));
114
117
  }
115
118
  }
116
119
  else {
@@ -123,7 +126,7 @@ export function runStatusQualityChecks(statusContent, entry) {
123
126
  : sectionAfter;
124
127
  if (!TIMESTAMP_RE.test(lastDoneSection)) {
125
128
  if (!isIgnored(entry, 'lastDoneNoTimestamp')) {
126
- results.push(check(Severity.ERROR, 'lastDoneNoTimestamp', 'STATUS.md "Last done" section has no timestamp', true));
129
+ results.push(check(Severity.ERROR, 'lastDoneNoTimestamp', 'STATUS.md "Last done" section has no timestamp', true, 'Add a YYYY-MM-DDTHH:MM timestamp under "Last done (UTC)" in STATUS.md, or restore from .tm-backup/STATUS.md if available'));
127
130
  }
128
131
  }
129
132
  else if (entry.status === 'active') {
@@ -134,16 +137,16 @@ export function runStatusQualityChecks(statusContent, entry) {
134
137
  const ageDays = (Date.now() - ts.getTime()) / (1000 * 60 * 60 * 24);
135
138
  if (ageDays > 3) {
136
139
  if (!isIgnored(entry, 'lastDoneStale')) {
137
- results.push(check(Severity.WARN, 'lastDoneStale', `STATUS.md "Last done" timestamp is ${Math.floor(ageDays)} days old`, false));
140
+ results.push(check(Severity.WARN, 'lastDoneStale', `STATUS.md "Last done" timestamp is ${Math.floor(ageDays)} days old`, false, 'Update the "Last done (UTC)" timestamp in STATUS.md or /tm snooze 7d'));
138
141
  }
139
142
  }
140
143
  }
141
144
  }
142
145
  }
143
- // "Next 3 actions" section check
146
+ // "Next actions (now)" section check
144
147
  if (!NEXT_ACTIONS_RE.test(statusContent)) {
145
148
  if (!isIgnored(entry, 'nextActionsMissing')) {
146
- results.push(check(Severity.ERROR, 'nextActionsMissing', 'STATUS.md missing "Next 3 actions" section', true));
149
+ results.push(check(Severity.ERROR, 'nextActionsMissing', 'STATUS.md missing "Next actions (now)" section', true, 'Add "## Next actions (now)" section with task IDs to STATUS.md'));
147
150
  }
148
151
  }
149
152
  else {
@@ -158,7 +161,7 @@ export function runStatusQualityChecks(statusContent, entry) {
158
161
  const adhocs = nextActionsSection.match(ADHOC_RE) ?? [];
159
162
  if (taskIds.length === 0 && adhocs.length === 0) {
160
163
  if (!isIgnored(entry, 'nextActionsEmpty')) {
161
- results.push(check(Severity.WARN, 'nextActionsEmpty', '"Next 3 actions" has no task IDs or entries', false));
164
+ results.push(check(Severity.WARN, 'nextActionsEmpty', '"Next actions (now)" has no task IDs or entries', false, 'Add task IDs like [T-1] under "Next actions (now)" in STATUS.md'));
162
165
  }
163
166
  }
164
167
  }
@@ -166,7 +169,7 @@ export function runStatusQualityChecks(statusContent, entry) {
166
169
  }
167
170
  // ── Next vs TODO cross-reference ───────────────────────────────────────
168
171
  /**
169
- * Check that task IDs in "Next 3 actions" exist in TODO.md.
172
+ * Check that task IDs in "Next actions (now)" exist in TODO.md.
170
173
  */
171
174
  export function runNextVsTodoChecks(statusContent, todoContent) {
172
175
  const results = [];
@@ -189,7 +192,7 @@ export function runNextVsTodoChecks(statusContent, todoContent) {
189
192
  const missing = nextTaskIds.filter((id) => !todoTaskIds.has(id));
190
193
  // Only warn if 2+ are missing (allows 1 stale reference)
191
194
  if (missing.length >= 2) {
192
- results.push(check(Severity.WARN, 'nextNotInTodo', `${missing.length} task IDs in "Next 3 actions" not found in TODO.md: ${missing.join(', ')}`, false));
195
+ results.push(check(Severity.WARN, 'nextNotInTodo', `${missing.length} task IDs in "Next actions (now)" not found in TODO.md: ${missing.join(', ')}`, false, 'Add missing task IDs to TODO.md or remove stale ones from STATUS.md'));
193
196
  }
194
197
  return results;
195
198
  }
@@ -204,7 +207,7 @@ export function runCommandsLinksChecks(entry, capsuleFiles) {
204
207
  const commandsContent = capsuleFiles.get('COMMANDS.md');
205
208
  if (commandsContent !== undefined && isEffectivelyEmpty(commandsContent)) {
206
209
  if (!isIgnored(entry, 'commandsEmpty')) {
207
- results.push(check(Severity.INFO, 'commandsEmpty', 'COMMANDS.md is empty for a coding topic', false));
210
+ results.push(check(Severity.INFO, 'commandsEmpty', 'COMMANDS.md is empty for a coding topic', false, 'Add build/test/deploy commands to COMMANDS.md'));
208
211
  }
209
212
  }
210
213
  }
@@ -213,7 +216,7 @@ export function runCommandsLinksChecks(entry, capsuleFiles) {
213
216
  const linksContent = capsuleFiles.get('LINKS.md');
214
217
  if (linksContent !== undefined && isEffectivelyEmpty(linksContent)) {
215
218
  if (!isIgnored(entry, 'linksEmpty')) {
216
- results.push(check(Severity.INFO, 'linksEmpty', 'LINKS.md is empty for a coding/research topic', false));
219
+ results.push(check(Severity.INFO, 'linksEmpty', 'LINKS.md is empty for a coding/research topic', false, 'Add URLs and endpoints to LINKS.md'));
217
220
  }
218
221
  }
219
222
  }
@@ -274,25 +277,18 @@ export function runCronChecks(cronContent, cronJobsPath) {
274
277
  */
275
278
  export function runConfigChecks(entry, includeContent, registry) {
276
279
  const results = [];
277
- // Parse the include to check this topic's config
280
+ // Parse the include to check this topic's config (JSON5 handles // comments natively)
278
281
  let includeObj;
279
282
  try {
280
- // Strip comment lines before parsing
281
- const stripped = includeContent
282
- .split('\n')
283
- .filter((l) => !l.startsWith('//'))
284
- .join('\n');
285
- includeObj = JSON.parse(stripped);
283
+ includeObj = JSON5.parse(includeContent);
286
284
  }
287
285
  catch {
288
- // Try json5 parsing - but we don't import json5 here to keep this pure
289
- // If we can't parse, skip
290
286
  return results;
291
287
  }
292
288
  const groupConfig = includeObj[entry.groupId];
293
289
  if (!groupConfig) {
294
290
  if (!isIgnored(entry, 'configGroupMissing')) {
295
- results.push(check(Severity.WARN, 'configGroupMissing', `Group ${entry.groupId} missing from generated include`, false));
291
+ results.push(check(Severity.WARN, 'configGroupMissing', `Group ${entry.groupId} missing from generated include`, false, 'Run /tm sync to add group to generated include'));
296
292
  }
297
293
  return results;
298
294
  }
@@ -300,20 +296,20 @@ export function runConfigChecks(entry, includeContent, registry) {
300
296
  const topicConfig = topics?.[entry.threadId];
301
297
  if (!topicConfig) {
302
298
  if (!isIgnored(entry, 'configTopicMissing')) {
303
- results.push(check(Severity.WARN, 'configTopicMissing', `Topic config missing for thread ${entry.threadId}`, false));
299
+ results.push(check(Severity.WARN, 'configTopicMissing', `Topic config missing for thread ${entry.threadId}`, false, 'Run /tm sync to add topic config to generated include'));
304
300
  }
305
301
  return results;
306
302
  }
307
303
  // Check systemPrompt exists
308
304
  if (!topicConfig['systemPrompt']) {
309
305
  if (!isIgnored(entry, 'configNoSystemPrompt')) {
310
- results.push(check(Severity.WARN, 'configNoSystemPrompt', 'Per-topic systemPrompt is missing in generated include', false));
306
+ results.push(check(Severity.WARN, 'configNoSystemPrompt', 'Per-topic systemPrompt is missing in generated include', false, 'Run /tm sync to regenerate systemPrompt in config'));
311
307
  }
312
308
  }
313
309
  // Check skills exist
314
310
  if (!topicConfig['skills'] || !Array.isArray(topicConfig['skills'])) {
315
311
  if (!isIgnored(entry, 'configNoSkills')) {
316
- results.push(check(Severity.WARN, 'configNoSkills', 'Per-topic skills list is missing in generated include', false));
312
+ results.push(check(Severity.WARN, 'configNoSkills', 'Per-topic skills list is missing in generated include', false, 'Run /tm sync to regenerate skills list in config'));
317
313
  }
318
314
  }
319
315
  return results;
@@ -326,12 +322,12 @@ export function runIncludeDriftCheck(includeFileContent, registry) {
326
322
  const results = [];
327
323
  const fileHash = extractRegistryHash(includeFileContent);
328
324
  if (!fileHash) {
329
- results.push(check(Severity.WARN, 'includeDrift', 'Generated include file has no registry-hash comment. Run /tm sync.', false));
325
+ results.push(check(Severity.WARN, 'includeDrift', 'Generated include file has no registry-hash comment. Run /tm sync.', false, 'Run /tm sync to regenerate the config include'));
330
326
  return results;
331
327
  }
332
328
  const currentHash = computeRegistryHash(registry.topics);
333
329
  if (fileHash !== currentHash) {
334
- results.push(check(Severity.WARN, 'includeDrift', 'Generated include is out of sync with registry. Run /tm sync.', false));
330
+ results.push(check(Severity.WARN, 'includeDrift', 'Generated include is out of sync with registry. Run /tm sync.', false, 'Run /tm sync to regenerate the config include'));
335
331
  }
336
332
  return results;
337
333
  }
@@ -342,7 +338,7 @@ export function runIncludeDriftCheck(includeFileContent, registry) {
342
338
  export function runSpamControlCheck(entry) {
343
339
  const results = [];
344
340
  if (entry.consecutiveSilentDoctors >= SPAM_THRESHOLD) {
345
- results.push(check(Severity.INFO, 'spamControl', `${entry.consecutiveSilentDoctors} consecutive doctor reports with no user interaction. Auto-snoozing for 30 days.`, true));
341
+ results.push(check(Severity.INFO, 'spamControl', `${entry.consecutiveSilentDoctors} consecutive doctor reports with no user interaction. Auto-snoozing for 30 days.`, true, 'Interact with the topic or /tm snooze 30d to silence reports'));
346
342
  }
347
343
  return results;
348
344
  }
@@ -395,12 +391,36 @@ export function runAllChecksForTopic(entry, projectsBase, includeContent, regist
395
391
  results.push(...runSpamControlCheck(entry));
396
392
  return results;
397
393
  }
394
+ // ── Backup helper ──────────────────────────────────────────────────────
395
+ const BACKUP_DIR = '.tm-backup';
396
+ const BACKUP_FILES = ['STATUS.md', 'TODO.md'];
397
+ /**
398
+ * Snapshot STATUS.md and TODO.md to .tm-backup/ when all checks pass.
399
+ * Only creates a backup if no ERROR or WARN findings exist.
400
+ */
401
+ export function backupCapsuleIfHealthy(projectsBase, slug, results) {
402
+ const hasIssues = results.some(r => r.severity === Severity.ERROR || r.severity === Severity.WARN);
403
+ if (hasIssues)
404
+ return;
405
+ const capsuleDir = path.join(projectsBase, slug);
406
+ const backupDir = path.join(capsuleDir, BACKUP_DIR);
407
+ if (!fs.existsSync(backupDir)) {
408
+ fs.mkdirSync(backupDir, { recursive: true });
409
+ }
410
+ for (const file of BACKUP_FILES) {
411
+ const src = path.join(capsuleDir, file);
412
+ const dst = path.join(backupDir, file);
413
+ if (fs.existsSync(src)) {
414
+ fs.copyFileSync(src, dst);
415
+ }
416
+ }
417
+ }
398
418
  // ── File reading helper ────────────────────────────────────────────────
399
419
  function readCapsuleFiles(capsuleDir) {
400
420
  const files = new Map();
401
421
  const filenames = [
402
422
  'STATUS.md', 'TODO.md', 'COMMANDS.md', 'LINKS.md',
403
- 'CRON.md', 'NOTES.md', 'README.md',
423
+ 'CRON.md', 'NOTES.md', 'README.md', 'LEARNINGS.md',
404
424
  'ARCHITECTURE.md', 'DEPLOY.md',
405
425
  'SOURCES.md', 'FINDINGS.md',
406
426
  'CAMPAIGNS.md', 'METRICS.md',
@@ -1 +1 @@
1
- {"version":3,"file":"doctor-checks.js","sourceRoot":"","sources":["../../src/lib/doctor-checks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor-checks.js","sourceRoot":"","sources":["../../src/lib/doctor-checks.ts"],"names":[],"mappings":"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"}