@zonease/aiworker-cli 0.10.1 → 0.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/aiworker-bun.js +1 -1
- package/package.json +1 -1
- package/web/fleet/assets/index-Cs9_ieMw.css +2 -0
- package/web/fleet/index.html +2 -2
- package/web/worker/assets/index-Cs9_ieMw.css +2 -0
- package/web/worker/assets/{index-CQiYA5i6.js → index-K99vOXUf.js} +1 -1
- package/web/worker/index.html +2 -2
- package/web/fleet/assets/index-MsglqJ8f.css +0 -2
- package/web/worker/assets/index-MsglqJ8f.css +0 -2
- /package/web/fleet/assets/{index-mArguTkr.js → index-RizR7tk6.js} +0 -0
package/README.md
CHANGED
|
@@ -273,13 +273,13 @@ New features go through the `/pma` skill in three stages: investigate → propos
|
|
|
273
273
|
|
|
274
274
|
> Before going to production, read the conformance table and residual-boundary section in [`docs/governance-node-status.md`](docs/governance-node-status.md). Pre-1.0 the CLI / API / config does not guarantee backwards compatibility (an explicit AGENTS.md commitment).
|
|
275
275
|
|
|
276
|
-
CLI npm latest: **0.10.
|
|
276
|
+
CLI npm latest: **0.10.2**.
|
|
277
277
|
|
|
278
278
|
| Module | Status |
|
|
279
279
|
|---|---|
|
|
280
280
|
| Worker / Fleet control plane / 4 enrollment paths / 6 LLM engines / 5 channel webhooks / cron / per-tool approvals / hot reload | ✅ Production |
|
|
281
281
|
| Brain Governance Kernel (admission state machine + secret-scan defense + canonical memory boundary + truthful decision events + bypass detection) | ✅ GA |
|
|
282
|
-
| Governance Kernel regression harness (5×2 matrix on source + cli-release-local with
|
|
282
|
+
| Governance Kernel regression harness (5×2 matrix on source + cli-release-local with 800+ checks) + long-running serve multi-turn REST regression | ✅ GA |
|
|
283
283
|
| Brain admission `memory-add` materializer | ✅ MVP (other kinds return `unsupported`; post-apply rollback not yet implemented) |
|
|
284
284
|
| Heavy LLM-backed Brain decider | 🔜 opt-in; defaults to `evaluator=heuristic` `mode=observe_only` |
|
|
285
285
|
| Cross-scope hard isolation (runtime-enforced) | 🔜 currently filesystem-conventional, not runtime-isolated |
|
package/aiworker-bun.js
CHANGED
|
@@ -1767,7 +1767,7 @@ ${F.trim()}`)}var HI=10,WI=6000,D1D=5,UI=3000,QI=6000;var VI=R(()=>{$0();ZD();MQ
|
|
|
1767
1767
|
`)});if(J)G=J(G)||G;console.log(G.map((H)=>{return H.title?`${H.title}:
|
|
1768
1768
|
${H.body}`:H.body}).join(`
|
|
1769
1769
|
|
|
1770
|
-
`))}outputVersion(){let{name:D}=this.cli,{versionNumber:$}=this.cli.globalCommand;if($)console.log(`${D}/${$} ${iw}`)}checkRequiredArgs(){let D=this.args.filter(($)=>$.required).length;if(this.cli.args.length<D)throw new J5(`missing required args for command \`${this.rawName}\``)}checkUnknownOptions(){let{options:D,globalCommand:$}=this.cli;if(!this.config.allowUnknownOptions){for(let F of Object.keys(D))if(F!=="--"&&!this.hasOption(F)&&!$.hasOption(F))throw new J5(`Unknown option \`${F.length>1?`--${F}`:`-${F}`}\``)}}checkOptionValue(){let{options:D,globalCommand:$}=this.cli,F=[...$.options,...this.options];for(let X of F){let J=D[X.name.split(".")[0]];if(X.required){let G=F.some((Y)=>Y.negated&&Y.names.includes(X.name));if(J===!0||J===!1&&!G)throw new J5(`option \`${X.rawName}\` value is missing`)}}}}class pJ extends cJ{constructor(D){super("@@global@@","",{},D)}}var X5=Object.assign;class VA extends hw{constructor(D=""){super();this.name=D,this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.globalCommand=new pJ(this),this.globalCommand.usage("<command> [options]")}usage(D){return this.globalCommand.usage(D),this}command(D,$,F){let X=new cJ(D,$||"",F,this);return X.globalCommand=this.globalCommand,this.commands.push(X),X}option(D,$,F){return this.globalCommand.option(D,$,F),this}help(D){return this.globalCommand.option("-h, --help","Display this message"),this.globalCommand.helpCallback=D,this.showHelpOnExit=!0,this}version(D,$="-v, --version"){return this.globalCommand.version(D,$),this.showVersionOnExit=!0,this}example(D){return this.globalCommand.example(D),this}outputHelp(){if(this.matchedCommand)this.matchedCommand.outputHelp();else this.globalCommand.outputHelp()}outputVersion(){this.globalCommand.outputVersion()}setParsedInfo({args:D,options:$},F,X){if(this.args=D,this.options=$,F)this.matchedCommand=F;if(X)this.matchedCommandName=X;return this}unsetMatchedCommand(){this.matchedCommand=void 0,this.matchedCommandName=void 0}parse(D=lw,{run:$=!0}={}){if(this.rawArgs=D,!this.name)this.name=D[1]?dw(D[1]):"cli";let F=!0;for(let J of this.commands){let G=this.mri(D.slice(2),J),Y=G.args[0];if(J.isMatched(Y)){F=!1;let B=X5(X5({},G),{args:G.args.slice(1)});this.setParsedInfo(B,J,Y),this.emit(`command:${Y}`,J)}}if(F){for(let J of this.commands)if(J.name===""){F=!1;let G=this.mri(D.slice(2),J);this.setParsedInfo(G,J),this.emit("command:!",J)}}if(F){let J=this.mri(D.slice(2));this.setParsedInfo(J)}if(this.options.help&&this.showHelpOnExit)this.outputHelp(),$=!1,this.unsetMatchedCommand();if(this.options.version&&this.showVersionOnExit&&this.matchedCommandName==null)this.outputVersion(),$=!1,this.unsetMatchedCommand();let X={args:this.args,options:this.options};if($)this.runMatchedCommand();if(!this.matchedCommand&&this.args[0])this.emit("command:*");return X}mri(D,$){let F=[...this.globalCommand.options,...$?$.options:[]],X=uw(F),J=[],G=D.indexOf("--");if(G>-1)J=D.slice(G+1),D=D.slice(0,G);let Y=xw(D,X);Y=Object.keys(Y).reduce((V,A)=>{return X5(X5({},V),{[UA(A)]:Y[A]})},{_:[]});let B=Y._,H={"--":J},U=$&&$.config.ignoreOptionDefaultValue?$.config.ignoreOptionDefaultValue:this.globalCommand.config.ignoreOptionDefaultValue,Q=Object.create(null);for(let V of F){if(!U&&V.config.default!==void 0)for(let A of V.names)H[A]=V.config.default;if(Array.isArray(V.config.type)){if(Q[V.name]===void 0)Q[V.name]=Object.create(null),Q[V.name].shouldTransform=!0,Q[V.name].transformFunction=V.config.type[0]}}for(let V of Object.keys(Y))if(V!=="_"){let A=V.split(".");cw(H,A,Y[V]),pw(H,Q)}return{args:B,options:H}}runMatchedCommand(){let{args:D,options:$,matchedCommand:F}=this;if(!F||!F.commandAction)return;F.checkUnknownOptions(),F.checkOptionValue(),F.checkRequiredArgs();let X=[];return F.args.forEach((J,G)=>{if(J.variadic)X.push(D.slice(G));else X.push(D[G])}),X.push($),F.commandAction.apply(this,X)}}var nw=(D="")=>new VA(D),AA=nw;HD();var k6={name:"@zonease/aiworker-cli",type:"module",version:"0.10.
|
|
1770
|
+
`))}outputVersion(){let{name:D}=this.cli,{versionNumber:$}=this.cli.globalCommand;if($)console.log(`${D}/${$} ${iw}`)}checkRequiredArgs(){let D=this.args.filter(($)=>$.required).length;if(this.cli.args.length<D)throw new J5(`missing required args for command \`${this.rawName}\``)}checkUnknownOptions(){let{options:D,globalCommand:$}=this.cli;if(!this.config.allowUnknownOptions){for(let F of Object.keys(D))if(F!=="--"&&!this.hasOption(F)&&!$.hasOption(F))throw new J5(`Unknown option \`${F.length>1?`--${F}`:`-${F}`}\``)}}checkOptionValue(){let{options:D,globalCommand:$}=this.cli,F=[...$.options,...this.options];for(let X of F){let J=D[X.name.split(".")[0]];if(X.required){let G=F.some((Y)=>Y.negated&&Y.names.includes(X.name));if(J===!0||J===!1&&!G)throw new J5(`option \`${X.rawName}\` value is missing`)}}}}class pJ extends cJ{constructor(D){super("@@global@@","",{},D)}}var X5=Object.assign;class VA extends hw{constructor(D=""){super();this.name=D,this.commands=[],this.rawArgs=[],this.args=[],this.options={},this.globalCommand=new pJ(this),this.globalCommand.usage("<command> [options]")}usage(D){return this.globalCommand.usage(D),this}command(D,$,F){let X=new cJ(D,$||"",F,this);return X.globalCommand=this.globalCommand,this.commands.push(X),X}option(D,$,F){return this.globalCommand.option(D,$,F),this}help(D){return this.globalCommand.option("-h, --help","Display this message"),this.globalCommand.helpCallback=D,this.showHelpOnExit=!0,this}version(D,$="-v, --version"){return this.globalCommand.version(D,$),this.showVersionOnExit=!0,this}example(D){return this.globalCommand.example(D),this}outputHelp(){if(this.matchedCommand)this.matchedCommand.outputHelp();else this.globalCommand.outputHelp()}outputVersion(){this.globalCommand.outputVersion()}setParsedInfo({args:D,options:$},F,X){if(this.args=D,this.options=$,F)this.matchedCommand=F;if(X)this.matchedCommandName=X;return this}unsetMatchedCommand(){this.matchedCommand=void 0,this.matchedCommandName=void 0}parse(D=lw,{run:$=!0}={}){if(this.rawArgs=D,!this.name)this.name=D[1]?dw(D[1]):"cli";let F=!0;for(let J of this.commands){let G=this.mri(D.slice(2),J),Y=G.args[0];if(J.isMatched(Y)){F=!1;let B=X5(X5({},G),{args:G.args.slice(1)});this.setParsedInfo(B,J,Y),this.emit(`command:${Y}`,J)}}if(F){for(let J of this.commands)if(J.name===""){F=!1;let G=this.mri(D.slice(2),J);this.setParsedInfo(G,J),this.emit("command:!",J)}}if(F){let J=this.mri(D.slice(2));this.setParsedInfo(J)}if(this.options.help&&this.showHelpOnExit)this.outputHelp(),$=!1,this.unsetMatchedCommand();if(this.options.version&&this.showVersionOnExit&&this.matchedCommandName==null)this.outputVersion(),$=!1,this.unsetMatchedCommand();let X={args:this.args,options:this.options};if($)this.runMatchedCommand();if(!this.matchedCommand&&this.args[0])this.emit("command:*");return X}mri(D,$){let F=[...this.globalCommand.options,...$?$.options:[]],X=uw(F),J=[],G=D.indexOf("--");if(G>-1)J=D.slice(G+1),D=D.slice(0,G);let Y=xw(D,X);Y=Object.keys(Y).reduce((V,A)=>{return X5(X5({},V),{[UA(A)]:Y[A]})},{_:[]});let B=Y._,H={"--":J},U=$&&$.config.ignoreOptionDefaultValue?$.config.ignoreOptionDefaultValue:this.globalCommand.config.ignoreOptionDefaultValue,Q=Object.create(null);for(let V of F){if(!U&&V.config.default!==void 0)for(let A of V.names)H[A]=V.config.default;if(Array.isArray(V.config.type)){if(Q[V.name]===void 0)Q[V.name]=Object.create(null),Q[V.name].shouldTransform=!0,Q[V.name].transformFunction=V.config.type[0]}}for(let V of Object.keys(Y))if(V!=="_"){let A=V.split(".");cw(H,A,Y[V]),pw(H,Q)}return{args:B,options:H}}runMatchedCommand(){let{args:D,options:$,matchedCommand:F}=this;if(!F||!F.commandAction)return;F.checkUnknownOptions(),F.checkOptionValue(),F.checkRequiredArgs();let X=[];return F.args.forEach((J,G)=>{if(J.variadic)X.push(D.slice(G));else X.push(D[G])}),X.push($),F.commandAction.apply(this,X)}}var nw=(D="")=>new VA(D),AA=nw;HD();var k6={name:"@zonease/aiworker-cli",type:"module",version:"0.10.2",description:"AIWorker CLI \u2014 self-hosted Project Brain and Worker/Fleet aggregation runtime",license:"MIT",homepage:"https://github.com/ZonEaseTech/aiworker#readme",repository:{type:"git",url:"git+https://github.com/ZonEaseTech/aiworker.git"},publishConfig:{access:"public"},bin:{aiworker:"./dist/aiworker.js"},files:["README.md","dist/"],engines:{bun:">=1.1"},scripts:{typecheck:"tsc --noEmit",test:"bun test --timeout=15000","test:stress":"bun test --timeout=15000 --rerun-each=3 src/commands/worker/init.integration.test.ts src/commands/worker/sessions.test.ts",build:"bun run --filter '@zonease/aiworker-web' build && bun run build:bundle","build:bundle":"bun build --target=bun --minify --outfile=dist/aiworker-bun.js src/aiworker.ts && bun scripts/build-publish-manifest.ts",prepublishOnly:"bun run build","smoke:aiworker-run":"bun scripts/smoke-aiworker-run.ts","smoke:aiworker-fleet":"bun scripts/smoke-aiworker-fleet.ts"},devDependencies:{"@types/bun":"^1.2.13","@zonease/aiworker-api":"workspace:*","@zonease/aiworker-core":"workspace:*","@zonease/aiworker-fs-layout":"workspace:*","@zonease/aiworker-gateway":"workspace:*","@zonease/aiworker-gateway-proto":"workspace:*","@zonease/aiworker-shared":"workspace:*","@zonease/aiworker-storage-sqlite":"workspace:*",cac:"^6.7.14",consola:"^3.4.2",typescript:"^5.8.3",yaml:"^2.7.1"}};HD();import $R from"process";Z0();class I0 extends Error{code;constructor(D,$="operator_ws_error"){super(D);this.code=$;this.name="OperatorWsError"}}function iZ(){let D=null,$=!1,F=!1,X=new Map,J=new Map;function G(Z){for(let[,O]of X){if(O.timer)clearTimeout(O.timer);O.signalCleanup?.(),O.reject(Z)}X.clear()}function Y(Z){let O=X.get(Z.id);if(!O)return;if(X.delete(Z.id),O.timer)clearTimeout(O.timer);if(O.signalCleanup?.(),Z.ok)O.resolve(Z.result);else{let j=Z.error;O.reject(new I0(`${j.code}: ${j.message}`,j.code))}}function B(Z){let O=J.get(Z.name);if(!O||O.size===0)return;for(let j of O)try{j(Z.payload)}catch{}}function H(Z){let O=Q1(Z);if(!O.ok)return;let j=O.frame;if(j.type==="response")Y(j);else if(j.type==="event")B(j)}async function U(Z){if($)throw new I0("aiworker client \u5DF2\u7ECF\u8FDE\u63A5","already_connected");let O=Z.timeoutMs??1e4;await new Promise((j,P)=>{let T=!1,h;try{h=new WebSocket(Z.url)}catch(N){P(new I0(`WebSocket \u6784\u9020\u5931\u8D25 (${Z.url}): ${N instanceof Error?N.message:String(N)}`,"ws_construct_failed"));return}D=h;let q=setTimeout(()=>{if(T)return;T=!0;try{h.close()}catch{}P(new I0(`\u8FDE\u63A5 gateway \u8D85\u65F6 (>${O}ms): ${Z.url}`,"connect_timeout"))},O);h.onopen=()=>{let N={type:"connect",role:l8.OPERATOR,agentId:Z.deviceId,deviceId:Z.deviceId,auth:{token:Z.token},...Z.meta?{meta:Z.meta}:{}};try{h.send(dD(N))}catch(w){if(T)return;T=!0,clearTimeout(q),P(new I0(`\u53D1\u9001 connect \u5E27\u5931\u8D25: ${w instanceof Error?w.message:String(w)}`,"connect_send_failed"));return}if(!T)T=!0,clearTimeout(q),$=!0,j()},h.onmessage=(N)=>{let w=typeof N.data==="string"?N.data:N.data instanceof ArrayBuffer?new TextDecoder().decode(N.data):String(N.data);H(w)},h.onerror=(N)=>{if(T)return;T=!0,clearTimeout(q);let w=N.message??"unknown";P(new I0(`WS \u8FDE\u63A5\u9519\u8BEF: ${w}`,"ws_error"))},h.onclose=(N)=>{if(F=!0,$=!1,G(new I0(`WS \u5DF2\u5173\u95ED (code=${N.code}, reason=${N.reason||"n/a"})`,"ws_closed")),!T)T=!0,clearTimeout(q),P(new I0(`WS \u5728\u63E1\u624B\u9636\u6BB5\u88AB\u5173\u95ED (code=${N.code})`,"ws_closed_early"))}})}function Q(){if(!$||F||D===null||D.readyState!==WebSocket.OPEN)throw new I0("aiworker client \u672A\u8FDE\u63A5\u6216\u5DF2\u5173\u95ED","not_connected")}async function V(Z,O,j){Q();let P=crypto.randomUUID(),T={type:"request",id:P,method:Z,...O===void 0?{}:{params:O}};return await new Promise((h,q)=>{let N=j?.timeoutMs??30000,w=null,i=null,I={resolve:h,reject:q,timer:null,signalCleanup:null};if(w=setTimeout(()=>{X.delete(P),i?.(),q(new I0(`request ${Z} \u8D85\u65F6 (>${N}ms)`,"request_timeout"))},N),I.timer=w,j?.signal){let x=j.signal;if(x.aborted){X.delete(P),clearTimeout(w),q(x.reason??new I0(`request ${Z} \u88AB abort`,"aborted"));return}let y=()=>{if(X.delete(P),w)clearTimeout(w);q(x.reason??new I0(`request ${Z} \u88AB abort`,"aborted"))};x.addEventListener("abort",y,{once:!0}),i=()=>x.removeEventListener("abort",y),I.signalCleanup=i}X.set(P,I);try{D?.send(dD(T))}catch(x){if(X.delete(P),w)clearTimeout(w);i?.(),q(new I0(`request ${Z} \u53D1\u9001\u5931\u8D25: ${x instanceof Error?x.message:String(x)}`,"send_failed"))}})}async function A(Z,O,j){if(!o$(Z))throw new I0(`method ${Z} \u672A\u5728 @zonease/aiworker-gateway-proto \u6CE8\u518C`,"unknown_method");return await V(Z,O,j)}function K(Z,O){if(!KG(Z));let j=J.get(Z);if(!j)j=new Set,J.set(Z,j);return j.add(O),()=>{let P=J.get(Z);if(!P)return;if(P.delete(O),P.size===0)J.delete(Z)}}async function M(Z,O){if(!D||F)return;await new Promise((j)=>{let P=D;if(!P){j();return}if(P.readyState===WebSocket.CLOSED){F=!0,$=!1,j();return}let T=P.onclose;P.onclose=(h)=>{if(typeof T==="function")T.call(P,h);j()};try{P.close(Z,O)}catch{}})}function C(){return $&&!F&&D!==null&&D.readyState===WebSocket.OPEN}return{connect:U,request:A,requestRaw:V,onEvent:K,close:M,isOpen:C}}r8();async function bD(D,$={}){let F=await GF(),X=($.createClient??iZ)();try{await X.connect({url:z7($.gatewayUrl??F.gatewayUrl),deviceId:F.deviceId,token:$.token??F.deviceToken,...$.connectTimeoutMs===void 0?{}:{timeoutMs:$.connectTimeoutMs}});let J=await D({client:X,state:F});return await X.close(1000,"aiworker session done"),J}catch(J){try{await X.close(1011,"aiworker session error")}catch{}throw J}}function rD(D){let $=JSON.stringify(D,null,2);$R.stdout.write(`${$}
|
|
1771
1771
|
`)}function l2(D){$R.stdout.write(`${JSON.stringify(D)}
|
|
1772
1772
|
`)}function LD(D){if(!(D instanceof I0))return 1;switch(D.code){case"NOT_FOUND":case"unknown_method":return 2;case"request_timeout":case"connect_timeout":return 3;case"ws_closed":case"ws_closed_early":case"not_connected":return 4;default:return 1}}async function FR(D={}){try{let $=await bD(async({client:F})=>{if(D.workerId!==void 0&&D.workerId.length>0)return await F.request("approval.list",{workerId:D.workerId});let J=(await F.request("workers.list",{})).workers.filter((Y)=>Y.online).map((Y)=>Y.workerId),G=[];for(let Y of J)try{let B=await F.request("approval.list",{workerId:Y});for(let H of B.approvals)G.push(H)}catch(B){_.warn(`approval.list ${Y} \u5931\u8D25: ${B instanceof Error?B.message:String(B)}`)}return{approvals:G}});return rD($),0}catch($){return _.error(`fleet approvals list \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function XR(D){try{let $=await bD(async({client:F})=>{return await F.request("approval.grant",{workerId:D.workerId,taskId:D.taskId,toolCallId:D.toolCallId,decision:D.deny===!0?"deny":"allow"})});return rD($),0}catch($){return _.error(`fleet approvals grant \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}Z0();HD();async function JR(D){let $=D.timeoutMs??120000;try{return await bD(async({client:F})=>{return await new Promise((X)=>{let J=!1,G=(Q)=>{if(J)return;J=!0,X(Q)},Y=setTimeout(()=>{l2({kind:"error",payload:{code:"timeout",message:`chat \u7B49\u5F85 agent.done \u8D85\u65F6 (>${$}ms)`}}),G(3)},$),B=D.workerId,H=(Q)=>{if(Q===null||typeof Q!=="object")return!1;let V=Q.workerId;return typeof V==="string"&&V===B},U=[];U.push(F.onEvent(YD.CHAT_MESSAGE,(Q)=>{if(!H(Q))return;l2({kind:YD.CHAT_MESSAGE,payload:Q})})),U.push(F.onEvent(YD.AGENT_THINKING,(Q)=>{if(!H(Q))return;l2({kind:YD.AGENT_THINKING,payload:Q})})),U.push(F.onEvent(YD.AGENT_TOOL_CALL,(Q)=>{if(!H(Q))return;l2({kind:YD.AGENT_TOOL_CALL,payload:Q})})),U.push(F.onEvent(YD.AGENT_DONE,(Q)=>{if(!H(Q))return;l2({kind:"done",payload:Q}),clearTimeout(Y);for(let V of U)V();G(0)})),F.request("chat.send",{workerId:D.workerId,content:D.content,...D.conversationId===void 0?{}:{conversationId:D.conversationId}},{timeoutMs:Math.min($,30000)}).then((Q)=>{l2({kind:"accepted",payload:Q})}).catch((Q)=>{l2({kind:"error",payload:{code:"request_failed",message:Q instanceof Error?Q.message:String(Q)}}),clearTimeout(Y);for(let V of U)V();G(LD(Q))})})})}catch(F){return _.error(`chat \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),LD(F)}}HD();async function GR(D){try{let $=await bD(async({client:F})=>{return await F.request("config.get",{workerId:D})});return rD($),0}catch($){return _.error(`fleet config get \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function YR(D){let $;try{$=JSON.parse(D.configJson)}catch(F){return _.error(`fleet config set \u53C2\u6570\u4E0D\u662F\u5408\u6CD5 JSON: ${F instanceof Error?F.message:String(F)}`),2}try{let F=await bD(async({client:X})=>{return await X.request("config.put",{workerId:D.workerId,ifMatch:D.ifMatch,config:$})});return rD(F),0}catch(F){return _.error(`fleet config set \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),LD(F)}}HD();async function BR(D={}){let $=D.withSession??bD,F=D.printJson??rD,X=D.errorToExitCode??LD;try{let J=await $(async({client:G})=>{return await G.request("enroll.list",{})});return F(J),0}catch(J){return _.error(`fleet enroll list \u5931\u8D25: ${J instanceof Error?J.message:String(J)}`),X(J)}}async function HR(D,$={}){let F=$.withSession??bD,X=$.printJson??rD,J=$.errorToExitCode??LD;try{let G=await F(async({client:Y})=>{return await Y.request("enroll.approve",{otp:D})});return _.success(`\u5DF2\u6279\u51C6 OTP ${D}\uFF0CworkerId=${G.workerId}`),X({workerId:G.workerId,deviceToken:G.deviceToken}),0}catch(G){return _.error(`fleet enroll approve \u5931\u8D25: ${G instanceof Error?G.message:String(G)}`),J(G)}}async function WR(D,$={}){let F=$.withSession??bD,X=$.printJson??rD,J=$.errorToExitCode??LD;try{let G=await F(async({client:Y})=>{return await Y.request("enroll.reject",{otp:D})});if(G.rejected)_.info(`\u5DF2\u62D2\u7EDD OTP ${D}`);else _.warn(`OTP ${D} \u4E0D\u5B58\u5728\u6216\u5DF2\u8FC7\u671F`);return X(G),0}catch(G){return _.error(`fleet enroll reject \u5931\u8D25: ${G instanceof Error?G.message:String(G)}`),J(G)}}Z0();HD();async function UR(D){let $=D.follow===!0,F=D.timeoutMs??($?3600000:5000);try{return await bD(async({client:X})=>{return await new Promise((J)=>{let G=!1,Y=(U)=>{if(G)return;G=!0,J(U)},B=X.onEvent(YD.LOGS_LINE,(U)=>{if(U===null||typeof U!=="object")return;let Q=U.workerId;if(typeof Q!=="string"||Q!==D.workerId)return;l2(U)}),H=setTimeout(()=>{B(),Y(0)},F);X.request("logs.tail",{workerId:D.workerId,follow:$,...D.tail===void 0?{}:{lines:D.tail}}).then(()=>{}).catch((U)=>{B(),clearTimeout(H),l2({kind:"error",payload:{code:"request_failed",message:U instanceof Error?U.message:String(U)}}),Y(LD(U))})})})}catch(X){return _.error(`logs \u5931\u8D25: ${X instanceof Error?X.message:String(X)}`),LD(X)}}HD();r8();async function QR(D,$={}){let F=$.withSession??bD,X=$.patchOperatorState??n8,J=$.printJson??rD,G=$.errorToExitCode??LD;try{let Y=await F(async({client:B})=>{return await B.request("workers.pair",{workerBaseUrl:D.workerUrl,bootstrapToken:D.bootstrapToken,...D.displayName===void 0?{}:{displayName:D.displayName}})},D.url===void 0?{}:{gatewayUrl:D.url});return await X({...D.url===void 0?{}:{gatewayUrl:D.url},deviceToken:Y.deviceToken,defaultWorkerId:Y.workerId}),_.success(`\u5DF2\u914D\u5BF9 worker ${Y.workerId}`),J({workerId:Y.workerId}),0}catch(Y){return _.error(`fleet pair \u5931\u8D25: ${Y instanceof Error?Y.message:String(Y)}`),G(Y)}}HD();var VR=["web","line","telegram","lark","whatsapp"];function Ki(D){if(!VR.includes(D))throw Error(`\u65E0\u6548 channel "${D}"\uFF0C\u53EF\u9009\u503C\uFF1A${VR.join(", ")}`);return D}async function AR(D){try{let $=await bD(async({client:F})=>{return await F.request("cron.list",{workerId:D})});return rD($),0}catch($){return _.error(`fleet schedule list \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function KR(D){try{let $=Ki(D.channel),F={expression:D.expression,prompt:D.prompt,channel:$,chatId:D.chatId};if(D.accountId!==void 0)F.accountId=D.accountId;if(D.enabled!==void 0)F.enabled=D.enabled;let X=await bD(async({client:J})=>{return await J.request("cron.add",{workerId:D.workerId,job:F})});return rD(X),0}catch($){return _.error(`fleet schedule add \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function _R(D,$){try{let F=await bD(async({client:X})=>{return await X.request("cron.remove",{workerId:D,jobId:$})});return rD(F),0}catch(F){return _.error(`fleet schedule remove \u5931\u8D25: ${F instanceof Error?F.message:String(F)}`),LD(F)}}HD();async function CR(D){try{let $=await bD(async({client:F})=>{return await F.request("token.rotate",{workerId:D})});return rD($),0}catch($){return _.error(`fleet token rotate \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}HD();async function MR(){try{let D=await bD(async({client:$})=>{return await $.request("workers.list",{})});return rD(D),0}catch(D){return _.error(`workers list \u5931\u8D25: ${D instanceof Error?D.message:String(D)}`),LD(D)}}async function ZR(D){try{let $=await bD(async({client:F})=>{return await F.request("workers.info",{workerId:D})});return rD($),0}catch($){return _.error(`workers info \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function RR(D={}){try{let $=await bD(async({client:X})=>{let J={...D.env??{}};if(D.forceId!==void 0&&D.forceId.length>0)J.AIWORKER_FORCE_ID=D.forceId;return await X.request("workers.launch",{...D.displayName===void 0?{}:{displayName:D.displayName},...D.image===void 0?{}:{image:D.image},...Object.keys(J).length===0?{}:{env:J}})}),{patchOperatorState:F}=await Promise.resolve().then(() => (r8(),vB));return await F({deviceToken:$.deviceToken,defaultWorkerId:$.workerId}),_.success(`\u5DF2 launch worker ${$.workerId}`),rD({workerId:$.workerId}),0}catch($){return _.error(`workers launch \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function OR(D){try{let $=await bD(async({client:F})=>{return await F.request("workers.stop",{workerId:D})});return rD($),0}catch($){return _.error(`workers stop \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}async function ER(D){try{let $=await bD(async({client:G})=>{return await G.request("workers.remove",{workerId:D})}),{loadOperatorState:F,saveOperatorState:X}=await Promise.resolve().then(() => (r8(),vB)),J=await F();if(J.defaultWorkerId===D){let G={...J};delete G.defaultWorkerId,await X(G)}return rD($),0}catch($){return _.error(`workers remove \u5931\u8D25: ${$ instanceof Error?$.message:String($)}`),LD($)}}import sF from"process";import{createHash as Xr}from"crypto";Z0();kH();fH();import{existsSync as PE,mkdirSync as bi}from"fs";import i7 from"path";import{fileURLToPath as fi}from"url";import{Database as gi}from"bun:sqlite";SF();var gH={};z8(gH,{registeredWorkers:()=>xD,auditEvents:()=>w1});var xD=Q0("registered_workers",{id:L("id").primaryKey(),baseUrl:L("base_url").notNull(),displayName:L("display_name").notNull(),apiTokenEnc:L("api_token_enc").notNull(),nonce:L("nonce").notNull(),authTag:L("auth_tag").notNull(),addedAt:L("added_at").notNull().$defaultFn(()=>new Date().toISOString()),addedBy:L("added_by").$type().notNull(),lastSeenAt:L("last_seen_at"),lastSeenState:L("last_seen_state").$type(),lastConfigVersion:vD("last_config_version")}),w1=Q0("audit_events",{id:vD("id").primaryKey({autoIncrement:!0}),at:L("at").notNull().$defaultFn(()=>new Date().toISOString()),actor:L("actor").notNull(),action:L("action").notNull(),workerId:L("worker_id"),detail:L("detail",{mode:"json"}).$type()},(D)=>({workerIdIdx:Y0("audit_events_worker_id_idx").on(D.workerId)}));var LE=i7.dirname(fi(import.meta.url));function hi(D){let $=i7.resolve(LE,"../../drizzle",D);if(PE($))return $;let F=i7.resolve(LE,"drizzle",D);if(PE(F))return F;return $}var hH=hi("fleet"),n7=null;function vi(D){let $=D===":memory:"?D:i7.resolve(D);try{if($!==":memory:")bi(i7.dirname($),{recursive:!0,mode:448});let F=new gi($,{create:!0});return F.exec("PRAGMA journal_mode = WAL"),F.exec("PRAGMA foreign_keys = ON"),Z3(F,{schema:gH})}catch(F){let X=F instanceof Error?F.message:String(F);throw Error(`Unable to open fleet database at ${$}. Ensure the parent directory exists and is writable, or set AIWORKER_FLEET_DB_PATH to a writable location. Original error: ${X}`)}}function qE(D){return n7=vi(D),n7}function vH(){if(!n7)throw Error("Fleet database not initialized. Call initFleetDb() first.");return n7}function xH(){n7=null}function zE(D=hH){wF(vH(),{migrationsFolder:D})}HD();$0();ZD();jD();import IE from"path";import xi from"process";var yi=W.object({AIWORKER_GATEWAY_PORT:W.coerce.number().int().positive().max(65535).default(9218),AIWORKER_GATEWAY_HOST:W.string().min(1).default("127.0.0.1"),AIWORKER_ADMIN_EXTERNAL_AUTH:W.enum(["1","true","0","false"]).default("0").transform(W7),INTERNAL_SHARED_SECRET:W.string().min(16).optional(),NODE_ENV:W.enum(["development","production","test"]).default("development"),AIWORKER_MASTER_KEY:W.string().regex(/^[0-9a-f]{64}$/,"AIWORKER_MASTER_KEY must be 32-byte hex (64 hex chars)").optional(),AIWORKER_FLEET_DB_PATH:W.string().optional(),AIWORKER_GATEWAY_CAN_LAUNCH:W.enum(["true","false"]).default("false").transform((D)=>D==="true"),AIWORKER_MAX_WORKERS:W.coerce.number().int().positive().optional(),AIWORKER_JOIN_TOKEN:W.string().min(16).optional(),AIWORKER_ENROLL_OTP_TTL_SEC:W.coerce.number().int().min(30).max(3600).default(300),DOCKER_HOST:W.string().default("/var/run/docker.sock"),AIWORKER_IMAGE:W.string().optional(),AIWORKER_NETWORK:W.string().default("aiworker_default"),WORKER_DATA_ROOT:W.string().optional(),WORKER_MEMORY_LIMIT:W.string().optional(),WORKER_CPU_LIMIT:W.coerce.number().optional(),AIWORKER_LAUNCH_BASE_URL_TEMPLATE:W.string().default("http://{containerName}:9217")}).superRefine((D,$)=>{if(!D.AIWORKER_GATEWAY_CAN_LAUNCH)return;if(!D.INTERNAL_SHARED_SECRET)$.addIssue({code:W.ZodIssueCode.custom,path:["INTERNAL_SHARED_SECRET"],message:"INTERNAL_SHARED_SECRET is required when AIWORKER_GATEWAY_CAN_LAUNCH=true"});let F=[["AIWORKER_IMAGE",D.AIWORKER_IMAGE],["WORKER_DATA_ROOT",D.WORKER_DATA_ROOT],["WORKER_MEMORY_LIMIT",D.WORKER_MEMORY_LIMIT],["WORKER_CPU_LIMIT",D.WORKER_CPU_LIMIT]];for(let[X,J]of F)if(J===void 0||J==="")$.addIssue({code:W.ZodIssueCode.custom,path:[X],message:`${X} is required when AIWORKER_GATEWAY_CAN_LAUNCH=true`})});function SE(){let D=yi.parse(xi.env);return{port:D.AIWORKER_GATEWAY_PORT,host:D.AIWORKER_GATEWAY_HOST,adminExternalAuthAcknowledged:D.AIWORKER_ADMIN_EXTERNAL_AUTH,internalSharedSecret:D.INTERNAL_SHARED_SECRET,masterKeyHex:D.AIWORKER_MASTER_KEY,fleetDbPath:ui(D.AIWORKER_FLEET_DB_PATH),canLaunch:D.AIWORKER_GATEWAY_CAN_LAUNCH,maxWorkers:D.AIWORKER_MAX_WORKERS,joinToken:D.AIWORKER_JOIN_TOKEN,enrollOtpTtlSec:D.AIWORKER_ENROLL_OTP_TTL_SEC,nodeEnv:D.NODE_ENV,supervisor:{dockerHost:D.DOCKER_HOST,image:D.AIWORKER_IMAGE,network:D.AIWORKER_NETWORK,workerDataRoot:D.WORKER_DATA_ROOT,workerMemoryLimit:D.WORKER_MEMORY_LIMIT,workerCpuLimit:D.WORKER_CPU_LIMIT,launchBaseUrlTemplate:D.AIWORKER_LAUNCH_BASE_URL_TEMPLATE}}}function ui(D){if(D===":memory:")return D;let $=D&&D.length>0?D:IE.join(d2(),"fleet.db");return IE.resolve($)}Z0();function Y2(D,$){let F=dD($);D.forEach((X)=>{try{X.ws.send(F)}catch{}})}class kF{windowMs;threshold;blockMs;now;entries=new Map;constructor(D={}){this.windowMs=D.windowMs??60000,this.threshold=D.threshold??5,this.blockMs=D.blockMs??600000,this.now=D.now??(()=>Date.now())}isBlocked(D){if(!D)return{blocked:!1,retryAfterMs:0,blockUntil:0};let $=this.entries.get(D);if(!$)return{blocked:!1,retryAfterMs:0,blockUntil:0};let F=this.now();if($.blockUntil>F)return{blocked:!0,retryAfterMs:$.blockUntil-F,blockUntil:$.blockUntil};return{blocked:!1,retryAfterMs:0,blockUntil:0}}recordFailure(D){if(!D)return{blockedNow:!1,fails:0,blockUntil:0};let $=this.now(),F=this.entries.get(D);if(F&&F.blockUntil>$)return{blockedNow:!1,fails:F.fails,blockUntil:F.blockUntil};if(!F||$-F.firstFailAt>this.windowMs)F={fails:1,firstFailAt:$,blockUntil:0};else F.fails+=1;let X=!1;if(F.fails>=this.threshold&&F.blockUntil===0)F.blockUntil=$+this.blockMs,X=!0;return this.entries.set(D,F),{blockedNow:X,fails:F.fails,blockUntil:F.blockUntil}}recordSuccess(D){if(!D)return;this.entries.delete(D)}prune(){let D=this.now(),$=0;for(let[F,X]of this.entries){if(X.blockUntil>D)continue;if(D-X.firstFailAt>this.windowMs)this.entries.delete(F),$+=1}return $}snapshot(D){return this.entries.get(D)}size(){return this.entries.size}clear(){this.entries.clear()}}class bF{map=new Map;timeoutMs;now;idFactory;onExpire;timers=new Map;constructor(D={}){this.timeoutMs=D.timeoutMs??60000,this.now=D.now??(()=>Date.now()),this.idFactory=D.idFactory??(()=>crypto.randomUUID()),this.onExpire=D.onExpire}allocate(D){let $=this.idFactory(),F={...D,gatewayRequestId:$,createdAt:this.now()};if(this.map.set($,F),this.timeoutMs>0){let X=setTimeout(()=>{let J=this.map.get($);if(!J)return;this.map.delete($),this.timers.delete($),this.onExpire?.(J,"timeout")},this.timeoutMs);if(typeof X.unref==="function")X.unref();this.timers.set($,X)}return F}consume(D){let $=this.map.get(D);if(!$)return;return this.map.delete(D),this.clearTimer(D),$}cancelByOperator(D){let $=[];for(let F of this.map.values())if(F.operatorWs===D)$.push(F);for(let F of $)this.map.delete(F.gatewayRequestId),this.clearTimer(F.gatewayRequestId),this.onExpire?.(F,"operator_gone");return $}cancelByWorker(D){let $=[];for(let F of this.map.values())if(F.workerId===D)$.push(F);for(let F of $)this.map.delete(F.gatewayRequestId),this.clearTimer(F.gatewayRequestId),this.onExpire?.(F,"node_gone");return $}size(){return this.map.size}dispose(){for(let D of this.timers.values())clearTimeout(D);this.timers.clear(),this.map.clear()}clearTimer(D){let $=this.timers.get(D);if($)clearTimeout($),this.timers.delete(D)}}class fF{byWorkerId=new Map;byWs=new WeakMap;register(D){let $=this.byWorkerId.get(D.workerId);if(this.byWorkerId.set(D.workerId,D),this.byWs.set(D.ws,D),$)return this.byWs.delete($.ws),{replaced:$};return{}}unregisterByWs(D){let $=this.byWs.get(D);if(!$)return;let F=this.byWorkerId.get($.workerId);if(F&&F.ws===D)this.byWorkerId.delete($.workerId);return this.byWs.delete(D),$}get(D){return this.byWorkerId.get(D)}has(D){return this.byWorkerId.has(D)}list(){return Array.from(this.byWorkerId.values())}size(){return this.byWorkerId.size}}class gF{byWs=new Map;register(D){this.byWs.set(D.ws,D)}unregister(D){let $=this.byWs.get(D);if(!$)return;return this.byWs.delete(D),$}list(){return Array.from(this.byWs.values())}size(){return this.byWs.size}forEach(D){this.byWs.forEach(D)}}import{randomBytes as mi}from"crypto";var yH="ABCDEFGHJKMNPQRSTVWXYZ23456789",TE=4,ci=5;class hF{ttlMs;onExpire;generator;entries=new Map;wsToOtp=new WeakMap;disposed=!1;constructor(D){if(!Number.isFinite(D.ttlMs)||D.ttlMs<=0)throw Error("PendingEnrollmentRegistry: ttlMs \u5FC5\u987B\u4E3A\u6B63\u6570");this.ttlMs=D.ttlMs,this.onExpire=D.onExpire,this.generator=D.generateOtp??pi}submit(D){if(this.disposed)throw Error("PendingEnrollmentRegistry: already disposed");let $=this.allocateUniqueOtp(),F=Date.now(),X=F+this.ttlMs,J={otp:$,workerId:D.workerId,apiToken:D.apiToken,displayName:D.displayName,ws:D.ws,submittedAt:F,expiresAt:X,timer:setTimeout(()=>this.handleExpire($),this.ttlMs)};return this.entries.set($,J),this.wsToOtp.set(D.ws,$),{otp:$,expiresAt:X}}list(){return Array.from(this.entries.values()).map((D)=>({otp:D.otp,workerId:D.workerId,displayName:D.displayName,submittedAt:D.submittedAt,expiresAt:D.expiresAt}))}approve(D){return this.popInternal(D)}reject(D){return this.popInternal(D)}has(D){return this.entries.has(D)}removeByWs(D){let $=this.wsToOtp.get(D);if(!$)return;return this.popInternal($)}size(){return this.entries.size}dispose(){if(this.disposed)return;this.disposed=!0;for(let D of this.entries.values())clearTimeout(D.timer);this.entries.clear()}popInternal(D){let $=this.entries.get(D);if(!$)return;clearTimeout($.timer),this.entries.delete(D),this.wsToOtp.delete($.ws);let{timer:F,...X}=$;return X}handleExpire(D){let $=this.entries.get(D);if(!$)return;if(this.entries.delete(D),this.wsToOtp.delete($.ws),!this.onExpire)return;try{let{timer:F,...X}=$;this.onExpire(X)}catch{}}allocateUniqueOtp(){for(let D=0;D<ci;D++){let $=this.generator();if(!this.entries.has($))return $}throw Error("PendingEnrollmentRegistry: failed to allocate unique OTP after retries")}}function pi(){return`${wE(TE)}-${wE(TE)}`}function wE(D){let $=mi(D),F="";for(let X=0;X<D;X++)F+=yH[$[X]%yH.length];return F}V0();import{Buffer as U8}from"buffer";import{createCipheriv as di,createDecipheriv as li,randomBytes as ii,timingSafeEqual as ni}from"crypto";var kE="aes-256-gcm",ri=12,si=32,ai=/^[0-9a-f]{64}$/;function bE(D){if(!ai.test(D))throw Error("Gateway AIWORKER_MASTER_KEY must be 32-byte hex");let $=U8.from(D,"hex");if($.length!==si)throw Error("Gateway AIWORKER_MASTER_KEY must be 32-byte hex");return $}function vF(D,$){let F=bE($),X=ii(ri),J=di(kE,F,X),G=U8.concat([J.update(D,"utf8"),J.final()]),Y=J.getAuthTag();return{ciphertext:G.toString("base64"),nonce:X.toString("base64"),authTag:Y.toString("base64")}}function xF(D,$,F,X){let J=bE(X),G=li(kE,J,U8.from($,"base64"));return G.setAuthTag(U8.from(F,"base64")),U8.concat([G.update(U8.from(D,"base64")),G.final()]).toString("utf8")}function yF(D,$){let F=U8.from(D,"utf8"),X=U8.from($,"utf8");if(F.length!==X.length)return!1;return ni(F,X)}function oi(D){return D.replace(/[\\%_]/g,($)=>`\\${$}`)}class uF{db;constructor(D){this.db=D}listRegisteredWorkers(){return this.db.select().from(xD).orderBy(OD(xD.addedAt)).all().map(($)=>{let{apiTokenEnc:F,nonce:X,authTag:J,...G}=$;return{...G,lastSeenAt:G.lastSeenAt??void 0,lastSeenState:G.lastSeenState??void 0,lastConfigVersion:G.lastConfigVersion??void 0}})}getRegisteredWorker(D){let $=this.db.select().from(xD).where(S(xD.id,D)).get();if(!$)return;let{apiTokenEnc:F,nonce:X,authTag:J,...G}=$;return{...G,lastSeenAt:G.lastSeenAt??void 0,lastSeenState:G.lastSeenState??void 0,lastConfigVersion:G.lastConfigVersion??void 0}}getRegisteredWorkerRaw(D){let $=this.db.select().from(xD).where(S(xD.id,D)).get();if(!$)return;return{...$,lastSeenAt:$.lastSeenAt??void 0,lastSeenState:$.lastSeenState??void 0,lastConfigVersion:$.lastConfigVersion??void 0}}createRegisteredWorker(D,$){let F=vF(D.apiToken,$),X=new Date().toISOString(),J=D.baseUrl.replace(/\/+$/,""),G={id:D.workerId,baseUrl:J,displayName:D.displayName,apiTokenEnc:F.ciphertext,nonce:F.nonce,authTag:F.authTag,addedAt:X,addedBy:D.addedBy??"manual",lastSeenAt:X,lastSeenState:"online",lastConfigVersion:D.configVersion};this.db.insert(xD).values(G).run(),this.db.insert(w1).values({actor:"gateway",action:"gateway.worker.paired",workerId:D.workerId,detail:{baseUrl:J,displayName:D.displayName,addedBy:G.addedBy}}).run();let{apiTokenEnc:Y,nonce:B,authTag:H,...U}=G;return{...U,lastSeenAt:U.lastSeenAt??void 0,lastSeenState:U.lastSeenState??void 0,lastConfigVersion:U.lastConfigVersion??void 0}}upsertEnrolledWorker(D,$){let F=D.baseUrl.replace(/\/+$/,""),X=new Date().toISOString(),J=this.db.select().from(xD).where(S(xD.id,D.workerId)).get();if(!J){let U=vF(D.apiToken,$),Q={id:D.workerId,baseUrl:F,displayName:D.displayName,apiTokenEnc:U.ciphertext,nonce:U.nonce,authTag:U.authTag,addedAt:X,addedBy:D.addedBy??"self-enroll",lastSeenAt:X,lastSeenState:"online",lastConfigVersion:D.configVersion};this.db.insert(xD).values(Q).run();let{apiTokenEnc:V,nonce:A,authTag:K,...M}=Q;return{kind:"created",row:{...M,lastSeenAt:M.lastSeenAt??void 0,lastSeenState:M.lastSeenState??void 0,lastConfigVersion:M.lastConfigVersion??void 0}}}if(J.displayName!==D.displayName){this.db.update(xD).set({displayName:D.displayName,lastSeenAt:X,lastSeenState:"online"}).where(S(xD.id,D.workerId)).run();let{apiTokenEnc:U,nonce:Q,authTag:V,...A}=J;return{kind:"updated",row:{...A,displayName:D.displayName,lastSeenAt:X,lastSeenState:"online",lastConfigVersion:A.lastConfigVersion??void 0}}}this.db.update(xD).set({lastSeenAt:X,lastSeenState:"online"}).where(S(xD.id,D.workerId)).run();let{apiTokenEnc:G,nonce:Y,authTag:B,...H}=J;return{kind:"unchanged",row:{...H,lastSeenAt:X,lastSeenState:"online",lastConfigVersion:H.lastConfigVersion??void 0}}}updateEncryptedToken(D,$){if(!this.db.select({id:xD.id}).from(xD).where(S(xD.id,D.workerId)).get())return!1;let X=vF(D.newToken,$);return this.db.update(xD).set({apiTokenEnc:X.ciphertext,nonce:X.nonce,authTag:X.authTag}).where(S(xD.id,D.workerId)).run(),!0}removeRegisteredWorker(D){if(!this.db.select({id:xD.id}).from(xD).where(S(xD.id,D)).get())return!1;return this.db.delete(xD).where(S(xD.id,D)).run(),!0}countRegisteredWorkers(){return this.db.select({value:EF()}).from(xD).get()?.value??0}recordAudit(D){this.db.insert(w1).values({actor:D.actor,action:D.action,workerId:D.workerId??null,detail:D.detail}).run()}listAuditEvents(D={}){let $=Math.max(1,Math.min(200,D.limit??50)),F=[];if(typeof D.before==="number"&&Number.isFinite(D.before))F.push(QF(w1.id,D.before));if(D.actionPrefix&&D.actionPrefix.length>0){let B=`${oi(D.actionPrefix)}%`;F.push(E`${w1.action} LIKE ${B} ESCAPE '\\'`)}if(D.workerId&&D.workerId.length>0)F.push(S(w1.workerId,D.workerId));let X=F.length===0?void 0:F.length===1?F[0]:TD(...F),J=this.db.select().from(w1).where(X).orderBy(OD(w1.id)).limit($+1).all(),G=J.length>$;return{events:(G?J.slice(0,$):J).map((B)=>({id:B.id,at:B.at,actor:B.actor,action:B.action,workerId:B.workerId??null,detail:B.detail??null})),hasMore:G}}}Z0();ZD();import{Buffer as vn}from"buffer";import{createHash as xn}from"crypto";import{resolve as uH,sep as ti}from"path";async function mF(D){let{webStaticDir:$}=D,F=uH($),X;try{X=ei(decodeURIComponent(D.pathnameAfterPrefix))}catch{return new Response("forbidden",{status:403})}let J=X===""?"index.html":X,G=uH(F,J);if(G!==F&&!G.startsWith(F+ti))return new Response("forbidden",{status:403});let Y=Bun.file(G);if(await Y.exists())return new Response(Y);if(!Dn(J)){let B=Bun.file(uH(F,"index.html"));if(await B.exists())return new Response(B)}return new Response("not found",{status:404})}function ei(D){let $=0;while($<D.length&&D[$]==="/")$+=1;return D.slice($)}function Dn(D){let $=D.lastIndexOf("/");return($===-1?D:D.slice($+1)).includes(".")}ZD();function fE(D){if(p8(D.host))return;if(D.internalSharedSecret&&D.internalSharedSecret.length>0)return;throw Error(`[gateway] \u62D2\u7EDD\u542F\u52A8\uFF1Ahost="${D.host}" \u975E loopback\uFF0C\u4F46\u672A\u914D\u7F6E INTERNAL_SHARED_SECRET\u3002
|
|
1773
1773
|
`+`
|
package/package.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:var(--font-family-sans);--font-mono:var(--font-family-mono);--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--leading-tight:1.25;--radius-xs:4px;--radius-sm:8px;--radius-lg:8px;--radius-xl:30px;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:var(--font-family-display);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-success:var(--success);--color-success-soft:var(--success-soft);--color-warning:var(--warning);--color-warning-soft:var(--warning-soft);--color-cohere-black:var(--cohere-black);--color-ink:var(--ink);--color-deep-green:var(--deep-green);--color-soft-stone:var(--soft-stone);--color-pale-green:var(--pale-green);--color-hairline:var(--hairline);--color-card-border:var(--card-border);--color-coral:var(--coral);--color-coral-soft:var(--coral-soft);--color-action-blue:var(--action-blue);--color-form-focus:var(--form-focus);--color-on-dark:var(--on-dark);--radius-pill:32px;--text-section:3rem;--text-section--line-height:1.15;--text-card-heading:2rem;--text-card-heading--line-height:1.2;--text-feature:1.5rem;--text-feature--line-height:1.3;--text-micro:.75rem;--text-micro--line-height:1.4;--text-micro-label:.75rem;--text-micro-label--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--font-family-display:CohereText, "Space Grotesk", Inter, ui-sans-serif, system-ui, sans-serif;--font-family-sans:"Unica77 Cohere Web", Inter, Arial, ui-sans-serif, system-ui, sans-serif;--font-family-mono:CohereMono, Arial, ui-sans-serif, system-ui, sans-serif;--cohere-black:#000;--ink:#212121;--primary:#17171c;--deep-green:#003c33;--dark-navy:#071829;--soft-stone:#eeece7;--pale-green:#edfce9;--pale-blue:#f1f5ff;--hairline:#d9d9dd;--border-light:#e5e7eb;--card-border:#f2f2f2;--muted:#f7f6f3;--muted-foreground:#616161;--slate:#75758a;--body-muted:#616161;--action-blue:#1863dc;--focus-blue:#4c6ee6;--coral:#ff7759;--coral-soft:#ffad9b;--form-focus:#9b60aa;--on-dark:#fff;--background:#fff;--foreground:var(--ink);--card:#fff;--card-foreground:var(--ink);--popover:#fff;--popover-foreground:var(--ink);--primary-foreground:#fff;--secondary:var(--soft-stone);--secondary-foreground:var(--ink);--accent:var(--pale-blue);--accent-foreground:var(--ink);--destructive:#b30000;--destructive-foreground:#fff;--border:var(--hairline);--input:var(--border-light);--ring:var(--focus-blue);--success:#003c33;--success-soft:var(--pale-green);--warning:#9a4b00;--warning-soft:#fff4de;--info:var(--action-blue);--info-soft:var(--pale-blue);--button-hover:var(--ink);--button-active:var(--cohere-black);--shadow-card-value:0 0 #0000;--shadow-popover-value:0 22px 60px #07182929;--radius:8px}[data-theme=dark]{--background:#071829;--foreground:#fff;--card:#0d2134;--card-foreground:#fff;--popover:#0d2134;--popover-foreground:#fff;--primary:#fff;--primary-foreground:#071829;--secondary:#122b42;--secondary-foreground:#fff;--muted:#10263b;--muted-foreground:#d9d9dd;--accent:#173552;--accent-foreground:#fff;--destructive:#ffad9b;--destructive-foreground:#fff;--border:#d9d9dd47;--input:#d9d9dd59;--ring:#8aa1ff;--success:#9ef0ce;--success-soft:#003c3399;--warning:#ffcf8a;--warning-soft:#fff4de1f;--info:#9fbaff;--info-soft:#f1f5ff1f;--shadow-popover-value:0 22px 60px #00000047}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-family-sans);font-feature-settings:"rlig" 1, "calt" 1;letter-spacing:0}::selection{background-color:var(--coral-soft);color:var(--ink)}}@layer components{.app-page{width:100%;min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-narrow{width:100%;max-width:var(--container-5xl);min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-header{min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-hairline);padding-bottom:calc(var(--spacing) * 5);flex-direction:column;display:flex}.app-page-title{font-family:var(--font-display);font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-foreground)}@media (width>=40rem){.app-page-title{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}}.app-page-copy{max-width:var(--container-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-page-copy{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.app-panel{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground);--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (width>=40rem){.app-panel{padding:calc(var(--spacing) * 6)}}.app-panel-soft{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-card-border);background-color:var(--color-soft-stone);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground)}@media (width>=40rem){.app-panel-soft{padding:calc(var(--spacing) * 6)}}.app-panel-dark{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.app-panel-dark{border-color:color-mix(in oklab, var(--color-on-dark) 15%, transparent)}}.app-panel-dark{background-color:var(--color-deep-green);padding:calc(var(--spacing) * 5);color:var(--color-on-dark)}@media (width>=40rem){.app-panel-dark{padding:calc(var(--spacing) * 6)}}.app-empty{border-radius:var(--radius-lg);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 8);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-empty{padding:calc(var(--spacing) * 12)}}.app-alert-error{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.app-alert-error{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.app-alert-error{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-destructive)}.app-alert-warning{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-warning);background-color:var(--color-warning-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-warning)}.app-alert-success{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-success);background-color:var(--color-success-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-success)}.app-code{border-radius:var(--radius-xs);background-color:var(--color-soft-stone);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.app-field{border-radius:var(--radius-xs);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-input);background-color:var(--color-background);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.app-field:focus-visible{border-color:var(--color-form-focus);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-ring);--tw-outline-style:none;outline-style:none}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-4{right:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-4{margin-left:calc(var(--spacing) * 4)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-64{height:calc(var(--spacing) * 64)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[420px\]{min-height:420px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-\[1\%\]{width:1%}.w-\[7rem\]{width:7rem}.w-\[10rem\]{width:10rem}.w-\[12rem\]{width:12rem}.w-\[14rem\]{width:14rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[11rem\]{max-width:11rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[60rem\]{min-width:60rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-card-border{border-color:var(--color-card-border)}.border-coral-soft{border-color:var(--color-coral-soft)}.border-destructive{border-color:var(--color-destructive)}.border-hairline{border-color:var(--color-hairline)}.border-input{border-color:var(--color-input)}.border-on-dark\/20{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/20{border-color:color-mix(in oklab, var(--color-on-dark) 20%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success{border-color:var(--color-success)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.\!bg-primary{background-color:var(--color-primary)!important}.bg-background{background-color:var(--color-background)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-cohere-black\/70{background-color:var(--color-cohere-black)}@supports (color:color-mix(in lab, red, red)){.bg-cohere-black\/70{background-color:color-mix(in oklab, var(--color-cohere-black) 70%, transparent)}}.bg-coral\/10{background-color:var(--color-coral)}@supports (color:color-mix(in lab, red, red)){.bg-coral\/10{background-color:color-mix(in oklab, var(--color-coral) 10%, transparent)}}.bg-deep-green{background-color:var(--color-deep-green)}.bg-muted-foreground\/30{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab, var(--color-muted-foreground) 30%, transparent)}}.bg-muted-foreground\/40{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-soft-stone{background-color:var(--color-soft-stone)}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-soft{background-color:var(--color-warning-soft)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-card-heading{font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height))}.text-feature{font-size:var(--text-feature);line-height:var(--tw-leading,var(--text-feature--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-micro{font-size:var(--text-micro);line-height:var(--tw-leading,var(--text-micro--line-height))}.text-micro-label{font-size:var(--text-micro-label);line-height:var(--tw-leading,var(--text-micro-label--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-primary-foreground{color:var(--color-primary-foreground)!important}.text-action-blue{color:var(--color-action-blue)}.text-card-foreground{color:var(--color-card-foreground)}.text-coral-soft{color:var(--color-coral-soft)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-on-dark,.text-on-dark\/70{color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.text-on-dark\/70{color:color-mix(in oklab, var(--color-on-dark) 70%, transparent)}}.text-pale-green{color:var(--color-pale-green)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--color-primary-foreground) 70%, transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-warning-soft{color:var(--color-warning-soft)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-hairline{-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);text-decoration-color:var(--color-hairline)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-card{--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-popover{--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-150{animation-duration:.15s}.group-\[\.toast\]\:rounded-pill:is(:where(.group).toast *){border-radius:var(--radius-pill)}.group-\[\.toast\]\:border:is(:where(.group).toast *){border-style:var(--tw-border-style);border-width:1px}.group-\[\.toast\]\:border-primary:is(:where(.group).toast *){border-color:var(--color-primary)}.group-\[\.toast\]\:bg-primary:is(:where(.group).toast *){background-color:var(--color-primary)}.group-\[\.toast\]\:bg-soft-stone:is(:where(.group).toast *){background-color:var(--color-soft-stone)}.group-\[\.toast\]\:font-medium:is(:where(.group).toast *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--color-muted-foreground)}.group-\[\.toast\]\:text-primary-foreground:is(:where(.group).toast *){color:var(--color-primary-foreground)}.group-\[\.toaster\]\:rounded-sm:is(:where(.group).toaster *){border-radius:var(--radius-sm)}.group-\[\.toaster\]\:border-hairline:is(:where(.group).toaster *){border-color:var(--color-hairline)}.group-\[\.toaster\]\:bg-background:is(:where(.group).toaster *){background-color:var(--color-background)}.group-\[\.toaster\]\:text-foreground:is(:where(.group).toaster *){color:var(--color-foreground)}.group-\[\.toaster\]\:shadow-popover:is(:where(.group).toaster *){--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:\!border-primary:hover{border-color:var(--color-primary)!important}.hover\:border-hairline:hover{border-color:var(--color-hairline)}.hover\:\!bg-primary:hover{background-color:var(--color-primary)!important}.hover\:bg-destructive:hover,.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.hover\:bg-ink:hover{background-color:var(--color-ink)}.hover\:bg-soft-stone:hover,.hover\:bg-soft-stone\/60:hover{background-color:var(--color-soft-stone)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-soft-stone\/60:hover{background-color:color-mix(in oklab, var(--color-soft-stone) 60%, transparent)}}.hover\:\!text-primary-foreground:hover{color:var(--color-primary-foreground)!important}.hover\:text-action-blue:hover{color:var(--color-action-blue)}.hover\:text-destructive-foreground:hover{color:var(--color-destructive-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-action-blue:hover{-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);text-decoration-color:var(--color-action-blue)}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-form-focus:focus-visible{border-color:var(--color-form-focus)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-cohere-black:active{background-color:var(--color-cohere-black)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[ending-style\]\:scale-95[data-ending-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[ending-style\]\:opacity-0[data-ending-style]{opacity:0}.data-\[starting-style\]\:scale-95[data-starting-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}.data-\[state\=selected\]\:bg-soft-stone[data-state=selected]{background-color:var(--color-soft-stone)}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:flex{display:flex}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-auto{width:auto}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,160px\)_minmax\(0\,120px\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,160px) minmax(0,120px) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:flex{display:flex}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(12rem\,1fr\)_auto_minmax\(12rem\,1fr\)\]{grid-template-columns:minmax(12rem,1fr) auto minmax(12rem,1fr)}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-end{justify-content:flex-end}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.lg\:max-h-none{max-height:none}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[420px\]{min-height:420px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
package/web/fleet/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="/admin/favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>AIWorker · Fleet</title>
|
|
8
|
-
<script type="module" crossorigin src="/admin/assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="/admin/assets/index-
|
|
8
|
+
<script type="module" crossorigin src="/admin/assets/index-RizR7tk6.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="/admin/assets/index-Cs9_ieMw.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:var(--font-family-sans);--font-mono:var(--font-family-mono);--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--leading-tight:1.25;--radius-xs:4px;--radius-sm:8px;--radius-lg:8px;--radius-xl:30px;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:var(--font-family-display);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-success:var(--success);--color-success-soft:var(--success-soft);--color-warning:var(--warning);--color-warning-soft:var(--warning-soft);--color-cohere-black:var(--cohere-black);--color-ink:var(--ink);--color-deep-green:var(--deep-green);--color-soft-stone:var(--soft-stone);--color-pale-green:var(--pale-green);--color-hairline:var(--hairline);--color-card-border:var(--card-border);--color-coral:var(--coral);--color-coral-soft:var(--coral-soft);--color-action-blue:var(--action-blue);--color-form-focus:var(--form-focus);--color-on-dark:var(--on-dark);--radius-pill:32px;--text-section:3rem;--text-section--line-height:1.15;--text-card-heading:2rem;--text-card-heading--line-height:1.2;--text-feature:1.5rem;--text-feature--line-height:1.3;--text-micro:.75rem;--text-micro--line-height:1.4;--text-micro-label:.75rem;--text-micro-label--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--font-family-display:CohereText, "Space Grotesk", Inter, ui-sans-serif, system-ui, sans-serif;--font-family-sans:"Unica77 Cohere Web", Inter, Arial, ui-sans-serif, system-ui, sans-serif;--font-family-mono:CohereMono, Arial, ui-sans-serif, system-ui, sans-serif;--cohere-black:#000;--ink:#212121;--primary:#17171c;--deep-green:#003c33;--dark-navy:#071829;--soft-stone:#eeece7;--pale-green:#edfce9;--pale-blue:#f1f5ff;--hairline:#d9d9dd;--border-light:#e5e7eb;--card-border:#f2f2f2;--muted:#f7f6f3;--muted-foreground:#616161;--slate:#75758a;--body-muted:#616161;--action-blue:#1863dc;--focus-blue:#4c6ee6;--coral:#ff7759;--coral-soft:#ffad9b;--form-focus:#9b60aa;--on-dark:#fff;--background:#fff;--foreground:var(--ink);--card:#fff;--card-foreground:var(--ink);--popover:#fff;--popover-foreground:var(--ink);--primary-foreground:#fff;--secondary:var(--soft-stone);--secondary-foreground:var(--ink);--accent:var(--pale-blue);--accent-foreground:var(--ink);--destructive:#b30000;--destructive-foreground:#fff;--border:var(--hairline);--input:var(--border-light);--ring:var(--focus-blue);--success:#003c33;--success-soft:var(--pale-green);--warning:#9a4b00;--warning-soft:#fff4de;--info:var(--action-blue);--info-soft:var(--pale-blue);--button-hover:var(--ink);--button-active:var(--cohere-black);--shadow-card-value:0 0 #0000;--shadow-popover-value:0 22px 60px #07182929;--radius:8px}[data-theme=dark]{--background:#071829;--foreground:#fff;--card:#0d2134;--card-foreground:#fff;--popover:#0d2134;--popover-foreground:#fff;--primary:#fff;--primary-foreground:#071829;--secondary:#122b42;--secondary-foreground:#fff;--muted:#10263b;--muted-foreground:#d9d9dd;--accent:#173552;--accent-foreground:#fff;--destructive:#ffad9b;--destructive-foreground:#fff;--border:#d9d9dd47;--input:#d9d9dd59;--ring:#8aa1ff;--success:#9ef0ce;--success-soft:#003c3399;--warning:#ffcf8a;--warning-soft:#fff4de1f;--info:#9fbaff;--info-soft:#f1f5ff1f;--shadow-popover-value:0 22px 60px #00000047}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-family-sans);font-feature-settings:"rlig" 1, "calt" 1;letter-spacing:0}::selection{background-color:var(--coral-soft);color:var(--ink)}}@layer components{.app-page{width:100%;min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-narrow{width:100%;max-width:var(--container-5xl);min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-header{min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-hairline);padding-bottom:calc(var(--spacing) * 5);flex-direction:column;display:flex}.app-page-title{font-family:var(--font-display);font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-foreground)}@media (width>=40rem){.app-page-title{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}}.app-page-copy{max-width:var(--container-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-page-copy{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.app-panel{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground);--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (width>=40rem){.app-panel{padding:calc(var(--spacing) * 6)}}.app-panel-soft{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-card-border);background-color:var(--color-soft-stone);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground)}@media (width>=40rem){.app-panel-soft{padding:calc(var(--spacing) * 6)}}.app-panel-dark{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.app-panel-dark{border-color:color-mix(in oklab, var(--color-on-dark) 15%, transparent)}}.app-panel-dark{background-color:var(--color-deep-green);padding:calc(var(--spacing) * 5);color:var(--color-on-dark)}@media (width>=40rem){.app-panel-dark{padding:calc(var(--spacing) * 6)}}.app-empty{border-radius:var(--radius-lg);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 8);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-empty{padding:calc(var(--spacing) * 12)}}.app-alert-error{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.app-alert-error{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.app-alert-error{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-destructive)}.app-alert-warning{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-warning);background-color:var(--color-warning-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-warning)}.app-alert-success{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-success);background-color:var(--color-success-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-success)}.app-code{border-radius:var(--radius-xs);background-color:var(--color-soft-stone);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.app-field{border-radius:var(--radius-xs);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-input);background-color:var(--color-background);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.app-field:focus-visible{border-color:var(--color-form-focus);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-ring);--tw-outline-style:none;outline-style:none}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-4{right:calc(var(--spacing) * 4)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-4{margin-left:calc(var(--spacing) * 4)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-64{height:calc(var(--spacing) * 64)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[420px\]{min-height:420px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-\[1\%\]{width:1%}.w-\[7rem\]{width:7rem}.w-\[10rem\]{width:10rem}.w-\[12rem\]{width:12rem}.w-\[14rem\]{width:14rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[11rem\]{max-width:11rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[60rem\]{min-width:60rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-card-border{border-color:var(--color-card-border)}.border-coral-soft{border-color:var(--color-coral-soft)}.border-destructive{border-color:var(--color-destructive)}.border-hairline{border-color:var(--color-hairline)}.border-input{border-color:var(--color-input)}.border-on-dark\/20{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/20{border-color:color-mix(in oklab, var(--color-on-dark) 20%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success{border-color:var(--color-success)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.\!bg-primary{background-color:var(--color-primary)!important}.bg-background{background-color:var(--color-background)}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-cohere-black\/70{background-color:var(--color-cohere-black)}@supports (color:color-mix(in lab, red, red)){.bg-cohere-black\/70{background-color:color-mix(in oklab, var(--color-cohere-black) 70%, transparent)}}.bg-coral\/10{background-color:var(--color-coral)}@supports (color:color-mix(in lab, red, red)){.bg-coral\/10{background-color:color-mix(in oklab, var(--color-coral) 10%, transparent)}}.bg-deep-green{background-color:var(--color-deep-green)}.bg-muted-foreground\/30{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab, var(--color-muted-foreground) 30%, transparent)}}.bg-muted-foreground\/40{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-soft-stone{background-color:var(--color-soft-stone)}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-soft{background-color:var(--color-warning-soft)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-card-heading{font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height))}.text-feature{font-size:var(--text-feature);line-height:var(--tw-leading,var(--text-feature--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-micro{font-size:var(--text-micro);line-height:var(--tw-leading,var(--text-micro--line-height))}.text-micro-label{font-size:var(--text-micro-label);line-height:var(--tw-leading,var(--text-micro-label--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-primary-foreground{color:var(--color-primary-foreground)!important}.text-action-blue{color:var(--color-action-blue)}.text-card-foreground{color:var(--color-card-foreground)}.text-coral-soft{color:var(--color-coral-soft)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-on-dark,.text-on-dark\/70{color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.text-on-dark\/70{color:color-mix(in oklab, var(--color-on-dark) 70%, transparent)}}.text-pale-green{color:var(--color-pale-green)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--color-primary-foreground) 70%, transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-warning-soft{color:var(--color-warning-soft)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-hairline{-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);text-decoration-color:var(--color-hairline)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-card{--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-popover{--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-150{animation-duration:.15s}.group-\[\.toast\]\:rounded-pill:is(:where(.group).toast *){border-radius:var(--radius-pill)}.group-\[\.toast\]\:border:is(:where(.group).toast *){border-style:var(--tw-border-style);border-width:1px}.group-\[\.toast\]\:border-primary:is(:where(.group).toast *){border-color:var(--color-primary)}.group-\[\.toast\]\:bg-primary:is(:where(.group).toast *){background-color:var(--color-primary)}.group-\[\.toast\]\:bg-soft-stone:is(:where(.group).toast *){background-color:var(--color-soft-stone)}.group-\[\.toast\]\:font-medium:is(:where(.group).toast *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--color-muted-foreground)}.group-\[\.toast\]\:text-primary-foreground:is(:where(.group).toast *){color:var(--color-primary-foreground)}.group-\[\.toaster\]\:rounded-sm:is(:where(.group).toaster *){border-radius:var(--radius-sm)}.group-\[\.toaster\]\:border-hairline:is(:where(.group).toaster *){border-color:var(--color-hairline)}.group-\[\.toaster\]\:bg-background:is(:where(.group).toaster *){background-color:var(--color-background)}.group-\[\.toaster\]\:text-foreground:is(:where(.group).toaster *){color:var(--color-foreground)}.group-\[\.toaster\]\:shadow-popover:is(:where(.group).toaster *){--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:\!border-primary:hover{border-color:var(--color-primary)!important}.hover\:border-hairline:hover{border-color:var(--color-hairline)}.hover\:\!bg-primary:hover{background-color:var(--color-primary)!important}.hover\:bg-destructive:hover,.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.hover\:bg-ink:hover{background-color:var(--color-ink)}.hover\:bg-soft-stone:hover,.hover\:bg-soft-stone\/60:hover{background-color:var(--color-soft-stone)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-soft-stone\/60:hover{background-color:color-mix(in oklab, var(--color-soft-stone) 60%, transparent)}}.hover\:\!text-primary-foreground:hover{color:var(--color-primary-foreground)!important}.hover\:text-action-blue:hover{color:var(--color-action-blue)}.hover\:text-destructive-foreground:hover{color:var(--color-destructive-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-action-blue:hover{-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);text-decoration-color:var(--color-action-blue)}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-form-focus:focus-visible{border-color:var(--color-form-focus)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-cohere-black:active{background-color:var(--color-cohere-black)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[ending-style\]\:scale-95[data-ending-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[ending-style\]\:opacity-0[data-ending-style]{opacity:0}.data-\[starting-style\]\:scale-95[data-starting-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}.data-\[state\=selected\]\:bg-soft-stone[data-state=selected]{background-color:var(--color-soft-stone)}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:flex{display:flex}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-auto{width:auto}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,160px\)_minmax\(0\,120px\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,160px) minmax(0,120px) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:flex{display:flex}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(12rem\,1fr\)_auto_minmax\(12rem\,1fr\)\]{grid-template-columns:minmax(12rem,1fr) auto minmax(12rem,1fr)}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-end{justify-content:flex-end}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.lg\:max-h-none{max-height:none}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[420px\]{min-height:420px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -1493,4 +1493,4 @@ retentionDefaults: []
|
|
|
1493
1493
|
`);return(0,B.jsxs)(`div`,{className:`sm:col-span-2 flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`${e}${c} (KEY=value 每行一条)`}),(0,B.jsx)(`textarea`,{className:`app-field min-h-[80px] font-mono`,value:r,onChange:e=>{let t=[];for(let n of e.target.value.split(`
|
|
1494
1494
|
`)){let e=n.indexOf(`=`);if(e<=0)continue;let r=n.slice(0,e).trim(),i=n.slice(e+1);r.length>0&&t.push([r,i])}t.length===0?a(s?void 0:{}):a(Object.fromEntries(t))}})]})}return(0,B.jsxs)(`div`,{className:`sm:col-span-2 flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`${e}${c} (JSON)`}),(0,B.jsx)(XD,{value:n,onChange:a,optional:s})]})}function YD(e){if(e==null)return``;try{return JSON.stringify(e,null,2)}catch{return``}}function XD({value:e,onChange:t,optional:n}){return(0,B.jsx)(`textarea`,{className:`app-field min-h-[80px] font-mono`,defaultValue:YD(e),onBlur:e=>{let r=e.target.value.trim();if(r.length===0){t(n?void 0:null);return}try{t(JSON.parse(r))}catch{}}})}function ZD({label:e,value:t,onChange:n}){return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:e}),(0,B.jsx)(xw,{value:t,onChange:e=>n(e.target.value)})]})}function QD({name:e,fieldName:t,presets:n,optional:r,value:i,onChange:a}){let o=i.length>0&&n.includes(i),[s,c]=(0,z.useState)(()=>i.length===0||o?`preset`:`custom`);function l(e){e.length===0?a(r?void 0:``):a(e)}function u(e){if(e===UD){c(`custom`);return}c(`preset`),l(e)}if(s===`custom`)return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(Sw,{children:e}),(0,B.jsx)(`button`,{type:`button`,className:`text-xs text-muted-foreground underline decoration-dotted underline-offset-2 hover:text-foreground`,onClick:()=>{c(`preset`),n.includes(i)||l(``)},children:`选预设…`})]}),(0,B.jsx)(xw,{"data-testid":`field-${t}-input`,placeholder:n[0]??``,value:i,onChange:e=>l(e.target.value)})]});let d=o?i:``;return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{htmlFor:`field-${t}-select`,children:e}),(0,B.jsxs)(`select`,{id:`field-${t}-select`,"data-testid":`field-${t}-select`,className:`app-field h-10`,value:d,onChange:e=>u(e.target.value),children:[r&&(0,B.jsx)(`option`,{value:``,children:`— unset —`}),!r&&d===``&&(0,B.jsx)(`option`,{value:``,disabled:!0,children:`— 选 model —`}),n.map(e=>(0,B.jsx)(`option`,{value:e,children:e},e)),(0,B.jsx)(`option`,{value:UD,children:`Custom…`})]})]})}function $D({label:e,value:t,onChange:n}){return(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:e}),(0,B.jsx)(xw,{type:`number`,value:t,onChange:e=>{let t=Number.parseInt(e.target.value,10);n(Number.isNaN(t)?0:t)}})]})}var eO=X({baseUrl:Y(),apiKey:Y(),model:Y(),timeoutMs:Ns().int().positive()}),tO={secretFields:[`apiKey`]},nO=X({url:Y(),token:Y(),defaultModel:Y().optional(),tools:Is(Y()).optional(),timeoutMs:Ns().int().positive().optional()}),rO=X({command:Y(),args:Is(Y()),cwd:Y().optional(),env:zs(Y()).optional(),timeoutMs:Ns().int().positive().optional(),sandbox:Ps().optional()}),iO=X({model:Y().optional(),cliVersion:Y().optional(),extraArgs:Is(Y()).optional(),env:zs(Y()).optional(),workspaceRoot:Y().optional(),timeoutMs:Ns().int().positive().optional(),permissionPolicy:Vs([`auto`,`supervised`,`plan`]).optional()}),aO=X({agent:Vs([`gemini`,`qwen`]),model:Y().optional(),cliVersion:Y().optional(),extraArgs:Is(Y()).optional(),env:zs(Y()).optional(),timeoutMs:Ns().int().positive().optional()}),oO=X({model:Y().optional(),timeoutMs:Ns().int().positive().optional()}),sO=X({model:Y().optional(),timeoutMs:Ns().int().positive().optional()}),cO=[`gpt-4o-mini`,`gpt-4o`,`gpt-5`,`gpt-5-mini`,`o3-mini`],lO=[`gemini-2.5-flash`,`gemini-2.5-pro`,`gemini-2.0-flash`],uO=[`deepseek-chat`,`deepseek-reasoner`],dO=[`Qwen/Qwen2.5-7B-Instruct`,`Qwen/Qwen2.5-72B-Instruct`,`deepseek-ai/DeepSeek-V3`],fO=[`anthropic/claude-sonnet-4.5`,`openai/gpt-5`,`openai/gpt-4o-mini`,`google/gemini-2.5-flash`],pO=[`sonnet`,`opus`,`haiku`],mO=[`gemini-2.5-pro`,`gemini-2.5-flash`,`gemini-2.0-flash`],hO=[`qwen3-coder-plus`,`qwen3-max`,`qwen3-72b`],gO=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex`,`gpt-5.2`],_O=[`auto`,`claude-sonnet-4.5`,`gpt-5`,`gemini-2.5-pro`],vO={http:{label:`HTTP (OpenAI-compatible)`,description:`Generic chat-completions endpoint that speaks the OpenAI wire format.`,variants:{default:{label:`Default`,description:`Empty preset — fill in baseUrl, apiKey, model.`,schema:eO,...tO,fieldHints:{model:cO}},"gemini-openai-compat":{label:`Gemini (OpenAI-compat)`,description:`generativelanguage.googleapis.com OpenAI compatibility endpoint.`,schema:eO,...tO,fieldHints:{model:lO}},deepseek:{label:`DeepSeek`,description:`api.deepseek.com — model defaults to deepseek-chat.`,schema:eO,...tO,fieldHints:{model:uO}},siliconflow:{label:`SiliconFlow`,description:`api.siliconflow.cn/v1 — Chinese OpenAI-compatible aggregator.`,schema:eO,...tO,fieldHints:{model:dO}},openrouter:{label:`OpenRouter`,description:`openrouter.ai/api/v1 — fanout to 100+ provider models.`,schema:eO,...tO,fieldHints:{model:fO}}}},mcp:{label:`MCP (tool source)`,description:`Model Context Protocol streamable-http server. Exposes tools, not chat.`,variants:{default:{label:`Default`,description:`MCP server with bearer auth.`,schema:nO,secretFields:[`token`]}}},cli:{label:`Generic CLI`,description:`Spawn an arbitrary CLI per turn. Reserved for stub / debug use.`,variants:{default:{label:`Default`,description:`Manual command + args.`,schema:rO}}},"claude-code":{label:`Claude Code`,description:`Anthropic Claude Code CLI in stream-json mode (FEAT-012).`,variants:{default:{label:`Default`,description:`Auto-approve, CLI default model, 120s turn timeout.`,schema:iO,fieldHints:{model:pO}},"opus-plan":{label:`Opus + Plan policy`,description:`Opus model with plan-mode permission policy, 180s turn timeout.`,schema:iO,fieldHints:{model:pO}}}},acp:{label:`ACP (Gemini / Qwen)`,description:`Agent Client Protocol harness — variant key selects the CLI agent.`,variants:{gemini:{label:`Gemini CLI`,description:`google-gemini/gemini-cli with --experimental-acp + --yolo.`,schema:aO,fieldHints:{model:mO}},qwen:{label:`Qwen Code`,description:`qwenlm/qwen-code with --acp + --yolo.`,schema:aO,fieldHints:{model:hO}}}},codex:{label:`Codex`,description:`OpenAI @openai/codex app-server via JSON-RPC over stdio (FEAT-016).`,variants:{default:{label:`Default (gpt-5.5)`,description:`Codex app-server, 120s turn timeout.`,schema:oO,fieldHints:{model:gO}}}},cursor:{label:`Cursor Agent`,description:`Cursor CLI in stream-json mode — no npm fallback (install cursor-agent) (FEAT-016).`,variants:{default:{label:`Default (auto model)`,description:`cursor-agent -p --output-format=stream-json, 120s turn timeout.`,schema:sO,fieldHints:{model:_O}}}}};function yO(){return Object.keys(vO)}function bO(e){return Object.keys(vO[e].variants)}function xO(e){let t=bO(e);return{engine:e,variant:t.includes(`default`)?`default`:t[0]}}var SO={ready:`ready`,"login-required":`login required`,"not-found":`not installed`},CO={ready:`bg-success`,"login-required":`bg-warning`,"not-found":`bg-muted-foreground/40`},wO={ready:`text-success`,"login-required":`text-warning`,"not-found":`text-muted-foreground`};function TO({status:e,label:t,testId:n}){return e?(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs ${wO[e]}`,"data-testid":n,"data-status":e,children:[(0,B.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full ${CO[e]}`}),t??SO[e]]}):(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 text-xs text-muted-foreground`,"data-testid":n,children:[(0,B.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full bg-muted-foreground/30`}),`unknown`]})}function EO({executor:e,onChange:t}){let n=vO[e.engine],r=n.variants[e.variant],[i,a]=(0,z.useState)(!1),o=kT(),s=VD(o.data?.engines),c=AT(),[l,u]=(0,z.useState)(!1);async function d(){u(!0);try{await c()}finally{u(!1)}}function f(n){if(n===e.engine)return;let r=bO(n).includes(e.variant)?e.variant:void 0;t(r?{engine:n,variant:r}:xO(n))}function p(n){n!==e.variant&&t({engine:e.engine,variant:n})}function m(n){if(!n||Object.keys(n).length===0){let{overrides:n,...r}=e;t(r);return}t({...e,overrides:n})}function h(t){let n=e.overrides?.cmd,r={...t};n&&Object.keys(n).length>0&&(r.cmd=n),m(r)}function g(t){let{cmd:n,...r}=e.overrides??{};if(!t||Object.keys(t).length===0){m(r);return}m({...r,cmd:t})}function _(n){let r={...e};n.modelId===void 0||n.modelId===``?delete r.modelId:r.modelId=n.modelId,n.reasoningId===void 0||n.reasoningId===``?delete r.reasoningId:r.reasoningId=n.reasoningId,n.permissionPolicy===void 0?delete r.permissionPolicy:r.permissionPolicy=n.permissionPolicy,t(r)}let{cmd:v,...y}=e.overrides??{},b=HD(s,e.engine),x=e.engine===`acp`?s.get(`acp:${e.variant}`):s.get(e.engine);return(0,B.jsxs)(`section`,{className:`app-panel flex flex-col gap-5`,children:[(0,B.jsxs)(`header`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`text-feature font-normal`,children:`Executor`}),(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`选 engine + variant,仅 override 想改的字段。`})]}),(0,B.jsxs)(`button`,{type:`button`,onClick:d,disabled:l||o.isFetching,"aria-label":`Refresh engine availability`,"data-testid":`refresh-engines-btn`,className:`inline-flex items-center gap-1 rounded-sm border border-hairline px-2 py-1 text-xs text-muted-foreground hover:bg-soft-stone disabled:opacity-60`,children:[(0,B.jsx)(Lm,{className:`size-3.5 ${l?`animate-spin`:``}`}),`Refresh`]})]}),s.size>0&&(0,B.jsx)(`div`,{className:`flex flex-wrap gap-2 rounded-sm border border-hairline bg-soft-stone p-2 text-xs`,children:yO().map(e=>{let t=HD(s,e);return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-2 rounded-full border border-hairline bg-background px-2.5 py-1`,"data-testid":`engine-availability-${e}`,children:[(0,B.jsx)(`span`,{className:`font-medium`,children:vO[e].label}),(0,B.jsx)(TO,{status:t,testId:`engine-availability-badge-${e}`})]},e)})}),(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(Sw,{htmlFor:`executor-engine`,children:`Engine`}),(0,B.jsx)(TO,{status:b,testId:`engine-selected-badge`})]}),(0,B.jsx)(`select`,{id:`executor-engine`,className:`app-field h-10`,value:e.engine,onChange:e=>f(e.target.value),children:yO().map(e=>{let t=HD(s,e),n=t?` — ${SO[t]}`:``;return(0,B.jsxs)(`option`,{value:e,children:[vO[e].label,n]},e)})}),(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:n.description})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(Sw,{htmlFor:`executor-variant`,children:`Variant`}),e.engine===`acp`&&(0,B.jsx)(TO,{status:x?.status,testId:`variant-selected-badge`})]}),(0,B.jsx)(`select`,{id:`executor-variant`,className:`app-field h-10`,value:e.variant,onChange:e=>p(e.target.value),children:bO(e.engine).map(t=>{let r=e.engine===`acp`?s.get(`acp:${t}`)?.status:void 0,i=r?` — ${SO[r]}`:``;return(0,B.jsxs)(`option`,{value:t,children:[n.variants[t].label,i]},t)})}),r?.description&&(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:r.description})]})]}),b===`not-found`&&(0,B.jsx)(DO,{engine:e.engine}),b===`login-required`&&(0,B.jsx)(OO,{engine:e.engine}),r&&(0,B.jsx)(KD,{schema:r.schema,value:y,secretFields:r.secretFields,fieldHints:r.fieldHints,onChange:h}),(0,B.jsxs)(`div`,{className:`border-t pt-4`,children:[(0,B.jsxs)(`button`,{type:`button`,className:`text-sm font-medium text-muted-foreground hover:text-foreground`,onClick:()=>a(e=>!e),"aria-expanded":i,children:[i?`▾`:`▸`,` `,`Advanced (per-request + cmd overrides)`]}),i&&(0,B.jsxs)(`div`,{className:`mt-3 flex flex-col gap-4`,children:[(0,B.jsx)(AO,{modelId:e.modelId,reasoningId:e.reasoningId,permissionPolicy:e.permissionPolicy,onChange:_}),(0,B.jsx)(jO,{cmd:v,onChange:g})]})]})]})}function DO({engine:e}){let t=kO(e);return(0,B.jsxs)(`div`,{role:`alert`,"data-testid":`engine-install-callout`,className:`app-alert-warning`,children:[(0,B.jsx)(`p`,{className:`font-medium`,children:`本 worker 没有该 engine 对应的 CLI。`}),(0,B.jsxs)(`p`,{className:`mt-1 text-muted-foreground`,children:[`进 worker 容器装 / 登录后点 Refresh。具体步骤见`,` `,(0,B.jsxs)(`a`,{className:`underline decoration-dotted underline-offset-2 hover:text-foreground`,href:`/docs/executor-engines.md${t}`,target:`_blank`,rel:`noreferrer`,children:[`docs/executor-engines.md`,t]}),`。`]})]})}function OO({engine:e}){let t=kO(e);return(0,B.jsxs)(`div`,{role:`status`,"data-testid":`engine-login-callout`,className:`app-alert-warning`,children:[(0,B.jsx)(`p`,{className:`font-medium`,children:`CLI 已装但缺登录态。`}),(0,B.jsxs)(`p`,{className:`mt-1 text-muted-foreground`,children:[`在 worker 容器跑对应 CLI 的 login 命令(见`,` `,(0,B.jsxs)(`a`,{className:`underline decoration-dotted underline-offset-2 hover:text-foreground`,href:`/docs/executor-engines.md${t}`,target:`_blank`,rel:`noreferrer`,children:[`docs/executor-engines.md`,t]}),`)后 Refresh。`]})]})}function kO(e){switch(e){case`claude-code`:return`#claude-code`;case`acp`:return`#acp`;case`codex`:return`#codex`;case`cursor`:return`#cursor`;default:return``}}function AO({modelId:e,reasoningId:t,permissionPolicy:n,onChange:r}){return(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`modelId (per-request override)`}),(0,B.jsx)(xw,{value:e??``,onChange:e=>r({modelId:e.target.value,reasoningId:t,permissionPolicy:n})})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`reasoningId`}),(0,B.jsx)(xw,{value:t??``,onChange:t=>r({modelId:e,reasoningId:t.target.value,permissionPolicy:n})})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`permissionPolicy`}),(0,B.jsxs)(`select`,{className:`app-field h-10`,value:n??``,onChange:n=>{let i=n.target.value;r({modelId:e,reasoningId:t,...i?{permissionPolicy:i}:{}})},children:[(0,B.jsx)(`option`,{value:``,children:`— unset —`}),(0,B.jsx)(`option`,{value:`auto`,children:`auto`}),(0,B.jsx)(`option`,{value:`supervised`,children:`supervised`}),(0,B.jsx)(`option`,{value:`plan`,children:`plan`})]})]})]})}function jO({cmd:e,onChange:t}){function n(e){let n={};e.binary&&e.binary.length>0&&(n.binary=e.binary),e.extraArgs&&e.extraArgs.length>0&&(n.extraArgs=e.extraArgs),e.env&&Object.keys(e.env).length>0&&(n.env=e.env),e.cliVersion&&e.cliVersion.length>0&&(n.cliVersion=e.cliVersion),t(Object.keys(n).length>0?n:void 0)}let r=(e?.extraArgs??[]).join(` `),i=Object.entries(e?.env??{}).map(([e,t])=>`${e}=${t}`).join(`
|
|
1495
1495
|
`);return(0,B.jsxs)(`div`,{className:`flex flex-col gap-3 rounded-sm border border-hairline bg-soft-stone p-3`,children:[(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`cmd overrides 仅对 spawn 二进制的 engine(cli / claude-code / acp)生效。`}),(0,B.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`cmd.binary`}),(0,B.jsx)(xw,{value:e?.binary??``,onChange:t=>n({...e,binary:t.target.value})})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,B.jsx)(Sw,{children:`cmd.cliVersion`}),(0,B.jsx)(xw,{value:e?.cliVersion??``,onChange:t=>n({...e,cliVersion:t.target.value})})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5 sm:col-span-2`,children:[(0,B.jsx)(Sw,{children:`cmd.extraArgs (空白分隔)`}),(0,B.jsx)(xw,{value:r,onChange:t=>{let r=t.target.value.split(/\s+/).filter(Boolean);n({...e,extraArgs:r})}})]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5 sm:col-span-2`,children:[(0,B.jsx)(Sw,{children:`cmd.env (KEY=value 每行)`}),(0,B.jsx)(`textarea`,{className:`app-field min-h-[80px] font-mono`,value:i,onChange:t=>{let r=[];for(let e of t.target.value.split(`
|
|
1496
|
-
`)){let t=e.indexOf(`=`);if(t<=0)continue;let n=e.slice(0,t).trim(),i=e.slice(t+1);n.length>0&&r.push([n,i])}n({...e,env:Object.fromEntries(r)})}})]})]})]})}function MO(){let e=DT(),t=ET(),[n,r]=(0,z.useState)(0);return e.isLoading?(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsx)(yD,{className:`h-8 w-48`}),(0,B.jsx)(yD,{className:`h-40`}),(0,B.jsx)(yD,{className:`h-40`})]}):e.isError||!e.data?(0,B.jsxs)(`div`,{className:`app-alert-error`,children:[`加载 worker config 失败:`,` `,e.error instanceof Error?e.error.message:`未知错误`,` `,(0,B.jsx)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void e.refetch(),children:`重试`})]}):(0,B.jsx)(NO,{initial:e.data.config,initialVersion:e.data.version,info:t.data,onReload:()=>{r(e=>e+1),e.refetch()}},n)}function NO({initial:e,initialVersion:t,info:n,onReload:r}){let[i,a]=(0,z.useState)(e),[o,s]=(0,z.useState)(t),[c,l]=(0,z.useState)(null),[u,d]=(0,z.useState)(null),[f,p]=(0,z.useState)(null),m=OT();function h(e){a(t=>({...t,...e}))}function g(e){a(t=>({...t,executor:e}))}function _(e){a(t=>({...t,channels:e}))}function v(e){a(t=>({...t,evolution:e}))}function y(){if(i.brains.length>0&&i.brainWriteTarget.length===0)return`配置了 brain source 后必须选 write target,或者删光所有 brain。`;if(i.brains.length>0&&!i.brains.some(e=>e.id===i.brainWriteTarget))return`brainWriteTarget "${i.brainWriteTarget}" 不在已配置的 brain id 列表里。`;let e=new Set;for(let t of i.brains){if(t.id.length===0)return`每个 brain source 必须有 id。`;if(e.has(t.id))return`重复的 brain id:${t.id}`;e.add(t.id)}return null}async function b(){l(null),d(null);let e=y();if(e){l(e);return}try{let e=await m.mutateAsync({config:i,ifMatchVersion:o});p(e.runtimeReload===`ok`?`已保存(version ${e.version})。`:`已保存(version ${e.version}),但 runtime reload 失败——重启 worker 才能让新 config 真正生效。`),a(e.config),s(e.version)}catch(e){if(e instanceof jw&&e.code===`version-conflict`){d({expected:e.expectedVersion,actual:e.actualVersion});return}if(e instanceof jw&&e.code===`invalid-config`){l(`worker 拒绝了 config:${e.message}`);return}l(e instanceof Error?e.message:`保存失败。`)}}return(0,B.jsxs)(`form`,{className:`app-page pb-24`,onSubmit:e=>{e.preventDefault(),b()},children:[(0,B.jsxs)(`div`,{className:`app-page-header`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Configuration`}),(0,B.jsxs)(`p`,{className:`app-page-copy`,children:[`Version`,` `,(0,B.jsx)(`span`,{className:`font-mono`,children:o}),`。Secret 字段渲染为占位,留空保留旧值。`]})]}),u&&(0,B.jsxs)(`div`,{role:`alert`,className:`app-alert-warning flex items-start gap-3`,children:[(0,B.jsx)(Km,{className:`mt-0.5 size-4 text-warning`}),(0,B.jsxs)(`div`,{className:`flex-1`,children:[(0,B.jsx)(`p`,{className:`font-medium`,children:`Version 冲突`}),(0,B.jsxs)(`p`,{className:`text-muted-foreground`,children:[`你基于 version`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:u.expected??o}),` `,`做了改动,但当前 stored version 是`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:u.actual??`?`}),`。期间另一方已经保存了新版本。`]})]}),(0,B.jsx)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:r,children:`Reload 重新编辑`})]}),c&&(0,B.jsx)(`p`,{role:`alert`,className:`app-alert-error`,children:c}),f&&(0,B.jsx)(`p`,{role:`status`,className:`app-alert-success`,children:f}),(0,B.jsx)(kD,{brains:i.brains,brainWriteTarget:i.brainWriteTarget,brainRetrieval:i.brainRetrieval,onChange:h}),(0,B.jsx)(EO,{executor:i.executor,onChange:g}),(0,B.jsx)(RD,{channels:i.channels,info:n,onChange:_}),(0,B.jsxs)(`section`,{className:`app-panel flex flex-col gap-4`,children:[(0,B.jsx)(`h2`,{className:`text-feature font-normal`,children:`Evolution (L3)`}),(0,B.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:i.evolution.enabled,onChange:e=>v({...i.evolution,enabled:e.target.checked})}),`启用 evolution observer`]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[240px]`,children:[(0,B.jsx)(`label`,{className:`text-sm font-medium`,children:`Observation 保留天数`}),(0,B.jsx)(`input`,{type:`number`,min:0,className:`app-field h-10`,value:i.evolution.observationRetentionDays,onChange:e=>v({...i.evolution,observationRetentionDays:Number.parseInt(e.target.value,10)||0})})]})]}),(0,B.jsx)(`div`,{className:`sticky bottom-0 -mx-4 border-t border-hairline bg-background/95 px-4 py-3 sm:-mx-6 sm:px-6`,children:(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-4`,children:[(0,B.jsxs)(`p`,{className:`text-xs text-muted-foreground`,children:[`保存使用`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:`If-Match: ${o}`}),`——若 stored version 已前移则返 409。`]}),(0,B.jsxs)(Eg,{type:`submit`,disabled:m.isPending,children:[m.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(Rm,{className:`size-4`}),m.isPending?`保存中…`:`保存配置`]})]})})]})}var PO=zi(`/config`)({component:MO});function FO(){let e=GT(),[t,n]=(0,z.useState)(null),r=t,i=KT(r??void 0),a=UT(),o=WT(),s=qT(),c=JT(),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(null),h=(0,z.useId)(),g=(0,z.useRef)(null);(0,z.useEffect)(()=>()=>{g.current?.abort()},[]);async function _(){let e=l.trim(),r=t,i=a.isPending||o.isPending;if(!(e.length===0||i)){f(null);try{let t=r?await o.mutateAsync({conversationId:r,prompt:e}):await a.mutateAsync(e);u(``),g.current?.abort();let i=new AbortController;g.current=i,m({taskId:t.id,conversationId:r,text:``,done:!1}),IO(i,t.id,{onConversation:e=>{n(e),m(n=>!n||n.taskId!==t.id?n:{...n,conversationId:e})},onDelta:e=>{m(n=>!n||n.taskId!==t.id?n:{...n,text:n.text+e})},onDone:e=>{m(e=>e&&e.taskId===t.id?{...e,done:!0}:e),c(),e&&s(e)},onError:e=>{f(e),m(null)}})}catch(e){f(e instanceof jw?e.message:`提交失败。`)}}}return(0,B.jsxs)(`div`,{"data-testid":`worker-chat-panel`,className:`grid min-w-0 grid-cols-1 gap-4 lg:h-[calc(100vh-200px)] lg:min-h-[420px] lg:grid-cols-[280px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`flex max-h-56 min-h-0 min-w-0 flex-col gap-3 overflow-y-auto rounded-sm border border-hairline bg-card p-3 lg:max-h-none`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(`h2`,{className:`px-1 text-feature font-normal`,children:`Conversations`}),(0,B.jsxs)(Eg,{type:`button`,variant:t===null?`secondary`:`outline`,size:`sm`,className:`min-h-8 px-2 py-1 text-xs`,onClick:()=>n(null),children:[(0,B.jsx)(Im,{className:`size-3.5`}),`新会话`]})]}),e.isLoading?(0,B.jsx)(yD,{className:`h-20`}):(e.data?.conversations??[]).length===0?(0,B.jsx)(`p`,{className:`px-1 text-xs text-muted-foreground`,children:`尚无会话。`}):(0,B.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.data?.conversations.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`flex w-full flex-col rounded-sm px-2 py-2 text-left text-xs transition-colors ${r===e.id?`bg-primary text-primary-foreground`:`hover:bg-soft-stone`}`,children:[(0,B.jsxs)(`span`,{className:`min-w-0 truncate font-mono text-micro`,children:[e.channel,`:`,e.chatId]}),(0,B.jsx)(`span`,{className:`truncate text-micro-label ${r===e.id?`text-primary-foreground/70`:`text-muted-foreground`}`,children:new Date(e.lastActiveAt).toLocaleString()})]})},e.id))})]}),(0,B.jsxs)(`section`,{className:`flex min-h-[420px] min-w-0 flex-col gap-3 rounded-lg border border-ink bg-ink p-3 text-on-dark sm:p-4 lg:min-h-0`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2 overflow-y-auto`,children:[r?i.isLoading?(0,B.jsx)(yD,{className:`h-40`}):i.isError?(0,B.jsxs)(`p`,{role:`alert`,className:`rounded-sm border border-coral-soft bg-coral/10 p-3 text-sm text-coral-soft`,children:[`加载消息失败:`,i.error instanceof Error?i.error.message:`未知错误`]}):(i.data?.messages??[]).map(e=>(0,B.jsxs)(`div`,{className:`max-w-[90%] rounded-sm p-3 text-sm sm:max-w-[80%] ${e.role===`user`?`self-end border border-on-dark/35 bg-background text-foreground`:`self-start bg-deep-green text-on-dark`}`,children:[(0,B.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:e.content}),(0,B.jsxs)(`p`,{className:`mt-1 text-micro-label opacity-70`,children:[e.role,` · `,new Date(e.createdAt).toLocaleString()]})]},e.id)):(0,B.jsx)(`p`,{className:`rounded-sm border border-dashed border-on-dark/25 p-4 text-center text-sm text-on-dark/70 sm:p-6`,children:`新会话`}),p&&p.text.length>0&&(0,B.jsxs)(`div`,{className:`max-w-[90%] self-start rounded-sm bg-deep-green p-3 text-sm text-on-dark sm:max-w-[80%]`,children:[(0,B.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:p.text}),!p.done&&(0,B.jsxs)(`p`,{className:`mt-1 text-micro-label text-muted-foreground`,children:[(0,B.jsx)(Om,{className:`inline size-3 animate-spin`}),` streaming…`]})]})]}),d&&(0,B.jsx)(`p`,{role:`alert`,className:`rounded-sm border border-coral-soft bg-coral/10 p-2 text-xs text-coral-soft`,children:d}),(0,B.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),_()},children:[(0,B.jsx)(`label`,{htmlFor:h,className:`sr-only`,children:`Prompt`}),(0,B.jsx)(`textarea`,{id:h,className:`min-h-[60px] min-w-0 flex-1 resize-none rounded-sm border border-on-dark/25 bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,placeholder:`给 worker 发一条消息(Cmd/Ctrl + Enter 发送)`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),_())}}),(0,B.jsxs)(Eg,{type:`submit`,className:`w-full bg-on-dark text-ink hover:bg-soft-stone sm:w-auto`,disabled:a.isPending||o.isPending||l.trim().length===0,children:[a.isPending||o.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(zm,{className:`size-4`}),`发送`]})]})]})]})}async function IO(e,t,n){let r=null,i=`task:${t}`;function a(e){r!==e&&(r=e,n.onConversation(e))}try{await rT(e.signal,o=>{let s=o.data,c=typeof s.taskId==`string`?s.taskId:null;if(o.type===`conversation.created`&&(!c||c===t)&&(s.chatId===i||c===t)&&typeof s.conversationId==`string`){a(s.conversationId);return}let l=typeof s.conversationId==`string`?s.conversationId:null;if(!(c&&c!==t)&&!(!r&&c!==t)&&!(r&&l&&l!==r)){if(!r&&l&&o.type.startsWith(`orchestrator.`)&&a(l),o.type===`orchestrator.text`){let e=typeof s.delta==`string`?s.delta:``;e.length>0&&n.onDelta(e)}else if(o.type===`orchestrator.finished`)n.onDone(r),e.abort();else if(o.type===`orchestrator.error`){let t=typeof s.error==`string`?s.error:`事件流返回执行错误。`;n.onError(t),e.abort()}}})}catch(t){if(e.signal.aborted)return;n.onError(t instanceof Error?t.message:`事件流中断。`)}}var LO=zi(`/chat`)({component:FO});function RO(){return(0,B.jsxs)(`section`,{className:`app-page-narrow`,children:[(0,B.jsxs)(`header`,{className:`app-page-header min-w-0`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Brain`}),(0,B.jsxs)(`p`,{className:`app-page-copy break-words`,children:[`Project Brain 摘要 + admission 审批 + brain artifact 注册表。 Brief 是 canonical brain(`,(0,B.jsx)(`code`,{className:`app-code`,children:`.aiworker/`}),`)的投影;这里展示的内容默认 redact secret-like 字段。`]})]}),(0,B.jsx)(zO,{}),(0,B.jsx)(VO,{}),(0,B.jsx)(HO,{})]})}function zO(){let e=YT();if(e.isLoading)return(0,B.jsx)(`section`,{className:`app-panel`,children:(0,B.jsx)(yD,{className:`h-24 w-full`})});if(e.error||e.data===void 0)return(0,B.jsxs)(`section`,{className:`app-alert-error`,children:[`无法加载 brain summary:`,e.error?.message??`unknown error`]});let{brainSummary:t,checkedAt:n}=e.data;return(0,B.jsxs)(`section`,{className:`grid gap-6 rounded-lg border border-hairline bg-soft-stone p-5 sm:grid-cols-2 sm:p-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`mb-2 text-micro uppercase text-muted-foreground`,children:`Scope manifest`}),t.scopeManifest.status===`ok`?(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`kind: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.kind})]}),(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`primary soul: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.primarySoul})]}),t.scopeManifest.privacy&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`privacy: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.privacy})]}),t.scopeManifest.approval&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`approval: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.approval})]})]}):(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:`状态:`}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.status}),t.scopeManifest.error&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsx)(`span`,{className:`text-destructive`,children:t.scopeManifest.error})]})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`mb-2 text-micro uppercase text-muted-foreground`,children:`Aggregates`}),(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`artifacts: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.artifacts.total}),(0,B.jsx)(`span`,{children:` total, by status: ${Object.entries(t.artifacts.byStatus).map(([e,t])=>`${e}=${t}`).join(`, `)||`<none>`}`})]}),(0,B.jsx)(`li`,{children:(0,B.jsx)(`span`,{children:`admissions by status: ${Object.entries(t.admissions.byStatus).map(([e,t])=>`${e}=${t}`).join(`, `)||`<none>`}`})}),t.admissions.lastUpdatedAt&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`last updated: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.admissions.lastUpdatedAt})]})]}),(0,B.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:`checked at: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:n})]})]})]})}function BO(e){return e===`pending`?`secondary`:e===`approved`||e===`applied`?`default`:e===`rejected`||e===`failed`?`destructive`:`outline`}function VO(){let[e,t]=(0,z.useState)(``),n=YT(),r=XT({status:`pending`}),i=ZT(),a=QT(),o=$T(),s=e.trim().length>0,c=r.data?.proposals??[];return(0,B.jsxs)(`section`,{className:`app-panel`,children:[(0,B.jsxs)(`header`,{className:`mb-4 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,B.jsx)(`h2`,{className:`text-micro uppercase text-muted-foreground`,children:`Admission proposals (pending)`}),(0,B.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,B.jsx)(xw,{className:`h-8 w-48`,placeholder:`--decided-by name`,value:e,onChange:e=>t(e.target.value)})})]}),r.isLoading&&(0,B.jsx)(yD,{className:`h-24 w-full`}),r.error&&(0,B.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`加载失败:`,r.error.message]}),!r.isLoading&&c.length===0&&(0,B.jsxs)(`div`,{className:`space-y-2 text-sm text-muted-foreground`,children:[(0,B.jsx)(`p`,{children:`暂无 pending 的 admission proposal。`}),n.data?.brainSummary.admissions.bypassRisk.status===`suspected`&&(0,B.jsx)(`p`,{className:`text-warning`,children:`最近有回复声称已提交 admission 或已写入长期记忆,但 AIWorker admission 数据库没有新增记录;外部 executor 可能写入了自己的 native memory。`})]}),(0,B.jsx)(`ul`,{className:`space-y-3`,children:c.map(t=>(0,B.jsxs)(`li`,{className:`rounded-sm border border-hairline bg-background p-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,B.jsx)(`span`,{className:`font-mono`,children:t.id}),(0,B.jsx)(lE,{variant:BO(t.status),children:t.status}),(0,B.jsx)(lE,{variant:`outline`,children:t.kind}),(0,B.jsxs)(lE,{variant:`outline`,children:[`soul:`,t.soulId]}),(0,B.jsxs)(lE,{variant:`outline`,children:[`risk:`,t.risk]})]}),(0,B.jsx)(`p`,{className:`mt-1 text-sm`,children:t.summary}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`target:`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:t.target})]}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,B.jsx)(Eg,{size:`sm`,disabled:!s||i.isPending,onClick:()=>i.mutate({decidedBy:e,id:t.id}),children:`Approve`}),(0,B.jsx)(Eg,{size:`sm`,variant:`destructive`,disabled:!s||a.isPending,onClick:()=>a.mutate({decidedBy:e,id:t.id}),children:`Reject`}),(0,B.jsx)(Eg,{size:`sm`,variant:`outline`,disabled:!s||o.isPending,onClick:()=>o.mutate({decidedBy:e,id:t.id}),children:`Apply (dry-run)`}),(0,B.jsx)(Eg,{size:`sm`,variant:`outline`,disabled:!s||o.isPending,onClick:()=>o.mutate({commit:!0,decidedBy:e,id:t.id}),children:`Apply --commit`})]})]},t.id))}),(i.error||a.error||o.error)&&(0,B.jsxs)(`p`,{className:`mt-3 text-sm text-destructive`,children:[`操作失败:`,(i.error??a.error??o.error)?.message]})]})}function HO(){let e=eE({limit:50});return(0,B.jsxs)(`section`,{className:`app-panel`,children:[(0,B.jsxs)(`header`,{className:`mb-4`,children:[(0,B.jsx)(`h2`,{className:`text-micro uppercase text-muted-foreground`,children:`Brain artifacts (read-only, redacted)`}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`Confidential / secret artifact 的 ref 与 hash 默认替换为`,(0,B.jsx)(`code`,{className:`font-mono`,children:`<redacted>`}),`。`]})]}),e.isLoading&&(0,B.jsx)(yD,{className:`h-24 w-full`}),e.error&&(0,B.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`加载失败:`,e.error.message]}),!e.isLoading&&(e.data?.artifacts.length??0)===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`暂无登记的 brain artifact。`}),(0,B.jsx)(`ul`,{className:`space-y-2`,children:(e.data?.artifacts??[]).map(e=>(0,B.jsxs)(`li`,{className:`rounded-sm border border-hairline bg-background p-3 text-sm`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`font-mono`,children:e.id}),(0,B.jsx)(lE,{variant:`outline`,children:e.type}),(0,B.jsx)(lE,{variant:`outline`,children:e.status}),(0,B.jsxs)(lE,{variant:`outline`,children:[`sensitivity:`,e.sensitivity]}),e.scopeId&&(0,B.jsxs)(lE,{variant:`outline`,children:[`scope:`,e.scopeId]})]}),e.summary&&(0,B.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:e.summary}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`ref:`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:e.ref})]})]},e.id))})]})}var UO=zi(`/brain`)({component:RO});function WO(){let e=VT(),t=HT(),[n,r]=(0,z.useState)(null),i=(0,z.useMemo)(()=>e.data?.approvals??[],[e.data]);async function a(e,n){r(null);try{await t.mutateAsync({taskId:e.taskId,toolCallId:e.toolCallId,decision:n})}catch(e){r(e instanceof jw?e.message:`提交失败。`)}}return(0,B.jsxs)(`div`,{className:`app-page-narrow max-w-5xl`,children:[(0,B.jsxs)(`header`,{className:`app-page-header`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Approvals`}),(0,B.jsx)(`p`,{className:`app-page-copy`,children:"orchestrator 命中 toolPolicy `ask` 规则时挂起的工具调用。批准前 60s 内未处理视同 deny。"})]}),i.length>0&&(0,B.jsxs)(`div`,{role:`alert`,className:`app-alert-warning flex items-start gap-3`,children:[(0,B.jsx)(Bm,{className:`mt-0.5 size-4 text-warning`}),(0,B.jsxs)(`div`,{className:`flex-1`,children:[(0,B.jsxs)(`p`,{className:`font-medium`,children:[i.length,` `,`个 pending approval`]}),(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`超时(默认 60s)未处理 = deny。`})]})]}),n&&(0,B.jsx)(`p`,{role:`alert`,className:`app-alert-error`,children:n}),e.isLoading?(0,B.jsx)(yD,{className:`h-40`}):e.isError?(0,B.jsxs)(`p`,{role:`alert`,className:`app-alert-error`,children:[`加载失败:`,e.error instanceof Error?e.error.message:`未知错误`]}):i.length===0?(0,B.jsx)(`p`,{className:`app-empty`,children:`当前没有 pending approval。`}):(0,B.jsx)(`ul`,{className:`flex flex-col gap-3`,children:i.map(e=>(0,B.jsxs)(`li`,{className:`flex flex-col gap-3 rounded-sm border border-hairline bg-card p-4`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`code`,{className:`font-mono text-sm`,children:e.toolName}),(0,B.jsx)(GO,{at:e.expiresAt})]}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`task`,(0,B.jsx)(`code`,{className:`ml-1 font-mono`,children:e.taskId}),(0,B.jsx)(`span`,{className:`mx-2`,children:`·`}),`tool call`,(0,B.jsx)(`code`,{className:`ml-1 font-mono`,children:e.toolCallId})]})]}),(0,B.jsxs)(`div`,{className:`flex shrink-0 gap-2`,children:[(0,B.jsxs)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void a(e,`deny`),disabled:t.isPending,children:[(0,B.jsx)(Jm,{className:`size-4`}),`Deny`]}),(0,B.jsxs)(Eg,{type:`button`,size:`sm`,onClick:()=>void a(e,`allow`),disabled:t.isPending,children:[t.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(xm,{className:`size-4`}),`Allow`]})]})]}),(0,B.jsxs)(`details`,{className:`text-xs`,children:[(0,B.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:`查看 params`}),(0,B.jsx)(`pre`,{className:`mt-1 overflow-x-auto rounded-sm bg-soft-stone p-2 text-foreground`,children:JSON.stringify(e.params,null,2)})]})]},`${e.taskId}:${e.toolCallId}`))})]})}function GO({at:e}){let t=e-Date.now();if(t<=0)return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-micro text-destructive`,children:[(0,B.jsx)(Cm,{className:`size-3`}),`expired`]});let n=Math.max(0,Math.round(t/1e3));return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-micro text-muted-foreground`,children:[(0,B.jsx)(Cm,{className:`size-3`}),`剩`,n,`s`]})}var KO=zi(`/approvals`)({component:WO});function qO(){let e=TT(),t=ET(),n=LT(),r=VT();return(0,B.jsxs)(`section`,{className:`app-page-narrow`,children:[(0,B.jsxs)(`header`,{className:`app-page-header min-w-0`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`概览`}),(0,B.jsxs)(`p`,{className:`app-page-copy break-words`,children:[`单 worker 自管面板。所有数据通道走当前入口的`,` `,(0,B.jsx)(`code`,{className:`app-code`,children:`/api/worker/*`}),`兼容管理 API。`]})]}),(0,B.jsxs)(`div`,{className:`grid min-w-0 gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:[(0,B.jsx)(JO,{title:`Worker 健康`,icon:ym,loading:e.isLoading,error:e.error,children:e.data&&(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsx)(YO,{label:`status`,value:e.data.status}),(0,B.jsx)(YO,{label:`config`,value:`v${e.data.configVersion}`}),(0,B.jsx)(YO,{label:`brain`,value:e.data.brain?e.data.brain.status:`unknown`}),(0,B.jsx)(YO,{label:`executor`,value:e.data.executor?e.data.executor.status:`unknown`})]})}),(0,B.jsx)(JO,{title:`Brain`,icon:bm,loading:t.isLoading,error:t.error,actionTo:`/config`,actionLabel:`改配置`,children:t.data&&(0,B.jsx)(`ul`,{className:`space-y-1 text-sm`,children:t.data.brains.length===0?(0,B.jsx)(`li`,{className:`text-muted-foreground`,children:`未配置 brain。`}):t.data.brains.map(e=>(0,B.jsxs)(`li`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`code`,{className:`font-mono text-xs`,children:e.id}),(0,B.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.type,` · `,e.status]})]},e.id))})}),(0,B.jsx)(JO,{title:`Executor`,icon:wm,loading:t.isLoading,error:t.error,actionTo:`/test`,actionLabel:`探测`,children:t.data&&(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsx)(YO,{label:`type`,value:t.data.executor.type}),t.data.executor.model&&(0,B.jsx)(YO,{label:`model`,value:t.data.executor.model}),(0,B.jsx)(YO,{label:`status`,value:t.data.executor.status})]})}),(0,B.jsx)(JO,{title:`Cron 调度`,icon:Wm,loading:n.isLoading,error:n.error,actionTo:`/cron`,actionLabel:`管理`,children:n.data&&(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`共`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:n.data.jobs.length}),` `,`个;`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:n.data.jobs.filter(e=>e.enabled).length}),` `,`启用中。`]})}),(0,B.jsx)(JO,{title:`Approvals`,icon:Vm,loading:r.isLoading,error:r.error,actionTo:`/approvals`,actionLabel:r.data?.approvals.length?`处理`:`查看`,children:r.data&&(0,B.jsx)(`p`,{className:`text-sm`,children:(0,B.jsxs)(`span`,{className:r.data.approvals.length>0?`font-medium text-warning`:`text-muted-foreground`,children:[r.data.approvals.length,` `,`pending`]})})}),(0,B.jsx)(JO,{title:`Chat`,icon:Am,loading:!1,actionTo:`/chat`,actionLabel:`打开`,children:(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`发条消息给 worker,检查 orchestrator 端到端通路。`})})]})]})}function JO({title:e,icon:t,loading:n,error:r,actionTo:i,actionLabel:a,children:o}){return(0,B.jsxs)(`article`,{className:`app-panel flex min-w-0 flex-col gap-3`,children:[(0,B.jsxs)(`header`,{className:`flex min-w-0 items-center justify-between gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,B.jsx)(t,{className:`size-4 shrink-0 text-muted-foreground`}),(0,B.jsx)(`h3`,{className:`truncate text-feature font-normal`,children:e})]}),i&&(0,B.jsx)(tE,{to:i,className:`shrink-0 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 hover:text-foreground`,children:a??`前往`})]}),n?(0,B.jsx)(yD,{className:`h-16`}):r?(0,B.jsx)(`p`,{className:`text-xs text-destructive`,children:r instanceof Error?r.message:`加载失败`}):o]})}function YO({label:e,value:t}){return(0,B.jsxs)(`li`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,B.jsx)(`code`,{className:`min-w-0 truncate font-mono text-xs`,children:t})]})}var XO=zi(`/`)({component:qO}),ZO=yE.update({id:`/test`,path:`/test`,getParentRoute:()=>sE}),QO=SD.update({id:`/secrets`,path:`/secrets`,getParentRoute:()=>sE}),$O=ED.update({id:`/cron`,path:`/cron`,getParentRoute:()=>sE}),ek=PO.update({id:`/config`,path:`/config`,getParentRoute:()=>sE}),tk=LO.update({id:`/chat`,path:`/chat`,getParentRoute:()=>sE}),nk=UO.update({id:`/brain`,path:`/brain`,getParentRoute:()=>sE}),rk=KO.update({id:`/approvals`,path:`/approvals`,getParentRoute:()=>sE}),ik={IndexRoute:XO.update({id:`/`,path:`/`,getParentRoute:()=>sE}),ApprovalsRoute:rk,BrainRoute:nk,ChatRoute:tk,ConfigRoute:ek,CronRoute:$O,SecretsRoute:QO,TestRoute:ZO},ak=sE._addFileChildren(ik)._addFileTypes();Qa(`worker`),im();var ok=ea({routeTree:ak,basepath:Qp(`worker`),defaultPreload:`intent`,defaultPreloadStaleTime:0,scrollRestoration:!0}),sk=document.getElementById(`root`);if(!sk)throw Error(`Root element not found`);(0,sa.createRoot)(sk).render((0,B.jsx)(z.StrictMode,{children:(0,B.jsxs)(ze,{client:to,children:[(0,B.jsx)($a,{scope:`worker`}),(0,B.jsx)(ra,{router:ok}),(0,B.jsx)(eo,{})]})}));
|
|
1496
|
+
`)){let t=e.indexOf(`=`);if(t<=0)continue;let n=e.slice(0,t).trim(),i=e.slice(t+1);n.length>0&&r.push([n,i])}n({...e,env:Object.fromEntries(r)})}})]})]})]})}function MO(){let e=DT(),t=ET(),[n,r]=(0,z.useState)(0);return e.isLoading?(0,B.jsxs)(`div`,{className:`space-y-3`,children:[(0,B.jsx)(yD,{className:`h-8 w-48`}),(0,B.jsx)(yD,{className:`h-40`}),(0,B.jsx)(yD,{className:`h-40`})]}):e.isError||!e.data?(0,B.jsxs)(`div`,{className:`app-alert-error`,children:[`加载 worker config 失败:`,` `,e.error instanceof Error?e.error.message:`未知错误`,` `,(0,B.jsx)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void e.refetch(),children:`重试`})]}):(0,B.jsx)(NO,{initial:e.data.config,initialVersion:e.data.version,info:t.data,onReload:()=>{r(e=>e+1),e.refetch()}},n)}function NO({initial:e,initialVersion:t,info:n,onReload:r}){let[i,a]=(0,z.useState)(e),[o,s]=(0,z.useState)(t),[c,l]=(0,z.useState)(null),[u,d]=(0,z.useState)(null),[f,p]=(0,z.useState)(null),m=OT();function h(e){a(t=>({...t,...e}))}function g(e){a(t=>({...t,executor:e}))}function _(e){a(t=>({...t,channels:e}))}function v(e){a(t=>({...t,evolution:e}))}function y(){if(i.brains.length>0&&i.brainWriteTarget.length===0)return`配置了 brain source 后必须选 write target,或者删光所有 brain。`;if(i.brains.length>0&&!i.brains.some(e=>e.id===i.brainWriteTarget))return`brainWriteTarget "${i.brainWriteTarget}" 不在已配置的 brain id 列表里。`;let e=new Set;for(let t of i.brains){if(t.id.length===0)return`每个 brain source 必须有 id。`;if(e.has(t.id))return`重复的 brain id:${t.id}`;e.add(t.id)}return null}async function b(){l(null),d(null);let e=y();if(e){l(e);return}try{let e=await m.mutateAsync({config:i,ifMatchVersion:o});p(e.runtimeReload===`ok`?`已保存(version ${e.version})。`:`已保存(version ${e.version}),但 runtime reload 失败——重启 worker 才能让新 config 真正生效。`),a(e.config),s(e.version)}catch(e){if(e instanceof jw&&e.code===`version-conflict`){d({expected:e.expectedVersion,actual:e.actualVersion});return}if(e instanceof jw&&e.code===`invalid-config`){l(`worker 拒绝了 config:${e.message}`);return}l(e instanceof Error?e.message:`保存失败。`)}}return(0,B.jsxs)(`form`,{className:`app-page`,onSubmit:e=>{e.preventDefault(),b()},children:[(0,B.jsxs)(`div`,{className:`app-page-header`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Configuration`}),(0,B.jsxs)(`p`,{className:`app-page-copy`,children:[`Version`,` `,(0,B.jsx)(`span`,{className:`font-mono`,children:o}),`。Secret 字段渲染为占位,留空保留旧值。`]})]}),u&&(0,B.jsxs)(`div`,{role:`alert`,className:`app-alert-warning flex items-start gap-3`,children:[(0,B.jsx)(Km,{className:`mt-0.5 size-4 text-warning`}),(0,B.jsxs)(`div`,{className:`flex-1`,children:[(0,B.jsx)(`p`,{className:`font-medium`,children:`Version 冲突`}),(0,B.jsxs)(`p`,{className:`text-muted-foreground`,children:[`你基于 version`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:u.expected??o}),` `,`做了改动,但当前 stored version 是`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:u.actual??`?`}),`。期间另一方已经保存了新版本。`]})]}),(0,B.jsx)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:r,children:`Reload 重新编辑`})]}),c&&(0,B.jsx)(`p`,{role:`alert`,className:`app-alert-error`,children:c}),f&&(0,B.jsx)(`p`,{role:`status`,className:`app-alert-success`,children:f}),(0,B.jsx)(kD,{brains:i.brains,brainWriteTarget:i.brainWriteTarget,brainRetrieval:i.brainRetrieval,onChange:h}),(0,B.jsx)(EO,{executor:i.executor,onChange:g}),(0,B.jsx)(RD,{channels:i.channels,info:n,onChange:_}),(0,B.jsxs)(`section`,{className:`app-panel flex flex-col gap-4`,children:[(0,B.jsx)(`h2`,{className:`text-feature font-normal`,children:`Evolution (L3)`}),(0,B.jsxs)(`label`,{className:`flex items-center gap-2 text-sm`,children:[(0,B.jsx)(`input`,{type:`checkbox`,checked:i.evolution.enabled,onChange:e=>v({...i.evolution,enabled:e.target.checked})}),`启用 evolution observer`]}),(0,B.jsxs)(`div`,{className:`flex flex-col gap-1.5 max-w-[240px]`,children:[(0,B.jsx)(`label`,{className:`text-sm font-medium`,children:`Observation 保留天数`}),(0,B.jsx)(`input`,{type:`number`,min:0,className:`app-field h-10`,value:i.evolution.observationRetentionDays,onChange:e=>v({...i.evolution,observationRetentionDays:Number.parseInt(e.target.value,10)||0})})]})]}),(0,B.jsxs)(`div`,{className:`app-panel flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between`,children:[(0,B.jsxs)(`p`,{className:`min-w-0 text-xs text-muted-foreground`,children:[`保存使用`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:`If-Match: ${o}`}),`——若 stored version 已前移则返 409。`]}),(0,B.jsxs)(Eg,{type:`submit`,className:`w-full sm:w-auto`,disabled:m.isPending,children:[m.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(Rm,{className:`size-4`}),m.isPending?`保存中…`:`保存配置`]})]})]})}var PO=zi(`/config`)({component:MO});function FO(){let e=GT(),[t,n]=(0,z.useState)(null),r=t,i=KT(r??void 0),a=UT(),o=WT(),s=qT(),c=JT(),[l,u]=(0,z.useState)(``),[d,f]=(0,z.useState)(null),[p,m]=(0,z.useState)(null),h=i.data?.messages??[],g=p!==null&&p.text.length>0&&!LO(p,h)?p:null,_=(0,z.useId)(),v=(0,z.useRef)(null);(0,z.useEffect)(()=>()=>{v.current?.abort()},[]);async function y(){let e=l.trim(),r=t,i=h.map(e=>e.id),d=a.isPending||o.isPending;if(!(e.length===0||d)){f(null);try{let t=r?await o.mutateAsync({conversationId:r,prompt:e}):await a.mutateAsync(e);u(``),v.current?.abort();let l=new AbortController;v.current=l,m({taskId:t.id,conversationId:r,text:``,done:!1,initialMessageIds:i}),IO(l,t.id,{onConversation:e=>{n(e),m(n=>!n||n.taskId!==t.id?n:{...n,conversationId:e})},onDelta:e=>{m(n=>!n||n.taskId!==t.id?n:{...n,text:n.text+e})},onDone:e=>{m(e=>e&&e.taskId===t.id?{...e,done:!0}:e),c(),e&&s(e)},onError:e=>{f(e),m(null)}})}catch(e){f(e instanceof jw?e.message:`提交失败。`)}}}return(0,B.jsxs)(`div`,{"data-testid":`worker-chat-panel`,className:`grid min-w-0 grid-cols-1 gap-4 lg:h-[calc(100vh-200px)] lg:min-h-[420px] lg:grid-cols-[280px_1fr]`,children:[(0,B.jsxs)(`aside`,{className:`flex max-h-56 min-h-0 min-w-0 flex-col gap-3 overflow-y-auto rounded-sm border border-hairline bg-card p-3 lg:max-h-none`,children:[(0,B.jsxs)(`div`,{className:`flex items-center justify-between gap-2`,children:[(0,B.jsx)(`h2`,{className:`px-1 text-feature font-normal`,children:`Conversations`}),(0,B.jsxs)(Eg,{type:`button`,variant:t===null?`secondary`:`outline`,size:`sm`,className:`min-h-8 px-2 py-1 text-xs`,onClick:()=>n(null),children:[(0,B.jsx)(Im,{className:`size-3.5`}),`新会话`]})]}),e.isLoading?(0,B.jsx)(yD,{className:`h-20`}):(e.data?.conversations??[]).length===0?(0,B.jsx)(`p`,{className:`px-1 text-xs text-muted-foreground`,children:`尚无会话。`}):(0,B.jsx)(`ul`,{className:`flex flex-col gap-1`,children:e.data?.conversations.map(e=>(0,B.jsx)(`li`,{children:(0,B.jsxs)(`button`,{type:`button`,onClick:()=>n(e.id),className:`flex w-full flex-col rounded-sm px-2 py-2 text-left text-xs transition-colors ${r===e.id?`bg-primary text-primary-foreground`:`hover:bg-soft-stone`}`,children:[(0,B.jsxs)(`span`,{className:`min-w-0 truncate font-mono text-micro`,children:[e.channel,`:`,e.chatId]}),(0,B.jsx)(`span`,{className:`truncate text-micro-label ${r===e.id?`text-primary-foreground/70`:`text-muted-foreground`}`,children:new Date(e.lastActiveAt).toLocaleString()})]})},e.id))})]}),(0,B.jsxs)(`section`,{className:`flex min-h-[420px] min-w-0 flex-col gap-3 rounded-lg border border-hairline bg-soft-stone p-3 text-foreground sm:p-4 lg:min-h-0`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-0 flex-1 flex-col gap-2 overflow-y-auto`,children:[r?i.isLoading?(0,B.jsx)(yD,{className:`h-40`}):i.isError?(0,B.jsxs)(`p`,{role:`alert`,className:`rounded-sm border border-coral-soft bg-coral/10 p-3 text-sm text-coral-soft`,children:[`加载消息失败:`,i.error instanceof Error?i.error.message:`未知错误`]}):(i.data?.messages??[]).map(e=>(0,B.jsxs)(`div`,{className:`max-w-[90%] rounded-sm p-3 text-sm sm:max-w-[80%] ${e.role===`user`?`self-end border border-hairline bg-background text-foreground`:`self-start bg-deep-green text-on-dark`}`,children:[(0,B.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:e.content}),(0,B.jsxs)(`p`,{className:`mt-1 text-micro-label opacity-70`,children:[e.role,` · `,new Date(e.createdAt).toLocaleString()]})]},e.id)):(0,B.jsx)(`p`,{className:`rounded-sm border border-dashed border-hairline bg-background p-4 text-center text-sm text-muted-foreground sm:p-6`,children:`新会话`}),g&&(0,B.jsxs)(`div`,{className:`max-w-[90%] self-start rounded-sm bg-deep-green p-3 text-sm text-on-dark sm:max-w-[80%]`,children:[(0,B.jsx)(`p`,{className:`whitespace-pre-wrap break-words`,children:g.text}),!g.done&&(0,B.jsxs)(`p`,{className:`mt-1 text-micro-label text-on-dark/70`,children:[(0,B.jsx)(Om,{className:`inline size-3 animate-spin`}),` streaming…`]})]})]}),d&&(0,B.jsx)(`p`,{role:`alert`,className:`rounded-sm border border-coral-soft bg-coral/10 p-2 text-xs text-coral-soft`,children:d}),(0,B.jsxs)(`form`,{className:`flex flex-col gap-2 sm:flex-row`,onSubmit:e=>{e.preventDefault(),y()},children:[(0,B.jsx)(`label`,{htmlFor:_,className:`sr-only`,children:`Prompt`}),(0,B.jsx)(`textarea`,{id:_,className:`min-h-[60px] min-w-0 flex-1 resize-none rounded-sm border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring`,placeholder:`给 worker 发一条消息(Cmd/Ctrl + Enter 发送)`,value:l,onChange:e=>u(e.target.value),onKeyDown:e=>{(e.metaKey||e.ctrlKey)&&e.key===`Enter`&&(e.preventDefault(),y())}}),(0,B.jsxs)(Eg,{type:`submit`,className:`w-full sm:w-auto`,disabled:a.isPending||o.isPending||l.trim().length===0,children:[a.isPending||o.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(zm,{className:`size-4`}),`发送`]})]})]})]})}async function IO(e,t,n){let r=null,i=`task:${t}`;function a(e){r!==e&&(r=e,n.onConversation(e))}try{await rT(e.signal,o=>{let s=o.data,c=typeof s.taskId==`string`?s.taskId:null;if(o.type===`conversation.created`&&(!c||c===t)&&(s.chatId===i||c===t)&&typeof s.conversationId==`string`){a(s.conversationId);return}let l=typeof s.conversationId==`string`?s.conversationId:null;if(!(c&&c!==t)&&!(!r&&c!==t)&&!(r&&l&&l!==r)){if(!r&&l&&o.type.startsWith(`orchestrator.`)&&a(l),o.type===`orchestrator.text`){let e=typeof s.delta==`string`?s.delta:``;e.length>0&&n.onDelta(e)}else if(o.type===`orchestrator.finished`)n.onDone(r),e.abort();else if(o.type===`orchestrator.error`){let t=typeof s.error==`string`?s.error:`事件流返回执行错误。`;n.onError(t),e.abort()}}})}catch(t){if(e.signal.aborted)return;n.onError(t instanceof Error?t.message:`事件流中断。`)}}function LO(e,t){if(!e.done||e.text.length===0)return!1;let n=new Set(e.initialMessageIds);return t.some(t=>t.role===`assistant`&&t.content===e.text&&!n.has(t.id)&&(!e.conversationId||t.conversationId===e.conversationId))}var RO=zi(`/chat`)({component:FO});function zO(){return(0,B.jsxs)(`section`,{className:`app-page-narrow`,children:[(0,B.jsxs)(`header`,{className:`app-page-header min-w-0`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Brain`}),(0,B.jsxs)(`p`,{className:`app-page-copy break-words`,children:[`Project Brain 摘要 + admission 审批 + brain artifact 注册表。 Brief 是 canonical brain(`,(0,B.jsx)(`code`,{className:`app-code`,children:`.aiworker/`}),`)的投影;这里展示的内容默认 redact secret-like 字段。`]})]}),(0,B.jsx)(BO,{}),(0,B.jsx)(HO,{}),(0,B.jsx)(UO,{})]})}function BO(){let e=YT();if(e.isLoading)return(0,B.jsx)(`section`,{className:`app-panel`,children:(0,B.jsx)(yD,{className:`h-24 w-full`})});if(e.error||e.data===void 0)return(0,B.jsxs)(`section`,{className:`app-alert-error`,children:[`无法加载 brain summary:`,e.error?.message??`unknown error`]});let{brainSummary:t,checkedAt:n}=e.data;return(0,B.jsxs)(`section`,{className:`grid gap-6 rounded-lg border border-hairline bg-soft-stone p-5 sm:grid-cols-2 sm:p-6`,children:[(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`mb-2 text-micro uppercase text-muted-foreground`,children:`Scope manifest`}),t.scopeManifest.status===`ok`?(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`kind: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.kind})]}),(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`primary soul: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.primarySoul})]}),t.scopeManifest.privacy&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`privacy: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.privacy})]}),t.scopeManifest.approval&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`approval: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.approval})]})]}):(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:`状态:`}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.scopeManifest.status}),t.scopeManifest.error&&(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(`br`,{}),(0,B.jsx)(`span`,{className:`text-destructive`,children:t.scopeManifest.error})]})]})]}),(0,B.jsxs)(`div`,{children:[(0,B.jsx)(`h2`,{className:`mb-2 text-micro uppercase text-muted-foreground`,children:`Aggregates`}),(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`artifacts: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.artifacts.total}),(0,B.jsx)(`span`,{children:` total, by status: ${Object.entries(t.artifacts.byStatus).map(([e,t])=>`${e}=${t}`).join(`, `)||`<none>`}`})]}),(0,B.jsx)(`li`,{children:(0,B.jsx)(`span`,{children:`admissions by status: ${Object.entries(t.admissions.byStatus).map(([e,t])=>`${e}=${t}`).join(`, `)||`<none>`}`})}),t.admissions.lastUpdatedAt&&(0,B.jsxs)(`li`,{children:[(0,B.jsx)(`span`,{children:`last updated: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:t.admissions.lastUpdatedAt})]})]}),(0,B.jsxs)(`p`,{className:`mt-2 text-xs text-muted-foreground`,children:[(0,B.jsx)(`span`,{children:`checked at: `}),(0,B.jsx)(`span`,{className:`font-mono`,children:n})]})]})]})}function VO(e){return e===`pending`?`secondary`:e===`approved`||e===`applied`?`default`:e===`rejected`||e===`failed`?`destructive`:`outline`}function HO(){let[e,t]=(0,z.useState)(``),n=YT(),r=XT({status:`pending`}),i=ZT(),a=QT(),o=$T(),s=e.trim().length>0,c=r.data?.proposals??[];return(0,B.jsxs)(`section`,{className:`app-panel`,children:[(0,B.jsxs)(`header`,{className:`mb-4 flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,B.jsx)(`h2`,{className:`text-micro uppercase text-muted-foreground`,children:`Admission proposals (pending)`}),(0,B.jsx)(`div`,{className:`flex items-center gap-2`,children:(0,B.jsx)(xw,{className:`h-8 w-48`,placeholder:`--decided-by name`,value:e,onChange:e=>t(e.target.value)})})]}),r.isLoading&&(0,B.jsx)(yD,{className:`h-24 w-full`}),r.error&&(0,B.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`加载失败:`,r.error.message]}),!r.isLoading&&c.length===0&&(0,B.jsxs)(`div`,{className:`space-y-2 text-sm text-muted-foreground`,children:[(0,B.jsx)(`p`,{children:`暂无 pending 的 admission proposal。`}),n.data?.brainSummary.admissions.bypassRisk.status===`suspected`&&(0,B.jsx)(`p`,{className:`text-warning`,children:`最近有回复声称已提交 admission 或已写入长期记忆,但 AIWorker admission 数据库没有新增记录;外部 executor 可能写入了自己的 native memory。`})]}),(0,B.jsx)(`ul`,{className:`space-y-3`,children:c.map(t=>(0,B.jsxs)(`li`,{className:`rounded-sm border border-hairline bg-background p-3`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2 text-sm`,children:[(0,B.jsx)(`span`,{className:`font-mono`,children:t.id}),(0,B.jsx)(lE,{variant:VO(t.status),children:t.status}),(0,B.jsx)(lE,{variant:`outline`,children:t.kind}),(0,B.jsxs)(lE,{variant:`outline`,children:[`soul:`,t.soulId]}),(0,B.jsxs)(lE,{variant:`outline`,children:[`risk:`,t.risk]})]}),(0,B.jsx)(`p`,{className:`mt-1 text-sm`,children:t.summary}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`target:`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:t.target})]}),(0,B.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,B.jsx)(Eg,{size:`sm`,disabled:!s||i.isPending,onClick:()=>i.mutate({decidedBy:e,id:t.id}),children:`Approve`}),(0,B.jsx)(Eg,{size:`sm`,variant:`destructive`,disabled:!s||a.isPending,onClick:()=>a.mutate({decidedBy:e,id:t.id}),children:`Reject`}),(0,B.jsx)(Eg,{size:`sm`,variant:`outline`,disabled:!s||o.isPending,onClick:()=>o.mutate({decidedBy:e,id:t.id}),children:`Apply (dry-run)`}),(0,B.jsx)(Eg,{size:`sm`,variant:`outline`,disabled:!s||o.isPending,onClick:()=>o.mutate({commit:!0,decidedBy:e,id:t.id}),children:`Apply --commit`})]})]},t.id))}),(i.error||a.error||o.error)&&(0,B.jsxs)(`p`,{className:`mt-3 text-sm text-destructive`,children:[`操作失败:`,(i.error??a.error??o.error)?.message]})]})}function UO(){let e=eE({limit:50});return(0,B.jsxs)(`section`,{className:`app-panel`,children:[(0,B.jsxs)(`header`,{className:`mb-4`,children:[(0,B.jsx)(`h2`,{className:`text-micro uppercase text-muted-foreground`,children:`Brain artifacts (read-only, redacted)`}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`Confidential / secret artifact 的 ref 与 hash 默认替换为`,(0,B.jsx)(`code`,{className:`font-mono`,children:`<redacted>`}),`。`]})]}),e.isLoading&&(0,B.jsx)(yD,{className:`h-24 w-full`}),e.error&&(0,B.jsxs)(`p`,{className:`text-sm text-destructive`,children:[`加载失败:`,e.error.message]}),!e.isLoading&&(e.data?.artifacts.length??0)===0&&(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`暂无登记的 brain artifact。`}),(0,B.jsx)(`ul`,{className:`space-y-2`,children:(e.data?.artifacts??[]).map(e=>(0,B.jsxs)(`li`,{className:`rounded-sm border border-hairline bg-background p-3 text-sm`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,B.jsx)(`span`,{className:`font-mono`,children:e.id}),(0,B.jsx)(lE,{variant:`outline`,children:e.type}),(0,B.jsx)(lE,{variant:`outline`,children:e.status}),(0,B.jsxs)(lE,{variant:`outline`,children:[`sensitivity:`,e.sensitivity]}),e.scopeId&&(0,B.jsxs)(lE,{variant:`outline`,children:[`scope:`,e.scopeId]})]}),e.summary&&(0,B.jsx)(`p`,{className:`mt-1 text-muted-foreground`,children:e.summary}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`ref:`,` `,(0,B.jsx)(`code`,{className:`font-mono`,children:e.ref})]})]},e.id))})]})}var WO=zi(`/brain`)({component:zO});function GO(){let e=VT(),t=HT(),[n,r]=(0,z.useState)(null),i=(0,z.useMemo)(()=>e.data?.approvals??[],[e.data]);async function a(e,n){r(null);try{await t.mutateAsync({taskId:e.taskId,toolCallId:e.toolCallId,decision:n})}catch(e){r(e instanceof jw?e.message:`提交失败。`)}}return(0,B.jsxs)(`div`,{className:`app-page-narrow max-w-5xl`,children:[(0,B.jsxs)(`header`,{className:`app-page-header`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`Approvals`}),(0,B.jsx)(`p`,{className:`app-page-copy`,children:"orchestrator 命中 toolPolicy `ask` 规则时挂起的工具调用。批准前 60s 内未处理视同 deny。"})]}),i.length>0&&(0,B.jsxs)(`div`,{role:`alert`,className:`app-alert-warning flex items-start gap-3`,children:[(0,B.jsx)(Bm,{className:`mt-0.5 size-4 text-warning`}),(0,B.jsxs)(`div`,{className:`flex-1`,children:[(0,B.jsxs)(`p`,{className:`font-medium`,children:[i.length,` `,`个 pending approval`]}),(0,B.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`超时(默认 60s)未处理 = deny。`})]})]}),n&&(0,B.jsx)(`p`,{role:`alert`,className:`app-alert-error`,children:n}),e.isLoading?(0,B.jsx)(yD,{className:`h-40`}):e.isError?(0,B.jsxs)(`p`,{role:`alert`,className:`app-alert-error`,children:[`加载失败:`,e.error instanceof Error?e.error.message:`未知错误`]}):i.length===0?(0,B.jsx)(`p`,{className:`app-empty`,children:`当前没有 pending approval。`}):(0,B.jsx)(`ul`,{className:`flex flex-col gap-3`,children:i.map(e=>(0,B.jsxs)(`li`,{className:`flex flex-col gap-3 rounded-sm border border-hairline bg-card p-4`,children:[(0,B.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,B.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,B.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,B.jsx)(`code`,{className:`font-mono text-sm`,children:e.toolName}),(0,B.jsx)(KO,{at:e.expiresAt})]}),(0,B.jsxs)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:[`task`,(0,B.jsx)(`code`,{className:`ml-1 font-mono`,children:e.taskId}),(0,B.jsx)(`span`,{className:`mx-2`,children:`·`}),`tool call`,(0,B.jsx)(`code`,{className:`ml-1 font-mono`,children:e.toolCallId})]})]}),(0,B.jsxs)(`div`,{className:`flex shrink-0 gap-2`,children:[(0,B.jsxs)(Eg,{type:`button`,variant:`outline`,size:`sm`,onClick:()=>void a(e,`deny`),disabled:t.isPending,children:[(0,B.jsx)(Jm,{className:`size-4`}),`Deny`]}),(0,B.jsxs)(Eg,{type:`button`,size:`sm`,onClick:()=>void a(e,`allow`),disabled:t.isPending,children:[t.isPending?(0,B.jsx)(Om,{className:`size-4 animate-spin`}):(0,B.jsx)(xm,{className:`size-4`}),`Allow`]})]})]}),(0,B.jsxs)(`details`,{className:`text-xs`,children:[(0,B.jsx)(`summary`,{className:`cursor-pointer text-muted-foreground`,children:`查看 params`}),(0,B.jsx)(`pre`,{className:`mt-1 overflow-x-auto rounded-sm bg-soft-stone p-2 text-foreground`,children:JSON.stringify(e.params,null,2)})]})]},`${e.taskId}:${e.toolCallId}`))})]})}function KO({at:e}){let t=e-Date.now();if(t<=0)return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-micro text-destructive`,children:[(0,B.jsx)(Cm,{className:`size-3`}),`expired`]});let n=Math.max(0,Math.round(t/1e3));return(0,B.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-micro text-muted-foreground`,children:[(0,B.jsx)(Cm,{className:`size-3`}),`剩`,n,`s`]})}var qO=zi(`/approvals`)({component:GO});function JO(){let e=TT(),t=ET(),n=LT(),r=VT();return(0,B.jsxs)(`section`,{className:`app-page-narrow`,children:[(0,B.jsxs)(`header`,{className:`app-page-header min-w-0`,children:[(0,B.jsx)(`h1`,{className:`app-page-title`,children:`概览`}),(0,B.jsxs)(`p`,{className:`app-page-copy break-words`,children:[`单 worker 自管面板。所有数据通道走当前入口的`,` `,(0,B.jsx)(`code`,{className:`app-code`,children:`/api/worker/*`}),`兼容管理 API。`]})]}),(0,B.jsxs)(`div`,{className:`grid min-w-0 gap-4 sm:grid-cols-2 lg:grid-cols-3`,children:[(0,B.jsx)(YO,{title:`Worker 健康`,icon:ym,loading:e.isLoading,error:e.error,children:e.data&&(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsx)(XO,{label:`status`,value:e.data.status}),(0,B.jsx)(XO,{label:`config`,value:`v${e.data.configVersion}`}),(0,B.jsx)(XO,{label:`brain`,value:e.data.brain?e.data.brain.status:`unknown`}),(0,B.jsx)(XO,{label:`executor`,value:e.data.executor?e.data.executor.status:`unknown`})]})}),(0,B.jsx)(YO,{title:`Brain`,icon:bm,loading:t.isLoading,error:t.error,actionTo:`/config`,actionLabel:`改配置`,children:t.data&&(0,B.jsx)(`ul`,{className:`space-y-1 text-sm`,children:t.data.brains.length===0?(0,B.jsx)(`li`,{className:`text-muted-foreground`,children:`未配置 brain。`}):t.data.brains.map(e=>(0,B.jsxs)(`li`,{className:`flex items-center justify-between`,children:[(0,B.jsx)(`code`,{className:`font-mono text-xs`,children:e.id}),(0,B.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[e.type,` · `,e.status]})]},e.id))})}),(0,B.jsx)(YO,{title:`Executor`,icon:wm,loading:t.isLoading,error:t.error,actionTo:`/test`,actionLabel:`探测`,children:t.data&&(0,B.jsxs)(`ul`,{className:`space-y-1 text-sm`,children:[(0,B.jsx)(XO,{label:`type`,value:t.data.executor.type}),t.data.executor.model&&(0,B.jsx)(XO,{label:`model`,value:t.data.executor.model}),(0,B.jsx)(XO,{label:`status`,value:t.data.executor.status})]})}),(0,B.jsx)(YO,{title:`Cron 调度`,icon:Wm,loading:n.isLoading,error:n.error,actionTo:`/cron`,actionLabel:`管理`,children:n.data&&(0,B.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`共`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:n.data.jobs.length}),` `,`个;`,` `,(0,B.jsx)(`span`,{className:`font-medium text-foreground`,children:n.data.jobs.filter(e=>e.enabled).length}),` `,`启用中。`]})}),(0,B.jsx)(YO,{title:`Approvals`,icon:Vm,loading:r.isLoading,error:r.error,actionTo:`/approvals`,actionLabel:r.data?.approvals.length?`处理`:`查看`,children:r.data&&(0,B.jsx)(`p`,{className:`text-sm`,children:(0,B.jsxs)(`span`,{className:r.data.approvals.length>0?`font-medium text-warning`:`text-muted-foreground`,children:[r.data.approvals.length,` `,`pending`]})})}),(0,B.jsx)(YO,{title:`Chat`,icon:Am,loading:!1,actionTo:`/chat`,actionLabel:`打开`,children:(0,B.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:`发条消息给 worker,检查 orchestrator 端到端通路。`})})]})]})}function YO({title:e,icon:t,loading:n,error:r,actionTo:i,actionLabel:a,children:o}){return(0,B.jsxs)(`article`,{className:`app-panel flex min-w-0 flex-col gap-3`,children:[(0,B.jsxs)(`header`,{className:`flex min-w-0 items-center justify-between gap-2`,children:[(0,B.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,B.jsx)(t,{className:`size-4 shrink-0 text-muted-foreground`}),(0,B.jsx)(`h3`,{className:`truncate text-feature font-normal`,children:e})]}),i&&(0,B.jsx)(tE,{to:i,className:`shrink-0 text-xs text-muted-foreground underline decoration-dotted underline-offset-2 hover:text-foreground`,children:a??`前往`})]}),n?(0,B.jsx)(yD,{className:`h-16`}):r?(0,B.jsx)(`p`,{className:`text-xs text-destructive`,children:r instanceof Error?r.message:`加载失败`}):o]})}function XO({label:e,value:t}){return(0,B.jsxs)(`li`,{className:`flex min-w-0 items-center justify-between gap-3`,children:[(0,B.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e}),(0,B.jsx)(`code`,{className:`min-w-0 truncate font-mono text-xs`,children:t})]})}var ZO=zi(`/`)({component:JO}),QO=yE.update({id:`/test`,path:`/test`,getParentRoute:()=>sE}),$O=SD.update({id:`/secrets`,path:`/secrets`,getParentRoute:()=>sE}),ek=ED.update({id:`/cron`,path:`/cron`,getParentRoute:()=>sE}),tk=PO.update({id:`/config`,path:`/config`,getParentRoute:()=>sE}),nk=RO.update({id:`/chat`,path:`/chat`,getParentRoute:()=>sE}),rk=WO.update({id:`/brain`,path:`/brain`,getParentRoute:()=>sE}),ik=qO.update({id:`/approvals`,path:`/approvals`,getParentRoute:()=>sE}),ak={IndexRoute:ZO.update({id:`/`,path:`/`,getParentRoute:()=>sE}),ApprovalsRoute:ik,BrainRoute:rk,ChatRoute:nk,ConfigRoute:tk,CronRoute:ek,SecretsRoute:$O,TestRoute:QO},ok=sE._addFileChildren(ak)._addFileTypes();Qa(`worker`),im();var sk=ea({routeTree:ok,basepath:Qp(`worker`),defaultPreload:`intent`,defaultPreloadStaleTime:0,scrollRestoration:!0}),ck=document.getElementById(`root`);if(!ck)throw Error(`Root element not found`);(0,sa.createRoot)(ck).render((0,B.jsx)(z.StrictMode,{children:(0,B.jsxs)(ze,{client:to,children:[(0,B.jsx)($a,{scope:`worker`}),(0,B.jsx)(ra,{router:sk}),(0,B.jsx)(eo,{})]})}));
|
package/web/worker/index.html
CHANGED
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
<link rel="icon" type="image/svg+xml" href="./favicon.svg" />
|
|
6
6
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
7
7
|
<title>AIWorker · Worker</title>
|
|
8
|
-
<script type="module" crossorigin src="./assets/index-
|
|
9
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
8
|
+
<script type="module" crossorigin src="./assets/index-K99vOXUf.js"></script>
|
|
9
|
+
<link rel="stylesheet" crossorigin href="./assets/index-Cs9_ieMw.css">
|
|
10
10
|
</head>
|
|
11
11
|
<body>
|
|
12
12
|
<div id="root"></div>
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:var(--font-family-sans);--font-mono:var(--font-family-mono);--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--leading-tight:1.25;--radius-xs:4px;--radius-sm:8px;--radius-lg:8px;--radius-xl:30px;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:var(--font-family-display);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-success:var(--success);--color-success-soft:var(--success-soft);--color-warning:var(--warning);--color-warning-soft:var(--warning-soft);--color-cohere-black:var(--cohere-black);--color-ink:var(--ink);--color-deep-green:var(--deep-green);--color-soft-stone:var(--soft-stone);--color-pale-green:var(--pale-green);--color-hairline:var(--hairline);--color-card-border:var(--card-border);--color-coral:var(--coral);--color-coral-soft:var(--coral-soft);--color-action-blue:var(--action-blue);--color-form-focus:var(--form-focus);--color-on-dark:var(--on-dark);--radius-pill:32px;--text-section:3rem;--text-section--line-height:1.15;--text-card-heading:2rem;--text-card-heading--line-height:1.2;--text-feature:1.5rem;--text-feature--line-height:1.3;--text-micro:.75rem;--text-micro--line-height:1.4;--text-micro-label:.75rem;--text-micro-label--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--font-family-display:CohereText, "Space Grotesk", Inter, ui-sans-serif, system-ui, sans-serif;--font-family-sans:"Unica77 Cohere Web", Inter, Arial, ui-sans-serif, system-ui, sans-serif;--font-family-mono:CohereMono, Arial, ui-sans-serif, system-ui, sans-serif;--cohere-black:#000;--ink:#212121;--primary:#17171c;--deep-green:#003c33;--dark-navy:#071829;--soft-stone:#eeece7;--pale-green:#edfce9;--pale-blue:#f1f5ff;--hairline:#d9d9dd;--border-light:#e5e7eb;--card-border:#f2f2f2;--muted:#f7f6f3;--muted-foreground:#616161;--slate:#75758a;--body-muted:#616161;--action-blue:#1863dc;--focus-blue:#4c6ee6;--coral:#ff7759;--coral-soft:#ffad9b;--form-focus:#9b60aa;--on-dark:#fff;--background:#fff;--foreground:var(--ink);--card:#fff;--card-foreground:var(--ink);--popover:#fff;--popover-foreground:var(--ink);--primary-foreground:#fff;--secondary:var(--soft-stone);--secondary-foreground:var(--ink);--accent:var(--pale-blue);--accent-foreground:var(--ink);--destructive:#b30000;--destructive-foreground:#fff;--border:var(--hairline);--input:var(--border-light);--ring:var(--focus-blue);--success:#003c33;--success-soft:var(--pale-green);--warning:#9a4b00;--warning-soft:#fff4de;--info:var(--action-blue);--info-soft:var(--pale-blue);--button-hover:var(--ink);--button-active:var(--cohere-black);--shadow-card-value:0 0 #0000;--shadow-popover-value:0 22px 60px #07182929;--radius:8px}[data-theme=dark]{--background:#071829;--foreground:#fff;--card:#0d2134;--card-foreground:#fff;--popover:#0d2134;--popover-foreground:#fff;--primary:#fff;--primary-foreground:#071829;--secondary:#122b42;--secondary-foreground:#fff;--muted:#10263b;--muted-foreground:#d9d9dd;--accent:#173552;--accent-foreground:#fff;--destructive:#ffad9b;--destructive-foreground:#fff;--border:#d9d9dd47;--input:#d9d9dd59;--ring:#8aa1ff;--success:#9ef0ce;--success-soft:#003c3399;--warning:#ffcf8a;--warning-soft:#fff4de1f;--info:#9fbaff;--info-soft:#f1f5ff1f;--shadow-popover-value:0 22px 60px #00000047}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-family-sans);font-feature-settings:"rlig" 1, "calt" 1;letter-spacing:0}::selection{background-color:var(--coral-soft);color:var(--ink)}}@layer components{.app-page{width:100%;min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-narrow{width:100%;max-width:var(--container-5xl);min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-header{min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-hairline);padding-bottom:calc(var(--spacing) * 5);flex-direction:column;display:flex}.app-page-title{font-family:var(--font-display);font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-foreground)}@media (width>=40rem){.app-page-title{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}}.app-page-copy{max-width:var(--container-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-page-copy{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.app-panel{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground);--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (width>=40rem){.app-panel{padding:calc(var(--spacing) * 6)}}.app-panel-soft{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-card-border);background-color:var(--color-soft-stone);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground)}@media (width>=40rem){.app-panel-soft{padding:calc(var(--spacing) * 6)}}.app-panel-dark{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.app-panel-dark{border-color:color-mix(in oklab, var(--color-on-dark) 15%, transparent)}}.app-panel-dark{background-color:var(--color-deep-green);padding:calc(var(--spacing) * 5);color:var(--color-on-dark)}@media (width>=40rem){.app-panel-dark{padding:calc(var(--spacing) * 6)}}.app-empty{border-radius:var(--radius-lg);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 8);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-empty{padding:calc(var(--spacing) * 12)}}.app-alert-error{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.app-alert-error{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.app-alert-error{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-destructive)}.app-alert-warning{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-warning);background-color:var(--color-warning-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-warning)}.app-alert-success{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-success);background-color:var(--color-success-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-success)}.app-code{border-radius:var(--radius-xs);background-color:var(--color-soft-stone);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.app-field{border-radius:var(--radius-xs);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-input);background-color:var(--color-background);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.app-field:focus-visible{border-color:var(--color-form-focus);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-ring);--tw-outline-style:none;outline-style:none}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-4{margin-left:calc(var(--spacing) * 4)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-64{height:calc(var(--spacing) * 64)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[420px\]{min-height:420px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-\[1\%\]{width:1%}.w-\[7rem\]{width:7rem}.w-\[10rem\]{width:10rem}.w-\[12rem\]{width:12rem}.w-\[14rem\]{width:14rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[11rem\]{max-width:11rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[60rem\]{min-width:60rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-card-border{border-color:var(--color-card-border)}.border-coral-soft{border-color:var(--color-coral-soft)}.border-destructive{border-color:var(--color-destructive)}.border-hairline{border-color:var(--color-hairline)}.border-ink{border-color:var(--color-ink)}.border-input{border-color:var(--color-input)}.border-on-dark\/20{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/20{border-color:color-mix(in oklab, var(--color-on-dark) 20%, transparent)}}.border-on-dark\/25{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/25{border-color:color-mix(in oklab, var(--color-on-dark) 25%, transparent)}}.border-on-dark\/35{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/35{border-color:color-mix(in oklab, var(--color-on-dark) 35%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success{border-color:var(--color-success)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.\!bg-primary{background-color:var(--color-primary)!important}.bg-background,.bg-background\/95{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--color-background) 95%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-cohere-black\/70{background-color:var(--color-cohere-black)}@supports (color:color-mix(in lab, red, red)){.bg-cohere-black\/70{background-color:color-mix(in oklab, var(--color-cohere-black) 70%, transparent)}}.bg-coral\/10{background-color:var(--color-coral)}@supports (color:color-mix(in lab, red, red)){.bg-coral\/10{background-color:color-mix(in oklab, var(--color-coral) 10%, transparent)}}.bg-deep-green{background-color:var(--color-deep-green)}.bg-ink{background-color:var(--color-ink)}.bg-muted-foreground\/30{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab, var(--color-muted-foreground) 30%, transparent)}}.bg-muted-foreground\/40{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.bg-on-dark{background-color:var(--color-on-dark)}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-soft-stone{background-color:var(--color-soft-stone)}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-soft{background-color:var(--color-warning-soft)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-card-heading{font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height))}.text-feature{font-size:var(--text-feature);line-height:var(--tw-leading,var(--text-feature--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-micro{font-size:var(--text-micro);line-height:var(--tw-leading,var(--text-micro--line-height))}.text-micro-label{font-size:var(--text-micro-label);line-height:var(--tw-leading,var(--text-micro-label--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-primary-foreground{color:var(--color-primary-foreground)!important}.text-action-blue{color:var(--color-action-blue)}.text-card-foreground{color:var(--color-card-foreground)}.text-coral-soft{color:var(--color-coral-soft)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-ink{color:var(--color-ink)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-on-dark,.text-on-dark\/70{color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.text-on-dark\/70{color:color-mix(in oklab, var(--color-on-dark) 70%, transparent)}}.text-pale-green{color:var(--color-pale-green)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--color-primary-foreground) 70%, transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-warning-soft{color:var(--color-warning-soft)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-hairline{-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);text-decoration-color:var(--color-hairline)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-card{--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-popover{--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-150{animation-duration:.15s}.group-\[\.toast\]\:rounded-pill:is(:where(.group).toast *){border-radius:var(--radius-pill)}.group-\[\.toast\]\:border:is(:where(.group).toast *){border-style:var(--tw-border-style);border-width:1px}.group-\[\.toast\]\:border-primary:is(:where(.group).toast *){border-color:var(--color-primary)}.group-\[\.toast\]\:bg-primary:is(:where(.group).toast *){background-color:var(--color-primary)}.group-\[\.toast\]\:bg-soft-stone:is(:where(.group).toast *){background-color:var(--color-soft-stone)}.group-\[\.toast\]\:font-medium:is(:where(.group).toast *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--color-muted-foreground)}.group-\[\.toast\]\:text-primary-foreground:is(:where(.group).toast *){color:var(--color-primary-foreground)}.group-\[\.toaster\]\:rounded-sm:is(:where(.group).toaster *){border-radius:var(--radius-sm)}.group-\[\.toaster\]\:border-hairline:is(:where(.group).toaster *){border-color:var(--color-hairline)}.group-\[\.toaster\]\:bg-background:is(:where(.group).toaster *){background-color:var(--color-background)}.group-\[\.toaster\]\:text-foreground:is(:where(.group).toaster *){color:var(--color-foreground)}.group-\[\.toaster\]\:shadow-popover:is(:where(.group).toaster *){--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:\!border-primary:hover{border-color:var(--color-primary)!important}.hover\:border-hairline:hover{border-color:var(--color-hairline)}.hover\:\!bg-primary:hover{background-color:var(--color-primary)!important}.hover\:bg-destructive:hover,.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.hover\:bg-ink:hover{background-color:var(--color-ink)}.hover\:bg-soft-stone:hover,.hover\:bg-soft-stone\/60:hover{background-color:var(--color-soft-stone)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-soft-stone\/60:hover{background-color:color-mix(in oklab, var(--color-soft-stone) 60%, transparent)}}.hover\:\!text-primary-foreground:hover{color:var(--color-primary-foreground)!important}.hover\:text-action-blue:hover{color:var(--color-action-blue)}.hover\:text-destructive-foreground:hover{color:var(--color-destructive-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-action-blue:hover{-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);text-decoration-color:var(--color-action-blue)}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-form-focus:focus-visible{border-color:var(--color-form-focus)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-cohere-black:active{background-color:var(--color-cohere-black)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[ending-style\]\:scale-95[data-ending-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[ending-style\]\:opacity-0[data-ending-style]{opacity:0}.data-\[starting-style\]\:scale-95[data-starting-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}.data-\[state\=selected\]\:bg-soft-stone[data-state=selected]{background-color:var(--color-soft-stone)}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:flex{display:flex}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-auto{width:auto}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,160px\)_minmax\(0\,120px\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,160px) minmax(0,120px) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:flex{display:flex}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(12rem\,1fr\)_auto_minmax\(12rem\,1fr\)\]{grid-template-columns:minmax(12rem,1fr) auto minmax(12rem,1fr)}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-end{justify-content:flex-end}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.lg\:max-h-none{max-height:none}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[420px\]{min-height:420px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:var(--font-family-sans);--font-mono:var(--font-family-mono);--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--leading-tight:1.25;--radius-xs:4px;--radius-sm:8px;--radius-lg:8px;--radius-xl:30px;--animate-spin:spin 1s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-display:var(--font-family-display);--color-background:var(--background);--color-foreground:var(--foreground);--color-card:var(--card);--color-card-foreground:var(--card-foreground);--color-popover:var(--popover);--color-popover-foreground:var(--popover-foreground);--color-primary:var(--primary);--color-primary-foreground:var(--primary-foreground);--color-secondary-foreground:var(--secondary-foreground);--color-muted-foreground:var(--muted-foreground);--color-destructive:var(--destructive);--color-destructive-foreground:var(--destructive-foreground);--color-border:var(--border);--color-input:var(--input);--color-ring:var(--ring);--color-success:var(--success);--color-success-soft:var(--success-soft);--color-warning:var(--warning);--color-warning-soft:var(--warning-soft);--color-cohere-black:var(--cohere-black);--color-ink:var(--ink);--color-deep-green:var(--deep-green);--color-soft-stone:var(--soft-stone);--color-pale-green:var(--pale-green);--color-hairline:var(--hairline);--color-card-border:var(--card-border);--color-coral:var(--coral);--color-coral-soft:var(--coral-soft);--color-action-blue:var(--action-blue);--color-form-focus:var(--form-focus);--color-on-dark:var(--on-dark);--radius-pill:32px;--text-section:3rem;--text-section--line-height:1.15;--text-card-heading:2rem;--text-card-heading--line-height:1.2;--text-feature:1.5rem;--text-feature--line-height:1.3;--text-micro:.75rem;--text-micro--line-height:1.4;--text-micro-label:.75rem;--text-micro-label--line-height:1.4}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:root{--font-family-display:CohereText, "Space Grotesk", Inter, ui-sans-serif, system-ui, sans-serif;--font-family-sans:"Unica77 Cohere Web", Inter, Arial, ui-sans-serif, system-ui, sans-serif;--font-family-mono:CohereMono, Arial, ui-sans-serif, system-ui, sans-serif;--cohere-black:#000;--ink:#212121;--primary:#17171c;--deep-green:#003c33;--dark-navy:#071829;--soft-stone:#eeece7;--pale-green:#edfce9;--pale-blue:#f1f5ff;--hairline:#d9d9dd;--border-light:#e5e7eb;--card-border:#f2f2f2;--muted:#f7f6f3;--muted-foreground:#616161;--slate:#75758a;--body-muted:#616161;--action-blue:#1863dc;--focus-blue:#4c6ee6;--coral:#ff7759;--coral-soft:#ffad9b;--form-focus:#9b60aa;--on-dark:#fff;--background:#fff;--foreground:var(--ink);--card:#fff;--card-foreground:var(--ink);--popover:#fff;--popover-foreground:var(--ink);--primary-foreground:#fff;--secondary:var(--soft-stone);--secondary-foreground:var(--ink);--accent:var(--pale-blue);--accent-foreground:var(--ink);--destructive:#b30000;--destructive-foreground:#fff;--border:var(--hairline);--input:var(--border-light);--ring:var(--focus-blue);--success:#003c33;--success-soft:var(--pale-green);--warning:#9a4b00;--warning-soft:#fff4de;--info:var(--action-blue);--info-soft:var(--pale-blue);--button-hover:var(--ink);--button-active:var(--cohere-black);--shadow-card-value:0 0 #0000;--shadow-popover-value:0 22px 60px #07182929;--radius:8px}[data-theme=dark]{--background:#071829;--foreground:#fff;--card:#0d2134;--card-foreground:#fff;--popover:#0d2134;--popover-foreground:#fff;--primary:#fff;--primary-foreground:#071829;--secondary:#122b42;--secondary-foreground:#fff;--muted:#10263b;--muted-foreground:#d9d9dd;--accent:#173552;--accent-foreground:#fff;--destructive:#ffad9b;--destructive-foreground:#fff;--border:#d9d9dd47;--input:#d9d9dd59;--ring:#8aa1ff;--success:#9ef0ce;--success-soft:#003c3399;--warning:#ffcf8a;--warning-soft:#fff4de1f;--info:#9fbaff;--info-soft:#f1f5ff1f;--shadow-popover-value:0 22px 60px #00000047}*{border-color:var(--border)}body{background-color:var(--background);color:var(--foreground);font-family:var(--font-family-sans);font-feature-settings:"rlig" 1, "calt" 1;letter-spacing:0}::selection{background-color:var(--coral-soft);color:var(--ink)}}@layer components{.app-page{width:100%;min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-narrow{width:100%;max-width:var(--container-5xl);min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 8);flex-direction:column;display:flex}.app-page-header{min-width:calc(var(--spacing) * 0);gap:calc(var(--spacing) * 2);border-bottom-style:var(--tw-border-style);border-bottom-width:1px;border-color:var(--color-hairline);padding-bottom:calc(var(--spacing) * 5);flex-direction:column;display:flex}.app-page-title{font-family:var(--font-display);font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height));--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal);color:var(--color-foreground)}@media (width>=40rem){.app-page-title{font-size:var(--text-section);line-height:var(--tw-leading,var(--text-section--line-height))}}.app-page-copy{max-width:var(--container-3xl);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-page-copy{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}.app-panel{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground);--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}@media (width>=40rem){.app-panel{padding:calc(var(--spacing) * 6)}}.app-panel-soft{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-card-border);background-color:var(--color-soft-stone);padding:calc(var(--spacing) * 5);color:var(--color-card-foreground)}@media (width>=40rem){.app-panel-soft{padding:calc(var(--spacing) * 6)}}.app-panel-dark{border-radius:var(--radius-lg);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.app-panel-dark{border-color:color-mix(in oklab, var(--color-on-dark) 15%, transparent)}}.app-panel-dark{background-color:var(--color-deep-green);padding:calc(var(--spacing) * 5);color:var(--color-on-dark)}@media (width>=40rem){.app-panel-dark{padding:calc(var(--spacing) * 6)}}.app-empty{border-radius:var(--radius-lg);border-style:var(--tw-border-style);--tw-border-style:dashed;border-style:dashed;border-width:1px;border-color:var(--color-hairline);background-color:var(--color-card);padding:calc(var(--spacing) * 8);text-align:center;font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-muted-foreground)}@media (width>=40rem){.app-empty{padding:calc(var(--spacing) * 12)}}.app-alert-error{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{border-color:color-mix(in oklab, var(--color-destructive) 30%, transparent)}}.app-alert-error{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.app-alert-error{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.app-alert-error{padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-destructive)}.app-alert-warning{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-warning);background-color:var(--color-warning-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-warning)}.app-alert-success{border-radius:var(--radius-sm);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-success);background-color:var(--color-success-soft);padding:calc(var(--spacing) * 3);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height));color:var(--color-success)}.app-code{border-radius:var(--radius-xs);background-color:var(--color-soft-stone);padding-inline:calc(var(--spacing) * 1.5);padding-block:calc(var(--spacing) * .5);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.app-field{border-radius:var(--radius-xs);border-style:var(--tw-border-style);border-width:1px;border-color:var(--color-input);background-color:var(--color-background);padding-inline:calc(var(--spacing) * 3);padding-block:calc(var(--spacing) * 2);font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.app-field:focus-visible{border-color:var(--color-form-focus);--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);--tw-ring-color:var(--color-ring);--tw-outline-style:none;outline-style:none}}@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing) * 0)}.start{inset-inline-start:var(--spacing)}.top-0{top:calc(var(--spacing) * 0)}.top-1\/2{top:50%}.top-4{top:calc(var(--spacing) * 4)}.right-0{right:calc(var(--spacing) * 0)}.right-4{right:calc(var(--spacing) * 4)}.bottom-0{bottom:calc(var(--spacing) * 0)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (width>=40rem){.container{max-width:40rem}}@media (width>=48rem){.container{max-width:48rem}}@media (width>=64rem){.container{max-width:64rem}}@media (width>=80rem){.container{max-width:80rem}}@media (width>=96rem){.container{max-width:96rem}}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-1{margin-inline:calc(var(--spacing) * 1)}.mx-2{margin-inline:calc(var(--spacing) * 2)}.mx-auto{margin-inline:auto}.my-2{margin-block:calc(var(--spacing) * 2)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:calc(var(--spacing) * 1)}.mt-1\.5{margin-top:calc(var(--spacing) * 1.5)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.ml-1{margin-left:calc(var(--spacing) * 1)}.ml-4{margin-left:calc(var(--spacing) * 4)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-2{height:calc(var(--spacing) * 2)}.h-8{height:calc(var(--spacing) * 8)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-16{height:calc(var(--spacing) * 16)}.h-20{height:calc(var(--spacing) * 20)}.h-24{height:calc(var(--spacing) * 24)}.h-32{height:calc(var(--spacing) * 32)}.h-40{height:calc(var(--spacing) * 40)}.h-64{height:calc(var(--spacing) * 64)}.h-auto{height:auto}.h-dvh{height:100dvh}.h-full{height:100%}.h-px{height:1px}.max-h-56{max-height:calc(var(--spacing) * 56)}.max-h-64{max-height:calc(var(--spacing) * 64)}.\!min-h-0{min-height:calc(var(--spacing) * 0)!important}.min-h-0{min-height:calc(var(--spacing) * 0)}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-\[60px\]{min-height:60px}.min-h-\[80px\]{min-height:80px}.min-h-\[420px\]{min-height:420px}.min-h-screen{min-height:100vh}.w-2{width:calc(var(--spacing) * 2)}.w-16{width:calc(var(--spacing) * 16)}.w-24{width:calc(var(--spacing) * 24)}.w-48{width:calc(var(--spacing) * 48)}.w-64{width:calc(var(--spacing) * 64)}.w-\[1\%\]{width:1%}.w-\[7rem\]{width:7rem}.w-\[10rem\]{width:10rem}.w-\[12rem\]{width:12rem}.w-\[14rem\]{width:14rem}.w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.w-full{width:100%}.w-px{width:1px}.max-w-3xl{max-width:var(--container-3xl)}.max-w-4xl{max-width:var(--container-4xl)}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-\[11rem\]{max-width:11rem}.max-w-\[90\%\]{max-width:90%}.max-w-\[240px\]{max-width:240px}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing) * 0)}.min-w-\[60rem\]{min-width:60rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-pointer{cursor:pointer}.resize{resize:both}.resize-none{resize:none}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-\[100px_1fr\]{grid-template-columns:100px 1fr}.grid-cols-\[120px_1fr\]{grid-template-columns:120px 1fr}.grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing) * 1)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}.gap-6{gap:calc(var(--spacing) * 6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 1.5) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 1.5) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 2) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 2) * calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 3) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 3) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.gap-y-3{row-gap:calc(var(--spacing) * 3)}.self-end{align-self:flex-end}.self-start{align-self:flex-start}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-pill{border-radius:var(--radius-pill)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.\!border-primary{border-color:var(--color-primary)!important}.border-border{border-color:var(--color-border)}.border-card-border{border-color:var(--color-card-border)}.border-coral-soft{border-color:var(--color-coral-soft)}.border-destructive{border-color:var(--color-destructive)}.border-hairline{border-color:var(--color-hairline)}.border-ink{border-color:var(--color-ink)}.border-input{border-color:var(--color-input)}.border-on-dark\/20{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/20{border-color:color-mix(in oklab, var(--color-on-dark) 20%, transparent)}}.border-on-dark\/25{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/25{border-color:color-mix(in oklab, var(--color-on-dark) 25%, transparent)}}.border-on-dark\/35{border-color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.border-on-dark\/35{border-color:color-mix(in oklab, var(--color-on-dark) 35%, transparent)}}.border-primary{border-color:var(--color-primary)}.border-success{border-color:var(--color-success)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--color-warning)}.\!bg-primary{background-color:var(--color-primary)!important}.bg-background,.bg-background\/95{background-color:var(--color-background)}@supports (color:color-mix(in lab, red, red)){.bg-background\/95{background-color:color-mix(in oklab, var(--color-background) 95%, transparent)}}.bg-border{background-color:var(--color-border)}.bg-card{background-color:var(--color-card)}.bg-cohere-black\/70{background-color:var(--color-cohere-black)}@supports (color:color-mix(in lab, red, red)){.bg-cohere-black\/70{background-color:color-mix(in oklab, var(--color-cohere-black) 70%, transparent)}}.bg-coral\/10{background-color:var(--color-coral)}@supports (color:color-mix(in lab, red, red)){.bg-coral\/10{background-color:color-mix(in oklab, var(--color-coral) 10%, transparent)}}.bg-deep-green{background-color:var(--color-deep-green)}.bg-ink{background-color:var(--color-ink)}.bg-muted-foreground\/30{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/30{background-color:color-mix(in oklab, var(--color-muted-foreground) 30%, transparent)}}.bg-muted-foreground\/40{background-color:var(--color-muted-foreground)}@supports (color:color-mix(in lab, red, red)){.bg-muted-foreground\/40{background-color:color-mix(in oklab, var(--color-muted-foreground) 40%, transparent)}}.bg-on-dark{background-color:var(--color-on-dark)}.bg-popover{background-color:var(--color-popover)}.bg-primary{background-color:var(--color-primary)}.bg-soft-stone{background-color:var(--color-soft-stone)}.bg-success{background-color:var(--color-success)}.bg-success-soft{background-color:var(--color-success-soft)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--color-warning)}.bg-warning-soft{background-color:var(--color-warning-soft)}.p-0{padding:calc(var(--spacing) * 0)}.p-1{padding:calc(var(--spacing) * 1)}.p-2{padding:calc(var(--spacing) * 2)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.p-6{padding:calc(var(--spacing) * 6)}.\!px-0{padding-inline:calc(var(--spacing) * 0)!important}.px-1{padding-inline:calc(var(--spacing) * 1)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-6{padding-inline:calc(var(--spacing) * 6)}.px-7{padding-inline:calc(var(--spacing) * 7)}.\!py-0{padding-block:calc(var(--spacing) * 0)!important}.py-1{padding-block:calc(var(--spacing) * 1)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-8{padding-block:calc(var(--spacing) * 8)}.pt-0{padding-top:calc(var(--spacing) * 0)}.pt-4{padding-top:calc(var(--spacing) * 4)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-24{padding-bottom:calc(var(--spacing) * 24)}.pl-3{padding-left:calc(var(--spacing) * 3)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-top{vertical-align:top}.font-display{font-family:var(--font-display)}.font-mono{font-family:var(--font-mono)}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-card-heading{font-size:var(--text-card-heading);line-height:var(--tw-leading,var(--text-card-heading--line-height))}.text-feature{font-size:var(--text-feature);line-height:var(--tw-leading,var(--text-feature--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-micro{font-size:var(--text-micro);line-height:var(--tw-leading,var(--text-micro--line-height))}.text-micro-label{font-size:var(--text-micro-label);line-height:var(--tw-leading,var(--text-micro-label--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-\[1\.7\]{--tw-leading:1.7;line-height:1.7}.leading-none{--tw-leading:1;line-height:1}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.\!text-primary-foreground{color:var(--color-primary-foreground)!important}.text-action-blue{color:var(--color-action-blue)}.text-card-foreground{color:var(--color-card-foreground)}.text-coral-soft{color:var(--color-coral-soft)}.text-destructive{color:var(--color-destructive)}.text-foreground{color:var(--color-foreground)}.text-ink{color:var(--color-ink)}.text-muted-foreground{color:var(--color-muted-foreground)}.text-on-dark,.text-on-dark\/70{color:var(--color-on-dark)}@supports (color:color-mix(in lab, red, red)){.text-on-dark\/70{color:color-mix(in oklab, var(--color-on-dark) 70%, transparent)}}.text-pale-green{color:var(--color-pale-green)}.text-popover-foreground{color:var(--color-popover-foreground)}.text-primary{color:var(--color-primary)}.text-primary-foreground,.text-primary-foreground\/70{color:var(--color-primary-foreground)}@supports (color:color-mix(in lab, red, red)){.text-primary-foreground\/70{color:color-mix(in oklab, var(--color-primary-foreground) 70%, transparent)}}.text-secondary-foreground{color:var(--color-secondary-foreground)}.text-success{color:var(--color-success)}.text-warning{color:var(--color-warning)}.text-warning-soft{color:var(--color-warning-soft)}.uppercase{text-transform:uppercase}.underline{text-decoration-line:underline}.decoration-hairline{-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);-webkit-text-decoration-color:var(--color-hairline);text-decoration-color:var(--color-hairline)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.underline-offset-4{text-underline-offset:4px}.opacity-70{opacity:.7}.shadow-card{--tw-shadow:var(--shadow-card-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-popover{--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-offset-background{--tw-ring-offset-color:var(--color-background)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition-\[background-color\,border-color\,color\]{transition-property:background-color,border-color,color;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[opacity\,transform\]{transition-property:opacity,transform;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-150{--tw-duration:.15s;transition-duration:.15s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.duration-150{animation-duration:.15s}.group-\[\.toast\]\:rounded-pill:is(:where(.group).toast *){border-radius:var(--radius-pill)}.group-\[\.toast\]\:border:is(:where(.group).toast *){border-style:var(--tw-border-style);border-width:1px}.group-\[\.toast\]\:border-primary:is(:where(.group).toast *){border-color:var(--color-primary)}.group-\[\.toast\]\:bg-primary:is(:where(.group).toast *){background-color:var(--color-primary)}.group-\[\.toast\]\:bg-soft-stone:is(:where(.group).toast *){background-color:var(--color-soft-stone)}.group-\[\.toast\]\:font-medium:is(:where(.group).toast *){--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.group-\[\.toast\]\:text-muted-foreground:is(:where(.group).toast *){color:var(--color-muted-foreground)}.group-\[\.toast\]\:text-primary-foreground:is(:where(.group).toast *){color:var(--color-primary-foreground)}.group-\[\.toaster\]\:rounded-sm:is(:where(.group).toaster *){border-radius:var(--radius-sm)}.group-\[\.toaster\]\:border-hairline:is(:where(.group).toaster *){border-color:var(--color-hairline)}.group-\[\.toaster\]\:bg-background:is(:where(.group).toaster *){background-color:var(--color-background)}.group-\[\.toaster\]\:text-foreground:is(:where(.group).toaster *){color:var(--color-foreground)}.group-\[\.toaster\]\:shadow-popover:is(:where(.group).toaster *){--tw-shadow:var(--shadow-popover-value);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-70:is(:where(.peer):disabled~*){opacity:.7}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--color-foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--color-muted-foreground)}@media (hover:hover){.hover\:\!border-primary:hover{border-color:var(--color-primary)!important}.hover\:border-hairline:hover{border-color:var(--color-hairline)}.hover\:\!bg-primary:hover{background-color:var(--color-primary)!important}.hover\:bg-destructive:hover,.hover\:bg-destructive\/10:hover{background-color:var(--color-destructive)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-destructive\/10:hover{background-color:color-mix(in oklab, var(--color-destructive) 10%, transparent)}}.hover\:bg-ink:hover{background-color:var(--color-ink)}.hover\:bg-soft-stone:hover,.hover\:bg-soft-stone\/60:hover{background-color:var(--color-soft-stone)}@supports (color:color-mix(in lab, red, red)){.hover\:bg-soft-stone\/60:hover{background-color:color-mix(in oklab, var(--color-soft-stone) 60%, transparent)}}.hover\:\!text-primary-foreground:hover{color:var(--color-primary-foreground)!important}.hover\:text-action-blue:hover{color:var(--color-action-blue)}.hover\:text-destructive-foreground:hover{color:var(--color-destructive-foreground)}.hover\:text-foreground:hover{color:var(--color-foreground)}.hover\:text-primary:hover{color:var(--color-primary)}.hover\:underline:hover{text-decoration-line:underline}.hover\:decoration-action-blue:hover{-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);-webkit-text-decoration-color:var(--color-action-blue);text-decoration-color:var(--color-action-blue)}.hover\:opacity-100:hover{opacity:1}}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--color-ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:border-form-focus:focus-visible{border-color:var(--color-form-focus)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:var(--color-ring)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-cohere-black:active{background-color:var(--color-cohere-black)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.disabled\:opacity-60:disabled{opacity:.6}@media (hover:hover){.disabled\:hover\:bg-transparent:disabled:hover{background-color:#0000}}.data-\[ending-style\]\:scale-95[data-ending-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[ending-style\]\:opacity-0[data-ending-style]{opacity:0}.data-\[starting-style\]\:scale-95[data-starting-style]{--tw-scale-x:95%;--tw-scale-y:95%;--tw-scale-z:95%;scale:var(--tw-scale-x) var(--tw-scale-y)}.data-\[starting-style\]\:opacity-0[data-starting-style]{opacity:0}.data-\[state\=selected\]\:bg-soft-stone[data-state=selected]{background-color:var(--color-soft-stone)}@media (width>=40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.sm\:mt-0{margin-top:calc(var(--spacing) * 0)}.sm\:flex{display:flex}.sm\:w-64{width:calc(var(--spacing) * 64)}.sm\:w-auto{width:auto}.sm\:max-w-\[80\%\]{max-width:80%}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-md{max-width:var(--container-md)}.sm\:max-w-xl{max-width:var(--container-xl)}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:grid-cols-\[140px_1fr\]{grid-template-columns:140px 1fr}.sm\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,160px\)_minmax\(0\,120px\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,160px) minmax(0,120px) auto}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-end{align-items:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:justify-end{justify-content:flex-end}.sm\:p-4{padding:calc(var(--spacing) * 4)}.sm\:p-5{padding:calc(var(--spacing) * 5)}.sm\:p-6{padding:calc(var(--spacing) * 6)}.sm\:p-8{padding:calc(var(--spacing) * 8)}.sm\:px-6{padding-inline:calc(var(--spacing) * 6)}}@media (width>=48rem){.md\:col-span-1{grid-column:span 1/span 1}.md\:col-start-2{grid-column-start:2}.md\:row-start-1{grid-row-start:1}.md\:flex{display:flex}.md\:grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(12rem\,1fr\)_auto_minmax\(12rem\,1fr\)\]{grid-template-columns:minmax(12rem,1fr) auto minmax(12rem,1fr)}.md\:flex-wrap{flex-wrap:wrap}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-end{justify-content:flex-end}.md\:px-8{padding-inline:calc(var(--spacing) * 8)}}@media (width>=64rem){.lg\:h-\[calc\(100vh-200px\)\]{height:calc(100vh - 200px)}.lg\:max-h-none{max-height:none}.lg\:min-h-0{min-height:calc(var(--spacing) * 0)}.lg\:min-h-\[420px\]{min-height:420px}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[280px_1fr\]{grid-template-columns:280px 1fr}.lg\:flex-row{flex-direction:row}.lg\:items-end{align-items:flex-end}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-inline:calc(var(--spacing) * 8)}}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing) * 0)}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0), var(--tw-enter-translate-y,0), 0) scale3d(var(--tw-enter-scale,1), var(--tw-enter-scale,1), var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0), var(--tw-exit-translate-y,0), 0) scale3d(var(--tw-exit-scale,1), var(--tw-exit-scale,1), var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|
|
File without changes
|