Skip to content

H3 - #33

Merged
dkackman merged 15 commits into
masterfrom
h3
Aug 30, 2026
Merged

H3#33
dkackman merged 15 commits into
masterfrom
h3

Conversation

@dkackman

Copy link
Copy Markdown
Owner

No description provided.

dkackman and others added 15 commits August 30, 2026 18:04
- Introduced MiniMaxH3Ref2VAVideo.json: A reference video and image combination for generating a video clip.
- Added MiniMaxH3SitcomShort.json: A structured sitcom short with multiple shots, showcasing character consistency and scene cuts.
- Created MiniMaxMusic.json: An audio-only generation example demonstrating a minimal modular pipeline for music output.
- Updated README.md to include descriptions of new examples and their functionalities.
- Enhanced test coverage in test_arguments.py, test_text_sections.py, and test_workflow.py to validate new audio reference handling and ensure proper referencing in workflows.
A prompts/ folder at the repo root, sibling to examples/: reusable
prompts as JSON (text plus description, intended_model, negative_prompt,
tags), organized by model family. Curated from the prompts already
proven in the example workflows, plus three starters. Workflows load one
with a prompt:<name> argument reference.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The xet path builds two aggregate bars from the injected tqdm class and
drives set_postfix_str/format_dict on them, which the fake Tracker
lacked - every download crashed. Implement the missing surface, and keep
the transfer bar's network bytes out of the shared counters: only
reconstruction bytes match the file-size total, counting both would
double the reported progress.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Stored prompts are JSON files under prompts/ (text plus description,
intended_model, negative_prompt, tags, enhancer provenance), validated
by the new dw/prompt_schema.json. A workflow argument written as
prompt:<name> or prompt:<folder>/<name> loads the file's text at run
time - resolved in realize_args like constant:, rooted at the library
(--prompt-dir on dw.run/dw.serve or DW_PROMPT_DIR, default ./prompts),
confined by validate_prompt_path, and never a cartesian factor. Text
that itself begins with a reference prefix is refused.

The server grows /api/prompts CRUD mirroring the workflows group,
GET /api/prompt-schema, and an enhancer: GET /api/enhancers lists
presets (H3 Context-IR via the builtin workflow, a generic T2I
augmenter on the text_generation task) and POST /api/enhance queues an
inline workflow through the ordinary job queue whose saved text file is
the result.

The SPA gains a Prompts page (same card grid, folder grouping and
filtering as Workflows, with intended-model and tag chips) and a prompt
editor with form/split/JSON views - Monaco now routes the right schema
per document type - plus an Enhance with AI panel: pick a preset and
LLM (cache-checked, downloadable in place), stream the job, and adopt
the result with provenance. The workflow editor suggests prompt:
references and flags dangling ones.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Every example whose prompt was extracted into prompts/ now declares it
as a prompt: reference - one prompt, one place, and the workflows show
the reference pattern in use. Overriding still works the same way:
name=value on the command line or the run form replaces the reference
before it resolves.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Without DW_PROMPT_DIR or a ./prompts in the working directory, the
resolver now walks up from the workflow file's own directory to the
first prompts/ folder - so dw.run and the REPL reach the repo's library
from any working directory, anchored by the workflow itself.

In the UI, the workflow editor's variables grid and the run form's
argument overrides gain a stored-prompt dropdown (full folder/name
references), joining the step-argument inputs that already had one.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
GET /api/prompts details now carry each prompt's text, and a small
shared store (promptlib.svelte.ts) holds the library for every editor
surface - replacing the per-page listing fetches. Hovering an input that
holds a prompt: reference shows the text it resolves to, in the workflow
editor's step arguments, sub-workflow mappings and variables grid, and
in the run form's argument overrides (including the unedited default).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The run form's panel edits the workflow's variables, which is what the
schema and the empty-state already call them. The stored-prompt datalist
now attaches only once the field's effective value starts with prompt:
(typed, or the untouched default), so the dropdown no longer pops over
ordinary text entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The folder is the live library the server and UI edit, not just samples,
and the prompts/ sibling made the mismatch obvious. Defaults in serve,
repl and the server app now point at ./workflows; docs, launch configs
and tests follow. test_docs_links now anchors its path regex so
dw/workflows/ (builtins) and tests/test_data/workflows/ don't match.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
transformers' VITS model calls torch.jit.script at import, reached from
diffusers' auto_pipeline via audioldm2 whenever a pipeline class loads
lazily - no dw code calls the deprecated API.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Server/engine:
- The API now refuses prompt names no 'prompt:' reference could load
  (too deep, bad characters) - 400 on save, 404 on read - and the
  listing skips stray files that break the rule
- dw.serve discovers the prompt directory the way a CLI run does
  (flag, DW_PROMPT_DIR, ./prompts, walk up from the workflow dir),
  then pins one answer for both the Prompts page and job resolution
- Reserved-prefix errors name all four prefixes everywhere; the name
  rule error says 'at most one folder deep'; help text describes the
  real discovery order
- New tests: shipped prompts stay schema-valid, every prompt:
  reference in workflows/ and dw/workflows resolves, unreferenceable
  names are refused by the API

UI:
- Long prompt variables (textarea) get the ref styling and stored-text
  tooltip; every reference-holding input gets class:ref
- The editor's variables grid gates the prompt dropdown behind a typed
  prompt: like the run page (tracking the raw draft, since the value
  commits on blur)
- An intended model with no matching enhancer preset keeps the current
  selection instead of silently picking the H3 preset; switching
  presets no longer clobbers a hand-typed model; the intended-model
  datalist includes values the library already uses
- Save validation messages render red, not as a green checkmark;
  savePath no longer mutates state during render
- Prompt cards: chips are no longer buttons nested in an anchor (an
  overlay link keeps the markup valid); cards without a description
  fall back to the prompt text; both list pages get empty states
- Enhancer-offline shows a message instead of a dead disabled button;
  delete confirm wording matches the other pages; saves and deletes
  refresh the shared prompt store; dead code removed

Docs: README gains a Web UI paragraph and guide link for the library,
CLAUDE.md counts/coverage updated and builtin-vs-top-level workflows
disambiguated, SERVER/WORKFLOW_GUIDE describe the pinned server
prompt dir, stale prose from the rename tidied.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- Deleting a prompt now warns which workflows reference it: workflow
  listing details carry prompt_refs (collected recursively from each
  definition, mtime-cached like the rest), and the editor's delete
  confirm names the workflows that would fail at run time
- Textarea fields - step arguments named prompt, and long variable
  overrides on the run page - get a 'use a stored prompt…' select,
  since a datalist can't attach to a textarea; picking one swaps in
  the prompt: reference, which re-renders as a reference input with
  the datalist and tooltip

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@dkackman
dkackman merged commit 0c1514c into master Aug 30, 2026
4 of 5 checks passed
@dkackman
dkackman deleted the h3 branch August 30, 2026 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant