@paigy/mcp 0.40.7 → 0.40.8

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.
@@ -2298,11 +2298,14 @@ function isNetworkError(e) {
2298
2298
  return e instanceof Error && e.message.startsWith(NETWORK_MSG);
2299
2299
  }
2300
2300
  async function reach(url, init) {
2301
+ return send(url, init, SESSION_ID);
2302
+ }
2303
+ async function send(url, init, session) {
2301
2304
  try {
2302
2305
  const headers = {
2303
2306
  ...init?.headers,
2304
2307
  "x-paigy-instance": INSTANCE_ID,
2305
- "x-paigy-session": SESSION_ID
2308
+ "x-paigy-session": session
2306
2309
  };
2307
2310
  return await fetch(url, { ...init, headers, dispatcher: await proxy() });
2308
2311
  } catch (e) {
@@ -3578,6 +3581,9 @@ var CONTACT_SCHEMA = { type: "object", ...mcpInputSchema(ContactSchema) };
3578
3581
  var CONTACT_DESCRIPTION = "Contact the user about exactly one existing Goal: pass goalIds:[goalId], ask, channel:'notification'|'call', and waiting:'none'|'hard'. Options supply choices. Notification returns immediately; collect durable answers with claim_goal/get_goal. On stdio, a Call holds one cancellable ~45s window; continue with ONLY {deliveryId}. Continuation sends nothing and rereads the same durable evidence, including previously read answers. Entries retain authorship and provenance; accepted decisions are separate from quoted speech. Call state open does not mean ringing. Unsupported: soft waiting, multiple Goals/questions, outcome admission, and re-presentation of an existing request. Create a Goal explicitly first; never resend a pending ask to continue waiting.";
3579
3582
  var CreateGoalSchema = z2.object({
3580
3583
  outcome: z2.string().trim().min(1).max(1e4),
3584
+ /** The work's NAME (#2115) — one to five words, how a person refers to it out loud ("the night
3585
+ * rings"). Omit it and the brain writes one at admission from the outcome. */
3586
+ title: z2.string().trim().min(1).max(80).optional(),
3581
3587
  ownerParticipant: z2.string().trim().min(1).optional(),
3582
3588
  idempotencyKey: z2.string().trim().min(1).max(200),
3583
3589
  /** A past conversation this Goal should be read against — History's "new session from this"
@@ -3597,11 +3603,14 @@ var CreateGoalSchema = z2.object({
3597
3603
  var CreateGoalToolSchema = CreateGoalSchema.extend({
3598
3604
  idempotencyKey: CreateGoalSchema.shape.idempotencyKey.optional().describe("Optional. One is minted per call; pass your own only so a retry lands on the same Goal.")
3599
3605
  }).strict();
3600
- var CREATE_GOAL_DESCRIPTION = "Create a durable Goal for an outcome. Without parentGoalId it is placed against your open Goals: if one already IS this work, that Goal comes back (existing: true) and nothing new is created \u2014 continue it; if the work belongs under one, it is created there (parentGoalId in the receipt); otherwise it is a root. Pass parentGoalId yourself to put it under a specific Goal. Admission only: the owner must claim it before doing work, then update it as it advances. Returns an admission receipt with goalId, current state, revision, ownerParticipant, and the next step; no Goal content or execution lease.";
3606
+ var CREATE_GOAL_DESCRIPTION = 'Create a durable Goal for an outcome. Without parentGoalId it is placed against your open Goals: if one already IS this work, that Goal comes back (existing: true) and nothing new is created \u2014 continue it; if the work belongs under one, it is created there (parentGoalId in the receipt); otherwise it is a root. Pass parentGoalId yourself to put it under a specific Goal. Pass title to name it in one to five words, as a person would refer to it out loud ("the night rings") \u2014 it heads every list and is spoken on a call; without one the brain writes it. Admission only: the owner must claim it before doing work, then update it as it advances. Returns an admission receipt with goalId, current state, revision, ownerParticipant, and the next step; no Goal content or execution lease.';
3601
3607
  var UpdateGoalSchema = z2.object({
3602
3608
  revision: z2.number().int().positive(),
3603
3609
  changes: z2.object({
3604
3610
  outcome: z2.string().trim().min(1).max(1e4).optional(),
3611
+ /** The work's NAME (#2115) — one to five words, how a person refers to it out loud. The
3612
+ * brain writes one at admission; this is the owner saying it better. Null clears it. */
3613
+ title: z2.string().trim().min(1).max(80).nullable().optional(),
3605
3614
  ownerParticipant: z2.string().trim().min(1).optional(),
3606
3615
  parentGoalId: z2.string().uuid().nullable().optional(),
3607
3616
  dependencies: z2.array(z2.object({ goalId: z2.string().uuid(), gate: z2.enum(["start", "finish"]) }).strict()).optional(),
@@ -3618,7 +3627,7 @@ var UpdateGoalToolSchema = UpdateGoalSchema.omit({ operationId: true }).extend({
3618
3627
  var ClaimGoalSchema = z2.object({ goalId: z2.string().uuid().optional() }).strict();
3619
3628
  var GetGoalSchema = z2.object({ goalId: z2.string().uuid() }).strict();
3620
3629
  var GET_GOAL_DESCRIPTION = "Read one Goal without claiming it: its outcome, state, revision, progress, blockers, the conversation on it (each question with its options and what was decided), and `next`, the one step to take. Foreign or sibling-owned Goals are not disclosed.";
3621
- var UPDATE_GOAL_DESCRIPTION = "Update an owned Goal at an exact revision. State, ownership, dependencies, children, progress, and review acknowledgement are explicit; stale revisions are rejected. reviewed: true acknowledges new evidence and closes the Deliveries addressed to you on that Goal, never over an open decision. dueAt (an ISO instant, or null) makes the Goal wait until then; when it passes you are woken for it \u2014 use it for a promise to follow up later. Returns the Goal as get_goal reads it, at its new revision.";
3630
+ var UPDATE_GOAL_DESCRIPTION = "Update an owned Goal at an exact revision. State, ownership, dependencies, children, progress, title, and review acknowledgement are explicit; stale revisions are rejected. title is the work's name in one to five words, as a person would refer to it out loud (it is spoken on a call and heads every list); null clears it. reviewed: true acknowledges new evidence and closes the Deliveries addressed to you on that Goal, never over an open decision. dueAt (an ISO instant, or null) makes the Goal wait until then; when it passes you are woken for it \u2014 use it for a promise to follow up later. Returns the Goal as get_goal reads it, at its new revision.";
3622
3631
  var CLAIM_GOAL_DESCRIPTION = "Claim the oldest runnable or review-pending Goal you own, or pass goalId to claim that Goal. Returns the Goal as get_goal reads it, and creates or renews the execution lease.";
3623
3632
  var CHECK_REPLIES_DESCRIPTION = "Your open Deliveries: every Notification or Call currently addressed to you \u2014 a request the user started toward you, an answer relayed to something you asked, a handoff \u2014 one row each: its Goals, how many decisions are still open, and the newest words in brief. A pure read with no arguments: nothing is consumed, acknowledged or claimed by reading it, so call it on startup, after a long wait, or whenever you want to know what is outstanding. To act on one, claim its Goal (claim_goal) or reread it in full with contact({deliveryId}). Once you have acted on what arrived, update_goal with reviewed: true closes the Deliveries addressed to you on that Goal. Your runnable and review-pending Goals come from claim_goal, not from here.";
3624
3633
  var CheckRepliesSchema = z2.object({}).strict();
@@ -3656,6 +3665,7 @@ function entryWords(entry) {
3656
3665
  }
3657
3666
  return entry.sources.map((source) => source.text).join("\n");
3658
3667
  }
3668
+ var LIVE_MS = 3 * 6e4;
3659
3669
  var ContextSchema = z3.object({
3660
3670
  title: z3.string().min(1).describe("One-line headline of what you need (required, non-empty)."),
3661
3671
  description: z3.array(z3.string().min(1)).describe(
@@ -4492,7 +4502,19 @@ var QueueQuestionSchema = z3.object({
4492
4502
  /** The ruling in the person's own words, from the contribution that replied — not the
4493
4503
  * option id, which is not something anyone reads back. Null while it is open, and null
4494
4504
  * for a settled question whose reply carried nothing readable. */
4495
- answer: z3.string().nullable().default(null)
4505
+ answer: z3.string().nullable().default(null),
4506
+ /** The Goal this question belongs to — a step knows its Goal on its own, not only through
4507
+ * an `InboxItem`'s `communication.goalIds[0]` (walk/design.md §12 item 3).
4508
+ * READ BY `apps/client/src/walk/order.ts`, which stamps it onto every `WalkStep`: the walk's
4509
+ * order, its route, home's trees and the list of steps all take a step's Goal from here, so
4510
+ * this is the field they agree through rather than each re-deriving it from the row it
4511
+ * arrived under. Required because the API projects it on every need it sends. */
4512
+ goalId: z3.string(),
4513
+ /** True only while an unmet START gate holds the Goal — a Goal that merely waits to
4514
+ * *finish* does not stop a person from answering (owner, 2026-09-16: "per need gate from
4515
+ * the API"; §4's dashed node). Not the same fact as `QueueItem.blocked`, which counts any
4516
+ * gate at all. */
4517
+ blocked: z3.boolean().default(false)
4496
4518
  });
4497
4519
  var QueueItemSchema = z3.object({
4498
4520
  id: z3.string(),
@@ -5247,14 +5269,14 @@ async function registerDelivery(mode, opts = {}) {
5247
5269
  async function contact(input, opts = {}) {
5248
5270
  const parsed = ContactSchema.parse(input);
5249
5271
  opts.signal?.throwIfAborted();
5250
- const send = opts.reach ?? reach;
5272
+ const send2 = opts.reach ?? reach;
5251
5273
  const headers = { "content-type": "application/json", authorization: `Bearer ${authToken(opts.token) ?? ""}`, "x-paigy-model": "goal-entry-v1" };
5252
5274
  let deliveryId;
5253
5275
  if ("deliveryId" in parsed) deliveryId = parsed.deliveryId;
5254
5276
  else {
5255
5277
  if (!opts.reach && readKeyFile()?.e2ee) throw new Error("Goal contact does not support E2EE yet; refusing to send plaintext.");
5256
5278
  const shaped = deriveAsk(NotifyRequestSchema.parse({ ask: parsed.ask, waiting: parsed.waiting, options: parsed.options }));
5257
- const res = ensureAuthed(await send(`${BACKEND_URL}/api/goals/${parsed.goalIds[0]}/contact`, {
5279
+ const res = ensureAuthed(await send2(`${BACKEND_URL}/api/goals/${parsed.goalIds[0]}/contact`, {
5258
5280
  method: "POST",
5259
5281
  headers,
5260
5282
  signal: opts.signal,
@@ -5266,7 +5288,7 @@ async function contact(input, opts = {}) {
5266
5288
  if (!deliveryId) throw new Error("Goal contact returned no Delivery identity");
5267
5289
  }
5268
5290
  const read = async (signal2) => {
5269
- const res = ensureAuthed(await send(`${BACKEND_URL}/api/deliveries/${encodeURIComponent(deliveryId)}`, { headers, signal: signal2 }));
5291
+ const res = ensureAuthed(await send2(`${BACKEND_URL}/api/deliveries/${encodeURIComponent(deliveryId)}`, { headers, signal: signal2 }));
5270
5292
  if (!res.ok) await fail("read_delivery", res);
5271
5293
  return await res.json();
5272
5294
  };
@@ -10,7 +10,7 @@ import {
10
10
  saveToken,
11
11
  sleep,
12
12
  startE2ee
13
- } from "./chunk-UZPBDJ37.js";
13
+ } from "./chunk-BT5S7VT2.js";
14
14
 
15
15
  // src/identity.ts
16
16
  var CLIENT_LABELS = {
@@ -2,10 +2,10 @@ import {
2
2
  AGENT_TOOLS,
3
3
  mcpInputSchema,
4
4
  serverInstructions
5
- } from "./chunk-4XG3YLGY.js";
5
+ } from "./chunk-XOL6UX6P.js";
6
6
  import {
7
7
  AGENT_NAME
8
- } from "./chunk-UZPBDJ37.js";
8
+ } from "./chunk-BT5S7VT2.js";
9
9
 
10
10
  // src/toolset.ts
11
11
  var ONBOARD_DESCRIPTION = "Get this agent talking to Paigy \u2014 call it FIRST, before contact, and any time you're unsure who you are. One call, and it does whatever the situation needs: NOT SET UP \u2192 hatches an identity instantly if this machine holds a device credential (the user ran the Paigy desktop app or harness), otherwise starts the code ceremony; ALREADY SET UP \u2192 returns your current identity and offers the two things left to decide, renaming it or unpairing; TOKEN NO LONGER VALID \u2192 says so, then re-pairs. Pass { name, voice } to choose who you are when hatching, or to RENAME yourself when already set up (voices: rachel, george, jessica, brian, lily). Safe to call any time: idempotent, and it never writes settings \u2014 the tool-allowlist state it reports is read-only. If it returns a `user_code`, print it to the user immediately and call onboard again with the `device_code`. If it returns `enable_command`, PRINT that command for the user to run \u2014 you cannot apply it yourself (it writes your own permission allowlist, which hosts block as privilege escalation), so print it, don't wait for it, and carry on.";
@@ -62,6 +62,9 @@ var CONTACT_SCHEMA = { type: "object", ...mcpInputSchema(ContactSchema) };
62
62
  var CONTACT_DESCRIPTION = "Contact the user about exactly one existing Goal: pass goalIds:[goalId], ask, channel:'notification'|'call', and waiting:'none'|'hard'. Options supply choices. Notification returns immediately; collect durable answers with claim_goal/get_goal. On stdio, a Call holds one cancellable ~45s window; continue with ONLY {deliveryId}. Continuation sends nothing and rereads the same durable evidence, including previously read answers. Entries retain authorship and provenance; accepted decisions are separate from quoted speech. Call state open does not mean ringing. Unsupported: soft waiting, multiple Goals/questions, outcome admission, and re-presentation of an existing request. Create a Goal explicitly first; never resend a pending ask to continue waiting.";
63
63
  var CreateGoalSchema = z2.object({
64
64
  outcome: z2.string().trim().min(1).max(1e4),
65
+ /** The work's NAME (#2115) — one to five words, how a person refers to it out loud ("the night
66
+ * rings"). Omit it and the brain writes one at admission from the outcome. */
67
+ title: z2.string().trim().min(1).max(80).optional(),
65
68
  ownerParticipant: z2.string().trim().min(1).optional(),
66
69
  idempotencyKey: z2.string().trim().min(1).max(200),
67
70
  /** A past conversation this Goal should be read against — History's "new session from this"
@@ -81,11 +84,14 @@ var CreateGoalSchema = z2.object({
81
84
  var CreateGoalToolSchema = CreateGoalSchema.extend({
82
85
  idempotencyKey: CreateGoalSchema.shape.idempotencyKey.optional().describe("Optional. One is minted per call; pass your own only so a retry lands on the same Goal.")
83
86
  }).strict();
84
- var CREATE_GOAL_DESCRIPTION = "Create a durable Goal for an outcome. Without parentGoalId it is placed against your open Goals: if one already IS this work, that Goal comes back (existing: true) and nothing new is created \u2014 continue it; if the work belongs under one, it is created there (parentGoalId in the receipt); otherwise it is a root. Pass parentGoalId yourself to put it under a specific Goal. Admission only: the owner must claim it before doing work, then update it as it advances. Returns an admission receipt with goalId, current state, revision, ownerParticipant, and the next step; no Goal content or execution lease.";
87
+ var CREATE_GOAL_DESCRIPTION = 'Create a durable Goal for an outcome. Without parentGoalId it is placed against your open Goals: if one already IS this work, that Goal comes back (existing: true) and nothing new is created \u2014 continue it; if the work belongs under one, it is created there (parentGoalId in the receipt); otherwise it is a root. Pass parentGoalId yourself to put it under a specific Goal. Pass title to name it in one to five words, as a person would refer to it out loud ("the night rings") \u2014 it heads every list and is spoken on a call; without one the brain writes it. Admission only: the owner must claim it before doing work, then update it as it advances. Returns an admission receipt with goalId, current state, revision, ownerParticipant, and the next step; no Goal content or execution lease.';
85
88
  var UpdateGoalSchema = z2.object({
86
89
  revision: z2.number().int().positive(),
87
90
  changes: z2.object({
88
91
  outcome: z2.string().trim().min(1).max(1e4).optional(),
92
+ /** The work's NAME (#2115) — one to five words, how a person refers to it out loud. The
93
+ * brain writes one at admission; this is the owner saying it better. Null clears it. */
94
+ title: z2.string().trim().min(1).max(80).nullable().optional(),
89
95
  ownerParticipant: z2.string().trim().min(1).optional(),
90
96
  parentGoalId: z2.string().uuid().nullable().optional(),
91
97
  dependencies: z2.array(z2.object({ goalId: z2.string().uuid(), gate: z2.enum(["start", "finish"]) }).strict()).optional(),
@@ -102,7 +108,7 @@ var UpdateGoalToolSchema = UpdateGoalSchema.omit({ operationId: true }).extend({
102
108
  var ClaimGoalSchema = z2.object({ goalId: z2.string().uuid().optional() }).strict();
103
109
  var GetGoalSchema = z2.object({ goalId: z2.string().uuid() }).strict();
104
110
  var GET_GOAL_DESCRIPTION = "Read one Goal without claiming it: its outcome, state, revision, progress, blockers, the conversation on it (each question with its options and what was decided), and `next`, the one step to take. Foreign or sibling-owned Goals are not disclosed.";
105
- var UPDATE_GOAL_DESCRIPTION = "Update an owned Goal at an exact revision. State, ownership, dependencies, children, progress, and review acknowledgement are explicit; stale revisions are rejected. reviewed: true acknowledges new evidence and closes the Deliveries addressed to you on that Goal, never over an open decision. dueAt (an ISO instant, or null) makes the Goal wait until then; when it passes you are woken for it \u2014 use it for a promise to follow up later. Returns the Goal as get_goal reads it, at its new revision.";
111
+ var UPDATE_GOAL_DESCRIPTION = "Update an owned Goal at an exact revision. State, ownership, dependencies, children, progress, title, and review acknowledgement are explicit; stale revisions are rejected. title is the work's name in one to five words, as a person would refer to it out loud (it is spoken on a call and heads every list); null clears it. reviewed: true acknowledges new evidence and closes the Deliveries addressed to you on that Goal, never over an open decision. dueAt (an ISO instant, or null) makes the Goal wait until then; when it passes you are woken for it \u2014 use it for a promise to follow up later. Returns the Goal as get_goal reads it, at its new revision.";
106
112
  var CLAIM_GOAL_DESCRIPTION = "Claim the oldest runnable or review-pending Goal you own, or pass goalId to claim that Goal. Returns the Goal as get_goal reads it, and creates or renews the execution lease.";
107
113
  var CHECK_REPLIES_DESCRIPTION = "Your open Deliveries: every Notification or Call currently addressed to you \u2014 a request the user started toward you, an answer relayed to something you asked, a handoff \u2014 one row each: its Goals, how many decisions are still open, and the newest words in brief. A pure read with no arguments: nothing is consumed, acknowledged or claimed by reading it, so call it on startup, after a long wait, or whenever you want to know what is outstanding. To act on one, claim its Goal (claim_goal) or reread it in full with contact({deliveryId}). Once you have acted on what arrived, update_goal with reviewed: true closes the Deliveries addressed to you on that Goal. Your runnable and review-pending Goals come from claim_goal, not from here.";
108
114
  var CheckRepliesSchema = z2.object({}).strict();
@@ -143,6 +149,7 @@ function entryWords(entry) {
143
149
  }
144
150
  return entry.sources.map((source) => source.text).join("\n");
145
151
  }
152
+ var LIVE_MS = 3 * 6e4;
146
153
  var ContextSchema = z3.object({
147
154
  title: z3.string().min(1).describe("One-line headline of what you need (required, non-empty)."),
148
155
  description: z3.array(z3.string().min(1)).describe(
@@ -924,7 +931,19 @@ var QueueQuestionSchema = z3.object({
924
931
  /** The ruling in the person's own words, from the contribution that replied — not the
925
932
  * option id, which is not something anyone reads back. Null while it is open, and null
926
933
  * for a settled question whose reply carried nothing readable. */
927
- answer: z3.string().nullable().default(null)
934
+ answer: z3.string().nullable().default(null),
935
+ /** The Goal this question belongs to — a step knows its Goal on its own, not only through
936
+ * an `InboxItem`'s `communication.goalIds[0]` (walk/design.md §12 item 3).
937
+ * READ BY `apps/client/src/walk/order.ts`, which stamps it onto every `WalkStep`: the walk's
938
+ * order, its route, home's trees and the list of steps all take a step's Goal from here, so
939
+ * this is the field they agree through rather than each re-deriving it from the row it
940
+ * arrived under. Required because the API projects it on every need it sends. */
941
+ goalId: z3.string(),
942
+ /** True only while an unmet START gate holds the Goal — a Goal that merely waits to
943
+ * *finish* does not stop a person from answering (owner, 2026-09-16: "per need gate from
944
+ * the API"; §4's dashed node). Not the same fact as `QueueItem.blocked`, which counts any
945
+ * gate at all. */
946
+ blocked: z3.boolean().default(false)
928
947
  });
929
948
  var QueueItemSchema = z3.object({
930
949
  id: z3.string(),
package/dist/enable.js CHANGED
@@ -2,9 +2,9 @@
2
2
  import {
3
3
  PAIGY_TOOL_IDS,
4
4
  enablePaigyTools
5
- } from "./chunk-CAKRIAGP.js";
6
- import "./chunk-4XG3YLGY.js";
7
- import "./chunk-UZPBDJ37.js";
5
+ } from "./chunk-GQ5J6WW5.js";
6
+ import "./chunk-XOL6UX6P.js";
7
+ import "./chunk-BT5S7VT2.js";
8
8
 
9
9
  // src/enable.ts
10
10
  function main() {
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  resolvePairing,
6
6
  startPairing,
7
7
  suggestedAgentName
8
- } from "./chunk-RJV6U6U4.js";
8
+ } from "./chunk-DRRAJMEE.js";
9
9
  import {
10
10
  ENABLE_COMMAND,
11
11
  OnboardSchema,
@@ -16,8 +16,8 @@ import {
16
16
  autoConfigureClients,
17
17
  claudeInstallHint,
18
18
  paigyToolsAllowlisted
19
- } from "./chunk-CAKRIAGP.js";
20
- import "./chunk-4XG3YLGY.js";
19
+ } from "./chunk-GQ5J6WW5.js";
20
+ import "./chunk-XOL6UX6P.js";
21
21
  import {
22
22
  clearSurface,
23
23
  writeSurface
@@ -38,7 +38,7 @@ import {
38
38
  setIdentity,
39
39
  slotName,
40
40
  whoAmI
41
- } from "./chunk-UZPBDJ37.js";
41
+ } from "./chunk-BT5S7VT2.js";
42
42
 
43
43
  // src/index.ts
44
44
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
package/dist/listen.js CHANGED
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  entryWords
4
- } from "./chunk-4XG3YLGY.js";
4
+ } from "./chunk-XOL6UX6P.js";
5
5
  import {
6
6
  checkReplies,
7
7
  contact,
8
8
  getGoal,
9
9
  subscribeWake
10
- } from "./chunk-UZPBDJ37.js";
10
+ } from "./chunk-BT5S7VT2.js";
11
11
 
12
12
  // src/listen.ts
13
13
  import { spawn } from "child_process";
package/dist/onboard.js CHANGED
@@ -3,13 +3,13 @@ import {
3
3
  resolvePairing,
4
4
  startPairing,
5
5
  suggestedAgentName
6
- } from "./chunk-RJV6U6U4.js";
6
+ } from "./chunk-DRRAJMEE.js";
7
7
  import {
8
8
  autoConfigureClients,
9
9
  claudeInstallHint,
10
10
  openBrowser
11
- } from "./chunk-CAKRIAGP.js";
12
- import "./chunk-4XG3YLGY.js";
11
+ } from "./chunk-GQ5J6WW5.js";
12
+ import "./chunk-XOL6UX6P.js";
13
13
  import {
14
14
  AGENT_NAME,
15
15
  TOKEN_PATH,
@@ -20,7 +20,7 @@ import {
20
20
  saveToken,
21
21
  setIdentity,
22
22
  whoAmI
23
- } from "./chunk-UZPBDJ37.js";
23
+ } from "./chunk-BT5S7VT2.js";
24
24
 
25
25
  // src/onboard.ts
26
26
  function reportRegistered() {
package/dist/slot.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  AGENT_NAME
4
- } from "./chunk-UZPBDJ37.js";
4
+ } from "./chunk-BT5S7VT2.js";
5
5
 
6
6
  // src/slot.ts
7
7
  process.stdout.write(AGENT_NAME);
@@ -7,7 +7,7 @@ import {
7
7
  readToken,
8
8
  sessionSlot,
9
9
  slotName
10
- } from "./chunk-UZPBDJ37.js";
10
+ } from "./chunk-BT5S7VT2.js";
11
11
 
12
12
  // src/statusline.ts
13
13
  import { realpathSync } from "fs";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paigy/mcp",
3
- "version": "0.40.7",
3
+ "version": "0.40.8",
4
4
  "description": "Paigy MCP server — the AI agent harness that calls you. Lets an agent notify a user and await their reply.",
5
5
  "license": "MIT",
6
6
  "type": "module",