@atomicmail/mcp 0.2.0 → 0.2.1

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.
Files changed (77) hide show
  1. package/README.md +73 -83
  2. package/esm/_dnt.polyfills.d.ts +101 -0
  3. package/esm/_dnt.polyfills.d.ts.map +1 -0
  4. package/esm/_dnt.polyfills.js +127 -0
  5. package/esm/lib/agent/auth/agent-auth-http.d.ts.map +1 -0
  6. package/esm/lib/agent/auth/agent-jwt.d.ts.map +1 -0
  7. package/esm/lib/agent/auth/agent-pow.d.ts.map +1 -0
  8. package/esm/lib/agent/jmap/agent-help-content.d.ts.map +1 -0
  9. package/esm/lib/{src → agent/jmap}/agent-help-content.js +11 -3
  10. package/esm/lib/agent/jmap/agent-jmap.d.ts.map +1 -0
  11. package/esm/lib/{src → agent/jmap}/agent-jmap.js +47 -3
  12. package/esm/lib/agent/jmap/agent-vars.d.ts.map +1 -0
  13. package/esm/lib/agent/session/agent-credentials-store.d.ts.map +1 -0
  14. package/esm/lib/agent/session/agent-resolve-config.d.ts.map +1 -0
  15. package/esm/lib/{src → agent/session}/agent-resolve-config.js +1 -1
  16. package/esm/lib/agent/session/agent-session.d.ts.map +1 -0
  17. package/esm/lib/{src → agent/session}/agent-session.js +3 -3
  18. package/esm/lib/core/consts.d.ts.map +1 -0
  19. package/esm/lib/core/types.d.ts +2 -0
  20. package/esm/lib/core/types.d.ts.map +1 -0
  21. package/esm/lib/core/types.js +1 -0
  22. package/esm/lib/core/utils.d.ts +10 -0
  23. package/esm/lib/core/utils.d.ts.map +1 -0
  24. package/esm/lib/core/utils.js +28 -0
  25. package/esm/lib/mod.d.ts +14 -0
  26. package/esm/lib/mod.d.ts.map +1 -0
  27. package/esm/lib/mod.js +13 -0
  28. package/esm/lib/network/auth-client.d.ts +57 -0
  29. package/esm/lib/network/auth-client.d.ts.map +1 -0
  30. package/esm/lib/network/auth-client.js +188 -0
  31. package/esm/mcp/main.d.ts +3 -0
  32. package/esm/mcp/main.d.ts.map +1 -0
  33. package/esm/mcp/{src/main.js → main.js} +2 -2
  34. package/esm/mcp/tools/help.d.ts.map +1 -0
  35. package/esm/mcp/{src/tools → tools}/help.js +1 -1
  36. package/esm/mcp/{src/tools → tools}/jmap.d.ts +1 -1
  37. package/esm/mcp/tools/jmap.d.ts.map +1 -0
  38. package/esm/mcp/{src/tools → tools}/jmap.js +1 -1
  39. package/esm/mcp/{src/tools → tools}/register.d.ts +1 -1
  40. package/esm/mcp/tools/register.d.ts.map +1 -0
  41. package/package.json +5 -5
  42. package/presets/list_inbox.json +39 -0
  43. package/presets/reply.json +75 -0
  44. package/presets/send_mail.json +42 -0
  45. package/esm/lib/src/agent-auth-http.d.ts.map +0 -1
  46. package/esm/lib/src/agent-credentials-store.d.ts.map +0 -1
  47. package/esm/lib/src/agent-help-content.d.ts.map +0 -1
  48. package/esm/lib/src/agent-jmap.d.ts.map +0 -1
  49. package/esm/lib/src/agent-jwt.d.ts.map +0 -1
  50. package/esm/lib/src/agent-pow.d.ts.map +0 -1
  51. package/esm/lib/src/agent-resolve-config.d.ts.map +0 -1
  52. package/esm/lib/src/agent-session.d.ts.map +0 -1
  53. package/esm/lib/src/agent-vars.d.ts.map +0 -1
  54. package/esm/lib/src/consts.d.ts.map +0 -1
  55. package/esm/mcp/src/main.d.ts +0 -3
  56. package/esm/mcp/src/main.d.ts.map +0 -1
  57. package/esm/mcp/src/tools/help.d.ts.map +0 -1
  58. package/esm/mcp/src/tools/jmap.d.ts.map +0 -1
  59. package/esm/mcp/src/tools/register.d.ts.map +0 -1
  60. /package/esm/lib/{src → agent/auth}/agent-auth-http.d.ts +0 -0
  61. /package/esm/lib/{src → agent/auth}/agent-auth-http.js +0 -0
  62. /package/esm/lib/{src → agent/auth}/agent-jwt.d.ts +0 -0
  63. /package/esm/lib/{src → agent/auth}/agent-jwt.js +0 -0
  64. /package/esm/lib/{src → agent/auth}/agent-pow.d.ts +0 -0
  65. /package/esm/lib/{src → agent/auth}/agent-pow.js +0 -0
  66. /package/esm/lib/{src → agent/jmap}/agent-help-content.d.ts +0 -0
  67. /package/esm/lib/{src → agent/jmap}/agent-jmap.d.ts +0 -0
  68. /package/esm/lib/{src → agent/jmap}/agent-vars.d.ts +0 -0
  69. /package/esm/lib/{src → agent/jmap}/agent-vars.js +0 -0
  70. /package/esm/lib/{src → agent/session}/agent-credentials-store.d.ts +0 -0
  71. /package/esm/lib/{src → agent/session}/agent-credentials-store.js +0 -0
  72. /package/esm/lib/{src → agent/session}/agent-resolve-config.d.ts +0 -0
  73. /package/esm/lib/{src → agent/session}/agent-session.d.ts +0 -0
  74. /package/esm/lib/{src → core}/consts.d.ts +0 -0
  75. /package/esm/lib/{src → core}/consts.js +0 -0
  76. /package/esm/mcp/{src/tools → tools}/help.d.ts +0 -0
  77. /package/esm/mcp/{src/tools → tools}/register.js +0 -0
package/esm/lib/mod.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from "./network/auth-client.js";
2
+ export * from "./core/utils.js";
3
+ export * from "./core/consts.js";
4
+ export * from "./core/types.js";
5
+ export * from "./agent/session/agent-credentials-store.js";
6
+ export * from "./agent/auth/agent-jwt.js";
7
+ export * from "./agent/auth/agent-pow.js";
8
+ export * from "./agent/auth/agent-auth-http.js";
9
+ export * from "./agent/jmap/agent-jmap.js";
10
+ export * from "./agent/session/agent-session.js";
11
+ export * from "./agent/session/agent-resolve-config.js";
12
+ export * from "./agent/jmap/agent-help-content.js";
13
+ export * from "./agent/jmap/agent-vars.js";
@@ -0,0 +1,57 @@
1
+ export interface AuthClientOptions {
2
+ /** Base URL of auth-service, e.g. "http://localhost:8000". Trailing slashes are stripped. */
3
+ baseUrl: string;
4
+ /**
5
+ * PoW scrypt salt (hex string). When omitted, {@link DEFAULT_POW_SCRYPT_SALT_HEX}
6
+ * is used so clients match the bundled auth-service.
7
+ */
8
+ scryptSaltHex?: string;
9
+ }
10
+ export interface SignupResult {
11
+ /** Freshly minted API key. The server only returns it once — persist it. */
12
+ apiKey: string;
13
+ sessionJWT: string;
14
+ }
15
+ export interface LoginResult {
16
+ sessionJWT: string;
17
+ }
18
+ export interface RenewResult {
19
+ capabilityJWT: string;
20
+ }
21
+ /** Thrown for any non-2xx HTTP response or malformed payload. */
22
+ export declare class AuthClientError extends Error {
23
+ status: number;
24
+ bodyText: string;
25
+ constructor(status: number, bodyText: string, message: string);
26
+ }
27
+ export declare class AuthClient {
28
+ private readonly baseUrl;
29
+ private readonly scryptSaltHex;
30
+ constructor(options: AuthClientOptions);
31
+ /**
32
+ * Register a new inbox under `username`. Returns the freshly minted API key
33
+ * (the server only ever returns it once — the caller MUST persist it) and
34
+ * a session JWT.
35
+ */
36
+ signup(username: string): Promise<SignupResult>;
37
+ /** Exchange an existing API key for a fresh session JWT. */
38
+ login(apiKey: string): Promise<LoginResult>;
39
+ /**
40
+ * Exchange a session JWT for a short-lived capability JWT (audience:
41
+ * api-service).
42
+ */
43
+ renew(sessionJWT: string): Promise<RenewResult>;
44
+ private fetchChallenge;
45
+ private postSession;
46
+ private parseJsonOrThrow;
47
+ /**
48
+ * Brute-force a PoW nonce. Mirrors `generatePow` in
49
+ * services/auth-service/src/crypto.ts: scrypt(`${challenge}:${nonce}`, salt,
50
+ * 64) until `difficulty` leading bits of the digest are zero.
51
+ *
52
+ * Expected work at the server's POW_DIFFICULTY=6 is ~2^6 = 64 attempts; well
53
+ * within the challenge JWT's 3-minute TTL.
54
+ */
55
+ private solvePoW;
56
+ }
57
+ //# sourceMappingURL=auth-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-client.d.ts","sourceRoot":"","sources":["../../../src/lib/network/auth-client.ts"],"names":[],"mappings":"AAoBA,MAAM,WAAW,iBAAiB;IAChC,6FAA6F;IAC7F,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,iEAAiE;AACjE,qBAAa,eAAgB,SAAQ,KAAK;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;gBAEL,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM9D;AAOD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,OAAO,EAAE,iBAAiB;IAKtC;;;;OAIG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAwBrD,4DAA4D;IACtD,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBjD;;;OAGG;IACG,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAgBvC,cAAc;YAkCd,WAAW;YAeX,gBAAgB;IAuB9B;;;;;;;OAOG;YACW,QAAQ;CAgBvB"}
@@ -0,0 +1,188 @@
1
+ // auth-client
2
+ //
3
+ // Thin HTTP client for services/auth-service. Encapsulates the full PoW
4
+ // challenge → session → capability flow so callers (integration tests, the
5
+ // future agent skill, etc.) don't have to reimplement scrypt grinding.
6
+ //
7
+ // The PoW digest is scrypt-based and uses the SAME salt the auth-service
8
+ // uses on the verify path (see services/auth-service/src/crypto.ts). The
9
+ // client must therefore be configured with that salt — there is no public
10
+ // hash function here, the salt is part of the protocol.
11
+ import { scrypt } from "node:crypto";
12
+ import { DEFAULT_POW_SCRYPT_SALT_HEX } from "../core/consts.js";
13
+ // Mirror services/auth-service/src/crypto.ts exactly. Changing any of these
14
+ // constants on either side breaks PoW interop.
15
+ const SCRYPT_PARAMS = { N: 16384, r: 8, p: 1 };
16
+ const POW_HASH_BYTES = 64;
17
+ /** Thrown for any non-2xx HTTP response or malformed payload. */
18
+ export class AuthClientError extends Error {
19
+ status;
20
+ bodyText;
21
+ constructor(status, bodyText, message) {
22
+ super(message);
23
+ this.name = "AuthClientError";
24
+ this.status = status;
25
+ this.bodyText = bodyText;
26
+ }
27
+ }
28
+ export class AuthClient {
29
+ baseUrl;
30
+ scryptSaltHex;
31
+ constructor(options) {
32
+ this.baseUrl = options.baseUrl.replace(/\/+$/, "");
33
+ this.scryptSaltHex = options.scryptSaltHex ?? DEFAULT_POW_SCRYPT_SALT_HEX;
34
+ }
35
+ /**
36
+ * Register a new inbox under `username`. Returns the freshly minted API key
37
+ * (the server only ever returns it once — the caller MUST persist it) and
38
+ * a session JWT.
39
+ */
40
+ async signup(username) {
41
+ const { challengeJWT, challenge, difficulty } = await this.fetchChallenge();
42
+ const { powHex, nonce } = await this.solvePoW(challenge, difficulty);
43
+ const data = await this.postSession({
44
+ challengeJWT,
45
+ powHex,
46
+ nonce: nonce.toString(),
47
+ username,
48
+ });
49
+ if (typeof data.apiKey !== "string" ||
50
+ typeof data.sessionJWT !== "string") {
51
+ throw new AuthClientError(200, JSON.stringify(data), "Signup response missing apiKey or sessionJWT.");
52
+ }
53
+ return { apiKey: data.apiKey, sessionJWT: data.sessionJWT };
54
+ }
55
+ /** Exchange an existing API key for a fresh session JWT. */
56
+ async login(apiKey) {
57
+ const { challengeJWT, challenge, difficulty } = await this.fetchChallenge();
58
+ const { powHex, nonce } = await this.solvePoW(challenge, difficulty);
59
+ const data = await this.postSession({
60
+ challengeJWT,
61
+ powHex,
62
+ nonce: nonce.toString(),
63
+ apiKey,
64
+ });
65
+ if (typeof data.sessionJWT !== "string") {
66
+ throw new AuthClientError(200, JSON.stringify(data), "Login response missing sessionJWT.");
67
+ }
68
+ return { sessionJWT: data.sessionJWT };
69
+ }
70
+ /**
71
+ * Exchange a session JWT for a short-lived capability JWT (audience:
72
+ * api-service).
73
+ */
74
+ async renew(sessionJWT) {
75
+ const res = await fetch(`${this.baseUrl}/api/v1/capability`, {
76
+ method: "POST",
77
+ headers: { Authorization: `Bearer ${sessionJWT}` },
78
+ });
79
+ const data = await this.parseJsonOrThrow(res, "capability");
80
+ if (typeof data.capabilityJWT !== "string") {
81
+ throw new AuthClientError(res.status, JSON.stringify(data), "Capability response missing capabilityJWT.");
82
+ }
83
+ return { capabilityJWT: data.capabilityJWT };
84
+ }
85
+ async fetchChallenge() {
86
+ const res = await fetch(`${this.baseUrl}/api/v1/challenge`, {
87
+ method: "POST",
88
+ });
89
+ const data = await this.parseJsonOrThrow(res, "challenge");
90
+ if (typeof data.challengeJWT !== "string") {
91
+ throw new AuthClientError(res.status, JSON.stringify(data), "Challenge response missing challengeJWT.");
92
+ }
93
+ const payload = decodeJwtPayload(data.challengeJWT);
94
+ if (typeof payload.jti !== "string" ||
95
+ typeof payload.difficulty !== "number") {
96
+ throw new AuthClientError(res.status, data.challengeJWT, "Challenge JWT payload is malformed (missing jti or difficulty).");
97
+ }
98
+ return {
99
+ challengeJWT: data.challengeJWT,
100
+ challenge: payload.jti,
101
+ difficulty: payload.difficulty,
102
+ };
103
+ }
104
+ async postSession(body) {
105
+ const res = await fetch(`${this.baseUrl}/api/v1/session`, {
106
+ method: "POST",
107
+ headers: { "Content-Type": "application/json" },
108
+ body: JSON.stringify(body),
109
+ });
110
+ return await this.parseJsonOrThrow(res, "session");
111
+ }
112
+ async parseJsonOrThrow(res, endpoint) {
113
+ const text = await res.text();
114
+ if (!res.ok) {
115
+ throw new AuthClientError(res.status, text, `auth-service ${endpoint} returned ${res.status}: ${text}`);
116
+ }
117
+ try {
118
+ return JSON.parse(text);
119
+ }
120
+ catch {
121
+ throw new AuthClientError(res.status, text, `auth-service ${endpoint} returned non-JSON body.`);
122
+ }
123
+ }
124
+ /**
125
+ * Brute-force a PoW nonce. Mirrors `generatePow` in
126
+ * services/auth-service/src/crypto.ts: scrypt(`${challenge}:${nonce}`, salt,
127
+ * 64) until `difficulty` leading bits of the digest are zero.
128
+ *
129
+ * Expected work at the server's POW_DIFFICULTY=6 is ~2^6 = 64 attempts; well
130
+ * within the challenge JWT's 3-minute TTL.
131
+ */
132
+ async solvePoW(challenge, difficulty) {
133
+ let nonce = 0n;
134
+ while (true) {
135
+ const digest = await scryptHash(`${challenge}:${nonce}`, this.scryptSaltHex);
136
+ if (hasLeadingZeroBits(digest, difficulty)) {
137
+ return { powHex: bytesToHex(digest), nonce };
138
+ }
139
+ nonce++;
140
+ }
141
+ }
142
+ }
143
+ function scryptHash(data, salt) {
144
+ const bytes = new TextEncoder().encode(data);
145
+ return new Promise((resolve, reject) => {
146
+ scrypt(bytes, salt, POW_HASH_BYTES, SCRYPT_PARAMS, (err, derived) => {
147
+ if (err)
148
+ return reject(err);
149
+ resolve(new Uint8Array(derived));
150
+ });
151
+ });
152
+ }
153
+ function hasLeadingZeroBits(hash, bits) {
154
+ if (bits > hash.length * 8)
155
+ return false;
156
+ const fullBytes = Math.floor(bits / 8);
157
+ const remainingBits = bits % 8;
158
+ for (let i = 0; i < fullBytes; i++) {
159
+ if (hash[i] !== 0)
160
+ return false;
161
+ }
162
+ if (remainingBits > 0) {
163
+ const mask = (0xff << (8 - remainingBits)) & 0xff;
164
+ if ((hash[fullBytes] & mask) !== 0)
165
+ return false;
166
+ }
167
+ return true;
168
+ }
169
+ function bytesToHex(bytes) {
170
+ let hex = "";
171
+ for (let i = 0; i < bytes.length; i++) {
172
+ hex += bytes[i].toString(16).padStart(2, "0");
173
+ }
174
+ return hex;
175
+ }
176
+ function decodeJwtPayload(jwt) {
177
+ const parts = jwt.split(".");
178
+ if (parts.length < 2) {
179
+ throw new Error("Malformed JWT: expected at least 2 dot-separated segments.");
180
+ }
181
+ const payloadB64Url = parts[1];
182
+ const padLen = (4 - (payloadB64Url.length % 4)) % 4;
183
+ const base64 = payloadB64Url
184
+ .replace(/-/g, "+")
185
+ .replace(/_/g, "/")
186
+ .padEnd(payloadB64Url.length + padLen, "=");
187
+ return JSON.parse(atob(base64));
188
+ }
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ import "../_dnt.polyfills.js";
3
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/mcp/main.ts"],"names":[],"mappings":";AAMA,OAAO,sBAAsB,CAAC"}
@@ -4,11 +4,11 @@
4
4
  // CONFIGURATION: credentials.json + session.jwt + capability.jwt in the
