@paigy/mcp 0.40.15 → 0.40.16
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/{chunk-PHTQITTC.js → chunk-6OBUH2FB.js} +7 -2
- package/dist/{chunk-37FS33UP.js → chunk-JWMR6K6D.js} +2 -2
- package/dist/{chunk-X6G7XXCP.js → chunk-OGTH55QH.js} +1 -1
- package/dist/{chunk-SE2JCKDI.js → chunk-SFGGZLVO.js} +1 -1
- package/dist/{dist-DKP3DJQJ.js → dist-6F22VALF.js} +1 -1
- package/dist/enable.js +3 -3
- package/dist/index.js +4 -4
- package/dist/listen.js +10 -7
- package/dist/onboard.js +4 -4
- package/dist/slot.js +1 -1
- package/dist/stalled.js +1 -1
- package/dist/statusline.js +1 -1
- package/package.json +1 -1
|
@@ -1585,7 +1585,7 @@ var GetGoalSchema = z3.object({ goalId: z3.string().uuid() }).strict();
|
|
|
1585
1585
|
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.";
|
|
1586
1586
|
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.";
|
|
1587
1587
|
var CLAIM_GOAL_DESCRIPTION = "Claim the oldest runnable or review-pending Goal you own, or pass goalId to claim that Goal. Another agent's Goal that has gone quiet for 3 days (check_replies lists them as stalledOthers) is taken over when you claim it, and becomes yours to finish or cancel. Returns the Goal as get_goal reads it, and creates or renews the execution lease.";
|
|
1588
|
-
var CHECK_REPLIES_DESCRIPTION = "
|
|
1588
|
+
var CHECK_REPLIES_DESCRIPTION = "What is waiting for you: your open Deliveries (a request the user started toward you, a handoff), one row each with its Goals, how many decisions are still open, and the newest words in brief; and `review`, your Goals with something new on them \u2014 the user's answers and notes are Entries on the Goal, not Deliveries. 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 a Delivery in full with contact({deliveryId}). Once you have acted on what arrived, update_goal with reviewed: true clears the Goal from `review` and closes the Deliveries addressed to you on it.";
|
|
1589
1589
|
var CheckRepliesSchema = z3.object({}).strict();
|
|
1590
1590
|
var AGENT_TOOLS = [
|
|
1591
1591
|
{ name: "contact", description: CONTACT_DESCRIPTION, inputSchema: CONTACT_SCHEMA },
|
|
@@ -3057,6 +3057,7 @@ function deliveryView(d) {
|
|
|
3057
3057
|
}
|
|
3058
3058
|
function repliesView(r) {
|
|
3059
3059
|
const deliveries = r.deliveries ?? [];
|
|
3060
|
+
const review = r.review ?? [];
|
|
3060
3061
|
const stalled = r.stalled ?? [];
|
|
3061
3062
|
const others = r.stalledOthers ?? [];
|
|
3062
3063
|
return {
|
|
@@ -3067,13 +3068,17 @@ function repliesView(r) {
|
|
|
3067
3068
|
openDecisions: d.decisionNeeds.filter((n) => n.state === "open").length || void 0,
|
|
3068
3069
|
latest: "about" in d ? d.about : void 0
|
|
3069
3070
|
})),
|
|
3071
|
+
// NEW ON YOUR GOALS (owner, 2026-09-23): a reply is an Entry on the Goal, not a Delivery, so the
|
|
3072
|
+
// Goals flagged for your review are listed here until you acknowledge them.
|
|
3073
|
+
...review.length ? { review } : {},
|
|
3070
3074
|
// YOUR STALLED WORK (#2257): Goals you own with no progress for three days. Named here so an
|
|
3071
3075
|
// agent that reads its replies also sees what it left, and says what to do about each.
|
|
3072
3076
|
...stalled.length ? { stalled } : {},
|
|
3073
3077
|
// OTHER AGENTS' STALLED WORK (owner, 2026-09-23): any agent may take it over and close it.
|
|
3074
3078
|
...others.length ? { stalledOthers: others } : {},
|
|
3075
3079
|
next: [
|
|
3076
|
-
deliveries.length ? "Act on a Goal with claim_goal; reread one Delivery in full with contact({deliveryId})." : "Nothing is waiting.",
|
|
3080
|
+
deliveries.length || review.length ? "Act on a Goal with claim_goal; reread one Delivery in full with contact({deliveryId})." : "Nothing is waiting.",
|
|
3081
|
+
...review.length ? [`${review.length} of your Goals have something new (review): read each with claim_goal or get_goal, then update_goal with reviewed: true.`] : [],
|
|
3077
3082
|
...stalled.length ? [`${stalled.length} of your Goals have had no progress for 3 days: update_goal each with progress, finish it, or cancel it.`] : [],
|
|
3078
3083
|
...others.length ? [`${others.length} of other agents' Goals have gone quiet for 3 days: claim_goal({goalId}) takes one over, then finish or cancel it with update_goal.`] : []
|
|
3079
3084
|
].join(" ")
|
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
serverInstructions,
|
|
5
5
|
sessionStartHook,
|
|
6
6
|
withSessionStartHook
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-SFGGZLVO.js";
|
|
8
8
|
import {
|
|
9
9
|
agentName
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-6OBUH2FB.js";
|
|
11
11
|
|
|
12
12
|
// src/toolset.ts
|
|
13
13
|
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.";
|
|
@@ -117,7 +117,7 @@ var GetGoalSchema = z3.object({ goalId: z3.string().uuid() }).strict();
|
|
|
117
117
|
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.";
|
|
118
118
|
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.";
|
|
119
119
|
var CLAIM_GOAL_DESCRIPTION = "Claim the oldest runnable or review-pending Goal you own, or pass goalId to claim that Goal. Another agent's Goal that has gone quiet for 3 days (check_replies lists them as stalledOthers) is taken over when you claim it, and becomes yours to finish or cancel. Returns the Goal as get_goal reads it, and creates or renews the execution lease.";
|
|
120
|
-
var CHECK_REPLIES_DESCRIPTION = "
|
|
120
|
+
var CHECK_REPLIES_DESCRIPTION = "What is waiting for you: your open Deliveries (a request the user started toward you, a handoff), one row each with its Goals, how many decisions are still open, and the newest words in brief; and `review`, your Goals with something new on them \u2014 the user's answers and notes are Entries on the Goal, not Deliveries. 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 a Delivery in full with contact({deliveryId}). Once you have acted on what arrived, update_goal with reviewed: true clears the Goal from `review` and closes the Deliveries addressed to you on it.";
|
|
121
121
|
var CheckRepliesSchema = z3.object({}).strict();
|
|
122
122
|
var AGENT_TOOLS = [
|
|
123
123
|
{ name: "contact", description: CONTACT_DESCRIPTION, inputSchema: CONTACT_SCHEMA },
|
package/dist/enable.js
CHANGED
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
PAIGY_TOOL_IDS,
|
|
4
4
|
enablePaigyTools,
|
|
5
5
|
installSessionListening
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-JWMR6K6D.js";
|
|
7
|
+
import "./chunk-SFGGZLVO.js";
|
|
8
|
+
import "./chunk-6OBUH2FB.js";
|
|
9
9
|
|
|
10
10
|
// src/enable.ts
|
|
11
11
|
function main() {
|
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
resolvePairing,
|
|
6
6
|
startPairing,
|
|
7
7
|
suggestedAgentName
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OGTH55QH.js";
|
|
9
9
|
import {
|
|
10
10
|
ENABLE_COMMAND,
|
|
11
11
|
OnboardSchema,
|
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
SERVER_INSTRUCTIONS,
|
|
15
15
|
TOOLS,
|
|
16
16
|
paigyToolsAllowlisted
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-JWMR6K6D.js";
|
|
18
18
|
import {
|
|
19
19
|
decideListen,
|
|
20
20
|
listenerAlive
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-SFGGZLVO.js";
|
|
22
22
|
import {
|
|
23
23
|
clearSurface,
|
|
24
24
|
writeSurface
|
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
setIdentity,
|
|
40
40
|
slotName,
|
|
41
41
|
whoAmI
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-6OBUH2FB.js";
|
|
43
43
|
|
|
44
44
|
// src/index.ts
|
|
45
45
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
package/dist/listen.js
CHANGED
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
entryWords,
|
|
4
4
|
removeListenMark,
|
|
5
5
|
writeListenMark
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-SFGGZLVO.js";
|
|
7
7
|
import {
|
|
8
8
|
agentName,
|
|
9
9
|
checkReplies,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
getGoal,
|
|
12
12
|
slotName,
|
|
13
13
|
subscribeWake
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-6OBUH2FB.js";
|
|
15
15
|
|
|
16
16
|
// src/listen.ts
|
|
17
17
|
import { spawn } from "child_process";
|
|
@@ -133,11 +133,14 @@ function leadOf(deliveries, goalId) {
|
|
|
133
133
|
function brief(waiting, reason, as, goalId) {
|
|
134
134
|
const lead = leadOf(waiting.deliveries, goalId);
|
|
135
135
|
const stalled = waiting.stalled?.length ? ` \xB7 ${waiting.stalled.length} of your Goals stalled 3+ days: update, finish or cancel each` : "";
|
|
136
|
-
|
|
136
|
+
const review = waiting.review ?? [];
|
|
137
|
+
const named = (goalId ? review.find((g) => g.goalId === goalId) : void 0) ?? review[0];
|
|
138
|
+
const fresh = review.length ? ` \xB7 new on ${review.length === 1 ? "your Goal" : `${review.length} of your Goals`}, first ${named.goalId} ("${named.title}"): claim_goal to read it` : "";
|
|
139
|
+
if (!lead) return `Paigy \xB7 ${reason === "boot" ? `listening as ${as}` : reason}${fresh || " \xB7 nothing waiting"}${stalled}`;
|
|
137
140
|
const said = saidIn(lead) || ("about" in lead ? lead.about : "");
|
|
138
141
|
const shown = said.length > 160 ? `${said.slice(0, 160)}\u2026` : said;
|
|
139
142
|
const goal = waiting.goal?.goalId ?? lead.goalIds[0];
|
|
140
|
-
return `Paigy \xB7 ${reason} \xB7 ${waiting.deliveries.length} waiting \xB7 lead ${lead.deliveryId} on Goal ${goal}: "${shown}"${stalled}`;
|
|
143
|
+
return `Paigy \xB7 ${reason} \xB7 ${waiting.deliveries.length} waiting \xB7 lead ${lead.deliveryId} on Goal ${goal}: "${shown}"${fresh}${stalled}`;
|
|
141
144
|
}
|
|
142
145
|
function launchEnv(waiting, reason, goalId) {
|
|
143
146
|
const env = { PAIGY_WORK: JSON.stringify(waiting), PAIGY_EVENT: reason };
|
|
@@ -154,16 +157,16 @@ function launchEnv(waiting, reason, goalId) {
|
|
|
154
157
|
async function sweep(reason, goalId) {
|
|
155
158
|
try {
|
|
156
159
|
const cmd = process.env.PAIGY_ON_WAKE;
|
|
157
|
-
const { deliveries: rows, stalled } = await checkReplies();
|
|
160
|
+
const { deliveries: rows, stalled, review } = await checkReplies();
|
|
158
161
|
const lead = leadOf(rows, goalId);
|
|
159
162
|
const full = lead ? await contact({ deliveryId: lead.deliveryId }, { waits: false }).then((d) => "recorded" in d ? null : d).catch(() => null) : null;
|
|
160
163
|
const deliveries = rows.map((d) => d === lead && full ? full : d);
|
|
161
164
|
const leadGoalId = lead?.goalIds[0];
|
|
162
165
|
const goal = leadGoalId ? await getGoal(leadGoalId).then((g) => ({ goalId: leadGoalId, progress: g.progress })).catch(() => null) : null;
|
|
163
|
-
const waiting = { deliveries, goal, ...stalled?.length ? { stalled } : {} };
|
|
166
|
+
const waiting = { deliveries, goal, ...stalled?.length ? { stalled } : {}, ...review?.length ? { review } : {} };
|
|
164
167
|
if (BRIEF) line(brief(waiting, reason, listeningAs(), goalId));
|
|
165
168
|
else emit({ type: "sweep", reason, ...goalId ? { about: goalId } : {}, ...waiting });
|
|
166
|
-
if (cmd && (deliveries.length || reason === "boot" && waiting.stalled?.length)) {
|
|
169
|
+
if (cmd && (deliveries.length || waiting.review?.length || reason === "boot" && waiting.stalled?.length)) {
|
|
167
170
|
spawn(cmd, { shell: true, stdio: "inherit", env: { ...process.env, ...launchEnv(waiting, reason, goalId) } });
|
|
168
171
|
}
|
|
169
172
|
} catch (e) {
|
package/dist/onboard.js
CHANGED
|
@@ -3,13 +3,13 @@ import {
|
|
|
3
3
|
resolvePairing,
|
|
4
4
|
startPairing,
|
|
5
5
|
suggestedAgentName
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OGTH55QH.js";
|
|
7
7
|
import {
|
|
8
8
|
autoConfigureClients,
|
|
9
9
|
claudeInstallHint,
|
|
10
10
|
openBrowser
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-JWMR6K6D.js";
|
|
12
|
+
import "./chunk-SFGGZLVO.js";
|
|
13
13
|
import {
|
|
14
14
|
TOKEN_PATH,
|
|
15
15
|
agentName,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
saveToken,
|
|
21
21
|
setIdentity,
|
|
22
22
|
whoAmI
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-6OBUH2FB.js";
|
|
24
24
|
|
|
25
25
|
// src/onboard.ts
|
|
26
26
|
function reportRegistered() {
|
package/dist/slot.js
CHANGED
package/dist/stalled.js
CHANGED
|
@@ -22,7 +22,7 @@ async function main() {
|
|
|
22
22
|
const dir = join(homedir(), ".paigy", "stalled-reminded");
|
|
23
23
|
const mark = join(dir, `${session || "session"}-${day}`);
|
|
24
24
|
if (existsSync(mark)) return;
|
|
25
|
-
const { checkReplies } = await import("./dist-
|
|
25
|
+
const { checkReplies } = await import("./dist-6F22VALF.js");
|
|
26
26
|
const reply = stopReply((await checkReplies()).stalled ?? []);
|
|
27
27
|
if (!reply) return;
|
|
28
28
|
mkdirSync(dir, { recursive: true });
|
package/dist/statusline.js
CHANGED
package/package.json
CHANGED