JavaScript API
Built-in APIs available in every Ziew app.
ziew.fs
File system operations.
// Read a file
const content = await ziew.fs.readFile('./data.txt');
// Write a file
await ziew.fs.writeFile('./output.txt', content);
// List directory
const files = await ziew.fs.readDir('./docs');
ziew.ai
Local AI inference. Enable with ziew plugin add ai (requires llama.cpp).
// Check if AI is available
if (ziew.ai.available()) {
console.log('AI ready!');
}
// Text completion (returns full response)
const response = await ziew.ai.complete('Explain quantum computing', {
maxTokens: 256 // Optional, default: 256
});
// Streaming response (async generator)
for await (const token of ziew.ai.stream(prompt, { maxTokens: 512 })) {
output.textContent += token;
}
Installation
# Install llama.cpp
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
cmake -B build -DLLAMA_CURL=OFF
cmake --build build
sudo cmake --install build
# Enable AI plugin
ziew plugin add ai
Model Setup
Place any .gguf model in ~/.ziew/models/. Auto-detected on startup.
# Create models directory
mkdir -p ~/.ziew/models
# Download a model (example: TinyLlama)
wget -O ~/.ziew/models/tinyllama.gguf \
https://huggingface.co/TheBloke/TinyLlama-1.1B-Chat-v1.0-GGUF/resolve/main/tinyllama-1.1b-chat-v1.0.Q4_K_M.gguf
ziew.lua
Lua scripting for backend logic. Enable with ziew plugin add lua (requires LuaJIT).
// Check if Lua is available
if (ziew.lua.available()) {
console.log('Lua ready!');
}
// Call a Lua function (returns string result)
const result = await ziew.lua.call('processData', arg1, arg2);
Lua Backend (backend.lua)
backend.lua
-- backend.lua
function greet(name)
return "Hello, " .. tostring(name) .. "!"
end
function processData(a, b)
return tostring(tonumber(a) + tonumber(b))
end
Installation
# Ubuntu/Debian
sudo apt install libluajit-5.1-dev
# Enable Lua plugin
ziew plugin add lua
ziew.shell
Execute shell commands.
// Run a command
const output = await ziew.shell.exec('git status');
// Spawn a process
const proc = await ziew.shell.spawn('npm', ['install']);
ziew.dialog
Native dialogs.
// Open file picker
const path = await ziew.dialog.open({ filters: ['*.txt', '*.md'] });
// Save dialog
const savePath = await ziew.dialog.save({ defaultName: 'document.txt' });
// Alert
await ziew.dialog.alert('Operation complete!');
Platform Info
console.log(ziew.platform); // 'linux', 'macos', or 'windows'
console.log(ziew.version); // '0.2.0'