harper-kb 0.4.0 → 0.4.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.
package/dist/hooks.d.ts CHANGED
@@ -53,6 +53,19 @@ export interface KnowledgeHooks {
53
53
  * If not registered, default behavior applies (public reads, role-based writes).
54
54
  */
55
55
  onAccessCheck?: (context: AccessCheckContext) => Promise<AccessCheckResult>;
56
+ /**
57
+ * Resolve a kbId from the request when the URL path doesn't contain a valid one.
58
+ *
59
+ * Called by MCP and OAuth metadata handlers when the kbId extracted from
60
+ * the URL path doesn't match an existing KB. Enables hostname-based routing
61
+ * where the host app maps subdomains to knowledge bases.
62
+ *
63
+ * Return a kbId string, or null to indicate no resolution.
64
+ */
65
+ resolveKbId?: (request: {
66
+ hostname: string;
67
+ pathname: string;
68
+ }) => Promise<string | null>;
56
69
  /**
57
70
  * URL path for login redirect.
58
71
  *
@@ -82,6 +95,15 @@ export declare function checkAccess(context: AccessCheckContext): Promise<Access
82
95
  * Get the configured login path (if any).
83
96
  */
84
97
  export declare function getLoginPath(): string | null;
98
+ /**
99
+ * Resolve a kbId from the request via the registered hook.
100
+ *
101
+ * Returns null if no hook is registered or if the hook returns null.
102
+ */
103
+ export declare function resolveKbId(request: {
104
+ hostname: string;
105
+ pathname: string;
106
+ }): Promise<string | null>;
85
107
  /**
86
108
  * Reset all hooks (for testing).
87
109
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,MAAM,WAAW,kBAAkB;IAClC,6CAA6C;IAC7C,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,sBAAsB;IACtB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,wDAAwD;IACxD,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE5E;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE5D;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGhG;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAM3D,MAAM,WAAW,kBAAkB;IAClC,6CAA6C;IAC7C,IAAI,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC/D,uCAAuC;IACvC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,sBAAsB;IACtB,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC;IACxB,wDAAwD;IACxD,MAAM,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IACjC,8BAA8B;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,wDAAwD;IACxD,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC9B;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAE5E;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE1F;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAQD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI,CAE5D;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAGhG;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,GAAG,IAAI,CAE5C;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGzG;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
package/dist/hooks.js CHANGED
@@ -44,6 +44,16 @@ export async function checkAccess(context) {
44
44
  export function getLoginPath() {
45
45
  return hooks.loginPath || null;
46
46
  }
47
+ /**
48
+ * Resolve a kbId from the request via the registered hook.
49
+ *
50
+ * Returns null if no hook is registered or if the hook returns null.
51
+ */
52
+ export async function resolveKbId(request) {
53
+ if (!hooks.resolveKbId)
54
+ return null;
55
+ return hooks.resolveKbId(request);
56
+ }
47
57
  /**
48
58
  * Reset all hooks (for testing).
49
59
  */
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAyDH,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E,IAAI,KAAK,GAAmB,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAwB;IACrD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC5D,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC3B,OAAO,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IAC1B,KAAK,GAAG,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAoEH,+EAA+E;AAC/E,yCAAyC;AACzC,+EAA+E;AAE/E,IAAI,KAAK,GAAmB,EAAE,CAAC;AAE/B;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAwB;IACrD,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA2B;IAC5D,IAAI,CAAC,KAAK,CAAC,aAAa;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC3B,OAAO,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC;AAChC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA+C;IAChF,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IAC1B,KAAK,GAAG,EAAE,CAAC;AACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,KAC1C,OAAO,CAAC,OAAO,CAAC,CA0IpB"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,IAAI,CACtC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,KAC1C,OAAO,CAAC,OAAO,CAAC,CAmJpB"}
@@ -16,7 +16,7 @@
16
16
  import { handleJsonRpc } from "./protocol.js";
17
17
  import { validateMcpAuth } from "../oauth/validate.js";
18
18
  import { getKnowledgeBase } from "../core/knowledge-base.js";
19
- import { checkAccess } from "../hooks.js";
19
+ import { checkAccess, resolveKbId } from "../hooks.js";
20
20
  import { readBody, getBaseUrl } from "../http-utils.js";
