@lightsage/mcp 0.4.18 → 0.4.20
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 +2 -2
- package/api/mcp.js +4 -1
- package/bin/mcp-server.js +478 -129
- package/bin/mcp-server.js.map +30 -21
- package/esm/funcs/agentsList.d.ts +1 -1
- package/esm/funcs/agentsList.js +1 -1
- package/esm/funcs/promptsList.d.ts +1 -1
- package/esm/funcs/promptsList.js +3 -1
- package/esm/funcs/promptsList.js.map +1 -1
- package/esm/funcs/promptsRun.d.ts +2 -1
- package/esm/funcs/promptsRun.d.ts.map +1 -1
- package/esm/funcs/promptsRun.js +2 -1
- package/esm/funcs/promptsRun.js.map +1 -1
- package/esm/funcs/promptsTargetsList.d.ts +16 -0
- package/esm/funcs/promptsTargetsList.d.ts.map +1 -0
- package/esm/funcs/promptsTargetsList.js +86 -0
- package/esm/funcs/promptsTargetsList.js.map +1 -0
- package/esm/funcs/promptsTargetsSet.d.ts +16 -0
- package/esm/funcs/promptsTargetsSet.d.ts.map +1 -0
- package/esm/funcs/promptsTargetsSet.js +83 -0
- package/esm/funcs/promptsTargetsSet.js.map +1 -0
- package/esm/landing-page.js +1 -1
- package/esm/lib/config.d.ts +2 -2
- package/esm/lib/config.js +2 -2
- package/esm/mcp-server/mcp-server.js +1 -1
- package/esm/mcp-server/server.d.ts.map +1 -1
- package/esm/mcp-server/server.js +5 -1
- package/esm/mcp-server/server.js.map +1 -1
- package/esm/mcp-server/tools/agentsList.js +1 -1
- package/esm/mcp-server/tools/agentsList.js.map +1 -1
- package/esm/mcp-server/tools/promptsList.js +1 -1
- package/esm/mcp-server/tools/promptsList.js.map +1 -1
- package/esm/mcp-server/tools/promptsRun.d.ts.map +1 -1
- package/esm/mcp-server/tools/promptsRun.js +2 -1
- package/esm/mcp-server/tools/promptsRun.js.map +1 -1
- package/esm/mcp-server/tools/promptsTargetsList.d.ts +7 -0
- package/esm/mcp-server/tools/promptsTargetsList.d.ts.map +1 -0
- package/esm/mcp-server/tools/promptsTargetsList.js +35 -0
- package/esm/mcp-server/tools/promptsTargetsList.js.map +1 -0
- package/esm/mcp-server/tools/promptsTargetsSet.d.ts +7 -0
- package/esm/mcp-server/tools/promptsTargetsSet.d.ts.map +1 -0
- package/esm/mcp-server/tools/promptsTargetsSet.js +35 -0
- package/esm/mcp-server/tools/promptsTargetsSet.js.map +1 -0
- package/esm/models/createv2promptrunrequest.js +1 -1
- package/esm/models/createv2promptrunrequest.js.map +1 -1
- package/esm/models/evaltemplateschedule.d.ts +4 -4
- package/esm/models/evaltemplateschedule.d.ts.map +1 -1
- package/esm/models/evaltemplateschedule.js +4 -3
- package/esm/models/evaltemplateschedule.js.map +1 -1
- package/esm/models/setv2prompttargetsrequest.d.ts +8 -0
- package/esm/models/setv2prompttargetsrequest.d.ts.map +1 -0
- package/esm/models/setv2prompttargetsrequest.js +11 -0
- package/esm/models/setv2prompttargetsrequest.js.map +1 -0
- package/esm/models/setv2prompttargetsresponse.d.ts +9 -0
- package/esm/models/setv2prompttargetsresponse.d.ts.map +1 -0
- package/esm/models/setv2prompttargetsresponse.js +12 -0
- package/esm/models/setv2prompttargetsresponse.js.map +1 -0
- package/esm/models/v2listpromptsresponse.d.ts +2 -0
- package/esm/models/v2listpromptsresponse.d.ts.map +1 -1
- package/esm/models/v2listpromptsresponse.js +3 -1
- package/esm/models/v2listpromptsresponse.js.map +1 -1
- package/esm/models/v2promptslistop.d.ts +2 -0
- package/esm/models/v2promptslistop.d.ts.map +1 -1
- package/esm/models/v2promptslistop.js +3 -0
- package/esm/models/v2promptslistop.js.map +1 -1
- package/esm/models/v2prompttarget.d.ts +44 -0
- package/esm/models/v2prompttarget.d.ts.map +1 -0
- package/esm/models/v2prompttarget.js +41 -0
- package/esm/models/v2prompttarget.js.map +1 -0
- package/esm/models/v2prompttargetinput.d.ts +47 -0
- package/esm/models/v2prompttargetinput.d.ts.map +1 -0
- package/esm/models/v2prompttargetinput.js +45 -0
- package/esm/models/v2prompttargetinput.js.map +1 -0
- package/esm/models/v2prompttargetslistop.d.ts +10 -0
- package/esm/models/v2prompttargetslistop.d.ts.map +1 -0
- package/esm/models/v2prompttargetslistop.js +15 -0
- package/esm/models/v2prompttargetslistop.js.map +1 -0
- package/esm/models/v2prompttargetsresponse.d.ts +8 -0
- package/esm/models/v2prompttargetsresponse.d.ts.map +1 -0
- package/esm/models/v2prompttargetsresponse.js +11 -0
- package/esm/models/v2prompttargetsresponse.js.map +1 -0
- package/esm/models/v2prompttargetssetop.d.ts +6 -0
- package/esm/models/v2prompttargetssetop.d.ts.map +1 -0
- package/esm/models/v2prompttargetssetop.js +12 -0
- package/esm/models/v2prompttargetssetop.js.map +1 -0
- package/esm/tool-names.d.ts.map +1 -1
- package/esm/tool-names.js +11 -3
- package/esm/tool-names.js.map +1 -1
- package/lib/feedback.js +47 -0
- package/lib/tracker.js +4 -2
- package/package.json +5 -4
- package/src/funcs/agentsList.ts +1 -1
- package/src/funcs/promptsList.ts +3 -1
- package/src/funcs/promptsRun.ts +2 -1
- package/src/funcs/promptsTargetsList.ts +148 -0
- package/src/funcs/promptsTargetsSet.ts +145 -0
- package/src/landing-page.ts +1 -1
- package/src/lib/config.ts +2 -2
- package/src/mcp-server/mcp-server.ts +1 -1
- package/src/mcp-server/server.ts +5 -1
- package/src/mcp-server/tools/agentsList.ts +1 -1
- package/src/mcp-server/tools/promptsList.ts +1 -1
- package/src/mcp-server/tools/promptsRun.ts +2 -1
- package/src/mcp-server/tools/promptsTargetsList.ts +43 -0
- package/src/mcp-server/tools/promptsTargetsSet.ts +43 -0
- package/src/models/createv2promptrunrequest.ts +1 -1
- package/src/models/evaltemplateschedule.ts +8 -7
- package/src/models/setv2prompttargetsrequest.ts +26 -0
- package/src/models/setv2prompttargetsresponse.ts +23 -0
- package/src/models/v2listpromptsresponse.ts +9 -1
- package/src/models/v2promptslistop.ts +5 -0
- package/src/models/v2prompttarget.ts +79 -0
- package/src/models/v2prompttargetinput.ts +72 -0
- package/src/models/v2prompttargetslistop.ts +33 -0
- package/src/models/v2prompttargetsresponse.ts +19 -0
- package/src/models/v2prompttargetssetop.ts +25 -0
- package/src/tool-names.ts +11 -3
- package/test/tracker.test.js +83 -1
package/esm/tool-names.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../src/tool-names.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,MAAM,CAAC,MAAM,SAAS,GAAgD;IACpE;QACE,MAAM,EAAE,YAAY;QACpB,aAAa,EAAE,6GAA6G;KAC7H;IACD;QACE,MAAM,EAAE,wBAAwB;QAChC,aAAa,EAAE,0HAA0H;KAC1I;IACD;QACE,MAAM,EAAE,6BAA6B;QACrC,aAAa,EAAE,6YAA6Y;KAC7Z;IACD;QACE,MAAM,EAAE,8BAA8B;QACtC,aAAa,EAAE,qOAAqO;KACrP;IACD;QACE,MAAM,EAAE,2BAA2B;QACnC,aAAa,EAAE,wQAAwQ;KACxR;IACD;QACE,MAAM,EAAE,6BAA6B;QACrC,aAAa,EAAE,yLAAyL;KACzM;IACD;QACE,MAAM,EAAE,uCAAuC;QAC/C,aAAa,EAAE,4YAA4Y;KAC5Z;IACD;QACE,MAAM,EAAE,cAAc;QACtB,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../src/tool-names.ts"],"names":[],"mappings":"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"}
|
package/lib/feedback.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// Feedback tool: lets an agent pass the user's feedback to the Lightsage team.
|
|
2
|
+
//
|
|
3
|
+
// The tool sends nothing itself. Its input is the feedback, and MCP Analytics
|
|
4
|
+
// records every call's input (lib/tracker.js), so the team reads it in MCP
|
|
5
|
+
// Analytics > Feedback. It is therefore only registered on requests that are
|
|
6
|
+
// recorded; elsewhere the feedback would be lost while the agent reports it
|
|
7
|
+
// as sent.
|
|
8
|
+
//
|
|
9
|
+
// Modelled on the Neon MCP server's send_feedback tool.
|
|
10
|
+
//
|
|
11
|
+
// Hand-written (not Speakeasy-generated) so regeneration does not remove it.
|
|
12
|
+
|
|
13
|
+
import { z } from "zod";
|
|
14
|
+
|
|
15
|
+
export const FEEDBACK_TOOL_NAME = "send_feedback";
|
|
16
|
+
|
|
17
|
+
// MCP Analytics cuts longer strings, so reject them instead.
|
|
18
|
+
export const MAX_FEEDBACK_LENGTH = 10_000;
|
|
19
|
+
|
|
20
|
+
const feedbackInputSchema = z.strictObject({
|
|
21
|
+
feedback: z.string().trim().min(1).max(MAX_FEEDBACK_LENGTH).describe(
|
|
22
|
+
"The feedback to send to Lightsage. Do not include passwords, API keys, or other secrets.",
|
|
23
|
+
),
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
/** Register the feedback tool on a server whose calls MCP Analytics records. */
|
|
27
|
+
export function registerFeedbackTool(mcpServer) {
|
|
28
|
+
mcpServer.registerTool(
|
|
29
|
+
FEEDBACK_TOOL_NAME,
|
|
30
|
+
{
|
|
31
|
+
title: "Send Feedback",
|
|
32
|
+
description:
|
|
33
|
+
"Send feedback about Lightsage or this MCP server to the Lightsage team. Only call this when the user asks to give feedback. Sends only the feedback text, with no Lightsage data or credentials.",
|
|
34
|
+
inputSchema: feedbackInputSchema,
|
|
35
|
+
annotations: {
|
|
36
|
+
title: "Send Feedback",
|
|
37
|
+
readOnlyHint: false,
|
|
38
|
+
destructiveHint: false,
|
|
39
|
+
idempotentHint: false,
|
|
40
|
+
openWorldHint: true,
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
async () => ({
|
|
44
|
+
content: [{ type: "text", text: "Feedback received. Thank you!" }],
|
|
45
|
+
}),
|
|
46
|
+
);
|
|
47
|
+
}
|
package/lib/tracker.js
CHANGED
|
@@ -11,6 +11,7 @@ import { createHash } from "node:crypto";
|
|
|
11
11
|
import { finished } from "node:stream/promises";
|
|
12
12
|
import { Lightsage } from "@lightsage/mcp-tracker";
|
|
13
13
|
import { waitUntil } from "@vercel/functions";
|
|
14
|
+
import { FEEDBACK_TOOL_NAME } from "./feedback.js";
|
|
14
15
|
|
|
15
16
|
const apiKey = process.env.LIGHTSAGE_MCP_TRACKER_API_KEY?.trim();
|
|
16
17
|
|
|
@@ -86,10 +87,11 @@ const CATALOG_TOOLS = new Set(["list_tools", "describe_tool_input"]);
|
|
|
86
87
|
* Tool results hold callers' own Lightsage data, so keep only failures, which
|
|
87
88
|
* are needed to debug errors. Catalog tools return tool names and schemas, not
|
|
88
89
|
* data, and their results are how MCP Analytics spots a search that found
|
|
89
|
-
* nothing.
|
|
90
|
+
* nothing. The feedback tool returns only a confirmation.
|
|
90
91
|
*/
|
|
91
92
|
export function shouldStoreResponse({ toolName, isError }) {
|
|
92
|
-
return isError || CATALOG_TOOLS.has(toolName)
|
|
93
|
+
return isError || CATALOG_TOOLS.has(toolName) ||
|
|
94
|
+
toolName === FEEDBACK_TOOL_NAME;
|
|
93
95
|
}
|
|
94
96
|
|
|
95
97
|
// One tracker per process; each request's server is instrumented separately.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lightsage/mcp",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.20",
|
|
4
4
|
"author": "Speakeasy",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@stricli/core": "^1.1.2",
|
|
29
29
|
"@vercel/functions": "3.9.11",
|
|
30
30
|
"express": "^5.1.0",
|
|
31
|
-
"zod": "^4.
|
|
31
|
+
"zod": "^4.6.6"
|
|
32
32
|
},
|
|
33
33
|
"overrides": {
|
|
34
34
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
@@ -38,12 +38,13 @@
|
|
|
38
38
|
"ip-address": ">=10.7.1 <11.0.0",
|
|
39
39
|
"nanoid@^5.0.0": ">=5.1.16 <6.0.0",
|
|
40
40
|
"brace-expansion@^2.0.0": ">=2.1.4 <3.0.0",
|
|
41
|
-
"body-parser": ">=2.
|
|
41
|
+
"body-parser": ">=2.4.0 <3.0.0",
|
|
42
42
|
"@hono/node-server": ">=1.19.15 <2.0.0",
|
|
43
43
|
"brace-expansion@^1.1.7": ">=1.1.18 <2.0.0",
|
|
44
44
|
"brace-expansion@^5.0.0": ">=5.0.9 <6.0.0",
|
|
45
45
|
"proxy-addr": ">=2.0.8 <3.0.0",
|
|
46
|
-
"qs": ">=6.16.
|
|
46
|
+
"qs": ">=6.16.1 <7.0.0",
|
|
47
|
+
"zod": "$zod",
|
|
47
48
|
"tmp": ">=0.2.6 <0.3.0",
|
|
48
49
|
"node-forge": "$node-forge"
|
|
49
50
|
},
|
package/src/funcs/agentsList.ts
CHANGED
|
@@ -24,7 +24,7 @@ import { Result } from "../types/fp.js";
|
|
|
24
24
|
* List Agents
|
|
25
25
|
*
|
|
26
26
|
* @remarks
|
|
27
|
-
* Returns the coding-agent harness-and-model combinations your plan can run, as single agent IDs. Pass them as `agent` to `POST /v2/prompts/runs` to see how coding agents answer your prompts, with mentions and citations; to `POST /v2/agent-preference/evals` to see whether agents recommend your company over one competitor; or to `POST /v2/evals` and `POST /v2/eval-runs` to measure how well agents complete tasks with your product.
|
|
27
|
+
* Returns the coding-agent harness-and-model combinations your plan can run, as single agent IDs. Pass them as `agent` to `POST /v2/prompts/runs` to see how coding agents answer your prompts, with mentions and citations, or to `PUT /v2/prompts/targets` to run them on a schedule; to `POST /v2/agent-preference/evals` to see whether agents recommend your company over one competitor; or to `POST /v2/evals` and `POST /v2/eval-runs` to measure how well agents complete tasks with your product.
|
|
28
28
|
*/
|
|
29
29
|
export function agentsList(
|
|
30
30
|
client$: LightsageMcpCore,
|
package/src/funcs/promptsList.ts
CHANGED
|
@@ -30,7 +30,7 @@ import { Result } from "../types/fp.js";
|
|
|
30
30
|
* List Prompts
|
|
31
31
|
*
|
|
32
32
|
* @remarks
|
|
33
|
-
* Returns active and inactive prompts by default. Set `include_archived` to include archived prompts.
|
|
33
|
+
* 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`.
|
|
34
34
|
*/
|
|
35
35
|
export function promptsList(
|
|
36
36
|
client$: LightsageMcpCore,
|
|
@@ -87,6 +87,8 @@ async function $do(
|
|
|
87
87
|
const path$ = pathToFunc("/v2/prompts")();
|
|
88
88
|
const query$ = encodeFormQuery({
|
|
89
89
|
"include_archived": payload$?.include_archived,
|
|
90
|
+
"limit": payload$?.limit,
|
|
91
|
+
"offset": payload$?.offset,
|
|
90
92
|
"status": payload$?.status,
|
|
91
93
|
"topic_id": payload$?.topic_id,
|
|
92
94
|
});
|
package/src/funcs/promptsRun.ts
CHANGED
|
@@ -33,7 +33,8 @@ import { Result } from "../types/fp.js";
|
|
|
33
33
|
* Queue saved prompts on answer engines and coding agents.
|
|
34
34
|
*
|
|
35
35
|
* Provide `prompt_ids` to run selected prompts, or omit them to run all active
|
|
36
|
-
* prompts. By default the run uses the organization's configured targets
|
|
36
|
+
* prompts. By default the run uses the organization's configured targets,
|
|
37
|
+
* listed by `GET /v2/prompts/targets`.
|
|
37
38
|
* Provide `agent` with IDs from `GET /v2/agents` to run the prompts on
|
|
38
39
|
* specific coding-agent harnesses and models instead, for example to compare
|
|
39
40
|
* how several coding tools answer the same developer question. Results
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
* @generated-id: 053c9d85cd77
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { LightsageMcpCore } from "../core.js";
|
|
7
|
+
import { encodeFormQuery } from "../lib/encodings.js";
|
|
8
|
+
import { compactMap } from "../lib/primitives.js";
|
|
9
|
+
import { safeParse } from "../lib/schemas.js";
|
|
10
|
+
import { RequestOptions } from "../lib/sdks.js";
|
|
11
|
+
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
|
|
12
|
+
import { pathToFunc } from "../lib/url.js";
|
|
13
|
+
import { APIError } from "../models/errors/apierror.js";
|
|
14
|
+
import {
|
|
15
|
+
ConnectionError,
|
|
16
|
+
InvalidRequestError,
|
|
17
|
+
RequestAbortedError,
|
|
18
|
+
RequestTimeoutError,
|
|
19
|
+
UnexpectedClientError,
|
|
20
|
+
} from "../models/errors/httpclienterrors.js";
|
|
21
|
+
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
|
|
22
|
+
import {
|
|
23
|
+
V2PromptTargetsListRequest,
|
|
24
|
+
V2PromptTargetsListRequest$zodSchema,
|
|
25
|
+
} from "../models/v2prompttargetslistop.js";
|
|
26
|
+
import { APICall, APIPromise } from "../types/async.js";
|
|
27
|
+
import { Result } from "../types/fp.js";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* List Targets
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* Returns the answer engines and coding agents that run the organization's prompts on schedule, with each target's topic and frequency. Provide `topic_id` to list one topic's targets.
|
|
34
|
+
*/
|
|
35
|
+
export function promptsTargetsList(
|
|
36
|
+
client$: LightsageMcpCore,
|
|
37
|
+
request?: V2PromptTargetsListRequest | undefined,
|
|
38
|
+
options?: RequestOptions,
|
|
39
|
+
): APIPromise<
|
|
40
|
+
Result<
|
|
41
|
+
Response,
|
|
42
|
+
| APIError
|
|
43
|
+
| SDKValidationError
|
|
44
|
+
| UnexpectedClientError
|
|
45
|
+
| InvalidRequestError
|
|
46
|
+
| RequestAbortedError
|
|
47
|
+
| RequestTimeoutError
|
|
48
|
+
| ConnectionError
|
|
49
|
+
>
|
|
50
|
+
> {
|
|
51
|
+
return new APIPromise($do(
|
|
52
|
+
client$,
|
|
53
|
+
request,
|
|
54
|
+
options,
|
|
55
|
+
));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function $do(
|
|
59
|
+
client$: LightsageMcpCore,
|
|
60
|
+
request?: V2PromptTargetsListRequest | undefined,
|
|
61
|
+
options?: RequestOptions,
|
|
62
|
+
): Promise<
|
|
63
|
+
[
|
|
64
|
+
Result<
|
|
65
|
+
Response,
|
|
66
|
+
| APIError
|
|
67
|
+
| SDKValidationError
|
|
68
|
+
| UnexpectedClientError
|
|
69
|
+
| InvalidRequestError
|
|
70
|
+
| RequestAbortedError
|
|
71
|
+
| RequestTimeoutError
|
|
72
|
+
| ConnectionError
|
|
73
|
+
>,
|
|
74
|
+
APICall,
|
|
75
|
+
]
|
|
76
|
+
> {
|
|
77
|
+
const parsed$ = safeParse(
|
|
78
|
+
request,
|
|
79
|
+
(value$) => V2PromptTargetsListRequest$zodSchema.optional().parse(value$),
|
|
80
|
+
"Input validation failed",
|
|
81
|
+
);
|
|
82
|
+
if (!parsed$.ok) {
|
|
83
|
+
return [parsed$, { status: "invalid" }];
|
|
84
|
+
}
|
|
85
|
+
const payload$ = parsed$.value;
|
|
86
|
+
const body$ = null;
|
|
87
|
+
const path$ = pathToFunc("/v2/prompts/targets")();
|
|
88
|
+
const query$ = encodeFormQuery({
|
|
89
|
+
"topic_id": payload$?.topic_id,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
const headers$ = new Headers(compactMap({
|
|
93
|
+
Accept: "application/json",
|
|
94
|
+
}));
|
|
95
|
+
const securityInput = await extractSecurity(client$._options.security);
|
|
96
|
+
const requestSecurity = resolveGlobalSecurity(securityInput);
|
|
97
|
+
|
|
98
|
+
const context = {
|
|
99
|
+
options: client$._options,
|
|
100
|
+
baseURL: options?.serverURL ?? client$._baseURL ?? "",
|
|
101
|
+
operationID: "v2_prompt_targets_list",
|
|
102
|
+
oAuth2Scopes: null,
|
|
103
|
+
resolvedSecurity: requestSecurity,
|
|
104
|
+
securitySource: client$._options.security,
|
|
105
|
+
retryConfig: options?.retries
|
|
106
|
+
|| client$._options.retryConfig
|
|
107
|
+
|| { strategy: "none" },
|
|
108
|
+
retryCodes: options?.retryCodes || [
|
|
109
|
+
"429",
|
|
110
|
+
"500",
|
|
111
|
+
"502",
|
|
112
|
+
"503",
|
|
113
|
+
"504",
|
|
114
|
+
],
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
const requestRes = client$._createRequest(context, {
|
|
118
|
+
security: requestSecurity,
|
|
119
|
+
method: "GET",
|
|
120
|
+
baseURL: options?.serverURL,
|
|
121
|
+
path: path$,
|
|
122
|
+
headers: headers$,
|
|
123
|
+
query: query$,
|
|
124
|
+
body: body$,
|
|
125
|
+
userAgent: client$._options.userAgent,
|
|
126
|
+
timeoutMs: options?.timeoutMs || client$._options.timeoutMs
|
|
127
|
+
|| -1,
|
|
128
|
+
}, options);
|
|
129
|
+
if (!requestRes.ok) {
|
|
130
|
+
return [requestRes, { status: "invalid" }];
|
|
131
|
+
}
|
|
132
|
+
const req$ = requestRes.value;
|
|
133
|
+
|
|
134
|
+
const doResult = await client$._do(req$, {
|
|
135
|
+
context,
|
|
136
|
+
errorCodes: [],
|
|
137
|
+
retryConfig: context.retryConfig,
|
|
138
|
+
retryCodes: context.retryCodes,
|
|
139
|
+
});
|
|
140
|
+
if (!doResult.ok) {
|
|
141
|
+
return [doResult, { status: "request-error", request: req$ }];
|
|
142
|
+
}
|
|
143
|
+
return [doResult, {
|
|
144
|
+
status: "complete",
|
|
145
|
+
"request": req$,
|
|
146
|
+
response: doResult.value,
|
|
147
|
+
}];
|
|
148
|
+
}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
* @generated-id: 1b39d535380b
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { LightsageMcpCore } from "../core.js";
|
|
7
|
+
import { encodeJSON } from "../lib/encodings.js";
|
|
8
|
+
import { compactMap } from "../lib/primitives.js";
|
|
9
|
+
import { safeParse } from "../lib/schemas.js";
|
|
10
|
+
import { RequestOptions } from "../lib/sdks.js";
|
|
11
|
+
import { extractSecurity, resolveGlobalSecurity } from "../lib/security.js";
|
|
12
|
+
import { pathToFunc } from "../lib/url.js";
|
|
13
|
+
import { APIError } from "../models/errors/apierror.js";
|
|
14
|
+
import {
|
|
15
|
+
ConnectionError,
|
|
16
|
+
InvalidRequestError,
|
|
17
|
+
RequestAbortedError,
|
|
18
|
+
RequestTimeoutError,
|
|
19
|
+
UnexpectedClientError,
|
|
20
|
+
} from "../models/errors/httpclienterrors.js";
|
|
21
|
+
import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
|
|
22
|
+
import {
|
|
23
|
+
SetV2PromptTargetsRequest,
|
|
24
|
+
SetV2PromptTargetsRequest$zodSchema,
|
|
25
|
+
} from "../models/setv2prompttargetsrequest.js";
|
|
26
|
+
import { APICall, APIPromise } from "../types/async.js";
|
|
27
|
+
import { Result } from "../types/fp.js";
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Set Targets
|
|
31
|
+
*
|
|
32
|
+
* @remarks
|
|
33
|
+
* Sets which answer engines and coding agents run a topic's prompts on schedule, the same way the prompt editor does. The list replaces the topic's targets: targets you leave out stop running. Every prompt in the topic is set to exactly these platforms; you can still narrow one prompt afterwards with `platform_ids`. Name coding agents with IDs from `GET /v2/agents`, and list a harness more than once to run it on several models. To pick agents for a single run without changing the schedule, pass `agent` to `POST /v2/prompts/runs` instead.
|
|
34
|
+
*/
|
|
35
|
+
export function promptsTargetsSet(
|
|
36
|
+
client$: LightsageMcpCore,
|
|
37
|
+
request: SetV2PromptTargetsRequest,
|
|
38
|
+
options?: RequestOptions,
|
|
39
|
+
): APIPromise<
|
|
40
|
+
Result<
|
|
41
|
+
Response,
|
|
42
|
+
| APIError
|
|
43
|
+
| SDKValidationError
|
|
44
|
+
| UnexpectedClientError
|
|
45
|
+
| InvalidRequestError
|
|
46
|
+
| RequestAbortedError
|
|
47
|
+
| RequestTimeoutError
|
|
48
|
+
| ConnectionError
|
|
49
|
+
>
|
|
50
|
+
> {
|
|
51
|
+
return new APIPromise($do(
|
|
52
|
+
client$,
|
|
53
|
+
request,
|
|
54
|
+
options,
|
|
55
|
+
));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function $do(
|
|
59
|
+
client$: LightsageMcpCore,
|
|
60
|
+
request: SetV2PromptTargetsRequest,
|
|
61
|
+
options?: RequestOptions,
|
|
62
|
+
): Promise<
|
|
63
|
+
[
|
|
64
|
+
Result<
|
|
65
|
+
Response,
|
|
66
|
+
| APIError
|
|
67
|
+
| SDKValidationError
|
|
68
|
+
| UnexpectedClientError
|
|
69
|
+
| InvalidRequestError
|
|
70
|
+
| RequestAbortedError
|
|
71
|
+
| RequestTimeoutError
|
|
72
|
+
| ConnectionError
|
|
73
|
+
>,
|
|
74
|
+
APICall,
|
|
75
|
+
]
|
|
76
|
+
> {
|
|
77
|
+
const parsed$ = safeParse(
|
|
78
|
+
request,
|
|
79
|
+
(value$) => SetV2PromptTargetsRequest$zodSchema.parse(value$),
|
|
80
|
+
"Input validation failed",
|
|
81
|
+
);
|
|
82
|
+
if (!parsed$.ok) {
|
|
83
|
+
return [parsed$, { status: "invalid" }];
|
|
84
|
+
}
|
|
85
|
+
const payload$ = parsed$.value;
|
|
86
|
+
const body$ = encodeJSON("body", payload$, { explode: true });
|
|
87
|
+
const path$ = pathToFunc("/v2/prompts/targets")();
|
|
88
|
+
|
|
89
|
+
const headers$ = new Headers(compactMap({
|
|
90
|
+
"Content-Type": "application/json",
|
|
91
|
+
Accept: "application/json",
|
|
92
|
+
}));
|
|
93
|
+
const securityInput = await extractSecurity(client$._options.security);
|
|
94
|
+
const requestSecurity = resolveGlobalSecurity(securityInput);
|
|
95
|
+
|
|
96
|
+
const context = {
|
|
97
|
+
options: client$._options,
|
|
98
|
+
baseURL: options?.serverURL ?? client$._baseURL ?? "",
|
|
99
|
+
operationID: "v2_prompt_targets_set",
|
|
100
|
+
oAuth2Scopes: null,
|
|
101
|
+
resolvedSecurity: requestSecurity,
|
|
102
|
+
securitySource: client$._options.security,
|
|
103
|
+
retryConfig: options?.retries
|
|
104
|
+
|| client$._options.retryConfig
|
|
105
|
+
|| { strategy: "none" },
|
|
106
|
+
retryCodes: options?.retryCodes || [
|
|
107
|
+
"429",
|
|
108
|
+
"500",
|
|
109
|
+
"502",
|
|
110
|
+
"503",
|
|
111
|
+
"504",
|
|
112
|
+
],
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const requestRes = client$._createRequest(context, {
|
|
116
|
+
security: requestSecurity,
|
|
117
|
+
method: "PUT",
|
|
118
|
+
baseURL: options?.serverURL,
|
|
119
|
+
path: path$,
|
|
120
|
+
headers: headers$,
|
|
121
|
+
body: body$,
|
|
122
|
+
userAgent: client$._options.userAgent,
|
|
123
|
+
timeoutMs: options?.timeoutMs || client$._options.timeoutMs
|
|
124
|
+
|| -1,
|
|
125
|
+
}, options);
|
|
126
|
+
if (!requestRes.ok) {
|
|
127
|
+
return [requestRes, { status: "invalid" }];
|
|
128
|
+
}
|
|
129
|
+
const req$ = requestRes.value;
|
|
130
|
+
|
|
131
|
+
const doResult = await client$._do(req$, {
|
|
132
|
+
context,
|
|
133
|
+
errorCodes: [],
|
|
134
|
+
retryConfig: context.retryConfig,
|
|
135
|
+
retryCodes: context.retryCodes,
|
|
136
|
+
});
|
|
137
|
+
if (!doResult.ok) {
|
|
138
|
+
return [doResult, { status: "request-error", request: req$ }];
|
|
139
|
+
}
|
|
140
|
+
return [doResult, {
|
|
141
|
+
status: "complete",
|
|
142
|
+
"request": req$,
|
|
143
|
+
response: doResult.value,
|
|
144
|
+
}];
|
|
145
|
+
}
|
package/src/landing-page.ts
CHANGED
|
@@ -931,7 +931,7 @@ http_headers = { "lightsage-api-key-auth" = "YOUR_LIGHTSAGE_API_KEY_AUTH" }`;
|
|
|
931
931
|
<h1>Instructions</h1>
|
|
932
932
|
<p>One-click installation for Claude Desktop users</p>
|
|
933
933
|
<div class="instruction-item">
|
|
934
|
-
<a href="https://github.com/lightsagehq/mcp/releases/download/v0.4.
|
|
934
|
+
<a href="https://github.com/lightsagehq/mcp/releases/download/v0.4.20/mcp-server.mcpb" download="mcp-server.mcpb" class="action-button header-action" style="display: inline-flex; margin-bottom: 16px;">
|
|
935
935
|
📥 Download MCP Bundle
|
|
936
936
|
</a>
|
|
937
937
|
</div>
|
package/src/lib/config.ts
CHANGED
|
@@ -66,7 +66,7 @@ export function serverURLFromOptions(options: SDKOptions): URL | null {
|
|
|
66
66
|
export const SDK_METADATA = {
|
|
67
67
|
language: "typescript",
|
|
68
68
|
openapiDocVersion: "1.0.0",
|
|
69
|
-
sdkVersion: "0.4.
|
|
69
|
+
sdkVersion: "0.4.20",
|
|
70
70
|
genVersion: "2.948.4",
|
|
71
|
-
userAgent: "speakeasy-sdk/mcp-typescript 0.4.
|
|
71
|
+
userAgent: "speakeasy-sdk/mcp-typescript 0.4.20 2.948.4 1.0.0 @lightsage/mcp",
|
|
72
72
|
} as const;
|
package/src/mcp-server/server.ts
CHANGED
|
@@ -68,6 +68,8 @@ import { tool$promptsRunCancel } from "./tools/promptsRunCancel.js";
|
|
|
68
68
|
import { tool$promptsRunsList } from "./tools/promptsRunsList.js";
|
|
69
69
|
import { tool$promptsRunsRetrieve } from "./tools/promptsRunsRetrieve.js";
|
|
70
70
|
import { tool$promptsRunStatus } from "./tools/promptsRunStatus.js";
|
|
71
|
+
import { tool$promptsTargetsList } from "./tools/promptsTargetsList.js";
|
|
72
|
+
import { tool$promptsTargetsSet } from "./tools/promptsTargetsSet.js";
|
|
71
73
|
import { tool$promptsTopicsCreate } from "./tools/promptsTopicsCreate.js";
|
|
72
74
|
import { tool$promptsTopicsDelete } from "./tools/promptsTopicsDelete.js";
|
|
73
75
|
import { tool$promptsTopicsList } from "./tools/promptsTopicsList.js";
|
|
@@ -112,7 +114,7 @@ export function createMCPServer(deps: {
|
|
|
112
114
|
sizes: ["any"],
|
|
113
115
|
}],
|
|
114
116
|
name: "LightsageMcp",
|
|
115
|
-
version: "0.4.
|
|
117
|
+
version: "0.4.20",
|
|
116
118
|
});
|
|
117
119
|
|
|
118
120
|
const getClient = deps.getSDK || (() =>
|
|
@@ -170,6 +172,8 @@ export function createMCPServer(deps: {
|
|
|
170
172
|
tool(tool$promptsTopicsCreate);
|
|
171
173
|
tool(tool$promptsTopicsUpdate);
|
|
172
174
|
tool(tool$promptsTopicsDelete);
|
|
175
|
+
tool(tool$promptsTargetsList);
|
|
176
|
+
tool(tool$promptsTargetsSet);
|
|
173
177
|
tool(tool$promptsRunsList);
|
|
174
178
|
tool(tool$promptsRunsRetrieve);
|
|
175
179
|
tool(tool$promptsRetrieve);
|
|
@@ -10,7 +10,7 @@ export const tool$agentsList: ToolDefinition = {
|
|
|
10
10
|
name: "agents-list",
|
|
11
11
|
description: `List Agents
|
|
12
12
|
|
|
13
|
-
Returns the coding-agent harness-and-model combinations your plan can run, as single agent IDs. Pass them as \`agent\` to \`POST /v2/prompts/runs\` to see how coding agents answer your prompts, with mentions and citations; to \`POST /v2/agent-preference/evals\` to see whether agents recommend your company over one competitor; or to \`POST /v2/evals\` and \`POST /v2/eval-runs\` to measure how well agents complete tasks with your product.`,
|
|
13
|
+
Returns the coding-agent harness-and-model combinations your plan can run, as single agent IDs. Pass them as \`agent\` to \`POST /v2/prompts/runs\` to see how coding agents answer your prompts, with mentions and citations, or to \`PUT /v2/prompts/targets\` to run them on a schedule; to \`POST /v2/agent-preference/evals\` to see whether agents recommend your company over one competitor; or to \`POST /v2/evals\` and \`POST /v2/eval-runs\` to measure how well agents complete tasks with your product.`,
|
|
14
14
|
annotations: {
|
|
15
15
|
"title": "",
|
|
16
16
|
"destructiveHint": false,
|
|
@@ -15,7 +15,7 @@ export const tool$promptsList: ToolDefinition<typeof args> = {
|
|
|
15
15
|
name: "prompts-list",
|
|
16
16
|
description: `List Prompts
|
|
17
17
|
|
|
18
|
-
Returns active and inactive prompts by default. Set \`include_archived\` to include archived prompts
|
|
18
|
+
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\`.`,
|
|
19
19
|
annotations: {
|
|
20
20
|
"title": "",
|
|
21
21
|
"destructiveHint": false,
|
|
@@ -18,7 +18,8 @@ export const tool$promptsRun: ToolDefinition<typeof args> = {
|
|
|
18
18
|
Queue saved prompts on answer engines and coding agents.
|
|
19
19
|
|
|
20
20
|
Provide \`prompt_ids\` to run selected prompts, or omit them to run all active
|
|
21
|
-
prompts. By default the run uses the organization's configured targets
|
|
21
|
+
prompts. By default the run uses the organization's configured targets,
|
|
22
|
+
listed by \`GET /v2/prompts/targets\`.
|
|
22
23
|
Provide \`agent\` with IDs from \`GET /v2/agents\` to run the prompts on
|
|
23
24
|
specific coding-agent harnesses and models instead, for example to compare
|
|
24
25
|
how several coding tools answer the same developer question. Results
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
* @generated-id: ea463f944d6c
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { promptsTargetsList } from "../../funcs/promptsTargetsList.js";
|
|
7
|
+
import { V2PromptTargetsListRequest$zodSchema } from "../../models/v2prompttargetslistop.js";
|
|
8
|
+
import { formatResult, ToolDefinition } from "../tools.js";
|
|
9
|
+
|
|
10
|
+
const args = {
|
|
11
|
+
request: V2PromptTargetsListRequest$zodSchema.optional(),
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const tool$promptsTargetsList: ToolDefinition<typeof args> = {
|
|
15
|
+
name: "prompts-targets-list",
|
|
16
|
+
description: `List Targets
|
|
17
|
+
|
|
18
|
+
Returns the answer engines and coding agents that run the organization's prompts on schedule, with each target's topic and frequency. Provide \`topic_id\` to list one topic's targets.`,
|
|
19
|
+
annotations: {
|
|
20
|
+
"title": "",
|
|
21
|
+
"destructiveHint": false,
|
|
22
|
+
"idempotentHint": false,
|
|
23
|
+
"openWorldHint": false,
|
|
24
|
+
"readOnlyHint": true,
|
|
25
|
+
},
|
|
26
|
+
args,
|
|
27
|
+
tool: async (client, args, ctx) => {
|
|
28
|
+
const [result] = await promptsTargetsList(
|
|
29
|
+
client,
|
|
30
|
+
args.request,
|
|
31
|
+
{ fetchOptions: { signal: ctx.signal } },
|
|
32
|
+
).$inspect();
|
|
33
|
+
|
|
34
|
+
if (!result.ok) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: "text", text: result.error.message }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return formatResult(result.value);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
3
|
+
* @generated-id: f1ffd3b02650
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { promptsTargetsSet } from "../../funcs/promptsTargetsSet.js";
|
|
7
|
+
import { SetV2PromptTargetsRequest$zodSchema } from "../../models/setv2prompttargetsrequest.js";
|
|
8
|
+
import { formatResult, ToolDefinition } from "../tools.js";
|
|
9
|
+
|
|
10
|
+
const args = {
|
|
11
|
+
request: SetV2PromptTargetsRequest$zodSchema,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
export const tool$promptsTargetsSet: ToolDefinition<typeof args> = {
|
|
15
|
+
name: "prompts-targets-set",
|
|
16
|
+
description: `Set Targets
|
|
17
|
+
|
|
18
|
+
Sets which answer engines and coding agents run a topic's prompts on schedule, the same way the prompt editor does. The list replaces the topic's targets: targets you leave out stop running. Every prompt in the topic is set to exactly these platforms; you can still narrow one prompt afterwards with \`platform_ids\`. Name coding agents with IDs from \`GET /v2/agents\`, and list a harness more than once to run it on several models. To pick agents for a single run without changing the schedule, pass \`agent\` to \`POST /v2/prompts/runs\` instead.`,
|
|
19
|
+
annotations: {
|
|
20
|
+
"title": "",
|
|
21
|
+
"destructiveHint": false,
|
|
22
|
+
"idempotentHint": false,
|
|
23
|
+
"openWorldHint": false,
|
|
24
|
+
"readOnlyHint": false,
|
|
25
|
+
},
|
|
26
|
+
args,
|
|
27
|
+
tool: async (client, args, ctx) => {
|
|
28
|
+
const [result] = await promptsTargetsSet(
|
|
29
|
+
client,
|
|
30
|
+
args.request,
|
|
31
|
+
{ fetchOptions: { signal: ctx.signal } },
|
|
32
|
+
).$inspect();
|
|
33
|
+
|
|
34
|
+
if (!result.ok) {
|
|
35
|
+
return {
|
|
36
|
+
content: [{ type: "text", text: result.error.message }],
|
|
37
|
+
isError: true,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return formatResult(result.value);
|
|
42
|
+
},
|
|
43
|
+
};
|
|
@@ -15,7 +15,7 @@ export const CreateV2PromptRunRequest$zodSchema: z.ZodType<
|
|
|
15
15
|
CreateV2PromptRunRequest
|
|
16
16
|
> = z.object({
|
|
17
17
|
agent: z.array(z.string()).nullable().optional().describe(
|
|
18
|
-
"Runnable agents from `GET /v2/agents`, each a coding-agent harness and model such as `claude-code:claude-opus-5-5`. Every selected prompt runs once on each agent, so you can compare how several coding tools and models answer the same question. When set, this run uses only these agents instead of the organization's configured targets, including answer engines. Omit it to use the configured targets
|
|
18
|
+
"Runnable agents from `GET /v2/agents`, each a coding-agent harness and model such as `claude-code:claude-opus-5-5`. Every selected prompt runs once on each agent, so you can compare how several coding tools and models answer the same question. When set, this run uses only these agents instead of the organization's configured targets, including answer engines, and saves nothing. Omit it to use the configured targets; change those with `PUT /v2/prompts/targets`. CLI clients expose repeatable `--agent`.",
|
|
19
19
|
),
|
|
20
20
|
force: z.boolean().default(false).describe(
|
|
21
21
|
"Run even when a prompt already ran today on the same platform and model.",
|