omp-onlyne 0.0.0-stage → 0.2.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/AGENTS.sample.md +27 -0
- package/LICENSE +21 -0
- package/README.md +140 -2
- package/index.ts +55 -0
- package/package.json +62 -5
- package/src/acquire.ts +182 -0
- package/src/binding.ts +132 -0
- package/src/bridge-text.ts +145 -0
- package/src/config.ts +332 -0
- package/src/decider-text.ts +438 -0
- package/src/decider.ts +2233 -0
- package/src/drafts.ts +57 -0
- package/src/handshake.ts +291 -0
- package/src/host-text.ts +92 -0
- package/src/messages.ts +427 -0
- package/src/node.ts +139 -0
- package/src/resources.ts +36 -0
- package/src/runtime.ts +676 -0
- package/src/store.ts +189 -0
- package/src/tern.ts +66 -0
- package/src/todo-native.ts +230 -0
- package/src/todo.ts +896 -0
- package/src/tool-text.ts +167 -0
- package/src/tool.ts +342 -0
- package/src/types.ts +150 -0
- package/src/ui/bootstrap-text.ts +125 -0
- package/src/ui/bootstrap.ts +363 -0
- package/src/ui/command-text.ts +38 -0
- package/src/ui/format.ts +56 -0
- package/src/ui/index.ts +156 -0
- package/src/ui/mail-message.ts +263 -0
- package/src/ui/status.ts +213 -0
- package/src/ui/viewer-text.ts +309 -0
- package/src/ui/viewer.ts +1403 -0
- package/src/urls-text.ts +304 -0
- package/src/urls.ts +1488 -0
package/src/urls-text.ts
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import type { Catalog } from "@onlyne/node-host/i18n";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Every user-visible string the `onlyne://` renderers emit, in English and
|
|
5
|
+
* Simplified Chinese. Route paths, node/thread/resource identifiers and library
|
|
6
|
+
* state values stay verbatim; only labels, headings, prompts and errors live here.
|
|
7
|
+
*/
|
|
8
|
+
export const en = {
|
|
9
|
+
notConfigured: "Onlyne is not configured for this project.",
|
|
10
|
+
malformedEncoding: "Malformed percent-encoding in onlyne://{path}. onlyne:// lists the views.",
|
|
11
|
+
routeShape: "{shape}. onlyne:// lists the views.",
|
|
12
|
+
unknownRoute: "Unknown onlyne:// route {host}. onlyne:// lists the available views.",
|
|
13
|
+
privateSession: "onlyne://{view} is private and needs a calling OMP session.",
|
|
14
|
+
mainSessionOnly: "onlyne://{view} is private to the main OMP session; subagents and anonymous callers cannot read it.",
|
|
15
|
+
|
|
16
|
+
rootTitle: "# Onlyne · {node}",
|
|
17
|
+
rootRegion: "Region: {region}",
|
|
18
|
+
rootEndpoint: "Endpoint: {endpoint}",
|
|
19
|
+
rootDomain: "Domain: {domains}",
|
|
20
|
+
rootDomainNone: "none active",
|
|
21
|
+
rootDomainUnavailable: "Domain: unavailable ({message})",
|
|
22
|
+
rootPrivateViews: "Private views need a calling OMP session: onlyne://threads, onlyne://inbox, onlyne://contexts, onlyne://outbound, onlyne://conversations.",
|
|
23
|
+
rootResourceViews: "Resource views need the main OMP session: onlyne://resources.",
|
|
24
|
+
rootContexts: "Execution contexts: {count}",
|
|
25
|
+
rootContextsHeld: "Contexts held by {agent}: {count}",
|
|
26
|
+
rootContextRow: "- `{alias}` · {state} · {summary}{thread}",
|
|
27
|
+
rootNoContexts: "No execution contexts.",
|
|
28
|
+
rootThreads: "Threads: {count}",
|
|
29
|
+
rootThreadRow: "- **{title}** `{key}` · {state} · next seq {next}",
|
|
30
|
+
rootNoThreads: "No threads.",
|
|
31
|
+
rootJoinedThreads: "Joined threads (read-only): {count}",
|
|
32
|
+
rootThreadJoinedRow: "- **{title}** `{key}` · read-only · last seq {last}",
|
|
33
|
+
rootViews: "Views: onlyne://neighbors, onlyne://threads, onlyne://inbox, onlyne://contexts, onlyne://outbound, onlyne://conversations",
|
|
34
|
+
rootViewsResources: "Views: onlyne://neighbors, onlyne://threads, onlyne://inbox, onlyne://contexts, onlyne://outbound, onlyne://conversations, onlyne://resources",
|
|
35
|
+
rootConversation: "Conversation: onlyne://conversations/<encoded-sender>/<encoded-id> · message: onlyne://messages/<encoded-sender>/<encoded-id>",
|
|
36
|
+
rootCollection: "Collection views take ?page_size=1..100 (or ?limit=) and ?cursor=; onlyne://conversations also takes ?thread=<node>/<id> and ?message=<node>/<id>.",
|
|
37
|
+
|
|
38
|
+
threadsTitle: "# Threads · {node}",
|
|
39
|
+
threadRow: "- **{title}** `{key}` · {state} · next seq {next} · {count} messages",
|
|
40
|
+
threadRowJoined: "- **{title}** `{key}` · read-only · last seq {last} · {count} messages",
|
|
41
|
+
threadJoinedLinks: " thread {thread} · read-only, hosted by {owner}",
|
|
42
|
+
joinedThreadTitle: "Thread {id} (hosted by {owner})",
|
|
43
|
+
threadNoHistory: " no local history yet · thread {url}",
|
|
44
|
+
threadLatest: " latest {direction} · {at} · {snippet}",
|
|
45
|
+
threadLinks: " thread {thread} · latest {latest} · conversation {conversation}",
|
|
46
|
+
noThreads: "No threads.",
|
|
47
|
+
threadSeqShape: "onlyne://threads/<alias>/messages/<seq> takes exactly one seq",
|
|
48
|
+
threadAliasShape: "onlyne://threads/<alias> has no further routes",
|
|
49
|
+
noMessageAt: "No message at {key}/{seq}. onlyne:// lists the views.",
|
|
50
|
+
threadTitle: "# {title}",
|
|
51
|
+
threadMeta: "Thread `{key}` · {state} · next seq {next} · {count} messages",
|
|
52
|
+
threadReadOnly: "Read-only: `{owner}` hosts this thread; its state and members belong to the owner.",
|
|
53
|
+
threadStateUnknown: "state unknown",
|
|
54
|
+
ownerUnreachable: "the owner {owner} did not answer",
|
|
55
|
+
ownerHeld: "owner record",
|
|
56
|
+
members: "## Members",
|
|
57
|
+
memberRow: "- `{peer}` · {state} · {access}",
|
|
58
|
+
noAccess: "no access",
|
|
59
|
+
noMembers: "No membership records.",
|
|
60
|
+
unavailable: "unavailable: {message}",
|
|
61
|
+
messages: "## Messages",
|
|
62
|
+
noMessages: "No messages.",
|
|
63
|
+
contextsTitle: "# Execution contexts · {node}",
|
|
64
|
+
contextRow: "- `{alias}` · {state} · {summary}{thread}{agent}{source}",
|
|
65
|
+
noContexts: "No registered contexts.",
|
|
66
|
+
|
|
67
|
+
neighborsTitle: "# Neighbors · {node}",
|
|
68
|
+
neighborRow: "- {node} · {region} · {verified} · handshake: {phase}{seen}{fp}",
|
|
69
|
+
noRegion: "no region",
|
|
70
|
+
verified: "verified",
|
|
71
|
+
unverified: "unverified",
|
|
72
|
+
noNeighbors: "No neighbor nodes have been observed.",
|
|
73
|
+
noNeighborNamed: "No neighbor is named {node}. onlyne:// lists the views.",
|
|
74
|
+
neighborsShape: "onlyne://neighbors/<node-id> has no further routes",
|
|
75
|
+
contextsShape: "onlyne://contexts has no subroutes",
|
|
76
|
+
inboxShape: "onlyne://inbox has no subroutes",
|
|
77
|
+
|
|
78
|
+
inboxTitle: "# Inbox · {node}",
|
|
79
|
+
noAttention: "No attention items.",
|
|
80
|
+
attentionRow: "- `{key}/{seq}` · {direction} · {author} · {at} · {status}",
|
|
81
|
+
acked: "acked",
|
|
82
|
+
pending: "pending",
|
|
83
|
+
expired: "expired",
|
|
84
|
+
noTime: "no time",
|
|
85
|
+
messageLinks: " message {message} · conversation {conversation} · entry {entry}",
|
|
86
|
+
|
|
87
|
+
outboundTitle: "# Outbound · {node}",
|
|
88
|
+
noOutbound: "No outbound records.",
|
|
89
|
+
outboundShape: "onlyne://outbound/<message-id> has no further routes",
|
|
90
|
+
noOutboundNamed: "No outbound record is named {id}. onlyne:// lists the views.",
|
|
91
|
+
outboundRow: "- `{id}` · out → {endpoint} · {at} · {status}{reply}",
|
|
92
|
+
outboundLinks: " message {message} · conversation {conversation}",
|
|
93
|
+
|
|
94
|
+
conversationsTitle: "# Conversations · {node}",
|
|
95
|
+
conversationRow: "- **{title}** `{key}` · {count} messages · last {at}",
|
|
96
|
+
conversationUnknown: "unknown",
|
|
97
|
+
conversationOnly: " conversation {url}",
|
|
98
|
+
conversationLatest: " latest {direction} · {at} · {snippet}",
|
|
99
|
+
conversationLinks: " conversation {conversation} · message {message}",
|
|
100
|
+
conversationThreads: " threads {threads}",
|
|
101
|
+
noConversations: "No conversations.",
|
|
102
|
+
conversationsShape: "onlyne://conversations/<encoded-sender>/<encoded-id> takes exactly two segments",
|
|
103
|
+
messagesShape: "onlyne://messages/<encoded-sender>/<encoded-id> takes exactly two segments",
|
|
104
|
+
conversationMeta: "Conversation `{key}` · {count} messages · last {at}",
|
|
105
|
+
threadsList: "Threads: {threads}",
|
|
106
|
+
pairShape: "?{label}= must be <node>/<id>",
|
|
107
|
+
noThreadNamed: "No thread is named {alias}. onlyne:// lists the views.",
|
|
108
|
+
manyThreadsNamed: "More than one thread is named {alias}.",
|
|
109
|
+
noThreadSlice: "This session holds no read slice for thread {alias}.",
|
|
110
|
+
noConversationSlice: "This session holds no read slice for conversation {key}.",
|
|
111
|
+
|
|
112
|
+
pageSizeDisagree: "?page_size and ?limit disagree; pass one",
|
|
113
|
+
pageSizeRange: "?page_size must be an integer from 1 to {max}",
|
|
114
|
+
invalidCursor: "Invalid ?cursor; start the list again without one",
|
|
115
|
+
foreignCursor: "This ?cursor belongs to another view, caller or query; start the list again without one",
|
|
116
|
+
next: "Next: {url}",
|
|
117
|
+
endOfList: "End of list.",
|
|
118
|
+
paginationCap: "onlyne:// pagination did not terminate within the page cap.",
|
|
119
|
+
|
|
120
|
+
historyRow: "{prefix}{direction} · {sender} · {at} · {status}",
|
|
121
|
+
historySeqPrefix: "[{seq}] ",
|
|
122
|
+
consumptionSuffix: "consumption {value}",
|
|
123
|
+
guaranteeSuffix: "guarantee {value}",
|
|
124
|
+
errorSuffix: "error {code}",
|
|
125
|
+
replyTo: " → reply to {ref} · {url}",
|
|
126
|
+
historyLinks: " message {message} · conversation {conversation}{entry}",
|
|
127
|
+
suffixThread: " · {key}",
|
|
128
|
+
suffixAgent: " · {agent}",
|
|
129
|
+
suffixSource: " · source {ref}",
|
|
130
|
+
suffixLastSeen: " · last seen {at}",
|
|
131
|
+
suffixFingerprint: " · fp {fp}",
|
|
132
|
+
suffixReply: " · reply to {ref}",
|
|
133
|
+
suffixEntry: " · entry {url}",
|
|
134
|
+
suffixExpired: " · expired",
|
|
135
|
+
|
|
136
|
+
resourcesTitle: "# Resources · {node}",
|
|
137
|
+
resourceOwnerError: "- unavailable: {code} · {message}",
|
|
138
|
+
noResources: "No resources.",
|
|
139
|
+
resourceRow: "- `{id}` · {kind} · operations: {operations} · binding: {handler} @ {cursor} · revision: {revision} · events: {event_seq}",
|
|
140
|
+
noOperations: "none",
|
|
141
|
+
resourceLinks: " resource {detail} · log {log} · operations {operations}",
|
|
142
|
+
resourceLogTitle: "# Log · {resource}",
|
|
143
|
+
noEvents: "No events.",
|
|
144
|
+
eventRow: "- `{id}` · source: {source} · at: {at} · expires: {expires}{expired}",
|
|
145
|
+
eventLink: " event {url}",
|
|
146
|
+
resourceOperationsTitle: "# Operations · {resource}",
|
|
147
|
+
noOperationRecords: "No operations.",
|
|
148
|
+
operationRow: "- `{id}` · {operation} · state: {state} · actor: {actor} · accepted: {at}",
|
|
149
|
+
statusLink: " status {url}",
|
|
150
|
+
resourceShape: "onlyne://resources/<owner>/<id> takes describe, log or operations routes",
|
|
151
|
+
resourceLogShape: "onlyne://resources/<owner>/<id>/log takes an optional event id",
|
|
152
|
+
resourceOperationsShape: "onlyne://resources/<owner>/<id>/operations takes an optional operation id",
|
|
153
|
+
resourceCursorOneOwner: "A resource cursor names exactly one owner; use onlyne://resources/<owner>?cursor=...",
|
|
154
|
+
} as const;
|
|
155
|
+
|
|
156
|
+
export const zh: Record<keyof typeof en, string> = {
|
|
157
|
+
notConfigured: "Onlyne 尚未为此项目配置。",
|
|
158
|
+
malformedEncoding: "onlyne://{path} 中的百分号编码无效。onlyne:// 列出了所有视图。",
|
|
159
|
+
routeShape: "{shape}。onlyne:// 列出了所有视图。",
|
|
160
|
+
unknownRoute: "未知的 onlyne:// 路由 {host}。onlyne:// 列出了可用视图。",
|
|
161
|
+
privateSession: "onlyne://{view} 是私有视图,需要一个调用中的 OMP 会话。",
|
|
162
|
+
mainSessionOnly: "onlyne://{view} 仅限主 OMP 会话读取;子代理和匿名调用者不可用。",
|
|
163
|
+
|
|
164
|
+
rootTitle: "# Onlyne · {node}",
|
|
165
|
+
rootRegion: "区域:{region}",
|
|
166
|
+
rootEndpoint: "端点:{endpoint}",
|
|
167
|
+
rootDomain: "域:{domains}",
|
|
168
|
+
rootDomainNone: "无活动域",
|
|
169
|
+
rootDomainUnavailable: "域:不可用({message})",
|
|
170
|
+
rootPrivateViews: "私有视图需要一个调用中的 OMP 会话:onlyne://threads、onlyne://inbox、onlyne://contexts、onlyne://outbound、onlyne://conversations。",
|
|
171
|
+
rootResourceViews: "资源视图需要主 OMP 会话:onlyne://resources。",
|
|
172
|
+
rootContexts: "执行上下文:{count}",
|
|
173
|
+
rootContextsHeld: "{agent} 持有的上下文:{count}",
|
|
174
|
+
rootContextRow: "- `{alias}` · {state} · {summary}{thread}",
|
|
175
|
+
rootNoContexts: "没有执行上下文。",
|
|
176
|
+
rootThreads: "线程:{count}",
|
|
177
|
+
rootThreadRow: "- **{title}** `{key}` · {state} · 下一序号 {next}",
|
|
178
|
+
rootNoThreads: "没有线程。",
|
|
179
|
+
rootJoinedThreads: "受邀线程(只读):{count}",
|
|
180
|
+
rootThreadJoinedRow: "- **{title}** `{key}` · 只读 · 最后序号 {last}",
|
|
181
|
+
rootViews: "视图:onlyne://neighbors、onlyne://threads、onlyne://inbox、onlyne://contexts、onlyne://outbound、onlyne://conversations",
|
|
182
|
+
rootViewsResources: "视图:onlyne://neighbors、onlyne://threads、onlyne://inbox、onlyne://contexts、onlyne://outbound、onlyne://conversations、onlyne://resources",
|
|
183
|
+
rootConversation: "对话:onlyne://conversations/<encoded-sender>/<encoded-id> · 消息:onlyne://messages/<encoded-sender>/<encoded-id>",
|
|
184
|
+
rootCollection: "集合视图接受 ?page_size=1..100(或 ?limit=)与 ?cursor=;onlyne://conversations 还接受 ?thread=<node>/<id> 和 ?message=<node>/<id>。",
|
|
185
|
+
|
|
186
|
+
threadsTitle: "# 线程 · {node}",
|
|
187
|
+
threadRow: "- **{title}** `{key}` · {state} · 下一序号 {next} · {count} 条消息",
|
|
188
|
+
threadRowJoined: "- **{title}** `{key}` · 只读 · 最后序号 {last} · {count} 条消息",
|
|
189
|
+
threadJoinedLinks: " 线程 {thread} · 只读,由 {owner} 托管",
|
|
190
|
+
joinedThreadTitle: "线程 {id}(由 {owner} 托管)",
|
|
191
|
+
threadNoHistory: " 尚无本地历史 · 线程 {url}",
|
|
192
|
+
threadLatest: " 最新 {direction} · {at} · {snippet}",
|
|
193
|
+
threadLinks: " 线程 {thread} · 最新 {latest} · 对话 {conversation}",
|
|
194
|
+
noThreads: "没有线程。",
|
|
195
|
+
threadSeqShape: "onlyne://threads/<alias>/messages/<seq> 只接受一个序号",
|
|
196
|
+
threadAliasShape: "onlyne://threads/<alias> 没有更多子路由",
|
|
197
|
+
noMessageAt: "{key}/{seq} 处没有消息。onlyne:// 列出了所有视图。",
|
|
198
|
+
threadTitle: "# {title}",
|
|
199
|
+
threadMeta: "线程 `{key}` · {state} · 下一序号 {next} · {count} 条消息",
|
|
200
|
+
threadReadOnly: "只读:该线程由 `{owner}` 托管,状态与成员属于所有者。",
|
|
201
|
+
threadStateUnknown: "状态未知",
|
|
202
|
+
ownerUnreachable: "所有者 {owner} 没有应答",
|
|
203
|
+
ownerHeld: "所有者记录",
|
|
204
|
+
members: "## 成员",
|
|
205
|
+
memberRow: "- `{peer}` · {state} · {access}",
|
|
206
|
+
noAccess: "无访问权限",
|
|
207
|
+
noMembers: "没有成员记录。",
|
|
208
|
+
unavailable: "不可用:{message}",
|
|
209
|
+
messages: "## 消息",
|
|
210
|
+
noMessages: "没有消息。",
|
|
211
|
+
contextsTitle: "# 执行上下文 · {node}",
|
|
212
|
+
contextRow: "- `{alias}` · {state} · {summary}{thread}{agent}{source}",
|
|
213
|
+
noContexts: "没有已注册的上下文。",
|
|
214
|
+
|
|
215
|
+
neighborsTitle: "# 邻居 · {node}",
|
|
216
|
+
neighborRow: "- {node} · {region} · {verified} · 握手:{phase}{seen}{fp}",
|
|
217
|
+
noRegion: "无区域",
|
|
218
|
+
verified: "已验证",
|
|
219
|
+
unverified: "未验证",
|
|
220
|
+
noNeighbors: "尚未观察到邻居节点。",
|
|
221
|
+
noNeighborNamed: "没有名为 {node} 的邻居。onlyne:// 列出了所有视图。",
|
|
222
|
+
neighborsShape: "onlyne://neighbors/<node-id> 没有更多子路由",
|
|
223
|
+
contextsShape: "onlyne://contexts 没有子路由",
|
|
224
|
+
inboxShape: "onlyne://inbox 没有子路由",
|
|
225
|
+
|
|
226
|
+
inboxTitle: "# 收件箱 · {node}",
|
|
227
|
+
noAttention: "没有待关注项。",
|
|
228
|
+
attentionRow: "- `{key}/{seq}` · {direction} · {author} · {at} · {status}",
|
|
229
|
+
acked: "已确认",
|
|
230
|
+
pending: "待处理",
|
|
231
|
+
expired: "已过期",
|
|
232
|
+
noTime: "无时间",
|
|
233
|
+
messageLinks: " 消息 {message} · 对话 {conversation} · 条目 {entry}",
|
|
234
|
+
|
|
235
|
+
outboundTitle: "# 出站 · {node}",
|
|
236
|
+
noOutbound: "没有出站记录。",
|
|
237
|
+
outboundShape: "onlyne://outbound/<message-id> 没有更多子路由",
|
|
238
|
+
noOutboundNamed: "没有名为 {id} 的出站记录。onlyne:// 列出了所有视图。",
|
|
239
|
+
outboundRow: "- `{id}` · 发出 → {endpoint} · {at} · {status}{reply}",
|
|
240
|
+
outboundLinks: " 消息 {message} · 对话 {conversation}",
|
|
241
|
+
|
|
242
|
+
conversationsTitle: "# 对话 · {node}",
|
|
243
|
+
conversationRow: "- **{title}** `{key}` · {count} 条消息 · 最后 {at}",
|
|
244
|
+
conversationUnknown: "未知",
|
|
245
|
+
conversationOnly: " 对话 {url}",
|
|
246
|
+
conversationLatest: " 最新 {direction} · {at} · {snippet}",
|
|
247
|
+
conversationLinks: " 对话 {conversation} · 消息 {message}",
|
|
248
|
+
conversationThreads: " 线程 {threads}",
|
|
249
|
+
noConversations: "没有对话。",
|
|
250
|
+
conversationsShape: "onlyne://conversations/<encoded-sender>/<encoded-id> 需要恰好两段",
|
|
251
|
+
messagesShape: "onlyne://messages/<encoded-sender>/<encoded-id> 需要恰好两段",
|
|
252
|
+
conversationMeta: "对话 `{key}` · {count} 条消息 · 最后 {at}",
|
|
253
|
+
threadsList: "线程:{threads}",
|
|
254
|
+
pairShape: "?{label}= 必须为 <node>/<id>",
|
|
255
|
+
noThreadNamed: "没有名为 {alias} 的线程。onlyne:// 列出了所有视图。",
|
|
256
|
+
manyThreadsNamed: "有多个名为 {alias} 的线程。",
|
|
257
|
+
noThreadSlice: "本会话没有线程 {alias} 的读取切片。",
|
|
258
|
+
noConversationSlice: "本会话没有对话 {key} 的读取切片。",
|
|
259
|
+
|
|
260
|
+
pageSizeDisagree: "?page_size 与 ?limit 不一致;只传其中一个",
|
|
261
|
+
pageSizeRange: "?page_size 必须为 1 到 {max} 的整数",
|
|
262
|
+
invalidCursor: "?cursor 无效;不带游标重新开始列表",
|
|
263
|
+
foreignCursor: "该 ?cursor 属于其他视图、调用者或查询;不带游标重新开始列表",
|
|
264
|
+
next: "下一页:{url}",
|
|
265
|
+
endOfList: "列表结束。",
|
|
266
|
+
paginationCap: "onlyne:// 分页在页数上限内未结束。",
|
|
267
|
+
|
|
268
|
+
historyRow: "{prefix}{direction} · {sender} · {at} · {status}",
|
|
269
|
+
historySeqPrefix: "[{seq}] ",
|
|
270
|
+
consumptionSuffix: "消费 {value}",
|
|
271
|
+
guaranteeSuffix: "保证 {value}",
|
|
272
|
+
errorSuffix: "错误 {code}",
|
|
273
|
+
replyTo: " → 回复 {ref} · {url}",
|
|
274
|
+
historyLinks: " 消息 {message} · 对话 {conversation}{entry}",
|
|
275
|
+
suffixThread: " · {key}",
|
|
276
|
+
suffixAgent: " · {agent}",
|
|
277
|
+
suffixSource: " · 来源 {ref}",
|
|
278
|
+
suffixLastSeen: " · 最后出现 {at}",
|
|
279
|
+
suffixFingerprint: " · 指纹 {fp}",
|
|
280
|
+
suffixReply: " · 回复 {ref}",
|
|
281
|
+
suffixEntry: " · 条目 {url}",
|
|
282
|
+
suffixExpired: " · 已过期",
|
|
283
|
+
|
|
284
|
+
resourcesTitle: "# 资源 · {node}",
|
|
285
|
+
resourceOwnerError: "- 不可用:{code} · {message}",
|
|
286
|
+
noResources: "没有资源。",
|
|
287
|
+
resourceRow: "- `{id}` · {kind} · 操作:{operations} · 绑定:{handler} @ {cursor} · 修订:{revision} · 事件:{event_seq}",
|
|
288
|
+
noOperations: "无",
|
|
289
|
+
resourceLinks: " 资源 {detail} · 日志 {log} · 操作 {operations}",
|
|
290
|
+
resourceLogTitle: "# 日志 · {resource}",
|
|
291
|
+
noEvents: "没有事件。",
|
|
292
|
+
eventRow: "- `{id}` · 来源:{source} · 时间:{at} · 过期:{expires}{expired}",
|
|
293
|
+
eventLink: " 事件 {url}",
|
|
294
|
+
resourceOperationsTitle: "# 操作 · {resource}",
|
|
295
|
+
noOperationRecords: "没有操作记录。",
|
|
296
|
+
operationRow: "- `{id}` · {operation} · 状态:{state} · 执行者:{actor} · 受理:{at}",
|
|
297
|
+
statusLink: " 状态 {url}",
|
|
298
|
+
resourceShape: "onlyne://resources/<owner>/<id> 接受 describe、log 或 operations 路由",
|
|
299
|
+
resourceLogShape: "onlyne://resources/<owner>/<id>/log 可带一个事件 id",
|
|
300
|
+
resourceOperationsShape: "onlyne://resources/<owner>/<id>/operations 可带一个操作 id",
|
|
301
|
+
resourceCursorOneOwner: "资源游标只能指向一个所有者;请使用 onlyne://resources/<owner>?cursor=...",
|
|
302
|
+
};
|
|
303
|
+
|
|
304
|
+
export const urlsText: Catalog<keyof typeof en> = { en, "zh-CN": zh };
|