@howone/sdk 0.2.9 → 0.2.11

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.mts CHANGED
@@ -11,16 +11,6 @@ interface FloatingButtonProps {
11
11
  }
12
12
  declare const FloatingButton: React$1.FC<FloatingButtonProps>;
13
13
 
14
- /**
15
- * 统一认证服务
16
- *
17
- * 提供多种认证功能,包括:
18
- * - Google OAuth 认证
19
- * - GitHub OAuth 认证
20
- * - 邮箱验证码认证
21
- * - Token 验证和管理
22
- * - 退出登录
23
- */
24
14
  /**
25
15
  * 发送验证码请求接口
26
16
  */
package/dist/index.d.ts CHANGED
@@ -11,16 +11,6 @@ interface FloatingButtonProps {
11
11
  }
12
12
  declare const FloatingButton: React$1.FC<FloatingButtonProps>;
13
13
 
14
- /**
15
- * 统一认证服务
16
- *
17
- * 提供多种认证功能,包括:
18
- * - Google OAuth 认证
19
- * - GitHub OAuth 认证
20
- * - 邮箱验证码认证
21
- * - Token 验证和管理
22
- * - 退出登录
23
- */
24
14
  /**
25
15
  * 发送验证码请求接口
26
16
  */
package/dist/index.js CHANGED
@@ -30,6 +30,77 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
+ // src/config.ts
34
+ var config_exports = {};
35
+ __export(config_exports, {
36
+ getDefaultProjectId: () => getDefaultProjectId,
37
+ getEnvironment: () => getEnvironment,
38
+ getEnvs: () => getEnvs,
39
+ getGlobalEnvironment: () => getGlobalEnvironment,
40
+ setDefaultProjectId: () => setDefaultProjectId,
41
+ setEnvironment: () => setEnvironment
42
+ });
43
+ function setEnvironment(e) {
44
+ env = e;
45
+ return envs[env] || envs["dev"];
46
+ }
47
+ function getEnvironment() {
48
+ return env;
49
+ }
50
+ function getEnvs() {
51
+ return envs[env] || envs["dev"];
52
+ }
53
+ function setDefaultProjectId(id) {
54
+ DEFAULT_PROJECT_ID = id;
55
+ }
56
+ function getDefaultProjectId() {
57
+ try {
58
+ if (DEFAULT_PROJECT_ID) return DEFAULT_PROJECT_ID;
59
+ const g = globalThis.__HOWONE_PROJECT_ID__;
60
+ if (typeof g === "string" && g.length > 0) return String(g);
61
+ return null;
62
+ } catch {
63
+ return DEFAULT_PROJECT_ID;
64
+ }
65
+ }
66
+ function getGlobalEnvironment() {
67
+ try {
68
+ const g = globalThis.__HOWONE_ENV__;
69
+ if (g === "local" || g === "dev" || g === "prod") return g;
70
+ return null;
71
+ } catch {
72
+ return null;
73
+ }
74
+ }
75
+ var DEFAULT_PROJECT_ID, env, localEnv, devEnv, prodEnv, envs;
76
+ var init_config = __esm({
77
+ "src/config.ts"() {
78
+ "use strict";
79
+ DEFAULT_PROJECT_ID = null;
80
+ env = "dev";
81
+ localEnv = {
82
+ AUTH_ROOT_VALUE: "https://howone.dev",
83
+ baseUrl: "http://localhost:3002/api",
84
+ aiBaseUrl: "https://evoagentx-server.fly.dev"
85
+ };
86
+ devEnv = {
87
+ AUTH_ROOT_VALUE: "https://howone.dev",
88
+ baseUrl: "https://api.howone.dev/api",
89
+ aiBaseUrl: "https://evoagentx-server-stable.fly.dev"
90
+ };
91
+ prodEnv = {
92
+ AUTH_ROOT_VALUE: "https://howone.ai",
93
+ baseUrl: "https://api.howone.ai/api",
94
+ aiBaseUrl: "https://evoagentx-server-deploy.fly.dev"
95
+ };
96
+ envs = {
97
+ local: localEnv,
98
+ dev: devEnv,
99
+ prod: prodEnv
100
+ };
101
+ }
102
+ });
103
+
33
104
  // src/auth/index.ts
34
105
  var auth_exports = {};
