@automattic/agenttic-client 0.1.1 → 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.
@@ -28,31 +28,50 @@ interface TokenData {
28
28
  blogId: string;
29
29
  expire: number;
30
30
  }
31
+ export interface JetpackApiError {
32
+ code?: string;
33
+ status?: number;
34
+ message?: string;
35
+ }
36
+ /**
37
+ * Error handler function type for Jetpack authentication errors
38
+ */
39
+ export type JetpackErrorHandler = (error: JetpackApiError) => string;
31
40
  /**
32
41
  * Request a JWT token from Jetpack for API authentication
42
+ * @param errorHandler - Function to handle and format error messages
33
43
  * @param useCachedToken - Whether to use cached token if available and valid
34
44
  * @return Token data with JWT token and blog ID, or null on failure
35
45
  */
36
- export declare function requestJetpackToken(useCachedToken?: boolean): Promise<TokenData | null>;
46
+ export declare function requestJetpackToken(errorHandler: JetpackErrorHandler, useCachedToken?: boolean): Promise<TokenData | null>;
37
47
  /**
38
- * Jetpack authentication provider for use with Agenttic client.
48
+ * Create a Jetpack authentication provider for use with Agenttic client.
39
49
  *
40
- * This provider handles authentication for WordPress sites with Jetpack,
41
- * automatically managing token caching and refresh.
50
+ * This factory function creates an authentication provider that handles
51
+ * authentication for WordPress sites with Jetpack, automatically managing
52
+ * token caching and refresh.
42
53
  *
43
54
  * @example
44
55
  * ```typescript
45
- * import { jetpackAuthProvider } from '@automattic/agenttic-client';
56
+ * import { createJetpackAuthProvider } from '@automattic/agenttic-client';
46
57
  * import { useAgent } from '@automattic/agenttic-client';
47
58
  *
59
+ * const errorHandler = (error) => {
60
+ * if (error.code === 'rest_forbidden') {
61
+ * return 'Permission denied';
62
+ * }
63
+ * return 'Authentication failed';
64
+ * };
65
+ *
48
66
  * const { state, sendMessage } = useAgent({
49
67
  * agentId: 'my-agent',
50
- * authProvider: jetpackAuthProvider,
68
+ * authProvider: createJetpackAuthProvider(errorHandler),
51
69
  * });
52
70
  * ```
53
71
  *
72
+ * @param errorHandler - Function to handle and format error messages
54
73
  * @return Authentication provider function that returns headers with JWT token
55
74
  */
56
- export declare const jetpackAuthProvider: AuthProvider;
75
+ export declare const createJetpackAuthProvider: (errorHandler: JetpackErrorHandler) => AuthProvider;
57
76
  export {};
58
77
  //# sourceMappingURL=jetpack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jetpack.d.ts","sourceRoot":"","sources":["../../src/auth/jetpack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,2BAA2B,CAAC,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,gBAAgB,EAAE;gBAAE,QAAQ,EAAE,OAAO,CAAA;aAAE,CAAC;SACxC,CAAC;QACF,4BAA4B,CAAC,EAAE;YAC9B,WAAW,EAAE,MAAM,CAAC;SACpB,CAAC;KACF;CACD;AAED,UAAU,SAAS;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf;AA4CD;;;;GAIG;AACH,wBAAsB,mBAAmB,CACxC,cAAc,UAAO,GACnB,OAAO,CAAE,SAAS,GAAG,IAAI,CAAE,CA2E7B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,EAAE,YAkBjC,CAAC"}
1
+ {"version":3,"file":"jetpack.d.ts","sourceRoot":"","sources":["../../src/auth/jetpack.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH;;GAEG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1D,eAAO,MAAM,YAAY,yBAAyB,CAAC;AACnD,eAAO,MAAM,yBAAyB,QAAiB,CAAC;AAExD,OAAO,CAAC,MAAM,CAAC;IACd,UAAU,MAAM;QACf,2BAA2B,CAAC,EAAE;YAC7B,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,gBAAgB,EAAE;gBAAE,QAAQ,EAAE,OAAO,CAAA;aAAE,CAAC;SACxC,CAAC;QACF,4BAA4B,CAAC,EAAE;YAC9B,WAAW,EAAE,MAAM,CAAC;SACpB,CAAC;KACF;CACD;AAED,UAAU,SAAS;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAE,KAAK,EAAE,eAAe,KAAM,MAAM,CAAC;AAmBvE;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACxC,YAAY,EAAE,mBAAmB,EACjC,cAAc,UAAO,GACnB,OAAO,CAAE,SAAS,GAAG,IAAI,CAAE,CA2E7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,yBAAyB,GACrC,cAAc,mBAAmB,KAC/B,YAkBF,CAAC"}
package/dist/index.d.ts CHANGED
@@ -18,5 +18,5 @@ export { BarChart, LineChart, ChartBlock } from './markdown-extensions/charts';
18
18
  export type { MarkdownExtensions, ChartExtensionConfig, ChartData, ChartSeries, } from './markdown-extensions/types';
19
19
  export { createFeedbackActions, useMessageActions } from './message-actions';
20
20
  export type { FeedbackActionsManager } from './message-actions';
21
- export { jetpackAuthProvider } from './auth/jetpack';
21
+ export { createJetpackAuthProvider, type JetpackErrorHandler, type JetpackApiError, } from './auth/jetpack';
22
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACN,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,YAAY,EAEX,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,IAAI,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EAGvB,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EAGV,IAAI,EACJ,YAAY,EACZ,cAAc,EAGd,aAAa,EACb,eAAe,GACf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACX,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/E,YAAY,EACX,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,WAAW,GACX,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EACN,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,sBAAsB,GACtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAGtE,YAAY,EAEX,SAAS,EACT,cAAc,EACd,eAAe,EACf,YAAY,EACZ,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,IAAI,EACJ,OAAO,EACP,UAAU,EACV,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EAGvB,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EAGV,IAAI,EACJ,YAAY,EACZ,cAAc,EAGd,aAAa,EACb,eAAe,GACf,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EACX,kBAAkB,EAClB,kBAAkB,EAClB,SAAS,EACT,UAAU,EACV,kBAAkB,GAClB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG7E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/E,YAAY,EACX,kBAAkB,EAClB,oBAAoB,EACpB,SAAS,EACT,WAAW,GACX,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,EACN,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACpB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -2181,24 +2181,16 @@ import apiFetch from "@wordpress/api-fetch";
2181
2181
  var JWT_TOKEN_ID = "jetpack-ai-jwt-token";
2182
2182
  var JWT_TOKEN_EXPIRATION_TIME = 30 * 60 * 1e3;
2183
2183
  function isSimpleSite() {
2184
- return Boolean(window.Jetpack_Editor_Initial_State?.wpcomBlogId);
2185
- }
2186
- function getJetpackErrorMessage(error) {
2187
- if (error?.code === "rest_invalid_nonce") {
2188
- return "Your session expired. Please refresh the page and try again or check your Jetpack connection.";
2189
- }
2190
- if (error?.code === "rest_forbidden" || error?.status === 403) {
2191
- return "You don't have permission to access Jetpack AI features. Please check your user permissions.";
2192
- }
2193
- if (error?.code === "rest_no_route" || error?.status === 404) {
2194
- return "Unable to connect to Jetpack. Please ensure the Jetpack plugin is active and up to date.";
2195
- }
2196
- if (error?.message?.includes("network") || error?.message?.includes("Network") || error?.message?.includes("fetch")) {
2197
- return "Network connection issue. Please check your internet connection and try again.";
2184
+ const hasJetpackConnection = Boolean(window.JP_CONNECTION_INITIAL_STATE);
2185
+ if (hasJetpackConnection) {
2186
+ return false;
2198
2187
  }
2199
- return "Unable to authenticate with Jetpack. Please try again or contact support if the problem persists.";
2188
+ const isSimple = Boolean(
2189
+ window.Jetpack_Editor_Initial_State?.wpcomBlogId
2190
+ );
2191
+ return isSimple;
2200
2192
  }
2201
- async function requestJetpackToken(useCachedToken = true) {
2193
+ async function requestJetpackToken(errorHandler, useCachedToken = true) {
2202
2194
  const token = localStorage.getItem(JWT_TOKEN_ID);
2203
2195
  let tokenData;
2204
2196
  if (token) {
@@ -2235,7 +2227,7 @@ async function requestJetpackToken(useCachedToken = true) {
2235
2227
  }
2236
2228
  } catch (error) {
2237
2229
  console.log("Failed to fetch Jetpack token:", error);
2238
- throw new Error(getJetpackErrorMessage(error));
2230
+ throw new Error(errorHandler(error));
2239
2231
  }
2240
2232
  if (!data?.token) {
2241
2233
  throw new Error(
@@ -2254,18 +2246,20 @@ async function requestJetpackToken(useCachedToken = true) {
2254
2246
  }
2255
2247
  return newTokenData;
2256
2248
  }
2257
- var jetpackAuthProvider = async () => {
2258
- const headers = {};
2259
- try {
2260
- const tokenData = await requestJetpackToken();
2261
- if (tokenData?.token) {
2262
- headers.Authorization = `${tokenData.token}`;
2249
+ var createJetpackAuthProvider = (errorHandler) => {
2250
+ return async () => {
2251
+ const headers = {};
2252
+ try {
2253
+ const tokenData = await requestJetpackToken(errorHandler);
2254
+ if (tokenData?.token) {
2255
+ headers.Authorization = `${tokenData.token}`;
2256
+ }
2257
+ } catch (error) {
2258
+ console.error("Failed to get Jetpack token for auth:", error);
2259
+ throw error;
2263
2260
  }
2264
- } catch (error) {
2265
- console.error("Failed to get Jetpack token for auth:", error);
2266
- throw error;
2267
- }
2268
- return headers;
2261
+ return headers;
2262
+ };
2269
2263
  };
2270
2264
  export {
2271
2265
  A2AErrorCodes,
@@ -2274,6 +2268,7 @@ export {
2274
2268
  LineChart,
2275
2269
  createClient,
2276
2270
  createFeedbackActions,
2271
+ createJetpackAuthProvider,
2277
2272
  createMessageRenderer,
2278
2273
  createRequestId,
2279
2274
  createTaskId,
@@ -2281,7 +2276,6 @@ export {
2281
2276
  extractTextFromMessage,
2282
2277
  extractToolCallsFromMessage,
2283
2278
  getAgentManager,
2284
- jetpackAuthProvider,
2285
2279
  useAgentChat,
2286
2280
  useClientContext,
2287
2281
  useClientTools,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@automattic/agenttic-client",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "description": "A TypeScript client library for A2A (Agent2Agent) protocol communication",
6
6
  "main": "dist/index.js",