@parlor/auth 0.0.0-stage → 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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -2
  3. package/dist/account.d.ts +52 -0
  4. package/dist/account.d.ts.map +1 -0
  5. package/dist/account.js +114 -0
  6. package/dist/account.js.map +1 -0
  7. package/dist/audit.d.ts +10 -0
  8. package/dist/audit.d.ts.map +1 -0
  9. package/dist/audit.js +130 -0
  10. package/dist/audit.js.map +1 -0
  11. package/dist/better-auth.d.ts +41 -0
  12. package/dist/better-auth.d.ts.map +1 -0
  13. package/dist/better-auth.js +118 -0
  14. package/dist/better-auth.js.map +1 -0
  15. package/dist/client/index.d.ts +43 -0
  16. package/dist/client/index.d.ts.map +1 -0
  17. package/dist/client/index.js +465 -0
  18. package/dist/client/index.js.map +1 -0
  19. package/dist/database.d.ts +7 -0
  20. package/dist/database.d.ts.map +1 -0
  21. package/dist/database.js +11 -0
  22. package/dist/database.js.map +1 -0
  23. package/dist/devices.d.ts +157 -0
  24. package/dist/devices.d.ts.map +1 -0
  25. package/dist/devices.js +398 -0
  26. package/dist/devices.js.map +1 -0
  27. package/dist/es256.d.ts +4 -0
  28. package/dist/es256.d.ts.map +1 -0
  29. package/dist/es256.js +44 -0
  30. package/dist/es256.js.map +1 -0
  31. package/dist/grants.d.ts +4 -0
  32. package/dist/grants.d.ts.map +1 -0
  33. package/dist/grants.js +6 -0
  34. package/dist/grants.js.map +1 -0
  35. package/dist/hosts.d.ts +116 -0
  36. package/dist/hosts.d.ts.map +1 -0
  37. package/dist/hosts.js +530 -0
  38. package/dist/hosts.js.map +1 -0
  39. package/dist/index.d.ts +9 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +9 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/migrations.d.ts +3 -0
  44. package/dist/migrations.d.ts.map +1 -0
  45. package/dist/migrations.js +17 -0
  46. package/dist/migrations.js.map +1 -0
  47. package/dist/pages.d.ts +4 -0
  48. package/dist/pages.d.ts.map +1 -0
  49. package/dist/pages.js +53 -0
  50. package/dist/pages.js.map +1 -0
  51. package/dist/provider.d.ts +74 -0
  52. package/dist/provider.d.ts.map +1 -0
  53. package/dist/provider.js +286 -0
  54. package/dist/provider.js.map +1 -0
  55. package/dist/revocation.d.ts +51 -0
  56. package/dist/revocation.d.ts.map +1 -0
  57. package/dist/revocation.js +233 -0
  58. package/dist/revocation.js.map +1 -0
  59. package/dist/routes.d.ts +15 -0
  60. package/dist/routes.d.ts.map +1 -0
  61. package/dist/routes.js +116 -0
  62. package/dist/routes.js.map +1 -0
  63. package/dist/schema.d.ts +2970 -0
  64. package/dist/schema.d.ts.map +1 -0
  65. package/dist/schema.js +308 -0
  66. package/dist/schema.js.map +1 -0
  67. package/dist/statements.d.ts +92 -0
  68. package/dist/statements.d.ts.map +1 -0
  69. package/dist/statements.js +199 -0
  70. package/dist/statements.js.map +1 -0
  71. package/dist/tokens.d.ts +69 -0
  72. package/dist/tokens.d.ts.map +1 -0
  73. package/dist/tokens.js +134 -0
  74. package/dist/tokens.js.map +1 -0
  75. package/dist/turn-keys.d.ts +16 -0
  76. package/dist/turn-keys.d.ts.map +1 -0
  77. package/dist/turn-keys.js +108 -0
  78. package/dist/turn-keys.js.map +1 -0
  79. package/package.json +57 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosts.js","sourceRoot":"","sources":["../src/hosts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { AGENTS_TAG, type ConnectedAgent, SESSIONS_TAG, type SignedInSession, } from "./account.js";
