@circuitwall/jarela 1.3.0 → 1.4.1

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 (102) hide show
  1. package/.next/standalone/.next/BUILD_ID +1 -1
  2. package/.next/standalone/.next/build-manifest.json +3 -3
  3. package/.next/standalone/.next/prerender-manifest.json +3 -3
  4. package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  5. package/.next/standalone/.next/server/app/_global-error.html +1 -1
  6. package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
  7. package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  8. package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  9. package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  10. package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  11. package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  12. package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  13. package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  14. package/.next/standalone/.next/server/app/_not-found.html +2 -2
  15. package/.next/standalone/.next/server/app/_not-found.rsc +1 -1
  16. package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  17. package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  18. package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  19. package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  20. package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  21. package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  22. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js +10 -1
  23. package/.next/standalone/.next/server/app/api/v1/builtin-tools/route.js.map +1 -1
  24. package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js +10 -5
  25. package/.next/standalone/.next/server/app/api/v1/dashboard/currency/route.js.map +1 -1
  26. package/.next/standalone/.next/server/app/api/v1/page-capture/route.js +37 -3
  27. package/.next/standalone/.next/server/app/api/v1/page-capture/route.js.map +1 -1
  28. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js +9 -1
  29. package/.next/standalone/.next/server/app/api/v1/providers/[provider]/probe/route.js.map +1 -1
  30. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +33 -8
  31. package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js.map +1 -1
  32. package/.next/standalone/.next/server/app/page.js +73 -204
  33. package/.next/standalone/.next/server/app/page.js.map +1 -1
  34. package/.next/standalone/.next/server/app/page.js.nft.json +1 -1
  35. package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  36. package/.next/standalone/.next/server/app/setup/page.js +1 -1
  37. package/.next/standalone/.next/server/app/setup/page.js.nft.json +1 -1
  38. package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  39. package/.next/standalone/.next/server/chunks/1718.js +159 -0
  40. package/.next/standalone/.next/server/chunks/1718.js.map +1 -0
  41. package/.next/standalone/.next/server/chunks/2082.js +6 -3
  42. package/.next/standalone/.next/server/chunks/2082.js.map +1 -1
  43. package/.next/standalone/.next/server/chunks/210.js +28 -0
  44. package/.next/standalone/.next/server/chunks/210.js.map +1 -1
  45. package/.next/standalone/.next/server/chunks/423.js +6 -3
  46. package/.next/standalone/.next/server/chunks/423.js.map +1 -1
  47. package/.next/standalone/.next/server/chunks/4631.js +37 -5
  48. package/.next/standalone/.next/server/chunks/4631.js.map +1 -1
  49. package/.next/standalone/.next/server/chunks/8167.js +255 -204
  50. package/.next/standalone/.next/server/chunks/8167.js.map +1 -1
  51. package/.next/standalone/.next/server/chunks/8866.js +38 -5
  52. package/.next/standalone/.next/server/chunks/8866.js.map +1 -1
  53. package/.next/standalone/.next/server/chunks/9032.js +8 -0
  54. package/.next/standalone/.next/server/chunks/9032.js.map +1 -1
  55. package/.next/standalone/.next/server/chunks/{7883.js → 9557.js} +15 -3
  56. package/.next/standalone/.next/server/chunks/9557.js.map +1 -0
  57. package/.next/standalone/.next/server/middleware-build-manifest.js +3 -3
  58. package/.next/standalone/.next/server/middleware.js +6 -3
  59. package/.next/standalone/.next/server/pages/404.html +2 -2
  60. package/.next/standalone/.next/server/pages/500.html +1 -1
  61. package/.next/standalone/.next/server/proxy.js.map +1 -1
  62. package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
  63. package/.next/standalone/.next/static/chunks/{2351-68d8987bbe17ba2d.js → 2351-1ab119fb3b48f4c9.js} +258 -205
  64. package/.next/standalone/.next/static/chunks/2351-1ab119fb3b48f4c9.js.map +1 -0
  65. package/.next/standalone/.next/static/chunks/{9209-0d46118e502f8bf5.js → 4097-64691f9110cf167c.js} +14 -2
  66. package/.next/standalone/.next/static/chunks/4097-64691f9110cf167c.js.map +1 -0
  67. package/.next/standalone/.next/static/chunks/app/{page-2ab710949b62a638.js → page-145150e0468544e7.js} +74 -205
  68. package/.next/standalone/.next/static/chunks/app/page-145150e0468544e7.js.map +1 -0
  69. package/.next/standalone/.next/static/chunks/app/setup/{page-9a465b5fa755b3c3.js → page-a1463a9ace439ff7.js} +2 -2
  70. package/.next/standalone/.next/static/chunks/app/setup/{page-9a465b5fa755b3c3.js.map → page-a1463a9ace439ff7.js.map} +1 -1
  71. package/.next/standalone/.next/static/chunks/{webpack-ff5627013a5e3842.js → webpack-f4ac5c5f92cfd1c1.js} +13 -1
  72. package/.next/standalone/.next/static/chunks/webpack-f4ac5c5f92cfd1c1.js.map +1 -0
  73. package/.next/standalone/package.json +2 -1
  74. package/CHANGELOG.md +84 -0
  75. package/README.md +51 -26
  76. package/api/client.ts +10 -9
  77. package/app/api/v1/dashboard/currency/route.ts +7 -2
  78. package/app/api/v1/providers/[provider]/probe/route.ts +12 -1
  79. package/app/api/v1/threads/[thread_id]/run/route.ts +22 -8
  80. package/components/chat/InputBar.tsx +10 -1
  81. package/components/layout/AppShell.tsx +53 -17
  82. package/components/setup/PinKeypad.tsx +238 -0
  83. package/components/setup/ScreenLock.tsx +8 -173
  84. package/components/setup/UnlockScreen.tsx +25 -192
  85. package/lib/api/page-capture.test.ts +58 -0
  86. package/lib/api/page-capture.ts +31 -1
  87. package/lib/documents/remote/github.ts +16 -2
  88. package/lib/documents/remote/mail.ts +11 -2
  89. package/lib/lifecycle/shutdown.ts +9 -0
  90. package/lib/providers/github-copilot-auth.ts +2 -0
  91. package/lib/providers/github-copilot.ts +1 -0
  92. package/lib/tools/async-results.ts +11 -0
  93. package/package.json +2 -1
  94. package/scripts/install-to-system.ps1 +2 -2
  95. package/scripts/installed-launcher.ps1 +81 -17
  96. package/.next/standalone/.next/server/chunks/7883.js.map +0 -1
  97. package/.next/standalone/.next/static/chunks/2351-68d8987bbe17ba2d.js.map +0 -1
  98. package/.next/standalone/.next/static/chunks/9209-0d46118e502f8bf5.js.map +0 -1
  99. package/.next/standalone/.next/static/chunks/app/page-2ab710949b62a638.js.map +0 -1
  100. package/.next/standalone/.next/static/chunks/webpack-ff5627013a5e3842.js.map +0 -1
  101. /package/.next/standalone/.next/static/{ZKy7LJ3KXj2TIyKOg_fBH → WQdcnm9NyqpeNc0Z8_woo}/_buildManifest.js +0 -0
  102. /package/.next/standalone/.next/static/{ZKy7LJ3KXj2TIyKOg_fBH → WQdcnm9NyqpeNc0Z8_woo}/_ssgManifest.js +0 -0
