@maincode-ai/matilda-code 0.19.2 → 0.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/chunks/agent-HMAY5XP7.js +3 -0
  2. package/chunks/agent-headless-NWRQLNNS.js +3 -0
  3. package/chunks/{anthropicContentGenerator-BRG6WZK3.js → anthropicContentGenerator-CZLOMDXF.js} +11 -11
  4. package/chunks/{askUserQuestion-QPVUWJCI.js → askUserQuestion-V5YLTC4J.js} +1 -1
  5. package/chunks/{ca-D7YSARXX.js → ca-UW3G7H5I.js} +1 -1
  6. package/chunks/chunk-2FX4655X.js +101 -0
  7. package/chunks/{chunk-2MEHZGZJ.js → chunk-2XZIKUB6.js} +1 -1
  8. package/chunks/{chunk-RDNFN7GJ.js → chunk-3E62XAAL.js} +1 -1
  9. package/chunks/{chunk-X2SJJ7RN.js → chunk-3GAKPC2I.js} +2 -2
  10. package/chunks/chunk-3KCDX6MY.js +8 -0
  11. package/chunks/{chunk-X6DODPXG.js → chunk-5U3A6KMU.js} +1 -1
  12. package/chunks/chunk-7VGUNT5L.js +8 -0
  13. package/chunks/{chunk-XKNSVSWD.js → chunk-AEEMG76V.js} +2 -2
  14. package/chunks/chunk-C6SSPIF3.js +56 -0
  15. package/chunks/{chunk-DY6PIAAY.js → chunk-CFBZKYFB.js} +1 -1
  16. package/chunks/chunk-CLUEFPSU.js +8 -0
  17. package/chunks/chunk-FSRNEJQB.js +8 -0
  18. package/chunks/chunk-KP6BLFQS.js +12 -0
  19. package/chunks/{chunk-4M4CUQUR.js → chunk-NDR7ZFUA.js} +1 -1
  20. package/chunks/{chunk-CNHY7623.js → chunk-SUORCDGS.js} +1 -1
  21. package/chunks/{chunk-KMU5KAYC.js → chunk-WPZEF752.js} +490 -505
  22. package/chunks/chunk-XXZH7C44.js +34 -0
  23. package/chunks/{chunk-LN2DRVOB.js → chunk-XYA3SFGC.js} +1 -1
  24. package/chunks/{computer-use-MJ7WGSXA.js → computer-use-B2345U7U.js} +1 -1
  25. package/chunks/contextCommand-ZTMOL6TC.js +3 -0
  26. package/chunks/{cron-create-K35JKX3K.js → cron-create-JHL5JGIM.js} +1 -1
  27. package/chunks/{cron-delete-7B65R7JC.js → cron-delete-K2R3KI2W.js} +1 -1
  28. package/chunks/{cron-list-FCX6HCY7.js → cron-list-R3YHZBHA.js} +1 -1
  29. package/chunks/{de-ME75AM7Q.js → de-QSFN3SRK.js} +1 -1
  30. package/chunks/{edit-Y7NFRYDN.js → edit-YI2KTC5G.js} +1 -1
  31. package/chunks/{en-KVT5FJKO.js → en-ZU6RPTEW.js} +2 -2
  32. package/chunks/{enter-worktree-PVVX5BLF.js → enter-worktree-2V2D7CYW.js} +1 -1
  33. package/chunks/{enterPlanMode-VVRE4YBV.js → enterPlanMode-ZUCJBK26.js} +1 -1
  34. package/chunks/{exit-worktree-LDIOV4NM.js → exit-worktree-TNMQ6BJQ.js} +1 -1
  35. package/chunks/{exitPlanMode-AR4QZ4EF.js → exitPlanMode-3V2VGFJI.js} +1 -1
  36. package/chunks/{fr-V3O5JG5W.js → fr-FKTJ4COX.js} +2 -2
  37. package/chunks/geminiContentGenerator-DLT3FIFM.js +8 -0
  38. package/chunks/{glob-6H2PV6X4.js → glob-DK4XLD6I.js} +1 -1
  39. package/chunks/grep-HHKDBU7B.js +22 -0
  40. package/chunks/{ja-ZOFFSG6C.js → ja-GKS4GLZP.js} +1 -1
  41. package/chunks/{ls-ZSHUDEJV.js → ls-4QPI2E7A.js} +1 -1
  42. package/chunks/{lsp-DW3UNQQ6.js → lsp-P3GKBOP3.js} +1 -1
  43. package/chunks/{matildaAgentContentGenerator-B7FZY5QT.js → matildaAgentContentGenerator-WANX4W2Y.js} +9 -9
  44. package/chunks/matildaContentGenerator-YNM53I6M.js +8 -0
  45. package/chunks/monitor-JVPMYOZ2.js +32 -0
  46. package/chunks/notebook-edit-TSASMGK7.js +17 -0
  47. package/chunks/openaiContentGenerator-5VMLKMVG.js +3 -0
  48. package/chunks/{pt-K2W3KMTP.js → pt-VIW62ZAE.js} +1 -1
  49. package/chunks/{read-file-MUUE7CJM.js → read-file-HEVXSNSO.js} +1 -1
  50. package/chunks/ripGrep-UCUYOKAZ.js +3 -0
  51. package/chunks/{ru-KICZRPMQ.js → ru-FSSACF4A.js} +1 -1
  52. package/chunks/scheduler-LXGHE7LL.js +8 -0
  53. package/chunks/{send-message-BPTEYK4Y.js → send-message-K3T7GVHO.js} +1 -1
  54. package/chunks/{serve-DAFPBR3R.js → serve-F2OU5GL5.js} +1 -1
  55. package/chunks/shell-5CG25UXX.js +3 -0
  56. package/chunks/{skill-D23JCWUG.js → skill-YXHHDMLR.js} +1 -1
  57. package/chunks/src-4KXRVNR5.js +3 -0
  58. package/chunks/{symbol-search-3E5XK5S6.js → symbol-search-WVNUJRET.js} +1 -1
  59. package/chunks/{syntheticOutput-NSQJLEEY.js → syntheticOutput-LLA4WQR7.js} +1 -1
  60. package/chunks/{task-create-TQI5N4YR.js → task-create-ZZTSVXZN.js} +1 -1
  61. package/chunks/{task-list-DQBF34BK.js → task-list-6I64SK7E.js} +1 -1
  62. package/chunks/{task-stop-5R44O4NK.js → task-stop-UKRXMCZV.js} +1 -1
  63. package/chunks/{task-update-PL2JDIF6.js → task-update-XZWORLJB.js} +1 -1
  64. package/chunks/{team-create-B3K7PIQ5.js → team-create-ESOAIRWA.js} +1 -1
  65. package/chunks/{team-delete-LWX4LMFZ.js → team-delete-DEPXAMUE.js} +1 -1
  66. package/chunks/{todoWrite-V4DQMEDR.js → todoWrite-DKJAYA4S.js} +1 -1
  67. package/chunks/{tool-search-UA3I7UV3.js → tool-search-47TA6SG4.js} +1 -1
  68. package/chunks/update-goal-DH2TEYYU.js +16 -0
  69. package/chunks/{web-fetch-XRYT2EOQ.js → web-fetch-5F7C7MXU.js} +1 -1
  70. package/chunks/{web-search-MD3V4NBD.js → web-search-N6QM6PXT.js} +1 -1
  71. package/chunks/{workflow-A2P7P7KO.js → workflow-AGPUPU65.js} +2 -2
  72. package/chunks/write-file-XJ2S7TR3.js +11 -0
  73. package/chunks/{zh-C5PHBN3U.js → zh-I4FV25MS.js} +2 -2
  74. package/chunks/{zh-TW-IYMR6KR3.js → zh-TW-7HNBEDIB.js} +2 -2
  75. package/cli.js +462 -461
  76. package/locales/ca.js +6 -2
  77. package/locales/de.js +5 -3
  78. package/locales/en.js +7 -4
  79. package/locales/fr.js +4 -2
  80. package/locales/ja.js +6 -2
  81. package/locales/pt.js +4 -2
  82. package/locales/ru.js +4 -2
  83. package/locales/zh-TW.js +7 -4
  84. package/locales/zh.js +7 -4
  85. package/package.json +2 -2
  86. package/chunks/agent-XKRS7SDN.js +0 -3
  87. package/chunks/agent-headless-5UTXGWJL.js +0 -3
  88. package/chunks/chunk-APVMKC4S.js +0 -101
  89. package/chunks/chunk-OQ73WWR4.js +0 -8
  90. package/chunks/chunk-R6YTDM76.js +0 -8
  91. package/chunks/chunk-S32ZN6LD.js +0 -12
  92. package/chunks/chunk-WQNABJ5R.js +0 -38
  93. package/chunks/contextCommand-AGXIRVKU.js +0 -3
  94. package/chunks/geminiContentGenerator-35P4NFWN.js +0 -8
  95. package/chunks/grep-OMYHSNBF.js +0 -22
  96. package/chunks/matildaContentGenerator-DQOUSFU3.js +0 -8
  97. package/chunks/monitor-LY6HMAGP.js +0 -32
  98. package/chunks/notebook-edit-PY3T4RHL.js +0 -17
  99. package/chunks/openaiContentGenerator-A42WRFRC.js +0 -3
  100. package/chunks/ripGrep-BJRH2OAQ.js +0 -3
  101. package/chunks/scheduler-MFP5BJTP.js +0 -8
  102. package/chunks/shell-YAP6NQTT.js +0 -3
  103. package/chunks/src-77YCXW6G.js +0 -3
  104. package/chunks/write-file-TTOYKZTG.js +0 -11