5
5
  // credential directory (default ~/.atomicmail/, override ATOMIC_MAIL_CREDENTIALS_DIR),
6
6
  // merged with ATOMIC_MAIL_AUTH_URL / ATOMIC_MAIL_API_URL / ATOMIC_MAIL_API_KEY.
7
+ import "../_dnt.polyfills.js";
7
8
  import process from "node:process";
8
9
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
9
10
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
10
- import { AgentSession } from "../../lib/src/agent-session.js";
11
- import { resolveAgentConfigFromEnv } from "../../lib/src/agent-resolve-config.js";
11
+ import { AgentSession, resolveAgentConfigFromEnv } from "../lib/mod.js";
12
12
  import { registerHelpTool } from "./tools/help.js";
13
13
  import { registerJmapTool } from "./tools/jmap.js";
14
14
  import { registerRegisterTool } from "./tools/register.js";
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAItE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BxD"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { getHelp, HELP_TOPIC_LIST, } from "../../../lib/src/agent-help-content.js";
2
+ import { getHelp, HELP_TOPIC_LIST } from "../../lib/mod.js";
3
3
  export function registerHelpTool(server) {
4
4
  server.registerTool("help", {
5
5
  title: "Atomic Mail documentation",
@@ -1,4 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
- import type { AgentSession } from "../../../lib/src/agent-session.js";
2
+ import { type AgentSession } from "../../lib/mod.js";
3
3
  export declare function registerJmapTool(server: McpServer, session: AgentSession): void;
4
4
  //# sourceMappingURL=jmap.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jmap.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/jmap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,EACL,KAAK,YAAY,EAIlB,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAmIN"}
@@ -1,5 +1,5 @@
1
1
  import { z } from "zod";
2
- import { DEFAULT_JMAP_USING, readOpsFile, runJmapRequest, } from "../../../lib/src/agent-jmap.js";
2
+ import { DEFAULT_JMAP_USING, readOpsFile, runJmapRequest, } from "../../lib/mod.js";
3
3
  export function registerJmapTool(server, session) {
4
4
  server.registerTool("jmap_request", {
5
5
  title: "Send a JMAP request",
@@ -1,4 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
2
- import type { AgentSession } from "../../../lib/src/agent-session.js";
2
+ import type { AgentSession } from "../../lib/mod.js";
3
3
  export declare function registerRegisterTool(server: McpServer, session: AgentSession): void;
4
4
  //# sourceMappingURL=register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAErD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAiDN"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@atomicmail/mcp",
3
- "version": "0.2.0",
4
- "description": "AtomicMail MCP server — local stdio proxy with PoW auth and JMAP, for AI agents.",
3
+ "version": "0.2.1",
4
+ "description": "Atomic Mail MCP server — local stdio proxy with PoW auth and JMAP, for AI agents.",
5
5
  "keywords": [
6
6
  "atomic-mail",
7
7
  "atomicmail",
@@ -16,15 +16,15 @@
16
16
  ],
17
17
  "repository": {
18
18
  "type": "git",
19
- "url": "git+https://github.com/atomic-mail/agentic-mail.git"
19
+ "url": "git+https://github.com/atomic-mail/agentic-clients.git"
20
20
  },
21
21
  "license": "MIT",
22
22
  "bugs": {
23
- "url": "https://github.com/atomic-mail/agentic-mail/issues"
23
+ "url": "https://github.com/atomic-mail/agentic-clients/issues"
24
24
  },
25
25
  "scripts": {},
26
26
  "bin": {
27
- "atomicmail-mcp": "./esm/mcp/src/main.js"
27
+ "atomicmail-mcp": "./esm/mcp/main.js"
28
28
  },
29
29
  "engines": {
30
30
  "node": ">=20"
@@ -0,0 +1,39 @@
1
+ {
2
+ "using": [
3
+ "urn:ietf:params:jmap:core",
4
+ "urn:ietf:params:jmap:mail"
5
+ ],
6
+ "methodCalls": [
7
+ [
8
+ "Email/query",
9
+ {
10
+ "accountId": "$ACCOUNT_ID",
11
+ "filter": { "inMailbox": "$INBOX" },
12
+ "sort": [{ "property": "receivedAt", "isAscending": false }],
13
+ "limit": "$COUNT"
14
+ },
15
+ "q0"
16
+ ],
17
+ [
18
+ "Email/get",
19
+ {
20
+ "accountId": "$ACCOUNT_ID",
21
+ "#ids": {
22
+ "resultOf": "q0",
23
+ "name": "Email/query",
24
+ "path": "/ids"
25
+ },
26
+ "properties": [
27
+ "id",
28
+ "threadId",
29
+ "receivedAt",
30
+ "from",
31
+ "to",
32
+ "subject",
33
+ "preview"
34
+ ]
35
+ },
36
+ "g0"
37
+ ]
38
+ ]
39
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "using": [
3
+ "urn:ietf:params:jmap:core",
4
+ "urn:ietf:params:jmap:mail",
5
+ "urn:ietf:params:jmap:submission"
6
+ ],
7
+ "methodCalls": [
8
+ [
9
+ "Email/get",
10
+ {
11
+ "accountId": "$ACCOUNT_ID",
12
+ "ids": ["$MAIL_ID"],
13
+ "properties": [
14
+ "id",
15
+ "threadId",
16
+ "from",
17
+ "replyTo",
18
+ "subject",
19
+ "messageId"
20
+ ]
21
+ },
22
+ "g0"
23
+ ],
24
+ [
25
+ "Email/set",
26
+ {
27
+ "accountId": "$ACCOUNT_ID",
28
+ "create": {
29
+ "d1": {
30
+ "from": [{ "email": "$INBOX" }],
31
+ "#to": {
32
+ "resultOf": "g0",
33
+ "name": "Email/get",
34
+ "path": "/list/0/replyTo"
35
+ },
36
+ "#subject": {
37
+ "resultOf": "g0",
38
+ "name": "Email/get",
39
+ "path": "/list/0/subject"
40
+ },
41
+ "#inReplyTo": {
42
+ "resultOf": "g0",
43
+ "name": "Email/get",
44
+ "path": "/list/0/messageId"
45
+ },
46
+ "textBody": [{ "partId": "b", "type": "text/plain" }],
47
+ "bodyValues": { "b": { "value": "$BODY" } },
48
+ "keywords": { "$draft": true }
49
+ }
50
+ }
51
+ },
52
+ "c0"
53
+ ],
54
+ [
55
+ "EmailSubmission/set",
56
+ {
57
+ "accountId": "$ACCOUNT_ID",
58
+ "create": {
59
+ "s1": {
60
+ "emailId": "#d1",
61
+ "envelope": {
62
+ "mailFrom": { "email": "$INBOX" },
63
+ "#rcptTo": {
64
+ "resultOf": "g0",
65
+ "name": "Email/get",
66
+ "path": "/list/0/replyTo"
67
+ }
68
+ }
69
+ }
70
+ }
71
+ },
72
+ "c1"
73
+ ]
74
+ ]
75
+ }
@@ -0,0 +1,42 @@
1
+ {
2
+ "using": [
3
+ "urn:ietf:params:jmap:core",
4
+ "urn:ietf:params:jmap:mail",
5
+ "urn:ietf:params:jmap:submission"
6
+ ],
7
+ "methodCalls": [
8
+ [
9
+ "Email/set",
10
+ {
11
+ "accountId": "$ACCOUNT_ID",
12
+ "create": {
13
+ "d1": {
14
+ "from": [{ "email": "$INBOX" }],
15
+ "to": [{ "email": "$TO" }],
16
+ "subject": "$SUBJECT",
17
+ "textBody": [{ "partId": "b", "type": "text/plain" }],
18
+ "bodyValues": { "b": { "value": "$BODY" } },
19
+ "keywords": { "$draft": true }
20
+ }
21
+ }
22
+ },
23
+ "c0"
24
+ ],
25
+ [
26
+ "EmailSubmission/set",
27
+ {
28
+ "accountId": "$ACCOUNT_ID",
29
+ "create": {
30
+ "s1": {
31
+ "emailId": "#d1",
32
+ "envelope": {
33
+ "mailFrom": { "email": "$INBOX" },
34
+ "rcptTo": [{ "email": "$TO" }]
35
+ }
36
+ }
37
+ }
38
+ },
39
+ "c1"
40
+ ]
41
+ ]
42
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-auth-http.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-auth-http.ts"],"names":[],"mappings":"AAoCA,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC7D,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAqBD;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE;IACJ,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,eAAe,CAAC,CAS1B;AAED,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,eAAe,GACrB,OAAO,CAAC,eAAe,CAAC,CAgB1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-credentials-store.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-credentials-store.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAOjE;AAMD,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiCxE;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAOlC;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG3E;AAED,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO7B;AAED,0EAA0E;AAC1E,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-help-content.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-help-content.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuO9C,CAAC;AAEF,eAAO,MAAM,eAAe,UAA2B,CAAC;AAExD,wBAAgB,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAW9C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-jmap.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-jmap.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,kBAAkB,qEAGrB,CAAC;AAEX,eAAO,MAAM,aAAa,EAAG,2BAAoC,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,EAAE,MAAM,GACb,YAAY,CAyBd;AAED,wBAAgB,kBAAkB,CAChC,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,MAAM,CAER;AAED,wBAAsB,WAAW,CAC/B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAcR;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAclC;AAED,wEAAwE;AACxE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,eAAe,CAAC;IACzB,mDAAmD;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,6BAA6B;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CA4C5D;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAY5D;AAQD,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU5D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-jwt.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-jwt.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,cAAc,QAAqB,CAAC;AACjD,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAE/C,eAAO,MAAM,wBAAwB,QAAS,CAAC;AAC/C,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,CAc/D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-pow.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-pow.ts"],"names":[],"mappings":"AAuCA,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5C"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-resolve-config.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-resolve-config.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,MAAM,YAAY,GACpB,kBAAkB,GAClB,KAAK,GACL,OAAO,GACP,YAAY,CAAC;AAEjB,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,YAAY,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAW7C;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CACxD,mBAAmB,CACpB,CAoDA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-session.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,UAAU,EAMhB,MAAM,8BAA8B,CAAC;AAatC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAMD,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKtD;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,OAAO,CAAqB;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAE3B,OAAO,CAAC,UAAU,CAAqB;IACvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,mBAAmB,CAAqB;gBAEpC,GAAG,EAAE,kBAAkB;WAUtB,MAAM,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC;IAMnE,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,cAAc,IAAI,MAAM,GAAG,SAAS,CAEvC;YAEa,YAAY;IAU1B;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,MAAM,CAAC;IAShD,0BAA0B,IAAI,IAAI;IAIlC;;;OAGG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAuEnD,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;YA4B7B,aAAa;IAyB3B,OAAO,IAAI,IAAI;CAGhB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAED,0EAA0E;AAC1E,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,2BAA2B,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAyB9B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-vars.d.ts","sourceRoot":"","sources":["../../../src/lib/src/agent-vars.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,QAAyB,CAAC;AAMlD,uFAAuF;AACvF,eAAO,MAAM,iBAAiB,aAA2C,CAAC;AAE1E,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,iGAAiG;IACjG,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWvD;AAeD;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CA+B/B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../../src/lib/src/consts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,qEAC4B,CAAC;AAErE,eAAO,MAAM,UAAU,OAAO,CAAC;AAC/B,eAAO,MAAM,UAAU,QAAkB,CAAC;AAC1C,eAAO,MAAM,WAAW,QAAkB,CAAC;AAC3C,eAAO,MAAM,UAAU,QAAmB,CAAC;AAC3C,eAAO,MAAM,YAAY,QAAkB,CAAC;AAC5C,eAAO,MAAM,WAAW,QAAmB,CAAC"}
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export {};
3
- //# sourceMappingURL=main.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/mcp/src/main.ts"],"names":[],"mappings":""}
@@ -1 +0,0 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../../src/mcp/src/tools/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAOtE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA4BxD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"jmap.d.ts","sourceRoot":"","sources":["../../../../src/mcp/src/tools/jmap.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAOtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAmIN"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../../../src/mcp/src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAC;AAEtE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAEtE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,YAAY,GACpB,IAAI,CAiDN"}
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes