134 Commits

Author SHA1 Message Date
Christopher Hertel
fac01b75c4 Convert run-examples workflow to manual trigger 2026-03-20 13:31:09 +01:00
Christopher Hertel
992eee8f51 Drop on push for pipeline workflows 2026-03-15 23:07:23 +01:00
Oskar Stark
7034eb8035 [Store] Auto-discover store bridges with integration tests in CI matrix
Instead of maintaining a hardcoded list of store bridges in the
`store-bridges-integration` job, dynamically detect which bridges have
integration tests by scanning for the `#[Group('integration')]` attribute.
This way a new bridge with integration tests is automatically picked up
without needing to update the workflow file.
2026-02-24 08:10:39 +01:00
Christopher Hertel
610f0c6d6e Run Vektor integration test in pipeline 2026-02-23 23:30:11 +01:00
Oskar Stark
579bd71314 [Deptrac] Add missing bridge layers and validate coverage in CI 2026-02-19 13:50:59 +01:00
Oskar Stark
66035abc96 [CI] Improve dependency validation job names 2026-02-18 12:27:33 +01:00
Oskar Stark
bf117c2478 [CI] Add configurable dependency version validation script 2026-02-18 12:23:26 +01:00
Oskar Stark
e30d0bc539 Bump phpunit/phpunit to ^11.5.53 across all components 2026-02-18 11:36:38 +01:00
Oskar Stark
daae1f6ffb [CI] Fix circular symlinks in bridge test jobs using an Isolate Bridge composite action 2026-02-18 11:18:04 +01:00
Johannes Wachter
919daea5fc [Store] Add query abstraction with filter support 2026-02-16 20:33:28 +01:00
Christopher Hertel
fb5985e34c Implement remove() method for SurrealDb 2026-02-14 02:29:09 +01:00
Christopher Hertel
611e2b7694 Implement remove() method for Typesense 2026-02-14 01:55:07 +01:00
Christopher Hertel
1e1a84e6b3 Remove some stores from command lifecycle tests after integration tests 2026-02-14 01:02:02 +01:00
Christopher Hertel
0e20e22fa8 Introduce integration tests for stores 2026-02-13 23:12:15 +01:00
Oskar Stark
4e5fb81dfa Add LICENSE year validation for new bridge files
Validate that newly added LICENSE files have the correct first line
format: "Copyright (c) {YEAR}-present Fabien Potencier" where YEAR
is the current year. Existing and modified LICENSE files are not
affected by this check.

Also update the workflow to fetch the base branch so the script can
properly detect which LICENSE files are new.
2026-01-29 09:49:52 +01:00
Oskar Stark
0ada8807e8 Add AI coding guidelines for empty() avoidance and PR template usage
- Add guideline to avoid empty() function, preferring explicit checks
- Add Pull Requests section documenting PR template usage
- Create .github/copilot-instructions.md for GitHub Copilot
2026-01-28 22:40:51 +01:00
Christopher Hertel
b08b9d6c2f Split bundle options into smaller chunks 2026-01-24 11:39:01 +01:00
Christopher Hertel
547c04dc28 Bump deptrac for SF 8 2026-01-23 13:49:59 +01:00
Guillaume Loulier
473e82c4e8 ci 2026-01-09 13:50:51 +01:00
Claude
8d7d919a6d [Store] Change StoreInterface::add() from variadic to array parameter
This change improves backwards compatibility by allowing future
parameters to be added to the method signature. With variadic
parameters, no additional arguments can be added after the variadic
argument per PHP's BC policy.
2025-12-30 22:52:40 +01:00
Oskar Stark
e251bb3108 minor #1328 [CI] Improvements (OskarStark)
This PR was squashed before being merged into the main branch.

Discussion
----------

[CI] Improvements

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Docs?         | no
| Issues        | --
| License       | MIT

Extracted from
* #1298

Commits
-------

e14af589 [CI] Improvements
2025-12-30 22:38:18 +01:00
Oskar Stark
e14af5890c [CI] Improvements 2025-12-30 22:38:14 +01:00
Johannes Wachter
3349d1c30a [Mate] Add debug:capabilities command 2025-12-30 22:19:30 +01:00
Oskar Stark
a475b20bfd [Run examples] Fix build-packages path in run-examples workflow 2025-12-28 23:22:19 +01:00
Oskar Stark
89c2f0722c Remove deptrac for Symfony 8 in CI
deptrac does not support Symfony 8 yet, so remove it from the root
composer.json before installing dependencies when testing with Symfony 8.
2025-12-28 17:10:12 +01:00
Tobias Nyholm
54e127d6a7 [Mate] Support SF5.4 and SF6.4 2025-12-28 08:27:59 +01:00
Tobias Nyholm
11f5912393 [Mate] Add bridges to CI 2025-12-26 18:06:55 +01:00
Oskar Stark
62c1f5b09b [AI Bundle] Make agent, store, and chat packages optional 2025-12-23 21:59:21 +01:00
Christopher Hertel
f45fad5261 Try to stabilize pipeline 2025-12-23 17:34:00 +01:00
Johannes Wachter
49175319d9 [Mate] Discuss: Bridge vs Extension terminology for Mate 2025-12-22 16:00:30 +01:00
Christopher Hertel
73200766c6 Update owners after mate merge 2025-12-21 16:29:18 +01:00
Christopher Hertel
424bd3d4c1 feature #1146 Add AI Mate component for MCP server integration (wachterjohannes)
This PR was squashed before being merged into the main branch.

Discussion
----------

 Add AI Mate component for MCP server integration

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | yes
| Docs?         | yes
| Issues        | -
| License       | MIT

## Description

This PR introduces the **AI Mate component** (`symfony/ai-mate`), a standalone MCP server that enables AI assistants (Claude, GitHub Copilot, JetBrains AI, Cursor) to interact with PHP/Symfony applications through standardized tools.

### Key Features

**Core Server**
- Extension discovery system via `extra.ai-mate` in `composer.json`
- Automatic service registration with Symfony DI container
- Feature filtering to enable/disable specific tools per extension
- Built-in tools: `php-version`, `operating-system`, `php-extensions`

**Symfony Bridge** (`symfony/ai-mate-symfony`)
- `symfony-services` tool for container introspection
- Parses compiled container XML to expose service definitions

**Monolog Bridge** (`symfony/ai-mate-monolog`)
- Log search and analysis tools
- Supports both JSON and standard Monolog line formats
- Tools: `monolog-search`, `monolog-search-regex`, `monolog-context-search`, `monolog-tail`, `monolog-list-files`, `monolog-list-channels`, `monolog-by-level`

### Architecture

Unlike other Symfony AI components, Mate is **standalone** and does not integrate with the AI Bundle. It runs as an independent MCP server via stdio transport.

```
src/ai-mate/
├── src/
│   ├── Command/           # CLI commands (serve, init, discover, clear-cache)
│   ├── Container/         # DI container management
│   ├── Discovery/         # Extension discovery system
│   ├── Capability/        # Built-in MCP tools
│   ├── Service/           # Internal services
│   └── Bridge/
│       ├── Symfony/       # Container introspection
│       └── Monolog/       # Log analysis
├── tests/
├── resources/             # Template files for init command
└── bin/mate               # Executable
```

### Usage Example

```bash
# Install
composer require symfony/ai-mate

# Initialize configuration
vendor/bin/mate init

# Discover extensions
vendor/bin/mate discover

# Start server (typically called by AI assistant)
vendor/bin/mate serve
```

**Creating custom tools:**

```php
// mate/MyTool.php
namespace App\Mate;

use Mcp\Capability\Attribute\McpTool;

class MyTool
{
   #[McpTool(name: 'my_tool', description: 'My custom tool')]
   public function execute(string $param): array
   {
       return ['result' => $param];
   }
}
```

### Documentation

Comprehensive documentation added to `docs/components/mate.rst`:
- Quick start guide
- Configuration reference
- Bridge documentation with troubleshooting
- Integration guides for Claude Desktop, Claude Code, JetBrains AI
- Extension development guide"

Commits
-------

