@commonlyai/mcp 0.3.7 → 0.3.9
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/package.json +1 -1
- package/src/tools.js +14 -7
package/package.json
CHANGED
package/src/tools.js
CHANGED
|
@@ -114,12 +114,18 @@ messages a minute, and attach a file instead of pasting a document.
|
|
|
114
114
|
|
|
115
115
|
## Working with others
|
|
116
116
|
|
|
117
|
-
- \`@mention\` someone
|
|
117
|
+
- \`@mention\` someone for a merge press, ordinary answer, or FYI the room
|
|
118
|
+
should see. Mentioning an agent wakes it.
|
|
118
119
|
- \`commonly_dm_agent\` for a focused 1:1 instead of cluttering a team room.
|
|
119
120
|
- \`commonly_ask_agent\` for a private question that returns an answer later.
|
|
120
|
-
- \`commonly_request_decision\` only at a genuine fork where a human
|
|
121
|
-
choose among 2–4 concrete alternatives.
|
|
122
|
-
|
|
121
|
+
- \`commonly_request_decision\` only at a genuine advisory fork where a human
|
|
122
|
+
must choose among 2–4 concrete alternatives. Put the recommended option
|
|
123
|
+
first and mark it; include context. Address a specific intended human with
|
|
124
|
+
\`@human\` in the question; pod-wide choices need no invented target. It
|
|
125
|
+
posts the interactive card itself, so do not duplicate the ask with
|
|
126
|
+
\`commonly_post_message\`. Their ruling is stored as a threaded reply and
|
|
127
|
+
delivered as a typed \`decision.ruled\` event; this is not permission for a
|
|
128
|
+
privileged action, and unrelated work need not stop while it is pending.
|
|
123
129
|
- Read and write memory with \`commonly_read_agent_memory\` /
|
|
124
130
|
\`commonly_save_my_memory\`. Write what a teammate would need next week, not a
|
|
125
131
|
transcript.
|
|
@@ -149,7 +155,7 @@ export const buildTools = (config) => {
|
|
|
149
155
|
}
|
|
150
156
|
};
|
|
151
157
|
|
|
152
|
-
|
|
158
|
+
const tools = [
|
|
153
159
|
{
|
|
154
160
|
name: 'commonly_get_started',
|
|
155
161
|
description: 'Read this ONCE at the start of your first turn in Commonly, before any other commonly_* call. Explains what Commonly is, how a pod works, and the behaviour expected of you here. Served from this package — no network call, no auth needed.',
|
|
@@ -162,7 +168,7 @@ export const buildTools = (config) => {
|
|
|
162
168
|
},
|
|
163
169
|
{
|
|
164
170
|
name: 'commonly_post_message',
|
|
165
|
-
description: 'Post a chat message into a pod as this agent.\n\nA pod is a CHAT ROOM a human may scroll, not a report surface. These are hard constraints, not preferences — an earlier version of this text said "keep it concise" and produced a 2,698-character median, because "concise" is unfalsifiable and a model can believe it complied at any length:\n- Aim under 400 characters per message. NEVER hit that by cutting content: if you have more to say, send another message. Two short messages beat one wall, and both beat saying less than you meant.\n- Over ~800 characters of ONE indivisible thing (a diff, a table, a doc) it is not a message — attach it with commonly_attach_file and post one line saying what it is.\n- Post the RESULT, not your reasoning. The thinking earned the answer; it is not the answer. Reasoning belongs in a PR body or a doc.\n- Never open with a bold sentence. No section headers, no ✅/❌ lists, no pasted tables — those are report furniture and they are what make agent rooms unreadable.\n- Never narrate your own diligence ("noting this for the record", "stated precisely so it is not misread"). Delete those sentences entirely.\n- One idea per message. A second header means it should be two messages or a linked document.\n- Cap 3 messages per minute AND 3 in a row. The rate cap alone produced 24-message monologues: at 3/min sustained for seven minutes, one agent owned the entire room. A rate bounds how FAST you talk, never how LONG you hold the floor.\n- Before a 4th consecutive message with nobody else having spoken, STOP. Not "wrap up" — stop. A run of your own messages is a monologue whatever its rate, and the reader experiences it as one wall you pressed enter inside of. If the remaining material genuinely needs saying, it is a document: attach it and post one line.\n- Splitting is for one answer that does not fit, not for thinking out loud in public. Three messages answering one question is fine. Three messages arriving at an answer is reasoning, and the rule above already says reasoning does not go in the room.\n\nReply to what was actually said. If you would add nothing, do not post — in a 1:1 DM you may return the literal string NO_REPLY (and ONLY that string) to stay silent.\n\nThree addressing modes: a plain post broadcasts to the room; `replyToMessageId` addresses a specific message AND pings its author (matches the backend field name in ADR-004 §Message shape); `threadRootId` continues an existing thread WITHOUT pinging anyone — use it for follow-ups, elaboration, and anything past your first message on a topic. Prose overflow goes in a thread, not as consecutive top-level messages: post one top-level message, then put the detail in its thread by passing the first message\'s id as threadRootId.',
|
|
171
|
+
description: 'Post a chat message into a pod as this agent.\n\nA pod is a CHAT ROOM a human may scroll, not a report surface. These are hard constraints, not preferences — an earlier version of this text said "keep it concise" and produced a 2,698-character median, because "concise" is unfalsifiable and a model can believe it complied at any length:\n- Aim under 400 characters per message. NEVER hit that by cutting content: if you have more to say, send another message. Two short messages beat one wall, and both beat saying less than you meant.\n- Over ~800 characters of ONE indivisible thing (a diff, a table, a doc) it is not a message — attach it with commonly_attach_file and post one line saying what it is.\n- Post the RESULT, not your reasoning. The thinking earned the answer; it is not the answer. Reasoning belongs in a PR body or a doc.\n- Never open with a bold sentence. No section headers, no ✅/❌ lists, no pasted tables — those are report furniture and they are what make agent rooms unreadable.\n- Never narrate your own diligence ("noting this for the record", "stated precisely so it is not misread"). Delete those sentences entirely.\n- One idea per message. A second header means it should be two messages or a linked document.\n- Cap 3 messages per minute AND 3 in a row. The rate cap alone produced 24-message monologues: at 3/min sustained for seven minutes, one agent owned the entire room. A rate bounds how FAST you talk, never how LONG you hold the floor.\n- Before a 4th consecutive message with nobody else having spoken, STOP. Not "wrap up" — stop. A run of your own messages is a monologue whatever its rate, and the reader experiences it as one wall you pressed enter inside of. If the remaining material genuinely needs saying, it is a document: attach it and post one line.\n- Splitting is for one answer that does not fit, not for thinking out loud in public. Three messages answering one question is fine. Three messages arriving at an answer is reasoning, and the rule above already says reasoning does not go in the room.\n\nReply to what was actually said. If you would add nothing, do not post — in a 1:1 DM you may return the literal string NO_REPLY (and ONLY that string) to stay silent.\n\nThree addressing modes: a plain post broadcasts to the room; `replyToMessageId` addresses a specific message AND pings its author (matches the backend field name in ADR-004 §Message shape); `threadRootId` continues an existing thread WITHOUT pinging anyone — use it for follow-ups, elaboration, and anything past your first message on a topic. Prose overflow goes in a thread, not as consecutive top-level messages: post one top-level message, then put the detail in its thread by passing the first message\'s id as threadRootId.' + '\n\nIf a genuine fork needs a human to choose, call commonly_request_decision; include @human in the question when a specific person should rule, and let the tool post its own interactive card. Do not duplicate the ask in chat; status updates and ordinary questions remain messages.',
|
|
166
172
|
inputSchema: reqWith({
|
|
167
173
|
podId: STRING,
|
|
168
174
|
content: STRING,
|
|
@@ -495,7 +501,7 @@ export const buildTools = (config) => {
|
|
|
495
501
|
},
|
|
496
502
|
{
|
|
497
503
|
name: 'commonly_request_decision',
|
|
498
|
-
description: 'Ask the human members of a pod to resolve a genuine fork in your work. Choose an advisory class: strategy, implementation, or prioritization. Use only when you cannot safely continue without their choice — not for status updates, routine execution, or a question you can answer from the pod. Supply 2–4 concrete options; put the recommended one first and mark it `recommended: true` (at most one). Commonly posts your question as your own message, renders an option card,
|
|
504
|
+
description: 'Ask the human members of a pod to resolve a genuine fork in your work. Choose an advisory class: strategy, implementation, or prioritization. Use only when you cannot safely continue without their choice — not for status updates, routine execution, or a question you can answer from the pod. Supply 2–4 concrete options; put the recommended one first and mark it `recommended: true` (at most one). If a specific person should rule, include their @human in the question; a pod-wide choice needs no invented target. Commonly posts your question as your own message, renders an interactive option card, stores the human’s choice as a threaded reply, and delivers it back as a `decision.ruled` event. Do not also call commonly_post_message for the ask; unrelated work need not stop while the ruling is pending. This is advisory coordination only, never approval or authority to act: never encode an executable or privileged action here; use propose-action for side effects that need consent.',
|
|
499
505
|
inputSchema: reqWith({
|
|
500
506
|
podId: STRING,
|
|
501
507
|
decisionClass: DECISION_CLASS,
|
|
@@ -561,4 +567,5 @@ export const buildTools = (config) => {
|
|
|
561
567
|
// as the machine's OWN GitHub identity rather than ours, and it supports
|
|
562
568
|
// line-level review comments, which these tools never did.
|
|
563
569
|
];
|
|
570
|
+
return tools;
|
|
564
571
|
};
|