@thingd/cli 0.49.8 → 0.50.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.
@@ -1 +1 @@
1
- {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAA6B,MAAM,aAAa,CAAC;AA6DzE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjE"}
1
+ {"version":3,"file":"cloud.d.ts","sourceRoot":"","sources":["../../src/commands/cloud.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,UAAU,EAA6B,MAAM,aAAa,CAAC;AA8DzE,wBAAsB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+BjE"}
@@ -2,7 +2,7 @@ import { execSync } from "node:child_process";
2
2
  import { setTimeout as sleep } from "node:timers/promises";
3
3
  import pc from "picocolors";
4
4
  import { requiredToken, stringFlag } from "../index.js";
5
- import { addOrganizationMember, CloudApiError, createApiKey, createInstance, createOrganization, createProject, getMe, getOrganization, listInstances, listOrganizationMembers, listOrganizations, listProjects, pollCliAuth, removeOrganizationMember, startCliAuth, } from "../lib/cloud-api.js";
5
+ import { addOrganizationMember, CloudApiError, createApiKey, createInstance, createOrganization, createProject, getMe, getOrganization, listInstances, listOrganizationMembers, listOrganizations, listProjects, pollCliAuth, removeOrganizationMember, resolveFirstInstance, startCliAuth, } from "../lib/cloud-api.js";
6
6
  import { readCloudConfig, removeCloudConfig, writeCloudConfig, } from "../lib/cloud-config.js";
7
7
  const POLL_INTERVAL_MS = 2_000;
8
8
  const POLL_TIMEOUT_MS = 5 * 60 * 1_000;
@@ -75,8 +75,19 @@ async function runLogin(context) {
75
75
  const config = { token, url: cliApiUrl(context) };
76
76
  try {
77
77
  const { user } = await getMe(config);
78
- writeCloudConfig({ ...config, email: user.email });
78
+ const cloudConfig = { ...config, email: user.email };
79
+ // Save config immediately so login always persists
80
+ writeCloudConfig(cloudConfig);
79
81
  context.stdout.write(pc.green(`✓ Logged in as ${user.email}\n`));
82
+ // Auto-discover first instance (best-effort, won't affect persistence)
83
+ const instance = await resolveFirstInstance(cloudConfig);
84
+ if (instance) {
85
+ cloudConfig.instanceUrl = instance.mcpUrl;
86
+ cloudConfig.projectSlug = instance.projectSlug;
87
+ cloudConfig.instanceSlug = instance.instanceSlug;
88
+ writeCloudConfig(cloudConfig);
89
+ context.stdout.write(` Instance: ${pc.cyan(instance.projectSlug)}/${pc.cyan(instance.instanceSlug)}\n`);
90
+ }
80
91
  }
81
92
  catch (err) {
82
93
  if (err instanceof CloudApiError && err.status === 401) {
@@ -116,8 +127,19 @@ async function runLogin(context) {
116
127
  const tokenConfig = { token: result.token, url: cliApiUrl(context) };
117
128
  try {
118
129
  const { user } = await getMe(tokenConfig);
119
- writeCloudConfig({ ...tokenConfig, email: user.email });
130
+ const cloudConfig = { ...tokenConfig, email: user.email };
131
+ // Save config immediately so login always persists
132
+ writeCloudConfig(cloudConfig);
120
133
  context.stdout.write(pc.green(`\r✓ Logged in as ${user.email}\n`));
134
+ // Auto-discover first instance (best-effort, won't affect persistence)
135
+ const instance = await resolveFirstInstance(cloudConfig);
136
+ if (instance) {
137
+ cloudConfig.instanceUrl = instance.mcpUrl;
138
+ cloudConfig.projectSlug = instance.projectSlug;
139
+ cloudConfig.instanceSlug = instance.instanceSlug;
140
+ writeCloudConfig(cloudConfig);
141
+ context.stdout.write(` Instance: ${pc.cyan(instance.projectSlug)}/${pc.cyan(instance.instanceSlug)}\n`);
142
+ }
121
143
  return;
122
144
  }
123
145
  catch {
@@ -152,6 +174,13 @@ async function runCloudStatus(context) {
152
174
  const { user } = await getMe(config);
153
175
  context.stdout.write(`Logged in as ${pc.green(user.email)} (${user.role})\n` +
154
176
  `API: ${config.url ?? "https://api.thingd.cloud"}\n`);
177
+ if (config.projectSlug && config.instanceSlug && config.instanceUrl) {
178
+ context.stdout.write(`Instance: ${pc.cyan(config.projectSlug)}/${pc.cyan(config.instanceSlug)}\n` +
179
+ ` ${pc.dim(config.instanceUrl)}\n`);
180
+ }
181
+ else {
182
+ context.stdout.write(`Instance: ${pc.dim("none — set with thingd cloud instance use <project> <instance>")}\n`);
183
+ }
155
184
  if (config.organizationId) {
156
185
  try {
157
186
  const { organization, role } = await getOrganization(config, config.organizationId);
@@ -310,8 +339,36 @@ async function runInstance(context) {
310
339
  return;
311
340
  }
312
341
  for (const inst of instances) {
313
- context.stdout.write(`${pc.cyan(inst.slug)} ${inst.name} ${pc.dim(inst.mcpUrl || "no URL")}\n`);
342
+ const active = inst.mcpUrl && inst.mcpUrl === config.instanceUrl ? pc.green(" ") : "";
343
+ context.stdout.write(`${pc.cyan(inst.slug)} ${inst.name} ${pc.dim(inst.mcpUrl || "no URL")}${active}\n`);
344
+ }
345
+ return;
346
+ }
347
+ if (action === "use") {
348
+ const projectSlug = requiredToken(context.parsed, 3, "project");
349
+ const instanceSlug = requiredToken(context.parsed, 4, "instance");
350
+ const { projects } = await listProjects(config);
351
+ const project = projects.find((p) => p.slug === projectSlug || p.id === projectSlug);
352
+ if (!project) {
353
+ context.stderr.write(pc.red(`Project not found: ${projectSlug}\n`));
354
+ return;
355
+ }
356
+ const { instances } = await listInstances(config, project.id);
357
+ const instance = instances.find((i) => i.slug === instanceSlug || i.id === instanceSlug);
358
+ if (!instance) {
359
+ context.stderr.write(pc.red(`Instance not found: ${instanceSlug}\n`));
360
+ return;
314
361
  }
362
+ if (!instance.mcpUrl) {
363
+ context.stderr.write(pc.red("Instance has no MCP URL. Is it running?\n"));
364
+ return;
365
+ }
366
+ config.instanceUrl = instance.mcpUrl;
367
+ config.projectSlug = project.slug;
368
+ config.instanceSlug = instance.slug;
369
+ writeCloudConfig(config);
370
+ context.stdout.write(pc.green(`✓ Active instance: ${pc.cyan(project.slug)}/${pc.cyan(instance.slug)}\n`) +
371
+ ` ${pc.dim(instance.mcpUrl)}\n`);
315
372
  return;
316
373
  }
317
374
  if (action === "create") {
@@ -327,7 +384,7 @@ async function runInstance(context) {
327
384
  context.stdout.write(pc.green(`✓ Created instance: ${instance.slug}\n`));
328
385
  return;
329
386
  }
330
- context.stderr.write(`Unknown instance action: ${action}. Available: list, create\n`);
387
+ context.stderr.write(`Unknown instance action: ${action}. Available: list, use, create\n`);
331
388
  }
332
389
  async function runApiKey(context) {
333
390
  const config = await requireConfig(context);
@@ -0,0 +1,4 @@
1
+ (function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e=Array.isArray,t=Array.prototype.indexOf,n=Array.prototype.includes,r=Array.from,i=Object.defineProperty,a=Object.getOwnPropertyDescriptor,o=Object.getOwnPropertyDescriptors,s=Object.prototype,c=Array.prototype,l=Object.getPrototypeOf,u=Object.isExtensible;function d(e){return typeof e==`function`}var f=()=>{};function p(e){return e()}function m(e){for(var t=0;t<e.length;t++)e[t]()}function h(){var e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var g=1024,_=2048,v=4096,y=8192,b=16384,x=32768,S=1<<25,C=65536,w=1<<19,ee=1<<20,T=1<<25,te=65536,ne=1<<21,re=1<<22,ie=1<<23,ae=Symbol(`$state`),oe=Symbol(`legacy props`),se=Symbol(``),E=Symbol(`attributes`),ce=Symbol(`class`),le=Symbol(`style`),ue=Symbol(`text`),de=Symbol(`form reset`),fe=new class extends Error{name=`StaleReactionError`;message="The reaction that called `getAbortSignal()` was re-run or destroyed"},pe=!!globalThis.document?.contentType&&globalThis.document.contentType.includes(`xml`);function me(e){throw Error(`https://svelte.dev/e/lifecycle_outside_component`)}function he(){throw Error(`https://svelte.dev/e/async_derived_orphan`)}function ge(e,t,n){throw Error(`https://svelte.dev/e/each_key_duplicate`)}function _e(e){throw Error(`https://svelte.dev/e/effect_in_teardown`)}function ve(){throw Error(`https://svelte.dev/e/effect_in_unowned_derived`)}function ye(e){throw Error(`https://svelte.dev/e/effect_orphan`)}function be(){throw Error(`https://svelte.dev/e/effect_update_depth_exceeded`)}function xe(e){throw Error(`https://svelte.dev/e/props_invalid_value`)}function Se(){throw Error(`https://svelte.dev/e/state_descriptors_fixed`)}function Ce(){throw Error(`https://svelte.dev/e/state_prototype_fixed`)}function we(){throw Error(`https://svelte.dev/e/state_unsafe_mutation`)}function Te(){throw Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`)}var Ee={},D=Symbol(`uninitialized`),De=`http://www.w3.org/1999/xhtml`,Oe=`http://www.w3.org/2000/svg`,ke=`http://www.w3.org/1998/Math/MathML`;function Ae(){console.warn(`https://svelte.dev/e/derived_inert`)}function je(e){console.warn(`https://svelte.dev/e/hydration_mismatch`)}function Me(){console.warn(`https://svelte.dev/e/select_multiple_invalid_value`)}function Ne(){console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`)}var O=!1;function Pe(e){O=e}var k;function A(e){if(e===null)throw je(),Ee;return k=e}function Fe(){return A(sn(k))}function j(e){if(O){if(sn(k)!==null)throw je(),Ee;k=e}}function M(e=1){if(O){for(var t=e,n=k;t--;)n=sn(n);k=n}}function Ie(e=!0){for(var t=0,n=k;;){if(n.nodeType===8){var r=n.data;if(r===`]`){if(t===0)return n;--t}else(r===`[`||r===`[!`||r[0]===`[`&&!isNaN(Number(r.slice(1))))&&(t+=1)}var i=sn(n);e&&n.remove(),n=i}}function Le(e){if(!e||e.nodeType!==8)throw je(),Ee;return e.data}function Re(e){return e===this.v}function N(e,t){return e==e?e!==t||typeof e==`object`&&!!e||typeof e==`function`:t==t}function ze(e){return!N(e,this.v)}var Be=!1;function P(){Be=!0}var F=null;function Ve(e){F=e}function He(e,t=!1,n){F={p:F,i:!1,c:null,e:null,s:e,x:null,r:W,l:Be&&!t?{s:null,u:null,$:[]}:null}}function Ue(e){var t=F,n=t.e;if(n!==null){t.e=null;for(var r of n)wn(r)}return e!==void 0&&(t.x=e),t.i=!0,F=t.p,e??{}}function We(){return!Be||F!==null&&F.l===null}var Ge=[];function Ke(){var e=Ge;Ge=[],m(e)}function qe(e){if(Ge.length===0&&!Tt){var t=Ge;queueMicrotask(()=>{t===Ge&&Ke()})}Ge.push(e)}function Je(){for(;Ge.length>0;)Ke()}function Ye(e){var t=W;if(t===null)return U.f|=ie,e;if(!(t.f&32768)&&!(t.f&4))throw e;Xe(e,t)}function Xe(e,t){if(!(t!==null&&t.f&16384)){for(;t!==null;){if(t.f&128){if(!(t.f&32768))throw e;try{t.b.error(e);return}catch(t){e=t}}t=t.parent}throw e}}var Ze=~(_|v|g);function I(e,t){e.f=e.f&Ze|t}function Qe(e){e.f&512||e.deps===null?I(e,g):I(e,v)}function $e(e){if(e!==null)for(let t of e)!(t.f&2)||!(t.f&65536)||(t.f^=te,$e(t.deps))}function et(e,t,n){e.f&2048?t.add(e):e.f&4096&&n.add(e),$e(e.deps),I(e,g)}var tt=!1;function nt(e){var t=tt;try{return tt=!1,[e(),tt]}finally{tt=t}}function rt(e){let t=0,n=Wt(0),r;return()=>{xn()&&(G(n),jn(()=>(t===0&&(r=br(()=>e(()=>Jt(n)))),t+=1,()=>{qe(()=>{--t,t===0&&(r?.(),r=void 0,Jt(n))})})))}}var it=C|w;function at(e,t,n,r){new ot(e,t,n,r)}var ot=class{parent;is_pending=!1;transform_error;#e;#t=O?k:null;#n;#r;#i;#a=null;#o=null;#s=null;#c=null;#l=0;#u=0;#d=!1;#f=new Set;#p=new Set;#m=null;#h=rt(()=>(this.#m=Wt(this.#l),()=>{this.#m=null}));constructor(e,t,n,r){this.#e=e,this.#n=t,this.#r=e=>{var t=W;t.b=this,t.f|=128,n(e)},this.parent=W.b,this.transform_error=r??this.parent?.transform_error??(e=>e),this.#i=Mn(()=>{if(O){let e=this.#t;Fe();let t=e.data===`[!`;if(e.data.startsWith(`[?`)){let t=JSON.parse(e.data.slice(2));this.#_(t)}else t?this.#v():this.#g()}else this.#y()},it),O&&(this.#e=k)}#g(){try{this.#a=Nn(()=>this.#r(this.#e))}catch(e){this.error(e)}}#_(e){let t=this.#n.failed;t&&(this.#s=Nn(()=>{t(this.#e,()=>e,()=>()=>{})}))}#v(){let e=this.#n.pending;e&&(this.is_pending=!0,this.#o=Nn(()=>e(this.#e)),qe(()=>{var e=this.#c=document.createDocumentFragment(),t=an();e.append(t),this.#a=this.#x(()=>Nn(()=>this.#r(t))),this.#u===0&&(this.#e.before(e),this.#c=null,Bn(this.#o,()=>{this.#o=null}),this.#b(L))}))}#y(){try{if(this.is_pending=this.has_pending_snippet(),this.#u=0,this.#l=0,this.#a=Nn(()=>{this.#r(this.#e)}),this.#u>0){var e=this.#c=document.createDocumentFragment();Wn(this.#a,e);let t=this.#n.pending;this.#o=Nn(()=>t(this.#e))}else this.#b(L)}catch(e){this.error(e)}}#b(e){this.is_pending=!1,e.transfer_effects(this.#f,this.#p)}defer_effect(e){et(e,this.#f,this.#p)}is_rendered(){return!this.is_pending&&(!this.parent||this.parent.is_rendered())}has_pending_snippet(){return!!this.#n.pending}#x(e){var t=W,n=U,r=F;$n(this.#i),Qn(this.#i),Ve(this.#i.ctx);try{return jt.ensure(),e()}catch(e){return Ye(e),null}finally{$n(t),Qn(n),Ve(r)}}#S(e,t){if(!this.has_pending_snippet()){this.parent&&this.parent.#S(e,t);return}this.#u+=e,this.#u===0&&(this.#b(t),this.#o&&Bn(this.#o,()=>{this.#o=null}),this.#c&&=(this.#e.before(this.#c),null))}update_pending_count(e,t){this.#S(e,t),this.#l+=e,!(!this.#m||this.#d)&&(this.#d=!0,qe(()=>{this.#d=!1,this.#m&&Kt(this.#m,this.#l)}))}get_effect_pending(){return this.#h(),G(this.#m)}error(e){if(!this.#n.onerror&&!this.#n.failed)throw e;L?.is_fork?(this.#a&&L.skip_effect(this.#a),this.#o&&L.skip_effect(this.#o),this.#s&&L.skip_effect(this.#s),L.oncommit(()=>{this.#C(e)})):this.#C(e)}#C(e){this.#a&&=(Ln(this.#a),null),this.#o&&=(Ln(this.#o),null),this.#s&&=(Ln(this.#s),null),O&&(A(this.#t),M(),A(Ie()));var t=this.#n.onerror;let n=this.#n.failed;var r=!1,i=!1;let a=()=>{if(r){Ne();return}r=!0,i&&Te(),this.#s!==null&&Bn(this.#s,()=>{this.#s=null}),this.#x(()=>{this.#y()})},o=e=>{try{i=!0,t?.(e,a),i=!1}catch(e){Xe(e,this.#i&&this.#i.parent)}n&&(this.#s=this.#x(()=>{try{return Nn(()=>{var t=W;t.b=this,t.f|=128,n(this.#e,()=>e,()=>a)})}catch(e){return Xe(e,this.#i.parent),null}}))};qe(()=>{var t;try{t=this.transform_error(e)}catch(e){Xe(e,this.#i&&this.#i.parent);return}typeof t==`object`&&t&&typeof t.then==`function`?t.then(o,e=>Xe(e,this.#i&&this.#i.parent)):o(t)})}};function st(e,t,n,r){let i=We()?dt:ht;var a=e.filter(e=>!e.settled),o=t.map(i);if(n.length===0&&a.length===0){r(o);return}var s=W,c=ct(),l=a.length===1?a[0].promise:a.length>1?Promise.all(a.map(e=>e.promise)):null;function u(e){if(!(s.f&16384)){c();try{r([...o,...e])}catch(e){Xe(e,s)}lt()}}var d=ut();if(n.length===0){l.then(()=>u([])).finally(d);return}function f(){Promise.all(n.map(e=>pt(e))).then(u).catch(e=>Xe(e,s)).finally(d)}l?l.then(()=>{c(),f(),lt()}):f()}function ct(){var e=W,t=U,n=F,r=L;return function(i=!0){$n(e),Qn(t),Ve(n),i&&!(e.f&16384)&&(r?.activate(),r?.apply())}}function lt(e=!0){$n(null),Qn(null),Ve(null),e&&L?.deactivate()}function ut(){var e=W,t=e.b,n=L,r=!!t?.is_rendered();return t?.update_pending_count(1,n),n.increment(r,e),()=>{t?.update_pending_count(-1,n),n.decrement(r,e)}}function dt(e){var t=2|_;return W!==null&&(W.f|=w),{ctx:F,deps:null,effects:null,equals:Re,f:t,fn:e,reactions:null,rv:0,v:D,wv:0,parent:W,ac:null}}var ft=Symbol(`obsolete`);function pt(e,t,n){let r=W;r===null&&he();var i=void 0,a=Wt(D),o=!U,s=new Set;return An(()=>{var t=W,n=h();i=n.promise;try{Promise.resolve(e()).then(n.resolve,e=>{e!==fe&&n.reject(e)}).finally(lt)}catch(e){n.reject(e),lt()}var c=L;if(o){if(t.f&32768)var l=ut();if(r.b?.is_rendered())c.async_deriveds.get(t)?.reject(ft);else for(let e of s.values())e.reject(ft);s.add(n),c.async_deriveds.set(t,n)}let u=(e,t=void 0)=>{l?.(),s.delete(n),t!==ft&&(c.activate(),t?(a.f|=ie,Kt(a,t)):(a.f&8388608&&(a.f^=ie),Kt(a,e)),c.deactivate())};n.promise.then(u,e=>u(null,e||`unknown`))}),Sn(()=>{for(let e of s)e.reject(ft)}),new Promise(e=>{function t(n){function r(){n===i?e(a):t(i)}n.then(r,r)}t(i)})}function mt(e){let t=dt(e);return tr(t),t}function ht(e){let t=dt(e);return t.equals=ze,t}function gt(e){var t=e.effects;if(t!==null){e.effects=null;for(var n=0;n<t.length;n+=1)Ln(t[n])}}function _t(e){var t,n=W,r=e.parent;if(!Yn&&r!==null&&e.v!==D&&r.f&24576)return Ae(),e.v;$n(r);try{e.f&=~te,gt(e),t=pr(e)}finally{$n(n)}return t}function vt(e){var t=_t(e);if(!e.equals(t)&&(e.wv=ur(),(!L?.is_fork||e.deps===null)&&(L===null?e.v=t:(L.capture(e,t,!0),St?.capture(e,t,!0)),e.deps===null))){I(e,g);return}Yn||(Ct===null?Qe(e):(xn()||L?.is_fork)&&Ct.set(e,t))}function yt(e){if(e.effects!==null)for(let t of e.effects)(t.teardown||t.ac)&&(t.teardown?.(),t.ac?.abort(fe),t.fn!==null&&(t.teardown=f),t.ac=null,hr(t,0),Fn(t))}function bt(e){if(e.effects!==null)for(let t of e.effects)t.teardown&&t.fn!==null&&gr(t)}var xt=null,L=null,St=null,Ct=null,wt=null,Tt=!1,Et=!1,Dt=null,Ot=null,kt=0,At=1,jt=class e{id=At++;#e=!1;linked=!0;#t=null;#n=null;async_deriveds=new Map;current=new Map;previous=new Map;#r=new Set;#i=new Set;#a=0;#o=new Map;#s=null;#c=[];#l=[];#u=new Set;#d=new Set;#f=new Map;#p=new Set;is_fork=!1;#m=!1;constructor(){xt===null?xt=this:(xt.#n=this,this.#t=xt),xt=this}#h(){if(this.is_fork)return!0;for(let n of this.#o.keys()){for(var e=n,t=!1;e.parent!==null;){if(this.#f.has(e)){t=!0;break}e=e.parent}if(!t)return!0}return!1}skip_effect(e){this.#f.has(e)||this.#f.set(e,{d:[],m:[]}),this.#p.delete(e)}unskip_effect(e,t=e=>this.schedule(e)){var n=this.#f.get(e);if(n){this.#f.delete(e);for(var r of n.d)I(r,_),t(r);for(r of n.m)I(r,v),t(r)}this.#p.add(e)}#g(){this.#e=!0,kt++>1e3&&(this.#x(),Nt());for(let e of this.#u)this.#d.delete(e),I(e,_),this.schedule(e);for(let e of this.#d)I(e,v),this.schedule(e);let t=this.#c;this.#c=[],this.apply();var n=Dt=[],r=[],i=Ot=[];for(let e of t)try{this.#_(e,n,r)}catch(t){throw Bt(e),this.#h()||this.discard(),t}if(L=null,i.length>0){var a=e.ensure();for(let e of i)a.schedule(e)}if(Dt=null,Ot=null,this.#h()){this.#b(r),this.#b(n);for(let[e,t]of this.#f)zt(e,t);i.length>0&&L.#g();return}let o=this.#v();if(o){this.#b(r),this.#b(n),o.#y(this);return}this.#u.clear(),this.#d.clear();for(let e of this.#r)e(this);this.#r.clear(),St=this,Ft(r),Ft(n),St=null,this.#s?.resolve();var s=L;if(this.#a===0&&(this.#c.length===0||s!==null)&&this.#x(),this.#c.length>0)if(s!==null){let e=s;e.#c.push(...this.#c.filter(t=>!e.#c.includes(t)))}else s=this;s!==null&&s.#g()}#_(e,t,n){e.f^=g;for(var r=e.first;r!==null;){var i=r.f,a=(i&96)!=0;if(!(a&&i&1024||i&8192||this.#f.has(r))&&r.fn!==null){a?r.f^=g:i&4?t.push(r):dr(r)&&(i&16&&this.#d.add(r),gr(r));var o=r.first;if(o!==null){r=o;continue}}for(;r!==null;){var s=r.next;if(s!==null){r=s;break}r=r.parent}}}#v(){for(var e=this.#t;e!==null;){if(!e.is_fork){for(let[t,[,n]]of this.current)if(e.current.has(t)&&!n)return e}e=e.#t}return null}#y(e){for(let[t,n]of e.current)!this.previous.has(t)&&e.previous.has(t)&&this.previous.set(t,e.previous.get(t)),this.current.set(t,n);for(let[t,n]of e.async_deriveds){let e=this.async_deriveds.get(t);e&&n.promise.then(e.resolve).catch(e.reject)}e.async_deriveds.clear(),this.transfer_effects(e.#u,e.#d);let t=e=>{var n=e.reactions;if(n!==null)for(let e of n){var r=e.f;if(r&2)t(e);else{var i=e;r&4194320&&!this.async_deriveds.has(i)&&(this.#d.delete(i),I(i,_),this.schedule(i))}}};for(let e of this.current.keys())t(e);this.oncommit(()=>e.discard()),e.#x(),L=this,this.#g()}#b(e){for(var t=0;t<e.length;t+=1)et(e[t],this.#u,this.#d)}capture(e,t,n=!1){e.v!==D&&!this.previous.has(e)&&this.previous.set(e,e.v),e.f&8388608||(this.current.set(e,[t,n]),Ct?.set(e,t)),this.is_fork||(e.v=t)}activate(){L=this}deactivate(){L=null,Ct=null}flush(){try{Et=!0,L=this,this.#g()}finally{kt=0,wt=null,Dt=null,Ot=null,Et=!1,L=null,Ct=null,Ht.clear()}}discard(){for(let e of this.#i)e(this);this.#i.clear();for(let e of this.async_deriveds.values())e.reject(ft);this.#x(),this.#s?.resolve()}register_created_effect(e){this.#l.push(e)}increment(e,t){if(this.#a+=1,e){let e=this.#o.get(t)??0;this.#o.set(t,e+1)}}decrement(e,t){if(--this.#a,e){let e=this.#o.get(t)??0;e===1?this.#o.delete(t):this.#o.set(t,e-1)}this.#m||(this.#m=!0,qe(()=>{this.#m=!1,this.linked&&this.flush()}))}transfer_effects(e,t){for(let t of e)this.#u.add(t);for(let e of t)this.#d.add(e);e.clear(),t.clear()}oncommit(e){this.#r.add(e)}ondiscard(e){this.#i.add(e)}settled(){return(this.#s??=h()).promise}static ensure(){if(L===null){let t=L=new e;!Et&&!Tt&&qe(()=>{t.#e||t.flush()})}return L}apply(){Ct=null}schedule(e){if(wt=e,e.b?.is_pending&&e.f&16777228&&!(e.f&32768)){e.b.defer_effect(e);return}for(var t=e;t.parent!==null;){t=t.parent;var n=t.f;if(Dt!==null&&t===W&&(U===null||!(U.f&2)))return;if(n&96){if(!(n&1024))return;t.f^=g}}this.#c.push(t)}#x(){if(this.linked){var e=this.#t,t=this.#n;e===null||(e.#n=t),t===null?xt=e:t.#t=e,this.linked=!1}}};function Mt(e){var t=Tt;Tt=!0;try{var n;for(e&&(L!==null&&!L.is_fork&&L.flush(),n=e());;){if(Je(),L===null)return n;L.flush()}}finally{Tt=t}}function Nt(){try{be()}catch(e){Xe(e,wt)}}var Pt=null;function Ft(e){var t=e.length;if(t!==0){for(var n=0;n<t;){var r=e[n++];if(!(r.f&24576)&&dr(r)&&(Pt=new Set,gr(r),r.deps===null&&r.first===null&&r.nodes===null&&r.teardown===null&&r.ac===null&&zn(r),Pt?.size>0)){Ht.clear();for(let e of Pt){if(e.f&24576)continue;let t=[e],n=e.parent;for(;n!==null;)Pt.has(n)&&(Pt.delete(n),t.push(n)),n=n.parent;for(let e=t.length-1;e>=0;e--){let n=t[e];n.f&24576||gr(n)}}Pt.clear()}}Pt=null}}function It(e,t,n,r){if(!n.has(e)&&(n.add(e),e.reactions!==null))for(let i of e.reactions){let e=i.f;e&2?It(i,t,n,r):e&4194320&&!(e&2048)&&Lt(i,t,r)&&(I(i,_),Rt(i))}}function Lt(e,t,r){let i=r.get(e);if(i!==void 0)return i;if(e.deps!==null)for(let i of e.deps){if(n.call(t,i))return!0;if(i.f&2&&Lt(i,t,r))return r.set(i,!0),!0}return r.set(e,!1),!1}function Rt(e){L.schedule(e)}function zt(e,t){if(!(e.f&32&&e.f&1024)){e.f&2048?t.d.push(e):e.f&4096&&t.m.push(e),I(e,g);for(var n=e.first;n!==null;)zt(n,t),n=n.next}}function Bt(e){I(e,g);for(var t=e.first;t!==null;)Bt(t),t=t.next}var Vt=new Set,Ht=new Map,Ut=!1;function Wt(e,t){return{f:0,v:e,reactions:null,equals:Re,rv:0,wv:0}}function Gt(e,t){let n=Wt(e,t);return tr(n),n}function R(e,t=!1,n=!0){let r=Wt(e);return t||(r.equals=ze),Be&&n&&F!==null&&F.l!==null&&(F.l.s??=[]).push(r),r}function z(e,t,n=!1){return U!==null&&(!Zn||U.f&131072)&&We()&&U.f&4325394&&(er===null||!er.has(e))&&we(),Kt(e,n?Xt(t):t,Ot)}function Kt(e,t,n=null){if(!e.equals(t)){Ht.set(e,Yn?t:e.v);var r=jt.ensure();if(r.capture(e,t),e.f&2){let t=e;e.f&2048&&_t(t),Ct===null&&Qe(t)}e.wv=ur(),Yt(e,_,n),We()&&W!==null&&W.f&1024&&!(W.f&96)&&(ir===null?ar([e]):ir.push(e)),!r.is_fork&&Vt.size>0&&!Ut&&qt()}return t}function qt(){Ut=!1;for(let e of Vt){e.f&1024&&I(e,v);let t;try{t=dr(e)}catch{t=!0}t&&gr(e)}Vt.clear()}function Jt(e){z(e,e.v+1)}function Yt(e,t,n){var r=e.reactions;if(r!==null)for(var i=We(),a=r.length,o=0;o<a;o++){var s=r[o],c=s.f;if(!(!i&&s===W)){var l=(c&_)===0;if(l&&I(s,t),c&131072)Vt.add(s);else if(c&2){var u=s;Ct?.delete(u),c&65536||(c&512&&(W===null||!(W.f&2097152))&&(s.f|=te),Yt(u,v,n))}else if(l){var d=s;c&16&&Pt!==null&&Pt.add(d),n===null?Rt(d):n.push(d)}}}}function Xt(t){if(typeof t!=`object`||!t||ae in t)return t;let n=l(t);if(n!==s&&n!==c)return t;var r=new Map,i=e(t),o=Gt(0),u=null,d=cr,f=e=>{if(cr===d)return e();var t=U,n=cr;Qn(null),lr(d);var r=e();return Qn(t),lr(n),r};return i&&r.set(`length`,Gt(t.length,u)),new Proxy(t,{defineProperty(e,t,n){(!(`value`in n)||n.configurable===!1||n.enumerable===!1||n.writable===!1)&&Se();var i=r.get(t);return i===void 0?f(()=>{var e=Gt(n.value,u);return r.set(t,e),e}):z(i,n.value,!0),!0},deleteProperty(e,t){var n=r.get(t);if(n===void 0){if(t in e){let e=f(()=>Gt(D,u));r.set(t,e),Jt(o)}}else z(n,D),Jt(o);return!0},get(e,n,i){if(n===ae)return t;var o=r.get(n),s=n in e;if(o===void 0&&(!s||a(e,n)?.writable)&&(o=f(()=>Gt(Xt(s?e[n]:D),u)),r.set(n,o)),o!==void 0){var c=G(o);return c===D?void 0:c}return Reflect.get(e,n,i)},getOwnPropertyDescriptor(e,t){var n=Reflect.getOwnPropertyDescriptor(e,t);if(n&&`value`in n){var i=r.get(t);i&&(n.value=G(i))}else if(n===void 0){var a=r.get(t),o=a?.v;if(a!==void 0&&o!==D)return{enumerable:!0,configurable:!0,value:o,writable:!0}}return n},has(e,t){if(t===ae)return!0;var n=r.get(t),i=n!==void 0&&n.v!==D||Reflect.has(e,t);return(n!==void 0||W!==null&&(!i||a(e,t)?.writable))&&(n===void 0&&(n=f(()=>Gt(i?Xt(e[t]):D,u)),r.set(t,n)),G(n)===D)?!1:i},set(e,t,n,s){var c=r.get(t),l=t in e;if(i&&t===`length`)for(var d=n;d<c.v;d+=1){var p=r.get(d+``);p===void 0?d in e&&(p=f(()=>Gt(D,u)),r.set(d+``,p)):z(p,D)}if(c===void 0)(!l||a(e,t)?.writable)&&(c=f(()=>Gt(void 0,u)),z(c,Xt(n)),r.set(t,c));else{l=c.v!==D;var m=f(()=>Xt(n));z(c,m)}var h=Reflect.getOwnPropertyDescriptor(e,t);if(h?.set&&h.set.call(s,n),!l){if(i&&typeof t==`string`){var g=r.get(`length`),_=Number(t);Number.isInteger(_)&&_>=g.v&&z(g,_+1)}Jt(o)}return!0},ownKeys(e){G(o);var t=Reflect.ownKeys(e).filter(e=>{var t=r.get(e);return t===void 0||t.v!==D});for(var[n,i]of r)i.v!==D&&!(n in e)&&t.push(n);return t},setPrototypeOf(){Ce()}})}function Zt(e){try{if(typeof e==`object`&&e&&ae in e)return e[ae]}catch{}return e}function Qt(e,t){return Object.is(Zt(e),Zt(t))}var $t,en,tn,nn;function rn(){if($t===void 0){$t=window,en=/Firefox/.test(navigator.userAgent);var e=Element.prototype,t=Node.prototype,n=Text.prototype;tn=a(t,`firstChild`).get,nn=a(t,`nextSibling`).get,u(e)&&(e[ce]=void 0,e[E]=null,e[le]=void 0,e.__e=void 0),u(n)&&(n[ue]=void 0)}}function an(e=``){return document.createTextNode(e)}function on(e){return tn.call(e)}function sn(e){return nn.call(e)}function B(e,t){if(!O)return on(e);var n=on(k);if(n===null)n=k.appendChild(an());else if(t&&n.nodeType!==3){var r=an();return n?.before(r),A(r),r}return t&&fn(n),A(n),n}function cn(e,t=!1){if(!O){var n=on(e);return n instanceof Comment&&n.data===``?sn(n):n}if(t){if(k?.nodeType!==3){var r=an();return k?.before(r),A(r),r}fn(k)}return k}function V(e,t=1,n=!1){let r=O?k:e;for(var i;t--;)i=r,r=sn(r);if(!O)return r;if(n){if(r?.nodeType!==3){var a=an();return r===null?i?.after(a):r.before(a),A(a),a}fn(r)}return A(r),r}function ln(e){e.textContent=``}function un(){return!1}function dn(e,t,n){return t==null||t===`http://www.w3.org/1999/xhtml`?n?document.createElement(e,{is:n}):document.createElement(e):n?document.createElementNS(t,e,{is:n}):document.createElementNS(t,e)}function fn(e){if(e.nodeValue.length<65536)return;let t=e.nextSibling;for(;t!==null&&t.nodeType===3;)t.remove(),e.nodeValue+=t.nodeValue,t=e.nextSibling}function pn(e){O&&on(e)!==null&&ln(e)}var mn=!1;function hn(){mn||(mn=!0,document.addEventListener(`reset`,e=>{Promise.resolve().then(()=>{if(!e.defaultPrevented)for(let t of e.target.elements)t[de]?.()})},{capture:!0}))}function gn(e){var t=U,n=W;Qn(null),$n(null);try{return e()}finally{Qn(t),$n(n)}}function _n(e,t,n,r=n){e.addEventListener(t,()=>gn(n));let i=e[de];i?e[de]=()=>{i(),r(!0)}:e[de]=()=>r(!0),hn()}function vn(e){W===null&&(U===null&&ye(e),ve()),Yn&&_e(e)}function yn(e,t){var n=t.last;n===null?t.last=t.first=e:(n.next=e,e.prev=n,t.last=e)}function bn(e,t){var n=W;n!==null&&n.f&8192&&(e|=y);var r={ctx:F,deps:null,nodes:null,f:e|_|512,first:null,fn:t,last:null,next:null,parent:n,b:n&&n.b,prev:null,teardown:null,wv:0,ac:null};L?.register_created_effect(r);var i=r;if(e&4)Dt===null?jt.ensure().schedule(r):Dt.push(r);else if(t!==null){try{gr(r)}catch(e){throw Ln(r),e}i.deps===null&&i.teardown===null&&i.nodes===null&&i.first===i.last&&!(i.f&524288)&&(i=i.first,e&16&&e&65536&&i!==null&&(i.f|=C))}if(i!==null&&(i.parent=n,n!==null&&yn(i,n),U!==null&&U.f&2&&!(e&64))){var a=U;(a.effects??=[]).push(i)}return r}function xn(){return U!==null&&!Zn}function Sn(e){let t=bn(8,null);return I(t,g),t.teardown=e,t}function Cn(e){vn(`$effect`);var t=W.f;if(!U&&t&32&&F!==null&&!F.i){var n=F;(n.e??=[]).push(e)}else return wn(e)}function wn(e){return bn(4|ee,e)}function Tn(e){return vn(`$effect.pre`),bn(8|ee,e)}function En(e){jt.ensure();let t=bn(64|w,e);return(e={})=>new Promise(n=>{e.outro?Bn(t,()=>{Ln(t),n(void 0)}):(Ln(t),n(void 0))})}function Dn(e){return bn(4,e)}function On(e,t){var n=F,r={effect:null,ran:!1,deps:e};n.l.$.push(r),r.effect=jn(()=>{if(e(),!r.ran){r.ran=!0;var n=W;try{$n(n.parent),br(t)}finally{$n(n)}}})}function kn(){var e=F;jn(()=>{for(var t of e.l.$){t.deps();var n=t.effect;n.f&1024&&n.deps!==null&&I(n,v),dr(n)&&gr(n),t.ran=!1}})}function An(e){return bn(re|w,e)}function jn(e,t=0){return bn(8|t,e)}function H(e,t=[],n=[],r=[]){st(r,t,n,t=>{bn(8,()=>{e(...t.map(G))})})}function Mn(e,t=0){return bn(16|t,e)}function Nn(e){return bn(32|w,e)}function Pn(e){var t=e.teardown;if(t!==null){let e=Yn,n=U;Xn(!0),Qn(null);try{t.call(null)}finally{Xn(e),Qn(n)}}}function Fn(e,t=!1){var n=e.first;for(e.first=e.last=null;n!==null;){let e=n.ac;e!==null&&gn(()=>{e.abort(fe)});var r=n.next;n.f&64?n.parent=null:Ln(n,t),n=r}}function In(e){for(var t=e.first;t!==null;){var n=t.next;t.f&32||Ln(t),t=n}}function Ln(e,t=!0){var n=!1;(t||e.f&262144)&&e.nodes!==null&&e.nodes.end!==null&&(Rn(e.nodes.start,e.nodes.end),n=!0),e.f|=S,Fn(e,t&&!n),hr(e,0);var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)e.stop();Pn(e),e.f^=S,e.f|=b;var i=e.parent;i!==null&&i.first!==null&&zn(e),e.next=e.prev=e.teardown=e.ctx=e.deps=e.fn=e.nodes=e.ac=e.b=null}function Rn(e,t){for(;e!==null;){var n=e===t?null:sn(e);e.remove(),e=n}}function zn(e){var t=e.parent,n=e.prev,r=e.next;n!==null&&(n.next=r),r!==null&&(r.prev=n),t!==null&&(t.first===e&&(t.first=r),t.last===e&&(t.last=n))}function Bn(e,t,n=!0){var r=[];Vn(e,r,!0);var i=()=>{n&&Ln(e),t&&t()},a=r.length;if(a>0){var o=()=>--a||i();for(var s of r)s.out(o)}else i()}function Vn(e,t,n){if(!(e.f&8192)){e.f^=y;var r=e.nodes&&e.nodes.t;if(r!==null)for(let e of r)(e.is_global||n)&&t.push(e);for(var i=e.first;i!==null;){var a=i.next;if(!(i.f&64)){var o=(i.f&65536)!=0||(i.f&32)!=0&&(e.f&16)!=0;Vn(i,t,o?n:!1)}i=a}}}function Hn(e){Un(e,!0)}function Un(e,t){if(e.f&8192){e.f^=y,e.f&1024||(I(e,_),jt.ensure().schedule(e));for(var n=e.first;n!==null;){var r=n.next,i=(n.f&65536)!=0||(n.f&32)!=0;Un(n,i?t:!1),n=r}var a=e.nodes&&e.nodes.t;if(a!==null)for(let e of a)(e.is_global||t)&&e.in()}}function Wn(e,t){if(e.nodes)for(var n=e.nodes.start,r=e.nodes.end;n!==null;){var i=n===r?null:sn(n);t.append(n),n=i}}var Gn=null;function Kn(e){var t=Gn;try{if(Gn=new Set,br(e),t!==null)for(var n of Gn)t.add(n);return Gn}finally{Gn=t}}function qn(e){for(var t of Kn(e))Kt(t,t.v)}var Jn=!1,Yn=!1;function Xn(e){Yn=e}var U=null,Zn=!1;function Qn(e){U=e}var W=null;function $n(e){W=e}var er=null;function tr(e){U!==null&&(er??=new Set).add(e)}var nr=null,rr=0,ir=null;function ar(e){ir=e}var or=1,sr=0,cr=sr;function lr(e){cr=e}function ur(){return++or}function dr(e){var t=e.f;if(t&2048)return!0;if(t&2&&(e.f&=~te),t&4096){for(var n=e.deps,r=n.length,i=0;i<r;i++){var a=n[i];if(dr(a)&&vt(a),a.wv>e.wv)return!0}t&512&&Ct===null&&I(e,g)}return!1}function fr(e,t,n=!0){var r=e.reactions;if(r!==null&&!(er!==null&&er.has(e)))for(var i=0;i<r.length;i++){var a=r[i];a.f&2?fr(a,t,!1):t===a&&(n?I(a,_):a.f&1024&&I(a,v),Rt(a))}}function pr(e){var t=nr,n=rr,r=ir,i=U,a=er,o=F,s=Zn,c=cr,l=e.f;nr=null,rr=0,ir=null,U=l&96?null:e,er=null,Ve(e.ctx),Zn=!1,cr=++sr,e.ac!==null&&(gn(()=>{e.ac.abort(fe)}),e.ac=null);try{e.f|=ne;var u=e.fn,d=u();e.f|=x;var f=e.deps,p=L?.is_fork;if(nr!==null){var m;if(p||hr(e,rr),f!==null&&rr>0)for(f.length=rr+nr.length,m=0;m<nr.length;m++)f[rr+m]=nr[m];else e.deps=f=nr;if(xn()&&e.f&512)for(m=rr;m<f.length;m++)(f[m].reactions??=[]).push(e)}else!p&&f!==null&&rr<f.length&&(hr(e,rr),f.length=rr);if(We()&&ir!==null&&!Zn&&f!==null&&!(e.f&6146))for(m=0;m<ir.length;m++)fr(ir[m],e);if(i!==null&&i!==e){if(sr++,i.deps!==null)for(let e=0;e<n;e+=1)i.deps[e].rv=sr;if(t!==null)for(let e of t)e.rv=sr;ir!==null&&(r===null?r=ir:r.push(...ir))}return e.f&8388608&&(e.f^=ie),d}catch(e){return Ye(e)}finally{e.f^=ne,nr=t,rr=n,ir=r,U=i,er=a,Ve(o),Zn=s,cr=c}}function mr(e,r){let i=r.reactions;if(i!==null){var a=t.call(i,e);if(a!==-1){var o=i.length-1;o===0?i=r.reactions=null:(i[a]=i[o],i.pop())}}if(i===null&&r.f&2&&(nr===null||!n.call(nr,r))){var s=r;s.f&512&&(s.f^=512,s.f&=~te),s.v!==D&&Qe(s),yt(s),hr(s,0)}}function hr(e,t){var n=e.deps;if(n!==null)for(var r=t;r<n.length;r++)mr(e,n[r])}function gr(e){var t=e.f;if(!(t&16384)){I(e,g);var n=W,r=Jn;W=e,Jn=!0;try{t&16777232?In(e):Fn(e),Pn(e);var i=pr(e);e.teardown=typeof i==`function`?i:null,e.wv=or}finally{Jn=r,W=n}}}async function _r(){await Promise.resolve(),Mt()}function G(e){var t=(e.f&2)!=0;if(Gn?.add(e),U!==null&&!Zn&&!(W!==null&&W.f&16384)&&(er===null||!er.has(e))){var r=U.deps;if(U.f&2097152)e.rv<sr&&(e.rv=sr,nr===null&&r!==null&&r[rr]===e?rr++:nr===null?nr=[e]:nr.push(e));else{U.deps??=[],n.call(U.deps,e)||U.deps.push(e);var i=e.reactions;i===null?e.reactions=[U]:n.call(i,U)||i.push(U)}}if(Yn&&Ht.has(e))return Ht.get(e);if(t){var a=e;if(Yn){var o=a.v;return(!(a.f&1024)&&a.reactions!==null||yr(a))&&(o=_t(a)),Ht.set(a,o),o}var s=(a.f&512)==0&&!Zn&&U!==null&&(Jn||(U.f&512)!=0),c=(a.f&x)===0;dr(a)&&(s&&(a.f|=512),vt(a)),s&&!c&&(bt(a),vr(a))}if(Ct?.has(e))return Ct.get(e);if(e.f&8388608)throw e.v;return e.v}function vr(e){if(e.f|=512,e.deps!==null)for(let t of e.deps)(t.reactions??=[]).push(e),t.f&2&&!(t.f&512)&&(bt(t),vr(t))}function yr(e){if(e.v===D)return!0;if(e.deps===null)return!1;for(let t of e.deps)if(Ht.has(t)||t.f&2&&yr(t))return!0;return!1}function br(e){var t=Zn;try{return Zn=!0,e()}finally{Zn=t}}function xr(e){if(!(typeof e!=`object`||!e||e instanceof EventTarget)){if(ae in e)Sr(e);else if(!Array.isArray(e))for(let t in e){let n=e[t];typeof n==`object`&&n&&ae in n&&Sr(n)}}}function Sr(e,t=new Set){if(typeof e==`object`&&e&&!(e instanceof EventTarget)&&!t.has(e)){t.add(e),e instanceof Date&&e.getTime();for(let n in e)try{Sr(e[n],t)}catch{}let n=l(e);if(n!==Object.prototype&&n!==Array.prototype&&n!==Map.prototype&&n!==Set.prototype&&n!==Date.prototype){let t=o(n);for(let n in t){let r=t[n].get;if(r)try{r.call(e)}catch{}}}}}[...`allowfullscreen.async.autofocus.autoplay.checked.controls.default.disabled.formnovalidate.indeterminate.inert.ismap.loop.multiple.muted.nomodule.novalidate.open.playsinline.readonly.required.reversed.seamless.selected.webkitdirectory.defer.disablepictureinpicture.disableremoteplayback`.split(`.`)];var Cr=[`touchstart`,`touchmove`];function wr(e){return Cr.includes(e)}var Tr=Symbol(`events`),Er=new Set,Dr=new Set;function Or(e,t,n,r={}){function i(e){if(r.capture||Ar.call(t,e),!e.cancelBubble)return gn(()=>n?.call(this,e))}return e.startsWith(`pointer`)||e.startsWith(`touch`)||e===`wheel`?qe(()=>{t.addEventListener(e,i,r)}):t.addEventListener(e,i,r),i}function K(e,t,n,r,i){var a={capture:r,passive:i},o=Or(e,t,n,a);(t===document.body||t===window||t===document||t instanceof HTMLMediaElement)&&Sn(()=>{t.removeEventListener(e,o,a)})}var kr=null;function Ar(e){var t=this,n=t.ownerDocument,r=e.type,a=e.composedPath?.()||[],o=a[0]||e.target;kr=e;var s=0,c=kr===e&&e[Tr];if(c){var l=a.indexOf(c);if(l!==-1&&(t===document||t===window)){e[Tr]=t;return}var u=a.indexOf(t);if(u===-1)return;l<=u&&(s=l)}if(o=a[s]||e.target,o!==t){i(e,`currentTarget`,{configurable:!0,get(){return o||n}});var d=U,f=W;Qn(null),$n(null);try{for(var p,m=[];o!==null&&o!==t;){try{var h=o[Tr]?.[r];h!=null&&(!o.disabled||e.target===o)&&h.call(o,e)}catch(e){p?m.push(e):p=e}if(e.cancelBubble)break;s++,o=s<a.length?a[s]:null}if(p){for(let e of m)queueMicrotask(()=>{throw e});throw p}}finally{e[Tr]=t,delete e.currentTarget,Qn(d),$n(f)}}}var jr=globalThis?.window?.trustedTypes&&globalThis.window.trustedTypes.createPolicy(`svelte-trusted-html`,{createHTML:e=>e});function Mr(e){return jr?.createHTML(e)??e}function Nr(e){var t=dn(`template`);return t.innerHTML=Mr(e.replaceAll(`<!>`,`<!---->`)),t.content}function Pr(e,t){var n=W;n.nodes===null&&(n.nodes={start:e,end:t,a:null,t:null})}function q(e,t){var n=(t&1)!=0,r=(t&2)!=0,i,a=!e.startsWith(`<!>`);return()=>{if(O)return Pr(k,null),k;i===void 0&&(i=Nr(a?e:`<!>`+e),n||(i=on(i)));var t=r||en?document.importNode(i,!0):i.cloneNode(!0);if(n){var o=on(t),s=t.lastChild;Pr(o,s)}else Pr(t,t);return t}}function Fr(e=``){if(!O){var t=an(e+``);return Pr(t,t),t}var n=k;return n.nodeType===3?fn(n):(n.before(n=an()),A(n)),Pr(n,n),n}function Ir(){if(O)return Pr(k,null),k;var e=document.createDocumentFragment(),t=document.createComment(``),n=an();return e.append(t,n),Pr(t,n),e}function J(e,t){if(O){var n=W;(!(n.f&32768)||n.nodes.end===null)&&(n.nodes.end=k),Fe();return}e!==null&&e.before(t)}var Lr=!0;function Y(e,t){var n=t==null?``:typeof t==`object`?`${t}`:t;n!==(e[ue]??=e.nodeValue)&&(e[ue]=n,e.nodeValue=`${n}`)}function Rr(e,t){return Br(e,t)}var zr=new Map;function Br(e,{target:t,anchor:n,props:i={},events:a,context:o,intro:s=!0,transformError:c}){rn();var l=void 0,u=En(()=>{var u=n??t.appendChild(an());at(u,{pending:()=>{}},t=>{He({});var n=F;if(o&&(n.c=o),a&&(i.$$events=a),O&&Pr(t,null),Lr=s,l=e(t,i)||{},Lr=!0,O&&(W.nodes.end=k,k===null||k.nodeType!==8||k.data!==`]`))throw je(),Ee;Ue()},c);var d=new Set,f=e=>{for(var n=0;n<e.length;n++){var r=e[n];if(!d.has(r)){d.add(r);var i=wr(r);for(let e of[t,document]){var a=zr.get(e);a===void 0&&(a=new Map,zr.set(e,a));var o=a.get(r);o===void 0?(e.addEventListener(r,Ar,{passive:i}),a.set(r,1)):a.set(r,o+1)}}}};return f(r(Er)),Dr.add(f),()=>{for(var e of d)for(let n of[t,document]){var r=zr.get(n),i=r.get(e);--i==0?(n.removeEventListener(e,Ar),r.delete(e),r.size===0&&zr.delete(n)):r.set(e,i)}Dr.delete(f),u!==n&&u.parentNode?.removeChild(u)}});return Vr.set(l,u),l}var Vr=new WeakMap,Hr=class{anchor;#e=new Map;#t=new Map;#n=new Map;#r=new Set;#i=!0;constructor(e,t=!0){this.anchor=e,this.#i=t}#a=e=>{if(this.#e.has(e)){var t=this.#e.get(e),n=this.#t.get(t);if(n)Hn(n),this.#r.delete(t);else{var r=this.#n.get(t);r&&(Hn(r.effect),this.#t.set(t,r.effect),this.#n.delete(t),r.fragment.lastChild.remove(),this.anchor.before(r.fragment),n=r.effect)}for(let[t,n]of this.#e){if(this.#e.delete(t),t===e)break;let r=this.#n.get(n);r&&(Ln(r.effect),this.#n.delete(n))}for(let[e,r]of this.#t){if(e===t||this.#r.has(e))continue;let i=()=>{if(Array.from(this.#e.values()).includes(e)){var t=document.createDocumentFragment();Wn(r,t),t.append(an()),this.#n.set(e,{effect:r,fragment:t})}else Ln(r);this.#r.delete(e),this.#t.delete(e)};this.#i||!n?(this.#r.add(e),Bn(r,i,!1)):i()}}};#o=e=>{this.#e.delete(e);let t=Array.from(this.#e.values());for(let[e,n]of this.#n)t.includes(e)||(Ln(n.effect),this.#n.delete(e))};ensure(e,t){var n=L,r=un();if(t&&!this.#t.has(e)&&!this.#n.has(e))if(r){var i=document.createDocumentFragment(),a=an();i.append(a),this.#n.set(e,{effect:Nn(()=>t(a)),fragment:i})}else this.#t.set(e,Nn(()=>t(this.anchor)));if(this.#e.set(n,e),r){for(let[t,r]of this.#t)t===e?n.unskip_effect(r):n.skip_effect(r);for(let[t,r]of this.#n)t===e?n.unskip_effect(r.effect):n.skip_effect(r.effect);n.oncommit(this.#a),n.ondiscard(this.#o)}else O&&(this.anchor=k),this.#a(n)}};function X(e,t,n=!1){var r;O&&(r=k,Fe());var i=new Hr(e),a=n?C:0;function o(e,t){if(O){var n=Le(r);if(e!==parseInt(n.substring(1))){var a=Ie();A(a),i.anchor=a,Pe(!1),i.ensure(e,t),Pe(!0);return}}i.ensure(e,t)}Mn(()=>{var e=!1;t((t,n=0)=>{e=!0,o(n,t)}),e||o(-1,null)},a)}function Ur(e,t){return t}function Wr(e,t,n){for(var i=[],a=t.length,o,s=t.length,c=0;c<a;c++){let n=t[c];Bn(n,()=>{if(o){if(o.pending.delete(n),o.done.add(n),o.pending.size===0){var t=e.outrogroups;Gr(e,r(o.done)),t.delete(o),t.size===0&&(e.outrogroups=null)}}else--s},!1)}if(s===0){var l=i.length===0&&n!==null;if(l){var u=n,d=u.parentNode;ln(d),d.append(u),e.items.clear()}Gr(e,t,!l)}else o={pending:new Set(t),done:new Set},(e.outrogroups??=new Set).add(o)}function Gr(e,t,n=!0){var r;if(e.pending.size>0){r=new Set;for(let t of e.pending.values())for(let n of t)r.add(e.items.get(n).e)}for(var i=0;i<t.length;i++){var a=t[i];r?.has(a)?(a.f|=T,Wn(a,document.createDocumentFragment())):Ln(t[i],n)}}var Kr;function qr(t,n,i,a,o,s=null){var c=t,l=new Map;if(n&4){var u=t;c=O?A(on(u)):u.appendChild(an())}O&&Fe();var d=null,f=ht(()=>{var t=i();return e(t)?t:t==null?[]:r(t)}),p,m=new Map,h=!0;function g(e){v.effect.f&16384||(v.pending.delete(e),v.fallback=d,Yr(v,p,c,n,a),d!==null&&(p.length===0?d.f&33554432?(d.f^=T,Zr(d,null,c)):Hn(d):Bn(d,()=>{d=null})))}function _(e){v.pending.delete(e)}var v={effect:Mn(()=>{p=G(f);var e=p.length;let t=!1;O&&Le(c)===`[!`!=(e===0)&&(c=Ie(),A(c),Pe(!1),t=!0);for(var r=new Set,u=L,v=un(),y=0;y<e;y+=1){O&&k.nodeType===8&&k.data===`]`&&(c=k,t=!0,Pe(!1));var b=p[y],x=a(b,y),S=h?null:l.get(x);S?(S.v&&Kt(S.v,b),S.i&&Kt(S.i,y),v&&u.unskip_effect(S.e)):(S=Xr(l,h?c:Kr??=an(),b,x,y,o,n,i),h||(S.e.f|=T),l.set(x,S)),r.add(x)}if(e===0&&s&&!d&&(h?d=Nn(()=>s(c)):(d=Nn(()=>s(Kr??=an())),d.f|=T)),e>r.size&&ge(``,``,``),O&&e>0&&A(Ie()),!h)if(m.set(u,r),v){for(let[e,t]of l)r.has(e)||u.skip_effect(t.e);u.oncommit(g),u.ondiscard(_)}else g(u);t&&Pe(!0),G(f)}),flags:n,items:l,pending:m,outrogroups:null,fallback:d};h=!1,O&&(c=k)}function Jr(e){for(;e!==null&&!(e.f&32);)e=e.next;return e}function Yr(e,t,n,i,a){var o=(i&8)!=0,s=t.length,c=e.items,l=Jr(e.effect.first),u,d=null,f,p=[],m=[],h,g,_,v;if(o)for(v=0;v<s;v+=1)h=t[v],g=a(h,v),_=c.get(g).e,_.f&33554432||(_.nodes?.a?.measure(),(f??=new Set).add(_));for(v=0;v<s;v+=1){if(h=t[v],g=a(h,v),_=c.get(g).e,e.outrogroups!==null)for(let t of e.outrogroups)t.pending.delete(_),t.done.delete(_);if(_.f&8192&&(Hn(_),o&&(_.nodes?.a?.unfix(),(f??=new Set).delete(_))),_.f&33554432)if(_.f^=T,_===l)Zr(_,null,n);else{var y=d?d.next:l;_===e.effect.last&&(e.effect.last=_.prev),_.prev&&(_.prev.next=_.next),_.next&&(_.next.prev=_.prev),Qr(e,d,_),Qr(e,_,y),Zr(_,y,n),d=_,p=[],m=[],l=Jr(d.next);continue}if(_!==l){if(u!==void 0&&u.has(_)){if(p.length<m.length){var b=m[0],x;d=b.prev;var S=p[0],C=p[p.length-1];for(x=0;x<p.length;x+=1)Zr(p[x],b,n);for(x=0;x<m.length;x+=1)u.delete(m[x]);Qr(e,S.prev,C.next),Qr(e,d,S),Qr(e,C,b),l=b,d=C,--v,p=[],m=[]}else u.delete(_),Zr(_,l,n),Qr(e,_.prev,_.next),Qr(e,_,d===null?e.effect.first:d.next),Qr(e,d,_),d=_;continue}for(p=[],m=[];l!==null&&l!==_;)(u??=new Set).add(l),m.push(l),l=Jr(l.next);if(l===null)continue}_.f&33554432||p.push(_),d=_,l=Jr(_.next)}if(e.outrogroups!==null){for(let t of e.outrogroups)t.pending.size===0&&(Gr(e,r(t.done)),e.outrogroups?.delete(t));e.outrogroups.size===0&&(e.outrogroups=null)}if(l!==null||u!==void 0){var w=[];if(u!==void 0)for(_ of u)_.f&8192||w.push(_);for(;l!==null;)!(l.f&8192)&&l!==e.fallback&&w.push(l),l=Jr(l.next);var ee=w.length;if(ee>0){var te=i&4&&s===0?n:null;if(o){for(v=0;v<ee;v+=1)w[v].nodes?.a?.measure();for(v=0;v<ee;v+=1)w[v].nodes?.a?.fix()}Wr(e,w,te)}}o&&qe(()=>{if(f!==void 0)for(_ of f)_.nodes?.a?.apply()})}function Xr(e,t,n,r,i,a,o,s){var c=o&1?o&16?Wt(n):R(n,!1,!1):null,l=o&2?Wt(i):null;return{v:c,i:l,e:Nn(()=>(a(t,c??n,l??i,s),()=>{e.delete(r)}))}}function Zr(e,t,n){if(e.nodes)for(var r=e.nodes.start,i=e.nodes.end,a=t&&!(t.f&33554432)?t.nodes.start:n;r!==null;){var o=sn(r);if(a.before(r),r===i)return;r=o}}function Qr(e,t,n){t===null?e.effect.first=n:t.next=n,n===null?e.effect.last=t:n.prev=t}function $r(e,t,n=!1,r=!1,i=!1,a=!1){var o=e,s=``;if(n){var c=e;O&&(o=A(on(c)))}H(()=>{var e=W;if(s===(s=t()??``)){O&&Fe();return}if(n&&!O){e.nodes=null,c.innerHTML=s,s!==``&&Pr(on(c),c.lastChild);return}if(e.nodes!==null&&(Rn(e.nodes.start,e.nodes.end),e.nodes=null),s!==``){if(O){for(var a=k.data,l=Fe(),u=l;l!==null&&(l.nodeType!==8||l.data!==``);)u=l,l=sn(l);if(l===null)throw je(),Ee;Pr(k,u),o=A(l);return}var d=dn(r?`svg`:i?`math`:`template`,r?Oe:i?ke:void 0);d.innerHTML=s;var f=r||i?d:d.content;if(Pr(on(f),f.lastChild),r||i)for(;on(f);)o.before(on(f));else o.before(f)}})}var ei=()=>performance.now(),ti={tick:e=>requestAnimationFrame(e),now:()=>ei(),tasks:new Set};function ni(){let e=ti.now();ti.tasks.forEach(t=>{t.c(e)||(ti.tasks.delete(t),t.f())}),ti.tasks.size!==0&&ti.tick(ni)}function ri(e){let t;return ti.tasks.size===0&&ti.tick(ni),{promise:new Promise(n=>{ti.tasks.add(t={c:e,f:n})}),abort(){ti.tasks.delete(t)}}}function ii(e,t){gn(()=>{e.dispatchEvent(new CustomEvent(t))})}function ai(e){if(e===`float`)return`cssFloat`;if(e===`offset`)return`cssOffset`;if(e.startsWith(`--`))return e;let t=e.split(`-`);return t.length===1?t[0]:t[0]+t.slice(1).map(e=>e[0].toUpperCase()+e.slice(1)).join(``)}function oi(e){let t={},n=e.split(`;`);for(let e of n){let[n,r]=e.split(`:`);if(!n||r===void 0)break;let i=ai(n.trim());t[i]=r.trim()}return t}var si=e=>e,ci=null;function li(e,t,n){var r=(ci??W).nodes,i,a,o,s=null;r.a??={element:e,measure(){i=this.element.getBoundingClientRect()},apply(){if(o?.abort(),a=this.element.getBoundingClientRect(),i.left!==a.left||i.right!==a.right||i.top!==a.top||i.bottom!==a.bottom){let e=t()(this.element,{from:i,to:a},n?.());o=di(this.element,e,void 0,1,()=>{},()=>{o?.abort(),o=void 0})}},fix(){if(!e.getAnimations().length){var{position:t,width:n,height:r}=getComputedStyle(e);if(t!==`absolute`&&t!==`fixed`){var a=e.style;s={position:a.position,width:a.width,height:a.height,transform:a.transform},a.position=`absolute`,a.width=n,a.height=r;var o=e.getBoundingClientRect();if(i.left!==o.left||i.top!==o.top){var c=`translate(${i.left-o.left}px, ${i.top-o.top}px)`;a.transform=a.transform?`${a.transform} ${c}`:c}}}},unfix(){if(s){var t=e.style;t.position=s.position,t.width=s.width,t.height=s.height,t.transform=s.transform}}},r.a.element=e}function ui(e,t,n,r){var i=(e&1)!=0,a=(e&2)!=0,o=i&&a,s=(e&4)!=0,c=o?`both`:i?`in`:`out`,l,u=t.inert,d=t.style.overflow,f,p;function m(){return gn(()=>l??=n()(t,r?.()??{},{direction:c}))}var h={is_global:s,in(){if(t.inert=u,!i){p?.abort(),p?.reset?.();return}a||f?.abort(),f=di(t,m(),p,1,()=>{ii(t,`introstart`)},()=>{ii(t,`introend`),f?.abort(),f=l=void 0,t.style.overflow=d})},out(e){if(!a){e?.(),l=void 0;return}t.inert=!0,p=di(t,m(),f,0,()=>{ii(t,`outrostart`)},()=>{ii(t,`outroend`),e?.()})},stop:()=>{f?.abort(),p?.abort()}},g=W;if((g.nodes.t??=[]).push(h),i&&Lr){var _=s;if(!_){for(var v=g.parent;v&&v.f&65536;)for(;(v=v.parent)&&!(v.f&16););_=!v||(v.f&32768)!=0}_&&Dn(()=>{br(()=>h.in())})}}function di(e,t,n,r,i,a){var o=r===1;if(d(t)){var s,c=!1;return qe(()=>{c||(s=di(e,t({direction:o?`in`:`out`}),n,r,i,a))}),{abort:()=>{c=!0,s?.abort()},deactivate:()=>s.deactivate(),reset:()=>s.reset(),t:()=>s.t()}}if(n?.deactivate(),!t?.duration&&!t?.delay)return i(),a(),{abort:f,deactivate:f,reset:f,t:()=>r};let{delay:l=0,css:u,tick:p,easing:m=si}=t;var h=[];if(o&&n===void 0&&(p&&p(0,1),u)){var g=oi(u(0,1));h.push(g,g)}var _=()=>1-r,v=e.animate(h,{duration:l,fill:`forwards`});return v.onfinish=()=>{v.cancel(),i();var o=n?.t()??1-r;n?.abort();var s=r-o,c=t.duration*Math.abs(s),l=[];if(c>0){var d=!1;if(u)for(var f=Math.ceil(c/(1e3/60)),h=0;h<=f;h+=1){var g=o+s*m(h/f),y=oi(u(g,1-g));l.push(y),d||=y.overflow===`hidden`}d&&(e.style.overflow=`hidden`),_=()=>{var e=v.currentTime;return o+s*m(e/c)},p&&ri(()=>{if(v.playState!==`running`)return!1;var e=_();return p(e,1-e),!0})}v=e.animate(l,{duration:c,fill:`forwards`}),v.onfinish=()=>{_=()=>r,p?.(r,1-r),a()}},{abort:()=>{v&&(v.cancel(),v.effect=null,v.onfinish=f)},deactivate:()=>{a=f},reset:()=>{r===0&&p?.(1,0)},t:()=>_()}}function fi(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(n=fi(e[t]))&&(r&&(r+=` `),r+=n)}else for(n in e)e[n]&&(r&&(r+=` `),r+=n);return r}function pi(){for(var e,t,n=0,r=``,i=arguments.length;n<i;n++)(e=arguments[n])&&(t=fi(e))&&(r&&(r+=` `),r+=t);return r}function mi(e){return typeof e==`object`?pi(e):e??``}var hi=[...`
2
+ \r\f\xA0\v`];function gi(e,t,n){var r=e==null?``:``+e;if(t&&(r=r?r+` `+t:t),n){for(var i of Object.keys(n))if(n[i])r=r?r+` `+i:i;else if(r.length)for(var a=i.length,o=0;(o=r.indexOf(i,o))>=0;){var s=o+a;(o===0||hi.includes(r[o-1]))&&(s===r.length||hi.includes(r[s]))?r=(o===0?``:r.substring(0,o))+r.substring(s+1):o=s}}return r===``?null:r}function Z(e,t,n,r,i,a){var o=e[ce];if(O||o!==n||o===void 0){var s=gi(n,r,a);(!O||s!==e.getAttribute(`class`))&&(s==null?e.removeAttribute(`class`):t?e.className=s:e.setAttribute(`class`,s)),e[ce]=n}else if(a&&i!==a)for(var c in a){var l=!!a[c];(i==null||l!==!!i[c])&&e.classList.toggle(c,l)}return a}function _i(t,n,r=!1){if(t.multiple){if(n==null)return;if(!e(n))return Me();for(var i of t.options)i.selected=n.includes(bi(i));return}for(i of t.options)if(Qt(bi(i),n)){i.selected=!0;return}(!r||n!==void 0)&&(t.selectedIndex=-1)}function vi(e){var t=new MutationObserver(()=>{_i(e,e.__value)});t.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[`value`]}),Sn(()=>{t.disconnect()})}function yi(e,t,n=t){var r=new WeakSet,i=!0;_n(e,`change`,t=>{var i=t?`[selected]`:`:checked`,a;if(e.multiple)a=[].map.call(e.querySelectorAll(i),bi);else{var o=e.querySelector(i)??e.querySelector(`option:not([disabled])`);a=o&&bi(o)}n(a),e.__value=a,L!==null&&r.add(L)}),Dn(()=>{var a=t();if(e===document.activeElement){var o=L;if(r.has(o))return}if(_i(e,a,i),i&&a===void 0){var s=e.querySelector(`:checked`);s!==null&&(a=bi(s),n(a))}e.__value=a,i=!1}),vi(e)}function bi(e){return`__value`in e?e.__value:e.value}var xi=Symbol(`is custom element`),Si=Symbol(`is html`),Ci=pe?`link`:`LINK`;function Q(e){if(O){var t=!1,n=()=>{if(!t){if(t=!0,e.hasAttribute(`value`)){var n=e.value;wi(e,`value`,null),e.value=n}if(e.hasAttribute(`checked`)){var r=e.checked;wi(e,`checked`,null),e.checked=r}}};e[de]=n,qe(n),hn()}}function wi(e,t,n,r){var i=Ti(e);O&&(i[t]=e.getAttribute(t),t===`src`||t===`srcset`||t===`href`&&e.nodeName===Ci)||i[t]!==(i[t]=n)&&(t===`loading`&&(e[se]=n),n==null?e.removeAttribute(t):typeof n!=`string`&&Di(e).includes(t)?e[t]=n:e.setAttribute(t,n))}function Ti(e){return e[E]??={[xi]:e.nodeName.includes(`-`),[Si]:e.namespaceURI===De}}var Ei=new Map;function Di(e){var t=e.getAttribute(`is`)||e.nodeName,n=Ei.get(t);if(n)return n;Ei.set(t,n=[]);for(var r,i=e,a=Element.prototype;a!==i;){for(var s in r=o(i),r)r[s].set&&s!==`innerHTML`&&s!==`textContent`&&s!==`innerText`&&n.push(s);i=l(i)}return n}function $(e,t,n=t){var r=new WeakSet;_n(e,`input`,async i=>{var a=i?e.defaultValue:e.value;if(a=Oi(e)?ki(a):a,n(a),L!==null&&r.add(L),await _r(),a!==(a=t())){var o=e.selectionStart,s=e.selectionEnd,c=e.value.length;if(e.value=a??``,s!==null){var l=e.value.length;o===s&&s===c&&l>c?(e.selectionStart=l,e.selectionEnd=l):(e.selectionStart=o,e.selectionEnd=Math.min(s,l))}}}),(O&&e.defaultValue!==e.value||br(t)==null&&e.value)&&(n(Oi(e)?ki(e.value):e.value),L!==null&&r.add(L)),jn(()=>{var n=t();if(e===document.activeElement){var i=L;if(r.has(i))return}Oi(e)&&n===ki(e.value)||e.type===`date`&&!n&&!e.value||n!==e.value&&(e.value=n??``)})}function Oi(e){var t=e.type;return t===`number`||t===`range`}function ki(e){return e===``?null:+e}function Ai(e=!1){let t=F,n=t.l.u;if(!n)return;let r=()=>xr(t.s);if(e){let e=0,n={},i=dt(()=>{let r=!1,i=t.s;for(let e in i)i[e]!==n[e]&&(n[e]=i[e],r=!0);return r&&e++,e});r=()=>G(i)}n.b.length&&Tn(()=>{ji(t,r),m(n.b)}),Cn(()=>{let e=br(()=>n.m.map(p));return()=>{for(let t of e)typeof t==`function`&&t()}}),n.a.length&&Cn(()=>{ji(t,r),m(n.a)})}function ji(e,t){if(e.l.s)for(let t of e.l.s)G(t);t()}function Mi(e,t,n,r){var i=!Be||(n&2)!=0,o=(n&8)!=0,s=(n&16)!=0,c=r,l=!0,u=void 0,d=()=>s&&i?(u??=dt(r),G(u)):(l&&(l=!1,c=s?br(r):r),c);let f;if(o){var p=ae in e||oe in e;f=a(e,t)?.set??(p&&t in e?n=>e[t]=n:void 0)}var m,h=!1;o?[m,h]=nt(()=>e[t]):m=e[t],m===void 0&&r!==void 0&&(m=d(),f&&(i&&xe(t),f(m)));var g=i?()=>{var n=e[t];return n===void 0?d():(l=!0,n)}:()=>{var n=e[t];return n!==void 0&&(c=void 0),n===void 0?c:n};if(i&&!(n&4))return g;if(f){var _=e.$$legacy;return(function(e,t){return arguments.length>0?((!i||!t||_||h)&&f(t?g():e),e):g()})}var v=!1,y=(n&1?dt:ht)(()=>(v=!1,g()));o&&G(y);var b=W;return(function(e,t){if(arguments.length>0){let n=t?G(y):i&&o?Xt(e):e;return z(y,n),v=!0,c!==void 0&&(c=n),e}return Yn&&v||b.f&16384?y.v:G(y)})}function Ni(e){F===null&&me(`onMount`),Be&&F.l!==null?Fi(F).m.push(e):Cn(()=>{let t=br(e);if(typeof t==`function`)return t})}function Pi(e){F===null&&me(`onDestroy`),Ni(()=>()=>br(e))}function Fi(e){var t=e.l;return t.u??={a:[],b:[],m:[]}}typeof window<`u`&&((window.__svelte??={}).v??=new Set).add(`5`),P();function Ii(e){let t=e-1;return t*t*t+1}function Li(e,{from:t,to:n},r={}){var{delay:i=0,duration:a=e=>Math.sqrt(e)*120,easing:o=Ii}=r,s=getComputedStyle(e),c=s.transform===`none`?``:s.transform,[l,u]=s.transformOrigin.split(` `).map(parseFloat);l/=e.clientWidth,u/=e.clientHeight;var d=Ri(e),f=e.clientWidth/n.width/d,p=e.clientHeight/n.height/d,m=t.left+t.width*l,h=t.top+t.height*u,g=n.left+n.width*l,_=n.top+n.height*u,v=(m-g)*f,y=(h-_)*p,b=t.width/n.width,x=t.height/n.height;return{delay:i,duration:typeof a==`function`?a(Math.sqrt(v*v+y*y)):a,easing:o,css:(e,t)=>`transform: ${c} translate(${t*v}px, ${t*y}px) scale(${e+t*b}, ${e+t*x});`}}function Ri(e){if(`currentCSSZoom`in e)return e.currentCSSZoom;for(var t=e,n=1;t!==null;)n*=+getComputedStyle(t).zoom,t=t.parentElement;return n}var zi=e=>e;function Bi(e){let t=e-1;return t*t*t+1}function Vi(e){let t=typeof e==`string`&&e.match(/^\s*(-?[\d.]+)([^\s]*)\s*$/);return t?[parseFloat(t[1]),t[2]||`px`]:[e,`px`]}function Hi(e,{delay:t=0,duration:n=400,easing:r=zi}={}){let i=+getComputedStyle(e).opacity;return{delay:t,duration:n,easing:r,css:e=>`opacity: ${e*i}`}}function Ui(e,{delay:t=0,duration:n=400,easing:r=Bi,x:i=0,y:a=0,opacity:o=0}={}){let s=getComputedStyle(e),c=+s.opacity,l=s.transform===`none`?``:s.transform,u=c*(1-o),[d,f]=Vi(i),[p,m]=Vi(a);return{delay:t,duration:n,easing:r,css:(e,t)=>`
3
+ transform: ${l} translate(${(1-e)*d}${f}, ${(1-e)*p}${m});
4
+ opacity: ${c-u*t}`}}var Wi=q(`<span class="json-editor-label svelte-1w5oz74"> </span>`),Gi=q(`<div class="status-badge valid svelte-1w5oz74"><span class="status-dot svelte-1w5oz74"></span> Valid JSON</div>`),Ki=q(`<div class="status-badge invalid svelte-1w5oz74"><span class="status-dot svelte-1w5oz74"></span> Malformed JSON</div>`),qi=q(`<div class="error-msg-banner svelte-1w5oz74"> </div>`),Ji=q(`<div class="raw-editor-view svelte-1w5oz74"><textarea rows="5"></textarea> <div class="json-editor-status-bar svelte-1w5oz74"><!> <div class="status-actions"><button type="button" class="btn btn-secondary btn-sm"><svg viewBox="0 0 24 24" width="12" height="12" style="fill: currentColor; margin-right: 4px;"><path d="M4 6h16v2H4zm0 5h16v2H4zm0 5h16v2H4z"></path></svg> Format</button></div></div> <!></div>`),Yi=q(`<div class="error-visual-fallback card svelte-1w5oz74"><div class="card-body text-center"><svg viewBox="0 0 24 24" width="32" height="32" class="text-danger" style="margin-bottom: 12px; fill: currentColor;"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z"></path></svg> <h4>Cannot Parse Object</h4> <p class="text-muted" style="font-size: 12px; margin: 8px 0 16px;">The current text has formatting errors or is not a valid JSON object. Please fix it in the Raw JSON tab or reset to an empty object.</p> <button type="button" class="btn btn-primary btn-sm">Reset to Empty Object</button></div></div>`),Xi=q(`<div class="empty-rows-state svelte-1w5oz74">No custom key-value attributes defined. Click "Add Property" to build your JSON.</div>`),Zi=q(`<select class="form-input value-select svelte-1w5oz74"><option>False</option><option>True</option></select>`),Qi=q(`<div class="null-placeholder svelte-1w5oz74">null</div>`),$i=q(`<input type="number" class="form-input val-input svelte-1w5oz74"/>`),ea=q(`<textarea rows="1" class="form-input val-textarea code svelte-1w5oz74" placeholder="e.g. {&quot;nested&quot;: 1}"></textarea>`),ta=q(`<input type="text" placeholder="value" class="form-input val-input svelte-1w5oz74"/>`),na=q(`<div class="row-builder-item svelte-1w5oz74"><input type="text" placeholder="key" class="form-input key-input svelte-1w5oz74"/> <select class="form-input type-select svelte-1w5oz74"><option>String</option><option>Number</option><option>Boolean</option><option>Null</option><option>JSON / Object</option></select> <div class="value-input-wrapper svelte-1w5oz74"><!></div> <button type="button" class="btn btn-secondary btn-icon remove-row-btn svelte-1w5oz74" title="Remove Row"><svg viewBox="0 0 24 24" width="14" height="14" style="fill: currentColor;"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"></path></svg></button></div>`),ra=q(`<div class="rows-header-grid svelte-1w5oz74"><span class="header-col svelte-1w5oz74">Property Name</span> <span class="header-col svelte-1w5oz74">Type</span> <span class="header-col svelte-1w5oz74">Value</span> <span class="header-col action-col svelte-1w5oz74"></span></div> <div class="rows-list svelte-1w5oz74"></div>`,1),ia=q(`<div class="visual-rows-container svelte-1w5oz74"><!> <div class="visual-actions-footer svelte-1w5oz74"><button type="button" class="btn btn-secondary btn-sm"><svg viewBox="0 0 24 24" width="14" height="14" style="fill: currentColor; margin-right: 4px;"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></svg> Add Property</button></div></div>`),aa=q(`<div class="visual-editor-view svelte-1w5oz74"><!></div>`),oa=q(`<div class="json-editor-container svelte-1w5oz74"><div class="json-editor-header svelte-1w5oz74"><!> <div class="json-editor-tabs svelte-1w5oz74"><button type="button"><svg viewBox="0 0 24 24" class="tab-icon svelte-1w5oz74"><path d="M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0l4.6-4.6-4.6-4.6L16 6l6 6-6 6-1.4-1.4z"></path></svg> Raw JSON</button> <button type="button"><svg viewBox="0 0 24 24" class="tab-icon svelte-1w5oz74"><path d="M4 14h6v-4H4v4zm0 5h6v-4H4v4zM4 9h6V5H4v4zm10 5h6v-4h-6v4zm0 5h6v-4h-6v4zM14 5v4h6V5h-6z"></path></svg> Visual Builder</button></div></div> <div class="json-editor-content svelte-1w5oz74"><!></div></div>`);function sa(e,t){He(t,!1);let n=Mi(t,`value`,12,``),r=Mi(t,`placeholder`,8,`e.g. {"status": "active"}`),i=Mi(t,`label`,8,``),a=Mi(t,`required`,8,!1),o=R(`raw`),s=R(n()||``),c=R(!0),l=R(``),u=R([]);function d(){return Math.random().toString(36).substring(2,9)}function f(){if(!G(s).trim()){z(c,!0),z(l,``),z(u,[]);return}try{let e=JSON.parse(G(s));z(c,!0),z(l,``),e&&typeof e==`object`&&!Array.isArray(e)?z(u,Object.entries(e).map(([e,t])=>{let n=`string`,r=t;return t===null?(n=`null`,r=``):typeof t==`number`?n=`number`:typeof t==`boolean`?n=`boolean`:typeof t==`object`&&(n=`json`,r=JSON.stringify(t)),{id:d(),key:e,val:r,type:n}})):z(u,[])}catch(e){z(c,!1),z(l,e.message)}}function p(){n(G(s)),f()}function m(){if(G(s).trim())try{let e=JSON.parse(G(s));z(s,JSON.stringify(e,null,2)),n(G(s)),z(c,!0),z(l,``),f()}catch(e){z(c,!1),z(l,e.message)}}function h(){let e={};for(let t of G(u)){if(!t.key.trim())continue;let n;if(t.type===`number`)n=t.val===``?0:Number(t.val);else if(t.type===`boolean`)n=t.val===!0||t.val===`true`;else if(t.type===`null`)n=null;else if(t.type===`json`)try{n=JSON.parse(t.val)}catch{n=t.val}else n=t.val;e[t.key]=n}z(s,JSON.stringify(e,null,2)),n(G(s)),z(c,!0),z(l,``)}function g(){z(u,[...G(u),{id:d(),key:``,val:``,type:`string`}])}function _(e){z(u,G(u).filter(t=>t.id!==e)),h()}function v(){h()}function y(e,t){let n=t.target.value;e.type=n,n===`boolean`?e.val=!1:n===`null`?e.val=``:n===`number`?e.val=0:n===`json`?e.val=`{}`:e.val=``,h()}function b(e){z(o,e),e===`visual`&&f()}function x(){z(s,`{}`),n(`{}`),z(c,!0),z(l,``),z(u,[]),z(o,`visual`),f()}Ni(()=>{f()}),On(()=>(xr(n()),G(s)),()=>{n()!==G(s)&&(z(s,n()||``),f())}),kn(),Ai();var S=oa(),C=B(S),w=B(C),ee=e=>{var t=Wi(),n=B(t);j(t),H(()=>Y(n,`${i()??``} ${a()?`*`:``}`)),J(e,t)};X(w,e=>{i()&&e(ee)});var T=V(w,2),te=B(T),ne=V(te,2);j(T),j(C);var re=V(C,2),ie=B(re),ae=e=>{var t=Ji(),n=B(t);pn(n);var i=V(n,2),o=B(i),u=e=>{J(e,Gi())},d=e=>{var t=Ki();H(()=>wi(t,`title`,G(l))),J(e,t)};X(o,e=>{G(c)?e(u):e(d,-1)});var f=V(o,2),h=B(f);j(f),j(i);var g=V(i,2),_=e=>{var t=qi(),n=B(t,!0);j(t),H(()=>Y(n,G(l))),J(e,t)};X(g,e=>{!G(c)&&G(l)&&e(_)}),j(t),H(()=>{Z(n,1,`form-input code raw-textarea ${G(c)?``:`invalid-border`}`,`svelte-1w5oz74`),wi(n,`placeholder`,r()),n.required=a()}),$(n,()=>G(s),e=>z(s,e)),K(`input`,n,p),K(`click`,h,m),J(e,t)},oe=e=>{var t=aa(),n=B(t),r=e=>{var t=Yi(),n=B(t),r=V(B(n),6);j(n),j(t),K(`click`,r,x),J(e,t)},i=e=>{var t=ia(),n=B(t),r=e=>{J(e,Xi())},i=e=>{var t=ra(),n=V(cn(t),2);qr(n,5,()=>G(u),e=>e.id,(e,t,n)=>{var r=na(),i=B(r);Q(i);var a=V(i,2),o=B(a);o.value=o.__value=`string`;var s=V(o);s.value=s.__value=`number`;var c=V(s);c.value=c.__value=`boolean`;var l=V(c);l.value=l.__value=`null`;var d=V(l);d.value=d.__value=`json`,j(a);var f;vi(a);var p=V(a,2),m=B(p),h=e=>{var n=Zi(),r=B(n);r.value=r.__value=!1;var i=V(r);i.value=i.__value=!0,j(n),yi(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`change`,n,v),J(e,n)},g=e=>{J(e,Qi())},b=e=>{var n=$i();Q(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)},x=e=>{var n=ea();pn(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)},S=e=>{var n=ta();Q(n),$(n,()=>G(t).val,e=>(G(t).val=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,n,v),J(e,n)};X(m,e=>{G(t),br(()=>G(t).type===`boolean`)?e(h):(G(t),br(()=>G(t).type===`null`)?e(g,1):(G(t),br(()=>G(t).type===`number`)?e(b,2):(G(t),br(()=>G(t).type===`json`)?e(x,3):e(S,-1))))}),j(p);var C=V(p,2);j(r),H(()=>{f!==(f=(G(t),br(()=>G(t).type)))&&(a.value=(a.__value=(G(t),br(()=>G(t).type)))??``,_i(a,(G(t),br(()=>G(t).type))))}),$(i,()=>G(t).key,e=>(G(t).key=e,qn(()=>G(u)),qn(()=>{}))),K(`input`,i,v),K(`change`,a,e=>y(G(t),e)),K(`click`,C,()=>_(G(t).id)),J(e,r)}),j(n),J(e,t)};X(n,e=>{G(u),br(()=>G(u).length===0)?e(r):e(i,-1)});var a=V(n,2),o=B(a);j(a),j(t),K(`click`,o,g),J(e,t)};X(n,e=>{G(c)?e(i,-1):e(r)}),j(t),J(e,t)};X(ie,e=>{G(o)===`raw`?e(ae):e(oe,-1)}),j(re),j(S),H(()=>{Z(te,1,`json-tab-btn ${G(o)===`raw`?`active`:``}`,`svelte-1w5oz74`),Z(ne,1,`json-tab-btn ${G(o)===`visual`?`active`:``}`,`svelte-1w5oz74`)}),K(`click`,te,()=>b(`raw`)),K(`click`,ne,()=>b(`visual`)),J(e,S),Ue()}var ca=q(`<div class="modal-overlay active" style="z-index: 10000; background: rgba(5, 6, 12, 0.95);"><div class="modal-card" style="border-color: rgba(99, 102, 241, 0.3); box-shadow: 0 0 40px rgba(99, 102, 241, 0.25);"><div class="modal-header" style="justify-content: center; border-bottom: none; padding-top: 30px;"><span class="brand-logo" style="width: 44px; height: 44px; font-size: 18px;">tg</span></div> <div class="modal-body" style="padding-top: 10px;"><h2 class="text-center" style="font-size: 20px; font-weight: 700; margin-bottom: 8px;">thingd Security Shield</h2> <p class="text-muted text-center" style="font-size: 13.5px; margin-bottom: 24px;">This database instance is protected. Enter the authorization bearer token to gain access.</p> <form><div class="form-group"><label for="auth-key">Authorization Bearer Token *</label> <input type="password" id="auth-key" placeholder="Enter auth token..." class="form-input text-center" style="letter-spacing: 2px;" required=""/></div> <div class="modal-footer" style="justify-content: center; margin-top: 20px;"><button type="submit" class="btn btn-primary" style="width: 100%; height: 42px;">Unlock Dashboard</button></div></form></div></div></div>`),la=q(`<button class="btn btn-sm btn-secondary" style="width: 100%;">Lock Session</button>`),ua=q(`<div class="log-line"><span class="text-muted"> </span> <span> </span></div>`),da=q(`<div class="tab-panel active"><div class="metrics-grid"><div class="metric-card"><div class="metric-icon objects-icon"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 17h-2v-2h2v2zm2.07-7.75l-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H7c0-2.76 2.24-5 5-5s5 2.24 5 5c0 1.04-.42 1.99-1.07 2.75z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Total Memory Objects</span></div></div> <div class="metric-card"><div class="metric-icon events-icon"><svg viewBox="0 0 24 24"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Appended Events</span></div></div> <div class="metric-card"><div class="metric-icon queues-icon"><svg viewBox="0 0 24 24"><path d="M19 15v3H5v-3h14m2-2H3v7h18v-7zM19 5v3H5V5h14m2-2H3v7h18V3z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Active Queue Jobs</span></div></div> <div class="metric-card"><div class="metric-icon dead-icon"><svg viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"></path></svg></div> <div class="metric-body"><span class="metric-num"> </span> <span class="metric-title">Dead / Poison Jobs</span></div></div></div> <div class="row-flex"><div class="card glass flex-2"><div class="card-header"><h2>Memory Engine Overview</h2></div> <div class="card-body"><div class="info-table"><div class="info-row"><span class="info-label">Active Connection</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Storage Engine</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Database Disk Size</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Local Host Port</span> <span class="info-val">8758</span></div></div></div></div> <div class="card glass flex-1"><div class="card-header"><h2>Developer Console</h2></div> <div class="card-body terminal-panel"><div class="terminal-header"><span class="terminal-dot red"></span> <span class="terminal-dot yellow"></span> <span class="terminal-dot green"></span> <span class="terminal-title">quick diagnostics</span></div> <div class="terminal-body" style="max-height: 180px; overflow-y: auto;"></div></div></div></div></div>`),fa=q(`<div class="empty-state">No collections found.</div>`),pa=q(`<button><span class="item-name"> </span> <span class="item-count-badge">coll</span></button>`),ma=q(`<tr><td colspan="5" class="text-center text-muted">Please select a collection from the sidebar to inspect items.</td></tr>`),ha=q(`<tr><td colspan="5" class="text-center text-muted">This collection is currently empty.</td></tr>`),ga=q(`<tr><td class="code-cell font-weight-bold"> </td><td class="text-cell"> </td><td class="code-cell"> </td><td class="text-muted" style="font-size: 11px;"> </td><td><div class="btn-group gap-sm"><button class="btn btn-sm btn-secondary">Edit</button> <button class="btn btn-sm btn-danger">Delete</button></div></td></tr>`),_a=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header side-header"><h3>Collections</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header"><h3> </h3> <div class="header-actions"><button class="btn btn-primary">Add Memory Object</button></div></div> <div class="card-body flex-column scroll-y"><div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Object ID</th><th>Text Content</th><th>Custom Data</th><th>Created At</th><th>Actions</th></tr></thead><tbody><!></tbody></table></div></div></div></div></div>`),va=q(`<div class="empty-state">No event streams found.</div>`),ya=q(`<button><span class="item-name"> </span> <span class="item-count-badge">stream</span></button>`),ba=q(`<div class="timeline-empty">Please choose a stream from the sidebar.</div>`),xa=q(`<div class="timeline-empty">This stream has no logged events yet.</div>`),Sa=q(`<pre class="timeline-data scroll-x"> </pre>`),Ca=q(`<div><div class="timeline-marker"></div> <div class="timeline-card"><div class="timeline-header"><div class="timeline-title"><span class="timeline-badge"> </span> <span class="text-dark font-weight-bold" style="font-size: 11px;"> </span></div> <span class="timeline-time"> </span></div> <div class="timeline-text"> </div> <!></div></div>`),wa=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header"><h3>Event Streams</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header"><h3> </h3> <div class="header-actions"><button class="btn btn-primary">Append Event</button></div></div> <div class="card-body scroll-y timeline-viewport"><div class="timeline"><!></div></div></div></div></div>`),Ta=q(`<div class="empty-state">No active queues found.</div>`),Ea=q(`<button><span class="item-name"> </span> <span class="item-count-badge">queue</span></button>`),Da=q(`<div class="queue-stats-bar"><span class="badge badge-ready"> </span> <span class="badge badge-leased"> </span> <span class="badge badge-dead"> </span></div>`),Oa=q(`<tr><td colspan="7" class="text-center text-muted">No queue selected.</td></tr>`),ka=q(`<tr><td colspan="7" class="text-center text-muted">No active jobs in this queue.</td></tr>`),Aa=q(`<tr><td class="code-cell font-weight-bold"> </td><td><span> </span></td><td class="text-center"> </td><td class="text-center"> </td><td class="code-cell"> </td><td class="text-muted" style="font-size: 11px;"> </td><td><button class="btn btn-sm btn-secondary">Inspect Ops</button></td></tr>`),ja=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Job ID</th><th>Status</th><th>Attempts</th><th>Max Attempts</th><th>Payload</th><th>Available At</th><th>Actions</th></tr></thead><tbody><!></tbody></table></div>`),Ma=q(`<tr><td colspan="6" class="text-center text-muted">No queue selected.</td></tr>`),Na=q(`<tr><td colspan="6" class="text-center text-muted">No poison or dead jobs reported.</td></tr>`),Pa=q(`<tr><td class="code-cell font-weight-bold"> </td><td class="text-center"> </td><td class="text-center"> </td><td class="text-muted" style="font-size: 11px;"> </td><td class="text-danger"> </td><td class="code-cell"> </td></tr>`),Fa=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Job ID</th><th>Attempts</th><th>Max Attempts</th><th>Dead At</th><th>Last Error</th><th>Payload</th></tr></thead><tbody><!></tbody></table></div>`),Ia=q(`<div class="tab-panel active"><div class="split-layout"><div class="list-side panel-sidebar card glass"><div class="card-header"><h3>Queues</h3></div> <div class="card-body scroll-y"><!></div></div> <div class="inspect-side panel-main card glass"><div class="card-header flex-header flex-column-mobile"><div class="header-details"><h3> </h3> <!></div> <div class="header-actions gap-sm"><button class="btn btn-secondary">Push Job</button> <button class="btn btn-secondary">Claim Next</button></div></div> <div class="card-body flex-column scroll-y"><div class="tabs-subnav"><button> </button> <button> </button></div> <!></div></div></div></div>`),La=q(`<tr><td colspan="5" class="text-center text-muted">Enter a search query above and click 'Run Search' to inspect FTS5 matching.</td></tr>`),Ra=q(`<tr><td><span class="badge badge-leased"> </span></td><td class="code-cell font-weight-bold"> </td><td style="font-size: 13px;"></td><td class="code-cell"> </td><td class="font-weight-bold text-success"> </td></tr>`),za=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header"><h2>Stemming Search Tester (FTS5 Engine)</h2></div> <div class="card-body flex-column scroll-y"><div class="search-form-grid"><div class="form-group flex-3"><label for="search-query">Stemmed Search Query</label> <div class="search-input-group"><input type="text" id="search-query" placeholder="e.g. agent memory, scheduler OR heartbeat..." class="form-input search-input"/> <button class="btn btn-primary">Run Search</button></div></div> <div class="form-group flex-1"><label for="search-limit">Limit</label> <input type="number" id="search-limit" class="form-input" min="1"/></div></div> <div class="row-flex gap-lg"><div class="form-group flex-1"><label for="search-cols">Filter Collections (optional comma list)</label> <input type="text" id="search-cols" placeholder="e.g. system, schedules" class="form-input"/></div> <div class="form-group flex-1"><label for="search-meta">Metadata Filter JSON (optional)</label> <input type="text" id="search-meta" placeholder="e.g. {&quot;status&quot;:&quot;active&quot;}" class="form-input"/></div></div> <div class="search-results-section"><h4 class="section-title"> </h4> <div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Collection</th><th>Object ID</th><th>Stemmed / Highlighted Text Match</th><th>Custom Metadata</th><th>Score</th></tr></thead><tbody><!></tbody></table></div></div></div></div></div>`),Ba=q(`<div class="card glass" style="margin: 12px 0; padding: 16px;"><h4 style="margin: 0 0 12px 0;">LLM Configuration</h4> <div class="row-flex gap-lg"><div class="form-group flex-1"><label for="nlq-model">Model</label> <input type="text" id="nlq-model" placeholder="llama3" class="form-input"/></div> <div class="form-group flex-2"><label for="nlq-endpoint">Endpoint</label> <input type="text" id="nlq-endpoint" placeholder="http://localhost:11434/v1" class="form-input"/></div> <div class="form-group flex-1"><label for="nlq-apikey">API Key (optional)</label> <input type="password" id="nlq-apikey" placeholder="sk-..." class="form-input"/></div></div> <button class="btn btn-sm btn-primary" style="margin-top: 8px;">Save Settings</button></div>`),Va=q(`<span class="badge badge-queued" style="margin: 2px;"> <span class="text-muted"> </span></span>`),Ha=q(`<div style="margin-bottom: 12px;"><strong style="color: var(--color-primary);"> </strong> <span class="text-muted" style="margin-left: 8px;"> </span> <div style="margin-top: 4px; font-size: 12px;"></div></div>`),Ua=q(`<div class="card glass" style="margin: 12px 0; padding: 16px;"><h4 style="margin: 0 0 12px 0;">Schema</h4> <!></div>`),Wa=q(`<p class="text-muted" style="margin: 12px 0;">Click "Show Schema" to load schema.</p>`),Ga=q(`<div class="search-results-section"><p class="text-muted">Querying LLM and executing...</p></div>`),Ka=q(`<th>Group</th> <th>Value</th>`,1),qa=q(`<td colspan="2"></td>`),Ja=q(`<tr><td></td><td><span class="badge badge-leased"> </span></td><td class="font-weight-bold"> </td></tr>`),Ya=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Total</th><!></tr></thead><tbody><tr><td class="font-weight-bold text-success"> </td><!></tr><!></tbody></table></div>`),Xa=q(`<tr><td> </td><td class="font-weight-bold"> </td></tr>`),Za=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Bucket</th><th>Value</th></tr></thead><tbody></tbody></table></div>`),Qa=q(`<tr><td><span class="badge badge-leased"> </span></td><td class="code-cell"> </td><td class="font-weight-bold text-success"> </td></tr>`),$a=q(`<div class="scroll-table-wrapper"><table class="data-table"><thead><tr><th>Collection</th><th>ID</th><th>Score</th></tr></thead><tbody></tbody></table></div>`),eo=q(`<div class="search-results-section"><div class="card glass" style="margin-bottom: 12px; padding: 16px;"><h4 style="margin: 0 0 4px 0;">Answer</h4> <p style="font-size: 16px;"> </p></div> <!> <details style="margin-top: 12px;"><summary style="cursor: pointer; color: var(--text-muted); font-size: 12px;">Raw JSON</summary> <pre class="code-block" style="margin-top: 8px;"> </pre></details></div>`),to=q(`<div class="search-results-section"><p class="text-muted">Ask a question above to query your data using natural language.</p></div>`),no=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header" style="display: flex; justify-content: space-between; align-items: center;"><h2>Natural Language Query</h2> <div style="display: flex; gap: 8px;"><button class="btn btn-sm btn-secondary"> </button> <button class="btn btn-sm btn-secondary">⚙️ Settings</button></div></div> <div class="card-body flex-column scroll-y"><div class="search-form-grid"><div class="form-group flex-3"><label for="nlq-question">Ask a question about your data</label> <div class="search-input-group"><input type="text" id="nlq-question" placeholder="e.g. total revenue by region, most recent events, count of all objects..." class="form-input search-input"/> <button class="btn btn-primary"> </button></div></div> <div class="form-group flex-1"><label for="nlq-collection">Collection (optional)</label> <input type="text" id="nlq-collection" placeholder="e.g. orders" class="form-input"/></div></div> <!> <!> <!></div></div></div>`),ro=q(`<span> </span>`),io=q(`<div class="tab-panel active"><div class="card glass fill-height flex-column"><div class="card-header"><h2>Database Health</h2></div> <div class="card-body scroll-y"><div class="metrics-grid"><div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">Integrity Check</div> <div class="metric-detail"> </div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Run Check</button></div> <div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">WAL Mode</div> <div class="metric-detail"> </div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Run Checkpoint</button></div> <div class="metric-card glass"><div class="metric-value"> </div> <div class="metric-label">Last Backup</div> <div class="metric-detail"><!></div> <button class="btn btn-sm btn-secondary" style="margin-top: 8px;">Create Backup</button></div></div></div></div></div>`),ao=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3> </h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="obj-id">Object ID *</label> <input type="text" id="obj-id" placeholder="e.g. config-123" class="form-input" required=""/></div> <div class="form-group"><label for="obj-text">Text Content (indexed for stemming search)</label> <textarea id="obj-text" placeholder="Enter text..." class="form-input" rows="4"></textarea></div> <div class="form-group"><!></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Save Object</button></div></form></div></div></div>`),oo=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Append Memory Event</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="ev-stream">Stream Name *</label> <input type="text" id="ev-stream" placeholder="e.g. logs" class="form-input" required=""/></div> <div class="form-group"><label for="ev-type">Event Type *</label> <input type="text" id="ev-type" placeholder="e.g. decision" class="form-input" required=""/></div> <div class="form-group"><label for="ev-text">Event Text</label> <input type="text" id="ev-text" placeholder="Enter message..." class="form-input"/></div> <div class="form-group"><!></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Append Event</button></div></form></div></div></div>`),so=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Push Job onto Queue</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><!></div> <div class="row-flex gap-md"><div class="form-group flex-1"><label for="job-delay">Delay (ms)</label> <input type="number" id="job-delay" placeholder="0" class="form-input" min="0"/></div> <div class="form-group flex-1"><label for="job-attempts">Max Attempts</label> <input type="number" id="job-attempts" class="form-input" min="1"/></div></div> <div class="form-group"><label for="job-idempotency">Idempotency Key (optional)</label> <input type="text" id="job-idempotency" placeholder="e.g. lock-1" class="form-input"/></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Push Job</button></div></form></div></div></div>`),co=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Claim Next Queue Job</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="claim-lease">Lease Duration (ms)</label> <input type="number" id="claim-lease" placeholder="60000" class="form-input" min="1000"/> <span class="input-tip">Lock period in ms.</span></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Claim Job</button></div></form></div></div></div>`),lo=q(`<div class="modal-overlay active"><div class="modal-card"><div class="modal-header"><h3>Connection Settings</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body"><form><div class="form-group"><label for="conn-drv">Storage Driver *</label> <select id="conn-drv" class="form-input" style="background: rgba(0, 0, 0, 0.4);"><option>In-Memory Store</option><option>Native SQLite (FTS5)</option><option>Cloud Endpoint</option></select></div> <div class="form-group"><label for="conn-pth">Database Path / Endpoint URL *</label> <input type="text" id="conn-pth" placeholder="e.g. :memory: or database.db" class="form-input" required=""/></div> <div class="form-group"><label for="conn-tok">Bearer Security Token (optional)</label> <input type="password" id="conn-tok" placeholder="Security authorization key..." class="form-input"/></div> <div class="modal-footer"><button type="button" class="btn btn-secondary">Cancel</button> <button type="submit" class="btn btn-primary">Connect</button></div></form></div></div></div>`),uo=q(`<form class="nack-details-form form-group mt-md"><div class="form-group"><label for="nack-err">Error Message (optional)</label> <input type="text" id="nack-err" placeholder="e.g. failure..." class="form-input"/></div> <div class="form-group"><label for="nack-del">Retry Delay (ms)</label> <input type="number" id="nack-del" class="form-input"/></div> <button type="submit" class="btn btn-primary">Submit Nack</button></form>`),fo=q(`<div class="ops-controls"><h4 class="ops-section-title">Ack / Nack Supervisor (Resolve Job)</h4> <div class="btn-group gap-md" style="display: flex;"><button class="btn btn-success flex-1">Acknowledge Job (Ack)</button> <button class="btn btn-warning flex-1">Reject / Fail Job (Nack)</button></div> <!></div>`),po=q(`<div class="modal-overlay active"><div class="modal-card wide"><div class="modal-header"><h3>Queue Job Operations</h3> <button class="modal-close-btn">&times;</button></div> <div class="modal-body flex-column"><div class="job-detail-card"><div class="info-row"><span class="info-label">Job ID</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Queue</span> <span class="info-val code"> </span></div> <div class="info-row"><span class="info-label">Status</span> <span class="info-val"> </span></div> <div class="info-row"><span class="info-label">Attempts</span> <span class="info-val"> </span></div> <div class="info-group"><label for="payload-ops-view">Payload JSON</label> <pre id="payload-ops-view" class="code-view block scroll-x"> </pre></div></div> <!></div></div></div>`),mo=q(`<div><div class="toast-message"> </div></div>`),ho=q(`<!> <div class="app-container"><aside class="sidebar"><div class="sidebar-brand"><span class="brand-logo">tg</span> <span class="brand-text">thingd<span class="version-badge"> </span></span></div> <nav class="sidebar-nav"><button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zM9 17H7v-7h2v7zm4 0h-2V7h2v10zm4 0h-2v-4h2v4z"></path></svg> Dashboard Status</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M4 6H2v14c0 1.1.9 2 2 2h14v-2H4V6zm16-4H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0-2-.9-2-2V4c0-1.1-.9-2-2-2zm0 14H8V4h12v12z"></path></svg> Collections & Objects</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M13 3c-4.97 0-9 4.03-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42C8.27 19.99 10.51 21 13 21c4.97 0 9-4.03 9-9s-4.03-9-9-9zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"></path></svg> Event Log Stream</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M19 15v3H5v-3h14m2-2H3v7h18v-7zM19 5v3H5V5h14m2-2H3v7h18V3z"></path></svg> Queues & Background Jobs</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></svg> Stemming FTS5 Tester</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M20 2H4c-1.1 0-2 .9-2 2v18l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm0 14H5.17L4 17.17V4h16v12z"></path></svg> NLQ Query</button> <button><svg class="nav-icon" viewBox="0 0 24 24"><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"></path></svg> Database Health</button></nav> <div class="sidebar-footer" style="display: flex; flex-direction: column; gap: 10px;"><div class="status-indicator"><span class="pulse-dot"></span> <span class="status-text"> </span></div> <!></div></aside> <main class="main-panel"><header class="topbar"><div class="topbar-left"><h1><!> <!> <!> <!> <!> <!> <!></h1></div> <div class="topbar-right"><div class="connection-meta"><span class="meta-label">Driver:</span> <span class="meta-val"> </span> <span class="meta-sep">|</span> <span class="meta-label">Path:</span> <span class="meta-val path-val"> </span> <span class="meta-sep">|</span> <span class="meta-label">Size:</span> <span class="meta-val"> </span></div> <button class="btn btn-secondary btn-icon"><svg viewBox="0 0 24 24" width="16" height="16" style="fill: currentColor;"><path d="M19.14,12.94c0.04-0.3,0.06-0.61,0.06-0.94c0-0.32-0.02-0.64-0.07-0.94l2.03-1.58c0.18-0.14,0.23-0.41,0.12-0.61l-1.92-3.32c-0.12-0.22-0.37-0.29-0.59-0.22l-2.39,0.96c-0.5-0.38-1.03-0.7-1.62-0.94L14.4,2.81c-0.04-0.24-0.24-0.41-0.48-0.41h-3.84c-0.24,0-0.43,0.17-0.47,0.41L9.25,5.35C8.66,5.59,8.12,5.92,7.63,6.29L5.24,5.33c-0.22-0.08-0.47,0-0.59,0.22L2.74,8.87c-0.12,0.21-0.08,0.47,0.12,0.61l2.03,1.58C4.84,11.36,4.8,11.69,4.8,12c0,0.31,0.04,0.64,0.09,0.94l-2.03,1.58c-0.18,0.14-0.23,0.41-0.12,0.61l1.92,3.32c0.12,0.22,0.37,0.29,0.59,0.22l2.39-0.96c0.5,0.38,1.03,0.7,1.62,0.94l0.36,2.54c0.05,0.24,0.24,0.41,0.48,0.41h3.84c0.24,0,0.44-0.17,0.47-0.41l0.36-2.54c0.59-0.24,1.13-0.56,1.62-0.94l2.39,0.96c0.22,0.08,0.47,0,0.59-0.22l1.92-3.32c0.12-0.22,0.07-0.47-0.12-0.61L19.14,12.94z M12,15.6c-1.98,0-3.6-1.62-3.6-3.6c0-1.98,1.62-3.6,3.6-3.6s3.6,1.62,3.6,3.6C15.6,13.98,13.98,15.6,12,15.6z"></path></svg> Settings</button> <button class="btn btn-secondary btn-icon"><svg viewBox="0 0 24 24" width="16" height="16" style="fill: currentColor;"><path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"></path></svg> Refresh</button></div></header> <div class="view-viewport"><!> <!> <!> <!> <!> <!> <!></div></main></div> <!> <!> <!> <!> <!> <!> <div class="toast-container" id="toast-container"></div>`,1);function go(e,t){He(t,!1);let n=R(`metrics`),r=R(`Connecting...`),i=R(`-`),a=R(`-`),o=R(`N/A`),s=R({objects:0,events:0,activeJobs:0,deadJobs:0}),c=R({integrityOk:!1,integrityMessage:`Not checked`,walMode:`-`,walFrames:0,backupPath:``,backupSize:0}),l=R(``),u=R([{time:new Date().toLocaleTimeString(),text:`Svelte Dashboard loaded successfully.`,type:`muted`},{time:new Date().toLocaleTimeString(),text:`Establishing database connections...`,type:`info`}]),d=R(localStorage.getItem(`thingd_auth_token`)||``),f=R(!1),p=R(``),m=R([]),h=R(null),g=R([]),_=R([]),v=R(null),y=R([]),b=R([]),x=R(null),S=R({queue:``,totalActive:0,ready:0,leased:0,dead:0}),C=R([]),w=R([]),ee=R(`active`),T=R(null),te=R(``),ne=R(20),re=R(``),ie=R(``),ae=R([]),oe=R(``),se=R(``),E=R(null),ce=R(!1),le=R(null),ue=R(!1),de=R(localStorage.getItem(`thingd_nlq_model`)||`llama3`),fe=R(localStorage.getItem(`thingd_nlq_endpoint`)||`http://localhost:11434/v1`),pe=R(localStorage.getItem(`thingd_nlq_api_key`)||``),me=R(!1),he=R(new Set);function ge(e){G(he).add(e),z(he,G(he)),setTimeout(()=>{G(he).delete(e),z(he,G(he))},1500)}let _e=R(!1),ve=R(!1),ye=R(!1),be=R(!1),xe=R(!1),Se=R(!1),Ce=R(!1),we=R(!1),Te=R(``),Ee=R(``),D=R(``),De=R(``),Oe=R(``),ke=R(``),Ae=R(``),je=R(``),Me=R(0),Ne=R(5),O=R(``),Pe=R(6e4),k=R(``),A=R(0),Fe=R(`memory`),Ie=R(`:memory:`),Le=R(``),Re=R([]);function N(e,t=`info`){let n=Date.now()+Math.random();z(Re,[...G(Re),{id:n,message:e,type:t}]),setTimeout(()=>{z(Re,G(Re).filter(e=>e.id!==n))},4e3)}function ze(e,t=``){let n=new Date().toLocaleTimeString();z(u,[...G(u),{time:n,text:e,type:t}]),G(u).length>50&&z(u,G(u).slice(-50))}function Be(e){return e?e.toString().replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#039;`):``}async function P(e,t={}){let n={"Content-Type":`application/json`};G(d)&&(n.Authorization=`Bearer ${G(d)}`);try{let r=await fetch(e,{headers:n,...t});if(r.status===401)throw z(f,!0),N(`Authentication token required.`,`warning`),Error(`Unauthorized`);let i=r.headers.get(`content-type`)?.includes(`application/json`)?await r.json():await r.text();if(!r.ok)throw Error(i?.error||`HTTP ${r.status}: ${r.statusText}`);return i}catch(t){throw console.error(`API Error on ${e}:`,t),t}}async function F(){try{let e=await P(`/api/status`);z(r,`Active (Localhost)`),z(i,e.driver===`memory`?`In-Memory Store`:e.driver===`native`?`Native SQLite (FTS5)`:`Cloud Endpoint`),z(a,e.path),z(o,e.metrics.dbSize||`N/A`),z(s,e.metrics),z(l,e.version||``),z(f,!1)}catch(e){e.message!==`Unauthorized`&&(z(r,`Disconnected`),z(i,`Disconnected`),z(a,`-`),z(o,`N/A`),ze(`Status synchronization failed: ${e.message}`,`danger`))}}function Ve(e){if(e.preventDefault(),!G(p).trim()){N(`Token is required.`,`warning`);return}z(d,G(p).trim()),localStorage.setItem(`thingd_auth_token`,G(d)),z(f,!1),N(`Token registered successfully.`,`success`),ze(`Custom security authorization key set.`),Ge()}function We(){z(d,``),localStorage.removeItem(`thingd_auth_token`),z(f,!0),N(`Secure session logged out.`,`info`)}function Ge(){F(),G(n)===`collections`&&qe(),G(n)===`events`&&$e(),G(n)===`queues`&&it()}function Ke(e){z(n,e),e===`collections`?qe():e===`events`?$e():e===`queues`&&it()}async function qe(){try{z(m,await P(`/api/collections`))}catch(e){e.message!==`Unauthorized`&&N(`Failed to fetch collections: ${e.message}`,`error`)}}async function Je(e){z(h,e),Ye()}async function Ye(){if(G(h))try{z(g,await P(`/api/objects?collection=${encodeURIComponent(G(h))}`))}catch(e){e.message!==`Unauthorized`&&N(`Failed to load objects: ${e.message}`,`error`)}}function Xe(){z(Ce,!1),z(Te,``),z(Ee,``),z(D,``),z(_e,!0)}function Ze(e){z(Ce,!0),z(Te,e.id),z(Ee,e.text||``);let t={...e};delete t.id,delete t.text,delete t.collection,delete t.createdAt,delete t.updatedAt,delete t.version,z(D,Object.keys(t).length>0?JSON.stringify(t,null,2):``),z(_e,!0)}async function I(e){e.preventDefault();let t={};if(G(D).trim())try{t=JSON.parse(G(D))}catch{N(`Custom data must be valid JSON.`,`error`);return}try{await P(`/api/objects`,{method:`POST`,body:JSON.stringify({collection:G(h),id:G(Te),text:G(Ee),data:t})}),N(`Object "${G(Te)}" saved successfully.`,`success`),ze(`Saved object "${G(Te)}" in collection "${G(h)}".`),z(_e,!1),ge(G(Te)),Ye(),F()}catch(e){N(`Save failed: ${e.message}`,`error`)}}async function Qe(e){if(confirm(`Are you sure you want to delete object "${e}"?`))try{await P(`/api/objects?collection=${encodeURIComponent(G(h))}&id=${encodeURIComponent(e)}`,{method:`DELETE`}),N(`Object "${e}" deleted.`,`success`),ze(`Deleted object "${e}" from collection "${G(h)}".`,`warning`),Ye(),F()}catch(e){N(`Deletion failed: ${e.message}`,`error`)}}async function $e(){try{z(_,await P(`/api/events/streams`))}catch(e){e.message!==`Unauthorized`&&N(`Failed to fetch event streams: ${e.message}`,`error`)}}function et(e){z(v,e),tt()}async function tt(){if(G(v))try{z(y,await P(`/api/events?stream=${encodeURIComponent(G(v))}`))}catch(e){e.message!==`Unauthorized`&&N(`Failed to load event timeline: ${e.message}`,`error`)}}function nt(){z(De,G(v)||``),z(Oe,``),z(ke,``),z(Ae,``),z(ve,!0)}async function rt(e){e.preventDefault();let t={};if(G(Ae).trim())try{t=JSON.parse(G(Ae))}catch{N(`Event payload must be valid JSON.`,`error`);return}try{await P(`/api/events`,{method:`POST`,body:JSON.stringify({stream:G(De),type:G(Oe),text:G(ke),data:t})}),N(`Event logged successfully.`,`success`),ze(`Appended event [${G(Oe)}] to stream "${G(De)}".`),z(ve,!1),ge(G(De)),$e(),G(v)===G(De)?tt():et(G(De)),F()}catch(e){N(`Failed to append event: ${e.message}`,`error`)}}async function it(){try{z(b,await P(`/api/queues`))}catch(e){e.message!==`Unauthorized`&&N(`Failed to fetch queues: ${e.message}`,`error`)}}async function at(e){z(x,e),ot(),st()}async function ot(){if(G(x))try{z(S,await P(`/api/queues/stats?queue=${encodeURIComponent(G(x))}`))}catch(e){console.error(e)}}async function st(){if(G(x))try{let[e,t]=await Promise.all([P(`/api/queues/jobs?queue=${encodeURIComponent(G(x))}&status=active`),P(`/api/queues/jobs?queue=${encodeURIComponent(G(x))}&status=dead`)]);z(C,e),z(w,t)}catch(e){e.message!==`Unauthorized`&&N(`Failed to load jobs list: ${e.message}`,`error`)}}function ct(){z(je,``),z(Me,0),z(Ne,5),z(O,``),z(ye,!0)}async function lt(e){e.preventDefault();let t={};try{t=JSON.parse(G(je))}catch{N(`Payload must be valid JSON object.`,`error`);return}try{let e=await P(`/api/queues/push`,{method:`POST`,body:JSON.stringify({queue:G(x),payload:t,delayMs:G(Me),maxAttempts:G(Ne),idempotencyKey:G(O)||void 0})});N(`Job "${e.id}" pushed onto queue.`,`success`),ze(`Pushed job ID "${e.id}" onto queue "${G(x)}".`),z(ye,!1),ge(e.id),ot(),st(),F()}catch(e){N(`Failed to push job: ${e.message}`,`error`)}}function ut(){z(Pe,6e4),z(be,!0)}async function dt(e){e.preventDefault();try{let e=await P(`/api/queues/claim`,{method:`POST`,body:JSON.stringify({queue:G(x),leaseMs:G(Pe)})});if(!e){N(`No ready jobs available in queue.`,`warning`),ze(`No ready jobs available in queue "${G(x)}".`,`warning`),z(be,!1);return}N(`Claimed job ID: "${e.id}"`,`success`),ze(`Claimed job ID "${e.id}" from queue "${G(x)}".`,`success`),z(be,!1),ot(),st(),F(),ft(e)}catch(e){N(`Claim failed: ${e.message}`,`error`)}}function ft(e){z(T,e),z(we,!1),z(k,``),z(A,0),z(xe,!0)}async function pt(){if(!G(T))return;let e=G(T).id;try{await P(`/api/queues/ack`,{method:`POST`,body:JSON.stringify({queue:G(x),jobId:e})}),N(`Job "${e}" acknowledged (ACK).`,`success`),ze(`Acknowledged (ACK) job "${e}" from queue "${G(x)}".`,`success`),z(xe,!1),ot(),st(),F()}catch(e){N(`ACK failed: ${e.message}`,`error`)}}async function ht(e){if(e.preventDefault(),!G(T))return;let t=G(T).id;try{await P(`/api/queues/nack`,{method:`POST`,body:JSON.stringify({queue:G(x),jobId:t,error:G(k)||void 0,delayMs:G(A)})}),N(`Job "${t}" rejected (NACK).`,`warning`),ze(`Rejected (NACK) job "${t}" from queue "${G(x)}".`,`warning`),z(xe,!1),ot(),st(),F()}catch(e){N(`NACK failed: ${e.message}`,`error`)}}async function gt(){let e=G(te).trim();if(!e){N(`Search query is required.`,`warning`);return}z(ae,[]);let t=`/api/search?query=${encodeURIComponent(e)}&limit=${G(ne)}`;if(G(re).trim()&&(t+=`&collections=${encodeURIComponent(G(re))}`),G(ie).trim())try{JSON.parse(G(ie)),t+=`&filter=${encodeURIComponent(G(ie))}`}catch{N(`Metadata filter must be a valid JSON.`,`error`);return}try{z(ae,await P(t))}catch(e){e.message!==`Unauthorized`&&N(`Search failed: ${e.message}`,`error`)}}async function _t(){let e=G(oe).trim();if(!e){N(`Please enter a question.`,`warning`);return}z(ce,!0),z(E,null),yt();try{let t=await fetch(`/api/nlq`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({question:e,collection:G(se)||void 0,model:G(de),endpoint:G(fe),apiKey:G(pe)})}),n=await t.json();if(!t.ok){N(n.error||`NLQ request failed`,`error`);return}z(E,n)}catch(e){N(`NLQ failed: ${e.message}`,`error`)}finally{z(ce,!1)}}async function vt(){try{let e=G(se)?`/api/schema?collection=${encodeURIComponent(G(se))}`:`/api/schema`;z(le,await P(e))}catch(e){N(`Schema fetch failed: ${e.message}`,`error`)}}function yt(){localStorage.setItem(`thingd_nlq_model`,G(de)),localStorage.setItem(`thingd_nlq_endpoint`,G(fe)),localStorage.setItem(`thingd_nlq_api_key`,G(pe))}function bt(e){return typeof e==`number`?e.toLocaleString():String(e??``)}function xt(e,t){if(!e)return`-`;let n=Be(e);try{t.replace(/[^\w\s]/g,``).split(/\s+/).filter(e=>e.length>2).forEach(e=>{let t=RegExp(`(${e})`,`gi`);n=n.replace(t,`<span class="highlighted-match">$1</span>`)})}catch{}return n}async function L(){try{let e=await P(`/api/db/integrity`);z(c,{...G(c),integrityOk:e.ok,integrityMessage:e.message}),N(e.ok?`Integrity check passed`:`Integrity check failed: ${e.message}`,e.ok?`success`:`error`)}catch(e){N(`Integrity check failed: ${e.message}`,`error`)}}async function St(){try{let e=await P(`/api/db/checkpoint`);z(c,{...G(c),walFrames:e.framesAfter||0}),N(`WAL checkpoint complete (${e.framesBefore||0} frames before)`,`success`)}catch(e){N(`WAL checkpoint failed: ${e.message}`,`error`)}}async function Ct(){let e=prompt(`Enter backup file path:`,`thingd-backup-${Date.now()}.db`);if(e)try{let t=await P(`/api/backup`,{method:`POST`,body:JSON.stringify({path:e})});z(c,{...G(c),backupPath:t.path,backupSize:t.sizeBytes}),N(`Backup created: ${t.path}`,`success`)}catch(e){N(`Backup failed: ${e.message}`,`error`)}}function wt(){z(Fe,G(i).includes(`In-Memory`)?`memory`:G(i).includes(`FTS5`)?`native`:`cloud`),z(Ie,G(a)),z(Le,G(d)),z(Se,!0)}async function Tt(e){e.preventDefault();try{await P(`/api/connect`,{method:`POST`,body:JSON.stringify({path:G(Ie),driver:G(Fe),authToken:G(Le)||void 0})}),z(d,G(Le)),G(d)?localStorage.setItem(`thingd_auth_token`,G(d)):localStorage.removeItem(`thingd_auth_token`),N(`Database connection swapped successfully.`,`success`),ze(`Swapped database connection to: [${G(Fe)}] ${G(Ie)}`),z(Se,!1),z(h,null),z(v,null),z(x,null),Ge()}catch(e){N(`Connection failed: ${e.message}`,`error`)}}let Et=null,Dt=null;Ni(()=>{F(),ze(`DB Connection resolved: Active local SQLite stemming context.`,`success`),Et=setInterval(F,4e3),Dt=setInterval(()=>{G(n)===`events`&&G(v)&&tt(),G(n)===`queues`&&G(x)&&(ot(),st())},3e3)}),Pi(()=>{Et&&clearInterval(Et),Dt&&clearInterval(Dt)}),Ai();var Ot=ho(),kt=cn(Ot),At=e=>{var t=ca(),n=B(t),r=V(B(n),2),i=V(B(r),4),a=B(i),o=V(B(a),2);Q(o),j(a),M(2),j(i),j(r),j(n),j(t),$(o,()=>G(p),e=>z(p,e)),K(`submit`,i,Ve),J(e,t)};X(kt,e=>{G(f)&&e(At)});var jt=V(kt,2),Mt=B(jt),Nt=B(Mt),Pt=V(B(Nt),2),Ft=V(B(Pt)),It=B(Ft,!0);j(Ft),j(Pt),j(Nt);var Lt=V(Nt,2),Rt=B(Lt),zt=V(Rt,2),Bt=V(zt,2),Vt=V(Bt,2),Ht=V(Vt,2),Ut=V(Ht,2),Wt=V(Ut,2);j(Lt);var Gt=V(Lt,2),Kt=B(Gt),qt=V(B(Kt),2),Jt=B(qt,!0);j(qt),j(Kt);var Yt=V(Kt,2),Xt=e=>{var t=la();K(`click`,t,We),J(e,t)};X(Yt,e=>{G(d)&&e(Xt)}),j(Gt),j(Mt);var Zt=V(Mt,2),Qt=B(Zt),$t=B(Qt),en=B($t),tn=B(en),nn=e=>{J(e,Fr(`Dashboard Status`))};X(tn,e=>{G(n)===`metrics`&&e(nn)});var rn=V(tn,2),an=e=>{J(e,Fr(`Collections & Objects`))};X(rn,e=>{G(n)===`collections`&&e(an)});var on=V(rn,2),sn=e=>{J(e,Fr(`Event Log Stream`))};X(on,e=>{G(n)===`events`&&e(sn)});var ln=V(on,2),un=e=>{J(e,Fr(`Queues & Background Jobs`))};X(ln,e=>{G(n)===`queues`&&e(un)});var dn=V(ln,2),fn=e=>{J(e,Fr(`Stemming FTS5 Tester`))};X(dn,e=>{G(n)===`search`&&e(fn)});var mn=V(dn,2),hn=e=>{J(e,Fr(`NLQ Query`))};X(mn,e=>{G(n)===`nlq`&&e(hn)});var gn=V(mn,2),_n=e=>{J(e,Fr(`Database Health`))};X(gn,e=>{G(n)===`health`&&e(_n)}),j(en),j($t);var vn=V($t,2),yn=B(vn),bn=V(B(yn),2),xn=B(bn,!0);j(bn);var Sn=V(bn,6),Cn=B(Sn,!0);j(Sn);var wn=V(Sn,6),Tn=B(wn,!0);j(wn),j(yn);var En=V(yn,2),Dn=V(En,2);j(vn),j(Qt);var On=V(Qt,2),kn=B(On),An=e=>{var t=da(),n=B(t),r=B(n),c=V(B(r),2),l=B(c),d=B(l,!0);j(l),M(2),j(c),j(r);var f=V(r,2),p=V(B(f),2),m=B(p),h=B(m,!0);j(m),M(2),j(p),j(f);var g=V(f,2),_=V(B(g),2),v=B(_),y=B(v,!0);j(v),M(2),j(_),j(g);var b=V(g,2),x=V(B(b),2),S=B(x),C=B(S,!0);j(S),M(2),j(x),j(b),j(n);var w=V(n,2),ee=B(w),T=V(B(ee),2),te=B(T),ne=B(te),re=V(B(ne),2),ie=B(re,!0);j(re),j(ne);var ae=V(ne,2),oe=V(B(ae),2),se=B(oe,!0);j(oe),j(ae);var E=V(ae,2),ce=V(B(E),2),le=B(ce,!0);j(ce),j(E),M(2),j(te),j(T),j(ee);var ue=V(ee,2),de=V(B(ue),2),fe=V(B(de),2);qr(fe,5,()=>G(u),e=>e.time,(e,t)=>{var n=ua(),r=B(n),i=B(r);j(r);var a=V(r,2),o=B(a,!0);j(a),j(n),H(()=>{Y(i,`[${G(t).time??``}]`),Z(a,1,mi(G(t).type?`text-${G(t).type}`:``)),Y(o,G(t).text)}),ui(1,n,()=>Ui,()=>({y:10,duration:200})),J(e,n)}),j(fe),j(de),j(ue),j(w),j(t),H(()=>{Y(d,G(s).objects),Y(h,G(s).events),Y(y,G(s).activeJobs),Y(C,G(s).deadJobs),wi(re,`title`,G(a)),Y(ie,G(a)),Y(se,G(i)),Y(le,G(o))}),J(e,t)};X(kn,e=>{G(n)===`metrics`&&e(An)});var jn=V(kn,2),Mn=e=>{var t=_a(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,fa())},s=e=>{var t=Ir();qr(cn(t),9,()=>G(m),e=>e,(e,t)=>{var n=pa(),r=B(n),i=B(r,!0);j(r),M(2),j(n),H(e=>{Z(n,1,`sidebar-list-item ${G(h)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(he).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>Je(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(m).length===0?e(o):e(s,-1)}),j(i),j(r);var c=V(r,2),l=B(c),u=B(l),d=B(u,!0);j(u);var f=V(u,2),p=B(f);j(f),j(l);var _=V(l,2),v=B(_),y=B(v),b=V(B(y)),x=B(b),S=e=>{J(e,ma())},C=e=>{J(e,ha())},w=e=>{var t=Ir();qr(cn(t),9,()=>G(g),e=>e.id,(e,t)=>{var n=ga(),r=B(n),i=B(r,!0);j(r);var a=V(r),o=B(a,!0);j(a);var s=V(a),c=B(s,!0);j(s);var l=V(s),u=B(l,!0);j(l);var d=V(l),f=B(d),p=B(f),m=V(p,2);j(f),j(d),j(n),H((e,l,d,f)=>{Z(n,1,e),wi(r,`title`,G(t).id),Y(i,G(t).id),wi(a,`title`,G(t).text||``),Y(o,G(t).text||`-`),wi(s,`title`,l),Y(c,d),Y(u,f)},[()=>G(he).has(G(t).id)?`flash-highlight`:``,()=>JSON.stringify(G(t)),()=>JSON.stringify(G(t)),()=>G(t).createdAt?new Date(G(t).createdAt).toLocaleString():`-`]),K(`click`,p,()=>Ze(G(t))),K(`click`,m,()=>Qe(G(t).id)),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(x,e=>{G(h)?G(g).length===0?e(C,1):e(w,-1):e(S)}),j(b),j(y),j(v),j(_),j(c),j(n),j(t),H(()=>{Y(d,G(h)?G(h):`Select a collection`),p.disabled=!G(h)}),K(`click`,p,Xe),J(e,t)};X(jn,e=>{G(n)===`collections`&&e(Mn)});var Nn=V(jn,2),Pn=e=>{var t=wa(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,va())},s=e=>{var t=Ir();qr(cn(t),9,()=>G(_),e=>e,(e,t)=>{var n=ya(),r=B(n),i=B(r,!0);j(r),M(2),j(n),H(e=>{Z(n,1,`sidebar-list-item ${G(v)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(he).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>et(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(_).length===0?e(o):e(s,-1)}),j(i),j(r);var c=V(r,2),l=B(c),u=B(l),d=B(u,!0);j(u);var f=V(u,2),p=B(f);j(f),j(l);var m=V(l,2),h=B(m),g=B(h),b=e=>{J(e,ba())},x=e=>{J(e,xa())},S=e=>{var t=Ir();qr(cn(t),9,()=>G(y),e=>e.id,(e,t)=>{var n=Ca(),r=V(B(n),2),i=B(r),a=B(i),o=B(a),s=B(o,!0);j(o);var c=V(o,2),l=B(c);j(c),j(a);var u=V(a,2),d=B(u,!0);j(u),j(i);var f=V(i,2),p=B(f,!0);j(f);var m=V(f,2),h=e=>{var n=Sa(),r=B(n,!0);j(n),H(e=>Y(r,e),[()=>JSON.stringify(Object.fromEntries(Object.entries(G(t)).filter(([e])=>![`id`,`type`,`text`,`createdAt`,`stream`].includes(e))),null,2)]),J(e,n)},g=mt(()=>Object.keys(G(t)).filter(e=>![`id`,`type`,`text`,`createdAt`,`stream`].includes(e)).length>0);X(m,e=>{G(g)&&e(h)}),j(r),j(n),H((e,r)=>{Z(n,1,`timeline-item ${e??``}`),Y(s,G(t).type),Y(l,`#${G(t).id??``}`),Y(d,r),Y(p,G(t).text||`Logged message.`)},[()=>G(he).has(G(t).id)?`flash-highlight`:``,()=>G(t).createdAt?new Date(G(t).createdAt).toLocaleString():``]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(g,e=>{G(v)?G(y).length===0?e(x,1):e(S,-1):e(b)}),j(h),j(m),j(c),j(n),j(t),H(()=>Y(d,G(v)?`Timeline: ${G(v)}`:`All Event Timelines`)),K(`click`,p,nt),J(e,t)};X(Nn,e=>{G(n)===`events`&&e(Pn)});var Fn=V(Nn,2),In=e=>{var t=Ia(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=e=>{J(e,Ta())},s=e=>{var t=Ir();qr(cn(t),9,()=>G(b),e=>e,(e,t)=>{var n=Ea(),r=B(n),i=B(r,!0);j(r),M(2),j(n),H(e=>{Z(n,1,`sidebar-list-item ${G(x)===G(t)?`active`:``} ${e??``}`),Y(i,G(t))},[()=>G(he).has(G(t))?`flash-highlight`:``]),K(`click`,n,()=>at(G(t))),li(n,()=>Li,()=>({duration:250})),ui(1,n,()=>Ui,()=>({x:-20,duration:250})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(a,e=>{G(b).length===0?e(o):e(s,-1)}),j(i),j(r);var c=V(r,2),l=B(c),u=B(l),d=B(u),f=B(d,!0);j(d);var p=V(d,2),m=e=>{var t=Da(),n=B(t),r=B(n);j(n);var i=V(n,2),a=B(i);j(i);var o=V(i,2),s=B(o);j(o),j(t),H(()=>{Y(r,`Ready: ${G(S).ready??``}`),Y(a,`Leased: ${G(S).leased??``}`),Y(s,`Dead: ${G(S).dead??``}`)}),J(e,t)};X(p,e=>{G(x)&&e(m)}),j(u);var h=V(u,2),g=B(h),_=V(g,2);j(h),j(l);var v=V(l,2),y=B(v),T=B(y),te=B(T);j(T);var ne=V(T,2),re=B(ne);j(ne),j(y);var ie=V(y,2),ae=e=>{var t=ja(),n=B(t),r=V(B(n)),i=B(r),a=e=>{J(e,Oa())},o=e=>{J(e,ka())},s=e=>{var t=Ir();qr(cn(t),9,()=>G(C),e=>e.id,(e,t)=>{var n=Aa(),r=B(n),i=B(r,!0);j(r);var a=V(r),o=B(a),s=B(o,!0);j(o),j(a);var c=V(a),l=B(c,!0);j(c);var u=V(c),d=B(u,!0);j(u);var f=V(u),p=B(f,!0);j(f);var m=V(f),h=B(m,!0);j(m);var g=V(m),_=B(g);j(g),j(n),H((e,a,c,u)=>{Z(n,1,e),wi(r,`title`,G(t).id),Y(i,G(t).id),Z(o,1,`badge ${G(t).status===`leased`?`badge-leased`:`badge-ready`}`),Y(s,G(t).status),Y(l,G(t).attempts),Y(d,G(t).maxAttempts),wi(f,`title`,a),Y(p,c),Y(h,u)},[()=>G(he).has(G(t).id)?`flash-highlight`:``,()=>JSON.stringify(G(t).payload),()=>JSON.stringify(G(t).payload),()=>G(t).availableAt?new Date(G(t).availableAt).toLocaleString():`-`]),K(`click`,_,()=>ft(G(t))),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(i,e=>{G(x)?G(C).length===0?e(o,1):e(s,-1):e(a)}),j(r),j(n),j(t),J(e,t)},oe=e=>{var t=Fa(),n=B(t),r=V(B(n)),i=B(r),a=e=>{J(e,Ma())},o=e=>{J(e,Na())},s=e=>{var t=Ir();qr(cn(t),9,()=>G(w),e=>e.id,(e,t)=>{var n=Pa(),r=B(n),i=B(r,!0);j(r);var a=V(r),o=B(a,!0);j(a);var s=V(a),c=B(s,!0);j(s);var l=V(s),u=B(l,!0);j(l);var d=V(l),f=B(d,!0);j(d);var p=V(d),m=B(p,!0);j(p),j(n),H((e,n,a)=>{wi(r,`title`,G(t).id),Y(i,G(t).id),Y(o,G(t).attempts),Y(c,G(t).maxAttempts),Y(u,e),wi(d,`title`,G(t).lastError||``),Y(f,G(t).lastError||`None`),wi(p,`title`,n),Y(m,a)},[()=>G(t).deadAt?new Date(G(t).deadAt).toLocaleString():`-`,()=>JSON.stringify(G(t).payload),()=>JSON.stringify(G(t).payload)]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(i,e=>{G(x)?G(w).length===0?e(o,1):e(s,-1):e(a)}),j(r),j(n),j(t),J(e,t)};X(ie,e=>{G(ee)===`active`?e(ae):e(oe,-1)}),j(v),j(c),j(n),j(t),H(()=>{Y(f,G(x)?G(x):`Select a Queue`),g.disabled=!G(x),_.disabled=!G(x),Z(T,1,`subnav-item ${G(ee)===`active`?`active`:``}`),Y(te,`Active Jobs (${G(C).length??``})`),Z(ne,1,`subnav-item ${G(ee)===`dead`?`active`:``}`),Y(re,`Dead / Poison Jobs (${G(w).length??``})`)}),K(`click`,g,ct),K(`click`,_,ut),K(`click`,T,()=>z(ee,`active`)),K(`click`,ne,()=>z(ee,`dead`)),J(e,t)};X(Fn,e=>{G(n)===`queues`&&e(In)});var Ln=V(Fn,2),Rn=e=>{var t=za(),n=B(t),r=V(B(n),2),i=B(r),a=B(i),o=V(B(a),2),s=B(o);Q(s);var c=V(s,2);j(o),j(a);var l=V(a,2),u=V(B(l),2);Q(u),j(l),j(i);var d=V(i,2),f=B(d),p=V(B(f),2);Q(p),j(f);var m=V(f,2),h=V(B(m),2);Q(h),j(m),j(d);var g=V(d,2),_=B(g),v=B(_);j(_);var y=V(_,2),b=B(y),x=V(B(b)),S=B(x),C=e=>{J(e,La())},w=e=>{var t=Ir();qr(cn(t),9,()=>G(ae),e=>e.id,(e,t)=>{var n=Ra(),r=B(n),i=B(r),a=B(i,!0);j(i),j(r);var o=V(r),s=B(o,!0);j(o);var c=V(o);$r(c,()=>xt(G(t).text,G(te)),!0),j(c);var l=V(c),u=B(l,!0);j(l);var d=V(l),f=B(d,!0);j(d),j(n),H((e,n,r)=>{Y(a,G(t).collection),wi(o,`title`,G(t).id),Y(s,G(t).id),wi(l,`title`,e),Y(u,n),Y(f,r)},[()=>JSON.stringify(G(t)),()=>JSON.stringify(G(t)),()=>G(t).score?G(t).score.toFixed(3):`1.000`]),li(n,()=>Li,()=>({duration:300})),ui(1,n,()=>Ui,()=>({y:20,duration:300})),ui(2,n,()=>Hi,()=>({duration:150})),J(e,n)}),J(e,t)};X(S,e=>{G(ae).length===0?e(C):e(w,-1)}),j(x),j(b),j(y),j(g),j(r),j(n),j(t),H(()=>Y(v,`Search Results (${G(ae).length??``} matching objects found)`)),$(s,()=>G(te),e=>z(te,e)),K(`keydown`,s,e=>e.key===`Enter`&&gt()),K(`click`,c,gt),$(u,()=>G(ne),e=>z(ne,e)),$(p,()=>G(re),e=>z(re,e)),$(h,()=>G(ie),e=>z(ie,e)),J(e,t)};X(Ln,e=>{G(n)===`search`&&e(Rn)});var zn=V(Ln,2),Bn=e=>{var t=no(),n=B(t),r=B(n),i=V(B(r),2),a=B(i),o=B(a);j(a);var s=V(a,2);j(i),j(r);var c=V(r,2),l=B(c),u=B(l),d=V(B(u),2),f=B(d);Q(f);var p=V(f,2),m=B(p,!0);j(p),j(d),j(u);var h=V(u,2),g=V(B(h),2);Q(g),j(h),j(l);var _=V(l,2),v=e=>{var t=Ba(),n=V(B(t),2),r=B(n),i=V(B(r),2);Q(i),j(r);var a=V(r,2),o=V(B(a),2);Q(o),j(a);var s=V(a,2),c=V(B(s),2);Q(c),j(s),j(n);var l=V(n,2);j(t),$(i,()=>G(de),e=>z(de,e)),$(o,()=>G(fe),e=>z(fe,e)),$(c,()=>G(pe),e=>z(pe,e)),K(`click`,l,yt),J(e,t)};X(_,e=>{G(me)&&e(v)});var y=V(_,2),b=e=>{var t=Ua();qr(V(B(t),2),1,()=>G(le),Ur,(e,t)=>{var n=Ha(),r=B(n),i=B(r,!0);j(r);var a=V(r,2),o=B(a);j(a);var s=V(a,2);qr(s,5,()=>G(t).fields,Ur,(e,t)=>{var n=Va(),r=B(n),i=V(r),a=B(i,!0);j(i),j(n),H(()=>{Y(r,`${G(t).name??``}: `),Y(a,G(t).type)}),J(e,n)}),j(s),j(n),H(()=>{Y(i,G(t).name),Y(o,`(${G(t).objectCount??``} objects)`)}),J(e,n)}),j(t),J(e,t)},x=e=>{J(e,Wa())};X(y,e=>{G(ue)&&G(le)?e(b):G(ue)&&e(x,1)});var S=V(y,2),C=e=>{J(e,Ga())},w=e=>{var t=eo(),n=B(t),r=V(B(n),2),i=B(r,!0);j(r),j(n);var a=V(n,2),o=e=>{var t=Ya(),n=B(t),r=B(n),i=B(r),a=V(B(i)),o=e=>{var t=Ka();M(2),J(e,t)};X(a,e=>{G(E).data.groups&&G(E).data.groups.length>0&&e(o)}),j(i),j(r);var s=V(r),c=B(s),l=B(c),u=B(l,!0);j(l);var d=V(l),f=e=>{J(e,qa())};X(d,e=>{G(E).data.groups&&G(E).data.groups.length>0&&e(f)}),j(c);var p=V(c),m=e=>{var t=Ir();qr(cn(t),1,()=>G(E).data.groups,Ur,(e,t)=>{var n=Ja(),r=V(B(n)),i=B(r),a=B(i,!0);j(i),j(r);var o=V(r),s=B(o,!0);j(o),j(n),H(e=>{Y(a,G(t).key),Y(s,e)},[()=>bt(G(t).value)]),J(e,n)}),J(e,t)};X(p,e=>{G(E).data.groups&&e(m)}),j(s),j(n),j(t),H(e=>Y(u,e),[()=>bt(G(E).data.total)]),J(e,t)},s=e=>{var t=Za(),n=B(t),r=V(B(n));qr(r,5,()=>G(E).data.buckets,Ur,(e,t)=>{var n=Xa(),r=B(n),i=B(r,!0);j(r);var a=V(r),o=B(a,!0);j(a),j(n),H(e=>{Y(i,G(t).label),Y(o,e)},[()=>bt(G(t).value)]),J(e,n)}),j(r),j(n),j(t),J(e,t)},c=e=>{var t=$a(),n=B(t),r=V(B(n));qr(r,5,()=>G(E).data,Ur,(e,t)=>{var n=Qa(),r=B(n),i=B(r),a=B(i,!0);j(i),j(r);var o=V(r),s=B(o,!0);j(o);var c=V(o),l=B(c,!0);j(c),j(n),H(e=>{Y(a,G(t).collection||G(t).stream),Y(s,G(t).id),Y(l,e)},[()=>G(t).score?.toFixed(3)??`-`]),J(e,n)}),j(r),j(n),j(t),J(e,t)},l=mt(()=>G(E).data&&Array.isArray(G(E).data));X(a,e=>{G(E).data&&G(E).data.total!==void 0?e(o):G(E).data&&G(E).data.buckets?e(s,1):G(l)&&e(c,2)});var u=V(a,2),d=V(B(u),2),f=B(d,!0);j(d),j(u),j(t),H(e=>{Y(i,G(E).answer),Y(f,e)},[()=>JSON.stringify(G(E),null,2)]),J(e,t)},ee=e=>{J(e,to())};X(S,e=>{G(ce)?e(C):G(E)?e(w,1):e(ee,-1)}),j(c),j(n),j(t),H(()=>{Y(o,`${G(ue)?`Hide`:`Show`} Schema`),p.disabled=G(ce),Y(m,G(ce)?`Thinking...`:`Ask`)}),K(`click`,a,async()=>{await vt(),z(ue,!G(ue))}),K(`click`,s,()=>z(me,!G(me))),$(f,()=>G(oe),e=>z(oe,e)),K(`keydown`,f,e=>e.key===`Enter`&&_t()),K(`click`,p,_t),$(g,()=>G(se),e=>z(se,e)),J(e,t)};X(zn,e=>{G(n)===`nlq`&&e(Bn)});var Vn=V(zn,2),Hn=e=>{var t=io(),n=B(t),r=V(B(n),2),i=B(r),a=B(i),o=B(a),s=B(o,!0);j(o);var l=V(o,4),u=B(l,!0);j(l);var d=V(l,2);j(a);var f=V(a,2),p=B(f),m=B(p,!0);j(p);var h=V(p,4),g=B(h);j(h);var _=V(h,2);j(f);var v=V(f,2),y=B(v),b=B(y,!0);j(y);var x=V(y,4),S=B(x),C=e=>{var t=ro(),n=B(t);j(t),H(e=>Y(n,`${e??``} MB`),[()=>(G(c).backupSize/1024/1024).toFixed(2)]),J(e,t)};X(S,e=>{G(c).backupSize&&e(C)}),j(x);var w=V(x,2);j(v),j(i),j(r),j(n),j(t),H(()=>{Y(s,G(c).integrityOk?`✓`:`✗`),Y(u,G(c).integrityMessage),Y(m,G(c).walMode),Y(g,`Frames: ${G(c).walFrames??``}`),Y(b,G(c).backupPath||`N/A`)}),K(`click`,d,L),K(`click`,_,St),K(`click`,w,Ct),J(e,t)};X(Vn,e=>{G(n)===`health`&&e(Hn)}),j(On),j(Zt),j(jt);var Un=V(jt,2),Wn=e=>{var t=ao(),n=B(t),r=B(n),i=B(r),a=B(i,!0);j(i);var o=V(i,2);j(r);var s=V(r,2),c=B(s),l=B(c),u=V(B(l),2);Q(u),j(l);var d=V(l,2),f=V(B(d),2);pn(f),j(d);var p=V(d,2);sa(B(p),{label:`Custom Metadata`,placeholder:`{"status": "active"}`,get value(){return G(D)},set value(e){z(D,e)},$$legacy:!0}),j(p);var m=V(p,2),h=B(m);M(2),j(m),j(c),j(s),j(n),j(t),H(()=>{Y(a,G(Ce)?`Edit Memory Object`:`Add Memory Object`),u.disabled=G(Ce)}),K(`click`,o,()=>z(_e,!1)),$(u,()=>G(Te),e=>z(Te,e)),$(f,()=>G(Ee),e=>z(Ee,e)),K(`click`,h,()=>z(_e,!1)),K(`submit`,c,I),J(e,t)};X(Un,e=>{G(_e)&&e(Wn)});var Gn=V(Un,2),Kn=e=>{var t=oo(),n=B(t),r=B(n),i=V(B(r),2);j(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2);Q(c),j(s);var l=V(s,2),u=V(B(l),2);Q(u),j(l);var d=V(l,2),f=V(B(d),2);Q(f),j(d);var p=V(d,2);sa(B(p),{label:`Event Payload`,placeholder:`{"success": true}`,get value(){return G(Ae)},set value(e){z(Ae,e)},$$legacy:!0}),j(p);var m=V(p,2),h=B(m);M(2),j(m),j(o),j(a),j(n),j(t),K(`click`,i,()=>z(ve,!1)),$(c,()=>G(De),e=>z(De,e)),$(u,()=>G(Oe),e=>z(Oe,e)),$(f,()=>G(ke),e=>z(ke,e)),K(`click`,h,()=>z(ve,!1)),K(`submit`,o,rt),J(e,t)};X(Gn,e=>{G(ve)&&e(Kn)});var qn=V(Gn,2),Jn=e=>{var t=so(),n=B(t),r=B(n),i=V(B(r),2);j(r);var a=V(r,2),o=B(a),s=B(o);sa(B(s),{label:`Payload`,placeholder:`{"action": "build"}`,required:!0,get value(){return G(je)},set value(e){z(je,e)},$$legacy:!0}),j(s);var c=V(s,2),l=B(c),u=V(B(l),2);Q(u),j(l);var d=V(l,2),f=V(B(d),2);Q(f),j(d),j(c);var p=V(c,2),m=V(B(p),2);Q(m),j(p);var h=V(p,2),g=B(h);M(2),j(h),j(o),j(a),j(n),j(t),K(`click`,i,()=>z(ye,!1)),$(u,()=>G(Me),e=>z(Me,e)),$(f,()=>G(Ne),e=>z(Ne,e)),$(m,()=>G(O),e=>z(O,e)),K(`click`,g,()=>z(ye,!1)),K(`submit`,o,lt),J(e,t)};X(qn,e=>{G(ye)&&e(Jn)});var Yn=V(qn,2),Xn=e=>{var t=co(),n=B(t),r=B(n),i=V(B(r),2);j(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2);Q(c),M(2),j(s);var l=V(s,2),u=B(l);M(2),j(l),j(o),j(a),j(n),j(t),K(`click`,i,()=>z(be,!1)),$(c,()=>G(Pe),e=>z(Pe,e)),K(`click`,u,()=>z(be,!1)),K(`submit`,o,dt),J(e,t)};X(Yn,e=>{G(be)&&e(Xn)});var U=V(Yn,2),Zn=e=>{var t=lo(),n=B(t),r=B(n),i=V(B(r),2);j(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2),l=B(c);l.value=l.__value=`memory`;var u=V(l);u.value=u.__value=`native`;var d=V(u);d.value=d.__value=`cloud`,j(c),j(s);var f=V(s,2),p=V(B(f),2);Q(p),j(f);var m=V(f,2),h=V(B(m),2);Q(h),j(m);var g=V(m,2),_=B(g);M(2),j(g),j(o),j(a),j(n),j(t),K(`click`,i,()=>z(Se,!1)),yi(c,()=>G(Fe),e=>z(Fe,e)),$(p,()=>G(Ie),e=>z(Ie,e)),$(h,()=>G(Le),e=>z(Le,e)),K(`click`,_,()=>z(Se,!1)),K(`submit`,o,Tt),J(e,t)};X(U,e=>{G(Se)&&e(Zn)});var Qn=V(U,2),W=e=>{var t=po(),n=B(t),r=B(n),i=V(B(r),2);j(r);var a=V(r,2),o=B(a),s=B(o),c=V(B(s),2),l=B(c,!0);j(c),j(s);var u=V(s,2),d=V(B(u),2),f=B(d,!0);j(d),j(u);var p=V(u,2),m=V(B(p),2),h=B(m,!0);j(m),j(p);var g=V(p,2),_=V(B(g),2),v=B(_);j(_),j(g);var y=V(g,2),b=V(B(y),2),S=B(b,!0);j(b),j(y),j(o);var C=V(o,2),w=e=>{var t=fo(),n=V(B(t),2),r=B(n),i=V(r,2);j(n);var a=V(n,2),o=e=>{var t=uo(),n=B(t),r=V(B(n),2);Q(r),j(n);var i=V(n,2),a=V(B(i),2);Q(a),j(i),M(2),j(t),$(r,()=>G(k),e=>z(k,e)),$(a,()=>G(A),e=>z(A,e)),K(`submit`,t,ht),J(e,t)};X(a,e=>{G(we)&&e(o)}),j(t),K(`click`,r,pt),K(`click`,i,()=>z(we,!G(we))),J(e,t)};X(C,e=>{G(T).status===`leased`&&e(w)}),j(a),j(n),j(t),H(e=>{Y(l,G(T).id),Y(f,G(x)),Y(h,G(T).status),Y(v,`${G(T).attempts??``} of ${G(T).maxAttempts??``}`),Y(S,e)},[()=>JSON.stringify(G(T).payload,null,2)]),K(`click`,i,()=>z(xe,!1)),J(e,t)};X(Qn,e=>{G(xe)&&G(T)&&e(W)});var $n=V(Qn,2);qr($n,5,()=>G(Re),Ur,(e,t)=>{var n=mo(),r=B(n),i=B(r,!0);j(r),j(n),H(()=>{Z(n,1,`toast ${G(t).type??``}`),Y(i,G(t).message)}),J(e,n)}),j($n),H(()=>{Y(It,G(l)||`v0.3.0`),Z(Rt,1,`nav-item ${G(n)===`metrics`?`active`:``}`),Z(zt,1,`nav-item ${G(n)===`collections`?`active`:``}`),Z(Bt,1,`nav-item ${G(n)===`events`?`active`:``}`),Z(Vt,1,`nav-item ${G(n)===`queues`?`active`:``}`),Z(Ht,1,`nav-item ${G(n)===`search`?`active`:``}`),Z(Ut,1,`nav-item ${G(n)===`nlq`?`active`:``}`),Z(Wt,1,`nav-item ${G(n)===`health`?`active`:``}`),Y(Jt,G(r)),Y(xn,G(i)),wi(Sn,`title`,G(a)),Y(Cn,G(a)),Y(Tn,G(o))}),K(`click`,Rt,()=>Ke(`metrics`)),K(`click`,zt,()=>Ke(`collections`)),K(`click`,Bt,()=>Ke(`events`)),K(`click`,Vt,()=>Ke(`queues`)),K(`click`,Ht,()=>Ke(`search`)),K(`click`,Ut,()=>Ke(`nlq`)),K(`click`,Wt,()=>Ke(`health`)),K(`click`,En,wt),K(`click`,Dn,Ge),J(e,Ot),Ue()}Rr(go,{target:document.getElementById(`app`)});
@@ -7,7 +7,7 @@
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
  <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
10
- <script type="module" crossorigin src="/assets/index-CtIMsyl9.js"></script>
10
+ <script type="module" crossorigin src="/assets/index-ChtmW1gL.js"></script>
11
11
  <link rel="stylesheet" crossorigin href="/assets/index-C6PkDB7y.css">
12
12
  </head>
13
13
  <body>
@@ -1 +1 @@
1
- {"version":3,"file":"data-movement.d.ts","sourceRoot":"","sources":["../src/data-movement.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAwD,MAAM,YAAY,CAAC;AAwEnG,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFlE;AAoND,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiHpE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE"}
1
+ {"version":3,"file":"data-movement.d.ts","sourceRoot":"","sources":["../src/data-movement.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,KAAK,UAAU,EAAwD,MAAM,YAAY,CAAC;AAwEnG,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFlE;AAoND,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmHpE;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAyClE"}
@@ -373,7 +373,7 @@ export async function runSnapshot(context) {
373
373
  if (snapshot.version !== "1.0.0") {
374
374
  throw new Error(`Unsupported snapshot version: ${snapshot.version}`);
375
375
  }
376
- console.error("Restoring snapshot... (consider 'thingd backup --out pre-restore.db' first)");
376
+ context.stderr.write("Restoring snapshot... (consider 'thingd backup --out pre-restore.db' first)\n");
377
377
  await withDb(context, async (db) => {
378
378
  try {
379
379
  // 1. Restore Collections (clear existing first for true restore)
@@ -427,9 +427,9 @@ export async function runSnapshot(context) {
427
427
  catch (err) {
428
428
  const message = err instanceof Error ? err.message : String(err);
429
429
  // Restore failed — recommend using backup for atomic recovery
430
- console.error(`Restore failed: ${message}. Data may be partially restored.\n` +
430
+ context.stderr.write(`Restore failed: ${message}. Data may be partially restored.\n` +
431
431
  `For atomic restore, use 'thingd backup --out backup.db' before making changes\n` +
432
- `and copy the backup file to restore.`);
432
+ `and copy the backup file to restore.\n`);
433
433
  throw err;
434
434
  }
435
435
  });
@@ -455,7 +455,7 @@ export async function runBackup(context) {
455
455
  await db.close();
456
456
  const { copyFileSync } = await import("node:fs");
457
457
  copyFileSync(resolvedIn, db.path);
458
- console.log(`Restored from: ${resolvedIn}`);
458
+ context.stderr.write(`Restored from: ${resolvedIn}\n`);
459
459
  });
460
460
  return;
461
461
  }
@@ -470,6 +470,6 @@ export async function runBackup(context) {
470
470
  const { statSync } = await import("node:fs");
471
471
  const stats = statSync(outPath);
472
472
  const sizeMb = (stats.size / (1024 * 1024)).toFixed(2);
473
- console.log(`Backup created: ${outPath} (${sizeMb} MB)`);
473
+ context.stderr.write(`Backup created: ${outPath} (${sizeMb} MB)\n`);
474
474
  });
475
475
  }
package/dist/doctor.js CHANGED
@@ -55,8 +55,7 @@ export async function runDoctor(context) {
55
55
  context.stderr.write(` ${pc.green("✓")} Auth Token: ${pc.dim("Not required for local sidecar")}\n`);
56
56
  }
57
57
  try {
58
- const normalizeUrl = (val) => val.startsWith("thingd://") ? `http://${val.slice("thingd://".length)}` : val;
59
- const targetUrl = new URL(normalizeUrl(rawUrl));
58
+ const targetUrl = new URL(rawUrl.startsWith("thingd://") ? `http://${rawUrl.slice("thingd://".length)}` : rawUrl);
60
59
  if (targetUrl.pathname === "/mcp" || targetUrl.pathname === "") {
61
60
  targetUrl.pathname = "/healthz";
62
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,OAAO,EASL,MAAM,EACN,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAQrB,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEjD,KAAK,YAAY,GAAG;IAClB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAsCF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAwFF,wBAAsB,MAAM,CAC1B,IAAI,WAAwB,EAC5B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA6EjB;AAk6BD,wBAAsB,MAAM,CAC1B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAcf;AA4BD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,iBAAiB,CAgCxE;AAiDD,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAGlF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrF;AAyFD,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAEpF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAQA,OAAO,EAUL,MAAM,EACN,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAQrB,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAEjD,KAAK,YAAY,GAAG;IAClB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAsCF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAwFF,wBAAsB,MAAM,CAC1B,IAAI,WAAwB,EAC5B,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA6EjB;AAk6BD,wBAAsB,MAAM,CAC1B,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAcf;AA4BD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,iBAAiB,CAmCxE;AAiDD,wBAAgB,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAGlF;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMrF;AAyFD,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAEpF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAElE"}
package/dist/index.js CHANGED
@@ -5,10 +5,10 @@ import { setTimeout as sleep } from "node:timers/promises";
5
5
  import { pathToFileURL } from "node:url";
6
6
  import { Client } from "@modelcontextprotocol/sdk/client/index.js";
7
7
  import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
8
- import { ThingD, } from "@thingd/sdk";
8
+ import { SDK_VERSION, ThingD, } from "@thingd/sdk";
9
9
  import pc from "picocolors";
10
10
  import { runInteractiveCli } from "./interactive.js";
11
- import { readCloudConfig } from "./lib/cloud-config.js";
11
+ import { readCloudConfig, resolveCloudUrl } from "./lib/cloud-config.js";
12
12
  import { logoLine } from "./logo.js";
13
13
  import { runMcp } from "./mcp.js";
14
14
  import { defaultThingdDbPath, ensureThingdDir } from "./paths.js";
@@ -440,7 +440,7 @@ async function runTools(context) {
440
440
  }
441
441
  const client = new Client({
442
442
  name: "thingd-cli",
443
- version: "0.33.0",
443
+ version: SDK_VERSION,
444
444
  });
445
445
  const transport = new StreamableHTTPClientTransport(new URL(resolveCloudMcpUrl(connection.path)), {
446
446
  requestInit: connection.authToken
@@ -954,8 +954,10 @@ export function resolveConnection(context) {
954
954
  // Fall back to saved cloud config when no explicit URL/token is provided
955
955
  const cloudCfg = cloud && !url ? readCloudConfig() : null;
956
956
  const resolvedAuthToken = stringFlag(context.parsed, "auth-token") ?? context.env.THINGD_AUTH_TOKEN ?? cloudCfg?.token;
957
+ // Prefer instanceUrl (resolved MCP endpoint) over raw cloudCfg.url (API base)
958
+ const resolvedCloudUrl = cloudCfg ? resolveCloudUrl(cloudCfg) : undefined;
957
959
  return {
958
- path: cloudCfg?.url && !url ? cloudCfg.url : path,
960
+ path: resolvedCloudUrl && !url ? resolvedCloudUrl : path,
959
961
  driver,
960
962
  authToken: resolvedAuthToken,
961
963
  cloud,
@@ -1 +1 @@
1
- {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AAy1DA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CA4CvD"}
1
+ {"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../src/interactive.ts"],"names":[],"mappings":"AA6gEA,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAoDvD"}