@jini-ai/mcp 0.1.0

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 (86) hide show
  1. package/LICENSE +201 -0
  2. package/dist/agent-install/index.d.ts +9 -0
  3. package/dist/agent-install/index.d.ts.map +1 -0
  4. package/dist/agent-install/index.js +9 -0
  5. package/dist/agent-install/index.js.map +1 -0
  6. package/dist/agent-install/install.d.ts +97 -0
  7. package/dist/agent-install/install.d.ts.map +1 -0
  8. package/dist/agent-install/install.js +410 -0
  9. package/dist/agent-install/install.js.map +1 -0
  10. package/dist/bin/serve.d.ts +75 -0
  11. package/dist/bin/serve.d.ts.map +1 -0
  12. package/dist/bin/serve.js +79 -0
  13. package/dist/bin/serve.js.map +1 -0
  14. package/dist/client/client.d.ts +48 -0
  15. package/dist/client/client.d.ts.map +1 -0
  16. package/dist/client/client.js +242 -0
  17. package/dist/client/client.js.map +1 -0
  18. package/dist/client/index.d.ts +8 -0
  19. package/dist/client/index.d.ts.map +1 -0
  20. package/dist/client/index.js +8 -0
  21. package/dist/client/index.js.map +1 -0
  22. package/dist/core/config.d.ts +157 -0
  23. package/dist/core/config.d.ts.map +1 -0
  24. package/dist/core/config.js +475 -0
  25. package/dist/core/config.js.map +1 -0
  26. package/dist/core/index.d.ts +14 -0
  27. package/dist/core/index.d.ts.map +1 -0
  28. package/dist/core/index.js +14 -0
  29. package/dist/core/index.js.map +1 -0
  30. package/dist/core/install-info.d.ts +69 -0
  31. package/dist/core/install-info.d.ts.map +1 -0
  32. package/dist/core/install-info.js +79 -0
  33. package/dist/core/install-info.js.map +1 -0
  34. package/dist/core/oauth.d.ts +274 -0
  35. package/dist/core/oauth.d.ts.map +1 -0
  36. package/dist/core/oauth.js +667 -0
  37. package/dist/core/oauth.js.map +1 -0
  38. package/dist/core/secure-write.d.ts +17 -0
  39. package/dist/core/secure-write.d.ts.map +1 -0
  40. package/dist/core/secure-write.js +72 -0
  41. package/dist/core/secure-write.js.map +1 -0
  42. package/dist/core/tokens.d.ts +72 -0
  43. package/dist/core/tokens.d.ts.map +1 -0
  44. package/dist/core/tokens.js +197 -0
  45. package/dist/core/tokens.js.map +1 -0
  46. package/dist/index.d.ts +28 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +29 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/server/daemon-client.d.ts +21 -0
  51. package/dist/server/daemon-client.d.ts.map +1 -0
  52. package/dist/server/daemon-client.js +176 -0
  53. package/dist/server/daemon-client.js.map +1 -0
  54. package/dist/server/index.d.ts +18 -0
  55. package/dist/server/index.d.ts.map +1 -0
  56. package/dist/server/index.js +18 -0
  57. package/dist/server/index.js.map +1 -0
  58. package/dist/server/resource-protocol.d.ts +38 -0
  59. package/dist/server/resource-protocol.d.ts.map +1 -0
  60. package/dist/server/resource-protocol.js +68 -0
  61. package/dist/server/resource-protocol.js.map +1 -0
  62. package/dist/server/resources/active-resource.d.ts +12 -0
  63. package/dist/server/resources/active-resource.d.ts.map +1 -0
  64. package/dist/server/resources/active-resource.js +46 -0
  65. package/dist/server/resources/active-resource.js.map +1 -0
  66. package/dist/server/tool-protocol.d.ts +45 -0
  67. package/dist/server/tool-protocol.d.ts.map +1 -0
  68. package/dist/server/tool-protocol.js +74 -0
  69. package/dist/server/tool-protocol.js.map +1 -0
  70. package/dist/server/tool-server.d.ts +105 -0
  71. package/dist/server/tool-server.d.ts.map +1 -0
  72. package/dist/server/tool-server.js +96 -0
  73. package/dist/server/tool-server.js.map +1 -0
  74. package/dist/server/tools/delegated-tool.d.ts +15 -0
  75. package/dist/server/tools/delegated-tool.d.ts.map +1 -0
  76. package/dist/server/tools/delegated-tool.js +90 -0
  77. package/dist/server/tools/delegated-tool.js.map +1 -0
  78. package/dist/server/tools/run-tools.d.ts +14 -0
  79. package/dist/server/tools/run-tools.d.ts.map +1 -0
  80. package/dist/server/tools/run-tools.js +142 -0
  81. package/dist/server/tools/run-tools.js.map +1 -0
  82. package/dist/server/tools/tool-catalog-tools.d.ts +8 -0
  83. package/dist/server/tools/tool-catalog-tools.d.ts.map +1 -0
  84. package/dist/server/tools/tool-catalog-tools.js +66 -0
  85. package/dist/server/tools/tool-catalog-tools.js.map +1 -0
  86. package/package.json +50 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/core/oauth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface WriteSecretFileOptions {
2
+ /** Injectable for tests only; defaults to `process.platform`. */
3
+ platform?: NodeJS.Platform;
4
+ }
5
+ /**
6
+ * Atomically write `contents` to `finalPath` via a same-directory temp file
7
+ * created exclusively with mode 0600. On POSIX platforms, verifies no
8
+ * group/other permission bit made it onto disk before renaming into place;
9
+ * throws (after removing the temp file) if verification fails or the write
10
+ * itself fails, so a caller never observes a partially-written or
11
+ * insufficiently-restricted secret file.
12
+ * @param finalPath Absolute path the secret file should end up at.
13
+ * @param contents UTF-8 text to write.
14
+ * @param options `platform` override for tests; defaults to `process.platform`.
15
+ */
16
+ export declare function writeSecretFileAtomic(finalPath: string, contents: string, options?: WriteSecretFileOptions): Promise<void>;
17
+ //# sourceMappingURL=secure-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-write.d.ts","sourceRoot":"","sources":["../../src/core/secure-write.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,sBAAsB;IACrC,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,IAAI,CAAC,CAqBf"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @module @jini-ai/mcp/core/secure-write
3
+ * Shared atomic, owner-only-permission (0600) secret-file writer used by
4
+ * every secret-bearing on-disk store in this package: the server config
5
+ * store (env vars / `Authorization` headers), the OAuth dynamic-client-
6
+ * registration cache (`clientSecret`), and the OAuth token store (bearer /
7
+ * refresh tokens, confidential-client secrets). CR-006 / SEC-RB-002.
8
+ *
9
+ * The previous pattern in each of those stores wrote the temp file with
10
+ * default permissions and either never restricted it (config, OAuth client
11
+ * cache) or `chmod(0600)`'d it *after* the atomic rename and silently
12
+ * continued when the chmod failed (tokens) — both leave a window where the
13
+ * file exists world/group-readable, and the latter makes the "protection"
14
+ * advisory rather than enforced. This writer instead:
15
+ *
16
+ * 1. Creates the temp file *exclusively* (`wx`) with mode 0600 supplied to
17
+ * the same `open()`/`writeFile()` call that creates it — POSIX applies
18
+ * the requested mode atomically at creation time, so there is no
19
+ * window where the file exists with a broader mode. This repo already
20
+ * relies on `writeFile`'s `mode` option alone for a secret file with no
21
+ * separate chmod step (see `packages/agent-runtime/src/prompt-file.ts`);
22
+ * this module follows that same precedent rather than inventing a new one.
23
+ * 2. On POSIX platforms, verifies the on-disk mode actually landed as
24
+ * owner-only before renaming into place, and fails closed — removing
25
+ * the temp file and throwing — if it did not (e.g. an unusual umask or
26
+ * a filesystem that doesn't honor `mode`).
27
+ * 3. Skips that verification on `win32`: Windows has no POSIX permission-
28
+ * bit model (`mode` there only toggles the read-only attribute), so
29
+ * there is nothing meaningful to enforce or fail closed on — matching
30
+ * this repo's only other cross-platform file-mode precedent, which
31
+ * also does not branch on Windows.
32
+ *
33
+ * Part of the MCP `core` kernel; not part of the package's public barrel —
34
+ * imported directly by sibling `core/*.ts` files.
35
+ */
36
+ import { mkdir, rename, rm, stat, writeFile } from 'node:fs/promises';
37
+ import { randomBytes } from 'node:crypto';
38
+ import path from 'node:path';
39
+ const SECRET_FILE_MODE = 0o600;
40
+ /**
41
+ * Atomically write `contents` to `finalPath` via a same-directory temp file
42
+ * created exclusively with mode 0600. On POSIX platforms, verifies no
43
+ * group/other permission bit made it onto disk before renaming into place;
44
+ * throws (after removing the temp file) if verification fails or the write
45
+ * itself fails, so a caller never observes a partially-written or
46
+ * insufficiently-restricted secret file.
47
+ * @param finalPath Absolute path the secret file should end up at.
48
+ * @param contents UTF-8 text to write.
49
+ * @param options `platform` override for tests; defaults to `process.platform`.
50
+ */
51
+ export async function writeSecretFileAtomic(finalPath, contents, options = {}) {
52
+ const platform = options.platform ?? process.platform;
53
+ await mkdir(path.dirname(finalPath), { recursive: true });
54
+ const tmp = `${finalPath}.${randomBytes(4).toString('hex')}.tmp`;
55
+ try {
56
+ await writeFile(tmp, contents, { encoding: 'utf8', mode: SECRET_FILE_MODE, flag: 'wx' });
57
+ if (platform !== 'win32') {
58
+ const info = await stat(tmp);
59
+ const bits = info.mode & 0o777;
60
+ if ((bits & 0o077) !== 0) {
61
+ throw new Error(`refusing to persist secret-bearing file with non-owner-only permissions ` +
62
+ `(mode 0${bits.toString(8)}): ${finalPath}`);
63
+ }
64
+ }
65
+ await rename(tmp, finalPath);
66
+ }
67
+ catch (err) {
68
+ await rm(tmp, { force: true }).catch(() => undefined);
69
+ throw err;
70
+ }
71
+ }
72
+ //# sourceMappingURL=secure-write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secure-write.js","sourceRoot":"","sources":["../../src/core/secure-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAO/B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,QAAgB,EAChB,UAAkC,EAAE;IAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,MAAM,IAAI,KAAK,CACb,0EAA0E;oBACxE,UAAU,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAC9C,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @module @jini-ai/mcp/core/tokens
3
+ * Persistent, 0600-guarded OAuth-token store for remote MCP servers, keyed by
4
+ * server id, with expiry checks. The durable counterpart to `oauth`'s live flow.
5
+ * Part of the MCP `core` kernel; depends on no sibling subdirectory.
6
+ */
7
+ /**
8
+ * Stored OAuth token for a single MCP server. Mirrors the relevant subset
9
+ * of an OAuth 2.0 token-endpoint response (RFC 6749 §5.1), plus the OAuth
10
+ * client context the original authorization-code exchange used. Refresh
11
+ * tokens are bound (RFC 6749 §6) to the client that received them, so we
12
+ * have to refresh against the same `client_id` / `redirect_uri` pair —
13
+ * persisting the context here is what lets us do that without re-running
14
+ * authorization.
15
+ */
16
+ export interface StoredMcpToken {
17
+ /** The bearer token to send as `Authorization: Bearer …`. */
18
+ accessToken: string;
19
+ /** Refresh token (RFC 6749 §6) if the auth server issued one. */
20
+ refreshToken?: string;
21
+ /** Absolute epoch ms at which `accessToken` expires. Optional — some
22
+ * providers never expire. */
23
+ expiresAt?: number;
24
+ /** RFC 6749 §5.1 token_type. Almost always `Bearer`. */
25
+ tokenType: string;
26
+ /** Space-separated scopes granted (verbatim from the token response). */
27
+ scope?: string;
28
+ /** Wall-clock epoch ms when this record was first persisted. */
29
+ savedAt: number;
30
+ /** Token endpoint that issued this token; reused verbatim for refresh. */
31
+ tokenEndpoint?: string;
32
+ /** Client id that obtained the refresh token. */
33
+ clientId?: string;
34
+ /** Confidential-client secret, if the upstream issued one. */
35
+ clientSecret?: string;
36
+ /** Authorization-server issuer, used to look the cached client back up. */
37
+ authServerIssuer?: string;
38
+ /** Redirect URI registered with the client at authorization time. */
39
+ redirectUri?: string;
40
+ /** RFC 8707 resource indicator the original token was scoped to. */
41
+ resourceUrl?: string;
42
+ }
43
+ export interface McpTokensFile {
44
+ /** keyed by McpServerConfig.id */
45
+ servers: Record<string, StoredMcpToken>;
46
+ }
47
+ /** Coerce a freeform JSON blob into the typed shape, dropping anything that
48
+ * doesn't deserialize cleanly. Used both at read time and as a defensive
49
+ * pass when third-party tooling has hand-edited the file. */
50
+ export declare function sanitizeTokensFile(raw: unknown): McpTokensFile;
51
+ /**
52
+ * Read and sanitize the MCP token store from `<dataDir>/mcp-tokens.json`.
53
+ * Returns an empty store when the file does not exist or contains invalid JSON.
54
+ * @param dataDir The resolved runtime data directory.
55
+ * @returns The sanitized token file, never rejects on missing-file or corrupt-JSON.
56
+ */
57
+ export declare function readTokensFile(dataDir: string): Promise<McpTokensFile>;
58
+ /** Get the current token for a given server, or null when none is stored
59
+ * (or the persisted entry is malformed). */
60
+ export declare function getToken(dataDir: string, serverId: string): Promise<StoredMcpToken | null>;
61
+ /** Atomically merge a new token for `serverId` into the tokens file. */
62
+ export declare function setToken(dataDir: string, serverId: string, token: StoredMcpToken): Promise<void>;
63
+ /** Atomically delete the stored token for `serverId`. No-op when absent. */
64
+ export declare function clearToken(dataDir: string, serverId: string): Promise<void>;
65
+ /** Bulk read used by the spawn pipeline so we make one disk hit per spawn,
66
+ * not one per server. */
67
+ export declare function readAllTokens(dataDir: string): Promise<Record<string, StoredMcpToken>>;
68
+ /** True when the stored token is past its `expiresAt` (or within `skew`
69
+ * milliseconds of expiring). Returns false when no `expiresAt` is recorded
70
+ * — many providers issue non-expiring tokens. */
71
+ export declare function isTokenExpired(token: StoredMcpToken, now?: number, skew?: number): boolean;
72
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwBH;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;iCAC6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACzC;AAYD;;6DAE6D;AAC7D,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAY9D;AAgED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAa5E;AA4BD;4CAC4C;AAC5C,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAGhC;AAED,wEAAwE;AACxE,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,4EAA4E;AAC5E,wBAAsB,UAAU,CAC9B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;yBACyB;AACzB,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAGzC;AAED;;iDAEiD;AACjD,wBAAgB,cAAc,CAC5B,KAAK,EAAE,cAAc,EACrB,GAAG,GAAE,MAAmB,EACxB,IAAI,GAAE,MAAe,GACpB,OAAO,CAGT"}
@@ -0,0 +1,197 @@
1
+ /**
2
+ * @module @jini-ai/mcp/core/tokens
3
+ * Persistent, 0600-guarded OAuth-token store for remote MCP servers, keyed by
4
+ * server id, with expiry checks. The durable counterpart to `oauth`'s live flow.
5
+ * Part of the MCP `core` kernel; depends on no sibling subdirectory.
6
+ */
7
+ // Persistent OAuth-token storage for external HTTP / SSE MCP servers.
8
+ //
9
+ // The daemon owns the OAuth flow end-to-end so the user never needs a
10
+ // transient `localhost:<port>` listener (the killer of cloud deployments)
11
+ // and so a token survives across agent turns. Tokens are written to
12
+ // `<dataDir>/mcp-tokens.json` keyed by McpServerConfig.id, with the same
13
+ // atomic write + per-dataDir mutex pattern the rest of the runtime uses.
14
+ //
15
+ // File mode: owner-only (0600) from the very first byte, via
16
+ // `writeSecretFileAtomic` (CR-006 / SEC-RB-002) — NOT a post-rename chmod.
17
+ // The previous chmod-after-rename approach left a window where the file
18
+ // briefly existed with default (potentially world/group-readable)
19
+ // permissions, and silently continued persisting the token when chmod
20
+ // failed for any reason other than ENOTSUP/EPERM, which is not a
21
+ // fail-closed guarantee. `writeSecretFileAtomic` creates the file with mode
22
+ // 0600 atomically at creation and fails closed (removing the temp file and
23
+ // throwing) if a POSIX platform did not honor that mode; it skips
24
+ // verification on `win32`, which has no POSIX permission-bit model.
25
+ import { readFile } from 'node:fs/promises';
26
+ import path from 'node:path';
27
+ import { writeSecretFileAtomic } from './secure-write.js';
28
+ const EMPTY = { servers: {} };
29
+ function tokensFile(dataDir) {
30
+ return path.join(dataDir, 'mcp-tokens.json');
31
+ }
32
+ function isPlainObject(v) {
33
+ return Boolean(v) && typeof v === 'object' && !Array.isArray(v);
34
+ }
35
+ /** Coerce a freeform JSON blob into the typed shape, dropping anything that
36
+ * doesn't deserialize cleanly. Used both at read time and as a defensive
37
+ * pass when third-party tooling has hand-edited the file. */
38
+ export function sanitizeTokensFile(raw) {
39
+ if (!isPlainObject(raw))
40
+ return { servers: {} };
41
+ const servers = raw.servers;
42
+ if (!isPlainObject(servers))
43
+ return { servers: {} };
44
+ const out = {};
45
+ for (const [id, value] of Object.entries(servers)) {
46
+ if (id === '__proto__' || id === 'constructor')
47
+ continue;
48
+ const tok = sanitizeToken(value);
49
+ if (!tok)
50
+ continue;
51
+ out[id] = tok;
52
+ }
53
+ return { servers: out };
54
+ }
55
+ function sanitizeToken(raw) {
56
+ if (!isPlainObject(raw))
57
+ return null;
58
+ const accessToken = typeof raw.accessToken === 'string' ? raw.accessToken.trim() : '';
59
+ if (!accessToken)
60
+ return null;
61
+ const tokenType = typeof raw.tokenType === 'string' && raw.tokenType.trim()
62
+ ? raw.tokenType.trim()
63
+ : 'Bearer';
64
+ const refreshToken = typeof raw.refreshToken === 'string' && raw.refreshToken.trim()
65
+ ? raw.refreshToken.trim()
66
+ : undefined;
67
+ const scope = typeof raw.scope === 'string' && raw.scope.trim()
68
+ ? raw.scope.trim()
69
+ : undefined;
70
+ const expiresAt = typeof raw.expiresAt === 'number' && Number.isFinite(raw.expiresAt)
71
+ ? raw.expiresAt
72
+ : undefined;
73
+ const savedAt = typeof raw.savedAt === 'number' && Number.isFinite(raw.savedAt)
74
+ ? raw.savedAt
75
+ : Date.now();
76
+ const tokenEndpoint = typeof raw.tokenEndpoint === 'string' && raw.tokenEndpoint.trim()
77
+ ? raw.tokenEndpoint.trim()
78
+ : undefined;
79
+ const clientId = typeof raw.clientId === 'string' && raw.clientId.trim()
80
+ ? raw.clientId.trim()
81
+ : undefined;
82
+ const clientSecret = typeof raw.clientSecret === 'string' && raw.clientSecret.trim()
83
+ ? raw.clientSecret.trim()
84
+ : undefined;
85
+ const authServerIssuer = typeof raw.authServerIssuer === 'string' && raw.authServerIssuer.trim()
86
+ ? raw.authServerIssuer.trim()
87
+ : undefined;
88
+ const redirectUri = typeof raw.redirectUri === 'string' && raw.redirectUri.trim()
89
+ ? raw.redirectUri.trim()
90
+ : undefined;
91
+ const resourceUrl = typeof raw.resourceUrl === 'string' && raw.resourceUrl.trim()
92
+ ? raw.resourceUrl.trim()
93
+ : undefined;
94
+ const out = { accessToken, tokenType, savedAt };
95
+ if (refreshToken)
96
+ out.refreshToken = refreshToken;
97
+ if (scope)
98
+ out.scope = scope;
99
+ if (expiresAt !== undefined)
100
+ out.expiresAt = expiresAt;
101
+ if (tokenEndpoint)
102
+ out.tokenEndpoint = tokenEndpoint;
103
+ if (clientId)
104
+ out.clientId = clientId;
105
+ if (clientSecret)
106
+ out.clientSecret = clientSecret;
107
+ if (authServerIssuer)
108
+ out.authServerIssuer = authServerIssuer;
109
+ if (redirectUri)
110
+ out.redirectUri = redirectUri;
111
+ if (resourceUrl)
112
+ out.resourceUrl = resourceUrl;
113
+ return out;
114
+ }
115
+ /**
116
+ * Read and sanitize the MCP token store from `<dataDir>/mcp-tokens.json`.
117
+ * Returns an empty store when the file does not exist or contains invalid JSON.
118
+ * @param dataDir The resolved runtime data directory.
119
+ * @returns The sanitized token file, never rejects on missing-file or corrupt-JSON.
120
+ */
121
+ export async function readTokensFile(dataDir) {
122
+ try {
123
+ const raw = await readFile(tokensFile(dataDir), 'utf8');
124
+ return sanitizeTokensFile(JSON.parse(raw));
125
+ }
126
+ catch (err) {
127
+ const e = err;
128
+ if (e.code === 'ENOENT')
129
+ return { ...EMPTY, servers: { ...EMPTY.servers } };
130
+ if (e.name === 'SyntaxError') {
131
+ console.error('[mcp-tokens] Corrupted JSON, returning empty:', e.message);
132
+ return { ...EMPTY, servers: { ...EMPTY.servers } };
133
+ }
134
+ throw err;
135
+ }
136
+ }
137
+ const writeLocks = new Map();
138
+ async function withLock(dataDir, fn) {
139
+ const prev = writeLocks.get(dataDir) ?? Promise.resolve();
140
+ const task = prev.catch(() => { }).then(fn);
141
+ writeLocks.set(dataDir, task);
142
+ try {
143
+ return await task;
144
+ }
145
+ finally {
146
+ if (writeLocks.get(dataDir) === task)
147
+ writeLocks.delete(dataDir);
148
+ }
149
+ }
150
+ async function writeTokensFile(dataDir, next) {
151
+ const file = tokensFile(dataDir);
152
+ // Bearer tokens can hand someone posting-as-you against the upstream MCP,
153
+ // so the file is created with owner-only (0600) permissions from the
154
+ // first byte and the write fails closed if that can't be guaranteed on a
155
+ // POSIX platform — see `writeSecretFileAtomic`.
156
+ await writeSecretFileAtomic(file, JSON.stringify(next, null, 2));
157
+ return next;
158
+ }
159
+ /** Get the current token for a given server, or null when none is stored
160
+ * (or the persisted entry is malformed). */
161
+ export async function getToken(dataDir, serverId) {
162
+ const file = await readTokensFile(dataDir);
163
+ return file.servers[serverId] ?? null;
164
+ }
165
+ /** Atomically merge a new token for `serverId` into the tokens file. */
166
+ export async function setToken(dataDir, serverId, token) {
167
+ await withLock(dataDir, async () => {
168
+ const file = await readTokensFile(dataDir);
169
+ file.servers[serverId] = token;
170
+ await writeTokensFile(dataDir, file);
171
+ });
172
+ }
173
+ /** Atomically delete the stored token for `serverId`. No-op when absent. */
174
+ export async function clearToken(dataDir, serverId) {
175
+ await withLock(dataDir, async () => {
176
+ const file = await readTokensFile(dataDir);
177
+ if (!(serverId in file.servers))
178
+ return;
179
+ delete file.servers[serverId];
180
+ await writeTokensFile(dataDir, file);
181
+ });
182
+ }
183
+ /** Bulk read used by the spawn pipeline so we make one disk hit per spawn,
184
+ * not one per server. */
185
+ export async function readAllTokens(dataDir) {
186
+ const file = await readTokensFile(dataDir);
187
+ return file.servers;
188
+ }
189
+ /** True when the stored token is past its `expiresAt` (or within `skew`
190
+ * milliseconds of expiring). Returns false when no `expiresAt` is recorded
191
+ * — many providers issue non-expiring tokens. */
192
+ export function isTokenExpired(token, now = Date.now(), skew = 30_000) {
193
+ if (typeof token.expiresAt !== 'number')
194
+ return false;
195
+ return token.expiresAt - skew <= now;
196
+ }
197
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @module @jini-ai/mcp
3
+ * Public barrel for the MCP (Model Context Protocol) domain. External code
4
+ * imports MCP capabilities only from here — never from a subdirectory — so the
5
+ * internal split (`core` kernel + `client` / `agent-install` concerns) can move
6
+ * without touching consumers.
7
+ *
8
+ * Re-exports are explicit and named (no `export *`) so the public surface is
9
+ * visible here and name collisions surface at build time.
10
+ */
11
+ export { inferMcpAuthModeForUrl, sanitizeMcpServer, sanitizeMcpConfig, readMcpConfig, writeMcpConfig, isManagedProjectCwd, buildClaudeMcpJson, buildAcpMcpServers, buildOpenCodeMcpConfigContent, } from './core/index.js';
12
+ export type { McpTransport, McpAuthMode, McpServerConfig, McpConfig, AcpMcpServer, OpenCodeConfigBuildOptions, } from './core/index.js';
13
+ export { generateCodeVerifier, deriveCodeChallenge, generateState, discoverProtectedResource, discoverAuthServer, registerClient, getOrRegisterClient, buildAuthorizeUrl, exchangeCodeForToken, refreshAccessToken, PendingAuthCache, beginAuth, } from './core/index.js';
14
+ export type { ProtectedResourceMetadata, AuthorizationServerMetadata, RegisteredClient, OAuthTokenResponse, PendingAuthState, AuthorizeUrlInput, ExchangeCodeInput, RefreshTokenInput, BeginAuthInput, BeginAuthResult, } from './core/index.js';
15
+ export { sanitizeTokensFile, readTokensFile, getToken, setToken, clearToken, readAllTokens, isTokenExpired, } from './core/index.js';
16
+ export type { StoredMcpToken, McpTokensFile } from './core/index.js';
17
+ export { buildMcpInstallPayload } from './core/index.js';
18
+ export type { BuildMcpInstallPayloadInputs, McpInstallPayload } from './core/index.js';
19
+ export { createMcpIdleExitController, extractRelativeRefs, isTextualMime, } from './client/index.js';
20
+ export { cancelRunTool, createMcpToolServer, errorResult, getActiveContextTool, getDaemonJson, getRunTool, listAgentsTool, okResult, postDaemonJson, requireString, RUN_TOOLS, startRunTool, toolsToList, buildToolIndex, handleToolCall, DaemonResponseTooLargeError, } from './server/index.js';
21
+ export type { DaemonRequestOptions, McpServerLike, McpToolContext, McpToolDef, McpToolServerHandle, McpToolServerOptions, McpTransportLike, } from './server/index.js';
22
+ export { activeContextResource, buildResourceIndex, handleResourceRead, KERNEL_RESOURCES, resourcesToList, } from './server/index.js';
23
+ export type { McpResourceDef, McpResourceReadResult } from './server/index.js';
24
+ export { createExecuteDelegatedToolTool } from './server/index.js';
25
+ export type { CreateExecuteDelegatedToolToolOptions } from './server/index.js';
26
+ export { AGENT_SLUGS, isAgentSlug, planAgentInstall, applyJsonInstall, removeJsonInstall, } from './agent-install/index.js';
27
+ export type { AgentSlug, McpLaunchSpec, PlanContext, CliInstallPlan, JsonInstallPlan, ManualInstallPlan, InstallPlan, } from './agent-install/index.js';
28
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,eAAe,EACf,SAAS,EACT,YAAY,EACZ,0BAA0B,GAC3B,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,yBAAyB,EACzB,2BAA2B,EAC3B,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,4BAA4B,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGvF,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,EACd,QAAQ,EACR,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,EACd,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,cAAc,EACd,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AACnE,YAAY,EAAE,qCAAqC,EAAE,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,WAAW,GACZ,MAAM,0BAA0B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @module @jini-ai/mcp
3
+ * Public barrel for the MCP (Model Context Protocol) domain. External code
4
+ * imports MCP capabilities only from here — never from a subdirectory — so the
5
+ * internal split (`core` kernel + `client` / `agent-install` concerns) can move
6
+ * without touching consumers.
7
+ *
8
+ * Re-exports are explicit and named (no `export *`) so the public surface is
9
+ * visible here and name collisions surface at build time.
10
+ */
11
+ // ── core: config schema + IO ────────────────────────────────────────────────
12
+ export { inferMcpAuthModeForUrl, sanitizeMcpServer, sanitizeMcpConfig, readMcpConfig, writeMcpConfig, isManagedProjectCwd, buildClaudeMcpJson, buildAcpMcpServers, buildOpenCodeMcpConfigContent, } from './core/index.js';
13
+ // ── core: OAuth 2.1 / PKCE flow ─────────────────────────────────────────────
14
+ export { generateCodeVerifier, deriveCodeChallenge, generateState, discoverProtectedResource, discoverAuthServer, registerClient, getOrRegisterClient, buildAuthorizeUrl, exchangeCodeForToken, refreshAccessToken, PendingAuthCache, beginAuth, } from './core/index.js';
15
+ // ── core: token store ───────────────────────────────────────────────────────
16
+ export { sanitizeTokensFile, readTokensFile, getToken, setToken, clearToken, readAllTokens, isTokenExpired, } from './core/index.js';
17
+ // ── core: install-info payload ──────────────────────────────────────────────
18
+ export { buildMcpInstallPayload } from './core/index.js';
19
+ // ── client: product-neutral stdio-server runtime primitives ─────────────────
20
+ export { createMcpIdleExitController, extractRelativeRefs, isTextualMime, } from './client/index.js';
21
+ // ── server: the generic MCP tool-hosting mechanism + kernel-run tool defs ───
22
+ export { cancelRunTool, createMcpToolServer, errorResult, getActiveContextTool, getDaemonJson, getRunTool, listAgentsTool, okResult, postDaemonJson, requireString, RUN_TOOLS, startRunTool, toolsToList, buildToolIndex, handleToolCall, DaemonResponseTooLargeError, } from './server/index.js';
23
+ // ── server: the generic MCP resource surface + kernel resource defs ────────
24
+ export { activeContextResource, buildResourceIndex, handleResourceRead, KERNEL_RESOURCES, resourcesToList, } from './server/index.js';
25
+ // ── server: gap 3's MCP-callback delegated-tool-execution def ──────────────
26
+ export { createExecuteDelegatedToolTool } from './server/index.js';
27
+ // ── agent-install: register an MCP server into external agents ──────────────
28
+ export { AGENT_SLUGS, isAgentSlug, planAgentInstall, applyJsonInstall, removeJsonInstall, } from './agent-install/index.js';
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,+EAA+E;AAC/E,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC;AAUzB,+EAA+E;AAC/E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,yBAAyB,EACzB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,GACV,MAAM,iBAAiB,CAAC;AAczB,+EAA+E;AAC/E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,aAAa,EACb,cAAc,GACf,MAAM,iBAAiB,CAAC;AAGzB,+EAA+E;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,+EAA+E;AAC/E,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,+EAA+E;AAC/E,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,EACd,QAAQ,EACR,cAAc,EACd,aAAa,EACb,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,EACd,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAW3B,8EAA8E;AAC9E,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAG3B,8EAA8E;AAC9E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAC;AAGnE,+EAA+E;AAC/E,OAAO,EACL,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Thrown internally when a response exceeds its byte cap; always translated to a plain `Error` before it crosses this module's public functions. */
2
+ export declare class DaemonResponseTooLargeError extends Error {
3
+ readonly limitBytes: number;
4
+ constructor(limitBytes: number);
5
+ }
6
+ export interface DaemonRequestOptions {
7
+ /** Defaults to the global `fetch`; inject for tests. */
8
+ fetchImpl?: typeof fetch;
9
+ headers?: Record<string, string>;
10
+ /** Request deadline in ms. Defaults to {@link DEFAULT_TIMEOUT_MS}. */
11
+ timeoutMs?: number;
12
+ /** Maximum daemon response size in bytes before the read is aborted. Defaults to {@link DEFAULT_MAX_RESPONSE_BYTES}. */
13
+ maxResponseBytes?: number;
14
+ /** Caller-supplied cancellation signal; combined with the internal timeout signal, so either one aborts the request. */
15
+ signal?: AbortSignal;
16
+ }
17
+ /** `GET <baseUrl><route>` and return the parsed JSON response, throwing on network failure or a non-2xx status. */
18
+ export declare function getDaemonJson<T = unknown>(baseUrl: string, route: string, options?: DaemonRequestOptions): Promise<T>;
19
+ /** `POST body` (JSON-serialized) to `<baseUrl><route>` and return the parsed JSON response, throwing on network failure or a non-2xx status. */
20
+ export declare function postDaemonJson<T = unknown>(baseUrl: string, route: string, body: unknown, options?: DaemonRequestOptions): Promise<T>;
21
+ //# sourceMappingURL=daemon-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daemon-client.d.ts","sourceRoot":"","sources":["../../src/server/daemon-client.ts"],"names":[],"mappings":"AAmCA,qJAAqJ;AACrJ,qBAAa,2BAA4B,SAAQ,KAAK;aACxB,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM;CAI/C;AAED,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wHAAwH;IACxH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,wHAAwH;IACxH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA+ID,mHAAmH;AACnH,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3H;AAED,gJAAgJ;AAChJ,wBAAsB,cAAc,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAC,CAE3I"}