@qitqode/qitqode-android-arm64 0.2.5 → 0.2.6

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 (74) hide show
  1. package/bundle/{chunk-45k7qm85.js → chunk-3cr2p4mp.js} +1 -1
  2. package/bundle/{chunk-ty2vg1a5.js → chunk-3d73kfea.js} +1 -1
  3. package/bundle/{chunk-xmb8jy13.js → chunk-3ktzxj69.js} +1 -1
  4. package/bundle/{chunk-0j5rzaxx.js → chunk-43ttzy29.js} +1 -1
  5. package/bundle/{chunk-3akv2xqh.js → chunk-4pshnq6g.js} +1 -1
  6. package/bundle/{chunk-kdj7xvz7.js → chunk-5asx1706.js} +1 -1
  7. package/bundle/{chunk-rn043d0r.js → chunk-5df5aja0.js} +1 -1
  8. package/bundle/{chunk-h5pnng66.js → chunk-6dvmyeg7.js} +1 -1
  9. package/bundle/{chunk-acpjrs02.js → chunk-6ex981t8.js} +1 -1
  10. package/bundle/{chunk-sf5zc4kc.js → chunk-6jeg2r5j.js} +1 -1
  11. package/bundle/{chunk-03bp59wq.js → chunk-6nry7tah.js} +1 -1
  12. package/bundle/{chunk-6sxx56b2.js → chunk-7x30x94y.js} +1 -1
  13. package/bundle/{chunk-xy3c8f1h.js → chunk-86hsh44c.js} +1 -1
  14. package/bundle/{chunk-fxx0z4yb.js → chunk-8e4s6nc2.js} +1 -1
  15. package/bundle/{chunk-kf2f3mza.js → chunk-8sbb95a4.js} +1 -1
  16. package/bundle/{chunk-bch1rj72.js → chunk-8yvx3pgy.js} +1 -1
  17. package/bundle/{chunk-44723rmb.js → chunk-97q2t1yz.js} +1 -1
  18. package/bundle/{chunk-xqnzmr7a.js → chunk-99s035f0.js} +1 -1
  19. package/bundle/{chunk-jxwey5py.js → chunk-a7rp46yt.js} +1 -1
  20. package/bundle/{chunk-zgcabs1k.js → chunk-bg1t0kke.js} +1 -1
  21. package/bundle/{chunk-0g7acwt1.js → chunk-bkct64rs.js} +1 -1
  22. package/bundle/{chunk-wmezdcdh.js → chunk-bzebyyfr.js} +2 -2
  23. package/bundle/{chunk-xynwfaf1.js → chunk-c3zge8cg.js} +1 -1
  24. package/bundle/{chunk-41cq88js.js → chunk-cbnkx933.js} +1 -1
  25. package/bundle/{chunk-kn8w69g9.js → chunk-cfhfc86j.js} +1 -1
  26. package/bundle/{chunk-5qsr1q4t.js → chunk-cj7r8w1e.js} +1 -1
  27. package/bundle/{chunk-7ayb3k5p.js → chunk-cng61dby.js} +1 -1
  28. package/bundle/{chunk-89b4k585.js → chunk-cqkaamvn.js} +1 -1
  29. package/bundle/{chunk-cq9sd32h.js → chunk-d51908mv.js} +1 -1
  30. package/bundle/{chunk-93gdcrbc.js → chunk-d7nsd979.js} +1 -1
  31. package/bundle/{chunk-2nv1scj9.js → chunk-da6kggv7.js} +1 -1
  32. package/bundle/{chunk-5gsdnejs.js → chunk-f3zmdfqa.js} +1 -1
  33. package/bundle/{chunk-kj8cmn7z.js → chunk-fr34mnyg.js} +1 -1
  34. package/bundle/{chunk-826r9svy.js → chunk-fsqses4g.js} +1 -1
  35. package/bundle/{chunk-m7v4ky0y.js → chunk-fyhqp4pb.js} +1 -1
  36. package/bundle/{chunk-hgmqz75r.js → chunk-gdn91t9j.js} +1 -1
  37. package/bundle/{chunk-xhtcegk0.js → chunk-gjd3wf8b.js} +1 -1
  38. package/bundle/{chunk-r1xh50b2.js → chunk-h9wh48d0.js} +1 -1
  39. package/bundle/chunk-hjb1etf8.js +2 -0
  40. package/bundle/{chunk-v3nqkqhz.js → chunk-hjt94wce.js} +223 -223
  41. package/bundle/{chunk-nw3e93y8.js → chunk-hqbbs9dm.js} +1 -1
  42. package/bundle/{chunk-t9pwz4ws.js → chunk-jnrnncqc.js} +1 -1
  43. package/bundle/{chunk-52frd9p0.js → chunk-k3dacdp5.js} +4 -4
  44. package/bundle/{chunk-vp9scf28.js → chunk-kengqzja.js} +1 -1
  45. package/bundle/{chunk-pxv12ctq.js → chunk-kth84vdn.js} +1 -1
  46. package/bundle/{chunk-kxwkab31.js → chunk-ky88ba80.js} +1 -1
  47. package/bundle/{chunk-cfjjx3sh.js → chunk-m80v76m9.js} +1 -1
  48. package/bundle/{chunk-c55f729m.js → chunk-mhtxp66q.js} +1 -1
  49. package/bundle/{chunk-3cqrz7g1.js → chunk-ngfxxfem.js} +1 -1
  50. package/bundle/{chunk-bbdp6dj4.js → chunk-nmzrrqgb.js} +1 -1
  51. package/bundle/{chunk-yv5aehqq.js → chunk-nvs0d8jg.js} +1 -1
  52. package/bundle/{chunk-jyt2xvha.js → chunk-p4b0s5td.js} +1 -1
  53. package/bundle/{chunk-36xm6mgm.js → chunk-pe2xdkez.js} +1 -1
  54. package/bundle/{chunk-eb4y8bjv.js → chunk-pt0xphq9.js} +1 -1
  55. package/bundle/{chunk-6t48g4x5.js → chunk-pz1avwyt.js} +1 -1
  56. package/bundle/{chunk-a9a0cwmf.js → chunk-q3h42a94.js} +1 -1
  57. package/bundle/{chunk-2b3fn9xv.js → chunk-q3nvzhyh.js} +1 -1
  58. package/bundle/{chunk-ct693qsd.js → chunk-q9tgdghx.js} +1 -1
  59. package/bundle/{chunk-g3y5xemb.js → chunk-qkvqvgcx.js} +1 -1
  60. package/bundle/{chunk-98b7ecrk.js → chunk-rcrjbhaz.js} +1 -1
  61. package/bundle/{chunk-np12r26m.js → chunk-t5r3w9e1.js} +1 -1
  62. package/bundle/{chunk-13rsd5vv.js → chunk-tzb26ntq.js} +1 -1
  63. package/bundle/{chunk-af81r4v7.js → chunk-v6v9xn81.js} +1 -1
  64. package/bundle/{chunk-w2cb8cry.js → chunk-vdrz2t9c.js} +1 -1
  65. package/bundle/{chunk-mtpzcc14.js → chunk-vj4x8hvz.js} +1 -1
  66. package/bundle/{chunk-nymf08b4.js → chunk-vkaa7k3e.js} +2 -2
  67. package/bundle/{chunk-dt5aae7t.js → chunk-xwdxgg16.js} +1 -1
  68. package/bundle/{chunk-t5xxs5kp.js → chunk-xy0gnpen.js} +1 -1
  69. package/bundle/{chunk-yfzyzsr4.js → chunk-ycvwpmd9.js} +1 -1
  70. package/bundle/{chunk-vwh6mv37.js → chunk-zkm3yyyf.js} +1 -1
  71. package/bundle/index.js +3 -3
  72. package/bundle/worker.js +1 -1
  73. package/package.json +1 -1
  74. package/bundle/chunk-rrd0fdra.js +0 -2
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{en as E,fn as c,gn as M,hn as i}from"./chunk-a9a0cwmf.js";import{En as e,Fn as _0,Gn as I,Hn as O0,jn as g,ln as n,mn as k,pn as d,qn as u}from"./chunk-nw3e93y8.js";import{On as r}from"./chunk-vcygx6hs.js";import{is as G,ns as y}from"./chunk-kj8cmn7z.js";import{Es as s}from"./chunk-r5zy4za0.js";import{Ns as X,Ws as o}from"./chunk-tr6rdr6h.js";import{bt as x,ft as K,kt as T}from"./chunk-at22twxx.js";import{lt as j}from"./chunk-kgptyf7n.js";import{DE as L,TN as A,eH as w,mI as f,zB as v}from"./chunk-qnvsqnz5.js";import{uO as p}from"./chunk-r9w0thdk.js";var F={};p(F,{waitForDependencies:()=>M0,layer:()=>V0,get:()=>R0,defaultLayer:()=>W0,TuiConfig:()=>F,Service:()=>z,Info:()=>Z0});import l from"path";var J={};p(J,{Keybinds:()=>B0,ConfigKeybinds:()=>J});var _=(O,Z)=>A.String.pipe(A.optional,A.withDecodingDefault(w.succeed(O))).annotate({description:Z}),j0=process.platform==="win32"?"ctrl+z,ctrl+-,super+z":"ctrl+-,super+z",w0=A.Struct({leader:_("ctrl+x","Leader key for keybind combinations"),app_exit:_("ctrl+c,ctrl+d,<leader>q","Exit the application"),editor_open:_("<leader>e","Open external editor"),theme_list:_("<leader>t","List available themes"),sidebar_toggle:_("<leader>b","Toggle sidebar"),scrollbar_toggle:_("none","Toggle session scrollbar"),status_view:_("<leader>s","View status"),session_export:_("<leader>x","Export session to editor"),session_new:_("<leader>n","Create a new session"),session_list:_("<leader>l","List all sessions"),session_timeline:_("<leader>g","Show session timeline"),session_fork:_("none","Fork session from message"),session_rename:_("ctrl+r","Rename session"),session_delete:_("ctrl+d","Delete session"),stash_delete:_("ctrl+d","Delete stash entry"),model_provider_list:_("ctrl+a","Open provider list from model dialog"),model_favorite_toggle:_("ctrl+f","Toggle model favorite status"),session_share:_("none","Share current session"),session_unshare:_("none","Unshare current session"),session_interrupt:_("escape","Interrupt current session"),session_compact:_("<leader>c","Compact the session"),messages_page_up:_("pageup,ctrl+alt+b","Scroll messages up by one page"),messages_page_down:_("pagedown,ctrl+alt+f","Scroll messages down by one page"),messages_line_up:_("ctrl+alt+y","Scroll messages up by one line"),messages_line_down:_("ctrl+alt+e","Scroll messages down by one line"),messages_half_page_up:_("ctrl+alt+u","Scroll messages up by half page"),messages_half_page_down:_("ctrl+alt+d","Scroll messages down by half page"),messages_first:_("ctrl+g,home","Navigate to first message"),messages_last:_("ctrl+alt+g,end","Navigate to last message"),messages_next:_("none","Navigate to next message"),messages_previous:_("none","Navigate to previous message"),messages_last_user:_("none","Navigate to last user message"),messages_copy:_("<leader>y","Copy message"),messages_undo:_("<leader>u","Undo message"),messages_redo:_("<leader>r","Redo message"),messages_toggle_conceal:_("<leader>h","Toggle code block concealment in messages"),tool_details:_("none","Toggle tool details visibility"),model_list:_("<leader>m","List available models"),model_cycle_recent:_("f2","Next recently used model"),model_cycle_recent_reverse:_("shift+f2","Previous recently used model"),model_cycle_favorite:_("none","Next favorite model"),model_cycle_favorite_reverse:_("none","Previous favorite model"),command_list:_("ctrl+p","List available commands"),agent_list:_("<leader>a","List agents"),agent_cycle:_("ctrl+space","Next agent"),agent_cycle_reverse:_("none","Previous agent"),variant_cycle:_("ctrl+t","Cycle model variants"),variant_list:_("none","List model variants"),input_clear:_("ctrl+c","Clear input field"),input_paste:_("super+v,ctrl+v","Paste from clipboard"),input_submit:_("return","Submit input"),input_newline:_("shift+return,ctrl+return,alt+return,ctrl+j","Insert newline in input"),input_move_left:_("left,ctrl+b","Move cursor left in input"),input_move_right:_("right,ctrl+f","Move cursor right in input"),input_move_up:_("up","Move cursor up in input"),input_move_down:_("down","Move cursor down in input"),input_select_left:_("shift+left","Select left in input"),input_select_right:_("shift+right","Select right in input"),input_select_up:_("shift+up","Select up in input"),input_select_down:_("shift+down","Select down in input"),input_line_home:_("ctrl+a","Move to start of line in input"),input_line_end:_("ctrl+e","Move to end of line in input"),input_select_line_home:_("ctrl+shift+a","Select to start of line in input"),input_select_line_end:_("ctrl+shift+e","Select to end of line in input"),input_visual_line_home:_("alt+a","Move to start of visual line in input"),input_visual_line_end:_("alt+e","Move to end of visual line in input"),input_select_visual_line_home:_("alt+shift+a","Select to start of visual line in input"),input_select_visual_line_end:_("alt+shift+e","Select to end of visual line in input"),input_buffer_home:_("home","Move to start of buffer in input"),input_buffer_end:_("end","Move to end of buffer in input"),input_select_buffer_home:_("shift+home","Select to start of buffer in input"),input_select_buffer_end:_("shift+end","Select to end of buffer in input"),input_delete_line:_("ctrl+shift+d","Delete line in input"),input_delete_to_line_end:_("ctrl+k","Delete to end of line in input"),input_delete_to_line_start:_("ctrl+u","Delete to start of line in input"),input_backspace:_("backspace,shift+backspace","Backspace in input"),input_delete:_("ctrl+d,delete,shift+delete","Delete character in input"),input_undo:_(j0,"Undo in input"),input_redo:_("ctrl+.,super+shift+z","Redo in input"),input_word_forward:_("alt+f,alt+right,ctrl+right","Move word forward in input"),input_word_backward:_("alt+b,alt+left,ctrl+left","Move word backward in input"),input_select_word_forward:_("alt+shift+f,alt+shift+right","Select word forward in input"),input_select_word_backward:_("alt+shift+b,alt+shift+left","Select word backward in input"),input_delete_word_forward:_("alt+d,alt+delete,ctrl+delete","Delete word forward in input"),input_delete_word_backward:_("ctrl+w,ctrl+backspace,alt+backspace","Delete word backward in input"),history_previous:_("up","Previous history item"),history_next:_("down","Next history item"),session_child_first:_("<leader>down","Go to first child session"),session_child_cycle:_("<leader>right","Go to next child session"),session_child_cycle_reverse:_("<leader>left","Go to previous child session"),session_parent:_("<leader>up","Go to parent session"),session_main:_("<leader>escape","Back to the main conversation"),terminal_suspend:_("ctrl+z","Suspend terminal"),terminal_title_toggle:_("none","Toggle terminal title"),tips_toggle:_("<leader>h","Toggle tips on home screen"),plugin_manager:_("none","Open plugin manager dialog"),display_thinking:_("none","Toggle thinking blocks visibility")}).annotate({identifier:"KeybindsConfig"}),B0=r(w0);var K0=j.object(Object.fromEntries(Object.keys(J.Keybinds.shape).map((O)=>[O,j.string().optional()]))).strict(),R=j.object({scroll_speed:j.number().min(0.001).optional().describe("TUI scroll speed"),scroll_acceleration:j.object({enabled:j.boolean().describe("Enable scroll acceleration")}).optional().describe("Scroll acceleration settings"),diff_style:j.enum(["auto","stacked"]).optional().describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),mouse:j.boolean().optional().describe("Enable or disable mouse capture (default: true on desktop, false on Android/Termux)"),accessible:j.boolean().optional().describe("Screen-reader friendly mode: linear main-screen rendering, no mouse capture, reduced motion, no sound (default: false)"),reduce_motion:j.boolean().optional().describe("Disable spinners and other animations, showing static text instead (default: false)"),sound:j.boolean().optional().describe("Enable or disable sound cues (default: true)"),announcements:j.enum(["quiet","normal","verbose"]).optional().describe("Verbosity of accessible-mode screen-reader announcements: 'quiet' announces only turn boundaries, errors, and stops; 'normal' adds tool-start lines; 'verbose' adds tool-completion lines (default: normal). Errors are always announced.")}),P=j.object({$schema:j.string().optional(),theme:j.string().optional(),keybinds:K0.optional(),plugin:M.Spec.zod.array().optional(),plugin_enabled:j.record(j.string(),j.boolean()).optional()}).extend(R.shape).strict();var D=o.create({service:"tui.migrate"}),X0="https://qitqode.com/tui.json",Y0=P.shape.theme.optional(),b=j.record(j.string(),j.unknown()).optional(),H0=j.object({scroll_speed:R.shape.scroll_speed.catch(void 0),scroll_acceleration:R.shape.scroll_acceleration.catch(void 0),diff_style:R.shape.diff_style.catch(void 0)}).strip();async function t(O){let Z=await G0(O);for(let V of Z){let $=await K.readText(V).catch((m)=>{D.warn("failed to read config for tui migration",{path:V,error:m});return});if(!$)continue;let Q=[],B=g($,Q,{allowTrailingComma:!0});if(Q.length||!B||typeof B!=="object"||Array.isArray(B))continue;let W=Y0.safeParse("theme"in B?B.theme:void 0),Y=b.safeParse("keybinds"in B?B.keybinds:void 0),N=b.safeParse("tui"in B?B.tui:void 0),H={theme:W.success?W.data:void 0,keybinds:Y.success?Y.data:void 0,tui:N.success?N.data:void 0},S=H.tui?J0(H.tui):void 0;if(H.theme===void 0&&H.keybinds===void 0&&!S)continue;let U=l.join(l.dirname(V),"tui.json");if(await K.exists(U))continue;let C={$schema:X0};if(H.theme!==void 0)C.theme=H.theme;if(H.keybinds!==void 0)C.keybinds=H.keybinds;if(S)Object.assign(C,S);if(!await K.write(U,JSON.stringify(C,null,2)).then(()=>!0).catch((m)=>{return D.warn("failed to write tui migration target",{from:V,to:U,error:m}),!1}))continue;if(!await D0(V,$)){D.warn("tui config migrated but source file was not stripped",{from:V,to:U});continue}D.info("migrated tui config",{from:V,to:U})}}function J0(O){let Z=H0.parse(O);if(Z.scroll_speed===void 0&&Z.diff_style===void 0&&Z.scroll_acceleration===void 0)return;return Z}async function D0(O,Z){let V=O+".tui-migration.bak";if(!(await K.exists(V)?!0:await K.write(V,Z).then(()=>!0).catch((W)=>{return D.warn("failed to backup source config during tui migration",{path:O,backup:V,error:W}),!1})))return!1;let B=["theme","keybinds","tui"].reduce((W,Y)=>{let N=n(W,[Y],void 0,{formattingOptions:{insertSpaces:!0,tabSize:2}});if(!N.length)return W;return k(W,N)},Z);return K.write(O,B).then(()=>{return D.info("stripped tui keys from server config",{path:O,backup:V}),!0}).catch((W)=>{return D.warn("failed to strip legacy tui keys from server config",{path:O,backup:V,error:W}),!1})}async function G0(O){let Z=[...I(T.Path.config,"qitqode"),...await K.findUp(["qitqode.json","qitqode.jsonc"],O.cwd,void 0,{rootFirst:!0})];for(let $ of G(O.directories))Z.push(...I($,"qitqode"));if(X.QITQODE_CONFIG)Z.push(X.QITQODE_CONFIG);return(await Promise.all(G(Z).map(async($)=>{return await K.exists($)?$:void 0}))).filter(($)=>!!$)}var a=v.Reference("CurrentWorkingDirectory",{defaultValue:()=>process.cwd()});var h=o.create({service:"tui.config"}),Z0=P;class z extends v.Service()("@qitqode/TuiConfig"){}function I0(O,Z){if(K.contains(Z.directory,O))return"local";return"global"}function N0(O){let Z={...O};if(!("tui"in Z))return Z;if(!s(Z.tui))return delete Z.tui,Z;let V=Z.tui;return delete Z.tui,{...V,...Z}}async function U0(O,Z){if(!O.plugin)return O;for(let V=0;V<O.plugin.length;V++)O.plugin[V]=await M.resolvePluginSpec(O.plugin[V],Z);return O}async function q(O,Z,V){let $=await z0(Z);if(O.result=y(O.result,$),!$.plugin?.length)return;let Q=I0(Z,V),B=M.deduplicatePluginOrigins([...O.result.plugin_origins??[],...$.plugin.map((W)=>({spec:W,scope:Q,source:Z}))]);O.result.plugin=B.map((W)=>W.spec),O.result.plugin_origins=B}var A0=w.fn("TuiConfig.loadState")(function*(O){let Z=yield*_0(O.directory);yield*w.promise(()=>t({directories:Z,cwd:O.directory}));let V=X.QITQODE_DISABLE_PROJECT_CONFIG?[]:yield*e("tui",O.directory),$={result:{}};for(let W of I(T.Path.config,"tui"))yield*w.promise(()=>q($,W,O)).pipe(w.orDie);if(X.QITQODE_TUI_CONFIG){let W=X.QITQODE_TUI_CONFIG;yield*w.promise(()=>q($,W,O)).pipe(w.orDie),h.debug("loaded custom tui config",{path:W})}for(let W of V)yield*w.promise(()=>q($,W,O)).pipe(w.orDie);let Q=G(Z).filter((W)=>W.endsWith(".qitqode")||W===X.QITQODE_CONFIG_DIR);for(let W of Q){if(!W.endsWith(".qitqode")&&W!==X.QITQODE_CONFIG_DIR)continue;for(let Y of I(W,"tui"))yield*w.promise(()=>q($,Y,O)).pipe(w.orDie)}let B={...$.result.keybinds??{}};if(process.platform==="win32")B.terminal_suspend="none",B.input_undo??=G(["ctrl+z",...J.Keybinds.shape.input_undo.parse(void 0).split(",")]).join(",");return $.result.keybinds=J.Keybinds.parse(B),{config:$.result,dirs:$.result.plugin?.length?Q:[]}}),V0=L.effect(z,w.gen(function*(){let O=yield*a,Z=yield*u.Service,V=yield*x.Service,$=yield*A0({directory:O}),Q=yield*w.forEach($.dirs,(Y)=>i.install({fs:V,npm:Z,dir:Y}).pipe(w.forkScoped),{concurrency:"unbounded"}),B=w.fn("TuiConfig.get")(()=>w.succeed($.config)),W=w.fn("TuiConfig.waitForDependencies")(()=>w.forEach(Q,f.join,{concurrency:"unbounded"}).pipe(w.ignore(),w.asVoid));return z.of({get:B,waitForDependencies:W})}).pipe(w.withSpan("TuiConfig.layer"))),W0=V0.pipe(L.provide(u.defaultLayer),L.provide(x.defaultLayer)),{runPromise:$0}=d(z,W0);async function M0(){await $0((O)=>O.waitForDependencies())}async function R0(){return $0((O)=>O.get())}async function z0(O){let Z=await O0(O);if(!Z)return{};return C0(Z,O).catch((V)=>{return h.warn("failed to load tui config",{path:O,error:V}),{}})}async function C0(O,Z){return c.substitute({text:O,type:"path",path:Z,missing:"empty"}).then((V)=>E.jsonc(V,Z)).then((V)=>{if(!s(V))return{};return E.schema(Z0,N0(V),Z)}).then((V)=>U0(V,Z)).catch((V)=>{return h.warn("invalid tui config",{path:Z,error:V}),{}})}
2
+ import{en as E,fn as c,gn as M,hn as i}from"./chunk-q3h42a94.js";import{En as e,Fn as _0,Gn as I,Hn as O0,jn as g,ln as n,mn as k,pn as d,qn as u}from"./chunk-hqbbs9dm.js";import{On as r}from"./chunk-vcygx6hs.js";import{is as G,ns as y}from"./chunk-fr34mnyg.js";import{Es as s}from"./chunk-r5zy4za0.js";import{Ns as X,Ws as o}from"./chunk-tr6rdr6h.js";import{bt as x,ft as K,kt as T}from"./chunk-at22twxx.js";import{lt as j}from"./chunk-kgptyf7n.js";import{DE as L,TN as A,eH as w,mI as f,zB as v}from"./chunk-qnvsqnz5.js";import{uO as p}from"./chunk-r9w0thdk.js";var F={};p(F,{waitForDependencies:()=>M0,layer:()=>V0,get:()=>R0,defaultLayer:()=>W0,TuiConfig:()=>F,Service:()=>z,Info:()=>Z0});import l from"path";var J={};p(J,{Keybinds:()=>B0,ConfigKeybinds:()=>J});var _=(O,Z)=>A.String.pipe(A.optional,A.withDecodingDefault(w.succeed(O))).annotate({description:Z}),j0=process.platform==="win32"?"ctrl+z,ctrl+-,super+z":"ctrl+-,super+z",w0=A.Struct({leader:_("ctrl+x","Leader key for keybind combinations"),app_exit:_("ctrl+c,ctrl+d,<leader>q","Exit the application"),editor_open:_("<leader>e","Open external editor"),theme_list:_("<leader>t","List available themes"),sidebar_toggle:_("<leader>b","Toggle sidebar"),scrollbar_toggle:_("none","Toggle session scrollbar"),status_view:_("<leader>s","View status"),session_export:_("<leader>x","Export session to editor"),session_new:_("<leader>n","Create a new session"),session_list:_("<leader>l","List all sessions"),session_timeline:_("<leader>g","Show session timeline"),session_fork:_("none","Fork session from message"),session_rename:_("ctrl+r","Rename session"),session_delete:_("ctrl+d","Delete session"),stash_delete:_("ctrl+d","Delete stash entry"),model_provider_list:_("ctrl+a","Open provider list from model dialog"),model_favorite_toggle:_("ctrl+f","Toggle model favorite status"),session_share:_("none","Share current session"),session_unshare:_("none","Unshare current session"),session_interrupt:_("escape","Interrupt current session"),session_compact:_("<leader>c","Compact the session"),messages_page_up:_("pageup,ctrl+alt+b","Scroll messages up by one page"),messages_page_down:_("pagedown,ctrl+alt+f","Scroll messages down by one page"),messages_line_up:_("ctrl+alt+y","Scroll messages up by one line"),messages_line_down:_("ctrl+alt+e","Scroll messages down by one line"),messages_half_page_up:_("ctrl+alt+u","Scroll messages up by half page"),messages_half_page_down:_("ctrl+alt+d","Scroll messages down by half page"),messages_first:_("ctrl+g,home","Navigate to first message"),messages_last:_("ctrl+alt+g,end","Navigate to last message"),messages_next:_("none","Navigate to next message"),messages_previous:_("none","Navigate to previous message"),messages_last_user:_("none","Navigate to last user message"),messages_copy:_("<leader>y","Copy message"),messages_undo:_("<leader>u","Undo message"),messages_redo:_("<leader>r","Redo message"),messages_toggle_conceal:_("<leader>h","Toggle code block concealment in messages"),tool_details:_("none","Toggle tool details visibility"),model_list:_("<leader>m","List available models"),model_cycle_recent:_("f2","Next recently used model"),model_cycle_recent_reverse:_("shift+f2","Previous recently used model"),model_cycle_favorite:_("none","Next favorite model"),model_cycle_favorite_reverse:_("none","Previous favorite model"),command_list:_("ctrl+p","List available commands"),agent_list:_("<leader>a","List agents"),agent_cycle:_("ctrl+space","Next agent"),agent_cycle_reverse:_("none","Previous agent"),variant_cycle:_("ctrl+t","Cycle model variants"),variant_list:_("none","List model variants"),input_clear:_("ctrl+c","Clear input field"),input_paste:_("super+v,ctrl+v","Paste from clipboard"),input_submit:_("return","Submit input"),input_newline:_("shift+return,ctrl+return,alt+return,ctrl+j","Insert newline in input"),input_move_left:_("left,ctrl+b","Move cursor left in input"),input_move_right:_("right,ctrl+f","Move cursor right in input"),input_move_up:_("up","Move cursor up in input"),input_move_down:_("down","Move cursor down in input"),input_select_left:_("shift+left","Select left in input"),input_select_right:_("shift+right","Select right in input"),input_select_up:_("shift+up","Select up in input"),input_select_down:_("shift+down","Select down in input"),input_line_home:_("ctrl+a","Move to start of line in input"),input_line_end:_("ctrl+e","Move to end of line in input"),input_select_line_home:_("ctrl+shift+a","Select to start of line in input"),input_select_line_end:_("ctrl+shift+e","Select to end of line in input"),input_visual_line_home:_("alt+a","Move to start of visual line in input"),input_visual_line_end:_("alt+e","Move to end of visual line in input"),input_select_visual_line_home:_("alt+shift+a","Select to start of visual line in input"),input_select_visual_line_end:_("alt+shift+e","Select to end of visual line in input"),input_buffer_home:_("home","Move to start of buffer in input"),input_buffer_end:_("end","Move to end of buffer in input"),input_select_buffer_home:_("shift+home","Select to start of buffer in input"),input_select_buffer_end:_("shift+end","Select to end of buffer in input"),input_delete_line:_("ctrl+shift+d","Delete line in input"),input_delete_to_line_end:_("ctrl+k","Delete to end of line in input"),input_delete_to_line_start:_("ctrl+u","Delete to start of line in input"),input_backspace:_("backspace,shift+backspace","Backspace in input"),input_delete:_("ctrl+d,delete,shift+delete","Delete character in input"),input_undo:_(j0,"Undo in input"),input_redo:_("ctrl+.,super+shift+z","Redo in input"),input_word_forward:_("alt+f,alt+right,ctrl+right","Move word forward in input"),input_word_backward:_("alt+b,alt+left,ctrl+left","Move word backward in input"),input_select_word_forward:_("alt+shift+f,alt+shift+right","Select word forward in input"),input_select_word_backward:_("alt+shift+b,alt+shift+left","Select word backward in input"),input_delete_word_forward:_("alt+d,alt+delete,ctrl+delete","Delete word forward in input"),input_delete_word_backward:_("ctrl+w,ctrl+backspace,alt+backspace","Delete word backward in input"),history_previous:_("up","Previous history item"),history_next:_("down","Next history item"),session_child_first:_("<leader>down","Go to first child session"),session_child_cycle:_("<leader>right","Go to next child session"),session_child_cycle_reverse:_("<leader>left","Go to previous child session"),session_parent:_("<leader>up","Go to parent session"),session_main:_("<leader>escape","Back to the main conversation"),terminal_suspend:_("ctrl+z","Suspend terminal"),terminal_title_toggle:_("none","Toggle terminal title"),tips_toggle:_("<leader>h","Toggle tips on home screen"),plugin_manager:_("none","Open plugin manager dialog"),display_thinking:_("none","Toggle thinking blocks visibility")}).annotate({identifier:"KeybindsConfig"}),B0=r(w0);var K0=j.object(Object.fromEntries(Object.keys(J.Keybinds.shape).map((O)=>[O,j.string().optional()]))).strict(),R=j.object({scroll_speed:j.number().min(0.001).optional().describe("TUI scroll speed"),scroll_acceleration:j.object({enabled:j.boolean().describe("Enable scroll acceleration")}).optional().describe("Scroll acceleration settings"),diff_style:j.enum(["auto","stacked"]).optional().describe("Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column"),mouse:j.boolean().optional().describe("Enable or disable mouse capture (default: true on desktop, false on Android/Termux)"),accessible:j.boolean().optional().describe("Screen-reader friendly mode: linear main-screen rendering, no mouse capture, reduced motion, no sound (default: false)"),reduce_motion:j.boolean().optional().describe("Disable spinners and other animations, showing static text instead (default: false)"),sound:j.boolean().optional().describe("Enable or disable sound cues (default: true)"),announcements:j.enum(["quiet","normal","verbose"]).optional().describe("Verbosity of accessible-mode screen-reader announcements: 'quiet' announces only turn boundaries, errors, and stops; 'normal' adds tool-start lines; 'verbose' adds tool-completion lines (default: normal). Errors are always announced.")}),P=j.object({$schema:j.string().optional(),theme:j.string().optional(),keybinds:K0.optional(),plugin:M.Spec.zod.array().optional(),plugin_enabled:j.record(j.string(),j.boolean()).optional()}).extend(R.shape).strict();var D=o.create({service:"tui.migrate"}),X0="https://qitqode.com/tui.json",Y0=P.shape.theme.optional(),b=j.record(j.string(),j.unknown()).optional(),H0=j.object({scroll_speed:R.shape.scroll_speed.catch(void 0),scroll_acceleration:R.shape.scroll_acceleration.catch(void 0),diff_style:R.shape.diff_style.catch(void 0)}).strip();async function t(O){let Z=await G0(O);for(let V of Z){let $=await K.readText(V).catch((m)=>{D.warn("failed to read config for tui migration",{path:V,error:m});return});if(!$)continue;let Q=[],B=g($,Q,{allowTrailingComma:!0});if(Q.length||!B||typeof B!=="object"||Array.isArray(B))continue;let W=Y0.safeParse("theme"in B?B.theme:void 0),Y=b.safeParse("keybinds"in B?B.keybinds:void 0),N=b.safeParse("tui"in B?B.tui:void 0),H={theme:W.success?W.data:void 0,keybinds:Y.success?Y.data:void 0,tui:N.success?N.data:void 0},S=H.tui?J0(H.tui):void 0;if(H.theme===void 0&&H.keybinds===void 0&&!S)continue;let U=l.join(l.dirname(V),"tui.json");if(await K.exists(U))continue;let C={$schema:X0};if(H.theme!==void 0)C.theme=H.theme;if(H.keybinds!==void 0)C.keybinds=H.keybinds;if(S)Object.assign(C,S);if(!await K.write(U,JSON.stringify(C,null,2)).then(()=>!0).catch((m)=>{return D.warn("failed to write tui migration target",{from:V,to:U,error:m}),!1}))continue;if(!await D0(V,$)){D.warn("tui config migrated but source file was not stripped",{from:V,to:U});continue}D.info("migrated tui config",{from:V,to:U})}}function J0(O){let Z=H0.parse(O);if(Z.scroll_speed===void 0&&Z.diff_style===void 0&&Z.scroll_acceleration===void 0)return;return Z}async function D0(O,Z){let V=O+".tui-migration.bak";if(!(await K.exists(V)?!0:await K.write(V,Z).then(()=>!0).catch((W)=>{return D.warn("failed to backup source config during tui migration",{path:O,backup:V,error:W}),!1})))return!1;let B=["theme","keybinds","tui"].reduce((W,Y)=>{let N=n(W,[Y],void 0,{formattingOptions:{insertSpaces:!0,tabSize:2}});if(!N.length)return W;return k(W,N)},Z);return K.write(O,B).then(()=>{return D.info("stripped tui keys from server config",{path:O,backup:V}),!0}).catch((W)=>{return D.warn("failed to strip legacy tui keys from server config",{path:O,backup:V,error:W}),!1})}async function G0(O){let Z=[...I(T.Path.config,"qitqode"),...await K.findUp(["qitqode.json","qitqode.jsonc"],O.cwd,void 0,{rootFirst:!0})];for(let $ of G(O.directories))Z.push(...I($,"qitqode"));if(X.QITQODE_CONFIG)Z.push(X.QITQODE_CONFIG);return(await Promise.all(G(Z).map(async($)=>{return await K.exists($)?$:void 0}))).filter(($)=>!!$)}var a=v.Reference("CurrentWorkingDirectory",{defaultValue:()=>process.cwd()});var h=o.create({service:"tui.config"}),Z0=P;class z extends v.Service()("@qitqode/TuiConfig"){}function I0(O,Z){if(K.contains(Z.directory,O))return"local";return"global"}function N0(O){let Z={...O};if(!("tui"in Z))return Z;if(!s(Z.tui))return delete Z.tui,Z;let V=Z.tui;return delete Z.tui,{...V,...Z}}async function U0(O,Z){if(!O.plugin)return O;for(let V=0;V<O.plugin.length;V++)O.plugin[V]=await M.resolvePluginSpec(O.plugin[V],Z);return O}async function q(O,Z,V){let $=await z0(Z);if(O.result=y(O.result,$),!$.plugin?.length)return;let Q=I0(Z,V),B=M.deduplicatePluginOrigins([...O.result.plugin_origins??[],...$.plugin.map((W)=>({spec:W,scope:Q,source:Z}))]);O.result.plugin=B.map((W)=>W.spec),O.result.plugin_origins=B}var A0=w.fn("TuiConfig.loadState")(function*(O){let Z=yield*_0(O.directory);yield*w.promise(()=>t({directories:Z,cwd:O.directory}));let V=X.QITQODE_DISABLE_PROJECT_CONFIG?[]:yield*e("tui",O.directory),$={result:{}};for(let W of I(T.Path.config,"tui"))yield*w.promise(()=>q($,W,O)).pipe(w.orDie);if(X.QITQODE_TUI_CONFIG){let W=X.QITQODE_TUI_CONFIG;yield*w.promise(()=>q($,W,O)).pipe(w.orDie),h.debug("loaded custom tui config",{path:W})}for(let W of V)yield*w.promise(()=>q($,W,O)).pipe(w.orDie);let Q=G(Z).filter((W)=>W.endsWith(".qitqode")||W===X.QITQODE_CONFIG_DIR);for(let W of Q){if(!W.endsWith(".qitqode")&&W!==X.QITQODE_CONFIG_DIR)continue;for(let Y of I(W,"tui"))yield*w.promise(()=>q($,Y,O)).pipe(w.orDie)}let B={...$.result.keybinds??{}};if(process.platform==="win32")B.terminal_suspend="none",B.input_undo??=G(["ctrl+z",...J.Keybinds.shape.input_undo.parse(void 0).split(",")]).join(",");return $.result.keybinds=J.Keybinds.parse(B),{config:$.result,dirs:$.result.plugin?.length?Q:[]}}),V0=L.effect(z,w.gen(function*(){let O=yield*a,Z=yield*u.Service,V=yield*x.Service,$=yield*A0({directory:O}),Q=yield*w.forEach($.dirs,(Y)=>i.install({fs:V,npm:Z,dir:Y}).pipe(w.forkScoped),{concurrency:"unbounded"}),B=w.fn("TuiConfig.get")(()=>w.succeed($.config)),W=w.fn("TuiConfig.waitForDependencies")(()=>w.forEach(Q,f.join,{concurrency:"unbounded"}).pipe(w.ignore(),w.asVoid));return z.of({get:B,waitForDependencies:W})}).pipe(w.withSpan("TuiConfig.layer"))),W0=V0.pipe(L.provide(u.defaultLayer),L.provide(x.defaultLayer)),{runPromise:$0}=d(z,W0);async function M0(){await $0((O)=>O.waitForDependencies())}async function R0(){return $0((O)=>O.get())}async function z0(O){let Z=await O0(O);if(!Z)return{};return C0(Z,O).catch((V)=>{return h.warn("failed to load tui config",{path:O,error:V}),{}})}async function C0(O,Z){return c.substitute({text:O,type:"path",path:Z,missing:"empty"}).then((V)=>E.jsonc(V,Z)).then((V)=>{if(!s(V))return{};return E.schema(Z0,N0(V),Z)}).then((V)=>U0(V,Z)).catch((V)=>{return h.warn("invalid tui config",{path:Z,error:V}),{}})}
3
3
  export{Z0 as u,z as v,V0 as w,W0 as x,M0 as y,R0 as z,F as A};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Qd as m,Td as P,Ud as R,Vd as k,Wd as O,Yd as q,Zd as $,_d as I}from"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{ae as h}from"./chunk-5w76kdjr.js";import{dg as r}from"./chunk-eg3syjtv.js";import{Bh as L,qh as E}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Ej as N,Tk as x}from"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import{Nl as i}from"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as C,kt as j}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{sO as F}from"./chunk-r9w0thdk.js";import u from"path";import U from"fs/promises";var T=F(N(),1);import{EOL as S}from"os";var c=["bash","read","write","edit","glob","grep","webfetch","actor","task"],B=h({command:"create",describe:"create a new agent",builder:(o)=>o.option("path",{type:"string",describe:"directory path to generate the agent file"}).option("description",{type:"string",describe:"what the agent should do"}).option("mode",{type:"string",describe:"agent mode",choices:["all","primary","subagent"]}).option("tools",{type:"string",describe:`comma-separated list of tools to enable (default: all). Available: "${c.join(", ")}"`}).option("model",{type:"string",alias:["m"],describe:"model to use in the format of provider/model"}),async handler(o){await i.provide({directory:process.cwd(),async fn(){let{path:l,description:t,mode:s,tools:p}=o,d=l&&t&&s&&p!==void 0;if(!d)r.empty(),R("Create agent");let D=i.project,g;if(l)g=u.join(l,"agent");else{let e="global";if(D.vcs==="git"){let n=await $({message:"Location",options:[{label:"Current project",value:"project",hint:i.worktree},{label:"Global",value:"global",hint:j.Path.config}]});if(m(n))throw new r.CancelledError;e=n}g=u.join(e==="global"?j.Path.config:u.join(i.worktree,".qitqode"),"agent")}let b;if(t)b=t;else{let e=await I({message:"Description",placeholder:"What should this agent do?",validate:(n)=>n&&n.length>0?void 0:"Required"});if(m(e))throw new r.CancelledError;b=e}let w=q();w.start("Generating agent configuration...");let G=o.model?x.parseModel(o.model):void 0,f=await L.runPromise(E.Service.use((e)=>e.generate({description:b,model:G}))).catch((e)=>{if(w.stop(`LLM failed to generate agent: ${e.message}`,1),d)process.exit(1);throw new r.CancelledError});w.stop(`Agent ${f.identifier} generated`);let y;if(p!==void 0)y=p?p.split(",").map((e)=>e.trim()):c;else{let e=await O({message:"Select tools to enable (Space to toggle)",options:c.map((n)=>({label:n,value:n})),initialValues:c});if(m(e))throw new r.CancelledError;y=e}let v;if(s)v=s;else{let e=await $({message:"Agent mode",options:[{label:"All",value:"all",hint:"Can function in both primary and subagent roles"},{label:"Primary",value:"primary",hint:"Acts as a primary/main agent"},{label:"Subagent",value:"subagent",hint:"Can be used as a subagent by other agents"}],initialValue:"all"});if(m(e))throw new r.CancelledError;v=e}let A={};for(let e of c)if(!y.includes(e))A[e]=!1;let M={description:f.whenToUse,mode:v};if(Object.keys(A).length>0)M.tools=A;let V=T.default.stringify(f.systemPrompt,M),a=u.join(g,`${f.identifier}.md`);if(await U.mkdir(g,{recursive:!0}),await C.exists(a)){if(d)console.error(`Error: Agent file already exists: ${a}`),process.exit(1);throw P.error(`Agent file already exists: ${a}`),new r.CancelledError}if(await C.write(a,V),d)console.log(a);else P.success(`Agent created: ${a}`),k("Done")}})}}),J=h({command:"list",describe:"list all available agents",async handler(){await i.provide({directory:process.cwd(),async fn(){let l=(await L.runPromise(E.Service.use((t)=>t.list()))).sort((t,s)=>{if(t.native!==s.native)return t.native?-1:1;return t.name.localeCompare(s.name)});for(let t of l)process.stdout.write(`${t.name} (${t.mode})`+S),process.stdout.write(` ${JSON.stringify(t.permission,null,2)}`+S)}})}}),ne=h({command:"agent",describe:"manage agents",builder:(o)=>o.command(B).command(J).demandCommand(),async handler(){}});export{ne as AgentCommand};
