@tailormade/seq-mcp 1.1.2 → 1.1.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.
Files changed (57) hide show
  1. package/dist/api/client.d.ts +1 -0
  2. package/dist/api/client.d.ts.map +1 -1
  3. package/dist/api/client.js +26 -7
  4. package/dist/api/client.js.map +1 -1
  5. package/dist/api/client.test.js +117 -0
  6. package/dist/api/client.test.js.map +1 -1
  7. package/dist/api/formatter.d.ts +2 -1
  8. package/dist/api/formatter.d.ts.map +1 -1
  9. package/dist/api/formatter.js +9 -7
  10. package/dist/api/formatter.js.map +1 -1
  11. package/dist/api/formatter.test.js +5 -0
  12. package/dist/api/formatter.test.js.map +1 -1
  13. package/dist/api/history.d.ts.map +1 -1
  14. package/dist/api/history.js +17 -14
  15. package/dist/api/history.js.map +1 -1
  16. package/dist/api/history.test.js +50 -6
  17. package/dist/api/history.test.js.map +1 -1
  18. package/dist/api/prefs.d.ts +2 -0
  19. package/dist/api/prefs.d.ts.map +1 -1
  20. package/dist/api/prefs.js +61 -29
  21. package/dist/api/prefs.js.map +1 -1
  22. package/dist/api/prefs.test.js +4 -11
  23. package/dist/api/prefs.test.js.map +1 -1
  24. package/dist/tests/setup.d.ts +2 -0
  25. package/dist/tests/setup.d.ts.map +1 -0
  26. package/dist/tests/setup.js +5 -0
  27. package/dist/tests/setup.js.map +1 -0
  28. package/dist/tests/tools.test.d.ts +2 -0
  29. package/dist/tests/tools.test.d.ts.map +1 -0
  30. package/dist/tests/tools.test.js +162 -0
  31. package/dist/tests/tools.test.js.map +1 -0
  32. package/dist/tools/history.d.ts.map +1 -1
  33. package/dist/tools/history.js +5 -7
  34. package/dist/tools/history.js.map +1 -1
  35. package/dist/tools/prefs.d.ts.map +1 -1
  36. package/dist/tools/prefs.js +9 -6
  37. package/dist/tools/prefs.js.map +1 -1
  38. package/dist/tools/query.d.ts.map +1 -1
  39. package/dist/tools/query.js +10 -12
  40. package/dist/tools/query.js.map +1 -1
  41. package/dist/tools/recent.d.ts.map +1 -1
  42. package/dist/tools/recent.js +6 -7
  43. package/dist/tools/recent.js.map +1 -1
  44. package/dist/tools/search.d.ts.map +1 -1
  45. package/dist/tools/search.js +7 -7
  46. package/dist/tools/search.js.map +1 -1
  47. package/dist/tools/signals.d.ts.map +1 -1
  48. package/dist/tools/signals.js +2 -4
  49. package/dist/tools/signals.js.map +1 -1
  50. package/dist/tools/stream.d.ts.map +1 -1
  51. package/dist/tools/stream.js +7 -8
  52. package/dist/tools/stream.js.map +1 -1
  53. package/dist/tools/utils.d.ts +7 -0
  54. package/dist/tools/utils.d.ts.map +1 -0
  55. package/dist/tools/utils.js +7 -0
  56. package/dist/tools/utils.js.map +1 -0
  57. package/package.json +1 -1
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerPrefsTools = registerPrefsTools;
4
4
  const zod_1 = require("zod");
5
5
  const prefs_js_1 = require("../api/prefs.js");
