Skip to content

Ventis fixes extracted from the CLI packaging work - #70

Open
Saaketh0 wants to merge 2 commits into
feature/config-reloadingfrom
fixes/ventis-cli-fixes
Open

Ventis fixes extracted from the CLI packaging work#70
Saaketh0 wants to merge 2 commits into
feature/config-reloadingfrom
fixes/ventis-cli-fixes

Conversation

@Saaketh0

@Saaketh0 Saaketh0 commented Sep 4, 2026

Copy link
Copy Markdown
Collaborator

Everything under ventis/ and tests/ that the canyonos CLI branch depends on, lifted off feature/config-reloading with no cli/ or examples/ changes.

  • Package layout: move deploy/future/ventis_context/bedrock/utils under ventis/controller/, add ventis/Dockerfile and ventis/README.md.
  • ventis/server.py: Flask control surface the CLI's container talks to (/deploy, /clean, health), replacing the ad-hoc entrypoint.
  • ventis/cli.py: fold build into deploy, support the .car artifact layout (.car/app sources, .car/config declarations, .car/stubs), and resolve env_file against the project dir so it matches how the GlobalController resolves it at runtime.
  • GlobalController: persist a dashed-uuid project_id and publish the controller identity to Redis.
  • OTLP exporter: generate Future.id at 64 bits instead of the previous 128 bits, so it is a valid OTel span_id without truncation, and cost lookups that fail (no pricing table on a local deploy) now cost at 0 instead of dropping the whole telemetry row.
  • stub_generator: Removed the dual placement of stubs, now only placing them at their initial entrypoint instead of also at root.

Everything under ventis/ and tests/ that the canyonos CLI branch depends
on, lifted off feature/config-reloading with no cli/ or examples/ changes.

- Package layout: move deploy/future/ventis_context/bedrock/utils under
  ventis/controller/, add ventis/Dockerfile and ventis/README.md.
- ventis/server.py: Flask control surface the CLI's container talks to
  (/deploy, /clean, /status), replacing the ad-hoc entrypoint.
- ventis/cli.py: fold `build` into `deploy`, support the .car artifact
  layout (.car/app sources, .car/config declarations, .car/stubs), and
  resolve env_file against the project dir so it matches how the
  GlobalController resolves it at runtime.
- GlobalController: persist a dashed-uuid project_id and publish the
  controller identity to Redis.
- OTLP exporter: generate Future.id at 64 bits (secrets.token_hex(8)) so
  it is a valid OTel span_id without truncation, and cost lookups that
  fail (no pricing table on a local deploy) now cost at 0 instead of
  dropping the whole telemetry row.
- stub_generator: a stub is written to exactly one location, the path of
  the entrypoint it replaces, rather than being duplicated at the flat
  basename as well. Flat is only the fallback for a stub with no
  entrypoint mapping or one whose mapping escapes the build context.
  Carries over the placement half of 692d17c from feature/all-the-files,
  which never reached this line; the entrypoint-adjacent YAML discovery
  from that commit is deliberately left out, since the .car layout
  already resolves declarations from .car/config.
- stub_generator: fail loudly when an agent has no declaration or
  entrypoint.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@Saaketh0 Saaketh0 self-assigned this Sep 4, 2026
@coderabbitai

coderabbitai Bot commented Sep 4, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

🗂️ Base branches to auto review (1)
  • main

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: 3675c147-ce4e-4937-9c41-7604ff08ed7c

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Comment thread ventis/server.py
config_path = data.get("config_path", "config/global_controller.yaml")
full_path = os.path.join(WORKSPACE_DIR, config_path)

if not os.path.isfile(full_path):
Stub placement is now mirrored-only, so a workflow importing the flat
basename no longer resolves -- the stub is written to agents/<name>.py
and nothing is left at the context root. Switch the four example
workflows to the nested form.

Cherry-picked from 7f925ef on fix/remove-duplicate-stub.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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.

2 participants