hoomanjs 1.38.1 → 1.39.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.
package/README.md CHANGED
@@ -565,6 +565,44 @@ At runtime, project-local `.hooman/mcp.json` files are merged on top of `~/.hoom
565
565
  }
566
566
  ```
567
567
 
568
+ ### How the client identity is established
569
+
570
+ When authorizing a remote server, the MCP SDK needs a `client_id`. Hooman resolves one in this order:
571
+
572
+ 1. **Pre-registered client** — if `oauth.clientId` (and optionally `clientSecret`) is set, it is used as-is and no registration happens.
573
+ 2. **Dynamic Client Registration (DCR)** — if the auth server advertises a `registration_endpoint`, Hooman registers a client on the fly. The redirect URI it registers is reused on later authorizations (persisted in `~/.hooman/mcp-oauth.json`), so keep it stable — set `oauth.callbackPort` or `oauth.redirectUri` if a server pins the redirect.
574
+ 3. **Client ID Metadata Document (CIMD / SEP-991)** — some servers (e.g. Slack) support neither a static client nor DCR, and instead advertise `client_id_metadata_document_supported: true`. For these, the client presents an HTTPS URL that hosts a JSON metadata document; that URL becomes the `client_id`. Hooman sends `oauth.clientMetadataUrl` (falling back to a bundled default) whenever the server supports it.
575
+
576
+ If a server supports none of these, authorization fails with `Incompatible auth server: does not support dynamic client registration` — supply a `clientId` or `clientMetadataUrl`.
577
+
578
+ ### Hosting a CIMD document (GitHub Pages)
579
+
580
+ The metadata document is a static JSON file served over HTTPS. A copy ships in this repo at [`docs/oauth/client-metadata.json`](docs/oauth/client-metadata.json) and is published via GitHub Pages at `https://vaibhavpandey.com/hooman/oauth/client-metadata.json`, which is the default `clientMetadataUrl`.
581
+
582
+ Requirements when hosting your own:
583
+
584
+ - The URL must be **HTTPS with a non-root path** (a bare domain is rejected).
585
+ - The document's own `client_id` field must equal the hosted URL **exactly** (self-referential).
586
+ - `redirect_uris` must include Hooman's loopback callback path `/mcp/oauth/callback`. Per RFC 8252 the loopback port is matched flexibly, so list the port-less hosts (`http://127.0.0.1/mcp/oauth/callback` and `http://localhost/mcp/oauth/callback`).
587
+ - `token_endpoint_auth_method` is `"none"` (public client — the document is public and holds no secrets).
588
+
589
+ Override the default per server:
590
+
591
+ ```json
592
+ {
593
+ "mcpServers": {
594
+ "slack": {
595
+ "type": "streamable-http",
596
+ "url": "https://mcp.slack.com/mcp",
597
+ "oauth": {
598
+ "enabled": true,
599
+ "clientMetadataUrl": "https://vaibhavpandey.com/hooman/oauth/client-metadata.json"
600
+ }
601
+ }
602
+ }
603
+ }
604
+ ```
605
+
568
606
  ### Example SSE server
569
607
 