2
+ export { type AccountSummary, type ApprovingDevice, type ConnectedHost, createGrantKeys, type GrantKey, type GrantKeysOptions, type GrantKeys, HOST_ASSERTION_TTL_MS, HOST_CLIENT_ID, type HostAccountActions, hostAccountActions, type HostAssertionClaims, type HostAuthorizeRequest, type HostGrantDeps, type HostGrantResponse, type HostKeyExchange, hostPrincipalOf, type HostRedirect, hostRoutes, HOSTS_MIGRATION, HOSTS_TAG, MATCHING_CODE, verifyHostAssertion, } from "./hosts.js";
3
+ export { type ConnectedDevice, createDeviceRegistry, type DeviceAccountActions, deviceAccountActions, type DeviceActionDeps, type DeviceRegistry, DEVICE_LINKING_MIGRATION, type PendingDevice, DEVICES_MIGRATION, DEVICES_TAG, type PresenceKey, type RegisteredDevice, } from "./devices.js";
4
+ export { AUTH_BASE_PATH, MCP_SCOPE, parlorAuth, type ParlorAuthOptions, } from "./better-auth.js";
5
+ export { type BetterAuthInstance, betterAuthProvider, type BetterAuthProviderOptions, } from "./provider.js";
6
+ export { REVOCATION_CHANNEL, type RevocationMode, type RevocationNotice, RevocationSet, type RevocationSetOptions, } from "./revocation.js";
7
+ export { agentPrincipalOf, type Credential, credentialOf, delegate, HOST_ASSERTION_TYP, HOST_AUDIENCE, type HostAssertion, type Jws, MAX_TURN_TOKEN_TTL_MS, type TokenAudience, TURN_AUDIENCE, TURN_TOKEN_TYP, type TurnToken, type TurnTokenClaims, type TurnTokenKeys, verifyTurnToken, } from "./tokens.js";
8
+ export { answerStatement, type AnswerStatement, type PinnedDevice, promptStatement, type PromptStatement, removeStatement, type RemoveStatement, type Signed, checkPairingProof, deviceCommitment, formatLinkCode, HOST_PAIRING_FRAGMENT, LINK_CODE_LENGTH, linkCode, normalizeLinkCode, pairingProof, signedPrompt, type Statement, statementBytes, type VerifyOptions, type VerifyOutcome, verifyStatement, vouchStatement, type VouchStatement, } from "./statements.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,cAAc,EACnB,YAAY,EACZ,KAAK,eAAe,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,eAAe,EACf,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,qBAAqB,EACrB,cAAc,EACd,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,eAAe,EACf,KAAK,YAAY,EACjB,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,KAAK,eAAe,EACpB,oBAAoB,EACpB,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,wBAAwB,EACxB,KAAK,aAAa,EAClB,iBAAiB,EACjB,WAAW,EACX,KAAK,WAAW,EAChB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,KAAK,iBAAiB,GACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,kBAAkB,EACvB,kBAAkB,EAClB,KAAK,yBAAyB,GAC/B,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAClB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAChB,KAAK,UAAU,EACf,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,GAAG,EACR,qBAAqB,EACrB,KAAK,aAAa,EAClB,aAAa,EACb,cAAc,EACd,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,eAAe,EACf,KAAK,eAAe,EACpB,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,MAAM,EACX,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,KAAK,SAAS,EACd,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,eAAe,EACf,cAAc,EACd,KAAK,cAAc,GACpB,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,9 @@
1
+ export { AGENTS_TAG, SESSIONS_TAG, } from "./account.js";
2
+ export { createGrantKeys, HOST_ASSERTION_TTL_MS, HOST_CLIENT_ID, hostAccountActions, hostPrincipalOf, hostRoutes, HOSTS_MIGRATION, HOSTS_TAG, MATCHING_CODE, verifyHostAssertion, } from "./hosts.js";
3
+ export { createDeviceRegistry, deviceAccountActions, DEVICE_LINKING_MIGRATION, DEVICES_MIGRATION, DEVICES_TAG, } from "./devices.js";
4
+ export { AUTH_BASE_PATH, MCP_SCOPE, parlorAuth, } from "./better-auth.js";
5
+ export { betterAuthProvider, } from "./provider.js";
6
+ export { REVOCATION_CHANNEL, RevocationSet, } from "./revocation.js";
7
+ export { agentPrincipalOf, credentialOf, delegate, HOST_ASSERTION_TYP, HOST_AUDIENCE, MAX_TURN_TOKEN_TTL_MS, TURN_AUDIENCE, TURN_TOKEN_TYP, verifyTurnToken, } from "./tokens.js";
8
+ export { answerStatement, promptStatement, removeStatement, checkPairingProof, deviceCommitment, formatLinkCode, HOST_PAIRING_FRAGMENT, LINK_CODE_LENGTH, linkCode, normalizeLinkCode, pairingProof, signedPrompt, statementBytes, verifyStatement, vouchStatement, } from "./statements.js";
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEV,YAAY,GAEb,MAAM,cAAc,CAAC;AACtB,OAAO,EAIL,eAAe,EAIf,qBAAqB,EACrB,cAAc,EAEd,kBAAkB,EAMlB,eAAe,EAEf,UAAU,EACV,eAAe,EACf,SAAS,EACT,aAAa,EACb,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,oBAAoB,EAEpB,oBAAoB,EAGpB,wBAAwB,EAExB,iBAAiB,EACjB,WAAW,GAGZ,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,GAEX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,kBAAkB,GAEnB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,kBAAkB,EAGlB,aAAa,GAEd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,gBAAgB,EAEhB,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,aAAa,EAGb,qBAAqB,EAErB,aAAa,EACb,cAAc,EAId,eAAe,GAChB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,eAAe,EAGf,eAAe,EAEf,eAAe,EAGf,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,gBAAgB,EAChB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,EAEZ,cAAc,EAGd,eAAe,EACf,cAAc,GAEf,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Migration } from "@parlor/server";
2
+ export declare const AUTH_MIGRATIONS: readonly Migration[];
3
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EAe/C,CAAC"}
@@ -0,0 +1,17 @@
1
+ export const AUTH_MIGRATIONS = [
2
+ {
3
+ id: "auth/0001_revocations",
4
+ sql: `
5
+ create table parlor_auth_revocations (
6
+ kind text not null,
7
+ id text not null,
8
+ revoked_at timestamptz not null,
9
+ primary key (kind, id)
10
+ )`,
11
+ },
12
+ {
13
+ id: "auth/0002_revocations_revoked_at",
14
+ sql: "create index parlor_auth_revocations_revoked_at on parlor_auth_revocations (revoked_at)",
15
+ },
16
+ ];
17
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../src/migrations.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,eAAe,GAAyB;IACnD;QACE,EAAE,EAAE,uBAAuB;QAC3B,GAAG,EAAE;;;;;;QAMD;KACL;IACD;QACE,EAAE,EAAE,kCAAkC;QACtC,GAAG,EAAE,yFAAyF;KAC/F;CACF,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const escape: (text: string) => string;
2
+ export declare function page(title: string, body: string, formAction: readonly string[]): Response;
3
+ export declare function failure(message: string, status: number): Response;
4
+ //# sourceMappingURL=pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.d.ts","sourceRoot":"","sources":["../src/pages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,SAAU,MAAM,WAKhC,CAAC;AAsBJ,wBAAgB,IAAI,CAClB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,QAAQ,CA2BV;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,QAAQ,CAOjE"}
package/dist/pages.js ADDED
@@ -0,0 +1,53 @@
1
+ import { createHash } from "node:crypto";
2
+ export const escape = (text) => text.replace(/[&<>"']/g, (char) => ({ "&": "&amp;", "<": "&lt;", ">": "&gt;", '"': "&quot;", "'": "&#39;" })[char]);
3
+ const STYLE = `
4
+ :root { color-scheme: light dark; --bg: #f6f6f4; --card: #fff; --text: #1d1d1b; --muted: #5f5f5a; --line: #e2e2dc; --accent: #1d1d1b; --on-accent: #fff; }
5
+ @media (prefers-color-scheme: dark) { :root { --bg: #151514; --card: #1f1f1d; --text: #ededea; --muted: #a3a39d; --line: #34342f; --accent: #ededea; --on-accent: #151514; } }
6
+ * { box-sizing: border-box; }
7
+ body { margin: 0; min-height: 100vh; display: grid; place-items: center; padding: 16px; background: var(--bg); color: var(--text); font: 15px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; }
8
+ main { width: 100%; max-width: 420px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 28px; }
9
+ h1 { font-size: 20px; line-height: 1.3; margin: 0 0 8px; }
10
+ p { margin: 0 0 12px; color: var(--muted); }
11
+ ul { margin: 0 0 20px; padding-left: 20px; }
12
+ li { margin-bottom: 6px; }
13
+ strong { color: var(--text); font-weight: 600; }
14
+ code { font: 0.9em ui-monospace, "SF Mono", Menlo, monospace; color: var(--text); }
15
+ form { display: flex; gap: 8px; justify-content: flex-end; margin: 0; }
16
+ button { font: inherit; font-weight: 600; padding: 9px 18px; border-radius: 8px; border: 1px solid var(--line); background: transparent; color: var(--text); cursor: pointer; }
17
+ button[value="true"], button[value="connect"] { background: var(--accent); border-color: var(--accent); color: var(--on-accent); }
18
+ button:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
19
+ `;
20
+ const STYLE_HASH = createHash("sha256").update(STYLE).digest("base64");
21
+ export function page(title, body, formAction) {
22
+ const html = `<!doctype html>
23
+ <html lang="en">
24
+ <head>
25
+ <meta charset="utf-8">
26
+ <meta name="viewport" content="width=device-width, initial-scale=1">
27
+ <title>${escape(title)}</title>
28
+ <style>${STYLE}</style>
29
+ </head>
30
+ <body><main>${body}</main></body>
31
+ </html>`;
32
+ return new Response(html, {
33
+ headers: {
34
+ "content-type": "text/html; charset=utf-8",
35
+ "cache-control": "no-store",
36
+ "content-security-policy": [
37
+ "default-src 'none'",
38
+ `style-src 'sha256-${STYLE_HASH}'`,
39
+ `form-action ${formAction.join(" ")}`,
40
+ "frame-ancestors 'none'",
41
+ "base-uri 'none'",
42
+ ].join("; "),
43
+ "x-content-type-options": "nosniff",
44
+ // no-referrer would make the form POST carry `Origin: null`.
45
+ "referrer-policy": "same-origin",
46
+ },
47
+ });
48
+ }
49
+ export function failure(message, status) {
50
+ const response = page("Authorization failed", `<h1>Authorization failed</h1><p>${escape(message)}</p>`, ["'none'"]);
51
+ return new Response(response.body, { status, headers: response.headers });
52
+ }
53
+ //# sourceMappingURL=pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pages.js","sourceRoot":"","sources":["../src/pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CACrC,IAAI,CAAC,OAAO,CACV,UAAU,EACV,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CAAE,CACnF,CAAC;AAEJ,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;CAgBb,CAAC;AAEF,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEvE,MAAM,UAAU,IAAI,CAClB,KAAa,EACb,IAAY,EACZ,UAA6B;IAE7B,MAAM,IAAI,GAAG;;;;;SAKN,MAAM,CAAC,KAAK,CAAC;SACb,KAAK;;cAEA,IAAI;QACV,CAAC;IACP,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE;QACxB,OAAO,EAAE;YACP,cAAc,EAAE,0BAA0B;YAC1C,eAAe,EAAE,UAAU;YAC3B,yBAAyB,EAAE;gBACzB,oBAAoB;gBACpB,qBAAqB,UAAU,GAAG;gBAClC,eAAe,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACrC,wBAAwB;gBACxB,iBAAiB;aAClB,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,wBAAwB,EAAE,SAAS;YACnC,6DAA6D;YAC7D,iBAAiB,EAAE,aAAa;SACjC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe,EAAE,MAAc;IACrD,MAAM,QAAQ,GAAG,IAAI,CACnB,sBAAsB,EACtB,mCAAmC,MAAM,CAAC,OAAO,CAAC,MAAM,EACxD,CAAC,QAAQ,CAAC,CACX,CAAC;IACF,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,74 @@
1
+ import { type AuthProvider } from "@parlor/server";
2
+ import type { BetterAuthOptions } from "better-auth";
3
+ /** The slice of a Better Auth instance Parlor relies on. */
4
+ export interface BetterAuthInstance {
5
+ readonly options: BetterAuthOptions;
6
+ handler(request: Request): Promise<Response>;
7
+ readonly api: {
8
+ getSession(input: {
9
+ headers: Headers;
10
+ }): Promise<{
11
+ readonly session: {
12
+ readonly id: string;
13
+ readonly userId: string;
14
+ };
15
+ readonly user: {
16
+ readonly id: string;
17
+ readonly name: string;
18
+ readonly email: string;
19
+ };
20
+ } | null>;
21
+ };
22
+ readonly $context: Promise<BetterAuthContext>;
23
+ }
24
+ interface Where {
25
+ readonly field: string;
26
+ readonly value: string;
27
+ }
28
+ export interface BetterAuthContext {
29
+ readonly authCookies: {
30
+ readonly sessionToken: {
31
+ readonly name: string;
32
+ };
33
+ };
34
+ readonly adapter: {
35
+ findMany<T>(input: {
36
+ model: string;
37
+ where?: Where[];
38
+ }): Promise<T[]>;
39
+ findOne<T>(input: {
40
+ model: string;
41
+ where: Where[];
42
+ }): Promise<T | null>;
43
+ deleteMany(input: {
44
+ model: string;
45
+ where: Where[];
46
+ }): Promise<number>;
47
+ };
48
+ readonly secret: string;
49
+ readonly internalAdapter: {
50
+ listSessions(userId: string): Promise<StoredSession[]>;
51
+ deleteSession(token: string): Promise<void>;
52
+ };
53
+ }
54
+ export interface StoredSession {
55
+ readonly id: string;
56
+ readonly token: string;
57
+ readonly userId: string;
58
+ readonly createdAt: Date;
59
+ readonly updatedAt: Date;
60
+ readonly expiresAt: Date;
61
+ readonly ipAddress?: string | null | undefined;
62
+ readonly userAgent?: string | null | undefined;
63
+ }
64
+ export interface BetterAuthProviderOptions {
65
+ readonly instance: BetterAuthInstance;
66
+ }
67
+ /**
68
+ * Sessions become user principals: a cookie on the same-origin web, a bearer token in
69
+ * native shells. Access tokens Better Auth issued to MCP clients become agent principals
70
+ * without a turn.
71
+ */
72
+ export declare function betterAuthProvider({ instance, }: BetterAuthProviderOptions): AuthProvider;
73
+ export {};
74
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,YAAY,EAMlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAoDrD,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;IACpC,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE;QACZ,UAAU,CAAC,KAAK,EAAE;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,GAAG,OAAO,CAAC;YAC/C,QAAQ,CAAC,OAAO,EAAE;gBAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC;YACnE,QAAQ,CAAC,IAAI,EAAE;gBACb,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;aACxB,CAAC;SACH,GAAG,IAAI,CAAC,CAAC;KACX,CAAC;IACF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/C;AAED,UAAU,KAAK;IACb,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IAC3E,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACxE,UAAU,CAAC,KAAK,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KACvE,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,eAAe,EAAE;QACxB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACvD,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7C,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAChD;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;CACvC;AAQD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EACjC,QAAQ,GACT,EAAE,yBAAyB,GAAG,YAAY,CAyR1C"}
@@ -0,0 +1,286 @@
1
+ import { ANONYMOUS, asId, } from "@parlor/core";
2
+ import { createRegistry } from "@parlor/core/registry";
3
+ import { AuthFailure, REVOCATION_HORIZON_MS, } from "@parlor/server";
4
+ import { createLocalJWKSet, decodeProtectedHeader, errors, jwtVerify, } from "jose";
5
+ import { accountActions } from "./account.js";
6
+ import { AUDIT_MIGRATION, createAuditLog } from "./audit.js";
7
+ import { AUTH_PLUGIN, bridgeOf, MCP_SCOPE, } from "./better-auth.js";
8
+ import { createDeviceRegistry, deviceAccountActions, DEVICE_LINKING_MIGRATION, DEVICES_MIGRATION, } from "./devices.js";
9
+ import { grantIdOf } from "./grants.js";
10
+ import { createGrantKeys, hostAccountActions, hostPrincipalOf, HOSTS_MIGRATION, hostRoutes, verifyHostAssertion, } from "./hosts.js";
11
+ import { AUTH_MIGRATIONS } from "./migrations.js";
12
+ import { RevocationSet } from "./revocation.js";
13
+ import { authRoutes } from "./routes.js";
14
+ import { agentPrincipalOf, credentialOf, delegate, verifyTurnToken, } from "./tokens.js";
15
+ import { createTurnKeyStore, TURN_KEYS_MIGRATION, } from "./turn-keys.js";
16
+ function hasCookie(request, name) {
17
+ const cookie = request.headers.get("cookie");
18
+ if (!cookie)
19
+ return false;
20
+ return cookie.split(";").some((part) => part.trim().startsWith(`${name}=`));
21
+ }
22
+ /**
23
+ * Sessions become user principals: a cookie on the same-origin web, a bearer token in
24
+ * native shells. Access tokens Better Auth issued to MCP clients become agent principals
25
+ * without a turn.
26
+ */
27
+ export function betterAuthProvider({ instance, }) {
28
+ const bridge = bridgeOf(instance.options);
29
+ const settings = bridge.settings;
30
+ let revocations;
31
+ let keys;
32
+ let grantKeys;
33
+ let turnKeys;
34
+ let devices;
35
+ const clientNames = new Map();
36
+ const authenticatedAt = new WeakMap();
37
+ const installed = () => {
38
+ if (!grantKeys || !turnKeys || !devices) {
39
+ throw new Error("The auth provider is not installed.");
40
+ }
41
+ return { grantKeys, turnKeys, devices };
42
+ };
43
+ const started = () => {
44
+ if (!revocations)
45
+ throw new Error("The auth provider is not installed.");
46
+ return revocations;
47
+ };
48
+ let preparingTurnKeys = false;
49
+ const ready = async () => {
50
+ await started().ready();
51
+ if (!preparingTurnKeys) {
52
+ preparingTurnKeys = true;
53
+ installed()
54
+ .turnKeys.keys()
55
+ .catch(() => {
56
+ preparingTurnKeys = false;
57
+ });
58
+ }
59
+ };
60
+ const loadKeys = async () => {
61
+ const response = await instance.handler(new Request(`${settings.baseURL}/jwks`));
62
+ if (!response.ok)
63
+ throw new Error(`Better Auth answered /jwks with ${response.status}`);
64
+ return createLocalJWKSet((await response.json()));
65
+ };
66
+ const verify = async (token) => {
67
+ const options = {
68
+ issuer: settings.baseURL,
69
+ audience: settings.resource,
70
+ typ: "at+jwt",
71
+ };
72
+ keys ??= await loadKeys();
73
+ try {
74
+ return (await jwtVerify(token, keys, options)).payload;
75
+ }
76
+ catch (error) {
77
+ if (!(error instanceof errors.JWKSNoMatchingKey))
78
+ throw error;
79
+ keys = await loadKeys();
80
+ return (await jwtVerify(token, keys, options)).payload;
81
+ }
82
+ };
83
+ const clientName = (clientId) => {
84
+ let name = clientNames.get(clientId);
85
+ if (!name) {
86
+ name = instance.$context
87
+ .then((context) => context.adapter.findOne({
88
+ model: "oauthClient",
89
+ where: [{ field: "clientId", value: clientId }],
90
+ }))
91
+ .then((client) => client?.name || clientId);
92
+ name.catch(() => clientNames.delete(clientId));
93
+ clientNames.set(clientId, name);
94
+ }
95
+ return name;
96
+ };
97
+ const agentOf = async (token) => {
98
+ let payload;
99
+ try {
100
+ payload = await verify(token);
101
+ }
102
+ catch (error) {
103
+ if (error instanceof errors.JWTExpired) {
104
+ throw new AuthFailure("expired", "The access token expired.");
105
+ }
106
+ throw new AuthFailure("invalid", "The access token is invalid.");
107
+ }
108
+ const { sub, iat } = payload;
109
+ const clientId = payload.client_id;
110
+ const scopes = typeof payload.scope === "string" ? payload.scope.split(" ") : [];
111
+ if (typeof sub !== "string" || typeof clientId !== "string" || iat === undefined) {
112
+ throw new AuthFailure("invalid", "The access token is missing claims.");
113
+ }
114
+ if (!scopes.includes(MCP_SCOPE)) {
115
+ throw new AuthFailure("invalid", `The access token lacks the "${MCP_SCOPE}" scope.`);
116
+ }
117
+ const grantId = grantIdOf(sub, clientId);
118
+ if (await started().isRevoked({ kind: "grant", id: grantId }, iat * 1000)) {
119
+ throw new AuthFailure("revoked", "Access for this agent was revoked.");
120
+ }
121
+ return {
122
+ kind: "agent",
123
+ userId: asId("user", sub),
124
+ grantId,
125
+ agent: {
126
+ name: await clientName(clientId),
127
+ verified: clientId.startsWith("https://"),
128
+ },
129
+ };
130
+ };
131
+ const userOf = async (request) => {
132
+ const found = await instance.api.getSession({ headers: request.headers });
133
+ if (!found)
134
+ return undefined;
135
+ return {
136
+ kind: "user",
137
+ userId: asId("user", found.user.id),
138
+ sessionId: found.session.id,
139
+ };
140
+ };
141
+ const publicUrlOf = (request) => new URL(new URL(request.url).pathname, settings.origin).href;
142
+ const hostOf = async (request, assertion) => {
143
+ const grant = await verifyHostAssertion(assertion, { method: request.method, url: publicUrlOf(request) }, installed().grantKeys, Date.now());
144
+ if (await started().isRevoked({ kind: "grant", id: grant.grantId })) {
145
+ throw new AuthFailure("revoked", "This computer was disconnected.");
146
+ }
147
+ return hostPrincipalOf(grant);
148
+ };
149
+ const turnOf = async (token) => {
150
+ const store = installed().turnKeys;
151
+ let turnTokenKeys = await store.keys();
152
+ const kid = decodeProtectedHeader(token).kid;
153
+ if (kid !== undefined && !turnTokenKeys.publicKeys.has(kid)) {
154
+ turnTokenKeys = await store.refresh();
155
+ }
156
+ const claims = await verifyTurnToken(turnTokenKeys, token, Date.now());
157
+ if (await started().isRevoked({ kind: "grant", id: claims.gid })) {
158
+ throw new AuthFailure("revoked", "This computer was disconnected.");
159
+ }
160
+ return agentPrincipalOf(claims);
161
+ };
162
+ const authenticateRequest = async (request) => {
163
+ await ready();
164
+ const credential = credentialOf(request.headers.get("authorization"));
165
+ switch (credential?.kind) {
166
+ case "host":
167
+ return hostOf(request, credential.assertion);
168
+ case "turn":
169
+ return turnOf(credential.token);
170
+ case "access":
171
+ return agentOf(credential.token);
172
+ case "session": {
173
+ const user = await userOf(request);
174
+ if (!user)
175
+ throw new AuthFailure("invalid", "The session is invalid or has ended.");
176
+ return user;
177
+ }
178
+ case undefined:
179
+ break;
180
+ }
181
+ const { authCookies } = await instance.$context;
182
+ if (!hasCookie(request, authCookies.sessionToken.name))
183
+ return ANONYMOUS;
184
+ return (await userOf(request)) ?? ANONYMOUS;
185
+ };
186
+ return {
187
+ name: AUTH_PLUGIN,
188
+ migrations: [
189
+ ...AUTH_MIGRATIONS,
190
+ HOSTS_MIGRATION,
191
+ DEVICES_MIGRATION,
192
+ TURN_KEYS_MIGRATION,
193
+ AUDIT_MIGRATION,
194
+ DEVICE_LINKING_MIGRATION,
195
+ ],
196
+ enforcing: true,
197
+ setup(host) {
198
+ const { database } = host;
199
+ if (!database)
200
+ throw new Error("The auth plugin needs a database.");
201
+ const set = new RevocationSet({
202
+ database,
203
+ horizonMs: REVOCATION_HORIZON_MS,
204
+ });
205
+ revocations = set;
206
+ const auditLog = createAuditLog(database);
207
+ bridge.revoke = (notice) => database.transaction((tx) => RevocationSet.revoke(tx, notice));
208
+ grantKeys = createGrantKeys(database);
209
+ devices = createDeviceRegistry(database);
210
+ turnKeys = createTurnKeyStore({
211
+ database,
212
+ issuer: settings.baseURL,
213
+ secret: async () => (await instance.$context).secret,
214
+ });
215
+ const hostDeps = {
216
+ host,
217
+ settings,
218
+ };
219
+ return {
220
+ actions: createRegistry({
221
+ ...accountActions({ instance, host, revoke: bridge.revoke }).actions,
222
+ ...hostAccountActions(hostDeps).actions,
223
+ ...deviceAccountActions({ host, registry: devices }).actions,
224
+ }),
225
+ routes: [...authRoutes({ instance, settings, host }), ...hostRoutes(hostDeps)],
226
+ audit: (record) => auditLog.record(record),
227
+ close: async () => {
228
+ await Promise.all([set.stop(), auditLog.stop()]);
229
+ },
230
+ };
231
+ },
232
+ async authenticate(request) {
233
+ const startedAt = Date.now();
234
+ const principal = await authenticateRequest(request);
235
+ if (principal.kind !== "anonymous")
236
+ authenticatedAt.set(principal, startedAt);
237
+ return principal;
238
+ },
239
+ challenge() {
240
+ const metadata = `${settings.origin}/.well-known/oauth-protected-resource${new URL(settings.resource).pathname}`;
241
+ return Response.json({ error: { code: "unauthenticated", message: "Sign in through OAuth first." } }, {
242
+ status: 401,
243
+ headers: {
244
+ "www-authenticate": `Bearer resource_metadata="${metadata}", scope="${MCP_SCOPE}"`,
245
+ },
246
+ });
247
+ },
248
+ async delegate(host, turn) {
249
+ await ready();
250
+ return delegate(await installed().turnKeys.keys(), host, turn, Date.now());
251
+ },
252
+ async hostActive(grantId) {
253
+ const revoked = await started().isRevoked({ kind: "grant", id: grantId });
254
+ return !revoked && (await installed().grantKeys.get(grantId)) !== undefined;
255
+ },
256
+ async device(userId, deviceId) {
257
+ const registered = await installed().devices.get(userId, deviceId);
258
+ if (!registered)
259
+ return undefined;
260
+ const { id, name, platform, signingKey, presenceKey, vouches } = registered;
261
+ return {
262
+ id,
263
+ name,
264
+ platform,
265
+ signingKey,
266
+ presenceKey,
267
+ ...(vouches ? { vouches } : {}),
268
+ };
269
+ },
270
+ async account(userId) {
271
+ const { adapter } = await instance.$context;
272
+ const user = await adapter.findOne({
273
+ model: "user",
274
+ where: [{ field: "id", value: userId }],
275
+ });
276
+ return user ? { name: user.name, email: user.email } : undefined;
277
+ },
278
+ revoked(principal) {
279
+ const notice = principal.kind === "user"
280
+ ? { kind: "session", id: principal.sessionId }
281
+ : { kind: "grant", id: principal.grantId };
282
+ return started().signal([notice], authenticatedAt.get(principal));
283
+ },
284
+ };
285
+ }
286
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import type { DataProvider } from "@parlor/core";
2
+ export declare const REVOCATION_CHANNEL = "parlor_auth";
3
+ /** NOTIFY payload. Ids only, never content. */
4
+ export interface RevocationNotice {
5
+ readonly kind: "session" | "grant";
6
+ readonly id: string;
7
+ }
8
+ export interface RevocationSetOptions {
9
+ readonly database: DataProvider;
10
+ /**
11
+ * The longest any credential this set guards stays valid. Older revocations are
12
+ * forgotten: nothing they revoke can still verify.
13
+ */
14
+ readonly horizonMs: number;
15
+ readonly now?: (() => number) | undefined;
16
+ readonly relistenBaseMs?: number | undefined;
17
+ readonly relistenMaxMs?: number | undefined;
18
+ }
19
+ /**
20
+ * `following` answers from memory, kept current by NOTIFY. `checking` answers with one
21
+ * primary-key lookup per call: poll-only providers always do, and a following set falls
22
+ * back to it while its LISTEN connection is down.
23
+ */
24
+ export type RevocationMode = "starting" | "following" | "checking";
25
+ /**
26
+ * Every instance's view of what was revoked within the horizon. It loads before it
27
+ * admits anyone, and whenever its LISTEN connection drops it checks the table per call
28
+ * until it listens again and reloads, because a NOTIFY sent meanwhile is lost.
29
+ */
30
+ export declare class RevocationSet {
31
+ #private;
32
+ constructor(options: RevocationSetOptions);
33
+ get mode(): RevocationMode;
34
+ /** Resolves once the set can answer; a failed start is retried by the next call. */
35
+ ready(): Promise<void>;
36
+ /**
37
+ * Revoked when a revocation of the notice is at or after `issuedAt`; without it, when
38
+ * any revocation of the notice is within the horizon.
39
+ */
40
+ isRevoked(notice: RevocationNotice, issuedAt?: number): Promise<boolean>;
41
+ /**
42
+ * Aborts when any of the notices is revoked at or after `since` (default: now). The
43
+ * watch is registered first and the revocations already known are checked after, so one
44
+ * that landed between `since` and this call still aborts it.
45
+ */
46
+ signal(notices: readonly RevocationNotice[], since?: number): AbortSignal;
47
+ /** Records the revocation in the caller's transaction; the NOTIFY goes out on commit. */
48
+ static revoke(tx: unknown, notice: RevocationNotice, at?: number): Promise<void>;
49
+ stop(): Promise<void>;
50
+ }
51
+ //# sourceMappingURL=revocation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revocation.d.ts","sourceRoot":"","sources":["../src/revocation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAKjD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAEhD,+CAA+C;AAC/C,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAMD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC;;;OAGG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7C;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,WAAW,GAAG,UAAU,CAAC;AAWnE;;;;GAIG;AACH,qBAAa,aAAa;;IAkBxB,YAAY,OAAO,EAAE,oBAAoB,EAMxC;IAED,IAAI,IAAI,IAAI,cAAc,CAEzB;IAED,oFAAoF;IACpF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAMrB;IAED;;;OAGG;IACG,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,SAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxE;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,EAAE,KAAK,GAAE,MAAoB,GAAG,WAAW,CAcrF;IAED,yFAAyF;IACzF,OAAa,MAAM,CACjB,EAAE,EAAE,OAAO,EACX,MAAM,EAAE,gBAAgB,EACxB,EAAE,GAAE,MAAmB,GACtB,OAAO,CAAC,IAAI,CAAC,CAUf;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAO1B;CAwJF"}