Skip to content

Getting Started is broken: new-project fails and the README steps do not work as written #47

Description

@nickhuo

The Getting Started and Development Guide sections of README.md no longer match the code. Following them from a clean machine does not produce a working project. Each item below was reproduced.

1. README.md:66cp -r ../examples/* ./ copies five projects

cp -r ../examples/* ./

examples/ now holds five separate project directories (email_assistant, finance, helloworld, portfolio, text2sql), not the contents of one project. This drops all five into my-app instead of scaffolding one.

Should name a single project, e.g. cp -r ../examples/helloworld/* ./.

2. README.md:45 — project structure says workflows/, code expects workflow/

├── workflows/            # Workflow scripts (deployed as REST APIs)

Every example uses workflow/ (singular). The plural spelling dates from before 9b2305d, which renamed the directory.

This one is worth more than a typo fix: when workflow_file in config/global_controller.yaml points at a path that does not exist, cli.py logs Workflow file not found and then continues. The build still exits 0 and still reports Build complete., it just never builds the Workflow image. Anyone following the README's spelling gets a silent partial build.

3. README.md:19 — placeholder clone URL

git clone https://github.com/your-repo/ventis.git

Never filled in. Should be https://github.com/CanyonCodeCoreAI/canyoncodecore.git.

Related: the next line is cd ventis, which is correct for a fresh clone whose directory is named ventis, but the repo also contains a ventis/ package directory. Anyone whose checkout directory is named something else (a worktree, or a clone of canyoncodecore) lands inside the package, where there is no pyproject.toml. Worth disambiguating.

4. README.md:21pip install -e . skips the environment setup it needs

pip install -e .

Three things make this fail on a stock macOS machine, and the resulting error names none of them:

  • pyproject.toml sets requires-python = ">=3.10"; the system interpreter is Python 3.9.6.
  • There is no setup.py, so an editable install goes through PEP 660, which needs pip >= 21.3. The pip bundled with Apple's Command Line Tools is 21.2.4.
  • pip is often not on PATH at all; only python3 -m pip works.

What that combination actually prints is misleading:

ERROR: File "setup.py" or "setup.cfg" not found.
       Directory cannot be installed in editable mode

The real cause is the pip version, not a missing file.

A virtual environment step would sidestep all three. What works today:

uv venv --python 3.12
uv pip install -e .

5. ventis new-project does not run at all

$ ventis new-project my-app
ERROR:ventis:Templates directory not found at .../ventis/templates
$ echo $?
1

README.md:37 opens the Development Guide with this command, so the documented path is dead at step one.

9b2305d moved ventis/templates/ to examples/helloworld/ but updated neither caller:

  • cli.py _get_templates_dir() still returns <package>/templates
  • pyproject.toml still declares package-data = ["templates/**/*"]

Pointing the CLI at examples/ is not a fix on its own: [tool.setuptools.packages.find] include = ["ventis*"] means examples/ never reaches a wheel, so it would work for an editable install and break for a real one. The template has to live inside the package, which is what package-data already assumes.

Three further problems are baked into the moved template itself, and each only surfaces at deploy time:

  • config/global_controller.yaml points at workflows/example_workflow.py while the directory is now workflow/. Per item 2, that means the Workflow image is silently never built.
  • workflow/example_workflow.py does from example_agent_stub import ExampleAgentStub. stub_generator emits stubs/<yaml basename>.py containing a class named after agent.name, so both the module and the class name are wrong.
  • agents/example_agent.yaml and agents/example_agent.py share a basename. The Docker context is flat, and generate_docker copies the entrypoint last, so the generated stub is overwritten by the implementation.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions