@prmichaelsen/agentbase-core 0.1.0 → 0.1.2

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 (91) hide show
  1. package/README.md +351 -0
  2. package/dist/client/api-types.generated.d.ts +4024 -0
  3. package/dist/client/api-types.generated.d.ts.map +1 -0
  4. package/dist/client/api-types.generated.js +6 -0
  5. package/dist/client/api-types.generated.js.map +1 -0
  6. package/dist/client/app.d.ts +126 -0
  7. package/dist/client/app.d.ts.map +1 -0
  8. package/dist/client/app.js +107 -0
  9. package/dist/client/app.js.map +1 -0
  10. package/dist/client/http-transport.d.ts +42 -0
  11. package/dist/client/http-transport.d.ts.map +1 -0
  12. package/dist/client/http-transport.js +113 -0
  13. package/dist/client/http-transport.js.map +1 -0
  14. package/dist/client/index.d.ts +6 -0
  15. package/dist/client/index.d.ts.map +1 -0
  16. package/dist/client/index.js +9 -0
  17. package/dist/client/index.js.map +1 -0
  18. package/dist/client/oauth.d.ts +86 -0
  19. package/dist/client/oauth.d.ts.map +1 -0
  20. package/dist/client/oauth.js +148 -0
  21. package/dist/client/oauth.js.map +1 -0
  22. package/dist/client/svc.d.ts +511 -0
  23. package/dist/client/svc.d.ts.map +1 -0
  24. package/dist/client/svc.js +409 -0
  25. package/dist/client/svc.js.map +1 -0
  26. package/dist/config/index.d.ts +34 -0
  27. package/dist/config/index.d.ts.map +1 -0
  28. package/dist/config/index.js +50 -0
  29. package/dist/config/index.js.map +1 -0
  30. package/dist/errors/app-errors.d.ts +34 -0
  31. package/dist/errors/app-errors.d.ts.map +1 -0
  32. package/dist/errors/app-errors.js +34 -0
  33. package/dist/errors/app-errors.js.map +1 -0
  34. package/dist/errors/base.error.d.ts +8 -0
  35. package/dist/errors/base.error.d.ts.map +1 -0
  36. package/dist/errors/base.error.js +9 -0
  37. package/dist/errors/base.error.js.map +1 -0
  38. package/dist/errors/index.d.ts +6 -0
  39. package/dist/errors/index.d.ts.map +1 -0
  40. package/dist/errors/index.js +12 -0
  41. package/dist/errors/index.js.map +1 -0
  42. package/dist/index.d.ts +6 -0
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +5 -0
  45. package/dist/index.js.map +1 -1
  46. package/dist/lib/auth/error-handler.d.ts +6 -0
  47. package/dist/lib/auth/error-handler.d.ts.map +1 -0
  48. package/dist/lib/auth/error-handler.js +18 -0
  49. package/dist/lib/auth/error-handler.js.map +1 -0
  50. package/dist/lib/auth/guards.d.ts +5 -6
  51. package/dist/lib/auth/guards.d.ts.map +1 -1
  52. package/dist/lib/auth/guards.js +7 -18
  53. package/dist/lib/auth/guards.js.map +1 -1
  54. package/dist/lib/auth/index.d.ts +1 -0
  55. package/dist/lib/auth/index.d.ts.map +1 -1
  56. package/dist/lib/auth/index.js +1 -0
  57. package/dist/lib/auth/index.js.map +1 -1
  58. package/dist/lib/auth/session.d.ts.map +1 -1
  59. package/dist/lib/auth/session.js +8 -7
  60. package/dist/lib/auth/session.js.map +1 -1
  61. package/dist/lib/rate-limiter.d.ts.map +1 -1
  62. package/dist/lib/rate-limiter.js +2 -1
  63. package/dist/lib/rate-limiter.js.map +1 -1
  64. package/dist/services/auth.interface.d.ts +15 -0
  65. package/dist/services/auth.interface.d.ts.map +1 -0
  66. package/dist/services/auth.interface.js +2 -0
  67. package/dist/services/auth.interface.js.map +1 -0
  68. package/dist/services/base.service.d.ts +17 -1
  69. package/dist/services/base.service.d.ts.map +1 -1
  70. package/dist/services/base.service.js +26 -3
  71. package/dist/services/base.service.js.map +1 -1
  72. package/dist/services/confirmation-token.service.d.ts +5 -1
  73. package/dist/services/confirmation-token.service.d.ts.map +1 -1
  74. package/dist/services/confirmation-token.service.js.map +1 -1
  75. package/dist/services/index.d.ts +3 -2
  76. package/dist/services/index.d.ts.map +1 -1
  77. package/dist/services/index.js +1 -1
  78. package/dist/services/index.js.map +1 -1
  79. package/dist/types/branded.d.ts +24 -0
  80. package/dist/types/branded.d.ts.map +1 -0
  81. package/dist/types/branded.js +9 -0
  82. package/dist/types/branded.js.map +1 -0
  83. package/dist/types/index.d.ts +4 -0
  84. package/dist/types/index.d.ts.map +1 -1
  85. package/dist/types/index.js +3 -1
  86. package/dist/types/index.js.map +1 -1
  87. package/dist/types/result.d.ts +20 -0
  88. package/dist/types/result.d.ts.map +1 -0
  89. package/dist/types/result.js +44 -0
  90. package/dist/types/result.js.map +1 -0
  91. package/package.json +22 -3
