@testchimp/cli 0.1.81 → 0.1.82
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/dist/cli/program.js +25 -1
- package/dist/core/schemas.d.ts +4 -0
- package/dist/core/schemas.js +6 -0
- package/dist/core/tools.js +18 -1
- package/dist/core/tools.test.js +25 -0
- package/package.json +1 -1
package/dist/cli/program.js
CHANGED
|
@@ -485,16 +485,40 @@ export function buildCliProgram() {
|
|
|
485
485
|
.description(TOOL_DEFINITIONS.find((t) => t.kebab === "get-meeting-transcript").description)
|
|
486
486
|
.addOption(jsonInputOption())
|
|
487
487
|
.option("--meeting-id <id>", "meeting id (calendar event id, or URL hash for ad-hoc; same as Studio folder under ~/.testchimp/data/meetings/)")
|
|
488
|
+
.option("--summary-only", "return only the post-meeting summary (omit the transcript body)")
|
|
488
489
|
.action(async (opts) => {
|
|
489
490
|
const body = {};
|
|
490
491
|
if (opts.meetingId) {
|
|
491
492
|
body.meetingId = String(opts.meetingId).trim();
|
|
492
493
|
}
|
|
494
|
+
if (opts.summaryOnly) {
|
|
495
|
+
body.summaryOnly = true;
|
|
496
|
+
}
|
|
493
497
|
const merged = mergeBodies(body, opts.jsonInput);
|
|
494
498
|
if (!merged.meetingId || String(merged.meetingId).trim() === "") {
|
|
495
499
|
throw new Error("meetingId is required (--meeting-id)");
|
|
496
500
|
}
|
|
497
|
-
const out = await runTool("get-meeting-transcript", {
|
|
501
|
+
const out = await runTool("get-meeting-transcript", {
|
|
502
|
+
meetingId: String(merged.meetingId).trim(),
|
|
503
|
+
...(merged.summaryOnly ? { summaryOnly: true } : {}),
|
|
504
|
+
}, { postMcp });
|
|
505
|
+
console.log(out);
|
|
506
|
+
});
|
|
507
|
+
program
|
|
508
|
+
.command("get-meeting-set")
|
|
509
|
+
.description(TOOL_DEFINITIONS.find((t) => t.kebab === "get-meeting-set").description)
|
|
510
|
+
.addOption(jsonInputOption())
|
|
511
|
+
.option("--meeting-set-id <id>", "meeting-set ULID (from `/testchimp using meeting-set context <id>`)")
|
|
512
|
+
.action(async (opts) => {
|
|
513
|
+
const body = {};
|
|
514
|
+
if (opts.meetingSetId) {
|
|
515
|
+
body.meetingSetId = String(opts.meetingSetId).trim();
|
|
516
|
+
}
|
|
517
|
+
const merged = mergeBodies(body, opts.jsonInput);
|
|
518
|
+
if (!merged.meetingSetId || String(merged.meetingSetId).trim() === "") {
|
|
519
|
+
throw new Error("meetingSetId is required (--meeting-set-id)");
|
|
520
|
+
}
|
|
521
|
+
const out = await runTool("get-meeting-set", { meetingSetId: String(merged.meetingSetId).trim() }, { postMcp });
|
|
498
522
|
console.log(out);
|
|
499
523
|
});
|
|
500
524
|
program
|
package/dist/core/schemas.d.ts
CHANGED
|
@@ -291,6 +291,10 @@ export declare const getManualSessionDetailsInput: z.ZodObject<{
|
|
|
291
291
|
}, z.core.$strip>;
|
|
292
292
|
export declare const getMeetingTranscriptInput: z.ZodObject<{
|
|
293
293
|
meetingId: z.ZodString;
|
|
294
|
+
summaryOnly: z.ZodOptional<z.ZodBoolean>;
|
|
295
|
+
}, z.core.$strip>;
|
|
296
|
+
export declare const getMeetingSetInput: z.ZodObject<{
|
|
297
|
+
meetingSetId: z.ZodString;
|
|
294
298
|
}, z.core.$strip>;
|
|
295
299
|
export declare const getIssueDetailsInput: z.ZodObject<{
|
|
296
300
|
issueId: z.ZodString;
|
package/dist/core/schemas.js
CHANGED
|
@@ -170,6 +170,12 @@ export const getManualSessionDetailsInput = z.object({
|
|
|
170
170
|
export const getMeetingTranscriptInput = z.object({
|
|
171
171
|
/** Calendar event id, or URL hash for ad-hoc meetings */
|
|
172
172
|
meetingId: z.string().min(1),
|
|
173
|
+
/** Return only the post-meeting summary (transcript body omitted). */
|
|
174
|
+
summaryOnly: z.boolean().optional(),
|
|
175
|
+
});
|
|
176
|
+
export const getMeetingSetInput = z.object({
|
|
177
|
+
/** ULID from `/testchimp using meeting-set context <id>` (Meetings page → Start Chat) */
|
|
178
|
+
meetingSetId: z.string().min(1),
|
|
173
179
|
});
|
|
174
180
|
export const getIssueDetailsInput = z.object({
|
|
175
181
|
/** Accepts #B-123, B-123, #B123, B123, or plain 123 */
|
package/dist/core/tools.js
CHANGED
|
@@ -388,13 +388,30 @@ export const TOOL_DEFINITIONS = [
|
|
|
388
388
|
{
|
|
389
389
|
kebab: "get-meeting-transcript",
|
|
390
390
|
description: "Fetch a cloud-synced Meeting Bots transcript by meeting id (calendar event id, or URL hash " +
|
|
391
|
-
"for ad-hoc meetings).
|
|
391
|
+
"for ad-hoc meetings). Returns title, start time, post-meeting summary, and transcript. " +
|
|
392
|
+
"Use summaryOnly to fetch just the summary (much smaller) and pull the full transcript only " +
|
|
393
|
+
"when the summary is not enough. Prefer local ~/.testchimp/data/meetings/<meeting-id>/transcript.md " +
|
|
392
394
|
"when present on Studio / the recording machine.",
|
|
393
395
|
inputSchema: S.getMeetingTranscriptInput,
|
|
394
396
|
execute: async (args, { postMcp }) => {
|
|
395
397
|
const a = args;
|
|
396
398
|
return postMcp("/api/mcp/get_meeting_transcript", {
|
|
397
399
|
meetingId: a.meetingId,
|
|
400
|
+
...(a.summaryOnly ? { summaryOnly: true } : {}),
|
|
401
|
+
});
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
kebab: "get-meeting-set",
|
|
406
|
+
description: "Fetch a meeting-set context by id (ULID from `/testchimp using meeting-set context <id>`, " +
|
|
407
|
+
"created on the Meetings page via Start Chat). Returns the filters / search text applied and " +
|
|
408
|
+
"the meetings in scope (id, title, start). Fetch each meeting with get-meeting-transcript " +
|
|
409
|
+
"(summaryOnly first). Sets expire after 7 days.",
|
|
410
|
+
inputSchema: S.getMeetingSetInput,
|
|
411
|
+
execute: async (args, { postMcp }) => {
|
|
412
|
+
const a = args;
|
|
413
|
+
return postMcp("/api/mcp/get_meeting_set", {
|
|
414
|
+
meetingSetId: a.meetingSetId,
|
|
398
415
|
});
|
|
399
416
|
},
|
|
400
417
|
},
|
package/dist/core/tools.test.js
CHANGED
|
@@ -73,4 +73,29 @@ describe("get-meeting-transcript", () => {
|
|
|
73
73
|
});
|
|
74
74
|
assert.deepEqual(JSON.parse(result), JSON.parse(response));
|
|
75
75
|
});
|
|
76
|
+
it("passes summaryOnly when requested", async () => {
|
|
77
|
+
let body;
|
|
78
|
+
await runTool("get-meeting-transcript", { meetingId: "evt-123", summaryOnly: true }, {
|
|
79
|
+
postMcp: async (_path, b) => {
|
|
80
|
+
body = b;
|
|
81
|
+
return "{}";
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
assert.deepEqual(body, { meetingId: "evt-123", summaryOnly: true });
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe("get-meeting-set", () => {
|
|
88
|
+
it("posts meetingSetId to get_meeting_set", async () => {
|
|
89
|
+
let request;
|
|
90
|
+
await runTool("get-meeting-set", { meetingSetId: "01J9Z3X5V4ABCDEF0123456789" }, {
|
|
91
|
+
postMcp: async (path, body) => {
|
|
92
|
+
request = { path, body };
|
|
93
|
+
return "{}";
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
assert.deepEqual(request, {
|
|
97
|
+
path: "/api/mcp/get_meeting_set",
|
|
98
|
+
body: { meetingSetId: "01J9Z3X5V4ABCDEF0123456789" },
|
|
99
|
+
});
|
|
100
|
+
});
|
|
76
101
|
});
|
package/package.json
CHANGED