assembled-remote.fixture.json 157 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859
  1. {
  2. "sessionList": {
  3. "ok": true,
  4. "value": {
  5. "items": [
  6. {
  7. "sessionId": "fx-alpha",
  8. "updatedAt": 1789268875874,
  9. "running": true,
  10. "blank": false,
  11. "cwd": "/tmp/fixture"
  12. },
  13. {
  14. "sessionId": "fx-beta",
  15. "updatedAt": 1789268815874,
  16. "running": false,
  17. "blank": false,
  18. "parentSessionId": "fx-alpha",
  19. "cwd": "/tmp/fixture"
  20. },
  21. {
  22. "sessionId": "fx-gamma",
  23. "updatedAt": 1789268755874,
  24. "running": false,
  25. "blank": false,
  26. "cwd": "/tmp/fixture"
  27. }
  28. ]
  29. }
  30. },
  31. "settingsDescribe": {
  32. "ok": true,
  33. "value": {
  34. "writable": true,
  35. "hasDocument": true,
  36. "namespaces": [
  37. {
  38. "ns": "llm-deepseek",
  39. "schema": {},
  40. "value": {
  41. "apiKeyEnv": "DEEPSEEK_API_KEY"
  42. },
  43. "applies": "live",
  44. "secrets": [
  45. {
  46. "path": [
  47. "apiKey"
  48. ],
  49. "set": false
  50. }
  51. ],
  52. "revision": 0
  53. }
  54. ]
  55. }
  56. },
  57. "credentialsDescribe": {
  58. "ok": true,
  59. "value": {
  60. "DEEPSEEK_API_KEY": {
  61. "configured": true,
  62. "source": "file",
  63. "writable": true
  64. }
  65. }
  66. },
  67. "modelCatalog": {
  68. "ok": true,
  69. "value": {
  70. "default": {
  71. "provider": "deepseek-official",
  72. "model": "deepseek-v4-flash"
  73. },
  74. "routableProviders": [
  75. "deepseek-official",
  76. "openai",
  77. "acme-gateway"
  78. ],
  79. "groups": [
  80. {
  81. "id": "deepseek-official",
  82. "name": "DeepSeek",
  83. "models": [
  84. {
  85. "id": "deepseek-v4-flash",
  86. "name": "DeepSeek-V4-Flash",
  87. "description": "快速响应",
  88. "reasoning": {
  89. "efforts": [
  90. {
  91. "id": "off",
  92. "name": "Off"
  93. },
  94. {
  95. "id": "high",
  96. "name": "High"
  97. },
  98. {
  99. "id": "max",
  100. "name": "Max"
  101. }
  102. ],
  103. "defaultEffort": "high"
  104. }
  105. },
  106. {
  107. "id": "deepseek-v4-pro",
  108. "name": "DeepSeek-V4-Pro",
  109. "description": "复杂任务",
  110. "reasoning": {
  111. "efforts": [
  112. {
  113. "id": "off",
  114. "name": "Off"
  115. },
  116. {
  117. "id": "high",
  118. "name": "High"
  119. },
  120. {
  121. "id": "max",
  122. "name": "Max"
  123. }
  124. ],
  125. "defaultEffort": "high"
  126. }
  127. }
  128. ]
  129. },
  130. {
  131. "id": "openai",
  132. "name": "OpenAI",
  133. "models": [
  134. {
  135. "id": "gpt-5",
  136. "name": "GPT-5",
  137. "reasoning": {
  138. "efforts": [
  139. {
  140. "id": "off",
  141. "name": "Off"
  142. },
  143. {
  144. "id": "medium",
  145. "name": "Medium"
  146. },
  147. {
  148. "id": "high",
  149. "name": "High"
  150. },
  151. {
  152. "id": "max",
  153. "name": "Max"
  154. }
  155. ],
  156. "defaultEffort": "medium"
  157. }
  158. }
  159. ]
  160. }
  161. ],
  162. "failures": []
  163. }
  164. },
  165. "agentPresets": {
  166. "ok": true,
  167. "value": {
  168. "presets": [
  169. {
  170. "id": "standard",
  171. "trust": "system",
  172. "isDefault": true
  173. },
  174. {
  175. "id": "minimal",
  176. "trust": "system",
  177. "isDefault": false
  178. },
  179. {
  180. "id": "my-agent",
  181. "trust": "user",
  182. "isDefault": false
  183. }
  184. ],
  185. "authorable": true,
  186. "modeSelectionEnabled": true
  187. }
  188. },
  189. "commands": {
  190. "ok": true,
  191. "value": [
  192. {
  193. "name": "compact",
  194. "description": "fixture:压缩当前会话上下文"
  195. },
  196. {
  197. "name": "echo",
  198. "description": "fixture:回显参数",
  199. "input": {
  200. "hint": "text to echo"
  201. }
  202. },
  203. {
  204. "definitionId": "@deepseek-ai/dsh-command-goal",
  205. "name": "goal",
  206. "description": "Set or view the goal for a long-running task",
  207. "input": {
  208. "hint": "<objective>",
  209. "attachments": true
  210. }
  211. },
  212. {
  213. "definitionId": "@deepseek-ai/dsh-permission-presets",
  214. "name": "permission",
  215. "description": "Switch the permission preset (sandbox mode + approval policy)",
  216. "input": {
  217. "hint": "<preset>"
  218. }
  219. },
  220. {
  221. "definitionId": "@deepseek-ai/dsh-plan-mode",
  222. "name": "plan",
  223. "description": "Enter or leave plan mode",
  224. "input": {
  225. "hint": "[off|message]",
  226. "attachments": true
  227. }
  228. }
  229. ]
  230. },
  231. "workspace": {
  232. "type": "baseline",
  233. "value": {
  234. "items": [
  235. {
  236. "workspaceId": "fx-ws-fixture",
  237. "path": "/tmp/fixture",
  238. "title": "fixture",
  239. "sessionIds": [
  240. "fx-alpha",
  241. "fx-beta",
  242. "fx-gamma"
  243. ],
  244. "createdAt": "2026-09-13T03:02:55.884Z",
  245. "updatedAt": "2026-09-13T03:02:55.884Z"
  246. },
  247. {
  248. "workspaceId": "fx-ws-home",
  249. "path": "/home/fixture/Documents/project",
  250. "title": "project",
  251. "sessionIds": [],
  252. "createdAt": "2026-09-13T03:02:55.884Z",
  253. "updatedAt": "2026-09-13T03:02:55.884Z"
  254. }
  255. ],
  256. "archivedSessionIds": []
  257. }
  258. },
  259. "control": {
  260. "type": "baseline",
  261. "value": {
  262. "queues": {
  263. "fx-alpha": [],
  264. "fx-beta": [],
  265. "fx-gamma": []
  266. },
  267. "jobs": {
  268. "fx-alpha": [],
  269. "fx-beta": [],
  270. "fx-gamma": []
  271. },
  272. "approvals": [],
  273. "questions": [],
  274. "projections": {
  275. "fx-alpha": {
  276. "asOfSeq": 552,
  277. "values": {
  278. "modelSelection": {
  279. "lastUsed": null,
  280. "next": null
  281. },
  282. "title": "Fixture 历史会话",
  283. "todos": [
  284. {
  285. "content": "梳理需求",
  286. "status": "completed"
  287. },
  288. {
  289. "content": "实现 fixture 样本",
  290. "status": "in_progress"
  291. },
  292. {
  293. "content": "跑后台构建",
  294. "status": "in_progress"
  295. },
  296. {
  297. "content": "浏览器验收",
  298. "status": "pending"
  299. }
  300. ],
  301. "permissions": {
  302. "options": [
  303. {
  304. "value": "workspace-write",
  305. "name": "workspace-write",
  306. "description": "Write inside the workspace and permitted temporary directories; wider retries require approval."
  307. },
  308. {
  309. "value": "danger-full-access",
  310. "name": "danger-full-access",
  311. "description": "Full file access without approval prompts."
  312. }
  313. ],
  314. "currentValue": "workspace-write"
  315. },
  316. "plan": {
  317. "active": false,
  318. "pending": false
  319. },
  320. "goal": null,
  321. "tokenUsage": {
  322. "uncachedInputTokens": 1914,
  323. "outputTokens": 708,
  324. "cacheReadTokens": 6880,
  325. "cacheWriteTokens": 32
  326. },
  327. "contextPressure": {
  328. "pressureTokens": 104,
  329. "contextWindow": 128000
  330. },
  331. "contextBreakdown": {
  332. "systemTokens": 17,
  333. "toolsTokens": 0,
  334. "messageTokens": 4427
  335. },
  336. "sessionStats": {
  337. "turns": 75,
  338. "steps": 87,
  339. "llmMs": 69600,
  340. "toolMs": 24800,
  341. "ttftMs": 0,
  342. "ttftSteps": 0,
  343. "decodeMs": 0,
  344. "decodeTokens": 0
  345. },
  346. "imageLimits": {
  347. "maxImageBytes": 5242880,
  348. "maxImagesPerMessage": 20,
  349. "maxMessageImageBytes": 104857600,
  350. "maxImagePixels": 40000000,
  351. "maxImageDimension": 2000,
  352. "mediaTypes": [
  353. "image/png",
  354. "image/jpeg",
  355. "image/webp",
  356. "image/gif"
  357. ]
  358. }
  359. }
  360. },
  361. "fx-beta": {
  362. "asOfSeq": -1,
  363. "values": {
  364. "modelSelection": {
  365. "lastUsed": null,
  366. "next": null
  367. },
  368. "todos": null,
  369. "permissions": {
  370. "options": [
  371. {
  372. "value": "workspace-write",
  373. "name": "workspace-write",
  374. "description": "Write inside the workspace and permitted temporary directories; wider retries require approval."
  375. },
  376. {
  377. "value": "danger-full-access",
  378. "name": "danger-full-access",
  379. "description": "Full file access without approval prompts."
  380. }
  381. ],
  382. "currentValue": "workspace-write"
  383. },
  384. "plan": {
  385. "active": false,
  386. "pending": false
  387. },
  388. "goal": null,
  389. "tokenUsage": {
  390. "uncachedInputTokens": 0,
  391. "outputTokens": 0,
  392. "cacheReadTokens": 0,
  393. "cacheWriteTokens": 0
  394. },
  395. "contextPressure": {},
  396. "contextBreakdown": {
  397. "systemTokens": 0,
  398. "toolsTokens": 0,
  399. "messageTokens": 0
  400. },
  401. "sessionStats": {
  402. "turns": 0,
  403. "steps": 0,
  404. "llmMs": 0,
  405. "toolMs": 0,
  406. "ttftMs": 0,
  407. "ttftSteps": 0,
  408. "decodeMs": 0,
  409. "decodeTokens": 0
  410. },
  411. "imageLimits": {
  412. "maxImageBytes": 5242880,
  413. "maxImagesPerMessage": 20,
  414. "maxMessageImageBytes": 104857600,
  415. "maxImagePixels": 40000000,
  416. "maxImageDimension": 2000,
  417. "mediaTypes": [
  418. "image/png",
  419. "image/jpeg",
  420. "image/webp",
  421. "image/gif"
  422. ]
  423. }
  424. }
  425. },
  426. "fx-gamma": {
  427. "asOfSeq": -1,
  428. "values": {
  429. "modelSelection": {
  430. "lastUsed": null,
  431. "next": null
  432. },
  433. "todos": null,
  434. "permissions": {
  435. "options": [
  436. {
  437. "value": "workspace-write",
  438. "name": "workspace-write",
  439. "description": "Write inside the workspace and permitted temporary directories; wider retries require approval."
  440. },
  441. {
  442. "value": "danger-full-access",
  443. "name": "danger-full-access",
  444. "description": "Full file access without approval prompts."
  445. }
  446. ],
  447. "currentValue": "workspace-write"
  448. },
  449. "plan": {
  450. "active": false,
  451. "pending": false
  452. },
  453. "goal": null,
  454. "tokenUsage": {
  455. "uncachedInputTokens": 0,
  456. "outputTokens": 0,
  457. "cacheReadTokens": 0,
  458. "cacheWriteTokens": 0
  459. },
  460. "contextPressure": {},
  461. "contextBreakdown": {
  462. "systemTokens": 0,
  463. "toolsTokens": 0,
  464. "messageTokens": 0
  465. },
  466. "sessionStats": {
  467. "turns": 0,
  468. "steps": 0,
  469. "llmMs": 0,
  470. "toolMs": 0,
  471. "ttftMs": 0,
  472. "ttftSteps": 0,
  473. "decodeMs": 0,
  474. "decodeTokens": 0
  475. },
  476. "imageLimits": {
  477. "maxImageBytes": 5242880,
  478. "maxImagesPerMessage": 20,
  479. "maxMessageImageBytes": 104857600,
  480. "maxImagePixels": 40000000,
  481. "maxImageDimension": 2000,
  482. "mediaTypes": [
  483. "image/png",
  484. "image/jpeg",
  485. "image/webp",
  486. "image/gif"
  487. ]
  488. }
  489. }
  490. }
  491. }
  492. }
  493. },
  494. "remoteEvents": [
  495. {
  496. "type": "ready",
  497. "clientId": "36b204ff-b72f-4720-b58a-c86bebca8c42",
  498. "host": {
  499. "home": "/home/fixture"
  500. }
  501. },
  502. {
  503. "type": "waterfall",
  504. "event": "approval/request",
  505. "eventId": "fx-interaction-approval",
  506. "agentId": "fx-alpha",
  507. "request": {
  508. "toolName": "dangerous_tool",
  509. "reason": "fixture 常驻审批(可答:批准/拒绝后消失)"
  510. }
  511. },
  512. {
  513. "type": "waterfall",
  514. "event": "user-questions/request",
  515. "eventId": "fx-interaction-question",
  516. "agentId": "fx-alpha",
  517. "request": {
  518. "questions": [
  519. {
  520. "id": "harness-profile",
  521. "header": "偏好",
  522. "question": "你现在更想招哪类 Agent/Harness 候选人?",
  523. "options": [
  524. {
  525. "label": "工程落地型 (Recommended)",
  526. "description": "更看重能直接做 runtime、tool executor、sandbox、trace 和线上问题排查。"
  527. },
  528. {
  529. "label": "研究潜力型",
  530. "description": "更看重 Agent 理解、训练评测思路和长期成长空间。"
  531. },
  532. {
  533. "label": "均衡型",
  534. "description": "同时要求工程能力和 Agent 认知,但可能筛选门槛更高。"
  535. }
  536. ]
  537. },
  538. {
  539. "id": "work-mode",
  540. "header": "方式",
  541. "question": "你希望候选人优先展示哪种工作方式?",
  542. "options": [
  543. {
  544. "label": "先做小型原型 (Recommended)",
  545. "description": "用可运行结果尽快验证关键假设。"
  546. },
  547. {
  548. "label": "先写完整设计",
  549. "description": "先收敛边界、协议和风险,再开始实现。"
  550. }
  551. ]
  552. },
  553. {
  554. "id": "signals",
  555. "header": "信号",
  556. "question": "哪些面试信号最重要?",
  557. "detail": "按当前招聘目标选择;跳过则视为不设偏好。",
  558. "multiSelect": true,
  559. "options": [
  560. {
  561. "label": "系统设计"
  562. },
  563. {
  564. "label": "代码质量"
  565. },
  566. {
  567. "label": "Agent 产品判断"
  568. }
  569. ]
  570. }
  571. ]
  572. }
  573. }
  574. ],
  575. "follow": {
  576. "type": "snapshot",
  577. "header": {
  578. "version": 3,
  579. "id": "fx-alpha",
  580. "createdAt": 1789268875874,
  581. "cwd": "/tmp/fixture",
  582. "isSeeded": false
  583. },
  584. "cursor": 552,
  585. "records": [
  586. {
  587. "type": "event",
  588. "event": {
  589. "seq": 365,
  590. "time": 1789265568675,
  591. "type": "turn/start",
  592. "data": {
  593. "turn": 51
  594. }
  595. }
  596. },
  597. {
  598. "type": "event",
  599. "event": {
  600. "seq": 366,
  601. "time": 1789265569475,
  602. "type": "user/message",
  603. "surfaceOp": "append",
  604. "data": {
  605. "content": [
  606. {
  607. "type": "text",
  608. "text": "问题 51:fixture 历史消息,用于翻页与渲染验收。"
  609. }
  610. ],
  611. "source": {
  612. "kind": "user"
  613. },
  614. "role": "user",
  615. "id": "781d1628-a401-4577-9608-fad94469115f"
  616. }
  617. }
  618. },
  619. {
  620. "type": "event",
  621. "event": {
  622. "seq": 367,
  623. "time": 1789265570275,
  624. "type": "step/start",
  625. "data": {
  626. "turn": 51,
  627. "step": 0
  628. }
  629. }
  630. },
  631. {
  632. "type": "event",
  633. "event": {
  634. "seq": 368,
  635. "time": 1789265571075,
  636. "type": "assistant/message",
  637. "surfaceOp": "append",
  638. "data": {
  639. "turn": 51,
  640. "step": 0,
  641. "message": {
  642. "role": "assistant",
  643. "content": [
  644. {
  645. "type": "text",
  646. "text": "回答 51:这是 fixture 生成的历史回复正文。"
  647. }
  648. ],
  649. "source": {
  650. "kind": "model",
  651. "provider": "fixture",
  652. "model": "fx-1"
  653. },
  654. "id": "41db22fd-d174-446f-8d4f-dd0769071b92"
  655. },
  656. "usage": {
  657. "inputTokens": 21,
  658. "outputTokens": 8,
  659. "cacheReadTokens": 80,
  660. "cacheWriteTokens": 0
  661. },
  662. "stream": [
  663. {
  664. "type": "chunk",
  665. "time": 1789265571075,
  666. "chunk": {
  667. "type": "block-start",
  668. "index": 0,
  669. "blockType": "text"
  670. }
  671. },
  672. {
  673. "type": "chunk",
  674. "time": 1789265571075,
  675. "chunk": {
  676. "type": "block-end",
  677. "index": 0,
  678. "block": {
  679. "type": "text",
  680. "text": "回答 51:这是 fixture 生成的历史回复正文。"
  681. }
  682. }
  683. },
  684. {
  685. "type": "chunk",
  686. "time": 1789265571075,
  687. "chunk": {
  688. "type": "usage",
  689. "usage": {
  690. "inputTokens": 21,
  691. "outputTokens": 8,
  692. "cacheReadTokens": 80,
  693. "cacheWriteTokens": 0
  694. }
  695. }
  696. },
  697. {
  698. "type": "chunk",
  699. "time": 1789265571075,
  700. "chunk": {
  701. "type": "finish",
  702. "reason": {
  703. "kind": "stop"
  704. }
  705. }
  706. }
  707. ]
  708. }
  709. }
  710. },
  711. {
  712. "type": "event",
  713. "event": {
  714. "seq": 369,
  715. "time": 1789265571875,
  716. "type": "step/end",
  717. "data": {
  718. "turn": 51,
  719. "step": 0
  720. }
  721. }
  722. },
  723. {
  724. "type": "event",
  725. "event": {
  726. "seq": 370,
  727. "time": 1789265572675,
  728. "type": "turn/end",
  729. "data": {
  730. "turn": 51,
  731. "reason": {
  732. "kind": "completed"
  733. }
  734. }
  735. }
  736. },
  737. {
  738. "type": "event",
  739. "event": {
  740. "seq": 371,
  741. "time": 1789265573475,
  742. "type": "turn/start",
  743. "data": {
  744. "turn": 52
  745. }
  746. }
  747. },
  748. {
  749. "type": "event",
  750. "event": {
  751. "seq": 372,
  752. "time": 1789265574275,
  753. "type": "user/message",
  754. "surfaceOp": "append",
  755. "data": {
  756. "content": [
  757. {
  758. "type": "text",
  759. "text": "问题 52:fixture 历史消息,用于翻页与渲染验收。"
  760. }
  761. ],
  762. "source": {
  763. "kind": "user"
  764. },
  765. "role": "user",
  766. "id": "ca2e9326-9086-477e-b80d-32005b85cbc6"
  767. }
  768. }
  769. },
  770. {
  771. "type": "event",
  772. "event": {
  773. "seq": 373,
  774. "time": 1789265575075,
  775. "type": "step/start",
  776. "data": {
  777. "turn": 52,
  778. "step": 0
  779. }
  780. }
  781. },
  782. {
  783. "type": "event",
  784. "event": {
  785. "seq": 374,
  786. "time": 1789265575875,
  787. "type": "assistant/message",
  788. "surfaceOp": "append",
  789. "data": {
  790. "turn": 52,
  791. "step": 0,
  792. "message": {
  793. "role": "assistant",
  794. "content": [
  795. {
  796. "type": "reasoning",
  797. "text": "思考过程 52:这是一段可折叠的 reasoning 内容。"
  798. },
  799. {
  800. "type": "text",
  801. "text": "回答 52:这是 fixture 生成的历史回复正文。"
  802. },
  803. {
  804. "type": "tool-call",
  805. "id": "fx-call-52",
  806. "name": "echo",
  807. "arguments": "{\"text\":\"turn 52\"}"
  808. }
  809. ],
  810. "source": {
  811. "kind": "model",
  812. "provider": "fixture",
  813. "model": "fx-1"
  814. },
  815. "id": "38c0ab81-0fc5-401d-a876-f0d1e766de03"
  816. },
  817. "usage": {
  818. "inputTokens": 22,
  819. "outputTokens": 8,
  820. "cacheReadTokens": 80,
  821. "cacheWriteTokens": 0
  822. },
  823. "stream": [
  824. {
  825. "type": "chunk",
  826. "time": 1789265575875,
  827. "chunk": {
  828. "type": "block-start",
  829. "index": 0,
  830. "blockType": "reasoning"
  831. }
  832. },
  833. {
  834. "type": "chunk",
  835. "time": 1789265575875,
  836. "chunk": {
  837. "type": "block-end",
  838. "index": 0,
  839. "block": {
  840. "type": "reasoning",
  841. "text": "思考过程 52:这是一段可折叠的 reasoning 内容。"
  842. }
  843. }
  844. },
  845. {
  846. "type": "chunk",
  847. "time": 1789265575875,
  848. "chunk": {
  849. "type": "block-start",
  850. "index": 1,
  851. "blockType": "text"
  852. }
  853. },
  854. {
  855. "type": "chunk",
  856. "time": 1789265575875,
  857. "chunk": {
  858. "type": "block-end",
  859. "index": 1,
  860. "block": {
  861. "type": "text",
  862. "text": "回答 52:这是 fixture 生成的历史回复正文。"
  863. }
  864. }
  865. },
  866. {
  867. "type": "chunk",
  868. "time": 1789265575875,
  869. "chunk": {
  870. "type": "block-start",
  871. "index": 2,
  872. "blockType": "tool-call"
  873. }
  874. },
  875. {
  876. "type": "chunk",
  877. "time": 1789265575875,
  878. "chunk": {
  879. "type": "block-end",
  880. "index": 2,
  881. "block": {
  882. "type": "tool-call",
  883. "id": "fx-call-52",
  884. "name": "echo",
  885. "arguments": "{\"text\":\"turn 52\"}"
  886. }
  887. }
  888. },
  889. {
  890. "type": "chunk",
  891. "time": 1789265575875,
  892. "chunk": {
  893. "type": "usage",
  894. "usage": {
  895. "inputTokens": 22,
  896. "outputTokens": 8,
  897. "cacheReadTokens": 80,
  898. "cacheWriteTokens": 0
  899. }
  900. }
  901. },
  902. {
  903. "type": "chunk",
  904. "time": 1789265575875,
  905. "chunk": {
  906. "type": "finish",
  907. "reason": {
  908. "kind": "stop"
  909. }
  910. }
  911. }
  912. ]
  913. }
  914. }
  915. },
  916. {
  917. "type": "event",
  918. "event": {
  919. "seq": 375,
  920. "time": 1789265576675,
  921. "type": "tool/call",
  922. "data": {
  923. "turn": 52,
  924. "step": 0,
  925. "callId": "fx-call-52",
  926. "name": "echo",
  927. "arguments": "{\"text\":\"turn 52\"}"
  928. }
  929. }
  930. },
  931. {
  932. "type": "event",
  933. "event": {
  934. "seq": 376,
  935. "time": 1789265577475,
  936. "type": "tool/result",
  937. "surfaceOp": "append",
  938. "data": {
  939. "turn": 52,
  940. "step": 0,
  941. "message": {
  942. "source": {
  943. "kind": "tool",
  944. "callId": "fx-call-52"
  945. },
  946. "content": [
  947. {
  948. "type": "tool-result",
  949. "toolCallId": "fx-call-52",
  950. "content": [
  951. {
  952. "type": "text",
  953. "text": "ECHO: TURN 52"
  954. }
  955. ],
  956. "isError": false
  957. }
  958. ],
  959. "role": "user",
  960. "id": "e9bbfe6c-96f3-44b6-b65c-89997783be1e"
  961. }
  962. }
  963. }
  964. },
  965. {
  966. "type": "event",
  967. "event": {
  968. "seq": 377,
  969. "time": 1789265578275,
  970. "type": "step/end",
  971. "data": {
  972. "turn": 52,
  973. "step": 0
  974. }
  975. }
  976. },
  977. {
  978. "type": "event",
  979. "event": {
  980. "seq": 378,
  981. "time": 1789265579075,
  982. "type": "step/start",
  983. "data": {
  984. "turn": 52,
  985. "step": 1
  986. }
  987. }
  988. },
  989. {
  990. "type": "event",
  991. "event": {
  992. "seq": 379,
  993. "time": 1789265579875,
  994. "type": "assistant/message",
  995. "surfaceOp": "append",
  996. "data": {
  997. "turn": 52,
  998. "step": 1,
  999. "message": {
  1000. "role": "assistant",
  1001. "content": [
  1002. {
  1003. "type": "text",
  1004. "text": "工具结果已消化(turn 52)。"
  1005. }
  1006. ],
  1007. "source": {
  1008. "kind": "model",
  1009. "provider": "fixture",
  1010. "model": "fx-1"
  1011. },
  1012. "id": "891ea3be-04ca-4adc-a1b5-70c311b5b0fd"
  1013. },
  1014. "usage": {
  1015. "inputTokens": 22,
  1016. "outputTokens": 9,
  1017. "cacheReadTokens": 80,
  1018. "cacheWriteTokens": 0
  1019. },
  1020. "stream": [
  1021. {
  1022. "type": "chunk",
  1023. "time": 1789265579875,
  1024. "chunk": {
  1025. "type": "block-start",
  1026. "index": 0,
  1027. "blockType": "text"
  1028. }
  1029. },
  1030. {
  1031. "type": "chunk",
  1032. "time": 1789265579875,
  1033. "chunk": {
  1034. "type": "block-end",
  1035. "index": 0,
  1036. "block": {
  1037. "type": "text",
  1038. "text": "工具结果已消化(turn 52)。"
  1039. }
  1040. }
  1041. },
  1042. {
  1043. "type": "chunk",
  1044. "time": 1789265579875,
  1045. "chunk": {
  1046. "type": "usage",
  1047. "usage": {
  1048. "inputTokens": 22,
  1049. "outputTokens": 9,
  1050. "cacheReadTokens": 80,
  1051. "cacheWriteTokens": 0
  1052. }
  1053. }
  1054. },
  1055. {
  1056. "type": "chunk",
  1057. "time": 1789265579875,
  1058. "chunk": {
  1059. "type": "finish",
  1060. "reason": {
  1061. "kind": "stop"
  1062. }
  1063. }
  1064. }
  1065. ]
  1066. }
  1067. }
  1068. },
  1069. {
  1070. "type": "event",
  1071. "event": {
  1072. "seq": 380,
  1073. "time": 1789265580675,
  1074. "type": "step/end",
  1075. "data": {
  1076. "turn": 52,
  1077. "step": 1
  1078. }
  1079. }
  1080. },
  1081. {
  1082. "type": "event",
  1083. "event": {
  1084. "seq": 381,
  1085. "time": 1789265581475,
  1086. "type": "turn/end",
  1087. "data": {
  1088. "turn": 52,
  1089. "reason": {
  1090. "kind": "completed"
  1091. }
  1092. }
  1093. }
  1094. },
  1095. {
  1096. "type": "event",
  1097. "event": {
  1098. "seq": 382,
  1099. "time": 1789265582275,
  1100. "type": "turn/start",
  1101. "data": {
  1102. "turn": 53
  1103. }
  1104. }
  1105. },
  1106. {
  1107. "type": "event",
  1108. "event": {
  1109. "seq": 383,
  1110. "time": 1789265583075,
  1111. "type": "user/message",
  1112. "surfaceOp": "append",
  1113. "data": {
  1114. "content": [
  1115. {
  1116. "type": "text",
  1117. "text": "问题 53:fixture 历史消息,用于翻页与渲染验收。"
  1118. }
  1119. ],
  1120. "source": {
  1121. "kind": "user"
  1122. },
  1123. "role": "user",
  1124. "id": "c26142ac-056b-47cb-bf77-6e554e565484"
  1125. }
  1126. }
  1127. },
  1128. {
  1129. "type": "event",
  1130. "event": {
  1131. "seq": 384,
  1132. "time": 1789265583875,
  1133. "type": "step/start",
  1134. "data": {
  1135. "turn": 53,
  1136. "step": 0
  1137. }
  1138. }
  1139. },
  1140. {
  1141. "type": "event",
  1142. "event": {
  1143. "seq": 385,
  1144. "time": 1789265584675,
  1145. "type": "assistant/message",
  1146. "surfaceOp": "append",
  1147. "data": {
  1148. "turn": 53,
  1149. "step": 0,
  1150. "message": {
  1151. "role": "assistant",
  1152. "content": [
  1153. {
  1154. "type": "text",
  1155. "text": "回答 53:这是 fixture 生成的历史回复正文。"
  1156. }
  1157. ],
  1158. "source": {
  1159. "kind": "model",
  1160. "provider": "fixture",
  1161. "model": "fx-1"
  1162. },
  1163. "id": "cc41f0c0-2a74-4bc9-b5a2-f02f4c455569"
  1164. },
  1165. "usage": {
  1166. "inputTokens": 23,
  1167. "outputTokens": 8,
  1168. "cacheReadTokens": 80,
  1169. "cacheWriteTokens": 0
  1170. },
  1171. "stream": [
  1172. {
  1173. "type": "chunk",
  1174. "time": 1789265584675,
  1175. "chunk": {
  1176. "type": "block-start",
  1177. "index": 0,
  1178. "blockType": "text"
  1179. }
  1180. },
  1181. {
  1182. "type": "chunk",
  1183. "time": 1789265584675,
  1184. "chunk": {
  1185. "type": "block-end",
  1186. "index": 0,
  1187. "block": {
  1188. "type": "text",
  1189. "text": "回答 53:这是 fixture 生成的历史回复正文。"
  1190. }
  1191. }
  1192. },
  1193. {
  1194. "type": "chunk",
  1195. "time": 1789265584675,
  1196. "chunk": {
  1197. "type": "usage",
  1198. "usage": {
  1199. "inputTokens": 23,
  1200. "outputTokens": 8,
  1201. "cacheReadTokens": 80,
  1202. "cacheWriteTokens": 0
  1203. }
  1204. }
  1205. },
  1206. {
  1207. "type": "chunk",
  1208. "time": 1789265584675,
  1209. "chunk": {
  1210. "type": "finish",
  1211. "reason": {
  1212. "kind": "stop"
  1213. }
  1214. }
  1215. }
  1216. ]
  1217. }
  1218. }
  1219. },
  1220. {
  1221. "type": "event",
  1222. "event": {
  1223. "seq": 386,
  1224. "time": 1789265585475,
  1225. "type": "step/end",
  1226. "data": {
  1227. "turn": 53,
  1228. "step": 0
  1229. }
  1230. }
  1231. },
  1232. {
  1233. "type": "event",
  1234. "event": {
  1235. "seq": 387,
  1236. "time": 1789265586275,
  1237. "type": "turn/end",
  1238. "data": {
  1239. "turn": 53,
  1240. "reason": {
  1241. "kind": "completed"
  1242. }
  1243. }
  1244. }
  1245. },
  1246. {
  1247. "type": "event",
  1248. "event": {
  1249. "seq": 388,
  1250. "time": 1789265587075,
  1251. "type": "turn/start",
  1252. "data": {
  1253. "turn": 54
  1254. }
  1255. }
  1256. },
  1257. {
  1258. "type": "event",
  1259. "event": {
  1260. "seq": 389,
  1261. "time": 1789265587875,
  1262. "type": "user/message",
  1263. "surfaceOp": "append",
  1264. "data": {
  1265. "content": [
  1266. {
  1267. "type": "text",
  1268. "text": "问题 54:fixture 历史消息,用于翻页与渲染验收。"
  1269. }
  1270. ],
  1271. "source": {
  1272. "kind": "user"
  1273. },
  1274. "role": "user",
  1275. "id": "eadaefc3-d83e-471e-ad64-8df6ae40c1eb"
  1276. }
  1277. }
  1278. },
  1279. {
  1280. "type": "event",
  1281. "event": {
  1282. "seq": 390,
  1283. "time": 1789265588675,
  1284. "type": "step/start",
  1285. "data": {
  1286. "turn": 54,
  1287. "step": 0
  1288. }
  1289. }
  1290. },
  1291. {
  1292. "type": "event",
  1293. "event": {
  1294. "seq": 391,
  1295. "time": 1789265589475,
  1296. "type": "assistant/message",
  1297. "surfaceOp": "append",
  1298. "data": {
  1299. "turn": 54,
  1300. "step": 0,
  1301. "message": {
  1302. "role": "assistant",
  1303. "content": [
  1304. {
  1305. "type": "text",
  1306. "text": "回答 54:这是 fixture 生成的历史回复正文。"
  1307. }
  1308. ],
  1309. "source": {
  1310. "kind": "model",
  1311. "provider": "fixture",
  1312. "model": "fx-1"
  1313. },
  1314. "id": "b8f5e883-ce1f-42ef-8106-dfa130620801"
  1315. },
  1316. "usage": {
  1317. "inputTokens": 24,
  1318. "outputTokens": 8,
  1319. "cacheReadTokens": 80,
  1320. "cacheWriteTokens": 0
  1321. },
  1322. "stream": [
  1323. {
  1324. "type": "chunk",
  1325. "time": 1789265589475,
  1326. "chunk": {
  1327. "type": "block-start",
  1328. "index": 0,
  1329. "blockType": "text"
  1330. }
  1331. },
  1332. {
  1333. "type": "chunk",
  1334. "time": 1789265589475,
  1335. "chunk": {
  1336. "type": "block-end",
  1337. "index": 0,
  1338. "block": {
  1339. "type": "text",
  1340. "text": "回答 54:这是 fixture 生成的历史回复正文。"
  1341. }
  1342. }
  1343. },
  1344. {
  1345. "type": "chunk",
  1346. "time": 1789265589475,
  1347. "chunk": {
  1348. "type": "usage",
  1349. "usage": {
  1350. "inputTokens": 24,
  1351. "outputTokens": 8,
  1352. "cacheReadTokens": 80,
  1353. "cacheWriteTokens": 0
  1354. }
  1355. }
  1356. },
  1357. {
  1358. "type": "chunk",
  1359. "time": 1789265589475,
  1360. "chunk": {
  1361. "type": "finish",
  1362. "reason": {
  1363. "kind": "stop"
  1364. }
  1365. }
  1366. }
  1367. ]
  1368. }
  1369. }
  1370. },
  1371. {
  1372. "type": "event",
  1373. "event": {
  1374. "seq": 392,
  1375. "time": 1789265590275,
  1376. "type": "step/end",
  1377. "data": {
  1378. "turn": 54,
  1379. "step": 0
  1380. }
  1381. }
  1382. },
  1383. {
  1384. "type": "event",
  1385. "event": {
  1386. "seq": 393,
  1387. "time": 1789265591075,
  1388. "type": "turn/end",
  1389. "data": {
  1390. "turn": 54,
  1391. "reason": {
  1392. "kind": "completed"
  1393. }
  1394. }
  1395. }
  1396. },
  1397. {
  1398. "type": "event",
  1399. "event": {
  1400. "seq": 394,
  1401. "time": 1789265591875,
  1402. "type": "turn/start",
  1403. "data": {
  1404. "turn": 55
  1405. }
  1406. }
  1407. },
  1408. {
  1409. "type": "event",
  1410. "event": {
  1411. "seq": 395,
  1412. "time": 1789265592675,
  1413. "type": "user/message",
  1414. "surfaceOp": "append",
  1415. "data": {
  1416. "content": [
  1417. {
  1418. "type": "text",
  1419. "text": "问题 55:fixture 历史消息,用于翻页与渲染验收。"
  1420. }
  1421. ],
  1422. "source": {
  1423. "kind": "user"
  1424. },
  1425. "role": "user",
  1426. "id": "116535cf-1160-4aff-bd8f-f89e4fc6c41f"
  1427. }
  1428. }
  1429. },
  1430. {
  1431. "type": "event",
  1432. "event": {
  1433. "seq": 396,
  1434. "time": 1789265593475,
  1435. "type": "step/start",
  1436. "data": {
  1437. "turn": 55,
  1438. "step": 0
  1439. }
  1440. }
  1441. },
  1442. {
  1443. "type": "event",
  1444. "event": {
  1445. "seq": 397,
  1446. "time": 1789265594275,
  1447. "type": "assistant/message",
  1448. "surfaceOp": "append",
  1449. "data": {
  1450. "turn": 55,
  1451. "step": 0,
  1452. "message": {
  1453. "role": "assistant",
  1454. "content": [
  1455. {
  1456. "type": "reasoning",
  1457. "text": "思考过程 55:这是一段可折叠的 reasoning 内容。"
  1458. },
  1459. {
  1460. "type": "text",
  1461. "text": "回答 55:这是 fixture 生成的历史回复正文。"
  1462. }
  1463. ],
  1464. "source": {
  1465. "kind": "model",
  1466. "provider": "fixture",
  1467. "model": "fx-1"
  1468. },
  1469. "id": "6a80e9b4-ca99-40ef-8de8-facbc8c27b76"
  1470. },
  1471. "usage": {
  1472. "inputTokens": 20,
  1473. "outputTokens": 8,
  1474. "cacheReadTokens": 80,
  1475. "cacheWriteTokens": 0
  1476. },
  1477. "stream": [
  1478. {
  1479. "type": "chunk",
  1480. "time": 1789265594275,
  1481. "chunk": {
  1482. "type": "block-start",
  1483. "index": 0,
  1484. "blockType": "reasoning"
  1485. }
  1486. },
  1487. {
  1488. "type": "chunk",
  1489. "time": 1789265594275,
  1490. "chunk": {
  1491. "type": "block-end",
  1492. "index": 0,
  1493. "block": {
  1494. "type": "reasoning",
  1495. "text": "思考过程 55:这是一段可折叠的 reasoning 内容。"
  1496. }
  1497. }
  1498. },
  1499. {
  1500. "type": "chunk",
  1501. "time": 1789265594275,
  1502. "chunk": {
  1503. "type": "block-start",
  1504. "index": 1,
  1505. "blockType": "text"
  1506. }
  1507. },
  1508. {
  1509. "type": "chunk",
  1510. "time": 1789265594275,
  1511. "chunk": {
  1512. "type": "block-end",
  1513. "index": 1,
  1514. "block": {
  1515. "type": "text",
  1516. "text": "回答 55:这是 fixture 生成的历史回复正文。"
  1517. }
  1518. }
  1519. },
  1520. {
  1521. "type": "chunk",
  1522. "time": 1789265594275,
  1523. "chunk": {
  1524. "type": "usage",
  1525. "usage": {
  1526. "inputTokens": 20,
  1527. "outputTokens": 8,
  1528. "cacheReadTokens": 80,
  1529. "cacheWriteTokens": 0
  1530. }
  1531. }
  1532. },
  1533. {
  1534. "type": "chunk",
  1535. "time": 1789265594275,
  1536. "chunk": {
  1537. "type": "finish",
  1538. "reason": {
  1539. "kind": "stop"
  1540. }
  1541. }
  1542. }
  1543. ]
  1544. }
  1545. }
  1546. },
  1547. {
  1548. "type": "event",
  1549. "event": {
  1550. "seq": 398,
  1551. "time": 1789265595075,
  1552. "type": "step/end",
  1553. "data": {
  1554. "turn": 55,
  1555. "step": 0
  1556. }
  1557. }
  1558. },
  1559. {
  1560. "type": "event",
  1561. "event": {
  1562. "seq": 399,
  1563. "time": 1789265595875,
  1564. "type": "turn/end",
  1565. "data": {
  1566. "turn": 55,
  1567. "reason": {
  1568. "kind": "completed"
  1569. }
  1570. }
  1571. }
  1572. },
  1573. {
  1574. "type": "event",
  1575. "event": {
  1576. "seq": 400,
  1577. "time": 1789265596675,
  1578. "type": "turn/start",
  1579. "data": {
  1580. "turn": 56
  1581. }
  1582. }
  1583. },
  1584. {
  1585. "type": "event",
  1586. "event": {
  1587. "seq": 401,
  1588. "time": 1789265597475,
  1589. "type": "user/message",
  1590. "surfaceOp": "append",
  1591. "data": {
  1592. "content": [
  1593. {
  1594. "type": "text",
  1595. "text": "问题 56:fixture 历史消息,用于翻页与渲染验收。"
  1596. }
  1597. ],
  1598. "source": {
  1599. "kind": "user"
  1600. },
  1601. "role": "user",
  1602. "id": "093791f8-cb5b-4106-853d-306ed532feec"
  1603. }
  1604. }
  1605. },
  1606. {
  1607. "type": "event",
  1608. "event": {
  1609. "seq": 402,
  1610. "time": 1789265598275,
  1611. "type": "step/start",
  1612. "data": {
  1613. "turn": 56,
  1614. "step": 0
  1615. }
  1616. }
  1617. },
  1618. {
  1619. "type": "event",
  1620. "event": {
  1621. "seq": 403,
  1622. "time": 1789265599075,
  1623. "type": "assistant/message",
  1624. "surfaceOp": "append",
  1625. "data": {
  1626. "turn": 56,
  1627. "step": 0,
  1628. "message": {
  1629. "role": "assistant",
  1630. "content": [
  1631. {
  1632. "type": "text",
  1633. "text": "回答 56:这是 fixture 生成的历史回复正文。"
  1634. }
  1635. ],
  1636. "source": {
  1637. "kind": "model",
  1638. "provider": "fixture",
  1639. "model": "fx-1"
  1640. },
  1641. "id": "bc0ebb05-d212-4f30-a3eb-c4c209ff7103"
  1642. },
  1643. "usage": {
  1644. "inputTokens": 21,
  1645. "outputTokens": 8,
  1646. "cacheReadTokens": 80,
  1647. "cacheWriteTokens": 0
  1648. },
  1649. "stream": [
  1650. {
  1651. "type": "chunk",
  1652. "time": 1789265599075,
  1653. "chunk": {
  1654. "type": "block-start",
  1655. "index": 0,
  1656. "blockType": "text"
  1657. }
  1658. },
  1659. {
  1660. "type": "chunk",
  1661. "time": 1789265599075,
  1662. "chunk": {
  1663. "type": "block-end",
  1664. "index": 0,
  1665. "block": {
  1666. "type": "text",
  1667. "text": "回答 56:这是 fixture 生成的历史回复正文。"
  1668. }
  1669. }
  1670. },
  1671. {
  1672. "type": "chunk",
  1673. "time": 1789265599075,
  1674. "chunk": {
  1675. "type": "usage",
  1676. "usage": {
  1677. "inputTokens": 21,
  1678. "outputTokens": 8,
  1679. "cacheReadTokens": 80,
  1680. "cacheWriteTokens": 0
  1681. }
  1682. }
  1683. },
  1684. {
  1685. "type": "chunk",
  1686. "time": 1789265599075,
  1687. "chunk": {
  1688. "type": "finish",
  1689. "reason": {
  1690. "kind": "stop"
  1691. }
  1692. }
  1693. }
  1694. ]
  1695. }
  1696. }
  1697. },
  1698. {
  1699. "type": "event",
  1700. "event": {
  1701. "seq": 404,
  1702. "time": 1789265599875,
  1703. "type": "step/end",
  1704. "data": {
  1705. "turn": 56,
  1706. "step": 0
  1707. }
  1708. }
  1709. },
  1710. {
  1711. "type": "event",
  1712. "event": {
  1713. "seq": 405,
  1714. "time": 1789265600675,
  1715. "type": "turn/end",
  1716. "data": {
  1717. "turn": 56,
  1718. "reason": {
  1719. "kind": "completed"
  1720. }
  1721. }
  1722. }
  1723. },
  1724. {
  1725. "type": "event",
  1726. "event": {
  1727. "seq": 406,
  1728. "time": 1789265601475,
  1729. "type": "turn/start",
  1730. "data": {
  1731. "turn": 57
  1732. }
  1733. }
  1734. },
  1735. {
  1736. "type": "event",
  1737. "event": {
  1738. "seq": 407,
  1739. "time": 1789265602275,
  1740. "type": "user/message",
  1741. "surfaceOp": "append",
  1742. "data": {
  1743. "content": [
  1744. {
  1745. "type": "text",
  1746. "text": "问题 57:fixture 历史消息,用于翻页与渲染验收。"
  1747. }
  1748. ],
  1749. "source": {
  1750. "kind": "user"
  1751. },
  1752. "role": "user",
  1753. "id": "4196af12-5f06-4244-a83e-281b0e2e2565"
  1754. }
  1755. }
  1756. },
  1757. {
  1758. "type": "event",
  1759. "event": {
  1760. "seq": 408,
  1761. "time": 1789265603075,
  1762. "type": "step/start",
  1763. "data": {
  1764. "turn": 57,
  1765. "step": 0
  1766. }
  1767. }
  1768. },
  1769. {
  1770. "type": "event",
  1771. "event": {
  1772. "seq": 409,
  1773. "time": 1789265603875,
  1774. "type": "assistant/message",
  1775. "surfaceOp": "append",
  1776. "data": {
  1777. "turn": 57,
  1778. "step": 0,
  1779. "message": {
  1780. "role": "assistant",
  1781. "content": [
  1782. {
  1783. "type": "text",
  1784. "text": "回答 57:这是 fixture 生成的历史回复正文。"
  1785. },
  1786. {
  1787. "type": "tool-call",
  1788. "id": "fx-call-57",
  1789. "name": "echo",
  1790. "arguments": "{\"text\":\"turn 57\"}"
  1791. }
  1792. ],
  1793. "source": {
  1794. "kind": "model",
  1795. "provider": "fixture",
  1796. "model": "fx-1"
  1797. },
  1798. "id": "dc114329-e3f4-43a4-bbd7-3524203a99e9"
  1799. },
  1800. "usage": {
  1801. "inputTokens": 22,
  1802. "outputTokens": 8,
  1803. "cacheReadTokens": 80,
  1804. "cacheWriteTokens": 0
  1805. },
  1806. "stream": [
  1807. {
  1808. "type": "chunk",
  1809. "time": 1789265603875,
  1810. "chunk": {
  1811. "type": "block-start",
  1812. "index": 0,
  1813. "blockType": "text"
  1814. }
  1815. },
  1816. {
  1817. "type": "chunk",
  1818. "time": 1789265603875,
  1819. "chunk": {
  1820. "type": "block-end",
  1821. "index": 0,
  1822. "block": {
  1823. "type": "text",
  1824. "text": "回答 57:这是 fixture 生成的历史回复正文。"
  1825. }
  1826. }
  1827. },
  1828. {
  1829. "type": "chunk",
  1830. "time": 1789265603875,
  1831. "chunk": {
  1832. "type": "block-start",
  1833. "index": 1,
  1834. "blockType": "tool-call"
  1835. }
  1836. },
  1837. {
  1838. "type": "chunk",
  1839. "time": 1789265603875,
  1840. "chunk": {
  1841. "type": "block-end",
  1842. "index": 1,
  1843. "block": {
  1844. "type": "tool-call",
  1845. "id": "fx-call-57",
  1846. "name": "echo",
  1847. "arguments": "{\"text\":\"turn 57\"}"
  1848. }
  1849. }
  1850. },
  1851. {
  1852. "type": "chunk",
  1853. "time": 1789265603875,
  1854. "chunk": {
  1855. "type": "usage",
  1856. "usage": {
  1857. "inputTokens": 22,
  1858. "outputTokens": 8,
  1859. "cacheReadTokens": 80,
  1860. "cacheWriteTokens": 0
  1861. }
  1862. }
  1863. },
  1864. {
  1865. "type": "chunk",
  1866. "time": 1789265603875,
  1867. "chunk": {
  1868. "type": "finish",
  1869. "reason": {
  1870. "kind": "stop"
  1871. }
  1872. }
  1873. }
  1874. ]
  1875. }
  1876. }
  1877. },
  1878. {
  1879. "type": "event",
  1880. "event": {
  1881. "seq": 410,
  1882. "time": 1789265604675,
  1883. "type": "tool/call",
  1884. "data": {
  1885. "turn": 57,
  1886. "step": 0,
  1887. "callId": "fx-call-57",
  1888. "name": "echo",
  1889. "arguments": "{\"text\":\"turn 57\"}"
  1890. }
  1891. }
  1892. },
  1893. {
  1894. "type": "event",
  1895. "event": {
  1896. "seq": 411,
  1897. "time": 1789265605475,
  1898. "type": "tool/result",
  1899. "surfaceOp": "append",
  1900. "data": {
  1901. "turn": 57,
  1902. "step": 0,
  1903. "message": {
  1904. "source": {
  1905. "kind": "tool",
  1906. "callId": "fx-call-57"
  1907. },
  1908. "content": [
  1909. {
  1910. "type": "tool-result",
  1911. "toolCallId": "fx-call-57",
  1912. "content": [
  1913. {
  1914. "type": "text",
  1915. "text": "ECHO: TURN 57"
  1916. }
  1917. ],
  1918. "isError": false
  1919. }
  1920. ],
  1921. "role": "user",
  1922. "id": "652931ce-6eb0-4400-8173-9735b82fdf8e"
  1923. }
  1924. }
  1925. }
  1926. },
  1927. {
  1928. "type": "event",
  1929. "event": {
  1930. "seq": 412,
  1931. "time": 1789265606275,
  1932. "type": "step/end",
  1933. "data": {
  1934. "turn": 57,
  1935. "step": 0
  1936. }
  1937. }
  1938. },
  1939. {
  1940. "type": "event",
  1941. "event": {
  1942. "seq": 413,
  1943. "time": 1789265607075,
  1944. "type": "step/start",
  1945. "data": {
  1946. "turn": 57,
  1947. "step": 1
  1948. }
  1949. }
  1950. },
  1951. {
  1952. "type": "event",
  1953. "event": {
  1954. "seq": 414,
  1955. "time": 1789265607875,
  1956. "type": "assistant/message",
  1957. "surfaceOp": "append",
  1958. "data": {
  1959. "turn": 57,
  1960. "step": 1,
  1961. "message": {
  1962. "role": "assistant",
  1963. "content": [
  1964. {
  1965. "type": "text",
  1966. "text": "工具结果已消化(turn 57)。"
  1967. }
  1968. ],
  1969. "source": {
  1970. "kind": "model",
  1971. "provider": "fixture",
  1972. "model": "fx-1"
  1973. },
  1974. "id": "02030b82-e0d9-4e8f-a17c-bfeaa78a74d0"
  1975. },
  1976. "usage": {
  1977. "inputTokens": 22,
  1978. "outputTokens": 9,
  1979. "cacheReadTokens": 80,
  1980. "cacheWriteTokens": 0
  1981. },
  1982. "stream": [
  1983. {
  1984. "type": "chunk",
  1985. "time": 1789265607875,
  1986. "chunk": {
  1987. "type": "block-start",
  1988. "index": 0,
  1989. "blockType": "text"
  1990. }
  1991. },
  1992. {
  1993. "type": "chunk",
  1994. "time": 1789265607875,
  1995. "chunk": {
  1996. "type": "block-end",
  1997. "index": 0,
  1998. "block": {
  1999. "type": "text",
  2000. "text": "工具结果已消化(turn 57)。"
  2001. }
  2002. }
  2003. },
  2004. {
  2005. "type": "chunk",
  2006. "time": 1789265607875,
  2007. "chunk": {
  2008. "type": "usage",
  2009. "usage": {
  2010. "inputTokens": 22,
  2011. "outputTokens": 9,
  2012. "cacheReadTokens": 80,
  2013. "cacheWriteTokens": 0
  2014. }
  2015. }
  2016. },
  2017. {
  2018. "type": "chunk",
  2019. "time": 1789265607875,
  2020. "chunk": {
  2021. "type": "finish",
  2022. "reason": {
  2023. "kind": "stop"
  2024. }
  2025. }
  2026. }
  2027. ]
  2028. }
  2029. }
  2030. },
  2031. {
  2032. "type": "event",
  2033. "event": {
  2034. "seq": 415,
  2035. "time": 1789265608675,
  2036. "type": "step/end",
  2037. "data": {
  2038. "turn": 57,
  2039. "step": 1
  2040. }
  2041. }
  2042. },
  2043. {
  2044. "type": "event",
  2045. "event": {
  2046. "seq": 416,
  2047. "time": 1789265609475,
  2048. "type": "turn/end",
  2049. "data": {
  2050. "turn": 57,
  2051. "reason": {
  2052. "kind": "completed"
  2053. }
  2054. }
  2055. }
  2056. },
  2057. {
  2058. "type": "event",
  2059. "event": {
  2060. "seq": 417,
  2061. "time": 1789265610275,
  2062. "type": "turn/start",
  2063. "data": {
  2064. "turn": 58
  2065. }
  2066. }
  2067. },
  2068. {
  2069. "type": "event",
  2070. "event": {
  2071. "seq": 418,
  2072. "time": 1789265611075,
  2073. "type": "user/message",
  2074. "surfaceOp": "append",
  2075. "data": {
  2076. "content": [
  2077. {
  2078. "type": "text",
  2079. "text": "问题 58:fixture 历史消息,用于翻页与渲染验收。"
  2080. }
  2081. ],
  2082. "source": {
  2083. "kind": "user"
  2084. },
  2085. "role": "user",
  2086. "id": "d08478d2-30ac-49fa-b3ca-f71e8d4517ee"
  2087. }
  2088. }
  2089. },
  2090. {
  2091. "type": "event",
  2092. "event": {
  2093. "seq": 419,
  2094. "time": 1789265611875,
  2095. "type": "user/message",
  2096. "surfaceOp": "append",
  2097. "data": {
  2098. "content": [
  2099. {
  2100. "type": "text",
  2101. "text": "[fixture] 上下文注入(turn 58)"
  2102. }
  2103. ],
  2104. "source": {
  2105. "kind": "plugin",
  2106. "plugin": "fixture"
  2107. },
  2108. "role": "user",
  2109. "id": "cbb94cfa-48f7-453b-9825-e61432572399"
  2110. }
  2111. }
  2112. },
  2113. {
  2114. "type": "event",
  2115. "event": {
  2116. "seq": 420,
  2117. "time": 1789265612675,
  2118. "type": "step/start",
  2119. "data": {
  2120. "turn": 58,
  2121. "step": 0
  2122. }
  2123. }
  2124. },
  2125. {
  2126. "type": "event",
  2127. "event": {
  2128. "seq": 421,
  2129. "time": 1789265613475,
  2130. "type": "assistant/message",
  2131. "surfaceOp": "append",
  2132. "data": {
  2133. "turn": 58,
  2134. "step": 0,
  2135. "message": {
  2136. "role": "assistant",
  2137. "content": [
  2138. {
  2139. "type": "reasoning",
  2140. "text": "思考过程 58:这是一段可折叠的 reasoning 内容。"
  2141. },
  2142. {
  2143. "type": "text",
  2144. "text": "回答 58:这是 fixture 生成的历史回复正文。"
  2145. }
  2146. ],
  2147. "source": {
  2148. "kind": "model",
  2149. "provider": "fixture",
  2150. "model": "fx-1"
  2151. },
  2152. "id": "271e5020-8deb-418e-a4c2-d6609f31aa60"
  2153. },
  2154. "usage": {
  2155. "inputTokens": 23,
  2156. "outputTokens": 8,
  2157. "cacheReadTokens": 80,
  2158. "cacheWriteTokens": 0
  2159. },
  2160. "stream": [
  2161. {
  2162. "type": "chunk",
  2163. "time": 1789265613475,
  2164. "chunk": {
  2165. "type": "block-start",
  2166. "index": 0,
  2167. "blockType": "reasoning"
  2168. }
  2169. },
  2170. {
  2171. "type": "chunk",
  2172. "time": 1789265613475,
  2173. "chunk": {
  2174. "type": "block-end",
  2175. "index": 0,
  2176. "block": {
  2177. "type": "reasoning",
  2178. "text": "思考过程 58:这是一段可折叠的 reasoning 内容。"
  2179. }
  2180. }
  2181. },
  2182. {
  2183. "type": "chunk",
  2184. "time": 1789265613475,
  2185. "chunk": {
  2186. "type": "block-start",
  2187. "index": 1,
  2188. "blockType": "text"
  2189. }
  2190. },
  2191. {
  2192. "type": "chunk",
  2193. "time": 1789265613475,
  2194. "chunk": {
  2195. "type": "block-end",
  2196. "index": 1,
  2197. "block": {
  2198. "type": "text",
  2199. "text": "回答 58:这是 fixture 生成的历史回复正文。"
  2200. }
  2201. }
  2202. },
  2203. {
  2204. "type": "chunk",
  2205. "time": 1789265613475,
  2206. "chunk": {
  2207. "type": "usage",
  2208. "usage": {
  2209. "inputTokens": 23,
  2210. "outputTokens": 8,
  2211. "cacheReadTokens": 80,
  2212. "cacheWriteTokens": 0
  2213. }
  2214. }
  2215. },
  2216. {
  2217. "type": "chunk",
  2218. "time": 1789265613475,
  2219. "chunk": {
  2220. "type": "finish",
  2221. "reason": {
  2222. "kind": "stop"
  2223. }
  2224. }
  2225. }
  2226. ]
  2227. }
  2228. }
  2229. },
  2230. {
  2231. "type": "event",
  2232. "event": {
  2233. "seq": 422,
  2234. "time": 1789265614275,
  2235. "type": "step/end",
  2236. "data": {
  2237. "turn": 58,
  2238. "step": 0
  2239. }
  2240. }
  2241. },
  2242. {
  2243. "type": "event",
  2244. "event": {
  2245. "seq": 423,
  2246. "time": 1789265615075,
  2247. "type": "turn/end",
  2248. "data": {
  2249. "turn": 58,
  2250. "reason": {
  2251. "kind": "completed"
  2252. }
  2253. }
  2254. }
  2255. },
  2256. {
  2257. "type": "event",
  2258. "event": {
  2259. "seq": 424,
  2260. "time": 1789265615875,
  2261. "type": "turn/start",
  2262. "data": {
  2263. "turn": 59
  2264. }
  2265. }
  2266. },
  2267. {
  2268. "type": "event",
  2269. "event": {
  2270. "seq": 425,
  2271. "time": 1789265616675,
  2272. "type": "user/message",
  2273. "surfaceOp": "append",
  2274. "data": {
  2275. "content": [
  2276. {
  2277. "type": "text",
  2278. "text": "用户字面量:# 不渲染 `code` [link](https://example.com)"
  2279. }
  2280. ],
  2281. "source": {
  2282. "kind": "user"
  2283. },
  2284. "role": "user",
  2285. "id": "14861e74-05a9-4e2b-b98a-c907999daa42"
  2286. }
  2287. }
  2288. },
  2289. {
  2290. "type": "event",
  2291. "event": {
  2292. "seq": 426,
  2293. "time": 1789265617475,
  2294. "type": "step/start",
  2295. "data": {
  2296. "turn": 59,
  2297. "step": 0
  2298. }
  2299. }
  2300. },
  2301. {
  2302. "type": "event",
  2303. "event": {
  2304. "seq": 427,
  2305. "time": 1789265618275,
  2306. "type": "assistant/message",
  2307. "surfaceOp": "append",
  2308. "data": {
  2309. "turn": 59,
  2310. "step": 0,
  2311. "message": {
  2312. "role": "assistant",
  2313. "content": [
  2314. {
  2315. "type": "text",
  2316. "text": "# Markdown fixture\n\nAssistant output renders **strong text**, *emphasis*, and `inline code`.\n\n- first item\n - nested item\n\n| Area | State |\n| --- | --- |\n| history | rendered |\n| streaming | stable |\n\n[DeepSeek](https://www.deepseek.com)\n\n```ts\nconst markdown = true\n```"
  2317. }
  2318. ],
  2319. "source": {
  2320. "kind": "model",
  2321. "provider": "fixture",
  2322. "model": "fx-1"
  2323. },
  2324. "id": "07a55bdb-ff08-40b3-8922-0422a2f04a87"
  2325. },
  2326. "usage": {
  2327. "inputTokens": 24,
  2328. "outputTokens": 8,
  2329. "cacheReadTokens": 80,
  2330. "cacheWriteTokens": 0
  2331. },
  2332. "stream": [
  2333. {
  2334. "type": "chunk",
  2335. "time": 1789265618275,
  2336. "chunk": {
  2337. "type": "block-start",
  2338. "index": 0,
  2339. "blockType": "text"
  2340. }
  2341. },
  2342. {
  2343. "type": "chunk",
  2344. "time": 1789265618275,
  2345. "chunk": {
  2346. "type": "block-end",
  2347. "index": 0,
  2348. "block": {
  2349. "type": "text",
  2350. "text": "# Markdown fixture\n\nAssistant output renders **strong text**, *emphasis*, and `inline code`.\n\n- first item\n - nested item\n\n| Area | State |\n| --- | --- |\n| history | rendered |\n| streaming | stable |\n\n[DeepSeek](https://www.deepseek.com)\n\n```ts\nconst markdown = true\n```"
  2351. }
  2352. }
  2353. },
  2354. {
  2355. "type": "chunk",
  2356. "time": 1789265618275,
  2357. "chunk": {
  2358. "type": "usage",
  2359. "usage": {
  2360. "inputTokens": 24,
  2361. "outputTokens": 8,
  2362. "cacheReadTokens": 80,
  2363. "cacheWriteTokens": 0
  2364. }
  2365. }
  2366. },
  2367. {
  2368. "type": "chunk",
  2369. "time": 1789265618275,
  2370. "chunk": {
  2371. "type": "finish",
  2372. "reason": {
  2373. "kind": "stop"
  2374. }
  2375. }
  2376. }
  2377. ]
  2378. }
  2379. }
  2380. },
  2381. {
  2382. "type": "event",
  2383. "event": {
  2384. "seq": 428,
  2385. "time": 1789265619075,
  2386. "type": "step/end",
  2387. "data": {
  2388. "turn": 59,
  2389. "step": 0
  2390. }
  2391. }
  2392. },
  2393. {
  2394. "type": "event",
  2395. "event": {
  2396. "seq": 429,
  2397. "time": 1789265619875,
  2398. "type": "turn/end",
  2399. "data": {
  2400. "turn": 59,
  2401. "reason": {
  2402. "kind": "completed"
  2403. }
  2404. }
  2405. }
  2406. },
  2407. {
  2408. "type": "event",
  2409. "event": {
  2410. "seq": 430,
  2411. "time": 1789265620675,
  2412. "type": "turn/start",
  2413. "data": {
  2414. "turn": 60
  2415. }
  2416. }
  2417. },
  2418. {
  2419. "type": "event",
  2420. "event": {
  2421. "seq": 431,
  2422. "time": 1789265621475,
  2423. "type": "user/message",
  2424. "surfaceOp": "append",
  2425. "data": {
  2426. "content": [
  2427. {
  2428. "type": "text",
  2429. "text": "问题 60:bash 样本。"
  2430. }
  2431. ],
  2432. "source": {
  2433. "kind": "user"
  2434. },
  2435. "role": "user",
  2436. "id": "de206a9a-a621-435f-88f0-9613ff152eb5"
  2437. }
  2438. }
  2439. },
  2440. {
  2441. "type": "event",
  2442. "event": {
  2443. "seq": 432,
  2444. "time": 1789265622275,
  2445. "type": "step/start",
  2446. "data": {
  2447. "turn": 60,
  2448. "step": 0
  2449. }
  2450. }
  2451. },
  2452. {
  2453. "type": "event",
  2454. "event": {
  2455. "seq": 433,
  2456. "time": 1789265623075,
  2457. "type": "assistant/message",
  2458. "surfaceOp": "append",
  2459. "data": {
  2460. "turn": 60,
  2461. "step": 0,
  2462. "message": {
  2463. "role": "assistant",
  2464. "content": [
  2465. {
  2466. "type": "tool-call",
  2467. "id": "fx-call-60",
  2468. "name": "bash",
  2469. "arguments": "{\"command\":\"ls -la\\necho done\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture\"}"
  2470. }
  2471. ],
  2472. "source": {
  2473. "kind": "model",
  2474. "provider": "fixture",
  2475. "model": "fx-1"
  2476. },
  2477. "id": "4d338006-4348-4002-8a03-c730802f6f51"
  2478. },
  2479. "usage": {
  2480. "inputTokens": 20,
  2481. "outputTokens": 8,
  2482. "cacheReadTokens": 80,
  2483. "cacheWriteTokens": 4
  2484. },
  2485. "stream": [
  2486. {
  2487. "type": "chunk",
  2488. "time": 1789265623075,
  2489. "chunk": {
  2490. "type": "block-start",
  2491. "index": 0,
  2492. "blockType": "tool-call"
  2493. }
  2494. },
  2495. {
  2496. "type": "chunk",
  2497. "time": 1789265623075,
  2498. "chunk": {
  2499. "type": "block-end",
  2500. "index": 0,
  2501. "block": {
  2502. "type": "tool-call",
  2503. "id": "fx-call-60",
  2504. "name": "bash",
  2505. "arguments": "{\"command\":\"ls -la\\necho done\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture\"}"
  2506. }
  2507. }
  2508. },
  2509. {
  2510. "type": "chunk",
  2511. "time": 1789265623075,
  2512. "chunk": {
  2513. "type": "usage",
  2514. "usage": {
  2515. "inputTokens": 20,
  2516. "outputTokens": 8,
  2517. "cacheReadTokens": 80,
  2518. "cacheWriteTokens": 4
  2519. }
  2520. }
  2521. },
  2522. {
  2523. "type": "chunk",
  2524. "time": 1789265623075,
  2525. "chunk": {
  2526. "type": "finish",
  2527. "reason": {
  2528. "kind": "stop"
  2529. }
  2530. }
  2531. }
  2532. ]
  2533. }
  2534. }
  2535. },
  2536. {
  2537. "type": "event",
  2538. "event": {
  2539. "seq": 434,
  2540. "time": 1789265623875,
  2541. "type": "tool/call",
  2542. "data": {
  2543. "turn": 60,
  2544. "step": 0,
  2545. "callId": "fx-call-60",
  2546. "name": "bash",
  2547. "arguments": "{\"command\":\"ls -la\\necho done\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture\"}"
  2548. }
  2549. }
  2550. },
  2551. {
  2552. "type": "event",
  2553. "event": {
  2554. "seq": 435,
  2555. "time": 1789265624675,
  2556. "type": "tool/result",
  2557. "surfaceOp": "append",
  2558. "data": {
  2559. "turn": 60,
  2560. "step": 0,
  2561. "message": {
  2562. "source": {
  2563. "kind": "tool",
  2564. "callId": "fx-call-60"
  2565. },
  2566. "content": [
  2567. {
  2568. "type": "tool-result",
  2569. "toolCallId": "fx-call-60",
  2570. "content": [
  2571. {
  2572. "type": "text",
  2573. "text": "total 2\ndrwxr-xr-x fixture\n-rw-r--r-- demo.txt"
  2574. }
  2575. ],
  2576. "isError": false
  2577. }
  2578. ],
  2579. "role": "user",
  2580. "id": "aa4c1898-7bec-4831-8ba1-0700f4ae897e"
  2581. }
  2582. }
  2583. }
  2584. },
  2585. {
  2586. "type": "event",
  2587. "event": {
  2588. "seq": 436,
  2589. "time": 1789265625475,
  2590. "type": "step/end",
  2591. "data": {
  2592. "turn": 60,
  2593. "step": 0
  2594. }
  2595. }
  2596. },
  2597. {
  2598. "type": "event",
  2599. "event": {
  2600. "seq": 437,
  2601. "time": 1789265626275,
  2602. "type": "turn/end",
  2603. "data": {
  2604. "turn": 60,
  2605. "reason": {
  2606. "kind": "completed"
  2607. }
  2608. }
  2609. }
  2610. },
  2611. {
  2612. "type": "event",
  2613. "event": {
  2614. "seq": 438,
  2615. "time": 1789265627075,
  2616. "type": "turn/start",
  2617. "data": {
  2618. "turn": 61
  2619. }
  2620. }
  2621. },
  2622. {
  2623. "type": "event",
  2624. "event": {
  2625. "seq": 439,
  2626. "time": 1789265627875,
  2627. "type": "user/message",
  2628. "surfaceOp": "append",
  2629. "data": {
  2630. "content": [
  2631. {
  2632. "type": "text",
  2633. "text": "问题 61:write 样本。"
  2634. }
  2635. ],
  2636. "source": {
  2637. "kind": "user"
  2638. },
  2639. "role": "user",
  2640. "id": "6fd7a2c3-2ead-41a0-b954-21883b4bc03d"
  2641. }
  2642. }
  2643. },
  2644. {
  2645. "type": "event",
  2646. "event": {
  2647. "seq": 440,
  2648. "time": 1789265628675,
  2649. "type": "step/start",
  2650. "data": {
  2651. "turn": 61,
  2652. "step": 0
  2653. }
  2654. }
  2655. },
  2656. {
  2657. "type": "event",
  2658. "event": {
  2659. "seq": 441,
  2660. "time": 1789265629475,
  2661. "type": "assistant/message",
  2662. "surfaceOp": "append",
  2663. "data": {
  2664. "turn": 61,
  2665. "step": 0,
  2666. "message": {
  2667. "role": "assistant",
  2668. "content": [
  2669. {
  2670. "type": "tool-call",
  2671. "id": "fx-call-61",
  2672. "name": "write",
  2673. "arguments": "{\"file_path\":\"notes/demo.txt\",\"content\":\"hello fixture\\n\"}"
  2674. }
  2675. ],
  2676. "source": {
  2677. "kind": "model",
  2678. "provider": "fixture",
  2679. "model": "fx-1"
  2680. },
  2681. "id": "a3c1b7d4-200f-49b7-b550-bbc5ad98dbc9"
  2682. },
  2683. "usage": {
  2684. "inputTokens": 21,
  2685. "outputTokens": 8,
  2686. "cacheReadTokens": 80,
  2687. "cacheWriteTokens": 0
  2688. },
  2689. "stream": [
  2690. {
  2691. "type": "chunk",
  2692. "time": 1789265629475,
  2693. "chunk": {
  2694. "type": "block-start",
  2695. "index": 0,
  2696. "blockType": "tool-call"
  2697. }
  2698. },
  2699. {
  2700. "type": "chunk",
  2701. "time": 1789265629475,
  2702. "chunk": {
  2703. "type": "block-end",
  2704. "index": 0,
  2705. "block": {
  2706. "type": "tool-call",
  2707. "id": "fx-call-61",
  2708. "name": "write",
  2709. "arguments": "{\"file_path\":\"notes/demo.txt\",\"content\":\"hello fixture\\n\"}"
  2710. }
  2711. }
  2712. },
  2713. {
  2714. "type": "chunk",
  2715. "time": 1789265629475,
  2716. "chunk": {
  2717. "type": "usage",
  2718. "usage": {
  2719. "inputTokens": 21,
  2720. "outputTokens": 8,
  2721. "cacheReadTokens": 80,
  2722. "cacheWriteTokens": 0
  2723. }
  2724. }
  2725. },
  2726. {
  2727. "type": "chunk",
  2728. "time": 1789265629475,
  2729. "chunk": {
  2730. "type": "finish",
  2731. "reason": {
  2732. "kind": "stop"
  2733. }
  2734. }
  2735. }
  2736. ]
  2737. }
  2738. }
  2739. },
  2740. {
  2741. "type": "event",
  2742. "event": {
  2743. "seq": 442,
  2744. "time": 1789265630275,
  2745. "type": "tool/call",
  2746. "data": {
  2747. "turn": 61,
  2748. "step": 0,
  2749. "callId": "fx-call-61",
  2750. "name": "write",
  2751. "arguments": "{\"file_path\":\"notes/demo.txt\",\"content\":\"hello fixture\\n\"}"
  2752. }
  2753. }
  2754. },
  2755. {
  2756. "type": "event",
  2757. "event": {
  2758. "seq": 443,
  2759. "time": 1789265631075,
  2760. "type": "tool/result",
  2761. "surfaceOp": "append",
  2762. "data": {
  2763. "turn": 61,
  2764. "step": 0,
  2765. "message": {
  2766. "source": {
  2767. "kind": "tool",
  2768. "callId": "fx-call-61"
  2769. },
  2770. "content": [
  2771. {
  2772. "type": "tool-result",
  2773. "toolCallId": "fx-call-61",
  2774. "content": [
  2775. {
  2776. "type": "text",
  2777. "text": "wrote notes/demo.txt"
  2778. }
  2779. ],
  2780. "isError": false
  2781. }
  2782. ],
  2783. "role": "user",
  2784. "id": "4eedd943-773b-43d3-a104-e13550015670"
  2785. },
  2786. "meta": {
  2787. "diffs": [
  2788. {
  2789. "path": "notes/demo.txt",
  2790. "oldText": null,
  2791. "newText": "hello fixture\n"
  2792. }
  2793. ]
  2794. }
  2795. }
  2796. }
  2797. },
  2798. {
  2799. "type": "event",
  2800. "event": {
  2801. "seq": 444,
  2802. "time": 1789265631875,
  2803. "type": "step/end",
  2804. "data": {
  2805. "turn": 61,
  2806. "step": 0
  2807. }
  2808. }
  2809. },
  2810. {
  2811. "type": "event",
  2812. "event": {
  2813. "seq": 445,
  2814. "time": 1789265632675,
  2815. "type": "turn/end",
  2816. "data": {
  2817. "turn": 61,
  2818. "reason": {
  2819. "kind": "completed"
  2820. }
  2821. }
  2822. }
  2823. },
  2824. {
  2825. "type": "event",
  2826. "event": {
  2827. "seq": 446,
  2828. "time": 1789265633475,
  2829. "type": "turn/start",
  2830. "data": {
  2831. "turn": 62
  2832. }
  2833. }
  2834. },
  2835. {
  2836. "type": "event",
  2837. "event": {
  2838. "seq": 447,
  2839. "time": 1789265634275,
  2840. "type": "user/message",
  2841. "surfaceOp": "append",
  2842. "data": {
  2843. "content": [
  2844. {
  2845. "type": "text",
  2846. "text": "问题 62:edit 样本。"
  2847. }
  2848. ],
  2849. "source": {
  2850. "kind": "user"
  2851. },
  2852. "role": "user",
  2853. "id": "8f4e6682-2963-4daa-a912-84ff053ac32e"
  2854. }
  2855. }
  2856. },
  2857. {
  2858. "type": "event",
  2859. "event": {
  2860. "seq": 448,
  2861. "time": 1789265635075,
  2862. "type": "step/start",
  2863. "data": {
  2864. "turn": 62,
  2865. "step": 0
  2866. }
  2867. }
  2868. },
  2869. {
  2870. "type": "event",
  2871. "event": {
  2872. "seq": 449,
  2873. "time": 1789265635875,
  2874. "type": "assistant/message",
  2875. "surfaceOp": "append",
  2876. "data": {
  2877. "turn": 62,
  2878. "step": 0,
  2879. "message": {
  2880. "role": "assistant",
  2881. "content": [
  2882. {
  2883. "type": "tool-call",
  2884. "id": "fx-call-62",
  2885. "name": "edit",
  2886. "arguments": "{\"file_path\":\"notes/demo.txt\",\"old_string\":\"hello\",\"new_string\":\"hello fixture\"}"
  2887. }
  2888. ],
  2889. "source": {
  2890. "kind": "model",
  2891. "provider": "fixture",
  2892. "model": "fx-1"
  2893. },
  2894. "id": "f1b3b777-d4ec-4b33-80ac-fa4e9d87885a"
  2895. },
  2896. "usage": {
  2897. "inputTokens": 22,
  2898. "outputTokens": 8,
  2899. "cacheReadTokens": 80,
  2900. "cacheWriteTokens": 0
  2901. },
  2902. "stream": [
  2903. {
  2904. "type": "chunk",
  2905. "time": 1789265635875,
  2906. "chunk": {
  2907. "type": "block-start",
  2908. "index": 0,
  2909. "blockType": "tool-call"
  2910. }
  2911. },
  2912. {
  2913. "type": "chunk",
  2914. "time": 1789265635875,
  2915. "chunk": {
  2916. "type": "block-end",
  2917. "index": 0,
  2918. "block": {
  2919. "type": "tool-call",
  2920. "id": "fx-call-62",
  2921. "name": "edit",
  2922. "arguments": "{\"file_path\":\"notes/demo.txt\",\"old_string\":\"hello\",\"new_string\":\"hello fixture\"}"
  2923. }
  2924. }
  2925. },
  2926. {
  2927. "type": "chunk",
  2928. "time": 1789265635875,
  2929. "chunk": {
  2930. "type": "usage",
  2931. "usage": {
  2932. "inputTokens": 22,
  2933. "outputTokens": 8,
  2934. "cacheReadTokens": 80,
  2935. "cacheWriteTokens": 0
  2936. }
  2937. }
  2938. },
  2939. {
  2940. "type": "chunk",
  2941. "time": 1789265635875,
  2942. "chunk": {
  2943. "type": "finish",
  2944. "reason": {
  2945. "kind": "stop"
  2946. }
  2947. }
  2948. }
  2949. ]
  2950. }
  2951. }
  2952. },
  2953. {
  2954. "type": "event",
  2955. "event": {
  2956. "seq": 450,
  2957. "time": 1789265636675,
  2958. "type": "tool/call",
  2959. "data": {
  2960. "turn": 62,
  2961. "step": 0,
  2962. "callId": "fx-call-62",
  2963. "name": "edit",
  2964. "arguments": "{\"file_path\":\"notes/demo.txt\",\"old_string\":\"hello\",\"new_string\":\"hello fixture\"}"
  2965. }
  2966. }
  2967. },
  2968. {
  2969. "type": "event",
  2970. "event": {
  2971. "seq": 451,
  2972. "time": 1789265637475,
  2973. "type": "tool/result",
  2974. "surfaceOp": "append",
  2975. "data": {
  2976. "turn": 62,
  2977. "step": 0,
  2978. "message": {
  2979. "source": {
  2980. "kind": "tool",
  2981. "callId": "fx-call-62"
  2982. },
  2983. "content": [
  2984. {
  2985. "type": "tool-result",
  2986. "toolCallId": "fx-call-62",
  2987. "content": [
  2988. {
  2989. "type": "text",
  2990. "text": "已编辑"
  2991. }
  2992. ],
  2993. "isError": false
  2994. }
  2995. ],
  2996. "role": "user",
  2997. "id": "37d72542-2cbc-4821-8897-329da97fe462"
  2998. },
  2999. "meta": {
  3000. "diffs": [
  3001. {
  3002. "path": "notes/demo.txt",
  3003. "oldText": "hello",
  3004. "newText": "hello fixture"
  3005. }
  3006. ]
  3007. }
  3008. }
  3009. }
  3010. },
  3011. {
  3012. "type": "event",
  3013. "event": {
  3014. "seq": 452,
  3015. "time": 1789265638275,
  3016. "type": "step/end",
  3017. "data": {
  3018. "turn": 62,
  3019. "step": 0
  3020. }
  3021. }
  3022. },
  3023. {
  3024. "type": "event",
  3025. "event": {
  3026. "seq": 453,
  3027. "time": 1789265639075,
  3028. "type": "turn/end",
  3029. "data": {
  3030. "turn": 62,
  3031. "reason": {
  3032. "kind": "completed"
  3033. }
  3034. }
  3035. }
  3036. },
  3037. {
  3038. "type": "event",
  3039. "event": {
  3040. "seq": 454,
  3041. "time": 1789265639875,
  3042. "type": "turn/start",
  3043. "data": {
  3044. "turn": 63
  3045. }
  3046. }
  3047. },
  3048. {
  3049. "type": "event",
  3050. "event": {
  3051. "seq": 455,
  3052. "time": 1789265640675,
  3053. "type": "user/message",
  3054. "surfaceOp": "append",
  3055. "data": {
  3056. "content": [
  3057. {
  3058. "type": "text",
  3059. "text": "问题 63:write 样本。"
  3060. }
  3061. ],
  3062. "source": {
  3063. "kind": "user"
  3064. },
  3065. "role": "user",
  3066. "id": "8e09ed22-fb26-4b3a-8ef5-1e2ac363e0f8"
  3067. }
  3068. }
  3069. },
  3070. {
  3071. "type": "event",
  3072. "event": {
  3073. "seq": 456,
  3074. "time": 1789265641475,
  3075. "type": "step/start",
  3076. "data": {
  3077. "turn": 63,
  3078. "step": 0
  3079. }
  3080. }
  3081. },
  3082. {
  3083. "type": "event",
  3084. "event": {
  3085. "seq": 457,
  3086. "time": 1789265642275,
  3087. "type": "assistant/message",
  3088. "surfaceOp": "append",
  3089. "data": {
  3090. "turn": 63,
  3091. "step": 0,
  3092. "message": {
  3093. "role": "assistant",
  3094. "content": [
  3095. {
  3096. "type": "tool-call",
  3097. "id": "fx-call-63",
  3098. "name": "write",
  3099. "arguments": "{\"file_path\":\"notes/new-demo.txt\",\"content\":\"hello fixture\\n\"}"
  3100. }
  3101. ],
  3102. "source": {
  3103. "kind": "model",
  3104. "provider": "fixture",
  3105. "model": "fx-1"
  3106. },
  3107. "id": "65f7aa11-c436-4b13-8715-63437a194d29"
  3108. },
  3109. "usage": {
  3110. "inputTokens": 23,
  3111. "outputTokens": 8,
  3112. "cacheReadTokens": 80,
  3113. "cacheWriteTokens": 0
  3114. },
  3115. "stream": [
  3116. {
  3117. "type": "chunk",
  3118. "time": 1789265642275,
  3119. "chunk": {
  3120. "type": "block-start",
  3121. "index": 0,
  3122. "blockType": "tool-call"
  3123. }
  3124. },
  3125. {
  3126. "type": "chunk",
  3127. "time": 1789265642275,
  3128. "chunk": {
  3129. "type": "block-end",
  3130. "index": 0,
  3131. "block": {
  3132. "type": "tool-call",
  3133. "id": "fx-call-63",
  3134. "name": "write",
  3135. "arguments": "{\"file_path\":\"notes/new-demo.txt\",\"content\":\"hello fixture\\n\"}"
  3136. }
  3137. }
  3138. },
  3139. {
  3140. "type": "chunk",
  3141. "time": 1789265642275,
  3142. "chunk": {
  3143. "type": "usage",
  3144. "usage": {
  3145. "inputTokens": 23,
  3146. "outputTokens": 8,
  3147. "cacheReadTokens": 80,
  3148. "cacheWriteTokens": 0
  3149. }
  3150. }
  3151. },
  3152. {
  3153. "type": "chunk",
  3154. "time": 1789265642275,
  3155. "chunk": {
  3156. "type": "finish",
  3157. "reason": {
  3158. "kind": "stop"
  3159. }
  3160. }
  3161. }
  3162. ]
  3163. }
  3164. }
  3165. },
  3166. {
  3167. "type": "event",
  3168. "event": {
  3169. "seq": 458,
  3170. "time": 1789265643075,
  3171. "type": "tool/call",
  3172. "data": {
  3173. "turn": 63,
  3174. "step": 0,
  3175. "callId": "fx-call-63",
  3176. "name": "write",
  3177. "arguments": "{\"file_path\":\"notes/new-demo.txt\",\"content\":\"hello fixture\\n\"}"
  3178. }
  3179. }
  3180. },
  3181. {
  3182. "type": "event",
  3183. "event": {
  3184. "seq": 459,
  3185. "time": 1789265643875,
  3186. "type": "tool/result",
  3187. "surfaceOp": "append",
  3188. "data": {
  3189. "turn": 63,
  3190. "step": 0,
  3191. "message": {
  3192. "source": {
  3193. "kind": "tool",
  3194. "callId": "fx-call-63"
  3195. },
  3196. "content": [
  3197. {
  3198. "type": "tool-result",
  3199. "toolCallId": "fx-call-63",
  3200. "content": [
  3201. {
  3202. "type": "text",
  3203. "text": "已写入"
  3204. }
  3205. ],
  3206. "isError": false
  3207. }
  3208. ],
  3209. "role": "user",
  3210. "id": "0d0c76cf-f5b2-4f77-97cb-b0b66a67d135"
  3211. },
  3212. "meta": {
  3213. "diffs": [
  3214. {
  3215. "path": "notes/new-demo.txt",
  3216. "oldText": null,
  3217. "newText": "hello fixture\n"
  3218. }
  3219. ]
  3220. }
  3221. }
  3222. }
  3223. },
  3224. {
  3225. "type": "event",
  3226. "event": {
  3227. "seq": 460,
  3228. "time": 1789265644675,
  3229. "type": "step/end",
  3230. "data": {
  3231. "turn": 63,
  3232. "step": 0
  3233. }
  3234. }
  3235. },
  3236. {
  3237. "type": "event",
  3238. "event": {
  3239. "seq": 461,
  3240. "time": 1789265645475,
  3241. "type": "turn/end",
  3242. "data": {
  3243. "turn": 63,
  3244. "reason": {
  3245. "kind": "completed"
  3246. }
  3247. }
  3248. }
  3249. },
  3250. {
  3251. "type": "event",
  3252. "event": {
  3253. "seq": 462,
  3254. "time": 1789265646275,
  3255. "type": "turn/start",
  3256. "data": {
  3257. "turn": 64
  3258. }
  3259. }
  3260. },
  3261. {
  3262. "type": "event",
  3263. "event": {
  3264. "seq": 463,
  3265. "time": 1789265647075,
  3266. "type": "user/message",
  3267. "surfaceOp": "append",
  3268. "data": {
  3269. "content": [
  3270. {
  3271. "type": "text",
  3272. "text": "问题 64:edit 样本。"
  3273. }
  3274. ],
  3275. "source": {
  3276. "kind": "user"
  3277. },
  3278. "role": "user",
  3279. "id": "99fcaad3-6e35-4e4f-a359-f97c673c72a2"
  3280. }
  3281. }
  3282. },
  3283. {
  3284. "type": "event",
  3285. "event": {
  3286. "seq": 464,
  3287. "time": 1789265647875,
  3288. "type": "step/start",
  3289. "data": {
  3290. "turn": 64,
  3291. "step": 0
  3292. }
  3293. }
  3294. },
  3295. {
  3296. "type": "event",
  3297. "event": {
  3298. "seq": 465,
  3299. "time": 1789265648675,
  3300. "type": "assistant/message",
  3301. "surfaceOp": "append",
  3302. "data": {
  3303. "turn": 64,
  3304. "step": 0,
  3305. "message": {
  3306. "role": "assistant",
  3307. "content": [
  3308. {
  3309. "type": "tool-call",
  3310. "id": "fx-call-64",
  3311. "name": "edit",
  3312. "arguments": "{\"file_path\":\"src/config.ts\",\"old_string\":\"const timeout = 30\",\"new_string\":\"const timeout = 60\"}"
  3313. }
  3314. ],
  3315. "source": {
  3316. "kind": "model",
  3317. "provider": "fixture",
  3318. "model": "fx-1"
  3319. },
  3320. "id": "e0ae34f7-02f8-4093-a01b-e92d87fcbc3c"
  3321. },
  3322. "usage": {
  3323. "inputTokens": 24,
  3324. "outputTokens": 8,
  3325. "cacheReadTokens": 80,
  3326. "cacheWriteTokens": 0
  3327. },
  3328. "stream": [
  3329. {
  3330. "type": "chunk",
  3331. "time": 1789265648675,
  3332. "chunk": {
  3333. "type": "block-start",
  3334. "index": 0,
  3335. "blockType": "tool-call"
  3336. }
  3337. },
  3338. {
  3339. "type": "chunk",
  3340. "time": 1789265648675,
  3341. "chunk": {
  3342. "type": "block-end",
  3343. "index": 0,
  3344. "block": {
  3345. "type": "tool-call",
  3346. "id": "fx-call-64",
  3347. "name": "edit",
  3348. "arguments": "{\"file_path\":\"src/config.ts\",\"old_string\":\"const timeout = 30\",\"new_string\":\"const timeout = 60\"}"
  3349. }
  3350. }
  3351. },
  3352. {
  3353. "type": "chunk",
  3354. "time": 1789265648675,
  3355. "chunk": {
  3356. "type": "usage",
  3357. "usage": {
  3358. "inputTokens": 24,
  3359. "outputTokens": 8,
  3360. "cacheReadTokens": 80,
  3361. "cacheWriteTokens": 0
  3362. }
  3363. }
  3364. },
  3365. {
  3366. "type": "chunk",
  3367. "time": 1789265648675,
  3368. "chunk": {
  3369. "type": "finish",
  3370. "reason": {
  3371. "kind": "stop"
  3372. }
  3373. }
  3374. }
  3375. ]
  3376. }
  3377. }
  3378. },
  3379. {
  3380. "type": "event",
  3381. "event": {
  3382. "seq": 466,
  3383. "time": 1789265649475,
  3384. "type": "tool/call",
  3385. "data": {
  3386. "turn": 64,
  3387. "step": 0,
  3388. "callId": "fx-call-64",
  3389. "name": "edit",
  3390. "arguments": "{\"file_path\":\"src/config.ts\",\"old_string\":\"const timeout = 30\",\"new_string\":\"const timeout = 60\"}"
  3391. }
  3392. }
  3393. },
  3394. {
  3395. "type": "event",
  3396. "event": {
  3397. "seq": 467,
  3398. "time": 1789265650275,
  3399. "type": "tool/result",
  3400. "surfaceOp": "append",
  3401. "data": {
  3402. "turn": 64,
  3403. "step": 0,
  3404. "message": {
  3405. "source": {
  3406. "kind": "tool",
  3407. "callId": "fx-call-64"
  3408. },
  3409. "content": [
  3410. {
  3411. "type": "tool-result",
  3412. "toolCallId": "fx-call-64",
  3413. "content": [
  3414. {
  3415. "type": "text",
  3416. "text": "已编辑"
  3417. }
  3418. ],
  3419. "isError": false
  3420. }
  3421. ],
  3422. "role": "user",
  3423. "id": "11a489c7-466c-45ba-a5de-228fecd455f2"
  3424. },
  3425. "meta": {
  3426. "diffs": [
  3427. {
  3428. "path": "src/config.ts",
  3429. "oldText": "const timeout = 30",
  3430. "newText": "const timeout = 60"
  3431. },
  3432. {
  3433. "path": "src/config.ts",
  3434. "oldText": "retries: 1",
  3435. "newText": "retries: 3"
  3436. }
  3437. ]
  3438. }
  3439. }
  3440. }
  3441. },
  3442. {
  3443. "type": "event",
  3444. "event": {
  3445. "seq": 468,
  3446. "time": 1789265651075,
  3447. "type": "step/end",
  3448. "data": {
  3449. "turn": 64,
  3450. "step": 0
  3451. }
  3452. }
  3453. },
  3454. {
  3455. "type": "event",
  3456. "event": {
  3457. "seq": 469,
  3458. "time": 1789265651875,
  3459. "type": "turn/end",
  3460. "data": {
  3461. "turn": 64,
  3462. "reason": {
  3463. "kind": "completed"
  3464. }
  3465. }
  3466. }
  3467. },
  3468. {
  3469. "type": "event",
  3470. "event": {
  3471. "seq": 470,
  3472. "time": 1789265652675,
  3473. "type": "turn/start",
  3474. "data": {
  3475. "turn": 65
  3476. }
  3477. }
  3478. },
  3479. {
  3480. "type": "event",
  3481. "event": {
  3482. "seq": 471,
  3483. "time": 1789265653475,
  3484. "type": "user/message",
  3485. "surfaceOp": "append",
  3486. "data": {
  3487. "content": [
  3488. {
  3489. "type": "text",
  3490. "text": "问题 65:run_code 样本。"
  3491. }
  3492. ],
  3493. "source": {
  3494. "kind": "user"
  3495. },
  3496. "role": "user",
  3497. "id": "350becdf-2087-439b-be5e-cb19abf1dfff"
  3498. }
  3499. }
  3500. },
  3501. {
  3502. "type": "event",
  3503. "event": {
  3504. "seq": 472,
  3505. "time": 1789265654275,
  3506. "type": "step/start",
  3507. "data": {
  3508. "turn": 65,
  3509. "step": 0
  3510. }
  3511. }
  3512. },
  3513. {
  3514. "type": "event",
  3515. "event": {
  3516. "seq": 473,
  3517. "time": 1789265655075,
  3518. "type": "assistant/message",
  3519. "surfaceOp": "append",
  3520. "data": {
  3521. "turn": 65,
  3522. "step": 0,
  3523. "message": {
  3524. "role": "assistant",
  3525. "content": [
  3526. {
  3527. "type": "tool-call",
  3528. "id": "fx-call-65",
  3529. "name": "run_code",
  3530. "arguments": "{\"code\":\"const listing = await tools.bash({ command: \\\"ls notes\\\", description: \\\"List notes\\\" })\\nconst demo = await tools.read({ file_path: \\\"notes/demo.txt\\\" })\\nawait tools.read({ file_path: \\\"notes/missing.txt\\\" }).catch(() => \\\"tolerated\\\")\\nreturn { listing, demo }\",\"description\":\"Read the notes files and summarize\"}"
  3531. }
  3532. ],
  3533. "source": {
  3534. "kind": "model",
  3535. "provider": "fixture",
  3536. "model": "fx-1"
  3537. },
  3538. "id": "4af251a1-bd9f-4e7a-a7e8-9d4ac6f0f8e5"
  3539. },
  3540. "usage": {
  3541. "inputTokens": 20,
  3542. "outputTokens": 8,
  3543. "cacheReadTokens": 80,
  3544. "cacheWriteTokens": 0
  3545. },
  3546. "stream": [
  3547. {
  3548. "type": "chunk",
  3549. "time": 1789265655075,
  3550. "chunk": {
  3551. "type": "block-start",
  3552. "index": 0,
  3553. "blockType": "tool-call"
  3554. }
  3555. },
  3556. {
  3557. "type": "chunk",
  3558. "time": 1789265655075,
  3559. "chunk": {
  3560. "type": "block-end",
  3561. "index": 0,
  3562. "block": {
  3563. "type": "tool-call",
  3564. "id": "fx-call-65",
  3565. "name": "run_code",
  3566. "arguments": "{\"code\":\"const listing = await tools.bash({ command: \\\"ls notes\\\", description: \\\"List notes\\\" })\\nconst demo = await tools.read({ file_path: \\\"notes/demo.txt\\\" })\\nawait tools.read({ file_path: \\\"notes/missing.txt\\\" }).catch(() => \\\"tolerated\\\")\\nreturn { listing, demo }\",\"description\":\"Read the notes files and summarize\"}"
  3567. }
  3568. }
  3569. },
  3570. {
  3571. "type": "chunk",
  3572. "time": 1789265655075,
  3573. "chunk": {
  3574. "type": "usage",
  3575. "usage": {
  3576. "inputTokens": 20,
  3577. "outputTokens": 8,
  3578. "cacheReadTokens": 80,
  3579. "cacheWriteTokens": 0
  3580. }
  3581. }
  3582. },
  3583. {
  3584. "type": "chunk",
  3585. "time": 1789265655075,
  3586. "chunk": {
  3587. "type": "finish",
  3588. "reason": {
  3589. "kind": "stop"
  3590. }
  3591. }
  3592. }
  3593. ]
  3594. }
  3595. }
  3596. },
  3597. {
  3598. "type": "event",
  3599. "event": {
  3600. "seq": 474,
  3601. "time": 1789265655875,
  3602. "type": "tool/call",
  3603. "data": {
  3604. "turn": 65,
  3605. "step": 0,
  3606. "callId": "fx-call-65",
  3607. "name": "run_code",
  3608. "arguments": "{\"code\":\"const listing = await tools.bash({ command: \\\"ls notes\\\", description: \\\"List notes\\\" })\\nconst demo = await tools.read({ file_path: \\\"notes/demo.txt\\\" })\\nawait tools.read({ file_path: \\\"notes/missing.txt\\\" }).catch(() => \\\"tolerated\\\")\\nreturn { listing, demo }\",\"description\":\"Read the notes files and summarize\"}"
  3609. }
  3610. }
  3611. },
  3612. {
  3613. "type": "event",
  3614. "event": {
  3615. "seq": 475,
  3616. "time": 1789265656675,
  3617. "type": "tool/ptc-dispatch-start",
  3618. "data": {
  3619. "rootCallId": "fx-call-65",
  3620. "parentCallId": "fx-call-65",
  3621. "subCallId": "fx-call-65:ptc:1",
  3622. "name": "bash",
  3623. "arguments": {
  3624. "command": "ls notes",
  3625. "description": "List notes"
  3626. }
  3627. }
  3628. }
  3629. },
  3630. {
  3631. "type": "event",
  3632. "event": {
  3633. "seq": 476,
  3634. "time": 1789265657475,
  3635. "type": "tool/ptc-dispatch",
  3636. "data": {
  3637. "rootCallId": "fx-call-65",
  3638. "parentCallId": "fx-call-65",
  3639. "subCallId": "fx-call-65:ptc:1",
  3640. "name": "bash",
  3641. "arguments": {
  3642. "command": "ls notes",
  3643. "description": "List notes"
  3644. },
  3645. "isError": false,
  3646. "content": [
  3647. {
  3648. "type": "text",
  3649. "text": "demo.txt\nnew-demo.txt"
  3650. }
  3651. ]
  3652. }
  3653. }
  3654. },
  3655. {
  3656. "type": "event",
  3657. "event": {
  3658. "seq": 477,
  3659. "time": 1789265658275,
  3660. "type": "tool/ptc-dispatch-start",
  3661. "data": {
  3662. "rootCallId": "fx-call-65",
  3663. "parentCallId": "fx-call-65",
  3664. "subCallId": "fx-call-65:ptc:2",
  3665. "name": "read",
  3666. "arguments": {
  3667. "file_path": "notes/demo.txt"
  3668. }
  3669. }
  3670. }
  3671. },
  3672. {
  3673. "type": "event",
  3674. "event": {
  3675. "seq": 478,
  3676. "time": 1789265659075,
  3677. "type": "tool/ptc-dispatch",
  3678. "data": {
  3679. "rootCallId": "fx-call-65",
  3680. "parentCallId": "fx-call-65",
  3681. "subCallId": "fx-call-65:ptc:2",
  3682. "name": "read",
  3683. "arguments": {
  3684. "file_path": "notes/demo.txt"
  3685. },
  3686. "isError": false,
  3687. "content": [
  3688. {
  3689. "type": "text",
  3690. "text": "hello fixture\n"
  3691. }
  3692. ]
  3693. }
  3694. }
  3695. },
  3696. {
  3697. "type": "event",
  3698. "event": {
  3699. "seq": 479,
  3700. "time": 1789265659875,
  3701. "type": "tool/ptc-dispatch-start",
  3702. "data": {
  3703. "rootCallId": "fx-call-65",
  3704. "parentCallId": "fx-call-65",
  3705. "subCallId": "fx-call-65:ptc:3",
  3706. "name": "read",
  3707. "arguments": {
  3708. "file_path": "notes/missing.txt"
  3709. }
  3710. }
  3711. }
  3712. },
  3713. {
  3714. "type": "event",
  3715. "event": {
  3716. "seq": 480,
  3717. "time": 1789265660675,
  3718. "type": "tool/ptc-dispatch",
  3719. "data": {
  3720. "rootCallId": "fx-call-65",
  3721. "parentCallId": "fx-call-65",
  3722. "subCallId": "fx-call-65:ptc:3",
  3723. "name": "read",
  3724. "arguments": {
  3725. "file_path": "notes/missing.txt"
  3726. },
  3727. "isError": true,
  3728. "content": [
  3729. {
  3730. "type": "text",
  3731. "text": "Error: ENOENT: notes/missing.txt not found"
  3732. }
  3733. ]
  3734. }
  3735. }
  3736. },
  3737. {
  3738. "type": "event",
  3739. "event": {
  3740. "seq": 481,
  3741. "time": 1789265661475,
  3742. "type": "tool/result",
  3743. "surfaceOp": "append",
  3744. "data": {
  3745. "turn": 65,
  3746. "step": 0,
  3747. "message": {
  3748. "source": {
  3749. "kind": "tool",
  3750. "callId": "fx-call-65"
  3751. },
  3752. "content": [
  3753. {
  3754. "type": "tool-result",
  3755. "toolCallId": "fx-call-65",
  3756. "content": [
  3757. {
  3758. "type": "text",
  3759. "text": "{\"listing\":\"demo.txt\\nnew-demo.txt\",\"demo\":\"hello fixture\\n\"}"
  3760. }
  3761. ],
  3762. "isError": false
  3763. }
  3764. ],
  3765. "role": "user",
  3766. "id": "ca689e1a-ebfb-4465-b187-43c3490abb9b"
  3767. }
  3768. }
  3769. }
  3770. },
  3771. {
  3772. "type": "event",
  3773. "event": {
  3774. "seq": 482,
  3775. "time": 1789265662275,
  3776. "type": "step/end",
  3777. "data": {
  3778. "turn": 65,
  3779. "step": 0
  3780. }
  3781. }
  3782. },
  3783. {
  3784. "type": "event",
  3785. "event": {
  3786. "seq": 483,
  3787. "time": 1789265663075,
  3788. "type": "turn/end",
  3789. "data": {
  3790. "turn": 65,
  3791. "reason": {
  3792. "kind": "completed"
  3793. }
  3794. }
  3795. }
  3796. },
  3797. {
  3798. "type": "event",
  3799. "event": {
  3800. "seq": 484,
  3801. "time": 1789265663875,
  3802. "type": "turn/start",
  3803. "data": {
  3804. "turn": 66
  3805. }
  3806. }
  3807. },
  3808. {
  3809. "type": "event",
  3810. "event": {
  3811. "seq": 485,
  3812. "time": 1789265664675,
  3813. "type": "user/message",
  3814. "surfaceOp": "append",
  3815. "data": {
  3816. "content": [
  3817. {
  3818. "type": "text",
  3819. "text": "问题 66:bash 样本。"
  3820. }
  3821. ],
  3822. "source": {
  3823. "kind": "user"
  3824. },
  3825. "role": "user",
  3826. "id": "4a5bb1d5-3698-407a-bde1-5f8acd048eab"
  3827. }
  3828. }
  3829. },
  3830. {
  3831. "type": "event",
  3832. "event": {
  3833. "seq": 486,
  3834. "time": 1789265665475,
  3835. "type": "step/start",
  3836. "data": {
  3837. "turn": 66,
  3838. "step": 0
  3839. }
  3840. }
  3841. },
  3842. {
  3843. "type": "event",
  3844. "event": {
  3845. "seq": 487,
  3846. "time": 1789265666275,
  3847. "type": "assistant/message",
  3848. "surfaceOp": "append",
  3849. "data": {
  3850. "turn": 66,
  3851. "step": 0,
  3852. "message": {
  3853. "role": "assistant",
  3854. "content": [
  3855. {
  3856. "type": "tool-call",
  3857. "id": "fx-call-66",
  3858. "name": "bash",
  3859. "arguments": "{\"command\":\"pnpm run check\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture/deep/nested\"}"
  3860. }
  3861. ],
  3862. "source": {
  3863. "kind": "model",
  3864. "provider": "fixture",
  3865. "model": "fx-1"
  3866. },
  3867. "id": "68d3d448-1cac-44fd-8a6d-5446684ac98a"
  3868. },
  3869. "usage": {
  3870. "inputTokens": 21,
  3871. "outputTokens": 8,
  3872. "cacheReadTokens": 80,
  3873. "cacheWriteTokens": 0
  3874. },
  3875. "stream": [
  3876. {
  3877. "type": "chunk",
  3878. "time": 1789265666275,
  3879. "chunk": {
  3880. "type": "block-start",
  3881. "index": 0,
  3882. "blockType": "tool-call"
  3883. }
  3884. },
  3885. {
  3886. "type": "chunk",
  3887. "time": 1789265666275,
  3888. "chunk": {
  3889. "type": "block-end",
  3890. "index": 0,
  3891. "block": {
  3892. "type": "tool-call",
  3893. "id": "fx-call-66",
  3894. "name": "bash",
  3895. "arguments": "{\"command\":\"pnpm run check\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture/deep/nested\"}"
  3896. }
  3897. }
  3898. },
  3899. {
  3900. "type": "chunk",
  3901. "time": 1789265666275,
  3902. "chunk": {
  3903. "type": "usage",
  3904. "usage": {
  3905. "inputTokens": 21,
  3906. "outputTokens": 8,
  3907. "cacheReadTokens": 80,
  3908. "cacheWriteTokens": 0
  3909. }
  3910. }
  3911. },
  3912. {
  3913. "type": "chunk",
  3914. "time": 1789265666275,
  3915. "chunk": {
  3916. "type": "finish",
  3917. "reason": {
  3918. "kind": "stop"
  3919. }
  3920. }
  3921. }
  3922. ]
  3923. }
  3924. }
  3925. },
  3926. {
  3927. "type": "event",
  3928. "event": {
  3929. "seq": 488,
  3930. "time": 1789265667075,
  3931. "type": "tool/call",
  3932. "data": {
  3933. "turn": 66,
  3934. "step": 0,
  3935. "callId": "fx-call-66",
  3936. "name": "bash",
  3937. "arguments": "{\"command\":\"pnpm run check\",\"description\":\"fixture 终端样本\",\"workdir\":\"/tmp/fixture/deep/nested\"}"
  3938. }
  3939. }
  3940. },
  3941. {
  3942. "type": "event",
  3943. "event": {
  3944. "seq": 489,
  3945. "time": 1789265667875,
  3946. "type": "tool/result",
  3947. "surfaceOp": "append",
  3948. "data": {
  3949. "turn": 66,
  3950. "step": 0,
  3951. "message": {
  3952. "source": {
  3953. "kind": "tool",
  3954. "callId": "fx-call-66"
  3955. },
  3956. "content": [
  3957. {
  3958. "type": "tool-result",
  3959. "toolCallId": "fx-call-66",
  3960. "content": [
  3961. {
  3962. "type": "text",
  3963. "text": "\u001b[1mRunning 4 checks\u001b[0m\n\u001b[32m✓\u001b[0m typecheck 1.82s\n\u001b[32m✓\u001b[0m lint 0.94s\n\u001b[32m✓\u001b[0m duplication 2.10s\n\u001b[31m✗\u001b[0m unit 8.41s\n\n\u001b[90mpackages/client/ui-primitives/tests/terminal-block.client.spec.tsx\u001b[0m\n \u001b[31mFAIL\u001b[0m caps output at the configured line budget\n expected 16 lines, received 24\n\nNAME LINES BRANCHES FUNCTIONS UNCOVERED\nTerminalBlock.tsx 100% 100% 100% -\nansi.ts 100% 100% 100% -\nclipboard.ts 100% 100% 100% -\nCodeBlock.tsx 98.4% 96.2% 100% 41-43\nhighlight.ts 100% 100% 100% -\nPill.tsx 100% 100% 100% -\nStateDot.tsx 100% 100% 100% -\nmarkdown/Markdown.tsx 100% 100% 100% -\n\n\u001b[31m1 of 4 checks failed\u001b[0m\n[exit code: 1]"
  3964. }
  3965. ],
  3966. "isError": false
  3967. }
  3968. ],
  3969. "role": "user",
  3970. "id": "0da2afe6-5036-4d36-b9f3-ff562585507f"
  3971. }
  3972. }
  3973. }
  3974. },
  3975. {
  3976. "type": "event",
  3977. "event": {
  3978. "seq": 490,
  3979. "time": 1789265668675,
  3980. "type": "step/end",
  3981. "data": {
  3982. "turn": 66,
  3983. "step": 0
  3984. }
  3985. }
  3986. },
  3987. {
  3988. "type": "event",
  3989. "event": {
  3990. "seq": 491,
  3991. "time": 1789265669475,
  3992. "type": "turn/end",
  3993. "data": {
  3994. "turn": 66,
  3995. "reason": {
  3996. "kind": "completed"
  3997. }
  3998. }
  3999. }
  4000. },
  4001. {
  4002. "type": "event",
  4003. "event": {
  4004. "seq": 492,
  4005. "time": 1789265670275,
  4006. "type": "turn/start",
  4007. "data": {
  4008. "turn": 67
  4009. }
  4010. }
  4011. },
  4012. {
  4013. "type": "event",
  4014. "event": {
  4015. "seq": 493,
  4016. "time": 1789265671075,
  4017. "type": "user/message",
  4018. "surfaceOp": "append",
  4019. "data": {
  4020. "content": [
  4021. {
  4022. "type": "text",
  4023. "text": "问题 67:grep 样本。"
  4024. }
  4025. ],
  4026. "source": {
  4027. "kind": "user"
  4028. },
  4029. "role": "user",
  4030. "id": "8dab4a18-bae1-492c-a43a-8337ae80abc3"
  4031. }
  4032. }
  4033. },
  4034. {
  4035. "type": "event",
  4036. "event": {
  4037. "seq": 494,
  4038. "time": 1789265671875,
  4039. "type": "step/start",
  4040. "data": {
  4041. "turn": 67,
  4042. "step": 0
  4043. }
  4044. }
  4045. },
  4046. {
  4047. "type": "event",
  4048. "event": {
  4049. "seq": 495,
  4050. "time": 1789265672675,
  4051. "type": "assistant/message",
  4052. "surfaceOp": "append",
  4053. "data": {
  4054. "turn": 67,
  4055. "step": 0,
  4056. "message": {
  4057. "role": "assistant",
  4058. "content": [
  4059. {
  4060. "type": "tool-call",
  4061. "id": "fx-call-67",
  4062. "name": "grep",
  4063. "arguments": "{\"pattern\":\"SEARCH_MAX_LINES\",\"path\":\"packages/client\"}"
  4064. }
  4065. ],
  4066. "source": {
  4067. "kind": "model",
  4068. "provider": "fixture",
  4069. "model": "fx-1"
  4070. },
  4071. "id": "53469dfd-6af1-4eb2-9273-53ea475b6e94"
  4072. },
  4073. "usage": {
  4074. "inputTokens": 22,
  4075. "outputTokens": 8,
  4076. "cacheReadTokens": 80,
  4077. "cacheWriteTokens": 0
  4078. },
  4079. "stream": [
  4080. {
  4081. "type": "chunk",
  4082. "time": 1789265672675,
  4083. "chunk": {
  4084. "type": "block-start",
  4085. "index": 0,
  4086. "blockType": "tool-call"
  4087. }
  4088. },
  4089. {
  4090. "type": "chunk",
  4091. "time": 1789265672675,
  4092. "chunk": {
  4093. "type": "block-end",
  4094. "index": 0,
  4095. "block": {
  4096. "type": "tool-call",
  4097. "id": "fx-call-67",
  4098. "name": "grep",
  4099. "arguments": "{\"pattern\":\"SEARCH_MAX_LINES\",\"path\":\"packages/client\"}"
  4100. }
  4101. }
  4102. },
  4103. {
  4104. "type": "chunk",
  4105. "time": 1789265672675,
  4106. "chunk": {
  4107. "type": "usage",
  4108. "usage": {
  4109. "inputTokens": 22,
  4110. "outputTokens": 8,
  4111. "cacheReadTokens": 80,
  4112. "cacheWriteTokens": 0
  4113. }
  4114. }
  4115. },
  4116. {
  4117. "type": "chunk",
  4118. "time": 1789265672675,
  4119. "chunk": {
  4120. "type": "finish",
  4121. "reason": {
  4122. "kind": "stop"
  4123. }
  4124. }
  4125. }
  4126. ]
  4127. }
  4128. }
  4129. },
  4130. {
  4131. "type": "event",
  4132. "event": {
  4133. "seq": 496,
  4134. "time": 1789265673475,
  4135. "type": "tool/call",
  4136. "data": {
  4137. "turn": 67,
  4138. "step": 0,
  4139. "callId": "fx-call-67",
  4140. "name": "grep",
  4141. "arguments": "{\"pattern\":\"SEARCH_MAX_LINES\",\"path\":\"packages/client\"}"
  4142. }
  4143. }
  4144. },
  4145. {
  4146. "type": "event",
  4147. "event": {
  4148. "seq": 497,
  4149. "time": 1789265674275,
  4150. "type": "tool/result",
  4151. "surfaceOp": "append",
  4152. "data": {
  4153. "turn": 67,
  4154. "step": 0,
  4155. "message": {
  4156. "source": {
  4157. "kind": "tool",
  4158. "callId": "fx-call-67"
  4159. },
  4160. "content": [
  4161. {
  4162. "type": "tool-result",
  4163. "toolCallId": "fx-call-67",
  4164. "content": [
  4165. {
  4166. "type": "text",
  4167. "text": "Found 9 of 42 matches\n\npackages/client/ui-primitives/src/SearchBlock.tsx\nLine 16: export const DEFAULT_SEARCH_MAX_LINES = 16\nLine 138: export function SearchBlock(props: SearchBlockProps) {\nLine 141: const [collapsed, setCollapsed] = useState<ReadonlySet<number>>(() => new Set())\npackages/client/ui-tool/src/client/tool/models/search-card-model.ts\nLine 45: export const CHAT_SEARCH_MAX_LINES = 8\nLine 130: export function searchCardModel(block: ToolCallBlock): SearchCardModel | null {\npackages/client/ui-tool/src/client/tool/toolviews/search-row.tsx\nLine 34: export function SearchRow({ toolName, block, inspect, t }: SearchRowProps) {\nLine 36: const search = searchCardModel(block)\nLine 56: search={search}\nLine 78: yield ctx.slots.register({ name: 'tool.call.toolview', key: 'grep', locale: NS }, SearchRow)\n\n(Full grep result stored at: fixture://spill/grep-66. Read it to see every match.)"
  4168. }
  4169. ],
  4170. "isError": false
  4171. }
  4172. ],
  4173. "role": "user",
  4174. "id": "9a3df388-356c-4440-b0bf-b09e0dda0387"
  4175. },
  4176. "meta": {
  4177. "shape": "matches",
  4178. "files": [
  4179. {
  4180. "path": "packages/client/ui-primitives/src/SearchBlock.tsx",
  4181. "matches": [
  4182. {
  4183. "lineNumber": 16,
  4184. "line": "export const DEFAULT_SEARCH_MAX_LINES = 16"
  4185. },
  4186. {
  4187. "lineNumber": 138,
  4188. "line": "export function SearchBlock(props: SearchBlockProps) {"
  4189. },
  4190. {
  4191. "lineNumber": 141,
  4192. "line": " const [collapsed, setCollapsed] = useState<ReadonlySet<number>>(() => new Set())"
  4193. }
  4194. ]
  4195. },
  4196. {
  4197. "path": "packages/client/ui-tool/src/client/tool/models/search-card-model.ts",
  4198. "matches": [
  4199. {
  4200. "lineNumber": 45,
  4201. "line": "export const CHAT_SEARCH_MAX_LINES = 8"
  4202. },
  4203. {
  4204. "lineNumber": 130,
  4205. "line": "export function searchCardModel(block: ToolCallBlock): SearchCardModel | null {"
  4206. }
  4207. ]
  4208. },
  4209. {
  4210. "path": "packages/client/ui-tool/src/client/tool/toolviews/search-row.tsx",
  4211. "matches": [
  4212. {
  4213. "lineNumber": 34,
  4214. "line": "export function SearchRow({ toolName, block, inspect, t }: SearchRowProps) {"
  4215. },
  4216. {
  4217. "lineNumber": 36,
  4218. "line": " const search = searchCardModel(block)"
  4219. },
  4220. {
  4221. "lineNumber": 56,
  4222. "line": " search={search}"
  4223. },
  4224. {
  4225. "lineNumber": 78,
  4226. "line": " yield ctx.slots.register({ name: 'tool.call.toolview', key: 'grep', locale: NS }, SearchRow)"
  4227. }
  4228. ]
  4229. }
  4230. ],
  4231. "truncated": true,
  4232. "total": 42
  4233. }
  4234. }
  4235. }
  4236. },
  4237. {
  4238. "type": "event",
  4239. "event": {
  4240. "seq": 498,
  4241. "time": 1789265675075,
  4242. "type": "step/end",
  4243. "data": {
  4244. "turn": 67,
  4245. "step": 0
  4246. }
  4247. }
  4248. },
  4249. {
  4250. "type": "event",
  4251. "event": {
  4252. "seq": 499,
  4253. "time": 1789265675875,
  4254. "type": "turn/end",
  4255. "data": {
  4256. "turn": 67,
  4257. "reason": {
  4258. "kind": "completed"
  4259. }
  4260. }
  4261. }
  4262. },
  4263. {
  4264. "type": "event",
  4265. "event": {
  4266. "seq": 500,
  4267. "time": 1789265676675,
  4268. "type": "turn/start",
  4269. "data": {
  4270. "turn": 68
  4271. }
  4272. }
  4273. },
  4274. {
  4275. "type": "event",
  4276. "event": {
  4277. "seq": 501,
  4278. "time": 1789265677475,
  4279. "type": "user/message",
  4280. "surfaceOp": "append",
  4281. "data": {
  4282. "content": [
  4283. {
  4284. "type": "text",
  4285. "text": "问题 68:glob 样本。"
  4286. }
  4287. ],
  4288. "source": {
  4289. "kind": "user"
  4290. },
  4291. "role": "user",
  4292. "id": "728f42ae-723b-485f-bf63-11b28892a89d"
  4293. }
  4294. }
  4295. },
  4296. {
  4297. "type": "event",
  4298. "event": {
  4299. "seq": 502,
  4300. "time": 1789265678275,
  4301. "type": "step/start",
  4302. "data": {
  4303. "turn": 68,
  4304. "step": 0
  4305. }
  4306. }
  4307. },
  4308. {
  4309. "type": "event",
  4310. "event": {
  4311. "seq": 503,
  4312. "time": 1789265679075,
  4313. "type": "assistant/message",
  4314. "surfaceOp": "append",
  4315. "data": {
  4316. "turn": 68,
  4317. "step": 0,
  4318. "message": {
  4319. "role": "assistant",
  4320. "content": [
  4321. {
  4322. "type": "tool-call",
  4323. "id": "fx-call-68",
  4324. "name": "glob",
  4325. "arguments": "{\"pattern\":\"**/SearchBlock*\",\"path\":\"packages/client\"}"
  4326. }
  4327. ],
  4328. "source": {
  4329. "kind": "model",
  4330. "provider": "fixture",
  4331. "model": "fx-1"
  4332. },
  4333. "id": "b6c6950d-d67b-45eb-a718-1a4fdb241e05"
  4334. },
  4335. "usage": {
  4336. "inputTokens": 23,
  4337. "outputTokens": 8,
  4338. "cacheReadTokens": 80,
  4339. "cacheWriteTokens": 0
  4340. },
  4341. "stream": [
  4342. {
  4343. "type": "chunk",
  4344. "time": 1789265679075,
  4345. "chunk": {
  4346. "type": "block-start",
  4347. "index": 0,
  4348. "blockType": "tool-call"
  4349. }
  4350. },
  4351. {
  4352. "type": "chunk",
  4353. "time": 1789265679075,
  4354. "chunk": {
  4355. "type": "block-end",
  4356. "index": 0,
  4357. "block": {
  4358. "type": "tool-call",
  4359. "id": "fx-call-68",
  4360. "name": "glob",
  4361. "arguments": "{\"pattern\":\"**/SearchBlock*\",\"path\":\"packages/client\"}"
  4362. }
  4363. }
  4364. },
  4365. {
  4366. "type": "chunk",
  4367. "time": 1789265679075,
  4368. "chunk": {
  4369. "type": "usage",
  4370. "usage": {
  4371. "inputTokens": 23,
  4372. "outputTokens": 8,
  4373. "cacheReadTokens": 80,
  4374. "cacheWriteTokens": 0
  4375. }
  4376. }
  4377. },
  4378. {
  4379. "type": "chunk",
  4380. "time": 1789265679075,
  4381. "chunk": {
  4382. "type": "finish",
  4383. "reason": {
  4384. "kind": "stop"
  4385. }
  4386. }
  4387. }
  4388. ]
  4389. }
  4390. }
  4391. },
  4392. {
  4393. "type": "event",
  4394. "event": {
  4395. "seq": 504,
  4396. "time": 1789265679875,
  4397. "type": "tool/call",
  4398. "data": {
  4399. "turn": 68,
  4400. "step": 0,
  4401. "callId": "fx-call-68",
  4402. "name": "glob",
  4403. "arguments": "{\"pattern\":\"**/SearchBlock*\",\"path\":\"packages/client\"}"
  4404. }
  4405. }
  4406. },
  4407. {
  4408. "type": "event",
  4409. "event": {
  4410. "seq": 505,
  4411. "time": 1789265680675,
  4412. "type": "tool/result",
  4413. "surfaceOp": "append",
  4414. "data": {
  4415. "turn": 68,
  4416. "step": 0,
  4417. "message": {
  4418. "source": {
  4419. "kind": "tool",
  4420. "callId": "fx-call-68"
  4421. },
  4422. "content": [
  4423. {
  4424. "type": "tool-result",
  4425. "toolCallId": "fx-call-68",
  4426. "content": [
  4427. {
  4428. "type": "text",
  4429. "text": "packages/client/ui-primitives/src/SearchBlock.tsx\npackages/client/ui-primitives/src/SearchBlock.module.css\npackages/client/ui-tool/src/client/tool/models/search-card-model.ts\npackages/client/ui-tool/src/client/tool/toolviews/search-row.tsx\npackages/client/ui-tool/tests/search-card.client.spec.tsx\n\n(Showing 5 of 23 paths. Full sorted result stored at: fixture://spill/glob-67. Read it to see every path.)"
  4430. }
  4431. ],
  4432. "isError": false
  4433. }
  4434. ],
  4435. "role": "user",
  4436. "id": "e6d88943-d180-472b-9c1b-d59a21a50ab9"
  4437. },
  4438. "meta": {
  4439. "shape": "paths",
  4440. "paths": [
  4441. "packages/client/ui-primitives/src/SearchBlock.tsx",
  4442. "packages/client/ui-primitives/src/SearchBlock.module.css",
  4443. "packages/client/ui-tool/src/client/tool/models/search-card-model.ts",
  4444. "packages/client/ui-tool/src/client/tool/toolviews/search-row.tsx",
  4445. "packages/client/ui-tool/tests/search-card.client.spec.tsx"
  4446. ],
  4447. "truncated": true,
  4448. "total": 23
  4449. }
  4450. }
  4451. }
  4452. },
  4453. {
  4454. "type": "event",
  4455. "event": {
  4456. "seq": 506,
  4457. "time": 1789265681475,
  4458. "type": "step/end",
  4459. "data": {
  4460. "turn": 68,
  4461. "step": 0
  4462. }
  4463. }
  4464. },
  4465. {
  4466. "type": "event",
  4467. "event": {
  4468. "seq": 507,
  4469. "time": 1789265682275,
  4470. "type": "turn/end",
  4471. "data": {
  4472. "turn": 68,
  4473. "reason": {
  4474. "kind": "completed"
  4475. }
  4476. }
  4477. }
  4478. },
  4479. {
  4480. "type": "event",
  4481. "event": {
  4482. "seq": 508,
  4483. "time": 1789265683075,
  4484. "type": "turn/start",
  4485. "data": {
  4486. "turn": 69
  4487. }
  4488. }
  4489. },
  4490. {
  4491. "type": "event",
  4492. "event": {
  4493. "seq": 509,
  4494. "time": 1789265683875,
  4495. "type": "user/message",
  4496. "surfaceOp": "append",
  4497. "data": {
  4498. "content": [
  4499. {
  4500. "type": "text",
  4501. "text": "问题 69:read 样本。"
  4502. }
  4503. ],
  4504. "source": {
  4505. "kind": "user"
  4506. },
  4507. "role": "user",
  4508. "id": "f0564417-a09b-4e3a-8dd3-c0bd41604c23"
  4509. }
  4510. }
  4511. },
  4512. {
  4513. "type": "event",
  4514. "event": {
  4515. "seq": 510,
  4516. "time": 1789265684675,
  4517. "type": "step/start",
  4518. "data": {
  4519. "turn": 69,
  4520. "step": 0
  4521. }
  4522. }
  4523. },
  4524. {
  4525. "type": "event",
  4526. "event": {
  4527. "seq": 511,
  4528. "time": 1789265685475,
  4529. "type": "assistant/message",
  4530. "surfaceOp": "append",
  4531. "data": {
  4532. "turn": 69,
  4533. "step": 0,
  4534. "message": {
  4535. "role": "assistant",
  4536. "content": [
  4537. {
  4538. "type": "tool-call",
  4539. "id": "fx-call-69",
  4540. "name": "read",
  4541. "arguments": "{\"file_path\":\"packages/client/ui-primitives/src/ReadBlock.tsx\",\"offset\":41}"
  4542. }
  4543. ],
  4544. "source": {
  4545. "kind": "model",
  4546. "provider": "fixture",
  4547. "model": "fx-1"
  4548. },
  4549. "id": "bfbff068-730d-4cf8-b647-6086e170221a"
  4550. },
  4551. "usage": {
  4552. "inputTokens": 24,
  4553. "outputTokens": 8,
  4554. "cacheReadTokens": 80,
  4555. "cacheWriteTokens": 0
  4556. },
  4557. "stream": [
  4558. {
  4559. "type": "chunk",
  4560. "time": 1789265685475,
  4561. "chunk": {
  4562. "type": "block-start",
  4563. "index": 0,
  4564. "blockType": "tool-call"
  4565. }
  4566. },
  4567. {
  4568. "type": "chunk",
  4569. "time": 1789265685475,
  4570. "chunk": {
  4571. "type": "block-end",
  4572. "index": 0,
  4573. "block": {
  4574. "type": "tool-call",
  4575. "id": "fx-call-69",
  4576. "name": "read",
  4577. "arguments": "{\"file_path\":\"packages/client/ui-primitives/src/ReadBlock.tsx\",\"offset\":41}"
  4578. }
  4579. }
  4580. },
  4581. {
  4582. "type": "chunk",
  4583. "time": 1789265685475,
  4584. "chunk": {
  4585. "type": "usage",
  4586. "usage": {
  4587. "inputTokens": 24,
  4588. "outputTokens": 8,
  4589. "cacheReadTokens": 80,
  4590. "cacheWriteTokens": 0
  4591. }
  4592. }
  4593. },
  4594. {
  4595. "type": "chunk",
  4596. "time": 1789265685475,
  4597. "chunk": {
  4598. "type": "finish",
  4599. "reason": {
  4600. "kind": "stop"
  4601. }
  4602. }
  4603. }
  4604. ]
  4605. }
  4606. }
  4607. },
  4608. {
  4609. "type": "event",
  4610. "event": {
  4611. "seq": 512,
  4612. "time": 1789265686275,
  4613. "type": "tool/call",
  4614. "data": {
  4615. "turn": 69,
  4616. "step": 0,
  4617. "callId": "fx-call-69",
  4618. "name": "read",
  4619. "arguments": "{\"file_path\":\"packages/client/ui-primitives/src/ReadBlock.tsx\",\"offset\":41}"
  4620. }
  4621. }
  4622. },
  4623. {
  4624. "type": "event",
  4625. "event": {
  4626. "seq": 513,
  4627. "time": 1789265687075,
  4628. "type": "tool/result",
  4629. "surfaceOp": "append",
  4630. "data": {
  4631. "turn": 69,
  4632. "step": 0,
  4633. "message": {
  4634. "source": {
  4635. "kind": "tool",
  4636. "callId": "fx-call-69"
  4637. },
  4638. "content": [
  4639. {
  4640. "type": "tool-result",
  4641. "toolCallId": "fx-call-69",
  4642. "content": [
  4643. {
  4644. "type": "text",
  4645. "text": "<path>packages/client/ui-primitives/src/ReadBlock.tsx</path>\n<type>file</type>\n<content>\n41: export interface ReadBlockProps {\n42: label?: string | undefined\n43: lines: readonly ReadBlockLine[]\n44: totalLines: number\n45: lang?: string | undefined\n46: maxLines?: number | undefined\n47: className?: string | undefined\n48: }\n49: \n50: // A windowed read keeps the file line numbers in the gutter.\n51: const marker = \"fixture read sample\"\n\n(Showing lines 41-51 of 180. Use offset=52 to continue.)\n</content>"
  4646. }
  4647. ],
  4648. "isError": false
  4649. }
  4650. ],
  4651. "role": "user",
  4652. "id": "937c02dd-63d8-4106-9310-a9df2055f0e9"
  4653. },
  4654. "meta": {
  4655. "path": "packages/client/ui-primitives/src/ReadBlock.tsx",
  4656. "offset": 41,
  4657. "lines": [
  4658. {
  4659. "number": 41,
  4660. "text": "export interface ReadBlockProps {"
  4661. },
  4662. {
  4663. "number": 42,
  4664. "text": " label?: string | undefined"
  4665. },
  4666. {
  4667. "number": 43,
  4668. "text": " lines: readonly ReadBlockLine[]"
  4669. },
  4670. {
  4671. "number": 44,
  4672. "text": " totalLines: number"
  4673. },
  4674. {
  4675. "number": 45,
  4676. "text": " lang?: string | undefined"
  4677. },
  4678. {
  4679. "number": 46,
  4680. "text": " maxLines?: number | undefined"
  4681. },
  4682. {
  4683. "number": 47,
  4684. "text": " className?: string | undefined"
  4685. },
  4686. {
  4687. "number": 48,
  4688. "text": "}"
  4689. },
  4690. {
  4691. "number": 49,
  4692. "text": ""
  4693. },
  4694. {
  4695. "number": 50,
  4696. "text": "// A windowed read keeps the file line numbers in the gutter."
  4697. },
  4698. {
  4699. "number": 51,
  4700. "text": "const marker = \"fixture read sample\""
  4701. }
  4702. ],
  4703. "totalLines": 180,
  4704. "lang": "ts"
  4705. }
  4706. }
  4707. }
  4708. },
  4709. {
  4710. "type": "event",
  4711. "event": {
  4712. "seq": 514,
  4713. "time": 1789265687875,
  4714. "type": "step/end",
  4715. "data": {
  4716. "turn": 69,
  4717. "step": 0
  4718. }
  4719. }
  4720. },
  4721. {
  4722. "type": "event",
  4723. "event": {
  4724. "seq": 515,
  4725. "time": 1789265688675,
  4726. "type": "turn/end",
  4727. "data": {
  4728. "turn": 69,
  4729. "reason": {
  4730. "kind": "completed"
  4731. }
  4732. }
  4733. }
  4734. },
  4735. {
  4736. "type": "event",
  4737. "event": {
  4738. "seq": 516,
  4739. "time": 1789265689475,
  4740. "type": "turn/start",
  4741. "data": {
  4742. "turn": 70
  4743. }
  4744. }
  4745. },
  4746. {
  4747. "type": "event",
  4748. "event": {
  4749. "seq": 517,
  4750. "time": 1789265690275,
  4751. "type": "user/message",
  4752. "surfaceOp": "append",
  4753. "data": {
  4754. "content": [
  4755. {
  4756. "type": "text",
  4757. "text": "问题 70:web_search 样本。"
  4758. }
  4759. ],
  4760. "source": {
  4761. "kind": "user"
  4762. },
  4763. "role": "user",
  4764. "id": "c7ba3fc7-e437-4d77-b212-e766b1ca1c47"
  4765. }
  4766. }
  4767. },
  4768. {
  4769. "type": "event",
  4770. "event": {
  4771. "seq": 518,
  4772. "time": 1789265691075,
  4773. "type": "step/start",
  4774. "data": {
  4775. "turn": 70,
  4776. "step": 0
  4777. }
  4778. }
  4779. },
  4780. {
  4781. "type": "event",
  4782. "event": {
  4783. "seq": 519,
  4784. "time": 1789265691875,
  4785. "type": "assistant/message",
  4786. "surfaceOp": "append",
  4787. "data": {
  4788. "turn": 70,
  4789. "step": 0,
  4790. "message": {
  4791. "role": "assistant",
  4792. "content": [
  4793. {
  4794. "type": "tool-call",
  4795. "id": "fx-call-70",
  4796. "name": "web_search",
  4797. "arguments": "{\"queries\":[\"deepseek harness architecture\"]}"
  4798. }
  4799. ],
  4800. "source": {
  4801. "kind": "model",
  4802. "provider": "fixture",
  4803. "model": "fx-1"
  4804. },
  4805. "id": "70f9aaef-f006-4b53-986d-631458679ef6"
  4806. },
  4807. "usage": {
  4808. "inputTokens": 20,
  4809. "outputTokens": 8,
  4810. "cacheReadTokens": 80,
  4811. "cacheWriteTokens": 4
  4812. },
  4813. "stream": [
  4814. {
  4815. "type": "chunk",
  4816. "time": 1789265691875,
  4817. "chunk": {
  4818. "type": "block-start",
  4819. "index": 0,
  4820. "blockType": "tool-call"
  4821. }
  4822. },
  4823. {
  4824. "type": "chunk",
  4825. "time": 1789265691875,
  4826. "chunk": {
  4827. "type": "block-end",
  4828. "index": 0,
  4829. "block": {
  4830. "type": "tool-call",
  4831. "id": "fx-call-70",
  4832. "name": "web_search",
  4833. "arguments": "{\"queries\":[\"deepseek harness architecture\"]}"
  4834. }
  4835. }
  4836. },
  4837. {
  4838. "type": "chunk",
  4839. "time": 1789265691875,
  4840. "chunk": {
  4841. "type": "usage",
  4842. "usage": {
  4843. "inputTokens": 20,
  4844. "outputTokens": 8,
  4845. "cacheReadTokens": 80,
  4846. "cacheWriteTokens": 4
  4847. }
  4848. }
  4849. },
  4850. {
  4851. "type": "chunk",
  4852. "time": 1789265691875,
  4853. "chunk": {
  4854. "type": "finish",
  4855. "reason": {
  4856. "kind": "stop"
  4857. }
  4858. }
  4859. }
  4860. ]
  4861. }
  4862. }
  4863. },
  4864. {
  4865. "type": "event",
  4866. "event": {
  4867. "seq": 520,
  4868. "time": 1789265692675,
  4869. "type": "tool/call",
  4870. "data": {
  4871. "turn": 70,
  4872. "step": 0,
  4873. "callId": "fx-call-70",
  4874. "name": "web_search",
  4875. "arguments": "{\"queries\":[\"deepseek harness architecture\"]}"
  4876. }
  4877. }
  4878. },
  4879. {
  4880. "type": "event",
  4881. "event": {
  4882. "seq": 521,
  4883. "time": 1789265693475,
  4884. "type": "tool/result",
  4885. "surfaceOp": "append",
  4886. "data": {
  4887. "turn": 70,
  4888. "step": 0,
  4889. "message": {
  4890. "source": {
  4891. "kind": "tool",
  4892. "callId": "fx-call-70"
  4893. },
  4894. "content": [
  4895. {
  4896. "type": "tool-result",
  4897. "toolCallId": "fx-call-70",
  4898. "content": [
  4899. {
  4900. "type": "text",
  4901. "text": "Search results for deepseek harness architecture."
  4902. }
  4903. ],
  4904. "isError": false
  4905. }
  4906. ],
  4907. "role": "user",
  4908. "id": "c2ddb04d-74c9-4a2f-83f6-47a48fc6fbc2"
  4909. },
  4910. "meta": {
  4911. "answer": "DeepSeek Harness is a plugin-based agent harness on vendored Cordis where **every capability is a plugin**.",
  4912. "sources": [
  4913. {
  4914. "url": "https://github.com/deepseek-ai/deepseek-harness",
  4915. "title": "DeepSeek Harness — plugin-based agent harness",
  4916. "snippet": "Everything is a plugin: session, tools, agent-loop, and LLM adapters all mount on the same Cordis context.",
  4917. "publishedAt": "2026-07-01"
  4918. },
  4919. {
  4920. "url": "https://www.deepseek.com/blog/harness-architecture",
  4921. "snippet": "The capability-seam pattern splits each capability into interface, implementation, and consumer packages."
  4922. },
  4923. {
  4924. "url": "https://docs.deepseek.com/harness/plugins",
  4925. "title": "Writing a harness plugin",
  4926. "publishedAt": "2026-06-15"
  4927. }
  4928. ],
  4929. "truncated": true
  4930. }
  4931. }
  4932. }
  4933. },
  4934. {
  4935. "type": "event",
  4936. "event": {
  4937. "seq": 522,
  4938. "time": 1789265694275,
  4939. "type": "step/end",
  4940. "data": {
  4941. "turn": 70,
  4942. "step": 0
  4943. }
  4944. }
  4945. },
  4946. {
  4947. "type": "event",
  4948. "event": {
  4949. "seq": 523,
  4950. "time": 1789265695075,
  4951. "type": "turn/end",
  4952. "data": {
  4953. "turn": 70,
  4954. "reason": {
  4955. "kind": "completed"
  4956. }
  4957. }
  4958. }
  4959. },
  4960. {
  4961. "type": "event",
  4962. "event": {
  4963. "seq": 524,
  4964. "time": 1789265695875,
  4965. "type": "turn/start",
  4966. "data": {
  4967. "turn": 71
  4968. }
  4969. }
  4970. },
  4971. {
  4972. "type": "event",
  4973. "event": {
  4974. "seq": 525,
  4975. "time": 1789265696675,
  4976. "type": "user/message",
  4977. "surfaceOp": "append",
  4978. "data": {
  4979. "content": [
  4980. {
  4981. "type": "text",
  4982. "text": "问题 71:web_fetch 样本。"
  4983. }
  4984. ],
  4985. "source": {
  4986. "kind": "user"
  4987. },
  4988. "role": "user",
  4989. "id": "b164bd50-e038-4ada-a92e-42b483efab9a"
  4990. }
  4991. }
  4992. },
  4993. {
  4994. "type": "event",
  4995. "event": {
  4996. "seq": 526,
  4997. "time": 1789265697475,
  4998. "type": "step/start",
  4999. "data": {
  5000. "turn": 71,
  5001. "step": 0
  5002. }
  5003. }
  5004. },
  5005. {
  5006. "type": "event",
  5007. "event": {
  5008. "seq": 527,
  5009. "time": 1789265698275,
  5010. "type": "assistant/message",
  5011. "surfaceOp": "append",
  5012. "data": {
  5013. "turn": 71,
  5014. "step": 0,
  5015. "message": {
  5016. "role": "assistant",
  5017. "content": [
  5018. {
  5019. "type": "tool-call",
  5020. "id": "fx-call-71",
  5021. "name": "web_fetch",
  5022. "arguments": "{\"url\":\"https://www.deepseek.com/blog/harness-architecture\"}"
  5023. }
  5024. ],
  5025. "source": {
  5026. "kind": "model",
  5027. "provider": "fixture",
  5028. "model": "fx-1"
  5029. },
  5030. "id": "72a35941-d5a4-44ec-9b4d-f14303cf165b"
  5031. },
  5032. "usage": {
  5033. "inputTokens": 21,
  5034. "outputTokens": 8,
  5035. "cacheReadTokens": 80,
  5036. "cacheWriteTokens": 0
  5037. },
  5038. "stream": [
  5039. {
  5040. "type": "chunk",
  5041. "time": 1789265698275,
  5042. "chunk": {
  5043. "type": "block-start",
  5044. "index": 0,
  5045. "blockType": "tool-call"
  5046. }
  5047. },
  5048. {
  5049. "type": "chunk",
  5050. "time": 1789265698275,
  5051. "chunk": {
  5052. "type": "block-end",
  5053. "index": 0,
  5054. "block": {
  5055. "type": "tool-call",
  5056. "id": "fx-call-71",
  5057. "name": "web_fetch",
  5058. "arguments": "{\"url\":\"https://www.deepseek.com/blog/harness-architecture\"}"
  5059. }
  5060. }
  5061. },
  5062. {
  5063. "type": "chunk",
  5064. "time": 1789265698275,
  5065. "chunk": {
  5066. "type": "usage",
  5067. "usage": {
  5068. "inputTokens": 21,
  5069. "outputTokens": 8,
  5070. "cacheReadTokens": 80,
  5071. "cacheWriteTokens": 0
  5072. }
  5073. }
  5074. },
  5075. {
  5076. "type": "chunk",
  5077. "time": 1789265698275,
  5078. "chunk": {
  5079. "type": "finish",
  5080. "reason": {
  5081. "kind": "stop"
  5082. }
  5083. }
  5084. }
  5085. ]
  5086. }
  5087. }
  5088. },
  5089. {
  5090. "type": "event",
  5091. "event": {
  5092. "seq": 528,
  5093. "time": 1789265699075,
  5094. "type": "tool/call",
  5095. "data": {
  5096. "turn": 71,
  5097. "step": 0,
  5098. "callId": "fx-call-71",
  5099. "name": "web_fetch",
  5100. "arguments": "{\"url\":\"https://www.deepseek.com/blog/harness-architecture\"}"
  5101. }
  5102. }
  5103. },
  5104. {
  5105. "type": "event",
  5106. "event": {
  5107. "seq": 529,
  5108. "time": 1789265699875,
  5109. "type": "tool/result",
  5110. "surfaceOp": "append",
  5111. "data": {
  5112. "turn": 71,
  5113. "step": 0,
  5114. "message": {
  5115. "source": {
  5116. "kind": "tool",
  5117. "callId": "fx-call-71"
  5118. },
  5119. "content": [
  5120. {
  5121. "type": "tool-result",
  5122. "toolCallId": "fx-call-71",
  5123. "content": [
  5124. {
  5125. "type": "text",
  5126. "text": "# Harness architecture\n\nEverything is a plugin."
  5127. }
  5128. ],
  5129. "isError": false
  5130. }
  5131. ],
  5132. "role": "user",
  5133. "id": "57cf5cd3-3daf-4e2c-bb16-f8695bc2ab8c"
  5134. },
  5135. "meta": {
  5136. "url": "https://www.deepseek.com/blog/harness-architecture",
  5137. "statusCode": 200,
  5138. "truncated": false
  5139. }
  5140. }
  5141. }
  5142. },
  5143. {
  5144. "type": "event",
  5145. "event": {
  5146. "seq": 530,
  5147. "time": 1789265700675,
  5148. "type": "step/end",
  5149. "data": {
  5150. "turn": 71,
  5151. "step": 0
  5152. }
  5153. }
  5154. },
  5155. {
  5156. "type": "event",
  5157. "event": {
  5158. "seq": 531,
  5159. "time": 1789265701475,
  5160. "type": "turn/end",
  5161. "data": {
  5162. "turn": 71,
  5163. "reason": {
  5164. "kind": "completed"
  5165. }
  5166. }
  5167. }
  5168. },
  5169. {
  5170. "type": "event",
  5171. "event": {
  5172. "seq": 532,
  5173. "time": 1789265702275,
  5174. "type": "turn/start",
  5175. "data": {
  5176. "turn": 72
  5177. }
  5178. }
  5179. },
  5180. {
  5181. "type": "event",
  5182. "event": {
  5183. "seq": 533,
  5184. "time": 1789265703075,
  5185. "type": "user/message",
  5186. "surfaceOp": "append",
  5187. "data": {
  5188. "content": [
  5189. {
  5190. "type": "text",
  5191. "text": "问题 72:请完整列出全部一百条条目。"
  5192. }
  5193. ],
  5194. "source": {
  5195. "kind": "user"
  5196. },
  5197. "role": "user",
  5198. "id": "35a4608a-bd98-46a2-af6a-233b28470390"
  5199. }
  5200. }
  5201. },
  5202. {
  5203. "type": "event",
  5204. "event": {
  5205. "seq": 534,
  5206. "time": 1789265703875,
  5207. "type": "step/start",
  5208. "data": {
  5209. "turn": 72,
  5210. "step": 0
  5211. }
  5212. }
  5213. },
  5214. {
  5215. "type": "event",
  5216. "event": {
  5217. "seq": 535,
  5218. "time": 1789265704675,
  5219. "type": "assistant/message",
  5220. "surfaceOp": "append",
  5221. "data": {
  5222. "turn": 72,
  5223. "step": 0,
  5224. "message": {
  5225. "role": "assistant",
  5226. "content": [
  5227. {
  5228. "type": "text",
  5229. "text": "条目 1:第一条。条目 2:第二条。条目 3:这一条写到一半被"
  5230. }
  5231. ],
  5232. "source": {
  5233. "kind": "model",
  5234. "provider": "fixture",
  5235. "model": "fx-1"
  5236. },
  5237. "id": "006a595a-cd1e-4137-af5c-e36dc98f354e"
  5238. },
  5239. "usage": {
  5240. "inputTokens": 22,
  5241. "outputTokens": 8,
  5242. "cacheReadTokens": 80,
  5243. "cacheWriteTokens": 0
  5244. },
  5245. "stream": [
  5246. {
  5247. "type": "chunk",
  5248. "time": 1789265704675,
  5249. "chunk": {
  5250. "type": "block-start",
  5251. "index": 0,
  5252. "blockType": "text"
  5253. }
  5254. },
  5255. {
  5256. "type": "chunk",
  5257. "time": 1789265704675,
  5258. "chunk": {
  5259. "type": "block-end",
  5260. "index": 0,
  5261. "block": {
  5262. "type": "text",
  5263. "text": "条目 1:第一条。条目 2:第二条。条目 3:这一条写到一半被"
  5264. }
  5265. }
  5266. },
  5267. {
  5268. "type": "chunk",
  5269. "time": 1789265704675,
  5270. "chunk": {
  5271. "type": "usage",
  5272. "usage": {
  5273. "inputTokens": 22,
  5274. "outputTokens": 8,
  5275. "cacheReadTokens": 80,
  5276. "cacheWriteTokens": 0
  5277. }
  5278. }
  5279. },
  5280. {
  5281. "type": "chunk",
  5282. "time": 1789265704675,
  5283. "chunk": {
  5284. "type": "finish",
  5285. "reason": {
  5286. "kind": "stop"
  5287. }
  5288. }
  5289. }
  5290. ]
  5291. }
  5292. }
  5293. },
  5294. {
  5295. "type": "event",
  5296. "event": {
  5297. "seq": 536,
  5298. "time": 1789265705475,
  5299. "type": "step/end",
  5300. "data": {
  5301. "turn": 72,
  5302. "step": 0
  5303. }
  5304. }
  5305. },
  5306. {
  5307. "type": "event",
  5308. "event": {
  5309. "seq": 537,
  5310. "time": 1789265706275,
  5311. "type": "turn/end",
  5312. "data": {
  5313. "turn": 72,
  5314. "reason": {
  5315. "kind": "max-tokens"
  5316. }
  5317. }
  5318. }
  5319. },
  5320. {
  5321. "type": "event",
  5322. "event": {
  5323. "seq": 538,
  5324. "time": 1789265707075,
  5325. "type": "turn/start",
  5326. "data": {
  5327. "turn": 73
  5328. }
  5329. }
  5330. },
  5331. {
  5332. "type": "event",
  5333. "event": {
  5334. "seq": 539,
  5335. "time": 1789265707875,
  5336. "type": "user/message",
  5337. "surfaceOp": "append",
  5338. "data": {
  5339. "content": [
  5340. {
  5341. "type": "image",
  5342. "attachment": {
  5343. "attachmentId": "fixture:image",
  5344. "mediaType": "image/png",
  5345. "bytes": 247,
  5346. "width": 160,
  5347. "height": 90,
  5348. "name": "fixture-image.png"
  5349. }
  5350. },
  5351. {
  5352. "type": "text",
  5353. "text": "历史用户图片"
  5354. }
  5355. ],
  5356. "source": {
  5357. "kind": "user"
  5358. },
  5359. "role": "user",
  5360. "id": "f7aa4d0e-5b76-4ccd-a566-150a227b0c27"
  5361. }
  5362. }
  5363. },
  5364. {
  5365. "type": "event",
  5366. "event": {
  5367. "seq": 540,
  5368. "time": 1789265708675,
  5369. "type": "step/start",
  5370. "data": {
  5371. "turn": 73,
  5372. "step": 0
  5373. }
  5374. }
  5375. },
  5376. {
  5377. "type": "event",
  5378. "event": {
  5379. "seq": 541,
  5380. "time": 1789265709475,
  5381. "type": "assistant/message",
  5382. "surfaceOp": "append",
  5383. "data": {
  5384. "turn": 73,
  5385. "step": 0,
  5386. "message": {
  5387. "role": "assistant",
  5388. "content": [
  5389. {
  5390. "type": "text",
  5391. "text": "结构化模型图片:"
  5392. },
  5393. {
  5394. "type": "image",
  5395. "attachment": {
  5396. "attachmentId": "fixture:image",
  5397. "mediaType": "image/png",
  5398. "bytes": 247,
  5399. "width": 160,
  5400. "height": 90,
  5401. "name": "fixture-image.png"
  5402. }
  5403. }
  5404. ],
  5405. "source": {
  5406. "kind": "model",
  5407. "provider": "fixture",
  5408. "model": "fx-vision"
  5409. },
  5410. "id": "35080466-4027-4eba-95b8-538f1447867b"
  5411. },
  5412. "usage": {
  5413. "inputTokens": 23,
  5414. "outputTokens": 8,
  5415. "cacheReadTokens": 80,
  5416. "cacheWriteTokens": 0
  5417. },
  5418. "stream": [
  5419. {
  5420. "type": "chunk",
  5421. "time": 1789265709475,
  5422. "chunk": {
  5423. "type": "block-start",
  5424. "index": 0,
  5425. "blockType": "text"
  5426. }
  5427. },
  5428. {
  5429. "type": "chunk",
  5430. "time": 1789265709475,
  5431. "chunk": {
  5432. "type": "block-end",
  5433. "index": 0,
  5434. "block": {
  5435. "type": "text",
  5436. "text": "结构化模型图片:"
  5437. }
  5438. }
  5439. },
  5440. {
  5441. "type": "chunk",
  5442. "time": 1789265709475,
  5443. "chunk": {
  5444. "type": "block-start",
  5445. "index": 1,
  5446. "blockType": "image"
  5447. }
  5448. },
  5449. {
  5450. "type": "chunk",
  5451. "time": 1789265709475,
  5452. "chunk": {
  5453. "type": "block-end",
  5454. "index": 1,
  5455. "block": {
  5456. "type": "image",
  5457. "attachment": {
  5458. "attachmentId": "fixture:image",
  5459. "mediaType": "image/png",
  5460. "bytes": 247,
  5461. "width": 160,
  5462. "height": 90,
  5463. "name": "fixture-image.png"
  5464. }
  5465. }
  5466. }
  5467. },
  5468. {
  5469. "type": "chunk",
  5470. "time": 1789265709475,
  5471. "chunk": {
  5472. "type": "usage",
  5473. "usage": {
  5474. "inputTokens": 23,
  5475. "outputTokens": 8,
  5476. "cacheReadTokens": 80,
  5477. "cacheWriteTokens": 0
  5478. }
  5479. }
  5480. },
  5481. {
  5482. "type": "chunk",
  5483. "time": 1789265709475,
  5484. "chunk": {
  5485. "type": "finish",
  5486. "reason": {
  5487. "kind": "stop"
  5488. }
  5489. }
  5490. }
  5491. ]
  5492. }
  5493. }
  5494. },
  5495. {
  5496. "type": "event",
  5497. "event": {
  5498. "seq": 542,
  5499. "time": 1789265710275,
  5500. "type": "step/end",
  5501. "data": {
  5502. "turn": 73,
  5503. "step": 0
  5504. }
  5505. }
  5506. },
  5507. {
  5508. "type": "event",
  5509. "event": {
  5510. "seq": 543,
  5511. "time": 1789265711075,
  5512. "type": "turn/end",
  5513. "data": {
  5514. "turn": 73,
  5515. "reason": {
  5516. "kind": "completed"
  5517. }
  5518. }
  5519. }
  5520. },
  5521. {
  5522. "type": "event",
  5523. "event": {
  5524. "seq": 544,
  5525. "time": 1789265711875,
  5526. "type": "turn/start",
  5527. "data": {
  5528. "turn": 74
  5529. }
  5530. }
  5531. },
  5532. {
  5533. "type": "event",
  5534. "event": {
  5535. "seq": 545,
  5536. "time": 1789265712675,
  5537. "type": "user/message",
  5538. "surfaceOp": "append",
  5539. "data": {
  5540. "content": [
  5541. {
  5542. "type": "text",
  5543. "text": "问题 74:todo_write 样本。"
  5544. }
  5545. ],
  5546. "source": {
  5547. "kind": "user"
  5548. },
  5549. "role": "user",
  5550. "id": "df61981f-bcff-4984-9d9e-de8754da7bc8"
  5551. }
  5552. }
  5553. },
  5554. {
  5555. "type": "event",
  5556. "event": {
  5557. "seq": 546,
  5558. "time": 1789265713475,
  5559. "type": "step/start",
  5560. "data": {
  5561. "turn": 74,
  5562. "step": 0
  5563. }
  5564. }
  5565. },
  5566. {
  5567. "type": "event",
  5568. "event": {
  5569. "seq": 547,
  5570. "time": 1789265714275,
  5571. "type": "assistant/message",
  5572. "surfaceOp": "append",
  5573. "data": {
  5574. "turn": 74,
  5575. "step": 0,
  5576. "message": {
  5577. "role": "assistant",
  5578. "content": [
  5579. {
  5580. "type": "tool-call",
  5581. "id": "fx-call-74",
  5582. "name": "todo_write",
  5583. "arguments": "{\"todos\":[{\"content\":\"梳理需求\",\"status\":\"completed\"},{\"content\":\"实现 fixture 样本\",\"status\":\"in_progress\"},{\"content\":\"跑后台构建\",\"status\":\"in_progress\"},{\"content\":\"浏览器验收\",\"status\":\"pending\"}]}"
  5584. }
  5585. ],
  5586. "source": {
  5587. "kind": "model",
  5588. "provider": "fixture",
  5589. "model": "fx-1"
  5590. },
  5591. "id": "c346330a-d740-45f6-9cbe-fb7b20d9f741"
  5592. },
  5593. "usage": {
  5594. "inputTokens": 24,
  5595. "outputTokens": 8,
  5596. "cacheReadTokens": 80,
  5597. "cacheWriteTokens": 0
  5598. },
  5599. "stream": [
  5600. {
  5601. "type": "chunk",
  5602. "time": 1789265714275,
  5603. "chunk": {
  5604. "type": "block-start",
  5605. "index": 0,
  5606. "blockType": "tool-call"
  5607. }
  5608. },
  5609. {
  5610. "type": "chunk",
  5611. "time": 1789265714275,
  5612. "chunk": {
  5613. "type": "block-end",
  5614. "index": 0,
  5615. "block": {
  5616. "type": "tool-call",
  5617. "id": "fx-call-74",
  5618. "name": "todo_write",
  5619. "arguments": "{\"todos\":[{\"content\":\"梳理需求\",\"status\":\"completed\"},{\"content\":\"实现 fixture 样本\",\"status\":\"in_progress\"},{\"content\":\"跑后台构建\",\"status\":\"in_progress\"},{\"content\":\"浏览器验收\",\"status\":\"pending\"}]}"
  5620. }
  5621. }
  5622. },
  5623. {
  5624. "type": "chunk",
  5625. "time": 1789265714275,
  5626. "chunk": {
  5627. "type": "usage",
  5628. "usage": {
  5629. "inputTokens": 24,
  5630. "outputTokens": 8,
  5631. "cacheReadTokens": 80,
  5632. "cacheWriteTokens": 0
  5633. }
  5634. }
  5635. },
  5636. {
  5637. "type": "chunk",
  5638. "time": 1789265714275,
  5639. "chunk": {
  5640. "type": "finish",
  5641. "reason": {
  5642. "kind": "stop"
  5643. }
  5644. }
  5645. }
  5646. ]
  5647. }
  5648. }
  5649. },
  5650. {
  5651. "type": "event",
  5652. "event": {
  5653. "seq": 548,
  5654. "time": 1789265715075,
  5655. "type": "tool/call",
  5656. "data": {
  5657. "turn": 74,
  5658. "step": 0,
  5659. "callId": "fx-call-74",
  5660. "name": "todo_write",
  5661. "arguments": "{\"todos\":[{\"content\":\"梳理需求\",\"status\":\"completed\"},{\"content\":\"实现 fixture 样本\",\"status\":\"in_progress\"},{\"content\":\"跑后台构建\",\"status\":\"in_progress\"},{\"content\":\"浏览器验收\",\"status\":\"pending\"}]}"
  5662. }
  5663. }
  5664. },
  5665. {
  5666. "type": "event",
  5667. "event": {
  5668. "type": "todo/write",
  5669. "time": 1789265715475,
  5670. "data": {
  5671. "todos": [
  5672. {
  5673. "content": "梳理需求",
  5674. "status": "completed"
  5675. },
  5676. {
  5677. "content": "实现 fixture 样本",
  5678. "status": "in_progress"
  5679. },
  5680. {
  5681. "content": "跑后台构建",
  5682. "status": "in_progress"
  5683. },
  5684. {
  5685. "content": "浏览器验收",
  5686. "status": "pending"
  5687. }
  5688. ]
  5689. },
  5690. "seq": 549
  5691. }
  5692. },
  5693. {
  5694. "type": "event",
  5695. "event": {
  5696. "seq": 550,
  5697. "time": 1789265715875,
  5698. "type": "tool/result",
  5699. "surfaceOp": "append",
  5700. "data": {
  5701. "turn": 74,
  5702. "step": 0,
  5703. "message": {
  5704. "source": {
  5705. "kind": "tool",
  5706. "callId": "fx-call-74"
  5707. },
  5708. "content": [
  5709. {
  5710. "type": "tool-result",
  5711. "toolCallId": "fx-call-74",
  5712. "content": [
  5713. {
  5714. "type": "text",
  5715. "text": "Updated todo list: 1 pending, 2 in progress, 1 completed."
  5716. }
  5717. ],
  5718. "isError": false
  5719. }
  5720. ],
  5721. "role": "user",
  5722. "id": "499968fd-a83f-45ad-80fe-b1d73651ff13"
  5723. }
  5724. }
  5725. }
  5726. },
  5727. {
  5728. "type": "event",
  5729. "event": {
  5730. "seq": 551,
  5731. "time": 1789265716675,
  5732. "type": "step/end",
  5733. "data": {
  5734. "turn": 74,
  5735. "step": 0
  5736. }
  5737. }
  5738. },
  5739. {
  5740. "type": "event",
  5741. "event": {
  5742. "seq": 552,
  5743. "time": 1789265717475,
  5744. "type": "turn/end",
  5745. "data": {
  5746. "turn": 74,
  5747. "reason": {
  5748. "kind": "completed"
  5749. }
  5750. }
  5751. }
  5752. }
  5753. ],
  5754. "hasMore": true,
  5755. "projections": {
  5756. "asOfSeq": 552,
  5757. "values": {
  5758. "modelSelection": {
  5759. "lastUsed": null,
  5760. "next": null
  5761. },
  5762. "title": "Fixture 历史会话",
  5763. "todos": [
  5764. {
  5765. "content": "梳理需求",
  5766. "status": "completed"
  5767. },
  5768. {
  5769. "content": "实现 fixture 样本",
  5770. "status": "in_progress"
  5771. },
  5772. {
  5773. "content": "跑后台构建",
  5774. "status": "in_progress"
  5775. },
  5776. {
  5777. "content": "浏览器验收",
  5778. "status": "pending"
  5779. }
  5780. ],
  5781. "permissions": {
  5782. "options": [
  5783. {
  5784. "value": "workspace-write",
  5785. "name": "workspace-write",
  5786. "description": "Write inside the workspace and permitted temporary directories; wider retries require approval."
  5787. },
  5788. {
  5789. "value": "danger-full-access",
  5790. "name": "danger-full-access",
  5791. "description": "Full file access without approval prompts."
  5792. }
  5793. ],
  5794. "currentValue": "workspace-write"
  5795. },
  5796. "plan": {
  5797. "active": false,
  5798. "pending": false
  5799. },
  5800. "goal": null,
  5801. "tokenUsage": {
  5802. "uncachedInputTokens": 1914,
  5803. "outputTokens": 708,
  5804. "cacheReadTokens": 6880,
  5805. "cacheWriteTokens": 32
  5806. },
  5807. "contextPressure": {
  5808. "pressureTokens": 104,
  5809. "contextWindow": 128000
  5810. },
  5811. "contextBreakdown": {
  5812. "systemTokens": 17,
  5813. "toolsTokens": 0,
  5814. "messageTokens": 4427
  5815. },
  5816. "sessionStats": {
  5817. "turns": 75,
  5818. "steps": 87,
  5819. "llmMs": 69600,
  5820. "toolMs": 24800,
  5821. "ttftMs": 0,
  5822. "ttftSteps": 0,
  5823. "decodeMs": 0,
  5824. "decodeTokens": 0
  5825. },
  5826. "imageLimits": {
  5827. "maxImageBytes": 5242880,
  5828. "maxImagesPerMessage": 20,
  5829. "maxMessageImageBytes": 104857600,
  5830. "maxImagePixels": 40000000,
  5831. "maxImageDimension": 2000,
  5832. "mediaTypes": [
  5833. "image/png",
  5834. "image/jpeg",
  5835. "image/webp",
  5836. "image/gif"
  5837. ]
  5838. }
  5839. }
  5840. },
  5841. "assistantStream": {
  5842. "revision": 0
  5843. }
  5844. },
  5845. "attachment": {
  5846. "ok": true,
  5847. "value": {
  5848. "attachment": {
  5849. "attachmentId": "fixture:image",
  5850. "mediaType": "image/png",
  5851. "bytes": 247,
  5852. "width": 160,
  5853. "height": 90,
  5854. "name": "fixture-image.png"
  5855. },
  5856. "data": "iVBORw0KGgoAAAANSUhEUgAAAKAAAABaCAYAAAA/xl1SAAAAvklEQVR42u3SMQ0AAAjAMIyhELM4AAe8PD1qYFlk9cCXEAEDYkAwIAYEA2JAMCAGBANiQDAgBgQDYkAwIAYEA2JAMCAGBANiQDAgBgQDYkAwIAYEA2JAMCAGxIBCYEAMCAbEgGBADAgGxIBgQAwIBsSAYEAMCAbEgGBADAgGxIBgQAwIBsSAYEAMCAbEgGBADAgGxIAYEAyIAcGAGBAMiAHBgBgQDIgBwYAYEAyIAcGAGBAMiAHBgBgQDIgB4bYWLb6pnOb1xAAAAABJRU5ErkJggg=="
  5857. }
  5858. }
  5859. }