@@ -0,0 +1,6 @@
1
+ export { HttpClient, type SdkResponse, type AuthStrategy, type HttpClientConfig } from './http-transport.js';
2
+ export { AuthSvc, OAuthSvc, MemoriesSvc, ConversationsSvc, ProfilesSvc, GroupsSvc, DmsSvc, SearchSvc, NotificationsSvc, RelationshipsSvc, BoardsSvc, TokensSvc, IntegrationsSvc, SettingsSvc, PaymentsSvc, UsageSvc, JobsSvc, } from './svc.js';
3
+ export { AppClient } from './app.js';
4
+ export { OAuthClient, InMemoryTokenStorage, type TokenStorage, generateCodeVerifier, generateCodeChallenge, buildAuthorizationUrl, } from './oauth.js';
5
+ export type { paths, components, operations } from './api-types.generated.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAG5G,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAC7D,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAChE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAC/D,QAAQ,EAAE,OAAO,GAClB,MAAM,UAAU,CAAA;AAGjB,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpC,OAAO,EACL,WAAW,EAAE,oBAAoB,EAAE,KAAK,YAAY,EACpD,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,GACnE,MAAM,YAAY,CAAA;AAGnB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA"}
@@ -0,0 +1,9 @@
1
+ // HTTP Transport
2
+ export { HttpClient } from './http-transport.js';
3
+ // Service Clients
4
+ export { AuthSvc, OAuthSvc, MemoriesSvc, ConversationsSvc, ProfilesSvc, GroupsSvc, DmsSvc, SearchSvc, NotificationsSvc, RelationshipsSvc, BoardsSvc, TokensSvc, IntegrationsSvc, SettingsSvc, PaymentsSvc, UsageSvc, JobsSvc, } from './svc.js';
5
+ // App Client
6
+ export { AppClient } from './app.js';
7
+ // OAuth
8
+ export { OAuthClient, InMemoryTokenStorage, generateCodeVerifier, generateCodeChallenge, buildAuthorizationUrl, } from './oauth.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,iBAAiB;AACjB,OAAO,EAAE,UAAU,EAA8D,MAAM,qBAAqB,CAAA;AAE5G,kBAAkB;AAClB,OAAO,EACL,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAC7D,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAChE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAC/D,QAAQ,EAAE,OAAO,GAClB,MAAM,UAAU,CAAA;AAEjB,aAAa;AACb,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,QAAQ;AACR,OAAO,EACL,WAAW,EAAE,oBAAoB,EACjC,oBAAoB,EAAE,qBAAqB,EAAE,qBAAqB,GACnE,MAAM,YAAY,CAAA"}
@@ -0,0 +1,86 @@
1
+ import type { HttpClient } from './http-transport.js';
2
+ /**
3
+ * Generate a random PKCE code verifier (43-128 chars, URL-safe)
4
+ */
5
+ export declare function generateCodeVerifier(length?: number): string;
6
+ /**
7
+ * Generate PKCE code challenge from verifier (S256)
8
+ */
9
+ export declare function generateCodeChallenge(verifier: string): Promise<string>;
10
+ /**
11
+ * Build OAuth authorization URL
12
+ */
13
+ export declare function buildAuthorizationUrl(baseUrl: string, params: {
14
+ clientId: string;
15
+ redirectUri: string;
16
+ scope?: string;
17
+ state?: string;
18
+ codeChallenge?: string;
19
+ }): string;
20
+ /**
21
+ * Token storage interface — implement to persist tokens
22
+ */
23
+ export interface TokenStorage {
24
+ getAccessToken(): Promise<string | null>;
25
+ getRefreshToken(): Promise<string | null>;
26
+ setTokens(accessToken: string, refreshToken: string | null, expiresIn: number): Promise<void>;
27
+ clearTokens(): Promise<void>;
28
+ }
29
+ /**
30
+ * In-memory token storage (default, not persistent)
31
+ */
32
+ export declare class InMemoryTokenStorage implements TokenStorage {
33
+ private accessToken;
34
+ private refreshToken;
35
+ private expiresAt;
36
+ getAccessToken(): Promise<string | null>;
37
+ getRefreshToken(): Promise<string | null>;
38
+ setTokens(accessToken: string, refreshToken: string | null, expiresIn: number): Promise<void>;
39
+ clearTokens(): Promise<void>;
40
+ }
41
+ /**
42
+ * OAuth client — handles token exchange and refresh
43
+ */
44
+ export declare class OAuthClient {
45
+ private http;
46
+ private storage;
47
+ private clientId;
48
+ private clientSecret?;
49
+ constructor(http: HttpClient, options: {
50
+ clientId: string;
51
+ clientSecret?: string;
52
+ storage?: TokenStorage;
53
+ });
54
+ /**
55
+ * Exchange authorization code for tokens
56
+ */
57
+ exchangeCode(code: string, redirectUri: string, codeVerifier?: string): Promise<import("./http-transport.js").SdkResponse<{
58
+ access_token: string;
59
+ token_type: string;
60
+ expires_in: number;
61
+ refresh_token?: string;
62
+ }>>;
63
+ /**
64
+ * Refresh access token using refresh token
65
+ */
66
+ refreshAccessToken(): Promise<import("./http-transport.js").SdkResponse<{
67
+ access_token: string;
68
+ token_type: string;
69
+ expires_in: number;
70
+ refresh_token?: string;
71
+ }> | null>;
72
+ /**
73
+ * Exchange API token for access token
74
+ */
75
+ exchangeApiToken(apiToken: string): Promise<import("./http-transport.js").SdkResponse<{
76
+ access_token: string;
77
+ token_type: string;
78
+ expires_in: number;
79
+ }>>;
80
+ /**
81
+ * Get a valid access token (refreshes if expired)
82
+ */
83
+ getValidToken(): Promise<string | null>;
84
+ getStorage(): TokenStorage;
85
+ }
86
+ //# sourceMappingURL=oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.d.ts","sourceRoot":"","sources":["../../src/client/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,SAAK,GAAG,MAAM,CAKxD;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ7E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE;IACN,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GACA,MAAM,CAYR;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACxC,eAAe,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACzC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC7F,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED;;GAEG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACvD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAY;IAEvB,cAAc;IAKd,eAAe;IAIf,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,SAAS,EAAE,MAAM;IAM7E,WAAW;CAKlB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,YAAY,CAAC,CAAQ;gBAG3B,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAA;QAChB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,OAAO,CAAC,EAAE,YAAY,CAAA;KACvB;IAQH;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;sBAWzD,MAAM;oBACR,MAAM;oBACN,MAAM;wBACF,MAAM;;IAc1B;;OAEG;IACG,kBAAkB;sBAYN,MAAM;oBACR,MAAM;oBACN,MAAM;wBACF,MAAM;;IAc1B;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM;sBAErB,MAAM;oBACR,MAAM;oBACN,MAAM;;IActB;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQ7C,UAAU;CAGX"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Generate a random PKCE code verifier (43-128 chars, URL-safe)
3
+ */
4
+ export function generateCodeVerifier(length = 64) {
5
+ const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
6
+ const array = new Uint8Array(length);
7
+ crypto.getRandomValues(array);
8
+ return Array.from(array, (byte) => chars[byte % chars.length]).join('');
9
+ }
10
+ /**
11
+ * Generate PKCE code challenge from verifier (S256)
12
+ */
13
+ export async function generateCodeChallenge(verifier) {
14
+ const encoder = new TextEncoder();
15
+ const data = encoder.encode(verifier);
16
+ const hash = await crypto.subtle.digest('SHA-256', data);
17
+ return btoa(String.fromCharCode(...new Uint8Array(hash)))
18
+ .replace(/\+/g, '-')
19
+ .replace(/\//g, '_')
20
+ .replace(/=+$/, '');
21
+ }
22
+ /**
23
+ * Build OAuth authorization URL
24
+ */
25
+ export function buildAuthorizationUrl(baseUrl, params) {
26
+ const url = new URL('/oauth/authorize', baseUrl);
27
+ url.searchParams.set('response_type', 'code');
28
+ url.searchParams.set('client_id', params.clientId);
29
+ url.searchParams.set('redirect_uri', params.redirectUri);
30
+ if (params.scope)
31
+ url.searchParams.set('scope', params.scope);
32
+ if (params.state)
33
+ url.searchParams.set('state', params.state);
34
+ if (params.codeChallenge) {
35
+ url.searchParams.set('code_challenge', params.codeChallenge);
36
+ url.searchParams.set('code_challenge_method', 'S256');
37
+ }
38
+ return url.toString();
39
+ }
40
+ /**
41
+ * In-memory token storage (default, not persistent)
42
+ */
43
+ export class InMemoryTokenStorage {
44
+ accessToken = null;
45
+ refreshToken = null;
46
+ expiresAt = 0;
47
+ async getAccessToken() {
48
+ if (this.accessToken && Date.now() < this.expiresAt)
49
+ return this.accessToken;
50
+ return null;
51
+ }
52
+ async getRefreshToken() {
53
+ return this.refreshToken;
54
+ }
55
+ async setTokens(accessToken, refreshToken, expiresIn) {
56
+ this.accessToken = accessToken;
57
+ this.refreshToken = refreshToken ?? this.refreshToken;
58
+ this.expiresAt = Date.now() + expiresIn * 1000;
59
+ }
60
+ async clearTokens() {
61
+ this.accessToken = null;
62
+ this.refreshToken = null;
63
+ this.expiresAt = 0;
64
+ }
65
+ }
66
+ /**
67
+ * OAuth client — handles token exchange and refresh
68
+ */
69
+ export class OAuthClient {
70
+ http;
71
+ storage;
72
+ clientId;
73
+ clientSecret;
74
+ constructor(http, options) {
75
+ this.http = http;
76
+ this.clientId = options.clientId;
77
+ this.clientSecret = options.clientSecret;
78
+ this.storage = options.storage ?? new InMemoryTokenStorage();
79
+ }
80
+ /**
81
+ * Exchange authorization code for tokens
82
+ */
83
+ async exchangeCode(code, redirectUri, codeVerifier) {
84
+ const body = {
85
+ grant_type: 'authorization_code',
86
+ code,
87
+ redirect_uri: redirectUri,
88
+ client_id: this.clientId,
89
+ };
90
+ if (this.clientSecret)
91
+ body.client_secret = this.clientSecret;
92
+ if (codeVerifier)
93
+ body.code_verifier = codeVerifier;
94
+ const result = await this.http.post('/api/oauth/token', body);
95
+ if (result.data) {
96
+ await this.storage.setTokens(result.data.access_token, result.data.refresh_token ?? null, result.data.expires_in);
97
+ }
98
+ return result;
99
+ }
100
+ /**
101
+ * Refresh access token using refresh token
102
+ */
103
+ async refreshAccessToken() {
104
+ const refreshToken = await this.storage.getRefreshToken();
105
+ if (!refreshToken)
106
+ return null;
107
+ const body = {
108
+ grant_type: 'refresh_token',
109
+ refresh_token: refreshToken,
110
+ client_id: this.clientId,
111
+ };
112
+ if (this.clientSecret)
113
+ body.client_secret = this.clientSecret;
114
+ const result = await this.http.post('/api/oauth/token', body);
115
+ if (result.data) {
116
+ await this.storage.setTokens(result.data.access_token, result.data.refresh_token ?? null, result.data.expires_in);
117
+ }
118
+ return result;
119
+ }
120
+ /**
121
+ * Exchange API token for access token
122
+ */
123
+ async exchangeApiToken(apiToken) {
124
+ const result = await this.http.post('/api/oauth/token', {
125
+ grant_type: 'api_token',
126
+ api_token: apiToken,
127
+ client_id: this.clientId,
128
+ });
129
+ if (result.data) {
130
+ await this.storage.setTokens(result.data.access_token, null, result.data.expires_in);
131
+ }
132
+ return result;
133
+ }
134
+ /**
135
+ * Get a valid access token (refreshes if expired)
136
+ */
137
+ async getValidToken() {
138
+ const token = await this.storage.getAccessToken();
139
+ if (token)
140
+ return token;
141
+ const refreshResult = await this.refreshAccessToken();
142
+ return refreshResult?.data?.access_token ?? null;
143
+ }
144
+ getStorage() {
145
+ return this.storage;
146
+ }
147
+ }
148
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/client/oauth.ts"],"names":[],"mappings":"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"}