@ateam-ai-mobile/core 0.1.3 → 0.1.5

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.mjs CHANGED
@@ -456,69 +456,81 @@ var useChatStore = create((set, get) => ({
456
456
  finalMessages.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
457
457
  let firstRunning = keptPlaceholders.find((m) => m.jobProgress?.status === "running");
458
458
  try {
459
- const chainRes = await fetch(`${getCoreApiUrl()}/api/chain/current`, {
459
+ let activeChains = [];
460
+ const chainsRes = await fetch(`${getCoreApiUrl()}/api/chains/active`, {
460
461
  headers: coreHeaders()
461
462
  });
462
- if (chainRes.ok) {
463
- const chainBody = await chainRes.json();
464
- const slim = chainBody?.data;
465
- if (slim?.id) {
466
- const chainId = String(slim.id);
467
- const alreadyTracked = finalMessages.some(
468
- (m) => m.role === "assistant" && m.jobProgress?.jobId === chainId
469
- );
470
- if (!alreadyTracked) {
471
- const progress = snapshotToProgress(slim, chainId);
472
- const chainCreatedAt = typeof slim.createdAt === "number" ? slim.createdAt : typeof slim.lastUpdate === "number" ? slim.lastUpdate : Date.now();
473
- const chainLastUpdate = typeof slim.lastUpdate === "number" ? slim.lastUpdate : chainCreatedAt;
474
- const jobProgress = {
475
- jobId: chainId,
476
- actorId: extractActorId(slim),
477
- status: "running",
478
- chainStartedAt: chainCreatedAt,
479
- ...progress
480
- };
481
- const goal = typeof slim.goal === "string" ? slim.goal : "";
482
- const userExists = finalMessages.some(
483
- (m) => m.role === "user" && (m.chainId === chainId || goal && m.content === goal)
484
- );
485
- if (goal && !userExists) {
486
- finalMessages.push({
487
- id: `user-${chainId}`,
488
- role: "user",
489
- content: goal,
490
- timestamp: new Date(chainCreatedAt),
491
- chainId
492
- });
493
- }
494
- let matchIdx = -1;
495
- for (let i = finalMessages.length - 1; i >= 0; i--) {
496
- const m = finalMessages[i];
497
- if (m.role === "assistant" && m.chainId === chainId) {
498
- matchIdx = i;
499
- break;
500
- }
501
- }
502
- if (matchIdx >= 0) {
503
- finalMessages[matchIdx] = { ...finalMessages[matchIdx], jobProgress };
504
- if (jobProgress.status === "running") firstRunning = finalMessages[matchIdx];
505
- } else {
506
- const reattachBubble = {
507
- id: `job-${chainId}`,
508
- role: "assistant",
509
- content: "Working on it...",
510
- timestamp: new Date(chainLastUpdate),
511
- jobProgress,
512
- chainId
513
- };
514
- finalMessages.push(reattachBubble);
515
- if (jobProgress.status === "running") firstRunning = reattachBubble;
516
- }
517
- finalMessages.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
518
- streamJob(chainId, getTenant(), getToken());
463
+ if (chainsRes.ok) {
464
+ const body = await chainsRes.json();
465
+ activeChains = Array.isArray(body?.chains) ? body.chains : [];
466
+ } else {
467
+ const legacy = await fetch(`${getCoreApiUrl()}/api/chain/current`, {
468
+ headers: coreHeaders()
469
+ });
470
+ if (legacy.ok) {
471
+ const lb = await legacy.json();
472
+ if (lb?.data?.id) activeChains = [lb.data];
473
+ }
474
+ }
475
+ for (const slim of activeChains) {
476
+ if (!slim?.id) continue;
477
+ const chainId = String(slim.id);
478
+ const alreadyTracked = finalMessages.some(
479
+ (m) => m.role === "assistant" && m.jobProgress?.jobId === chainId
480
+ );
481
+ if (alreadyTracked) continue;
482
+ const progress = snapshotToProgress(
483
+ { ...slim, status: slim.chainStatus || slim.status },
484
+ chainId
485
+ );
486
+ const chainCreatedAt = typeof slim.createdAt === "number" ? slim.createdAt : typeof slim.lastUpdate === "number" ? slim.lastUpdate : Date.now();
487
+ const chainLastUpdate = typeof slim.lastUpdate === "number" ? slim.lastUpdate : chainCreatedAt;
488
+ const jobProgress = {
489
+ jobId: chainId,
490
+ actorId: extractActorId(slim),
491
+ status: "running",
492
+ chainStartedAt: chainCreatedAt,
493
+ ...progress
494
+ };
495
+ const goal = typeof slim.goal === "string" ? slim.goal : "";
496
+ const userExists = finalMessages.some(
497
+ (m) => m.role === "user" && (m.chainId === chainId || goal && m.content === goal)
498
+ );
499
+ if (goal && !userExists) {
500
+ finalMessages.push({
501
+ id: `user-${chainId}`,
502
+ role: "user",
503
+ content: goal,
504
+ timestamp: new Date(chainCreatedAt),
505
+ chainId
506
+ });
507
+ }
508
+ let matchIdx = -1;
509
+ for (let i = finalMessages.length - 1; i >= 0; i--) {
510
+ const m = finalMessages[i];
511
+ if (m.role === "assistant" && m.chainId === chainId) {
512
+ matchIdx = i;
513
+ break;
519
514
  }
520
515
  }
516
+ if (matchIdx >= 0) {
517
+ finalMessages[matchIdx] = { ...finalMessages[matchIdx], jobProgress };
518
+ if (jobProgress.status === "running" && !firstRunning) firstRunning = finalMessages[matchIdx];
519
+ } else {
520
+ const reattachBubble = {
521
+ id: `job-${chainId}`,
522
+ role: "assistant",
523
+ content: "Working on it...",
524
+ timestamp: new Date(chainLastUpdate),
525
+ jobProgress,
526
+ chainId
527
+ };
528
+ finalMessages.push(reattachBubble);
529
+ if (jobProgress.status === "running" && !firstRunning) firstRunning = reattachBubble;
530
+ }
531
+ streamJob(chainId, getTenant(), getToken());
521
532
  }
533
+ finalMessages.sort((a, b) => a.timestamp.getTime() - b.timestamp.getTime());
522
534
  } catch {
523
535
  }
524
536
  set({
@@ -908,8 +920,22 @@ async function pollJob(jobId, token) {
908
920
 
909
921
  // src/api/tenants.ts
910
922
  async function listMyTenants() {
911
- const data = await apiFetch("/api/tenants/list");
912
- return data.ok && Array.isArray(data.tenants) ? data.tenants : [];
923
+ const token = getToken();
924
+ if (!token) return [];
925
+ try {
926
+ const res = await fetch(`${getConsumerAuthApiUrl()}/platform/consumer/my-tenants`, {
927
+ headers: { Authorization: `Bearer ${token}` }
928
+ });
929
+ const data = await res.json().catch(() => null);
930
+ if (!res.ok || !data?.ok || !Array.isArray(data.tenants)) return [];
931
+ return data.tenants.map((t) => ({
932
+ id: t.id,
933
+ name: t.name || t.id,
934
+ role: t.role ?? null
935
+ }));
936
+ } catch {
937
+ return [];
938
+ }
913
939
  }
914
940
  async function switchTenant(targetTenantId) {
915
941
  const token = getToken();
@@ -1652,6 +1678,7 @@ export {
1652
1678
  pluginCommandEmitter,
1653
1679
  postCommandResult,
1654
1680
  recordEvent,
1681
+ refreshToken,
1655
1682
  setAcsCacheStorage,
1656
1683
  setAcsReachabilityReporter,
1657
1684
  setHomeActionOrder,