21
21
  /**
22
22
  * Extract the kbId from the URL path.
@@ -45,13 +45,22 @@ export function createMcpMiddleware() {
45
45
  if (!pathname.startsWith('/mcp/')) {
46
46
  return next(request);
47
47
  }
48
- // Extract kbId from the path
49
- const kbId = extractKbIdFromPath(pathname);
48
+ // Extract kbId from the path, falling back to hook-based resolution
49
+ let kbId = extractKbIdFromPath(pathname);
50
50
  if (!kbId) {
51
51
  return next(request);
52
52
  }
53
- // Validate the KB exists
54
- const kb = await getKnowledgeBase(kbId);
53
+ // Validate the KB exists — if not, try hostname-based resolution via hook
54
+ let kb = await getKnowledgeBase(kbId);
55
+ if (!kb) {
56
+ const hostHeader = request.headers?.host || '';
57
+ const hostname = hostHeader.split(':')[0];
58
+ const resolved = await resolveKbId({ hostname, pathname });
59
+ if (resolved) {
60
+ kbId = resolved;
61
+ kb = await getKnowledgeBase(kbId);
62
+ }
63
+ }
55
64
  if (!kb) {
56
65
  return new Response(JSON.stringify({
57
66
  jsonrpc: '2.0',
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,7 @@ import type { HarperRequest } from '../types.ts';
12
12
  * and what scopes are supported. Each KB has its own protected resource
13
13
  * metadata so the resource URL is scoped to that KB.
14
14
  */
15
- export declare function handleProtectedResourceMetadata(request: HarperRequest, kbId: string): Response;
15
+ export declare function handleProtectedResourceMetadata(request: HarperRequest, kbId: string, resourcePath?: string): Response;
16
16
  /**
17
17
  * Handle GET /.well-known/oauth-authorization-server
18
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/oauth/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,CAU9F;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAgBzE"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/oauth/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAKjD;;;;;;GAMG;AACH,wBAAgB,+BAA+B,CAC9C,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,MAAM,EACZ,YAAY,CAAC,EAAE,MAAM,GACnB,QAAQ,CAUV;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,aAAa,GAAG,QAAQ,CAgBzE"}
@@ -13,10 +13,10 @@ const SCOPES = ['mcp:read', 'mcp:write'];
13
13
  * and what scopes are supported. Each KB has its own protected resource
14
14
  * metadata so the resource URL is scoped to that KB.
15
15
  */
