@zq-silk/yui 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -2
- package/dist/cli/commandCatalog.js +8 -3
- package/dist/cli/interactionPolicy.js +4 -0
- package/dist/commands/taskCommands.js +5 -7
- package/dist/commands/taskIntegrationCommands.js +5 -16
- package/dist/controlPlaneCli.js +28 -21
- package/dist/controller/clientRuntime.js +3 -2
- package/dist/integration/gitIntegrationService.js +8 -67
- package/dist/job/jobCleanupInspection.js +67 -0
- package/dist/repository/gitWorkspace.js +41 -12
- package/dist/repository/taskWorkspaceCoordinator.js +72 -145
- package/dist/repository/taskWorkspacePreparer.js +39 -43
- package/dist/repository/workspaceCleanupInspection.js +88 -7
- package/dist/resources/resourceRegistrar.js +16 -10
- package/dist/runtime/integrationRuntimeIsolation.js +21 -0
- package/dist/runtime/taskRuntimeIsolation.js +91 -21
- package/dist/task/archiveDiagnostics.js +26 -8
- package/dist/task/archivePreflight.js +26 -9
- package/dist/task/leaderArchive.js +9 -15
- package/dist/web/assets/client/api.js +8 -0
- package/dist/web/assets/client/app.js +10 -6
- package/dist/web/assets/client/components.js +95 -36
- package/dist/web/assets/client/detail.js +110 -64
- package/dist/web/assets/client/dock.js +95 -11
- package/dist/web/assets/client/evidence.js +286 -94
- package/dist/web/assets/client/i18n.js +178 -62
- package/dist/web/assets/client/overview.js +9 -13
- package/dist/web/assets/client/records.js +142 -7
- package/dist/web/assets/client/sections.js +234 -198
- package/dist/web/assets/icons.js +4 -0
- package/dist/web/assets/styles/components.js +64 -17
- package/dist/web/assets/styles/responsive.js +7 -5
- package/dist/web/assets/styles/tokens.js +1 -1
- package/dist/web/assets/styles/views.js +48 -31
- package/dist/web/webServer.js +12 -1
- package/dist/web/webTaskSurface.js +8 -1
- package/docs/observability/README.md +13 -3
- package/docs/observability/README.zh-CN.md +10 -3
- package/docs/release-workflow.md +25 -0
- package/docs/release-workflow.zh-CN.md +19 -0
- package/docs/task-delivery.md +36 -8
- package/docs/task-delivery.zh-CN.md +24 -7
- package/i18n/README.zh-CN.md +3 -2
- package/package.json +1 -1
- package/skills/yui-leader/references/execution.md +2 -1
- package/skills/yui-leader/references/integration.md +20 -0
- package/skills/yui-operator/SKILL.md +4 -0
- package/skills/yui-reviewer/SKILL.md +3 -0
- package/skills/yui-runtime/SKILL.md +4 -0
- package/skills/yui-runtime/references/publication.md +20 -4
- package/skills/yui-worker/SKILL.md +3 -0
|
@@ -106,10 +106,9 @@ const EN = {
|
|
|
106
106
|
"task.updated": "Updated",
|
|
107
107
|
"tabs.label": "Task sections",
|
|
108
108
|
"tabs.overview": "Overview",
|
|
109
|
-
"tabs.
|
|
110
|
-
"tabs.
|
|
111
|
-
"tabs.
|
|
112
|
-
"tabs.details": "Details",
|
|
109
|
+
"tabs.delivery": "Delivery",
|
|
110
|
+
"tabs.runtime": "Runtime",
|
|
111
|
+
"tabs.records": "Records",
|
|
113
112
|
"now.observed": "Observed",
|
|
114
113
|
"now.reading": "Reading the live execution projection…",
|
|
115
114
|
"now.unavailable": "Live execution observation is unavailable. Task facts below are still current.",
|
|
@@ -124,7 +123,6 @@ const EN = {
|
|
|
124
123
|
"observation.waiting": "Observing…",
|
|
125
124
|
"observation.available": "Observed",
|
|
126
125
|
"observation.unavailable": "Observation unavailable",
|
|
127
|
-
"observation.title": "Observations and raw runtime facts",
|
|
128
126
|
"observation.help": "An open execution record is not proof of Agent activity. Native admission, runtime observation and Task progress are separate facts.",
|
|
129
127
|
"input.kicker": "Question",
|
|
130
128
|
"input.freeText": "Type your answer…",
|
|
@@ -146,8 +144,6 @@ const EN = {
|
|
|
146
144
|
"progress.lastReport": "Last working report",
|
|
147
145
|
"progress.briefUpdated": "Brief updated",
|
|
148
146
|
"progress.none": "No progress summary in this read. No percentage or ETA is inferred.",
|
|
149
|
-
"sessions.title": "Native Sessions",
|
|
150
|
-
"sessions.hint": "This Task's selected Sessions. Activity is not delivery progress.",
|
|
151
147
|
"sessions.unavailable": "Observation unavailable or not read yet — this does not mean zero running Sessions.",
|
|
152
148
|
"sessions.none": "No selected native Session is recorded.",
|
|
153
149
|
"sessions.unobserved": "unobserved",
|
|
@@ -177,7 +173,7 @@ const EN = {
|
|
|
177
173
|
"decisions.title": "Key decisions",
|
|
178
174
|
"decisions.hint": "Reports and recommendations are not user approval.",
|
|
179
175
|
"decisions.none": "No current decision in this read.",
|
|
180
|
-
"decisions.more": "All decisions in
|
|
176
|
+
"decisions.more": "All decisions in Records",
|
|
181
177
|
"planning.title": "Planning",
|
|
182
178
|
"planning.withheld": "This bounded snapshot withholds run details; read the original planning run.",
|
|
183
179
|
"planning.none": "No planning run is included. Direct Session activity is shown separately.",
|
|
@@ -202,13 +198,11 @@ const EN = {
|
|
|
202
198
|
"work.disposition": "Disposition",
|
|
203
199
|
"work.outcome": "Outcome",
|
|
204
200
|
"records.none": "No records yet.",
|
|
205
|
-
"records.notIncluded": "Not included in this bounded read.",
|
|
206
201
|
"reviews.title": "Reviews",
|
|
207
202
|
"reviews.hint": "Review reports are evidence, not acceptance. Missing checks are not passes.",
|
|
208
203
|
"review.reviewer": "Reviewer",
|
|
209
204
|
"review.base": "Base",
|
|
210
205
|
"review.run": "Run",
|
|
211
|
-
"evidence.title": "Results and evidence",
|
|
212
206
|
"evidence.files": "Saved files",
|
|
213
207
|
"evidence.filesHint": "Loaded on request and read at a fixed revision.",
|
|
214
208
|
"evidence.load": "Load file list",
|
|
@@ -225,31 +219,22 @@ const EN = {
|
|
|
225
219
|
"evidence.copyManual": "Copy the reference above",
|
|
226
220
|
"evidence.fixedNote": "This revision stays selected across refreshes. Reading or discussing it does not accept, publish or execute it.",
|
|
227
221
|
"evidence.fixedText": "Fixed artifact text",
|
|
228
|
-
"evidence.delivery": "Delivery, review and resources",
|
|
229
|
-
"evidence.deliveryHint": "Local completion, review, remote delivery and cleanup are separate facts.",
|
|
230
|
-
"evidence.readDelivery": "Read evidence",
|
|
231
222
|
"evidence.observationUnavailable": "Delivery observation unavailable; original records below are still readable.",
|
|
232
223
|
"evidence.remote": "Remote delivery",
|
|
233
224
|
"evidence.expectedCommit": "Expected local commit",
|
|
234
225
|
"evidence.verification": "Evidence",
|
|
235
226
|
"evidence.adoption": "Adoption",
|
|
236
|
-
"evidence.
|
|
237
|
-
"evidence.integrations": "Integration checks · exact recorded candidate",
|
|
227
|
+
"evidence.integrations": "Integration records",
|
|
238
228
|
"evidence.noIntegrations": "No Integration check records. Direct Leader verification may be in the completion report.",
|
|
239
229
|
"evidence.candidate": "Candidate",
|
|
240
230
|
"evidence.noCandidate": "no check candidate",
|
|
241
231
|
"evidence.noChecks": "No check outcomes recorded.",
|
|
242
|
-
"evidence.reviews": "Review bindings · not semantic approval",
|
|
243
|
-
"evidence.noReviews": "No Review records.",
|
|
244
232
|
"evidence.readReport": "Read original report",
|
|
245
233
|
"evidence.noReport": "No report recorded.",
|
|
246
|
-
"evidence.workspaces": "Retained workspaces · recorded ownership only",
|
|
247
234
|
"evidence.noWorkspaces": "No managed workspaces recorded.",
|
|
248
235
|
"evidence.cleanupNote": "No physical cleanup inspection was run. The read-only preflight does not authorize archive or cleanup:",
|
|
249
236
|
"evidence.originalUnavailable": "Original evidence unavailable:",
|
|
250
|
-
"evidence.usage": "Usage",
|
|
251
237
|
"roles.title": "Roles",
|
|
252
|
-
"roles.noActiveRun": "No active run in this read; Session activity is a separate observation.",
|
|
253
238
|
"role.session": "Session",
|
|
254
239
|
"role.noSession": "no live Session",
|
|
255
240
|
"role.desired": "Desired launch",
|
|
@@ -278,14 +263,13 @@ const EN = {
|
|
|
278
263
|
"control.then": "Then-message reference (optional)",
|
|
279
264
|
"control.thenPlaceholder": "an already saved task/message id",
|
|
280
265
|
"control.submit": "Submit control",
|
|
281
|
-
"runs.title": "
|
|
282
|
-
"runs.hint": "Record state and delivery evidence are separate facts.",
|
|
283
|
-
"runs.filter": "Filter runs",
|
|
266
|
+
"runs.title": "Open execution",
|
|
267
|
+
"runs.hint": "Finished execution records are in Records. Record state and delivery evidence are separate facts.",
|
|
284
268
|
"run.instruction": "Instruction",
|
|
285
269
|
"run.output": "Output",
|
|
286
270
|
"run.failure": "Failure",
|
|
287
271
|
"run.lineage": "Lineage",
|
|
288
|
-
"jobs.title": "
|
|
272
|
+
"jobs.title": "Open operations",
|
|
289
273
|
"jobs.hint": "Original operation facts. Nothing here retries automatically.",
|
|
290
274
|
"job.queued.note": "Queued.",
|
|
291
275
|
"job.running.note": "Waiting for an explicit terminal receipt.",
|
|
@@ -302,16 +286,13 @@ const EN = {
|
|
|
302
286
|
"usage.scope": "Task lifetime; only exactly attributable evidence is counted.",
|
|
303
287
|
"usage.observedThrough": "Observed through",
|
|
304
288
|
"usage.contextBytes": "Context bytes",
|
|
305
|
-
"history.title": "
|
|
289
|
+
"history.title": "Timeline",
|
|
306
290
|
"history.filter": "Filter history",
|
|
307
291
|
"history.all": "All",
|
|
308
292
|
"history.decision": "Decisions",
|
|
309
293
|
"history.milestone": "Milestones",
|
|
310
|
-
"history.message": "Messages",
|
|
311
|
-
"history.omitted": "This bounded read may omit older records; each can be read by reference.",
|
|
312
|
-
"history.resultOf": "Result of",
|
|
313
294
|
"history.superseded": "Superseded because",
|
|
314
|
-
"details.facts": "Task
|
|
295
|
+
"details.facts": "Task information",
|
|
315
296
|
"details.id": "ID",
|
|
316
297
|
"details.status": "Status",
|
|
317
298
|
"details.priority": "Priority",
|
|
@@ -359,7 +340,6 @@ const EN = {
|
|
|
359
340
|
"discussion.source": "Recorded Task messages · not a Session transcript",
|
|
360
341
|
"discussion.feed": "Recorded Task messages",
|
|
361
342
|
"discussion.empty": "No recorded messages yet. Start the discussion below.",
|
|
362
|
-
"discussion.omitted": "This bounded read may omit older messages; History lists their references.",
|
|
363
343
|
"composer.label": "Message to the Task Leader",
|
|
364
344
|
"composer.placeholder": "Message the Task Leader…",
|
|
365
345
|
"composer.send": "Send",
|
|
@@ -551,7 +531,85 @@ const EN = {
|
|
|
551
531
|
"usage.reason.tool-history-compacted": "Tool history compacted; retained calls only",
|
|
552
532
|
"usage.reason.nonzero-session-baseline": "Initial nonzero Session counter excluded",
|
|
553
533
|
"usage.reason.task-lifecycle-time-missing": "Task start/end evidence missing",
|
|
554
|
-
"usage.reason.native-turn-history-compacted": "Complete retained Turns only"
|
|
534
|
+
"usage.reason.native-turn-history-compacted": "Complete retained Turns only",
|
|
535
|
+
// Delivery, Runtime and Records tabs
|
|
536
|
+
"work.openHint": "Open work items in full; finished ones are read when expanded.",
|
|
537
|
+
"work.noneOpen": "No open work items.",
|
|
538
|
+
"work.none": "No work items. Work the Leader does directly has no work item.",
|
|
539
|
+
"work.finished": "Finished work items",
|
|
540
|
+
"work.reading": "Reading finished work items…",
|
|
541
|
+
"reviews.none": "No reviews recorded.",
|
|
542
|
+
"delivery.title": "Integration and delivery",
|
|
543
|
+
"delivery.hint": "Integration checks, PR/MR and remote merge are separate facts; none of them is acceptance.",
|
|
544
|
+
"delivery.readAt": "Evidence read at",
|
|
545
|
+
"delivery.counts": "{merged}/{total} code projects merged · {verified}/{total} verified",
|
|
546
|
+
"delivery.noProjects": "No project is bound to this Task.",
|
|
547
|
+
"evidence.loading": "Reading original evidence…",
|
|
548
|
+
"evidence.report": "Original review report",
|
|
549
|
+
"workspaces.title": "Workspaces and cleanup",
|
|
550
|
+
"coverage.not-applicable": "not applicable",
|
|
551
|
+
"coverage.head-unavailable": "head unavailable",
|
|
552
|
+
"coverage.missing": "no PR/MR",
|
|
553
|
+
"coverage.missing-local-commit": "local commit missing",
|
|
554
|
+
"coverage.stale": "stale",
|
|
555
|
+
"coverage.head-mismatch": "head mismatch",
|
|
556
|
+
"coverage.open": "open",
|
|
557
|
+
"coverage.closed": "closed",
|
|
558
|
+
"coverage.merged": "merged",
|
|
559
|
+
"coverage.verified": "verified",
|
|
560
|
+
"publication.pull-request": "PR",
|
|
561
|
+
"publication.merge-request": "MR",
|
|
562
|
+
"publicationState.open": "open",
|
|
563
|
+
"publicationState.merged": "merged",
|
|
564
|
+
"publicationState.closed": "closed",
|
|
565
|
+
"verification.reported": "reported",
|
|
566
|
+
"verification.verified": "verified",
|
|
567
|
+
"integration.running": "Running",
|
|
568
|
+
"integration.validating": "Validating",
|
|
569
|
+
"integration.committed": "Committed",
|
|
570
|
+
"integration.conflicted": "Conflicted",
|
|
571
|
+
"integration.blocked": "Blocked",
|
|
572
|
+
"integration.failed": "Failed",
|
|
573
|
+
"integration.superseded": "Superseded",
|
|
574
|
+
"integration.source.work-item": "Work item",
|
|
575
|
+
"integration.source.upstream": "Upstream",
|
|
576
|
+
"check.passed": "passed",
|
|
577
|
+
"check.failed": "failed",
|
|
578
|
+
"check.skipped": "skipped",
|
|
579
|
+
"workspace.owner.task": "Task main",
|
|
580
|
+
"workspace.owner.work-item": "Work item",
|
|
581
|
+
"workspace.owner.review-round": "Review",
|
|
582
|
+
"workspace.owner.integration-attempt": "Integration",
|
|
583
|
+
"workspace.owner.execution-lane": "Execution lane",
|
|
584
|
+
"roles.hint": "Session activity is a separate observation, not delivery progress.",
|
|
585
|
+
"runs.none": "No open execution record.",
|
|
586
|
+
"runs.more": "{count} more open execution records are not listed here; see Records.",
|
|
587
|
+
"jobs.none": "No open operations.",
|
|
588
|
+
"diagnostics.title": "Diagnostics",
|
|
589
|
+
"diagnostics.meta": "observations · Session facts · raw runtime",
|
|
590
|
+
"history.hint": "Decisions, milestones, execution records and questions, newest first. Messages are in Discussion.",
|
|
591
|
+
"history.run": "Execution",
|
|
592
|
+
"history.question": "Questions",
|
|
593
|
+
"history.loaded": "{shown} of {total} read",
|
|
594
|
+
"history.more": "Load more",
|
|
595
|
+
"history.loading": "Reading records…",
|
|
596
|
+
"history.stale": "New records · refresh",
|
|
597
|
+
"history.retired": "retired",
|
|
598
|
+
"history.answer": "Answer",
|
|
599
|
+
"answeredBy.user": "by user",
|
|
600
|
+
"answeredBy.operator": "by Operator",
|
|
601
|
+
"answeredBy.agent-timeout": "recommended choice after timeout",
|
|
602
|
+
"inputStatus.open": "Open",
|
|
603
|
+
"inputStatus.answered": "Answered",
|
|
604
|
+
"inputStatus.cancelled": "Cancelled",
|
|
605
|
+
"inputStatus.auto-resolved": "Auto-resolved",
|
|
606
|
+
"records.unavailable": "Read failed:",
|
|
607
|
+
"advanced.title": "Advanced",
|
|
608
|
+
"advanced.meta": "Context cursor · capability panels",
|
|
609
|
+
"discussion.older": "Show {count} earlier messages",
|
|
610
|
+
"discussion.olderLoading": "Reading earlier messages…",
|
|
611
|
+
"record.raw": "Raw record",
|
|
612
|
+
"record.reading": "Reading the exact record…"
|
|
555
613
|
};
|
|
556
614
|
const ZH = {
|
|
557
615
|
"app.title": "Yui",
|
|
@@ -661,10 +719,9 @@ const ZH = {
|
|
|
661
719
|
"task.updated": "更新于",
|
|
662
720
|
"tabs.label": "任务分区",
|
|
663
721
|
"tabs.overview": "概览",
|
|
664
|
-
"tabs.
|
|
665
|
-
"tabs.
|
|
666
|
-
"tabs.
|
|
667
|
-
"tabs.details": "详情",
|
|
722
|
+
"tabs.delivery": "交付",
|
|
723
|
+
"tabs.runtime": "运行",
|
|
724
|
+
"tabs.records": "记录",
|
|
668
725
|
"now.observed": "观察于",
|
|
669
726
|
"now.reading": "正在读取实时执行投影…",
|
|
670
727
|
"now.unavailable": "实时执行观察不可用;下方任务事实仍为当前读取。",
|
|
@@ -679,7 +736,6 @@ const ZH = {
|
|
|
679
736
|
"observation.waiting": "观察中…",
|
|
680
737
|
"observation.available": "已观察",
|
|
681
738
|
"observation.unavailable": "观察不可用",
|
|
682
|
-
"observation.title": "观察与原始运行事实",
|
|
683
739
|
"observation.help": "执行记录未结清不等于 Agent 正在工作;原生准入、运行观察与任务进展分别呈现。",
|
|
684
740
|
"input.kicker": "问题",
|
|
685
741
|
"input.freeText": "输入你的回答…",
|
|
@@ -701,8 +757,6 @@ const ZH = {
|
|
|
701
757
|
"progress.lastReport": "结束前的进展摘要",
|
|
702
758
|
"progress.briefUpdated": "Brief 更新于",
|
|
703
759
|
"progress.none": "本次读取没有进展摘要;不推算完成百分比或预计时间。",
|
|
704
|
-
"sessions.title": "原生会话",
|
|
705
|
-
"sessions.hint": "本任务当前选用的会话。活动不等于交付进展。",
|
|
706
760
|
"sessions.unavailable": "观察不可用或尚未读取——不代表运行会话为零。",
|
|
707
761
|
"sessions.none": "未记录当前选用的原生会话。",
|
|
708
762
|
"sessions.unobserved": "未观测",
|
|
@@ -732,7 +786,7 @@ const ZH = {
|
|
|
732
786
|
"decisions.title": "关键决定",
|
|
733
787
|
"decisions.hint": "报告和建议不代表用户批准。",
|
|
734
788
|
"decisions.none": "本次读取没有当前决定。",
|
|
735
|
-
"decisions.more": "
|
|
789
|
+
"decisions.more": "在「记录」中查看全部决定",
|
|
736
790
|
"planning.title": "规划",
|
|
737
791
|
"planning.withheld": "当前受限快照未展开执行详情;请读取原始 planning 执行记录。",
|
|
738
792
|
"planning.none": "本次读取未包含 planning 执行记录;直接会话活动单独展示。",
|
|
@@ -757,13 +811,11 @@ const ZH = {
|
|
|
757
811
|
"work.disposition": "处置",
|
|
758
812
|
"work.outcome": "成果",
|
|
759
813
|
"records.none": "暂无记录。",
|
|
760
|
-
"records.notIncluded": "本次有界读取未包含。",
|
|
761
814
|
"reviews.title": "评审",
|
|
762
815
|
"reviews.hint": "评审报告是证据,不是验收;缺失的检查不算通过。",
|
|
763
816
|
"review.reviewer": "评审者",
|
|
764
817
|
"review.base": "基线",
|
|
765
818
|
"review.run": "执行",
|
|
766
|
-
"evidence.title": "成果与证据",
|
|
767
819
|
"evidence.files": "已保存文件",
|
|
768
820
|
"evidence.filesHint": "按需读取,固定在指定版本。",
|
|
769
821
|
"evidence.load": "读取文件列表",
|
|
@@ -780,31 +832,22 @@ const ZH = {
|
|
|
780
832
|
"evidence.copyManual": "请复制上方引用",
|
|
781
833
|
"evidence.fixedNote": "刷新后仍保留此版本。读取或讨论不会验收、发布或执行该成果。",
|
|
782
834
|
"evidence.fixedText": "固定成果正文",
|
|
783
|
-
"evidence.delivery": "交付、评审与资源",
|
|
784
|
-
"evidence.deliveryHint": "本地完成、评审、远程交付和资源清理是不同事实。",
|
|
785
|
-
"evidence.readDelivery": "读取证据",
|
|
786
835
|
"evidence.observationUnavailable": "交付观察不可用;下方原始记录仍可读取。",
|
|
787
836
|
"evidence.remote": "远程交付",
|
|
788
837
|
"evidence.expectedCommit": "期望本地提交",
|
|
789
838
|
"evidence.verification": "证据",
|
|
790
839
|
"evidence.adoption": "采用记录",
|
|
791
|
-
"evidence.
|
|
792
|
-
"evidence.integrations": "集成检查 · 精确记录候选",
|
|
840
|
+
"evidence.integrations": "集成记录",
|
|
793
841
|
"evidence.noIntegrations": "没有集成检查记录;Leader 直接执行的验证可能记录在完成报告中。",
|
|
794
842
|
"evidence.candidate": "候选",
|
|
795
843
|
"evidence.noCandidate": "无检查候选",
|
|
796
844
|
"evidence.noChecks": "未记录检查结果。",
|
|
797
|
-
"evidence.reviews": "评审绑定 · 不等于语义通过",
|
|
798
|
-
"evidence.noReviews": "没有评审记录。",
|
|
799
845
|
"evidence.readReport": "读取原始报告",
|
|
800
846
|
"evidence.noReport": "未记录报告。",
|
|
801
|
-
"evidence.workspaces": "保留工作区 · 仅已记录所有权",
|
|
802
847
|
"evidence.noWorkspaces": "没有记录托管工作区。",
|
|
803
848
|
"evidence.cleanupNote": "未执行物理清理检查。只读预检不授权归档或清理:",
|
|
804
849
|
"evidence.originalUnavailable": "原始证据不可用:",
|
|
805
|
-
"evidence.usage": "用量",
|
|
806
850
|
"roles.title": "Role",
|
|
807
|
-
"roles.noActiveRun": "此读取中没有活跃执行记录;会话活动属于独立观察。",
|
|
808
851
|
"role.session": "会话",
|
|
809
852
|
"role.noSession": "无在线会话",
|
|
810
853
|
"role.desired": "期望启动配置",
|
|
@@ -833,14 +876,13 @@ const ZH = {
|
|
|
833
876
|
"control.then": "打断后续消息引用(可选)",
|
|
834
877
|
"control.thenPlaceholder": "已保存的 task/message 标识",
|
|
835
878
|
"control.submit": "提交控制",
|
|
836
|
-
"runs.title": "
|
|
837
|
-
"runs.hint": "
|
|
838
|
-
"runs.filter": "筛选执行记录",
|
|
879
|
+
"runs.title": "进行中的执行",
|
|
880
|
+
"runs.hint": "已结束的执行记录在「记录」中。记录状态与投递证据是不同事实。",
|
|
839
881
|
"run.instruction": "指令",
|
|
840
882
|
"run.output": "输出",
|
|
841
883
|
"run.failure": "失败",
|
|
842
884
|
"run.lineage": "谱系",
|
|
843
|
-
"jobs.title": "
|
|
885
|
+
"jobs.title": "未结束的操作",
|
|
844
886
|
"jobs.hint": "原始操作事实;这里不会自动重试。",
|
|
845
887
|
"job.queued.note": "已排队。",
|
|
846
888
|
"job.running.note": "等待明确终态回执。",
|
|
@@ -857,16 +899,13 @@ const ZH = {
|
|
|
857
899
|
"usage.scope": "任务生命周期;仅计入可精确归属的证据。",
|
|
858
900
|
"usage.observedThrough": "观察截至",
|
|
859
901
|
"usage.contextBytes": "上下文字节",
|
|
860
|
-
"history.title": "
|
|
902
|
+
"history.title": "时间线",
|
|
861
903
|
"history.filter": "筛选历史",
|
|
862
904
|
"history.all": "全部",
|
|
863
905
|
"history.decision": "决定",
|
|
864
906
|
"history.milestone": "里程碑",
|
|
865
|
-
"history.message": "消息",
|
|
866
|
-
"history.omitted": "本次有界读取可能省略较早记录;每条都可按引用读取。",
|
|
867
|
-
"history.resultOf": "结果来自",
|
|
868
907
|
"history.superseded": "被替代原因",
|
|
869
|
-
"details.facts": "
|
|
908
|
+
"details.facts": "任务信息",
|
|
870
909
|
"details.id": "ID",
|
|
871
910
|
"details.status": "状态",
|
|
872
911
|
"details.priority": "优先级",
|
|
@@ -914,7 +953,6 @@ const ZH = {
|
|
|
914
953
|
"discussion.source": "已记录的任务消息 · 非会话完整记录",
|
|
915
954
|
"discussion.feed": "已记录的任务消息",
|
|
916
955
|
"discussion.empty": "尚无已记录消息,可在下方开始讨论。",
|
|
917
|
-
"discussion.omitted": "本次有界读取可能省略较早消息;可在「历史」查看引用。",
|
|
918
956
|
"composer.label": "发送给 Task Leader 的消息",
|
|
919
957
|
"composer.placeholder": "给 Task Leader 发消息…",
|
|
920
958
|
"composer.send": "发送",
|
|
@@ -1106,7 +1144,85 @@ const ZH = {
|
|
|
1106
1144
|
"usage.reason.tool-history-compacted": "工具历史已压缩,仅计保留调用",
|
|
1107
1145
|
"usage.reason.nonzero-session-baseline": "已排除会话首次非零累计基线",
|
|
1108
1146
|
"usage.reason.task-lifecycle-time-missing": "缺少任务起止证据",
|
|
1109
|
-
"usage.reason.native-turn-history-compacted": "仅计起止完整的保留 Turn"
|
|
1147
|
+
"usage.reason.native-turn-history-compacted": "仅计起止完整的保留 Turn",
|
|
1148
|
+
// Delivery, Runtime and Records tabs
|
|
1149
|
+
"work.openHint": "进行中的工作项完整展开;已结束的展开时再读取。",
|
|
1150
|
+
"work.noneOpen": "没有进行中的工作项。",
|
|
1151
|
+
"work.none": "没有工作项。Leader 直接完成的工作不会建工作项。",
|
|
1152
|
+
"work.finished": "已结束的工作项",
|
|
1153
|
+
"work.reading": "正在读取已结束的工作项…",
|
|
1154
|
+
"reviews.none": "没有评审记录。",
|
|
1155
|
+
"delivery.title": "集成与交付",
|
|
1156
|
+
"delivery.hint": "集成检查、PR/MR 与远程合并是不同事实,都不等于验收。",
|
|
1157
|
+
"delivery.readAt": "证据读取于",
|
|
1158
|
+
"delivery.counts": "已合入 {merged}/{total} 个代码项目 · 已验证 {verified}/{total}",
|
|
1159
|
+
"delivery.noProjects": "此任务未绑定项目。",
|
|
1160
|
+
"evidence.loading": "正在读取原始证据…",
|
|
1161
|
+
"evidence.report": "原始评审报告",
|
|
1162
|
+
"workspaces.title": "工作区与清理",
|
|
1163
|
+
"coverage.not-applicable": "不适用",
|
|
1164
|
+
"coverage.head-unavailable": "head 不可用",
|
|
1165
|
+
"coverage.missing": "缺少 PR/MR",
|
|
1166
|
+
"coverage.missing-local-commit": "缺少本地提交",
|
|
1167
|
+
"coverage.stale": "已过期",
|
|
1168
|
+
"coverage.head-mismatch": "head 不一致",
|
|
1169
|
+
"coverage.open": "未合并",
|
|
1170
|
+
"coverage.closed": "已关闭",
|
|
1171
|
+
"coverage.merged": "已合并",
|
|
1172
|
+
"coverage.verified": "已验证",
|
|
1173
|
+
"publication.pull-request": "PR",
|
|
1174
|
+
"publication.merge-request": "MR",
|
|
1175
|
+
"publicationState.open": "未合并",
|
|
1176
|
+
"publicationState.merged": "已合并",
|
|
1177
|
+
"publicationState.closed": "已关闭",
|
|
1178
|
+
"verification.reported": "已报告",
|
|
1179
|
+
"verification.verified": "已验证",
|
|
1180
|
+
"integration.running": "进行中",
|
|
1181
|
+
"integration.validating": "校验中",
|
|
1182
|
+
"integration.committed": "已提交",
|
|
1183
|
+
"integration.conflicted": "有冲突",
|
|
1184
|
+
"integration.blocked": "受阻",
|
|
1185
|
+
"integration.failed": "失败",
|
|
1186
|
+
"integration.superseded": "已被取代",
|
|
1187
|
+
"integration.source.work-item": "工作项",
|
|
1188
|
+
"integration.source.upstream": "上游",
|
|
1189
|
+
"check.passed": "通过",
|
|
1190
|
+
"check.failed": "失败",
|
|
1191
|
+
"check.skipped": "跳过",
|
|
1192
|
+
"workspace.owner.task": "任务主工作区",
|
|
1193
|
+
"workspace.owner.work-item": "工作项",
|
|
1194
|
+
"workspace.owner.review-round": "评审",
|
|
1195
|
+
"workspace.owner.integration-attempt": "集成",
|
|
1196
|
+
"workspace.owner.execution-lane": "执行通道",
|
|
1197
|
+
"roles.hint": "会话活动是独立观察,不等于交付进展。",
|
|
1198
|
+
"runs.none": "没有进行中的执行记录。",
|
|
1199
|
+
"runs.more": "另有 {count} 条进行中的执行未在此列出,可在「记录」查看。",
|
|
1200
|
+
"jobs.none": "没有未结束的操作。",
|
|
1201
|
+
"diagnostics.title": "诊断信息",
|
|
1202
|
+
"diagnostics.meta": "观察来源 · 会话依据 · 原始运行事实",
|
|
1203
|
+
"history.hint": "决定、里程碑、执行记录与问题,按时间倒序;消息在「讨论」中。",
|
|
1204
|
+
"history.run": "执行",
|
|
1205
|
+
"history.question": "问题",
|
|
1206
|
+
"history.loaded": "已读取 {shown} / 共 {total} 条",
|
|
1207
|
+
"history.more": "加载更多",
|
|
1208
|
+
"history.loading": "正在读取记录…",
|
|
1209
|
+
"history.stale": "有新记录 · 刷新",
|
|
1210
|
+
"history.retired": "已撤回",
|
|
1211
|
+
"history.answer": "回答",
|
|
1212
|
+
"answeredBy.user": "用户",
|
|
1213
|
+
"answeredBy.operator": "Operator",
|
|
1214
|
+
"answeredBy.agent-timeout": "超时后采用推荐项",
|
|
1215
|
+
"inputStatus.open": "待回答",
|
|
1216
|
+
"inputStatus.answered": "已回答",
|
|
1217
|
+
"inputStatus.cancelled": "已取消",
|
|
1218
|
+
"inputStatus.auto-resolved": "已自动处理",
|
|
1219
|
+
"records.unavailable": "读取失败:",
|
|
1220
|
+
"advanced.title": "高级",
|
|
1221
|
+
"advanced.meta": "Context 游标 · 能力面板",
|
|
1222
|
+
"discussion.older": "显示更早的 {count} 条消息",
|
|
1223
|
+
"discussion.olderLoading": "正在读取更早的消息…",
|
|
1224
|
+
"record.raw": "原始记录",
|
|
1225
|
+
"record.reading": "正在读取完整记录…"
|
|
1110
1226
|
};
|
|
1111
1227
|
export const I18N_SCRIPT = String.raw `
|
|
1112
1228
|
const messages = ${JSON.stringify({ en: EN, "zh-CN": ZH })};
|
|
@@ -28,12 +28,8 @@ export function renderOverview(container, state, t, locale, actions) {
|
|
|
28
28
|
metricTile(t("metrics.completed"), counts ? counts.completed : "—", { tone: "ok" }),
|
|
29
29
|
metricTile(t("metrics.total"), counts ? counts.total : "—")));
|
|
30
30
|
|
|
31
|
-
//
|
|
32
|
-
//
|
|
33
|
-
// Main column: the work path (answer, in progress, recent). Rail: catalog-wide
|
|
34
|
-
// signals and the explicit Session read.
|
|
35
|
-
const main = h("div.overview-col.overview-main");
|
|
36
|
-
const rail = h("div.overview-col.overview-rail");
|
|
31
|
+
// One reading column: the work path first (answer, in progress, recent),
|
|
32
|
+
// then catalog-wide signals and the explicit Session read.
|
|
37
33
|
// Open questions: the catalog names the affected Tasks, never the questions.
|
|
38
34
|
const inbox = card({ title: t("overview.inbox"), icon: "inbox", count: counts ? counts.openInputs : null });
|
|
39
35
|
const items = state.attention || [];
|
|
@@ -46,9 +42,8 @@ export function renderOverview(container, state, t, locale, actions) {
|
|
|
46
42
|
h("span.list-row-go", null, t("overview.answer"), icon("chevron", "icon-sm")));
|
|
47
43
|
})));
|
|
48
44
|
}
|
|
49
|
-
main.append(inbox);
|
|
50
45
|
|
|
51
|
-
const catalog = card({ title: t("overview.catalog"), icon: "
|
|
46
|
+
const catalog = card({ title: t("overview.catalog"), icon: "broadcast", hint: t("overview.catalogHint") });
|
|
52
47
|
if (state.catalogAttention) {
|
|
53
48
|
catalog.body.append(h("div.row-list", null, ATTENTION_KINDS.map(function (kind) {
|
|
54
49
|
const value = state.catalogAttention[kind];
|
|
@@ -64,14 +59,15 @@ export function renderOverview(container, state, t, locale, actions) {
|
|
|
64
59
|
})));
|
|
65
60
|
catalog.body.append(note(t("overview.signalsHelp")));
|
|
66
61
|
} else catalog.body.append(emptyState(t("loading.dashboard")));
|
|
67
|
-
rail.append(catalog);
|
|
68
62
|
|
|
69
63
|
const active = (state.tasks || []).filter(function (task) { return task.status === "active"; });
|
|
70
64
|
const recent = (state.tasks || []).filter(function (task) { return task.status !== "archived"; }).slice().sort(byNewest).slice(0, 8);
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
65
|
+
page.append(h("div.card-stack", null,
|
|
66
|
+
inbox,
|
|
67
|
+
taskListCard(t("overview.activeNow"), "pulse", active, t("overview.activeEmpty"), t, locale, actions),
|
|
68
|
+
taskListCard(t("overview.recent"), "history", recent, t("sidebar.empty"), t, locale, actions),
|
|
69
|
+
catalog,
|
|
70
|
+
sessionCard(state, t, locale, actions)));
|
|
75
71
|
page.append(h("p.page-foot", null, t("overview.pageScope")));
|
|
76
72
|
container.append(page);
|
|
77
73
|
}
|