@lightsage/mcp 0.4.19 → 0.4.21

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 (38) hide show
  1. package/README.md +2 -2
  2. package/bin/mcp-server.js +46 -20
  3. package/bin/mcp-server.js.map +15 -15
  4. package/esm/funcs/promptsList.d.ts +1 -1
  5. package/esm/funcs/promptsList.js +3 -1
  6. package/esm/funcs/promptsList.js.map +1 -1
  7. package/esm/landing-page.js +1 -1
  8. package/esm/lib/config.d.ts +2 -2
  9. package/esm/lib/config.js +2 -2
  10. package/esm/mcp-server/mcp-server.js +1 -1
  11. package/esm/mcp-server/server.js +1 -1
  12. package/esm/mcp-server/tools/promptsList.js +1 -1
  13. package/esm/mcp-server/tools/promptsList.js.map +1 -1
  14. package/esm/models/v2evalruntraceevent.d.ts +1 -0
  15. package/esm/models/v2evalruntraceevent.d.ts.map +1 -1
  16. package/esm/models/v2evalruntraceevent.js +2 -1
  17. package/esm/models/v2evalruntraceevent.js.map +1 -1
  18. package/esm/models/v2listpromptsresponse.d.ts +2 -0
  19. package/esm/models/v2listpromptsresponse.d.ts.map +1 -1
  20. package/esm/models/v2listpromptsresponse.js +3 -1
  21. package/esm/models/v2listpromptsresponse.js.map +1 -1
  22. package/esm/models/v2promptslistop.d.ts +2 -0
  23. package/esm/models/v2promptslistop.d.ts.map +1 -1
  24. package/esm/models/v2promptslistop.js +3 -0
  25. package/esm/models/v2promptslistop.js.map +1 -1
  26. package/esm/tool-names.js +1 -1
  27. package/esm/tool-names.js.map +1 -1
  28. package/package.json +1 -1
  29. package/src/funcs/promptsList.ts +3 -1
  30. package/src/landing-page.ts +1 -1
  31. package/src/lib/config.ts +2 -2
  32. package/src/mcp-server/mcp-server.ts +1 -1
  33. package/src/mcp-server/server.ts +1 -1
  34. package/src/mcp-server/tools/promptsList.ts +1 -1
  35. package/src/models/v2evalruntraceevent.ts +5 -1
  36. package/src/models/v2listpromptsresponse.ts +9 -1
  37. package/src/models/v2promptslistop.ts +5 -0
  38. package/src/tool-names.ts +1 -1
package/README.md CHANGED
@@ -33,9 +33,9 @@ Lightsage Public API: Public API for Lightsage CLI and external integrations.
33
33
  <details>
34
34
  <summary>Claude Desktop</summary>
35
35
 
36
- Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.19/mcp-server.mcpb) file:
36
+ Install the MCP server as a Desktop Extension using the pre-built [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.21/mcp-server.mcpb) file:
37
37
 
