@@ -509,10 +509,10 @@ const runtimePlayerPhases = [
509509 code : '01' ,
510510 stage : { zh : '准备' , en : 'PREPARE' } ,
511511 navTitle : { zh : '准备上下文' , en : 'Prepare context' } ,
512- title : { zh : '任务已进入 Session ' , en : 'The task is in the Session ' } ,
512+ title : { zh : '正在准备上下文 ' , en : 'Preparing context ' } ,
513513 summary : {
514- zh : 'A3S 创建本次 Run,并从历史、项目指令和记忆中选出模型需要的上下文 。' ,
515- en : 'A3S creates the run and selects the history, project instructions, and memory needed by the model .' ,
514+ zh : '已创建本次运行,并准备好项目指令、历史和可用工具 。' ,
515+ en : 'The run is created with the project instructions, history, and available tools it needs .' ,
516516 } ,
517517 action : {
518518 zh : '取得运行权,组装 messages[] 与 tools[]' ,
@@ -532,12 +532,12 @@ const runtimePlayerPhases = [
532532 stage : { zh : '判断' , en : 'DECIDE' } ,
533533 navTitle : { zh : '决定下一步' , en : 'Choose next step' } ,
534534 title : {
535- zh : '模型提出一次只读搜索 ' ,
536- en : 'The model proposes a read-only search' ,
535+ zh : '模型选择只读搜索 ' ,
536+ en : 'The model chooses a read-only search' ,
537537 } ,
538538 summary : {
539- zh : '模型根据任务选择 grep,只生成结构化调用;此时还没有读取或改动仓库 。' ,
540- en : 'The model selects grep and emits a structured call. It has not read or changed the repository yet .' ,
539+ zh : '模型选择 grep 搜索 TODO 和 FIXME;此时还没有改动仓库 。' ,
540+ en : 'The model chooses grep for TODO and FIXME. The repository has not been changed.' ,
541541 } ,
542542 action : {
543543 zh : '生成 grep({ pattern: "TODO|FIXME" })' ,
@@ -557,12 +557,12 @@ const runtimePlayerPhases = [
557557 stage : { zh : '执行' , en : 'EXECUTE' } ,
558558 navTitle : { zh : '执行工具' , en : 'Run the tool' } ,
559559 title : {
560- zh : '检查通过,Workspace 开始搜索 ' ,
561- en : 'Checks pass and the workspace runs the search ' ,
560+ zh : '正在工作区执行 ' ,
561+ en : 'Running in the workspace' ,
562562 } ,
563563 summary : {
564- zh : 'ToolInvoker 校验参数和权限后,Workspace 执行 grep;模型调用不能绕过这一步 。' ,
565- en : 'ToolInvoker validates arguments and permissions before the workspace runs grep. Model calls cannot bypass this step .' ,
564+ zh : '参数与权限检查通过,A3S 完成只读搜索并找到 3 条匹配 。' ,
565+ en : 'Argument and permission checks pass. A3S completes the read-only search and finds 3 matches .' ,
566566 } ,
567567 action : {
568568 zh : '参数 → 权限 → Workspace.grep()' ,
@@ -579,15 +579,15 @@ const runtimePlayerPhases = [
579579 {
580580 id : 'record' ,
581581 code : '04' ,
582- stage : { zh : '留痕 ' , en : 'RECORD ' } ,
582+ stage : { zh : '完成 ' , en : 'DONE ' } ,
583583 navTitle : { zh : '保存记录' , en : 'Save the record' } ,
584584 title : {
585- zh : '结果和执行记录已保存 ' ,
586- en : 'The result and run record are saved ' ,
585+ zh : '检查完成 ' ,
586+ en : 'Inspection complete ' ,
587587 } ,
588588 summary : {
589- zh : '应用收到可以直接展示的结果;事件、Trace 和快照同时保留,后续可以排查或恢复 。' ,
590- en : 'The app receives a renderable result while events, traces, and the snapshot remain available for inspection or recovery.' ,
589+ zh : '结果、运行记录和快照已经保存,之后可以随时查看或恢复 。' ,
590+ en : 'The result, run record, and snapshot are saved for later inspection or recovery.' ,
591591 } ,
592592 action : {
593593 zh : '发布事件并提交本次 generation' ,
@@ -669,7 +669,7 @@ const copy = {
669669 boundaryContract : 'API 与事件' ,
670670 boundaryHostLabel : '你的应用' ,
671671 boundaryHostRole : '账号、权限与界面' ,
672- stackTitle : '一次真实运行 ' ,
672+ stackTitle : '一次执行 ' ,
673673 stackHint : '点击阶段查看过程' ,
674674 stackHintMobile : '点击步骤展开' ,
675675 stackTop : '产品' ,
@@ -678,12 +678,10 @@ const copy = {
678678 flowTask : '检查仓库并列出发布阻塞项' ,
679679 flowReplay : '重播' ,
680680 flowRunning : '回放中' ,
681- flowComplete : '已完成 · 1.8s' ,
682- flowStage : '当前阶段' ,
683- flowAction : 'A3S 正在做' ,
684- flowOutput : '本步结果' ,
685- flowEvidence : '本次运行留下' ,
686- flowEventCount : '7 个事件' ,
681+ flowStage : '阶段' ,
682+ flowSaved : '运行记录已保存' ,
683+ flowReplayable : '过程可回放' ,
684+ flowRecoverable : '结果可恢复' ,
687685 tutorialStep : '步骤' ,
688686 tutorialCode : '代码' ,
689687 tutorialLayers : '当前负责的层' ,
@@ -747,7 +745,7 @@ const copy = {
747745 boundaryContract : 'APIs + EVENTS' ,
748746 boundaryHostLabel : 'YOUR APP' ,
749747 boundaryHostRole : 'OWNS UI + ACCESS' ,
750- stackTitle : 'One real run' ,
748+ stackTitle : 'One run' ,
751749 stackHint : 'SELECT A PHASE TO INSPECT IT' ,
752750 stackHintMobile : 'TAP A STEP TO EXPAND' ,
753751 stackTop : 'PRODUCT' ,
@@ -756,12 +754,10 @@ const copy = {
756754 flowTask : 'Inspect the repository and list release blockers' ,
757755 flowReplay : 'REPLAY' ,
758756 flowRunning : 'REPLAYING' ,
759- flowComplete : 'DONE · 1.8s' ,
760- flowStage : 'CURRENT PHASE' ,
761- flowAction : 'A3S DOES' ,
762- flowOutput : 'RESULT' ,
763- flowEvidence : 'SAVED WITH THIS RUN' ,
764- flowEventCount : '7 EVENTS' ,
757+ flowStage : 'PHASE' ,
758+ flowSaved : 'RUN RECORD SAVED' ,
759+ flowReplayable : 'REPLAYABLE' ,
760+ flowRecoverable : 'RECOVERABLE' ,
765761 tutorialStep : 'STEP' ,
766762 tutorialCode : 'CODE' ,
767763 tutorialLayers : 'ACTIVE LAYER' ,
@@ -877,38 +873,16 @@ function RuntimePlayerStage({
877873 data-phase = { phase . id }
878874 key = { phase . id }
879875 >
876+ < span className = "a3s-run-player-stage-icon" aria-hidden = "true" >
877+ { phase . id === 'record' ? '✓' : phase . code }
878+ </ span >
880879 < div className = "a3s-run-player-stage-copy" >
881880 < span >
882881 { labels . flowStage } { phase . code } / { localeValue ( phase . stage , locale ) }
883882 </ span >
884883 < h2 > { localeValue ( phase . title , locale ) } </ h2 >
885884 < p > { localeValue ( phase . summary , locale ) } </ p >
886885 </ div >
887-
888- < div className = "a3s-run-player-exchange" >
889- < div className = "a3s-run-player-action" >
890- < small > { labels . flowAction } </ small >
891- < code > { localeValue ( phase . action , locale ) } </ code >
892- </ div >
893- < i aria-hidden = "true" />
894- < div className = "a3s-run-player-result" >
895- < small > { labels . flowOutput } </ small >
896- < strong > { localeValue ( phase . result , locale ) } </ strong >
897- </ div >
898- </ div >
899-
900- < div className = "a3s-run-player-stage-meta" >
901- < code className = "a3s-run-player-command" > { phase . command } </ code >
902- < code className = "a3s-run-player-event" >
903- < i aria-hidden = "true" />
904- { phase . event }
905- </ code >
906- < span >
907- { phase . tags . map ( ( tag ) => (
908- < code key = { tag } > { tag } </ code >
909- ) ) }
910- </ span >
911- </ div >
912886 </ article >
913887 ) ;
914888}
@@ -987,8 +961,6 @@ function RuntimeExecutionFlow({
987961 . focus ( ) ;
988962 }
989963
990- const statusLabel = isPlaying ? labels . flowRunning : labels . flowComplete ;
991-
992964 return (
993965 < div
994966 className = "a3s-runtime-inspector a3s-runtime-inspector--player"
@@ -1002,22 +974,14 @@ function RuntimeExecutionFlow({
1002974 { labels . stackTitle }
1003975 </ span >
1004976 < div >
1005- < span
1006- className = { [ 'a3s-run-player-status' , isPlaying ? 'is-running' : '' ]
1007- . filter ( Boolean )
1008- . join ( ' ' ) }
1009- >
1010- < i aria-hidden = "true" />
1011- { statusLabel }
1012- </ span >
1013977 < button
1014978 aria-pressed = { isPlaying }
1015979 className = { isPlaying ? 'is-playing' : '' }
1016980 onClick = { playFlow }
1017981 type = "button"
1018982 >
1019983 < i aria-hidden = "true" />
1020- { labels . flowReplay }
984+ { isPlaying ? labels . flowRunning : labels . flowReplay }
1021985 </ button >
1022986 </ div >
1023987 </ header >
@@ -1028,7 +992,6 @@ function RuntimeExecutionFlow({
1028992 < small > { labels . flowTaskLabel } </ small >
1029993 < strong > { labels . flowTask } </ strong >
1030994 </ div >
1031- < code > session.stream()</ code >
1032995 </ section >
1033996
1034997 < nav aria-label = { labels . stackHint } className = "a3s-run-player-progress" >
@@ -1059,8 +1022,7 @@ function RuntimeExecutionFlow({
10591022 >
10601023 < span > { phase . code } </ span >
10611024 < span >
1062- < small > { localeValue ( phase . stage , locale ) } </ small >
1063- < strong > { localeValue ( phase . navTitle , locale ) } </ strong >
1025+ < strong > { localeValue ( phase . stage , locale ) } </ strong >
10641026 </ span >
10651027 </ button >
10661028 ) ) }
@@ -1074,17 +1036,13 @@ function RuntimeExecutionFlow({
10741036 />
10751037
10761038 < footer className = "a3s-run-player-evidence" >
1077- < div >
1078- < small > { labels . flowEvidence } </ small >
1079- < strong >
1080- < i aria-hidden = "true" />
1081- { labels . flowEventCount }
1082- </ strong >
1083- </ div >
1039+ < strong >
1040+ < i aria-hidden = "true" />
1041+ { labels . flowSaved }
1042+ </ strong >
10841043 < span >
1085- { [ 'RunRecord' , 'Trace' , 'Artifact' , 'Snapshot' ] . map ( ( item ) => (
1086- < code key = { item } > { item } </ code >
1087- ) ) }
1044+ < em > { labels . flowReplayable } </ em >
1045+ < em > { labels . flowRecoverable } </ em >
10881046 </ span >
10891047 </ footer >
10901048 </ div >
0 commit comments