@circuitwall/jarela 2.4.0 → 2.5.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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +1 -1
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/prerender-manifest.json +4 -4
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +14 -2
- package/.next/standalone/.next/server/app/_not-found.rsc +16 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +16 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +16 -4
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/chats/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/lookup/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/pair/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/bridges/[id]/status/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/dashboard/pricing-task/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/documents/sources/[id]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/documents/sources/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/events/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/agents/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/fill/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/refine/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extension/turn/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/config/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/extensions/tools/[name]/secrets/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/packages/defaults/[id]/route.js +28 -4
- package/.next/standalone/.next/server/app/api/v1/packages/reload/route.js +28 -4
- package/.next/standalone/.next/server/app/api/v1/packages/route.js +28 -4
- package/.next/standalone/.next/server/app/api/v1/page-capture/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/providers/[provider]/models/route.js +578 -58
- package/.next/standalone/.next/server/app/api/v1/scheduled-tasks/[id]/run/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/route.js +118 -26
- package/.next/standalone/.next/server/app/api/v1/threads/[thread_id]/run/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/tools/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/update/apply/route.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/api/v1/watchers/[id]/run/route.js +1 -1
- package/.next/standalone/.next/server/app/api/v1/watchers/route.js +1 -1
- package/.next/standalone/.next/server/app/page.js +31202 -30960
- package/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +1 -1
- package/.next/standalone/.next/server/chunks/2471.js +17 -17
- package/.next/standalone/.next/server/chunks/2653.js +80 -1
- package/.next/standalone/.next/server/chunks/3399.js +10695 -10695
- package/.next/standalone/.next/server/chunks/3566.js +1 -1
- package/.next/standalone/.next/server/chunks/4189.js +1 -1
- package/.next/standalone/.next/server/chunks/4508.js +2 -2
- package/.next/standalone/.next/server/chunks/4596.js +28 -4
- package/.next/standalone/.next/server/chunks/46.js +18 -3
- package/.next/standalone/.next/server/chunks/466.js +53 -7
- package/.next/standalone/.next/server/chunks/4955.js +30 -3
- package/.next/standalone/.next/server/chunks/5585.js +28 -4
- package/.next/standalone/.next/server/chunks/6649.js +1 -1
- package/.next/standalone/.next/server/chunks/9164.js +65 -14
- package/.next/standalone/.next/server/chunks/9590.js +18 -3
- package/.next/standalone/.next/server/middleware-build-manifest.js +2 -2
- package/.next/standalone/.next/server/middleware.js +18 -3
- package/.next/standalone/.next/server/pages/404.html +14 -2
- package/.next/standalone/.next/server/pages/500.html +1 -1
- package/.next/standalone/.next/server/preview-props.json +3 -3
- package/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/.next/static/chunks/{1395-e4a99912b8f83044.js → 1395-bfe1f3ef760c0f50.js} +54 -8
- package/.next/standalone/.next/static/chunks/app/{layout-9bc0b10127cb7d42.js → layout-7b24ad13faa3944b.js} +69 -2
- package/.next/standalone/.next/static/chunks/app/{page-04748847c6ff866f.js → page-2ef8d75d40eb4311.js} +10661 -10352
- package/.next/standalone/.next/static/css/c160ea862133acd2.css +5 -0
- package/.next/standalone/docs/adoption/changesets.json +2756 -0
- package/.next/standalone/package.json +1 -1
- package/CHANGELOG.md +33 -0
- package/api/client.models.test.ts +10 -0
- package/api/client.startup.test.ts +129 -0
- package/api/client.ts +51 -9
- package/api/thread-metadata.test.ts +72 -0
- package/api/types.ts +6 -3
- package/app/api/v1/providers/[provider]/models/route.test.ts +216 -6
- package/app/api/v1/providers/[provider]/models/route.ts +259 -40
- package/app/api/v1/threads/[thread_id]/route.ts +26 -23
- package/app/globals.css +119 -29
- package/app/layout.tsx +12 -0
- package/components/agents/AgentsPanel.tsx +5 -13
- package/components/chat/ChatView.tsx +9 -18
- package/components/chat/InputBar.tsx +1 -1
- package/components/chat/MessageBubble.tsx +1 -1
- package/components/chat/MessageList.test.tsx +45 -4
- package/components/chat/MessageList.tsx +123 -89
- package/components/chat/ToolList.tsx +88 -84
- package/components/chat/useThreadActivity.test.tsx +2 -2
- package/components/chat/useThreadActivity.ts +2 -2
- package/components/chat/useThreadData.ts +1 -30
- package/components/chat/useThreadMetadataPolling.test.tsx +128 -0
- package/components/chat/useThreadMetadataPolling.ts +50 -0
- package/components/chat/useUserProfileAndAgent.test.tsx +31 -0
- package/components/chat/useUserProfileAndAgent.ts +13 -2
- package/components/dashboard/DashboardPanel.tsx +1 -1
- package/components/dashboard/Series.tsx +34 -21
- package/components/dashboard/SummaryCards.tsx +1 -1
- package/components/layout/AppShell.tsx +22 -7
- package/components/layout/MenuPanel.tsx +14 -24
- package/components/profile/ProfilePanel.tsx +2 -2
- package/components/settings/AppearancePanel.tsx +70 -3
- package/components/settings/SettingsPanel.tsx +2 -2
- package/components/tools/ToolsPanel.tsx +2 -7
- package/components/ui/AppearancePreferences.test.tsx +68 -0
- package/components/ui/BootScreen.test.tsx +44 -0
- package/components/ui/BootScreen.tsx +24 -11
- package/components/ui/NotificationStatus.test.tsx +2 -2
- package/components/ui/NotificationStatus.tsx +5 -5
- package/components/ui/SubTabBar.tsx +2 -3
- package/contexts/ThemeContext.tsx +84 -1
- package/hooks/useAgentSession.test.ts +12 -1
- package/hooks/useAgentSession.ts +6 -4
- package/hooks/useUrlSync.test.ts +13 -0
- package/hooks/useUrlSync.ts +0 -4
- package/lib/db/migrations.test.ts +61 -0
- package/lib/db/migrations.ts +13 -0
- package/lib/embeddings/performance.test.ts +114 -0
- package/lib/stores/dashboard-metrics-cache.test.ts +99 -0
- package/lib/stores/dashboard-metrics.ts +30 -4
- package/lib/stores/message-embedding-jobs.test.ts +27 -0
- package/lib/stores/message-embedding-jobs.ts +5 -3
- package/lib/stores/message-usage.test.ts +21 -1
- package/lib/stores/pricing-cache.test.ts +31 -0
- package/lib/stores/pricing.ts +3 -0
- package/lib/tools/packages/default-packages.test.ts +21 -0
- package/lib/tools/packages/optional-package.test.ts +72 -0
- package/lib/tools/packages/optional-package.ts +33 -4
- package/lib/ui/navigate.test.ts +13 -0
- package/lib/ui/navigate.ts +10 -2
- package/package.json +1 -1
- package/.next/standalone/.next/static/css/2669e8744cc8c212.css +0 -5
- /package/.next/standalone/.next/static/{hwujW4hR1b-r3k5WdMxZO → 544OFJV-q0RC6Gjgje4LT}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{hwujW4hR1b-r3k5WdMxZO → 544OFJV-q0RC6Gjgje4LT}/_ssgManifest.js +0 -0
|
@@ -18,6 +18,8 @@ exports.modules = {
|
|
|
18
18
|
|
|
19
19
|
const CHARS_PER_TOKEN = 4;
|
|
20
20
|
const DEFAULT_WINDOW_DAYS = 30;
|
|
21
|
+
const METRICS_CACHE_MS = 5000;
|
|
22
|
+
let metricsCache = null;
|
|
21
23
|
function recalculateSnapshotCost(input, tables) {
|
|
22
24
|
const rates = (0,_pricing__WEBPACK_IMPORTED_MODULE_2__/* .modelRatesFor */ .En)(tables, input.provider, input.modelId);
|
|
23
25
|
if (rates.inputPer1M == null && rates.outputPer1M == null) return input.recordedCostUsd;
|
|
@@ -30,7 +32,17 @@ async function getDashboardMetrics(days = DEFAULT_WINDOW_DAYS) {
|
|
|
30
32
|
const now = new Date();
|
|
31
33
|
const boundedDays = Number.isFinite(days) ? Math.min(120, Math.max(7, Math.floor(days))) : DEFAULT_WINDOW_DAYS;
|
|
32
34
|
const since = new Date(now.getTime() - boundedDays * 24 * 60 * 60 * 1000).toISOString();
|
|
33
|
-
const
|
|
35
|
+
const db = (0,_lib_db__WEBPACK_IMPORTED_MODULE_0__/* .getDb */ .Lf)();
|
|
36
|
+
const tables = (0,_pricing__WEBPACK_IMPORTED_MODULE_2__/* .getPricingTables */ .iH)();
|
|
37
|
+
// total_changes covers this connection; data_version covers other writers.
|
|
38
|
+
const { changes } = db.prepare("SELECT total_changes() AS changes").get();
|
|
39
|
+
const { data_version: dataVersion } = db.prepare("PRAGMA data_version").get();
|
|
40
|
+
if (metricsCache?.db === db && metricsCache.changes === changes && metricsCache.dataVersion === dataVersion && metricsCache.tables === tables && metricsCache.metrics.days === boundedDays && metricsCache.metrics.generated_at.slice(0, 10) === now.toISOString().slice(0, 10) && now.getTime() - metricsCache.createdAt >= 0 && now.getTime() - metricsCache.createdAt < METRICS_CACHE_MS) {
|
|
41
|
+
return metricsCache.metrics;
|
|
42
|
+
}
|
|
43
|
+
const usageRows = db.prepare(`SELECT m.created_at, m.role,
|
|
44
|
+
CASE WHEN mu.input_tokens IS NULL THEN m.content ELSE '' END AS content,
|
|
45
|
+
m.tool_events, m.thread_id, t.agent_id,
|
|
34
46
|
a.name AS agent_name, mc.provider AS provider,
|
|
35
47
|
mc.model_id AS model_id,
|
|
36
48
|
COALESCE(ta.model_config_name, a.model_config_name, dmc.name) AS model_config_name,
|
|
@@ -80,7 +92,6 @@ async function getDashboardMetrics(days = DEFAULT_WINDOW_DAYS) {
|
|
|
80
92
|
snapshotThreadIds.add(r.thread_id);
|
|
81
93
|
}
|
|
82
94
|
}
|
|
83
|
-
const tables = (0,_pricing__WEBPACK_IMPORTED_MODULE_2__/* .getPricingTables */ .iH)();
|
|
84
95
|
const { byProvider, generatedAt } = tables;
|
|
85
96
|
const dayMap = seedDayBuckets(now, boundedDays);
|
|
86
97
|
const agentMap = new Map();
|
|
@@ -396,7 +407,7 @@ async function getDashboardMetrics(days = DEFAULT_WINDOW_DAYS) {
|
|
|
396
407
|
by_model: dayModels
|
|
397
408
|
};
|
|
398
409
|
}
|
|
399
|
-
|
|
410
|
+
const metrics = {
|
|
400
411
|
generated_at: now.toISOString(),
|
|
401
412
|
days: boundedDays,
|
|
402
413
|
summary: {
|
|
@@ -452,6 +463,15 @@ async function getDashboardMetrics(days = DEFAULT_WINDOW_DAYS) {
|
|
|
452
463
|
notes: "Dashboard cost is recalculated from captured provider token usage and the latest matching rates. The original per-turn cost snapshots remain unchanged; legacy rows use content-length token estimates."
|
|
453
464
|
}
|
|
454
465
|
};
|
|
466
|
+
metricsCache = {
|
|
467
|
+
db,
|
|
468
|
+
changes,
|
|
469
|
+
dataVersion,
|
|
470
|
+
tables,
|
|
471
|
+
createdAt: now.getTime(),
|
|
472
|
+
metrics
|
|
473
|
+
};
|
|
474
|
+
return metrics;
|
|
455
475
|
}
|
|
456
476
|
function seedDayBuckets(now, days) {
|
|
457
477
|
const out = new Map();
|
|
@@ -882,6 +902,13 @@ function readSnapshotSync() {
|
|
|
882
902
|
try {
|
|
883
903
|
const p = snapshotPath();
|
|
884
904
|
const stat = (0,external_node_fs_.statSync)(p);
|
|
905
|
+
if (cached?.path === p && cached.mtimeMs === stat.mtimeMs) {
|
|
906
|
+
return {
|
|
907
|
+
path: p,
|
|
908
|
+
snapshot: null,
|
|
909
|
+
mtimeMs: stat.mtimeMs
|
|
910
|
+
};
|
|
911
|
+
}
|
|
885
912
|
const raw = (0,external_node_fs_.readFileSync)(p, "utf8");
|
|
886
913
|
return {
|
|
887
914
|
path: p,
|
|
@@ -335,12 +335,35 @@ function createRuntimeRequire(anchor) {
|
|
|
335
335
|
function managedPackagePath(packageName) {
|
|
336
336
|
return (0,node_path__WEBPACK_IMPORTED_MODULE_0__.join)((0,_langchain_packages__WEBPACK_IMPORTED_MODULE_1__/* .getPackagesDir */ .V_)(), "node_modules", packageName);
|
|
337
337
|
}
|
|
338
|
+
function resolveOptionalPackage(packageName) {
|
|
339
|
+
const managedReq = createRuntimeRequire((0,node_path__WEBPACK_IMPORTED_MODULE_0__.join)((0,_langchain_packages__WEBPACK_IMPORTED_MODULE_1__/* .getPackagesDir */ .V_)(), "_anchor"));
|
|
340
|
+
try {
|
|
341
|
+
return {
|
|
342
|
+
req: managedReq,
|
|
343
|
+
path: managedReq.resolve(managedPackagePath(packageName))
|
|
344
|
+
};
|
|
345
|
+
} catch {
|
|
346
|
+
// Workspace builds expose bundled @circuitwall packages from the app root.
|
|
347
|
+
}
|
|
348
|
+
if (process.env.JARELA_PACKAGES_DIR?.trim()) return null;
|
|
349
|
+
if (!packageName.startsWith("@circuitwall/")) return null;
|
|
350
|
+
const appReq = createRuntimeRequire((0,node_path__WEBPACK_IMPORTED_MODULE_0__.join)(process.cwd(), "package.json"));
|
|
351
|
+
try {
|
|
352
|
+
return {
|
|
353
|
+
req: appReq,
|
|
354
|
+
path: appReq.resolve(packageName)
|
|
355
|
+
};
|
|
356
|
+
} catch {
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
}
|
|
338
360
|
function loadOptionalPackage(packageName) {
|
|
339
361
|
const override = testOverrides.get(packageName);
|
|
340
362
|
if (override) return override;
|
|
363
|
+
const resolved = resolveOptionalPackage(packageName);
|
|
364
|
+
if (!resolved) return null;
|
|
341
365
|
try {
|
|
342
|
-
|
|
343
|
-
return req(managedPackagePath(packageName));
|
|
366
|
+
return resolved.req(resolved.path);
|
|
344
367
|
} catch (err) {
|
|
345
368
|
// Keep the optional boundary non-fatal, but leave the actual load failure
|
|
346
369
|
// visible so missing peer dependencies are diagnosable from server logs.
|
|
@@ -372,9 +395,10 @@ function optionalFunction(packageName, exportName, fallback) {
|
|
|
372
395
|
};
|
|
373
396
|
}
|
|
374
397
|
function isOptionalPackageInstalled(packageName) {
|
|
398
|
+
const resolved = resolveOptionalPackage(packageName);
|
|
399
|
+
if (!resolved) return false;
|
|
375
400
|
try {
|
|
376
|
-
|
|
377
|
-
req(managedPackagePath(packageName));
|
|
401
|
+
resolved.req(resolved.path);
|
|
378
402
|
return true;
|
|
379
403
|
} catch (err) {
|
|
380
404
|
console.error(`[optional-package] failed to load ${packageName}: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -2165,7 +2165,7 @@ var NumericValue = __webpack_require__(3999);
|
|
|
2165
2165
|
// EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/serde/util-utf8/toUtf8.js
|
|
2166
2166
|
var toUtf8 = __webpack_require__(63332);
|
|
2167
2167
|
// EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/protocols/SerdeContext.js
|
|
2168
|
-
var SerdeContext = __webpack_require__(
|
|
2168
|
+
var SerdeContext = __webpack_require__(71966);
|
|
2169
2169
|
// EXTERNAL MODULE: ./node_modules/@smithy/core/dist-es/submodules/protocols/serde/determineTimestampFormat.js
|
|
2170
2170
|
var determineTimestampFormat = __webpack_require__(67055);
|
|
2171
2171
|
;// ./node_modules/@smithy/core/dist-es/submodules/protocols/serde/FromStringShapeDeserializer.js
|