diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index daec318..c9b2105 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -1,6 +1,10 @@
version: 2
updates:
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
- package-ecosystem: "maven"
directory: "/"
schedule:
- interval: "daily"
+ interval: "weekly"
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index ead191d..ae6d354 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -1,4 +1,5 @@
name: Java CI
+
on:
push:
branches: [ main ]
@@ -6,19 +7,25 @@ on:
branches: [ main ]
schedule:
- cron: "0 0 * * 0"
+ workflow_dispatch:
+defaults:
+ run:
+ shell: bash
+permissions:
+ contents: read
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
- java: [ '11', '11.0.3', '14', '14.0.1' ]
- name: Java ${{ matrix.Java }}
+ java: [ '21' ]
+ name: Java ${{ matrix.java }}
steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
+ - uses: actions/checkout@v7
+ - uses: actions/setup-java@v6
with:
distribution: 'zulu'
- java-version: ${{ matrix.Java }}
+ java-version: ${{ matrix.java }}
- name: Build with Maven
run: mvn -B package --file pom.xml
diff --git a/.gitignore b/.gitignore
index 1d30442..887747e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -9,4 +9,5 @@ bazel-genfiles
bazel-out
bazel-petitparser
bazel-testlogs
-target/
\ No newline at end of file
+target/
+.vscode/
\ No newline at end of file
diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..ffcab66
--- /dev/null
+++ b/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,3 @@
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.9/apache-maven-3.9.9-bin.zip
diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000..1cacabe
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,180 @@
+# Development Charter & Agent Guidelines
+
+## General Instructions
+
+- Deliver code, tests, and documentation directly with zero introductory fluff or pleasantries.
+- Strictly adhere to 2 spaces for indentation.
+- Preserve zero external runtime dependencies for `petitparser-core` (rely exclusively on the Java standard library).
+- Target Java 21 bytecode compatibility (`21`).
+
+---
+
+## Backward Compatibility & Java Idioms
+
+### Backward Compatibility Principles
+
+- **No Breaking Changes**: Existing public methods, constructors, and classes must remain intact. Downstream modules (`petitparser-json`, `petitparser-xml`, `petitparser-smalltalk`) and user code must continue to compile and pass tests without modification.
+- **Additive Evolution**: Introduce new functionality alongside existing APIs (e.g., provide `starSeparated` returning `SeparatedList` without removing `separatedBy` returning `List