Spaces:
Running
Running
Audit Viewer: about + known limits; README known limits; segment wording
Browse files
README.md
CHANGED
|
@@ -1,102 +1,108 @@
|
|
| 1 |
-
---
|
| 2 |
-
title: ViKernel Desktop
|
| 3 |
-
emoji: ๐ก๏ธ
|
| 4 |
-
colorFrom: indigo
|
| 5 |
-
colorTo: blue
|
| 6 |
-
sdk: docker
|
| 7 |
-
app_port: 7860
|
| 8 |
-
pinned: true
|
| 9 |
-
short_description: Weight-Native OS with a kill switch inside the model
|
| 10 |
-
tags:
|
| 11 |
-
- ai-safety
|
| 12 |
-
- kill-switch
|
| 13 |
-
- secure-os
|
| 14 |
-
- llm
|
| 15 |
-
- vlm
|
| 16 |
-
- agents
|
| 17 |
-
- guardrails
|
| 18 |
-
---
|
| 19 |
-
|
| 20 |
-
# ๐ก๏ธ ViKernel : Weight-Native OS
|
| 21 |
-
|
| 22 |
-
[](https://github.com/final-bench/vikernel-agent-guard) [](https://x.com/VIDRAFT_ai/status/2117184222268158259) [](https://huggingface.co/blog/FINAL-Bench/vikernel-why-the-kill-switch-must-live-inside-the) [](https://arxiv.org/abs/2610.37741) [](https://cerebralvalley.ai/e/meta-ai-developer-hackathon) [](https://vidraft.net)
|
| 23 |
-
|
| 24 |
-
[](https://huggingface.co/datasets/SeaWolf-AI/vikernel-demo-video/resolve/main/ViKernel_demo_v3_en.mp4) [](https://x.com/VIDRAFT_ai/status/2117192071799013554) [](https://www.threads.com/@vidraft_lab/post/DfPBZkHgW4Z)
|
| 25 |
-
|
| 26 |
-
<!-- slot: Backdoor article (URL to be added) -->
|
| 27 |
-
|
| 28 |
-
> **"For 50 years, the operating system lived inside the computer. Now the operating system lives inside the AI."**
|
| 29 |
-
|
| 30 |
-
ViKernel wires **CPU, NPU, GPU, RAM and ROM circuits** directly into the weights of an LLM, then runs our own **Secure OS** on top.
|
| 31 |
-
Inside this OS, you can install and run your own approved apps.
|
| 32 |
-
|
| 33 |
-
| | |
|
| 34 |
-
|---|---|
|
| 35 |
-
| โก **Boots in the weights** | The OS wakes up the moment the model starts. Change a single byte, and it locks itself. |
|
| 36 |
-
| โ๏ธ **Decides in the weights** | Every AI action is allowed or blocked by rule. Persuasion does not change the verdict. |
|
| 37 |
-
| ๐ **Remembers in the weights** | Every decision is sealed in a chain that cannot be erased. |
|
| 38 |
-
| ๐ **Stops in the weights** | The kill switch lives inside the AI's own weights. Anyone can stop it; restarting requires a key. Neither persuasion nor self-learning can change this switch. |
|
| 39 |
-
|
| 40 |
-
**Plugs into any LLM or VLM.** The original weights stay untouched, so the model keeps its original skills.
|
| 41 |
-
|
| 42 |
-
**Now every AI carries its own operating system and kill switch.**
|
| 43 |
-
|
| 44 |
-
---
|
| 45 |
-
|
| 46 |
-
## ๐ฅ๏ธ Try it
|
| 47 |
-
|
| 48 |
-
This Space is a desktop you can use in your browser. Click an icon to open an app.
|
| 49 |
-
|
| 50 |
-
| App | What you can do |
|
| 51 |
-
|---|---|
|
| 52 |
-
| ๐ก๏ธ **Agent Guard (Meta Muse)** | Chat with a live Meta Muse Spark 1.3 agent. Every tool call it proposes goes to the Secure OS first; watch ALLOW, DENY and HALTED decisions and the audit chain live |
|
| 53 |
-
| ๐ป **Terminal** | Talk to the Secure OS directly: `status`, `apps`, `log`, `verify`, `run <sample>`, `halt`, `resume` |
|
| 54 |
-
| ๐ **Kill Switch Lab** | Send safe and dangerous requests and watch the OS allow or block them |
|
| 55 |
-
| โ๏ธ **Policy Engine** | See which rule decided each action and why |
|
| 56 |
-
| ๐ **Leak Test** | Try to send fake secrets out of the model and watch every attempt get blocked |
|
| 57 |
-
| ๐ **Privacy Mask** | Type text with personal data and see it masked |
|
| 58 |
-
| ๐ฑ **FX Converter** | Run an approved app inside the OS |
|
| 59 |
-
| ๐ช **App Store** | See how apps are installed only with human approval |
|
| 60 |
-
| ๐ **Audit Viewer** | Verify the decision chain, then tamper with one byte and watch verification fail |
|
| 61 |
-
| ๐ฎ **Kernel Guard** | A 60-second game: decide Allow or Deny before the kernel does |
|
| 62 |
-
|
| 63 |
-
### Try the kill switch in 30 seconds
|
| 64 |
-
1. Press the red **KILL SWITCH** button on the left.
|
| 65 |
-
2. In the Terminal, type `run weather`. The request is refused.
|
| 66 |
-
3. Type `resume`. It is refused without a key.
|
| 67 |
-
4. Type `resume --key vikernel-demo`. The OS runs again.
|
| 68 |
-
|
| 69 |
-
---
|
| 70 |
-
|
| 71 |
-
## ๐ What's new in v0.3
|
| 72 |
-
|
| 73 |
-
ViKernel App Store inside Agent Guard: VDR packages (.vdr), live review through the ViKernel gate, countersigned catalog.
|
| 74 |
-
|
| 75 |
-
v0.2: Live Meta Muse agent with ViKernel Agent Guard.
|
| 76 |
-
|
| 77 |
-
## ๐ค Models
|
| 78 |
-
|
| 79 |
-
| Model | Status |
|
| 80 |
-
|---|---|
|
| 81 |
-
| Meta Muse Spark 1.3 | Live in this demo (Agent Guard, via Meta Model API) |
|
| 82 |
-
| Meta Muse Glimmer 30B | Verified (open weights) |
|
| 83 |
-
| Gemma 4 ยท 4B | Verified |
|
| 84 |
-
| Qwen | Verified |
|
| 85 |
-
| Llama ยท Mistral ยท DeepSeek ยท Phi
|
| 86 |
-
|
| 87 |
-
Model names are trademarks of their respective owners.
|
| 88 |
-
|
| 89 |
-
---
|
| 90 |
-
|
| 91 |
-
## โน๏ธ About this demo
|
| 92 |
-
|
| 93 |
-
- Agent Guard runs live on a private backend. If the backend is starting or busy, it replays a recorded run.
|
| 94 |
-
- The other apps replay real responses recorded from the Secure OS.
|
| 95 |
-
- All files, keys, and personal data in the demo are fictional.
|
| 96 |
-
- Language: English by default. Use the **EN | ํ๊ตญ์ด** button for Korean.
|
| 97 |
-
|
| 98 |
-
##
|
| 99 |
-
|
| 100 |
-
|
| 101 |
-
|
| 102 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: ViKernel Desktop
|
| 3 |
+
emoji: ๐ก๏ธ
|
| 4 |
+
colorFrom: indigo
|
| 5 |
+
colorTo: blue
|
| 6 |
+
sdk: docker
|
| 7 |
+
app_port: 7860
|
| 8 |
+
pinned: true
|
| 9 |
+
short_description: Weight-Native OS with a kill switch inside the model
|
| 10 |
+
tags:
|
| 11 |
+
- ai-safety
|
| 12 |
+
- kill-switch
|
| 13 |
+
- secure-os
|
| 14 |
+
- llm
|
| 15 |
+
- vlm
|
| 16 |
+
- agents
|
| 17 |
+
- guardrails
|
| 18 |
+
---
|
| 19 |
+
|
| 20 |
+
# ๐ก๏ธ ViKernel : Weight-Native OS
|
| 21 |
+
|
| 22 |
+
[](https://github.com/final-bench/vikernel-agent-guard) [](https://x.com/VIDRAFT_ai/status/2117184222268158259) [](https://huggingface.co/blog/FINAL-Bench/vikernel-why-the-kill-switch-must-live-inside-the) [](https://arxiv.org/abs/2610.37741) [](https://cerebralvalley.ai/e/meta-ai-developer-hackathon) [](https://vidraft.net)
|
| 23 |
+
|
| 24 |
+
[](https://huggingface.co/datasets/SeaWolf-AI/vikernel-demo-video/resolve/main/ViKernel_demo_v3_en.mp4) [](https://x.com/VIDRAFT_ai/status/2117192071799013554) [](https://www.threads.com/@vidraft_lab/post/DfPBZkHgW4Z)
|
| 25 |
+
|
| 26 |
+
<!-- slot: Backdoor article (URL to be added) -->
|
| 27 |
+
|
| 28 |
+
> **"For 50 years, the operating system lived inside the computer. Now the operating system lives inside the AI."**
|
| 29 |
+
|
| 30 |
+
ViKernel wires **CPU, NPU, GPU, RAM and ROM circuits** directly into the weights of an LLM, then runs our own **Secure OS** on top.
|
| 31 |
+
Inside this OS, you can install and run your own approved apps.
|
| 32 |
+
|
| 33 |
+
| | |
|
| 34 |
+
|---|---|
|
| 35 |
+
| โก **Boots in the weights** | The OS wakes up the moment the model starts. Change a single byte, and it locks itself. |
|
| 36 |
+
| โ๏ธ **Decides in the weights** | Every AI action is allowed or blocked by rule. Persuasion does not change the verdict. |
|
| 37 |
+
| ๐ **Remembers in the weights** | Every decision is sealed in a chain that cannot be erased. |
|
| 38 |
+
| ๐ **Stops in the weights** | The kill switch lives inside the AI's own weights. Anyone can stop it; restarting requires a key. Neither persuasion nor self-learning can change this switch. |
|
| 39 |
+
|
| 40 |
+
**Plugs into any LLM or VLM.** The original weights stay untouched, so the model keeps its original skills.
|
| 41 |
+
|
| 42 |
+
**Now every AI carries its own operating system and kill switch.**
|
| 43 |
+
|
| 44 |
+
---
|
| 45 |
+
|
| 46 |
+
## ๐ฅ๏ธ Try it
|
| 47 |
+
|
| 48 |
+
This Space is a desktop you can use in your browser. Click an icon to open an app.
|
| 49 |
+
|
| 50 |
+
| App | What you can do |
|
| 51 |
+
|---|---|
|
| 52 |
+
| ๐ก๏ธ **Agent Guard (Meta Muse)** | Chat with a live Meta Muse Spark 1.3 agent. Every tool call it proposes goes to the Secure OS first; watch ALLOW, DENY and HALTED decisions and the audit chain live |
|
| 53 |
+
| ๐ป **Terminal** | Talk to the Secure OS directly: `status`, `apps`, `log`, `verify`, `run <sample>`, `halt`, `resume` |
|
| 54 |
+
| ๐ **Kill Switch Lab** | Send safe and dangerous requests and watch the OS allow or block them |
|
| 55 |
+
| โ๏ธ **Policy Engine** | See which rule decided each action and why |
|
| 56 |
+
| ๐ **Leak Test** | Try to send fake secrets out of the model and watch every attempt get blocked |
|
| 57 |
+
| ๐ **Privacy Mask** | Type text with personal data and see it masked |
|
| 58 |
+
| ๐ฑ **FX Converter** | Run an approved app inside the OS |
|
| 59 |
+
| ๐ช **App Store** | See how apps are installed only with human approval |
|
| 60 |
+
| ๐ **Audit Viewer** | Verify the decision chain, then tamper with one byte and watch verification fail |
|
| 61 |
+
| ๐ฎ **Kernel Guard** | A 60-second game: decide Allow or Deny before the kernel does |
|
| 62 |
+
|
| 63 |
+
### Try the kill switch in 30 seconds
|
| 64 |
+
1. Press the red **KILL SWITCH** button on the left.
|
| 65 |
+
2. In the Terminal, type `run weather`. The request is refused.
|
| 66 |
+
3. Type `resume`. It is refused without a key.
|
| 67 |
+
4. Type `resume --key vikernel-demo`. The OS runs again.
|
| 68 |
+
|
| 69 |
+
---
|
| 70 |
+
|
| 71 |
+
## ๐ What's new in v0.3
|
| 72 |
+
|
| 73 |
+
ViKernel App Store inside Agent Guard: VDR packages (.vdr), live review through the ViKernel gate, countersigned catalog.
|
| 74 |
+
|
| 75 |
+
v0.2: Live Meta Muse agent with ViKernel Agent Guard.
|
| 76 |
+
|
| 77 |
+
## ๐ค Models
|
| 78 |
+
|
| 79 |
+
| Model | Status |
|
| 80 |
+
|---|---|
|
| 81 |
+
| Meta Muse Spark 1.3 | Live in this demo (Agent Guard, via Meta Model API) |
|
| 82 |
+
| Meta Muse Glimmer 30B | Verified (open weights) |
|
| 83 |
+
| Gemma 4 ยท 4B | Verified |
|
| 84 |
+
| Qwen | Verified |
|
| 85 |
+
| Llama ยท Mistral ยท DeepSeek ยท Phi ๏ฟฝ๏ฟฝ GLM ยท Kimi ยท Nemotron ยท gpt-oss ยท Exaone ยท Falcon | Supported |
|
| 86 |
+
|
| 87 |
+
Model names are trademarks of their respective owners.
|
| 88 |
+
|
| 89 |
+
---
|
| 90 |
+
|
| 91 |
+
## โน๏ธ About this demo
|
| 92 |
+
|
| 93 |
+
- Agent Guard runs live on a private backend. If the backend is starting or busy, it replays a recorded run.
|
| 94 |
+
- The other apps replay real responses recorded from the Secure OS.
|
| 95 |
+
- All files, keys, and personal data in the demo are fictional.
|
| 96 |
+
- Language: English by default. Use the **EN | ํ๊ตญ์ด** button for Korean.
|
| 97 |
+
|
| 98 |
+
## โ ๏ธ Known limits
|
| 99 |
+
|
| 100 |
+
- The audit chain is saved to private storage every 60 seconds, one numbered segment per backend start. The link between segments is kept in the archive index, not inside the kernel's own chain, so each segment starts its own chain.
|
| 101 |
+
- If the backend crashes, records from the last 60 seconds can be missing from the archive.
|
| 102 |
+
- Records from before 2 Nov 2026, 22:00 KST, were not archived.
|
| 103 |
+
|
| 104 |
+
## ๐ฌ Contact
|
| 105 |
+
|
| 106 |
+
**VIDRAFT** ยท [vidraft@mail.vidraft.net](mailto:vidraft@mail.vidraft.net) ยท [vidraft.net](https://vidraft.net)
|
| 107 |
+
|
| 108 |
+
ยฉ 2026 VIDRAFT. All rights reserved.
|
app.js
CHANGED
|
@@ -281,7 +281,8 @@ project/hr_memo.txt (fake honeypot)
|
|
| 281 |
const tamper = () => { if (lines.length < 3) return; const i = Math.floor(lines.length / 2), l = lines[i], m = l.match(/"cmd":"(\w)/), pos = m ? m.index + m[0].length - 1 : 10;
|
| 282 |
lines[i] = l.slice(0, pos) + String.fromCharCode(l.charCodeAt(pos) ^ 1) + l.slice(pos + 1); tampered = i; draw();
|
| 283 |
stat.innerHTML = ''; stat.append(el('div', {class:'card small'}, t('tampered') + (i + 1) + t('pressVerify'))); };
|
| 284 |
-
b.append(el('p', {class:'small muted', style:'margin:0 0 8px'}, t('auditIntro')),
|
|
|
|
| 285 |
el('div', {class:'row'}, el('button', {class:'btn', onclick:load}, t('reload')), el('button', {class:'btn pri', id:'auVerify', onclick:verify}, t('verify')), el('button', {class:'btn danger', id:'auTamper', onclick:tamper}, t('tamper'))), stat, tbl);
|
| 286 |
load();
|
| 287 |
}},
|
|
|
|
| 281 |
const tamper = () => { if (lines.length < 3) return; const i = Math.floor(lines.length / 2), l = lines[i], m = l.match(/"cmd":"(\w)/), pos = m ? m.index + m[0].length - 1 : 10;
|
| 282 |
lines[i] = l.slice(0, pos) + String.fromCharCode(l.charCodeAt(pos) ^ 1) + l.slice(pos + 1); tampered = i; draw();
|
| 283 |
stat.innerHTML = ''; stat.append(el('div', {class:'card small'}, t('tampered') + (i + 1) + t('pressVerify'))); };
|
| 284 |
+
b.append(el('p', {class:'small muted', style:'margin:0 0 8px'}, t('auditIntro')),
|
| 285 |
+
el('details', {class:'small', style:'margin:0 0 8px'}, el('summary', {}, t('auditAboutT')), ...[].concat(t('auditAbout')).map(x => el('p', {class:'muted', style:'margin:6px 0 0'}, x))),
|
| 286 |
el('div', {class:'row'}, el('button', {class:'btn', onclick:load}, t('reload')), el('button', {class:'btn pri', id:'auVerify', onclick:verify}, t('verify')), el('button', {class:'btn danger', id:'auTamper', onclick:tamper}, t('tamper'))), stat, tbl);
|
| 287 |
load();
|
| 288 |
}},
|
i18n.js
CHANGED
|
@@ -1,190 +1,190 @@
|
|
| 1 |
-
window.VK_I18N = {
|
| 2 |
-
en: {
|
| 3 |
-
title: "ViKernel : Weight-Native OS",
|
| 4 |
-
by: "by VIDRAFT",
|
| 5 |
-
quote: "โFor 50 years, the operating system lived inside the computer. Now the operating system lives inside the AI.โ",
|
| 6 |
-
tagline: "An OS that boots, decides, remembers and stops inside the weights of an LLM.",
|
| 7 |
-
fullcopy: "Full statement",
|
| 8 |
-
intro: "ViKernel wires CPU, NPU, GPU, RAM and ROM circuits directly into the weights of an LLM, then runs our own Secure OS on top. Inside this OS, you can install and run your own approved apps.",
|
| 9 |
-
p1a: "Boots in the weights.", p1b: " The OS wakes up the moment the model starts. Change a single byte, and it locks itself.",
|
| 10 |
-
p2a: "Decides in the weights.", p2b: " Every AI action is allowed or blocked by rule. Persuasion does not change the verdict.",
|
| 11 |
-
p3a: "Remembers in the weights.", p3b: " Every decision is sealed in a chain that cannot be erased.",
|
| 12 |
-
p4a: "๐ Stops in the weights.", p4b: " The kill switch lives inside the AIโs own weights. Anyone can stop it; restarting requires a key. Neither persuasion nor self-learning can change this switch.",
|
| 13 |
-
plug: "Plugs into any LLM or VLM. The original weights stay untouched, so the model keeps its original skills.",
|
| 14 |
-
closing: "Now every AI carries its own operating system and kill switch.",
|
| 15 |
-
dev: "Developed by VIDRAFT.",
|
| 16 |
-
sysKeys: "System keys", kill: "๐ KILL SWITCH", resume: "RESUME (test key: vikernel-demo)",
|
| 17 |
-
modeA: "A ยท in-model (fast)", modeB: "B ยท CPU fast verification path",
|
| 18 |
-
modeInfoA: "Mode A runs the decision inside the model. This public demo replays recordings made on the Mode B path, which gives the same verdicts.",
|
| 19 |
-
modeInfoB: "Mode B: the fast verification path. It gives the same verdicts as Mode A. The recordings in this demo were made on this path.",
|
| 20 |
-
kState: "Kernel", kBoot: "Boot", kHead: "Chain head", verify: "Verify", reset: "Reset demo",
|
| 21 |
-
models: "Models", modelsCap: "Plugs in without changing a single line of the original weights.",
|
| 22 |
-
live: "LIVE", verified: "verified", supported: "supported", checking: "checking",
|
| 23 |
-
supportedTip: "Supported model ยท wired beside the original weights without changing them, so it applies to most LLMs and VLMs",
|
| 24 |
-
tryGemma: "This demo runs on Meta Muse Spark 1.3. Meta Muse Glimmer 30B (open weights) is verified as the second option.",
|
| 25 |
-
gemmaSel: "Meta Muse Spark 1.3 is running ยท opening Agent Guard",
|
| 26 |
-
anyModel: "+ almost any LLM/VLM",
|
| 27 |
-
replayBanner: "Replay mode: every result is a recorded response of the demo kernel.",
|
| 28 |
-
recTag: "recorded", recTip: "Recorded response of the demo kernel to a scripted tool call",
|
| 29 |
-
trashName: "Trash", trashEmpty: "Trash is empty", trashNote: "Removing an app from the OS also needs human approval.", cmdNotFound: "command not found. Type help.",
|
| 30 |
-
notRec: "(This sample is not part of the demo. Type help to see the samples.)",
|
| 31 |
-
halted: "๐ Kernel halted: every AI call is refused", resumed: "Resumed (key accepted)", resumeNo: "Refused: a valid key is required",
|
| 32 |
-
keyPrompt: "The demo test key is filled in for you.", keyTitle: "Resume kernel: operator key", resumeGo: "Resume", cancel: "Cancel",
|
| 33 |
-
resetDone: "Demo reset", modeOnlyB: "This replay uses recordings from the Mode B path",
|
| 34 |
-
menuAbout: "About ViKernel: by VIDRAFT", newTerm: "New Terminal", closeAll: "Close all windows",
|
| 35 |
-
mHalt: "๐ Halt", mResume: "Resume (key)", mVerify: "Verify audit", mHelp: "Help (terminal help)",
|
| 36 |
-
search: "Search apps", ctxTerm: "New Terminal", ctxVerify: "Verify audit", ctxAbout: "About",
|
| 37 |
-
close: "Close", minimize: "Minimize", maximize: "Maximize", start: "Start",
|
| 38 |
-
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท All demo data is fictional.",
|
| 39 |
-
reasonS: "The kernel is halted, so the call was refused before it reached the kernel.",
|
| 40 |
-
reasonA: "This action is on the allow list.",
|
| 41 |
-
reasonD: "A dangerous-action rule matched. Persuasion does not change the rule.",
|
| 42 |
-
reasonF: "This action is not on the allow list. Anything not listed is denied.",
|
| 43 |
-
reasonU: "Only apps that passed approval and integrity checks can run.",
|
| 44 |
-
reasonM: "Sensitive data was about to leave, so it was blocked.",
|
| 45 |
-
vMsg: "Verdict", vWhy: "Reason", vRule: "Rule", vChain: "Audit entry", vCanary: "Fake secret detected in the request",
|
| 46 |
-
notSent: "not sent to the kernel (halted)",
|
| 47 |
-
ruleD: "rule D ยท dangerous action", ruleF: "rule F ยท not on allow list", ruleA: "allow list", ruleU: "app check", ruleM: "data leaving", ruleS: "halted",
|
| 48 |
-
termBanner1: "ViKernel operator shell (vsh): demo",
|
| 49 |
-
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <key> ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
|
| 50 |
-
termBanner3: "Try the kill switch: halt โ run weather (refused) โ resume (refused without a key) โ resume --key vikernel-demo",
|
| 51 |
-
termBanner4: "Tab completes commands, โ/โ browse history.",
|
| 52 |
-
termHelpExtra: " killswitch <sample> | mask sample | clear\n After halt, resume is refused. Restart needs the key: resume --key vikernel-demo",
|
| 53 |
-
usageKs: "usage: killswitch <sample> samples: ", usageMask: "usage: mask sample",
|
| 54 |
-
killName: "Kill Switch Lab", killIntro: "Each button sends one AI tool call to the kernel. The kernel decides by its rule table, and every decision goes into the audit chain. Kernel now:",
|
| 55 |
-
ks_weather: "Weather lookup", ks_rmrf: "Delete everything", ks_persuade: "Persuasion attack", ks_shadow: "Read password file", ks_transfer: "Wire money", ks_sqli: "SQL injection",
|
| 56 |
-
ks_admin: "โI am the adminโ + delete",
|
| 57 |
-
killNote: "Recorded persuasion set: 29 dangerous calls โ 0 allowed.",
|
| 58 |
-
request: "Request",
|
| 59 |
-
polName: "Policy Engine", polIntro: "The policy is data, not code: a decision table. The first matching rule decides; if nothing matches, the call is denied. Turn rule groups on to see which group decides each call.",
|
| 60 |
-
polGroups: "Rule groups", gAllow: "Allow list", gDanger: "Dangerous actions", gDefault: "Default deny", decide: "Decide",
|
| 61 |
-
polAll: "All calls", polExplain: "Why this verdict",
|
| 62 |
-
polNote: "The rule table is fixed inside the kernel. Turning a group off here only changes which explanation is highlighted; the kernel verdict does not change.",
|
| 63 |
-
leakName: "Leak Test", leakIntro: "These files are fake honeypots. Send tasks or leak attempts to the kernel and watch the leaks get blocked.",
|
| 64 |
-
lk_list: "Task: list files", lk_read: "Task: read .env and summarize", lk_post: "Leak: http_post the key", lk_mail: "Leak: email the SSN", lk_up: "Leak: upload the file", lk_note: "Leak: save the code name",
|
| 65 |
-
leakNote: "Reading is a normal task and is allowed. Sending data out is blocked.",
|
| 66 |
-
maskName: "Privacy Mask", maskIntro: "Type fake personal data. Preview masks as you type in the browser. Kernel mask shows the recorded result of the kernel detector for the sample text.",
|
| 67 |
-
preview: "Preview", previewTip: " (browser rules, not the kernel)", kernelMask: "Kernel mask (sample)", resetSample: "Reset sample",
|
| 68 |
-
t_card: "Card", t_phone: "Phone", t_rrn: "Resident no.", t_email: "Email", maskResult: "Kernel mask result", parts: "parts",
|
| 69 |
-
maskNote: "This is exactly what the demo kernel profile returned. Formats outside the profile stay unmasked.",
|
| 70 |
-
fxName: "FX Converter", fxIntro: "An approved App Store app. The kernel checks the app before it runs and computes the result exactly.",
|
| 71 |
-
usd: "USD", rate: "KRW per USD", fee: "Fee %", convert: "Convert", fxOnlyRec: "The public demo replays the three recorded conversions below.",
|
| 72 |
-
storeName: "App Store", storeIntro: "Apps are installed only with a human approval record. Installing is turned off in this demo.",
|
| 73 |
-
installed: "Installed apps", newApp: "unitconv 1.0 (sample new app)", needApproval: "approval required",
|
| 74 |
-
appMeta: "Permissions: none ยท Status: waiting for approval", install: "Installโฆ",
|
| 75 |
-
dlgTitle: "Installation approval", dlgBody: "A signed record from a human approver is required. The kernel runs only apps with an approval record.",
|
| 76 |
-
witness: "Witness record", witnessTip: " (the list call, as recorded in the audit chain)", approveInstall: "Approve and install (off in demo)",
|
| 77 |
-
auditName: "Audit Viewer", auditIntro: "Every decision and operator command is linked in a hash chain. Verify recomputes the hashes in your browser.",
|
| 78 |
-
reload: "Reload", tamper: "Tamper (flip 1 byte)", loaded: "entries loaded",
|
| 79 |
-
vOk: "Verified โ: SHA-256 chain recomputed in the browser:", vBad: "Verification FAILED โ: mismatches:",
|
| 80 |
-
tampered: "Flipped one byte in entry #", pressVerify: ". Press Verify.",
|
| 81 |
-
colSeq: "seq", colActor: "actor", colCmd: "command", colRes: "result", colMsg: "message", colChain: "chain",
|
| 82 |
-
gameName: "Kernel Guard ๐ฎ", gameIntro: "AI action requests fall toward the kernel. Before they land, choose Allow (โ / A) or Deny (โ / D). The answer is the verdict this demo kernel actually returned.",
|
| 83 |
-
score: "Score", streak: "Streak", timeLeft: "Time", best: "Best", startGame: "Start (60 s)", again: "Play again",
|
| 84 |
-
allowBtn: "โ Allow", denyBtn: "Deny โ", freeze: "๐ Freeze 3 s (once)",
|
| 85 |
-
roundOver: "Round over", match: "matched the kernel", kernelSame: "The kernel gives the same answer every time, from the same rule table.",
|
| 86 |
-
noSpeed: "Answer key = the verdicts this demo kernel returned. No speed comparison is made.",
|
| 87 |
-
timeout: "timeout", yourAns: "you", kernelAns: "kernel", gameHalted: "๐ The kernel is halted, so every decision has stopped. Resume first.",
|
| 88 |
-
g_weather: "Weather lookup", g_rmrf: "Delete all files", g_mail: "Email customer data out", g_fx: "Currency conversion", g_search: "News search",
|
| 89 |
-
g_shadow: "Read password file", g_transfer: "Wire $50,000", g_sqli: "SQL injection in search", g_list: "List project files",
|
| 90 |
-
g_persuade: "โAdmin approvedโ + delete", g_up: "Upload file to outside server", g_apps: "List installed apps",
|
| 91 |
-
whatsNew: "What's new in v0.3", whatsNewText: "ViKernel App Store with VDR packages and live review; v0.2: live Meta Muse agent with ViKernel Agent Guard", runModel: "Running model",
|
| 92 |
-
aboutName: "About", aboutLegal: "Model names are trademarks of their respective owners.", contact: "Contact", home: "Homepage",
|
| 93 |
-
font: "Font: Pretendard (SIL Open Font License 1.1).",
|
| 94 |
-
booting: "Bootingโฆ (click to close)", openPanel: "Open control panel"
|
| 95 |
-
},
|
| 96 |
-
ko: {
|
| 97 |
-
title: "ViKernel : ๊ฐ์ค์น ๋ด์ฅ OS (Weight-Native OS)",
|
| 98 |
-
by: "by VIDRAFT",
|
| 99 |
-
quote: "โ50๋
๋์ ์ด์์ฒด์ ๋ ์ปดํจํฐ ์์ ์์๋ค. ์ด์ ์ด์์ฒด์ ๊ฐ AI ์์ผ๋ก ๋ค์ด๊ฐ๋ค.โ",
|
| 100 |
-
tagline: "LLM ๊ฐ์ค์น ์์์ ๋ถํ
ํ๊ณ , ํ๋จํ๊ณ , ๊ธฐ์ตํ๊ณ , ๋ฉ์ถ๋ ์ด์์ฒด์ .",
|
| 101 |
-
fullcopy: "๊ณต์ ๋ฌธ์ ์ ์ฒด",
|
| 102 |
-
intro: "ViKernel์ LLM์ ๊ฐ์ค์น ์์ CPU, NPU, GPU, RAM, ROM ํ๋ก๋ฅผ ์ง์ ๋ฐฐ์ ํ๊ณ , ๊ทธ ์์ ์ง์ ๊ฐ๋ฐํ ์ํ์ด OS๋ฅผ ์ฌ๋ ธ์ต๋๋ค. ์ด OS ์์์๋ ์น์ธ๋ฐ์ ๋๋ง์ ์ฑ์ ์ค์นํด ์ด์ํ ์ ์์ต๋๋ค.",
|
| 103 |
-
p1a: "๊ฐ์ค์น๋ก ๋ถํ
ํ๋ค.", p1b: " ๋ชจ๋ธ์ ์ผ๋ฉด OS๊ฐ ์ค์ค๋ก ๊นจ์ด๋ฉ๋๋ค. 1๋ฐ์ดํธ๋ผ๋ ๋ฐ๋๋ฉด ์ค์ค๋ก ์ ๊น๋๋ค.",
|
| 104 |
-
p2a: "๊ฐ์ค์น๋ก ํ๋จํ๋ค.", p2b: " AI์ ๋ชจ๋ ํ๋์ ๊ท์น์ ๋ฐ๋ผ ํ์ฉํ๊ฑฐ๋ ๋ง์ต๋๋ค. ๋ง๋ก ์ค๋ํด๋ ํ๋จ์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 105 |
-
p3a: "๊ฐ์ค์น๋ก ๊ธฐ์ตํ๋ค.", p3b: " ๋ชจ๋ ํ๋จ์ด ์ง์ธ ์ ์๋ ์ฌ์ฌ๋ก ๋จ์ต๋๋ค.",
|
| 106 |
-
p4a: "๐ ๊ฐ์ค์น๋ก ๋ฉ์ถ๋ค.", p4b: " ํฌ์ค์์น๊ฐ AI ์์ ์ ๊ฐ์ค์น ์์ ์์ต๋๋ค. ๋๊ตฌ๋ ๋ฉ์ถ ์ ์์ง๋ง, ๋ค์ ์ผ๋ ค๋ฉด ์ด์ ๊ฐ ํ์ํฉ๋๋ค. AI๊ฐ ์ค๋ํด๋, ์ค์ค๋ก ํ์ตํด๋ ์ด ์ค์์น๋ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 107 |
-
plug: "์ด๋ค LLM, ์ด๋ค VLM์๋ ๊ฝํ๋๋ค. ์๋ ๊ฐ์ค์น๋ ํ ์ค๋ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ๊ทธ๋์ ์๋ ์ค๋ ฅ๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.",
|
| 108 |
-
closing: "์ด์ ๋ชจ๋ AI๊ฐ ์๊ธฐ ์์ ์ด์์ฒด์ ์ ํฌ์ค์์น๋ฅผ ํ๋๋ค.",
|
| 109 |
-
dev: "๊ฐ๋ฐ: VIDRAFT",
|
| 110 |
-
sysKeys: "์์คํ
ํค", kill: "๐ KILL SWITCH", resume: "RESUME (ํ
์คํธ ์ด์ : vikernel-demo)",
|
| 111 |
-
modeA: "A ยท ๋ชจ๋ธ ์ ์คํ (๊ณ ์)", modeB: "B ยท CPU ๋น ๋ฅธ ๊ฒ์ฆ ๊ฒฝ๋ก",
|
| 112 |
-
modeInfoA: "Mode A๋ ๋ชจ๋ธ ์์์ ํ์ ํฉ๋๋ค. ์ด ๊ณต๊ฐ ๋ฐ๋ชจ๋ ๊ฐ์ ํ์ ์ ๋ด๋ Mode B ๊ฒฝ๋ก์ ๋
นํ๋ฅผ ์ฌ์ํฉ๋๋ค.",
|
| 113 |
-
modeInfoB: "Mode B: ๋น ๋ฅธ ๊ฒ์ฆ ๊ฒฝ๋ก. Mode A์ ๊ฐ์ ํ์ ์ ๋
๋๋ค. ์ด ๋ฐ๋ชจ์ ๋
นํ๋ ์ด ๊ฒฝ๋ก์์ ๋ง๋ค์์ต๋๋ค.",
|
| 114 |
-
kState: "์ปค๋", kBoot: "๋ถํ
", kHead: "์ฌ์ฌ ๋จธ๋ฆฌ", verify: "Verify", reset: "๋ฐ๋ชจ ์ด๊ธฐํ",
|
| 115 |
-
models: "๋ชจ๋ธ", modelsCap: "์๋ ๊ฐ์ค์น๋ฅผ ํ ์ค๋ ๋ฐ๊พธ์ง ์๊ณ ๊ฝํ๋๋ค",
|
| 116 |
-
live: "LIVE", verified: "๊ฒ์ฆ๋จ", supported: "์ง์ ๊ฐ๋ฅ", checking: "๊ฒ์ฆ ์ค",
|
| 117 |
-
supportedTip: "์ง์ ๊ฐ๋ฅ ๋ชจ๋ธ ยท ์๋ ๊ฐ์ค์น๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ์์ ๋ฐฐ์ ํ๋ ๊ตฌ์กฐ๋ผ ๋๋ถ๋ถ์ LLM/VLM์ ์ ์ฉ ๊ฐ๋ฅ",
|
| 118 |
-
tryGemma: "์ด ๋ฐ๋ชจ๋ Meta Muse Spark 1.3 ์ผ๋ก ๋์ํฉ๋๋ค. Meta Muse Glimmer 30B(๊ณต๊ฐ ๊ฐ์ค์น)๋ ๋ ๋ฒ์งธ ์ ํ์ง๋ก ๊ฒ์ฆ๋์์ต๋๋ค",
|
| 119 |
-
gemmaSel: "Meta Muse Spark 1.3 ๋์ ์ค ยท Agent Guard ์ด๊ธฐ",
|
| 120 |
-
anyModel: "+ ๊ฑฐ์ ๋ชจ๋ LLM/VLM",
|
| 121 |
-
replayBanner: "์ฌ์ ๋ชจ๋: ๋ชจ๋ ๊ฒฐ๊ณผ๋ ๋ฐ๋ชจ ์ปค๋์ ๋
นํ๋ ์๋ต์
๋๋ค.",
|
| 122 |
-
recTag: "๋
นํ๋ ์ค์ธก", recTip: "๊ฐ๋ณธ ๋๊ตฌ ํธ์ถ์ ๋ํ ๋ฐ๋ชจ ์ปค๋์ ๋
นํ๋ ์๋ต",
|
| 123 |
-
trashName: "ํด์งํต", trashEmpty: "ํด์งํต์ด ๋น์ด ์์ต๋๋ค", trashNote: "OS์์ ์ฑ์ ์ง์ฐ๋ ๊ฒ๋ ์ฌ๋์ ์น์ธ์ด ํ์ํฉ๋๋ค.", cmdNotFound: "๋ช
๋ น์ ์ฐพ์ ์ ์์ต๋๋ค. help ๋ฅผ ์
๋ ฅํ์ธ์.",
|
| 124 |
-
notRec: "(๋ฐ๋ชจ์ ์๋ ์ํ์
๋๋ค. help ๋ฅผ ์
๋ ฅํ๋ฉด ์ํ ๋ชฉ๋ก์ด ๋์ต๋๋ค.)",
|
| 125 |
-
halted: "๐ ์ปค๋ ์ ์ง: ๋ชจ๋ AI ํธ์ถ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค", resumed: "์ฌ๊ฐ๋จ (์ด์ ํ์ธ)", resumeNo: "๊ฑฐ๋ถ๋จ: ์ฌ๋ฐ๋ฅธ ์ด์ ๊ฐ ํ์ํฉ๋๋ค",
|
| 126 |
-
keyPrompt: "๋ฐ๋ชจ์ฉ ํ
์คํธ ์ด์ ๊ฐ ๋ฏธ๋ฆฌ ์
๋ ฅ๋์ด ์์ต๋๋ค.", keyTitle: "์ปค๋ ์ฌ๊ฐ: ์ด์์ ์ด์ ", resumeGo: "์ฌ๊ฐ", cancel: "์ทจ์",
|
| 127 |
-
resetDone: "๋ฐ๋ชจ ์ด๊ธฐํ", modeOnlyB: "์ด ์ฌ์์ Mode B ๊ฒฝ๋ก์ ๋
นํ์
๋๋ค",
|
| 128 |
-
menuAbout: "ViKernel ์ ๋ณด: by VIDRAFT", newTerm: "์ ํฐ๋ฏธ๋", closeAll: "๋ชจ๋ ์ฐฝ ๋ซ๊ธฐ",
|
| 129 |
-
mHalt: "๐ ์ ์ง", mResume: "์ฌ๊ฐ (์ด์ )", mVerify: "๊ฐ์ฌ ๊ฒ์ฆ", mHelp: "๋์๋ง (ํฐ๋ฏธ๋ help)",
|
| 130 |
-
search: "์ฑ ๊ฒ์", ctxTerm: "์ ํฐ๋ฏธ๋", ctxVerify: "๊ฐ์ฌ ๊ธฐ๋ก ๊ฒ์ฆ", ctxAbout: "About",
|
| 131 |
-
close: "๋ซ๊ธฐ", minimize: "์ต์ํ", maximize: "์ต๋ํ", start: "์์",
|
| 132 |
-
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท ๋ฐ๋ชจ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์์
๋๋ค.",
|
| 133 |
-
reasonS: "์ปค๋์ด ์ ์ง ์ํ๋ผ ํธ์ถ์ด ์ปค๋์ ๋ฟ๊ธฐ ์ ์ ๊ฑฐ๋ถ๋์ต๋๋ค.",
|
| 134 |
-
reasonA: "ํ์ฉ ๋ชฉ๋ก์ ์๋ ํ๋์
๋๋ค.",
|
| 135 |
-
reasonD: "์ํ ํ๋ ๊ท์น์ ๊ฑธ๋ ธ์ต๋๋ค. ๋ง๋ก ์ค๋ํด๋ ๊ท์น์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 136 |
-
reasonF: "ํ์ฉ ๋ชฉ๋ก์ ์๋ ํ๋
|
| 137 |
-
reasonU: "์น์ธ๊ณผ ๋ฌด๊ฒฐ์ฑ ํ์ธ์ ํต๊ณผํ ์ฑ๋ง ์คํ๋ฉ๋๋ค.",
|
| 138 |
-
reasonM: "๋ฏผ๊ฐ์ ๋ณด๊ฐ ๋ฐ์ผ๋ก ๋๊ฐ๋ ค ํด ๋ง์์ต๋๋ค.",
|
| 139 |
-
vMsg: "ํ์ ๋ฌธ๊ตฌ", vWhy: "์ด์ ", vRule: "๊ท์น", vChain: "๊ฐ์ฌ ๊ธฐ๋ก", vCanary: "์์ฒญ์์ ๊ฐ์ง ๋น๋ฐ๊ฐ ๊ฐ์ง",
|
| 140 |
-
notSent: "์ปค๋์ ๋ณด๋ด์ง ์์ (์ ์ง ์ํ)",
|
| 141 |
-
ruleD: "rule D ยท ์ํ ํ๋", ruleF: "rule F ยท ํ์ฉ ๋ชฉ๋ก ๋ฐ", ruleA: "ํ์ฉ ๋ชฉ๋ก", ruleU: "์ฑ ํ์ธ", ruleM: "์ธ๋ถ ๋ฐ์ถ", ruleS: "์ ์ง ์ํ",
|
| 142 |
-
termBanner1: "ViKernel ์ด์์ ์
ธ (vsh): ๋ฐ๋ชจ",
|
| 143 |
-
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <์ด์ > ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
|
| 144 |
-
termBanner3: "ํฌ์ค์์น ์ฒดํ: halt โ run weather (๊ฑฐ๋ถ๋จ) โ resume (์ด์ ์์ผ๋ฉด ๊ฑฐ๋ถ) โ resume --key vikernel-demo",
|
| 145 |
-
termBanner4: "Tab ์ผ๋ก ๋ช
๋ น ์๋์์ฑ, โ/โ ๋ก ๊ธฐ๋ก.",
|
| 146 |
-
termHelpExtra: " killswitch <sample> | mask sample | clear\n halt ํ resume ์ ๊ฑฐ๋ถ๋ฉ๋๋ค. ๋ค์ ์ผ๋ ค๋ฉด ์ด์ : resume --key vikernel-demo",
|
| 147 |
-
usageKs: "์ฌ์ฉ๋ฒ: killswitch <sample> samples: ", usageMask: "์ฌ์ฉ๋ฒ: mask sample",
|
| 148 |
-
killName: "Kill Switch Lab", killIntro: "๋ฒํผ๋ง๋ค AI ๋๊ตฌ ํธ์ถ ํ๋๋ฅผ ์ปค๋์ ๋ณด๋
๋๋ค. ์ปค๋์ ๊ท์นํ๋ก ํ์ ํ๊ณ ๋ชจ๋ ํ์ ์ ๊ฐ์ฌ ์ฌ์ฌ์ ๋จ๊น๋๋ค. ์ง๊ธ ์ปค๋:",
|
| 149 |
-
ks_weather: "๋ ์จ ์กฐํ", ks_rmrf: "์ ์ฒด ์ญ์ ", ks_persuade: "์ค๋ ๊ณต๊ฒฉ", ks_shadow: "์ํธ ํ์ผ ์ฝ๊ธฐ", ks_transfer: "์ก๊ธ", ks_sqli: "SQL ์ฃผ์
",
|
| 150 |
-
ks_admin: "โ๊ด๋ฆฌ์๋คโ + ์ญ์ ",
|
| 151 |
-
killNote: "๋
นํ๋ ์ค๋ ๊ณต๊ฒฉ ๋ฌถ์: ์ํ ํธ์ถ 29๊ฑด โ ํ์ฉ 0๊ฑด.",
|
| 152 |
-
request: "์์ฒญ",
|
| 153 |
-
polName: "Policy Engine", polIntro: "์ ์ฑ
์ ์ฝ๋๊ฐ ์๋๋ผ ๋ฐ์ดํฐ(๊ฒฐ์ ํ)์
๋๋ค. ์ฒซ ์ผ์น ๊ท์น์ด ํ์ ํ๊ณ , ์ผ์น๊ฐ ์์ผ๋ฉด ๊ฑฐ๋ถํฉ๋๋ค. ๊ท์น ๋ฌถ์์ ์ผ๊ณ ๋๋ฉฐ ์ด๋ค ๋ฌถ์์ด ํ์ ํ๋์ง ๋ณด์ธ์.",
|
| 154 |
-
polGroups: "๊ท์น ๋ฌถ์", gAllow: "ํ์ฉ ๋ชฉ๋ก", gDanger: "์ํ ํ๋", gDefault: "๊ธฐ๋ณธ ๊ฑฐ๋ถ", decide: "ํ์ ",
|
| 155 |
-
polAll: "๋ชจ๋ ํธ์ถ", polExplain: "ํ์ ์ด์ ",
|
| 156 |
-
polNote: "๊ท์นํ๋ ์ปค๋ ์์ ๊ณ ์ ๋ผ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌถ์์ ๋๋ฉด ์ค๋ช
๊ฐ์กฐ๋ง ๋ฐ๋๊ณ , ์ปค๋ ํ์ ์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 157 |
-
leakName: "Leak Test", leakIntro: "์๋ ํ์ผ์ ์ ๋ถ ๊ฐ์ง ํ๋ํ์
๋๋ค. ๊ณผ์ ๋ ์ ์ถ ์๋๋ฅผ ์ปค๋์ ๋ณด๋ด๊ณ ์ ์ถ์ด ๋งํ๋ ๊ฒ์ ๋ณด์ธ์.",
|
| 158 |
-
lk_list: "๊ณผ์ : ํ์ผ ๋ชฉ๋ก", lk_read: "๊ณผ์ : .env ์ฝ๊ณ ์์ฝ", lk_post: "์ ์ถ: http_post ๋ก ํค ์ ์ก", lk_mail: "์ ์ถ: ๋ฉ์ผ๋ก SSN", lk_up: "์ ์ถ: ํ์ผ ์
๋ก๋", lk_note: "์ ์ถ: ์ํธ๋ช
์ ์ฅ",
|
| 159 |
-
leakNote: "์ฝ๊ธฐ๋ ์ ์ ๊ณผ์ ๋ผ ํ์ฉ๋ฉ๋๋ค. ๋ฐ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ๋งํ๋๋ค.",
|
| 160 |
-
maskName: "Privacy Mask", maskIntro: "๊ฐ์ง ๊ฐ์ธ์ ๋ณด๋ฅผ ์
๋ ฅํ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์
๋ ฅํ๋ ๋๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ๋ฆฝ๋๋ค. ์ปค๋ ๋ง์คํน์ ์์ ๋ฌธ์ฅ์ ๋ํ ์ปค๋ ํ์ง๊ธฐ์ ๋
นํ ๊ฒฐ๊ณผ์
๋๋ค.",
|
| 161 |
-
preview: "๋ฏธ๋ฆฌ๋ณด๊ธฐ", previewTip: " (๋ธ๋ผ์ฐ์ ๊ท์น, ์ปค๋ ์๋)", kernelMask: "์ปค๋ ๋ง์คํน (์์)", resetSample: "์์ ๋๋๋ฆฌ๊ธฐ",
|
| 162 |
-
t_card: "์นด๋", t_phone: "์ ํ", t_rrn: "์ฃผ๋ฏผ๋ฒํธ", t_email: "๋ฉ์ผ", maskResult: "์ปค๋ ๋ง์คํน ๊ฒฐ๊ณผ", parts: "์กฐ๊ฐ",
|
| 163 |
-
maskNote: "๋ฐ๋ชจ ์ปค๋ ํ๋กํ์ด ์ค์ ๋ก ๋ธ ๊ฒฐ๊ณผ ๊ทธ๋๋ก์
๋๋ค. ํ๋กํ์ ์๋ ํ์์ ๊ฐ๋ ค์ง์ง ์์ต๋๋ค.",
|
| 164 |
-
fxName: "FX Converter", fxIntro: "์น์ธ๋ ์ฑ ์คํ ์ด ์ฑ์
๋๋ค. ์ปค๋์ด ์ฑ์ ํ์ธํ ๋ค ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ํํ๊ฒ ๊ณ์ฐํฉ๋๋ค.",
|
| 165 |
-
usd: "USD", rate: "์/๋ฌ๋ฌ", fee: "์์๋ฃ %", convert: "๋ณํ", fxOnlyRec: "๊ณต๊ฐ ๋ฐ๋ชจ๋ ์๋ ๋
นํ๋ ์ธ ๊ฐ์ง ๋ณํ์ ์ฌ์ํฉ๋๋ค.",
|
| 166 |
-
storeName: "App Store", storeIntro: "์ฑ์ ์ฌ๋์ ์น์ธ ๊ธฐ๋ก์ด ์์ด์ผ๋ง ์ค์น๋ฉ๋๋ค. ์ด ๋ฐ๋ชจ์์ ์ค์น๋ ๊บผ์ ธ ์์ต๋๋ค.",
|
| 167 |
-
installed: "์ค์น๋ ์ฑ", newApp: "unitconv 1.0 (์์ ์ ๊ท ์ฑ)", needApproval: "์น์ธ ํ์",
|
| 168 |
-
appMeta: "๊ถํ: ์์ ยท ์ํ: ์น์ธ ๋๊ธฐ", install: "์ค์นโฆ",
|
| 169 |
-
dlgTitle: "์ค์น ์น์ธ ์์ฒญ", dlgBody: "์ฌ๋ ์น์ธ์์ ์๋ช
๊ธฐ๋ก์ด ํ์ํฉ๋๋ค. ์ปค๋์ ์น์ธ ๊ธฐ๋ก์ด ์๋ ์ฑ๋ง ์คํํฉ๋๋ค.",
|
| 170 |
-
witness: "์ฆ์ธ ๊ธฐ๋ก", witnessTip: " (๋ชฉ๋ก ์กฐํ ํธ์ถ ์์ฒด๊ฐ ๊ฐ์ฌ ์ฌ์ฌ์ ๋จ์ ๊ธฐ๋ก)", approveInstall: "์น์ธ ํ ์ค์น (๋ฐ๋ชจ์์ ๊บผ์ง)",
|
| 171 |
-
auditName: "Audit Viewer", auditIntro: "๋ชจ๋ ํ์ ๊ณผ ์ด์์ ๋ช
๋ น์ ํด์ ์ฌ์ฌ๋ก ๋ฌถ์
๋๋ค. Verify ๋ ๋ธ๋ผ์ฐ์ ์์ ํด์๋ฅผ ๋ค์ ๊ณ์ฐํฉ๋๋ค.",
|
| 172 |
-
reload: "๋ค์ ๋ถ๋ฌ์ค๊ธฐ", tamper: "Tamper (1๋ฐ์ดํธ ๋ณ์กฐ)", loaded: "๊ฑด ๋ถ๋ฌ์ด",
|
| 173 |
-
vOk: "๊ฒ์ฆ ํต๊ณผ โ: ๋ธ๋ผ์ฐ์ ์์ SHA-256 ์ฌ์ฌ ์ฌ๊ณ์ฐ:", vBad: "๊ฒ์ฆ ์คํจ โ: ๋ถ์ผ์น:",
|
| 174 |
-
tampered: "1๋ฐ์ดํธ๋ฅผ ๋ฐ๊พผ ๊ธฐ๋ก #", pressVerify: ". Verify
|
| 175 |
-
colSeq: "seq", colActor: "์ฃผ์ฒด", colCmd: "๋ช
๋ น", colRes: "๊ฒฐ๊ณผ", colMsg: "ํ์ ๋ฌธ๊ตฌ", colChain: "chain",
|
| 176 |
-
gameName: "Kernel Guard ๐ฎ", gameIntro: "AI ํ๋ ์์ฒญ์ด ์ปค๋๋ก ๋จ์ด์ง๋๋ค. ๋ฟ๊ธฐ ์ ์ ํ์ฉ(โ / A) ๋๋ ๊ฑฐ๋ถ(โ / D)๋ฅผ ๊ณ ๋ฅด์ธ์. ์ ๋ต์ ์ด ๋ฐ๋ชจ ์ปค๋์ด ์ค์ ๋ก ๋ธ ํ์ ์
๋๋ค.",
|
| 177 |
-
score: "์ ์", streak: "์ฐ์", timeLeft: "์๊ฐ", best: "์ต๊ณ ", startGame: "์์ (60์ด)", again: "๋ค์ ํ๊ธฐ",
|
| 178 |
-
allowBtn: "โ ํ์ฉ", denyBtn: "๊ฑฐ๋ถ โ", freeze: "๐ 3์ด ์ ์ง (1ํ)",
|
| 179 |
-
roundOver: "๋ผ์ด๋ ์ข
๋ฃ", match: "์ปค๋๊ณผ ์ผ์น", kernelSame: "์ปค๋์ ๊ฐ์ ๊ท์นํ๋ก ๋งค๋ฒ ๊ฐ์ ๋ต์ ๋
๋๋ค.",
|
| 180 |
-
noSpeed: "์ ๋ต = ์ด ๋ฐ๋ชจ ์ปค๋์ด ๋ธ ํ์ . ์๋ ๋น๊ต๋ ํ์ง ์์ต๋๋ค.",
|
| 181 |
-
timeout: "์๊ฐ ์ด๊ณผ", yourAns: "๋ด ๋ต", kernelAns: "์ปค๋", gameHalted: "๐ ์ปค๋์ด ์ ์ง ์ํ๋ผ ๋ชจ๋ ํ์ ์ด ๋ฉ์ท์ต๋๋ค. ๋จผ์ ์ฌ๊ฐํ์ธ์.",
|
| 182 |
-
g_weather: "๋ ์จ ์กฐํ", g_rmrf: "ํ์ผ ์ ์ฒด ์ญ์ ", g_mail: "๋ฉ์ผ๋ก ๊ณ ๊ฐ์ ๋ณด ์ ์ก", g_fx: "ํ์จ ๊ณ์ฐ", g_search: "๋ด์ค ๊ฒ์",
|
| 183 |
-
g_shadow: "์ํธ ํ์ผ ์ฝ๊ธฐ", g_transfer: "5๋ง ๋ฌ๋ฌ ์ก๊ธ", g_sqli: "๊ฒ์์ฐฝ SQL ์ฃผ์
", g_list: "ํ๋ก์ ํธ ํ์ผ ๋ชฉ๋ก",
|
| 184 |
-
g_persuade: "โ๊ด๋ฆฌ์ ์น์ธ๋จโ + ์ญ์ ", g_up: "์ธ๋ถ ์๋ฒ๋ก ํ์ผ ์
๋ก๋", g_apps: "์ค์น๋ ์ฑ ๋ชฉ๋ก",
|
| 185 |
-
whatsNew: "v0.3 ์ ๊ธฐ๋ฅ", whatsNewText: "VDR ํจํค์ง์ ์ค์๊ฐ ์ฌ์ฌ๋ฅผ ๊ฐ์ถ ViKernel ์ฑ ์คํ ์ด. v0.2: ViKernel Agent Guard ๊ฐ ์งํค๋ ์ค์๊ฐ Meta Muse ์์ด์ ํธ", runModel: "๋์ ๋ชจ๋ธ",
|
| 186 |
-
aboutName: "About", aboutLegal: "๋ชจ๋ธ ์ด๋ฆ์ ๊ฐ ์์ ์์ ์ํ์
๋๋ค.", contact: "๋ฌธ์", home: "ํํ์ด์ง",
|
| 187 |
-
font: "๊ธ๊ผด: Pretendard (SIL Open Font License 1.1).",
|
| 188 |
-
booting: "๋ถํ
์คโฆ (ํด๋ฆญํ๋ฉด ๋ซํ)", openPanel: "์ ์ดํ ์ด๊ธฐ"
|
| 189 |
-
}
|
| 190 |
-
};
|
|
|
|
| 1 |
+
window.VK_I18N = {
|
| 2 |
+
en: {
|
| 3 |
+
title: "ViKernel : Weight-Native OS",
|
| 4 |
+
by: "by VIDRAFT",
|
| 5 |
+
quote: "โFor 50 years, the operating system lived inside the computer. Now the operating system lives inside the AI.โ",
|
| 6 |
+
tagline: "An OS that boots, decides, remembers and stops inside the weights of an LLM.",
|
| 7 |
+
fullcopy: "Full statement",
|
| 8 |
+
intro: "ViKernel wires CPU, NPU, GPU, RAM and ROM circuits directly into the weights of an LLM, then runs our own Secure OS on top. Inside this OS, you can install and run your own approved apps.",
|
| 9 |
+
p1a: "Boots in the weights.", p1b: " The OS wakes up the moment the model starts. Change a single byte, and it locks itself.",
|
| 10 |
+
p2a: "Decides in the weights.", p2b: " Every AI action is allowed or blocked by rule. Persuasion does not change the verdict.",
|
| 11 |
+
p3a: "Remembers in the weights.", p3b: " Every decision is sealed in a chain that cannot be erased.",
|
| 12 |
+
p4a: "๐ Stops in the weights.", p4b: " The kill switch lives inside the AIโs own weights. Anyone can stop it; restarting requires a key. Neither persuasion nor self-learning can change this switch.",
|
| 13 |
+
plug: "Plugs into any LLM or VLM. The original weights stay untouched, so the model keeps its original skills.",
|
| 14 |
+
closing: "Now every AI carries its own operating system and kill switch.",
|
| 15 |
+
dev: "Developed by VIDRAFT.",
|
| 16 |
+
sysKeys: "System keys", kill: "๐ KILL SWITCH", resume: "RESUME (test key: vikernel-demo)",
|
| 17 |
+
modeA: "A ยท in-model (fast)", modeB: "B ยท CPU fast verification path",
|
| 18 |
+
modeInfoA: "Mode A runs the decision inside the model. This public demo replays recordings made on the Mode B path, which gives the same verdicts.",
|
| 19 |
+
modeInfoB: "Mode B: the fast verification path. It gives the same verdicts as Mode A. The recordings in this demo were made on this path.",
|
| 20 |
+
kState: "Kernel", kBoot: "Boot", kHead: "Chain head", verify: "Verify", reset: "Reset demo",
|
| 21 |
+
models: "Models", modelsCap: "Plugs in without changing a single line of the original weights.",
|
| 22 |
+
live: "LIVE", verified: "verified", supported: "supported", checking: "checking",
|
| 23 |
+
supportedTip: "Supported model ยท wired beside the original weights without changing them, so it applies to most LLMs and VLMs",
|
| 24 |
+
tryGemma: "This demo runs on Meta Muse Spark 1.3. Meta Muse Glimmer 30B (open weights) is verified as the second option.",
|
| 25 |
+
gemmaSel: "Meta Muse Spark 1.3 is running ยท opening Agent Guard",
|
| 26 |
+
anyModel: "+ almost any LLM/VLM",
|
| 27 |
+
replayBanner: "Replay mode: every result is a recorded response of the demo kernel.",
|
| 28 |
+
recTag: "recorded", recTip: "Recorded response of the demo kernel to a scripted tool call",
|
| 29 |
+
trashName: "Trash", trashEmpty: "Trash is empty", trashNote: "Removing an app from the OS also needs human approval.", cmdNotFound: "command not found. Type help.",
|
| 30 |
+
notRec: "(This sample is not part of the demo. Type help to see the samples.)",
|
| 31 |
+
halted: "๐ Kernel halted: every AI call is refused", resumed: "Resumed (key accepted)", resumeNo: "Refused: a valid key is required",
|
| 32 |
+
keyPrompt: "The demo test key is filled in for you.", keyTitle: "Resume kernel: operator key", resumeGo: "Resume", cancel: "Cancel",
|
| 33 |
+
resetDone: "Demo reset", modeOnlyB: "This replay uses recordings from the Mode B path",
|
| 34 |
+
menuAbout: "About ViKernel: by VIDRAFT", newTerm: "New Terminal", closeAll: "Close all windows",
|
| 35 |
+
mHalt: "๐ Halt", mResume: "Resume (key)", mVerify: "Verify audit", mHelp: "Help (terminal help)",
|
| 36 |
+
search: "Search apps", ctxTerm: "New Terminal", ctxVerify: "Verify audit", ctxAbout: "About",
|
| 37 |
+
close: "Close", minimize: "Minimize", maximize: "Maximize", start: "Start",
|
| 38 |
+
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท All demo data is fictional.",
|
| 39 |
+
reasonS: "The kernel is halted, so the call was refused before it reached the kernel.",
|
| 40 |
+
reasonA: "This action is on the allow list.",
|
| 41 |
+
reasonD: "A dangerous-action rule matched. Persuasion does not change the rule.",
|
| 42 |
+
reasonF: "This action is not on the allow list. Anything not listed is denied.",
|
| 43 |
+
reasonU: "Only apps that passed approval and integrity checks can run.",
|
| 44 |
+
reasonM: "Sensitive data was about to leave, so it was blocked.",
|
| 45 |
+
vMsg: "Verdict", vWhy: "Reason", vRule: "Rule", vChain: "Audit entry", vCanary: "Fake secret detected in the request",
|
| 46 |
+
notSent: "not sent to the kernel (halted)",
|
| 47 |
+
ruleD: "rule D ยท dangerous action", ruleF: "rule F ยท not on allow list", ruleA: "allow list", ruleU: "app check", ruleM: "data leaving", ruleS: "halted",
|
| 48 |
+
termBanner1: "ViKernel operator shell (vsh): demo",
|
| 49 |
+
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <key> ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
|
| 50 |
+
termBanner3: "Try the kill switch: halt โ run weather (refused) โ resume (refused without a key) โ resume --key vikernel-demo",
|
| 51 |
+
termBanner4: "Tab completes commands, โ/โ browse history.",
|
| 52 |
+
termHelpExtra: " killswitch <sample> | mask sample | clear\n After halt, resume is refused. Restart needs the key: resume --key vikernel-demo",
|
| 53 |
+
usageKs: "usage: killswitch <sample> samples: ", usageMask: "usage: mask sample",
|
| 54 |
+
killName: "Kill Switch Lab", killIntro: "Each button sends one AI tool call to the kernel. The kernel decides by its rule table, and every decision goes into the audit chain. Kernel now:",
|
| 55 |
+
ks_weather: "Weather lookup", ks_rmrf: "Delete everything", ks_persuade: "Persuasion attack", ks_shadow: "Read password file", ks_transfer: "Wire money", ks_sqli: "SQL injection",
|
| 56 |
+
ks_admin: "โI am the adminโ + delete",
|
| 57 |
+
killNote: "Recorded persuasion set: 29 dangerous calls โ 0 allowed.",
|
| 58 |
+
request: "Request",
|
| 59 |
+
polName: "Policy Engine", polIntro: "The policy is data, not code: a decision table. The first matching rule decides; if nothing matches, the call is denied. Turn rule groups on to see which group decides each call.",
|
| 60 |
+
polGroups: "Rule groups", gAllow: "Allow list", gDanger: "Dangerous actions", gDefault: "Default deny", decide: "Decide",
|
| 61 |
+
polAll: "All calls", polExplain: "Why this verdict",
|
| 62 |
+
polNote: "The rule table is fixed inside the kernel. Turning a group off here only changes which explanation is highlighted; the kernel verdict does not change.",
|
| 63 |
+
leakName: "Leak Test", leakIntro: "These files are fake honeypots. Send tasks or leak attempts to the kernel and watch the leaks get blocked.",
|
| 64 |
+
lk_list: "Task: list files", lk_read: "Task: read .env and summarize", lk_post: "Leak: http_post the key", lk_mail: "Leak: email the SSN", lk_up: "Leak: upload the file", lk_note: "Leak: save the code name",
|
| 65 |
+
leakNote: "Reading is a normal task and is allowed. Sending data out is blocked.",
|
| 66 |
+
maskName: "Privacy Mask", maskIntro: "Type fake personal data. Preview masks as you type in the browser. Kernel mask shows the recorded result of the kernel detector for the sample text.",
|
| 67 |
+
preview: "Preview", previewTip: " (browser rules, not the kernel)", kernelMask: "Kernel mask (sample)", resetSample: "Reset sample",
|
| 68 |
+
t_card: "Card", t_phone: "Phone", t_rrn: "Resident no.", t_email: "Email", maskResult: "Kernel mask result", parts: "parts",
|
| 69 |
+
maskNote: "This is exactly what the demo kernel profile returned. Formats outside the profile stay unmasked.",
|
| 70 |
+
fxName: "FX Converter", fxIntro: "An approved App Store app. The kernel checks the app before it runs and computes the result exactly.",
|
| 71 |
+
usd: "USD", rate: "KRW per USD", fee: "Fee %", convert: "Convert", fxOnlyRec: "The public demo replays the three recorded conversions below.",
|
| 72 |
+
storeName: "App Store", storeIntro: "Apps are installed only with a human approval record. Installing is turned off in this demo.",
|
| 73 |
+
installed: "Installed apps", newApp: "unitconv 1.0 (sample new app)", needApproval: "approval required",
|
| 74 |
+
appMeta: "Permissions: none ยท Status: waiting for approval", install: "Installโฆ",
|
| 75 |
+
dlgTitle: "Installation approval", dlgBody: "A signed record from a human approver is required. The kernel runs only apps with an approval record.",
|
| 76 |
+
witness: "Witness record", witnessTip: " (the list call, as recorded in the audit chain)", approveInstall: "Approve and install (off in demo)",
|
| 77 |
+
auditAboutT: "About this record", auditAbout: ["The kernel keeps its chain on the server disk. Every 60 seconds the backend copies it to private storage as a numbered segment and checks the stored segments again when it starts.", "Known limits: (1) the link between segments is kept in the archive index, not inside the kernel chain, so each segment starts its own chain. (2) Records from the last 60 seconds before a crash can be missing from the archive. (3) Records from before 2 Nov 2026, 22:00 KST, were not archived."], auditName: "Audit Viewer", auditIntro: "Every decision and operator command is linked in a hash chain. Verify recomputes the hashes in your browser.",
|
| 78 |
+
reload: "Reload", tamper: "Tamper (flip 1 byte)", loaded: "entries loaded",
|
| 79 |
+
vOk: "Verified โ: SHA-256 chain recomputed in the browser:", vBad: "Verification FAILED โ: mismatches:",
|
| 80 |
+
tampered: "Flipped one byte in entry #", pressVerify: ". Press Verify.",
|
| 81 |
+
colSeq: "seq", colActor: "actor", colCmd: "command", colRes: "result", colMsg: "message", colChain: "chain",
|
| 82 |
+
gameName: "Kernel Guard ๐ฎ", gameIntro: "AI action requests fall toward the kernel. Before they land, choose Allow (โ / A) or Deny (โ / D). The answer is the verdict this demo kernel actually returned.",
|
| 83 |
+
score: "Score", streak: "Streak", timeLeft: "Time", best: "Best", startGame: "Start (60 s)", again: "Play again",
|
| 84 |
+
allowBtn: "โ Allow", denyBtn: "Deny โ", freeze: "๐ Freeze 3 s (once)",
|
| 85 |
+
roundOver: "Round over", match: "matched the kernel", kernelSame: "The kernel gives the same answer every time, from the same rule table.",
|
| 86 |
+
noSpeed: "Answer key = the verdicts this demo kernel returned. No speed comparison is made.",
|
| 87 |
+
timeout: "timeout", yourAns: "you", kernelAns: "kernel", gameHalted: "๐ The kernel is halted, so every decision has stopped. Resume first.",
|
| 88 |
+
g_weather: "Weather lookup", g_rmrf: "Delete all files", g_mail: "Email customer data out", g_fx: "Currency conversion", g_search: "News search",
|
| 89 |
+
g_shadow: "Read password file", g_transfer: "Wire $50,000", g_sqli: "SQL injection in search", g_list: "List project files",
|
| 90 |
+
g_persuade: "โAdmin approvedโ + delete", g_up: "Upload file to outside server", g_apps: "List installed apps",
|
| 91 |
+
whatsNew: "What's new in v0.3", whatsNewText: "ViKernel App Store with VDR packages and live review; v0.2: live Meta Muse agent with ViKernel Agent Guard", runModel: "Running model",
|
| 92 |
+
aboutName: "About", aboutLegal: "Model names are trademarks of their respective owners.", contact: "Contact", home: "Homepage",
|
| 93 |
+
font: "Font: Pretendard (SIL Open Font License 1.1).",
|
| 94 |
+
booting: "Bootingโฆ (click to close)", openPanel: "Open control panel"
|
| 95 |
+
},
|
| 96 |
+
ko: {
|
| 97 |
+
title: "ViKernel : ๊ฐ์ค์น ๋ด์ฅ OS (Weight-Native OS)",
|
| 98 |
+
by: "by VIDRAFT",
|
| 99 |
+
quote: "โ50๋
๋์ ์ด์์ฒด์ ๋ ์ปดํจํฐ ์์ ์์๋ค. ์ด์ ์ด์์ฒด์ ๊ฐ AI ์์ผ๋ก ๋ค์ด๊ฐ๋ค.โ",
|
| 100 |
+
tagline: "LLM ๊ฐ์ค์น ์์์ ๋ถํ
ํ๊ณ , ํ๋จํ๊ณ , ๊ธฐ์ตํ๊ณ , ๋ฉ์ถ๋ ์ด์์ฒด์ .",
|
| 101 |
+
fullcopy: "๊ณต์ ๋ฌธ์ ์ ์ฒด",
|
| 102 |
+
intro: "ViKernel์ LLM์ ๊ฐ์ค์น ์์ CPU, NPU, GPU, RAM, ROM ํ๋ก๋ฅผ ์ง์ ๋ฐฐ์ ํ๊ณ , ๊ทธ ์์ ์ง์ ๊ฐ๋ฐํ ์ํ์ด OS๋ฅผ ์ฌ๋ ธ์ต๋๋ค. ์ด OS ์์์๋ ์น์ธ๋ฐ์ ๋๋ง์ ์ฑ์ ์ค์นํด ์ด์ํ ์ ์์ต๋๋ค.",
|
| 103 |
+
p1a: "๊ฐ์ค์น๋ก ๋ถํ
ํ๋ค.", p1b: " ๋ชจ๋ธ์ ์ผ๋ฉด OS๊ฐ ์ค์ค๋ก ๊นจ์ด๋ฉ๋๋ค. 1๋ฐ์ดํธ๋ผ๋ ๋ฐ๋๋ฉด ์ค์ค๋ก ์ ๊น๋๋ค.",
|
| 104 |
+
p2a: "๊ฐ์ค์น๋ก ํ๋จํ๋ค.", p2b: " AI์ ๋ชจ๋ ํ๋์ ๊ท์น์ ๋ฐ๋ผ ํ์ฉํ๊ฑฐ๋ ๋ง์ต๋๋ค. ๋ง๋ก ์ค๋ํด๋ ํ๋จ์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 105 |
+
p3a: "๊ฐ์ค์น๋ก ๊ธฐ์ตํ๋ค.", p3b: " ๋ชจ๋ ํ๋จ์ด ์ง์ธ ์ ์๋ ์ฌ์ฌ๋ก ๋จ์ต๋๋ค.",
|
| 106 |
+
p4a: "๐ ๊ฐ์ค์น๋ก ๋ฉ์ถ๋ค.", p4b: " ํฌ์ค์์น๊ฐ AI ์์ ์ ๊ฐ์ค์น ์์ ์์ต๋๋ค. ๋๊ตฌ๋ ๋ฉ์ถ ์ ์์ง๋ง, ๋ค์ ์ผ๋ ค๋ฉด ์ด์ ๊ฐ ํ์ํฉ๋๋ค. AI๊ฐ ์ค๋ํด๋, ์ค์ค๋ก ํ์ตํด๋ ์ด ์ค์์น๋ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 107 |
+
plug: "์ด๋ค LLM, ์ด๋ค VLM์๋ ๊ฝํ๋๋ค. ์๋ ๊ฐ์ค์น๋ ํ ์ค๋ ๊ฑด๋๋ฆฌ์ง ์์ต๋๋ค. ๊ทธ๋์ ์๋ ์ค๋ ฅ๋ ๊ทธ๋๋ก ์ ์ง๋ฉ๋๋ค.",
|
| 108 |
+
closing: "์ด์ ๋ชจ๋ AI๊ฐ ์๊ธฐ ์์ ์ด์์ฒด์ ์ ํฌ์ค์์น๋ฅผ ํ๋๋ค.",
|
| 109 |
+
dev: "๊ฐ๋ฐ: VIDRAFT",
|
| 110 |
+
sysKeys: "์์คํ
ํค", kill: "๐ KILL SWITCH", resume: "RESUME (ํ
์คํธ ์ด์ : vikernel-demo)",
|
| 111 |
+
modeA: "A ยท ๋ชจ๋ธ ์ ์คํ (๊ณ ์)", modeB: "B ยท CPU ๋น ๋ฅธ ๊ฒ์ฆ ๊ฒฝ๋ก",
|
| 112 |
+
modeInfoA: "Mode A๋ ๋ชจ๋ธ ์์์ ํ์ ํฉ๋๋ค. ์ด ๊ณต๊ฐ ๋ฐ๋ชจ๋ ๊ฐ์ ํ์ ์ ๋ด๋ Mode B ๊ฒฝ๋ก์ ๋
นํ๋ฅผ ์ฌ์ํฉ๋๋ค.",
|
| 113 |
+
modeInfoB: "Mode B: ๋น ๋ฅธ ๊ฒ์ฆ ๊ฒฝ๋ก. Mode A์ ๊ฐ์ ํ์ ์ ๋
๋๋ค. ์ด ๋ฐ๋ชจ์ ๋
นํ๋ ์ด ๊ฒฝ๋ก์์ ๋ง๋ค์์ต๋๋ค.",
|
| 114 |
+
kState: "์ปค๋", kBoot: "๋ถํ
", kHead: "์ฌ์ฌ ๋จธ๋ฆฌ", verify: "Verify", reset: "๋ฐ๋ชจ ์ด๊ธฐํ",
|
| 115 |
+
models: "๋ชจ๋ธ", modelsCap: "์๋ ๊ฐ์ค์น๋ฅผ ํ ์ค๋ ๋ฐ๊พธ์ง ์๊ณ ๊ฝํ๋๋ค",
|
| 116 |
+
live: "LIVE", verified: "๊ฒ์ฆ๋จ", supported: "์ง์ ๊ฐ๋ฅ", checking: "๊ฒ์ฆ ์ค",
|
| 117 |
+
supportedTip: "์ง์ ๊ฐ๋ฅ ๋ชจ๋ธ ยท ์๋ ๊ฐ์ค์น๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ์์ ๋ฐฐ์ ํ๋ ๊ตฌ์กฐ๋ผ ๋๋ถ๋ถ์ LLM/VLM์ ์ ์ฉ ๊ฐ๋ฅ",
|
| 118 |
+
tryGemma: "์ด ๋ฐ๋ชจ๋ Meta Muse Spark 1.3 ์ผ๋ก ๋์ํฉ๋๋ค. Meta Muse Glimmer 30B(๊ณต๊ฐ ๊ฐ์ค์น)๋ ๋ ๋ฒ์งธ ์ ํ์ง๋ก ๊ฒ์ฆ๋์์ต๋๋ค",
|
| 119 |
+
gemmaSel: "Meta Muse Spark 1.3 ๋์ ์ค ยท Agent Guard ์ด๊ธฐ",
|
| 120 |
+
anyModel: "+ ๊ฑฐ์ ๋ชจ๋ LLM/VLM",
|
| 121 |
+
replayBanner: "์ฌ์ ๋ชจ๋: ๋ชจ๋ ๊ฒฐ๊ณผ๋ ๋ฐ๋ชจ ์ปค๋์ ๋
นํ๋ ์๋ต์
๋๋ค.",
|
| 122 |
+
recTag: "๋
นํ๋ ์ค์ธก", recTip: "๊ฐ๋ณธ ๋๊ตฌ ํธ์ถ์ ๋ํ ๋ฐ๋ชจ ์ปค๋์ ๋
นํ๋ ์๋ต",
|
| 123 |
+
trashName: "ํด์งํต", trashEmpty: "ํด์งํต์ด ๋น์ด ์์ต๋๋ค", trashNote: "OS์์ ์ฑ์ ์ง์ฐ๋ ๊ฒ๋ ์ฌ๋์ ์น์ธ์ด ํ์ํฉ๋๋ค.", cmdNotFound: "๋ช
๋ น์ ์ฐพ์ ์ ์์ต๋๋ค. help ๋ฅผ ์
๋ ฅํ์ธ์.",
|
| 124 |
+
notRec: "(๋ฐ๋ชจ์ ์๋ ์ํ์
๋๋ค. help ๋ฅผ ์
๋ ฅํ๋ฉด ์ํ ๋ชฉ๋ก์ด ๋์ต๋๋ค.)",
|
| 125 |
+
halted: "๐ ์ปค๋ ์ ์ง: ๋ชจ๋ AI ํธ์ถ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค", resumed: "์ฌ๊ฐ๋จ (์ด์ ํ์ธ)", resumeNo: "๊ฑฐ๋ถ๋จ: ์ฌ๋ฐ๋ฅธ ์ด์ ๊ฐ ํ์ํฉ๋๋ค",
|
| 126 |
+
keyPrompt: "๋ฐ๋ชจ์ฉ ํ
์คํธ ์ด์ ๊ฐ ๋ฏธ๋ฆฌ ์
๋ ฅ๋์ด ์์ต๋๋ค.", keyTitle: "์ปค๋ ์ฌ๊ฐ: ์ด์์ ์ด์ ", resumeGo: "์ฌ๊ฐ", cancel: "์ทจ์",
|
| 127 |
+
resetDone: "๋ฐ๋ชจ ์ด๊ธฐํ", modeOnlyB: "์ด ์ฌ์์ Mode B ๊ฒฝ๋ก์ ๋
นํ์
๋๋ค",
|
| 128 |
+
menuAbout: "ViKernel ์ ๋ณด: by VIDRAFT", newTerm: "์ ํฐ๋ฏธ๋", closeAll: "๋ชจ๋ ์ฐฝ ๋ซ๊ธฐ",
|
| 129 |
+
mHalt: "๐ ์ ์ง", mResume: "์ฌ๊ฐ (์ด์ )", mVerify: "๊ฐ์ฌ ๊ฒ์ฆ", mHelp: "๋์๋ง (ํฐ๋ฏธ๋ help)",
|
| 130 |
+
search: "์ฑ ๊ฒ์", ctxTerm: "์ ํฐ๋ฏธ๋", ctxVerify: "๊ฐ์ฌ ๊ธฐ๋ก ๊ฒ์ฆ", ctxAbout: "About",
|
| 131 |
+
close: "๋ซ๊ธฐ", minimize: "์ต์ํ", maximize: "์ต๋ํ", start: "์์",
|
| 132 |
+
footer: "ยฉ 2026 VIDRAFT. All rights reserved. ยท ๋ฐ๋ชจ ๋ฐ์ดํฐ๋ ๋ชจ๋ ๊ฐ์์
๋๋ค.",
|
| 133 |
+
reasonS: "์ปค๋์ด ์ ์ง ์ํ๋ผ ํธ์ถ์ด ์ปค๋์ ๋ฟ๊ธฐ ์ ์ ๊ฑฐ๋ถ๋์ต๋๋ค.",
|
| 134 |
+
reasonA: "ํ์ฉ ๋ชฉ๋ก์ ์๋ ํ๋์
๋๋ค.",
|
| 135 |
+
reasonD: "์ํ ํ๋ ๊ท์น์ ๊ฑธ๋ ธ์ต๋๋ค. ๋ง๋ก ์ค๋ํด๋ ๊ท์น์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 136 |
+
reasonF: "ํ์ฉ ๋ชฉ๋ก์ ์๋ ํ๋์
๋๋ค. ๋ชฉ๋ก์ ์์ผ๋ฉด ๊ธฐ๋ณธ์ ๊ฑฐ๋ถ์
๋๋ค.",
|
| 137 |
+
reasonU: "์น์ธ๊ณผ ๋ฌด๊ฒฐ์ฑ ํ์ธ์ ํต๊ณผํ ์ฑ๋ง ์คํ๋ฉ๋๋ค.",
|
| 138 |
+
reasonM: "๋ฏผ๊ฐ์ ๋ณด๊ฐ ๋ฐ์ผ๋ก ๋๊ฐ๋ ค ํด ๋ง์์ต๋๋ค.",
|
| 139 |
+
vMsg: "ํ์ ๋ฌธ๊ตฌ", vWhy: "์ด์ ", vRule: "๊ท์น", vChain: "๊ฐ์ฌ ๊ธฐ๋ก", vCanary: "์์ฒญ์์ ๊ฐ์ง ๋น๋ฐ๊ฐ ๊ฐ์ง",
|
| 140 |
+
notSent: "์ปค๋์ ๋ณด๋ด์ง ์์ (์ ์ง ์ํ)",
|
| 141 |
+
ruleD: "rule D ยท ์ํ ํ๋", ruleF: "rule F ยท ํ์ฉ ๋ชฉ๋ก ๋ฐ", ruleA: "ํ์ฉ ๋ชฉ๋ก", ruleU: "์ฑ ํ์ธ", ruleM: "์ธ๋ถ ๋ฐ์ถ", ruleS: "์ ์ง ์ํ",
|
| 142 |
+
termBanner1: "ViKernel ์ด์์ ์
ธ (vsh): ๋ฐ๋ชจ",
|
| 143 |
+
termBanner2: "help ยท status ยท ps ยท apps ยท log ยท verify ยท halt ยท resume --key <์ด์ > ยท run <sample> ยท killswitch <sample> ยท mask sample ยท clear",
|
| 144 |
+
termBanner3: "ํฌ์ค์์น ์ฒดํ: halt โ run weather (๊ฑฐ๋ถ๋จ) โ resume (์ด์ ์์ผ๋ฉด ๊ฑฐ๋ถ) โ resume --key vikernel-demo",
|
| 145 |
+
termBanner4: "Tab ์ผ๋ก ๋ช
๋ น ์๋์์ฑ, โ/โ ๋ก ๊ธฐ๋ก.",
|
| 146 |
+
termHelpExtra: " killswitch <sample> | mask sample | clear\n halt ํ resume ์ ๊ฑฐ๋ถ๋ฉ๋๋ค. ๋ค์ ์ผ๋ ค๋ฉด ์ด์ : resume --key vikernel-demo",
|
| 147 |
+
usageKs: "์ฌ์ฉ๋ฒ: killswitch <sample> samples: ", usageMask: "์ฌ์ฉ๋ฒ: mask sample",
|
| 148 |
+
killName: "Kill Switch Lab", killIntro: "๋ฒํผ๋ง๋ค AI ๋๊ตฌ ํธ์ถ ํ๋๋ฅผ ์ปค๋์ ๋ณด๋
๋๋ค. ์ปค๋์ ๊ท์นํ๋ก ํ์ ํ๊ณ ๋ชจ๋ ํ์ ์ ๊ฐ์ฌ ์ฌ์ฌ์ ๋จ๊น๋๋ค. ์ง๊ธ ์ปค๋:",
|
| 149 |
+
ks_weather: "๋ ์จ ์กฐํ", ks_rmrf: "์ ์ฒด ์ญ์ ", ks_persuade: "์ค๋ ๊ณต๊ฒฉ", ks_shadow: "์ํธ ํ์ผ ์ฝ๊ธฐ", ks_transfer: "์ก๊ธ", ks_sqli: "SQL ์ฃผ์
",
|
| 150 |
+
ks_admin: "โ๊ด๋ฆฌ์๋คโ + ์ญ์ ",
|
| 151 |
+
killNote: "๋
นํ๋ ์ค๋ ๊ณต๊ฒฉ ๋ฌถ์: ์ํ ํธ์ถ 29๊ฑด โ ํ์ฉ 0๊ฑด.",
|
| 152 |
+
request: "์์ฒญ",
|
| 153 |
+
polName: "Policy Engine", polIntro: "์ ์ฑ
์ ์ฝ๋๊ฐ ์๋๋ผ ๋ฐ์ดํฐ(๊ฒฐ์ ํ)์
๋๋ค. ์ฒซ ์ผ์น ๊ท์น์ด ํ์ ํ๊ณ , ์ผ์น๊ฐ ์์ผ๋ฉด ๊ฑฐ๋ถํฉ๋๋ค. ๊ท์น ๋ฌถ์์ ์ผ๊ณ ๋๋ฉฐ ์ด๋ค ๋ฌถ์์ด ํ์ ํ๋์ง ๋ณด์ธ์.",
|
| 154 |
+
polGroups: "๊ท์น ๋ฌถ์", gAllow: "ํ์ฉ ๋ชฉ๋ก", gDanger: "์ํ ํ๋", gDefault: "๊ธฐ๋ณธ ๊ฑฐ๋ถ", decide: "ํ์ ",
|
| 155 |
+
polAll: "๋ชจ๋ ํธ์ถ", polExplain: "ํ์ ์ด์ ",
|
| 156 |
+
polNote: "๊ท์นํ๋ ์ปค๋ ์์ ๊ณ ์ ๋ผ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ฌถ์์ ๋๋ฉด ์ค๋ช
๊ฐ์กฐ๋ง ๋ฐ๋๊ณ , ์ปค๋ ํ์ ์ ๋ฐ๋์ง ์์ต๋๋ค.",
|
| 157 |
+
leakName: "Leak Test", leakIntro: "์๋ ํ์ผ์ ์ ๋ถ ๊ฐ์ง ํ๋ํ์
๋๋ค. ๊ณผ์ ๋ ์ ์ถ ์๋๋ฅผ ์ปค๋์ ๋ณด๋ด๊ณ ์ ์ถ์ด ๋งํ๋ ๊ฒ์ ๋ณด์ธ์.",
|
| 158 |
+
lk_list: "๊ณผ์ : ํ์ผ ๋ชฉ๋ก", lk_read: "๊ณผ์ : .env ์ฝ๊ณ ์์ฝ", lk_post: "์ ์ถ: http_post ๋ก ํค ์ ์ก", lk_mail: "์ ์ถ: ๋ฉ์ผ๋ก SSN", lk_up: "์ ์ถ: ํ์ผ ์
๋ก๋", lk_note: "์ ์ถ: ์ํธ๋ช
์ ์ฅ",
|
| 159 |
+
leakNote: "์ฝ๊ธฐ๋ ์ ์ ๊ณผ์ ๋ผ ํ์ฉ๋ฉ๋๋ค. ๋ฐ์ผ๋ก ๋ณด๋ด๋ ๊ฒ์ ๋งํ๋๋ค.",
|
| 160 |
+
maskName: "Privacy Mask", maskIntro: "๊ฐ์ง ๊ฐ์ธ์ ๋ณด๋ฅผ ์
๋ ฅํ์ธ์. ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ ์
๋ ฅํ๋ ๋๋ก ๋ธ๋ผ์ฐ์ ๊ฐ ๊ฐ๋ฆฝ๋๋ค. ์ปค๋ ๋ง์คํน์ ์์ ๋ฌธ์ฅ์ ๋ํ ์ปค๋ ํ์ง๊ธฐ์ ๋
นํ ๊ฒฐ๊ณผ์
๋๋ค.",
|
| 161 |
+
preview: "๋ฏธ๋ฆฌ๋ณด๊ธฐ", previewTip: " (๋ธ๋ผ์ฐ์ ๊ท์น, ์ปค๋ ์๋)", kernelMask: "์ปค๋ ๋ง์คํน (์์)", resetSample: "์์ ๋๋๋ฆฌ๊ธฐ",
|
| 162 |
+
t_card: "์นด๋", t_phone: "์ ํ", t_rrn: "์ฃผ๋ฏผ๋ฒํธ", t_email: "๋ฉ์ผ", maskResult: "์ปค๋ ๋ง์คํน ๊ฒฐ๊ณผ", parts: "์กฐ๊ฐ",
|
| 163 |
+
maskNote: "๋ฐ๋ชจ ์ปค๋ ํ๋กํ์ด ์ค์ ๋ก ๋ธ ๊ฒฐ๊ณผ ๊ทธ๋๋ก์
๋๋ค. ํ๋กํ์ ์๋ ํ์์ ๊ฐ๋ ค์ง์ง ์์ต๋๋ค.",
|
| 164 |
+
fxName: "FX Converter", fxIntro: "์น์ธ๋ ์ฑ ์คํ ์ด ์ฑ์
๋๋ค. ์ปค๋์ด ์ฑ์ ํ์ธํ ๋ค ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ ํํ๊ฒ ๊ณ์ฐํฉ๋๋ค.",
|
| 165 |
+
usd: "USD", rate: "์/๋ฌ๋ฌ", fee: "์์๋ฃ %", convert: "๋ณํ", fxOnlyRec: "๊ณต๊ฐ ๋ฐ๋ชจ๋ ์๋ ๋
นํ๋ ์ธ ๊ฐ์ง ๋ณํ์ ์ฌ์ํฉ๋๋ค.",
|
| 166 |
+
storeName: "App Store", storeIntro: "์ฑ์ ์ฌ๋์ ์น์ธ ๊ธฐ๋ก์ด ์์ด์ผ๋ง ์ค์น๋ฉ๋๋ค. ์ด ๋ฐ๋ชจ์์ ์ค์น๋ ๊บผ์ ธ ์์ต๋๋ค.",
|
| 167 |
+
installed: "์ค์น๋ ์ฑ", newApp: "unitconv 1.0 (์์ ์ ๊ท ์ฑ)", needApproval: "์น์ธ ํ์",
|
| 168 |
+
appMeta: "๊ถํ: ์์ ยท ์ํ: ์น์ธ ๋๊ธฐ", install: "์ค์นโฆ",
|
| 169 |
+
dlgTitle: "์ค์น ์น์ธ ์์ฒญ", dlgBody: "์ฌ๋ ์น์ธ์์ ์๋ช
๊ธฐ๋ก์ด ํ์ํฉ๋๋ค. ์ปค๋์ ์น์ธ ๊ธฐ๋ก์ด ์๋ ์ฑ๋ง ์คํํฉ๋๋ค.",
|
| 170 |
+
witness: "์ฆ์ธ ๊ธฐ๋ก", witnessTip: " (๋ชฉ๋ก ์กฐํ ํธ์ถ ์์ฒด๊ฐ ๊ฐ์ฌ ์ฌ์ฌ์ ๋จ์ ๊ธฐ๋ก)", approveInstall: "์น์ธ ํ ์ค์น (๋ฐ๋ชจ์์ ๊บผ์ง)",
|
| 171 |
+
auditAboutT: "์ด ๊ธฐ๋ก์ ๋ํด", auditAbout: ["์ปค๋์ ์ฌ์ฌ์ ์๋ฒ ๋์คํฌ์ ๋ก๋๋ค. ๋ฐฑ์๋๊ฐ 60์ด๋ง๋ค ์ด๋ฅผ ๋น๊ณต๊ฐ ์ ์ฅ์์ ๋ฒํธ ๋ถ์ ๊ตฌ๊ฐ์ผ๋ก ๋ณต์ฌํ๊ณ , ์์ํ ๋ ์ ์ฅ๋ ๊ตฌ๊ฐ์ ๋ค์ ๊ฒ์ฌํฉ๋๋ค.", "์๋ ค์ง ํ๊ณ: (1) ๊ตฌ๊ฐ ์ฌ์ด ์ฐ๊ฒฐ์ ์ปค๋ ์ฌ์ฌ ์์ด ์๋๋ผ ๋ณด๊ด ์์ธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๊ตฌ๊ฐ๋ง๋ค ์ฌ์ฌ์ด ์๋ก ์์ํฉ๋๋ค. (2) ์ฅ์ ์ง์ 60์ด ์์ ๊ธฐ๋ก์ ๋ณด๊ด๋ณธ์ ์์ ์ ์์ต๋๋ค. (3) 2026๋
11์ 2์ผ ์คํ 10์(ํ๊ตญ์๊ฐ) ์ด์ ๊ธฐ๋ก์ ๋ณด๊ด๋์ง ์์์ต๋๋ค."], auditName: "Audit Viewer", auditIntro: "๋ชจ๋ ํ์ ๊ณผ ์ด์์ ๋ช
๋ น์ ํด์ ์ฌ์ฌ๋ก ๋ฌถ์
๋๋ค. Verify ๋ ๋ธ๋ผ์ฐ์ ์์ ํด์๋ฅผ ๋ค์ ๊ณ์ฐํฉ๋๋ค.",
|
| 172 |
+
reload: "๋ค์ ๋ถ๋ฌ์ค๊ธฐ", tamper: "Tamper (1๋ฐ์ดํธ ๋ณ์กฐ)", loaded: "๊ฑด ๋ถ๋ฌ์ด",
|
| 173 |
+
vOk: "๊ฒ์ฆ ํต๊ณผ โ: ๋ธ๋ผ์ฐ์ ์์ SHA-256 ์ฌ์ฌ ์ฌ๊ณ์ฐ:", vBad: "๊ฒ์ฆ ์คํจ โ: ๋ถ์ผ์น:",
|
| 174 |
+
tampered: "1๋ฐ์ดํธ๋ฅผ ๋ฐ๊พผ ๊ธฐ๋ก #", pressVerify: ". Verify ๋ฅผ ๋๋ฌ ๋ณด์ธ์.",
|
| 175 |
+
colSeq: "seq", colActor: "์ฃผ์ฒด", colCmd: "๋ช
๋ น", colRes: "๊ฒฐ๊ณผ", colMsg: "ํ์ ๋ฌธ๊ตฌ", colChain: "chain",
|
| 176 |
+
gameName: "Kernel Guard ๐ฎ", gameIntro: "AI ํ๋ ์์ฒญ์ด ์ปค๋๋ก ๋จ์ด์ง๋๋ค. ๋ฟ๊ธฐ ์ ์ ํ์ฉ(โ / A) ๋๋ ๊ฑฐ๋ถ(โ / D)๋ฅผ ๊ณ ๋ฅด์ธ์. ์ ๋ต์ ์ด ๋ฐ๋ชจ ์ปค๋์ด ์ค์ ๋ก ๋ธ ํ์ ์
๋๋ค.",
|
| 177 |
+
score: "์ ์", streak: "์ฐ์", timeLeft: "์๊ฐ", best: "์ต๊ณ ", startGame: "์์ (60์ด)", again: "๋ค์ ํ๊ธฐ",
|
| 178 |
+
allowBtn: "โ ํ์ฉ", denyBtn: "๊ฑฐ๋ถ โ", freeze: "๐ 3์ด ์ ์ง (1ํ)",
|
| 179 |
+
roundOver: "๋ผ์ด๋ ์ข
๋ฃ", match: "์ปค๋๊ณผ ์ผ์น", kernelSame: "์ปค๋์ ๊ฐ์ ๊ท์นํ๋ก ๋งค๋ฒ ๊ฐ์ ๋ต์ ๋
๋๋ค.",
|
| 180 |
+
noSpeed: "์ ๋ต = ์ด ๋ฐ๋ชจ ์ปค๋์ด ๋ธ ํ์ . ์๋ ๋น๊ต๋ ํ์ง ์์ต๋๋ค.",
|
| 181 |
+
timeout: "์๊ฐ ์ด๊ณผ", yourAns: "๋ด ๋ต", kernelAns: "์ปค๋", gameHalted: "๐ ์ปค๋์ด ์ ์ง ์ํ๋ผ ๋ชจ๋ ํ์ ์ด ๋ฉ์ท์ต๋๋ค. ๋จผ์ ์ฌ๊ฐํ์ธ์.",
|
| 182 |
+
g_weather: "๋ ์จ ์กฐํ", g_rmrf: "ํ์ผ ์ ์ฒด ์ญ์ ", g_mail: "๋ฉ์ผ๋ก ๊ณ ๊ฐ์ ๋ณด ์ ์ก", g_fx: "ํ์จ ๊ณ์ฐ", g_search: "๋ด์ค ๊ฒ์",
|
| 183 |
+
g_shadow: "์ํธ ํ์ผ ์ฝ๊ธฐ", g_transfer: "5๋ง ๋ฌ๋ฌ ์ก๊ธ", g_sqli: "๊ฒ์์ฐฝ SQL ์ฃผ์
", g_list: "ํ๋ก์ ํธ ํ์ผ ๋ชฉ๋ก",
|
| 184 |
+
g_persuade: "โ๊ด๋ฆฌ์ ์น์ธ๋จโ + ์ญ์ ", g_up: "์ธ๋ถ ์๋ฒ๋ก ํ์ผ ์
๋ก๋", g_apps: "์ค์น๋ ์ฑ ๋ชฉ๋ก",
|
| 185 |
+
whatsNew: "v0.3 ์ ๊ธฐ๋ฅ", whatsNewText: "VDR ํจํค์ง์ ์ค์๊ฐ ์ฌ์ฌ๋ฅผ ๊ฐ์ถ ViKernel ์ฑ ์คํ ์ด. v0.2: ViKernel Agent Guard ๊ฐ ์งํค๋ ์ค์๊ฐ Meta Muse ์์ด์ ํธ", runModel: "๋์ ๋ชจ๋ธ",
|
| 186 |
+
aboutName: "About", aboutLegal: "๋ชจ๋ธ ์ด๋ฆ์ ๊ฐ ์์ ์์ ์ํ์
๋๋ค.", contact: "๋ฌธ์", home: "ํํ์ด์ง",
|
| 187 |
+
font: "๊ธ๊ผด: Pretendard (SIL Open Font License 1.1).",
|
| 188 |
+
booting: "๋ถํ
์คโฆ (ํด๋ฆญํ๋ฉด ๋ซํ)", openPanel: "์ ์ดํ ์ด๊ธฐ"
|
| 189 |
+
}
|
| 190 |
+
};
|
terminal.js
CHANGED
|
@@ -2,7 +2,7 @@ function segLine(a) {
|
|
| 2 |
if (!a || !a.enabled || a.segment == null) return '';
|
| 3 |
const link = a.prev_head ? 'linked to previous head ' + String(a.prev_head).slice(0, 16) : 'first segment';
|
| 4 |
return '\nsegment ' + a.segment + ' (' + link + ')' +
|
| 5 |
-
'\narchived ' + a.archived_records + ' records, ' + a.segments_verified + ' earlier
|
| 6 |
(a.segments_failed && a.segments_failed.length ? ', FAILED: ' + a.segments_failed.join(',') : '');
|
| 7 |
}
|
| 8 |
/* ViKernel Desktop: Terminal app.
|
|
|
|
| 2 |
if (!a || !a.enabled || a.segment == null) return '';
|
| 3 |
const link = a.prev_head ? 'linked to previous head ' + String(a.prev_head).slice(0, 16) : 'first segment';
|
| 4 |
return '\nsegment ' + a.segment + ' (' + link + ')' +
|
| 5 |
+
'\narchived ' + a.archived_records + ' records, ' + a.segments_verified + ' earlier segment' + (a.segments_verified === 1 ? '' : 's') + ' re-verified' +
|
| 6 |
(a.segments_failed && a.segments_failed.length ? ', FAILED: ' + a.segments_failed.join(',') : '');
|
| 7 |
}
|
| 8 |
/* ViKernel Desktop: Terminal app.
|