@paigy/mcp 0.40.24 → 0.40.26
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/README.md +22 -13
- package/dist/{chunk-J7T3EB5Y.js → chunk-5MQ3J6S3.js} +3 -3
- package/dist/{chunk-VUKR2E24.js → chunk-7LQKX73K.js} +788 -539
- package/dist/{chunk-TP7DM2MP.js → chunk-BLWC44CQ.js} +1 -1
- package/dist/{chunk-WR2M3RME.js → chunk-OVSAQW3K.js} +1092 -712
- package/dist/{dist-EKLTLANV.js → dist-WGFUXFS4.js} +15 -7
- package/dist/enable.js +3 -3
- package/dist/index.js +16 -8
- package/dist/listen.js +9 -8
- package/dist/onboard.js +4 -4
- package/dist/slot.js +1 -1
- package/dist/stalled.js +3 -3
- package/dist/statusline.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -117,18 +117,27 @@ Then pair: `PAIGY_AGENT=gemini npx -p @paigy/mcp@latest paigy-mcp-onboard`.
|
|
|
117
117
|
## Tools
|
|
118
118
|
|
|
119
119
|
One catalog, on every transport (2026-09-11): the agent tools are `AGENT_TOOLS` in
|
|
120
|
-
`packages/schema/src/tools.ts` —
|
|
121
|
-
get_goal,
|
|
120
|
+
`packages/schema/src/tools.ts` — who_is_working, contact, manage_goals, claim_goal,
|
|
121
|
+
get_goal, search, send_feedback — and both this server and the hosted MCP
|
|
122
122
|
(`apps/api/src/mcp`) publish that list and dispatch it through the SDK's one `runTool`.
|
|
123
123
|
This server adds only onboard, pair and unpair, the tools that mint and delete the token
|
|
124
|
-
file this machine holds. See the [SDK contract](../../packages/sdk/README.md) for the
|
|
125
|
-
|
|
126
|
-
~45-second window here
|
|
127
|
-
contact({
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
124
|
+
file this machine holds, and listen. See the [SDK contract](../../packages/sdk/README.md) for the
|
|
125
|
+
contact shape. Sending returns immediately unless it asks to `wait`: `wait: true` holds one
|
|
126
|
+
cancellable ~45-second window here for a response to what was sent (the hosted transport
|
|
127
|
+
returns after one read), and `contact({})` holds one for anything addressed to you; after an
|
|
128
|
+
`expired` window, wait again without sending again. Every Goal a contact names must already
|
|
129
|
+
exist (create it with manage_goals); a question with `workItBlocks` asks for a call; a
|
|
130
|
+
question, an update or an answer is at most 250 characters with its context in `units`; and
|
|
131
|
+
`withdrawQuestionIds` takes back a question of yours. `update_goal` is gone (2026-10-07): progress
|
|
132
|
+
is a contact update (one the person does not need yet is kept as the Goal's progress), a review is
|
|
133
|
+
acknowledged with `ackEventIds`, and a Goal is postponed with manage_goals `defer` (you are woken
|
|
134
|
+
when its time comes). Durable Entries and accepted answers can
|
|
135
|
+
repeat on reads; contact with nothing to send receives what is addressed to you (a request the
|
|
136
|
+
user started toward you, an answer relayed to something you asked, a handoff, a question you owe) without
|
|
137
|
+
consuming any of it until you acknowledge it (`ackEventIds`), and claim_goal is the catch-up for
|
|
138
|
+
your own Goals. manage_goals creates, edits, assigns, organizes and closes work, a change at a
|
|
139
|
+
time. Bookkeeping (`operationId`, the manage request id, the revision an edit was read at) is
|
|
140
|
+
minted here, never asked of the model. Retired
|
|
132
141
|
reply-lease/ACK/work/callback tools and hidden notification aliases are rejected.
|
|
133
142
|
|
|
134
143
|
The standalone listener below is still a **legacy host and target-release blocker**.
|
|
@@ -154,7 +163,7 @@ wake channel and reads what is waiting on every nudge. Keep it alive past the te
|
|
|
154
163
|
with `paigy-listen --install` (launchd on macOS, systemd user unit on Linux;
|
|
155
164
|
`--uninstall` removes it).
|
|
156
165
|
|
|
157
|
-
The read is `
|
|
166
|
+
The read is `receive` (behind `contact({})`) — the open Deliveries addressed to this agent — and it
|
|
158
167
|
**consumes nothing**: no lease, no acknowledgement, and the same read twice returns the
|
|
159
168
|
same list. So the daemon hands the launcher what it found and stops there; claiming is
|
|
160
169
|
the agent's own first act (`claim_goal`), because the daemon shares this machine's
|
|
@@ -169,7 +178,7 @@ To launch an agent — any agent, not just Claude — when work arrives, set
|
|
|
169
178
|
| `PAIGY_WORK` | everything the wake found, as JSON (`deliveries`, `goal`) |
|
|
170
179
|
| `PAIGY_EVENT` | the wake that caused this run — `boot`, `wake:reply`, `wake:request`… |
|
|
171
180
|
| `PAIGY_PARENT_ID` | the thread to continue on (`PAIGY_THREAD_ID` is the same value, for existing scripts) |
|
|
172
|
-
| `PAIGY_DELIVERY_ID` | the Delivery being acted on
|
|
181
|
+
| `PAIGY_DELIVERY_ID` | the Delivery being acted on (`get_goal` on `PAIGY_GOAL_ID` reads its conversation) |
|
|
173
182
|
| `PAIGY_GOAL_ID` | the Goal it belongs to — `claim_goal` it **first** |
|
|
174
183
|
| `PAIGY_TEXT` | what the person said, in prose |
|
|
175
184
|
|
|
@@ -231,7 +240,7 @@ codex exec "Paigy goal $PAIGY_GOAL_ID. claim_goal it first. The user said: $PAIG
|
|
|
231
240
|
## Stalled work (turn-end hook — Claude Code, Codex, Gemini CLI, Antigravity)
|
|
232
241
|
|
|
233
242
|
An agent that goes quiet leaves its Goals behind. Three things hand it that work back, all
|
|
234
|
-
reading one rule (no progress for 3 days, `COLD_AFTER_MS`): `
|
|
243
|
+
reading one rule (no progress for 3 days, `COLD_AFTER_MS`): `contact({})` lists it under
|
|
235
244
|
`stalled`, `paigy-listen` carries it in `PAIGY_WORK` (and launches for it on boot), and this
|
|
236
245
|
hook holds a session's turn end once a day to list it. One program, four tools:
|
|
237
246
|
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
serverInstructions,
|
|
5
5
|
sessionStartHook,
|
|
6
6
|
withSessionStartHook
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7LQKX73K.js";
|
|
8
8
|
import {
|
|
9
9
|
CODEX_ENV,
|
|
10
10
|
agentName,
|
|
11
11
|
withCodexEnv
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-OVSAQW3K.js";
|
|
13
13
|
|
|
14
14
|
// src/toolset.ts
|
|
15
15
|
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.";
|
|
@@ -51,7 +51,7 @@ var IDENTITY_TOOLS = [
|
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
name: "listen",
|
|
54
|
-
description: "Am I listening for answers, and can Paigy resume this session? Takes no arguments. Returns status `listening` for harness delivery or a running listener with a ready wake adapter; `receiving` means a process is running but automatic resume is not confirmed (read its wake error or watch its output); `unpaired` means call onboard; `start` gives the exact command to run NOW as a watched background task for this session. Start it once. Codex queues into CODEX_THREAD_ID automatically when its CLI supports queue; PAIGY_ON_WAKE overrides it. A successful queue is not evidence the agent handled the answer:
|
|
54
|
+
description: "Am I listening for answers, and can Paigy resume this session? Takes no arguments. Returns status `listening` for harness delivery or a running listener with a ready wake adapter; `receiving` means a process is running but automatic resume is not confirmed (read its wake error or watch its output); `unpaired` means call onboard; `start` gives the exact command to run NOW as a watched background task for this session. Start it once. Codex queues into CODEX_THREAD_ID automatically when its CLI supports queue; PAIGY_ON_WAKE overrides it. A successful queue is not evidence the agent handled the answer: receive with contact({ wait: false }) and read the relevant Goal, then respond with contact. This tool never subscribes or starts anything itself.",
|
|
55
55
|
inputSchema: mcpInputSchema(z.object({}))
|
|
56
56
|
}
|
|
57
57
|
];
|