guardian-framework 0.1.94 → 0.1.96

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -3197,7 +3197,7 @@ __export(exports_package, {
3197
3197
  bin: () => bin,
3198
3198
  author: () => author
3199
3199
  });
3200
- var name = "guardian-framework", version = "0.1.94", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
3200
+ var name = "guardian-framework", version = "0.1.96", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
3201
3201
  var init_package = __esm(() => {
3202
3202
  exports = {
3203
3203
  ".": {
package/dist/exports.js CHANGED
@@ -1982,7 +1982,7 @@ __export(exports_package, {
1982
1982
  bin: () => bin,
1983
1983
  author: () => author
1984
1984
  });
1985
- var name = "guardian-framework", version = "0.1.94", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
1985
+ var name = "guardian-framework", version = "0.1.96", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
1986
1986
  var init_package = __esm(() => {
1987
1987
  exports = {
1988
1988
  ".": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "guardian-framework",
3
- "version": "0.1.94",
3
+ "version": "0.1.96",
4
4
  "description": "Token-optimized agentic framework scaffolder with pi-first architecture",
5
5
  "type": "module",
6
6
  "main": "dist/exports.js",
@@ -1,5 +1,5 @@
1
1
  {
2
- "timestamp": "2026-07-17T20:44:42Z",
2
+ "timestamp": "2026-07-17T21:00:57Z",
3
3
  "mode": "all",
4
4
  "stages_run": [],
5
5
  "summary": {
@@ -346,6 +346,9 @@ except Exception: # BAD — catch specific exceptions
346
346
  @router.post("/")
347
347
  async def handler(payload: dict): # BAD — use pydantic models + service layer
348
348
 
349
+ # ❌ Controller/route with abstract interface (routes are concrete only)
350
+ class AbstractUserController(ABC): ... # BAD — FastAPI routes ARE the contract
351
+
349
352
  # ❌ Route importing repository directly (bypasses service layer)
350
353
  @router.get("/")
351
354
  async def handler(repo=Depends(get_repo)): # BAD — use service, not repository
@@ -18,16 +18,13 @@ Every bounded context follows the same 4-layer structure:
18
18
 
19
19
  ```
20
20
  module/
21
- ├── domain/ # Pure domain entities, value objects, events, repository traits
21
+ ├── domain/ # Pure domain entities, value objects, events
22
22
  │ ├── mod.rs # Re-exports + module-level documentation
23
23
  │ ├── entity/ # Aggregate roots and entities
24
24
  │ │ └── [entity].rs
25
25
  │ ├── value/ # Value objects
26
26
  │ │ └── [value].rs
27
27
  │ ├── event/ # Domain event payloads
28
- │ ├── repository/ # Repository TRAIT definitions (interfaces belong in domain!)
29
- │ │ ├── mod.rs
30
- │ │ └── [entity]_repository.rs
31
28
  │ └── error/ # Typed error enum (thiserror)
32
29
  ├── application/ # Service traits, DTOs, use case orchestration
33
30
  │ ├── mod.rs
@@ -35,11 +32,11 @@ module/
35
32
  │ ├── dto/ # Input/Output DTOs
36
33
  │ │ └── mod.rs
37
34
  │ └── factory.rs # Factory trait interfaces
38
- ├── infrastructure/ # Repository IMPLEMENTATIONS, external adapters
35
+ ├── infrastructure/ # Repository implementations, external adapters, repository traits
39
36
  │ ├── mod.rs
40
- │ ├── repository/ # Repository IMPLEMENTATIONS (concrete, not traits)
37
+ │ ├── repository/ # Repository trait definitions + implementations
41
38
  │ │ ├── mod.rs
42
- │ │ └── [entity]_repository_impl.rs
39
+ │ │ └── [entity]_repository.rs
43
40
  │ └── persistence/ # ORM/database implementations
44
41
  └── interfaces/ # API contracts (HTTP, events)
45
42
  ├── mod.rs
@@ -986,16 +983,10 @@ async fn get_users(repo: impl UserRepository) { // BAD — use application serv
986
983
  let users = repo.find_all().await;
987
984
  }
988
985
 
989
- // ❌ Repository trait in infrastructure layer
990
- // infrastructure/repository/user_repository.rs BAD — traits belong in domain/
991
- pub trait UserRepository { ... }
992
-
993
- // ✅ Correct: trait in domain/, impl in infrastructure/
994
- // domain/repository/user_repository.rs
995
- pub trait UserRepository { ... } // ✅
996
- // infrastructure/repository/user_repository_impl.rs
997
- pub struct PostgresUserRepository; // ✅
998
- impl UserRepository for PostgresUserRepository { ... }
986
+ // Note: This project keeps repository traits + impls together in
987
+ // infrastructure/repository/ for consistency across existing codebases.
988
+ // Both traits and concrete implementations live side by side:
989
+ // infrastructure/repository/user_repository.rs — both trait + impl
999
990
  ```
1000
991
 
1001
992
  ---