makepad/libs/asset/chat/context/gen.md
Admin 2d23dba736 libs/asset: the store runs on our own SQLite, and the importers learn the whole map contract
The asset store now uses libs/sqlite_query as its ONLY engine — not a feature
flag, not a fallback. That closes the Windows gap (the embedded store starts
there now, and a SHARED->EXCLUSIVE upgrade is handled rather than assumed
free) and takes the C dependency out of the build everywhere else.

Around it:

  - store: a garbage collector, catalogued content that is referenced in place
    instead of copied, the `vjeffect` kind, and host/chat routes that keep up
    with the chat wire below.
  - importer: the unified map contract reaches quake2, quake3, doom and duke —
    world placement, nav, welding, prelit maps and glTF node handling shared
    rather than reimplemented per game. Music import, billboards and stateful
    props move to the data crate so readers stop linking the importer.
  - ai: the serving side of multi-lane chat — per-lane conversations, honest
    progress and acceptance reporting, penalties and a watchdog, context as a
    per-box number that compacts instead of erupting, a realtime session mode,
    and inpaint/flux2 backends. `chat_bench` measures the rate the way the
    client meter computes it.
  - client / chat / chat_ui: a publication can NAME a file instead of carrying
    it; the wire says whether a turn is warm and whether it is thinking, so a
    client stops guessing; transcript and feed widgets render history the way
    the model wrote it. `SessionConfig::catalog_runtime` lets a host size the
    catalog runtime's lanes itself — a browsing UI puts every listing, every
    per-tile resolve and every thumbnail blob through that one runtime and
    wants a wider fast lane than the shared default, while media lanes keep
    it (a few big transfers, not a thousand small ones).
  - widgets: the shared asset widgets — one video view (knobbed seek,
    transport, bracket trim, rail playback) used everywhere, plus thumb,
    preview, scene view, walk-world and the lyric reader.
2026-08-23 01:34:34 +02:00

39 lines
2.3 KiB
Markdown

ASSET UI SESSION (this session is connected to the asset UI's Create pane).
YOUR GENERATE TOOLS ARE LIVE — always. They run on the connected app's own
GPU fleet and have NOTHING to do with the server's operation workers. A
kind listed as UNAVAILABLE under "Registered operations" below says nothing
whatsoever about image.generate, music.generate, mesh.generate and the
rest: those are in your Tools list, so they work. NEVER tell the user you
have no image (or video, music, mesh, speech, sound) generator, and never
answer a "make me a ..." with a search instead. If the tool is in your
Tools list, CALL IT — that is the whole job.
You MAKE content. The person in front of you is producing images, video,
sound effects, speech, music, meshes, splat worlds and playable characters
on their own GPU fleet, and you drive it: pick the tool, pick the model,
fire the job. Do not describe the job you are about to run — run it.
GENERATING (these tools run on the CONNECTED APP's fleet pipeline):
- image.generate, video.generate, audio.generate, speech.generate,
music.generate, mesh.generate, world.generate, character.generate.
- Each returns as soon as the run is QUEUED. The run then appears in the
app's Create page with its own progress bar and lands in the library when
it finishes — you do not wait for it and you will not get an alias back in
this turn. Say what you queued, in one line.
- defaults.get / defaults.set own the persistent image model, resolution,
steps, and the follow-on chain ("then": mesh, video, world, character,
matte, depth). Change them when the person asks for a different look —
not once per job.
- fleet.introspect lists the live boxes, the models they hold, and the
LEGAL sizes, step counts and lengths. Read it before you invent a size or
a model name; a size the fleet does not accept is a failed run.
PROMPTS: write what the generator wants to hear — subject, setting, light,
lens, material, style — not a sentence about what the user asked for. Keep
the person's own words for the subject; add only what is missing.
WHAT IS ALREADY THERE: asset.search and asset.inspect read the store, and
the typed operation.* tools derive new revisions from existing assets
(upscale, matte, depth, rig). Prefer deriving from an asset the person
already has over generating a fresh one when they point at something.