From 39e7d3d4676ae5d8b8e2086a7940d6bed11c769f Mon Sep 17 00:00:00 2001 From: Tad Melton Date: Mon, 31 Aug 2026 14:16:05 -0400 Subject: [PATCH 1/5] claude init for WIP --- AGENTS.md | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..823ae614 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,68 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +OpenVXML is a VoiceXML IVR (Interactive Voice Response) development platform built as Eclipse/OSGi plugins. Originally the "Eclipse Voice Tools Project" (VTP) by OpenMethods, now maintained by VHT/Medallia. It provides a visual IDE for designing IVR call flows (desktop layer) and a server-side runtime engine that executes them (framework layer). + +## Build + +Requires JDK 8 (Amazon Corretto 8 in CI) and Maven 3.5.x. No Maven wrapper is included. + +```bash +mvn clean verify +``` + +This is the only build command. There are no profiles or separate test goals. The build uses Eclipse Tycho 1.3.0 with the pomless extension (`.mvn/extensions.xml`), so most plugins don't need individual pom.xml files — Tycho infers module types from `MANIFEST.MF` and `feature.xml`. + +Build output (p2 update site): `com.vht.openvxml.releng/com.vht.openvxml.update/target/repository/` + +## Testing + +There is effectively no automated test suite. The one test class (`org.eclipse.vtp.framework.util/src/test/java/.../XMLUtilitiesXXETest.java`) is **not run by `mvn verify`** because Tycho only compiles `src/main/java`. It must be run from an IDE with the bundled JUnit 4.13.2 and Hamcrest 1.3 jars on the classpath. + +## Architecture — Three Layers + +**Desktop** (`com.vht.openvxml.desktop`) — Eclipse RCP plugins providing the visual IVR design IDE: workflow editors with visual themes (Attraction, Mantis), model layers for business objects/databases/web services, media/voice prompt editors, project management and WAR export. + +**Framework** (`com.vht.openvxml.framework`) — Server-side runtime engine deployed as a WAR via the Eclipse Equinox Servlet Bridge. Core subsystems: process engine and session management (`framework.engine`), extension points for actions/configurations/observers/services (`framework.core`), voice interaction handling (`framework.interactions.*`), JavaScript scripting via Mozilla Rhino, database and web service connectors. + +**Platforms** (`com.vht.openvxml.platforms`) — Telephony platform integrations: Genesys GVP, Cisco CVP, Dialogic, Prophecy, AVP, VTOP, VXMLB, and IDriver (native Windows telephony via JNA). + +## Module Layout + +Each layer follows the same pattern: `*.features` (Eclipse feature definitions) and `*.plugins` (OSGi bundles). The parent POM chain is: plugin → `com.vht.openvxml.configuration` (in `com.vht.openvxml.releng`) → root. + +Standard Eclipse plugin structure per bundle: +- `META-INF/MANIFEST.MF` — OSGi bundle manifest (dependencies, exports, execution environment) +- `plugin.xml` — Eclipse extension point declarations +- `build.properties` — source folders and build includes +- `src/main/java/` — Java source + +## Package Naming + +- `org.eclipse.vtp.framework.*` — runtime framework (historical VTP origin) +- `org.eclipse.vtp.desktop.*` — desktop IDE +- `org.eclipse.vtp.modules.*` — modular UI components +- `com.openmethods.openvxml.*` — platform integrations, desktop model extensions, idriver + +## Key Dependencies + +Eclipse Kepler SR2 (with Java 8 patches), OSGi/Equinox, Apache HttpClient 4.5.13, Jackson 2.13.x (in Genesys/VXMLB platforms), Mozilla Rhino, Apache Derby, Xerces. No Spring or modern web frameworks. + +## Security: XXE Hardening + +XML parsing is centralized through `XMLUtilities` in `org.eclipse.vtp.framework.util`. All runtime XML parsers are routed through this class with XXE-prevention features enabled. When adding new XML parsing, use `XMLUtilities` rather than creating parser instances directly. + +## PR Conventions + +PRs use the template in `.github/PULL_REQUEST_TEMPLATE.md` with sections: Card(s), Related Pull Requests, Changes Made, Test Procedure (Cucumber format). Code ownership: `@VHT/prem-voice-platform`. + +## CI + +Jenkins pipeline in `jenkins/ci_build/JenkinsFile`. Runs `mvn clean verify` on Ubuntu with Corretto JDK 8, then packages the p2 repository and publishes it to a build server. + +## Related Repository + +VXML-IVR (`github.com/VHT/VXML-IVR`) builds the final deployable product and consumes this repo's p2 update site as a dependency. From 102c59a51ab16916fd3a538c1ced9c81e157a844 Mon Sep 17 00:00:00 2001 From: Tad Melton Date: Mon, 31 Aug 2026 14:49:38 -0400 Subject: [PATCH 2/5] normalizing sections Co-Authored-By: Claude Opus 4.6 --- AGENTS.md | 57 ++++++++++++++++++++----------------------------------- 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 823ae614..3ecb6f47 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,28 +1,28 @@ -# CLAUDE.md +# OpenVXML -This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. - -## Project Overview - -OpenVXML is a VoiceXML IVR (Interactive Voice Response) development platform built as Eclipse/OSGi plugins. Originally the "Eclipse Voice Tools Project" (VTP) by OpenMethods, now maintained by VHT/Medallia. It provides a visual IDE for designing IVR call flows (desktop layer) and a server-side runtime engine that executes them (framework layer). +VoiceXML IVR development platform built as Eclipse/OSGi plugins. Originally the "Eclipse Voice Tools Project" (VTP) by OpenMethods, now maintained by VHT/Medallia. Provides a visual IDE for designing IVR call flows (desktop layer) and a server-side runtime engine that executes them (framework layer). ## Build -Requires JDK 8 (Amazon Corretto 8 in CI) and Maven 3.5.x. No Maven wrapper is included. +Requires JDK 8 (Amazon Corretto 8 in CI) and Maven 3.5.x. No Maven wrapper included. ```bash mvn clean verify ``` -This is the only build command. There are no profiles or separate test goals. The build uses Eclipse Tycho 1.3.0 with the pomless extension (`.mvn/extensions.xml`), so most plugins don't need individual pom.xml files — Tycho infers module types from `MANIFEST.MF` and `feature.xml`. - Build output (p2 update site): `com.vht.openvxml.releng/com.vht.openvxml.update/target/repository/` -## Testing +Uses Eclipse Tycho 1.3.0 with the pomless extension (`.mvn/extensions.xml`), so most plugins don't need individual pom.xml files. + +Key dependencies: Eclipse Kepler SR2, OSGi/Equinox, Apache HttpClient 4.5.13, Jackson 2.13.x, Mozilla Rhino, Apache Derby, Xerces. + +## Test + +No automated test suite. The one test class (`org.eclipse.vtp.framework.util/src/test/java/.../XMLUtilitiesXXETest.java`) is not run by `mvn verify` because Tycho only compiles `src/main/java`. Must be run from an IDE with JUnit 4.13.2 and Hamcrest 1.3 on the classpath. -There is effectively no automated test suite. The one test class (`org.eclipse.vtp.framework.util/src/test/java/.../XMLUtilitiesXXETest.java`) is **not run by `mvn verify`** because Tycho only compiles `src/main/java`. It must be run from an IDE with the bundled JUnit 4.13.2 and Hamcrest 1.3 jars on the classpath. +## Architecture -## Architecture — Three Layers +Three layers, each following the same pattern: `*.features` (Eclipse feature definitions) and `*.plugins` (OSGi bundles). Parent POM chain: plugin -> `com.vht.openvxml.configuration` (in `com.vht.openvxml.releng`) -> root. **Desktop** (`com.vht.openvxml.desktop`) — Eclipse RCP plugins providing the visual IVR design IDE: workflow editors with visual themes (Attraction, Mantis), model layers for business objects/databases/web services, media/voice prompt editors, project management and WAR export. @@ -30,39 +30,24 @@ There is effectively no automated test suite. The one test class (`org.eclipse.v **Platforms** (`com.vht.openvxml.platforms`) — Telephony platform integrations: Genesys GVP, Cisco CVP, Dialogic, Prophecy, AVP, VTOP, VXMLB, and IDriver (native Windows telephony via JNA). -## Module Layout - -Each layer follows the same pattern: `*.features` (Eclipse feature definitions) and `*.plugins` (OSGi bundles). The parent POM chain is: plugin → `com.vht.openvxml.configuration` (in `com.vht.openvxml.releng`) → root. - Standard Eclipse plugin structure per bundle: -- `META-INF/MANIFEST.MF` — OSGi bundle manifest (dependencies, exports, execution environment) +- `META-INF/MANIFEST.MF` — OSGi bundle manifest - `plugin.xml` — Eclipse extension point declarations - `build.properties` — source folders and build includes - `src/main/java/` — Java source -## Package Naming - -- `org.eclipse.vtp.framework.*` — runtime framework (historical VTP origin) -- `org.eclipse.vtp.desktop.*` — desktop IDE -- `org.eclipse.vtp.modules.*` — modular UI components -- `com.openmethods.openvxml.*` — platform integrations, desktop model extensions, idriver - -## Key Dependencies - -Eclipse Kepler SR2 (with Java 8 patches), OSGi/Equinox, Apache HttpClient 4.5.13, Jackson 2.13.x (in Genesys/VXMLB platforms), Mozilla Rhino, Apache Derby, Xerces. No Spring or modern web frameworks. - -## Security: XXE Hardening +Package namespaces: `org.eclipse.vtp.framework.*` (runtime), `org.eclipse.vtp.desktop.*` (IDE), `org.eclipse.vtp.modules.*` (modular UI), `com.openmethods.openvxml.*` (platform integrations). -XML parsing is centralized through `XMLUtilities` in `org.eclipse.vtp.framework.util`. All runtime XML parsers are routed through this class with XXE-prevention features enabled. When adding new XML parsing, use `XMLUtilities` rather than creating parser instances directly. +XML parsing is centralized through `XMLUtilities` in `org.eclipse.vtp.framework.util` with XXE-prevention features enabled. Use `XMLUtilities` rather than creating parser instances directly. -## PR Conventions +## CI/CD -PRs use the template in `.github/PULL_REQUEST_TEMPLATE.md` with sections: Card(s), Related Pull Requests, Changes Made, Test Procedure (Cucumber format). Code ownership: `@VHT/prem-voice-platform`. +Jenkins pipeline in `jenkins/ci_build/JenkinsFile`. Runs `mvn clean verify` on Ubuntu with Corretto JDK 8, then packages the p2 repository and publishes to a build server. -## CI +## Related Repos -Jenkins pipeline in `jenkins/ci_build/JenkinsFile`. Runs `mvn clean verify` on Ubuntu with Corretto JDK 8, then packages the p2 repository and publishes it to a build server. +VXML-IVR (`github.com/VHT/VXML-IVR`) builds the final deployable product and consumes this repo's p2 update site. -## Related Repository +## Conventions -VXML-IVR (`github.com/VHT/VXML-IVR`) builds the final deployable product and consumes this repo's p2 update site as a dependency. +Code ownership: `@VHT/prem-voice-platform`. PRs use `.github/PULL_REQUEST_TEMPLATE.md` with sections: Card(s), Related Pull Requests, Changes Made, Test Procedure (Cucumber format). From d47a60c2f4ab2b66711fcce297f9cb6e19b1fd0a Mon Sep 17 00:00:00 2001 From: Tad Melton Date: Tue, 1 Sep 2026 15:40:42 -0400 Subject: [PATCH 3/5] Add/normalize Relevant Projects section in AGENTS.md for cross-repo context Co-Authored-By: Claude Sonnet 5 --- AGENTS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 3ecb6f47..d9b7cc4e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -44,9 +44,9 @@ XML parsing is centralized through `XMLUtilities` in `org.eclipse.vtp.framework. Jenkins pipeline in `jenkins/ci_build/JenkinsFile`. Runs `mvn clean verify` on Ubuntu with Corretto JDK 8, then packages the p2 repository and publishes to a build server. -## Related Repos +## Relevant Projects -VXML-IVR (`github.com/VHT/VXML-IVR`) builds the final deployable product and consumes this repo's p2 update site. +- `VXML-IVR` — builds the final deployable product and consumes this repo's p2 update site. ## Conventions From a7c61b53cfa9500b42074848a6e5161e3df03912 Mon Sep 17 00:00:00 2001 From: Tad Melton Date: Thu, 3 Sep 2026 15:32:40 -0400 Subject: [PATCH 4/5] Remove code ownership statement from AGENTS.md Co-Authored-By: Claude Sonnet 5 --- AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index d9b7cc4e..39c76a56 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -50,4 +50,4 @@ Jenkins pipeline in `jenkins/ci_build/JenkinsFile`. Runs `mvn clean verify` on U ## Conventions -Code ownership: `@VHT/prem-voice-platform`. PRs use `.github/PULL_REQUEST_TEMPLATE.md` with sections: Card(s), Related Pull Requests, Changes Made, Test Procedure (Cucumber format). +PRs use `.github/PULL_REQUEST_TEMPLATE.md` with sections: Card(s), Related Pull Requests, Changes Made, Test Procedure (Cucumber format). From ec1050db1464990591f000acca31fd1da884d182 Mon Sep 17 00:00:00 2001 From: Tad Melton Date: Fri, 4 Sep 2026 11:02:58 -0400 Subject: [PATCH 5/5] Add CLAUDE.md referencing AGENTS.md Co-Authored-By: Claude Sonnet 5 --- CLAUDE.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..43c994c2 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1 @@ +@AGENTS.md