2
+ import{Qd as m,Td as P,Ud as R,Vd as k,Wd as O,Yd as q,Zd as $,_d as I}from"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{ae as h}from"./chunk-5w76kdjr.js";import{dg as r}from"./chunk-eg3syjtv.js";import{Bh as L,qh as E}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Ej as N,Tk as x}from"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import{Nl as i}from"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as C,kt as j}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{sO as F}from"./chunk-r9w0thdk.js";import u from"path";import U from"fs/promises";var T=F(N(),1);import{EOL as S}from"os";var c=["bash","read","write","edit","glob","grep","webfetch","actor","task"],B=h({command:"create",describe:"create a new agent",builder:(o)=>o.option("path",{type:"string",describe:"directory path to generate the agent file"}).option("description",{type:"string",describe:"what the agent should do"}).option("mode",{type:"string",describe:"agent mode",choices:["all","primary","subagent"]}).option("tools",{type:"string",describe:`comma-separated list of tools to enable (default: all). Available: "${c.join(", ")}"`}).option("model",{type:"string",alias:["m"],describe:"model to use in the format of provider/model"}),async handler(o){await i.provide({directory:process.cwd(),async fn(){let{path:l,description:t,mode:s,tools:p}=o,d=l&&t&&s&&p!==void 0;if(!d)r.empty(),R("Create agent");let D=i.project,g;if(l)g=u.join(l,"agent");else{let e="global";if(D.vcs==="git"){let n=await $({message:"Location",options:[{label:"Current project",value:"project",hint:i.worktree},{label:"Global",value:"global",hint:j.Path.config}]});if(m(n))throw new r.CancelledError;e=n}g=u.join(e==="global"?j.Path.config:u.join(i.worktree,".qitqode"),"agent")}let b;if(t)b=t;else{let e=await I({message:"Description",placeholder:"What should this agent do?",validate:(n)=>n&&n.length>0?void 0:"Required"});if(m(e))throw new r.CancelledError;b=e}let w=q();w.start("Generating agent configuration...");let G=o.model?x.parseModel(o.model):void 0,f=await L.runPromise(E.Service.use((e)=>e.generate({description:b,model:G}))).catch((e)=>{if(w.stop(`LLM failed to generate agent: ${e.message}`,1),d)process.exit(1);throw new r.CancelledError});w.stop(`Agent ${f.identifier} generated`);let y;if(p!==void 0)y=p?p.split(",").map((e)=>e.trim()):c;else{let e=await O({message:"Select tools to enable (Space to toggle)",options:c.map((n)=>({label:n,value:n})),initialValues:c});if(m(e))throw new r.CancelledError;y=e}let v;if(s)v=s;else{let e=await $({message:"Agent mode",options:[{label:"All",value:"all",hint:"Can function in both primary and subagent roles"},{label:"Primary",value:"primary",hint:"Acts as a primary/main agent"},{label:"Subagent",value:"subagent",hint:"Can be used as a subagent by other agents"}],initialValue:"all"});if(m(e))throw new r.CancelledError;v=e}let A={};for(let e of c)if(!y.includes(e))A[e]=!1;let M={description:f.whenToUse,mode:v};if(Object.keys(A).length>0)M.tools=A;let V=T.default.stringify(f.systemPrompt,M),a=u.join(g,`${f.identifier}.md`);if(await U.mkdir(g,{recursive:!0}),await C.exists(a)){if(d)console.error(`Error: Agent file already exists: ${a}`),process.exit(1);throw P.error(`Agent file already exists: ${a}`),new r.CancelledError}if(await C.write(a,V),d)console.log(a);else P.success(`Agent created: ${a}`),k("Done")}})}}),J=h({command:"list",describe:"list all available agents",async handler(){await i.provide({directory:process.cwd(),async fn(){let l=(await L.runPromise(E.Service.use((t)=>t.list()))).sort((t,s)=>{if(t.native!==s.native)return t.native?-1:1;return t.name.localeCompare(s.name)});for(let t of l)process.stdout.write(`${t.name} (${t.mode})`+S),process.stdout.write(` ${JSON.stringify(t.permission,null,2)}`+S)}})}}),ne=h({command:"agent",describe:"manage agents",builder:(o)=>o.command(B).command(J).demandCommand(),async handler(){}});export{ne as AgentCommand};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Br as h,Cr as i,Dr as j,Er as k,Fr as l,Hr as m,Ir as n,xr as e,yr as f,zr as g}from"./chunk-t5xxs5kp.js";import{Nr as d}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import{ys as c}from"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import{Ws as b}from"./chunk-tr6rdr6h.js";import{ft as a}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-r9w0thdk.js";export{h as getEnvInfo,c as Wildcard,n as Token,m as Rpc,d as Process,b as Log,l as Lock,k as Locale,j as LocalContext,i as Keybind,a as Filesystem,g as EffectUtil,f as Color,e as Archive};
2
+ import{Br as h,Cr as i,Dr as j,Er as k,Fr as l,Hr as m,Ir as n,xr as e,yr as f,zr as g}from"./chunk-xy0gnpen.js";import{Nr as d}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import{ys as c}from"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import{Ws as b}from"./chunk-tr6rdr6h.js";import{ft as a}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-r9w0thdk.js";export{h as getEnvInfo,c as Wildcard,n as Token,m as Rpc,d as Process,b as Log,l as Lock,k as Locale,j as LocalContext,i as Keybind,a as Filesystem,g as EffectUtil,f as Color,e as Archive};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{h as R}from"./chunk-5gsdnejs.js";import{ae as g}from"./chunk-5w76kdjr.js";import{dg as z}from"./chunk-eg3syjtv.js";import"./chunk-36xm6mgm.js";import{Bh as F}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import{Ao as E,Go as C,yo as n,zo as m}from"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import{cs as h}from"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ht as A,kt as b}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import{eH as K}from"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{xO as B,yO as T}from"./chunk-r9w0thdk.js";import L from"fs/promises";import y from"path";function p(J){return K.promise(async()=>{try{return{ok:!0,value:await J()}}catch(O){return{ok:!1,err:O}}})}var H=["free","fast","economical","default","power","orchestrated"],o="default",N=y.join(b.Path.data,"batches.json"),i=100;function u(J){if(!Array.isArray(J))return[];let O=[];for(let V of J){if(!V||typeof V!=="object"||Array.isArray(V))continue;let Q=V,W=typeof Q.batchId==="string"?Q.batchId.trim():"";if(!W)continue;let $=Q.tier;if(typeof $!=="string"||!H.includes($))continue;O.push({batchId:W,tier:$,submittedAt:typeof Q.submittedAt==="string"?Q.submittedAt:"",requestCount:typeof Q.requestCount==="number"?Q.requestCount:void 0})}return O}async function l(){try{return u(JSON.parse(await L.readFile(N,"utf8")))}catch{return[]}}async function d(J){try{let O=[];try{const G=B(O,await A.acquire(`batch-index:${N}`),1);let M=(await l()).filter((X)=>X.batchId!==J.batchId);let S=[J,...M].slice(0,i);await L.mkdir(y.dirname(N),{recursive:!0});let P=`${N}.${process.pid}.tmp`;await L.writeFile(P,JSON.stringify(S,null,2)+`
2
+ import{h as R}from"./chunk-f3zmdfqa.js";import{ae as g}from"./chunk-5w76kdjr.js";import{dg as z}from"./chunk-eg3syjtv.js";import"./chunk-pe2xdkez.js";import{Bh as F}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import{Ao as E,Go as C,yo as n,zo as m}from"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import{cs as h}from"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ht as A,kt as b}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import{eH as K}from"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{xO as B,yO as T}from"./chunk-r9w0thdk.js";import L from"fs/promises";import y from"path";function p(J){return K.promise(async()=>{try{return{ok:!0,value:await J()}}catch(O){return{ok:!1,err:O}}})}var H=["free","fast","economical","default","power","orchestrated"],o="default",N=y.join(b.Path.data,"batches.json"),i=100;function u(J){if(!Array.isArray(J))return[];let O=[];for(let V of J){if(!V||typeof V!=="object"||Array.isArray(V))continue;let Q=V,W=typeof Q.batchId==="string"?Q.batchId.trim():"";if(!W)continue;let $=Q.tier;if(typeof $!=="string"||!H.includes($))continue;O.push({batchId:W,tier:$,submittedAt:typeof Q.submittedAt==="string"?Q.submittedAt:"",requestCount:typeof Q.requestCount==="number"?Q.requestCount:void 0})}return O}async function l(){try{return u(JSON.parse(await L.readFile(N,"utf8")))}catch{return[]}}async function d(J){try{let O=[];try{const G=B(O,await A.acquire(`batch-index:${N}`),1);let M=(await l()).filter((X)=>X.batchId!==J.batchId);let S=[J,...M].slice(0,i);await L.mkdir(y.dirname(N),{recursive:!0});let P=`${N}.${process.pid}.tmp`;await L.writeFile(P,JSON.stringify(S,null,2)+`
3
3
  `,"utf8");await L.rename(P,N).catch(async(X)=>{throw await L.rm(P,{force:!0}).catch(()=>{}),X})}catch(V){var Q=V,W=1}finally{var $=T(O,Q,W);$&&await $}}catch{}}function f(J){if(J instanceof n)return"Your QitQode sign-in has ended and couldn't be renewed automatically. Run `qitqode auth login` to sign in again.";if(J instanceof m)return J.message+h.copy().insufficientBalanceCliSuffix;if(J instanceof E)return J.message;return"Request failed: "+(J instanceof Error?J.message:String(J))}var U=(J,O=o)=>K.gen(function*(){if((yield*R())==="revoked")return;let V=yield*K.promise(async()=>{try{return{ok:!0,content:await L.readFile(y.resolve(J),"utf8")}}catch(v){let Y=v;return{ok:!1,message:`Cannot read '${J}': ${Y.message??String(Y)}`}}});if(!V.ok){yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+V.message+z.Style.TEXT_NORMAL));return}let Q=[],W=V.content.split(`