38
- Simply drag and drop the [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.19/mcp-server.mcpb) file onto Claude Desktop to install the extension.
38
+ Simply drag and drop the [`mcp-server.mcpb`](https://github.com/lightsagehq/mcp/releases/download/v0.4.21/mcp-server.mcpb) file onto Claude Desktop to install the extension.
39
39
 
40
40
  The MCP bundle package includes the MCP server and all necessary configuration. Once installed, the server will be available without additional setup.
41
41
 
package/bin/mcp-server.js CHANGED
@@ -26303,6 +26303,15 @@ var require_utils2 = __commonJS(function(exports, module) {
26303
26303
  }
26304
26304
  return max;
26305
26305
  };
26306
+ var countElements = function countElements(arr) {
26307
+ var count = 0;
26308
+ for (var i = 0;i < arr.length; ++i) {
26309
+ if (has.call(arr, i)) {
26310
+ count += 1;
26311
+ }
26312
+ }
26313
+ return count;
26314
+ };
26306
26315
  var limitedPair = function limitedPair(first, second, options) {
26307
26316
  var pair = [first, second];
26308
26317
  if (options && typeof options.arrayLimit === "number" && pair.length > options.arrayLimit) {
@@ -26320,7 +26329,7 @@ var require_utils2 = __commonJS(function(exports, module) {
26320
26329
  if (typeof source !== "object" && typeof source !== "function") {
26321
26330
  if (isArray(target)) {
26322
26331
  var nextIndex = target.length;
26323
- if (options && typeof options.arrayLimit === "number" && nextIndex >= options.arrayLimit) {
26332
+ if (options && typeof options.arrayLimit === "number" && countElements(target) >= options.arrayLimit) {
26324
26333
  if (options.throwOnLimitExceeded) {
26325
26334
  throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array.");
26326
26335
  }
@@ -26389,7 +26398,7 @@ var require_utils2 = __commonJS(function(exports, module) {
26389
26398
  target[i] = item;
26390
26399
  }
26391
26400
  });
26392
- if (options && typeof options.arrayLimit === "number" && target.length > options.arrayLimit) {
26401
+ if (options && typeof options.arrayLimit === "number" && countElements(target) > options.arrayLimit) {
26393
26402
  if (options.throwOnLimitExceeded) {
26394
26403
  throw new RangeError("Array limit exceeded. Only " + options.arrayLimit + " element" + (options.arrayLimit === 1 ? "" : "s") + " allowed in an array.");
26395
26404
  }
@@ -26883,6 +26892,7 @@ var require_parse = __commonJS(function(exports, module) {
26883
26892
  var has = Object.prototype.hasOwnProperty;
26884
26893
  var isArray = Array.isArray;
26885
26894
  var getPrototypeOf = Object.getPrototypeOf;
26895
+ var fromCharCode = String.fromCharCode;
26886
26896
  var isPlainContainer = function isPlainContainer(value) {
26887
26897
  if (!value || typeof value !== "object") {
26888
26898
  return false;
@@ -26951,7 +26961,12 @@ var require_parse = __commonJS(function(exports, module) {
26951
26961
  };
26952
26962
  var interpretNumericEntities = function(str) {
26953
26963
  return str.replace(/&#(\d+);/g, function($0, numberStr) {
26954
- return String.fromCharCode(parseInt(numberStr, 10));
26964
+ var c = parseInt(numberStr, 10);
26965
+ if (c > 65535 && c <= 1114111) {
26966
+ c -= 65536;
26967
+ return fromCharCode(55296 | c >> 10, 56320 | c & 1023);
26968
+ }
26969
+ return fromCharCode(c);
26955
26970
  });
26956
26971
  };
26957
26972
  var parseArrayValue = function(val, options, currentArrayLength) {
@@ -27044,6 +27059,9 @@ var require_parse = __commonJS(function(exports, module) {
27044
27059
  }
27045
27060
  return obj;
27046
27061
  };
27062
+ var stripWrappingBrackets = function stripWrappingBrackets(key) {
27063
+ return key.charAt(0) === "[" && key.charAt(key.length - 1) === "]" ? key.slice(1, -1) : key;
27064
+ };
27047
27065
  var parseObject = function(chain, val, options, valuesParsed) {
27048
27066
  var currentArrayLength = 0;
27049
27067
  if (chain.length > 0 && chain[chain.length - 1] === "[]") {
@@ -27062,12 +27080,12 @@ var require_parse = __commonJS(function(exports, module) {
27062
27080
  }
27063
27081
  } else {
27064
27082
  obj = options.plainObjects ? { __proto__: null } : {};
27065
- var cleanRoot = root.charAt(0) === "[" && root.charAt(root.length - 1) === "]" ? root.slice(1, -1) : root;
27083
+ var cleanRoot = stripWrappingBrackets(root);
27066
27084
  var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/gi, ".") : cleanRoot;
27067
27085
  var index = parseInt(decodedRoot, 10);
27068
27086
  var isValidArrayIndex = !isNaN(index) && root !== decodedRoot && String(index) === decodedRoot && index >= 0 && options.parseArrays;
27069
27087
  if (!options.parseArrays && decodedRoot === "") {
27070
- obj = { 0: leaf };
27088
+ obj[0] = leaf;
27071
27089
  } else if (isValidArrayIndex && index < options.arrayLimit) {
27072
27090
  obj = [];
27073
27091
  obj[index] = leaf;
@@ -27114,7 +27132,7 @@ var require_parse = __commonJS(function(exports, module) {
27114
27132
  var splitKeyIntoSegments = function splitKeyIntoSegments(originalKey, options) {
27115
27133
  var key = options.allowDots ? topLevelDotsToBrackets(originalKey) : originalKey;
27116
27134
  if (options.depth <= 0) {
27117
- if (!options.plainObjects && has.call(Object.prototype, key)) {
27135
+ if (!options.plainObjects && has.call(Object.prototype, stripWrappingBrackets(key))) {
27118
27136
  if (!options.allowPrototypes) {
27119
27137
  return;
27120
27138
  }
@@ -27401,10 +27419,11 @@ var require_encodeurl = __commonJS(function(exports, module) {
27401
27419
  */
27402
27420
  module.exports = encodeUrl;
27403
27421
  var ENCODE_CHARS_REGEXP = /(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g;
27404
- var UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g;
27405
- var UNMATCHED_SURROGATE_PAIR_REPLACE = "$1�$2";
27422
+ var SURROGATE_REGEXP = /([\uD800-\uDBFF][\uDC00-\uDFFF])|[\uD800-\uDFFF]/g;
27406
27423
  function encodeUrl(url) {
27407
- return String(url).replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE).replace(ENCODE_CHARS_REGEXP, encodeURI);
27424
+ return String(url).replace(SURROGATE_REGEXP, function(_, pair) {
27425
+ return pair || "�";
27426
+ }).replace(ENCODE_CHARS_REGEXP, encodeURI);
27408
27427
  }
27409
27428
  });
27410
27429
 
@@ -53728,9 +53747,9 @@ var init_config = __esm(() => {
53728
53747
  SDK_METADATA = {
53729
53748
  language: "typescript",
53730
53749
  openapiDocVersion: "1.0.0",
53731
- sdkVersion: "0.4.19",
53750
+ sdkVersion: "0.4.21",
53732
53751
  genVersion: "2.948.4",
53733
- userAgent: "speakeasy-sdk/mcp-typescript 0.4.19 2.948.4 1.0.0 @lightsage/mcp"
53752
+ userAgent: "speakeasy-sdk/mcp-typescript 0.4.21 2.948.4 1.0.0 @lightsage/mcp"
53734
53753
  };
53735
53754
  });
53736
53755
 
@@ -59873,7 +59892,8 @@ var init_v2evalruntraceevent = __esm(() => {
59873
59892
  repeat_index: int().default(0),
59874
59893
  run_id: string2(),
59875
59894
  timestamp: string2().nullable().optional(),
59876
- type: string2().describe("Event type. Events are not tool invocations: one invocation usually emits a `tool_call` event and a `tool_result` event, and can emit extra `tool_call` updates as its arguments stream. Count invocations with the result's `tool_calls`, not with trace events.")
59895
+ tool_call_id: string2().nullable().optional().describe("ID of the tool invocation this event belongs to. Set on `tool_call`, `tool_call_rejected` and `tool_result` events; a call and its result share the same ID, so replies can be matched to calls when the agent makes several at once. IDs are unique within one `child_job_id`. Null on other events, and on tool events when the agent's log did not include call IDs."),
59896
+ type: string2().describe("Event type. Events are not tool invocations: one invocation usually emits a `tool_call` event and a `tool_result` event, and can emit extra `tool_call` updates as its arguments stream. Use `tool_call_id` to pair a call with its result and to count invocations.")
59877
59897
  });
59878
59898
  });
59879
59899
 
@@ -61862,8 +61882,10 @@ var init_v2listpromptsresponse = __esm(() => {
61862
61882
  init_zod();
61863
61883
  init_v2promptresponse();
61864
61884
  V2ListPromptsResponse$zodSchema = object({
61865
- count: int(),
61866
- data: array(V2PromptResponse$zodSchema)
61885
+ count: int().describe("Total prompts that match the filters, across every page."),
61886
+ data: array(V2PromptResponse$zodSchema),
61887
+ limit: int().nullable().optional().describe("Page size, or null when every prompt was returned."),
61888
+ offset: int().default(0)
61867
61889
  });
61868
61890
  });
61869
61891
 
@@ -61880,6 +61902,8 @@ var init_v2promptslistop = __esm(() => {
61880
61902
  ]);
61881
61903
  V2PromptsListRequest$zodSchema = object({
61882
61904
  include_archived: boolean2().default(false),
61905
+ limit: int().describe("Prompts per page. Omit to return every prompt.").optional(),
61906
+ offset: int().default(0).describe("Prompts to skip. Used with `limit`."),
61883
61907
  status: V2PromptsListStatus$zodSchema.optional(),
61884
61908
  topic_id: string2().describe("Optional prompt topic ID.").optional()
61885
61909
  });
@@ -61903,6 +61927,8 @@ async function $do44(client$, request, options) {
61903
61927
  const path$ = pathToFunc("/v2/prompts")();
61904
61928
  const query$ = encodeFormQuery({
61905
61929
  include_archived: payload$?.include_archived,
61930
+ limit: payload$?.limit,
61931
+ offset: payload$?.offset,
61906
61932
  status: payload$?.status,
61907
61933
  topic_id: payload$?.topic_id
61908
61934
  });
@@ -61980,7 +62006,7 @@ var init_promptsList2 = __esm(() => {
61980
62006
  name: "prompts-list",
61981
62007
  description: `List Prompts
61982
62008
 
61983
- Returns active and inactive prompts by default. Set \`include_archived\` to include archived prompts.`,
62009
+ Returns active and inactive prompts by default, newest first. Set \`include_archived\` to include archived prompts. Without \`limit\`, every matching prompt is returned in one response. Set \`limit\` to page through them: \`count\` is the total across every page, so request the next page with \`offset\` until \`offset + limit\` reaches \`count\`.`,
61984
62010
  annotations: {
61985
62011
  title: "",
61986
62012
  destructiveHint: false,
@@ -67035,7 +67061,7 @@ function createMCPServer(deps) {
67035
67061
  sizes: ["any"]
67036
67062
  }],
67037
67063
  name: "LightsageMcp",
67038
- version: "0.4.19"
67064
+ version: "0.4.21"
67039
67065
  });
67040
67066
  const getClient = deps.getSDK || (() => new LightsageMcpCore({
67041
67067
  security: deps.security,
@@ -67260,7 +67286,7 @@ Returns per-topic and per-prompt visibility metrics including recommendation sco
67260
67286
  },
67261
67287
  {
67262
67288
  name: "prompts-list",
67263
- description: "List Prompts\n\nReturns active and inactive prompts by default. Set `include_archived` to include archived prompts."
67289
+ description: "List Prompts\n\nReturns active and inactive prompts by default, newest first. Set `include_archived` to include archived prompts. Without `limit`, every matching prompt is returned in one response. Set `limit` to page through them: `count` is the total across every page, so request the next page with `offset` until `offset + limit` reaches `count`."
67264
67290
  },
67265
67291
  {
67266
67292
  name: "prompts-create",
@@ -68530,7 +68556,7 @@ http_headers = { "lightsage-api-key-auth" = "YOUR_LIGHTSAGE_API_KEY_AUTH" }`;
68530
68556
  <h1>Instructions</h1>
68531
68557
  <p>One-click installation for Claude Desktop users</p>
68532
68558
  <div class="instruction-item">
68533
- <a href="https://github.com/lightsagehq/mcp/releases/download/v0.4.19/mcp-server.mcpb" download="mcp-server.mcpb" class="action-button header-action" style="display: inline-flex; margin-bottom: 16px;">
68559
+ <a href="https://github.com/lightsagehq/mcp/releases/download/v0.4.21/mcp-server.mcpb" download="mcp-server.mcpb" class="action-button header-action" style="display: inline-flex; margin-bottom: 16px;">
68534
68560
  \uD83D\uDCE5 Download MCP Bundle
68535
68561
  </a>
68536
68562
  </div>
@@ -71430,7 +71456,7 @@ var routes = buildRouteMap({
71430
71456
  var app = buildApplication(routes, {
71431
71457
  name: "mcp",
71432
71458
  versionInfo: {
71433
- currentVersion: "0.4.19"
71459
+ currentVersion: "0.4.21"
71434
71460
  }
71435
71461
  });
71436
71462
  run(app, process3.argv.slice(2), buildContext(process3));
@@ -71438,5 +71464,5 @@ export {
71438
71464
  app
71439
71465
  };
71440
71466
 
71441
- //# debugId=DC66C97A4F0231D164756E2164756E21
71467
+ //# debugId=B2545D7852B33B6664756E2164756E21
71442
71468
  //# sourceMappingURL=mcp-server.js.map