16
- export function handleProtectedResourceMetadata(request, kbId) {
16
+ export function handleProtectedResourceMetadata(request, kbId, resourcePath) {
17
17
  const baseUrl = getBaseUrl(request);
18
18
  return jsonResponse(200, {
19
- resource: `${baseUrl}/mcp/${kbId}`,
19
+ resource: resourcePath ? `${baseUrl}${resourcePath}` : `${baseUrl}/mcp/${kbId}`,
20
20
  authorization_servers: [baseUrl],
21
21
  scopes_supported: SCOPES,
22
22
  bearer_methods_supported: ['header'],
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/oauth/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAAC,OAAsB,EAAE,IAAY;IACnF,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,QAAQ,EAAE,GAAG,OAAO,QAAQ,IAAI,EAAE;QAClC,qBAAqB,EAAE,CAAC,OAAO,CAAC;QAChC,gBAAgB,EAAE,MAAM;QACxB,wBAAwB,EAAE,CAAC,QAAQ,CAAC;QACpC,aAAa,EAAE,2BAA2B;KAC1C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAsB;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,OAAO;QACf,sBAAsB,EAAE,GAAG,OAAO,qBAAqB;QACvD,cAAc,EAAE,GAAG,OAAO,iBAAiB;QAC3C,qBAAqB,EAAE,GAAG,OAAO,oBAAoB;QACrD,QAAQ,EAAE,GAAG,OAAO,gBAAgB;QACpC,gBAAgB,EAAE,MAAM;QACxB,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC9D,qCAAqC,EAAE,CAAC,MAAM,CAAC;QAC/C,gCAAgC,EAAE,CAAC,MAAM,CAAC;QAC1C,qBAAqB,EAAE,GAAG,OAAO,GAAG;KACpC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,IAA6B;IAClE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM;QACN,OAAO,EAAE;YACR,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,sBAAsB;SACvC;KACD,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/oauth/metadata.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAEzC;;;;;;GAMG;AACH,MAAM,UAAU,+BAA+B,CAC9C,OAAsB,EACtB,IAAY,EACZ,YAAqB;IAErB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,YAAY,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,QAAQ,IAAI,EAAE;QAC/E,qBAAqB,EAAE,CAAC,OAAO,CAAC;QAChC,gBAAgB,EAAE,MAAM;QACxB,wBAAwB,EAAE,CAAC,QAAQ,CAAC;QACpC,aAAa,EAAE,2BAA2B;KAC1C,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAsB;IAC9D,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAEpC,OAAO,YAAY,CAAC,GAAG,EAAE;QACxB,MAAM,EAAE,OAAO;QACf,sBAAsB,EAAE,GAAG,OAAO,qBAAqB;QACvD,cAAc,EAAE,GAAG,OAAO,iBAAiB;QAC3C,qBAAqB,EAAE,GAAG,OAAO,oBAAoB;QACrD,QAAQ,EAAE,GAAG,OAAO,gBAAgB;QACpC,gBAAgB,EAAE,MAAM;QACxB,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,qBAAqB,EAAE,CAAC,oBAAoB,EAAE,eAAe,CAAC;QAC9D,qCAAqC,EAAE,CAAC,MAAM,CAAC;QAC/C,gCAAgC,EAAE,CAAC,MAAM,CAAC;QAC1C,qBAAqB,EAAE,GAAG,OAAO,GAAG;KACpC,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,MAAc,EAAE,IAA6B;IAClE,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM;QACN,OAAO,EAAE;YACR,cAAc,EAAE,kBAAkB;YAClC,eAAe,EAAE,sBAAsB;SACvC;KACD,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/oauth/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CA2CpD"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/oauth/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AASH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,KAAK,YAAY,GAAG,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAEjH;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAwDpD"}
@@ -18,6 +18,8 @@ import { handleRegister } from "./register.js";
18
18
  import { handleAuthorizeGet, handleAuthorizePost } from "./authorize.js";
19
19
  import { handleToken } from "./token.js";
20
20
  import { getJwks } from "./keys.js";
21
+ import { resolveKbId } from "../hooks.js";
22
+ import { getKnowledgeBase } from "../core/knowledge-base.js";
21
23
  /**
22
24
  * Create the OAuth middleware for Harper's scope.server.http().
23
25
  */
@@ -28,7 +30,20 @@ export function createOAuthMiddleware() {
28
30
  // Well-known metadata endpoints — protected resource metadata is per-KB
29
31
  const prMatch = pathname.match(/^\/\.well-known\/oauth-protected-resource\/([^/]+)$/);
30
32
  if (prMatch && method === 'GET') {
31
- return handleProtectedResourceMetadata(request, prMatch[1]);
33
+ let kbId = prMatch[1];
34
+ // If the path kbId isn't a real KB, try hostname-based resolution
35
+ const kb = await getKnowledgeBase(kbId);
36
+ if (!kb) {
37
+ const hostHeader = request.headers?.host || '';
38
+ const hostname = hostHeader.split(':')[0];
39
+ const resolved = await resolveKbId({ hostname, pathname });
40
+ if (resolved) {
41
+ // Resource path uses the original path segment (e.g., /mcp) to
42
+ // match the URL the client connected to (hostname-based routing)
43
+ return handleProtectedResourceMetadata(request, resolved, `/${prMatch[1]}`);
44
+ }
45
+ }
46
+ return handleProtectedResourceMetadata(request, kbId);
32
47
  }
33
48
  if (pathname === '/.well-known/oauth-authorization-server' && method === 'GET') {
34
49
  return handleAuthServerMetadata(request);
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/oauth/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,+BAA+B,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAC1F,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACpC,OAAO,KAAK,EAAE,OAAsB,EAAE,IAA8C,EAAoB,EAAE;QACzG,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAEvD,wEAAwE;QACxE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACtF,IAAI,OAAO,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACjC,OAAO,+BAA+B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,QAAQ,KAAK,yCAAyC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAChF,OAAO,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAC1C,CAAC;QAED,+DAA+D;QAC/D,kEAAkE;QAClE,IAAI,QAAQ,KAAK,oBAAoB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5D,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC;QACD,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;YACxC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACtB,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvB,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;QACF,CAAC;QACD,IAAI,QAAQ,KAAK,iBAAiB,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACzD,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QACD,IAAI,QAAQ,KAAK,gBAAgB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YACvD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,OAAO,EAAE,CAAC,EAAE;gBACpD,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE;oBACR,cAAc,EAAE,kBAAkB;oBAClC,eAAe,EAAE,sBAAsB;iBACvC;aACD,CAAC,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/oauth/middleware.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "harper-kb",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Knowledge base plugin for Harper with MCP server integration",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "optionalDependencies": {
54
54
  "harper-fabric-embeddings": "^0.1.4",
55
- "harper-fabric-onnx": "^0.2.0"
55
+ "harper-fabric-onnx": "^0.3.0"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "harperdb": ">=4.7.0"