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.
- package/README.md +10 -3
- package/dist/commands/archive.d.ts.map +1 -1
- package/dist/commands/archive.js +4 -6
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/autopilot.d.ts +3 -0
- package/dist/commands/autopilot.d.ts.map +1 -0
- package/dist/commands/autopilot.js +127 -0
- package/dist/commands/autopilot.js.map +1 -0
- package/dist/commands/daily-report.d.ts +4 -0
- package/dist/commands/daily-report.d.ts.map +1 -0
- package/dist/commands/daily-report.js +155 -0
- package/dist/commands/daily-report.js.map +1 -0
- package/dist/commands/doctor-all.d.ts.map +1 -1
- package/dist/commands/doctor-all.js +48 -14
- package/dist/commands/doctor-all.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +3 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/help.d.ts.map +1 -1
- package/dist/commands/help.js +0 -1
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/init.d.ts +6 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +73 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +0 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/rename.d.ts.map +1 -1
- package/dist/commands/rename.js +4 -6
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/snooze.d.ts.map +1 -1
- package/dist/commands/snooze.js +3 -5
- package/dist/commands/snooze.js.map +1 -1
- package/dist/commands/status.js +2 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +1 -4
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +4 -8
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +43 -10
- package/dist/index.js.map +1 -1
- package/dist/lib/activity.d.ts +3 -0
- package/dist/lib/activity.d.ts.map +1 -0
- package/dist/lib/activity.js +11 -0
- package/dist/lib/activity.js.map +1 -0
- package/dist/lib/auth.d.ts.map +1 -1
- package/dist/lib/auth.js +1 -0
- package/dist/lib/auth.js.map +1 -1
- package/dist/lib/capsule.d.ts +5 -0
- package/dist/lib/capsule.d.ts.map +1 -1
- package/dist/lib/capsule.js +17 -2
- package/dist/lib/capsule.js.map +1 -1
- package/dist/lib/doctor-checks.d.ts +6 -1
- package/dist/lib/doctor-checks.d.ts.map +1 -1
- package/dist/lib/doctor-checks.js +54 -34
- package/dist/lib/doctor-checks.js.map +1 -1
- package/dist/lib/include-generator.d.ts.map +1 -1
- package/dist/lib/include-generator.js +21 -5
- package/dist/lib/include-generator.js.map +1 -1
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +18 -0
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/telegram.d.ts +25 -5
- package/dist/lib/telegram.d.ts.map +1 -1
- package/dist/lib/telegram.js +96 -46
- package/dist/lib/telegram.js.map +1 -1
- package/dist/lib/types.d.ts +8 -4
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +5 -2
- package/dist/lib/types.js.map +1 -1
- package/dist/plugin.js +1250 -714
- package/dist/setup.js +80 -4
- package/dist/setup.js.map +1 -1
- package/dist/tool.d.ts +2 -0
- package/dist/tool.d.ts.map +1 -1
- package/dist/tool.js +52 -7
- package/dist/tool.js.map +1 -1
- package/package.json +1 -1
- 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
|
-
|
|
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":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEnD;;;;GAIG;AACH,SAAS,gBAAgB;IACvB,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACjD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1D,IACE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YACpD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,EACjD,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAClD,IAAI,MAAM,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAEjD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAgChC;IACC,MAAM,iBAAiB,GAAG,gBAAgB,EAAE,CAAC;IAC7C,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,YAAY,EAAE,SAAS,IAAI,iBAAiB,CAAC;IACpF,MAAM,YAAY,GAChB,GAAG,CAAC,YAAY;QAChB,GAAG,CAAC,YAAY,EAAE,YAAY;QAC9B,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAE9E,IAAI,CAAC,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,GAAG,CAAC,MAAM,CAAC,KAAK,CACd,sFAAsF,CACvF,CAAC;QACF,OAAO;IACT,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
package/dist/lib/auth.d.ts.map
CHANGED
|
@@ -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;
|
|
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
package/dist/lib/auth.js.map
CHANGED
|
@@ -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"}
|
package/dist/lib/capsule.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/lib/capsule.js
CHANGED
|
@@ -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\
|
|
10
|
-
'TODO.md': (name) => `# TODO: ${name}\n\n## Backlog\n\n- [T-1]
|
|
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.
|
package/dist/lib/capsule.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capsule.js","sourceRoot":"","sources":["../../src/lib/capsule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEzD,0EAA0E;AAC1E,mEAAmE;AAEnE,MAAM,cAAc,GAA6C;IAC/D,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,KAAK,IAAI,4CAA4C;IAEvD,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,CACpB,aAAa,IAAI,
|
|
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
|
|
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":"
|
|
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
|
|
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}.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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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"}
|