@paigy/mcp 0.25.0 → 0.25.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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AGENT_NAME
3
- } from "./chunk-WGZHKF6D.js";
3
+ } from "./chunk-GWYHSAU5.js";
4
4
 
5
5
  // src/clients.ts
6
6
  import { execFile } from "child_process";
@@ -2412,6 +2412,13 @@ var NotifyRequestSchema = z.object({
2412
2412
  waiting: z.enum(["none", "soft", "hard"]).optional().describe(
2413
2413
  "With `ask`: what happens to your work while you wait. 'none' = you're just informing the user. 'soft' = you'd like an answer but can keep working. 'hard' = you are stopped until they answer (reaches them urgently and escalates to a real phone call if unanswered). Replaces urgencyHint + blocking \u2014 send this one field."
2414
2414
  ),
2415
+ /** #575: a RELAY of the user's explicitly stated preference, never the agent's
2416
+ * choice. Outranks waiting in both directions: 'call' rings even for a
2417
+ * waiting:'none' "call me when it's done"; 'message' never rings even for
2418
+ * waiting:'hard'. */
2419
+ channel: z.enum(["call", "message"]).optional().describe(
2420
+ "Only if the user explicitly said how to reach them \u2014 'call me' \u2192 'call', 'just message/text me' \u2192 'message'. Omit otherwise; Paigy picks."
2421
+ ),
2415
2422
  confirmStyle: z.enum(["yesno", "approve"]).default("yesno").describe(
2416
2423
  "Labels for a select:'confirm' paige \u2014 'yesno' (Yes/No) or 'approve' (Approve/Deny). Ignored unless select is 'confirm'."
2417
2424
  ),
@@ -2469,8 +2476,9 @@ function deriveAsk(req) {
2469
2476
  const text = req.ask.trim();
2470
2477
  const firstSentence = (/^[^.!?\n]+[.!?]?/.exec(text)?.[0] ?? text).trim();
2471
2478
  const title = firstSentence.length > 90 ? `${firstSentence.slice(0, 87).trimEnd()}\u2026` : firstSentence;
2472
- const urgency = req.urgencyHint === "now" ? "call" : req.urgencyHint === "soon" ? "banner" : req.urgencyHint === "whenever" ? "inbox" : req.urgency;
2473
- const { ask: _ask, needs, urgencyHint: _hint, ...rest } = req;
2479
+ const hinted = req.urgencyHint === "now" ? "call" : req.urgencyHint === "soon" ? "banner" : req.urgencyHint === "whenever" ? "inbox" : req.urgency;
2480
+ const urgency = req.channel === "call" ? "call" : req.channel === "message" && hinted === "call" ? "banner" : hinted;
2481
+ const { ask: _ask, needs, urgencyHint: _hint, channel: _channel, ...rest } = req;
2474
2482
  return {
2475
2483
  ...rest,
2476
2484
  context: { title, description: [text] },
@@ -138,6 +138,13 @@ var NotifyRequestSchema = z.object({
138
138
  waiting: z.enum(["none", "soft", "hard"]).optional().describe(
139
139
  "With `ask`: what happens to your work while you wait. 'none' = you're just informing the user. 'soft' = you'd like an answer but can keep working. 'hard' = you are stopped until they answer (reaches them urgently and escalates to a real phone call if unanswered). Replaces urgencyHint + blocking \u2014 send this one field."
140
140
  ),
141
+ /** #575: a RELAY of the user's explicitly stated preference, never the agent's
142
+ * choice. Outranks waiting in both directions: 'call' rings even for a
143
+ * waiting:'none' "call me when it's done"; 'message' never rings even for
144
+ * waiting:'hard'. */
145
+ channel: z.enum(["call", "message"]).optional().describe(
146
+ "Only if the user explicitly said how to reach them \u2014 'call me' \u2192 'call', 'just message/text me' \u2192 'message'. Omit otherwise; Paigy picks."
147
+ ),
141
148
  confirmStyle: z.enum(["yesno", "approve"]).default("yesno").describe(
142
149
  "Labels for a select:'confirm' paige \u2014 'yesno' (Yes/No) or 'approve' (Approve/Deny). Ignored unless select is 'confirm'."
143
150
  ),
package/dist/index.js CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  HandoffSchema
4
- } from "./chunk-A2MIHI5X.js";
4
+ } from "./chunk-RXOUZ7WR.js";
5
5
  import {
6
6
  PAIGY_TOOL_IDS,
7
7
  autoConfigureClients,
8
8
  claudeInstallHint,
9
9
  enablePaigyTools
10
- } from "./chunk-LDJ7IVYZ.js";
10
+ } from "./chunk-63VXNOEC.js";
11
11
  import {
12
12
  clearSurface,
13
13
  writeSurface
@@ -38,7 +38,7 @@ import {
38
38
  sleep,
39
39
  startE2ee,
40
40
  submitNotification
41
- } from "./chunk-WGZHKF6D.js";
41
+ } from "./chunk-GWYHSAU5.js";
42
42
 
43
43
  // src/index.ts
44
44
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
@@ -105,6 +105,11 @@ var CONTACT_SCHEMA = {
105
105
  },
106
106
  description: "The choices the user picks from, when you have them."
107
107
  },
108
+ channel: {
109
+ type: "string",
110
+ enum: ["call", "message"],
111
+ description: "Only if the user explicitly said how to reach them \u2014 'call me' \u2192 'call', 'just message/text me' \u2192 'message'. Omit otherwise; Paigy picks."
112
+ },
108
113
  threadId: {
109
114
  type: "string",
110
115
  description: "To continue an earlier conversation, pass the threadId a previous contact or reply returned. Omit to start a new one."
package/dist/listen.js CHANGED
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  WAKE_EVENT,
4
4
  wakeChannel
5
- } from "./chunk-A2MIHI5X.js";
5
+ } from "./chunk-RXOUZ7WR.js";
6
6
  import {
7
7
  checkReplies,
8
8
  registerDelivery
9
- } from "./chunk-WGZHKF6D.js";
9
+ } from "./chunk-GWYHSAU5.js";
10
10
 
11
11
  // src/listen.ts
12
12
  import { createClient } from "@supabase/supabase-js";
package/dist/onboard.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  autoConfigureClients,
4
4
  claudeInstallHint,
5
5
  openBrowser
6
- } from "./chunk-LDJ7IVYZ.js";
6
+ } from "./chunk-63VXNOEC.js";
7
7
  import {
8
8
  AGENT_NAME,
9
9
  TOKEN_PATH,
@@ -11,7 +11,7 @@ import {
11
11
  requestCode,
12
12
  saveToken,
13
13
  sleep
14
- } from "./chunk-WGZHKF6D.js";
14
+ } from "./chunk-GWYHSAU5.js";
15
15
 
16
16
  // src/onboard.ts
17
17
  async function main() {
@@ -6,7 +6,7 @@ import {
6
6
  BACKEND_URL,
7
7
  reach,
8
8
  readToken
9
- } from "./chunk-WGZHKF6D.js";
9
+ } from "./chunk-GWYHSAU5.js";
10
10
 
11
11
  // src/statusline.ts
12
12
  import { mkdirSync, readFileSync, realpathSync, writeFileSync } from "fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paigy/mcp",
3
- "version": "0.25.0",
3
+ "version": "0.25.1",
4
4
  "description": "Paigy MCP server \u2014 a voice inbox for your AI agents. Lets an agent notify a user and await their reply.",
5
5
  "license": "MIT",
6
6
  "type": "module",