minutes-mcp 0.26.2 → 0.27.0

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/index.d.ts CHANGED
@@ -191,7 +191,7 @@ export declare function runAgentToolPolicies<T>(name: string, input: unknown, op
191
191
  * does.
192
192
  */
193
193
  export declare function registerToolWithRestrictedPolicy(serverArg: McpServer, name: string, description: string, inputSchema: Record<string, unknown>, annotations: Record<string, unknown>, handler: (...args: any[]) => any, readiness?: () => Promise<unknown>): import("@modelcontextprotocol/sdk/server/mcp.js").RegisteredTool;
194
- export declare function registerDocsAppToolWithRestrictedPolicy(serverArg: McpServer, name: string, config: Record<string, unknown>, handler: (...args: any[]) => any): import("@modelcontextprotocol/sdk/server/mcp.js").RegisteredTool;
194
+ export declare function registerDocsAppToolWithRestrictedPolicy(serverArg: McpServer, name: string, config: Record<string, unknown>, handler: (...args: any[]) => any): RegisteredTool;
195
195
  /**
196
196
  * Parse a live meeting under the stricter agent policy. The SDK version
197
197
  * bundled by an already-published MCP package may not yet know a future or
package/dist/index.js CHANGED
@@ -48,7 +48,7 @@ import { access, mkdir, readFile, rm, stat, writeFile } from "fs/promises";
48
48
  import { basename, delimiter, dirname, extname, isAbsolute, join, relative, resolve } from "path";
49
49
  import { fileURLToPath } from "url";
50
50
  import { homedir } from "os";
51
- import { parse as parseYaml } from "yaml";
51
+ import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
52
52
  import * as reader from "minutes-sdk";
53
53
  import { canonicalizeRoot, expandHomeLikePath, readTextFileInDirectory, validatePathInDirectories, validatePathInDirectory, } from "./paths.js";
54
54
  import { isCliCompatible, parseVersion } from "./version.js";
@@ -532,6 +532,7 @@ export function parsePolicyVerifiedMeeting(content, filePath) {
532
532
  const { yaml } = reader.splitFrontmatter(content);
533
533
  if (!yaml)
534
534
  return null;
535
+ let parsedFrontmatter;
535
536
  try {
536
537
  const parsed = parseYaml(yaml);
537
538
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
@@ -539,7 +540,7 @@ export function parsePolicyVerifiedMeeting(content, filePath) {
539
540
  if (typeof parsed.title !== "string" || parsed.title.trim() === "")
540
541
  return null;
541
542
  if (typeof parsed.type !== "string" ||
542
- !["meeting", "memo", "dictation"].includes(parsed.type)) {
543
+ !["meeting", "memo", "dictation", "note"].includes(parsed.type)) {
543
544
  return null;
544
545
  }
545
546
  const parsedDate = parsed.date instanceof Date ? parsed.date : new Date(String(parsed.date ?? ""));
@@ -550,11 +551,30 @@ export function parsePolicyVerifiedMeeting(content, filePath) {
550
551
  parsed.sensitivity !== "restricted") {
551
552
  return null;
552
553
  }
554
+ parsedFrontmatter = parsed;
553
555
  }
554
556
  catch {
555
557
  return null;
556
558
  }
557
- return reader.parseFrontmatter(content, filePath);
559
+ const sdkParsed = reader.parseFrontmatter(content, filePath);
560
+ if (sdkParsed || parsedFrontmatter.type !== "note")
561
+ return sdkParsed;
562
+ // The MCP package is tested against the last published SDK, which can lag
563
+ // this repository by one release. Preserve that parser's normalization and
564
+ // fail-closed checks while adapting only the newly valid discriminator.
565
+ const { body } = reader.splitFrontmatter(content);
566
+ const sdkCompatibleContent = [
567
+ "---",
568
+ stringifyYaml({ ...parsedFrontmatter, type: "meeting" }).trimEnd(),
569
+ "---",
570
+ body,
571
+ ].join("\n");
572
+ const note = reader.parseFrontmatter(sdkCompatibleContent, filePath);
573
+ if (!note)
574
+ return null;
575
+ note.frontmatter.type = "note";
576
+ note.body = body;
577
+ return note;
558
578
  }
559
579
  function comparePolicyMeetingsNewestFirst(left, right) {
560
580
  const leftDate = Date.parse(left.meeting.frontmatter.date);
@@ -1571,7 +1591,7 @@ const COPILOT_SUPPORTED = hasFeature(CLI_CAPABILITIES, "copilot_realtime");
1571
1591
  // `./version.ts` (see issue #183). Hosted `.mcpb` bundles will run
1572
1592
  // against CLIs with different minor/patch numbers within the same
1573
1593
  // major; that is explicitly supported.
1574
- const MCP_SERVER_VERSION = "0.26.2";
1594
+ const MCP_SERVER_VERSION = "0.27.0";
1575
1595
  export function parseKnowledgeConfig(configContent) {
1576
1596
  const knowledgeMatch = configContent.match(/\[knowledge\][\s\S]*?(?=\n\[|$)/);
1577
1597
  if (!knowledgeMatch) {
@@ -2720,7 +2740,7 @@ export async function requireAgentTrustReadiness(runner = runMinutes) {
2720
2740
  const readiness = await readAgentTrustReadiness(runner);
2721
2741
  if (!readiness.ready) {
2722
2742
  throw new Error(readiness.remediation ||
2723
- "This machine shows a Minutes-owned QMD registration that qmd could not confirm was removed. Make sure `qmd` runs (`qmd collection list`), then run `minutes qmd cleanup` and restart Minutes.");
2743
+ "This machine shows a Minutes-owned QMD registration that qmd could not confirm was removed, so agent memory stays disabled until it can. With the Minutes CLI installed, check that `qmd` runs (`qmd collection list`), then run `minutes qmd cleanup` and restart Minutes. The desktop app cannot perform this repair on its own yet, so on a desktop-only install this needs the CLI; if you are seeing this on a machine that never had it, please report it, because the check should not be firing there at all.");
2724
2744
  }
2725
2745
  return readiness;
2726
2746
  }