jdt manifest --- Generate a Manifest¶
Generates or updates jarvis_package.yaml by scanning your code and extracting metadata. Instead of writing YAML by hand, let jdt manifest introspect your classes and build the manifest for you.
Usage¶
Arguments¶
| Argument | Required | Description |
|---|---|---|
path |
No | Package directory (default: current directory) |
Options¶
| Option | Description |
|---|---|
--non-interactive |
Use defaults without prompting |
--output, -o |
Output directory (default: same as package) |
Examples¶
jdt manifest # Interactive, writes to current directory
jdt manifest . --non-interactive # Use defaults
jdt manifest /path/to/pkg -o /tmp # Write manifest to /tmp
What It Does¶
1. Discovers components¶
Scans the directory tree for files matching convention patterns:
| Pattern | Type |
|---|---|
command.py at root |
command |
commands/*/command.py |
command |
agents/*/agent.py |
agent |
device_families/*/protocol.py |
device_protocol |
device_managers/*/manager.py |
device_manager |
prompt_providers/*/provider.py |
prompt_provider |
routines/*/routine.json |
routine |
2. Introspects classes¶
Dynamically imports each Python component and reads:
- Secrets from the
required_secretsproperty - Pip dependencies from the
required_packagesproperty - Keywords from the
keywordsproperty - Description from the
descriptionproperty - Authentication config for OAuth device protocols
For multi-component packages, secrets and pip packages are deduplicated.
3. Prompts for metadata (interactive mode)¶
Found 2 component(s):
[command] my_weather -> commands/my_weather/command.py
[agent] weather_alerts -> agents/weather_alerts/agent.py
Package name [my_weather]: my_weather
Display name [My Weather]: My Weather
Description [Get weather forecasts]: Weather forecasts with background alerts
Version [0.1.0]: 1.0.0
GitHub username []: alexberardi
Categories: automation, calendar, communication, ...
Categories (comma-separated) [weather]: weather, information
4. Writes the manifest¶
schema: 1
name: my_weather
display_name: My Weather
description: Weather forecasts with background alerts
version: 1.0.0
author:
github: alexberardi
categories:
- weather
- information
keywords:
- weather
- forecast
components:
- type: command
name: my_weather
path: commands/my_weather/command.py
- type: agent
name: weather_alerts
path: agents/weather_alerts/agent.py
secrets:
- key: WEATHER_API_KEY
description: OpenWeatherMap API key
scope: integration
value_type: string
is_sensitive: true
required: true
packages:
- httpx
Updating an Existing Manifest¶
If jarvis_package.yaml already exists, jdt manifest uses its values as defaults. This means you can:
- Edit your code (add secrets, change descriptions, add components)
- Run
jdt manifest .to pick up the changes - Accept or modify the prompted values
The existing manifest is overwritten with the updated version.
Non-Interactive Mode¶
Uses the package directory name as the package name, existing manifest values where available, and introspected values for everything else. Useful for CI or scripting.