@hasna/conversations 0.2.3 → 0.2.4
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/bin/index.js +16 -6
- package/bin/mcp.js +16 -6
- package/dist/index.js +9 -1
- package/dist/types.d.ts +2 -0
- package/package.json +1 -1
package/bin/index.js
CHANGED
|
@@ -2372,7 +2372,15 @@ function readMessages(opts = {}) {
|
|
|
2372
2372
|
const resolvedLimit = Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
|
|
2373
2373
|
const order = opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
|
|
2374
2374
|
const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
|
|
2375
|
-
|
|
2375
|
+
let messages = rows.map(parseMessage);
|
|
2376
|
+
if (opts.max_content_length && opts.max_content_length > 0) {
|
|
2377
|
+
messages = messages.map((m) => {
|
|
2378
|
+
if (m.content.length > opts.max_content_length) {
|
|
2379
|
+
return { ...m, content: m.content.slice(0, opts.max_content_length) + "\u2026", truncated: true };
|
|
2380
|
+
}
|
|
2381
|
+
return m;
|
|
2382
|
+
});
|
|
2383
|
+
}
|
|
2376
2384
|
if (opts.compact)
|
|
2377
2385
|
return messages.map(compactMessage);
|
|
2378
2386
|
return messages;
|
|
@@ -4316,7 +4324,7 @@ var init_poll = __esm(() => {
|
|
|
4316
4324
|
var require_package = __commonJS((exports, module) => {
|
|
4317
4325
|
module.exports = {
|
|
4318
4326
|
name: "@hasna/conversations",
|
|
4319
|
-
version: "0.2.
|
|
4327
|
+
version: "0.2.4",
|
|
4320
4328
|
description: "Real-time CLI messaging for AI agents",
|
|
4321
4329
|
type: "module",
|
|
4322
4330
|
bin: {
|
|
@@ -33568,7 +33576,8 @@ var init_mcp2 = __esm(() => {
|
|
|
33568
33576
|
since: exports_external.string().optional(),
|
|
33569
33577
|
limit: exports_external.coerce.number().optional(),
|
|
33570
33578
|
unread_only: exports_external.coerce.boolean().optional(),
|
|
33571
|
-
mark_read: exports_external.coerce.boolean().optional()
|
|
33579
|
+
mark_read: exports_external.coerce.boolean().optional(),
|
|
33580
|
+
max_content_length: exports_external.coerce.number().optional().describe("Truncate each message content to N chars (adds truncated:true flag)")
|
|
33572
33581
|
}
|
|
33573
33582
|
}, async (args) => {
|
|
33574
33583
|
const agent = resolveIdentity(args.from);
|
|
@@ -33786,11 +33795,12 @@ var init_mcp2 = __esm(() => {
|
|
|
33786
33795
|
space: exports_external.string(),
|
|
33787
33796
|
since: exports_external.string().optional(),
|
|
33788
33797
|
limit: exports_external.coerce.number().optional(),
|
|
33789
|
-
mark_read: exports_external.coerce.boolean().optional()
|
|
33798
|
+
mark_read: exports_external.coerce.boolean().optional(),
|
|
33799
|
+
max_content_length: exports_external.coerce.number().optional().describe("Truncate each message content to N chars (adds truncated:true flag)")
|
|
33790
33800
|
}
|
|
33791
33801
|
}, async (args) => {
|
|
33792
|
-
const { space, since, limit, mark_read } = args;
|
|
33793
|
-
const messages = readMessages({ space, since, limit });
|
|
33802
|
+
const { space, since, limit, mark_read, max_content_length } = args;
|
|
33803
|
+
const messages = readMessages({ space, since, limit, max_content_length });
|
|
33794
33804
|
if (mark_read !== false && messages.length > 0) {
|
|
33795
33805
|
markReadByIds(messages.map((m) => m.id));
|
|
33796
33806
|
}
|
package/bin/mcp.js
CHANGED
|
@@ -28881,7 +28881,15 @@ function readMessages(opts = {}) {
|
|
|
28881
28881
|
const resolvedLimit = Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
|
|
28882
28882
|
const order = opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
|
|
28883
28883
|
const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
|
|
28884
|
-
|
|
28884
|
+
let messages = rows.map(parseMessage);
|
|
28885
|
+
if (opts.max_content_length && opts.max_content_length > 0) {
|
|
28886
|
+
messages = messages.map((m) => {
|
|
28887
|
+
if (m.content.length > opts.max_content_length) {
|
|
28888
|
+
return { ...m, content: m.content.slice(0, opts.max_content_length) + "\u2026", truncated: true };
|
|
28889
|
+
}
|
|
28890
|
+
return m;
|
|
28891
|
+
});
|
|
28892
|
+
}
|
|
28885
28893
|
if (opts.compact)
|
|
28886
28894
|
return messages.map(compactMessage);
|
|
28887
28895
|
return messages;
|
|
@@ -30800,7 +30808,7 @@ function getGraphStats() {
|
|
|
30800
30808
|
// package.json
|
|
30801
30809
|
var package_default = {
|
|
30802
30810
|
name: "@hasna/conversations",
|
|
30803
|
-
version: "0.2.
|
|
30811
|
+
version: "0.2.4",
|
|
30804
30812
|
description: "Real-time CLI messaging for AI agents",
|
|
30805
30813
|
type: "module",
|
|
30806
30814
|
bin: {
|
|
@@ -30931,7 +30939,8 @@ server.registerTool("read_messages", {
|
|
|
30931
30939
|
since: exports_external.string().optional(),
|
|
30932
30940
|
limit: exports_external.coerce.number().optional(),
|
|
30933
30941
|
unread_only: exports_external.coerce.boolean().optional(),
|
|
30934
|
-
mark_read: exports_external.coerce.boolean().optional()
|
|
30942
|
+
mark_read: exports_external.coerce.boolean().optional(),
|
|
30943
|
+
max_content_length: exports_external.coerce.number().optional().describe("Truncate each message content to N chars (adds truncated:true flag)")
|
|
30935
30944
|
}
|
|
30936
30945
|
}, async (args) => {
|
|
30937
30946
|
const agent = resolveIdentity(args.from);
|
|
@@ -31149,11 +31158,12 @@ server.registerTool("read_space", {
|
|
|
31149
31158
|
space: exports_external.string(),
|
|
31150
31159
|
since: exports_external.string().optional(),
|
|
31151
31160
|
limit: exports_external.coerce.number().optional(),
|
|
31152
|
-
mark_read: exports_external.coerce.boolean().optional()
|
|
31161
|
+
mark_read: exports_external.coerce.boolean().optional(),
|
|
31162
|
+
max_content_length: exports_external.coerce.number().optional().describe("Truncate each message content to N chars (adds truncated:true flag)")
|
|
31153
31163
|
}
|
|
31154
31164
|
}, async (args) => {
|
|
31155
|
-
const { space, since, limit, mark_read } = args;
|
|
31156
|
-
const messages = readMessages({ space, since, limit });
|
|
31165
|
+
const { space, since, limit, mark_read, max_content_length } = args;
|
|
31166
|
+
const messages = readMessages({ space, since, limit, max_content_length });
|
|
31157
31167
|
if (mark_read !== false && messages.length > 0) {
|
|
31158
31168
|
markReadByIds(messages.map((m) => m.id));
|
|
31159
31169
|
}
|
package/dist/index.js
CHANGED
|
@@ -2346,7 +2346,15 @@ function readMessages(opts = {}) {
|
|
|
2346
2346
|
const resolvedLimit = Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
|
|
2347
2347
|
const order = opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
|
|
2348
2348
|
const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
|
|
2349
|
-
|
|
2349
|
+
let messages = rows.map(parseMessage);
|
|
2350
|
+
if (opts.max_content_length && opts.max_content_length > 0) {
|
|
2351
|
+
messages = messages.map((m) => {
|
|
2352
|
+
if (m.content.length > opts.max_content_length) {
|
|
2353
|
+
return { ...m, content: m.content.slice(0, opts.max_content_length) + "\u2026", truncated: true };
|
|
2354
|
+
}
|
|
2355
|
+
return m;
|
|
2356
|
+
});
|
|
2357
|
+
}
|
|
2350
2358
|
if (opts.compact)
|
|
2351
2359
|
return messages.map(compactMessage);
|
|
2352
2360
|
return messages;
|
package/dist/types.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export interface Message {
|
|
|
19
19
|
blocking: boolean;
|
|
20
20
|
attachments: Attachment[] | null;
|
|
21
21
|
reply_to: number | null;
|
|
22
|
+
truncated?: boolean;
|
|
22
23
|
}
|
|
23
24
|
export interface Reaction {
|
|
24
25
|
id: number;
|
|
@@ -106,6 +107,7 @@ export interface ReadMessagesOptions {
|
|
|
106
107
|
unread_only?: boolean;
|
|
107
108
|
order?: "asc" | "desc";
|
|
108
109
|
compact?: boolean;
|
|
110
|
+
max_content_length?: number;
|
|
109
111
|
}
|
|
110
112
|
export interface SearchMessagesOptions {
|
|
111
113
|
query: string;
|