@bli-cockpit/mcp 0.1.13 → 0.1.14

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/cal-tools.js CHANGED
@@ -181,7 +181,7 @@ export function registerCalTools(server, deps) {
181
181
  all_day: z.boolean().optional(),
182
182
  time_zone: z.string().min(1).max(80).optional(),
183
183
  attendees: z.array(z.string().email()).max(100).optional(),
184
- ...CONFIRM_INPUT,
184
+ confirm: CONFIRM_INPUT,
185
185
  },
186
186
  }, async (args) => withSession(deps, async (session) => {
187
187
  const refusal = unconfirmed(args, `This would create "${String(args.title)}" and email every attendee from Google.`);
@@ -211,7 +211,7 @@ export function registerCalTools(server, deps) {
211
211
  inputSchema: {
212
212
  calendar_id: z.string().uuid(),
213
213
  org_visible: z.boolean(),
214
- ...CONFIRM_INPUT,
214
+ confirm: CONFIRM_INPUT,
215
215
  },
216
216
  }, async (args) => withSession(deps, async (session) => {
217
217
  const refusal = unconfirmed(args, args.org_visible === true
@@ -251,7 +251,7 @@ export function registerCalTools(server, deps) {
251
251
  title: "Detach a calendar",
252
252
  description: "Removes a calendar and its stored events from Tower. The calendar itself is untouched at Google — this only "
253
253
  + "forgets it here. Requires confirm: true.",
254
- inputSchema: { calendar_id: z.string().uuid(), ...CONFIRM_INPUT },
254
+ inputSchema: { calendar_id: z.string().uuid(), confirm: CONFIRM_INPUT },
255
255
  }, async (args) => withSession(deps, async (session) => {
256
256
  const refusal = unconfirmed(args, "This would detach that calendar and forget its stored events (the calendar itself is untouched at Google).");
257
257
  if (refusal)
@@ -81,6 +81,17 @@ export declare function queryString(params: URLSearchParams): string;
81
81
  * `confirmation_required`, so a script branching on it reads the same word
82
82
  * from either door.
83
83
  */
84
+ /**
85
+ * The `confirm` FIELD's schema, used as `confirm: CONFIRM_INPUT` inside a
86
+ * tool's `inputSchema`. It is a schema, not a shape: NEVER spread it
87
+ * (`...CONFIRM_INPUT`). Three calendar tools did, which spread the schema's own
88
+ * enumerable members (`def`, `type`, `unwrap`, …) into the shape as if they
89
+ * were fields; the SDK's 1.30 `objectFromShape` refuses a shape that mixes
90
+ * Zod schemas with non-schemas ("Mixed Zod versions detected"), so the
91
+ * published server exited at startup on every fleet machine the moment npm
92
+ * resolved `@modelcontextprotocol/sdk` 1.30 (QA tick 20, 2026-09-06).
93
+ * `server.test.ts` walks every registered tool's shape for exactly this.
94
+ */
84
95
  export declare const CONFIRM_INPUT: z.ZodOptional<z.ZodBoolean>;
85
96
  /** `null` when the caller confirmed; the refusal itself when they did not. */
86
97
  export declare function unconfirmed(args: Record<string, unknown>, sentence: string): ToolResult | null;
@@ -93,6 +93,17 @@ export function queryString(params) {
93
93
  * `confirmation_required`, so a script branching on it reads the same word
94
94
  * from either door.
95
95
  */
96
+ /**
97
+ * The `confirm` FIELD's schema, used as `confirm: CONFIRM_INPUT` inside a
98
+ * tool's `inputSchema`. It is a schema, not a shape: NEVER spread it
99
+ * (`...CONFIRM_INPUT`). Three calendar tools did, which spread the schema's own
100
+ * enumerable members (`def`, `type`, `unwrap`, …) into the shape as if they
101
+ * were fields; the SDK's 1.30 `objectFromShape` refuses a shape that mixes
102
+ * Zod schemas with non-schemas ("Mixed Zod versions detected"), so the
103
+ * published server exited at startup on every fleet machine the moment npm
104
+ * resolved `@modelcontextprotocol/sdk` 1.30 (QA tick 20, 2026-09-06).
105
+ * `server.test.ts` walks every registered tool's shape for exactly this.
106
+ */
96
107
  export const CONFIRM_INPUT = z
97
108
  .boolean()
98
109
  .optional()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bli-cockpit/mcp",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "private": false,
5
5
  "description": "bli-tower \u2014 an MCP server over BLI Cockpit's agent doors: JARVIS (jarvis_*), documents (docs_*), channels (msg_*), issues (work_*), the daily page (brief_*), meeting notes (notes_*), the ops board (ops_status/slack_*), settings/team/model, Scout and the workbook, plus the legacy event-stream tools (emit_event, get_ticket_timeline, get_active_tickets).",
6
6
  "type": "module",