@semiotic-labs/agentium-sdk 0.10.0 → 0.11.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/dist/index.d.ts
CHANGED
|
@@ -22,6 +22,51 @@ export interface AgentiumClientOptions {
|
|
|
22
22
|
*/
|
|
23
23
|
wasmUrl?: WasmInitInput;
|
|
24
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Options for initiating OIDC login.
|
|
27
|
+
*/
|
|
28
|
+
export interface OidcLoginOptions {
|
|
29
|
+
/**
|
|
30
|
+
* The URL where Google will redirect after authentication.
|
|
31
|
+
* Must be registered in the backend's Google Cloud Console.
|
|
32
|
+
* Must use http or https protocol.
|
|
33
|
+
*/
|
|
34
|
+
redirectUri: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Parameters received from the OIDC callback.
|
|
38
|
+
*/
|
|
39
|
+
export interface OidcCallbackParams {
|
|
40
|
+
/**
|
|
41
|
+
* Authorization code from Google.
|
|
42
|
+
*/
|
|
43
|
+
code: string;
|
|
44
|
+
/**
|
|
45
|
+
* State token for CSRF validation.
|
|
46
|
+
*/
|
|
47
|
+
state: string;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Parsed permissions from the OAuth scope string.
|
|
51
|
+
*/
|
|
52
|
+
export interface ParsedPermissions {
|
|
53
|
+
/**
|
|
54
|
+
* Whether the user has base user permission.
|
|
55
|
+
*/
|
|
56
|
+
isUser: boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Whether this is a newly created user.
|
|
59
|
+
*/
|
|
60
|
+
isNewUser: boolean;
|
|
61
|
+
/**
|
|
62
|
+
* The user's blockchain DID (did:pkh:...), if present.
|
|
63
|
+
*/
|
|
64
|
+
did: string | null;
|
|
65
|
+
/**
|
|
66
|
+
* The user's profile ID, if present.
|
|
67
|
+
*/
|
|
68
|
+
profileId: string | null;
|
|
69
|
+
}
|
|
25
70
|
/**
|
|
26
71
|
* Supported OAuth grant types for token exchange.
|
|
27
72
|
*/
|
|
@@ -112,8 +157,11 @@ export declare class AgentiumApiError extends Error {
|
|
|
112
157
|
*/
|
|
113
158
|
export declare class AgentiumClient {
|
|
114
159
|
private readonly axiosInstance;
|
|
160
|
+
private readonly baseURL;
|
|
115
161
|
private readonly DEFAULT_BASE_URL;
|
|
116
162
|
private readonly OAUTH_TOKEN_PATH;
|
|
163
|
+
private readonly OIDC_LOGIN_PATH;
|
|
164
|
+
private readonly OIDC_CALLBACK_PATH;
|
|
117
165
|
private readonly wasmReady;
|
|
118
166
|
private vcStorage;
|
|
119
167
|
/**
|
|
@@ -146,6 +194,83 @@ export declare class AgentiumClient {
|
|
|
146
194
|
* @throws {AgentiumApiError} Will throw a custom API error if the call fails.
|
|
147
195
|
*/
|
|
148
196
|
refreshToken(refreshTokenValue: string): Promise<OAuthTokenResponse>;
|
|
197
|
+
/**
|
|
198
|
+
* Generates the OIDC login URL for redirecting users to Google authentication.
|
|
199
|
+
* Use this when you need the URL without performing the redirect (e.g., for custom UI).
|
|
200
|
+
*
|
|
201
|
+
* @param options - Login options including the redirect URI
|
|
202
|
+
* @returns The full URL to redirect the user to
|
|
203
|
+
* @throws {Error} If redirect_uri is not http or https
|
|
204
|
+
*/
|
|
205
|
+
getOidcLoginUrl(options: OidcLoginOptions): string;
|
|
206
|
+
/**
|
|
207
|
+
* Initiates OIDC login by redirecting to the backend's login endpoint.
|
|
208
|
+
* The backend will redirect to Google OAuth, and after authentication,
|
|
209
|
+
* Google will redirect back to the specified redirect_uri with code and state parameters.
|
|
210
|
+
*
|
|
211
|
+
* Note: This method only works in browser environments.
|
|
212
|
+
*
|
|
213
|
+
* @param options - Login options including the redirect URI
|
|
214
|
+
* @throws {Error} If redirect_uri is not http or https, or if not in a browser environment
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* // Redirect user to Google login
|
|
219
|
+
* client.startOidcLogin({ redirectUri: 'https://myapp.com/auth/callback' });
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
startOidcLogin(options: OidcLoginOptions): void;
|
|
223
|
+
/**
|
|
224
|
+
* Exchanges the authorization code from the OIDC callback for tokens.
|
|
225
|
+
* Call this after receiving the redirect from Google with code and state parameters.
|
|
226
|
+
*
|
|
227
|
+
* @param params - The code and state parameters from the callback URL
|
|
228
|
+
* @returns OAuth token response with access_token, refresh_token, etc.
|
|
229
|
+
* @throws {AgentiumApiError} If the exchange fails (invalid code, expired state, etc.)
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* // In your callback handler
|
|
234
|
+
* const urlParams = new URLSearchParams(window.location.search);
|
|
235
|
+
* const tokens = await client.exchangeOidcCode({
|
|
236
|
+
* code: urlParams.get('code')!,
|
|
237
|
+
* state: urlParams.get('state')!,
|
|
238
|
+
* });
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
exchangeOidcCode(params: OidcCallbackParams): Promise<OAuthTokenResponse>;
|
|
242
|
+
/**
|
|
243
|
+
* Parses the OAuth scope string to extract permissions.
|
|
244
|
+
*
|
|
245
|
+
* @param scope - The scope string from the token response
|
|
246
|
+
* @returns Parsed permissions object
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* const tokens = await client.exchangeOidcCode({ code, state });
|
|
251
|
+
* const permissions = client.parseScope(tokens.scope);
|
|
252
|
+
* if (permissions.isNewUser) {
|
|
253
|
+
* // Show onboarding
|
|
254
|
+
* }
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
parseScope(scope: string): ParsedPermissions;
|
|
258
|
+
/**
|
|
259
|
+
* Helper to extract OIDC callback parameters from a URL.
|
|
260
|
+
* Useful for parsing the current URL after redirect.
|
|
261
|
+
*
|
|
262
|
+
* @param url - The URL to parse (defaults to current window.location.href in browser)
|
|
263
|
+
* @returns The callback parameters, or null if code/state are missing
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* const params = client.parseOidcCallbackUrl();
|
|
268
|
+
* if (params) {
|
|
269
|
+
* const tokens = await client.exchangeOidcCode(params);
|
|
270
|
+
* }
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
273
|
+
parseOidcCallbackUrl(url?: string): OidcCallbackParams | null;
|
|
149
274
|
/**
|
|
150
275
|
* Configures VC storage for persisting membership credentials.
|
|
151
276
|
* Call this with `createBrowserStorage()` in browser environments.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAK3E,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAG3F,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,KAAK,aAAa,GACnB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,oBAAoB,GAC1B,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ;;OAEG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;OAEG;IACH,KAAK,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAEnC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAKjD;AAaD;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkC;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkB;IACnD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,SAAS,CAA0B;IAE3C;;;OAGG;gBACS,OAAO,GAAE,qBAA0B;IAQ/C;;;;;;;;;OASG;IACG,qBAAqB,CACzB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,uBAAuB,CAAC;IA6BnC;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAejE;;;;;OAKG;IACG,YAAY,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -35,8 +35,11 @@ function parseScopeForIdentity(scope) {
|
|
|
35
35
|
*/
|
|
36
36
|
export class AgentiumClient {
|
|
37
37
|
axiosInstance;
|
|
38
|
+
baseURL;
|
|
38
39
|
DEFAULT_BASE_URL = 'https://api.agentium.network';
|
|
39
40
|
OAUTH_TOKEN_PATH = '/oauth/token';
|
|
41
|
+
OIDC_LOGIN_PATH = '/auth/oidc/login';
|
|
42
|
+
OIDC_CALLBACK_PATH = '/auth/oidc/callback';
|
|
40
43
|
wasmReady;
|
|
41
44
|
vcStorage = null;
|
|
42
45
|
/**
|
|
@@ -44,9 +47,9 @@ export class AgentiumClient {
|
|
|
44
47
|
* @param options - Configuration options for the client.
|
|
45
48
|
*/
|
|
46
49
|
constructor(options = {}) {
|
|
47
|
-
|
|
50
|
+
this.baseURL = options.baseURL || this.DEFAULT_BASE_URL;
|
|
48
51
|
this.axiosInstance = axios.create({
|
|
49
|
-
baseURL: baseURL,
|
|
52
|
+
baseURL: this.baseURL,
|
|
50
53
|
});
|
|
51
54
|
this.wasmReady = ensureWasmReady(options.wasmUrl);
|
|
52
55
|
}
|
|
@@ -128,9 +131,134 @@ export class AgentiumClient {
|
|
|
128
131
|
throw error;
|
|
129
132
|
}
|
|
130
133
|
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Generates the OIDC login URL for redirecting users to Google authentication.
|
|
136
|
+
* Use this when you need the URL without performing the redirect (e.g., for custom UI).
|
|
137
|
+
*
|
|
138
|
+
* @param options - Login options including the redirect URI
|
|
139
|
+
* @returns The full URL to redirect the user to
|
|
140
|
+
* @throws {Error} If redirect_uri is not http or https
|
|
141
|
+
*/
|
|
142
|
+
getOidcLoginUrl(options) {
|
|
143
|
+
const url = new URL(options.redirectUri);
|
|
144
|
+
if (!['http:', 'https:'].includes(url.protocol)) {
|
|
145
|
+
throw new Error('redirect_uri must use http or https protocol');
|
|
146
|
+
}
|
|
147
|
+
return `${this.baseURL}${this.OIDC_LOGIN_PATH}?redirect_uri=${encodeURIComponent(options.redirectUri)}`;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Initiates OIDC login by redirecting to the backend's login endpoint.
|
|
151
|
+
* The backend will redirect to Google OAuth, and after authentication,
|
|
152
|
+
* Google will redirect back to the specified redirect_uri with code and state parameters.
|
|
153
|
+
*
|
|
154
|
+
* Note: This method only works in browser environments.
|
|
155
|
+
*
|
|
156
|
+
* @param options - Login options including the redirect URI
|
|
157
|
+
* @throws {Error} If redirect_uri is not http or https, or if not in a browser environment
|
|
158
|
+
*
|
|
159
|
+
* @example
|
|
160
|
+
* ```typescript
|
|
161
|
+
* // Redirect user to Google login
|
|
162
|
+
* client.startOidcLogin({ redirectUri: 'https://myapp.com/auth/callback' });
|
|
163
|
+
* ```
|
|
164
|
+
*/
|
|
165
|
+
startOidcLogin(options) {
|
|
166
|
+
if (typeof window === 'undefined') {
|
|
167
|
+
throw new Error('startOidcLogin can only be used in browser environments');
|
|
168
|
+
}
|
|
169
|
+
const loginUrl = this.getOidcLoginUrl(options);
|
|
170
|
+
window.location.href = loginUrl;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Exchanges the authorization code from the OIDC callback for tokens.
|
|
174
|
+
* Call this after receiving the redirect from Google with code and state parameters.
|
|
175
|
+
*
|
|
176
|
+
* @param params - The code and state parameters from the callback URL
|
|
177
|
+
* @returns OAuth token response with access_token, refresh_token, etc.
|
|
178
|
+
* @throws {AgentiumApiError} If the exchange fails (invalid code, expired state, etc.)
|
|
179
|
+
*
|
|
180
|
+
* @example
|
|
181
|
+
* ```typescript
|
|
182
|
+
* // In your callback handler
|
|
183
|
+
* const urlParams = new URLSearchParams(window.location.search);
|
|
184
|
+
* const tokens = await client.exchangeOidcCode({
|
|
185
|
+
* code: urlParams.get('code')!,
|
|
186
|
+
* state: urlParams.get('state')!,
|
|
187
|
+
* });
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
async exchangeOidcCode(params) {
|
|
191
|
+
try {
|
|
192
|
+
const searchParams = new URLSearchParams({
|
|
193
|
+
code: params.code,
|
|
194
|
+
state: params.state,
|
|
195
|
+
});
|
|
196
|
+
const response = await this.axiosInstance.get(`${this.OIDC_CALLBACK_PATH}?${searchParams.toString()}`, {
|
|
197
|
+
headers: {
|
|
198
|
+
Accept: 'application/json',
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
return response.data;
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
if (isAxiosError(error)) {
|
|
205
|
+
throw new AgentiumApiError(error.message, error.response?.status);
|
|
206
|
+
}
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Parses the OAuth scope string to extract permissions.
|
|
212
|
+
*
|
|
213
|
+
* @param scope - The scope string from the token response
|
|
214
|
+
* @returns Parsed permissions object
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* const tokens = await client.exchangeOidcCode({ code, state });
|
|
219
|
+
* const permissions = client.parseScope(tokens.scope);
|
|
220
|
+
* if (permissions.isNewUser) {
|
|
221
|
+
* // Show onboarding
|
|
222
|
+
* }
|
|
223
|
+
* ```
|
|
224
|
+
*/
|
|
225
|
+
parseScope(scope) {
|
|
226
|
+
const parts = scope.split(/\s+/);
|
|
227
|
+
return {
|
|
228
|
+
isUser: parts.includes('user'),
|
|
229
|
+
isNewUser: parts.includes('new_user'),
|
|
230
|
+
did: parts.find((p) => p.startsWith('did:pkh:')) ?? null,
|
|
231
|
+
profileId: parts.find((p) => p.startsWith('profile:'))?.replace('profile:', '') ?? null,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Helper to extract OIDC callback parameters from a URL.
|
|
236
|
+
* Useful for parsing the current URL after redirect.
|
|
237
|
+
*
|
|
238
|
+
* @param url - The URL to parse (defaults to current window.location.href in browser)
|
|
239
|
+
* @returns The callback parameters, or null if code/state are missing
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```typescript
|
|
243
|
+
* const params = client.parseOidcCallbackUrl();
|
|
244
|
+
* if (params) {
|
|
245
|
+
* const tokens = await client.exchangeOidcCode(params);
|
|
246
|
+
* }
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
parseOidcCallbackUrl(url) {
|
|
250
|
+
const targetUrl = url ?? (typeof window !== 'undefined' ? window.location.href : '');
|
|
251
|
+
if (!targetUrl) {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
const parsedUrl = new URL(targetUrl);
|
|
255
|
+
const code = parsedUrl.searchParams.get('code');
|
|
256
|
+
const state = parsedUrl.searchParams.get('state');
|
|
257
|
+
if (!code || !state) {
|
|
258
|
+
return null;
|
|
259
|
+
}
|
|
260
|
+
return { code, state };
|
|
261
|
+
}
|
|
134
262
|
/**
|
|
135
263
|
* Configures VC storage for persisting membership credentials.
|
|
136
264
|
* Call this with `createBrowserStorage()` in browser environments.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,EAAE;AACF,+BAA+B;AAE/B,OAAO,KAAK,EAAE,EAAE,YAAY,EAAsB,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAsB,MAAM,WAAW,CAAC;AAC3E,OAAO,EACL,gBAAgB,IAAI,kBAAkB,EACtC,sBAAsB,IAAI,uBAAuB,GAClD,MAAM,2DAA2D,CAAC;AAGnE,0CAA0C;AAC1C,cAAc,eAAe,CAAC;AAC9B,OAAO,EACL,eAAe,EACf,SAAS,EACT,eAAe,EACf,YAAY,EACZ,cAAc,EACd,mBAAmB,GAEpB,MAAM,WAAW,CAAC;AAEnB,6BAA6B;AAC7B,OAAO,EACL,aAAa,EACb,WAAW,EACX,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,YAAY,GAKb,MAAM,gBAAgB,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
Binary file
|