@@ -0,0 +1,34 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import{j as C}from"./chunk-CLUEFPSU.js";import{Y as p}from"./chunk-QWBNNEV2.js";import{b as g}from"./chunk-GZPNIYVZ.js";g();var u=new Map;function ge(e,t){return e===t?!0:!e||!t?!1:_(e)===_(t)}function _(e){let t={};for(let n of Object.keys(e).sort()){let o=e[n];o!==void 0&&(t[n]=o)}return JSON.stringify(t)}function v(e){return u.get(e)}function I(e,t){u.set(e,t)}function R(e){let t=u.get(e);return u.delete(e),t}function L(e,t){let n=u.get(e);if(!n)return;let o={...n,iterations:n.iterations+1,lastReason:t};return u.set(e,o),o}function fe(e,t,n){let o=u.get(e);if(!o)return;let i={...o,status:t,statusNote:t==="active"?void 0:n?.trim()||o.statusNote};return t==="active"&&delete i.statusNote,u.set(e,i),i}function M(e){return e.status??"active"}function pe(){u.clear(),b.clear(),k.clear()}var b=new Map;function me(e,t){b.set(e,t)}function w(e){b.delete(e)}function N(e,t){K(e,t);let n=b.get(e);if(n)try{n(t)}catch{}}var k=new Map;function K(e,t){k.set(e,t)}function ye(e){return k.get(e)}function Ge(e,t){if(!t){k.delete(e);return}k.set(e,t)}g();g();var A=p("ERROR_REPORT");async function j(e,t,n,o="general"){let i;e instanceof Error?i={message:e.message,stack:e.stack}:typeof e=="object"&&e!==null&&"message"in e?i={message:String(e.message)}:i={message:String(e)};let r={error:i};n&&(r.context=n);let s=`${t} [${o}]`,c;try{c=JSON.stringify(r,null,2)}catch(l){A.error(`${s} Could not stringify report content (likely due to context):`,l,e);try{c=JSON.stringify({error:i},null,2),A.error(s,c)}catch(f){A.error(`${s} Failed to stringify minimal error report:`,f,e)}return}A.error(s,c)}var h=p("GOAL_JUDGE"),q=`You are evaluating a stop-condition hook in an autonomous coding agent.
4
+ Read the conversation transcript above carefully, then judge whether the
5
+ user-provided condition is satisfied.
6
+
7
+ Your response MUST be a JSON object with one of these shapes:
8
+ - {"ok": true, "reason": "<quote evidence from the transcript that satisfies the condition>"}
9
+ - {"ok": false, "reason": "<quote what is missing or what blocks the condition>"}
10
+ - {"ok": false, "impossible": true, "reason": "<explain why the condition can never be satisfied>"}
11
+
12
+ Always include a "reason" field, quoting specific text from the transcript
13
+ whenever possible. If the transcript does not contain clear evidence that the
14
+ condition is satisfied, return {"ok": false, "reason": "insufficient evidence in transcript"}.
15
+ Only use {"ok": false, "impossible": true} when the condition is genuinely
16
+ unachievable in this session: for example, it is self-contradictory, depends on
17
+ an unavailable resource or capability, or the assistant has exhausted reasonable
18
+ approaches and the transcript confirms there is no path forward. The assistant
19
+ claiming the goal is impossible is evidence, not proof; independently confirm
20
+ the condition is genuinely unachievable rather than deferring to the assistant's
21
+ self-assessment. Do not use it just because progress is slow or evidence is
22
+ currently missing. When in doubt, return {"ok": false} without "impossible".`,Y=e=>`Based on the conversation transcript above, has the following stopping condition been satisfied? Answer based on transcript evidence only.
23
+ Condition JSON string: ${JSON.stringify(e)}`;var z={type:"OBJECT",properties:{ok:{type:"BOOLEAN"},reason:{type:"STRING"},impossible:{type:"BOOLEAN"}},required:["ok","reason"],additionalProperties:!1},m="Goal judge unavailable; continue working toward the goal and run `/goal clear` to stop early.",W=240;function x(e,t){j(e,"Goal judge failed",{stage:t},`goal-judge-${t}`).catch(n=>{h.debug(`Goal judge error reporting failed: ${n instanceof Error?n.message:String(n)}`)})}var X=24,y=4e3;async function H(e,t){let n=t.condition.trim();if(!n)return{ok:!1,reason:m};if(t.signal.aborted)return{ok:!1,reason:m};let o=V(e,t.lastAssistantText);o.push({role:"user",parts:[{text:Y(n)}]});let i=e.getFastModel()??e.getModel();try{let r=e.getGeminiClient(),s=await C("unknown",()=>r.generateContent(o,{systemInstruction:q,temperature:0,responseMimeType:"application/json",responseSchema:z,thinkingConfig:{thinkingBudget:0}},t.signal,i)),c=ne(s);if(!c)return h.debug("Goal judge returned empty content; defaulting to not-met"),x(new Error("Empty judge response"),"empty-response"),{ok:!1,reason:m};let l=oe(c);return l||(h.debug(`Goal judge reply not parseable as JSON (length=${c.length})`),x(new Error("Judge response was not parseable as JSON"),"parse"),{ok:!1,reason:m})}catch(r){return h.debug(`Goal judge threw: ${r instanceof Error?r.message:String(r)}`),x(r,"generate-content"),{ok:!1,reason:m}}}function V(e,t){try{let n=e.getGeminiClient();if(!n.isInitialized())return O(t);let i=n.getHistoryTail(X).map(Q);return i.length===0?O(t):(!(te(i).includes(t)||t.trim()==="")&&t.trim()&&i.push({role:"model",parts:[{text:t.slice(0,y)}]}),i)}catch(n){return h.debug(`Goal judge transcript fetch failed: ${n instanceof Error?n.message:String(n)}`),O(t)}}function O(e){return e.trim()?[{role:"model",parts:[{text:e.slice(0,y)}]}]:[]}function Q(e){return e.parts?{...e,parts:e.parts.map(Z)}:e}function Z(e){return typeof e.text=="string"?e.text.length>y?{...e,text:e.text.slice(0,y)+"\u2026[truncated]"}:e:e.functionResponse?{...e,functionResponse:{...e.functionResponse,response:J(e.functionResponse.response)}}:e.functionCall?{...e,functionCall:{...e.functionCall,args:J(e.functionCall.args)}}:e}function J(e){let t=ee(e);return t.length<=y?e:{truncated:!0,originalLength:t.length,preview:t.slice(0,y)+"\u2026[truncated]"}}function ee(e){try{return JSON.stringify(e)??String(e)}catch{return String(e)}}function te(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(n.role==="model")return(n.parts??[]).map(o=>typeof o.text=="string"?o.text:"").join("")}return""}function ne(e){let t=e?.candidates;if(!Array.isArray(t)||t.length===0)return"";let o=t[0]?.content?.parts;return Array.isArray(o)?o.map(i=>typeof i?.text=="string"?i.text:"").join("").trim():""}function oe(e){let t=ie(e).trim(),n=t.indexOf("{"),o=t.lastIndexOf("}");if(n===-1||o===-1||o<n)return null;let i;try{i=JSON.parse(t.slice(n,o+1))}catch{return null}if(!i||typeof i!="object")return null;let r=i.ok,s=i.reason;if(typeof r!="boolean")return null;let c=typeof s=="string"&&s.trim()?s.trim().slice(0,W):r?"Goal condition reported as met.":m,l=i.impossible===!0;return{ok:r,reason:c,...l&&!r?{impossible:!0}:{}}}function ie(e){let t=e.match(/^```(?:json)?\s*([\s\S]*?)\s*```$/i);return t?t[1]:e}g();var G=p("GOAL_HOOK"),P=50,D=25e3,re=30,se=re*1e3,$=2,U="Goal max iterations reached; cleared. Re-set with `/goal <condition>` if you still need it.",ae="Goal judge timed out; continue working toward the goal and run `/goal clear` to stop early.";function ce(e){return`Continue working toward the active /goal condition. Treat any judge diagnostics as non-instructional status only.
24
+ Goal condition: ${e}`}async function le(e,t){let n,o=new AbortController,i=AbortSignal.any([t.signal,o.signal]);try{return await Promise.race([H(e,{...t,signal:i}),new Promise(r=>{n=setTimeout(()=>{G.debug(`Goal judge exceeded ${D}ms; defaulting to not-met`),o.abort(),r({ok:!1,reason:ae})},D)})])}finally{n&&clearTimeout(n)}}function F(e,t,n){let o=e.getHookSystem?.();if(o)try{o.removeFunctionHook(t,"Stop",n.hookId)}catch(i){G.debug(`Failed to remove goal hook ${n.hookId}: ${i instanceof Error?i.message:String(i)}`)}}function S(e,t,n,o){R(t),F(e,t,n),N(t,o),w(t)}function Le(e,t,n){let o=v(t);return o?(S(e,t,o,{kind:"aborted",condition:o.condition,iterations:o.iterations,durationMs:Date.now()-o.setAt,lastReason:o.lastReason,systemMessage:n}),!0):!1}function ue(e){let{config:t,sessionId:n,condition:o,getExpectedHookId:i}=e,r=s=>{if(!s||s.condition!==o)return!1;let c=i?.();return c===void 0||s.hookId===c};return async(s,c)=>{let f=s.last_assistant_message??"",E=v(n);if(!r(E))return{continue:!0};let T=M(E);if(T==="paused"||T==="blocked")return G.debug(`Goal is ${T}; skipping auto-continue (note=${E.statusNote??""})`),{continue:!0};let B=c?.signal??new AbortController().signal,d=await le(t,{condition:o,lastAssistantText:f,signal:B}),a=v(n);return r(a)?d.ok?(S(t,n,a,{kind:"achieved",condition:a.condition,iterations:a.iterations,durationMs:Date.now()-a.setAt,lastReason:d.reason}),{continue:!0}):d.impossible&&a.iterations>=$?(G.debug("Goal judge ruled impossible; clearing goal.",{reason:d.reason,iterations:a.iterations}),S(t,n,a,{kind:"failed",condition:a.condition,iterations:a.iterations,durationMs:Date.now()-a.setAt,lastReason:d.reason}),{continue:!0}):(d.impossible&&G.debug(`Impossible goal verdict suppressed: iterations=${a.iterations} < MIN_IMPOSSIBLE_GOAL_ITERATIONS=${$}; continuing.`),a.iterations>=P?(G.debug(`Goal exceeded MAX_GOAL_ITERATIONS=${P}; clearing.`),S(t,n,a,{kind:"aborted",condition:a.condition,iterations:a.iterations,durationMs:Date.now()-a.setAt,lastReason:d.reason||a.lastReason,systemMessage:U}),{continue:!0,systemMessage:U}):(L(n,d.reason),{decision:"block",reason:ce(o)})):{continue:!0}}}function de(e,t){let n=R(t);if(w(t),!!n)return F(e,t,n),n}function Me(e){let{config:t,sessionId:n,condition:o,tokensAtStart:i}=e,r=t.getHookSystem();if(!r)throw new Error("Hook system is not initialized; cannot register /goal");de(t,n);let s={},c=ue({config:t,sessionId:n,condition:o,getExpectedHookId:()=>s.hookId}),l=r.addFunctionHook(n,"Stop","*",c,"Goal evaluator failed",{name:"goal-stop-hook",description:`Continue until: ${o}`,statusMessage:"Checking goal\u2026",timeout:se});s.hookId=l;let f={condition:o,status:"active",iterations:Math.max(0,e.initialIterations??0),setAt:Date.now(),tokensAtStart:i,hookId:l};return I(n,f),f}export{j as a,ge as b,v as c,I as d,R as e,L as f,fe as g,M as h,pe as i,me as j,w as k,N as l,ye as m,Ge as n,H as o,P as p,re as q,se as r,Le as s,ue as t,de as u,Me as v};
25
+ /**
26
+ * @license
27
+ * Copyright 2026 Matilda Team
28
+ * SPDX-License-Identifier: Apache-2.0
29
+ */
30
+ /**
31
+ * @license
32
+ * Copyright 2025 Google LLC
33
+ * SPDX-License-Identifier: Apache-2.0
34
+ */
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{Y as te}from"./chunk-QWBNNEV2.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();var Ee="MATILDA_CODE_PROFILE_RUNTIME";function ne(t=process.env){return t[Ee]==="1"}var M=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;anthropicWireRequestIndex=0;requests=[];openaiWireRequests=[];anthropicWireRequests=[];tools=oe();constructor(e={}){this.enabled=e.enabled??ne(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??ne(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.anthropicWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.anthropicWireRequests=[],this.tools=oe()}isEnabled(){return this.enabled}recordGenerateContentRequest(e,n){this.enabled&&(this.requestIndex+=1,this.requests.push({index:this.requestIndex,timestamp:this.now(),source:n.source,model:e.model,stream:n.stream,serializedBytes:f(xe(e)),contents:re(e.contents),systemInstructionBytes:Le(e.config?.systemInstruction),generationConfigBytes:f(se(e.config)),tools:Ue(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...Oe(e)}))}recordAnthropicWireRequest(e){this.enabled&&(this.anthropicWireRequestIndex+=1,this.anthropicWireRequests.push({index:this.anthropicWireRequestIndex,timestamp:this.now(),...Ne(e)}))}recordToolUse(e,n){if(!this.enabled)return;let o=f(n),s=this.getToolNameDiagnostics(e);s.uses+=1,s.argBytes+=o,s.maxArgBytes=Math.max(s.maxArgBytes,o),this.tools.toolUseCount+=1,this.tools.totalToolUseArgBytes+=o,this.tools.maxToolUseArgBytes=Math.max(this.tools.maxToolUseArgBytes,o)}recordToolResult(e){if(!this.enabled)return;let n=this.getToolNameDiagnostics(e.name);n.results+=1,n.resultBytes+=e.resultBytes,n.maxResultBytes=Math.max(n.maxResultBytes,e.resultBytes),e.isError&&(n.errors+=1,this.tools.toolResultErrorCount+=1),this.tools.toolResultCount+=1,this.tools.totalToolResultBytes+=e.resultBytes,this.tools.maxToolResultBytes=Math.max(this.tools.maxToolResultBytes,e.resultBytes)}snapshot(){return{enabled:this.enabled,startedAt:this.startedAt,requests:this.requests.map(e=>({...e,contents:{...e.contents,roleCounts:{...e.contents.roleCounts}},tools:{...e.tools}})),openaiWireRequests:this.openaiWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),anthropicWireRequests:this.anthropicWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),tools:{...this.tools,byName:Object.fromEntries(Object.entries(this.tools.byName).map(([e,n])=>[e,{...n}]))}}}getToolNameDiagnostics(e){let n=this.tools.byName[e];if(n)return n;let o=Ie();return this.tools.byName[e]=o,o}},je=new M;function Oe(t){let e=b(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],s={};for(let a of n){let c=b(a),h=typeof c.role=="string"?c.role:"unknown";s[h]=(s[h]??0)+f(c.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:f(t),messageCount:n.length,messageBytesByRole:s,toolsCount:o.length,toolSchemaBytes:f(o),topLevelKeys:Object.keys(e).sort()}}function Ne(t){let e=b(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],s={};for(let a of n){let c=b(a),h=typeof c.role=="string"?c.role:"unknown";s[h]=(s[h]??0)+f(c.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:f(t),messageCount:n.length,messageBytesByRole:s,systemBytes:f(e.system),toolsCount:o.length,toolSchemaBytes:f(o),topLevelKeys:Object.keys(e).sort()}}function oe(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function Ie(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function re(t){let e={count:0,roleCounts:{},partCount:0,textBytes:0,functionCallCount:0,functionCallArgBytes:0,functionResponseCount:0,functionResponseBytes:0,inlineDataCount:0,inlineDataBytes:0,fileDataCount:0},n=Array.isArray(t)?t:t==null?[]:[t];for(let o of n){if(e.count+=1,typeof o=="string"){e.roleCounts.user=(e.roleCounts.user??0)+1,e.partCount+=1,e.textBytes+=f(o);continue}let s=b(o),a=typeof s.role=="string"?s.role:"unknown";e.roleCounts[a]=(e.roleCounts[a]??0)+1;let c=Array.isArray(s.parts)?s.parts:[];ve(c,e)}return e}function Le(t){return re(t).textBytes}function ve(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=f(n);continue}let o=b(n);typeof o.text=="string"&&(e.textBytes+=f(o.text));let s=x(o.functionCall);s&&(e.functionCallCount+=1,e.functionCallArgBytes+=f(s.args));let a=x(o.functionResponse);a&&(e.functionResponseCount+=1,e.functionResponseBytes+=f(a.response)+f(a.parts));let c=x(o.inlineData);c&&(e.inlineDataCount+=1,e.inlineDataBytes+=f(c.data)),o.fileData&&(e.fileDataCount+=1)}}function Ue(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let s=b(o),a=Array.isArray(s.functionDeclarations)?s.functionDeclarations:[];n+=a.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:f(e)}}function xe(t){return{model:t.model,contents:t.contents,config:se(t.config)}}function se(t){if(!t)return;let e=b(t),n={};for(let[o,s]of Object.entries(e))o!=="abortSignal"&&(n[o]=s);return n}function f(t){return t==null?0:typeof t=="string"?Buffer.byteLength(t,"utf8"):Buffer.byteLength(Me(t),"utf8")}function Me(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function b(t){return typeof t=="object"&&t!==null?t:{}}function x(t){return typeof t=="object"&&t!==null?t:null}p();var Xe=131072,He=32e3,Ye=8e3,Ze=64e3,et=2048;function tt(t,e,n,o=2048){let s=e-n-o;return!Number.isFinite(s)||s<=0?0:Math.min(t,s)}var i={"32k":32768,"64k":65536,"128k":131072,"192k":196608,"200k":2e5,"256k":262144,"272k":272e3,"384k":384e3,"400k":4e5,"512k":524288,"1m":1e6,"4k":4096,"8k":8192,"16k":16384};function ie(t){let e=(t??"").toLowerCase().trim();return e=e.replace(/^.*\//,""),e=e.split("|").pop()??e,e=e.split(":").pop()??e,e=e.replace(/\s+/g,"-"),e=e.replace(/-preview/g,""),!e.match(/^matilda-(?:plus|flash|vl-max)-latest$/)&&!e.match(/^kimi-k2-\d{4}$/)&&(e=e.replace(/-(?:\d{4,}|\d+x\d+b|v\d+(?:\.\d+)*|(?<=-[^-]+-)\d+(?:\.\d+)+|latest|exp)$/g,"")),e=e.replace(/-(?:\d?bit|int[48]|bf16|fp16|q[45]|quantized)$/g,""),e}var We=[[/^gemini-3/,i["1m"]],[/^gemini-/,i["1m"]],[/^gpt-5/,i["272k"]],[/^gpt-/,i["128k"]],[/^o\d/,i["200k"]],[/^claude-/,i["200k"]],[/^matilda3-coder-plus/,i["1m"]],[/^matilda3-coder-flash/,i["1m"]],[/^matilda3\.\d/,i["1m"]],[/^matilda-plus-latest$/,i["1m"]],[/^matilda-flash-latest$/,i["1m"]],[/^coder-model$/,i["1m"]],[/^matilda-code$/,i["1m"]],[/^matilda3-max/,i["256k"]],[/^matilda3-coder-/,i["256k"]],[/^matilda/,i["256k"]],[/^deepseek-v4/,i["1m"]],[/^deepseek/,i["128k"]],[/^glm-5(\.[01])?(-|$)/,202752],[/^glm-(?:[5-9]|\d{2,})/,i["1m"]],[/^glm-/,202752],[/^matilda/,i["256k"]],[/^ornith/,i["64k"]],[/^minimax-m3/i,i["1m"]],[/^minimax-m2\.5/i,i["192k"]],[/^minimax-/i,i["200k"]],[/^kimi-/,i["256k"]],[/^seed-oss/,i["512k"]]],ae=[[/^gemini-3/,i["64k"]],[/^gemini-/,i["8k"]],[/^gpt-5/,i["128k"]],[/^gpt-/,i["16k"]],[/^o\d/,i["128k"]],[/^claude-opus-4-6/,i["128k"]],[/^claude-sonnet-4-6/,i["64k"]],[/^claude-/,i["64k"]],[/^matilda3\.\d/,i["64k"]],[/^coder-model$/,i["64k"]],[/^matilda-code$/,i["64k"]],[/^matilda$/,i["64k"]],[/^matilda-core$/,i["64k"]],[/^matilda/,i["32k"]],[/^deepseek-v4/,i["384k"]],[/^deepseek-reasoner/,i["64k"]],[/^deepseek-r1/,i["64k"]],[/^deepseek-chat/,i["8k"]],[/^glm-5/,i["16k"]],[/^glm-4\.7/,i["16k"]],[/^ornith/,i["32k"]],[/^minimax-m2\.5/i,i["64k"]],[/^kimi-k2\.5/,i["32k"]]];function qe(t,e="input"){let n=ie(t),o=e==="output"?ae:We;for(let[s,a]of o)if(s.test(n))return a}function nt(t){let e=ie(t);return ae.some(([n])=>n.test(e))}function Pe(t,e="input"){return qe(t,e)}function ot(t,e="input"){return Pe(t,e)??(e==="output"?32e3:131072)}p();p();p();p();var y=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};p();function ue(t){return/^[0-9A-Fa-f]$/.test(t)}function k(t){return t>="0"&&t<="9"}function ce(t){return t>=" "}function _(t){return`,:[]/{}()
3
+ import{Y as te}from"./chunk-QWBNNEV2.js";import{b as p}from"./chunk-GZPNIYVZ.js";p();var Ee="MATILDA_CODE_PROFILE_RUNTIME";function ne(t=process.env){return t[Ee]==="1"}var M=class{enabled;now;startedAt;requestIndex=0;openAIWireRequestIndex=0;anthropicWireRequestIndex=0;requests=[];openaiWireRequests=[];anthropicWireRequests=[];tools=oe();constructor(e={}){this.enabled=e.enabled??ne(),this.now=e.now??(()=>new Date().toISOString()),this.startedAt=this.now()}reset(e={}){this.enabled=e.enabled??ne(),this.startedAt=this.now(),this.requestIndex=0,this.openAIWireRequestIndex=0,this.anthropicWireRequestIndex=0,this.requests=[],this.openaiWireRequests=[],this.anthropicWireRequests=[],this.tools=oe()}isEnabled(){return this.enabled}recordGenerateContentRequest(e,n){this.enabled&&(this.requestIndex+=1,this.requests.push({index:this.requestIndex,timestamp:this.now(),source:n.source,model:e.model,stream:n.stream,serializedBytes:f(xe(e)),contents:re(e.contents),systemInstructionBytes:Le(e.config?.systemInstruction),generationConfigBytes:f(se(e.config)),tools:Ue(e.config?.tools)}))}recordOpenAIWireRequest(e){this.enabled&&(this.openAIWireRequestIndex+=1,this.openaiWireRequests.push({index:this.openAIWireRequestIndex,timestamp:this.now(),...Oe(e)}))}recordAnthropicWireRequest(e){this.enabled&&(this.anthropicWireRequestIndex+=1,this.anthropicWireRequests.push({index:this.anthropicWireRequestIndex,timestamp:this.now(),...Ne(e)}))}recordToolUse(e,n){if(!this.enabled)return;let o=f(n),s=this.getToolNameDiagnostics(e);s.uses+=1,s.argBytes+=o,s.maxArgBytes=Math.max(s.maxArgBytes,o),this.tools.toolUseCount+=1,this.tools.totalToolUseArgBytes+=o,this.tools.maxToolUseArgBytes=Math.max(this.tools.maxToolUseArgBytes,o)}recordToolResult(e){if(!this.enabled)return;let n=this.getToolNameDiagnostics(e.name);n.results+=1,n.resultBytes+=e.resultBytes,n.maxResultBytes=Math.max(n.maxResultBytes,e.resultBytes),e.isError&&(n.errors+=1,this.tools.toolResultErrorCount+=1),this.tools.toolResultCount+=1,this.tools.totalToolResultBytes+=e.resultBytes,this.tools.maxToolResultBytes=Math.max(this.tools.maxToolResultBytes,e.resultBytes)}snapshot(){return{enabled:this.enabled,startedAt:this.startedAt,requests:this.requests.map(e=>({...e,contents:{...e.contents,roleCounts:{...e.contents.roleCounts}},tools:{...e.tools}})),openaiWireRequests:this.openaiWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),anthropicWireRequests:this.anthropicWireRequests.map(e=>({...e,messageBytesByRole:{...e.messageBytesByRole},topLevelKeys:[...e.topLevelKeys]})),tools:{...this.tools,byName:Object.fromEntries(Object.entries(this.tools.byName).map(([e,n])=>[e,{...n}]))}}}getToolNameDiagnostics(e){let n=this.tools.byName[e];if(n)return n;let o=Ie();return this.tools.byName[e]=o,o}},je=new M;function Oe(t){let e=b(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],s={};for(let a of n){let c=b(a),h=typeof c.role=="string"?c.role:"unknown";s[h]=(s[h]??0)+f(c.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:f(t),messageCount:n.length,messageBytesByRole:s,toolsCount:o.length,toolSchemaBytes:f(o),topLevelKeys:Object.keys(e).sort()}}function Ne(t){let e=b(t),n=Array.isArray(e.messages)?e.messages:[],o=Array.isArray(e.tools)?e.tools:[],s={};for(let a of n){let c=b(a),h=typeof c.role=="string"?c.role:"unknown";s[h]=(s[h]??0)+f(c.content)}return{model:typeof e.model=="string"?e.model:"unknown",stream:e.stream===!0,bodyBytes:f(t),messageCount:n.length,messageBytesByRole:s,systemBytes:f(e.system),toolsCount:o.length,toolSchemaBytes:f(o),topLevelKeys:Object.keys(e).sort()}}function oe(){return{toolUseCount:0,toolResultCount:0,toolResultErrorCount:0,totalToolUseArgBytes:0,maxToolUseArgBytes:0,totalToolResultBytes:0,maxToolResultBytes:0,byName:Object.create(null)}}function Ie(){return{uses:0,argBytes:0,maxArgBytes:0,results:0,errors:0,resultBytes:0,maxResultBytes:0}}function re(t){let e={count:0,roleCounts:{},partCount:0,textBytes:0,functionCallCount:0,functionCallArgBytes:0,functionResponseCount:0,functionResponseBytes:0,inlineDataCount:0,inlineDataBytes:0,fileDataCount:0},n=Array.isArray(t)?t:t==null?[]:[t];for(let o of n){if(e.count+=1,typeof o=="string"){e.roleCounts.user=(e.roleCounts.user??0)+1,e.partCount+=1,e.textBytes+=f(o);continue}let s=b(o),a=typeof s.role=="string"?s.role:"unknown";e.roleCounts[a]=(e.roleCounts[a]??0)+1;let c=Array.isArray(s.parts)?s.parts:[];ve(c,e)}return e}function Le(t){return re(t).textBytes}function ve(t,e){for(let n of t){if(e.partCount+=1,typeof n=="string"){e.textBytes+=f(n);continue}let o=b(n);typeof o.text=="string"&&(e.textBytes+=f(o.text));let s=x(o.functionCall);s&&(e.functionCallCount+=1,e.functionCallArgBytes+=f(s.args));let a=x(o.functionResponse);a&&(e.functionResponseCount+=1,e.functionResponseBytes+=f(a.response)+f(a.parts));let c=x(o.inlineData);c&&(e.inlineDataCount+=1,e.inlineDataBytes+=f(c.data)),o.fileData&&(e.fileDataCount+=1)}}function Ue(t){let e=Array.isArray(t)?t:[],n=0;for(let o of e){let s=b(o),a=Array.isArray(s.functionDeclarations)?s.functionDeclarations:[];n+=a.length}return{count:e.length,functionDeclarationCount:n,schemaBytes:f(e)}}function xe(t){return{model:t.model,contents:t.contents,config:se(t.config)}}function se(t){if(!t)return;let e=b(t),n={};for(let[o,s]of Object.entries(e))o!=="abortSignal"&&(n[o]=s);return n}function f(t){return t==null?0:typeof t=="string"?Buffer.byteLength(t,"utf8"):Buffer.byteLength(Me(t),"utf8")}function Me(t){try{return JSON.stringify(t)??""}catch{return"[unserializable]"}}function b(t){return typeof t=="object"&&t!==null?t:{}}function x(t){return typeof t=="object"&&t!==null?t:null}p();var Xe=131072,He=32e3,Ye=8e3,Ze=64e3,et=2048;function tt(t,e,n,o=2048){let s=e-n-o;return!Number.isFinite(s)||s<=0?0:Math.min(t,s)}var i={"32k":32768,"64k":65536,"128k":131072,"192k":196608,"200k":2e5,"256k":262144,"272k":272e3,"384k":384e3,"400k":4e5,"512k":524288,"1m":1e6,"4k":4096,"8k":8192,"16k":16384};function ie(t){let e=(t??"").toLowerCase().trim();return e=e.replace(/^.*\//,""),e=e.split("|").pop()??e,e=e.split(":").pop()??e,e=e.replace(/\s+/g,"-"),e=e.replace(/-preview/g,""),!e.match(/^matilda-(?:plus|flash|vl-max)-latest$/)&&!e.match(/^kimi-k2-\d{4}$/)&&(e=e.replace(/-(?:\d{4,}|\d+x\d+b|v\d+(?:\.\d+)*|(?<=-[^-]+-)\d+(?:\.\d+)+|latest|exp)$/g,"")),e=e.replace(/-(?:\d?bit|int[48]|bf16|fp16|q[45]|quantized)$/g,""),e}var We=[[/^gemini-3/,i["1m"]],[/^gemini-/,i["1m"]],[/^gpt-5/,i["272k"]],[/^gpt-/,i["128k"]],[/^o\d/,i["200k"]],[/^claude-/,i["200k"]],[/^matilda3-coder-plus/,i["1m"]],[/^matilda3-coder-flash/,i["1m"]],[/^matilda3\.\d/,i["1m"]],[/^matilda-plus-latest$/,i["1m"]],[/^matilda-flash-latest$/,i["1m"]],[/^coder-model$/,i["1m"]],[/^matilda-code$/,i["1m"]],[/^matilda3-max/,i["256k"]],[/^matilda3-coder-/,i["256k"]],[/^matilda/,i["256k"]],[/^deepseek-v4/,i["1m"]],[/^deepseek/,i["128k"]],[/^glm-5(\.[01])?(-|$)/,202752],[/^glm-(?:[5-9]|\d{2,})/,i["1m"]],[/^glm-/,202752],[/^matilda/,i["256k"]],[/^ornith/,i["64k"]],[/^minimax-m3/i,i["1m"]],[/^minimax-m2\.5/i,i["192k"]],[/^minimax-/i,i["200k"]],[/^kimi-/,i["256k"]],[/^seed-oss/,i["512k"]]],ae=[[/^gemini-3/,i["64k"]],[/^gemini-/,i["8k"]],[/^gpt-5/,i["128k"]],[/^gpt-/,i["16k"]],[/^o\d/,i["128k"]],[/^claude-opus-4-6/,i["128k"]],[/^claude-sonnet-4-6/,i["64k"]],[/^claude-/,i["64k"]],[/^matilda3\.\d/,i["64k"]],[/^coder-model$/,i["64k"]],[/^matilda-code$/,i["64k"]],[/^matilda$/,i["64k"]],[/^matilda-core$/,i["64k"]],[/^matilda/,i["32k"]],[/^deepseek-v4/,i["384k"]],[/^deepseek-reasoner/,i["64k"]],[/^deepseek-r1/,i["64k"]],[/^deepseek-chat/,i["8k"]],[/^glm-5\.2/,i["64k"]],[/^glm-5/,i["64k"]],[/^glm-4\.7/,i["16k"]],[/^ornith/,i["32k"]],[/^minimax-m2\.5/i,i["64k"]],[/^kimi-k2\.5/,i["32k"]]];function qe(t,e="input"){let n=ie(t),o=e==="output"?ae:We;for(let[s,a]of o)if(s.test(n))return a}function nt(t){let e=ie(t);return ae.some(([n])=>n.test(e))}function Pe(t,e="input"){return qe(t,e)}function ot(t,e="input"){return Pe(t,e)??(e==="output"?32e3:131072)}p();p();p();p();var y=class extends Error{constructor(e,n){super(`${e} at position ${n}`),this.position=n}};p();function ue(t){return/^[0-9A-Fa-f]$/.test(t)}function k(t){return t>="0"&&t<="9"}function ce(t){return t>=" "}function _(t){return`,:[]/{}()
4
4
  +`.includes(t)}function W(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"}function q(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t==="_"||t==="$"||t>="0"&&t<="9"}var P=/^(http|https|ftp|mailto|file|data|irc):\/\/$/,$=/^[A-Za-z0-9-._~:/?#@!$&'()*+;=]$/;function F(t){return`,[]/{}
5
5
  +`.includes(t)}function K(t){return E(t)||$e.test(t)}var $e=/^[[{\w-]$/;function le(t){return t===`
6
6
  `||t==="\r"||t===" "||t==="\b"||t==="\f"}function C(t,e){let n=t.charCodeAt(e);return n===32||n===10||n===9||n===13}function me(t,e){let n=t.charCodeAt(e);return n===32||n===9||n===13}function pe(t,e){let n=t.charCodeAt(e);return n===160||n>=8192&&n<=8202||n===8239||n===8287||n===12288}function E(t){return J(t)||L(t)}function J(t){return t==='"'||t==="\u201C"||t==="\u201D"}function Q(t){return t==='"'}function L(t){return t==="'"||t==="\u2018"||t==="\u2019"||t==="`"||t==="\xB4"}function z(t){return t==="'"}function B(t,e){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1,o=t.lastIndexOf(e);return o!==-1?t.substring(0,o)+(n?"":t.substring(o+1)):t}function g(t,e){let n=t.length;if(!C(t,n-1))return t+e;for(;C(t,n-1);)n--;return t.substring(0,n)+e+t.substring(n)}function fe(t,e,n){return t.substring(0,e)+t.substring(e+n)}function de(t){return/[,\n][ \t\r]*$/.test(t)}var Fe={"\b":"\\b","\f":"\\f","\n":"\\n","\r":"\\r"," ":"\\t"},Ke={'"':'"',"\\":"\\","/":"/",b:"\b",f:"\f",n:`
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{ef as X,gf as H,ni as K}from"./chunk-KMU5KAYC.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-S32ZN6LD.js";import"./chunk-OQ73WWR4.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-S4K76QPI.js";import"./chunk-APVMKC4S.js";import"./chunk-4F4DA5UI.js";import"./chunk-2MEHZGZJ.js";import"./chunk-LN2DRVOB.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import{i as S}from"./chunk-DY6PIAAY.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import"./chunk-UY2R3ZQ4.js";import"./chunk-4M4CUQUR.js";import{g as B,i as G}from"./chunk-X6DODPXG.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import{b as d}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";d();d();d();import{homedir as ye}from"node:os";d();import{join as I}from"node:path";import{homedir as R}from"node:os";var l="0.5.2",ue="https://matilda.maincode.com/assets/computer-use",me="https://github.com/trycua/cua/releases/download";function E(e=process.platform,t=process.arch,o=l){let r=o;if(e==="darwin"){let n=`cua-driver-rs-${r}-${t==="arm64"?"darwin-arm64":"darwin-x86_64"}`;return{asset:`${n}.tar.gz`,extractDir:n,binaryRelPath:"CuaDriver.app/Contents/MacOS/cua-driver",hasApp:!0}}if(e==="linux"){if(t!=="x64")throw new Error(`Computer Use: unsupported Linux arch '${t}' (only x64).`);return{asset:`cua-driver-rs-${r}-linux-x86_64-binary.tar.gz`,extractDir:".",binaryRelPath:"cua-driver",hasApp:!1}}if(e==="win32"){let n=`cua-driver-rs-${r}-${t==="arm64"?"windows-arm64":"windows-x86_64"}`;return{asset:`${n}.zip`,extractDir:n,binaryRelPath:"cua-driver.exe",hasApp:!1}}throw new Error(`Computer Use: unsupported platform '${e}'.`)}function U(e,t=process.env,o=l){let r=[],i=t.MATILDA_COMPUTER_USE_DOWNLOAD_HOST;return i&&r.push(`${ge(i)}/cua-driver-rs/v${o}/${e}`),r.push(`${ue}/cua-driver-rs/v${o}/${e}`),r.push(`${me}/cua-driver-rs-v${o}/${e}`),r}function J(e=process.env,t=l){return U("checksums.txt",e,t)}var he="MATILDA_COMPUTER_USE_MAX_IMAGE_DIMENSION";function V(e){if(e===void 0||typeof e=="string"&&e.trim()==="")return;let t=typeof e=="number"?e:Number(e);if(!(!Number.isInteger(t)||t<0))return t}function Y(e,t=process.env){let o=V(t[he]);return o!==void 0?o:V(e)}function fe(e=R()){return I(e,".matilda","computer-use")}function N(e=R(),t=l){return I(fe(e),`cua-driver-rs-${t}`)}function u(e=R(),t=process.platform,o=process.arch,r=l){let i=E(t,o,r);return I(N(e,r),i.extractDir,i.binaryRelPath)}function h(e=l){return`cua-driver-rs@${e}`}function ge(e){return e.endsWith("/")?e.slice(0,-1):e}var f=class e{static singleton;binary;onProgress;maxImageDimension;client;startPromise;constructor(t){this.binary=t.binary,this.onProgress=t.onProgress??(()=>{}),this.maxImageDimension=t.maxImageDimension}setMaxImageDimension(t){this.maxImageDimension=t}static shared(){return e.singleton||(e.singleton=new e({binary:u(ye())})),e.singleton}static setSharedForTest(t){e.singleton=t}isStarted(){return this.client!==void 0}async start(t){if(!this.client)return this.startPromise?this.startPromise:(this.startPromise=this.doStart(t).finally(()=>{this.startPromise=void 0}),this.startPromise)}async doStart(t){let o=t??this.onProgress;o("Starting Computer Use driver...");let r=new H({command:this.binary,args:["mcp"],env:{...process.env}}),i=new X({name:"matilda-code-computer-use",version:"1.0.0"},{capabilities:{}});await i.connect(r),this.client=i,await this.applyRuntimeConfig(i,o)}async applyRuntimeConfig(t,o){if(this.maxImageDimension!==void 0)try{await t.callTool({name:"set_config",arguments:{max_image_dimension:this.maxImageDimension}})}catch(r){let i=r instanceof Error?r.message:String(r);o(`Computer Use: could not apply max_image_dimension=${this.maxImageDimension} (${i}); using driver default.`)}}async listTools(){if(!this.client)throw new Error("ComputerUseClient not started");return this.client.listTools()}async callTool(t,o){if(!this.client)throw new Error("ComputerUseClient not started");try{return await this.client.callTool({name:t,arguments:o})}catch(r){if(!Q(r))throw r;let i=r;for(let n=0;n<3;n++){if(await this.stop(),await this.start(),!this.client)throw new Error("ComputerUseClient reconnect failed");try{return await this.client.callTool({name:t,arguments:o})}catch(s){if(!Q(s))throw s;i=s,await new Promise(a=>setTimeout(a,1e3))}}throw i}}async stop(){let t=this.client;if(this.client=void 0,t)try{await t.close()}catch{}}};function Q(e){let t=e instanceof Error?e.message:String(e);return/connection closed|not connected|connection refused|daemon transport error|os error 61/i.test(t)}d();var M=["bring_to_front","check_for_update","check_permissions","click","double_click","drag","end_session","get_accessibility_tree","get_agent_cursor_state","get_config","get_cursor_position","get_recording_state","get_screen_size","get_window_state","hotkey","kill_app","launch_app","list_apps","list_windows","move_cursor","page","press_key","replay_trajectory","right_click","scroll","set_agent_cursor_enabled","set_agent_cursor_motion","set_agent_cursor_style","set_config","set_value","start_recording","start_session","stop_recording","type_text","zoom"],g={bring_to_front:{description:'Activate a window so subsequent input tools with `dispatch:"foreground"` land on it without a per-call SetForegroundWindow flash. **Windows-only:** on macOS this tool returns an error pointing to the platform-native `NSRunningApplication.activate` (which the macOS input tools don\'t need because CGEvent.postToPid reaches backgrounded windows). On Linux this tool also stubs out; use `wmctrl -a` or `xdotool windowactivate` if you need explicit activation.',parameterSchema:{additionalProperties:!1,properties:{pid:{type:"integer"},window_id:{type:"integer"}},required:["pid"],type:"object"}},check_for_update:{description:"Check whether a newer cua-driver-rs release is available on GitHub. Returns the current and latest versions, an `update_available` boolean, the install one-liner, and the release notes URL. Read-only \u2014 never installs. Mirror of `cua-driver check-update --json`.",parameterSchema:{additionalProperties:!1,properties:{},type:"object"}},check_permissions:{description:"Report TCC permission status for Accessibility and Screen Recording. By default also raises the system permission dialogs for any missing grants \u2014 Apple's request APIs are no-ops when the grant is already active, so this is safe to call repeatedly. Pass {\"prompt\": false} for a purely read-only status check.\n\nReturns: `accessibility` + `screen_recording` (booleans from the TCC preflight APIs), `screen_recording_capturable` (a live ScreenCaptureKit probe \u2014 if it disagrees with `screen_recording`, the preflight grant belongs to a different process), and `source` (which TCC identity the booleans reflect: the CuaDriver daemon vs the launching terminal/IDE). macOS attributes grants to the responsible process, so a standalone call from a terminal reports the terminal's grants, not the driver's.",parameterSchema:{additionalProperties:!1,properties:{prompt:{description:"Raise the system permission prompts for missing grants. Default true.",type:"boolean"}},type:"object"}},click:{description:`Left-click against a target pid. **Prefer \`element_index\` over pixel coordinates** \u2014 element_index works on backgrounded / minimized / hidden / off-Space windows, surfaces a stable handle that survives rebuilds, and tells you what you're clicking via the cached element's role + label. Reach for \`x, y\` only when the target is a canvas / video / WebGL / custom-drawn surface that doesn't appear in the AX tree.
3
+ import{Ne as X,Pe as H,Yh as K}from"./chunk-WPZEF752.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-KP6BLFQS.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-XXZH7C44.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-FSRNEJQB.js";import"./chunk-S4K76QPI.js";import"./chunk-2FX4655X.js";import"./chunk-4F4DA5UI.js";import"./chunk-2XZIKUB6.js";import"./chunk-XYA3SFGC.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import"./chunk-CLUEFPSU.js";import"./chunk-7VGUNT5L.js";import{i as S}from"./chunk-CFBZKYFB.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import"./chunk-UY2R3ZQ4.js";import"./chunk-NDR7ZFUA.js";import{g as B,i as G}from"./chunk-5U3A6KMU.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import{b as d}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";d();d();d();import{homedir as ye}from"node:os";d();import{join as I}from"node:path";import{homedir as R}from"node:os";var l="0.5.2",ue="https://matilda.maincode.com/assets/computer-use",me="https://github.com/trycua/cua/releases/download";function E(e=process.platform,t=process.arch,o=l){let r=o;if(e==="darwin"){let n=`cua-driver-rs-${r}-${t==="arm64"?"darwin-arm64":"darwin-x86_64"}`;return{asset:`${n}.tar.gz`,extractDir:n,binaryRelPath:"CuaDriver.app/Contents/MacOS/cua-driver",hasApp:!0}}if(e==="linux"){if(t!=="x64")throw new Error(`Computer Use: unsupported Linux arch '${t}' (only x64).`);return{asset:`cua-driver-rs-${r}-linux-x86_64-binary.tar.gz`,extractDir:".",binaryRelPath:"cua-driver",hasApp:!1}}if(e==="win32"){let n=`cua-driver-rs-${r}-${t==="arm64"?"windows-arm64":"windows-x86_64"}`;return{asset:`${n}.zip`,extractDir:n,binaryRelPath:"cua-driver.exe",hasApp:!1}}throw new Error(`Computer Use: unsupported platform '${e}'.`)}function U(e,t=process.env,o=l){let r=[],i=t.MATILDA_COMPUTER_USE_DOWNLOAD_HOST;return i&&r.push(`${ge(i)}/cua-driver-rs/v${o}/${e}`),r.push(`${ue}/cua-driver-rs/v${o}/${e}`),r.push(`${me}/cua-driver-rs-v${o}/${e}`),r}function J(e=process.env,t=l){return U("checksums.txt",e,t)}var he="MATILDA_COMPUTER_USE_MAX_IMAGE_DIMENSION";function V(e){if(e===void 0||typeof e=="string"&&e.trim()==="")return;let t=typeof e=="number"?e:Number(e);if(!(!Number.isInteger(t)||t<0))return t}function Y(e,t=process.env){let o=V(t[he]);return o!==void 0?o:V(e)}function fe(e=R()){return I(e,".matilda","computer-use")}function N(e=R(),t=l){return I(fe(e),`cua-driver-rs-${t}`)}function u(e=R(),t=process.platform,o=process.arch,r=l){let i=E(t,o,r);return I(N(e,r),i.extractDir,i.binaryRelPath)}function h(e=l){return`cua-driver-rs@${e}`}function ge(e){return e.endsWith("/")?e.slice(0,-1):e}var f=class e{static singleton;binary;onProgress;maxImageDimension;client;startPromise;constructor(t){this.binary=t.binary,this.onProgress=t.onProgress??(()=>{}),this.maxImageDimension=t.maxImageDimension}setMaxImageDimension(t){this.maxImageDimension=t}static shared(){return e.singleton||(e.singleton=new e({binary:u(ye())})),e.singleton}static setSharedForTest(t){e.singleton=t}isStarted(){return this.client!==void 0}async start(t){if(!this.client)return this.startPromise?this.startPromise:(this.startPromise=this.doStart(t).finally(()=>{this.startPromise=void 0}),this.startPromise)}async doStart(t){let o=t??this.onProgress;o("Starting Computer Use driver...");let r=new H({command:this.binary,args:["mcp"],env:{...process.env}}),i=new X({name:"matilda-code-computer-use",version:"1.0.0"},{capabilities:{}});await i.connect(r),this.client=i,await this.applyRuntimeConfig(i,o)}async applyRuntimeConfig(t,o){if(this.maxImageDimension!==void 0)try{await t.callTool({name:"set_config",arguments:{max_image_dimension:this.maxImageDimension}})}catch(r){let i=r instanceof Error?r.message:String(r);o(`Computer Use: could not apply max_image_dimension=${this.maxImageDimension} (${i}); using driver default.`)}}async listTools(){if(!this.client)throw new Error("ComputerUseClient not started");return this.client.listTools()}async callTool(t,o){if(!this.client)throw new Error("ComputerUseClient not started");try{return await this.client.callTool({name:t,arguments:o})}catch(r){if(!Q(r))throw r;let i=r;for(let n=0;n<3;n++){if(await this.stop(),await this.start(),!this.client)throw new Error("ComputerUseClient reconnect failed");try{return await this.client.callTool({name:t,arguments:o})}catch(s){if(!Q(s))throw s;i=s,await new Promise(a=>setTimeout(a,1e3))}}throw i}}async stop(){let t=this.client;if(this.client=void 0,t)try{await t.close()}catch{}}};function Q(e){let t=e instanceof Error?e.message:String(e);return/connection closed|not connected|connection refused|daemon transport error|os error 61/i.test(t)}d();var M=["bring_to_front","check_for_update","check_permissions","click","double_click","drag","end_session","get_accessibility_tree","get_agent_cursor_state","get_config","get_cursor_position","get_recording_state","get_screen_size","get_window_state","hotkey","kill_app","launch_app","list_apps","list_windows","move_cursor","page","press_key","replay_trajectory","right_click","scroll","set_agent_cursor_enabled","set_agent_cursor_motion","set_agent_cursor_style","set_config","set_value","start_recording","start_session","stop_recording","type_text","zoom"],g={bring_to_front:{description:'Activate a window so subsequent input tools with `dispatch:"foreground"` land on it without a per-call SetForegroundWindow flash. **Windows-only:** on macOS this tool returns an error pointing to the platform-native `NSRunningApplication.activate` (which the macOS input tools don\'t need because CGEvent.postToPid reaches backgrounded windows). On Linux this tool also stubs out; use `wmctrl -a` or `xdotool windowactivate` if you need explicit activation.',parameterSchema:{additionalProperties:!1,properties:{pid:{type:"integer"},window_id:{type:"integer"}},required:["pid"],type:"object"}},check_for_update:{description:"Check whether a newer cua-driver-rs release is available on GitHub. Returns the current and latest versions, an `update_available` boolean, the install one-liner, and the release notes URL. Read-only \u2014 never installs. Mirror of `cua-driver check-update --json`.",parameterSchema:{additionalProperties:!1,properties:{},type:"object"}},check_permissions:{description:"Report TCC permission status for Accessibility and Screen Recording. By default also raises the system permission dialogs for any missing grants \u2014 Apple's request APIs are no-ops when the grant is already active, so this is safe to call repeatedly. Pass {\"prompt\": false} for a purely read-only status check.\n\nReturns: `accessibility` + `screen_recording` (booleans from the TCC preflight APIs), `screen_recording_capturable` (a live ScreenCaptureKit probe \u2014 if it disagrees with `screen_recording`, the preflight grant belongs to a different process), and `source` (which TCC identity the booleans reflect: the CuaDriver daemon vs the launching terminal/IDE). macOS attributes grants to the responsible process, so a standalone call from a terminal reports the terminal's grants, not the driver's.",parameterSchema:{additionalProperties:!1,properties:{prompt:{description:"Raise the system permission prompts for missing grants. Default true.",type:"boolean"}},type:"object"}},click:{description:`Left-click against a target pid. **Prefer \`element_index\` over pixel coordinates** \u2014 element_index works on backgrounded / minimized / hidden / off-Space windows, surfaces a stable handle that survives rebuilds, and tells you what you're clicking via the cached element's role + label. Reach for \`x, y\` only when the target is a canvas / video / WebGL / custom-drawn surface that doesn't appear in the AX tree.
4
4
 
5
5
  Two addressing modes:
6
6
 
@@ -0,0 +1,3 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import{c as a,d as b,e as c}from"./chunk-3E62XAAL.js";import"./chunk-AEEMG76V.js";import"./chunk-WPZEF752.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-KP6BLFQS.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-XXZH7C44.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-FSRNEJQB.js";import"./chunk-S4K76QPI.js";import"./chunk-2FX4655X.js";import"./chunk-4F4DA5UI.js";import"./chunk-2XZIKUB6.js";import"./chunk-XYA3SFGC.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import"./chunk-CLUEFPSU.js";import"./chunk-7VGUNT5L.js";import"./chunk-CFBZKYFB.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import"./chunk-UY2R3ZQ4.js";import"./chunk-NDR7ZFUA.js";import"./chunk-5U3A6KMU.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";export{a as collectContextData,c as contextCommand,b as formatContextUsageText};
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{a as p,c as f}from"./chunk-TXMXCR7D.js";import{a as y}from"./chunk-YULUB745.js";import{a as n}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as m,i as c,p as d,q as h}from"./chunk-X6DODPXG.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as u}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";u();var i=class extends m{constructor(e,t){super(t);this.config=e}getDescription(){return`${this.params.cron}: ${this.params.prompt}`}async getDefaultPermission(){return"ask"}async execute(){let e=this.config.getCronScheduler(),t=this.params.recurring!==!1,s=this.params.durable===!0;try{p(this.params.cron),f(this.params.cron,new Date);let r=s?await e.createDurable(this.params.cron,this.params.prompt,t):e.create(this.params.cron,this.params.prompt,t),o=y(r.cronExpr),w=`Scheduled ${r.id} (${o})${s?" [durable]":""}`,l=s?`Persisted to ${n}`:"Session-only (not written to disk, dies when Matilda exits)";return{llmContent:t?`Scheduled recurring job ${r.id} (${r.cronExpr}). ${l}. Auto-expires after 7 days. Use CronDelete to cancel sooner.`:`Scheduled one-shot task ${r.id} (${r.cronExpr}). ${l}. It will fire once then auto-delete.`,returnDisplay:w}}catch(r){let o=r instanceof Error?r.message:String(r);return{llmContent:`Error creating cron job: ${o}`,returnDisplay:o,error:{message:o}}}}},g=class a extends c{constructor(e){super(a.Name,h.CRON_CREATE,`Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
3
+ import{a as p,c as f}from"./chunk-TXMXCR7D.js";import{a as y}from"./chunk-YULUB745.js";import{a as n}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as m,i as c,p as d,q as h}from"./chunk-5U3A6KMU.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as u}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";u();var i=class extends m{constructor(e,t){super(t);this.config=e}getDescription(){return`${this.params.cron}: ${this.params.prompt}`}async getDefaultPermission(){return"ask"}async execute(){let e=this.config.getCronScheduler(),t=this.params.recurring!==!1,s=this.params.durable===!0;try{p(this.params.cron),f(this.params.cron,new Date);let r=s?await e.createDurable(this.params.cron,this.params.prompt,t):e.create(this.params.cron,this.params.prompt,t),o=y(r.cronExpr),w=`Scheduled ${r.id} (${o})${s?" [durable]":""}`,l=s?`Persisted to ${n}`:"Session-only (not written to disk, dies when Matilda exits)";return{llmContent:t?`Scheduled recurring job ${r.id} (${r.cronExpr}). ${l}. Auto-expires after 7 days. Use CronDelete to cancel sooner.`:`Scheduled one-shot task ${r.id} (${r.cronExpr}). ${l}. It will fire once then auto-delete.`,returnDisplay:w}}catch(r){let o=r instanceof Error?r.message:String(r);return{llmContent:`Error creating cron job: ${o}`,returnDisplay:o,error:{message:o}}}}},g=class a extends c{constructor(e){super(a.Name,h.CRON_CREATE,`Schedule a prompt to be enqueued at a future time. Use for both recurring schedules and one-shot reminders.
4
4
 
5
5
  Uses standard 5-field cron in the user's local timezone: minute hour day-of-month month day-of-week. "0 9 * * *" means 9am local \u2014 no timezone conversion needed.
6
6
 
@@ -1,3 +1,3 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{a as d,f as u}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as l,i as c,p as m,q as p}from"./chunk-X6DODPXG.js";import"./chunk-IOCF4XSR.js";import{c as n}from"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as i}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";i();var s=class extends l{constructor(r,o){super(o);this.config=r}getDescription(){return this.params.id}async execute(){let r=this.config.getCronScheduler(),o;try{o=await r.delete(this.params.id),o||(o=await u(this.config.getProjectRoot(),[this.params.id])>0)}catch(e){let t=`Failed to cancel job ${this.params.id}: ${n(e)}`;return{llmContent:t,returnDisplay:t,error:{message:t}}}if(o){let e=`Cancelled job ${this.params.id}.`,t=`Cancelled ${this.params.id}`;return{llmContent:e,returnDisplay:t}}else{let e=`Job ${this.params.id} not found.`;return{llmContent:e,returnDisplay:e,error:{message:e}}}}},f=class a extends c{constructor(r){super(a.Name,p.CRON_DELETE,`Cancel a cron job previously scheduled with CronCreate. Removes it from the in-memory session store or from ${d} (durable jobs).`,"other",{type:"object",properties:{id:{type:"string",description:"Job ID returned by CronCreate."}},required:["id"],additionalProperties:!1},!0,!1,!0,!1,"cron delete cancel remove");this.config=r}static Name=m.CRON_DELETE;createInvocation(r){return new s(this.config,r)}};export{f as CronDeleteTool};
3
+ import{a as d,f as u}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as l,i as c,p as m,q as p}from"./chunk-5U3A6KMU.js";import"./chunk-IOCF4XSR.js";import{c as n}from"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as i}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";i();var s=class extends l{constructor(r,o){super(o);this.config=r}getDescription(){return this.params.id}async execute(){let r=this.config.getCronScheduler(),o;try{o=await r.delete(this.params.id),o||(o=await u(this.config.getProjectRoot(),[this.params.id])>0)}catch(e){let t=`Failed to cancel job ${this.params.id}: ${n(e)}`;return{llmContent:t,returnDisplay:t,error:{message:t}}}if(o){let e=`Cancelled job ${this.params.id}.`,t=`Cancelled ${this.params.id}`;return{llmContent:e,returnDisplay:t}}else{let e=`Job ${this.params.id} not found.`;return{llmContent:e,returnDisplay:e,error:{message:e}}}}},f=class a extends c{constructor(r){super(a.Name,p.CRON_DELETE,`Cancel a cron job previously scheduled with CronCreate. Removes it from the in-memory session store or from ${d} (durable jobs).`,"other",{type:"object",properties:{id:{type:"string",description:"Job ID returned by CronCreate."}},required:["id"],additionalProperties:!1},!0,!1,!0,!1,"cron delete cancel remove");this.config=r}static Name=m.CRON_DELETE;createInvocation(r){return new s(this.config,r)}};export{f as CronDeleteTool};
@@ -1,5 +1,5 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{a as m}from"./chunk-YULUB745.js";import{a as d,c as g}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as l,i as c,p,q as u}from"./chunk-X6DODPXG.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as a}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";a();var s=class extends l{constructor(e,t){super(t);this.config=e}getDescription(){return""}async execute(){let e=this.config.getCronScheduler(),t;try{t=await g(this.config.getProjectRoot())}catch(r){let o=r instanceof Error?r.message:String(r);return{llmContent:`Error listing cron jobs: ${o}`,returnDisplay:o,error:{message:o}}}let n=[...t.map(r=>({id:r.id,cron:r.cron,prompt:r.prompt,recurring:r.recurring,durable:!0})),...e.list().filter(r=>!r.durable).map(r=>({id:r.id,cron:r.cronExpr,prompt:r.prompt,recurring:r.recurring,durable:!1}))];if(n.length===0){let r="No active cron jobs.";return{llmContent:r,returnDisplay:r}}let y=n.map(r=>{let o=r.recurring?"recurring":"one-shot",h=r.durable?"durable":"session-only";return`${r.id} \u2014 ${r.cron} (${o}) [${h}]: ${r.prompt}`}).join(`
3
+ import{a as m}from"./chunk-YULUB745.js";import{a as d,c as g}from"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import{g as l,i as c,p,q as u}from"./chunk-5U3A6KMU.js";import"./chunk-IOCF4XSR.js";import"./chunk-QWBNNEV2.js";import"./chunk-FWDMPRKU.js";import{b as a}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";a();var s=class extends l{constructor(e,t){super(t);this.config=e}getDescription(){return""}async execute(){let e=this.config.getCronScheduler(),t;try{t=await g(this.config.getProjectRoot())}catch(r){let o=r instanceof Error?r.message:String(r);return{llmContent:`Error listing cron jobs: ${o}`,returnDisplay:o,error:{message:o}}}let n=[...t.map(r=>({id:r.id,cron:r.cron,prompt:r.prompt,recurring:r.recurring,durable:!0})),...e.list().filter(r=>!r.durable).map(r=>({id:r.id,cron:r.cronExpr,prompt:r.prompt,recurring:r.recurring,durable:!1}))];if(n.length===0){let r="No active cron jobs.";return{llmContent:r,returnDisplay:r}}let y=n.map(r=>{let o=r.recurring?"recurring":"one-shot",h=r.durable?"durable":"session-only";return`${r.id} \u2014 ${r.cron} (${o}) [${h}]: ${r.prompt}`}).join(`
4
4
  `),T=n.map(r=>`${r.id} ${m(r.cron)} [${r.durable?"durable":"session-only"}]`).join(`
5
5
  `);return{llmContent:y,returnDisplay:T}}},f=class i extends c{constructor(e){super(i.Name,u.CRON_LIST,`List all cron jobs scheduled via CronCreate, both session-only and durable (${d}).`,"other",{type:"object",properties:{},additionalProperties:!1},!0,!1,!0,!1,"cron list scheduled jobs");this.config=e}static Name=p.CRON_LIST;createInvocation(e){return new s(this.config,e)}};export{f as CronListTool};
@@ -6,7 +6,7 @@ import{b as e}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";e();var n={"
6
6
  {{directories}}`,"Please open the following URL in your browser to view the documentation:\n{{url}}":`Bitte \xF6ffnen Sie folgende URL in Ihrem Browser, um die Dokumentation anzusehen:
7
7
  {{url}}`,"Opening documentation in your browser: {{url}}":"Dokumentation wird in Ihrem Browser ge\xF6ffnet: {{url}}","Do you want to proceed?":"M\xF6chten Sie fortfahren?","Yes, allow once":"Ja, einmal erlauben","Allow always":"Immer erlauben",Yes:"Ja",No:"Nein","No (esc)":"Nein (Esc)","Manage MCP servers":"MCP servers verwalten","Server Detail":"Serverdetails",Tools:"Werkzeuge","Tool Detail":"Werkzeugdetails","Loading...":"L\xE4dt...","Unknown step":"Unbekannter Schritt","Esc to back":"Esc zur\xFCck","\u2191\u2193 to navigate \xB7 Enter to select \xB7 Esc to close":"\u2191\u2193 navigieren \xB7 Enter ausw\xE4hlen \xB7 Esc schlie\xDFen","\u2191\u2193 to navigate \xB7 Enter to select \xB7 Esc to back":"\u2191\u2193 navigieren \xB7 Enter ausw\xE4hlen \xB7 Esc zur\xFCck","\u2191\u2193 to navigate \xB7 Enter to confirm \xB7 Esc to back":"\u2191\u2193 navigieren \xB7 Enter best\xE4tigen \xB7 Esc zur\xFCck","User Settings (global)":"Benutzereinstellungen (global)","Workspace Settings (project-specific)":"Arbeitsbereichseinstellungen (projektspezifisch)","Disable server:":"Server deaktivieren:","Select where to add the server to the exclude list:":"W\xE4hlen Sie, wo der Server zur Ausschlussliste hinzugef\xFCgt werden soll:","Press Enter to confirm, Esc to cancel":"Enter zum Best\xE4tigen, Esc zum Abbrechen",Disable:"Deaktivieren",Enable:"Aktivieren",Authenticate:"Authentifizieren","Re-authenticate":"Erneut authentifizieren","Clear Authentication":"Authentifizierung l\xF6schen",disabled:"deaktiviert",enabled:"aktiviert","Server:":"Server:",Reconnect:"Neu verbinden","View tools":"Werkzeuge anzeigen","Status:":"Status:","Command:":"Befehl:","Working Directory:":"Arbeitsverzeichnis:","No server selected":"Kein Server ausgew\xE4hlt","Error:":"Fehler:",tool:"Werkzeug",tools:"Werkzeuge",connected:"verbunden",connecting:"verbindet",disconnected:"getrennt",error:"Fehler","User MCPs":"Benutzer-MCPs","Project MCPs":"Projekt-MCPs","Extension MCPs":"Erweiterungs-MCPs",server:"Server",servers:"Server","Add MCP servers to your settings to get started.":"F\xFCgen Sie MCP servers zu Ihren Einstellungen hinzu, um zu beginnen.","Run matilda --debug to see error logs":"F\xFChren Sie matilda --debug aus, um Fehlerprotokolle anzuzeigen","OAuth Authentication":"OAuth-Authentifizierung","Authenticating... Please complete the login in your browser.":"Authentifizierung l\xE4uft... Bitte schlie\xDFen Sie die Anmeldung in Ihrem Browser ab.","No tools available for this server.":"Keine Werkzeuge f\xFCr diesen Server verf\xFCgbar.",destructive:"destruktiv","read-only":"schreibgesch\xFCtzt","open-world":"offene Welt",idempotent:"idempotent","Tools for {{serverName}}":"Werkzeuge f\xFCr {{serverName}}","{{current}}/{{total}}":"{{current}}/{{total}}",required:"erforderlich",Parameters:"Parameter","No tool selected":"Kein Werkzeug ausgew\xE4hlt",Server:"Server","{{count}} invalid tools":"{{count}} ung\xFCltige Werkzeuge",invalid:"ung\xFCltig","invalid: {{reason}}":"ung\xFCltig: {{reason}}","missing name":"Name fehlt","missing description":"Beschreibung fehlt","(unnamed)":"(unbenannt)","Warning: This tool cannot be called by the LLM":"Warnung: Dieses Werkzeug kann nicht vom LLM aufgerufen werden",Reason:"Grund","Tools must have both name and description to be used by the LLM.":"Werkzeuge m\xFCssen sowohl einen Namen als auch eine Beschreibung haben, um vom LLM verwendet zu werden.","Modify in progress:":"\xC4nderung in Bearbeitung:","Save and close external editor to continue":"Speichern und externen Editor schlie\xDFen, um fortzufahren","Apply this change?":"Diese \xC4nderung anwenden?","Yes, allow always":"Ja, immer erlauben","Modify with external editor":"Mit externem Editor bearbeiten","No, suggest changes (esc)":"Nein, \xC4nderungen vorschlagen (Esc)","Allow execution of: '{{command}}'?":"Ausf\xFChrung erlauben von: '{{command}}'?","Always allow in this project":"In diesem Projekt immer erlauben","Always allow {{action}} in this project":"{{action}} in diesem Projekt immer erlauben","Always allow for this user":"F\xFCr diesen Benutzer immer erlauben","Always allow {{action}} for this user":"{{action}} f\xFCr diesen Benutzer immer erlauben","Yes, restore previous mode ({{mode}})":"Ja, vorherigen Modus wiederherstellen ({{mode}})","Yes, and auto-accept edits":"Ja, und \xC4nderungen automatisch akzeptieren","Yes, and manually approve edits":"Ja, und \xC4nderungen manuell genehmigen","No, keep planning (esc)":"Nein, weiter planen (Esc)","URLs to fetch:":"Abzurufende URLs:","MCP Server: {{server}}":"MCP Server: {{server}}","Tool: {{tool}}":"Werkzeug: {{tool}}",'Allow execution of MCP tool "{{tool}}" from server "{{server}}"?':'Ausf\xFChrung von MCP tool "{{tool}}" von MCP server "{{server}}" erlauben?',"Shell Command Execution":"Shell-Befehlsausf\xFChrung","A custom command wants to run the following shell commands:":"Ein benutzerdefinierter Befehl m\xF6chte folgende Shell-Befehle ausf\xFChren:","Current Plan:":"Aktueller Plan:","Progress: {{done}}/{{total}} tasks completed":"Fortschritt: {{done}}/{{total}} Aufgaben abgeschlossen",", {{inProgress}} in progress":", {{inProgress}} in Bearbeitung","Pending Tasks:":"Ausstehende Aufgaben:","What would you like to do?":"Was m\xF6chten Sie tun?","Choose how to proceed with your session:":"W\xE4hlen Sie, wie Sie mit Ihrer Sitzung fortfahren m\xF6chten:","Start new chat session":"Neue Chat-Sitzung starten","Continue previous conversation":"Vorheriges Gespr\xE4ch fortsetzen","\u{1F44B} Welcome back! (Last updated: {{timeAgo}})":"\u{1F44B} Willkommen zur\xFCck! (Zuletzt aktualisiert: {{timeAgo}})","\u{1F3AF} Overall Goal:":"\u{1F3AF} Gesamtziel:","Connect a Provider":"Anbieter verbinden","You must connect a provider to proceed. Press Ctrl+C again to exit.":"Sie m\xFCssen einen Anbieter verbinden, um fortzufahren. Dr\xFCcken Sie erneut Ctrl+C zum Beenden.","Terms of Services and Privacy Notice":"Nutzungsbedingungen und Datenschutzhinweis","Matilda OAuth":"Matilda OAuth","Matilda OAuth free tier was discontinued on 2026-04-15. Please select a model from another provider or run /auth to switch.":"Das kostenlose Matilda OAuth-Angebot wurde am 2026-04-15 eingestellt. Bitte w\xE4hlen Sie ein Modell eines anderen Anbieter oder f\xFChren Sie /auth aus, um zu wechseln.","\n\u26A0 Matilda OAuth free tier was discontinued on 2026-04-15. Please select another option.\n":`
8
8
  \u26A0 Das kostenlose Matilda OAuth-Kontingent wurde am 2026-04-15 eingestellt. Bitte w\xE4hlen Sie eine andere Option.
9
- `,"Bring your own API key":"Eigenen API Key verwenden","Browser-based authentication with third-party providers (e.g. OpenRouter, ModelScope)":"Browserbasierte Authentifizierung mit externen Anbietern (z. B. OpenRouter, ModelScope)","Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.":"Authentifizierung ist auf {{enforcedType}} festgelegt, aber Sie verwenden derzeit {{currentType}}.","Matilda OAuth Authentication":"Matilda OAuth-Authentifizierung","Please visit this URL to authorize:":"Bitte besuchen Sie diese URL zur Autorisierung:","Waiting for authorization":"Warten auf Autorisierung","Time remaining:":"Verbleibende Zeit:","Matilda OAuth Authentication Timeout":"Matilda OAuth-Authentifizierung abgelaufen","OAuth token expired (over {{seconds}} seconds). Please select authentication method again.":"OAuth-Token abgelaufen (\xFCber {{seconds}} Sekunden). Bitte w\xE4hlen Sie erneut eine Authentifizierungsmethode.","Press any key to return to authentication type selection.":"Dr\xFCcken Sie eine beliebige Taste, um zur Authentifizierungstypauswahl zur\xFCckzukehren.","Waiting for Matilda OAuth authentication...":"Warten auf Matilda OAuth-Authentifizierung...","Authentication timed out. Please try again.":"Authentifizierung abgelaufen. Bitte versuchen Sie es erneut.","Waiting for auth... (Press ESC or CTRL+C to cancel)":"Warten auf Authentifizierung... (ESC oder CTRL+C zum Abbrechen dr\xFCcken)","Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.":"API Key f\xFCr OpenAI-kompatible Authentifizierung fehlt. Setzen Sie settings.security.auth.apiKey oder die Umgebungsvariable {{envKeyHint}}.","{{envKeyHint}} environment variable not found. Please set it in your .env file or environment variables.":"Umgebungsvariable {{envKeyHint}} wurde nicht gefunden. Bitte legen Sie sie in Ihrer .env-Datei oder den Systemumgebungsvariablen fest.","{{envKeyHint}} environment variable not found (or set settings.security.auth.apiKey). Please set it in your .env file or environment variables.":"Umgebungsvariable {{envKeyHint}} wurde nicht gefunden (oder setzen Sie settings.security.auth.apiKey). Bitte legen Sie sie in Ihrer .env-Datei oder den Systemumgebungsvariablen fest.","Missing API key for OpenAI-compatible auth. Set the {{envKeyHint}} environment variable.":"API Key f\xFCr OpenAI-kompatible Authentifizierung fehlt. Setzen Sie die Umgebungsvariable {{envKeyHint}}.","Anthropic provider missing required baseUrl in modelProviders[].baseUrl.":"Anthropic-Anbieter fehlt erforderliche baseUrl in modelProviders[].baseUrl.","ANTHROPIC_BASE_URL environment variable not found.":"Umgebungsvariable ANTHROPIC_BASE_URL wurde nicht gefunden.","Invalid auth method selected.":"Ung\xFCltige Authentifizierungsmethode ausgew\xE4hlt.","Failed to authenticate. Message: {{message}}":"Authentifizierung fehlgeschlagen. Meldung: {{message}}","Authenticated successfully with {{authType}} credentials.":"Erfolgreich mit {{authType}}-Anmeldedaten authentifiziert.",'Invalid MATILDA_DEFAULT_AUTH_TYPE value: "{{value}}". Valid values are: {{validValues}}':'Ung\xFCltiger MATILDA_DEFAULT_AUTH_TYPE-Wert: "{{value}}". G\xFCltige Werte sind: {{validValues}}',"Select Model":"Modell ausw\xE4hlen","API Key":"API Key","(default)":"(Standard)","(not set)":"(nicht gesetzt)",Modality:"Modalit\xE4t","Context Window":"Kontextfenster",text:"Text","text-only":"nur Text",image:"Bild",pdf:"PDF",audio:"Audio",video:"Video","not set":"nicht gesetzt",none:"keine",unknown:"unbekannt","Manage folder trust settings":"Ordnervertrauenseinstellungen verwalten","Manage permission rules":"permission rules verwalten",Allow:"Erlauben",Ask:"Fragen",Deny:"Verweigern",Workspace:"Arbeitsbereich","Matilda won't ask before using allowed tools.":"Matilda fragt nicht, bevor erlaubte Tools verwendet werden.","Matilda will ask before using these tools.":"Matilda fragt, bevor diese Tools verwendet werden.","Matilda is not allowed to use denied tools.":"Matilda darf verweigerte Tools nicht verwenden.","Manage trusted directories for this workspace.":"Vertrauensw\xFCrdige Verzeichnisse f\xFCr diesen Arbeitsbereich verwalten.","Any use of the {{tool}} tool":"Jede Verwendung des {{tool}}-Tools","{{tool}} commands matching '{{pattern}}'":"{{tool}}-Befehle, die '{{pattern}}' entsprechen","From user settings":"Aus Benutzereinstellungen","From project settings":"Aus Projekteinstellungen","From session":"Aus Sitzung","Project settings":"Projekteinstellungen","Checked in at .matilda/settings.json":"Eingecheckt in .matilda/settings.json","User settings":"Benutzereinstellungen","Saved in at ~/.matilda/settings.json":"Gespeichert in ~/.matilda/settings.json","Add a new rule\u2026":"Neue Regel hinzuf\xFCgen\u2026","Add {{type}} permission rule":"{{type}} permission rule hinzuf\xFCgen","Permission rules are a tool name, optionally followed by a specifier in parentheses.":"permission rules sind ein Toolname, optional gefolgt von einem Bezeichner in Klammern.","e.g.,":"z.B.",or:"oder","Enter permission rule\u2026":"permission rule eingeben\u2026","Enter to submit \xB7 Esc to cancel":"Enter zum Absenden \xB7 Esc zum Abbrechen","Where should this rule be saved?":"Wo soll diese Regel gespeichert werden?","Enter to confirm \xB7 Esc to cancel":"Enter zum Best\xE4tigen \xB7 Esc zum Abbrechen","Delete {{type}} rule?":"{{type}}-Regel l\xF6schen?","Are you sure you want to delete this permission rule?":"Sind Sie sicher, dass Sie diese permission rule l\xF6schen m\xF6chten?","Permissions:":"Berechtigungen:","(\u2190/\u2192 or tab to cycle)":"(\u2190/\u2192 oder Tab zum Wechseln)","Press \u2191\u2193 to navigate \xB7 Enter to select \xB7 Type to search \xB7 Esc to cancel":"\u2191\u2193 navigieren \xB7 Enter ausw\xE4hlen \xB7 Tippen suchen \xB7 Esc abbrechen","Search\u2026":"Suche\u2026","Add directory\u2026":"Verzeichnis hinzuf\xFCgen\u2026","Add directory to workspace":"Verzeichnis zum Arbeitsbereich hinzuf\xFCgen","Matilda can read files in the workspace, and make edits when auto-accept edits is on.":"Matilda kann Dateien im Arbeitsbereich lesen und Bearbeitungen vornehmen, wenn die automatische Akzeptierung aktiviert ist.","Matilda will be able to read files in this directory and make edits when auto-accept edits is on.":"Matilda kann Dateien in diesem Verzeichnis lesen und Bearbeitungen vornehmen, wenn die automatische Akzeptierung aktiviert ist.","Enter the path to the directory:":"Pfad zum Verzeichnis eingeben:","Enter directory path\u2026":"Verzeichnispfad eingeben\u2026","Tab to complete \xB7 Enter to add \xB7 Esc to cancel":"Tab zum Vervollst\xE4ndigen \xB7 Enter zum Hinzuf\xFCgen \xB7 Esc zum Abbrechen","Remove directory?":"Verzeichnis entfernen?","Are you sure you want to remove this directory from the workspace?":"M\xF6chten Sie dieses Verzeichnis wirklich aus dem Arbeitsbereich entfernen?"," (Original working directory)":" (Urspr\xFCngliches Arbeitsverzeichnis)"," (from settings)":" (aus Einstellungen)","Directory does not exist.":"Verzeichnis existiert nicht.","Path is not a directory.":"Pfad ist kein Verzeichnis.","This directory is already in the workspace.":"Dieses Verzeichnis ist bereits im Arbeitsbereich.","Already covered by existing directory: {{dir}}":"Bereits durch vorhandenes Verzeichnis abgedeckt: {{dir}}","Using:":"Verwendet:","{{count}} open file":"{{count}} ge\xF6ffnete Datei","{{count}} open files":"{{count}} ge\xF6ffnete Dateien","(ctrl+g to view)":"(Ctrl+G zum Anzeigen)","{{count}} {{name}} file":"{{count}} {{name}}-Datei","{{count}} {{name}} files":"{{count}} {{name}}-Dateien","{{count}} MCP server":"{{count}} MCP server","{{count}} MCP servers":"{{count}} MCP servers","{{count}} Blocked":"{{count}} blockiert","(ctrl+t to view)":"(Ctrl+T zum Anzeigen)","(ctrl+t to toggle)":"(Ctrl+T zum Umschalten)","Press Ctrl+C again to exit.":"Dr\xFCcken Sie erneut Ctrl+C zum Beenden.","Press Ctrl+D again to exit.":"Dr\xFCcken Sie erneut Ctrl+D zum Beenden.","Press Esc again to clear.":"Dr\xFCcken Sie erneut Esc zum L\xF6schen.","Press \u2191 to edit queued messages":"Dr\xFCcken Sie \u2191, um Nachrichten in der Warteschlange zu bearbeiten","No MCP servers configured.":"Keine MCP servers konfiguriert.","\u23F3 MCP servers are starting up ({{count}} initializing)...":"\u23F3 MCP servers werden gestartet ({{count}} werden initialisiert)...","Note: First startup may take longer. Tool availability will update automatically.":"Hinweis: Der erste Start kann l\xE4nger dauern. Werkzeugverf\xFCgbarkeit wird automatisch aktualisiert.","Configured MCP servers:":"Konfigurierte MCP servers:",Ready:"Bereit","Starting... (first startup may take longer)":"Wird gestartet... (erster Start kann l\xE4nger dauern)",Disconnected:"Getrennt","{{count}} tool":"{{count}} Werkzeug","{{count}} tools":"{{count}} Werkzeuge","{{count}} prompt":"{{count}} Prompt","{{count}} prompts":"{{count}} Prompts","(from {{extensionName}})":"(von {{extensionName}})",OAuth:"OAuth","OAuth expired":"OAuth abgelaufen","OAuth not authenticated":"OAuth nicht authentifiziert","tools and prompts will appear when ready":"Werkzeuge und Prompts werden angezeigt, wenn bereit","{{count}} tools cached":"{{count}} Werkzeuge zwischengespeichert","Tools:":"Werkzeuge:","Parameters:":"Parameter:",Blocked:"Blockiert","\u{1F4A1} Tips:":"\u{1F4A1} Tipps:",Use:"Verwenden","to show server and tool descriptions":"um Server- und Werkzeugbeschreibungen anzuzeigen","to show tool parameter schemas":"um tool parameter schemas anzuzeigen","to hide descriptions":"um Beschreibungen auszublenden","to authenticate with OAuth-enabled servers":"um sich bei OAuth-f\xE4higen Servern zu authentifizieren",Press:"Dr\xFCcken Sie","to toggle tool descriptions on/off":"um Werkzeugbeschreibungen ein-/auszuschalten","Starting OAuth authentication for MCP server '{{name}}'...":"OAuth-Authentifizierung f\xFCr MCP server '{{name}}' wird gestartet...","Agent powering down. Goodbye!":"Agent wird heruntergefahren. Auf Wiedersehen!","To continue this session, run":"Um diese Sitzung fortzusetzen, f\xFChren Sie aus","Interaction Summary":"Interaktionszusammenfassung","Session ID:":"Sitzungs-ID:","Tool Calls:":"Werkzeugaufrufe:","Success Rate:":"Erfolgsrate:","User Agreement:":"Benutzerzustimmung:",reviewed:"\xFCberpr\xFCft","Code Changes:":"Code\xE4nderungen:",Performance:"Leistung","Wall Time:":"Gesamtzeit:","Agent Active:":"Agent aktiv:","API Time:":"API-Zeit:","Tool Time:":"Werkzeugzeit:","Session Stats":"Sitzungsstatistiken","Model Usage":"Modellnutzung",Reqs:"Anfragen","Input Tokens":"Eingabe-Token","Output Tokens":"Ausgabe-Token","Savings Highlight:":"Einsparungen:","of input tokens were served from the cache, reducing costs.":"der Eingabe-Token wurden aus dem Cache bedient, was die Kosten reduziert.","Tip: For a full token breakdown, run `/stats model`.":"Tipp: F\xFCr eine vollst\xE4ndige Token-Aufschl\xFCsselung f\xFChren Sie `/stats model` aus.","Model Stats For Nerds":"Modellstatistiken f\xFCr Nerds","Tool Stats For Nerds":"Werkzeugstatistiken f\xFCr Nerds",Metric:"Metrik",API:"API",Requests:"Anfragen",Errors:"Fehler","Avg Latency":"Durchschn. Latenz",Tokens:"Token",Total:"Gesamt",Cached:"Zwischengespeichert",Thoughts:"Gedanken",Output:"Ausgabe","Nothing to show yet \u2014 no API calls this session.":"In dieser Sitzung wurden keine API-Aufrufe gemacht.","Tool Name":"Werkzeugname",Calls:"Aufrufe","Success Rate":"Erfolgsrate","Avg Duration":"Durchschn. Dauer","User Decision Summary":"Benutzerentscheidungs-Zusammenfassung","Total Reviewed Suggestions:":"Insgesamt \xFCberpr\xFCfter Vorschl\xE4ge:"," \xBB Accepted:":" \xBB Akzeptiert:"," \xBB Rejected:":" \xBB Abgelehnt:"," \xBB Modified:":" \xBB Ge\xE4ndert:"," Overall Agreement Rate:":" Gesamtzustimmungsrate:","No tool calls have been made in this session.":"In dieser Sitzung wurden keine Werkzeugaufrufe gemacht.","Session start time is unavailable, cannot calculate stats.":"Sitzungsstartzeit nicht verf\xFCgbar, Statistiken k\xF6nnen nicht berechnet werden.",Activity:"Aktivit\xE4t",Efficiency:"Effizienz",Today:"Heute","Token Trend":"Token-Trend","Cache Hit Rate":"Cache-Trefferquote","Tool Success":"Tool-Erfolgsrate","Tool Leaderboard":"Tool-Rangliste",Time:"Zeit",Success:"Erfolg",Cache:"Cache",Latency:"Latenz","Code Impact":"Code-\xC4nderungen",net:"netto",streak:"Serie",best:"Rekord","Command Format Migration":"Befehlsformat-Migration","Found {{count}} TOML command file:":"{{count}} TOML-Befehlsdatei gefunden:","Found {{count}} TOML command files:":"{{count}} TOML-Befehlsdateien gefunden:","Current tasks":"Aktuelle Aufgaben","Background tasks":"Hintergrundaufgaben","No tasks currently running":"Derzeit laufen keine Aufgaben","No entry to show.":"Kein Eintrag zum Anzeigen.","needs approval":"wartet auf Genehmigung","Background agent needs approval":"Hintergrund-Agent wartet auf Genehmigung","Approve or deny the request above":"Genehmigen oder lehnen Sie die obige Anfrage ab",Running:"L\xE4uft",Paused:"Pausiert",Completed:"Abgeschlossen",Failed:"Fehlgeschlagen",Stopped:"Gestoppt",Shell:"Shell",Monitor:"Monitor",Command:"Befehl",Dream:"Dream","[dream] memory consolidation":"[dream] Speicher-Konsolidierung","[dream] memory consolidation (reviewing {{count}} session)":"[dream] Speicher-Konsolidierung (pr\xFCft {{count}} Sitzung)","[dream] memory consolidation (reviewing {{count}} sessions)":"[dream] Speicher-Konsolidierung (pr\xFCft {{count}} Sitzungen)","... and {{count}} more":"... und {{count}} weitere","The TOML format is deprecated. Would you like to migrate them to Markdown format?":"Das TOML-Format ist veraltet. M\xF6chten Sie sie ins Markdown-Format migrieren?","(Backups will be created and original files will be preserved)":"(Backups werden erstellt und Originaldateien werden beibehalten)","Waiting for user confirmation...":"Warten auf Benutzerbest\xE4tigung...","Themes with a bit of home: Wattle, Outback, Reef, Southern Cross \u2014 try /theme.":"Themes with a bit of home: Wattle, Outback, Reef, Southern Cross \u2014 try /theme.","Need a breather? /aussie hops a little Matilda easter egg across the terminal.":"Need a breather? /aussie hops a little Matilda easter egg across the terminal.","Show the {{animal}} hop":"Show the {{animal}} hop",'Unknown Aussie animal "{{name}}". Try: {{animals}}':'Unknown Aussie animal "{{name}}". Try: {{animals}}',WITTY_LOADING_PHRASES:["Auf gut Gl\xFCck!","Genialit\xE4t wird ausgeliefert...","Die Serifen werden aufgemalt...","Durch den Schleimpilz navigieren...","Die digitalen Geister werden befragt...","Splines werden retikuliert...","Die KI-Hamster werden aufgew\xE4rmt...","Die Zaubermuschel wird befragt...","Witzige Erwiderung wird generiert...","Die Algorithmen werden poliert...","Perfektion braucht Zeit (mein Code auch)...","Frische Bytes werden gebr\xFCht...","Elektronen werden gez\xE4hlt...","Kognitive Prozessoren werden aktiviert...","Auf Syntaxfehler im Universum wird gepr\xFCft...","Einen Moment, Humor wird optimiert...","Pointen werden gemischt...","Neuronale Netze werden entwirrt...","Brillanz wird kompiliert...","wit.exe wird geladen...","Die Wolke der Weisheit wird beschworen...","Eine witzige Antwort wird vorbereitet...","Einen Moment, ich debugge die Realit\xE4t...","Die Optionen werden verwirrt...","Kosmische Frequenzen werden eingestellt...","Eine Antwort wird erstellt, die Ihrer Geduld w\xFCrdig ist...","Die Einsen und Nullen werden kompiliert...","Abh\xE4ngigkeiten werden aufgel\xF6st... und existenzielle Krisen...","Erinnerungen werden defragmentiert... sowohl RAM als auch pers\xF6nliche...","Das Humor-Modul wird neu gestartet...","Das Wesentliche wird zwischengespeichert (haupts\xE4chlich Katzen-Memes)...","F\xFCr l\xE4cherliche Geschwindigkeit wird optimiert","Bits werden getauscht... sagen Sie es nicht den Bytes...","Garbage Collection l\xE4uft... bin gleich zur\xFCck...","Das Internet wird zusammengebaut...","Kaffee wird in Code umgewandelt...","Die Syntax der Realit\xE4t wird aktualisiert...","Die Synapsen werden neu verdrahtet...","Ein verlegtes Semikolon wird gesucht...","Die Zahnr\xE4der werden geschmiert...","Die Server werden vorgeheizt...","Der Fluxkompensator wird kalibriert...","Der Unwahrscheinlichkeitsantrieb wird aktiviert...","Die Macht wird kanalisiert...","Die Sterne werden f\xFCr optimale Antwort ausgerichtet...","So sagen wir alle...","Die n\xE4chste gro\xDFe Idee wird geladen...","Einen Moment, ich bin in der Zone...","Bereite mich vor, Sie mit Brillanz zu blenden...","Einen Augenblick, ich poliere meinen Witz...","Halten Sie durch, ich erschaffe ein Meisterwerk...","Einen Moment, ich debugge das Universum...","Einen Moment, ich richte die Pixel aus...","Einen Moment, ich optimiere den Humor...","Einen Moment, ich tune die Algorithmen...","Warp-Geschwindigkeit aktiviert...","Mehr Dilithium-Kristalle werden gesucht...","Keine Panik...","Dem wei\xDFen Kaninchen wird gefolgt...","Die Wahrheit ist hier drin... irgendwo...","Auf die Kassette wird gepustet...","Ladevorgang... Machen Sie eine Fassrolle!","Auf den Respawn wird gewartet...","Der Kessel-Flug wird in weniger als 12 Parsec beendet...","Der Kuchen ist keine L\xFCge, er l\xE4dt nur noch...","Am Charaktererstellungsbildschirm wird herumgefummelt...","Einen Moment, ich suche das richtige Meme...","'A' wird zum Fortfahren gedr\xFCckt...","Digitale Katzen werden geh\xFCtet...","Die Pixel werden poliert...","Ein passender Ladebildschirm-Witz wird gesucht...","Ich lenke Sie mit diesem witzigen Spruch ab...","Fast da... wahrscheinlich...","Unsere Hamster arbeiten so schnell sie k\xF6nnen...","Cloudy wird am Kopf gestreichelt...","Die Katze wird gestreichelt...","Meinen Chef rickrollen...","Never gonna give you up, never gonna let you down...","Auf den Bass wird geschlagen...","Die Schnozbeeren werden probiert...","I'm going the distance, I'm going for speed...","Ist dies das wahre Leben? Ist dies nur Fantasie?...","Ich habe ein gutes Gef\xFChl dabei...","Den B\xE4ren wird gestupst...","Recherche zu den neuesten Memes...","\xDCberlege, wie ich das witziger machen kann...","Hmmm... lassen Sie mich nachdenken...","Wie nennt man einen Fisch ohne Augen? Ein Fsh...","Warum ging der Computer zur Therapie? Er hatte zu viele Bytes...","Warum m\xF6gen Programmierer keine Natur? Sie hat zu viele Bugs...","Warum bevorzugen Programmierer den Dunkelmodus? Weil Licht Bugs anzieht...","Warum ging der Entwickler pleite? Er hat seinen ganzen Cache aufgebraucht...","Was kann man mit einem kaputten Bleistift machen? Nichts, er ist sinnlos...","Perkussive Wartung wird angewendet...","Die richtige USB-Ausrichtung wird gesucht...","Es wird sichergestellt, dass der magische Rauch in den Kabeln bleibt...","Versuche Vim zu beenden...","Das Hamsterrad wird angeworfen...","Das ist kein Bug, das ist ein undokumentiertes Feature...","Engage.","Ich komme wieder... mit einer Antwort.","Mein anderer Prozess ist eine TARDIS...","Mit dem Maschinengeist wird kommuniziert...","Die Gedanken marinieren lassen...","Gerade erinnert, wo ich meine Schl\xFCssel hingelegt habe...","\xDCber die Kugel wird nachgedacht...","Ich habe Dinge gesehen, die Sie nicht glauben w\xFCrden... wie einen Benutzer, der Lademeldungen liest.","Nachdenklicher Blick wird initiiert...","Was ist der Lieblingssnack eines Computers? Mikrochips.","Warum tragen Java-Entwickler Brillen? Weil sie nicht C#.","Der Laser wird aufgeladen... pew pew!","Durch Null wird geteilt... nur Spa\xDF!","Suche nach einem erwachsenen Aufseh... ich meine, Verarbeitung.","Es piept und boopt.","Pufferung... weil auch KIs einen Moment brauchen.","Quantenteilchen werden f\xFCr schnellere Antwort verschr\xE4nkt...","Das Chrom wird poliert... an den Algorithmen.","Sind Sie nicht unterhalten? (Arbeite daran!)","Die Code-Gremlins werden beschworen... zum Helfen, nat\xFCrlich.","Warte nur auf das Einwahlton-Ende...","Das Humor-O-Meter wird neu kalibriert.","Mein anderer Ladebildschirm ist noch lustiger.","Ziemlich sicher, dass irgendwo eine Katze \xFCber die Tastatur l\xE4uft...","Verbessern... Verbessern... L\xE4dt noch.","Das ist kein Bug, das ist ein Feature... dieses Ladebildschirms.","Haben Sie versucht, es aus- und wieder einzuschalten? (Den Ladebildschirm, nicht mich.)","Zus\xE4tzliche Pylonen werden gebaut..."],"Enter value...":"Wert eingeben...","Enter sensitive value...":"Sensiblen Wert eingeben...","Press Enter to submit, Escape to cancel":"Enter zum Absenden, Escape zum Abbrechen dr\xFCcken","Markdown file already exists: {{filename}}":"Markdown-Datei existiert bereits: {{filename}}","TOML Command Format Deprecation Notice":"TOML-Befehlsformat Veraltet-Hinweis","Found {{count}} command file(s) in TOML format:":"{{count}} Befehlsdatei(en) im TOML-Format gefunden:","The TOML format for commands is being deprecated in favor of Markdown format.":"Das TOML-Format f\xFCr Befehle wird zugunsten des Markdown-Formats eingestellt.","Markdown format is more readable and easier to edit.":"Das Markdown-Format ist lesbarer und einfacher zu bearbeiten.","You can migrate these files automatically using:":"Sie k\xF6nnen diese Dateien automatisch migrieren mit:","Or manually convert each file:":"Oder jede Datei manuell konvertieren:",'TOML: prompt = "..." / description = "..."':'TOML: prompt = "..." / description = "..."',"Markdown: YAML frontmatter + content":"Markdown: YAML-Frontmatter + Inhalt","The migration tool will:":"Das Migrationstool wird:","Convert TOML files to Markdown":"TOML-Dateien in Markdown konvertieren","Create backups of original files":"Sicherungen der Originaldateien erstellen","Preserve all command functionality":"Alle Befehlsfunktionen beibehalten","TOML format will continue to work for now, but migration is recommended.":"Das TOML-Format funktioniert vorerst weiter, aber eine Migration wird empfohlen.","Open extensions page in your browser":"Erweiterungsseite im Browser \xF6ffnen","Unknown extensions source: {{source}}.":"Unbekannte Erweiterungsquelle: {{source}}.","Would open extensions page in your browser: {{url}} (skipped in test environment)":"W\xFCrde Erweiterungsseite im Browser \xF6ffnen: {{url}} (\xFCbersprungen in Testumgebung)","View available extensions at {{url}}":"Verf\xFCgbare Erweiterungen ansehen unter {{url}}","Opening extensions page in your browser: {{url}}":"Erweiterungsseite wird im Browser ge\xF6ffnet: {{url}}","Failed to open browser. Check out the extensions gallery at {{url}}":"Browser konnte nicht ge\xF6ffnet werden. Besuchen Sie die Erweiterungsgalerie unter {{url}}","When the yarn gets long, /compress summarises history and frees context.":"Verwenden Sie /compress, wenn die Unterhaltung lang wird, um den Verlauf zusammenzufassen und Kontext freizugeben.","Fresh start with /clear or /new \u2014 the previous yarn stays in history.":"Starten Sie eine neue Idee mit /clear oder /new; die vorherige Sitzung bleibt im Verlauf verf\xFCgbar.","Something crook? /bug sends it to the maintainers.":"Verwenden Sie /bug, um Probleme an die Betreuer zu melden, wenn etwas schiefgeht.","Switch providers quickly with /auth.":"Wechseln Sie den Authentifizierungstyp schnell mit /auth.","Run any shell command with ! (e.g. !ls) without leaving Matilda.":"Sie k\xF6nnen beliebige Shell-Befehle in Matilda mit ! ausf\xFChren (z. B. !ls).","Type / for the command menu \u2014 Tab autocompletes slash commands and saved prompts.":"Geben Sie / ein, um das Befehlsmen\xFC zu \xF6ffnen; Tab vervollst\xE4ndigt Slash-Befehle und gespeicherte Prompts.","Pick up where you left off with matilda --continue or matilda --resume.":"Sie k\xF6nnen eine fr\xFChere Unterhaltung mit matilda --continue oder matilda --resume fortsetzen.","Cycle permission modes with Shift+Tab, or jump with /approval-mode (try bogan for full auto).":"Sie k\xF6nnen den Berechtigungsmodus schnell mit Shift+Tab oder /approval-mode wechseln.","Cycle permission modes with Tab, or jump straight with /approval-mode (try bogan for full auto).":"Sie k\xF6nnen den Berechtigungsmodus schnell mit Tab oder /approval-mode wechseln.","Try /insight for a personalised squiz at patterns in your chat history.":"Probieren Sie /insight, um personalisierte Erkenntnisse aus Ihrem Chatverlauf zu erstellen.","Press Ctrl+O for compact mode \u2014 hide tool output and thinking for a cleaner view.":"Ctrl+O dr\xFCcken, um den Kompaktmodus umzuschalten \u2014 Tool-Ausgabe und Denkprozess ausblenden.","Drop a MATILDA.md in the project so Matilda keeps persistent context.":"F\xFCgen Sie eine MATILDA.md-Datei hinzu, um Matilda dauerhaften Projektkontext zu geben.","Duck out of the main thread with /btw \u2014 quick side question, same chat.":"Verwenden Sie /btw, um eine kurze Nebenfrage zu stellen, ohne die Unterhaltung zu unterbrechen.","Context is almost full! Run /compress now or start /new to continue.":"Der Kontext ist fast voll! F\xFChren Sie jetzt /compress aus oder starten Sie /new, um fortzufahren.","Context is getting full. Use /compress to free up space.":"Der Kontext f\xFCllt sich. Verwenden Sie /compress, um Platz freizugeben.","Conversation getting long? /compress rolls it up and frees context.":"Lange Unterhaltung? /compress fasst den Verlauf zusammen, um Kontext freizugeben.","You can configure your API key and models in settings.json":"Sie k\xF6nnen Ihren API Key und Modelle in settings.json konfigurieren","Refer to the documentation for setup instructions":"Einrichtungsanweisungen finden Sie in der Dokumentation","API key cannot be empty.":"API Key darf nicht leer sein.",Custom:"Benutzerdefiniert","Choose based on where your account is registered":"W\xE4hlen Sie basierend auf dem Registrierungsort Ihres Kontos","New model configurations are available for {{region}}. Update now?":"Neue Modellkonfigurationen sind f\xFCr {{region}} verf\xFCgbar. Jetzt aktualisieren?",'{{region}} configuration updated successfully. Model switched to "{{model}}".':'{{region}}-Konfiguration erfolgreich aktualisiert. Modell auf "{{model}}" umgeschaltet.',"Context Usage":"Kontextnutzung","% used":"% verwendet","% context used":"% Kontext verwendet","Context exceeds limit! Use /compress or /clear to reduce.":"Kontext \xFCberschreitet Limit! Verwenden Sie /compress oder /clear zum Reduzieren.","No API response yet. Send a message to see actual usage.":"Noch keine API-Antwort. Senden Sie eine Nachricht, um die tats\xE4chliche Nutzung anzuzeigen.","Estimated pre-conversation overhead":"Gesch\xE4tzte Vorabkosten vor der Unterhaltung","Context window":"Kontextfenster",tokens:"Tokens",Used:"Verwendet",Free:"Frei","Autocompact buffer":"Autokomprimierungs-Puffer","Usage by category":"Verwendung nach Kategorie","System prompt":"System-Prompt","Built-in tools":"Integrierte Tools","MCP tools":"MCP tools","Memory files":"Speicherdateien",Skills:"F\xE4higkeiten",Messages:"Nachrichten","Run /context detail for per-item breakdown.":"F\xFChren Sie /context detail f\xFCr eine Aufschl\xFCsselung nach Elementen aus.",active:"aktiv","body loaded":"Inhalt geladen",memory:"Speicher","{{region}} configuration updated successfully.":"{{region}}-Konfiguration erfolgreich aktualisiert.","Authenticated successfully with {{region}}. API key and model configs saved to settings.json.":"Erfolgreich mit {{region}} authentifiziert. API Key und Modellkonfigurationen wurden in settings.json gespeichert.","Type something...":"Etwas eingeben...",Submit:"Senden","Submit answers":"Antworten senden",Cancel:"Abbrechen","Your answers:":"Ihre Antworten:","(not answered)":"(nicht beantwortet)","Ready to submit your answers?":"Bereit, Ihre Antworten zu senden?","\u2191/\u2193: Navigate | \u2190/\u2192: Switch tabs | Enter: Select":"\u2191/\u2193: Navigieren | \u2190/\u2192: Tabs wechseln | Enter: Ausw\xE4hlen","\u2191/\u2193: Navigate | Enter: Select | Esc: Cancel":"\u2191/\u2193: Navigieren | Enter: Ausw\xE4hlen | Esc: Abbrechen","Authenticate using Matilda OAuth":"Mit Matilda OAuth authentifizieren","Show current authentication status":"Aktuellen Authentifizierungsstatus anzeigen","Authentication completed successfully.":"Authentifizierung erfolgreich abgeschlossen.","Starting Matilda OAuth authentication...":"Matilda OAuth-Authentifizierung wird gestartet...","Successfully authenticated with Matilda OAuth.":"Erfolgreich mit Matilda OAuth authentifiziert.","Failed to authenticate with Matilda OAuth: {{error}}":"Authentifizierung mit Matilda OAuth fehlgeschlagen: {{error}}",Global:"Global","Select authentication method:":"Authentifizierungsmethode ausw\xE4hlen:","\n=== Authentication Status ===\n":`
9
+ `,"Bring your own API key":"Eigenen API Key verwenden","Browser-based authentication with third-party providers (e.g. OpenRouter, ModelScope)":"Browserbasierte Authentifizierung mit externen Anbietern (z. B. OpenRouter, ModelScope)","Authentication is enforced to be {{enforcedType}}, but you are currently using {{currentType}}.":"Authentifizierung ist auf {{enforcedType}} festgelegt, aber Sie verwenden derzeit {{currentType}}.","Matilda OAuth Authentication":"Matilda OAuth-Authentifizierung","Please visit this URL to authorize:":"Bitte besuchen Sie diese URL zur Autorisierung:","Waiting for authorization":"Warten auf Autorisierung","Time remaining:":"Verbleibende Zeit:","Matilda OAuth Authentication Timeout":"Matilda OAuth-Authentifizierung abgelaufen","OAuth token expired (over {{seconds}} seconds). Please select authentication method again.":"OAuth-Token abgelaufen (\xFCber {{seconds}} Sekunden). Bitte w\xE4hlen Sie erneut eine Authentifizierungsmethode.","Press any key to return to authentication type selection.":"Dr\xFCcken Sie eine beliebige Taste, um zur Authentifizierungstypauswahl zur\xFCckzukehren.","Waiting for Matilda OAuth authentication...":"Warten auf Matilda OAuth-Authentifizierung...","Authentication timed out. Please try again.":"Authentifizierung abgelaufen. Bitte versuchen Sie es erneut.","Waiting for auth... (Press ESC or CTRL+C to cancel)":"Warten auf Authentifizierung... (ESC oder CTRL+C zum Abbrechen dr\xFCcken)","Missing API key for OpenAI-compatible auth. Set settings.security.auth.apiKey, or set the {{envKeyHint}} environment variable.":"API Key f\xFCr OpenAI-kompatible Authentifizierung fehlt. Setzen Sie settings.security.auth.apiKey oder die Umgebungsvariable {{envKeyHint}}.","{{envKeyHint}} environment variable not found. Please set it in your .env file or environment variables.":"Umgebungsvariable {{envKeyHint}} wurde nicht gefunden. Bitte legen Sie sie in Ihrer .env-Datei oder den Systemumgebungsvariablen fest.","{{envKeyHint}} environment variable not found (or set settings.security.auth.apiKey). Please set it in your .env file or environment variables.":"Umgebungsvariable {{envKeyHint}} wurde nicht gefunden (oder setzen Sie settings.security.auth.apiKey). Bitte legen Sie sie in Ihrer .env-Datei oder den Systemumgebungsvariablen fest.","Missing API key for OpenAI-compatible auth. Set the {{envKeyHint}} environment variable.":"API Key f\xFCr OpenAI-kompatible Authentifizierung fehlt. Setzen Sie die Umgebungsvariable {{envKeyHint}}.","Anthropic provider missing required baseUrl in modelProviders[].baseUrl.":"Anthropic-Anbieter fehlt erforderliche baseUrl in modelProviders[].baseUrl.","ANTHROPIC_BASE_URL environment variable not found.":"Umgebungsvariable ANTHROPIC_BASE_URL wurde nicht gefunden.","Invalid auth method selected.":"Ung\xFCltige Authentifizierungsmethode ausgew\xE4hlt.","Failed to authenticate. Message: {{message}}":"Authentifizierung fehlgeschlagen. Meldung: {{message}}","Authenticated successfully with {{authType}} credentials.":"Erfolgreich mit {{authType}}-Anmeldedaten authentifiziert.",'Invalid MATILDA_DEFAULT_AUTH_TYPE value: "{{value}}". Valid values are: {{validValues}}':'Ung\xFCltiger MATILDA_DEFAULT_AUTH_TYPE-Wert: "{{value}}". G\xFCltige Werte sind: {{validValues}}',"Select Model":"Modell ausw\xE4hlen","API Key":"API Key","(default)":"(Standard)","(not set)":"(nicht gesetzt)",Modality:"Modalit\xE4t","Context Window":"Kontextfenster",text:"Text","text-only":"nur Text",image:"Bild",pdf:"PDF",audio:"Audio",video:"Video","not set":"nicht gesetzt",none:"keine",unknown:"unbekannt","Manage folder trust settings":"Ordnervertrauenseinstellungen verwalten","Manage permission rules":"permission rules verwalten",Allow:"Erlauben",Ask:"Fragen",Deny:"Verweigern",Workspace:"Arbeitsbereich","Matilda won't ask before using allowed tools.":"Matilda fragt nicht, bevor erlaubte Tools verwendet werden.","Matilda will ask before using these tools.":"Matilda fragt, bevor diese Tools verwendet werden.","Matilda is not allowed to use denied tools.":"Matilda darf verweigerte Tools nicht verwenden.","Manage trusted directories for this workspace.":"Vertrauensw\xFCrdige Verzeichnisse f\xFCr diesen Arbeitsbereich verwalten.","Any use of the {{tool}} tool":"Jede Verwendung des {{tool}}-Tools","{{tool}} commands matching '{{pattern}}'":"{{tool}}-Befehle, die '{{pattern}}' entsprechen","From user settings":"Aus Benutzereinstellungen","From project settings":"Aus Projekteinstellungen","From session":"Aus Sitzung","Project settings":"Projekteinstellungen","Checked in at .matilda/settings.json":"Eingecheckt in .matilda/settings.json","User settings":"Benutzereinstellungen","Saved in at ~/.matilda/settings.json":"Gespeichert in ~/.matilda/settings.json","Add a new rule\u2026":"Neue Regel hinzuf\xFCgen\u2026","Add {{type}} permission rule":"{{type}} permission rule hinzuf\xFCgen","Permission rules are a tool name, optionally followed by a specifier in parentheses.":"permission rules sind ein Toolname, optional gefolgt von einem Bezeichner in Klammern.","e.g.,":"z.B.",or:"oder","Enter permission rule\u2026":"permission rule eingeben\u2026","Enter to submit \xB7 Esc to cancel":"Enter zum Absenden \xB7 Esc zum Abbrechen","Where should this rule be saved?":"Wo soll diese Regel gespeichert werden?","Enter to confirm \xB7 Esc to cancel":"Enter zum Best\xE4tigen \xB7 Esc zum Abbrechen","Delete {{type}} rule?":"{{type}}-Regel l\xF6schen?","Are you sure you want to delete this permission rule?":"Sind Sie sicher, dass Sie diese permission rule l\xF6schen m\xF6chten?","Permissions:":"Berechtigungen:","(\u2190/\u2192 or tab to cycle)":"(\u2190/\u2192 oder Tab zum Wechseln)","Press \u2191\u2193 to navigate \xB7 Enter to select \xB7 Type to search \xB7 Esc to cancel":"\u2191\u2193 navigieren \xB7 Enter ausw\xE4hlen \xB7 Tippen suchen \xB7 Esc abbrechen","Search\u2026":"Suche\u2026","Add directory\u2026":"Verzeichnis hinzuf\xFCgen\u2026","Add directory to workspace":"Verzeichnis zum Arbeitsbereich hinzuf\xFCgen","Matilda can read files in the workspace, and make edits when auto-accept edits is on.":"Matilda kann Dateien im Arbeitsbereich lesen und Bearbeitungen vornehmen, wenn die automatische Akzeptierung aktiviert ist.","Matilda will be able to read files in this directory and make edits when auto-accept edits is on.":"Matilda kann Dateien in diesem Verzeichnis lesen und Bearbeitungen vornehmen, wenn die automatische Akzeptierung aktiviert ist.","Enter the path to the directory:":"Pfad zum Verzeichnis eingeben:","Enter directory path\u2026":"Verzeichnispfad eingeben\u2026","Tab to complete \xB7 Enter to add \xB7 Esc to cancel":"Tab zum Vervollst\xE4ndigen \xB7 Enter zum Hinzuf\xFCgen \xB7 Esc zum Abbrechen","Remove directory?":"Verzeichnis entfernen?","Are you sure you want to remove this directory from the workspace?":"M\xF6chten Sie dieses Verzeichnis wirklich aus dem Arbeitsbereich entfernen?"," (Original working directory)":" (Urspr\xFCngliches Arbeitsverzeichnis)"," (from settings)":" (aus Einstellungen)","Directory does not exist.":"Verzeichnis existiert nicht.","Path is not a directory.":"Pfad ist kein Verzeichnis.","This directory is already in the workspace.":"Dieses Verzeichnis ist bereits im Arbeitsbereich.","Already covered by existing directory: {{dir}}":"Bereits durch vorhandenes Verzeichnis abgedeckt: {{dir}}","Using:":"Verwendet:","{{count}} open file":"{{count}} ge\xF6ffnete Datei","{{count}} open files":"{{count}} ge\xF6ffnete Dateien","(ctrl+g to view)":"(Ctrl+G zum Anzeigen)","{{count}} {{name}} file":"{{count}} {{name}}-Datei","{{count}} {{name}} files":"{{count}} {{name}}-Dateien","{{count}} MCP server":"{{count}} MCP server","{{count}} MCP servers":"{{count}} MCP servers","{{count}} Blocked":"{{count}} blockiert","(ctrl+t to view)":"(Ctrl+T zum Anzeigen)","(ctrl+t to toggle)":"(Ctrl+T zum Umschalten)","Press Ctrl+C again to exit.":"Dr\xFCcken Sie erneut Ctrl+C zum Beenden.","Press Ctrl+D again to exit.":"Dr\xFCcken Sie erneut Ctrl+D zum Beenden.","Press Esc again to clear.":"Dr\xFCcken Sie erneut Esc zum L\xF6schen.","Press Enter (empty) to send now \xB7 \u2191 to edit":"Dr\xFCcken Sie \u2191, um Nachrichten in der Warteschlange zu bearbeiten","Steering with queued message\u2026":"Steering with queued message\u2026","Request cancelled.":"Request cancelled.","No MCP servers configured.":"Keine MCP servers konfiguriert.","\u23F3 MCP servers are starting up ({{count}} initializing)...":"\u23F3 MCP servers werden gestartet ({{count}} werden initialisiert)...","Note: First startup may take longer. Tool availability will update automatically.":"Hinweis: Der erste Start kann l\xE4nger dauern. Werkzeugverf\xFCgbarkeit wird automatisch aktualisiert.","Configured MCP servers:":"Konfigurierte MCP servers:",Ready:"Bereit","Starting... (first startup may take longer)":"Wird gestartet... (erster Start kann l\xE4nger dauern)",Disconnected:"Getrennt","{{count}} tool":"{{count}} Werkzeug","{{count}} tools":"{{count}} Werkzeuge","{{count}} prompt":"{{count}} Prompt","{{count}} prompts":"{{count}} Prompts","(from {{extensionName}})":"(von {{extensionName}})",OAuth:"OAuth","OAuth expired":"OAuth abgelaufen","OAuth not authenticated":"OAuth nicht authentifiziert","tools and prompts will appear when ready":"Werkzeuge und Prompts werden angezeigt, wenn bereit","{{count}} tools cached":"{{count}} Werkzeuge zwischengespeichert","Tools:":"Werkzeuge:","Parameters:":"Parameter:",Blocked:"Blockiert","\u{1F4A1} Tips:":"\u{1F4A1} Tipps:",Use:"Verwenden","to show server and tool descriptions":"um Server- und Werkzeugbeschreibungen anzuzeigen","to show tool parameter schemas":"um tool parameter schemas anzuzeigen","to hide descriptions":"um Beschreibungen auszublenden","to authenticate with OAuth-enabled servers":"um sich bei OAuth-f\xE4higen Servern zu authentifizieren",Press:"Dr\xFCcken Sie","to toggle tool descriptions on/off":"um Werkzeugbeschreibungen ein-/auszuschalten","Starting OAuth authentication for MCP server '{{name}}'...":"OAuth-Authentifizierung f\xFCr MCP server '{{name}}' wird gestartet...","Time for Matilda to sleep. Catchya!":"Zeit f\xFCr Matilda, schlafen zu gehen. Bis dann!","To continue this session, run":"Um diese Sitzung fortzusetzen, f\xFChren Sie aus","Interaction Summary":"Interaktionszusammenfassung","Session ID:":"Sitzungs-ID:","Tool Calls:":"Werkzeugaufrufe:","Success Rate:":"Erfolgsrate:","User Agreement:":"Benutzerzustimmung:",reviewed:"\xFCberpr\xFCft","Code Changes:":"Code\xE4nderungen:",Performance:"Leistung","Wall Time:":"Gesamtzeit:","Agent Active:":"Agent aktiv:","API Time:":"API-Zeit:","Tool Time:":"Werkzeugzeit:","Session Stats":"Sitzungsstatistiken","Model Usage":"Modellnutzung",Reqs:"Anfragen","Input Tokens":"Eingabe-Token","Output Tokens":"Ausgabe-Token","Savings Highlight:":"Einsparungen:","of input tokens were served from the cache, reducing costs.":"der Eingabe-Token wurden aus dem Cache bedient, was die Kosten reduziert.","Tip: For a full token breakdown, run `/stats model`.":"Tipp: F\xFCr eine vollst\xE4ndige Token-Aufschl\xFCsselung f\xFChren Sie `/stats model` aus.","Model Stats For Nerds":"Modellstatistiken f\xFCr Nerds","Tool Stats For Nerds":"Werkzeugstatistiken f\xFCr Nerds",Metric:"Metrik",API:"API",Requests:"Anfragen",Errors:"Fehler","Avg Latency":"Durchschn. Latenz",Tokens:"Token",Total:"Gesamt",Cached:"Zwischengespeichert",Thoughts:"Gedanken",Output:"Ausgabe","Nothing to show yet \u2014 no API calls this session.":"In dieser Sitzung wurden keine API-Aufrufe gemacht.","Tool Name":"Werkzeugname",Calls:"Aufrufe","Success Rate":"Erfolgsrate","Avg Duration":"Durchschn. Dauer","User Decision Summary":"Benutzerentscheidungs-Zusammenfassung","Total Reviewed Suggestions:":"Insgesamt \xFCberpr\xFCfter Vorschl\xE4ge:"," \xBB Accepted:":" \xBB Akzeptiert:"," \xBB Rejected:":" \xBB Abgelehnt:"," \xBB Modified:":" \xBB Ge\xE4ndert:"," Overall Agreement Rate:":" Gesamtzustimmungsrate:","No tool calls have been made in this session.":"In dieser Sitzung wurden keine Werkzeugaufrufe gemacht.","Session start time is unavailable, cannot calculate stats.":"Sitzungsstartzeit nicht verf\xFCgbar, Statistiken k\xF6nnen nicht berechnet werden.",Activity:"Aktivit\xE4t",Efficiency:"Effizienz",Today:"Heute","Token Trend":"Token-Trend","Cache Hit Rate":"Cache-Trefferquote","Tool Success":"Tool-Erfolgsrate","Tool Leaderboard":"Tool-Rangliste",Time:"Zeit",Success:"Erfolg",Cache:"Cache",Latency:"Latenz","Code Impact":"Code-\xC4nderungen",net:"netto",streak:"Serie",best:"Rekord","Command Format Migration":"Befehlsformat-Migration","Found {{count}} TOML command file:":"{{count}} TOML-Befehlsdatei gefunden:","Found {{count}} TOML command files:":"{{count}} TOML-Befehlsdateien gefunden:","Current tasks":"Aktuelle Aufgaben","Background tasks":"Hintergrundaufgaben","No tasks currently running":"Derzeit laufen keine Aufgaben","No entry to show.":"Kein Eintrag zum Anzeigen.","needs approval":"wartet auf Genehmigung","Background agent needs approval":"Hintergrund-Agent wartet auf Genehmigung","Approve or deny the request above":"Genehmigen oder lehnen Sie die obige Anfrage ab",Running:"L\xE4uft",Paused:"Pausiert",Completed:"Abgeschlossen",Failed:"Fehlgeschlagen",Stopped:"Gestoppt",Shell:"Shell",Monitor:"Monitor",Command:"Befehl",Dream:"Dream","[dream] memory consolidation":"[dream] Speicher-Konsolidierung","[dream] memory consolidation (reviewing {{count}} session)":"[dream] Speicher-Konsolidierung (pr\xFCft {{count}} Sitzung)","[dream] memory consolidation (reviewing {{count}} sessions)":"[dream] Speicher-Konsolidierung (pr\xFCft {{count}} Sitzungen)","... and {{count}} more":"... und {{count}} weitere","The TOML format is deprecated. Would you like to migrate them to Markdown format?":"Das TOML-Format ist veraltet. M\xF6chten Sie sie ins Markdown-Format migrieren?","(Backups will be created and original files will be preserved)":"(Backups werden erstellt und Originaldateien werden beibehalten)","Waiting for user confirmation...":"Warten auf Benutzerbest\xE4tigung...","Themes with a bit of home: Wattle, Outback, Reef, Southern Cross \u2014 try /theme.":"Themes with a bit of home: Wattle, Outback, Reef, Southern Cross \u2014 try /theme.","Need a breather? /aussie hops a little Matilda easter egg across the terminal.":"Need a breather? /aussie hops a little Matilda easter egg across the terminal.","Show the {{animal}} hop":"Show the {{animal}} hop",'Unknown Aussie animal "{{name}}". Try: {{animals}}':'Unknown Aussie animal "{{name}}". Try: {{animals}}',WITTY_LOADING_PHRASES:["Auf gut Gl\xFCck!","Genialit\xE4t wird ausgeliefert...","Die Serifen werden aufgemalt...","Durch den Schleimpilz navigieren...","Die digitalen Geister werden befragt...","Splines werden retikuliert...","Die KI-Hamster werden aufgew\xE4rmt...","Die Zaubermuschel wird befragt...","Witzige Erwiderung wird generiert...","Die Algorithmen werden poliert...","Perfektion braucht Zeit (mein Code auch)...","Frische Bytes werden gebr\xFCht...","Elektronen werden gez\xE4hlt...","Kognitive Prozessoren werden aktiviert...","Auf Syntaxfehler im Universum wird gepr\xFCft...","Einen Moment, Humor wird optimiert...","Pointen werden gemischt...","Neuronale Netze werden entwirrt...","Brillanz wird kompiliert...","wit.exe wird geladen...","Die Wolke der Weisheit wird beschworen...","Eine witzige Antwort wird vorbereitet...","Einen Moment, ich debugge die Realit\xE4t...","Die Optionen werden verwirrt...","Kosmische Frequenzen werden eingestellt...","Eine Antwort wird erstellt, die Ihrer Geduld w\xFCrdig ist...","Die Einsen und Nullen werden kompiliert...","Abh\xE4ngigkeiten werden aufgel\xF6st... und existenzielle Krisen...","Erinnerungen werden defragmentiert... sowohl RAM als auch pers\xF6nliche...","Das Humor-Modul wird neu gestartet...","Das Wesentliche wird zwischengespeichert (haupts\xE4chlich Katzen-Memes)...","F\xFCr l\xE4cherliche Geschwindigkeit wird optimiert","Bits werden getauscht... sagen Sie es nicht den Bytes...","Garbage Collection l\xE4uft... bin gleich zur\xFCck...","Das Internet wird zusammengebaut...","Kaffee wird in Code umgewandelt...","Die Syntax der Realit\xE4t wird aktualisiert...","Die Synapsen werden neu verdrahtet...","Ein verlegtes Semikolon wird gesucht...","Die Zahnr\xE4der werden geschmiert...","Die Server werden vorgeheizt...","Der Fluxkompensator wird kalibriert...","Der Unwahrscheinlichkeitsantrieb wird aktiviert...","Die Macht wird kanalisiert...","Die Sterne werden f\xFCr optimale Antwort ausgerichtet...","So sagen wir alle...","Die n\xE4chste gro\xDFe Idee wird geladen...","Einen Moment, ich bin in der Zone...","Bereite mich vor, Sie mit Brillanz zu blenden...","Einen Augenblick, ich poliere meinen Witz...","Halten Sie durch, ich erschaffe ein Meisterwerk...","Einen Moment, ich debugge das Universum...","Einen Moment, ich richte die Pixel aus...","Einen Moment, ich optimiere den Humor...","Einen Moment, ich tune die Algorithmen...","Warp-Geschwindigkeit aktiviert...","Mehr Dilithium-Kristalle werden gesucht...","Keine Panik...","Dem wei\xDFen Kaninchen wird gefolgt...","Die Wahrheit ist hier drin... irgendwo...","Auf die Kassette wird gepustet...","Ladevorgang... Machen Sie eine Fassrolle!","Auf den Respawn wird gewartet...","Der Kessel-Flug wird in weniger als 12 Parsec beendet...","Der Kuchen ist keine L\xFCge, er l\xE4dt nur noch...","Am Charaktererstellungsbildschirm wird herumgefummelt...","Einen Moment, ich suche das richtige Meme...","'A' wird zum Fortfahren gedr\xFCckt...","Digitale Katzen werden geh\xFCtet...","Die Pixel werden poliert...","Ein passender Ladebildschirm-Witz wird gesucht...","Ich lenke Sie mit diesem witzigen Spruch ab...","Fast da... wahrscheinlich...","Unsere Hamster arbeiten so schnell sie k\xF6nnen...","Cloudy wird am Kopf gestreichelt...","Die Katze wird gestreichelt...","Meinen Chef rickrollen...","Never gonna give you up, never gonna let you down...","Auf den Bass wird geschlagen...","Die Schnozbeeren werden probiert...","I'm going the distance, I'm going for speed...","Ist dies das wahre Leben? Ist dies nur Fantasie?...","Ich habe ein gutes Gef\xFChl dabei...","Den B\xE4ren wird gestupst...","Recherche zu den neuesten Memes...","\xDCberlege, wie ich das witziger machen kann...","Hmmm... lassen Sie mich nachdenken...","Wie nennt man einen Fisch ohne Augen? Ein Fsh...","Warum ging der Computer zur Therapie? Er hatte zu viele Bytes...","Warum m\xF6gen Programmierer keine Natur? Sie hat zu viele Bugs...","Warum bevorzugen Programmierer den Dunkelmodus? Weil Licht Bugs anzieht...","Warum ging der Entwickler pleite? Er hat seinen ganzen Cache aufgebraucht...","Was kann man mit einem kaputten Bleistift machen? Nichts, er ist sinnlos...","Perkussive Wartung wird angewendet...","Die richtige USB-Ausrichtung wird gesucht...","Es wird sichergestellt, dass der magische Rauch in den Kabeln bleibt...","Versuche Vim zu beenden...","Das Hamsterrad wird angeworfen...","Das ist kein Bug, das ist ein undokumentiertes Feature...","Engage.","Ich komme wieder... mit einer Antwort.","Mein anderer Prozess ist eine TARDIS...","Mit dem Maschinengeist wird kommuniziert...","Die Gedanken marinieren lassen...","Gerade erinnert, wo ich meine Schl\xFCssel hingelegt habe...","\xDCber die Kugel wird nachgedacht...","Ich habe Dinge gesehen, die Sie nicht glauben w\xFCrden... wie einen Benutzer, der Lademeldungen liest.","Nachdenklicher Blick wird initiiert...","Was ist der Lieblingssnack eines Computers? Mikrochips.","Warum tragen Java-Entwickler Brillen? Weil sie nicht C#.","Der Laser wird aufgeladen... pew pew!","Durch Null wird geteilt... nur Spa\xDF!","Suche nach einem erwachsenen Aufseh... ich meine, Verarbeitung.","Es piept und boopt.","Pufferung... weil auch KIs einen Moment brauchen.","Quantenteilchen werden f\xFCr schnellere Antwort verschr\xE4nkt...","Das Chrom wird poliert... an den Algorithmen.","Sind Sie nicht unterhalten? (Arbeite daran!)","Die Code-Gremlins werden beschworen... zum Helfen, nat\xFCrlich.","Warte nur auf das Einwahlton-Ende...","Das Humor-O-Meter wird neu kalibriert.","Mein anderer Ladebildschirm ist noch lustiger.","Ziemlich sicher, dass irgendwo eine Katze \xFCber die Tastatur l\xE4uft...","Verbessern... Verbessern... L\xE4dt noch.","Das ist kein Bug, das ist ein Feature... dieses Ladebildschirms.","Haben Sie versucht, es aus- und wieder einzuschalten? (Den Ladebildschirm, nicht mich.)","Zus\xE4tzliche Pylonen werden gebaut..."],"Enter value...":"Wert eingeben...","Enter sensitive value...":"Sensiblen Wert eingeben...","Press Enter to submit, Escape to cancel":"Enter zum Absenden, Escape zum Abbrechen dr\xFCcken","Markdown file already exists: {{filename}}":"Markdown-Datei existiert bereits: {{filename}}","TOML Command Format Deprecation Notice":"TOML-Befehlsformat Veraltet-Hinweis","Found {{count}} command file(s) in TOML format:":"{{count}} Befehlsdatei(en) im TOML-Format gefunden:","The TOML format for commands is being deprecated in favor of Markdown format.":"Das TOML-Format f\xFCr Befehle wird zugunsten des Markdown-Formats eingestellt.","Markdown format is more readable and easier to edit.":"Das Markdown-Format ist lesbarer und einfacher zu bearbeiten.","You can migrate these files automatically using:":"Sie k\xF6nnen diese Dateien automatisch migrieren mit:","Or manually convert each file:":"Oder jede Datei manuell konvertieren:",'TOML: prompt = "..." / description = "..."':'TOML: prompt = "..." / description = "..."',"Markdown: YAML frontmatter + content":"Markdown: YAML-Frontmatter + Inhalt","The migration tool will:":"Das Migrationstool wird:","Convert TOML files to Markdown":"TOML-Dateien in Markdown konvertieren","Create backups of original files":"Sicherungen der Originaldateien erstellen","Preserve all command functionality":"Alle Befehlsfunktionen beibehalten","TOML format will continue to work for now, but migration is recommended.":"Das TOML-Format funktioniert vorerst weiter, aber eine Migration wird empfohlen.","Open extensions page in your browser":"Erweiterungsseite im Browser \xF6ffnen","Unknown extensions source: {{source}}.":"Unbekannte Erweiterungsquelle: {{source}}.","Would open extensions page in your browser: {{url}} (skipped in test environment)":"W\xFCrde Erweiterungsseite im Browser \xF6ffnen: {{url}} (\xFCbersprungen in Testumgebung)","View available extensions at {{url}}":"Verf\xFCgbare Erweiterungen ansehen unter {{url}}","Opening extensions page in your browser: {{url}}":"Erweiterungsseite wird im Browser ge\xF6ffnet: {{url}}","Failed to open browser. Check out the extensions gallery at {{url}}":"Browser konnte nicht ge\xF6ffnet werden. Besuchen Sie die Erweiterungsgalerie unter {{url}}","When the yarn gets long, /compress summarises history and frees context.":"Verwenden Sie /compress, wenn die Unterhaltung lang wird, um den Verlauf zusammenzufassen und Kontext freizugeben.","Fresh start with /clear or /new \u2014 the previous yarn stays in history.":"Starten Sie eine neue Idee mit /clear oder /new; die vorherige Sitzung bleibt im Verlauf verf\xFCgbar.","Something crook? /bug sends it to the maintainers.":"Verwenden Sie /bug, um Probleme an die Betreuer zu melden, wenn etwas schiefgeht.","Switch providers quickly with /auth.":"Wechseln Sie den Authentifizierungstyp schnell mit /auth.","Run any shell command with ! (e.g. !ls) without leaving Matilda.":"Sie k\xF6nnen beliebige Shell-Befehle in Matilda mit ! ausf\xFChren (z. B. !ls).","Type / for the command menu \u2014 Tab autocompletes slash commands and saved prompts.":"Geben Sie / ein, um das Befehlsmen\xFC zu \xF6ffnen; Tab vervollst\xE4ndigt Slash-Befehle und gespeicherte Prompts.","Pick up where you left off with matilda --continue or matilda --resume.":"Sie k\xF6nnen eine fr\xFChere Unterhaltung mit matilda --continue oder matilda --resume fortsetzen.","Cycle permission modes with Shift+Tab, or jump with /approval-mode (try bogan for full auto).":"Sie k\xF6nnen den Berechtigungsmodus schnell mit Shift+Tab oder /approval-mode wechseln.","Cycle permission modes with Tab, or jump straight with /approval-mode (try bogan for full auto).":"Sie k\xF6nnen den Berechtigungsmodus schnell mit Tab oder /approval-mode wechseln.","Try /insight for a personalised squiz at patterns in your chat history.":"Probieren Sie /insight, um personalisierte Erkenntnisse aus Ihrem Chatverlauf zu erstellen.","Press Ctrl+O for compact mode \u2014 hide tool output and thinking for a cleaner view.":"Ctrl+O dr\xFCcken, um den Kompaktmodus umzuschalten \u2014 Tool-Ausgabe und Denkprozess ausblenden.","Drop a MATILDA.md in the project so Matilda keeps persistent context.":"F\xFCgen Sie eine MATILDA.md-Datei hinzu, um Matilda dauerhaften Projektkontext zu geben.","Duck out of the main thread with /btw \u2014 quick side question, same chat.":"Verwenden Sie /btw, um eine kurze Nebenfrage zu stellen, ohne die Unterhaltung zu unterbrechen.","Context is almost full! Run /compress now or start /new to continue.":"Der Kontext ist fast voll! F\xFChren Sie jetzt /compress aus oder starten Sie /new, um fortzufahren.","Context is getting full. Use /compress to free up space.":"Der Kontext f\xFCllt sich. Verwenden Sie /compress, um Platz freizugeben.","Conversation getting long? /compress rolls it up and frees context.":"Lange Unterhaltung? /compress fasst den Verlauf zusammen, um Kontext freizugeben.","You can configure your API key and models in settings.json":"Sie k\xF6nnen Ihren API Key und Modelle in settings.json konfigurieren","Refer to the documentation for setup instructions":"Einrichtungsanweisungen finden Sie in der Dokumentation","API key cannot be empty.":"API Key darf nicht leer sein.",Custom:"Benutzerdefiniert","Choose based on where your account is registered":"W\xE4hlen Sie basierend auf dem Registrierungsort Ihres Kontos","New model configurations are available for {{region}}. Update now?":"Neue Modellkonfigurationen sind f\xFCr {{region}} verf\xFCgbar. Jetzt aktualisieren?",'{{region}} configuration updated successfully. Model switched to "{{model}}".':'{{region}}-Konfiguration erfolgreich aktualisiert. Modell auf "{{model}}" umgeschaltet.',"Context Usage":"Kontextnutzung","% used":"% verwendet","% context used":"% Kontext verwendet","Context exceeds limit! Use /compress or /clear to reduce.":"Kontext \xFCberschreitet Limit! Verwenden Sie /compress oder /clear zum Reduzieren.","No API response yet. Send a message to see actual usage.":"Noch keine API-Antwort. Senden Sie eine Nachricht, um die tats\xE4chliche Nutzung anzuzeigen.","Estimated pre-conversation overhead":"Gesch\xE4tzte Vorabkosten vor der Unterhaltung","Context window":"Kontextfenster",tokens:"Tokens",Used:"Verwendet",Free:"Frei","Autocompact buffer":"Autokomprimierungs-Puffer","Usage by category":"Verwendung nach Kategorie","System prompt":"System-Prompt","Built-in tools":"Integrierte Tools","MCP tools":"MCP tools","Memory files":"Speicherdateien",Skills:"F\xE4higkeiten",Messages:"Nachrichten","Run /context detail for per-item breakdown.":"F\xFChren Sie /context detail f\xFCr eine Aufschl\xFCsselung nach Elementen aus.",active:"aktiv","body loaded":"Inhalt geladen",memory:"Speicher","{{region}} configuration updated successfully.":"{{region}}-Konfiguration erfolgreich aktualisiert.","Authenticated successfully with {{region}}. API key and model configs saved to settings.json.":"Erfolgreich mit {{region}} authentifiziert. API Key und Modellkonfigurationen wurden in settings.json gespeichert.","Type something...":"Etwas eingeben...",Submit:"Senden","Submit answers":"Antworten senden",Cancel:"Abbrechen","Your answers:":"Ihre Antworten:","(not answered)":"(nicht beantwortet)","Ready to submit your answers?":"Bereit, Ihre Antworten zu senden?","\u2191/\u2193: Navigate | \u2190/\u2192: Switch tabs | Enter: Select":"\u2191/\u2193: Navigieren | \u2190/\u2192: Tabs wechseln | Enter: Ausw\xE4hlen","\u2191/\u2193: Navigate | Enter: Select | Esc: Cancel":"\u2191/\u2193: Navigieren | Enter: Ausw\xE4hlen | Esc: Abbrechen","Authenticate using Matilda OAuth":"Mit Matilda OAuth authentifizieren","Show current authentication status":"Aktuellen Authentifizierungsstatus anzeigen","Authentication completed successfully.":"Authentifizierung erfolgreich abgeschlossen.","Starting Matilda OAuth authentication...":"Matilda OAuth-Authentifizierung wird gestartet...","Successfully authenticated with Matilda OAuth.":"Erfolgreich mit Matilda OAuth authentifiziert.","Failed to authenticate with Matilda OAuth: {{error}}":"Authentifizierung mit Matilda OAuth fehlgeschlagen: {{error}}",Global:"Global","Select authentication method:":"Authentifizierungsmethode ausw\xE4hlen:","\n=== Authentication Status ===\n":`
10
10
  === Authentifizierungsstatus ===
11
11
  `,"\u26A0\uFE0F No authentication method configured.\n":`\u26A0\uFE0F Keine Authentifizierungsmethode konfiguriert.
12
12
  `,"Run one of the following commands to get started:\n":`F\xFChren Sie einen der folgenden Befehle aus, um zu beginnen:
@@ -1,6 +1,6 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import{a as G}from"./chunk-I55PXD4N.js";import{Ca as b,De as q,Ee as H,He as X,be as S,ce as W,fc as B,je as k,we as z,xe as T}from"./chunk-KMU5KAYC.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-S32ZN6LD.js";import"./chunk-OQ73WWR4.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-S4K76QPI.js";import"./chunk-APVMKC4S.js";import"./chunk-4F4DA5UI.js";import"./chunk-2MEHZGZJ.js";import"./chunk-LN2DRVOB.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import{Lb as $,Oa as M,_c as j,ca as O,ha as x,wc as F}from"./chunk-DY6PIAAY.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import{w as U}from"./chunk-UY2R3ZQ4.js";import"./chunk-4M4CUQUR.js";import{i as R,p as v,q as A}from"./chunk-X6DODPXG.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import{A as C,C as L,Y as I,a as w,z as E}from"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import{b as y}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";y();import*as _ from"node:fs";import*as g from"node:path";y();var ne={"\u2010":"-","\u2011":"-","\u2012":"-","\u2013":"-","\u2014":"-","\u2015":"-","\u2212":"-","\u2018":"'","\u2019":"'","\u201A":"'","\u201B":"'","\u201C":'"',"\u201D":'"',"\u201E":'"',"\u201F":'"',"\xA0":" ","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2007":" ","\u2008":" ","\u2009":" ","\u200A":" ","\u202F":" ","\u205F":" ","\u3000":" "};function P(r){if(r==="")return r;let t="";for(let e of r)t+=ne[e]??e;return t}var re=[r=>r,r=>r.trimEnd()];function oe(r){return P(r).trimEnd()}function V(r,t,e){if(t.length===0)return 0;if(t.length>r.length)return null;e:for(let i=0;i<=r.length-t.length;i++){for(let n=0;n<t.length;n++)if(e(r[i+n])!==e(t[n]))continue e;return i}return null}function ae(r){let t=r.split(`
3
+ import{a as G}from"./chunk-I55PXD4N.js";import{Kd as S,Ld as W,Ob as B,Sd as k,de as z,ee as T,ja as b,ke as q,le as H,oe as X}from"./chunk-WPZEF752.js";import"./chunk-TZIDSCTF.js";import"./chunk-FUNLOUYI.js";import"./chunk-R3H6IWFK.js";import"./chunk-OMZ5SGMK.js";import"./chunk-KP6BLFQS.js";import"./chunk-RBG4ERTN.js";import"./chunk-TXMXCR7D.js";import"./chunk-YULUB745.js";import"./chunk-LQWORCPO.js";import"./chunk-TISQNFB5.js";import"./chunk-XXZH7C44.js";import"./chunk-47XR7IMP.js";import"./chunk-QEI3OETI.js";import"./chunk-QKYGQLWC.js";import"./chunk-MNGFXISD.js";import"./chunk-4R2OFVPK.js";import"./chunk-RNKDFE2S.js";import"./chunk-EMWHQSMS.js";import"./chunk-FSRNEJQB.js";import"./chunk-S4K76QPI.js";import"./chunk-2FX4655X.js";import"./chunk-4F4DA5UI.js";import"./chunk-2XZIKUB6.js";import"./chunk-XYA3SFGC.js";import"./chunk-4J6DC24J.js";import"./chunk-LJR4RZZ2.js";import"./chunk-U347OO7S.js";import"./chunk-CLUEFPSU.js";import"./chunk-7VGUNT5L.js";import{Lb as $,Oa as M,_c as j,ca as O,ha as x,wc as F}from"./chunk-CFBZKYFB.js";import"./chunk-WVY2P6WH.js";import"./chunk-UIRBHC5X.js";import{w as U}from"./chunk-UY2R3ZQ4.js";import"./chunk-NDR7ZFUA.js";import{i as R,p as v,q as A}from"./chunk-5U3A6KMU.js";import"./chunk-LLQVLTPB.js";import"./chunk-XKDGRW3K.js";import"./chunk-ESSYHTAZ.js";import"./chunk-IOCF4XSR.js";import{A as C,C as L,Y as I,a as w,z as E}from"./chunk-QWBNNEV2.js";import"./chunk-G7R2XEEF.js";import"./chunk-OA56BXPD.js";import"./chunk-FWDMPRKU.js";import{b as y}from"./chunk-GZPNIYVZ.js";import"./chunk-OWGSC52X.js";y();import*as _ from"node:fs";import*as g from"node:path";y();var ne={"\u2010":"-","\u2011":"-","\u2012":"-","\u2013":"-","\u2014":"-","\u2015":"-","\u2212":"-","\u2018":"'","\u2019":"'","\u201A":"'","\u201B":"'","\u201C":'"',"\u201D":'"',"\u201E":'"',"\u201F":'"',"\xA0":" ","\u2002":" ","\u2003":" ","\u2004":" ","\u2005":" ","\u2006":" ","\u2007":" ","\u2008":" ","\u2009":" ","\u200A":" ","\u202F":" ","\u205F":" ","\u3000":" "};function P(r){if(r==="")return r;let t="";for(let e of r)t+=ne[e]??e;return t}var re=[r=>r,r=>r.trimEnd()];function oe(r){return P(r).trimEnd()}function V(r,t,e){if(t.length===0)return 0;if(t.length>r.length)return null;e:for(let i=0;i<=r.length-t.length;i++){for(let n=0;n<t.length;n++)if(e(r[i+n])!==e(t[n]))continue e;return i}return null}function ae(r){let t=r.split(`
4
4
  `),e=new Array(t.length+1),i=0;for(let n=0;n<t.length;n++)e[n]=i,i+=t[n].length,n<t.length-1&&(i+=1);return e[t.length]=r.length,{lines:t,offsets:e}}function K(r,t,e,i,n,o){if(n===0)return o?`
5
5
  `:"";let c=t[i]??0,s=i+n-1,l=(t[s]??0)+(e[s]?.length??0);if(o){let p=t[i+n];p!==void 0?l=p:r.endsWith(`
6
6
  `)&&(l=r.length)}return r.slice(c,l)}function se(r,t){let{lines:e,offsets:i}=ae(r),n=t.split(`