FAPost public contract layer for Solutions, Plugins and external integrations
dev-main 2026-08-03 16:51 UTC
This package is not auto-updated.
Last update: 2026-08-03 17:15:52 UTC
fapost/foundation is the public contract layer of the FAPost platform. It holds the
interfaces, DTOs, enums and value objects that Core, Solutions and Plugins agree on. It is the
only package a Solution or Plugin is allowed to depend on to integrate with the platform.
use App\... is forbidden here. Foundation never references concrete
Core classes; the implementations live in Core and are bound to these contracts at runtime.fapost/support. Domain-specific
code stays in Core.^8.4illuminate/support ^11 || ^12psr/http-message, spatie/laravel-dataFAPost\Foundation\ → src/
What's inside| Area | Namespace | Purpose |
|---|---|---|
| Extension lifecycle | Contracts, Lifecycle, Manifest, Support |
Register and validate Solutions/Plugins against the platform |
| Flow engine | Flow\*, Contracts\NodeHandlerInterface, Contracts\DataAccessorInterface |
Node handlers, expression engine, triggers, contact writes, scoped state |
| Messaging | Messaging\* |
Outbound message senders, delivery results, typing/processing indicators |
| Channels | Channel\* |
Channel adapters and webhook registration |
| Media | Media\* |
Channel media upload/download contracts and DTOs |
| RAG | Contracts\RagAdapterInterface, DTO\*Rag* |
Retrieval-augmented generation adapters |
| Analytics | Analytics\* |
Analytics event DTO, writer contract, event types |
| Inbound/outbound DTOs | DTO\* |
Incoming/outgoing messages, media, webhook payloads, execution results |
An extension never touches Route, Schedule or Migrations directly. It declares intent
through CoreRegistrarInterface, whose implementation lives in Core:
protected function registerExtensions(CoreRegistrarInterface $registrar): void { $registrar->registerNodeHandler(SyncEmployeeHandler::class); $registrar->registerDataAccessor('hr', HrDataAccessor::class); }
Lifecycle\AbstractSolutionServiceProvider.Lifecycle\AbstractPluginServiceProvider.Both declare a Manifest\SolutionManifest used for boot-time validation, capability compatibility
checks and degraded-state detection:
public function getManifest(): SolutionManifest { return SolutionManifest::make( id: 'hr', version: '2.1.0', requiresPlatform: '>=1.4.0 <2.0.0', requiresCapabilities: ['flow.node_registry', 'flow.data_accessor'], ); }Flow node handlers
NodeHandlerInterface is the contract for flow-engine nodes. The engine resolves a handler by
(type, version) from an in-memory registry — no DB queries. Versioning rules:
version() unchanged;version()++, old handlers stay registered so existing flow definitions
keep running;Handlers must be graph-unaware (return a sourceHandle, not the next node id) and safe to retry.
Flow\Handlers\AbstractVersionedHandler provides a base for versioned handlers.
Licensed under the Apache License 2.0.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | fapost/support | 0 | 8.26 | 03-08-2026 |
| 2 | lace/framework | 0 | 10 | 03-08-2026 |
| 3 | lumnd/platophp | 0 | 17.69 | 03-08-2026 |
| 4 | djeventplannerhub/djep-php-sdk | 0 | 18.33 | 03-08-2026 |
| 5 | anjan-talukdar/laravel-gst-invoice | 0 | 19.93 | 03-08-2026 |
| 6 | dpone-airflow-pack 0.68.14 | 0 | 5 | 10-07-2026 |
| 7 | contract4agents 0.12.1 | 0 | 5 | 20-07-2026 |
| 8 | expertapps/laravel-abac | 0 | 30 | 03-08-2026 |
| 9 | sharpapi/laravel-invoice-manager | 0 | 19.5 | 03-08-2026 |
| 10 | shelfwatch/shelfwatch | 0 | 10 | 03-08-2026 |