@imenam/mcp-messenger 1.0.35 → 1.0.36

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 CHANGED
@@ -86,7 +86,7 @@ Une clé se crée dans la console avec un nom, une portée et une durée :
86
86
 
87
87
  La clé (`mk_…`) n'est affichée qu'une fois, avec le bloc `.mcp.json` et la commande
88
88
  d'installation déjà remplis ; le serveur n'en garde qu'une empreinte. Depuis le détail
89
- d'une clé : renommer, prolonger, voir les boîtes ouvertes avec elle, la **remplacer** (une
89
+ d'une clé : la renommer, renommer son agent, prolonger, voir les boîtes ouvertes avec elle, la **remplacer** (une
90
90
  nouvelle clé aux mêmes réglages ; l'ancienne reste acceptée 24 h) ou la **révoquer**.
91
91
 
92
92
  #### Compte de la console
@@ -707,7 +707,7 @@ cet agent (403 sinon). Les routes `/admin/*` n'acceptent que la session de la co
707
707
  | `DELETE` | `/admin/links/:id` | Supprime une liaison |
708
708
  | `GET` | `/admin/keys` | Clés API, sans leur secret : début et fin, agent, échéance, dernier usage, état (`active`, `expired`, `revoked`) |
709
709
  | `POST` | `/admin/keys` | Crée une clé (`name`, `agent_name` ou `null` pour tous les agents, `agent_description?` pour une clé liée, `lifetime_days` ou `null`) — rend le secret, une seule fois |
710
- | `GET` `PATCH` | `/admin/keys/:id` | Détail d'une clé et boîtes ouvertes avec elle · renommer (`name`), changer la description de l'agent (`agent_description`, reportée sur ses boîtes) |
710
+ | `GET` `PATCH` | `/admin/keys/:id` | Détail d'une clé et boîtes ouvertes avec elle · renommer (`name`), renommer l'agent ou changer sa description (`agent_name`, `agent_description`, reportés sur les boîtes ouvertes avec la clé) |
711
711
  | `POST` | `/admin/keys/:id/extend` | Repousse l'échéance de `days` jours, ou la retire (`days: null`) |
712
712
  | `POST` | `/admin/keys/:id/rotate` | Nouvelle clé aux mêmes réglages ; l'ancienne reste acceptée 24 h |
713
713
  | `POST` | `/admin/keys/:id/revoke` | Révoque la clé, refusée dès l'appel suivant |
@@ -827,6 +827,12 @@ passe de « NOT armed » à « armed » quand ce veilleur prend son poste.
827
827
 
828
828
  ---
829
829
 
830
+ ## Publication
831
+
832
+ Chaque push sur `master`, merge de pull request compris, publie une nouvelle version de `@imenam/mcp-messenger` sur npm (`.github/workflows/publish.yml`) : `npm ci`, build et tests, puis `npm version patch`, dont le commit et le tag sont poussés sur `master`, et `npm publish`. La publication passe par le trusted publishing de npm (OIDC, sans token), avec attestation de provenance. Un échec du build ou des tests arrête le workflow avant la montée de version.
833
+
834
+ Sur npmjs.com, le paquet déclare ce workflow comme publieur de confiance (Settings → Trusted publishing → GitHub Actions : `Matthieu-Pesnot-Pin`, `mcp-messenger`, `publish.yml`, avec `npm publish` dans les actions autorisées). Le commit de version est poussé avec `GITHUB_TOKEN` : si `master` est protégée, la règle doit autoriser GitHub Actions à y pousser.
835
+
830
836
  ## Licence
831
837
 
832
838
  ISC
@@ -104,6 +104,11 @@ export declare class AccessStore {
104
104
  getApiKey(id: string): ApiKey | null;
105
105
  private requireKey;
106
106
  renameApiKey(id: string, name: string): ApiKey;
107
+ /**
108
+ * Renomme l'agent d'une clé liée à un agent, et reporte le nom sur les boîtes déjà
109
+ * ouvertes avec elle : la clé continue de les ouvrir.
110
+ */
111
+ setApiKeyAgentName(id: string, agentName: string): ApiKey;
107
112
  /**
108
113
  * Change la description de l'agent portée par une clé liée à un agent, et la reporte sur
109
114
  * les boîtes déjà ouvertes avec elle. null l'efface de la clé, pas des boîtes.
@@ -207,6 +207,23 @@ export class AccessStore {
207
207
  this.db.prepare("UPDATE api_keys SET name = ? WHERE id = ?").run(name, id);
208
208
  return this.getApiKey(id);
209
209
  }
210
+ /**
211
+ * Renomme l'agent d'une clé liée à un agent, et reporte le nom sur les boîtes déjà
212
+ * ouvertes avec elle : la clé continue de les ouvrir.
213
+ */
214
+ setApiKeyAgentName(id, agentName) {
215
+ const key = this.requireKey(id);
216
+ if (!key.agent_name) {
217
+ throw new MessengerError("a key valid for all agents carries no agent name", 400);
218
+ }
219
+ this.db.transaction(() => {
220
+ this.db.prepare("UPDATE api_keys SET agent_name = ? WHERE id = ?").run(agentName, id);
221
+ this.db
222
+ .prepare("UPDATE agents SET agent_name = ? WHERE id IN (SELECT mailbox FROM mailbox_keys WHERE api_key_id = ?)")
223
+ .run(agentName, id);
224
+ })();
225
+ return this.getApiKey(id);
226
+ }
210
227
  /**
211
228
  * Change la description de l'agent portée par une clé liée à un agent, et la reporte sur
212
229
  * les boîtes déjà ouvertes avec elle. null l'efface de la clé, pas des boîtes.