@codazen/harmonica-mcp 4.4.0 → 4.4.1

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.
Files changed (2) hide show
  1. package/dist/index.js +8 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -27464,7 +27464,7 @@ function registerNoteTools(server, ctx, client) {
27464
27464
  {
27465
27465
  systemId: external_exports.string().describe("The system ID"),
27466
27466
  beatId: external_exports.string().optional().describe("Scope to a specific beat (omit for all system notes)"),
27467
- noteType: external_exports.union([external_exports.enum(NOTE_TYPE_VALUES), external_exports.array(external_exports.enum(NOTE_TYPE_VALUES)).min(1)]).optional().describe('Filter by note type \u2014 single value or array for multi-select (e.g. ["constraint", "assumption"])'),
27467
+ noteType: external_exports.union([external_exports.enum(NOTE_TYPE_VALUES), external_exports.array(external_exports.enum(NOTE_TYPE_VALUES)).min(1)]).optional().describe('Filter by note type \u2014 single value or array for multi-select (e.g. ["constraint", "guidance"])'),
27468
27468
  status: external_exports.enum(NOTE_STATUS_VALUES).optional().describe("Filter by status"),
27469
27469
  revisionId: external_exports.string().optional().describe("Filter to notes scoped to a specific revision"),
27470
27470
  beatVersionId: external_exports.string().optional().describe("Filter to notes scoped to a specific Beat Version (planning increment)"),
@@ -27632,12 +27632,12 @@ function registerNoteTools(server, ctx, client) {
27632
27632
  },
27633
27633
  async ({ systemId }) => {
27634
27634
  await assertSystemExists(client, systemId);
27635
- const DOCUMENT_FETCH_LIMIT = 5e3;
27636
- const { notes: docs, hasMore: truncated } = await client.listAllSystemNotes(systemId, { noteType: "document" }, DOCUMENT_FETCH_LIMIT);
27635
+ const { notes: docs, hasMore } = await client.listAllSystemNotes(systemId, { noteType: "document" });
27637
27636
  const visibleDocs = docs.filter((d) => d.status !== DISMISSED_NOTE_STATUS);
27638
- const truncationNotice = truncated && visibleDocs.length > 0 ? "\n\n> \u26A0\uFE0F This system has more than 5000 documents. Some documents may not be shown.\n" : "";
27639
- const text = formatDocumentList(visibleDocs) + truncationNotice;
27640
- return { content: [{ type: "text", text }] };
27637
+ if (hasMore) {
27638
+ return { content: [{ type: "text", text: `Unexpected: listAllSystemNotes returned hasMore=true on the no-limit path for system ${systemId} \u2014 the document list may be incomplete. This is a server-side regression.` }], isError: true };
27639
+ }
27640
+ return { content: [{ type: "text", text: formatDocumentList(visibleDocs) }] };
27641
27641
  }
27642
27642
  );
27643
27643
  server.tool(
@@ -27780,7 +27780,7 @@ ${text}` }] };
27780
27780
  systemId: external_exports.string().optional().describe("The system ID (for access control). Provide systemId or orgId, not both."),
27781
27781
  orgId: external_exports.string().optional().describe("The org ID (for org-level notes). Provide orgId or systemId, not both."),
27782
27782
  noteId: external_exports.string().describe("The note ID to update"),
27783
- noteType: external_exports.enum(NOTE_TYPE_VALUES).optional().describe("Reclassify the note type (e.g. assumption \u2192 guidance)"),
27783
+ noteType: external_exports.enum(NOTE_TYPE_VALUES).optional().describe("Reclassify the note type (e.g. context \u2192 guidance)"),
27784
27784
  status: external_exports.enum(NOTE_STATUS_VALUES).optional().describe("New status"),
27785
27785
  content: external_exports.string().optional().describe("Updated content"),
27786
27786
  rationale: external_exports.string().optional().describe("Why this note exists or why this decision was made"),
@@ -35064,7 +35064,7 @@ function loadConfig() {
35064
35064
  };
35065
35065
  }
35066
35066
  async function main() {
35067
- console.error(`[harmonica-mcp] v${"4.4.0"} starting\u2026`);
35067
+ console.error(`[harmonica-mcp] v${"4.4.1"} starting\u2026`);
35068
35068
  const config2 = loadConfig();
35069
35069
  const client = createHttpClient({
35070
35070
  apiBaseUrl: config2.apiBaseUrl,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codazen/harmonica-mcp",
3
- "version": "4.4.0",
3
+ "version": "4.4.1",
4
4
  "description": "MCP server for Harmonica — connect any MCP-compatible AI assistant to Harmonica",
5
5
  "license": "MIT",
6
6
  "bin": {