4
4
  `);for(let v=0;v<W.length;v++){let Y=W[v];if(!Y||!Y.trim())continue;let Z=v+1,j;try{j=JSON.parse(Y)}catch{yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+`Error: line ${Z} is not valid JSON.`+z.Style.TEXT_NORMAL));return}if(typeof j!=="object"||j===null||Array.isArray(j)){yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+`Error: line ${Z} must be a JSON object (got ${j===null?"null":Array.isArray(j)?"array":typeof j}).`+z.Style.TEXT_NORMAL));return}let x=j;if(typeof x.prompt!=="string"||!x.prompt.trim()){yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+`Error: line ${Z} must have a non-empty string 'prompt' field.`+z.Style.TEXT_NORMAL));return}if(x.options!==void 0){yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+`Error: line ${Z} has an 'options' field, which batch jobs cannot honour \u2014 `+"per-request settings are not part of the batch API. Remove it, or run these prompts individually with `qitqode run`."+z.Style.TEXT_NORMAL));return}Q.push(x.prompt)}if(Q.length===0){yield*K.sync(()=>z.println(z.Style.TEXT_WARNING+"No prompts found in the file."+z.Style.TEXT_NORMAL));return}yield*K.sync(()=>z.println(z.Style.TEXT_DIM+`Submitting ${Q.length} request${Q.length===1?"":"s"}\u2026`+z.Style.TEXT_NORMAL));let $=yield*p(()=>C.resolveSubmitBatch({tier:O,requests:Q}));if(!$.ok){yield*K.sync(()=>z.println(z.Style.TEXT_DANGER+f($.err)+z.Style.TEXT_NORMAL));return}let{batchId:G,status:M,createdAt:S,totalCount:P,requestCount:X,supported:w}=$.value;if(w===!1||!G){yield*K.sync(()=>{z.println(z.Style.TEXT_WARNING+`The ${O} tier does not run batch jobs, so nothing was submitted.`+z.Style.TEXT_NORMAL),z.println(z.Style.TEXT_DIM+"Batching is a capability of the provider behind a tier. Try another tier with `qitqode batch submit <file> --tier <name>`."+z.Style.TEXT_NORMAL)}),process.exitCode=1;return}let q=X??P;yield*K.promise(()=>d({batchId:G,tier:O,submittedAt:new Date().toISOString(),...q!==void 0?{requestCount:q}:{}})),process.stdout.write(G+`
