gemi 0.170.0 → 0.172.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.
Files changed (63) hide show
  1. package/dist/ai/index.js +1 -1
  2. package/dist/app/App.d.ts +16 -3
  3. package/dist/app/App.d.ts.map +1 -1
  4. package/dist/app/index.js +1 -1
  5. package/dist/bin/gemi.js +10 -4
  6. package/dist/bin/gemi.js.map +3 -3
  7. package/dist/chunk-5rzb2c9n.js +24 -0
  8. package/dist/{chunk-6xve1mg1.js.map → chunk-5rzb2c9n.js.map} +3 -3
  9. package/dist/{chunk-ys8nk9ga.js → chunk-d54afkwy.js} +1 -1
  10. package/dist/chunk-f82m70ek.js +58 -0
  11. package/dist/chunk-f82m70ek.js.map +14 -0
  12. package/dist/chunk-ktfc7jmg.js +4 -0
  13. package/dist/chunk-ktfc7jmg.js.map +10 -0
  14. package/dist/chunk-mm5p3tvh.js +117 -0
  15. package/dist/{chunk-t4hphx4x.js.map → chunk-mm5p3tvh.js.map} +7 -7
  16. package/dist/{chunk-mm45shzv.js → chunk-njem61cd.js} +1 -1
  17. package/dist/{chunk-x1p2vmj7.js → chunk-qv2zapxa.js} +1 -1
  18. package/dist/{chunk-2xtkh8bh.js → chunk-yem48znp.js} +1 -1
  19. package/dist/chunk-z0bzca7f.js +5 -0
  20. package/dist/{chunk-1h6g1hkg.js.map → chunk-z0bzca7f.js.map} +3 -3
  21. package/dist/{chunk-mc7pkdav.js → chunk-zppfpg1m.js} +2 -2
  22. package/dist/{chunk-mc7pkdav.js.map → chunk-zppfpg1m.js.map} +1 -1
  23. package/dist/client/Head.d.ts.map +1 -1
  24. package/dist/client/index.js +20 -2
  25. package/dist/client/index.js.map +1 -1
  26. package/dist/facades/Meta.d.ts +10 -0
  27. package/dist/facades/Meta.d.ts.map +1 -1
  28. package/dist/facades/index.js +1 -1
  29. package/dist/http/HttpRequest.d.ts +1 -0
  30. package/dist/http/HttpRequest.d.ts.map +1 -1
  31. package/dist/http/Metadata.d.ts +15 -0
  32. package/dist/http/Metadata.d.ts.map +1 -1
  33. package/dist/http/index.js +1 -1
  34. package/dist/http/requestContext.d.ts +1 -0
  35. package/dist/http/requestContext.d.ts.map +1 -1
  36. package/dist/i18n/index.js +1 -1
  37. package/dist/kernel/index.js +1 -1
  38. package/dist/orm/index.js +1 -1
  39. package/dist/server/devFetch.d.ts.map +1 -1
  40. package/dist/server/httpDev.d.ts.map +1 -1
  41. package/dist/server/httpProd.d.ts.map +1 -1
  42. package/dist/server/index.js +1 -1
  43. package/dist/services/index.js +1 -1
  44. package/dist/services/router/DomainResolver.d.ts +8 -0
  45. package/dist/services/router/DomainResolver.d.ts.map +1 -1
  46. package/dist/services/router/DomainRouter.d.ts +21 -0
  47. package/dist/services/router/DomainRouter.d.ts.map +1 -1
  48. package/dist/services/router/ViewRouteDispatcher.d.ts +6 -0
  49. package/dist/services/router/ViewRouteDispatcher.d.ts.map +1 -1
  50. package/dist/services/router/config.d.ts +46 -1
  51. package/dist/services/router/config.d.ts.map +1 -1
  52. package/package.json +1 -1
  53. package/dist/chunk-1h6g1hkg.js +0 -5
  54. package/dist/chunk-36515hn6.js +0 -58
  55. package/dist/chunk-36515hn6.js.map +0 -14
  56. package/dist/chunk-6xve1mg1.js +0 -24
  57. package/dist/chunk-g548q257.js +0 -4
  58. package/dist/chunk-g548q257.js.map +0 -10
  59. package/dist/chunk-t4hphx4x.js +0 -117
  60. /package/dist/{chunk-ys8nk9ga.js.map → chunk-d54afkwy.js.map} +0 -0
  61. /package/dist/{chunk-mm45shzv.js.map → chunk-njem61cd.js.map} +0 -0
  62. /package/dist/{chunk-x1p2vmj7.js.map → chunk-qv2zapxa.js.map} +0 -0
  63. /package/dist/{chunk-2xtkh8bh.js.map → chunk-yem48znp.js.map} +0 -0
