openclaw-telegram-manager 1.3.10 → 2.0.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 +9 -7
- package/dist/commands/archive.js +3 -3
- package/dist/commands/archive.js.map +1 -1
- package/dist/commands/doctor-all.d.ts.map +1 -1
- package/dist/commands/doctor-all.js +2 -2
- package/dist/commands/doctor-all.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +3 -7
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +47 -138
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/rename.d.ts +1 -1
- package/dist/commands/rename.d.ts.map +1 -1
- package/dist/commands/rename.js +22 -70
- package/dist/commands/rename.js.map +1 -1
- package/dist/commands/snooze.js +1 -1
- package/dist/commands/snooze.js.map +1 -1
- package/dist/commands/upgrade.js +4 -4
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/capsule.d.ts +8 -2
- package/dist/lib/capsule.d.ts.map +1 -1
- package/dist/lib/capsule.js +25 -19
- package/dist/lib/capsule.js.map +1 -1
- package/dist/lib/include-generator.d.ts +4 -1
- package/dist/lib/include-generator.d.ts.map +1 -1
- package/dist/lib/include-generator.js +7 -4
- package/dist/lib/include-generator.js.map +1 -1
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +11 -2
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/security.d.ts +2 -11
- package/dist/lib/security.d.ts.map +1 -1
- package/dist/lib/security.js +9 -29
- package/dist/lib/security.js.map +1 -1
- package/dist/lib/telegram.d.ts +5 -9
- package/dist/lib/telegram.d.ts.map +1 -1
- package/dist/lib/telegram.js +13 -21
- package/dist/lib/telegram.js.map +1 -1
- package/dist/lib/types.d.ts +9 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +15 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/plugin.js +644 -756
- package/dist/setup.js +1 -1
- package/dist/tool.js +6 -9
- package/dist/tool.js.map +1 -1
- package/package.json +1 -1
- package/skills/tm/SKILL.md +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAIjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMvD;AAID;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAMhE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAWtF;AAWD,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAOD,sDAAsD;AACtD,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAEpD;AAMD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,MAAM,CAIR;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM,GACtB,YAAY,GAAG,IAAI,CAmBrB"}
|
package/dist/lib/security.js
CHANGED
|
@@ -1,26 +1,6 @@
|
|
|
1
1
|
import * as crypto from 'node:crypto';
|
|
2
2
|
import * as fs from 'node:fs';
|
|
3
3
|
import * as path from 'node:path';
|
|
4
|
-
// ── Slug validation ────────────────────────────────────────────────────
|
|
5
|
-
const SLUG_RE = /^[a-z][a-z0-9-]{0,49}$/;
|
|
6
|
-
/** Validate a slug against the allowed pattern. */
|
|
7
|
-
export function validateSlug(slug) {
|
|
8
|
-
return SLUG_RE.test(slug);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Sanitize a title into a valid slug.
|
|
12
|
-
* Strip non-alphanumeric (except hyphens), strip dots, collapse
|
|
13
|
-
* consecutive hyphens, trim leading/trailing hyphens, lowercase.
|
|
14
|
-
*/
|
|
15
|
-
export function sanitizeSlug(title) {
|
|
16
|
-
return title
|
|
17
|
-
.toLowerCase()
|
|
18
|
-
.replace(/\./g, '') // strip dots explicitly
|
|
19
|
-
.replace(/[^a-z0-9-]/g, '-') // non-alphanum to hyphen
|
|
20
|
-
.replace(/-{2,}/g, '-') // collapse consecutive hyphens
|
|
21
|
-
.replace(/^-+|-+$/g, '') // trim leading/trailing hyphens
|
|
22
|
-
.slice(0, 50); // enforce max length
|
|
23
|
-
}
|
|
24
4
|
// ── Path safety ────────────────────────────────────────────────────────
|
|
25
5
|
/**
|
|
26
6
|
* Jail check: ensure `userPath` resolves within `base`.
|
|
@@ -94,13 +74,13 @@ export function validateThreadId(id) {
|
|
|
94
74
|
return THREAD_ID_RE.test(id);
|
|
95
75
|
}
|
|
96
76
|
// ── Callback data handling ─────────────────────────────────────────────
|
|
97
|
-
const CALLBACK_RE = /^tm:[a-z0-9]
|
|
77
|
+
const CALLBACK_RE = /^tm:[a-z0-9]+:-?\d+:\d+:[a-f0-9]+$/;
|
|
98
78
|
/**
|
|
99
79
|
* Build callback data string with HMAC signature.
|
|
100
|
-
* Format: tm:<action>:<
|
|
80
|
+
* Format: tm:<action>:<groupId>:<threadId>:<hmac>
|
|
101
81
|
*/
|
|
102
|
-
export function buildCallbackData(action,
|
|
103
|
-
const payload = `tm:${action}:${
|
|
82
|
+
export function buildCallbackData(action, groupId, threadId, secret) {
|
|
83
|
+
const payload = `tm:${action}:${groupId}:${threadId}`;
|
|
104
84
|
const sig = hmacSign(secret, payload);
|
|
105
85
|
return `${payload}:${sig}`;
|
|
106
86
|
}
|
|
@@ -117,17 +97,17 @@ export function parseAndVerifyCallback(data, secret, contextGroupId, contextThre
|
|
|
117
97
|
if (!CALLBACK_RE.test(data))
|
|
118
98
|
return null;
|
|
119
99
|
const parts = data.split(':');
|
|
120
|
-
// tm : action :
|
|
121
|
-
if (parts.length !==
|
|
100
|
+
// tm : action : groupId : threadId : hmac
|
|
101
|
+
if (parts.length !== 5)
|
|
122
102
|
return null;
|
|
123
|
-
const [, action,
|
|
103
|
+
const [, action, groupId, threadId, signature] = parts;
|
|
124
104
|
// Verify context match (prevent cross-topic tampering)
|
|
125
105
|
if (groupId !== contextGroupId || threadId !== contextThreadId)
|
|
126
106
|
return null;
|
|
127
107
|
// Verify HMAC
|
|
128
|
-
const payload = `tm:${action}:${
|
|
108
|
+
const payload = `tm:${action}:${groupId}:${threadId}`;
|
|
129
109
|
if (!hmacVerify(secret, payload, signature))
|
|
130
110
|
return null;
|
|
131
|
-
return { action,
|
|
111
|
+
return { action, groupId, threadId };
|
|
132
112
|
}
|
|
133
113
|
//# sourceMappingURL=security.js.map
|
package/dist/lib/security.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,0EAA0E;AAE1E
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/lib/security.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/telegram.d.ts
CHANGED
|
@@ -13,23 +13,19 @@ export declare function buildInlineKeyboard(rows: InlineKeyboardButton[][]): Inl
|
|
|
13
13
|
/**
|
|
14
14
|
* Build inline keyboard buttons for a doctor report.
|
|
15
15
|
*/
|
|
16
|
-
export declare function buildDoctorButtons(
|
|
16
|
+
export declare function buildDoctorButtons(groupId: string, threadId: string, secret: string): InlineKeyboardMarkup;
|
|
17
17
|
/**
|
|
18
|
-
* Build inline keyboard with
|
|
18
|
+
* Build inline keyboard with type picker buttons for init.
|
|
19
19
|
*/
|
|
20
|
-
export declare function
|
|
21
|
-
/**
|
|
22
|
-
* Build inline keyboard with type picker buttons for init step 2.
|
|
23
|
-
*/
|
|
24
|
-
export declare function buildInitTypeButtons(slug: string, groupId: string, threadId: string, secret: string): InlineKeyboardMarkup;
|
|
20
|
+
export declare function buildInitTypeButtons(groupId: string, threadId: string, secret: string): InlineKeyboardMarkup;
|
|
25
21
|
/**
|
|
26
22
|
* Build HTML Topic Card displayed after init.
|
|
27
23
|
*/
|
|
28
|
-
export declare function buildTopicCard(slug: string, type: TopicType, capsuleVersion: number): string;
|
|
24
|
+
export declare function buildTopicCard(name: string, slug: string, type: TopicType, capsuleVersion: number): string;
|
|
29
25
|
/**
|
|
30
26
|
* Build HTML doctor report with severity icons.
|
|
31
27
|
*/
|
|
32
|
-
export declare function buildDoctorReport(
|
|
28
|
+
export declare function buildDoctorReport(name: string, results: DoctorCheckResult[]): string;
|
|
33
29
|
/**
|
|
34
30
|
* Build HTML help card with command reference.
|
|
35
31
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/lib/telegram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAI7E,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,eAGhC,CAAC;AAIF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,GAAG,oBAAoB,CAExF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,
|
|
1
|
+
{"version":3,"file":"telegram.d.ts","sourceRoot":"","sources":["../../src/lib/telegram.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE5G,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAI7E,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,eAAO,MAAM,kBAAkB,EAAE,eAGhC,CAAC;AAIF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,EAAE,GAAG,oBAAoB,CAExF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,oBAAoB,CAatB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,oBAAoB,CAYtB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAkB1G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAoBpF;AAeD;;GAEG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAiBtC;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAkC7D;AAkBD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,EAC3G,MAAM,GAAE,eAAoC,GAC3C,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,oBAAoB,KAAK,OAAO,CAAC,IAAI,CAAC,CA8BrG;AAyBD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,GAAE,MAA2B,GAAG,MAAM,CAUvF"}
|
package/dist/lib/telegram.js
CHANGED
|
@@ -16,8 +16,8 @@ export function buildInlineKeyboard(rows) {
|
|
|
16
16
|
/**
|
|
17
17
|
* Build inline keyboard buttons for a doctor report.
|
|
18
18
|
*/
|
|
19
|
-
export function buildDoctorButtons(
|
|
20
|
-
const cb = (action) => buildCallbackData(action,
|
|
19
|
+
export function buildDoctorButtons(groupId, threadId, secret) {
|
|
20
|
+
const cb = (action) => buildCallbackData(action, groupId, threadId, secret);
|
|
21
21
|
return buildInlineKeyboard([
|
|
22
22
|
[
|
|
23
23
|
{ text: 'Fix', callback_data: cb('fix') },
|
|
@@ -31,19 +31,10 @@ export function buildDoctorButtons(slug, groupId, threadId, secret) {
|
|
|
31
31
|
]);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* Build inline keyboard with
|
|
34
|
+
* Build inline keyboard with type picker buttons for init.
|
|
35
35
|
*/
|
|
36
|
-
export function
|
|
37
|
-
const cb = (action) => buildCallbackData(action,
|
|
38
|
-
return buildInlineKeyboard([
|
|
39
|
-
[{ text: 'Confirm', callback_data: cb('is') }],
|
|
40
|
-
]);
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Build inline keyboard with type picker buttons for init step 2.
|
|
44
|
-
*/
|
|
45
|
-
export function buildInitTypeButtons(slug, groupId, threadId, secret) {
|
|
46
|
-
const cb = (action) => buildCallbackData(action, slug, groupId, threadId, secret);
|
|
36
|
+
export function buildInitTypeButtons(groupId, threadId, secret) {
|
|
37
|
+
const cb = (action) => buildCallbackData(action, groupId, threadId, secret);
|
|
47
38
|
return buildInlineKeyboard([
|
|
48
39
|
[
|
|
49
40
|
{ text: 'Coding', callback_data: cb('ic') },
|
|
@@ -58,12 +49,13 @@ export function buildInitTypeButtons(slug, groupId, threadId, secret) {
|
|
|
58
49
|
/**
|
|
59
50
|
* Build HTML Topic Card displayed after init.
|
|
60
51
|
*/
|
|
61
|
-
export function buildTopicCard(slug, type, capsuleVersion) {
|
|
52
|
+
export function buildTopicCard(name, slug, type, capsuleVersion) {
|
|
53
|
+
const n = htmlEscape(name);
|
|
62
54
|
const s = htmlEscape(slug);
|
|
63
55
|
const t = htmlEscape(type);
|
|
64
56
|
const v = htmlEscape(String(capsuleVersion));
|
|
65
57
|
return [
|
|
66
|
-
`<b>Topic: ${
|
|
58
|
+
`<b>Topic: ${n}</b>`,
|
|
67
59
|
`Type: ${t} | Version: ${v}`,
|
|
68
60
|
`Capsule: projects/${s}/`,
|
|
69
61
|
'',
|
|
@@ -79,9 +71,9 @@ export function buildTopicCard(slug, type, capsuleVersion) {
|
|
|
79
71
|
/**
|
|
80
72
|
* Build HTML doctor report with severity icons.
|
|
81
73
|
*/
|
|
82
|
-
export function buildDoctorReport(
|
|
83
|
-
const
|
|
84
|
-
const lines = [`<b>Doctor: ${
|
|
74
|
+
export function buildDoctorReport(name, results) {
|
|
75
|
+
const n = htmlEscape(name);
|
|
76
|
+
const lines = [`<b>Doctor: ${n}</b>`, ''];
|
|
85
77
|
if (results.length === 0) {
|
|
86
78
|
lines.push('All checks passed.');
|
|
87
79
|
return lines.join('\n');
|
|
@@ -121,7 +113,7 @@ export function buildHelpCard() {
|
|
|
121
113
|
'/tm status \u2014 quick STATUS.md view',
|
|
122
114
|
'/tm list \u2014 show all topics',
|
|
123
115
|
'/tm sync \u2014 re-apply config',
|
|
124
|
-
'/tm rename <
|
|
116
|
+
'/tm rename <name> \u2014 rename topic',
|
|
125
117
|
'/tm upgrade \u2014 update capsule template',
|
|
126
118
|
'/tm snooze <Nd> \u2014 snooze doctor (7d, 30d, etc.)',
|
|
127
119
|
'/tm archive \u2014 archive topic',
|
|
@@ -145,7 +137,7 @@ export function buildListMessage(topics) {
|
|
|
145
137
|
let rendered = 0;
|
|
146
138
|
for (const t of sorted) {
|
|
147
139
|
const entry = [
|
|
148
|
-
`<
|
|
140
|
+
`<b>${htmlEscape(t.name)}</b> [${htmlEscape(t.type)}] ${htmlEscape(t.status)}`,
|
|
149
141
|
` Last active: ${t.lastMessageAt ? relativeTime(t.lastMessageAt) : 'never'}`,
|
|
150
142
|
` Thread: #${htmlEscape(t.threadId)}`,
|
|
151
143
|
].join('\n');
|
package/dist/lib/telegram.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/lib/telegram.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,0EAA0E;AAE1E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAYhC,MAAM,CAAC,MAAM,kBAAkB,GAAoB;IACjD,gBAAgB,EAAE,IAAI;IACtB,iBAAiB,EAAE,IAAI;CACxB,CAAC;AAEF,0EAA0E;AAE1E;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA8B;IAChE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,
|
|
1
|
+
{"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/lib/telegram.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type Static } from '@sinclair/typebox';
|
|
2
|
-
export declare const CURRENT_REGISTRY_VERSION =
|
|
2
|
+
export declare const CURRENT_REGISTRY_VERSION = 2;
|
|
3
3
|
export declare const CAPSULE_VERSION = 1;
|
|
4
4
|
export declare const MAX_EXTRAS_BYTES = 10240;
|
|
5
5
|
export declare const MAX_POST_ERROR_LENGTH = 500;
|
|
6
6
|
export declare const MAX_TOPICS_DEFAULT = 100;
|
|
7
|
+
export declare const MAX_NAME_LENGTH = 100;
|
|
7
8
|
export declare const DOCTOR_ALL_COOLDOWN_MS: number;
|
|
8
9
|
export declare const DOCTOR_PER_TOPIC_CAP_MS: number;
|
|
9
10
|
export declare const INACTIVE_AFTER_DAYS = 7;
|
|
@@ -33,6 +34,7 @@ export declare const TopicEntrySchema: import("@sinclair/typebox").TObject<{
|
|
|
33
34
|
groupId: import("@sinclair/typebox").TString;
|
|
34
35
|
threadId: import("@sinclair/typebox").TString;
|
|
35
36
|
slug: import("@sinclair/typebox").TString;
|
|
37
|
+
name: import("@sinclair/typebox").TString;
|
|
36
38
|
type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"coding">, import("@sinclair/typebox").TLiteral<"research">, import("@sinclair/typebox").TLiteral<"marketing">, import("@sinclair/typebox").TLiteral<"custom">]>;
|
|
37
39
|
status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"snoozed">, import("@sinclair/typebox").TLiteral<"archived">]>;
|
|
38
40
|
capsuleVersion: import("@sinclair/typebox").TInteger;
|
|
@@ -56,6 +58,7 @@ export declare const RegistrySchema: import("@sinclair/typebox").TObject<{
|
|
|
56
58
|
groupId: import("@sinclair/typebox").TString;
|
|
57
59
|
threadId: import("@sinclair/typebox").TString;
|
|
58
60
|
slug: import("@sinclair/typebox").TString;
|
|
61
|
+
name: import("@sinclair/typebox").TString;
|
|
59
62
|
type: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"coding">, import("@sinclair/typebox").TLiteral<"research">, import("@sinclair/typebox").TLiteral<"marketing">, import("@sinclair/typebox").TLiteral<"custom">]>;
|
|
60
63
|
status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"snoozed">, import("@sinclair/typebox").TLiteral<"archived">]>;
|
|
61
64
|
capsuleVersion: import("@sinclair/typebox").TInteger;
|
|
@@ -117,4 +120,9 @@ export interface CommandResult {
|
|
|
117
120
|
pin?: boolean;
|
|
118
121
|
}
|
|
119
122
|
export declare function topicKey(groupId: string, threadId: string): string;
|
|
123
|
+
/**
|
|
124
|
+
* Generate a stable, immutable slug for a topic.
|
|
125
|
+
* Returns `t-{threadId}` if unique, otherwise `t-{threadId}-{last4OfGroupId}`.
|
|
126
|
+
*/
|
|
127
|
+
export declare function generateSlug(threadId: string, groupId: string, existingSlugs: Set<string>): string;
|
|
120
128
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/lib/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,eAAO,MAAM,eAAe,IAAI,CAAC;AACjC,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,MAAM,CAAC;AACtC,eAAO,MAAM,sBAAsB,QAAiB,CAAC;AACrD,eAAO,MAAM,uBAAuB,QAAsB,CAAC;AAC3D,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,cAAc,IAAI,CAAC;AAIhC,eAAO,MAAM,SAAS;;;;;CAKZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,OAAO,WAAW,CAAC,CAAC;AAEzE,eAAO,MAAM,QAAQ;;;;CAIX,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAIhE,eAAO,MAAM,eAAe,2OAK1B,CAAC;AAEH,eAAO,MAAM,iBAAiB,yLAI5B,CAAC;AAEH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { Type } from '@sinclair/typebox';
|
|
2
2
|
// ── Constants ──────────────────────────────────────────────────────────
|
|
3
|
-
export const CURRENT_REGISTRY_VERSION =
|
|
3
|
+
export const CURRENT_REGISTRY_VERSION = 2;
|
|
4
4
|
export const CAPSULE_VERSION = 1;
|
|
5
5
|
export const MAX_EXTRAS_BYTES = 10_240;
|
|
6
6
|
export const MAX_POST_ERROR_LENGTH = 500;
|
|
7
7
|
export const MAX_TOPICS_DEFAULT = 100;
|
|
8
|
+
export const MAX_NAME_LENGTH = 100;
|
|
8
9
|
export const DOCTOR_ALL_COOLDOWN_MS = 60 * 60 * 1000; // 1 hour
|
|
9
10
|
export const DOCTOR_PER_TOPIC_CAP_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
10
11
|
export const INACTIVE_AFTER_DAYS = 7;
|
|
@@ -42,6 +43,7 @@ export const TopicEntrySchema = Type.Object({
|
|
|
42
43
|
groupId: Type.String({ pattern: '^-?\\d+$' }),
|
|
43
44
|
threadId: Type.String({ pattern: '^\\d+$' }),
|
|
44
45
|
slug: Type.String({ pattern: '^[a-z][a-z0-9-]{0,49}$' }),
|
|
46
|
+
name: Type.String({ minLength: 1, maxLength: MAX_NAME_LENGTH }),
|
|
45
47
|
type: TopicTypeSchema,
|
|
46
48
|
status: TopicStatusSchema,
|
|
47
49
|
capsuleVersion: Type.Integer({ minimum: 1 }),
|
|
@@ -82,4 +84,16 @@ export const BASE_FILES = [
|
|
|
82
84
|
export function topicKey(groupId, threadId) {
|
|
83
85
|
return `${groupId}:${threadId}`;
|
|
84
86
|
}
|
|
87
|
+
// ── Slug generation ─────────────────────────────────────────────────
|
|
88
|
+
/**
|
|
89
|
+
* Generate a stable, immutable slug for a topic.
|
|
90
|
+
* Returns `t-{threadId}` if unique, otherwise `t-{threadId}-{last4OfGroupId}`.
|
|
91
|
+
*/
|
|
92
|
+
export function generateSlug(threadId, groupId, existingSlugs) {
|
|
93
|
+
const base = `t-${threadId}`;
|
|
94
|
+
if (!existingSlugs.has(base))
|
|
95
|
+
return base;
|
|
96
|
+
const suffix = groupId.replace(/^-/, '').slice(-4);
|
|
97
|
+
return `t-${threadId}-${suffix}`;
|
|
98
|
+
}
|
|
85
99
|
//# sourceMappingURL=types.js.map
|
package/dist/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"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"}
|