@testrelic/mcp 3.0.0 → 3.1.2
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 +84 -11
- package/dist/.tsbuildinfo +1 -1
- package/dist/cache/vector.d.ts.map +1 -1
- package/dist/cache/vector.js +7 -1
- package/dist/cache/vector.js.map +1 -1
- package/dist/cli.js +26 -4
- package/dist/cli.js.map +1 -1
- package/dist/clients/cloud.d.ts +288 -3
- package/dist/clients/cloud.d.ts.map +1 -1
- package/dist/clients/cloud.js +223 -32
- package/dist/clients/cloud.js.map +1 -1
- package/dist/clients/http.d.ts +2 -0
- package/dist/clients/http.d.ts.map +1 -1
- package/dist/clients/http.js +6 -0
- package/dist/clients/http.js.map +1 -1
- package/dist/config.d.ts +4 -4
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +108 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/index.d.ts +9 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +118 -1
- package/dist/resources/index.js.map +1 -1
- package/dist/tools/ai/index.d.ts +3 -0
- package/dist/tools/ai/index.d.ts.map +1 -0
- package/dist/tools/ai/index.js +265 -0
- package/dist/tools/ai/index.js.map +1 -0
- package/dist/tools/apps/index.d.ts +3 -0
- package/dist/tools/apps/index.d.ts.map +1 -0
- package/dist/tools/apps/index.js +138 -0
- package/dist/tools/apps/index.js.map +1 -0
- package/dist/tools/artifacts/index.d.ts +3 -0
- package/dist/tools/artifacts/index.d.ts.map +1 -0
- package/dist/tools/artifacts/index.js +124 -0
- package/dist/tools/artifacts/index.js.map +1 -0
- package/dist/tools/core/index.js +1 -1
- package/dist/tools/core/index.js.map +1 -1
- package/dist/tools/coverage/index.js +2 -2
- package/dist/tools/coverage/index.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +8 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/marketplace/index.d.ts +3 -0
- package/dist/tools/marketplace/index.d.ts.map +1 -0
- package/dist/tools/marketplace/index.js +194 -0
- package/dist/tools/marketplace/index.js.map +1 -0
- package/dist/tools/triage/index.d.ts.map +1 -1
- package/dist/tools/triage/index.js +3 -3
- package/dist/tools/triage/index.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
package/dist/prompts/index.js
CHANGED
|
@@ -82,5 +82,113 @@ export function registerPrompts(server) {
|
|
|
82
82
|
},
|
|
83
83
|
],
|
|
84
84
|
}));
|
|
85
|
+
server.registerPrompt("connect_marketplace_app", {
|
|
86
|
+
title: "Connect a marketplace app end-to-end",
|
|
87
|
+
description: "Fetch a marketplace app, surface its config fields, validate credentials, and connect (OAuth or direct).",
|
|
88
|
+
argsSchema: {
|
|
89
|
+
slug: z.string().describe("Marketplace app slug, e.g. \"jira\""),
|
|
90
|
+
auth_method: z.string().optional().describe("Override auth method hint (e.g. \"api_key\", \"oauth\")."),
|
|
91
|
+
},
|
|
92
|
+
}, ({ slug, auth_method }) => ({
|
|
93
|
+
messages: [
|
|
94
|
+
{
|
|
95
|
+
role: "user",
|
|
96
|
+
content: {
|
|
97
|
+
type: "text",
|
|
98
|
+
text: [
|
|
99
|
+
`Connect marketplace app "${slug}".`,
|
|
100
|
+
`1. Call \`tr_marketplace_get_app\` with slug="${slug}". Inspect \`requiresOAuth\`, \`authMethod\`${auth_method ? ` (caller hinted "${auth_method}")` : ""}, and \`configFields\`.`,
|
|
101
|
+
`2. Display the \`configFields\` to the user (label + helperText for each) so they know what credentials to provide. Mask any \`secret: true\` fields in the echo back.`,
|
|
102
|
+
`3. Call \`tr_marketplace_validate\` with slug="${slug}" and the gathered credentials. If \`ok === false\`, surface the error and stop.`,
|
|
103
|
+
`4. If \`requiresOAuth\` is true, call \`tr_marketplace_start_oauth\` with slug="${slug}" and direct the user to the returned \`redirectUrl\`.`,
|
|
104
|
+
`5. Otherwise, call \`tr_marketplace_connect\` with slug="${slug}" and the validated credentials.`,
|
|
105
|
+
`6. Summarise: connection status, connection id, and any next steps the user must complete.`,
|
|
106
|
+
].join("\n"),
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
],
|
|
110
|
+
}));
|
|
111
|
+
server.registerPrompt("ask_ai_with_context", {
|
|
112
|
+
title: "Ask the platform AI with repo and run context",
|
|
113
|
+
description: "Gather contextual signals (repo description, run diagnosis) and feed them into a single tr_ask_ai call.",
|
|
114
|
+
argsSchema: {
|
|
115
|
+
question: z.string().describe("The user's question to ask the platform AI."),
|
|
116
|
+
repo_id: z.string().optional().describe("Optional TestRelic repo_id to attach as context."),
|
|
117
|
+
run_id: z.string().optional().describe("Optional run_id to diagnose and attach as context."),
|
|
118
|
+
},
|
|
119
|
+
}, ({ question, repo_id, run_id }) => {
|
|
120
|
+
const steps = [`Answer the following question with full platform context: "${question}".`];
|
|
121
|
+
let n = 1;
|
|
122
|
+
if (repo_id) {
|
|
123
|
+
steps.push(`${n}. Call \`tr_describe_repo\` with repo_id="${repo_id}" to summarise the repo's current state (runs, coverage, integrations).`);
|
|
124
|
+
n += 1;
|
|
125
|
+
}
|
|
126
|
+
if (run_id) {
|
|
127
|
+
steps.push(`${n}. Call \`tr_diagnose_run\` with run_id="${run_id}" to gather failure signals.`);
|
|
128
|
+
n += 1;
|
|
129
|
+
}
|
|
130
|
+
steps.push(`${n}. Call \`tr_ask_ai\` with a consolidated message that combines the user's question with the context gathered above${repo_id || run_id ? " (summarise, do not paste raw payloads)" : ""}.`);
|
|
131
|
+
n += 1;
|
|
132
|
+
steps.push(`${n}. Surface the AI response and any returned artifacts to the user.`);
|
|
133
|
+
return {
|
|
134
|
+
messages: [
|
|
135
|
+
{
|
|
136
|
+
role: "user",
|
|
137
|
+
content: { type: "text", text: steps.join("\n") },
|
|
138
|
+
},
|
|
139
|
+
],
|
|
140
|
+
};
|
|
141
|
+
});
|
|
142
|
+
server.registerPrompt("generate_executive_report", {
|
|
143
|
+
title: "Generate an executive PDF report for a repo",
|
|
144
|
+
description: "Pull recent runs and coverage, generate a report artifact, then export it as a downloadable PDF.",
|
|
145
|
+
argsSchema: {
|
|
146
|
+
repo_id: z.string().describe("TestRelic repo_id the report is about."),
|
|
147
|
+
days: z.string().optional().describe("Lookback window in days for recent runs (default 7)."),
|
|
148
|
+
},
|
|
149
|
+
}, ({ repo_id, days }) => {
|
|
150
|
+
const window = days ?? "7";
|
|
151
|
+
return {
|
|
152
|
+
messages: [
|
|
153
|
+
{
|
|
154
|
+
role: "user",
|
|
155
|
+
content: {
|
|
156
|
+
type: "text",
|
|
157
|
+
text: [
|
|
158
|
+
`Produce an executive report for repo ${repo_id} covering the last ${window} days.`,
|
|
159
|
+
`1. Call \`tr_recent_runs\` with project_id="${repo_id}" days=${window} to gather run history.`,
|
|
160
|
+
`2. Call \`tr_coverage_report\` with project_id="${repo_id}" to capture the current coverage posture.`,
|
|
161
|
+
`3. Call \`tr_generate_report\` with the consolidated inputs from steps 1 and 2 to produce a report artifact. Capture the returned \`artifact_id\`.`,
|
|
162
|
+
`4. Call \`tr_artifacts_export\` with the artifact_id and format="pdf" to obtain a downloadable URL.`,
|
|
163
|
+
`5. Summarise headline metrics (pass rate, user/test coverage, top gaps) and surface the PDF URL to the user.`,
|
|
164
|
+
].join("\n"),
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
],
|
|
168
|
+
};
|
|
169
|
+
});
|
|
170
|
+
server.registerPrompt("session_to_jira", {
|
|
171
|
+
title: "Turn a failing run into a Jira ticket via a session workspace",
|
|
172
|
+
description: "Diagnose the run, render a shareable session workspace artifact, and file a Jira ticket that links to it.",
|
|
173
|
+
argsSchema: {
|
|
174
|
+
run_id: z.string().describe("The failing run_id to triage and ticket."),
|
|
175
|
+
},
|
|
176
|
+
}, ({ run_id }) => ({
|
|
177
|
+
messages: [
|
|
178
|
+
{
|
|
179
|
+
role: "user",
|
|
180
|
+
content: {
|
|
181
|
+
type: "text",
|
|
182
|
+
text: [
|
|
183
|
+
`File a Jira ticket for failing run ${run_id} with a linked session workspace.`,
|
|
184
|
+
`1. Call \`tr_diagnose_run\` with run_id="${run_id}" to collect failure signals and user impact.`,
|
|
185
|
+
`2. Call \`tr_render_session_workspace\` with run_id="${run_id}" to produce a shareable artifact. Capture its URL or artifact_id.`,
|
|
186
|
+
`3. Call \`tr_create_jira\` with a clear summary, the diagnose findings in the description, and the session workspace link appended at the end of the description.`,
|
|
187
|
+
`4. Surface the Jira issue key and URL alongside the session workspace link to the user.`,
|
|
188
|
+
].join("\n"),
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
}));
|
|
85
193
|
}
|
|
86
194
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,cAAc,CACnB,sBAAsB,EACtB;QACE,KAAK,EAAE,mDAAmD;QAC1D,WAAW,EACT,gHAAgH;QAClH,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1E;KACF,EACD,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,iCAAiC,UAAU,GAAG;wBAC9C,iDAAiD,UAAU,YAAY;wBACvE,wEAAwE,SAAS,CAAC,CAAC,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;wBAC3H,mEAAmE;wBACnE,2DAA2D;wBAC3D,mFAAmF;qBACpF,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,KAAK,EAAE,wDAAwD;QAC/D,WAAW,EAAE,6FAA6F;QAC1G,UAAU,EAAE;YACV,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB;KACF,EACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,cAAc,MAAM,GAAG;wBACvB,4CAA4C,MAAM,IAAI;wBACtD,2CAA2C,MAAM,IAAI;wBACrD,sCAAsC,MAAM,IAAI;wBAChD,wCAAwC,MAAM,sBAAsB;wBACpE,gHAAgH;qBACjH,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,gBAAgB,EAChB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,2FAA2F;QACxG,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;SACzB;KACF,EACD,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,+BAA+B,UAAU,GAAG;wBAC5C,6DAA6D;wBAC7D,mDAAmD;wBACnD,6FAA6F;wBAC7F,EAAE;wBACF,OAAO;wBACP,SAAS;wBACT,YAAY;wBACZ,KAAK;qBACN,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,MAAM,CAAC,cAAc,CACnB,sBAAsB,EACtB;QACE,KAAK,EAAE,mDAAmD;QAC1D,WAAW,EACT,gHAAgH;QAClH,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACvD,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;SAC1E;KACF,EACD,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,iCAAiC,UAAU,GAAG;wBAC9C,iDAAiD,UAAU,YAAY;wBACvE,wEAAwE,SAAS,CAAC,CAAC,CAAC,mBAAmB,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;wBAC3H,mEAAmE;wBACnE,2DAA2D;wBAC3D,mFAAmF;qBACpF,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,KAAK,EAAE,wDAAwD;QAC/D,WAAW,EAAE,6FAA6F;QAC1G,UAAU,EAAE;YACV,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;SACnB;KACF,EACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,cAAc,MAAM,GAAG;wBACvB,4CAA4C,MAAM,IAAI;wBACtD,2CAA2C,MAAM,IAAI;wBACrD,sCAAsC,MAAM,IAAI;wBAChD,wCAAwC,MAAM,sBAAsB;wBACpE,gHAAgH;qBACjH,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,gBAAgB,EAChB;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,2FAA2F;QACxG,UAAU,EAAE;YACV,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;YACtB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;SACzB;KACF,EACD,CAAC,EAAE,UAAU,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;QACjC,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,+BAA+B,UAAU,GAAG;wBAC5C,6DAA6D;wBAC7D,mDAAmD;wBACnD,6FAA6F;wBAC7F,EAAE;wBACF,OAAO;wBACP,SAAS;wBACT,YAAY;wBACZ,KAAK;qBACN,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,yBAAyB,EACzB;QACE,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EACT,0GAA0G;QAC5G,UAAU,EAAE;YACV,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qCAAqC,CAAC;YAChE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0DAA0D,CAAC;SACxG;KACF,EACD,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1B,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,4BAA4B,IAAI,IAAI;wBACpC,iDAAiD,IAAI,+CAA+C,WAAW,CAAC,CAAC,CAAC,oBAAoB,WAAW,IAAI,CAAC,CAAC,CAAC,EAAE,yBAAyB;wBACnL,wKAAwK;wBACxK,kDAAkD,IAAI,kFAAkF;wBACxI,mFAAmF,IAAI,wDAAwD;wBAC/I,4DAA4D,IAAI,kCAAkC;wBAClG,4FAA4F;qBAC7F,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,qBAAqB,EACrB;QACE,KAAK,EAAE,+CAA+C;QACtD,WAAW,EACT,yGAAyG;QAC3G,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;YAC3F,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SAC7F;KACF,EACD,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;QAChC,MAAM,KAAK,GAAa,CAAC,8DAA8D,QAAQ,IAAI,CAAC,CAAC;QACrG,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,6CAA6C,OAAO,yEAAyE,CAAC,CAAC;YAC9I,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,2CAA2C,MAAM,8BAA8B,CAAC,CAAC;YAChG,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;QACD,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,qHAAqH,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,yCAAyC,CAAC,CAAC,CAAC,EAAE,GAAG,CAC/L,CAAC;QACF,CAAC,IAAI,CAAC,CAAC;QACP,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACpF,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,2BAA2B,EAC3B;QACE,KAAK,EAAE,6CAA6C;QACpD,WAAW,EACT,kGAAkG;QACpG,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACtE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sDAAsD,CAAC;SAC7F;KACF,EACD,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC;QAC3B,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE;wBACP,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,wCAAwC,OAAO,sBAAsB,MAAM,QAAQ;4BACnF,+CAA+C,OAAO,UAAU,MAAM,yBAAyB;4BAC/F,mDAAmD,OAAO,4CAA4C;4BACtG,oJAAoJ;4BACpJ,qGAAqG;4BACrG,8GAA8G;yBAC/G,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;iBACF;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,cAAc,CACnB,iBAAiB,EACjB;QACE,KAAK,EAAE,+DAA+D;QACtE,WAAW,EACT,2GAA2G;QAC7G,UAAU,EAAE;YACV,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;SACxE;KACF,EACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QACf,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAe;gBACrB,OAAO,EAAE;oBACP,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,sCAAsC,MAAM,mCAAmC;wBAC/E,4CAA4C,MAAM,+CAA+C;wBACjG,wDAAwD,MAAM,oEAAoE;wBAClI,mKAAmK;wBACnK,yFAAyF;qBAC1F,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -7,7 +7,15 @@ import type { ToolContext } from "../registry/index.js";
|
|
|
7
7
|
* testrelic://repos/{repo_id}/journeys
|
|
8
8
|
* testrelic://repos/{repo_id}/coverage-report
|
|
9
9
|
* testrelic://repos/{repo_id}/gaps
|
|
10
|
-
* testrelic://cache/{key}
|
|
10
|
+
* testrelic://cache/{key} (resolves cached blobs)
|
|
11
|
+
* testrelic://ai/conversations/{id} (AI conversation transcript)
|
|
12
|
+
* testrelic://ai/conversations/{id}/artifacts (artifacts in a conversation)
|
|
13
|
+
* testrelic://artifacts/{id} (single artifact payload, JSON)
|
|
14
|
+
* testrelic://marketplace/apps (marketplace catalog)
|
|
15
|
+
* testrelic://marketplace/apps/{slug} (marketplace app detail)
|
|
16
|
+
* testrelic://apps (connected apps — not "toolkits")
|
|
17
|
+
* testrelic://apps/{slug}/actions (actions exposed by a connected app)
|
|
18
|
+
* testrelic://sessions/{provider}/{sessionId} (session stub — partially implemented)
|
|
11
19
|
*/
|
|
12
20
|
export declare function registerResources(server: McpServer, ctx: ToolContext): void;
|
|
13
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;;;;;;;;;;;GAgBG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,IAAI,CA4O3E"}
|
package/dist/resources/index.js
CHANGED
|
@@ -5,7 +5,15 @@
|
|
|
5
5
|
* testrelic://repos/{repo_id}/journeys
|
|
6
6
|
* testrelic://repos/{repo_id}/coverage-report
|
|
7
7
|
* testrelic://repos/{repo_id}/gaps
|
|
8
|
-
* testrelic://cache/{key}
|
|
8
|
+
* testrelic://cache/{key} (resolves cached blobs)
|
|
9
|
+
* testrelic://ai/conversations/{id} (AI conversation transcript)
|
|
10
|
+
* testrelic://ai/conversations/{id}/artifacts (artifacts in a conversation)
|
|
11
|
+
* testrelic://artifacts/{id} (single artifact payload, JSON)
|
|
12
|
+
* testrelic://marketplace/apps (marketplace catalog)
|
|
13
|
+
* testrelic://marketplace/apps/{slug} (marketplace app detail)
|
|
14
|
+
* testrelic://apps (connected apps — not "toolkits")
|
|
15
|
+
* testrelic://apps/{slug}/actions (actions exposed by a connected app)
|
|
16
|
+
* testrelic://sessions/{provider}/{sessionId} (session stub — partially implemented)
|
|
9
17
|
*/
|
|
10
18
|
export function registerResources(server, ctx) {
|
|
11
19
|
server.registerResource("journeys", "testrelic://repos/{repo_id}/journeys", {
|
|
@@ -72,5 +80,114 @@ export function registerResources(server, ctx) {
|
|
|
72
80
|
}
|
|
73
81
|
return { contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(value.value, null, 2) }] };
|
|
74
82
|
});
|
|
83
|
+
// ── AI conversation surface ───────────────────────────────────────────────
|
|
84
|
+
server.registerResource("ai-conversation", "testrelic://ai/conversations/{id}", {
|
|
85
|
+
title: "Ask-AI conversation transcript",
|
|
86
|
+
description: "Full message transcript (including artifacts) for a single Ask-AI conversation.",
|
|
87
|
+
mimeType: "application/json",
|
|
88
|
+
}, async (uri) => {
|
|
89
|
+
const match = uri.pathname.match(/^\/ai\/conversations\/([^/]+)$/);
|
|
90
|
+
if (!match)
|
|
91
|
+
throw new Error(`Invalid ai-conversation URI: ${uri.href}`);
|
|
92
|
+
const id = decodeURIComponent(match[1] ?? "");
|
|
93
|
+
const conversation = await ctx.clients.cloud.getConversation(id);
|
|
94
|
+
return {
|
|
95
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(conversation, null, 2) }],
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
server.registerResource("ai-conversation-artifacts", "testrelic://ai/conversations/{id}/artifacts", {
|
|
99
|
+
title: "Artifacts produced inside an Ask-AI conversation",
|
|
100
|
+
description: "Listing of artifacts (reports, plans, diagrams) generated within a specific conversation.",
|
|
101
|
+
mimeType: "application/json",
|
|
102
|
+
}, async (uri) => {
|
|
103
|
+
const match = uri.pathname.match(/^\/ai\/conversations\/([^/]+)\/artifacts$/);
|
|
104
|
+
if (!match)
|
|
105
|
+
throw new Error(`Invalid ai-conversation-artifacts URI: ${uri.href}`);
|
|
106
|
+
const id = decodeURIComponent(match[1] ?? "");
|
|
107
|
+
const artifacts = await ctx.clients.cloud.listArtifacts({ conversationId: id });
|
|
108
|
+
return {
|
|
109
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(artifacts, null, 2) }],
|
|
110
|
+
};
|
|
111
|
+
});
|
|
112
|
+
server.registerResource("artifact", "testrelic://artifacts/{id}", {
|
|
113
|
+
title: "Single AI-generated artifact",
|
|
114
|
+
description: "Structured JSON payload for one artifact. Format-specific exports (PDF/PNG) go through tr_artifacts_export.",
|
|
115
|
+
mimeType: "application/json",
|
|
116
|
+
}, async (uri) => {
|
|
117
|
+
const match = uri.pathname.match(/^\/artifacts\/([^/]+)$/);
|
|
118
|
+
if (!match)
|
|
119
|
+
throw new Error(`Invalid artifact URI: ${uri.href}`);
|
|
120
|
+
const id = decodeURIComponent(match[1] ?? "");
|
|
121
|
+
const artifact = await ctx.clients.cloud.getArtifact(id);
|
|
122
|
+
return {
|
|
123
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(artifact, null, 2) }],
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
// ── Marketplace surface ───────────────────────────────────────────────────
|
|
127
|
+
server.registerResource("marketplace-apps", "testrelic://marketplace/apps", {
|
|
128
|
+
title: "Marketplace catalog",
|
|
129
|
+
description: "Catalog of all marketplace apps available for connection.",
|
|
130
|
+
mimeType: "application/json",
|
|
131
|
+
}, async (uri) => {
|
|
132
|
+
const apps = await ctx.clients.cloud.listMarketplaceApps();
|
|
133
|
+
return {
|
|
134
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(apps, null, 2) }],
|
|
135
|
+
};
|
|
136
|
+
});
|
|
137
|
+
server.registerResource("marketplace-app", "testrelic://marketplace/apps/{slug}", {
|
|
138
|
+
title: "Marketplace app detail",
|
|
139
|
+
description: "Full detail (auth method, config fields, capabilities) for a single marketplace app.",
|
|
140
|
+
mimeType: "application/json",
|
|
141
|
+
}, async (uri) => {
|
|
142
|
+
const match = uri.pathname.match(/^\/marketplace\/apps\/([^/]+)$/);
|
|
143
|
+
if (!match)
|
|
144
|
+
throw new Error(`Invalid marketplace-app URI: ${uri.href}`);
|
|
145
|
+
const slug = decodeURIComponent(match[1] ?? "");
|
|
146
|
+
const app = await ctx.clients.cloud.getMarketplaceApp(slug);
|
|
147
|
+
return {
|
|
148
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(app, null, 2) }],
|
|
149
|
+
};
|
|
150
|
+
});
|
|
151
|
+
// ── Connected Apps surface ────────────────────────────────────────────────
|
|
152
|
+
server.registerResource("apps", "testrelic://apps", {
|
|
153
|
+
title: "Connected apps",
|
|
154
|
+
description: "Catalog of connected apps available to the user.",
|
|
155
|
+
mimeType: "application/json",
|
|
156
|
+
}, async (uri) => {
|
|
157
|
+
const apps = await ctx.clients.cloud.listApps();
|
|
158
|
+
return {
|
|
159
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(apps, null, 2) }],
|
|
160
|
+
};
|
|
161
|
+
});
|
|
162
|
+
server.registerResource("app-actions", "testrelic://apps/{slug}/actions", {
|
|
163
|
+
title: "Actions exposed by a connected app",
|
|
164
|
+
description: "List of actions (with input schemas) callable on a specific connected app.",
|
|
165
|
+
mimeType: "application/json",
|
|
166
|
+
}, async (uri) => {
|
|
167
|
+
const match = uri.pathname.match(/^\/apps\/([^/]+)\/actions$/);
|
|
168
|
+
if (!match)
|
|
169
|
+
throw new Error(`Invalid app-actions URI: ${uri.href}`);
|
|
170
|
+
const slug = decodeURIComponent(match[1] ?? "");
|
|
171
|
+
const actions = await ctx.clients.cloud.listAppActions(slug);
|
|
172
|
+
return {
|
|
173
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(actions, null, 2) }],
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
// ── Sessions surface (stub) ───────────────────────────────────────────────
|
|
177
|
+
server.registerResource("session", "testrelic://sessions/{provider}/{sessionId}", {
|
|
178
|
+
title: "Provider session (stub)",
|
|
179
|
+
description: "Placeholder for the sessions surface (Amplitude, OpenObserve, etc.). Currently returns a not_yet_implemented stub.",
|
|
180
|
+
mimeType: "application/json",
|
|
181
|
+
}, async (uri) => {
|
|
182
|
+
const match = uri.pathname.match(/^\/sessions\/([^/]+)\/([^/]+)$/);
|
|
183
|
+
if (!match)
|
|
184
|
+
throw new Error(`Invalid session URI: ${uri.href}`);
|
|
185
|
+
const provider = decodeURIComponent(match[1] ?? "");
|
|
186
|
+
const sessionId = decodeURIComponent(match[2] ?? "");
|
|
187
|
+
const payload = { provider, sessionId, status: "not_yet_implemented" };
|
|
188
|
+
return {
|
|
189
|
+
contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(payload, null, 2) }],
|
|
190
|
+
};
|
|
191
|
+
});
|
|
75
192
|
}
|
|
76
193
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/ai/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA0E9D,eAAO,MAAM,OAAO,EAAE,cAAc,EA4OnC,CAAC"}
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Ask AI capability — exposes cloud-platform-app's Ask AI surface to external
|
|
4
|
+
* MCP clients. The platform owns the LLM key, the agent loop, and the prompt
|
|
5
|
+
* templates. This file is a thin schema layer over `/api/v1/mcp/ai/*`.
|
|
6
|
+
*
|
|
7
|
+
* Two strategies for the long tail of platform tools:
|
|
8
|
+
* - Granular: one `tr_*` tool per high-value artifact generator (8 below).
|
|
9
|
+
* - Universal: `tr_ai_execute` for any platform tool by name (40+ on the
|
|
10
|
+
* platform). Keeps the MCP tool-schema prelude small while still allowing
|
|
11
|
+
* the agent to call any tool when needed.
|
|
12
|
+
*/
|
|
13
|
+
const ArtifactSummary = z.object({
|
|
14
|
+
id: z.string().optional(),
|
|
15
|
+
type: z.string(),
|
|
16
|
+
payload: z.record(z.unknown()),
|
|
17
|
+
});
|
|
18
|
+
const ConversationSummary = z.object({
|
|
19
|
+
id: z.string(),
|
|
20
|
+
title: z.string(),
|
|
21
|
+
createdAt: z.string(),
|
|
22
|
+
updatedAt: z.string(),
|
|
23
|
+
messageCount: z.number(),
|
|
24
|
+
});
|
|
25
|
+
const Message = z.object({
|
|
26
|
+
id: z.string().optional(),
|
|
27
|
+
role: z.string(),
|
|
28
|
+
content: z.string(),
|
|
29
|
+
artifacts: z.array(z.record(z.unknown())).optional(),
|
|
30
|
+
});
|
|
31
|
+
function artifactGenerator(name, platformTool, artifactType, title, description) {
|
|
32
|
+
return {
|
|
33
|
+
name,
|
|
34
|
+
capability: "ai",
|
|
35
|
+
title,
|
|
36
|
+
description,
|
|
37
|
+
inputSchema: {
|
|
38
|
+
input: z.record(z.unknown()).describe("Tool-specific input. Refer to the platform's input_schema via `tr_ai_list_tools` for the exact shape."),
|
|
39
|
+
},
|
|
40
|
+
outputSchema: {
|
|
41
|
+
artifact: ArtifactSummary,
|
|
42
|
+
result: z.record(z.unknown()),
|
|
43
|
+
},
|
|
44
|
+
handler: async (input, ctx) => {
|
|
45
|
+
const args = (input.input ?? {});
|
|
46
|
+
const r = await ctx.clients.cloud.executeAiTool(platformTool, args);
|
|
47
|
+
const artifact = r.artifact ?? { type: artifactType, payload: r.result };
|
|
48
|
+
const summary = artifact.id ? ` (id: ${artifact.id})` : "";
|
|
49
|
+
const text = [
|
|
50
|
+
`## ${title}${summary}`,
|
|
51
|
+
"",
|
|
52
|
+
`Artifact type: \`${artifact.type}\``,
|
|
53
|
+
artifact.id ? `Resource: \`testrelic://artifacts/${artifact.id}\`` : "",
|
|
54
|
+
]
|
|
55
|
+
.filter(Boolean)
|
|
56
|
+
.join("\n");
|
|
57
|
+
return { text, structured: { artifact, result: r.result } };
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export const aiTools = [
|
|
62
|
+
{
|
|
63
|
+
name: "tr_ai_list_tools",
|
|
64
|
+
capability: "ai",
|
|
65
|
+
title: "List Ask-AI tools",
|
|
66
|
+
description: "Catalog of every AI tool the platform exposes. Use this before `tr_ai_execute` to discover available tools and their input schemas. Output is paginated-friendly (one entry per tool).",
|
|
67
|
+
inputSchema: {},
|
|
68
|
+
outputSchema: {
|
|
69
|
+
catalog: z.array(z.object({
|
|
70
|
+
name: z.string(),
|
|
71
|
+
category: z.string(),
|
|
72
|
+
description: z.string(),
|
|
73
|
+
output: z.enum(["text", "artifact"]),
|
|
74
|
+
artifactType: z.string().optional(),
|
|
75
|
+
inputSchema: z.record(z.unknown()),
|
|
76
|
+
})),
|
|
77
|
+
},
|
|
78
|
+
handler: async (_input, ctx) => {
|
|
79
|
+
const r = await ctx.clients.cloud.listAiTools();
|
|
80
|
+
const lines = [`## Ask-AI tools (${r.catalog.length})`, ""];
|
|
81
|
+
const byCategory = new Map();
|
|
82
|
+
for (const t of r.catalog) {
|
|
83
|
+
const arr = byCategory.get(t.category) ?? [];
|
|
84
|
+
arr.push(t);
|
|
85
|
+
byCategory.set(t.category, arr);
|
|
86
|
+
}
|
|
87
|
+
for (const [cat, tools] of byCategory) {
|
|
88
|
+
lines.push(`### ${cat}`);
|
|
89
|
+
for (const t of tools) {
|
|
90
|
+
const out = t.output === "artifact" ? `→ ${t.artifactType ?? "artifact"}` : "→ text";
|
|
91
|
+
lines.push(`- **${t.name}** ${out} — ${t.description.slice(0, 120)}`);
|
|
92
|
+
}
|
|
93
|
+
lines.push("");
|
|
94
|
+
}
|
|
95
|
+
return { text: lines.join("\n").trim(), structured: r };
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
name: "tr_ai_execute",
|
|
100
|
+
capability: "ai",
|
|
101
|
+
title: "Execute an Ask-AI tool",
|
|
102
|
+
description: "Invokes any AI tool by name. Body: { tool_name, input }. Returns { result, artifact? }. When the tool produces an artifact (dashboard, report, test_plan, presentation, navigation_paths, session_workspace), the artifact is also addressable as `testrelic://artifacts/{id}` after the call.",
|
|
103
|
+
inputSchema: {
|
|
104
|
+
tool_name: z.string().describe("Tool name from `tr_ai_list_tools` (e.g. query_test_runs, query_jira_issues)"),
|
|
105
|
+
input: z.record(z.unknown()).describe("Tool-specific input"),
|
|
106
|
+
},
|
|
107
|
+
outputSchema: {
|
|
108
|
+
result: z.record(z.unknown()),
|
|
109
|
+
artifact: ArtifactSummary.optional(),
|
|
110
|
+
},
|
|
111
|
+
handler: async (input, ctx) => {
|
|
112
|
+
const name = String(input.tool_name);
|
|
113
|
+
const args = (input.input ?? {});
|
|
114
|
+
const r = await ctx.clients.cloud.executeAiTool(name, args);
|
|
115
|
+
const text = r.artifact
|
|
116
|
+
? `✓ ${name} produced ${r.artifact.type}${r.artifact.id ? ` (testrelic://artifacts/${r.artifact.id})` : ""}.`
|
|
117
|
+
: `✓ ${name} returned text result.`;
|
|
118
|
+
return { text, structured: r };
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: "tr_ask_ai",
|
|
123
|
+
capability: "ai",
|
|
124
|
+
title: "Ask AI (single turn)",
|
|
125
|
+
description: "Runs the Ask AI agent loop for a single user message. The platform handles LLM calls, tool orchestration, and artifact generation. Returns the assistant's response plus any artifacts it produced. Pass `conversationId` to continue an existing thread, or omit to start a new one.",
|
|
126
|
+
inputSchema: {
|
|
127
|
+
message: z.string().describe("User message"),
|
|
128
|
+
conversationId: z.string().optional(),
|
|
129
|
+
repoId: z.string().optional().describe("Repo context for grounding"),
|
|
130
|
+
runId: z.string().optional().describe("Specific run to focus on"),
|
|
131
|
+
maxToolRounds: z.number().int().min(1).max(15).optional(),
|
|
132
|
+
},
|
|
133
|
+
outputSchema: {
|
|
134
|
+
conversationId: z.string(),
|
|
135
|
+
messages: z.array(Message),
|
|
136
|
+
usage: z.object({ inputTokens: z.number(), outputTokens: z.number() }).optional(),
|
|
137
|
+
},
|
|
138
|
+
handler: async (input, ctx) => {
|
|
139
|
+
const r = await ctx.clients.cloud.runAgent({
|
|
140
|
+
messages: [{ role: "user", content: String(input.message) }],
|
|
141
|
+
conversationId: input.conversationId,
|
|
142
|
+
repoId: input.repoId,
|
|
143
|
+
runId: input.runId,
|
|
144
|
+
maxToolRounds: input.maxToolRounds,
|
|
145
|
+
});
|
|
146
|
+
const assistant = r.messages.filter((m) => m.role === "assistant").pop();
|
|
147
|
+
const text = assistant?.content ?? "_(no assistant reply)_";
|
|
148
|
+
return { text, structured: r };
|
|
149
|
+
},
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: "tr_ai_list_conversations",
|
|
153
|
+
capability: "ai",
|
|
154
|
+
title: "List Ask-AI conversations",
|
|
155
|
+
description: "Paginated list of conversations for the authenticated user. Use this to find a conversationId to continue.",
|
|
156
|
+
inputSchema: {
|
|
157
|
+
cursor: z.string().optional(),
|
|
158
|
+
limit: z.number().int().min(1).max(50).optional(),
|
|
159
|
+
},
|
|
160
|
+
outputSchema: {
|
|
161
|
+
conversations: z.array(ConversationSummary),
|
|
162
|
+
nextCursor: z.string().nullable(),
|
|
163
|
+
},
|
|
164
|
+
handler: async (input, ctx) => {
|
|
165
|
+
const r = await ctx.clients.cloud.listConversations({
|
|
166
|
+
cursor: input.cursor,
|
|
167
|
+
limit: input.limit,
|
|
168
|
+
});
|
|
169
|
+
const lines = [`## Conversations (${r.conversations.length})`, ""];
|
|
170
|
+
for (const c of r.conversations) {
|
|
171
|
+
lines.push(`- **${c.id}** — ${c.title} (${c.messageCount} msgs, updated ${c.updatedAt})`);
|
|
172
|
+
}
|
|
173
|
+
if (r.nextCursor)
|
|
174
|
+
lines.push("", `_Next cursor: \`${r.nextCursor}\`_`);
|
|
175
|
+
return { text: lines.join("\n"), structured: r };
|
|
176
|
+
},
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
name: "tr_ai_get_conversation",
|
|
180
|
+
capability: "ai",
|
|
181
|
+
title: "Get one Ask-AI conversation",
|
|
182
|
+
description: "Returns the full message history for one conversation, including artifact references on assistant turns.",
|
|
183
|
+
inputSchema: { id: z.string() },
|
|
184
|
+
outputSchema: {
|
|
185
|
+
id: z.string(),
|
|
186
|
+
title: z.string(),
|
|
187
|
+
messages: z.array(Message),
|
|
188
|
+
},
|
|
189
|
+
handler: async (input, ctx) => {
|
|
190
|
+
const r = await ctx.clients.cloud.getConversation(String(input.id));
|
|
191
|
+
const lines = [`## ${r.title}`, ""];
|
|
192
|
+
for (const m of r.messages) {
|
|
193
|
+
lines.push(`### ${m.role}`);
|
|
194
|
+
lines.push(m.content);
|
|
195
|
+
if (m.artifacts?.length)
|
|
196
|
+
lines.push(`_(${m.artifacts.length} artifact${m.artifacts.length === 1 ? "" : "s"} attached)_`);
|
|
197
|
+
lines.push("");
|
|
198
|
+
}
|
|
199
|
+
return { text: lines.join("\n").trim(), structured: r };
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
name: "tr_ai_new_conversation",
|
|
204
|
+
capability: "ai",
|
|
205
|
+
title: "Create a new conversation",
|
|
206
|
+
description: "Creates an empty conversation. Use the returned `id` as `conversationId` in subsequent `tr_ask_ai` calls.",
|
|
207
|
+
inputSchema: {
|
|
208
|
+
title: z.string().optional(),
|
|
209
|
+
repoId: z.string().optional(),
|
|
210
|
+
},
|
|
211
|
+
outputSchema: { id: z.string(), title: z.string() },
|
|
212
|
+
handler: async (input, ctx) => {
|
|
213
|
+
const r = await ctx.clients.cloud.createConversation({
|
|
214
|
+
title: input.title,
|
|
215
|
+
repoId: input.repoId,
|
|
216
|
+
});
|
|
217
|
+
return { text: `Created conversation ${r.id}: "${r.title}".`, structured: r };
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
name: "tr_ai_delete_conversation",
|
|
222
|
+
capability: "ai",
|
|
223
|
+
title: "Delete an Ask-AI conversation",
|
|
224
|
+
description: "Permanently deletes a conversation and its messages.",
|
|
225
|
+
inputSchema: { id: z.string() },
|
|
226
|
+
outputSchema: { ok: z.boolean() },
|
|
227
|
+
handler: async (input, ctx) => {
|
|
228
|
+
const r = await ctx.clients.cloud.deleteConversation(String(input.id));
|
|
229
|
+
return { text: `Deleted conversation ${input.id}.`, structured: r };
|
|
230
|
+
},
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
name: "tr_ai_usage",
|
|
234
|
+
capability: "ai",
|
|
235
|
+
title: "Ask-AI token usage",
|
|
236
|
+
description: "Current month's token usage vs the org's monthly budget. Use this to plan large Ask-AI workflows.",
|
|
237
|
+
inputSchema: {},
|
|
238
|
+
outputSchema: {
|
|
239
|
+
monthlyTokenUsage: z.number(),
|
|
240
|
+
monthlyTokenBudget: z.number(),
|
|
241
|
+
monthlyRequestCount: z.number(),
|
|
242
|
+
overLimit: z.boolean(),
|
|
243
|
+
},
|
|
244
|
+
handler: async (_input, ctx) => {
|
|
245
|
+
const r = await ctx.clients.cloud.getAiUsage();
|
|
246
|
+
const pct = r.monthlyTokenBudget > 0 ? ((r.monthlyTokenUsage / r.monthlyTokenBudget) * 100).toFixed(1) : "n/a";
|
|
247
|
+
const text = [
|
|
248
|
+
`## Ask-AI usage (current month)`,
|
|
249
|
+
``,
|
|
250
|
+
`- **Used:** ${r.monthlyTokenUsage.toLocaleString()} tokens (${pct}% of budget)`,
|
|
251
|
+
`- **Budget:** ${r.monthlyTokenBudget.toLocaleString()} tokens`,
|
|
252
|
+
`- **Requests:** ${r.monthlyRequestCount}`,
|
|
253
|
+
`- **Over limit:** ${r.overLimit ? "yes" : "no"}`,
|
|
254
|
+
].join("\n");
|
|
255
|
+
return { text, structured: r };
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
// ── Granular artifact generators ─────────────────────────────────────
|
|
259
|
+
artifactGenerator("tr_generate_dashboard", "generate_dashboard", "dashboard", "Generate a dashboard", "Asks the platform to produce a dashboard artifact (widget array). Input shape mirrors the platform's `generate_dashboard` tool — see `tr_ai_list_tools` for the exact schema."),
|
|
260
|
+
artifactGenerator("tr_generate_report", "generate_report", "report", "Generate a report", "Produces a markdown report artifact with structured sections. Input matches the platform's `generate_report` tool."),
|
|
261
|
+
artifactGenerator("tr_generate_test_plan", "generate_test_plan", "test_plan", "Generate a test plan", "Produces a test_plan artifact suitable for export to PDF. Input matches the platform's `generate_test_plan` tool."),
|
|
262
|
+
artifactGenerator("tr_generate_presentation", "generate_presentation", "presentation", "Generate a presentation", "Produces a slide-deck presentation artifact. Input matches the platform's `generate_presentation` tool."),
|
|
263
|
+
artifactGenerator("tr_generate_navigation_paths", "generate_navigation_paths", "navigation_paths", "Generate a navigation paths diagram", "Produces a navigation_paths artifact (journey graph). Input matches the platform's `generate_navigation_paths` tool."),
|
|
264
|
+
];
|
|
265
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/ai/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/apps/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA2B9D,eAAO,MAAM,SAAS,EAAE,cAAc,EAkHrC,CAAC"}
|