package/dist/ai/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{$b as $8,$c as J6,Ac as t9,Bc as r9,Cc as C8,Ec as _8,Fc as T8,Gc as A8,Hc as R8,Ic as E8,Jc as j8,Kc as k8,Lc as x8,Mc as q8,Nc as I8,Oc as w8,Pc as b8,Rc as w,Sc as $9,Tc as s,Uc as T,Vc as Z8,Wc as s0,Xc as a0,Yb as J8,Yc as t0,Zb as NQ,Zc as r0,_b as UQ,_c as e0,ad as $6,bd as Q6,cc as xJ,cd as Z6,dc as S,dd as W6,ec as A,ed as K6,fd as DJ,gc as t8,gd as X6,hc as d8,hd as AQ,ic as KJ,id as Y6,jc as o0,jd as RQ,kc as g,kd as G6,lc as Q8,ld as EJ,mc as LQ,md as B$,nc as OQ,nd as V6,oc as CQ,od as H6,pc as m,pd as EQ,qc as _Q,qd as z6,rc as oJ,rd as D6,sc as MQ,sd as B6,tc as SQ,td as z$,uc as sJ,vc as U8,wc as L8,yc as O8,zc as v}from"../chunk-2xtkh8bh.js";import{Ld as D8}from"../chunk-9aj6eavs.js";import"../chunk-gjwf07hy.js";import{$h as i0,Gh as zQ,Hi as FQ,Jh as BQ,Ki as p$,Oi as PQ,Zh as _9,_h as d0,ai as n0,bi as q}from"../chunk-ys8nk9ga.js";import{Pi as DQ,Ri as iJ,Si as nJ}from"../chunk-5n21z4n8.js";import{$i as h}from"../chunk-1h6g1hkg.js";import"../chunk-jxx9mctk.js";import"../chunk-6t1t7h05.js";import"../chunk-a9frf7ym.js";import{ck as n,dk as o,rk as SJ}from"../chunk-gwphn604.js";import"../chunk-m950vw4c.js";import"../chunk-vfvjfw5k.js";import{el as c9}from"../chunk-8b9ks729.js";import"../chunk-0q65jzhv.js";import"../chunk-9akefv1y.js";import{xl as eJ}from"../chunk-rpdekb8t.js";import"../chunk-9wcv7e1a.js";import{existsSync as wQ,readdirSync as P6,readFileSync as V8}from"fs";import{isAbsolute as bQ,join as UJ,relative as fQ,sep as vQ}from"path";var H8="prompts.json",yQ=/\{\{>\s*([\w./-]+)\s*\}\}/g,X8=/\{\{(\w+)\}\}/g,hQ=/^[\w-]+(\/[\w-]+)*$/,Y8={dir:"app/agents",shared:"prompts"},OJ={},tJ=new Map,LJ;function gQ(){if(LJ===void 0){let J=UJ(eJ(),"dist","server",H8);LJ=wQ(J)?JSON.parse(V8(J,"utf8")):null}return LJ??null}function uQ(J){return J.replace(/\r?\n$/,"")}function G8(){return OJ.cache??Bun.env.NODE_ENV==="production"}function cQ(J){if(!hQ.test(J))throw Error(`"${J}" is not a prompt name. Use letters, digits, "-" and "_", with "/" between folders.`);let $=OJ.dir??Y8.dir,Q=bQ($)?$:UJ(process.cwd(),$),Z=J.includes("/")?`${J}.md`:UJ(OJ.shared??Y8.shared,`${J}.md`);return UJ(Q,Z)}function mQ(J){let $=cQ(J),Q=G8()?tJ.get($):void 0;if(Q!==void 0)return Q;let Z=Bun.env.NODE_ENV==="production";if(Z){let K=gQ()?.[fQ(eJ(),$).split(vQ).join("/")];if(K!==void 0)return K}let W;try{W=uQ(V8($,"utf8"))}catch(K){if(K.code==="ENOENT"){let X=Z?` or in dist/server/${H8}`:"";throw Error(`The prompt "${J}" does not exist (looked for ${$}${X}).`)}throw K}if(G8())tJ.set($,W);return W}function rJ(J,$){if($.includes(J))throw Error(`The prompt "${J}" includes itself: ${[...$,J].join(" > ")}.`);return mQ(J).replace(yQ,(Q,Z)=>rJ(Z,[...$,J]))}class z8{static configure(J){OJ={...J},tJ.clear(),LJ=void 0}static render(J,$={}){return rJ(J,[]).replace(X8,(Q,Z)=>{if(!Object.hasOwn($,Z))throw Error(`The prompt "${J}" has no value for {{${Z}}}.`);return String($[Z])})}static placeholders(J){let $=[...rJ(J,[]).matchAll(X8)].map((Q)=>Q[1]);return[...new Set($)]}}class J$ extends D8{name="AgentJobDeadlineSweep";cron="* * * * *";async callback(){while(await v.sweep({limit:100})===100);}}var CJ=20;function F8(J,$){if($<=0||J.length===0)return null;let Q=(K,X)=>X.createdAt-K.createdAt||(K.id<X.id?1:-1);return["<jobs>","Background jobs that tools started in this conversation, running ones first. A running job's result replaces its tool result when it finishes. Do not start the same work again while a job for it is running.",...[...J.filter((K)=>K.state==="running").sort(Q),...J.filter((K)=>K.state!=="running").sort(Q)].slice(0,$).map((K)=>{let X=[`- ${K.id} (${K.toolName})`];if(K.state==="running")X.push(`running since ${$$(K.createdAt)}`);else if(K.state==="ok")X.push(`finished at ${$$(K.settledAt??K.updatedAt)}`);else{let G=K.error?`${K.error.code}: ${B8(K.error.message,200)}`:"failed";X.push(`failed at ${$$(K.settledAt??K.updatedAt)} (${G})`)}if(K.summary!==void 0)X.push(`summary: ${B8(JSON.stringify(K.summary),300)}`);if(K.orphaned)X.push("its tool call was lost when the turn that started it was cut short");return X.join("; ")}),"</jobs>"].join(`
2
+ import{$b as $8,$c as J6,Ac as t9,Bc as r9,Cc as C8,Ec as _8,Fc as T8,Gc as A8,Hc as R8,Ic as E8,Jc as j8,Kc as k8,Lc as x8,Mc as q8,Nc as I8,Oc as w8,Pc as b8,Rc as w,Sc as $9,Tc as s,Uc as T,Vc as Z8,Wc as s0,Xc as a0,Yb as J8,Yc as t0,Zb as NQ,Zc as r0,_b as UQ,_c as e0,ad as $6,bd as Q6,cc as xJ,cd as Z6,dc as S,dd as W6,ec as A,ed as K6,fd as DJ,gc as t8,gd as X6,hc as d8,hd as AQ,ic as KJ,id as Y6,jc as o0,jd as RQ,kc as g,kd as G6,lc as Q8,ld as EJ,mc as LQ,md as B$,nc as OQ,nd as V6,oc as CQ,od as H6,pc as m,pd as EQ,qc as _Q,qd as z6,rc as oJ,rd as D6,sc as MQ,sd as B6,tc as SQ,td as z$,uc as sJ,vc as U8,wc as L8,yc as O8,zc as v}from"../chunk-yem48znp.js";import{Ld as D8}from"../chunk-9aj6eavs.js";import"../chunk-gjwf07hy.js";import{$h as i0,Gh as zQ,Hi as FQ,Jh as BQ,Ki as p$,Oi as PQ,Zh as _9,_h as d0,ai as n0,bi as q}from"../chunk-d54afkwy.js";import{Pi as DQ,Ri as iJ,Si as nJ}from"../chunk-5n21z4n8.js";import{$i as h}from"../chunk-z0bzca7f.js";import"../chunk-jxx9mctk.js";import"../chunk-6t1t7h05.js";import"../chunk-a9frf7ym.js";import{ck as n,dk as o,rk as SJ}from"../chunk-gwphn604.js";import"../chunk-m950vw4c.js";import"../chunk-vfvjfw5k.js";import{el as c9}from"../chunk-8b9ks729.js";import"../chunk-0q65jzhv.js";import"../chunk-9akefv1y.js";import{xl as eJ}from"../chunk-rpdekb8t.js";import"../chunk-9wcv7e1a.js";import{existsSync as wQ,readdirSync as P6,readFileSync as V8}from"fs";import{isAbsolute as bQ,join as UJ,relative as fQ,sep as vQ}from"path";var H8="prompts.json",yQ=/\{\{>\s*([\w./-]+)\s*\}\}/g,X8=/\{\{(\w+)\}\}/g,hQ=/^[\w-]+(\/[\w-]+)*$/,Y8={dir:"app/agents",shared:"prompts"},OJ={},tJ=new Map,LJ;function gQ(){if(LJ===void 0){let J=UJ(eJ(),"dist","server",H8);LJ=wQ(J)?JSON.parse(V8(J,"utf8")):null}return LJ??null}function uQ(J){return J.replace(/\r?\n$/,"")}function G8(){return OJ.cache??Bun.env.NODE_ENV==="production"}function cQ(J){if(!hQ.test(J))throw Error(`"${J}" is not a prompt name. Use letters, digits, "-" and "_", with "/" between folders.`);let $=OJ.dir??Y8.dir,Q=bQ($)?$:UJ(process.cwd(),$),Z=J.includes("/")?`${J}.md`:UJ(OJ.shared??Y8.shared,`${J}.md`);return UJ(Q,Z)}function mQ(J){let $=cQ(J),Q=G8()?tJ.get($):void 0;if(Q!==void 0)return Q;let Z=Bun.env.NODE_ENV==="production";if(Z){let K=gQ()?.[fQ(eJ(),$).split(vQ).join("/")];if(K!==void 0)return K}let W;try{W=uQ(V8($,"utf8"))}catch(K){if(K.code==="ENOENT"){let X=Z?` or in dist/server/${H8}`:"";throw Error(`The prompt "${J}" does not exist (looked for ${$}${X}).`)}throw K}if(G8())tJ.set($,W);return W}function rJ(J,$){if($.includes(J))throw Error(`The prompt "${J}" includes itself: ${[...$,J].join(" > ")}.`);return mQ(J).replace(yQ,(Q,Z)=>rJ(Z,[...$,J]))}class z8{static configure(J){OJ={...J},tJ.clear(),LJ=void 0}static render(J,$={}){return rJ(J,[]).replace(X8,(Q,Z)=>{if(!Object.hasOwn($,Z))throw Error(`The prompt "${J}" has no value for {{${Z}}}.`);return String($[Z])})}static placeholders(J){let $=[...rJ(J,[]).matchAll(X8)].map((Q)=>Q[1]);return[...new Set($)]}}class J$ extends D8{name="AgentJobDeadlineSweep";cron="* * * * *";async callback(){while(await v.sweep({limit:100})===100);}}var CJ=20;function F8(J,$){if($<=0||J.length===0)return null;let Q=(K,X)=>X.createdAt-K.createdAt||(K.id<X.id?1:-1);return["<jobs>","Background jobs that tools started in this conversation, running ones first. A running job's result replaces its tool result when it finishes. Do not start the same work again while a job for it is running.",...[...J.filter((K)=>K.state==="running").sort(Q),...J.filter((K)=>K.state!=="running").sort(Q)].slice(0,$).map((K)=>{let X=[`- ${K.id} (${K.toolName})`];if(K.state==="running")X.push(`running since ${$$(K.createdAt)}`);else if(K.state==="ok")X.push(`finished at ${$$(K.settledAt??K.updatedAt)}`);else{let G=K.error?`${K.error.code}: ${B8(K.error.message,200)}`:"failed";X.push(`failed at ${$$(K.settledAt??K.updatedAt)} (${G})`)}if(K.summary!==void 0)X.push(`summary: ${B8(JSON.stringify(K.summary),300)}`);if(K.orphaned)X.push("its tool call was lost when the turn that started it was cut short");return X.join("; ")}),"</jobs>"].join(`
3
3
  `)}function $$(J){return new Date(J).toISOString().replace(/\.\d{3}Z$/,"Z")}function B8(J,$){return J.length<=$?J:`${J.slice(0,$-1)}\u2026`}class Z${table;sql;dialect;connection;constructor(J,$={}){let Q=$.table??"gemi_agent_jobs";if(!/^[A-Za-z_][A-Za-z0-9_]*$/.test(Q))throw Error(`The agent jobs table name "${Q}" is not a plain identifier. Use letters, digits and underscores.`);this.table=Q,this.sql=J.sql,this.dialect=J.dialect,this.connection=J.name}async createTable(){for(let J of pQ(this.dialect,this.table))await this.sql.unsafe(J)}async transaction(J){if(this.connection===void 0||this.joinable())return J();return SJ(this.sql,()=>J(),{connection:this.connection})}async create(J){let $=this.q(),Q=this.clock($);await $`
4
4
  INSERT INTO ${this.name($)}
5
5
  (id, thread_id, run_id, tool_call_id, tool_name, owner, job, summary, state,
package/dist/app/App.d.ts CHANGED
@@ -19,9 +19,12 @@ export declare class App {
19
19
  */
20
20
  getRequiredViews(): Record<string, string>;
21
21
  /**
22
- * The hosts the dev server's Vite may answer: the `route.domains` root and
23
- * its subdomains, or any host when custom domains are on, since those are
24
- * only known to the app's resolver.
22
+ * The hosts the dev server's Vite may answer, besides the ones it always
23
+ * admits (`localhost`, `*.localhost`, IP addresses): the `route.domains`
24
+ * root, its subdomains and `route.domains.devHosts`. `true`, any host, only
25
+ * when the app sets `devHosts: true` itself. Custom domains are not let
26
+ * through on their own: the dev server cannot tell a real one from a host
27
+ * name pointed at it by DNS rebinding, even less so with `custom.fallback`.
25
28
  */
26
29
  devAllowedHosts(): true | string[];
27
30
  /**
@@ -40,6 +43,16 @@ export declare class App {
40
43
  * too, for a caller that is not one of the servers. Idempotent.
41
44
  */
42
45
  applyTrustedClientIp(req: Request): void;
46
+ /**
47
+ * How the servers serve static files to `req`'s host (#1015): whether the
48
+ * files copied out of `public/` are served, and whether a miss under
49
+ * `/assets` reaches the routes. Resolves the host only when a
50
+ * `route.domains` group sets either differently from the root.
51
+ */
52
+ staticFiles(req: Request): Promise<{
53
+ publicFiles: boolean;
54
+ assetRoutes: boolean;
55
+ }>;
43
56
  getRouteManifest(): Record<string, string[]>;
44
57
  private globallyGated;
45
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,SAAS,EACT,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,UAAU,CAC7E,CAAC;AAEF,UAAU,SAAS;IACjB,MAAM,EAAE,UAAU,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAS;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;gBAEhC,MAAM,EAAE,SAAS;IAoBhB,WAAW;IAIjB,gBAAgB;IAOhB,oBAAoB;IAU3B;;;OAGG;IACI,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQjD;;;;OAIG;IACI,eAAe,IAAI,IAAI,GAAG,MAAM,EAAE;IAQzC;;;;OAIG;IACI,OAAO,IAAI,eAAe,GAAG,IAAI;IAIxC;;;;;;;;OAQG;IACI,oBAAoB,CAAC,GAAG,EAAE,OAAO;IAIjC,gBAAgB;IAQvB,OAAO,CAAC,aAAa,CAAiD;IAEtE;;;;;;;OAOG;IACU,oBAAoB,CAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EACzC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GACtD,OAAO,CAAC,QAAQ,CAAC;IAcP,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgD5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAOhD,4DAA4D;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAIzC,OAAO;IAIP,KAAK;CAGb;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC"}
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../app/App.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAGxC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjE,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAChC,SAAS,EACT,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,eAAe,GAAG,OAAO,GAAG,UAAU,CAC7E,CAAC;AAEF,UAAU,SAAS;IACjB,MAAM,EAAE,UAAU,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACtC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,MAAM,CAAS;IAChB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;gBAEhC,MAAM,EAAE,SAAS;IAoBhB,WAAW;IAIjB,gBAAgB;IAOhB,oBAAoB;IAU3B;;;OAGG;IACI,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQjD;;;;;;;OAOG;IACI,eAAe,IAAI,IAAI,GAAG,MAAM,EAAE;IAWzC;;;;OAIG;IACI,OAAO,IAAI,eAAe,GAAG,IAAI;IAIxC;;;;;;;;OAQG;IACI,oBAAoB,CAAC,GAAG,EAAE,OAAO;IAIxC;;;;;OAKG;IACU,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxF,gBAAgB;IAQvB,OAAO,CAAC,aAAa,CAAiD;IAEtE;;;;;;;OAOG;IACU,oBAAoB,CAC/B,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EACzC,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GACtD,OAAO,CAAC,QAAQ,CAAC;IAcP,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IAgD5C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAOhD,4DAA4D;IACrD,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAIzC,OAAO;IAIP,KAAK;CAGb;AAED,MAAM,MAAM,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC"}
package/dist/app/index.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{Ea as a}from"../chunk-g548q257.js";import"../chunk-jd079awh.js";import"../chunk-9wcv7e1a.js";export{a as App};
2
+ import{Ea as a}from"../chunk-ktfc7jmg.js";import"../chunk-jd079awh.js";import"../chunk-9wcv7e1a.js";export{a as App};
3
3
 
4
4
  //# debugId=A7FB3B2CC8B73BFE64756E2164756E21
package/dist/bin/gemi.js CHANGED
@@ -36796,11 +36796,14 @@ class App {
36796
36796
  return views;
36797
36797
  }
36798
36798
  devAllowedHosts() {
36799
- const domains = this.kernel.domains();
36800
- if (!domains.resolver) {
36799
+ const { resolver } = this.kernel.domains();
36800
+ if (!resolver) {
36801
36801
  return [];
36802
36802
  }
36803
- return domains.acceptsCustomDomains ? true : [`.${domains.resolver.root}`];
36803
+ if (resolver.devHosts === true) {
36804
+ return true;
36805
+ }
36806
+ return [`.${resolver.root}`, ...resolver.devHosts];
36804
36807
  }
36805
36808
  sockets() {
36806
36809
  return this.kernel.sockets.call(this.kernel);
@@ -36808,6 +36811,9 @@ class App {
36808
36811
  applyTrustedClientIp(req) {
36809
36812
  this.kernel.domains().applyClientIp(req);
36810
36813
  }
36814
+ async staticFiles(req) {
36815
+ return this.kernel.run.call(this.kernel, () => this.kernel.domains().staticFiles(req));
36816
+ }
36811
36817
  getRouteManifest() {
36812
36818
  return this.kernel.viewRoutes().routeManifest;
36813
36819
  }
@@ -42341,5 +42347,5 @@ program.command("app:route-manifest").action(async () => {
42341
42347
  });
42342
42348
  program.parse();
42343
42349
 
42344
- //# debugId=70DF14F54FA6EEB564756E2164756E21
42350
+ //# debugId=9B84B31BF282F29E64756E2164756E21
42345
42351
  //# sourceMappingURL=gemi.js.map