35
106
  __export(auth_exports, {
@@ -179,77 +250,6 @@ var init_auth = __esm({
179
250
  }
180
251
  });
181
252
 
182
- // src/config.ts
183
- var config_exports = {};
184
- __export(config_exports, {
185
- getDefaultProjectId: () => getDefaultProjectId,
186
- getEnvironment: () => getEnvironment,
187
- getEnvs: () => getEnvs,
188
- getGlobalEnvironment: () => getGlobalEnvironment,
189
- setDefaultProjectId: () => setDefaultProjectId,
190
- setEnvironment: () => setEnvironment
191
- });
192
- function setEnvironment(e) {
193
- env = e;
194
- return envs[env] || envs["dev"];
195
- }
196
- function getEnvironment() {
197
- return env;
198
- }
199
- function getEnvs() {
200
- return envs[env] || envs["dev"];
201
- }
202
- function setDefaultProjectId(id) {
203
- DEFAULT_PROJECT_ID = id;
204
- }
205
- function getDefaultProjectId() {
206
- try {
207
- if (DEFAULT_PROJECT_ID) return DEFAULT_PROJECT_ID;
208
- const g = globalThis.__HOWONE_PROJECT_ID__;
209
- if (typeof g === "string" && g.length > 0) return String(g);
210
- return null;
211
- } catch {
212
- return DEFAULT_PROJECT_ID;
213
- }
214
- }
215
- function getGlobalEnvironment() {
216
- try {
217
- const g = globalThis.__HOWONE_ENV__;
218
- if (g === "local" || g === "dev" || g === "prod") return g;
219
- return null;
220
- } catch {
221
- return null;
222
- }
223
- }
224
- var DEFAULT_PROJECT_ID, env, localEnv, devEnv, prodEnv, envs;
225
- var init_config = __esm({
226
- "src/config.ts"() {
227
- "use strict";
228
- DEFAULT_PROJECT_ID = null;
229
- env = "dev";
230
- localEnv = {
231
- AUTH_ROOT_VALUE: "https://howone.dev",
232
- baseUrl: "http://localhost:3002/api",
233
- aiBaseUrl: "https://evoagentx-server.fly.dev"
234
- };
235
- devEnv = {
236
- AUTH_ROOT_VALUE: "https://howone.dev",
237
- baseUrl: "https://api.howone.dev/api",
238
- aiBaseUrl: "https://evoagentx-server-stable.fly.dev"
239
- };
240
- prodEnv = {
241
- AUTH_ROOT_VALUE: "https://howone.ai",
242
- baseUrl: "https://api.howone.ai/api",
243
- aiBaseUrl: "https://evoagentx-server-deploy.fly.dev"
244
- };
245
- envs = {
246
- local: localEnv,
247
- dev: devEnv,
248
- prod: prodEnv
249
- };
250
- }
251
- });
252
-
253
253
  // src/index.ts
254
254
  var index_exports = {};
255
255
  __export(index_exports, {
@@ -343,9 +343,19 @@ var FloatingButton = ({
343
343
  };
344
344
 
345
345
  // src/services/unified-oauth.ts
346
+ init_config();
347
+ var API_BASE_URLS = {
348
+ local: "https://create-x-backend-dev.fly.dev",
349
+ dev: "https://create-x-backend-dev.fly.dev",
350
+ prod: "https://create-x-backend.fly.dev"
351
+ };
352
+ var resolveApiBaseUrl = () => {
353
+ const env2 = getGlobalEnvironment() ?? "dev";
354
+ return API_BASE_URLS[env2] ?? API_BASE_URLS.dev;
355
+ };
346
356
  var UnifiedAuthService = class {
347
357
  constructor() {
348
- this.API_BASE_URL = "https://create-x-backend-dev.fly.dev";
358
+ this.API_BASE_URL = resolveApiBaseUrl();
349
359
  }
350
360
  /**
351
361
  * 初始化 Google 登录流程
@@ -3157,7 +3167,6 @@ var ErrorTracking = class {
3157
3167
  this.setupGlobalErrorListeners();
3158
3168
  this.setupConsoleInterception();
3159
3169
  this.setupNetworkMonitoring();
3160
- this.setupResourceLoadMonitoring();
3161
3170
  this.initialized = true;
3162
3171
  setTimeout(() => {
3163
3172
  this.fullyInitialized = true;
@@ -3168,7 +3177,7 @@ var ErrorTracking = class {
3168
3177
  */
3169
3178
  setupGlobalErrorListeners() {
3170
3179
  window.addEventListener("error", (event) => {
3171
- this.internalLog("warn", "\u{1F3AF}\u{1F3AF}\u{1F3AF} window.error \u4E8B\u4EF6\u89E6\u53D1:", event.message || event.error?.message);
3180
+ event.preventDefault();
3172
3181
  this.handleError(event.error || new Error(event.message), {
3173
3182
  filename: event.filename,
3174
3183
  lineno: event.lineno,
@@ -3178,8 +3187,8 @@ var ErrorTracking = class {
3178
3187
  });
3179
3188
  });
3180
3189
  window.addEventListener("unhandledrejection", (event) => {
3190
+ event.preventDefault();
3181
3191
  const error = event.reason instanceof Error ? event.reason : new Error(String(event.reason));
3182
- this.internalLog("warn", "\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u{1F680}\u6355\u83B7 unhandledrejection:", error.message);
3183
3192
  this.handleError(error, {
3184
3193
  type: "promise",
3185
3194
  source: "unhandledrejection"
@@ -3214,12 +3223,7 @@ var ErrorTracking = class {
3214
3223
  */
3215
3224
  safeForwardConsoleToParent(method, args) {
3216
3225
  if (window.parent === window) return;
3217
- const argsStr = args.map((arg) => String(arg)).join(" ").toLowerCase();
3218
- const is504Error = argsStr.includes("504") || argsStr.includes("gateway timeout");
3219
- if (is504Error) {
3220
- this.internalLog("warn", "\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}\u{1F697}[ErrorTracking] \u63A7\u5236\u53F0\u6355\u83B7 504 \u9519\u8BEF:", argsStr.substring(0, 100));
3221
- }
3222
- if (!is504Error && !this.fullyInitialized) return;
3226
+ if (!this.fullyInitialized) return;
3223
3227
  try {
3224
3228
  let stack = null;
3225
3229
  if (method === "warn" || method === "error") {
@@ -3295,43 +3299,6 @@ var ErrorTracking = class {
3295
3299
  this.internalLog("error", "[ErrorTracking] \u63A7\u5236\u53F0\u8F6C\u53D1\u5931\u8D25:", error);
3296
3300
  }
3297
3301
  }
3298
- /**
3299
- * 设置资源加载监控(使用 PerformanceObserver 监控 504 错误)
3300
- */
3301
- setupResourceLoadMonitoring() {
3302
- if (!window.PerformanceObserver) {
3303
- this.internalLog("warn", "\u274C\u274C\u274CPerformanceObserver \u4E0D\u652F\u6301\u274C\u274C\u274C");
3304
- return;
3305
- }
3306
- try {
3307
- const observer = new PerformanceObserver((list) => {
3308
- for (const entry of list.getEntries()) {
3309
- console.log("\u{1F30D}\u{1F30D}entry---------entry\u{1F30D}\u{1F30D}", entry);
3310
- if (entry.entryType === "resource") {
3311
- const resourceEntry = entry;
3312
- if (resourceEntry.transferSize === 0 && !resourceEntry.duration) {
3313
- const url = resourceEntry.name;
3314
- console.log("\u{1F30D}\u{1F30D}url--------------url\u{1F30D}\u{1F30D}", url);
3315
- if (url.includes(".js") || url.includes(".mjs")) {
3316
- this.internalLog("error", "\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u68C0\u6D4B\u5230\u8D44\u6E90\u52A0\u8F7D\u5931\u8D25\uFF08\u53EF\u80FD\u662F 504\uFF09:", url);
3317
- this.handleError(new Error(`Resource load failed (possibly 504): ${url}`), {
3318
- type: "resource",
3319
- resourceUrl: url,
3320
- source: "PerformanceObserver",
3321
- transferSize: resourceEntry.transferSize,
3322
- duration: resourceEntry.duration
3323
- });
3324
- }
3325
- }
3326
- }
3327
- }
3328
- });
3329
- observer.observe({ entryTypes: ["resource"] });
3330
- this.internalLog("log", "\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u2705\u5DF2\u542F\u52A8\uFF0C\u76D1\u63A7\u8D44\u6E90\u52A0\u8F7D");
3331
- } catch (error) {
3332
- this.internalLog("error", "\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274C\u274CPerformanceObserver \u8BBE\u7F6E\u5931\u8D25:", error);
3333
- }
3334
- }
3335
3302
  /**
3336
3303
  * 设置网络监控
3337
3304
  */
@@ -3464,34 +3431,12 @@ var ErrorTracking = class {
3464
3431
  }, 5e3);
3465
3432
  return false;
3466
3433
  }
3467
- /**
3468
- * 判断是否是 504 错误或资源加载失败,需要立即发送
3469
- */
3470
- isCriticalNetworkError(error, details) {
3471
- const message = error.message?.toLowerCase() || "";
3472
- console.log("\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705\u5F00\u59CB\u68C0\u6D4B\u2705", message, details);
3473
- if (message.includes("504") || message.includes("gateway timeout")) {
3474
- return true;
3475
- }
3476
- if (details.type === "resource" && details.source === "PerformanceObserver") {
3477
- return true;
3478
- }
3479
- return false;
3480
- }
3481
3434
  /**
3482
3435
  * 发送统一格式的错误
3483
3436
  */
3484
3437
  sendUnifiedError(error, details = {}) {
3485
3438
  if (window.parent === window) return;
3486
- const isCriticalError = this.isCriticalNetworkError(error, details);
3487
- console.log("\u53D1\u73B0504\u9519\u8BEF\u4E86\u5417\u2753\u2753\u2753\u2753\u2753\u2753\u2753\u2753", isCriticalError);
3488
- if (isCriticalError) {
3489
- this.internalLog("warn", "\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u{1F31E}\u68C0\u6D4B\u5230 504 \u9519\u8BEF\uFF0C\u7ACB\u5373\u53D1\u9001:", error.message);
3490
- }
3491
- console.log("\u7B2C\u4E8C\u4E2A\u5224\u65AD\u662F\u4EC0\u4E48\u2753\u2753\u2753\u2753\u2753\u2753\u2753\u2753", this.fullyInitialized);
3492
- if (!isCriticalError && !this.fullyInitialized) {
3493
- return;
3494
- }
3439
+ if (!this.fullyInitialized) return;
3495
3440
  try {
3496
3441
  const currentViewInfo = this.viewDetector?.getCurrentViewInfo();
3497
3442
  const payload = {