6
- function respond(text) {
7
- return { content: [{ type: "text", text }] };
8
- }
6
+ const utils_js_1 = require("./utils.js");
9
7
  function registerPrefsTools(server) {
10
8
  server.tool("seq_prefs", "Show current Seq MCP preferences (output format, hidden fields, message length, history retention days).", {}, async () => {
11
9
  const prefs = (0, prefs_js_1.loadPrefs)();
@@ -18,14 +16,19 @@ function registerPrefsTools(server) {
18
16
  ` historySystemKeepDays: positive integer [current: ${prefs.historySystemKeepDays}]`,
19
17
  ` maxHistoryQueries: positive integer [current: ${prefs.maxHistoryQueries}]`,
20
18
  ];
21
- return respond(lines.join("\n"));
19
+ return (0, utils_js_1.respond)(lines.join("\n"));
22
20
  });
23
21
  server.tool("seq_prefs_update", "Update a Seq MCP preference. Valid keys: defaultFormat (compact|table|detail|raw), maxMessageLength (number), hideFields (comma-separated list), historyQueryKeepDays (number, default 60), historySystemKeepDays (number, default 60), maxHistoryQueries (number, default 500).", {
24
22
  key: zod_1.z.string().describe("Preference key: defaultFormat, maxMessageLength, hideFields, historyQueryKeepDays, historySystemKeepDays, or maxHistoryQueries"),
25
23
  value: zod_1.z.string().describe("New value. For hideFields use comma-separated list, e.g. 'ProcessId,ThreadId'"),
26
24
  }, async (params) => {
27
- const prefs = (0, prefs_js_1.updatePref)(params.key, params.value);
28
- return respond(`Updated. Current preferences:\n${JSON.stringify(prefs, null, 2)}`);
25
+ try {
26
+ const prefs = (0, prefs_js_1.updatePref)(params.key, params.value);
27
+ return (0, utils_js_1.respond)(`Updated. Current preferences:\n${JSON.stringify(prefs, null, 2)}`);
28
+ }
29
+ catch (e) {
30
+ return (0, utils_js_1.respond)(`Error: ${e.message}`);
31
+ }
29
32
  });
30
33
  }
31
34
  //# sourceMappingURL=prefs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/tools/prefs.ts"],"names":[],"mappings":";;AAQA,gDAgCC;AAvCD,6BAAwB;AACxB,8CAAwD;AAExD,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,0GAA0G,EAC1G,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,KAAK,GAAG;YACZ,2CAA2C;YAC3C,8DAA8D,KAAK,CAAC,aAAa,GAAG;YACpF,mDAAmD,KAAK,CAAC,gBAAgB,GAAG;YAC5E,wDAAwD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACtF,uDAAuD,KAAK,CAAC,oBAAoB,GAAG;YACpF,wDAAwD,KAAK,CAAC,qBAAqB,GAAG;YACtF,oDAAoD,KAAK,CAAC,iBAAiB,GAAG;SAC/E,CAAC;QACF,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kRAAkR,EAClR;QACE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gIAAgI,CAAC;QAC1J,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;KAC5G,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACrF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"prefs.js","sourceRoot":"","sources":["../../src/tools/prefs.ts"],"names":[],"mappings":";;AAKA,gDAoCC;AAxCD,6BAAwB;AACxB,8CAAwD;AACxD,yCAAqC;AAErC,SAAgB,kBAAkB,CAAC,MAAiB;IAClD,MAAM,CAAC,IAAI,CACT,WAAW,EACX,0GAA0G,EAC1G,EAAE,EACF,KAAK,IAAI,EAAE;QACT,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,KAAK,GAAG;YACZ,2CAA2C;YAC3C,8DAA8D,KAAK,CAAC,aAAa,GAAG;YACpF,mDAAmD,KAAK,CAAC,gBAAgB,GAAG;YAC5E,wDAAwD,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACtF,uDAAuD,KAAK,CAAC,oBAAoB,GAAG;YACpF,wDAAwD,KAAK,CAAC,qBAAqB,GAAG;YACtF,oDAAoD,KAAK,CAAC,iBAAiB,GAAG;SAC/E,CAAC;QACF,OAAO,IAAA,kBAAO,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,kBAAkB,EAClB,kRAAkR,EAClR;QACE,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gIAAgI,CAAC;QAC1J,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC;KAC5G,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAA,qBAAU,EAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACnD,OAAO,IAAA,kBAAO,EAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAA,kBAAO,EAAC,UAAW,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAqK7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAuF7E"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAkK7C,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAuF7E"}