570
608
  ```json
@@ -24,6 +24,7 @@ declare const McpServersFileSchema: z.ZodObject<{
24
24
  redirectUri: z.ZodOptional<z.ZodURL>;
25
25
  callbackPort: z.ZodOptional<z.ZodInt>;
26
26
  tokenParamName: z.ZodOptional<z.ZodString>;
27
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
27
28
  }, z.core.$strip>>;
28
29
  }, z.core.$strip>, z.ZodObject<{
29
30
  type: z.ZodLiteral<"sse">;
@@ -42,6 +43,7 @@ declare const McpServersFileSchema: z.ZodObject<{
42
43
  redirectUri: z.ZodOptional<z.ZodURL>;
43
44
  callbackPort: z.ZodOptional<z.ZodInt>;
44
45
  tokenParamName: z.ZodOptional<z.ZodString>;
46
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
45
47
  }, z.core.$strip>>;
46
48
  }, z.core.$strip>], "type">>>>;
47
49
  }, z.core.$strip>;
@@ -3,6 +3,15 @@ import type { OAuthClientInformationMixed, OAuthClientMetadata, OAuthTokens } fr
3
3
  import type { Sse, StreamableHttp } from "../types.js";
4
4
  import { Store } from "./store.js";
5
5
  import type { McpOAuthConfig } from "./types.js";
6
+ /**
7
+ * Hooman's hosted Client ID Metadata Document (CIMD / SEP-991). Auth servers
8
+ * that advertise `client_id_metadata_document_supported: true` (e.g. Slack) but
9
+ * do not support dynamic client registration use this URL directly as the
10
+ * `client_id`. The document is a static JSON file served over HTTPS whose own
11
+ * `client_id` field must equal this exact URL. Override per-server with
12
+ * `oauth.clientMetadataUrl`.
13
+ */
14
+ export declare const DEFAULT_CLIENT_METADATA_URL = "https://vaibhavpandey.com/hooman/oauth/client-metadata.json";
6
15
  export type ProviderOptions = {
7
16
  serverName: string;
8
17
  transport: StreamableHttp | Sse;
@@ -22,6 +31,12 @@ export declare class HoomanMcpOAuthProvider implements OAuthClientProvider {
22
31
  get key(): string;
23
32
  get redirectUrl(): string;
24
33
  get clientMetadata(): OAuthClientMetadata;
34
+ /**
35
+ * URL-based client id (CIMD / SEP-991). Returned to the MCP SDK, which uses
36
+ * it as the `client_id` — skipping dynamic client registration — when the
37
+ * auth server advertises `client_id_metadata_document_supported: true`.
38
+ */
39
+ get clientMetadataUrl(): string | undefined;
25
40
  setRedirectUrl(url: string | URL): void;
26
41
  takeAuthorizationUrl(): URL | undefined;
27
42
  expectedState(): string | undefined;
@@ -38,6 +53,12 @@ export declare class HoomanMcpOAuthProvider implements OAuthClientProvider {
38
53
  discoveryState(): Promise<OAuthDiscoveryState | undefined>;
39
54
  invalidateCredentials(scope: "all" | "client" | "tokens" | "verifier" | "discovery"): Promise<void>;
40
55
  oauthConfig(): McpOAuthConfig | undefined;
56
+ /**
57
+ * The redirect URI a previous dynamic client registration was bound to, if
58
+ * any. Reusing it keeps the authorization request consistent with what the
59
+ * OAuth server has on record for this client.
60
+ */
61
+ registeredRedirectUri(): Promise<string | undefined>;
41
62
  private readEntry;
42
63
  private writeEntry;
43
64
  }
@@ -1,7 +1,15 @@
1
1
  import { randomBytes } from "node:crypto";
2
2
  import { createRemoteTransportIdentity } from "./identity.js";
3
3
  import { Store } from "./store.js";
4
- const DEFAULT_REDIRECT_URI = "http://127.0.0.1:19876/mcp/oauth/callback";
4
+ /**
5
+ * Hooman's hosted Client ID Metadata Document (CIMD / SEP-991). Auth servers
6
+ * that advertise `client_id_metadata_document_supported: true` (e.g. Slack) but
7
+ * do not support dynamic client registration use this URL directly as the
8
+ * `client_id`. The document is a static JSON file served over HTTPS whose own
9
+ * `client_id` field must equal this exact URL. Override per-server with
10
+ * `oauth.clientMetadataUrl`.
11
+ */
12
+ export const DEFAULT_CLIENT_METADATA_URL = "https://vaibhavpandey.com/hooman/oauth/client-metadata.json";
5
13
  export class HoomanMcpOAuthProvider {
6
14
  options;
7
15
  store;
@@ -21,9 +29,11 @@ export class HoomanMcpOAuthProvider {
21
29
  return this.identity.key;
22
30
  }
23
31
  get redirectUrl() {
24
- return (this._redirectUrl ??
25
- this.options.transport.oauth?.redirectUri ??
26
- DEFAULT_REDIRECT_URI);
32
+ const url = this._redirectUrl ?? this.options.transport.oauth?.redirectUri;
33
+ if (!url) {
34
+ throw new Error("OAuth redirect URI is not initialized. Start the authorization flow before reading redirectUrl.");
35
+ }
36
+ return url;
27
37
  }
28
38
  get clientMetadata() {
29
39
  return {
@@ -39,6 +49,15 @@ export class HoomanMcpOAuthProvider {
39
49
  : {}),
40
50
  };
41
51
  }
52
+ /**
53
+ * URL-based client id (CIMD / SEP-991). Returned to the MCP SDK, which uses
54
+ * it as the `client_id` — skipping dynamic client registration — when the
55
+ * auth server advertises `client_id_metadata_document_supported: true`.
56
+ */
57
+ get clientMetadataUrl() {
58
+ return (this.options.transport.oauth?.clientMetadataUrl ??
59
+ DEFAULT_CLIENT_METADATA_URL);
60
+ }
42
61
  setRedirectUrl(url) {
43
62
  this._redirectUrl = String(url);
44
63
  }
@@ -188,6 +207,15 @@ export class HoomanMcpOAuthProvider {
188
207
  oauthConfig() {
189
208
  return this.options.transport.oauth;
190
209
  }
210
+ /**
211
+ * The redirect URI a previous dynamic client registration was bound to, if
212
+ * any. Reusing it keeps the authorization request consistent with what the
213
+ * OAuth server has on record for this client.
214
+ */
215
+ async registeredRedirectUri() {
216
+ const entry = await this.store.get(this.key);
217
+ return entry?.client?.redirectUris?.[0];
218
+ }
191
219
  async readEntry() {
192
220
  return this.store.get(this.key);
193
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/provider.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@ export class Service {
32
32
  async beginAuthorization(serverName, transport) {
33
33
  const provider = this.getProvider(serverName, transport);
34
34
  provider.resetFlow();
35
- const callbackServer = await this.createCallbackServer(transport);
35
+ const callbackServer = await this.createCallbackServer(provider, transport);
36
36
  provider.setRedirectUrl(callbackServer.redirectUri);
37
37
  let authorizationUrl;
38
38
  try {
@@ -114,8 +114,16 @@ export class Service {
114
114
  }
115
115
  return "authenticated";
116
116
  }
117
- async createCallbackServer(transport) {
118
- const redirectUri = transport.oauth?.redirectUri;
117
+ async createCallbackServer(provider, transport) {
118
+ // An explicit redirect URI always wins, then an explicit port. Otherwise
119
+ // reuse the redirect a prior dynamic client registration was bound to so
120
+ // the authorization request matches what the OAuth server has on record.
121
+ // With nothing to reuse (first-time registration), fall back to a random
122
+ // ephemeral port.
123
+ const redirectUri = transport.oauth?.redirectUri ??
124
+ (transport.oauth?.callbackPort
125
+ ? undefined
126
+ : await provider.registeredRedirectUri());
119
127
  if (redirectUri) {
120
128
  const url = new URL(redirectUri);
121
129
  return startCallbackServer({
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/service.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@ export declare const McpOAuthConfigSchema: z.ZodObject<{
12
12
  redirectUri: z.ZodOptional<z.ZodURL>;
13
13
  callbackPort: z.ZodOptional<z.ZodInt>;
14
14
  tokenParamName: z.ZodOptional<z.ZodString>;
15
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
15
16
  }, z.core.$strip>;
16
17
  export declare const StoredMcpOAuthTokensSchema: z.ZodObject<{
17
18
  accessToken: z.ZodString;
@@ -12,6 +12,7 @@ export const McpOAuthConfigSchema = z.object({
12
12
  redirectUri: z.url().optional(),
13
13
  callbackPort: z.int().min(1).max(65535).optional(),
14
14
  tokenParamName: z.string().min(1).optional(),
15
+ clientMetadataUrl: z.url().optional(),
15
16
  });
16
17
  export const StoredMcpOAuthTokensSchema = z.object({
17
18
  accessToken: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/mcp/oauth/types.ts"],"names":[],"mappings":"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"}
@@ -25,6 +25,7 @@ export declare const StreamableHttpSchema: z.ZodObject<{
25
25
  redirectUri: z.ZodOptional<z.ZodURL>;
26
26
  callbackPort: z.ZodOptional<z.ZodInt>;
27
27
  tokenParamName: z.ZodOptional<z.ZodString>;
28
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
28
29
  }, z.core.$strip>>;
29
30
  }, z.core.$strip>;
30
31
  /** MCP remote server over SSE + POST messages (legacy transport). */
@@ -45,6 +46,7 @@ export declare const SseSchema: z.ZodObject<{
45
46
  redirectUri: z.ZodOptional<z.ZodURL>;
46
47
  callbackPort: z.ZodOptional<z.ZodInt>;
47
48
  tokenParamName: z.ZodOptional<z.ZodString>;
49
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
48
50
  }, z.core.$strip>>;
49
51
  }, z.core.$strip>;
50
52
  export declare const McpTransportSchema: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -70,6 +72,7 @@ export declare const McpTransportSchema: z.ZodPipe<z.ZodTransform<unknown, unkno
70
72
  redirectUri: z.ZodOptional<z.ZodURL>;
71
73
  callbackPort: z.ZodOptional<z.ZodInt>;
72
74
  tokenParamName: z.ZodOptional<z.ZodString>;
75
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
73
76
  }, z.core.$strip>>;
74
77
  }, z.core.$strip>, z.ZodObject<{
75
78
  type: z.ZodLiteral<"sse">;
@@ -88,6 +91,7 @@ export declare const McpTransportSchema: z.ZodPipe<z.ZodTransform<unknown, unkno
88
91
  redirectUri: z.ZodOptional<z.ZodURL>;
89
92
  callbackPort: z.ZodOptional<z.ZodInt>;
90
93
  tokenParamName: z.ZodOptional<z.ZodString>;
94
+ clientMetadataUrl: z.ZodOptional<z.ZodURL>;
91
95
  }, z.core.$strip>>;
92
96
  }, z.core.$strip>], "type">>;
93
97
  export type Stdio = z.infer<typeof StdioSchema>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hoomanjs",
3
- "version": "1.38.1",
3
+ "version": "1.39.0",
4
4
  "description": "Hackable AI agent toolkit for building local CLI, ACP, MCP, and channel-driven workflows.",
5
5
  "author": {
6
6
  "name": "Vaibhav Pandey",