@@ -710,7 +710,10 @@ async function indexGmailMail(row) {
710
710
  if (list.error) throw new Error(list.error);
711
711
  const batch = list.messages ?? [];
712
712
  if (batch.length === 0) break;
713
- const results = await Promise.all(batch.slice(0, limit).map(async (entry)=>{
713
+ // Use allSettled so a single 404/transient 5xx on one message
714
+ // doesn't bin the whole page (and stall the cursor on the next
715
+ // run). Failures get counted into stats.errors instead.
716
+ const settled = await Promise.allSettled(batch.slice(0, limit).map(async (entry)=>{
714
717
  const msg = await (0,gmail_oauth/* googleFetch */.sI)(auth, "Gmail", "https://gmail.googleapis.com/gmail/v1/users/me", `/messages/${encodeURIComponent(entry.id)}?format=full`);
715
718
  if (msg.error) throw new Error(msg.error);
716
719
  const title = msg.payload ? header(msg.payload.headers, "Subject") ?? entry.id : entry.id;
@@ -732,10 +735,16 @@ async function indexGmailMail(row) {
732
735
  text
733
736
  });
734
737
  }));
735
- for (const [index, item] of results.entries()){
738
+ for (const [index, outcome] of settled.entries()){
736
739
  const id = batch[index]?.id ?? "";
737
740
  if (id) keep.add(`gmail://${id}`);
738
741
  stats.scanned++;
742
+ if (outcome.status === "rejected") {
743
+ stats.errors++;
744
+ console.warn(`[mail-indexer] message ${id} failed:`, outcome.reason);
745
+ continue;
746
+ }
747
+ const item = outcome.value;
739
748
  stats.added += item.status === "added" ? 1 : 0;
740
749
  stats.updated += item.status === "updated" ? 1 : 0;
741
750
  stats.unchanged += item.status === "unchanged" ? 1 : 0;
@@ -1076,10 +1085,23 @@ async function runGithubPullsIndexer(source) {
1076
1085
  if (cutoffMs !== null && Number.isFinite(updatedMs) && updatedMs < cutoffMs) break outer;
1077
1086
  if (Number.isFinite(sinceMs) && Number.isFinite(updatedMs) && updatedMs <= sinceMs) break outer;
1078
1087
  try {
1079
- const [comments, reviews] = await Promise.all([
1088
+ // allSettled so a failed comments fetch doesn't also discard
1089
+ // the reviews (and vice versa); we still index what we have and
1090
+ // count the partial as an error.
1091
+ const [commentsRes, reviewsRes] = await Promise.allSettled([
1080
1092
  listIssueComments(auth, cfg.owner, cfg.repo, pr.number),
1081
1093
  listReviews(auth, cfg.owner, cfg.repo, pr.number)
1082
1094
  ]);
1095
+ const comments = commentsRes.status === "fulfilled" ? commentsRes.value : [];
1096
+ const reviews = reviewsRes.status === "fulfilled" ? reviewsRes.value : [];
1097
+ if (commentsRes.status === "rejected") {
1098
+ stats.errors++;
1099
+ console.warn(`[github-indexer] pr#${pr.number} comments failed:`, commentsRes.reason);
1100
+ }
1101
+ if (reviewsRes.status === "rejected") {
1102
+ stats.errors++;
1103
+ console.warn(`[github-indexer] pr#${pr.number} reviews failed:`, reviewsRes.reason);
1104
+ }
1083
1105
  const text = flattenPull(pr, comments, reviews);
1084
1106
  const res = await upsertRemoteDocument(source.id, {
1085
1107
  path: `github-pull://${cfg.owner}/${cfg.repo}/${pr.number}`,
@@ -1089,8 +1111,9 @@ async function runGithubPullsIndexer(source) {
1089
1111
  });
1090
1112
  applyUpsert(stats, res);
1091
1113
  if (updated && (!highWater || updated > highWater)) highWater = updated;
1092
- } catch {
1114
+ } catch (err) {
1093
1115
  stats.errors++;
1116
+ console.warn(`[github-indexer] pr#${pr.number} upsert failed:`, err);
1094
1117
  }
1095
1118
  }
1096
1119
  if (pulls.length < PR_PAGE_LIMIT) break;
@@ -6622,7 +6645,7 @@ function getDocumentSourceStats(sourceId) {
6622
6645
  /* harmony export */ m3: () => (/* binding */ consumeAsyncResult),
6623
6646
  /* harmony export */ zc: () => (/* binding */ failAsyncCall)
6624
6647
  /* harmony export */ });
6625
- /* unused harmony exports DEFAULT_TTL_MS, MAX_ENTRIES, sweepExpired, __resetStore, __backdateFinished */
6648
+ /* unused harmony exports DEFAULT_TTL_MS, MAX_ENTRIES, stopAsyncResults, sweepExpired, __resetStore, __backdateFinished */
6626
6649
  /* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(77598);
6627
6650
  /* harmony import */ var node_crypto__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(node_crypto__WEBPACK_IMPORTED_MODULE_0__);
6628
6651
  // In-process keyed store for async tool results.
@@ -6659,6 +6682,15 @@ function ensureSweeper() {
6659
6682
  }, SWEEP_INTERVAL_MS);
6660
6683
  sweeper.unref?.();
6661
6684
  }
6685
+ /**
6686
+ * Tear down the sweeper. Called from the shutdown drain so the timer
6687
+ * isn't keeping the event loop alive past close-time. Idempotent.
6688
+ */ function stopAsyncResults() {
6689
+ if (sweeper) {
6690
+ clearInterval(sweeper);
6691
+ sweeper = null;
6692
+ }
6693
+ }
6662
6694
  /**
6663
6695
  * Carve out a slot for a new async tool call and return its key.
6664
6696
  * The key is opaque and URL-safe — the agent treats it as a token.