[{"data":1,"prerenderedAt":1354},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fthe-m-shell":3,"surround-\u002Fdocs\u002Fthe-m-shell":1316,"docs-nav":1320},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"order":10,"group":11,"body":12,"_type":1310,"_id":1311,"_source":1312,"_file":1313,"_stem":1314,"_extension":1315},"\u002Fdocs\u002Fthe-m-shell","docs",false,"","The m-shell","The interactive, conversational shell — intent routing, inline approvals, a live TUI, resumable sessions and time travel.",2,"Get started",{"type":13,"children":14,"toc":1295},"root",[15,40,52,59,172,177,184,189,347,353,366,370,398,404,491,497,509,636,671,677,682,768,781,787,836,842,878,897,903,973,979,1013,1017,1044,1050,1060,1211,1239,1245,1289],{"type":16,"tag":17,"props":18,"children":19},"element","p",{},[20,23,30,32,38],{"type":21,"value":22},"text","Run ",{"type":16,"tag":24,"props":25,"children":27},"code",{"className":26},[],[28],{"type":21,"value":29},"excalibur",{"type":21,"value":31}," with no arguments and you enter the ",{"type":16,"tag":33,"props":34,"children":35},"strong",{},[36],{"type":21,"value":37},"m-shell",{"type":21,"value":39},": an interactive, conversational session and the main surface of the product. It's a thin layer over the same primitives the one-shot commands use — the event stream, the phase engine, the permission engine, Discovery — so nothing it does is hidden.",{"type":16,"tag":41,"props":42,"children":51},"welcome",{"image":43,"model":44,"name":45,"org":46,"tip":47,"user":48,"version":49,"whatsNew":50},"\u002FIsotype-diagonal.svg","kimi-k2.7-code","Rafael","ExcaliburOSS","Just describe what you want — Excalibur routes it. Press \u002F for commands, ↑ for history.","rafael","0.1.0","Time machine: rewind any run and fork from any step — only what changed re-runs.",[],{"type":16,"tag":53,"props":54,"children":56},"h2",{"id":55},"three-ways-to-talk-to-it",[57],{"type":21,"value":58},"Three ways to talk to it",{"type":16,"tag":60,"props":61,"children":62},"table",{},[63,87],{"type":16,"tag":64,"props":65,"children":66},"thead",{},[67],{"type":16,"tag":68,"props":69,"children":70},"tr",{},[71,77,82],{"type":16,"tag":72,"props":73,"children":74},"th",{},[75],{"type":21,"value":76},"Mode",{"type":16,"tag":72,"props":78,"children":79},{},[80],{"type":21,"value":81},"Trigger",{"type":16,"tag":72,"props":83,"children":84},{},[85],{"type":21,"value":86},"Use it for",{"type":16,"tag":88,"props":89,"children":90},"tbody",{},[91,113,147],{"type":16,"tag":68,"props":92,"children":93},{},[94,103,108],{"type":16,"tag":95,"props":96,"children":97},"td",{},[98],{"type":16,"tag":33,"props":99,"children":100},{},[101],{"type":21,"value":102},"Natural language",{"type":16,"tag":95,"props":104,"children":105},{},[106],{"type":21,"value":107},"just type",{"type":16,"tag":95,"props":109,"children":110},{},[111],{"type":21,"value":112},"Describe a task or ask a question — Excalibur routes intent.",{"type":16,"tag":68,"props":114,"children":115},{},[116,124,133],{"type":16,"tag":95,"props":117,"children":118},{},[119],{"type":16,"tag":33,"props":120,"children":121},{},[122],{"type":21,"value":123},"Slash commands",{"type":16,"tag":95,"props":125,"children":126},{},[127],{"type":16,"tag":24,"props":128,"children":130},{"className":129},[],[131],{"type":21,"value":132},"\u002F…",{"type":16,"tag":95,"props":134,"children":135},{},[136,138,145],{"type":21,"value":137},"Explicit control with autocompletion (see the ",{"type":16,"tag":139,"props":140,"children":142},"a",{"href":141},"\u002Fdocs\u002Fcommands",[143],{"type":21,"value":144},"command reference",{"type":21,"value":146},").",{"type":16,"tag":68,"props":148,"children":149},{},[150,158,167],{"type":16,"tag":95,"props":151,"children":152},{},[153],{"type":16,"tag":33,"props":154,"children":155},{},[156],{"type":21,"value":157},"Shell passthrough",{"type":16,"tag":95,"props":159,"children":160},{},[161],{"type":16,"tag":24,"props":162,"children":164},{"className":163},[],[165],{"type":21,"value":166},"!…",{"type":16,"tag":95,"props":168,"children":169},{},[170],{"type":21,"value":171},"Run a shell command without leaving the session.",{"type":16,"tag":173,"props":174,"children":176},"shell",{":lines":175,"title":29},"[{\"kind\":\"prompt\",\"text\":\"refactor the billing module to drop the duplicated tax logic\"},{\"kind\":\"head\",\"text\":\"intent: refactor · workflow: safe-refactor · autonomy: L3\"},{\"kind\":\"arrow\",\"text\":\"plan ready — 6 steps   [Enter] run · [m] modify · [c] careful\"},{\"kind\":\"blank\"},{\"kind\":\"prompt\",\"text\":\"\u002Fmodel kimi-k2.7-code\"},{\"kind\":\"prompt\",\"text\":\"!git status\"}]",[],{"type":16,"tag":178,"props":179,"children":181},"h3",{"id":180},"how-intent-routing-works",[182],{"type":21,"value":183},"How intent routing works",{"type":16,"tag":17,"props":185,"children":186},{},[187],{"type":21,"value":188},"Natural-language input is classified and routed — \"an implicit run, but intelligent,\" never blind:",{"type":16,"tag":60,"props":190,"children":191},{},[192,213],{"type":16,"tag":64,"props":193,"children":194},{},[195],{"type":16,"tag":68,"props":196,"children":197},{},[198,203,208],{"type":16,"tag":72,"props":199,"children":200},{},[201],{"type":21,"value":202},"You type",{"type":16,"tag":72,"props":204,"children":205},{},[206],{"type":21,"value":207},"Routed to",{"type":16,"tag":72,"props":209,"children":210},{},[211],{"type":21,"value":212},"Autonomy",{"type":16,"tag":88,"props":214,"children":215},{},[216,234,252,283,312,330],{"type":16,"tag":68,"props":217,"children":218},{},[219,224,229],{"type":16,"tag":95,"props":220,"children":221},{},[222],{"type":21,"value":223},"a question (\"how does X work?\")",{"type":16,"tag":95,"props":225,"children":226},{},[227],{"type":21,"value":228},"assist",{"type":16,"tag":95,"props":230,"children":231},{},[232],{"type":21,"value":233},"L1",{"type":16,"tag":68,"props":235,"children":236},{},[237,242,247],{"type":16,"tag":95,"props":238,"children":239},{},[240],{"type":21,"value":241},"an actionable task (\"add pagination…\")",{"type":16,"tag":95,"props":243,"children":244},{},[245],{"type":21,"value":246},"agentic run (with confirmation)",{"type":16,"tag":95,"props":248,"children":249},{},[250],{"type":21,"value":251},"L3",{"type":16,"tag":68,"props":253,"children":254},{},[255,260,278],{"type":16,"tag":95,"props":256,"children":257},{},[258],{"type":21,"value":259},"\"what's involved in X?\" \u002F \"scope this\"",{"type":16,"tag":95,"props":261,"children":262},{},[263,265,276],{"type":21,"value":264},"a read-only ",{"type":16,"tag":139,"props":266,"children":268},{"href":267},"#understand-first-scope",[269,274],{"type":16,"tag":33,"props":270,"children":271},{},[272],{"type":21,"value":273},"scope",{"type":21,"value":275}," map",{"type":21,"value":277}," first",{"type":16,"tag":95,"props":279,"children":280},{},[281],{"type":21,"value":282},"L0",{"type":16,"tag":68,"props":284,"children":285},{},[286,291,307],{"type":16,"tag":95,"props":287,"children":288},{},[289],{"type":21,"value":290},"a big, multi-part goal",{"type":16,"tag":95,"props":292,"children":293},{},[294,296,305],{"type":21,"value":295},"a ",{"type":16,"tag":139,"props":297,"children":299},{"href":298},"\u002Fdocs\u002Fmissions",[300],{"type":16,"tag":33,"props":301,"children":302},{},[303],{"type":21,"value":304},"mission",{"type":21,"value":306}," — auto-planned, end to end",{"type":16,"tag":95,"props":308,"children":309},{},[310],{"type":21,"value":311},"L4",{"type":16,"tag":68,"props":313,"children":314},{},[315,320,325],{"type":16,"tag":95,"props":316,"children":317},{},[318],{"type":21,"value":319},"something ambiguous or risky to assume",{"type":16,"tag":95,"props":321,"children":322},{},[323],{"type":21,"value":324},"a Discovery prompt first",{"type":16,"tag":95,"props":326,"children":327},{},[328],{"type":21,"value":329},"L0–L1",{"type":16,"tag":68,"props":331,"children":332},{},[333,338,343],{"type":16,"tag":95,"props":334,"children":335},{},[336],{"type":21,"value":337},"sensitive paths \u002F large blast radius",{"type":16,"tag":95,"props":339,"children":340},{},[341],{"type":21,"value":342},"careful mode",{"type":16,"tag":95,"props":344,"children":345},{},[346],{"type":21,"value":311},{"type":16,"tag":53,"props":348,"children":350},{"id":349},"inline-approvals",[351],{"type":21,"value":352},"Inline approvals",{"type":16,"tag":17,"props":354,"children":355},{},[356,358,364],{"type":21,"value":357},"Risky operations pause for a one-keystroke decision, always respecting the ",{"type":16,"tag":24,"props":359,"children":361},{"className":360},[],[362],{"type":21,"value":363},"standard-safe",{"type":21,"value":365}," preset:",{"type":16,"tag":173,"props":367,"children":369},{":lines":368,"title":29},"[{\"kind\":\"ok\",\"text\":\"edit  src\u002Fbilling\u002Ftax.ts\",\"note\":\"+38 −12\",\"tone\":\"accent\"},{\"kind\":\"warn\",\"text\":\"apply patch to a sensitive path?\"},{\"kind\":\"dim\",\"text\":\"y approve   ·   N reject   ·   a always\"}]",[],{"type":16,"tag":17,"props":371,"children":372},{},[373,375,380,382,388,390,396],{"type":21,"value":374},"Choosing ",{"type":16,"tag":33,"props":376,"children":377},{},[378],{"type":21,"value":379},"always",{"type":21,"value":381}," writes an allowlist entry to ",{"type":16,"tag":24,"props":383,"children":385},{"className":384},[],[386],{"type":21,"value":387},".excalibur\u002Fconfig.yaml",{"type":21,"value":389},", so a given action is confirmed once. See ",{"type":16,"tag":139,"props":391,"children":393},{"href":392},"\u002Fdocs\u002Fsafety",[394],{"type":21,"value":395},"Safety",{"type":21,"value":397}," for what requires approval by default.",{"type":16,"tag":53,"props":399,"children":401},{"id":400},"editing-input-like-youd-expect",[402],{"type":21,"value":403},"Editing input, like you'd expect",{"type":16,"tag":405,"props":406,"children":407},"ul",{},[408,419,453,478],{"type":16,"tag":409,"props":410,"children":411},"li",{},[412,417],{"type":16,"tag":33,"props":413,"children":414},{},[415],{"type":21,"value":416},"↑ \u002F ↓",{"type":21,"value":418}," walk your prompt history (persisted per repo) to reuse and edit earlier prompts.",{"type":16,"tag":409,"props":420,"children":421},{},[422,427,429,435,437,443,445,451],{"type":16,"tag":33,"props":423,"children":424},{},[425],{"type":21,"value":426},"Interrupt anytime",{"type":21,"value":428}," — type while a run streams and Excalibur ",{"type":16,"tag":430,"props":431,"children":432},"em",{},[433],{"type":21,"value":434},"reads what you mean",{"type":21,"value":436}," instead of blindly queuing it (see ",{"type":16,"tag":139,"props":438,"children":440},{"href":439},"#interrupt-it-without-losing-the-work",[441],{"type":21,"value":442},"below",{"type":21,"value":444},"). ",{"type":16,"tag":24,"props":446,"children":448},{"className":447},[],[449],{"type":21,"value":450},"Esc",{"type":21,"value":452}," cancels the running step.",{"type":16,"tag":409,"props":454,"children":455},{},[456,465,467,476],{"type":16,"tag":33,"props":457,"children":458},{},[459],{"type":16,"tag":24,"props":460,"children":462},{"className":461},[],[463],{"type":21,"value":464},"@file",{"type":21,"value":466}," and ",{"type":16,"tag":33,"props":468,"children":469},{},[470],{"type":16,"tag":24,"props":471,"children":473},{"className":472},[],[474],{"type":21,"value":475},"#symbol",{"type":21,"value":477}," pull fresh context straight from disk at send time.",{"type":16,"tag":409,"props":479,"children":480},{},[481,483,489],{"type":21,"value":482},"Multiline editing, with your ",{"type":16,"tag":24,"props":484,"children":486},{"className":485},[],[487],{"type":21,"value":488},"$EDITOR",{"type":21,"value":490}," for longer prompts.",{"type":16,"tag":53,"props":492,"children":494},{"id":493},"interrupt-it-without-losing-the-work",[495],{"type":21,"value":496},"Interrupt it — without losing the work",{"type":16,"tag":17,"props":498,"children":499},{},[500,502,507],{"type":21,"value":501},"Talk to Excalibur ",{"type":16,"tag":430,"props":503,"children":504},{},[505],{"type":21,"value":506},"while",{"type":21,"value":508}," a run is streaming and it triages what you said, instead of forgetting the work in flight (the thing other agents get wrong):",{"type":16,"tag":60,"props":510,"children":511},{},[512,528],{"type":16,"tag":64,"props":513,"children":514},{},[515],{"type":16,"tag":68,"props":516,"children":517},{},[518,523],{"type":16,"tag":72,"props":519,"children":520},{},[521],{"type":21,"value":522},"You type mid-run",{"type":16,"tag":72,"props":524,"children":525},{},[526],{"type":21,"value":527},"What happens",{"type":16,"tag":88,"props":529,"children":530},{},[531,549,567,595,623],{"type":16,"tag":68,"props":532,"children":533},{},[534,539],{"type":16,"tag":95,"props":535,"children":536},{},[537],{"type":21,"value":538},"a correction or \"also do X\"",{"type":16,"tag":95,"props":540,"children":541},{},[542,547],{"type":16,"tag":33,"props":543,"children":544},{},[545],{"type":21,"value":546},"folds",{"type":21,"value":548}," into the running work",{"type":16,"tag":68,"props":550,"children":551},{},[552,557],{"type":16,"tag":95,"props":553,"children":554},{},[555],{"type":21,"value":556},"a quick question",{"type":16,"tag":95,"props":558,"children":559},{},[560,565],{"type":16,"tag":33,"props":561,"children":562},{},[563],{"type":21,"value":564},"answered inline",{"type":21,"value":566}," — the run keeps going",{"type":16,"tag":68,"props":568,"children":569},{},[570,575],{"type":16,"tag":95,"props":571,"children":572},{},[573],{"type":21,"value":574},"separate, independent work",{"type":16,"tag":95,"props":576,"children":577},{},[578,580,585,587,593],{"type":21,"value":579},"spun off as a ",{"type":16,"tag":33,"props":581,"children":582},{},[583],{"type":21,"value":584},"parallel background thread",{"type":21,"value":586}," (",{"type":16,"tag":24,"props":588,"children":590},{"className":589},[],[591],{"type":21,"value":592},"\u002Fbg",{"type":21,"value":594},")",{"type":16,"tag":68,"props":596,"children":597},{},[598,608],{"type":16,"tag":95,"props":599,"children":600},{},[601,603],{"type":21,"value":602},"different work that would ",{"type":16,"tag":33,"props":604,"children":605},{},[606],{"type":21,"value":607},"conflict",{"type":16,"tag":95,"props":609,"children":610},{},[611,616,618],{"type":16,"tag":33,"props":612,"children":613},{},[614],{"type":21,"value":615},"pauses",{"type":21,"value":617}," the current run, switches to the new, then ",{"type":16,"tag":33,"props":619,"children":620},{},[621],{"type":21,"value":622},"offers to resume",{"type":16,"tag":68,"props":624,"children":625},{},[626,631],{"type":16,"tag":95,"props":627,"children":628},{},[629],{"type":21,"value":630},"\"stop\" \u002F \"wait, cancel\"",{"type":16,"tag":95,"props":632,"children":633},{},[634],{"type":21,"value":635},"aborts the run",{"type":16,"tag":17,"props":637,"children":638},{},[639,641,646,648,654,656,662,664,669],{"type":21,"value":640},"A paused run is a first-class, ",{"type":16,"tag":33,"props":642,"children":643},{},[644],{"type":21,"value":645},"resumable",{"type":21,"value":647}," thread: ",{"type":16,"tag":24,"props":649,"children":651},{"className":650},[],[652],{"type":21,"value":653},"\u002Fthreads",{"type":21,"value":655}," lists it with a ⏸ marker and the status line shows ",{"type":16,"tag":24,"props":657,"children":659},{"className":658},[],[660],{"type":21,"value":661},"N paused",{"type":21,"value":663},". ",{"type":16,"tag":24,"props":665,"children":667},{"className":666},[],[668],{"type":21,"value":450},{"type":21,"value":670}," always hard-cancels the current step — nothing you typed is ever silently dropped.",{"type":16,"tag":53,"props":672,"children":674},{"id":673},"a-live-tui-you-can-read",[675],{"type":21,"value":676},"A live TUI you can read",{"type":16,"tag":17,"props":678,"children":679},{},[680],{"type":21,"value":681},"One stream of events renders into a calm, legible system:",{"type":16,"tag":405,"props":683,"children":684},{},[685,695,705,715,725,735],{"type":16,"tag":409,"props":686,"children":687},{},[688,693],{"type":16,"tag":33,"props":689,"children":690},{},[691],{"type":21,"value":692},"Phase timeline",{"type":21,"value":694}," — a vertical rail that fills as Plan → Implement → Verify → Document → Review → PR complete.",{"type":16,"tag":409,"props":696,"children":697},{},[698,703],{"type":16,"tag":33,"props":699,"children":700},{},[701],{"type":21,"value":702},"Narration",{"type":21,"value":704}," — between actions the agent talks to you like a pair-programmer: warm, first-person prose, streamed token-by-token, in your language.",{"type":16,"tag":409,"props":706,"children":707},{},[708,713],{"type":16,"tag":33,"props":709,"children":710},{},[711],{"type":21,"value":712},"Thinking indicator",{"type":21,"value":714}," — the agent's real current action, with a live tokens\u002Fcost ticker.",{"type":16,"tag":409,"props":716,"children":717},{},[718,723],{"type":16,"tag":33,"props":719,"children":720},{},[721],{"type":21,"value":722},"Diffs",{"type":21,"value":724}," with a gutter, inline under the active phase.",{"type":16,"tag":409,"props":726,"children":727},{},[728,733],{"type":16,"tag":33,"props":729,"children":730},{},[731],{"type":21,"value":732},"Swarm lanes",{"type":21,"value":734}," — one lane per parallel agent on larger tasks.",{"type":16,"tag":409,"props":736,"children":737},{},[738,743,745,751,753,759,761,766],{"type":16,"tag":33,"props":739,"children":740},{},[741],{"type":21,"value":742},"Status line",{"type":21,"value":744},", always visible: ",{"type":16,"tag":24,"props":746,"children":748},{"className":747},[],[749],{"type":21,"value":750},"autonomy · workflow · model · elapsed · cost · safety",{"type":21,"value":752}," — plus ",{"type":16,"tag":24,"props":754,"children":756},{"className":755},[],[757],{"type":21,"value":758},"ctx NN%",{"type":21,"value":760}," (how full the context window is) and ",{"type":16,"tag":24,"props":762,"children":764},{"className":763},[],[765],{"type":21,"value":661},{"type":21,"value":767}," when you've parked work.",{"type":16,"tag":17,"props":769,"children":770},{},[771,773,779],{"type":21,"value":772},"The theme auto-adapts to your terminal (truecolor → 256 → 16 → ",{"type":16,"tag":24,"props":774,"children":776},{"className":775},[],[777],{"type":21,"value":778},"NO_COLOR",{"type":21,"value":780},"), with a nerd-font glyph set and an ASCII fallback, and degrades to plain logs over SSH\u002FCI.",{"type":16,"tag":53,"props":782,"children":784},{"id":783},"understand-first-scope",[785],{"type":21,"value":786},"Understand-first scope",{"type":16,"tag":17,"props":788,"children":789},{},[790,792,797,799,804,806,812,814,819,821,826,828,834],{"type":21,"value":791},"Before building something non-trivial, map the ground first — ",{"type":16,"tag":33,"props":793,"children":794},{},[795],{"type":21,"value":796},"read-only",{"type":21,"value":798},". Ask ",{"type":16,"tag":430,"props":800,"children":801},{},[802],{"type":21,"value":803},"\"what's involved in adding X?\"",{"type":21,"value":805}," (or run ",{"type":16,"tag":24,"props":807,"children":809},{"className":808},[],[810],{"type":21,"value":811},"excalibur scope \"\u003Ctask>\"",{"type":21,"value":813},") and Excalibur fans out parallel read-only explorers and returns a ",{"type":16,"tag":33,"props":815,"children":816},{},[817],{"type":21,"value":818},"scope map",{"type":21,"value":820},": the relevant files and subsystems, what already exists vs. what's still missing, and the risks — no edits, nothing to approve. On a large build it runs this ",{"type":16,"tag":33,"props":822,"children":823},{},[824],{"type":21,"value":825},"automatically before planning",{"type":21,"value":827},", so the plan (and ",{"type":16,"tag":139,"props":829,"children":831},{"href":830},"\u002Fdocs\u002Fdiscovery#plan-shaping",[832],{"type":21,"value":833},"plan-shaping",{"type":21,"value":835},") is grounded in your real code, not guesses.",{"type":16,"tag":53,"props":837,"children":839},{"id":838},"slash-commands-your-own",[840],{"type":21,"value":841},"Slash commands & your own",{"type":16,"tag":17,"props":843,"children":844},{},[845,847,853,855,861,863,869,871,877],{"type":21,"value":846},"Every built-in command has a slash form, and any ",{"type":16,"tag":24,"props":848,"children":850},{"className":849},[],[851],{"type":21,"value":852},"prompt_template",{"type":21,"value":854}," (per-user or per-repo) becomes an invocable ",{"type":16,"tag":24,"props":856,"children":858},{"className":857},[],[859],{"type":21,"value":860},"\u002Fcommand",{"type":21,"value":862}," with placeholders (",{"type":16,"tag":24,"props":864,"children":866},{"className":865},[],[867],{"type":21,"value":868},"$1",{"type":21,"value":870},", ",{"type":16,"tag":24,"props":872,"children":874},{"className":873},[],[875],{"type":21,"value":876},"$ARGUMENTS",{"type":21,"value":146},{"type":16,"tag":879,"props":880,"children":881},"note",{},[882],{"type":16,"tag":17,"props":883,"children":884},{},[885,887,895],{"type":21,"value":886},"See the ",{"type":16,"tag":33,"props":888,"children":889},{},[890],{"type":16,"tag":139,"props":891,"children":892},{"href":141},[893],{"type":21,"value":894},"full command reference",{"type":21,"value":896}," for every slash command and its CLI equivalent.",{"type":16,"tag":53,"props":898,"children":900},{"id":899},"sessions-memory",[901],{"type":21,"value":902},"Sessions & memory",{"type":16,"tag":405,"props":904,"children":905},{},[906,941,960],{"type":16,"tag":409,"props":907,"children":908},{},[909,911,915,917,923,925,931,933,939],{"type":21,"value":910},"Sessions are ",{"type":16,"tag":33,"props":912,"children":913},{},[914],{"type":21,"value":645},{"type":21,"value":916},": ",{"type":16,"tag":24,"props":918,"children":920},{"className":919},[],[921],{"type":21,"value":922},"excalibur --continue",{"type":21,"value":924}," (or ",{"type":16,"tag":24,"props":926,"children":928},{"className":927},[],[929],{"type":21,"value":930},"\u002Fresume",{"type":21,"value":932},"), persisted under ",{"type":16,"tag":24,"props":934,"children":936},{"className":935},[],[937],{"type":21,"value":938},".excalibur\u002Fsessions\u002F\u003Cid>\u002F",{"type":21,"value":940},".",{"type":16,"tag":409,"props":942,"children":943},{},[944,946,951,953,959],{"type":21,"value":945},"Context ",{"type":16,"tag":33,"props":947,"children":948},{},[949],{"type":21,"value":950},"compaction",{"type":21,"value":952}," is automatic and reversible — emitted as an event on the stream, so replay still works. Trigger it with ",{"type":16,"tag":24,"props":954,"children":956},{"className":955},[],[957],{"type":21,"value":958},"\u002Fcompact [instructions]",{"type":21,"value":940},{"type":16,"tag":409,"props":961,"children":962},{},[963,965,971],{"type":21,"value":964},"Durable decisions are promoted to ",{"type":16,"tag":24,"props":966,"children":968},{"className":967},[],[969],{"type":21,"value":970},".excalibur\u002Fmemory\u002F",{"type":21,"value":972}," so future runs start primed.",{"type":16,"tag":53,"props":974,"children":976},{"id":975},"time-travel-in-session",[977],{"type":21,"value":978},"Time travel, in-session",{"type":16,"tag":17,"props":980,"children":981},{},[982,984,989,991,996,998,1004,1006,1011],{"type":21,"value":983},"Every run is an ",{"type":16,"tag":33,"props":985,"children":986},{},[987],{"type":21,"value":988},"immutable, append-only event log",{"type":21,"value":990}," — the stream ",{"type":16,"tag":430,"props":992,"children":993},{},[994],{"type":21,"value":995},"is",{"type":21,"value":997}," the run. The same stream renders the live TUI, this replay, the ",{"type":16,"tag":139,"props":999,"children":1001},{"href":1000},"\u002Fdocs\u002Fdashboard",[1002],{"type":21,"value":1003},"web dashboard",{"type":21,"value":1005}," and the audit trail, ",{"type":16,"tag":33,"props":1007,"children":1008},{},[1009],{"type":21,"value":1010},"byte-identical",{"type":21,"value":1012},"; no other agent is built this way. That's what makes time travel free — hit a wrong turn and you don't start over:",{"type":16,"tag":173,"props":1014,"children":1016},{":lines":1015,"title":29},"[{\"kind\":\"prompt\",\"text\":\"\u002Frewind\"},{\"kind\":\"dim\",\"text\":\"◀◀  ◀   ❚❚   ▶  ▶▶      step 06 \u002F 14 · Implement\"},{\"kind\":\"arrow\",\"text\":\"fork from here ⑂  — only the divergent suffix re-runs\",\"tone\":\"accent\"}]",[],{"type":16,"tag":17,"props":1018,"children":1019},{},[1020,1022,1027,1029,1034,1036,1042],{"type":21,"value":1021},"Pick a step → ",{"type":16,"tag":33,"props":1023,"children":1024},{},[1025],{"type":21,"value":1026},"restore",{"type":21,"value":1028}," it, or ",{"type":16,"tag":33,"props":1030,"children":1031},{},[1032],{"type":21,"value":1033},"fork from cache",{"type":21,"value":1035}," (the good prefix replays from cache — zero re-spend). ",{"type":16,"tag":24,"props":1037,"children":1039},{"className":1038},[],[1040],{"type":21,"value":1041},"Esc Esc",{"type":21,"value":1043}," does the same live, mid-session.",{"type":16,"tag":53,"props":1045,"children":1047},{"id":1046},"configuration",[1048],{"type":21,"value":1049},"Configuration",{"type":16,"tag":17,"props":1051,"children":1052},{},[1053,1058],{"type":16,"tag":24,"props":1054,"children":1056},{"className":1055},[],[1057],{"type":21,"value":387},{"type":21,"value":1059}," controls the shell:",{"type":16,"tag":1061,"props":1062,"children":1066},"pre",{"className":1063,"code":1064,"language":1065,"meta":7,"style":7},"language-yaml shiki shiki-themes github-light","language: auto # auto | en | es  (chrome + responses)\ntui:\n  theme: auto # auto | dark | light | high-contrast | a custom theme\n  flavor: plain # plain | arthurian\n  keybinds: # rebind any action to a single key (no modifier combos)\n    accept: tab\n    cancel: escape\n","yaml",[1067],{"type":16,"tag":24,"props":1068,"children":1069},{"__ignoreMap":7},[1070,1099,1112,1134,1157,1175,1193],{"type":16,"tag":1071,"props":1072,"children":1075},"span",{"class":1073,"line":1074},"line",1,[1076,1082,1087,1093],{"type":16,"tag":1071,"props":1077,"children":1079},{"style":1078},"--shiki-default:#22863A",[1080],{"type":21,"value":1081},"language",{"type":16,"tag":1071,"props":1083,"children":1085},{"style":1084},"--shiki-default:#24292E",[1086],{"type":21,"value":916},{"type":16,"tag":1071,"props":1088,"children":1090},{"style":1089},"--shiki-default:#032F62",[1091],{"type":21,"value":1092},"auto",{"type":16,"tag":1071,"props":1094,"children":1096},{"style":1095},"--shiki-default:#6A737D",[1097],{"type":21,"value":1098}," # auto | en | es  (chrome + responses)\n",{"type":16,"tag":1071,"props":1100,"children":1101},{"class":1073,"line":10},[1102,1107],{"type":16,"tag":1071,"props":1103,"children":1104},{"style":1078},[1105],{"type":21,"value":1106},"tui",{"type":16,"tag":1071,"props":1108,"children":1109},{"style":1084},[1110],{"type":21,"value":1111},":\n",{"type":16,"tag":1071,"props":1113,"children":1115},{"class":1073,"line":1114},3,[1116,1121,1125,1129],{"type":16,"tag":1071,"props":1117,"children":1118},{"style":1078},[1119],{"type":21,"value":1120},"  theme",{"type":16,"tag":1071,"props":1122,"children":1123},{"style":1084},[1124],{"type":21,"value":916},{"type":16,"tag":1071,"props":1126,"children":1127},{"style":1089},[1128],{"type":21,"value":1092},{"type":16,"tag":1071,"props":1130,"children":1131},{"style":1095},[1132],{"type":21,"value":1133}," # auto | dark | light | high-contrast | a custom theme\n",{"type":16,"tag":1071,"props":1135,"children":1137},{"class":1073,"line":1136},4,[1138,1143,1147,1152],{"type":16,"tag":1071,"props":1139,"children":1140},{"style":1078},[1141],{"type":21,"value":1142},"  flavor",{"type":16,"tag":1071,"props":1144,"children":1145},{"style":1084},[1146],{"type":21,"value":916},{"type":16,"tag":1071,"props":1148,"children":1149},{"style":1089},[1150],{"type":21,"value":1151},"plain",{"type":16,"tag":1071,"props":1153,"children":1154},{"style":1095},[1155],{"type":21,"value":1156}," # plain | arthurian\n",{"type":16,"tag":1071,"props":1158,"children":1160},{"class":1073,"line":1159},5,[1161,1166,1170],{"type":16,"tag":1071,"props":1162,"children":1163},{"style":1078},[1164],{"type":21,"value":1165},"  keybinds",{"type":16,"tag":1071,"props":1167,"children":1168},{"style":1084},[1169],{"type":21,"value":916},{"type":16,"tag":1071,"props":1171,"children":1172},{"style":1095},[1173],{"type":21,"value":1174},"# rebind any action to a single key (no modifier combos)\n",{"type":16,"tag":1071,"props":1176,"children":1178},{"class":1073,"line":1177},6,[1179,1184,1188],{"type":16,"tag":1071,"props":1180,"children":1181},{"style":1078},[1182],{"type":21,"value":1183},"    accept",{"type":16,"tag":1071,"props":1185,"children":1186},{"style":1084},[1187],{"type":21,"value":916},{"type":16,"tag":1071,"props":1189,"children":1190},{"style":1089},[1191],{"type":21,"value":1192},"tab\n",{"type":16,"tag":1071,"props":1194,"children":1196},{"class":1073,"line":1195},7,[1197,1202,1206],{"type":16,"tag":1071,"props":1198,"children":1199},{"style":1078},[1200],{"type":21,"value":1201},"    cancel",{"type":16,"tag":1071,"props":1203,"children":1204},{"style":1084},[1205],{"type":21,"value":916},{"type":16,"tag":1071,"props":1207,"children":1208},{"style":1089},[1209],{"type":21,"value":1210},"escape\n",{"type":16,"tag":17,"props":1212,"children":1213},{},[1214,1216,1222,1224,1229,1231,1237],{"type":21,"value":1215},"Switch or load a theme any time with ",{"type":16,"tag":24,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":21,"value":1221},"excalibur theme",{"type":21,"value":1223},", and remap keys to taste — every binding is a single key. Until you connect a model, a ",{"type":16,"tag":33,"props":1225,"children":1226},{},[1227],{"type":21,"value":1228},"deterministic mock",{"type":21,"value":1230}," runs zero-config so the shell works on first launch; the first real run (or ",{"type":16,"tag":24,"props":1232,"children":1234},{"className":1233},[],[1235],{"type":21,"value":1236},"\u002Fmodels",{"type":21,"value":1238},") wires a provider.",{"type":16,"tag":53,"props":1240,"children":1242},{"id":1241},"next",[1243],{"type":21,"value":1244},"Next",{"type":16,"tag":405,"props":1246,"children":1247},{},[1248,1261,1275],{"type":16,"tag":409,"props":1249,"children":1250},{},[1251,1259],{"type":16,"tag":33,"props":1252,"children":1253},{},[1254],{"type":16,"tag":139,"props":1255,"children":1256},{"href":141},[1257],{"type":21,"value":1258},"Command reference",{"type":21,"value":1260}," — the complete dictionary.",{"type":16,"tag":409,"props":1262,"children":1263},{},[1264,1273],{"type":16,"tag":33,"props":1265,"children":1266},{},[1267],{"type":16,"tag":139,"props":1268,"children":1270},{"href":1269},"\u002Fdocs\u002Fautonomy-levels",[1271],{"type":21,"value":1272},"Autonomy levels",{"type":21,"value":1274}," — what each turn is allowed to do.",{"type":16,"tag":409,"props":1276,"children":1277},{},[1278,1287],{"type":16,"tag":33,"props":1279,"children":1280},{},[1281],{"type":16,"tag":139,"props":1282,"children":1284},{"href":1283},"\u002Fdocs\u002Fworkflows",[1285],{"type":21,"value":1286},"Workflows",{"type":21,"value":1288}," — the recipes the shell routes to.",{"type":16,"tag":1290,"props":1291,"children":1292},"style",{},[1293],{"type":21,"value":1294},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":7,"searchDepth":10,"depth":10,"links":1296},[1297,1300,1301,1302,1303,1304,1305,1306,1307,1308,1309],{"id":55,"depth":10,"text":58,"children":1298},[1299],{"id":180,"depth":1114,"text":183},{"id":349,"depth":10,"text":352},{"id":400,"depth":10,"text":403},{"id":493,"depth":10,"text":496},{"id":673,"depth":10,"text":676},{"id":783,"depth":10,"text":786},{"id":838,"depth":10,"text":841},{"id":899,"depth":10,"text":902},{"id":975,"depth":10,"text":978},{"id":1046,"depth":10,"text":1049},{"id":1241,"depth":10,"text":1244},"markdown","content:docs:the-m-shell.md","content","docs\u002Fthe-m-shell.md","docs\u002Fthe-m-shell","md",[1317,1319],{"_path":141,"title":1258,"order":1318},10,{"_path":1283,"title":1286,"order":1114},[1321,1324,1326,1327,1329,1331,1333,1334,1337,1339,1343,1346,1351],{"_path":1322,"title":1323,"order":1074,"group":11},"\u002Fdocs\u002Fgetting-started","Getting started",{"_path":141,"title":1258,"order":1318,"group":1325},"Reference",{"_path":4,"title":8,"order":10,"group":11},{"_path":1283,"title":1286,"order":1114,"group":1328},"Build",{"_path":298,"title":1330,"order":1136,"group":1328},"Missions",{"_path":1000,"title":1332,"order":1159,"group":1328},"Dashboard",{"_path":1269,"title":1272,"order":1177,"group":1328},{"_path":1335,"title":1336,"order":1195,"group":1328},"\u002Fdocs\u002Fdiscovery","Discovery",{"_path":392,"title":395,"order":1195,"group":1338},"Govern",{"_path":1340,"title":1341,"order":1342,"group":1338},"\u002Fdocs\u002Fenterprise","Enterprise",8,{"_path":1344,"title":1345,"order":1342,"group":1328},"\u002Fdocs\u002Fproviders","Models & providers",{"_path":1347,"title":1348,"order":1349,"group":1350},"\u002Fdocs\u002Fextensions","Extensions",9,"Extend",{"_path":1352,"title":1353,"order":1349,"group":1328},"\u002Fdocs\u002Fweb-research","Web & research",1782492858362]