Project-specific configuration
This repo (ia_dev) is a standalone depot. Project-specific parameters are stored in projects/<id>/conf.json (e.g. projects/lecoffreio/conf.json). The <id> is the project identifier (directory name under projects/).
Paths in conf.json:
The scripts in ia_dev/deploy/ deploy and build the configured projects (lecoffreio, enso, algo, etc.) in their own directories; they do not deploy ia_dev.
- Absolute (required):
project_path,build_dirs,deploy.scripts_path,deploy.deploy_script_path,deploy.secrets_path,version.package_json_paths— they point to each project repo. - Relative to ia_dev root (this project):
mail.imap_bridge_env,git.token_file. They point to files under ia_dev’s own.secrets/.
Current project selection
There is no "slug" in the URL or path and no fallback file. The project id (directory name under projects/) is resolved only by:
1. Mail ticketing — "to" address
From the To address of an email: search all projects/*/conf.json for tickets.authorized_emails.to equal to that address (case-insensitive). The config may have a single string or a list of env-keyed objects (e.g. [{ "test": "AI.X.TEST@…", "pprod": "…", "prod": "…" }]). The matching project directory name is the id.
2. Request token
The token in the request (e.g. Bearer) is matched by scanning all projects and all envs: each projects/<id>/.secrets/<env>/ia_token is read and compared (content or content + env). The first match yields the project id and the environment (test, pprod, prod).
Scripts use MAIL_TO (env) for (1) or AI_AGENT_TOKEN (env) for (2); they set PROJECT_SLUG and, for (2), PROJECT_ENV. No other source (no IA_PROJECT, no ai_project_id, no .ia_project).
Usage unique : standalone. Tous les scripts sont lancés depuis la racine de ia_dev. Les chemins dans conf sont absolus (sauf imap_bridge_env et token_file, relatifs à la racine de ia_dev).
Schema
One JSON file per project: projects/<id>/conf.json (e.g. projects/lecoffreio/conf.json). The <id> is the directory name; the config file is always named conf.json.
| Field | Required | Description |
|---|---|---|
name |
yes | Human-readable project name |
project_path |
no | Absolute path to the project deploy root (e.g. /home/desk/code/lecoffre_ng_test/deploy). |
build_dirs |
no | Absolute paths to directories where npm run build is run. |
deploy.scripts_path |
no | Absolute path to deploy scripts (e.g. …/deploy/scripts_v2). |
deploy.deploy_script_path |
no | Absolute path to deploy.sh. |
deploy.secrets_path |
no | Absolute path to the project’s .secrets directory. |
version.package_json_paths |
no | Absolute paths to package.json files to bump. |
mail.imap_bridge_env |
no | Relative to ia_dev root: path to IMAP bridge env file (e.g. .secrets/gitea-issues/imap-bridge.env). |
git.token_file |
no | Relative to ia_dev root: path to Gitea token file (e.g. .secrets/gitea-issues/token). |
| version | no | Version/bump configuration; version.splash_app_name for splash message template |
| mail | no | Mail/imap bridge config; mail.imap_bridge_env relative to ia_dev root |
| git | no | Git hosting: wiki_url, git.token_file (relative to ia_dev root). Ticketing URL is under tickets, not git. |
| tickets | no | Ticketing: ticketing_url (Gitea issues URL), authorized_emails (to: alias or list of env-keyed objects, from: list of allowed sender addresses). to resolves the project id when processing mails. See projects/ia_dev/docs/TICKETS_SPOOL_FORMAT.md. |
.secrets at ia_dev root (this repo): contains token and gitea-issues/agent-loop.env, gitea-issues/imap-bridge.env. The paths mail.imap_bridge_env and git.token_file in conf are relative to ia_dev root and point to these files.
The API token for ai_working_help is not in conf.json. It is found by scanning all projects and all envs (as described above): each file projects/<id>/.secrets/<env>/ia_token is read and the Bearer is compared to the file content or to (file content + env). Token value is base + env; env is the environment name (test, pprod, prod), to be adapted per environment. The first match gives project id and env.
Example (minimal)
{
"name": "My App",
"project_path": "/path/to/project/deploy",
"build_dirs": ["/path/to/project/deploy/backend", "/path/to/project/deploy/frontend"]
}
Example (full)
See projects/lecoffreio/conf.json.