@@ -2,9 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerQueryTools = registerQueryTools;
4
4
  const zod_1 = require("zod");
5
- function respond(text) {
6
- return { content: [{ type: "text", text }] };
7
- }
5
+ const utils_js_1 = require("./utils.js");
8
6
  function formatQueryResult(result) {
9
7
  if (result.Error) {
10
8
  let msg = `Error: ${result.Error}`;
@@ -156,10 +154,10 @@ WARNING: @Level = 'Error' alone can return 0 results on some systems — prefer
156
154
  5. seq_query — aggregate/count queries
157
155
  `;
158
156
  function registerQueryTools(server, client) {
159
- server.tool("seq_query_help", "Returns inline reference documentation for Seq filter syntax, SQL syntax, signals, and recommended workflow. Use this before building a filter or query on an unfamiliar system.", {}, async () => respond(QUERY_HELP));
157
+ server.tool("seq_query_help", "Returns inline reference documentation for Seq filter syntax, SQL syntax, signals, and recommended workflow. Use this before building a filter or query on an unfamiliar system.", {}, async () => (0, utils_js_1.respond)(QUERY_HELP));
160
158
  server.tool("seq_query", "Execute a SQL query against Seq event data. Returns tabular results. Supports SELECT, COUNT, DISTINCT, GROUP BY, ORDER BY, LIMIT.\n\nllmTip: CRITICAL: use `from stream` not `from events` — wrong table name returns empty results. NOTE: strings are single-quoted. WARNING: always set rangeStartUtc — without it the query scans all time and will timeout on large datasets. EXAMPLE: `select count(*) from stream group by System limit 50` | `select count(*) from stream where System = 'MyApp' group by RequestPath` | `select count(*) from stream where @Level = 'Error' group by System`.", {
161
159
  q: zod_1.z.string().describe("SQL query. Must use 'from stream'. Example: select distinct(System) from stream limit 50"),
162
- rangeStartUtc: zod_1.z.string().optional().describe("Start of time range, ISO8601. Default: last 24h"),
160
+ rangeStartUtc: zod_1.z.string().optional().describe("Start of time range, ISO8601. Optional. If omitted, Seq searches the full event stream (may time out on large datasets — recommended to always provide)"),
163
161
  rangeEndUtc: zod_1.z.string().optional().describe("End of time range, ISO8601"),
164
162
  signal: zod_1.z.string().optional().describe("Signal ID to scope the query. Use seq_signals to discover available IDs."),
165
163
  timeout: zod_1.z.coerce.number().optional().describe("Query timeout in ms (default 30000)"),
@@ -173,17 +171,17 @@ function registerQueryTools(server, client) {
173
171
  timeout: params.timeout ?? 30000,
174
172
  });
175
173
  if (params.format === "raw")
176
- return respond(JSON.stringify(result, null, 2));
177
- return respond(formatQueryResult(result));
174
+ return (0, utils_js_1.respond)(JSON.stringify(result, null, 2));
175
+ return (0, utils_js_1.respond)(formatQueryResult(result));
178
176
  });
179
177
  server.tool("seq_expression_indexes", "List expression indexes configured in Seq. These define which fields have dedicated indexes for fast querying.\n\nllmTip: NOTE: only indexed fields (@EventType, @TraceId) benefit from fast lookups. For field discovery, use seq_query with `group by` or seq_fields instead.", {
180
178
  format: zod_1.z.enum(["table", "raw"]).optional().describe("Output format: table (default) or raw JSON"),
181
179
  }, async (params) => {
182
180
  const exprIndexes = await client.listExpressionIndexes();
183
181
  if (params.format === "raw")
184
- return respond(JSON.stringify(exprIndexes, null, 2));
182
+ return (0, utils_js_1.respond)(JSON.stringify(exprIndexes, null, 2));
185
183
  if (exprIndexes.length === 0)
186
- return respond("No expression indexes configured.");
184
+ return (0, utils_js_1.respond)("No expression indexes configured.");
187
185
  const w = Math.max(10, ...exprIndexes.map((i) => i.Expression.length));
188
186
  const lines = [
189
187
  `${exprIndexes.length} expression indexes`, "",
@@ -191,7 +189,7 @@ function registerQueryTools(server, client) {
191
189
  ["-".repeat(w), "-".repeat(11)].join("-|-"),
192
190
  ...exprIndexes.map((i) => [i.Expression.padEnd(w), i.Description ?? ""].join(" | ")),
193
191
  ];
194
- return respond(lines.join("\n"));
192
+ return (0, utils_js_1.respond)(lines.join("\n"));
195
193
  });
196
194
  server.tool("seq_fields", "Discover which properties/fields a system (or filter) logs by sampling recent events. Shows field names and sample values. Cached 10 min.\n\nllmTip: NOTE: fields vary per system, environment, and event type — increase sampleSize for better coverage. NOTE: also check seq_history for already-discovered properties before calling this. EXAMPLE: follow up with seq_query: `select count(*) from stream where System = 'X' group by FieldName` for exact value counts.", {
197
195
  filter: zod_1.z.string().describe("Seq filter expression, e.g. System = 'MyApp' or System = 'MyApp' and @Level = 'Error'"),
@@ -201,7 +199,7 @@ function registerQueryTools(server, client) {
201
199
  const { fields, sampleCount } = await client.discoverFields(params.filter, size);
202
200
  const entries = Object.entries(fields).sort((a, b) => b[1].size - a[1].size);
203
201
  if (entries.length === 0)
204
- return respond("No fields found (no events matched the filter).");
202
+ return (0, utils_js_1.respond)("No fields found (no events matched the filter).");
205
203
  const lines = [
206
204
  `${entries.length} fields found (sampled ${sampleCount} events)`,
207
205
  "",
@@ -214,7 +212,7 @@ function registerQueryTools(server, client) {
214
212
  lines.push(` ${preview}${more}`);
215
213
  lines.push("");
216
214
  }
217
- return respond(lines.join("\n").trimEnd());
215
+ return (0, utils_js_1.respond)(lines.join("\n").trimEnd());
218
216
  });
219
217
  }
220
218
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/tools/query.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../src/tools/recent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAwB9E"}
1
+ {"version":3,"file":"recent.d.ts","sourceRoot":"","sources":["../../src/tools/recent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyB9E"}
@@ -5,14 +5,12 @@ const zod_1 = require("zod");
5
5
  const formatter_js_1 = require("../api/formatter.js");
6
6
  const prefs_js_1 = require("../api/prefs.js");
7
7
  const history_js_1 = require("../api/history.js");
8
- function respond(text) {
9
- return { content: [{ type: "text", text }] };
10
- }
8
+ const utils_js_1 = require("./utils.js");
11
9
  function registerRecentTools(server, client) {
12
10
  server.tool("seq_recent", "Fetch the most recent events from Seq. Use afterId to poll for new events since a previous call. For continuous monitoring, use seq_stream instead.\n\nllmTip: NOTE: polling pattern — first call without afterId, then pass the newest event Id as afterId in subsequent calls. EXAMPLE: text search: `@Message like '%keyword%'` | structured: `@Level = 'Error'` | combined: `System = 'X' and @Level = 'Error'`.", {
13
11
  filter: zod_1.z.string().optional().describe("Seq filter expression. For text search: @Message like '%keyword%'. For structured: @Level = 'Error'. Combine with and/or."),
14
12
  signal: zod_1.z.string().optional().describe("Signal ID to filter by. Use seq_signals to discover available IDs."),
15
- count: zod_1.z.coerce.number().optional().describe("Max events to return (default 10)"),
13
+ count: zod_1.z.coerce.number().min(1).optional().describe("Max events to return (default 10, max 200)"),
16
14
  afterId: zod_1.z.string().optional().describe("Only return events newer than this event ID. Use for polling: pass the Id of the last event from your previous call."),
17
15
  format: zod_1.z.enum(["compact", "table", "detail", "raw"]).optional()
18
16
  .describe("Output format: compact (default), table, detail, or raw (full JSON)"),
@@ -20,12 +18,13 @@ function registerRecentTools(server, client) {
20
18
  const events = await client.recent({
21
19
  filter: params.filter,
22
20
  signal: params.signal,
23
- count: params.count ?? 10,
21
+ count: Math.min(params.count ?? 10, 200),
24
22
  afterId: params.afterId,
25
23
  });
26
24
  (0, history_js_1.recordQuery)({ filter: params.filter }, events);
27
- const mode = params.format ?? (0, prefs_js_1.loadPrefs)().defaultFormat;
28
- return respond((0, formatter_js_1.formatEvents)(events, mode));
25
+ const prefs = (0, prefs_js_1.loadPrefs)();
26
+ const mode = params.format ?? prefs.defaultFormat;
27
+ return (0, utils_js_1.respond)((0, formatter_js_1.formatEvents)(events, mode, prefs));
29
28
  });
30
29
  }
31
30
  //# sourceMappingURL=recent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../src/tools/recent.ts"],"names":[],"mappings":";;AAWA,kDAwBC;AAlCD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAEhD,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,sZAAsZ,EACtZ;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2HAA2H,CAAC;QACnK,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACjF,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;QAC/J,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,qEAAqE,CAAC;KACnF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,IAAA,oBAAS,GAAE,CAAC,aAAa,CAAC;QACpE,OAAO,OAAO,CAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"recent.js","sourceRoot":"","sources":["../../src/tools/recent.ts"],"names":[],"mappings":";;AAQA,kDAyBC;AAhCD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAChD,yCAAqC;AAErC,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,sZAAsZ,EACtZ;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2HAA2H,CAAC;QACnK,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACjG,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sHAAsH,CAAC;QAC/J,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,qEAAqE,CAAC;KACnF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;YACxC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;QAC9D,OAAO,IAAA,kBAAO,EAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAY7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAuC9E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAyC9E"}
@@ -5,16 +5,14 @@ const zod_1 = require("zod");
5
5
  const formatter_js_1 = require("../api/formatter.js");
6
6
  const prefs_js_1 = require("../api/prefs.js");
7
7
  const history_js_1 = require("../api/history.js");
8
- function respond(text) {
9
- return { content: [{ type: "text", text }] };
10
- }
8
+ const utils_js_1 = require("./utils.js");
11
9
  const formatParam = zod_1.z.enum(["compact", "table", "detail", "raw"]).optional()
12
10
  .describe("Output format: compact (default), table, detail, or raw (full JSON)");
13
11
  function registerSearchTools(server, client) {
14
12
  server.tool("seq_search", "Search Seq events by filter, signal, and/or date range. Returns newest first. Next steps: seq_get_event for full details, seq_signals to discover signals, seq_query for aggregations, seq_history for known systems/properties.\n\nllmTip: NOTE: before building a filter, call seq_signals to discover available signals (e.g. error signals, environment signals) and seq_history for known systems/properties — avoids blind trial-and-error. EXAMPLE: text search: `@Message like '%keyword%'` | structured: `Environment = 'Production'` | combine: `System = 'X' and @Level = 'Error'`. Date params are ISO8601 UTC. WARNING: always set startedAt — without it Seq scans all time and is slow. WARNING: do NOT add `@Level = 'Error'` filter when using error signals — signals already filter on level; adding it excludes Fatal events. WARNING: `@Level = 'Error'` alone can be unreliable on some systems — prefer an error signal (use seq_signals to find the right one). NOTE: combine multiple signals with comma: `signal-AAA,signal-BBB`.", {
15
13
  filter: zod_1.z.string().optional().describe("Seq filter expression. For text search: @Message like '%keyword%'. For structured: Environment = 'Production', @Level = 'Error'. Combine with and/or."),
16
14
  signal: zod_1.z.string().optional().describe("Signal ID to filter by. Use seq_signals to discover available IDs."),
17
- count: zod_1.z.coerce.number().optional().describe("Max events to return (default 20, max 200)"),
15
+ count: zod_1.z.coerce.number().min(1).optional().describe("Max events to return (default 20, max 200)"),
18
16
  startedAt: zod_1.z.string().optional().describe("Only events after this timestamp. ISO8601 format, e.g. 2026-03-18T00:00:00Z"),
19
17
  endedAt: zod_1.z.string().optional().describe("Only events before this timestamp. ISO8601 format, e.g. 2026-03-19T00:00:00Z"),
20
18
  format: formatParam,
@@ -27,16 +25,18 @@ function registerSearchTools(server, client) {
27
25
  endedAt: params.endedAt,
28
26
  });
29
27
  (0, history_js_1.recordQuery)({ filter: params.filter, startedAt: params.startedAt, endedAt: params.endedAt }, events);
30
- const mode = params.format ?? (0, prefs_js_1.loadPrefs)().defaultFormat;
31
- return respond((0, formatter_js_1.formatEvents)(events, mode));
28
+ const prefs = (0, prefs_js_1.loadPrefs)();
29
+ const mode = params.format ?? prefs.defaultFormat;
30
+ return (0, utils_js_1.respond)((0, formatter_js_1.formatEvents)(events, mode, prefs));
32
31
  });
33
32
  server.tool("seq_get_event", "Get a single Seq event by ID with full rendered message and all properties (detail format). Use after seq_search, seq_recent, or seq_stream to inspect a specific event.\n\nllmTip: Event IDs look like 'event-34070bec858e08de73ab2ef100000000'. You get these from the Id field in search/recent/stream results.", {
34
33
  eventId: zod_1.z.string().describe("The full event ID, e.g. event-34070bec858e08de73ab2ef100000000"),
35
34
  format: formatParam,
36
35
  }, async (params) => {
37
36
  const event = await client.getEvent(params.eventId);
37
+ const prefs = (0, prefs_js_1.loadPrefs)();
38
38
  const mode = params.format ?? "detail";
39
- return respond((0, formatter_js_1.formatEvents)([event], mode));
39
+ return (0, utils_js_1.respond)((0, formatter_js_1.formatEvents)([event], mode, prefs));
40
40
  });
41
41
  }
42
42
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";;AAcA,kDAuCC;AApDD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAEhD,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,WAAW,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzE,QAAQ,CAAC,qEAAqE,CAAC,CAAC;AAEnF,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6/BAA6/B,EAC7/B;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uJAAuJ,CAAC;QAC/L,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QAC1F,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;QACxH,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;QACvH,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACrG,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,IAAA,oBAAS,GAAE,CAAC,aAAa,CAAC;QACpE,OAAO,OAAO,CAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oTAAoT,EACpT;QACE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;QAC9F,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;QACnD,OAAO,OAAO,CAAC,IAAA,2BAAY,EAAC,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":";;AAWA,kDAyCC;AAnDD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAChD,yCAAqC;AAErC,MAAM,WAAW,GAAG,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;KACzE,QAAQ,CAAC,qEAAqE,CAAC,CAAC;AAEnF,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,6/BAA6/B,EAC7/B;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,uJAAuJ,CAAC;QAC/L,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACjG,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;QACxH,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;QACvH,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACjC,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;YACxC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACrG,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;QAC9D,OAAO,IAAA,kBAAO,EAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,IAAI,CACT,eAAe,EACf,oTAAoT,EACpT;QACE,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gEAAgE,CAAC;QAC9F,MAAM,EAAE,WAAW;KACpB,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,QAAQ,CAAC;QACnD,OAAO,IAAA,kBAAO,EAAC,IAAA,2BAAY,EAAC,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/tools/signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAO7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAc9E"}
1
+ {"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../src/tools/signals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAc9E"}
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.registerSignalTools = registerSignalTools;
4
4
  const zod_1 = require("zod");
5
5
  const formatter_js_1 = require("../api/formatter.js");
6
- function respond(text) {
7
- return { content: [{ type: "text", text }] };
8
- }
6
+ const utils_js_1 = require("./utils.js");
9
7
  function registerSignalTools(server, client) {
10
8
  server.tool("seq_signals", "List all available Seq signals (cached 10 min). Signals are saved filters/groups like 'Production', 'Errors', 'Warnings'. Use the returned signal ID in seq_search, seq_recent, seq_stream, or seq_query.\n\nllmTip: NOTE: call this before filtering — signal IDs are required and look like 'signal-NNN'. NOTE: signals can be combined with filter expressions and with each other (comma-separated).", {
11
9
  format: zod_1.z.enum(["compact", "table", "detail", "raw"]).optional()
@@ -13,7 +11,7 @@ function registerSignalTools(server, client) {
13
11
  }, async (params) => {
14
12
  const signals = await client.listSignals();
15
13
  const mode = params.format ?? "table";
16
- return respond((0, formatter_js_1.formatSignals)(signals, mode));
14
+ return (0, utils_js_1.respond)((0, formatter_js_1.formatSignals)(signals, mode));
17
15
  });
18
16
  }
19
17
  //# sourceMappingURL=signals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/tools/signals.ts"],"names":[],"mappings":";;AASA,kDAcC;AAtBD,6BAAwB;AAExB,sDAAgE;AAEhE,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,0YAA0Y,EAC1Y;QACE,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;QAClD,OAAO,OAAO,CAAC,IAAA,4BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"signals.js","sourceRoot":"","sources":["../../src/tools/signals.ts"],"names":[],"mappings":";;AAMA,kDAcC;AAnBD,6BAAwB;AAExB,sDAAgE;AAChE,yCAAqC;AAErC,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,0YAA0Y,EAC1Y;QACE,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,4DAA4D,CAAC;KAC1E,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC;QAClD,OAAO,IAAA,kBAAO,EAAC,IAAA,4BAAa,EAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/tools/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAS7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA2B9E"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/tools/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CA4B9E"}
@@ -5,14 +5,12 @@ const zod_1 = require("zod");
5
5
  const formatter_js_1 = require("../api/formatter.js");
6
6
  const prefs_js_1 = require("../api/prefs.js");
7
7
  const history_js_1 = require("../api/history.js");
8
- function respond(text) {
9
- return { content: [{ type: "text", text }] };
10
- }
8
+ const utils_js_1 = require("./utils.js");
11
9
  function registerStreamTools(server, client) {
12
10
  server.tool("seq_stream", "Wait for new events from Seq using long-polling. Blocks up to `wait` ms for new events. Ideal for real-time monitoring.\n\nllmTip: Returns the most recent events matching your filter. Default wait 5000ms, max 10000ms. Use `filter` for text search (`@Message like '%keyword%'`) or structured filters (`@Level = 'Error'`). For forward polling with afterId, use seq_recent instead.", {
13
11
  filter: zod_1.z.string().optional().describe("Seq filter expression. For text search: @Message like '%keyword%'. For structured: @Level = 'Error'. Combine with and/or."),
14
12
  signal: zod_1.z.string().optional().describe("Signal ID to filter by. Use seq_signals to discover available IDs."),
15
- count: zod_1.z.coerce.number().optional().describe("Max events to return (default 10)"),
13
+ count: zod_1.z.coerce.number().min(1).optional().describe("Max events to return (default 10, max 100)"),
16
14
  wait: zod_1.z.coerce.number().optional().describe("Max milliseconds to wait for new events (default 5000, max 10000)"),
17
15
  format: zod_1.z.enum(["compact", "table", "detail", "raw"]).optional()
18
16
  .describe("Output format: compact (default), table, detail, or raw (full JSON)"),
@@ -21,15 +19,16 @@ function registerStreamTools(server, client) {
21
19
  const events = await client.scan({
22
20
  filter: params.filter,
23
21
  signal: params.signal,
24
- count: params.count ?? 10,
22
+ count: Math.min(params.count ?? 10, 100),
25
23
  afterId: undefined,
26
24
  wait,
27
25
  });
28
26
  if (events.length === 0)
29
- return respond("No new events within the wait period.");
27
+ return (0, utils_js_1.respond)("No new events within the wait period.");
30
28
  (0, history_js_1.recordQuery)({ filter: params.filter }, events);
31
- const mode = params.format ?? (0, prefs_js_1.loadPrefs)().defaultFormat;
32
- return respond((0, formatter_js_1.formatEvents)(events, mode));
29
+ const prefs = (0, prefs_js_1.loadPrefs)();
30
+ const mode = params.format ?? prefs.defaultFormat;
31
+ return (0, utils_js_1.respond)((0, formatter_js_1.formatEvents)(events, mode, prefs));
33
32
  });
34
33
  }
35
34
  //# sourceMappingURL=stream.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/tools/stream.ts"],"names":[],"mappings":";;AAWA,kDA2BC;AArCD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAEhD,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,4XAA4X,EAC5X;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2HAA2H,CAAC;QACnK,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;QACjF,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QAChH,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,qEAAqE,CAAC;KACnF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;YACzB,OAAO,EAAE,SAAS;YAClB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,uCAAuC,CAAC,CAAC;QACjF,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,IAAA,oBAAS,GAAE,CAAC,aAAa,CAAC;QACpE,OAAO,OAAO,CAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/tools/stream.ts"],"names":[],"mappings":";;AAQA,kDA4BC;AAnCD,6BAAwB;AAExB,sDAA+D;AAC/D,8CAA4C;AAC5C,kDAAgD;AAChD,yCAAqC;AAErC,SAAgB,mBAAmB,CAAC,MAAiB,EAAE,MAAiB;IACtE,MAAM,CAAC,IAAI,CACT,YAAY,EACZ,4XAA4X,EAC5X;QACE,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2HAA2H,CAAC;QACnK,MAAM,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oEAAoE,CAAC;QAC5G,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;QACjG,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mEAAmE,CAAC;QAChH,MAAM,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE;aAC7D,QAAQ,CAAC,qEAAqE,CAAC;KACnF,EACD,KAAK,EAAE,MAAM,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC;YACxC,OAAO,EAAE,SAAS;YAClB,IAAI;SACL,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAA,kBAAO,EAAC,uCAAuC,CAAC,CAAC;QACjF,IAAA,wBAAW,EAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,oBAAS,GAAE,CAAC;QAC1B,MAAM,IAAI,GAAe,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC;QAC9D,OAAO,IAAA,kBAAO,EAAC,IAAA,2BAAY,EAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function respond(text: string): {
2
+ content: {
3
+ type: "text";
4
+ text: string;
5
+ }[];
6
+ };
7
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM;;;;;EAEnC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.respond = respond;
4
+ function respond(text) {
5
+ return { content: [{ type: "text", text }] };
6
+ }
7
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tools/utils.ts"],"names":[],"mappings":";;AAAA,0BAEC;AAFD,SAAgB,OAAO,CAAC,IAAY;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACxD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailormade/seq-mcp",
3
- "version": "1.1.2",
3
+ "version": "1.1.4",
4
4
  "description": "MCP server for Seq structured logging — search, signals, live events.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {