@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.
@@ -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", { meetingId: String(merged.meetingId).trim() }, { postMcp });
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
@@ -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;
@@ -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 */
@@ -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). Prefer local ~/.testchimp/data/meetings/<meeting-id>/transcript.md " +
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
  },
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@testchimp/cli",
3
- "version": "0.1.81",
3
+ "version": "0.1.82",
4
4
  "description": "TestChimp CLI and MCP server — coverage, plans, EaaS, TrueCoverage, API operations (calls /api/mcp/*)",
5
5
  "type": "module",
6
6
  "main": "dist/bin/testchimp.js",