@askmesh/mcp 0.10.3 → 0.10.4

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/index.js CHANGED
@@ -11,7 +11,7 @@ const TOKEN = process.env.ASKMESH_TOKEN;
11
11
  const URL = process.env.ASKMESH_URL || 'https://api.askmesh.dev';
12
12
  const server = new McpServer({
13
13
  name: 'askmesh',
14
- version: '0.10.3',
14
+ version: '0.10.4',
15
15
  });
16
16
  if (!TOKEN) {
17
17
  // No token — start in setup-only mode
@@ -33,8 +33,9 @@ Actions disponibles :
33
33
  - "progress" : marquer un thread comme "en cours de traitement"
34
34
  - "broadcast" : envoyer un message à toute ton équipe (notification Telegram/Slack, sans créer de thread)
35
35
  - "context" : partager ton contexte projet avec ton équipe
36
- - "setup" : installer les slash commands (/inbox, /broadcast, etc.) et la status line dans le projet courant`, {
37
- action: z.enum(['ask', 'list', 'status', 'pending', 'inbox', 'answer', 'reply', 'thread', 'close', 'my-threads', 'board', 'progress', 'broadcast', 'context', 'setup']).describe('Action à effectuer'),
36
+ - "setup" : installer les slash commands (/ask-inbox, /ask-broadcast, etc.) et la status line dans le projet courant
37
+ - "update" : vérifier les mises à jour du MCP, mettre à jour les skills et la status line`, {
38
+ action: z.enum(['ask', 'list', 'status', 'pending', 'inbox', 'answer', 'reply', 'thread', 'close', 'my-threads', 'board', 'progress', 'broadcast', 'context', 'setup', 'update']).describe('Action à effectuer'),
38
39
  username: z.string().optional().describe("Username de l'agent cible (pour ask/status)"),
39
40
  question: z.string().optional().describe('Question à poser (pour ask)'),
40
41
  requestId: z.number().optional().describe('ID de la requête (pour answer/reply/thread/close/progress)'),
@@ -212,8 +213,11 @@ Actions disponibles :
212
213
  case 'setup': {
213
214
  return setupSkillsAndStatusLine(token);
214
215
  }
216
+ case 'update': {
217
+ return await checkUpdateAndSetup();
218
+ }
215
219
  default:
216
- return text('Action inconnue. Actions disponibles : ask, list, status, pending, answer, context, setup');
220
+ return text('Action inconnue. Actions disponibles : ask, list, status, pending, answer, context, setup, update');
217
221
  }
218
222
  });
219
223
  }
@@ -243,6 +247,35 @@ Si l'utilisateur n'a pas encore de compte, dirige-le vers https://askmesh.dev po
243
247
  return text('Action inconnue.');
244
248
  });
245
249
  }
250
+ const CURRENT_VERSION = '0.10.4';
251
+ async function checkUpdateAndSetup() {
252
+ const lines = [];
253
+ lines.push(`Version actuelle : ${CURRENT_VERSION}`);
254
+ // Check latest version on npm
255
+ try {
256
+ const res = await fetch('https://registry.npmjs.org/@askmesh/mcp/latest');
257
+ const data = await res.json();
258
+ const latest = data.version;
259
+ lines.push(`Dernière version npm : ${latest}`);
260
+ if (latest !== CURRENT_VERSION) {
261
+ lines.push(`\n⚡ Mise à jour disponible ! ${CURRENT_VERSION} → ${latest}`);
262
+ lines.push(`Pour mettre à jour, relance Claude Code — npx avec @latest récupérera la nouvelle version.`);
263
+ lines.push(`Ou lance : npx clear-npx-cache && npx -y @askmesh/mcp@latest`);
264
+ }
265
+ else {
266
+ lines.push(`\n✓ Tu es à jour.`);
267
+ }
268
+ }
269
+ catch {
270
+ lines.push(`Impossible de vérifier la version npm.`);
271
+ }
272
+ // Re-run setup to update skills and status line
273
+ const setupResult = setupSkillsAndStatusLine();
274
+ const setupText = setupResult.content[0].text;
275
+ lines.push('\n---\n');
276
+ lines.push(setupText);
277
+ return text(lines.join('\n'));
278
+ }
246
279
  function text(t) {
247
280
  return { content: [{ type: 'text', text: t }] };
248
281
  }
@@ -260,6 +293,7 @@ function setupSkillsAndStatusLine(token, pollInterval, url) {
260
293
  'ask-threads.md': `Utilise l'outil MCP askmesh avec l'action "my-threads" pour afficher toutes mes conversations actives.\n\nPrésente les threads regroupés par statut :\n- En attente (pending)\n- En cours (in_progress)\n- Actifs (active)\n\nIgnore les threads clos. Pour chaque thread, montre : l'ID, qui a posé la question, le sujet, et le nombre de réponses.`,
261
294
  'ask-status.md': `Utilise l'outil MCP askmesh avec l'action "list" pour voir qui est connecté sur le réseau.\n\nAffiche la liste des membres de l'équipe avec leur statut (online/offline) de manière claire et concise.`,
262
295
  'ask-setup.md': `Utilise l'outil MCP askmesh avec l'action "setup" pour installer ou mettre à jour la configuration AskMesh dans ce projet.\n\nCela va :\n- Créer ou vérifier le .env avec le token AskMesh\n- Installer les slash commands (/ask-inbox, /ask-broadcast, etc.)\n- Configurer la status line\n- Ajouter .env au .gitignore\n\nSi l'utilisateur fournit un token dans les arguments ($ARGUMENTS), passe-le en paramètre "token".`,
296
+ 'ask-update.md': `Utilise l'outil MCP askmesh avec l'action "update" pour vérifier les mises à jour et mettre à jour les skills et la status line.\n\nCela va :\n- Vérifier si une nouvelle version du MCP est disponible sur npm\n- Mettre à jour les slash commands\n- Mettre à jour le script de status line\n\nSi une mise à jour est disponible, indique à l'utilisateur comment l'installer (relancer Claude Code ou npx clear-npx-cache).`,
263
297
  };
264
298
  // Create commands directory
265
299
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@askmesh/mcp",
3
- "version": "0.10.3",
3
+ "version": "0.10.4",
4
4
  "description": "AskMesh MCP server — connect your AI coding agent to your team's mesh network",
5
5
  "type": "module",
6
6
  "bin": {
package/statusline.sh CHANGED
@@ -24,18 +24,18 @@ done
24
24
  parts=()
25
25
 
26
26
  if [ "$pending" -gt 0 ] 2>/dev/null; then
27
- parts+=("\033[33m${pending}↓\033[0m")
27
+ parts+=("\033[33m${pending} pending\033[0m")
28
28
  fi
29
29
  if [ "$active" -gt 0 ] 2>/dev/null; then
30
- parts+=("\033[32m${active}~\033[0m")
30
+ parts+=("\033[32m${active} active\033[0m")
31
31
  fi
32
32
  if [ "$replies" -gt 0 ] 2>/dev/null; then
33
- parts+=("\033[36m${replies}>\033[0m")
33
+ parts+=("\033[36m${replies} replies\033[0m")
34
34
  fi
35
35
 
36
36
  if [ ${#parts[@]} -gt 0 ]; then
37
- joined=$(IFS=' '; echo "${parts[*]}")
38
- echo -e "mesh $joined"
37
+ joined=$(IFS=' · '; echo "${parts[*]}")
38
+ echo -e "mesh > $joined"
39
39
  else
40
40
  echo "mesh"
41
41
  fi