HomeProjectsamber-acue
Format

amber-acue

The prompt-file format: the one reader acue studio and the acue book maker share, the .acue book both of them write, and editor support that marks a wrong line as you type.

In use by acue studio, the acue book maker and Pinax
BSD-3-Clause
C ABIGoLSPOdinPython
Acue Media
amber-acue
amber-acue: The prompt-file format: the one reader acue studio and the acue book maker share, the .acue book both of them write, and editor support that marks a wrong line as you type.

A prompt file is plain text. Most of it is the story, and a line that starts with two dashes tells the program what to do with the story around it:

--title Pip and the pond
--style soft watercolour, a small green frog with a red scarf
--scene a pond at first light, mist on the water

--image Pip sits on a lily pad and looks up at the sky
--image a wide shot, the pond and the reeds around it

--voice af_heart
Pip sat by the pond and waited for the sun.

amber-acue is the part that reads these lines. Both acue studio and acue use it, so a file means the same thing to each of them. A line that the program does not use is skipped rather than refused, so one story can go to the picture flow, the narration and the text model in turn. A line it should use but cannot read does not stop the file: it becomes a warning with its line number and the word to fix.

Books

A finished book is one .acue file: the pictures in order, the narration or the soundtrack, short clips, the prompt files it was made from, and the facts about each picture. acue studio and acue write them, and Pinax opens them as a book. Inside it is an ordinary ZIP, so any archive tool can look in.

In your editor

amber-acue comes with a language server, acue-lsp, and the pieces that connect it to an editor. With it, a prompt file shows its mistakes as you type, completes the directive names, explains each one when you hover over it, and lists the pictures as an outline. It also highlights the directive lines and leaves the story alone.

make nvim     # acue-lsp into ~/.local/bin, and three files into your Neovim config
make lsp      # build/acue-lsp, the server VS Code starts; put it on your PATH
make vscode   # dist/acue.vsix, to install in VS Code

In Neovim, a .txt file under a prompts/ folder is read as a prompt file, and :Acue reads any open file as one. VS Code needs one line in its settings to say which files are prompt files, or a command reads the open one as a prompt file. Helix works with a few lines in its own configuration. None of this is in an editor’s extension store yet; the language server, the VS Code extension, the Neovim files and the grammar are downloads on acue.media.

From Go and Python

amber-acue is written in Odin, and it is also a C library: a static one to link and a shared one to load, behind one header. Through it a program in another language parses prompt files and writes .acue books.

To prove that this works, the same small program exists in Go and in Python. acue-watcher-go links the static library through cgo; acue-watcher-python loads the shared library with ctypes. Each watches a folder, parses a prompt file dropped into it, asks an SGLang image server for the pictures and writes the book. The program does nothing new: it shows the library working, and it is a start for anyone who wants to build on it.

Install

amber-acue is not a package of its own: acue studio, the acue book maker and Pinax build it in. The editor support and the Odin and C libraries are downloads on acue.media, or build from source.