@hasna/conversations 0.2.9 → 0.2.10

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 CHANGED
@@ -2399,7 +2399,8 @@ function readMessages(opts = {}) {
2399
2399
  const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
2400
2400
  const resolvedLimit = isLatest ? Math.floor(opts.latest) : Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
2401
2401
  const order = isLatest ? "DESC" : opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
2402
- const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
2402
+ const resolvedOffset = opts.offset && opts.offset > 0 ? Math.floor(opts.offset) : 0;
2403
+ const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit} OFFSET ${resolvedOffset}`).all(...params);
2403
2404
  let messages = rows.map(parseMessage);
2404
2405
  if (opts.include_reply_counts && messages.length > 0) {
2405
2406
  const db22 = getDb();
@@ -4441,7 +4442,7 @@ var init_poll = __esm(() => {
4441
4442
  var require_package = __commonJS((exports, module) => {
4442
4443
  module.exports = {
4443
4444
  name: "@hasna/conversations",
4444
- version: "0.2.9",
4445
+ version: "0.2.10",
4445
4446
  description: "Real-time CLI messaging for AI agents",
4446
4447
  type: "module",
4447
4448
  bin: {
@@ -33698,7 +33699,8 @@ var init_mcp2 = __esm(() => {
33698
33699
  threads_only: exports_external.coerce.boolean().optional().describe("Only return root messages (reply_to IS NULL) \u2014 hides thread replies"),
33699
33700
  include_reply_counts: exports_external.coerce.boolean().optional().describe("Include reply_count on each message (adds one extra query)"),
33700
33701
  mentions_only: exports_external.string().optional().describe("Only return messages that @mention this agent"),
33701
- latest: exports_external.coerce.number().optional().describe("Return the N most recent unread messages, newest first. Shorthand for order:desc + limit:N.")
33702
+ latest: exports_external.coerce.number().optional().describe("Return the N most recent unread messages, newest first. Shorthand for order:desc + limit:N."),
33703
+ offset: exports_external.coerce.number().optional().describe("Skip first N messages for pagination (use with limit)")
33702
33704
  }
33703
33705
  }, async (args) => {
33704
33706
  const agent = resolveIdentity(args.from);
@@ -33710,7 +33712,7 @@ var init_mcp2 = __esm(() => {
33710
33712
  markReadByIds(messages.map((m) => m.id));
33711
33713
  }
33712
33714
  return {
33713
- content: [{ type: "text", text: JSON.stringify(messages) }]
33715
+ content: [{ type: "text", text: JSON.stringify({ messages, count: messages.length, offset: args.offset ?? 0 }) }]
33714
33716
  };
33715
33717
  });
33716
33718
  server.registerTool("list_sessions", {
package/bin/mcp.js CHANGED
@@ -28908,7 +28908,8 @@ function readMessages(opts = {}) {
28908
28908
  const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
28909
28909
  const resolvedLimit = isLatest ? Math.floor(opts.latest) : Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
28910
28910
  const order = isLatest ? "DESC" : opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
28911
- const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
28911
+ const resolvedOffset = opts.offset && opts.offset > 0 ? Math.floor(opts.offset) : 0;
28912
+ const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit} OFFSET ${resolvedOffset}`).all(...params);
28912
28913
  let messages = rows.map(parseMessage);
28913
28914
  if (opts.include_reply_counts && messages.length > 0) {
28914
28915
  const db22 = getDb();
@@ -30931,7 +30932,7 @@ function getGraphStats() {
30931
30932
  // package.json
30932
30933
  var package_default = {
30933
30934
  name: "@hasna/conversations",
30934
- version: "0.2.9",
30935
+ version: "0.2.10",
30935
30936
  description: "Real-time CLI messaging for AI agents",
30936
30937
  type: "module",
30937
30938
  bin: {
@@ -31067,7 +31068,8 @@ server.registerTool("read_messages", {
31067
31068
  threads_only: exports_external.coerce.boolean().optional().describe("Only return root messages (reply_to IS NULL) \u2014 hides thread replies"),
31068
31069
  include_reply_counts: exports_external.coerce.boolean().optional().describe("Include reply_count on each message (adds one extra query)"),
31069
31070
  mentions_only: exports_external.string().optional().describe("Only return messages that @mention this agent"),
31070
- latest: exports_external.coerce.number().optional().describe("Return the N most recent unread messages, newest first. Shorthand for order:desc + limit:N.")
31071
+ latest: exports_external.coerce.number().optional().describe("Return the N most recent unread messages, newest first. Shorthand for order:desc + limit:N."),
31072
+ offset: exports_external.coerce.number().optional().describe("Skip first N messages for pagination (use with limit)")
31071
31073
  }
31072
31074
  }, async (args) => {
31073
31075
  const agent = resolveIdentity(args.from);
@@ -31079,7 +31081,7 @@ server.registerTool("read_messages", {
31079
31081
  markReadByIds(messages.map((m) => m.id));
31080
31082
  }
31081
31083
  return {
31082
- content: [{ type: "text", text: JSON.stringify(messages) }]
31084
+ content: [{ type: "text", text: JSON.stringify({ messages, count: messages.length, offset: args.offset ?? 0 }) }]
31083
31085
  };
31084
31086
  });
31085
31087
  server.registerTool("list_sessions", {
package/dist/index.js CHANGED
@@ -2373,7 +2373,8 @@ function readMessages(opts = {}) {
2373
2373
  const where = conditions.length > 0 ? `WHERE ${conditions.join(" AND ")}` : "";
2374
2374
  const resolvedLimit = isLatest ? Math.floor(opts.latest) : Number.isFinite(opts.limit) && opts.limit > 0 ? Math.floor(opts.limit) : 20;
2375
2375
  const order = isLatest ? "DESC" : opts.order?.toLowerCase() === "desc" ? "DESC" : "ASC";
2376
- const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit}`).all(...params);
2376
+ const resolvedOffset = opts.offset && opts.offset > 0 ? Math.floor(opts.offset) : 0;
2377
+ const rows = db2.prepare(`SELECT * FROM messages ${where} ORDER BY created_at ${order}, id ${order} LIMIT ${resolvedLimit} OFFSET ${resolvedOffset}`).all(...params);
2377
2378
  let messages = rows.map(parseMessage);
2378
2379
  if (opts.include_reply_counts && messages.length > 0) {
2379
2380
  const db22 = getDb();
package/dist/types.d.ts CHANGED
@@ -113,6 +113,7 @@ export interface ReadMessagesOptions {
113
113
  include_reply_counts?: boolean;
114
114
  mentions_only?: string;
115
115
  latest?: number;
116
+ offset?: number;
116
117
  }
117
118
  export interface SearchMessagesOptions {
118
119
  query: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hasna/conversations",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
4
4
  "description": "Real-time CLI messaging for AI agents",
5
5
  "type": "module",
6
6
  "bin": {