c151ab83  Add AI Mate component for MCP server integration
2025-12-21 16:18:03 +01:00
Johannes Wachter
c151ab8388 Add AI Mate component for MCP server integration 2025-12-21 16:17:58 +01:00
Christopher Hertel
913d44c7a7 Link vendors in bridge pipelines 2025-12-20 08:12:00 +01:00
Oskar Stark
496eb89069 Add bridge type validation and fix message store types
- Add validate-bridge-type.sh script to validate composer.json type field
- Update validation workflow to run type validation for all bridge types
- Fix message store bridges to use "symfony-ai-message-store" type
2025-12-19 09:31:33 +01:00
Oskar Stark
926e91a98d Remove detect changes step from validation workflow
Run all bridge validation jobs directly in parallel without conditional filtering.
2025-12-18 23:00:40 +01:00
Oskar Stark
373cb36f56 [Chat] Split message store bridges into dedicated packages 2025-12-18 22:54:53 +01:00
Oskar Stark
3b4027956e Move GitHub workflow files to .github/workflows/ directory 2025-12-18 19:54:01 +01:00
Oskar Stark
326b88dfd1 minor #1195 [CI] Trigger validation on any bridge file change (OskarStark)
This PR was merged into the main branch.

Discussion
----------

[CI] Trigger validation on any bridge file change

| Q             | A
| ------------- | ---
| Bug fix?      | no
| New feature?  | no
| Docs?         | no
| Issues        | --
| License       | MIT

Commits
-------

faeb290c [CI] Trigger validation on any bridge file change
2025-12-18 13:31:09 +01:00
Oskar Stark
faeb290cd4 [CI] Trigger validation on any bridge file change 2025-12-18 13:28:22 +01:00
Oskar Stark
ce76a544f5 [CI] Fix bridge test matrix include creating jobs without bridge info
The `include` directive in GitHub Actions matrix adds separate combinations
rather than multiplying with existing matrix values. This caused jobs to be
created with only php-version and dependency-version set, but no bridge
object, resulting in "Unable to find working directory at 'src/src/Bridge/'"
errors.

Fix by generating full include arrays in build-matrix.yaml with the bridge
info nested under a 'bridge' key. Each bridge now gets tested with:
- PHP 8.2 lowest
- PHP 8.2 highest
- PHP 8.5 highest
2025-12-18 12:53:28 +01:00
Oskar Stark
1488f59dcf [CI] Only run bridge validation when corresponding bridge folder changes
Use dorny/paths-filter to detect which bridge folders have changes and
conditionally run only the relevant validation jobs.
2025-12-18 12:51:59 +01:00
Oskar Stark
88507773ae [CI] Simplify bridge test matrix
Test bridges on PHP 8.2 lowest, 8.2 highest, and 8.5 highest.
Packages retain full coverage with PHP 8.2, 8.5 and Symfony 7.4/8.0.
2025-12-18 10:44:04 +01:00
Oskar Stark
595507a1b7 [CI] Remove needs dependency from demo job 2025-12-18 10:24:27 +01:00
Oskar Stark
24bd37423c [CI] Reusable matrix step 2025-12-17 14:40:17 +01:00
Oskar Stark
528900dfad [CI] Combine unit and integration tests into single workflow
Integration tests now depend on all unit tests completing first via
the `needs` directive, ensuring they run as the final stage.

Execution order: unit tests → demo → examples
2025-12-17 11:47:52 +01:00
Oskar Stark
0051ec0011 [CI] Always build root packages for all PHPStan jobs
- Add root dependencies installation and package building to phpstan-package job
- Remove platform-only conditions from phpstan-bridge job
- Make vendor cleanup step work for all bridge types
2025-12-17 11:20:27 +01:00
Oskar Stark
adad7483dd [Platform] Split bridges into dedicated packages 2025-12-17 10:51:06 +01:00
Oskar Stark
6c696b68d0 Split bridge job into separate store-bridge and tool-bridge jobs
This avoids the 256 jobs limit in GitHub Actions by separating the
bridge tests into two distinct job groups. Also makes CI output
collapsible using ::group:: syntax.
2025-12-17 08:25:56 +01:00
Oskar Stark
9a30a5bfec Add lowest, Symfony 7.4 and 8.0 tests for bridges
Dynamically generate matrix includes for both packages and bridges,
eliminating hardcoded entries and ensuring new bridges are automatically
tested with all PHP/Symfony version combinations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2025-12-16 23:04:35 +01:00