@aiwuk/team 0.0.0-stage → 5.0.3
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/CHANGELOG.md +156 -0
- package/LICENSE +21 -0
- package/README.md +149 -2
- package/README.zh-CN.md +150 -0
- package/access.js +93 -0
- package/activity-summary.js +36 -0
- package/allocation.js +34 -0
- package/board-dispatch.js +141 -0
- package/brand.js +41 -0
- package/client/00-core-zh.js +284 -0
- package/client/01-i18n-en.js +265 -0
- package/client/02-styles.js +336 -0
- package/client/02b-stage-styles.js +65 -0
- package/client/03-shared.js +82 -0
- package/client/03b-collapsible-list.js +34 -0
- package/client/03c-config-panel.js +605 -0
- package/client/04-tool-cards.js +110 -0
- package/client/04a-dispatch-confirm.js +162 -0
- package/client/04b-more-cards.js +78 -0
- package/client/04c-model-picker.js +68 -0
- package/client/04d-confirm-dock.js +40 -0
- package/client/05-policy.js +217 -0
- package/client/06-usage.js +195 -0
- package/client/06b-model-source.js +67 -0
- package/client/07-board-parts.js +312 -0
- package/client/07a-role-theme.js +25 -0
- package/client/08-artifacts-report.js +375 -0
- package/client/08a-task-control.js +126 -0
- package/client/08b-stage-sprites.js +97 -0
- package/client/08c-stage-colors.js +55 -0
- package/client/08c-stage-scene.js +238 -0
- package/client/08d-stage-adapter.js +65 -0
- package/client/08e-stage-activity.js +83 -0
- package/client/09-team-board.js +181 -0
- package/client/09b-role-view.js +95 -0
- package/client/09c-model-tabs.js +20 -0
- package/client/10-overview.js +364 -0
- package/client/10b-onboarding.js +121 -0
- package/client/11-register.js +249 -0
- package/client.js +5053 -0
- package/config-projection.js +40 -0
- package/config.js +411 -0
- package/cordis.patch.yml +110 -0
- package/defaults.js +222 -0
- package/dispatch-confirm.js +293 -0
- package/dispatch-routes-store.js +31 -0
- package/failover.js +85 -0
- package/file-limits.js +119 -0
- package/free-worker.mjs +125 -0
- package/http-guard.js +14 -0
- package/i18n/roles.en.json +23 -0
- package/i18n/roles.zh.json +23 -0
- package/i18n/server.en.json +659 -0
- package/i18n/server.zh.json +659 -0
- package/i18n.js +34 -0
- package/icon.svg +7 -0
- package/index.js +111 -0
- package/integrations-config.js +301 -0
- package/integrations-messages.js +62 -0
- package/integrations.js +17 -0
- package/lead-route.js +30 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/long-context.js +30 -0
- package/managed-config-route.js +49 -0
- package/managed-ref.js +38 -0
- package/managed-resolve.js +47 -0
- package/member-task-control.js +242 -0
- package/memory-backends.js +89 -0
- package/memory-embed.js +70 -0
- package/memory-hub.js +150 -0
- package/memory-openviking.js +101 -0
- package/memory-redact.js +34 -0
- package/memory-store.js +219 -0
- package/memory-sync-queue.js +28 -0
- package/model-policy.js +85 -0
- package/model-prefs.js +104 -0
- package/observability-api.js +76 -0
- package/observability-projection.js +141 -0
- package/onboarding.js +47 -0
- package/opencode.js +74 -0
- package/package.json +153 -4
- package/plan-gate.js +92 -0
- package/preset-guard.js +47 -0
- package/request-evidence.js +41 -0
- package/roles.js +69 -0
- package/roster-defaults.js +70 -0
- package/route-health.js +39 -0
- package/runtime-observability.js +78 -0
- package/runtime-view.js +21 -0
- package/scripts/memory-cli.mjs +138 -0
- package/search-engines.js +119 -0
- package/search.js +164 -0
- package/session-policy.js +59 -0
- package/session-rotation.js +206 -0
- package/settings-schema.js +40 -0
- package/shared/managed-config.js +84 -0
- package/single-model.js +44 -0
- package/skills/project-role-theme/SKILL.md +46 -0
- package/task-bridge.js +32 -0
- package/task-control-api.js +36 -0
- package/task-control-audit.js +60 -0
- package/team.js +101 -0
- package/teammate-context.js +120 -0
- package/teammate-wait.js +18 -0
- package/template.js +46 -0
- package/theme-plugin.js +172 -0
- package/theme.js +115 -0
- package/token-discipline.js +116 -0
- package/token-metrics.js +37 -0
- package/tool-names.js +10 -0
- package/tool-schema.js +23 -0
- package/transcribe.js +104 -0
- package/ui.js +113 -0
- package/usage.js +92 -0
- package/workflow.js +246 -0
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
const en = {
|
|
2
|
+
'nav.models': 'Models', 'nav.roles': 'Roles', 'nav.usage': 'Usage', 'nav.logs': 'Logs',
|
|
3
|
+
'navfull.models': 'Model management', 'navfull.roles': 'Roles & settings', 'navfull.usage': 'Usage', 'navfull.logs': 'Request records', 'navfull.artifacts': 'Artifacts', 'navfull.report': 'Battle report',
|
|
4
|
+
'usage.hint': 'Budget tokens (excl. cache reads) = uncached input + cache write + output; cache reads are listed apart and may still incur costs, not equal to final billing amount. Totals and step times are pushed live by the host; per-model token splits come from the last refresh.', 'usage.total': 'Team total {n}', 'usage.billable': 'Budget {n}', 'usage.cacheRead': 'Cache read {n}', 'usage.budget': 'Budget {used} / {max}', 'usage.over': 'Budget reached; requests blocked', 'usage.none': 'No usage recorded', 'usage.io': 'In {i} · out {o}', 'usage.step': '{n} steps · {s}s/step', 'usage.ttft': 'first token {s}s', 'usage.decode': '{n} tokens/s', 'usage.stepHint': 'DSH session stats: model wall time per step, time to first token, and decode speed', 'overview.live': 'Live',
|
|
5
|
+
'models.preview': 'Candidates under saved policy (not actual calls)', 'models.blocked': 'Blocked: no allowed model', 'models.unassigned': 'Unassigned', 'models.refreshPreview': 'Policy saved. Refresh to load updated candidates.',
|
|
6
|
+
'evidence.title': 'Session model records', 'evidence.hint': 'Only non-inherited session records. A request header does not prove success; an assistant response does not prove task completion.',
|
|
7
|
+
'evidence.request-header': 'Recorded request configuration', 'evidence.assistant-message': 'Recorded assistant response', 'evidence.empty': 'No verifiable records',
|
|
8
|
+
'models.help': 'Switch a model off to disable it, or exclude by prefix. Settings are global: saving applies to every capability-team session (including new ones) from its next request; in-flight requests are unaffected. Catalog presence does not verify a call.',
|
|
9
|
+
'models.enabled': 'Enable', 'models.disabledBadge': 'Disabled', 'models.tierCount': '{n} · {d} disabled', 'models.dirty': '{n} unsaved changes', 'models.reset': 'Discard',
|
|
10
|
+
'models.filter': 'Filter models or roles…', 'models.noMatch': 'No matching models', 'models.orphans': 'Disabled models outside the catalog', 'models.unused': 'Not used by any role',
|
|
11
|
+
'evidence.short.request-header': 'Request', 'evidence.short.assistant-message': 'Response', 'logs.thisSession': 'This session', 'logs.count': '{n} records', 'logs.interrupted': 'Interrupted',
|
|
12
|
+
'roles.fallbackList': 'Fallbacks: {list}',
|
|
13
|
+
'roles.editOnly': 'Edits only {list}', 'roles.noEdit': 'No file edits', 'roles.noShell': 'No commands', 'roles.preset': 'DSH sandbox {name}', 'roles.current': 'Now {route}', 'roles.liveModel': 'Model of the latest request (live)', 'logs.live': 'Live: model of each member\'s latest request', 'logs.steps': '{n} steps', 'roles.deny': 'Denied: {list}', 'roles.accessHint': 'Enforced by a tool guard', 'roles.whenToUse': 'Use when: {text}', 'roles.maxTokens': 'Budget {n} per session', 'roles.longContext': '≥{n} uses {route}', 'roles.planFirst': 'Plan approval before changes',
|
|
14
|
+
'workflow.mode': 'Mode', 'workflow.mode.enforce': 'Enforce', 'workflow.mode.remind': 'Remind only', 'workflow.mode.off': 'Off', 'workflow.analysisBudget': 'Read-only steps before dispatch', 'workflow.directBudget': 'Lead direct-action limit',
|
|
15
|
+
'workflow.freeTools': 'Free-model tools', 'workflow.freeModels': 'Free-model order', 'workflow.analysisTools': 'Analysis tools', 'workflow.coordinationTools': 'Coordination tools', 'workflow.allFree': 'All free models in catalog', 'workflow.times': '{n}',
|
|
16
|
+
'workflow.fileLimits': 'File rules', 'workflow.fileLimits.value': 'Source ≤{source} lines · tests ≤{test} · whole read ≤{read} · report ≤{report} chars', 'workflow.fileLimits.off': 'Off',
|
|
17
|
+
'workflow.tokens': 'Token rules', 'workflow.tokens.value': 'Compact idle members above {ratio}% · trim command/search output over {chars} chars',
|
|
18
|
+
'confirm.habit': 'Your usual choice {n}/{of}', 'confirm.failing': 'Failed {n}× recently', 'confirm.primaryFailing': 'Model {route} failed {n}× recently; consider another one.', 'confirm.habitSettled': 'You chose this the last 3 times; consider "Save as project default".', 'plan.boardScope': 'writes {list}', 'plan.boardAfter': 'after {list}', 'workflow.enforceWriteScopes': 'Write scopes', 'workflow.enforceWriteScopes.on': 'Enforced (edits outside are refused)', 'workflow.enforceWriteScopes.off': 'Advisory', 'cards.prefs': 'Model preferences', 'cards.prefs.summary': 'Learned preferences for {n} capabilities', 'cards.prefs.cleared': 'Learned preferences cleared',
|
|
19
|
+
'picker.sameTier': 'Same-tier recommendations', 'confirm.crossTier': 'Cross-tier', 'confirm.crossTierFallback': 'Cross-tier: used when failing over', 'confirm.crossTierTaskOnly': 'Cross-tier selections apply to this task only',
|
|
20
|
+
'confirm.expand': 'Show more', 'confirm.collapse': 'Show less', 'picker.search': 'Type to search models…', 'picker.count': '{n} of {total} models', 'picker.empty': 'No matching models', 'picker.noProvider': 'Other',
|
|
21
|
+
'cards.memorySearch': 'Memory search', 'cards.memorySearch.summary': '"{q}" · {n} · {mode}', 'cards.memory.mode.hybrid': 'text + vector', 'cards.memory.mode.text': 'text only', 'cards.memoryWrite': 'Save memory', 'cards.memoryWrite.saved': 'Saved', 'cards.memoryWrite.merged': 'Merged into an existing memory', 'cards.memory.kind.handoff': 'Handoff', 'cards.memory.kind.result': 'Result', 'cards.memory.kind.pitfall': 'Pitfall', 'cards.memory.kind.decision': 'Decision', 'cards.memory.kind.note': 'Note',
|
|
22
|
+
'usage.avgPrompt': 'Avg input per step {n}', 'usage.cacheShare': 'Cache reads {p}%', 'usage.heavyContext': 'Large context per step; consider rotating the session', 'usage.contextHint': 'Average input per step = (uncached input + cache reads + cache writes) ÷ steps. Higher means more context is resent every step.',
|
|
23
|
+
'cards.handoff': 'Handoff', 'cards.handoff.summary': '{name} handed off · {n} open tasks', 'cards.handoff.diff': 'Code changes', 'cards.handoff.test': 'Last test run', 'cards.rotate': 'Session rotation', 'cards.rotate.summary': '{from} → {to}',
|
|
24
|
+
'workflow.confirmDispatch': 'Dispatch confirmation', 'workflow.confirmDispatch.always': 'Always', 'workflow.confirmDispatch.on-change': 'First time and on model changes', 'workflow.confirmDispatch.never': 'Never', 'workflow.rotation': 'Session rotation', 'workflow.rotation.value': 'Remind after {soft} compactions, rotate after {hard} · context ≥{ratio}% · ≥{turns} turns',
|
|
25
|
+
'cards.catalog': 'Model catalog', 'cards.catalog.summary': '{n} models · {p} providers', 'cards.catalog.errors': 'Providers that failed to load', 'cards.budget': 'Task step budget', 'cards.override': 'Temporary model', 'cards.lease.role': 'Member', 'cards.lease.status': 'Status', 'cards.lease.judgment': 'Judgment', 'cards.lease.steps': 'Steps', 'cards.lease.ends': 'Expires', 'cards.lease.endReason': 'End reason',
|
|
26
|
+
'cards.export': 'Export team template', 'cards.export.summary': '{n} roles · {c} capabilities', 'cards.search': 'Web search', 'cards.search.summary': '"{q}" · {n} results', 'cards.fetch': 'Web page',
|
|
27
|
+
'plan.fallbacks': 'Fallbacks: {list}', 'confirm.title': 'Confirm dispatch', 'confirm.hint': 'Check each role\'s model and fallbacks. Nothing is dispatched until you confirm; you can edit them here.', 'confirm.primary': 'Model', 'confirm.fallbacks': 'Fallbacks', 'confirm.noFallbacks': 'No fallbacks', 'confirm.addFallback': 'Add fallback…', 'confirm.max': 'Up to {n} fallbacks', 'confirm.up': 'Move up', 'confirm.down': 'Move down', 'confirm.remove': 'Remove',
|
|
28
|
+
'confirm.scope': 'Apply to', 'confirm.scope.task': 'This task only', 'confirm.scope.project': 'Save as project default', 'confirm.scope.projectHint': 'Changes the model of capability {list}; every role using it is affected.', 'confirm.ok': 'Confirm dispatch', 'confirm.cancel': 'Cancel', 'confirm.loading': 'Loading the pending dispatch…', 'confirm.sent': 'Confirmed. Dispatching.', 'confirm.cancelled': 'Dispatch cancelled.', 'confirm.stale': 'This confirmation request is no longer valid (the plugin may have reloaded or it timed out). Interrupt this turn and dispatch again.',
|
|
29
|
+
'confirm.error.conflict': 'Available models changed. Refreshed; please confirm again.', 'confirm.error.invalid': 'Invalid model choice:', 'confirm.error.other': 'Could not submit. Try again.', 'confirm.confirmedBy': 'Confirmed by you',
|
|
30
|
+
'models.primary': 'Primary', 'models.fallback': 'Fallback', 'models.save': 'Save globally', 'models.saving': 'Saving…', 'models.saved': 'Saved globally; every session uses it from its next request.',
|
|
31
|
+
'tier.high': 'Flagship', 'tier.upper': 'Advanced', 'tier.medium': 'Balanced', 'tier.low': 'Lightweight', 'tier.unknown': 'Unclassified',
|
|
32
|
+
'state.running': 'Running',
|
|
33
|
+
'state.failed': 'Failed',
|
|
34
|
+
'state.stopped': 'Stopped',
|
|
35
|
+
'action.inspect': 'Inspect',
|
|
36
|
+
'plan.title': 'Dispatch plan',
|
|
37
|
+
'plan.analysis': 'Analysis',
|
|
38
|
+
'plan.reason': 'Reason',
|
|
39
|
+
'plan.assignments': 'Assignments',
|
|
40
|
+
'plan.next': 'Next step',
|
|
41
|
+
'plan.budget': 'Up to {n} direct actions this turn',
|
|
42
|
+
'plan.unlimited': 'You confirmed the Lead does this itself; no direct-action cap this turn',
|
|
43
|
+
'direct.title': 'Let the Lead do this itself?', 'direct.hint': 'Allowing removes the step limit for this turn. It returns with your next message. File rules and permissions stay on.', 'direct.allow': 'Allow', 'direct.deny': 'Do not allow', 'direct.loading': 'Loading the pending request…', 'direct.sent': 'Allowed. The Lead continues.', 'direct.cancelled': 'Refused. The step limit stays on.', 'direct.stale': 'This confirmation request is no longer valid (the plugin may have reloaded or it timed out). Interrupt this turn and try again.', 'direct.native': 'This confirmation moved to the pop-up question box. Answer it there.', 'confirm.native': 'This dispatch confirmation moved to the pop-up question box. Answer it there.', 'confirm.docked': 'Waiting for you: the confirmation panel is open above the input box below.',
|
|
44
|
+
'mode.delegate': 'Delegate',
|
|
45
|
+
'mode.free': 'Free model',
|
|
46
|
+
'mode.direct': 'Lead handles',
|
|
47
|
+
'free.title': 'Free-model task',
|
|
48
|
+
'free.prompt': 'Handed over',
|
|
49
|
+
'free.result': 'Result',
|
|
50
|
+
'free.model': 'Model',
|
|
51
|
+
'free.tools': 'Tools',
|
|
52
|
+
'free.task': 'Board task',
|
|
53
|
+
'free.calls': '{n} tool calls',
|
|
54
|
+
'free.changed': 'Changed files',
|
|
55
|
+
'free.changedCount': '{n} files changed',
|
|
56
|
+
'free.skipped': 'Skipped (unavailable)',
|
|
57
|
+
'tools.none': 'Text only',
|
|
58
|
+
'tools.read': 'Read files',
|
|
59
|
+
'tools.write': 'Read & write files',
|
|
60
|
+
'team.readTitle': 'Team configuration',
|
|
61
|
+
'team.saveTitle': 'Save team configuration',
|
|
62
|
+
'team.summary': '{name} · revision {rev} · {n} roles',
|
|
63
|
+
'team.saved': 'Saved · revision {rev}',
|
|
64
|
+
'team.roles': 'Roles',
|
|
65
|
+
'team.unassigned': 'Unassigned (request blocked)',
|
|
66
|
+
'overview.title': 'Team overview', 'overview.hint': 'Read this session’s state without model calls or configuration changes.', 'overview.empty': 'Team configuration not loaded yet.',
|
|
67
|
+
'overview.ready': 'Ready', 'overview.notMounted': 'Not mounted', 'overview.abnormal': 'Needs attention', 'overview.preset': 'Preset', 'overview.missingTools': 'Missing tools', 'overview.details': 'Activation details',
|
|
68
|
+
'overview.revision': 'revision {rev}', 'overview.updated': 'updated {time}', 'overview.statRoles': 'Roles', 'overview.firstLoad': 'Load team configuration', 'overview.logNote': 'Live status is pushed by the host and is not logged; Refresh runs a command that leaves one entry in the conversation.', 'overview.statWorking': 'Working',
|
|
69
|
+
'live.title': 'Team board', 'live.runningCount': '{n} working', 'live.polling': 'Live push', 'live.running': 'Working', 'live.idle': 'Idle', 'live.inactive': 'Not started', 'live.provisioning': 'Starting', 'live.failed': 'Failed',
|
|
70
|
+
'live.noTask': 'No task', 'live.open': 'Open this teammate\'s session', 'live.busyNoTask': 'Handling a message…', 'live.liveModel': 'Model of the latest actual request (plugin usage record)', 'live.configModel': 'Configured primary (no recorded request yet)',
|
|
71
|
+
'live.lastRequest': 'last request', 'live.fallback': 'fallback', 'live.notInConfig': 'not in config', 'live.configTag': 'config', 'live.leadPick': 'Model picked in the conversation (no recorded request yet)', 'live.routeWarn': '⚠ not configured', 'live.routeWarnHint': 'The model actually requested is neither the primary nor a fallback of this role; check the routing or config',
|
|
72
|
+
'models.prefixTitle': 'Exclude by prefix', 'models.prefixPlaceholder': 'Prefix, e.g. @cf/, provider-a/or/, grok-imagine', 'models.prefixAdd': 'Exclude',
|
|
73
|
+
'models.prefixPreview': '{rule} excludes {n} models: {list}', 'models.prefixInvalid': 'At least 2 characters, no spaces or inner *', 'models.prefixExists': 'Rule already exists',
|
|
74
|
+
'models.prefixHelp': 'A prefix matches both "provider/model" and the bare model id; rules persist and also exclude models added later. Takes effect after saving.',
|
|
75
|
+
'models.ruleCount': '{n}', 'models.ruleRemove': 'Remove rule {rule}', 'models.byRule': 'Rule {rule}',
|
|
76
|
+
'models.tiers': 'Model tiers', 'models.allTiers': 'All', 'models.more': 'Show more ({n} left)', 'overview.statModels': 'Models', 'overview.statDisabled': 'Disabled', 'overview.statBlocked': 'Blocked roles',
|
|
77
|
+
'overview.refresh': 'Refresh', 'overview.loading': 'Loading…',
|
|
78
|
+
'overview.policy': 'Workflow configuration', 'overview.noData': 'No team snapshot for this session. Check activation; existing sessions do not switch presets automatically.',
|
|
79
|
+
'team.fallbacks': '{n} same-tier fallbacks',
|
|
80
|
+
'team.cooling': 'Cooling down',
|
|
81
|
+
'team.project': 'Project',
|
|
82
|
+
'usage.asOf': 'as of {time}',
|
|
83
|
+
'usage.unknown': 'Unknown',
|
|
84
|
+
'usage.partialLow': 'may be partial',
|
|
85
|
+
'subagent.notice': 'This is a teammate session. Please view the full team view from the Lead session.',
|
|
86
|
+
'subagent.currentMember': 'Current member: {name} ({role})',
|
|
87
|
+
'subagent.openLead': 'Open Lead session',
|
|
88
|
+
'roleview.viewOverview': 'View team overview',
|
|
89
|
+
'roleview.backToRole': 'Back to role view',
|
|
90
|
+
'roleview.myTasks': 'My Tasks',
|
|
91
|
+
'roleview.noTasks': 'No tasks assigned to me',
|
|
92
|
+
'roleview.activity': 'Current Activity',
|
|
93
|
+
'roleview.noActivity': 'No activity recorded yet',
|
|
94
|
+
'roleview.modelAndPerms': 'Model & Permissions',
|
|
95
|
+
'roleview.taskControl': 'Task Control',
|
|
96
|
+
'roleview.usage': 'My usage',
|
|
97
|
+
'roleview.noUsage': 'No usage recorded yet',
|
|
98
|
+
'roleview.artifacts': 'My artifacts',
|
|
99
|
+
'roleview.noArtifacts': 'No artifacts yet',
|
|
100
|
+
'roleview.logs': 'My logs',
|
|
101
|
+
'roleview.noLogs': 'No logs recorded yet',
|
|
102
|
+
'subtabs.team': 'Team members',
|
|
103
|
+
'subtabs.models': 'Model allocation',
|
|
104
|
+
'subtabs.runtime': 'Runtime status',
|
|
105
|
+
'runtime.noNotices': 'No runtime notices',
|
|
106
|
+
'subagent.unresolved': 'Could not resolve the Lead session; the team view is hidden.',
|
|
107
|
+
'error.tabCrashed': 'This tab encountered a rendering error and was safely isolated.',
|
|
108
|
+
'theme.title': 'Team Theme',
|
|
109
|
+
'theme.current': 'Current theme: {name}',
|
|
110
|
+
'theme.scopeDesc': 'Prompts that only rename or change themes do not alter models or permissions; the Lead proposes changes in chat and saves only after you approve the diff in the confirmation modal. Importing a template may simultaneously modify roles, workflows, and permissions—please inspect the diff carefully. Status quotes and badge aliases are built-in static assets and do not automatically change with themes.',
|
|
111
|
+
'theme.howToChange': 'How to change theme',
|
|
112
|
+
'theme.chatInstruction': 'Send a prompt to the Lead in chat to adjust via the project-role-theme skill:',
|
|
113
|
+
'theme.promptWestern': 'Rename the team to a Western fantasy theme',
|
|
114
|
+
'theme.promptOutlaws': 'Rename the team to a Water Margin theme',
|
|
115
|
+
'theme.promptSciFi': 'Rename the team to a Cyberpunk Sci-Fi theme',
|
|
116
|
+
'theme.promptCopy': 'Copy prompt',
|
|
117
|
+
'theme.promptCopied': 'Copied',
|
|
118
|
+
'theme.promptManual': 'Copy failed, please select and copy the text manually',
|
|
119
|
+
'theme.templateInstruction': 'Or export/import team templates in the Lead session (via capability_team_export / capability_team_import):',
|
|
120
|
+
'theme.templateDesc': 'Export templates to backup roles & capabilities; import templates to batch replace roster & jobs.',
|
|
121
|
+
'output': 'Raw output',
|
|
122
|
+
'live.openBtn': 'Open session',
|
|
123
|
+
'live.contextPressure': 'Context',
|
|
124
|
+
'live.contextUnknown': 'Unknown',
|
|
125
|
+
'live.budgetTitle': 'Budget',
|
|
126
|
+
'live.taskDeps': 'Task dependencies',
|
|
127
|
+
'live.longestChain': 'Longest dependency chain',
|
|
128
|
+
'live.noDeps': 'No task dependencies',
|
|
129
|
+
'live.bubbleRunning': 'Running',
|
|
130
|
+
'live.bubbleWaiting': 'Waiting',
|
|
131
|
+
'live.quote.sun-quan': 'United we stand for Eastern Wu.',
|
|
132
|
+
'live.quote.zhuge-liang': 'Strategizing within the tent to win afar.',
|
|
133
|
+
'live.quote.lv-bu': 'Halberd ready, awaiting orders!',
|
|
134
|
+
'live.quote.diao-chan': 'A spark of grace, blooming anew.',
|
|
135
|
+
'live.quote.zhao-yun': 'Fearless and steadfast, spear in hand!',
|
|
136
|
+
'live.quote.chen-lin': 'Words like arrows, prose with purpose.',
|
|
137
|
+
'live.quote.zhou-yu': 'Calm in command, triumphant in peace.',
|
|
138
|
+
'live.quote.default': 'Ready and resting, awaiting orders.',
|
|
139
|
+
'model.grade.legendary': 'Legendary Gold',
|
|
140
|
+
'model.grade.epic': 'Epic Purple',
|
|
141
|
+
'model.grade.rare': 'Rare Blue',
|
|
142
|
+
'model.grade.cloth': 'Cloth',
|
|
143
|
+
'version.unsupported': 'Version unsupported (schemaVersion: 1 required)',
|
|
144
|
+
'common.unknown': 'Unknown',
|
|
145
|
+
'common.listSep': ', ',
|
|
146
|
+
'runtime.title': 'Runtime & Failover',
|
|
147
|
+
'runtime.restarted': 'Runtime restarted',
|
|
148
|
+
'runtime.snapshotLag': 'Snapshot, may lag behind',
|
|
149
|
+
'runtime.cooling': 'Cooling {s}s',
|
|
150
|
+
'runtime.switched': 'Route switched {from} → {to} (reason: {reason}{detail})',
|
|
151
|
+
'runtime.reason.failover': 'failover',
|
|
152
|
+
'runtime.reason.long-context': 'long-context',
|
|
153
|
+
'runtime.unavailable': 'Runtime failover service unavailable',
|
|
154
|
+
'runtime.noSwitches': 'No route switch records',
|
|
155
|
+
'activity.tool': 'Tool: {tool}',
|
|
156
|
+
'activity.processing': 'Processing',
|
|
157
|
+
'activity.parallel': '{n} parallel tools',
|
|
158
|
+
'activity.unsettled': 'Historic unclosed task',
|
|
159
|
+
'activity.recent': 'Recent activities ({n})',
|
|
160
|
+
'nav.artifacts': 'Artifacts',
|
|
161
|
+
'artifacts.title': 'Deliverables & Artifacts',
|
|
162
|
+
'artifacts.empty': 'No deliverables yet',
|
|
163
|
+
'artifacts.allRoles': 'All roles',
|
|
164
|
+
'artifacts.openDesktop': 'Open',
|
|
165
|
+
'artifacts.openFail': 'Failed to open',
|
|
166
|
+
'artifacts.changes': 'Session changes',
|
|
167
|
+
'artifacts.noChanges': 'No file change records',
|
|
168
|
+
'artifacts.diffOversized': 'Diff too large (>1MiB), view in host panel',
|
|
169
|
+
'artifacts.baselineInvalid': 'Baseline expired',
|
|
170
|
+
'artifacts.diffEmpty': 'No diff content',
|
|
171
|
+
'nav.report': 'Report',
|
|
172
|
+
'report.title': 'Team Battle Report',
|
|
173
|
+
'report.window': 'Observation window: {start} to {end} (span: {span}, idle included)',
|
|
174
|
+
'report.wallTime': 'Person-turn wall time: {time}',
|
|
175
|
+
'report.turnsSteps': 'Total turns: {turns} · Total steps: {steps}',
|
|
176
|
+
'report.tokensTotal': 'Total budget tokens: {total}',
|
|
177
|
+
'report.tokensIo': 'Input: {in} · Output: {out} · Cache write: {cw}',
|
|
178
|
+
'report.unknownMembers': 'Usage unknown for these members, excluded from the totals: {list}',
|
|
179
|
+
'report.cacheRead': 'Cache read (listed separately): {cr}',
|
|
180
|
+
'report.mutations': 'Board mutations: {n}',
|
|
181
|
+
'report.sectionOwn': 'Session execution metrics',
|
|
182
|
+
'report.hostRetries': 'Host retries started: {n}',
|
|
183
|
+
'report.failedTurns': 'Failed turns: {n}',
|
|
184
|
+
'report.msgAccepted': 'Message tool accepted: {n}',
|
|
185
|
+
'report.sectionRuntime': 'Runtime failover metrics (since runtime start)',
|
|
186
|
+
'report.requestFailures': 'Request failures: {n}',
|
|
187
|
+
'report.pluginRetries': 'Plugin retries: {n}',
|
|
188
|
+
'report.failoverSwitches': 'Failover switches: {n}',
|
|
189
|
+
'report.longContextSwitches': 'Long-context switches: {n}',
|
|
190
|
+
'report.def.title': 'Metric definitions',
|
|
191
|
+
'report.def.wallTime': 'Person-turn wall time: sum of all completed turn durations across members.',
|
|
192
|
+
'report.def.tokensTotal': 'Budget tokens (excl. cache reads): uncached input + cache write + output. Cache reads are listed apart and may still incur costs, not equal to final billing amount.',
|
|
193
|
+
'report.def.cacheRead': 'Cache read: prompt tokens read from KV cache, listed separately and may still incur costs, not counted towards budget.',
|
|
194
|
+
'report.def.mutations': 'Board mutations: count of board edits issued by the Lead session.',
|
|
195
|
+
'report.def.hostRetries': 'Host retries started: times host initiated retries upon request errors.',
|
|
196
|
+
'report.def.failedTurns': 'Failed turns: count of member turns that encountered errors or interruptions.',
|
|
197
|
+
'report.def.msgAccepted': 'Message tool accepted: internal send_message calls successfully received.',
|
|
198
|
+
'report.def.requestFailures': 'Request failures: underlying model request failures recorded by runtime.',
|
|
199
|
+
'report.def.pluginRetries': 'Plugin retries: model retries automatically triggered by the failover plugin.',
|
|
200
|
+
'report.def.failoverSwitches': 'Failover switches: automatic switches to fallback models on failure.',
|
|
201
|
+
'report.def.longContextSwitches': 'Long-context switches: switches triggered when entering/leaving long context.',
|
|
202
|
+
'control.title': 'Task control',
|
|
203
|
+
'control.toggle': 'Task control',
|
|
204
|
+
'control.lease.ended': 'Lease ended',
|
|
205
|
+
'control.lease.status.armed': 'Armed',
|
|
206
|
+
'control.lease.status.running': 'Running',
|
|
207
|
+
'control.lease.status.ended': 'Ended',
|
|
208
|
+
'control.steps.label': 'Steps {used} / {est}',
|
|
209
|
+
'control.steps.disclaimer': 'Not a quality rating; each step/start counts as one step',
|
|
210
|
+
'control.steps.unqualified': 'Exceeded the estimated steps',
|
|
211
|
+
'control.steps.warning': 'Approaching the estimated steps',
|
|
212
|
+
'control.override.title': 'Temporary model',
|
|
213
|
+
'control.override.badge': '{from} → {to}',
|
|
214
|
+
'control.override.none': 'No temporary model set',
|
|
215
|
+
'control.override.tier': 'Tier {tier}',
|
|
216
|
+
'control.override.expiresAt': 'Expires {time}',
|
|
217
|
+
'control.override.autoRestore': 'Auto-restores to the configured model on idle, completion, or timeout',
|
|
218
|
+
'control.override.pauseLongContext': 'Long-context switching is paused while the override is active',
|
|
219
|
+
'control.override.nextRequest': 'Takes effect from the next request',
|
|
220
|
+
'control.override.setAction': 'Set temporary model',
|
|
221
|
+
'control.override.restoreAction': 'Restore configured model',
|
|
222
|
+
'control.override.pick': 'Pick a candidate',
|
|
223
|
+
'control.override.pickHint': 'Candidates come only from the backend catalog; free-text is not allowed',
|
|
224
|
+
'control.override.noCandidates': 'No candidates available',
|
|
225
|
+
'control.override.reason': 'Reason (optional)',
|
|
226
|
+
'control.override.confirm.title': 'Confirm setting a temporary model',
|
|
227
|
+
'control.override.confirm.member': 'Member: {name}',
|
|
228
|
+
'control.override.confirm.change': '{from} → {to} ({tier})',
|
|
229
|
+
'control.override.confirm.cost': 'This may change the billing rate and will invalidate the current cache',
|
|
230
|
+
'control.override.confirm.restore': 'Auto-restores on idle, completion, or timeout; takes effect from the next request',
|
|
231
|
+
'control.override.confirm.ok': 'Confirm',
|
|
232
|
+
'control.override.confirm.cancel': 'Cancel',
|
|
233
|
+
'control.budget.title': 'Start budget',
|
|
234
|
+
'control.budget.startAction': 'Start counting',
|
|
235
|
+
'control.budget.complexity': 'Complexity',
|
|
236
|
+
'control.budget.complexity.simple': 'Simple', 'control.budget.complexity.complex': 'Complex',
|
|
237
|
+
'control.budget.complexity.low': 'Low',
|
|
238
|
+
'control.budget.complexity.medium': 'Medium',
|
|
239
|
+
'control.budget.complexity.high': 'High',
|
|
240
|
+
'control.budget.timeoutSeconds': 'Timeout (seconds)',
|
|
241
|
+
'control.action.end': 'End lease',
|
|
242
|
+
'control.audit.title': 'Recent actions',
|
|
243
|
+
'control.audit.empty': 'No records',
|
|
244
|
+
'control.error.badRequest': 'The request was malformed',
|
|
245
|
+
'control.error.forbidden': 'Not permitted to perform this action',
|
|
246
|
+
'control.error.notFound': 'Lease or role not found',
|
|
247
|
+
'control.error.conflict': 'The state has changed; please re-confirm and try again',
|
|
248
|
+
'control.error.invalid': 'Validation failed',
|
|
249
|
+
'control.error.unavailable': 'Service unavailable; please retry later',
|
|
250
|
+
'control.error.unknown': 'The action failed',
|
|
251
|
+
'control.error.network': 'The network request failed',
|
|
252
|
+
'control.error.reconfirm': 'Please review the latest state and confirm again.',
|
|
253
|
+
'control.pending': 'Working…',
|
|
254
|
+
'list.more': 'More ({n} remaining)',
|
|
255
|
+
'list.collapse': 'Collapse',
|
|
256
|
+
'stage.title': 'Pixel office', 'stage.summary': '{n} / {m} seated', 'stage.collapse': 'Collapse office', 'stage.expand': 'Expand office',
|
|
257
|
+
'stage.open': 'Open session', 'stage.empty': 'No team yet. Teammates take their seats once you send the first request.',
|
|
258
|
+
'stage.detail': 'Member details', 'stage.detailClose': 'Hide details', 'stage.detailHint': 'Click a character or its name plate in the office to see its model, context, cooldown and task controls',
|
|
259
|
+
'stage.parallel': '{n} parallel',
|
|
260
|
+
'stage.act.thinking': 'Thinking', 'stage.act.thinkingBubble': 'Thinking…', 'stage.act.reading': 'Reading', 'stage.act.writing': 'Writing',
|
|
261
|
+
'stage.act.terminal': 'Running a command', 'stage.act.searching': 'Searching', 'stage.act.browsing': 'Browsing', 'stage.act.messaging': 'Messaging',
|
|
262
|
+
'stage.act.board': 'Updating the board', 'stage.act.waiting': 'Waiting for teammates', 'stage.act.working': 'Using a tool', 'stage.act.failed': 'Failed',
|
|
263
|
+
'stage.act.failedBubble': 'Something failed; needs attention', 'stage.act.arriving': 'Taking a seat…', 'stage.act.idle': 'Idle', 'stage.act.offline': 'Not started',
|
|
264
|
+
'stage.act.doneBubble': 'Task done!',
|
|
265
|
+
};
|