5
5
  `),yield*K.sync(()=>{if(z.println(z.Style.TEXT_SUCCESS+"Batch submitted."+z.Style.TEXT_NORMAL),z.println(" ID: "+z.Style.TEXT_HIGHLIGHT_BOLD+G+z.Style.TEXT_NORMAL),z.println(" Tier: "+O),M)z.println(" Status: "+M);if(q!==void 0)z.println(" Requests: "+q);if(S)z.println(" Created: "+z.Style.TEXT_DIM+new Date(S).toLocaleString()+z.Style.TEXT_NORMAL);z.println(`
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Ch as H}from"./chunk-w46g7kdq.js";import{Fo as T,ko as k,lo as X,oo as O,po as b,qo as F,to as h,uo as C}from"./chunk-kn8w69g9.js";import w from"http";var B="/callback",U=[51737,51738],K=new Set;function _(f){return f.replace(/[&<>\"']/g,(y)=>{switch(y){case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;";case'"':return"&quot;";default:return"&#39;"}})}function z(f){return`http://127.0.0.1:${f}${B}`}async function S(f){return new Promise((y,N)=>{let J=w.createServer();J.listen(f,"127.0.0.1",()=>{J.close(()=>y(f))}),J.on("error",N)})}async function E(){for(let f of U){if(K.has(f))continue;K.add(f);try{return await S(f)}catch{K.delete(f)}}throw new X(`Could not bind to any loopback port (tried ${U.join(", ")}). Free one of those ports and retry.`)}function R(f,y,N,J){return new Promise((Q,x)=>{let V=()=>K.delete(f),m=w.createServer(($,Y)=>{try{let Z=new URL($.url??"/",`http://localhost:${f}`);if(Z.pathname!==B){Y.writeHead(404),Y.end();return}let W=Z.searchParams.get("code"),D=Z.searchParams.get("state"),M=Z.searchParams.get("error"),q=Z.searchParams.get("error_description");if(M){let L=`${_(M)}${q?": "+_(q):""}`;Y.writeHead(200,{"Content-Type":"text/html"}),Y.end(`<html><body style="font-family:sans-serif;padding:2rem"><h2>Authorization failed</h2><p>${L}</p><p>You can close this tab.</p></body></html>`),m.close(),x(new X(`Authorization error: ${M}${q?" \u2014 "+q:""}`));return}if(!W||D!==y){Y.writeHead(400),Y.end("Invalid request");return}Y.writeHead(200,{"Content-Type":"text/html"}),Y.end('<html><body style="font-family:sans-serif;padding:2rem"><h2>Signed in! You can close this tab.</h2><p>Return to your terminal to continue.</p></body></html>'),m.close(),Q({code:W})}catch(Z){m.close(),x(Z)}});if(N?.aborted){V(),x(new X("Login cancelled"));return}let G=()=>{V(),m.close(()=>x(new X("Login cancelled")))};if(N?.addEventListener("abort",G,{once:!0}),N?.aborted){G();return}m.listen(f,"127.0.0.1",()=>{V(),J?.()}),m.on("error",($)=>{V(),x($)})})}function I(f,y){return new Promise((N,J)=>{if(y?.aborted){J(new X("Login cancelled"));return}let Q,x=()=>{clearTimeout(Q),y?.removeEventListener("abort",x),J(new X("Login cancelled"))};if(Q=setTimeout(()=>{y?.removeEventListener("abort",x),N()},f),y?.addEventListener("abort",x,{once:!0}),y?.aborted)x()})}function j(f,y=300000){if(!f)return!1;return Date.now()>=f-y}async function A(f){if(f.method==="api-key")return T({});let{issuer:y}=await k();return T({issuer:y,accessToken:f.key})}var d=300000;async function P(){let{issuer:f,clientId:y}=await k(),{verifier:N,challenge:J,state:Q}=O(),x=await E(),V=z(x),m=b({issuer:f,clientId:y,redirectUri:V,challenge:J,state:Q});return{issuer:f,clientId:y,verifier:N,port:x,redirectUri:V,authorizeStr:m,state:Q}}async function p(f){let{issuer:y,clientId:N}=await k(),{deviceCode:J,info:Q,intervalMs:x}=await h({issuer:y,clientId:N,signal:f.signal});if(f.onCode(Q),f.tryOpen){let m=Q.verificationUriComplete??Q.verificationUri;H(m)}let V=x;while(Date.now()<Q.expiresAt){await I(V,f.signal);let m=await C({issuer:y,clientId:N,deviceCode:J,currentIntervalMs:V,signal:f.signal});if(m.kind==="success")return m.profile;V=m.intervalMs}throw new X("The sign-in code expired before it was approved. Try again.")}async function g(){let{issuer:f,clientId:y,verifier:N,port:J,redirectUri:Q,authorizeStr:x,state:V}=await P();process.stdout.write(`
2
+ import{Ch as H}from"./chunk-w46g7kdq.js";import{Fo as T,ko as k,lo as X,oo as O,po as b,qo as F,to as h,uo as C}from"./chunk-cfhfc86j.js";import w from"http";var B="/callback",U=[51737,51738],K=new Set;function _(f){return f.replace(/[&<>\"']/g,(y)=>{switch(y){case"&":return"&amp;";case"<":return"&lt;";case">":return"&gt;";case'"':return"&quot;";default:return"&#39;"}})}function z(f){return`http://127.0.0.1:${f}${B}`}async function S(f){return new Promise((y,N)=>{let J=w.createServer();J.listen(f,"127.0.0.1",()=>{J.close(()=>y(f))}),J.on("error",N)})}async function E(){for(let f of U){if(K.has(f))continue;K.add(f);try{return await S(f)}catch{K.delete(f)}}throw new X(`Could not bind to any loopback port (tried ${U.join(", ")}). Free one of those ports and retry.`)}function R(f,y,N,J){return new Promise((Q,x)=>{let V=()=>K.delete(f),m=w.createServer(($,Y)=>{try{let Z=new URL($.url??"/",`http://localhost:${f}`);if(Z.pathname!==B){Y.writeHead(404),Y.end();return}let W=Z.searchParams.get("code"),D=Z.searchParams.get("state"),M=Z.searchParams.get("error"),q=Z.searchParams.get("error_description");if(M){let L=`${_(M)}${q?": "+_(q):""}`;Y.writeHead(200,{"Content-Type":"text/html"}),Y.end(`<html><body style="font-family:sans-serif;padding:2rem"><h2>Authorization failed</h2><p>${L}</p><p>You can close this tab.</p></body></html>`),m.close(),x(new X(`Authorization error: ${M}${q?" \u2014 "+q:""}`));return}if(!W||D!==y){Y.writeHead(400),Y.end("Invalid request");return}Y.writeHead(200,{"Content-Type":"text/html"}),Y.end('<html><body style="font-family:sans-serif;padding:2rem"><h2>Signed in! You can close this tab.</h2><p>Return to your terminal to continue.</p></body></html>'),m.close(),Q({code:W})}catch(Z){m.close(),x(Z)}});if(N?.aborted){V(),x(new X("Login cancelled"));return}let G=()=>{V(),m.close(()=>x(new X("Login cancelled")))};if(N?.addEventListener("abort",G,{once:!0}),N?.aborted){G();return}m.listen(f,"127.0.0.1",()=>{V(),J?.()}),m.on("error",($)=>{V(),x($)})})}function I(f,y){return new Promise((N,J)=>{if(y?.aborted){J(new X("Login cancelled"));return}let Q,x=()=>{clearTimeout(Q),y?.removeEventListener("abort",x),J(new X("Login cancelled"))};if(Q=setTimeout(()=>{y?.removeEventListener("abort",x),N()},f),y?.addEventListener("abort",x,{once:!0}),y?.aborted)x()})}function j(f,y=300000){if(!f)return!1;return Date.now()>=f-y}async function A(f){if(f.method==="api-key")return T({});let{issuer:y}=await k();return T({issuer:y,accessToken:f.key})}var d=300000;async function P(){let{issuer:f,clientId:y}=await k(),{verifier:N,challenge:J,state:Q}=O(),x=await E(),V=z(x),m=b({issuer:f,clientId:y,redirectUri:V,challenge:J,state:Q});return{issuer:f,clientId:y,verifier:N,port:x,redirectUri:V,authorizeStr:m,state:Q}}async function p(f){let{issuer:y,clientId:N}=await k(),{deviceCode:J,info:Q,intervalMs:x}=await h({issuer:y,clientId:N,signal:f.signal});if(f.onCode(Q),f.tryOpen){let m=Q.verificationUriComplete??Q.verificationUri;H(m)}let V=x;while(Date.now()<Q.expiresAt){await I(V,f.signal);let m=await C({issuer:y,clientId:N,deviceCode:J,currentIntervalMs:V,signal:f.signal});if(m.kind==="success")return m.profile;V=m.intervalMs}throw new X("The sign-in code expired before it was approved. Try again.")}async function g(){let{issuer:f,clientId:y,verifier:N,port:J,redirectUri:Q,authorizeStr:x,state:V}=await P();process.stdout.write(`
3
3
  `),process.stdout.write(` Opening Forgewise sign-in in your browser...
4
4
  `),process.stdout.write(" Sign-in URL: "+x+`
5
5
  `),process.stdout.write(`
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{ae as q}from"./chunk-5w76kdjr.js";import{dg as v}from"./chunk-eg3syjtv.js";import{Bh as S}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import{El as Q,Nl as H}from"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import{Nr as K}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";var P=q({command:"pr <number>",describe:"fetch and checkout a GitHub PR branch, then run qitqode",builder:(Y)=>Y.positional("number",{type:"number",describe:"PR number to checkout",demandOption:!0}),async handler(Y){await H.provide({directory:process.cwd(),async fn(){if(H.project.vcs!=="git")v.error("Could not find git repository. Please run this command from a git repository."),process.exit(1);let J=Y.number,Z=`pr/${J}`;if(v.println(`Fetching and checking out PR #${J}...`),(await K.run(["gh","pr","checkout",`${J}`,"--branch",Z,"--force"],{nothrow:!0})).code!==0)v.error(`Failed to checkout PR #${J}. Make sure you have gh CLI installed and authenticated.`),process.exit(1);let _=await K.text(["gh","pr","view",`${J}`,"--json","headRepository,headRepositoryOwner,isCrossRepository,headRefName,body"],{nothrow:!0}),V;if(_.code===0){let j=_.text;if(j.trim()){let z=JSON.parse(j);if(z&&z.isCrossRepository&&z.headRepository&&z.headRepositoryOwner){let L=z.headRepositoryOwner.login,W=z.headRepository.name,C=L;if(!(await S.runPromise(Q.Service.use((F)=>F.run(["remote"],{cwd:H.worktree}))).then((F)=>F.text().trim())).split(`
2
+ import{ae as q}from"./chunk-5w76kdjr.js";import{dg as v}from"./chunk-eg3syjtv.js";import{Bh as S}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import{El as Q,Nl as H}from"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import{Nr as K}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";var P=q({command:"pr <number>",describe:"fetch and checkout a GitHub PR branch, then run qitqode",builder:(Y)=>Y.positional("number",{type:"number",describe:"PR number to checkout",demandOption:!0}),async handler(Y){await H.provide({directory:process.cwd(),async fn(){if(H.project.vcs!=="git")v.error("Could not find git repository. Please run this command from a git repository."),process.exit(1);let J=Y.number,Z=`pr/${J}`;if(v.println(`Fetching and checking out PR #${J}...`),(await K.run(["gh","pr","checkout",`${J}`,"--branch",Z,"--force"],{nothrow:!0})).code!==0)v.error(`Failed to checkout PR #${J}. Make sure you have gh CLI installed and authenticated.`),process.exit(1);let _=await K.text(["gh","pr","view",`${J}`,"--json","headRepository,headRepositoryOwner,isCrossRepository,headRefName,body"],{nothrow:!0}),V;if(_.code===0){let j=_.text;if(j.trim()){let z=JSON.parse(j);if(z&&z.isCrossRepository&&z.headRepository&&z.headRepositoryOwner){let L=z.headRepositoryOwner.login,W=z.headRepository.name,C=L;if(!(await S.runPromise(Q.Service.use((F)=>F.run(["remote"],{cwd:H.worktree}))).then((F)=>F.text().trim())).split(`
3
3
  `).includes(C))await S.runPromise(Q.Service.use((F)=>F.run(["remote","add",C,`https://github.com/${L}/${W}.git`],{cwd:H.worktree}))),v.println(`Added fork remote: ${C}`);let X=z.headRefName;await S.runPromise(Q.Service.use((F)=>F.run(["branch",`--set-upstream-to=${C}/${X}`,Z],{cwd:H.worktree})))}if(z&&z.body){let L=z.body.match(/https:\/\/opncd\.ai\/s\/([a-zA-Z0-9_-]+)/);if(L){let W=L[0];v.println(`Found qitqode session: ${W}`),v.println("Importing session...");let C=await K.text(["qitqode","import",W],{nothrow:!0});if(C.code===0){let X=C.text.trim().match(/Imported session: ([a-zA-Z0-9_-]+)/);if(X)V=X[1],v.println(`Session imported: ${V}`)}}}}}v.println(`Successfully checked out PR #${J} as branch '${Z}'`),v.println(),v.println("Starting qitqode..."),v.println();let D=V?["-s",V]:[],$=await K.spawn(["qitqode",...D],{stdin:"inherit",stdout:"inherit",stderr:"inherit",cwd:process.cwd()}).exited;if($!==0)throw Error(`qitqode exited with code ${$}`)}})}});export{P as PrCommand};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Cg as i,Dg as j,Eg as k,Fg as l,Gg as m,Hg as n}from"./chunk-36xm6mgm.js";import"./chunk-w46g7kdq.js";import{io as a,jo as b,ko as c,lo as d,mo as e,no as f,ro as g,so as h}from"./chunk-kn8w69g9.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-r9w0thdk.js";export{f as resolveDevicePoll,h as refreshAccessToken,g as probeToken,l as loginDevice,n as loginBrowser,m as login,b as isReplitEnv,j as isNearExpiry,c as getConfig,i as getCallbackUri,k as fetchQreditsBalance,a as checkoutApiKey,d as ForgewiseError,e as DeviceFlowUnsupportedError};
2
+ import{Cg as i,Dg as j,Eg as k,Fg as l,Gg as m,Hg as n}from"./chunk-pe2xdkez.js";import"./chunk-w46g7kdq.js";import{io as a,jo as b,ko as c,lo as d,mo as e,no as f,ro as g,so as h}from"./chunk-cfhfc86j.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-r9w0thdk.js";export{f as resolveDevicePoll,h as refreshAccessToken,g as probeToken,l as loginDevice,n as loginBrowser,m as login,b as isReplitEnv,j as isNearExpiry,c as getConfig,i as getCallbackUri,k as fetchQreditsBalance,a as checkoutApiKey,d as ForgewiseError,e as DeviceFlowUnsupportedError};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{jn as D,kn as m,nn as R,on as X,sn as v,un as x,vn as S}from"./chunk-nw3e93y8.js";import{Kn as A,On as L}from"./chunk-vcygx6hs.js";import{Es as U}from"./chunk-r5zy4za0.js";import{at as P,ft as F}from"./chunk-at22twxx.js";import{SD as s,TN as B,eH as k}from"./chunk-qnvsqnz5.js";import{uO as E}from"./chunk-r9w0thdk.js";var V={};E(V,{schema:()=>c,jsonc:()=>g,ConfigParse:()=>V});function g($,T){let J=[],j=D($,J,{allowTrailingComma:!0});if(J.length){let C=$.split(`
2
+ import{jn as D,kn as m,nn as R,on as X,sn as v,un as x,vn as S}from"./chunk-hqbbs9dm.js";import{Kn as A,On as L}from"./chunk-vcygx6hs.js";import{Es as U}from"./chunk-r5zy4za0.js";import{at as P,ft as F}from"./chunk-at22twxx.js";import{SD as s,TN as B,eH as k}from"./chunk-qnvsqnz5.js";import{uO as E}from"./chunk-r9w0thdk.js";var V={};E(V,{schema:()=>c,jsonc:()=>g,ConfigParse:()=>V});function g($,T){let J=[],j=D($,J,{allowTrailingComma:!0});if(J.length){let C=$.split(`
3
3
  `),y=J.map((H)=>{let I=$.substring(0,H.offset).split(`
4
4
  `),Q=I.length,Z=I[I.length-1].length+1,K=C[Q-1],z=`${m(H.error)} at line ${Q}, column ${Z}`;if(!K)return z;return`${z}
5
5
  Line ${Q}: ${K}
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Eq as z,Hq as B}from"./chunk-rn043d0r.js";import{Dr as D}from"./chunk-t5xxs5kp.js";import{Py as r}from"./chunk-55fcmswd.js";import{DE as R,eH as W,zB as x}from"./chunk-qnvsqnz5.js";var w=x.Reference("~qitqode/InstanceRef",{defaultValue:()=>{return}}),C=x.Reference("~qitqode/WorkspaceRef",{defaultValue:()=>{return}});var V=D.create("instance"),y={async provide(p){return V.provide({workspaceID:p.workspaceID},()=>p.fn())},restore(p,o){return V.provide({workspaceID:p},o)},get workspaceID(){try{return V.use().workspaceID}catch{return}}};var j;function U(p){j=p}function P(){if(!j)throw new D.NotFound("instance");return j()}function H(p,o){if(!o.instance&&!o.workspace)return p;if(!o.instance)return p.pipe(W.provideService(C,o.workspace));if(!o.workspace)return p.pipe(W.provideService(w,o.instance));return p.pipe(W.provideService(w,o.instance),W.provideService(C,o.workspace))}function d(p){try{return H(p,{instance:P(),workspace:y.workspaceID})}catch(o){if(!(o instanceof D.NotFound))throw o}return p}function F(p,o){let G,I=()=>G??=r.make(R.provideMerge(o,z),{memoMap:B});return{runSync:(k)=>I().runSync(d(p.use(k))),runPromiseExit:(k,q)=>I().runPromiseExit(d(p.use(k)),q),runPromise:(k,q)=>I().runPromise(d(p.use(k)),q),runFork:(k)=>I().runFork(d(p.use(k))),runCallback:(k)=>I().runCallback(d(p.use(k)))}}
2
+ import{Eq as z,Hq as B}from"./chunk-5df5aja0.js";import{Dr as D}from"./chunk-xy0gnpen.js";import{Py as r}from"./chunk-55fcmswd.js";import{DE as R,eH as W,zB as x}from"./chunk-qnvsqnz5.js";var w=x.Reference("~qitqode/InstanceRef",{defaultValue:()=>{return}}),C=x.Reference("~qitqode/WorkspaceRef",{defaultValue:()=>{return}});var V=D.create("instance"),y={async provide(p){return V.provide({workspaceID:p.workspaceID},()=>p.fn())},restore(p,o){return V.provide({workspaceID:p},o)},get workspaceID(){try{return V.use().workspaceID}catch{return}}};var j;function U(p){j=p}function P(){if(!j)throw new D.NotFound("instance");return j()}function H(p,o){if(!o.instance&&!o.workspace)return p;if(!o.instance)return p.pipe(W.provideService(C,o.workspace));if(!o.workspace)return p.pipe(W.provideService(w,o.instance));return p.pipe(W.provideService(w,o.instance),W.provideService(C,o.workspace))}function d(p){try{return H(p,{instance:P(),workspace:y.workspaceID})}catch(o){if(!(o instanceof D.NotFound))throw o}return p}function F(p,o){let G,I=()=>G??=r.make(R.provideMerge(o,z),{memoMap:B});return{runSync:(k)=>I().runSync(d(p.use(k))),runPromiseExit:(k,q)=>I().runPromiseExit(d(p.use(k)),q),runPromise:(k,q)=>I().runPromise(d(p.use(k)),q),runFork:(k)=>I().runFork(d(p.use(k))),runCallback:(k)=>I().runCallback(d(p.use(k)))}}
3
3
  export{w as vq,C as wq,y as xq,U as yq,H as zq,d as Aq,F as Bq};
@@ -1,3 +1,3 @@
1
1
  // @bun
2
- import{Eo as z}from"./chunk-kn8w69g9.js";class B extends Error{cause;constructor(q,x){super(q);this.name="QreditChargeError",this.cause=x}}async function E(q){return z(q)}function F(q){if(q===void 0)return"\u2014";if(q===0)return"0";let x=q<0?"-":"",j=Math.abs(q);if(j<0.001)return x+j.toFixed(6);if(j<0.01)return x+j.toFixed(4);if(j<0.1)return x+j.toFixed(3);if(j<1)return x+j.toFixed(2);return x+(Number.isInteger(j)?String(j):j.toFixed(2))}
2
+ import{Eo as z}from"./chunk-cfhfc86j.js";class B extends Error{cause;constructor(q,x){super(q);this.name="QreditChargeError",this.cause=x}}async function E(q){return z(q)}function F(q){if(q===void 0)return"\u2014";if(q===0)return"0";let x=q<0?"-":"",j=Math.abs(q);if(j<0.001)return x+j.toFixed(6);if(j<0.01)return x+j.toFixed(4);if(j<0.1)return x+j.toFixed(3);if(j<1)return x+j.toFixed(2);return x+(Number.isInteger(j)?String(j):j.toFixed(2))}
3
3
  export{B as F,E as G,F as H};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Pd as d}from"./chunk-2nv1scj9.js";import{ae as f}from"./chunk-5w76kdjr.js";import{dg as e}from"./chunk-eg3syjtv.js";import{Bh as l}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Mj as m,cl as u}from"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";var v=f({command:"usage [sessionID]",describe:"show per-turn token/cost breakdown for a session (debug/verification tool)",builder:(o)=>{return o.positional("sessionID",{describe:"session ID to inspect (default: most recently updated session)",type:"string"}).option("format",{describe:"output format",type:"string",choices:["table","json"],default:"table"}).option("limit",{describe:"number of most recent turns to show (default: all)",type:"number"})},handler:async(o)=>{await d(process.cwd(),async()=>{let a=o.sessionID?m.make(o.sessionID):[...u.list({roots:!1,limit:1})][0]?.id;if(!a)e.error("No sessions found"),process.exit(1);let p=(await l.runPromise(u.Service.use((s)=>s.messages({sessionID:a,agentID:"*"})))).filter((s)=>s.info.role==="assistant").map((s)=>{let t=s.info,c=s.parts.filter((n)=>n.type==="step-finish");return{messageID:t.id,provider:t.providerID,model:t.modelID,finish:t.finish,cost:t.cost??0,tokens:t.tokens??{input:0,output:0,reasoning:0,cache:{read:0,write:0}},steps:c.map((n)=>({cost:n.cost,tokens:n.tokens}))}}),r=o.limit?p.slice(-o.limit):p;if(r.length===0){e.println("No assistant turns found for this session");return}if(o.format==="json"){console.log(JSON.stringify({sessionID:a,turns:r},null,2));return}e.println(`Session ${a} \u2014 ${r.length} turn(s)`),e.println("");for(let s of r){let t=s.tokens,c=t.input+t.cache.read+t.cache.write,n=t.output+t.reasoning;if(e.println(`${s.messageID} ${s.provider}/${s.model} finish=${s.finish??"-"}`),e.println(` tokens input=${t.input} cache.read=${t.cache.read} cache.write=${t.cache.write} output=${t.output} reasoning=${t.reasoning} (in=${c} out=${n})`),e.println(` cost $${s.cost.toFixed(6)}`),s.steps.length>1)e.println(` steps ${s.steps.length}`),s.steps.forEach((i,g)=>{e.println(` [${g}] input=${i.tokens.input} output=${i.tokens.output} cache.read=${i.tokens.cache.read} cache.write=${i.tokens.cache.write} reasoning=${i.tokens.reasoning} cost=$${i.cost.toFixed(6)}`)});e.println("")}let h=r.reduce((s,t)=>s+t.cost,0);e.println(`Total cost for shown turns: $${h.toFixed(6)}`),e.println("(source: Session.getUsage(), same numbers persisted to the message record \u2014 see session.usage log tag)")})}});export{v as UsageCommand};
2
+ import{Pd as d}from"./chunk-da6kggv7.js";import{ae as f}from"./chunk-5w76kdjr.js";import{dg as e}from"./chunk-eg3syjtv.js";import{Bh as l}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Mj as m,cl as u}from"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";var v=f({command:"usage [sessionID]",describe:"show per-turn token/cost breakdown for a session (debug/verification tool)",builder:(o)=>{return o.positional("sessionID",{describe:"session ID to inspect (default: most recently updated session)",type:"string"}).option("format",{describe:"output format",type:"string",choices:["table","json"],default:"table"}).option("limit",{describe:"number of most recent turns to show (default: all)",type:"number"})},handler:async(o)=>{await d(process.cwd(),async()=>{let a=o.sessionID?m.make(o.sessionID):[...u.list({roots:!1,limit:1})][0]?.id;if(!a)e.error("No sessions found"),process.exit(1);let p=(await l.runPromise(u.Service.use((s)=>s.messages({sessionID:a,agentID:"*"})))).filter((s)=>s.info.role==="assistant").map((s)=>{let t=s.info,c=s.parts.filter((n)=>n.type==="step-finish");return{messageID:t.id,provider:t.providerID,model:t.modelID,finish:t.finish,cost:t.cost??0,tokens:t.tokens??{input:0,output:0,reasoning:0,cache:{read:0,write:0}},steps:c.map((n)=>({cost:n.cost,tokens:n.tokens}))}}),r=o.limit?p.slice(-o.limit):p;if(r.length===0){e.println("No assistant turns found for this session");return}if(o.format==="json"){console.log(JSON.stringify({sessionID:a,turns:r},null,2));return}e.println(`Session ${a} \u2014 ${r.length} turn(s)`),e.println("");for(let s of r){let t=s.tokens,c=t.input+t.cache.read+t.cache.write,n=t.output+t.reasoning;if(e.println(`${s.messageID} ${s.provider}/${s.model} finish=${s.finish??"-"}`),e.println(` tokens input=${t.input} cache.read=${t.cache.read} cache.write=${t.cache.write} output=${t.output} reasoning=${t.reasoning} (in=${c} out=${n})`),e.println(` cost $${s.cost.toFixed(6)}`),s.steps.length>1)e.println(` steps ${s.steps.length}`),s.steps.forEach((i,g)=>{e.println(` [${g}] input=${i.tokens.input} output=${i.tokens.output} cache.read=${i.tokens.cache.read} cache.write=${i.tokens.cache.write} reasoning=${i.tokens.reasoning} cost=$${i.cost.toFixed(6)}`)});e.println("")}let h=r.reduce((s,t)=>s+t.cost,0);e.println(`Total cost for shown turns: $${h.toFixed(6)}`),e.println("(source: Session.getUsage(), same numbers persisted to the message record \u2014 see session.usage log tag)")})}});export{v as UsageCommand};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Ah as a,Bh as b}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";export{b as AppRuntime,a as AppLayer};
2
+ import{Ah as a,Bh as b}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";export{b as AppRuntime,a as AppLayer};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
- import{Qd as T,Sd as q,Td as N,Ud as w,Vd as X,Yd as D}from"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{dg as Q}from"./chunk-eg3syjtv.js";import{Bh as A}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-52frd9p0.js";import{fl as $}from"./chunk-xqnzmr7a.js";import"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import{Nr as _}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as Y,kt as W}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";import V from"fs/promises";import L from"path";import R from"os";var g={command:"uninstall",describe:"uninstall qitqode and remove all related files",builder:(j)=>j.option("keep-config",{alias:"c",type:"boolean",describe:"keep configuration files",default:!1}).option("keep-data",{alias:"d",type:"boolean",describe:"keep session data and snapshots",default:!1}).option("dry-run",{type:"boolean",describe:"show what would be removed without removing",default:!1}).option("force",{alias:"f",type:"boolean",describe:"skip confirmation prompts",default:!1}),handler:async(j)=>{Q.empty(),Q.println(Q.logo(" ")),Q.empty(),w("Uninstall QitQode");let B=await A.runPromise($.Service.use((J)=>J.method()));N.info(`Installation method: ${B}`);let E=await v(j,B);if(await z(E,B),!j.force&&!j.dryRun){let J=await q({message:"Are you sure you want to uninstall?",initialValue:!1});if(!J||T(J)){X("Cancelled");return}}if(j.dryRun){N.warn("Dry run - no changes made"),X("Done");return}await G(B,E),X("Done")}};async function v(j,B){let E=[{path:W.Path.data,label:"Data",keep:j.keepData},{path:W.Path.cache,label:"Cache",keep:!1},{path:W.Path.config,label:"Config",keep:j.keepConfig},{path:W.Path.state,label:"State",keep:!1}],J=B==="curl"?await P():null,H=B==="curl"?process.execPath:null;return{directories:E,shellConfig:J,binary:H}}async function z(j,B){N.message("The following will be removed:");for(let E of j.directories){if(!await V.access(E.path).then(()=>!0).catch(()=>!1))continue;let H=await F(E.path),K=S(H),O=E.keep?Q.Style.TEXT_DIM+"(keeping)":"",M=E.keep?"\u25CB":"\u2713";N.info(` ${M} ${E.label}: ${Z(E.path)} ${Q.Style.TEXT_DIM}(${K})${O}`)}if(j.binary)N.info(` \u2713 Binary: ${Z(j.binary)}`);if(j.shellConfig)N.info(` \u2713 Shell PATH in ${Z(j.shellConfig)}`);if(B!=="curl"&&B!=="unknown"){let E={npm:"npm uninstall -g @qitqode/cli",pnpm:"pnpm uninstall -g @qitqode/cli",bun:"bun remove -g @qitqode/cli"};N.info(` \u2713 Package: ${E[B]||B}`)}}async function G(j,B){let E=D(),J=[];for(let H of B.directories){if(H.keep){N.step(`Skipping ${H.label} (--keep-${H.label.toLowerCase()})`);continue}if(!await V.access(H.path).then(()=>!0).catch(()=>!1))continue;E.start(`Removing ${H.label}...`);let O=await V.rm(H.path,{recursive:!0,force:!0}).catch((M)=>M);if(O){E.stop(`Failed to remove ${H.label}`,1),J.push(`${H.label}: ${O.message}`);continue}E.stop(`Removed ${H.label}`)}if(B.shellConfig){E.start("Cleaning shell config...");let H=await k(B.shellConfig).catch((K)=>K);if(H)E.stop("Failed to clean shell config",1),J.push(`Shell config: ${H.message}`);else E.stop("Cleaned shell config")}if(j!=="curl"&&j!=="unknown"){let K={npm:["npm","uninstall","-g","@qitqode/cli"],pnpm:["pnpm","uninstall","-g","@qitqode/cli"],bun:["bun","remove","-g","@qitqode/cli"]}[j];if(K){E.start(`Running ${K.join(" ")}...`);let O=await _.run(K,{nothrow:!0});if(O.code!==0)E.stop(`Package manager uninstall failed: exit code ${O.code}`,1),N.warn(`You may need to run manually: ${K.join(" ")}`);else E.stop("Package removed")}else N.warn(`Uninstall not supported for method "${j}" yet, skipping package removal`)}if(j==="curl"&&B.binary){Q.empty(),N.message("To finish removing the binary, run:"),N.info(` rm "${B.binary}"`);let H=L.dirname(B.binary);if(H.includes(".qitqode"))N.info(` rmdir "${H}" 2>/dev/null`)}if(J.length>0){Q.empty(),N.warn("Some operations failed:");for(let H of J)N.error(` ${H}`)}Q.empty(),N.success("Thank you for using QitQode!")}async function P(){let j=L.basename(process.env.SHELL||"bash"),B=R.homedir(),E=process.env.XDG_CONFIG_HOME||L.join(B,".config"),J={fish:[L.join(E,"fish","config.fish")],zsh:[L.join(B,".zshrc"),L.join(B,".zshenv"),L.join(E,"zsh",".zshrc"),L.join(E,"zsh",".zshenv")],bash:[L.join(B,".bashrc"),L.join(B,".bash_profile"),L.join(B,".profile"),L.join(E,"bash",".bashrc"),L.join(E,"bash",".bash_profile")],ash:[L.join(B,".ashrc"),L.join(B,".profile")],sh:[L.join(B,".profile")]},H=J[j]||J.bash;for(let K of H){if(!await V.access(K).then(()=>!0).catch(()=>!1))continue;let M=await Y.readText(K).catch(()=>"");if(M.includes("# qitqode")||M.includes(".qitqode/bin"))return K}return null}async function k(j){let E=(await Y.readText(j)).split(`
2
+ import{Qd as T,Sd as q,Td as N,Ud as w,Vd as X,Yd as D}from"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{dg as Q}from"./chunk-eg3syjtv.js";import{Bh as A}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-k3dacdp5.js";import{fl as $}from"./chunk-99s035f0.js";import"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import{Nr as _}from"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as Y,kt as W}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";import V from"fs/promises";import L from"path";import R from"os";var g={command:"uninstall",describe:"uninstall qitqode and remove all related files",builder:(j)=>j.option("keep-config",{alias:"c",type:"boolean",describe:"keep configuration files",default:!1}).option("keep-data",{alias:"d",type:"boolean",describe:"keep session data and snapshots",default:!1}).option("dry-run",{type:"boolean",describe:"show what would be removed without removing",default:!1}).option("force",{alias:"f",type:"boolean",describe:"skip confirmation prompts",default:!1}),handler:async(j)=>{Q.empty(),Q.println(Q.logo(" ")),Q.empty(),w("Uninstall QitQode");let B=await A.runPromise($.Service.use((J)=>J.method()));N.info(`Installation method: ${B}`);let E=await v(j,B);if(await z(E,B),!j.force&&!j.dryRun){let J=await q({message:"Are you sure you want to uninstall?",initialValue:!1});if(!J||T(J)){X("Cancelled");return}}if(j.dryRun){N.warn("Dry run - no changes made"),X("Done");return}await G(B,E),X("Done")}};async function v(j,B){let E=[{path:W.Path.data,label:"Data",keep:j.keepData},{path:W.Path.cache,label:"Cache",keep:!1},{path:W.Path.config,label:"Config",keep:j.keepConfig},{path:W.Path.state,label:"State",keep:!1}],J=B==="curl"?await P():null,H=B==="curl"?process.execPath:null;return{directories:E,shellConfig:J,binary:H}}async function z(j,B){N.message("The following will be removed:");for(let E of j.directories){if(!await V.access(E.path).then(()=>!0).catch(()=>!1))continue;let H=await F(E.path),K=S(H),O=E.keep?Q.Style.TEXT_DIM+"(keeping)":"",M=E.keep?"\u25CB":"\u2713";N.info(` ${M} ${E.label}: ${Z(E.path)} ${Q.Style.TEXT_DIM}(${K})${O}`)}if(j.binary)N.info(` \u2713 Binary: ${Z(j.binary)}`);if(j.shellConfig)N.info(` \u2713 Shell PATH in ${Z(j.shellConfig)}`);if(B!=="curl"&&B!=="unknown"){let E={npm:"npm uninstall -g @qitqode/cli",pnpm:"pnpm uninstall -g @qitqode/cli",bun:"bun remove -g @qitqode/cli"};N.info(` \u2713 Package: ${E[B]||B}`)}}async function G(j,B){let E=D(),J=[];for(let H of B.directories){if(H.keep){N.step(`Skipping ${H.label} (--keep-${H.label.toLowerCase()})`);continue}if(!await V.access(H.path).then(()=>!0).catch(()=>!1))continue;E.start(`Removing ${H.label}...`);let O=await V.rm(H.path,{recursive:!0,force:!0}).catch((M)=>M);if(O){E.stop(`Failed to remove ${H.label}`,1),J.push(`${H.label}: ${O.message}`);continue}E.stop(`Removed ${H.label}`)}if(B.shellConfig){E.start("Cleaning shell config...");let H=await k(B.shellConfig).catch((K)=>K);if(H)E.stop("Failed to clean shell config",1),J.push(`Shell config: ${H.message}`);else E.stop("Cleaned shell config")}if(j!=="curl"&&j!=="unknown"){let K={npm:["npm","uninstall","-g","@qitqode/cli"],pnpm:["pnpm","uninstall","-g","@qitqode/cli"],bun:["bun","remove","-g","@qitqode/cli"]}[j];if(K){E.start(`Running ${K.join(" ")}...`);let O=await _.run(K,{nothrow:!0});if(O.code!==0)E.stop(`Package manager uninstall failed: exit code ${O.code}`,1),N.warn(`You may need to run manually: ${K.join(" ")}`);else E.stop("Package removed")}else N.warn(`Uninstall not supported for method "${j}" yet, skipping package removal`)}if(j==="curl"&&B.binary){Q.empty(),N.message("To finish removing the binary, run:"),N.info(` rm "${B.binary}"`);let H=L.dirname(B.binary);if(H.includes(".qitqode"))N.info(` rmdir "${H}" 2>/dev/null`)}if(J.length>0){Q.empty(),N.warn("Some operations failed:");for(let H of J)N.error(` ${H}`)}Q.empty(),N.success("Thank you for using QitQode!")}async function P(){let j=L.basename(process.env.SHELL||"bash"),B=R.homedir(),E=process.env.XDG_CONFIG_HOME||L.join(B,".config"),J={fish:[L.join(E,"fish","config.fish")],zsh:[L.join(B,".zshrc"),L.join(B,".zshenv"),L.join(E,"zsh",".zshrc"),L.join(E,"zsh",".zshenv")],bash:[L.join(B,".bashrc"),L.join(B,".bash_profile"),L.join(B,".profile"),L.join(E,"bash",".bashrc"),L.join(E,"bash",".bash_profile")],ash:[L.join(B,".ashrc"),L.join(B,".profile")],sh:[L.join(B,".profile")]},H=J[j]||J.bash;for(let K of H){if(!await V.access(K).then(()=>!0).catch(()=>!1))continue;let M=await Y.readText(K).catch(()=>"");if(M.includes("# qitqode")||M.includes(".qitqode/bin"))return K}return null}async function k(j){let E=(await Y.readText(j)).split(`
3
3
  `),J=[],H=!1;for(let O of E){let M=O.trim();if(M==="# qitqode"){H=!0;continue}if(H){if(H=!1,M.includes(".qitqode/bin")||M.includes("fish_add_path"))continue}if(M.startsWith("export PATH=")&&M.includes(".qitqode/bin")||M.startsWith("fish_add_path")&&M.includes(".qitqode"))continue;J.push(O)}while(J.length>0&&J[J.length-1].trim()==="")J.pop();let K=J.join(`
4
4
  `)+`
5
5
  `;await Y.write(j,K)}async function F(j){let B=0,E=async(J)=>{let H=await V.readdir(J,{withFileTypes:!0}).catch(()=>[]);for(let K of H){let O=L.join(J,K.name);if(K.isDirectory()){await E(O);continue}if(K.isFile()){let M=await V.stat(O).catch(()=>null);if(M)B+=M.size}}};return await E(j),B}function S(j){if(j<1024)return`${j} B`;if(j<1048576)return`${(j/1024).toFixed(1)} KB`;if(j<1073741824)return`${(j/1048576).toFixed(1)} MB`;return`${(j/1073741824).toFixed(1)} GB`}function Z(j){let B=R.homedir();if(j===B||j.startsWith(B+L.sep))return"~"+j.slice(B.length);return j}export{g as UninstallCommand};
@@ -1,5 +1,5 @@
1
1
  // @bun
2
2
  import{Pn as G$}from"./chunk-khzzmyk2.js";import{Jr as A$}from"./chunk-ztyy3ga3.js";import{Or as k$}from"./chunk-mmjgf680.js";import{$s as KZ,Xs as Y$,Ys as U$,_s as CZ}from"./chunk-at22twxx.js";import{lt as SZ}from"./chunk-kgptyf7n.js";import{$z as oZ,BA as rZ,BE as RZ,BF as h,BJ as X$,CA as sZ,CF as K$,Dz as a,EF as c,EG as EZ,FF as vZ,GJ as JZ,JJ as fZ,KJ as iZ,LH as YZ,MD as Z$,OH as V$,OJ as PZ,PF as IZ,PJ as lZ,RI as d,SF as zZ,SG as p,TD as $$,TI as m,TJ as cZ,UD as E,WD as WZ,Wz as L,XD as q$,XJ as v,Xz as eZ,ZJ as B$,Zz as ZZ,eH as P,fK as F$,hF as $Z,iF as LZ,jF as qZ,jG as xZ,kF as f,kG as Q$,kJ as DZ,mB as gZ,mF as jZ,oF as D$,oJ as C,pF as i,sF as J$,vF as o,wE as z$,wJ as r,xA as kZ,xF as l}from"./chunk-qnvsqnz5.js";import{sO as u$,uO as BZ,wO as h$}from"./chunk-r9w0thdk.js";var pZ={};BZ(pZ,{makeHandle:()=>AZ,make:()=>GZ,ProcessId:()=>UZ,ExitCode:()=>FZ,ChildProcessSpawner:()=>W});var FZ=YZ(),UZ=YZ(),hZ="~effect/ChildProcessSpawner/ChildProcessHandle",j$={[hZ]:hZ,...kZ,toJSON(){return{_id:"ChildProcessHandle",pid:this.pid}}},AZ=(Z)=>Object.assign(Object.create(j$),Z),GZ=(Z)=>{let q=(B,Q)=>Z(B).pipe(h((U)=>fZ(Q?.includeStderr===!0?U.all:U.stdout)),r),z=(B,Q)=>iZ(q(B,Q));return W.of({spawn:Z,exitCode:(B)=>xZ(o(Z(B),(Q)=>Q.exitCode)),streamString:q,streamLines:z,lines:(B,Q)=>lZ(z(B,Q)),string:(B,Q)=>cZ(q(B,Q))})};class W extends gZ()("effect/process/ChildProcessSpawner"){}var x={};BZ(x,{setEnv:()=>HZ,setCwd:()=>yZ,prefix:()=>C$,pipeTo:()=>P$,parseFdName:()=>g,make:()=>k,isStandardCommand:()=>I$,isPipedCommand:()=>E$,isCommand:()=>s,fdName:()=>NZ});var MZ="~effect/unstable/process/ChildProcess",aZ={...rZ,...sZ,[MZ]:MZ,asEffect(){return W.use((Z)=>Z.spawn(this))}},s=(Z)=>oZ(Z,MZ),I$=(Z)=>Z._tag==="StandardCommand",E$=(Z)=>Z._tag==="PipedCommand",I=(Z,q,z)=>Object.assign(Object.create(aZ),{_tag:"StandardCommand",command:Z,args:q,options:z}),e=(Z,q,z={})=>Object.assign(Object.create(aZ),{_tag:"PipedCommand",left:Z,right:q,options:z}),k=function(...q){if(OZ(q[0])){let[U,...A]=q,G=bZ(U,A);return I(G[0]??"",G.slice(1),{})}if(typeof q[0]==="object"&&!Array.isArray(q[0])&&!OZ(q[0])){let U=q[0];return function(A,...G){let b=bZ(A,G);return I(b[0]??"",b.slice(1),U)}}if(typeof q[0]==="string"&&!Array.isArray(q[1])){let[U,A={}]=q;return I(U,[],A)}let[z,B=[],Q={}]=q;return I(z,B,Q)},P$=a((Z)=>s(Z[0])&&s(Z[1]),(Z,q,z)=>e(Z,q,z??{})),C$=function(...q){if(s(q[0])&&q.length>1){let[B,...Q]=q,U=dZ(Q);return _Z(B,U)}let z=dZ(q);return(B)=>_Z(B,z)},dZ=(Z)=>{if(OZ(Z[0])){let[B,...Q]=Z,U=bZ(B,Q);return{command:U[0]??"",args:U.slice(1)}}let[q,z=[]]=Z;return{command:q,args:z}},_Z=(Z,q)=>{switch(Z._tag){case"StandardCommand":return I(q.command,[...q.args,Z.command,...Z.args],Z.options);case"PipedCommand":return e(_Z(Z.left,q),Z.right,Z.options)}},yZ=a(2,(Z,q)=>{switch(Z._tag){case"StandardCommand":return I(Z.command,Z.args,{...Z.options,cwd:q});case"PipedCommand":return e(yZ(Z.left,q),yZ(Z.right,q),Z.options)}}),HZ=a(2,(Z,q)=>{switch(Z._tag){case"StandardCommand":{let z=Z.options.env===void 0?q:{...Z.options.env,...q};return I(Z.command,Z.args,{...Z.options,env:z})}case"PipedCommand":return e(HZ(Z.left,q),HZ(Z.right,q),Z.options)}}),OZ=(Z)=>Array.isArray(Z)&&("raw"in Z)&&Array.isArray(Z.raw),g=(Z)=>{let q=/^fd(\d+)$/.exec(Z);if(q===null)return;let z=parseInt(q[1],10);return z>=3?z:void 0},NZ=(Z)=>`fd${Z}`,bZ=(Z,q)=>{let z=[];for(let[B,Q]of Z.entries())z=S$(Z,q,z,Q,B);return z},S$=(Z,q,z,B,Q)=>{let U=Z.raw[Q];if(U===void 0)throw Error(`Invalid backslash sequence: ${Z.raw[Q]}`);let{hasLeadingWhitespace:A,hasTrailingWhitespace:G,tokens:b}=w$(B,U),N=nZ(z,b,A);if(Q===q.length)return N;let S=q[Q],QZ=Array.isArray(S)?S.map((VZ)=>mZ(VZ)):[mZ(S)];return nZ(N,QZ,G)},mZ=(Z)=>{if(typeof Z==="string")return Z;return String(Z)},tZ=new Set([" ","\t","\r",`
3
3
  `]),T$={x:3,u:5},w$=(Z,q)=>{if(q.length===0)return{tokens:[],hasLeadingWhitespace:!1,hasTrailingWhitespace:!1};let z=tZ.has(q[0]),B=[],Q=0;for(let A=0,G=0;A<Z.length;A+=1,G+=1){let b=q[G];if(tZ.has(b)){if(Q!==A)B.push(Z.slice(Q,A));Q=A+1}else if(b==="\\"){let N=q[G+1];if(N===`
4
- `)A-=1,G+=1;else if(N==="u"&&q[G+2]==="{")G=q.indexOf("}",G+3);else G+=T$[N]??1}}let U=Q===Z.length;if(!U)B.push(Z.slice(Q));return{tokens:B,hasLeadingWhitespace:z,hasTrailingWhitespace:U}},nZ=(Z,q,z)=>z||Z.length===0||q.length===0?[...Z,...q]:[...Z.slice(0,-1),`${Z.at(-1)}${q.at(0)}`,...q.slice(1)];var _$=u$(k$(),1);import*as M$ from"child_process";import{PassThrough as g$}from"stream";var R=(Z)=>Z instanceof globalThis.Error?Z:new globalThis.Error(String(Z)),x$=(Z)=>{switch(Z.code){case"ENOENT":return"NotFound";case"EACCES":return"PermissionDenied";case"EEXIST":return"AlreadyExists";case"EISDIR":return"BadResource";case"ENOTDIR":return"BadResource";case"EBUSY":return"Busy";case"ELOOP":return"BadResource";default:return"Unknown"}},y$=(Z)=>{let q=[],z=[],B=(A)=>{switch(A._tag){case"StandardCommand":q.push(A);return;case"PipedCommand":B(A.left),z.push(A.options),B(A.right);return}};if(B(Z),q.length===0)throw Error("flatten produced empty commands array");let[Q,...U]=q;return{commands:[Q,...U],opts:z}},O=(Z,q,z)=>{let B=y$(z).commands.map((Q)=>`${Q.command} ${Q.args.join(" ")}`).join(" | ");return V$({_tag:x$(q),module:"ChildProcess",method:Z,pathOrDescriptor:B,syscall:q.syscall,cause:q})},f$=D$(function*(){let Z=yield*B$,q=yield*F$,z=p(function*($){if(L($.cwd))return;return yield*Z.access($.cwd),q.resolve($.cwd)}),B=($)=>$.extendEnv?{...A$(),...$.env}:$.env,Q=($)=>DZ($)?"pipe":$,U=($)=>d($)?"pipe":$,A=($)=>{let D={stream:"pipe",encoding:"utf-8",endOnDone:!0};if(L($.stdin))return D;if(typeof $.stdin==="string")return{...D,stream:$.stdin};if(DZ($.stdin))return{...D,stream:$.stdin};return{stream:$.stdin.stream,encoding:$.stdin.encoding??D.encoding,endOnDone:$.stdin.endOnDone??D.endOnDone}},G=($,D)=>{let J=$[D];if(L(J))return{stream:"pipe"};if(typeof J==="string")return{stream:J};if(d(J))return{stream:J};return{stream:J.stream}},b=($)=>{if(L($.additionalFds))return[];return Object.entries($.additionalFds).flatMap(([D,J])=>{let K=g(D);return L(K)?[]:[{fd:K,config:J}]}).toSorted((D,J)=>D.fd-J.fd)},N=($,D,J,K)=>{let X=(F)=>process.platform==="win32"&&F==="pipe"?"overlapped":F,Y=[X(Q($.stream)),X(U(D.stream)),X(U(J.stream))];if(K.length===0)return Y;let V=K.reduce((F,_)=>Math.max(F,_.fd),2);for(let F=3;F<=V;F++)Y[F]="ignore";for(let F of K)Y[F.fd]=X("pipe");return Y},S=p(function*($,D,J){if(J.length===0)return{getInputFd:()=>m,getOutputFd:()=>C};let K=new Map,X=new Map;for(let Y of J){let V=D.stdio[Y.fd];switch(Y.config.type){case"input":{let F=m;if(V&&"write"in V)F=CZ.fromWritable({evaluate:()=>V,onError:(_)=>O(`fromWritable(fd${Y.fd})`,R(_),$),endOnDone:!0});if(Y.config.stream)yield*EZ(PZ(Y.config.stream,F));K.set(Y.fd,F);break}case"output":{let F=C;if(V&&"read"in V){let _=new g$;V.on("error",(y)=>_.destroy(R(y))),V.pipe(_),F=KZ.fromReadable({evaluate:()=>_,onError:(y)=>O(`fromReadable(fd${Y.fd})`,R(y),$)})}if(Y.config.sink)F=JZ(F,Y.config.sink);X.set(Y.fd,F);break}}}return{getInputFd:(Y)=>K.get(Y)??m,getOutputFd:(Y)=>X.get(Y)??C}}),QZ=($,D,J)=>LZ(()=>{let K=m;if(ZZ(D.stdin))K=CZ.fromWritable({evaluate:()=>D.stdin,onError:(X)=>O("fromWritable(stdin)",R(X),$),endOnDone:J.endOnDone,encoding:J.encoding});if(DZ(J.stream))return K$(EZ(PZ(J.stream,K)),K);return $Z(K)}),VZ=($,D,J,K)=>{let X=D.stdout?KZ.fromReadable({evaluate:()=>D.stdout,onError:(V)=>O("fromReadable(stdout)",R(V),$)}):C,Y=D.stderr?KZ.fromReadable({evaluate:()=>D.stderr,onError:(V)=>O("fromReadable(stderr)",R(V),$)}):C;if(d(J.stream))X=JZ(X,J.stream);if(d(K.stream))Y=JZ(Y,K.stream);return{stdout:X,stderr:Y,all:X$(X,Y)}},b$=($,D)=>jZ((J)=>{let K=$$(),X=_$.default($.command,$.args,D),Y=!1,V;return X.on("error",(F)=>{J(i(O("spawn",F,$)))}),X.on("exit",(...F)=>{V=F}),X.on("close",(...F)=>{if(Y)return;Y=!0,q$(K,Z$(V??F))}),X.on("spawn",()=>{J($Z([X,K]))}),qZ(()=>{X.kill("SIGTERM")})}),XZ=($,D,J)=>{if(globalThis.process.platform==="win32")return jZ((K)=>{M$.exec(`taskkill /pid ${D.pid} /T /F`,{windowsHide:!0},(X)=>{if(X)return K(i(O("kill",R(X),$)));K(f)})});return J$({try:()=>{globalThis.process.kill(-D.pid,J)},catch:(K)=>O("kill",R(K),$)})},wZ=($,D,J)=>LZ(()=>{if(D.kill(J))return f;return i(O("kill",Error("Failed to kill child process"),$))}),N$=($,D,J)=>(K)=>{let X=J?.killSignal??"SIGTERM";if(L(J?.forceKillAfter))return K(D,$,X);return zZ(K(D,$,X),{duration:J.forceKillAfter,orElse:()=>K(D,$,"SIGKILL")})},W$=($,D)=>{let J=D??"stdout";switch(J){case"stdout":return $.stdout;case"stderr":return $.stderr;case"all":return $.all;default:{let K=g(J);return eZ(K)?$.getOutputFd(K):$.stdout}}},T=p(function*($){switch($._tag){case"StandardCommand":{let D=A($.options),J=G($.options,"stdout"),K=G($.options,"stderr"),X=b($.options),Y=yield*z($.options),[V,F]=yield*Q$(b$($,{cwd:Y,env:B($.options),stdio:N(D,J,K,X),detached:$.options.detached??process.platform!=="win32",shell:$.options.shell,windowsHide:process.platform==="win32"}),p(function*([M,H]){let t=yield*WZ(H),n=N$(M,$,$.options);if(t){let[u]=yield*E(H);if(process.platform==="win32")return yield*f;if(u!==0&&ZZ(u))return yield*IZ(n(XZ));return yield*f}let w=(u)=>vZ(XZ($,M,u),()=>wZ($,M,u)),R$=$.options.killSignal??"SIGTERM",uZ=w(R$).pipe(l(E(H)),c),L$=$.options.forceKillAfter?zZ(uZ,{duration:$.options.forceKillAfter,orElse:()=>w("SIGKILL").pipe(l(E(H)),c)}):uZ;return yield*IZ(L$)})),_=yield*S($,V,X),y=VZ($,V,J,K),j=!0;return AZ({pid:UZ(V.pid),stdin:yield*QZ($,V,D),stdout:y.stdout,stderr:y.stderr,all:y.all,getInputFd:_.getInputFd,getOutputFd:_.getOutputFd,isRunning:h(WZ(F),(M)=>!M),exitCode:o(E(F),([M,H])=>{if(ZZ(M))return $Z(FZ(M));return i(O("exitCode",Error(`Process interrupted due to receipt of signal: '${H}'`),$))}),kill:(M)=>{let H=M?.killSignal??"SIGTERM",t=(w)=>vZ(XZ($,V,w),()=>wZ($,V,w)),n=t(H).pipe(l(E(F)),c);if(!M?.forceKillAfter)return n;return zZ(n,{duration:M.forceKillAfter,orElse:()=>t("SIGKILL").pipe(l(E(F)),c)})},unref:qZ(()=>{if(j)V.unref(),j=!1;return qZ(()=>{if(!j)V.ref(),j=!0})})})}case"PipedCommand":{let D=y$($),[J,...K]=D.commands,X=T(J);for(let Y=0;Y<K.length;Y++){let V=K[Y],F=D.opts[Y]??{},_=A(V.options),y=r(h(X,(H)=>W$(H,F.from))),j=F.to??"stdin";if(j==="stdin"){X=T(k(V.command,V.args,{...V.options,stdin:{..._,stream:y}}));continue}let M=g(j);if(L(M)){X=T(k(V.command,V.args,{...V.options,stdin:{..._,stream:y}}));continue}X=T(k(V.command,V.args,{...V.options,additionalFds:{...V.options.additionalFds,[NZ(M)]:{type:"input",stream:y}}}))}return yield*X}}});return GZ(T)}),i$=z$(W,f$),l$=i$.pipe(RZ(Y$.layer),RZ(U$)),Bq=G$(async()=>{let{makeRuntime:Z}=await import("./chunk-sf5zc4kc.js");return Z(W,l$)});var H$=(Z,q)=>P.gen(function*(){let z=yield*Z.spawn(q),[B,Q]=yield*P.all([v.mkString(v.decodeText(z.stdout)),v.mkString(v.decodeText(z.stderr))],{concurrency:2});return{code:yield*z.exitCode,text:B,stderr:Q}}).pipe(P.scoped),Mq=H$,_q=(Z,q,z)=>H$(Z,x.make("git",q,{cwd:z?.cwd,extendEnv:!0,stdin:"ignore"}));var TZ={};BZ(TZ,{payloads:()=>p$,define:()=>c$,BusEvent:()=>TZ});var O$=new Map;function c$(Z,q){let z={type:Z,properties:q};return O$.set(Z,z),z}function p$(){return O$.entries().map(([Z,q])=>{return SZ.object({type:SZ.literal(Z),properties:q.properties}).meta({ref:`Event.${q.type}`})}).toArray()}
4
+ `)A-=1,G+=1;else if(N==="u"&&q[G+2]==="{")G=q.indexOf("}",G+3);else G+=T$[N]??1}}let U=Q===Z.length;if(!U)B.push(Z.slice(Q));return{tokens:B,hasLeadingWhitespace:z,hasTrailingWhitespace:U}},nZ=(Z,q,z)=>z||Z.length===0||q.length===0?[...Z,...q]:[...Z.slice(0,-1),`${Z.at(-1)}${q.at(0)}`,...q.slice(1)];var _$=u$(k$(),1);import*as M$ from"child_process";import{PassThrough as g$}from"stream";var R=(Z)=>Z instanceof globalThis.Error?Z:new globalThis.Error(String(Z)),x$=(Z)=>{switch(Z.code){case"ENOENT":return"NotFound";case"EACCES":return"PermissionDenied";case"EEXIST":return"AlreadyExists";case"EISDIR":return"BadResource";case"ENOTDIR":return"BadResource";case"EBUSY":return"Busy";case"ELOOP":return"BadResource";default:return"Unknown"}},y$=(Z)=>{let q=[],z=[],B=(A)=>{switch(A._tag){case"StandardCommand":q.push(A);return;case"PipedCommand":B(A.left),z.push(A.options),B(A.right);return}};if(B(Z),q.length===0)throw Error("flatten produced empty commands array");let[Q,...U]=q;return{commands:[Q,...U],opts:z}},O=(Z,q,z)=>{let B=y$(z).commands.map((Q)=>`${Q.command} ${Q.args.join(" ")}`).join(" | ");return V$({_tag:x$(q),module:"ChildProcess",method:Z,pathOrDescriptor:B,syscall:q.syscall,cause:q})},f$=D$(function*(){let Z=yield*B$,q=yield*F$,z=p(function*($){if(L($.cwd))return;return yield*Z.access($.cwd),q.resolve($.cwd)}),B=($)=>$.extendEnv?{...A$(),...$.env}:$.env,Q=($)=>DZ($)?"pipe":$,U=($)=>d($)?"pipe":$,A=($)=>{let D={stream:"pipe",encoding:"utf-8",endOnDone:!0};if(L($.stdin))return D;if(typeof $.stdin==="string")return{...D,stream:$.stdin};if(DZ($.stdin))return{...D,stream:$.stdin};return{stream:$.stdin.stream,encoding:$.stdin.encoding??D.encoding,endOnDone:$.stdin.endOnDone??D.endOnDone}},G=($,D)=>{let J=$[D];if(L(J))return{stream:"pipe"};if(typeof J==="string")return{stream:J};if(d(J))return{stream:J};return{stream:J.stream}},b=($)=>{if(L($.additionalFds))return[];return Object.entries($.additionalFds).flatMap(([D,J])=>{let K=g(D);return L(K)?[]:[{fd:K,config:J}]}).toSorted((D,J)=>D.fd-J.fd)},N=($,D,J,K)=>{let X=(F)=>process.platform==="win32"&&F==="pipe"?"overlapped":F,Y=[X(Q($.stream)),X(U(D.stream)),X(U(J.stream))];if(K.length===0)return Y;let V=K.reduce((F,_)=>Math.max(F,_.fd),2);for(let F=3;F<=V;F++)Y[F]="ignore";for(let F of K)Y[F.fd]=X("pipe");return Y},S=p(function*($,D,J){if(J.length===0)return{getInputFd:()=>m,getOutputFd:()=>C};let K=new Map,X=new Map;for(let Y of J){let V=D.stdio[Y.fd];switch(Y.config.type){case"input":{let F=m;if(V&&"write"in V)F=CZ.fromWritable({evaluate:()=>V,onError:(_)=>O(`fromWritable(fd${Y.fd})`,R(_),$),endOnDone:!0});if(Y.config.stream)yield*EZ(PZ(Y.config.stream,F));K.set(Y.fd,F);break}case"output":{let F=C;if(V&&"read"in V){let _=new g$;V.on("error",(y)=>_.destroy(R(y))),V.pipe(_),F=KZ.fromReadable({evaluate:()=>_,onError:(y)=>O(`fromReadable(fd${Y.fd})`,R(y),$)})}if(Y.config.sink)F=JZ(F,Y.config.sink);X.set(Y.fd,F);break}}}return{getInputFd:(Y)=>K.get(Y)??m,getOutputFd:(Y)=>X.get(Y)??C}}),QZ=($,D,J)=>LZ(()=>{let K=m;if(ZZ(D.stdin))K=CZ.fromWritable({evaluate:()=>D.stdin,onError:(X)=>O("fromWritable(stdin)",R(X),$),endOnDone:J.endOnDone,encoding:J.encoding});if(DZ(J.stream))return K$(EZ(PZ(J.stream,K)),K);return $Z(K)}),VZ=($,D,J,K)=>{let X=D.stdout?KZ.fromReadable({evaluate:()=>D.stdout,onError:(V)=>O("fromReadable(stdout)",R(V),$)}):C,Y=D.stderr?KZ.fromReadable({evaluate:()=>D.stderr,onError:(V)=>O("fromReadable(stderr)",R(V),$)}):C;if(d(J.stream))X=JZ(X,J.stream);if(d(K.stream))Y=JZ(Y,K.stream);return{stdout:X,stderr:Y,all:X$(X,Y)}},b$=($,D)=>jZ((J)=>{let K=$$(),X=_$.default($.command,$.args,D),Y=!1,V;return X.on("error",(F)=>{J(i(O("spawn",F,$)))}),X.on("exit",(...F)=>{V=F}),X.on("close",(...F)=>{if(Y)return;Y=!0,q$(K,Z$(V??F))}),X.on("spawn",()=>{J($Z([X,K]))}),qZ(()=>{X.kill("SIGTERM")})}),XZ=($,D,J)=>{if(globalThis.process.platform==="win32")return jZ((K)=>{M$.exec(`taskkill /pid ${D.pid} /T /F`,{windowsHide:!0},(X)=>{if(X)return K(i(O("kill",R(X),$)));K(f)})});return J$({try:()=>{globalThis.process.kill(-D.pid,J)},catch:(K)=>O("kill",R(K),$)})},wZ=($,D,J)=>LZ(()=>{if(D.kill(J))return f;return i(O("kill",Error("Failed to kill child process"),$))}),N$=($,D,J)=>(K)=>{let X=J?.killSignal??"SIGTERM";if(L(J?.forceKillAfter))return K(D,$,X);return zZ(K(D,$,X),{duration:J.forceKillAfter,orElse:()=>K(D,$,"SIGKILL")})},W$=($,D)=>{let J=D??"stdout";switch(J){case"stdout":return $.stdout;case"stderr":return $.stderr;case"all":return $.all;default:{let K=g(J);return eZ(K)?$.getOutputFd(K):$.stdout}}},T=p(function*($){switch($._tag){case"StandardCommand":{let D=A($.options),J=G($.options,"stdout"),K=G($.options,"stderr"),X=b($.options),Y=yield*z($.options),[V,F]=yield*Q$(b$($,{cwd:Y,env:B($.options),stdio:N(D,J,K,X),detached:$.options.detached??process.platform!=="win32",shell:$.options.shell,windowsHide:process.platform==="win32"}),p(function*([M,H]){let t=yield*WZ(H),n=N$(M,$,$.options);if(t){let[u]=yield*E(H);if(process.platform==="win32")return yield*f;if(u!==0&&ZZ(u))return yield*IZ(n(XZ));return yield*f}let w=(u)=>vZ(XZ($,M,u),()=>wZ($,M,u)),R$=$.options.killSignal??"SIGTERM",uZ=w(R$).pipe(l(E(H)),c),L$=$.options.forceKillAfter?zZ(uZ,{duration:$.options.forceKillAfter,orElse:()=>w("SIGKILL").pipe(l(E(H)),c)}):uZ;return yield*IZ(L$)})),_=yield*S($,V,X),y=VZ($,V,J,K),j=!0;return AZ({pid:UZ(V.pid),stdin:yield*QZ($,V,D),stdout:y.stdout,stderr:y.stderr,all:y.all,getInputFd:_.getInputFd,getOutputFd:_.getOutputFd,isRunning:h(WZ(F),(M)=>!M),exitCode:o(E(F),([M,H])=>{if(ZZ(M))return $Z(FZ(M));return i(O("exitCode",Error(`Process interrupted due to receipt of signal: '${H}'`),$))}),kill:(M)=>{let H=M?.killSignal??"SIGTERM",t=(w)=>vZ(XZ($,V,w),()=>wZ($,V,w)),n=t(H).pipe(l(E(F)),c);if(!M?.forceKillAfter)return n;return zZ(n,{duration:M.forceKillAfter,orElse:()=>t("SIGKILL").pipe(l(E(F)),c)})},unref:qZ(()=>{if(j)V.unref(),j=!1;return qZ(()=>{if(!j)V.ref(),j=!0})})})}case"PipedCommand":{let D=y$($),[J,...K]=D.commands,X=T(J);for(let Y=0;Y<K.length;Y++){let V=K[Y],F=D.opts[Y]??{},_=A(V.options),y=r(h(X,(H)=>W$(H,F.from))),j=F.to??"stdin";if(j==="stdin"){X=T(k(V.command,V.args,{...V.options,stdin:{..._,stream:y}}));continue}let M=g(j);if(L(M)){X=T(k(V.command,V.args,{...V.options,stdin:{..._,stream:y}}));continue}X=T(k(V.command,V.args,{...V.options,additionalFds:{...V.options.additionalFds,[NZ(M)]:{type:"input",stream:y}}}))}return yield*X}}});return GZ(T)}),i$=z$(W,f$),l$=i$.pipe(RZ(Y$.layer),RZ(U$)),Bq=G$(async()=>{let{makeRuntime:Z}=await import("./chunk-6jeg2r5j.js");return Z(W,l$)});var H$=(Z,q)=>P.gen(function*(){let z=yield*Z.spawn(q),[B,Q]=yield*P.all([v.mkString(v.decodeText(z.stdout)),v.mkString(v.decodeText(z.stderr))],{concurrency:2});return{code:yield*z.exitCode,text:B,stderr:Q}}).pipe(P.scoped),Mq=H$,_q=(Z,q,z)=>H$(Z,x.make("git",q,{cwd:z?.cwd,extendEnv:!0,stdin:"ignore"}));var TZ={};BZ(TZ,{payloads:()=>p$,define:()=>c$,BusEvent:()=>TZ});var O$=new Map;function c$(Z,q){let z={type:Z,properties:q};return O$.set(Z,z),z}function p$(){return O$.entries().map(([Z,q])=>{return SZ.object({type:SZ.literal(Z),properties:q.properties}).meta({ref:`Event.${q.type}`})}).toArray()}
5
5
  export{W as Sl,pZ as Tl,x as Ul,l$ as Vl,H$ as Wl,Mq as Xl,_q as Yl,TZ as Zl};
@@ -1,4 +1,4 @@
1
1
  // @bun
2
- import{An as C,Gn as K,jn as j,kn as R,ln as O,mn as A,sn as y,xn as q,yn as M}from"./chunk-nw3e93y8.js";import{Nr as D}from"./chunk-ztyy3ga3.js";import{Es as m,Hs as v}from"./chunk-r5zy4za0.js";import{ft as d,ht as b,kt as I}from"./chunk-at22twxx.js";import{xO as T,yO as _}from"./chunk-r9w0thdk.js";import P from"path";function pt(t){let e=t&&typeof t==="object"&&"cause"in t?t.cause??t:t;if(!(e instanceof D.RunFailedError))return{error:e,detail:v(e),missing:!1};let r=e.stderr.toString().split(/\r?\n/).map((o)=>o.trim()).filter(Boolean),n=r.filter((o)=>o.startsWith("error:")).map((o)=>o.replace(/^error:\s*/,""));return{error:e,detail:n[0]??r.at(-1),missing:r.some((o)=>o.includes("No version matching"))}}var $={resolve:(t)=>q(t)},z={readText:(t)=>d.readText(t),write:async(t,e)=>{await d.write(t,e)},exists:(t)=>d.exists(t),files:(t,e)=>K(t,e)},G=z;function V(t){if(typeof t==="string")return t;if(!Array.isArray(t))return;if(typeof t[0]!=="string")return;return t[0]}function H(t){if(!t||typeof t!=="object"||Array.isArray(t))return;let e=t;if(!Array.isArray(e.plugin))return;return e.plugin}function Q(t){if(typeof t==="string"){let e=t.trim();if(e)return e;return}if(!m(t))return;for(let e of["import","default"]){let r=t[e];if(typeof r!=="string")continue;let n=r.trim();if(!n)continue;return n}}function U(t){if(!m(t))return;let e=t.config;if(!m(e))return;return e}function E(t,e){let r=t.exports;if(!m(r))return;let n=r[`./${e}`];if(!Q(n))return;return{opts:U(n)}}function X(t){let e=t.main;if(typeof e!=="string")return!1;return Boolean(e.trim())}function Y(t){let e=typeof t.json.name==="string"&&t.json.name.trim().length>0?t.json.name.trim():P.basename(t.dir),r=[],n=E(t.json,"server");if(n)r.push({kind:"server",opts:n.opts});else if(X(t.json))r.push({kind:"server"});let o=E(t.json,"tui");if(o)r.push({kind:"tui",opts:o.opts});if(!r.some((c)=>c.kind==="tui")&&C(e,t).length)r.push({kind:"tui"});return r}function g(t,e,r,n=!1){return A(t,O(t,e,r,{formattingOptions:{tabSize:2,insertSpaces:!0},isArrayInsertion:n}))}function Z(t,e,r,n,o=!1){let c=y(r).pkg,u=(e??[]).map((i,p)=>({item:i,i:p,spec:V(i)})).filter((i)=>{if(!i.spec)return!1;if(i.spec===r)return!0;if(i.spec.startsWith("file://"))return!1;return y(i.spec).pkg===c});if(!u.length){if(!e)return{mode:"add",text:g(t,["plugin"],[n])};return{mode:"add",text:g(t,["plugin",e.length],n,!0)}}if(!o)return{mode:"noop",text:t};let s=u[0];if(!s)return{mode:"noop",text:t};if(u.length===1&&s.spec===r)return{mode:"noop",text:t};let a=t;if(typeof s.item==="string")a=g(a,["plugin",s.i],n);if(Array.isArray(s.item)&&typeof s.item[0]==="string")a=g(a,["plugin",s.i,0],r);let l=u.map((i)=>i.i).filter((i)=>i!==s.i).sort((i,p)=>p-i);for(let i of l)a=g(a,["plugin",i],void 0);return{mode:"replace",text:a}}async function gt(t,e=$){let r=await e.resolve(t).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!r.ok)return{ok:!1,code:"install_failed",error:r.error};return{ok:!0,target:r.item}}async function dt(t){let e=await M(t).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!e.ok)return{ok:!1,code:"manifest_read_failed",file:t,error:e.error};let r=await Promise.resolve().then(()=>Y(e.item)).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!r.ok)return{ok:!1,code:"manifest_read_failed",file:e.item.pkg,error:r.error};if(!r.item.length)return{ok:!1,code:"manifest_no_targets",file:e.item.pkg};return{ok:!0,targets:r.item}}function tt(t){if(t.global)return t.config??I.Path.config;let r=t.vcs==="git"&&t.worktree!=="/"?t.worktree:t.directory;return P.join(r,".qitqode")}function et(t){if(t==="server")return"qitqode";return"tui"}async function rt(t,e,r,n,o){let x=[];try{let c=et(e.kind);const S=T(x,await b.acquire(`plug-config:${d.resolve(P.join(t,c))}`),1);let u=o.files(t,c);let s=u[0];for(let f of u){if(!await o.exists(f))continue;s=f;break}let a=await o.readText(s).catch((f)=>{if(f.code==="ENOENT")return"{}";return f});if(a instanceof Error)return{ok:!1,code:"patch_failed",kind:e.kind,error:a};let l=a.trim()?a:"{}";let i=[];let p=j(l,i,{allowTrailingComma:!0});if(i.length){let f=i[0],h=l.substring(0,f.offset).split(`
2
+ import{An as C,Gn as K,jn as j,kn as R,ln as O,mn as A,sn as y,xn as q,yn as M}from"./chunk-hqbbs9dm.js";import{Nr as D}from"./chunk-ztyy3ga3.js";import{Es as m,Hs as v}from"./chunk-r5zy4za0.js";import{ft as d,ht as b,kt as I}from"./chunk-at22twxx.js";import{xO as T,yO as _}from"./chunk-r9w0thdk.js";import P from"path";function pt(t){let e=t&&typeof t==="object"&&"cause"in t?t.cause??t:t;if(!(e instanceof D.RunFailedError))return{error:e,detail:v(e),missing:!1};let r=e.stderr.toString().split(/\r?\n/).map((o)=>o.trim()).filter(Boolean),n=r.filter((o)=>o.startsWith("error:")).map((o)=>o.replace(/^error:\s*/,""));return{error:e,detail:n[0]??r.at(-1),missing:r.some((o)=>o.includes("No version matching"))}}var $={resolve:(t)=>q(t)},z={readText:(t)=>d.readText(t),write:async(t,e)=>{await d.write(t,e)},exists:(t)=>d.exists(t),files:(t,e)=>K(t,e)},G=z;function V(t){if(typeof t==="string")return t;if(!Array.isArray(t))return;if(typeof t[0]!=="string")return;return t[0]}function H(t){if(!t||typeof t!=="object"||Array.isArray(t))return;let e=t;if(!Array.isArray(e.plugin))return;return e.plugin}function Q(t){if(typeof t==="string"){let e=t.trim();if(e)return e;return}if(!m(t))return;for(let e of["import","default"]){let r=t[e];if(typeof r!=="string")continue;let n=r.trim();if(!n)continue;return n}}function U(t){if(!m(t))return;let e=t.config;if(!m(e))return;return e}function E(t,e){let r=t.exports;if(!m(r))return;let n=r[`./${e}`];if(!Q(n))return;return{opts:U(n)}}function X(t){let e=t.main;if(typeof e!=="string")return!1;return Boolean(e.trim())}function Y(t){let e=typeof t.json.name==="string"&&t.json.name.trim().length>0?t.json.name.trim():P.basename(t.dir),r=[],n=E(t.json,"server");if(n)r.push({kind:"server",opts:n.opts});else if(X(t.json))r.push({kind:"server"});let o=E(t.json,"tui");if(o)r.push({kind:"tui",opts:o.opts});if(!r.some((c)=>c.kind==="tui")&&C(e,t).length)r.push({kind:"tui"});return r}function g(t,e,r,n=!1){return A(t,O(t,e,r,{formattingOptions:{tabSize:2,insertSpaces:!0},isArrayInsertion:n}))}function Z(t,e,r,n,o=!1){let c=y(r).pkg,u=(e??[]).map((i,p)=>({item:i,i:p,spec:V(i)})).filter((i)=>{if(!i.spec)return!1;if(i.spec===r)return!0;if(i.spec.startsWith("file://"))return!1;return y(i.spec).pkg===c});if(!u.length){if(!e)return{mode:"add",text:g(t,["plugin"],[n])};return{mode:"add",text:g(t,["plugin",e.length],n,!0)}}if(!o)return{mode:"noop",text:t};let s=u[0];if(!s)return{mode:"noop",text:t};if(u.length===1&&s.spec===r)return{mode:"noop",text:t};let a=t;if(typeof s.item==="string")a=g(a,["plugin",s.i],n);if(Array.isArray(s.item)&&typeof s.item[0]==="string")a=g(a,["plugin",s.i,0],r);let l=u.map((i)=>i.i).filter((i)=>i!==s.i).sort((i,p)=>p-i);for(let i of l)a=g(a,["plugin",i],void 0);return{mode:"replace",text:a}}async function gt(t,e=$){let r=await e.resolve(t).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!r.ok)return{ok:!1,code:"install_failed",error:r.error};return{ok:!0,target:r.item}}async function dt(t){let e=await M(t).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!e.ok)return{ok:!1,code:"manifest_read_failed",file:t,error:e.error};let r=await Promise.resolve().then(()=>Y(e.item)).then((n)=>({ok:!0,item:n}),(n)=>({ok:!1,error:n}));if(!r.ok)return{ok:!1,code:"manifest_read_failed",file:e.item.pkg,error:r.error};if(!r.item.length)return{ok:!1,code:"manifest_no_targets",file:e.item.pkg};return{ok:!0,targets:r.item}}function tt(t){if(t.global)return t.config??I.Path.config;let r=t.vcs==="git"&&t.worktree!=="/"?t.worktree:t.directory;return P.join(r,".qitqode")}function et(t){if(t==="server")return"qitqode";return"tui"}async function rt(t,e,r,n,o){let x=[];try{let c=et(e.kind);const S=T(x,await b.acquire(`plug-config:${d.resolve(P.join(t,c))}`),1);let u=o.files(t,c);let s=u[0];for(let f of u){if(!await o.exists(f))continue;s=f;break}let a=await o.readText(s).catch((f)=>{if(f.code==="ENOENT")return"{}";return f});if(a instanceof Error)return{ok:!1,code:"patch_failed",kind:e.kind,error:a};let l=a.trim()?a:"{}";let i=[];let p=j(l,i,{allowTrailingComma:!0});if(i.length){let f=i[0],h=l.substring(0,f.offset).split(`
3
3
  `);return{ok:!1,code:"invalid_json",kind:e.kind,file:s,line:h.length,col:h[h.length-1].length+1,parse:R(f.error)}}let N=H(p);let F=e.opts?[r,e.opts]:r;let k=Z(l,N,r,F,n);if(k.mode==="noop")return{ok:!0,item:{kind:e.kind,mode:k.mode,file:s}};let w=await o.write(s,k.text).catch((f)=>f);if(w instanceof Error)return{ok:!1,code:"patch_failed",kind:e.kind,error:w};return{ok:!0,item:{kind:e.kind,mode:k.mode,file:s}}}catch(J){var B=J,L=1}finally{var W=_(x,B,L);W&&await W}}async function mt(t,e=G){let r=tt(t),n=[];for(let o of t.targets){let c=await rt(r,o,t.spec,Boolean(t.force),e);if(!c.ok)return{...c,dir:r};n.push(c.item)}return{ok:!0,dir:r,items:n}}
4
4
  export{pt as p,z as q,gt as r,dt as s,mt as t};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{xs as P}from"./chunk-kj8cmn7z.js";import{Js as w,Ks as O,Ls as b,Ms as B}from"./chunk-tr6rdr6h.js";import{uO as p}from"./chunk-r9w0thdk.js";var H={free:{providerID:"qlex",modelID:"free"},default:{providerID:"qlex",modelID:"default"},fast:{providerID:"qlex",modelID:"fast"},economical:{providerID:"qlex",modelID:"economical"},planner:{providerID:"qlex",modelID:"planner"},repair:{providerID:"qlex",modelID:"repair"},power:{providerID:"qlex",modelID:"power"},orchestrated:{providerID:"qlex",modelID:"orchestrated"}},V={free:"Free (no cost)",default:"Default",fast:"Fast",economical:"Economy",planner:"Planner",repair:"Repair",power:"Power",orchestrated:"Orchestrated"},Y={free:{output:128000,recommendedStep:32000,context:262144,reasoning:!0,reasoningReserve:8192,visibleOutputFloor:512,recommendedTotal:9600,viableTotalFloor:9600},fast:{output:65536,recommendedStep:50000,context:1048576,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:50000,viableTotalFloor:2048},economical:{output:209715,recommendedStep:32000,context:1048576,reasoning:!0,reasoningReserve:8192,visibleOutputFloor:512,recommendedTotal:9600,viableTotalFloor:9600},default:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},planner:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},repair:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},power:{output:200000,recommendedStep:32000,context:200000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},orchestrated:{output:128000,recommendedStep:32000,context:200000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048}},Z={},D="pending",X=new Set;function c(){return D}function C(){D="pending",F()}function M(x){return X.add(x),()=>X.delete(x)}function F(){for(let x of[...X])try{x()}catch{}}function q(){for(let x of Object.keys(Z))delete Z[x];D="unavailable",F()}function Q(x){return typeof x==="number"&&Number.isFinite(x)&&x>=0&&x<=10}function f(x){if(x===void 0){q();return}let K=x!==null&&typeof x==="object"&&!Array.isArray(x)?x:void 0;if(K?.success===!1){q();return}let J=K?.success===!0&&Object.prototype.hasOwnProperty.call(K,"data")?K.data:x,j={};if(J===null||typeof J!=="object"||Array.isArray(J)){q();return}for(let[W,$]of Object.entries(J)){if(!$||typeof $!=="object"||Array.isArray($)){q();return}let z=$;if(!Q(z.intelligence)||!Q(z.speed)||!Q(z.cost)){q();return}j[W]={intelligence:z.intelligence,speed:z.speed,cost:z.cost}}for(let W of Object.keys(Z))delete Z[W];Object.assign(Z,j),D="live",F()}function h(x){if(!Array.isArray(x)||x.length===0)return;let K={},J={};for(let j of x){let W=H[j.id];K[j.id]={providerID:j.providerID??W?.providerID??"qlex",modelID:j.modelID??W?.modelID??j.id},J[j.id]=j.label??V[j.id]??j.id}for(let j of Object.keys(H))delete H[j];Object.assign(H,K);for(let j of Object.keys(V))delete V[j];Object.assign(V,J)}var N={};p(N,{tiers:()=>L,tierRatingsState:()=>c,tierRatings:()=>_,tierBudgetFacts:()=>S,streamUrl:()=>G,streamBaseUrl:()=>E,sanitizeUpstreamError:()=>g,qlexProviderMeta:()=>v,onTierRatingsChange:()=>M,omniqueryBaseUrl:()=>o,mergeLiveTiers:()=>k,mergeLiveTierRatings:()=>u,markTierRatingsUnavailable:()=>q,loadLiveRatings:()=>A,evaluatePermission:()=>d,copy:()=>T,beginTierRatingsLoad:()=>C,bashPrefixWith:()=>I,TIER_RATINGS:()=>Z,AGENT_PROMPT_NAMES:()=>R});var m=3,U=[250,750];async function A(x){for(let K=0;K<m;K++){let J=await x();if(J!==void 0)return J;let j=U[K];if(j!==void 0)await new Promise((W)=>setTimeout(W,j))}return}function k(x){h(x)}function u(x){f(x)}function L(){return Object.entries(H).map(([x,K])=>({id:x,label:V[x]??x,providerID:K.providerID,modelID:K.modelID}))}function S(x){return Y[x]}function _(){return Z}function d(x,K,...J){return J.flat().findLast(($)=>P(x,$.permission)&&P(K,$.pattern))??{action:"ask",permission:x,pattern:"*"}}function I(x,K){for(let J=K.length;J>0;J--){let j=K.slice(0,J).join(" "),W=x[j];if(W!==void 0)return K.slice(0,W)}if(K.length===0)return[];return K.slice(0,1)}function y(){return(process.env.QITQODE_BACKEND_URL?.trim()||w).replace(/\/+$/,"")}function G(){return`${y()}/streamTier`}function E(){return new URL(G()).origin}function o(){return y()}function v(){return O}function g(x){return b(x)}function T(){return B}var R=["generate","explore","dream","distill","summary","compaction","title"];export{H as bs,N as cs};
2
+ import{xs as P}from"./chunk-fr34mnyg.js";import{Js as w,Ks as O,Ls as b,Ms as B}from"./chunk-tr6rdr6h.js";import{uO as p}from"./chunk-r9w0thdk.js";var H={free:{providerID:"qlex",modelID:"free"},default:{providerID:"qlex",modelID:"default"},fast:{providerID:"qlex",modelID:"fast"},economical:{providerID:"qlex",modelID:"economical"},planner:{providerID:"qlex",modelID:"planner"},repair:{providerID:"qlex",modelID:"repair"},power:{providerID:"qlex",modelID:"power"},orchestrated:{providerID:"qlex",modelID:"orchestrated"}},V={free:"Free (no cost)",default:"Default",fast:"Fast",economical:"Economy",planner:"Planner",repair:"Repair",power:"Power",orchestrated:"Orchestrated"},Y={free:{output:128000,recommendedStep:32000,context:262144,reasoning:!0,reasoningReserve:8192,visibleOutputFloor:512,recommendedTotal:9600,viableTotalFloor:9600},fast:{output:65536,recommendedStep:50000,context:1048576,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:50000,viableTotalFloor:2048},economical:{output:209715,recommendedStep:32000,context:1048576,reasoning:!0,reasoningReserve:8192,visibleOutputFloor:512,recommendedTotal:9600,viableTotalFloor:9600},default:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},planner:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},repair:{output:128000,recommendedStep:32000,context:1050000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},power:{output:200000,recommendedStep:32000,context:200000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048},orchestrated:{output:128000,recommendedStep:32000,context:200000,reasoning:!1,reasoningReserve:0,visibleOutputFloor:2048,recommendedTotal:32000,viableTotalFloor:2048}},Z={},D="pending",X=new Set;function c(){return D}function C(){D="pending",F()}function M(x){return X.add(x),()=>X.delete(x)}function F(){for(let x of[...X])try{x()}catch{}}function q(){for(let x of Object.keys(Z))delete Z[x];D="unavailable",F()}function Q(x){return typeof x==="number"&&Number.isFinite(x)&&x>=0&&x<=10}function f(x){if(x===void 0){q();return}let K=x!==null&&typeof x==="object"&&!Array.isArray(x)?x:void 0;if(K?.success===!1){q();return}let J=K?.success===!0&&Object.prototype.hasOwnProperty.call(K,"data")?K.data:x,j={};if(J===null||typeof J!=="object"||Array.isArray(J)){q();return}for(let[W,$]of Object.entries(J)){if(!$||typeof $!=="object"||Array.isArray($)){q();return}let z=$;if(!Q(z.intelligence)||!Q(z.speed)||!Q(z.cost)){q();return}j[W]={intelligence:z.intelligence,speed:z.speed,cost:z.cost}}for(let W of Object.keys(Z))delete Z[W];Object.assign(Z,j),D="live",F()}function h(x){if(!Array.isArray(x)||x.length===0)return;let K={},J={};for(let j of x){let W=H[j.id];K[j.id]={providerID:j.providerID??W?.providerID??"qlex",modelID:j.modelID??W?.modelID??j.id},J[j.id]=j.label??V[j.id]??j.id}for(let j of Object.keys(H))delete H[j];Object.assign(H,K);for(let j of Object.keys(V))delete V[j];Object.assign(V,J)}var N={};p(N,{tiers:()=>L,tierRatingsState:()=>c,tierRatings:()=>_,tierBudgetFacts:()=>S,streamUrl:()=>G,streamBaseUrl:()=>E,sanitizeUpstreamError:()=>g,qlexProviderMeta:()=>v,onTierRatingsChange:()=>M,omniqueryBaseUrl:()=>o,mergeLiveTiers:()=>k,mergeLiveTierRatings:()=>u,markTierRatingsUnavailable:()=>q,loadLiveRatings:()=>A,evaluatePermission:()=>d,copy:()=>T,beginTierRatingsLoad:()=>C,bashPrefixWith:()=>I,TIER_RATINGS:()=>Z,AGENT_PROMPT_NAMES:()=>R});var m=3,U=[250,750];async function A(x){for(let K=0;K<m;K++){let J=await x();if(J!==void 0)return J;let j=U[K];if(j!==void 0)await new Promise((W)=>setTimeout(W,j))}return}function k(x){h(x)}function u(x){f(x)}function L(){return Object.entries(H).map(([x,K])=>({id:x,label:V[x]??x,providerID:K.providerID,modelID:K.modelID}))}function S(x){return Y[x]}function _(){return Z}function d(x,K,...J){return J.flat().findLast(($)=>P(x,$.permission)&&P(K,$.pattern))??{action:"ask",permission:x,pattern:"*"}}function I(x,K){for(let J=K.length;J>0;J--){let j=K.slice(0,J).join(" "),W=x[j];if(W!==void 0)return K.slice(0,W)}if(K.length===0)return[];return K.slice(0,1)}function y(){return(process.env.QITQODE_BACKEND_URL?.trim()||w).replace(/\/+$/,"")}function G(){return`${y()}/streamTier`}function E(){return new URL(G()).origin}function o(){return y()}function v(){return O}function g(x){return b(x)}function T(){return B}var R=["generate","explore","dream","distill","summary","compaction","title"];export{H as bs,N as cs};
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{n as a,o as b}from"./chunk-wmezdcdh.js";import"./chunk-af81r4v7.js";import"./chunk-3cqrz7g1.js";import"./chunk-c8k32724.js";import"./chunk-ct693qsd.js";import"./chunk-93gdcrbc.js";import"./chunk-gbkz04ke.js";import"./chunk-3akv2xqh.js";import"./chunk-55ykn8nz.js";import"./chunk-avefgbjg.js";import"./chunk-wyj8cpx5.js";import"./chunk-8wwdrwf2.js";import"./chunk-zc0cdvcv.js";import"./chunk-yhj01dz9.js";import"./chunk-d6jhs818.js";import"./chunk-c55f729m.js";import"./chunk-eg3syjtv.js";import"./chunk-0j5rzaxx.js";import"./chunk-36xm6mgm.js";import"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-7vmx8bg9.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";export{b as tui,a as rendererConfig};
2
+ import{n as a,o as b}from"./chunk-bzebyyfr.js";import"./chunk-v6v9xn81.js";import"./chunk-ngfxxfem.js";import"./chunk-c8k32724.js";import"./chunk-q9tgdghx.js";import"./chunk-d7nsd979.js";import"./chunk-gbkz04ke.js";import"./chunk-4pshnq6g.js";import"./chunk-55ykn8nz.js";import"./chunk-avefgbjg.js";import"./chunk-wyj8cpx5.js";import"./chunk-8wwdrwf2.js";import"./chunk-zc0cdvcv.js";import"./chunk-yhj01dz9.js";import"./chunk-d6jhs818.js";import"./chunk-mhtxp66q.js";import"./chunk-eg3syjtv.js";import"./chunk-43ttzy29.js";import"./chunk-pe2xdkez.js";import"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-7vmx8bg9.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";export{b as tui,a as rendererConfig};
@@ -1,6 +1,6 @@
1
1
  // @bun
2
- import{a as $B,b as zB}from"./chunk-7ayb3k5p.js";import"./chunk-5gsdnejs.js";import"./chunk-ehb4hd9c.js";import{B as XB}from"./chunk-gsez13bg.js";import{C as JB,E as VB}from"./chunk-c8k32724.js";import"./chunk-ct693qsd.js";import{X as YB,Y as ZB}from"./chunk-5ysbwr4x.js";import"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{ae as BB}from"./chunk-5w76kdjr.js";import{$f as i,Yf as g,Zf as w,_f as O}from"./chunk-41cq88js.js";import{dg as H}from"./chunk-eg3syjtv.js";import{Fg as r}from"./chunk-36xm6mgm.js";import{Bh as S}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Qj as o,Tk as e,xj as U}from"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import{Ml as T}from"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import{ao as a,go as s,vo as t}from"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import{Gr as n}from"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import{bs as f}from"./chunk-w2cb8cry.js";import{As as u,Bs as l,Ds as p,zs as c}from"./chunk-kj8cmn7z.js";import{Hs as A}from"./chunk-r5zy4za0.js";import{Qs as x}from"./chunk-tr6rdr6h.js";import{ct as E,et as q}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import{eH as P}from"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{wO as v}from"./chunk-r9w0thdk.js";import h from"path";import{fileURLToPath as KB}from"url";import{writeHeapSnapshot as MB}from"v8";import GB,{EOL as M}from"os";var WB={free:"free",default:"default",fast:"fast",economy:"economical",power:"power",orchestrated:"orchestrated"},m=ZB;function R(B){if(B.agent)return B.agent;return m}function QB(B,V){if(h.isAbsolute(B)||B.includes("/")||B.includes("\\")||B.startsWith(".")||B.startsWith("~"))return{error:"Directory not found: "+V};return{error:`Unknown command "${B}"`,hint:"Run `qitqode --help` to see the available commands, or pass an existing directory to start the TUI there."}}function bB(B){for(let[V,X]of Object.entries(WB))if(B[V]){let Z=f[X];if(Z)return`${Z.providerID}/${Z.modelID}`}return}function jB(B){return async(X,Z)=>{let Y=new Request(X,Z),$=Y.body?await Y.text():void 0,z=await B.call("fetch",{url:Y.url,method:Y.method,headers:Object.fromEntries(Y.headers.entries()),body:$});return new Response(z.body,{status:z.status,headers:z.headers})}}function CB(B){return{subscribe:async(V)=>{return B.on("global.event",(X)=>{V(X)})}}}async function FB(){if(typeof globalThis.QITQODE_WORKER_PATH<"u")return globalThis.QITQODE_WORKER_PATH;let B=new URL("./cli/cmd/tui/worker.js",import.meta.url);if(await E(KB(B)))return B;return new URL("./worker.ts",import.meta.url)}async function _B(B){let V=process.stdin.isTTY?void 0:await Bun.stdin.text();if(!B)return V;if(!V)return B;return V+`
3
- `+B}async function d(B){let V=a({baseUrl:B.url,fetch:B.fetch,directory:B.directory}),X=[{permission:"question",action:"deny",pattern:"*"},{permission:"plan_enter",action:"deny",pattern:"*"},{permission:"plan_exit",action:"deny",pattern:"*"}],Y=(await V.session.create({permission:X})).data?.id;if(!Y){H.error("headless: failed to create session");return}let $=await V.event.subscribe(),z=YB({sessionID:Y,query:async()=>{return(await V.session.status()).data?.[Y]}}),D=$.stream[Symbol.asyncIterator](),C=z.completion.then(()=>"DONE");(async()=>{try{while(!0){let W=await Promise.race([D.next(),C]);if(W==="DONE")break;let N=W;if(N.done)break;let G=N.value;z.onEvent(G);let K=G.properties;if(G.type==="message.part.updated"){let J=K?.part;if(!J||J.sessionID!==Y)continue;if(J.type==="text"&&J.time?.end){let F=String(J.text??"").trim();if(F)process.stdout.write(F+M)}}if(G.type==="permission.asked"){if(!K||K.sessionID!==Y)continue;await V.permission.reply({requestID:String(K.id),reply:"once"})}if(G.type==="session.error"){if(!K||K.sessionID!==Y||!K.error)continue;let J=K.error,F=J?.data!==null&&typeof J?.data==="object"&&"message"in J.data?String(J.data.message):String(J?.name??J);H.error(F)}}}finally{z.stop(),await D.return?.(void 0).catch(()=>{})}})().catch((W)=>{console.error(W),process.exit(1)});let y=B.model?e.parseModel(B.model):void 0;await V.session.prompt({sessionID:Y,agent:B.agent,model:y,parts:[{type:"text",text:B.prompt}]}),z.markStarted(),await z.completion}var aB=BB({command:"$0 [project]",describe:"start qitqode tui",builder:(B)=>g(B).positional("project",{type:"string",describe:"path to start qitqode in"}).options(i).option("never-ask",{type:"boolean",describe:"start in never-ask mode \u2014 auto-decide without asking (permissions excluded), toggle at runtime with /never-ask",default:!1}).check((V)=>{if(V.dark&&V.light)throw Error("--dark and --light are mutually exclusive");if(V.sso&&!V.headless)throw Error("--sso requires --headless");if(V.sso&&V["api-key"]!==void 0)throw Error("--sso and --api-key are mutually exclusive");let X=Object.keys(WB).filter((Z)=>V[Z]);if(X.length>1)throw Error(`${X.map((Z)=>`--${Z}`).join(" and ")} are mutually exclusive \u2014 choose one tier flag`);if(X.length===1&&V.model)throw Error(`--${X[0]} and --model are mutually exclusive \u2014 use one or the other`);return!0}),handler:async(B)=>{if(B.monochrome)process.env.QITQODE_TUI_ACCESSIBLE="1",process.env.NO_COLOR="1";let V=VB();try{JB();let X=XB(B);if(X){H.error(X),process.exitCode=1;return}let Z=bB(B)??B.model,Y=q(process.env.PWD??process.cwd()),$=B.project?q(h.isAbsolute(B.project)?B.project:h.join(Y,B.project)):q(process.cwd());if(B.project&&!await E($)){let J=QB(B.project,$);if(H.error(J.error),J.hint)H.println(J.hint);process.exitCode=1;return}let z=T($);if(z){if(B.project){H.error("Cannot start in "+$+": "+z),process.exitCode=1;return}let J=q(GB.homedir());if(T(J)){H.error("Cannot start in "+$+": "+z),process.exitCode=1;return}x.warn("unsafe start directory, falling back to home",{requested:$,home:J}),$=J}let D=await FB();try{process.chdir($)}catch{H.error("Failed to change directory to "+$);return}let C=q(process.cwd()),I=p({[u]:"worker",[c]:l()}),y=new Worker(D,{env:I});y.onerror=(J)=>{x.error("thread error",{message:J.message,filename:J.filename,lineno:J.lineno,colno:J.colno,error:J.error})};let W=n(y),N=()=>{W.call("reload",void 0).catch((J)=>{x.warn("worker reload failed",{error:A(J)})})};process.on("SIGUSR2",N);let G=!1,K=async()=>{if(G)return;G=!0,process.off("SIGUSR2",N),await o(W.call("shutdown",void 0),5000).catch((J)=>{x.warn("worker shutdown failed",{error:A(J)})}),y.terminate()};try{let J=import("./chunk-mtpzcc14.js"),F=import("./chunk-hgmqz75r.js").then(({TuiConfig:_})=>_.get()),L=await _B(B.prompt),HB=await F;if(B.headless&&w(O(B))){H.error("--headless cannot be combined with network-listener flags (--port, --hostname, --mdns)"),process.exitCode=1;return}let k=O(B),j=w(k)?{url:(await W.call("server",k)).url,fetch:void 0,events:void 0}:{url:"http://qitqode.internal",fetch:jB(W),events:CB(W)};if(setTimeout(()=>{W.call("checkUpgrade",{directory:C}).catch(()=>{})},1000).unref?.(),B.headless){if(!L){H.error("--headless requires a prompt: pass --prompt or pipe input via stdin"),process.exitCode=1;return}if(B.sso){try{let Q=await r({tryOpen:!1,onCode:(b)=>{if(process.stdout.write(M),process.stdout.write(" To sign in, open: "+b.verificationUri+M),process.stdout.write(" and enter code: "+b.userCode+M),b.verificationUriComplete)process.stdout.write(M+" Or open this link directly:"+M+" "+b.verificationUriComplete+M);process.stdout.write(M+" Waiting for approval... (ctrl+c to cancel)"+M)}});await S.runPromise(P.gen(function*(){yield*(yield*U.Service).set("forgewise",t(Q,{rotateRefreshToken:!0}))})),process.stdout.write(" Signed in as "+(Q.name||Q.email)+M)}catch(Q){H.error("SSO sign-in failed: "+A(Q)),process.exitCode=1;return}await d({url:j.url,fetch:j.fetch,prompt:L,model:Z,agent:R(B)??m,directory:C});return}let _=$B(typeof B["api-key"]==="string"?String(B["api-key"]):"");if(_)await S.runPromise(zB(_));else if(!await S.runPromise(P.gen(function*(){if(yield*P.promise(()=>s()))return!0;return!!(yield*(yield*U.Service).get("forgewise"))}))){H.error(`Not signed in. Use one of:
2
+ import{a as $B,b as zB}from"./chunk-cng61dby.js";import"./chunk-f3zmdfqa.js";import"./chunk-ehb4hd9c.js";import{B as XB}from"./chunk-gsez13bg.js";import{C as JB,E as VB}from"./chunk-c8k32724.js";import"./chunk-q9tgdghx.js";import{X as YB,Y as ZB}from"./chunk-5ysbwr4x.js";import"./chunk-ff548b0j.js";import"./chunk-zc0cdvcv.js";import{ae as BB}from"./chunk-5w76kdjr.js";import{$f as i,Yf as g,Zf as w,_f as O}from"./chunk-cbnkx933.js";import{dg as H}from"./chunk-eg3syjtv.js";import{Fg as r}from"./chunk-pe2xdkez.js";import{Bh as S}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Qj as o,Tk as e,xj as U}from"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import{Ml as T}from"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import{ao as a,go as s,vo as t}from"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import{Gr as n}from"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import{bs as f}from"./chunk-vdrz2t9c.js";import{As as u,Bs as l,Ds as p,zs as c}from"./chunk-fr34mnyg.js";import{Hs as A}from"./chunk-r5zy4za0.js";import{Qs as x}from"./chunk-tr6rdr6h.js";import{ct as E,et as q}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import{eH as P}from"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import{wO as v}from"./chunk-r9w0thdk.js";import h from"path";import{fileURLToPath as KB}from"url";import{writeHeapSnapshot as MB}from"v8";import GB,{EOL as M}from"os";var WB={free:"free",default:"default",fast:"fast",economy:"economical",power:"power",orchestrated:"orchestrated"},m=ZB;function R(B){if(B.agent)return B.agent;return m}function QB(B,V){if(h.isAbsolute(B)||B.includes("/")||B.includes("\\")||B.startsWith(".")||B.startsWith("~"))return{error:"Directory not found: "+V};return{error:`Unknown command "${B}"`,hint:"Run `qitqode --help` to see the available commands, or pass an existing directory to start the TUI there."}}function bB(B){for(let[V,X]of Object.entries(WB))if(B[V]){let Z=f[X];if(Z)return`${Z.providerID}/${Z.modelID}`}return}function jB(B){return async(X,Z)=>{let Y=new Request(X,Z),$=Y.body?await Y.text():void 0,z=await B.call("fetch",{url:Y.url,method:Y.method,headers:Object.fromEntries(Y.headers.entries()),body:$});return new Response(z.body,{status:z.status,headers:z.headers})}}function CB(B){return{subscribe:async(V)=>{return B.on("global.event",(X)=>{V(X)})}}}async function FB(){if(typeof globalThis.QITQODE_WORKER_PATH<"u")return globalThis.QITQODE_WORKER_PATH;let B=new URL("./cli/cmd/tui/worker.js",import.meta.url);if(await E(KB(B)))return B;return new URL("./worker.ts",import.meta.url)}async function _B(B){let V=process.stdin.isTTY?void 0:await Bun.stdin.text();if(!B)return V;if(!V)return B;return V+`
3
+ `+B}async function d(B){let V=a({baseUrl:B.url,fetch:B.fetch,directory:B.directory}),X=[{permission:"question",action:"deny",pattern:"*"},{permission:"plan_enter",action:"deny",pattern:"*"},{permission:"plan_exit",action:"deny",pattern:"*"}],Y=(await V.session.create({permission:X})).data?.id;if(!Y){H.error("headless: failed to create session");return}let $=await V.event.subscribe(),z=YB({sessionID:Y,query:async()=>{return(await V.session.status()).data?.[Y]}}),D=$.stream[Symbol.asyncIterator](),C=z.completion.then(()=>"DONE");(async()=>{try{while(!0){let W=await Promise.race([D.next(),C]);if(W==="DONE")break;let N=W;if(N.done)break;let G=N.value;z.onEvent(G);let K=G.properties;if(G.type==="message.part.updated"){let J=K?.part;if(!J||J.sessionID!==Y)continue;if(J.type==="text"&&J.time?.end){let F=String(J.text??"").trim();if(F)process.stdout.write(F+M)}}if(G.type==="permission.asked"){if(!K||K.sessionID!==Y)continue;await V.permission.reply({requestID:String(K.id),reply:"once"})}if(G.type==="session.error"){if(!K||K.sessionID!==Y||!K.error)continue;let J=K.error,F=J?.data!==null&&typeof J?.data==="object"&&"message"in J.data?String(J.data.message):String(J?.name??J);H.error(F)}}}finally{z.stop(),await D.return?.(void 0).catch(()=>{})}})().catch((W)=>{console.error(W),process.exit(1)});let y=B.model?e.parseModel(B.model):void 0;await V.session.prompt({sessionID:Y,agent:B.agent,model:y,parts:[{type:"text",text:B.prompt}]}),z.markStarted(),await z.completion}var aB=BB({command:"$0 [project]",describe:"start qitqode tui",builder:(B)=>g(B).positional("project",{type:"string",describe:"path to start qitqode in"}).options(i).option("never-ask",{type:"boolean",describe:"start in never-ask mode \u2014 auto-decide without asking (permissions excluded), toggle at runtime with /never-ask",default:!1}).check((V)=>{if(V.dark&&V.light)throw Error("--dark and --light are mutually exclusive");if(V.sso&&!V.headless)throw Error("--sso requires --headless");if(V.sso&&V["api-key"]!==void 0)throw Error("--sso and --api-key are mutually exclusive");let X=Object.keys(WB).filter((Z)=>V[Z]);if(X.length>1)throw Error(`${X.map((Z)=>`--${Z}`).join(" and ")} are mutually exclusive \u2014 choose one tier flag`);if(X.length===1&&V.model)throw Error(`--${X[0]} and --model are mutually exclusive \u2014 use one or the other`);return!0}),handler:async(B)=>{if(B.monochrome)process.env.QITQODE_TUI_ACCESSIBLE="1",process.env.NO_COLOR="1";let V=VB();try{JB();let X=XB(B);if(X){H.error(X),process.exitCode=1;return}let Z=bB(B)??B.model,Y=q(process.env.PWD??process.cwd()),$=B.project?q(h.isAbsolute(B.project)?B.project:h.join(Y,B.project)):q(process.cwd());if(B.project&&!await E($)){let J=QB(B.project,$);if(H.error(J.error),J.hint)H.println(J.hint);process.exitCode=1;return}let z=T($);if(z){if(B.project){H.error("Cannot start in "+$+": "+z),process.exitCode=1;return}let J=q(GB.homedir());if(T(J)){H.error("Cannot start in "+$+": "+z),process.exitCode=1;return}x.warn("unsafe start directory, falling back to home",{requested:$,home:J}),$=J}let D=await FB();try{process.chdir($)}catch{H.error("Failed to change directory to "+$);return}let C=q(process.cwd()),I=p({[u]:"worker",[c]:l()}),y=new Worker(D,{env:I});y.onerror=(J)=>{x.error("thread error",{message:J.message,filename:J.filename,lineno:J.lineno,colno:J.colno,error:J.error})};let W=n(y),N=()=>{W.call("reload",void 0).catch((J)=>{x.warn("worker reload failed",{error:A(J)})})};process.on("SIGUSR2",N);let G=!1,K=async()=>{if(G)return;G=!0,process.off("SIGUSR2",N),await o(W.call("shutdown",void 0),5000).catch((J)=>{x.warn("worker shutdown failed",{error:A(J)})}),y.terminate()};try{let J=import("./chunk-vj4x8hvz.js"),F=import("./chunk-gdn91t9j.js").then(({TuiConfig:_})=>_.get()),L=await _B(B.prompt),HB=await F;if(B.headless&&w(O(B))){H.error("--headless cannot be combined with network-listener flags (--port, --hostname, --mdns)"),process.exitCode=1;return}let k=O(B),j=w(k)?{url:(await W.call("server",k)).url,fetch:void 0,events:void 0}:{url:"http://qitqode.internal",fetch:jB(W),events:CB(W)};if(setTimeout(()=>{W.call("checkUpgrade",{directory:C}).catch(()=>{})},1000).unref?.(),B.headless){if(!L){H.error("--headless requires a prompt: pass --prompt or pipe input via stdin"),process.exitCode=1;return}if(B.sso){try{let Q=await r({tryOpen:!1,onCode:(b)=>{if(process.stdout.write(M),process.stdout.write(" To sign in, open: "+b.verificationUri+M),process.stdout.write(" and enter code: "+b.userCode+M),b.verificationUriComplete)process.stdout.write(M+" Or open this link directly:"+M+" "+b.verificationUriComplete+M);process.stdout.write(M+" Waiting for approval... (ctrl+c to cancel)"+M)}});await S.runPromise(P.gen(function*(){yield*(yield*U.Service).set("forgewise",t(Q,{rotateRefreshToken:!0}))})),process.stdout.write(" Signed in as "+(Q.name||Q.email)+M)}catch(Q){H.error("SSO sign-in failed: "+A(Q)),process.exitCode=1;return}await d({url:j.url,fetch:j.fetch,prompt:L,model:Z,agent:R(B)??m,directory:C});return}let _=$B(typeof B["api-key"]==="string"?String(B["api-key"]):"");if(_)await S.runPromise(zB(_));else if(!await S.runPromise(P.gen(function*(){if(yield*P.promise(()=>s()))return!0;return!!(yield*(yield*U.Service).get("forgewise"))}))){H.error(`Not signed in. Use one of:
4
4
  qitqode auth login (browser / device-code flow)
5
5
  qitqode auth login --api-key (paste a Qortex API key)
6
6
  --api-key <key> (inline for this run)
@@ -1,2 +1,2 @@
1
1
  // @bun
2
- import{Pd as y}from"./chunk-2nv1scj9.js";import{ae as L}from"./chunk-5w76kdjr.js";import{Bh as w,_g as N}from"./chunk-v3nqkqhz.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Vk as q,cl as v}from"./chunk-52frd9p0.js";import"./chunk-xqnzmr7a.js";import{Dl as k,Nl as O,vl as V,wl as A,xl as E}from"./chunk-r1xh50b2.js";import"./chunk-13rsd5vv.js";import"./chunk-mh19kwzw.js";import"./chunk-a9a0cwmf.js";import"./chunk-nw3e93y8.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-kn8w69g9.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-2b3fn9xv.js";import"./chunk-rn043d0r.js";import"./chunk-73r8bjjz.js";import"./chunk-t5xxs5kp.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-w2cb8cry.js";import"./chunk-kj8cmn7z.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as P}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";import{EOL as X}from"os";function U(C){let G=C.match(/^https?:\/\/[^/]+\/share\/([a-zA-Z0-9_-]+)$/);return G?G[1]:null}function M(C,G){try{return new URL(C).origin===new URL(G).origin}catch{return!1}}function S(C){let G=C.find((z)=>z.type==="session");if(!G)return null;let Z=new Map,Q=new Map;for(let z of C)if(z.type==="message")Z.set(z.data.id,z.data);else if(z.type==="part"){if(!Q.has(z.data.messageID))Q.set(z.data.messageID,[]);Q.get(z.data.messageID).push(z.data)}if(Z.size===0)return null;return{info:G.data,messages:Array.from(Z.values()).map((z)=>({info:z,parts:Q.get(z.id)??[]}))}}var m=L({command:"import <file>",describe:"import session data from JSON file or URL",builder:(C)=>{return C.positional("file",{describe:"path to JSON file or share URL",type:"string",demandOption:!0})},handler:async(C)=>{await y(process.cwd(),async()=>{let G;if(C.file.startsWith("http://")||C.file.startsWith("https://")){let J=U(C.file);if(!J){let Y=await w.runPromise(N.Service.use((R)=>R.url()));process.stdout.write(`Invalid URL format. Expected: ${Y}/share/<slug>`),process.stdout.write(X);return}let _=new URL(C.file).origin,$=await w.runPromise(N.Service.use((Y)=>Y.request())),j=M(C.file,$.baseUrl)?$.headers:{},W=$.api.data(J),K=await fetch(`${_}${W}`,{headers:j});if(!K.ok&&W!==`/api/share/${J}/data`)K=await fetch(`${_}/api/share/${J}/data`,{headers:j});if(!K.ok){process.stdout.write(`Failed to fetch share data: ${K.statusText}`),process.stdout.write(X);return}let H=await K.json(),B=S(H);if(!B){process.stdout.write(`Share not found or empty: ${J}`),process.stdout.write(X);return}G=B}else if(G=await P.readJson(C.file).catch(()=>{return}),!G){process.stdout.write(`File not found: ${C.file}`),process.stdout.write(X);return}if(!G){process.stdout.write("Failed to read session data"),process.stdout.write(X);return}let Q=v.Info.parse({...G.info,projectID:O.project.id}),z=v.toRow(Q);k.use((J)=>J.insert(V).values(z).onConflictDoUpdate({target:V.id,set:{project_id:z.project_id}}).run());for(let J of G.messages){let F=q.Info.parse(J.info),{id:_,sessionID:$,...j}=F;k.use((W)=>W.insert(A).values({id:_,session_id:z.id,time_created:F.time?.created??Date.now(),data:j}).onConflictDoNothing().run());for(let W of J.parts){let K=q.Part.parse(W),{id:H,sessionID:B,messageID:Y,...R}=K;k.use((T)=>T.insert(E).values({id:H,message_id:Y,session_id:z.id,data:R}).onConflictDoNothing().run())}}process.stdout.write(`Imported session: ${G.info.id}`),process.stdout.write(X)})}});export{S as transformShareData,M as shouldAttachShareAuthHeaders,U as parseShareUrl,m as ImportCommand};
2
+ import{Pd as y}from"./chunk-da6kggv7.js";import{ae as L}from"./chunk-5w76kdjr.js";import{Bh as w,_g as N}from"./chunk-hjt94wce.js";import"./chunk-w46g7kdq.js";import"./chunk-bd21p9zz.js";import"./chunk-p54bzjtv.js";import"./chunk-ha1w0xzh.js";import"./chunk-6m9jb0s9.js";import"./chunk-vygkwwjd.js";import{Vk as q,cl as v}from"./chunk-k3dacdp5.js";import"./chunk-99s035f0.js";import{Dl as k,Nl as O,vl as V,wl as A,xl as E}from"./chunk-h9wh48d0.js";import"./chunk-tzb26ntq.js";import"./chunk-mh19kwzw.js";import"./chunk-q3h42a94.js";import"./chunk-hqbbs9dm.js";import"./chunk-9zm6r55d.js";import"./chunk-vcygx6hs.js";import"./chunk-khzzmyk2.js";import"./chunk-y7hgevfv.js";import"./chunk-47k5jy1p.js";import"./chunk-cfhfc86j.js";import"./chunk-ph8hn1wt.js";import"./chunk-ptqk1j2r.js";import"./chunk-cqtkxwd8.js";import"./chunk-pr7z5dj8.js";import"./chunk-dnnkq5y4.js";import"./chunk-t239rvej.js";import"./chunk-yz25607t.js";import"./chunk-7hvf9dgx.js";import"./chunk-wkg3c643.js";import"./chunk-fhqfqd5v.js";import"./chunk-q3nvzhyh.js";import"./chunk-5df5aja0.js";import"./chunk-73r8bjjz.js";import"./chunk-xy0gnpen.js";import"./chunk-ztyy3ga3.js";import"./chunk-mmjgf680.js";import"./chunk-nj1ntakd.js";import"./chunk-cmb62jkt.js";import"./chunk-tkrwcjkr.js";import"./chunk-vdrz2t9c.js";import"./chunk-fr34mnyg.js";import"./chunk-r5zy4za0.js";import"./chunk-tr6rdr6h.js";import{ft as P}from"./chunk-at22twxx.js";import"./chunk-kgptyf7n.js";import"./chunk-j9h1sp4g.js";import"./chunk-p6crzjtf.js";import"./chunk-55fcmswd.js";import"./chunk-qnvsqnz5.js";import"./chunk-pxm4qvqk.js";import"./chunk-j8fcfhr2.js";import"./chunk-r9w0thdk.js";import{EOL as X}from"os";function U(C){let G=C.match(/^https?:\/\/[^/]+\/share\/([a-zA-Z0-9_-]+)$/);return G?G[1]:null}function M(C,G){try{return new URL(C).origin===new URL(G).origin}catch{return!1}}function S(C){let G=C.find((z)=>z.type==="session");if(!G)return null;let Z=new Map,Q=new Map;for(let z of C)if(z.type==="message")Z.set(z.data.id,z.data);else if(z.type==="part"){if(!Q.has(z.data.messageID))Q.set(z.data.messageID,[]);Q.get(z.data.messageID).push(z.data)}if(Z.size===0)return null;return{info:G.data,messages:Array.from(Z.values()).map((z)=>({info:z,parts:Q.get(z.id)??[]}))}}var m=L({command:"import <file>",describe:"import session data from JSON file or URL",builder:(C)=>{return C.positional("file",{describe:"path to JSON file or share URL",type:"string",demandOption:!0})},handler:async(C)=>{await y(process.cwd(),async()=>{let G;if(C.file.startsWith("http://")||C.file.startsWith("https://")){let J=U(C.file);if(!J){let Y=await w.runPromise(N.Service.use((R)=>R.url()));process.stdout.write(`Invalid URL format. Expected: ${Y}/share/<slug>`),process.stdout.write(X);return}let _=new URL(C.file).origin,$=await w.runPromise(N.Service.use((Y)=>Y.request())),j=M(C.file,$.baseUrl)?$.headers:{},W=$.api.data(J),K=await fetch(`${_}${W}`,{headers:j});if(!K.ok&&W!==`/api/share/${J}/data`)K=await fetch(`${_}/api/share/${J}/data`,{headers:j});if(!K.ok){process.stdout.write(`Failed to fetch share data: ${K.statusText}`),process.stdout.write(X);return}let H=await K.json(),B=S(H);if(!B){process.stdout.write(`Share not found or empty: ${J}`),process.stdout.write(X);return}G=B}else if(G=await P.readJson(C.file).catch(()=>{return}),!G){process.stdout.write(`File not found: ${C.file}`),process.stdout.write(X);return}if(!G){process.stdout.write("Failed to read session data"),process.stdout.write(X);return}let Q=v.Info.parse({...G.info,projectID:O.project.id}),z=v.toRow(Q);k.use((J)=>J.insert(V).values(z).onConflictDoUpdate({target:V.id,set:{project_id:z.project_id}}).run());for(let J of G.messages){let F=q.Info.parse(J.info),{id:_,sessionID:$,...j}=F;k.use((W)=>W.insert(A).values({id:_,session_id:z.id,time_created:F.time?.created??Date.now(),data:j}).onConflictDoNothing().run());for(let W of J.parts){let K=q.Part.parse(W),{id:H,sessionID:B,messageID:Y,...R}=K;k.use((T)=>T.insert(E).values({id:H,message_id:Y,session_id:z.id,data:R}).onConflictDoNothing().run())}}process.stdout.write(`Imported session: ${G.info.id}`),process.stdout.write(X)})}});export{S as transformShareData,M as shouldAttachShareAuthHeaders,U as parseShareUrl,m as ImportCommand};