@oleksandr.rudnychenko/sync_loop 0.3.2 → 0.3.7
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/README.md +0 -9
- package/bin/cli.ts +9 -2
- package/dist/bin/cli.d.ts +1 -0
- package/dist/bin/cli.js +6 -1
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/init.js +21 -0
- package/dist/src/init.js.map +1 -1
- package/dist/src/template/.agent-loop/patterns/api-standards.md +15 -64
- package/dist/src/template/.agent-loop/patterns/code-patterns.md +31 -199
- package/dist/src/template/.agent-loop/patterns/refactoring-workflow.md +34 -61
- package/dist/src/template/.agent-loop/patterns/testing-guide.md +49 -162
- package/dist/src/template/.agent-loop/reasoning-kernel.md +68 -15
- package/dist/src/template/.agent-loop/validate-n.md +3 -39
- package/dist/src/template/AGENTS.md +33 -4
- package/dist/src/template/backlog-index.md +28 -0
- package/dist/src/template/wiring/agents-claude-architect.md +89 -0
- package/dist/src/template/wiring/agents-claude-fixer.md +45 -0
- package/dist/src/template/wiring/agents-claude.md +14 -2
- package/dist/src/template/wiring/agents-github-architect.md +94 -0
- package/dist/src/template/wiring/agents-github-fixer.md +53 -0
- package/dist/src/template/wiring/agents-github.md +14 -2
- package/dist/src/template/wiring/skills-diagnose-failure.md +34 -0
- package/package.json +16 -4
- package/src/template/.agent-loop/patterns/api-standards.md +15 -64
- package/src/template/.agent-loop/patterns/code-patterns.md +31 -199
- package/src/template/.agent-loop/patterns/refactoring-workflow.md +34 -61
- package/src/template/.agent-loop/patterns/testing-guide.md +49 -162
- package/src/template/.agent-loop/reasoning-kernel.md +68 -15
- package/src/template/.agent-loop/validate-n.md +3 -39
- package/src/template/AGENTS.md +33 -4
- package/src/template/backlog-index.md +28 -0
- package/src/template/wiring/agents-claude-architect.md +89 -0
- package/src/template/wiring/agents-claude-fixer.md +45 -0
- package/src/template/wiring/agents-claude.md +14 -2
- package/src/template/wiring/agents-github-architect.md +94 -0
- package/src/template/wiring/agents-github-fixer.md +53 -0
- package/src/template/wiring/agents-github.md +14 -2
- package/src/template/wiring/skills-diagnose-failure.md +34 -0
package/README.md
CHANGED
|
@@ -253,15 +253,6 @@ npm test
|
|
|
253
253
|
|
|
254
254
|
`npm test` runs a full TypeScript build first, then executes the automated test suite.
|
|
255
255
|
|
|
256
|
-
### Publish to npm (public)
|
|
257
|
-
|
|
258
|
-
```bash
|
|
259
|
-
npm run publish:public:dry-run
|
|
260
|
-
npm run publish:public
|
|
261
|
-
```
|
|
262
|
-
|
|
263
|
-
---
|
|
264
|
-
|
|
265
256
|
## License
|
|
266
257
|
|
|
267
258
|
MIT
|
package/bin/cli.ts
CHANGED
|
@@ -57,6 +57,7 @@ export interface CliDeps {
|
|
|
57
57
|
detectStacksFn: (projectPath: string) => StackDefinition[];
|
|
58
58
|
initFn: typeof init;
|
|
59
59
|
startServerFn: () => Promise<unknown>;
|
|
60
|
+
waitForStdinFn: () => Promise<number>;
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
function defaultIo(): CliIo {
|
|
@@ -72,6 +73,10 @@ function defaultDeps(): CliDeps {
|
|
|
72
73
|
detectStacksFn: detectStacks,
|
|
73
74
|
initFn: init,
|
|
74
75
|
startServerFn: startServer,
|
|
76
|
+
waitForStdinFn: () => new Promise((resolve) => {
|
|
77
|
+
process.stdin.on("end", () => resolve(0));
|
|
78
|
+
process.stdin.on("close", () => resolve(0));
|
|
79
|
+
}),
|
|
75
80
|
};
|
|
76
81
|
}
|
|
77
82
|
|
|
@@ -156,7 +161,9 @@ export async function runCli(
|
|
|
156
161
|
}
|
|
157
162
|
|
|
158
163
|
await deps.startServerFn();
|
|
159
|
-
|
|
164
|
+
|
|
165
|
+
// Keep the process alive until stdin is closed by the parent process.
|
|
166
|
+
return deps.waitForStdinFn();
|
|
160
167
|
}
|
|
161
168
|
|
|
162
169
|
function isMainModule(metaUrl: string): boolean {
|
|
@@ -168,4 +175,4 @@ function isMainModule(metaUrl: string): boolean {
|
|
|
168
175
|
if (isMainModule(import.meta.url)) {
|
|
169
176
|
const exitCode = await runCli();
|
|
170
177
|
process.exit(exitCode);
|
|
171
|
-
}
|
|
178
|
+
}
|
package/dist/bin/cli.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ export interface CliDeps {
|
|
|
9
9
|
detectStacksFn: (projectPath: string) => StackDefinition[];
|
|
10
10
|
initFn: typeof init;
|
|
11
11
|
startServerFn: () => Promise<unknown>;
|
|
12
|
+
waitForStdinFn: () => Promise<number>;
|
|
12
13
|
}
|
|
13
14
|
export declare function getOptionValue(args: string[], optionName: string): string | undefined;
|
|
14
15
|
export declare function getPositionalArgs(args: string[]): string[];
|
package/dist/bin/cli.js
CHANGED
|
@@ -55,6 +55,10 @@ function defaultDeps() {
|
|
|
55
55
|
detectStacksFn: detectStacks,
|
|
56
56
|
initFn: init,
|
|
57
57
|
startServerFn: startServer,
|
|
58
|
+
waitForStdinFn: () => new Promise((resolve) => {
|
|
59
|
+
process.stdin.on("end", () => resolve(0));
|
|
60
|
+
process.stdin.on("close", () => resolve(0));
|
|
61
|
+
}),
|
|
58
62
|
};
|
|
59
63
|
}
|
|
60
64
|
export function getOptionValue(args, optionName) {
|
|
@@ -122,7 +126,8 @@ export async function runCli(args = process.argv.slice(2), io = defaultIo(), dep
|
|
|
122
126
|
}
|
|
123
127
|
}
|
|
124
128
|
await deps.startServerFn();
|
|
125
|
-
|
|
129
|
+
// Keep the process alive until stdin is closed by the parent process.
|
|
130
|
+
return deps.waitForStdinFn();
|
|
126
131
|
}
|
|
127
132
|
function isMainModule(metaUrl) {
|
|
128
133
|
const entryFile = process.argv[1];
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,IAAI,EAAyC,MAAM,gBAAgB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,aAAa,GAAiB,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AAE3E,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCjB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/init.js
CHANGED
|
@@ -332,6 +332,15 @@ function generatePlatformFiles(projectPath, platform, stacks, options) {
|
|
|
332
332
|
const agentBody = applyStacks(readTemplate("wiring/agents-github.md"), stacks);
|
|
333
333
|
const agentResult = writeOutput(projectPath, ".github/agents/SyncLoop.agent.md", agentBody, options);
|
|
334
334
|
results.push(` ${formatWriteResult(agentResult)}`);
|
|
335
|
+
const architectBody = applyStacks(readTemplate("wiring/agents-github-architect.md"), stacks);
|
|
336
|
+
const architectResult = writeOutput(projectPath, ".github/agents/SyncLoop-Architect.agent.md", architectBody, options);
|
|
337
|
+
results.push(` ${formatWriteResult(architectResult)}`);
|
|
338
|
+
const fixerBody = applyStacks(readTemplate("wiring/agents-github-fixer.md"), stacks);
|
|
339
|
+
const fixerResult = writeOutput(projectPath, ".github/agents/SyncLoop-Fixer.agent.md", fixerBody, options);
|
|
340
|
+
results.push(` ${formatWriteResult(fixerResult)}`);
|
|
341
|
+
const diagnoseFailureBody = applyStacks(readTemplate("wiring/skills-diagnose-failure.md"), stacks);
|
|
342
|
+
const diagnoseFailureResult = writeOutput(projectPath, ".github/skills/diagnose-failure/SKILL.md", diagnoseFailureBody, options);
|
|
343
|
+
results.push(` ${formatWriteResult(diagnoseFailureResult)}`);
|
|
335
344
|
}
|
|
336
345
|
else if (platform === "cursor") {
|
|
337
346
|
const frontmatter = yamlFrontmatter({ description: "SyncLoop protocol summary and guardrails", alwaysApply: true });
|
|
@@ -344,6 +353,15 @@ function generatePlatformFiles(projectPath, platform, stacks, options) {
|
|
|
344
353
|
const agentBody = applyStacks(readTemplate("wiring/agents-claude.md"), stacks);
|
|
345
354
|
const agentResult = writeOutput(projectPath, ".claude/agents/SyncLoop.md", agentBody, options);
|
|
346
355
|
results.push(` ${formatWriteResult(agentResult)}`);
|
|
356
|
+
const architectBody = applyStacks(readTemplate("wiring/agents-claude-architect.md"), stacks);
|
|
357
|
+
const architectResult = writeOutput(projectPath, ".claude/agents/SyncLoop-Architect.md", architectBody, options);
|
|
358
|
+
results.push(` ${formatWriteResult(architectResult)}`);
|
|
359
|
+
const fixerBody = applyStacks(readTemplate("wiring/agents-claude-fixer.md"), stacks);
|
|
360
|
+
const fixerResult = writeOutput(projectPath, ".claude/agents/SyncLoop-Fixer.md", fixerBody, options);
|
|
361
|
+
results.push(` ${formatWriteResult(fixerResult)}`);
|
|
362
|
+
const diagnoseFailureBody = applyStacks(readTemplate("wiring/skills-diagnose-failure.md"), stacks);
|
|
363
|
+
const diagnoseFailureResult = writeOutput(projectPath, ".claude/skills/diagnose-failure/SKILL.md", diagnoseFailureBody, options);
|
|
364
|
+
results.push(` ${formatWriteResult(diagnoseFailureResult)}`);
|
|
347
365
|
}
|
|
348
366
|
return results;
|
|
349
367
|
}
|
|
@@ -391,6 +409,9 @@ export function init(projectPath, target = "all", stacks = [], options = {}) {
|
|
|
391
409
|
const agentsContent = applyStacks(readTemplate("AGENTS.md"), effectiveStacks);
|
|
392
410
|
const agentsResult = writeOutput(root, "AGENTS.md", agentsContent, mergedOptions);
|
|
393
411
|
results.push(`AGENTS.md (cross-platform entrypoint: ${formatWriteResult(agentsResult)})`);
|
|
412
|
+
const backlogContent = readTemplate("backlog-index.md");
|
|
413
|
+
const backlogResult = writeOutput(root, "docs/backlog/index.md", backlogContent, { ...mergedOptions, overwrite: false });
|
|
414
|
+
results.push(`docs/backlog/index.md (${formatWriteResult(backlogResult)})`);
|
|
394
415
|
const targets = target === "all"
|
|
395
416
|
? ["copilot", "cursor", "claude"]
|
|
396
417
|
: [target];
|
package/dist/src/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,76 +19,27 @@ Referenced from [../patterns.md](../patterns.md).
|
|
|
19
19
|
|
|
20
20
|
## Workflow for New Routes
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
4. Run spec generation script
|
|
22
|
+
1. Define Request and Response **typed models** in the module's models file — every field has a declared type and sensible defaults for optional fields
|
|
23
|
+
2. Implement the route handler: parse input into the request model, resolve the service via dependency injection, call the service, and return the response model
|
|
24
|
+
3. Register the router in the app entrypoint with appropriate semantic tags
|
|
25
|
+
4. Run the spec generation script (OpenAPI, Swagger, or equivalent)
|
|
27
26
|
5. Verify generated docs match expectations
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```python
|
|
33
|
-
# models.py — typed boundary contracts
|
|
34
|
-
@dataclass
|
|
35
|
-
class CreateEntityRequest:
|
|
36
|
-
name: str
|
|
37
|
-
entity_type: str
|
|
38
|
-
metadata: dict[str, Any] = field(default_factory=dict)
|
|
39
|
-
|
|
40
|
-
@dataclass
|
|
41
|
-
class EntityResponse:
|
|
42
|
-
id: str
|
|
43
|
-
name: str
|
|
44
|
-
entity_type: str
|
|
45
|
-
status: str
|
|
46
|
-
created_at: str
|
|
47
|
-
|
|
48
|
-
# routes.py — thin transport layer
|
|
49
|
-
@router.post("/entities", response_model=EntityResponse)
|
|
50
|
-
def create_entity(
|
|
51
|
-
data: CreateEntityRequest,
|
|
52
|
-
service: EntityService = Depends(get_service),
|
|
53
|
-
) -> EntityResponse:
|
|
54
|
-
"""Create a new entity for processing.
|
|
55
|
-
|
|
56
|
-
Validates input, delegates to service, returns created entity.
|
|
57
|
-
"""
|
|
58
|
-
result = service.create(data)
|
|
59
|
-
return EntityResponse(
|
|
60
|
-
id=result.id,
|
|
61
|
-
name=result.name,
|
|
62
|
-
entity_type=result.entity_type,
|
|
63
|
-
status=result.status,
|
|
64
|
-
created_at=result.created_at.isoformat(),
|
|
65
|
-
)
|
|
66
|
-
```
|
|
27
|
+
|
|
28
|
+
### Route Handler Structure
|
|
29
|
+
|
|
30
|
+
A route handler is a thin transport function. It declares the HTTP method and path, accepts a typed request model as input, resolves the service through the framework's dependency injection mechanism, delegates the business operation to the service, and returns a typed response model. The handler contains no business logic, conditionals, or data transformations beyond serialization.
|
|
67
31
|
|
|
68
32
|
---
|
|
69
33
|
|
|
70
34
|
## Error Envelope
|
|
71
35
|
|
|
72
|
-
All error responses must follow a consistent structure:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
message: str # Human-readable description
|
|
80
|
-
details: dict = field(default_factory=dict) # Optional context
|
|
81
|
-
|
|
82
|
-
# Usage at route boundary
|
|
83
|
-
@router.get("/entities/{entity_id}")
|
|
84
|
-
def get_entity(entity_id: str, service = Depends(get_service)):
|
|
85
|
-
try:
|
|
86
|
-
return service.get(entity_id)
|
|
87
|
-
except NotFoundError as exc:
|
|
88
|
-
raise HTTPException(status_code=404, detail=str(exc))
|
|
89
|
-
except ValidationError as exc:
|
|
90
|
-
raise HTTPException(status_code=400, detail=str(exc))
|
|
91
|
-
```
|
|
36
|
+
All error responses must follow a consistent structure with three fields:
|
|
37
|
+
|
|
38
|
+
- **error**: a machine-readable error code (string)
|
|
39
|
+
- **message**: a human-readable description (string)
|
|
40
|
+
- **details**: optional context dictionary for debugging
|
|
41
|
+
|
|
42
|
+
At the route boundary, catch domain-specific exceptions (NotFoundError, ValidationError) and translate them to the appropriate HTTP status code plus an error envelope. Let unexpected exceptions propagate to a global handler that returns a generic 500-level response.
|
|
92
43
|
|
|
93
44
|
---
|
|
94
45
|
|
|
@@ -9,34 +9,11 @@ Referenced from [../patterns.md](../patterns.md).
|
|
|
9
9
|
|
|
10
10
|
Abstracts infrastructure behind protocol interfaces. Decouples domain logic from external systems.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
collection: str,
|
|
18
|
-
query: str,
|
|
19
|
-
*,
|
|
20
|
-
filters: dict | None = None,
|
|
21
|
-
limit: int = 10,
|
|
22
|
-
) -> list[Record]: ...
|
|
23
|
-
|
|
24
|
-
# Adapter (concrete implementation)
|
|
25
|
-
class DatabaseAdapter:
|
|
26
|
-
def __init__(self, client: DBClient) -> None:
|
|
27
|
-
self._client = client
|
|
28
|
-
|
|
29
|
-
def search(
|
|
30
|
-
self,
|
|
31
|
-
collection: str,
|
|
32
|
-
query: str,
|
|
33
|
-
*,
|
|
34
|
-
filters: dict | None = None,
|
|
35
|
-
limit: int = 10,
|
|
36
|
-
) -> list[Record]:
|
|
37
|
-
# Implementation against real infrastructure
|
|
38
|
-
...
|
|
39
|
-
```
|
|
12
|
+
Define a **Port** as an interface (or protocol/trait) that declares the operations a service needs — method names, parameter types, and return types — without any implementation details. The Port belongs to the domain layer and knows nothing about databases, HTTP, or file systems.
|
|
13
|
+
|
|
14
|
+
Create an **Adapter** as a concrete class that implements the Port interface. Each adapter encapsulates the specifics of one external system (a database client, an HTTP API, a message queue). Multiple adapters can satisfy the same port.
|
|
15
|
+
|
|
16
|
+
Services receive the port interface via constructor injection, never the adapter directly.
|
|
40
17
|
|
|
41
18
|
**Key rules:**
|
|
42
19
|
- Port lives in `libs/{component}/port.*`
|
|
@@ -56,17 +33,11 @@ Each domain module follows a consistent multi-file layout:
|
|
|
56
33
|
| `routes.*` | Transport endpoints |
|
|
57
34
|
| `tasks.*` | Background tasks (if async processing needed) |
|
|
58
35
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
def __init__(self, repository: OrderRepository) -> None:
|
|
63
|
-
self._repository = repository
|
|
36
|
+
The **models** file defines data structures (classes, structs, or types) representing the core domain — entities with identity, value objects without identity, and any associated enums or constants.
|
|
37
|
+
|
|
38
|
+
The **services** file contains business logic: methods that operate on models, enforce invariants, and coordinate between ports. Services never reference transport or serialization concerns.
|
|
64
39
|
|
|
65
|
-
|
|
66
|
-
order = self._repository.get(order_id)
|
|
67
|
-
# business logic here
|
|
68
|
-
return ProcessResult(order_id=order.id, status="completed")
|
|
69
|
-
```
|
|
40
|
+
The **routes** file is the transport boundary — HTTP handlers, CLI entry points, or message consumers. Routes parse input, delegate to a service, and format the response. No business logic lives here.
|
|
70
41
|
|
|
71
42
|
---
|
|
72
43
|
|
|
@@ -74,219 +45,80 @@ class OrderService:
|
|
|
74
45
|
|
|
75
46
|
Task handlers stay thin. Business logic always lives in services.
|
|
76
47
|
|
|
77
|
-
|
|
78
|
-
# tasks.py — thin wrapper, delegates to service
|
|
79
|
-
def process_order_task(runtime: TaskRuntime, order_id: str):
|
|
80
|
-
"""Background task that delegates to service."""
|
|
81
|
-
service = runtime.order_service
|
|
82
|
-
service.update_status(order_id, status="processing")
|
|
83
|
-
|
|
84
|
-
try:
|
|
85
|
-
service.process(order_id=order_id)
|
|
86
|
-
service.update_status(order_id, status="completed")
|
|
87
|
-
except Exception as exc:
|
|
88
|
-
service.update_status(order_id, status="failed", error=str(exc))
|
|
89
|
-
raise
|
|
90
|
-
```
|
|
48
|
+
A task handler is a function or method invoked by a job queue or scheduler. It receives a runtime context (containing pre-wired service instances) and the task payload. The handler calls the appropriate service method, updates task status on success and failure, and re-raises exceptions for the queue's retry mechanism.
|
|
91
49
|
|
|
92
50
|
**Key rules:**
|
|
93
51
|
- Tasks never contain business logic
|
|
94
|
-
- Dependencies injected via runtime, not imported directly
|
|
95
|
-
- Always update status on success and failure
|
|
52
|
+
- Dependencies injected via runtime context, not imported directly
|
|
53
|
+
- Always update status on both success and failure paths
|
|
96
54
|
|
|
97
55
|
---
|
|
98
56
|
|
|
99
57
|
## P4 · App Context / Composition Root
|
|
100
58
|
|
|
101
|
-
Centralized dependency wiring, initialized once at startup
|
|
102
|
-
|
|
103
|
-
```python
|
|
104
|
-
@dataclass
|
|
105
|
-
class AppContext:
|
|
106
|
-
config: Config
|
|
107
|
-
session_factory: SessionFactory
|
|
108
|
-
services: ServiceRegistry
|
|
109
|
-
logger: Logger
|
|
110
|
-
|
|
111
|
-
_context: AppContext | None = None
|
|
59
|
+
Centralized dependency wiring, initialized once at startup.
|
|
112
60
|
|
|
113
|
-
|
|
114
|
-
global _context
|
|
115
|
-
if _context:
|
|
116
|
-
return _context
|
|
117
|
-
_context = AppContext(config=config, ...)
|
|
118
|
-
return _context
|
|
119
|
-
|
|
120
|
-
def get_app_context() -> AppContext:
|
|
121
|
-
if _context is None:
|
|
122
|
-
return init_app_context(load_config())
|
|
123
|
-
return _context
|
|
124
|
-
```
|
|
61
|
+
Define an **AppContext** as a container (class or struct) holding all application-wide dependencies: configuration, database session factories, service registries, and loggers. A factory function creates the context once during startup, caching it as a module-level singleton. All subsequent access goes through a getter that returns the cached instance. This ensures consistent wiring and makes the full dependency graph visible in one place.
|
|
125
62
|
|
|
126
63
|
---
|
|
127
64
|
|
|
128
65
|
## P5 · Transport Route
|
|
129
66
|
|
|
130
|
-
Routes only handle transport concerns; all logic delegated to services
|
|
131
|
-
|
|
132
|
-
```python
|
|
133
|
-
router = APIRouter()
|
|
67
|
+
Routes only handle transport concerns; all logic delegated to services.
|
|
134
68
|
|
|
135
|
-
|
|
136
|
-
ctx = get_app_context()
|
|
137
|
-
return OrderService(ctx.repository)
|
|
138
|
-
|
|
139
|
-
@router.post("/orders")
|
|
140
|
-
def create_order(
|
|
141
|
-
data: CreateOrderRequest,
|
|
142
|
-
service: OrderService = Depends(get_service),
|
|
143
|
-
) -> OrderResponse:
|
|
144
|
-
result = service.create(data)
|
|
145
|
-
return OrderResponse(id=result.id, status=result.status)
|
|
146
|
-
```
|
|
69
|
+
A route handler performs three steps: (1) parse and validate the incoming request into a typed model, (2) resolve the appropriate service instance via dependency injection, and (3) call the service method and map the result to a typed response model. The handler never contains conditionals, loops, or data transformations beyond serialization.
|
|
147
70
|
|
|
148
71
|
---
|
|
149
72
|
|
|
150
73
|
## P6 · Typed Models
|
|
151
74
|
|
|
152
|
-
Domain entities with explicit types and serialization
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
@dataclass(slots=True)
|
|
156
|
-
class OrderItem:
|
|
157
|
-
product_id: str
|
|
158
|
-
quantity: int
|
|
159
|
-
unit_price: float
|
|
160
|
-
tags: list[str] = field(default_factory=list)
|
|
161
|
-
|
|
162
|
-
def to_dict(self) -> dict[str, Any]:
|
|
163
|
-
return {
|
|
164
|
-
"product_id": self.product_id,
|
|
165
|
-
"quantity": self.quantity,
|
|
166
|
-
"unit_price": self.unit_price,
|
|
167
|
-
"tags": self.tags,
|
|
168
|
-
}
|
|
169
|
-
```
|
|
75
|
+
Domain entities with explicit types and serialization.
|
|
76
|
+
|
|
77
|
+
Every data structure that crosses a boundary (API request, API response, database row, message payload) must be a typed model — a class, struct, or schema with named fields and declared types. Each model provides a serialization method (to dictionary, JSON, or equivalent) for transport. Use slot-based or frozen classes where the language supports them to prevent accidental mutation.
|
|
170
78
|
|
|
171
79
|
---
|
|
172
80
|
|
|
173
81
|
## P7 · Collection/Enum Safety
|
|
174
82
|
|
|
175
|
-
Replace magic strings with typed enums
|
|
83
|
+
Replace magic strings with typed enums.
|
|
176
84
|
|
|
177
|
-
|
|
178
|
-
class Collection(str, Enum):
|
|
179
|
-
ORDERS = "orders"
|
|
180
|
-
PRODUCTS = "products"
|
|
181
|
-
USERS = "users"
|
|
182
|
-
|
|
183
|
-
# Usage: repository.query(Collection.ORDERS, ...)
|
|
184
|
-
# NOT: repository.query("orders", ...)
|
|
185
|
-
```
|
|
85
|
+
Define an enum (or string enum / literal union) for any fixed set of values: collection names, status codes, category labels, entity types. All code references the enum member, never a raw string. This centralizes valid values in one declaration and makes invalid states unrepresentable.
|
|
186
86
|
|
|
187
87
|
---
|
|
188
88
|
|
|
189
89
|
## P8 · Error Handling
|
|
190
90
|
|
|
191
|
-
Layered exception hierarchy with boundary translation
|
|
192
|
-
|
|
193
|
-
```python
|
|
194
|
-
# Domain exceptions
|
|
195
|
-
class DomainError(Exception):
|
|
196
|
-
"""Base error for domain."""
|
|
197
|
-
|
|
198
|
-
class NotFoundError(DomainError):
|
|
199
|
-
"""Resource not found."""
|
|
200
|
-
|
|
201
|
-
class ValidationError(DomainError):
|
|
202
|
-
"""Invalid input or state."""
|
|
91
|
+
Layered exception hierarchy with boundary translation.
|
|
203
92
|
|
|
204
|
-
|
|
205
|
-
@router.get("/orders/{order_id}")
|
|
206
|
-
def get_order(order_id: str, service = Depends(get_service)):
|
|
207
|
-
try:
|
|
208
|
-
return service.get(order_id)
|
|
209
|
-
except NotFoundError as exc:
|
|
210
|
-
raise HTTPException(status_code=404, detail=str(exc))
|
|
211
|
-
except ValidationError as exc:
|
|
212
|
-
raise HTTPException(status_code=400, detail=str(exc))
|
|
213
|
-
```
|
|
93
|
+
Define a base domain exception class. Derive specific exceptions from it: `NotFoundError`, `ValidationError`, `ConflictError`, etc. Business logic raises domain exceptions only. At the transport boundary (route handler), catch domain exceptions and translate them to the appropriate HTTP status codes or error responses. Internal implementation errors (unexpected crashes) propagate to a global handler that returns a generic 500-level response.
|
|
214
94
|
|
|
215
95
|
---
|
|
216
96
|
|
|
217
97
|
## P9 · Type Hints Everywhere
|
|
218
98
|
|
|
219
|
-
All code must have complete type annotations
|
|
99
|
+
All code must have complete type annotations.
|
|
220
100
|
|
|
221
|
-
|
|
222
|
-
# ✅ Good — fully typed
|
|
223
|
-
def process(
|
|
224
|
-
order_id: str,
|
|
225
|
-
*,
|
|
226
|
-
callback: Callable[..., Awaitable[Response]] | None = None,
|
|
227
|
-
) -> tuple[str, dict[str, Any]] | None:
|
|
228
|
-
...
|
|
229
|
-
|
|
230
|
-
# ❌ Bad — missing annotations
|
|
231
|
-
def process(order_id, callback=None):
|
|
232
|
-
...
|
|
233
|
-
```
|
|
234
|
-
|
|
235
|
-
**Common type aliases:**
|
|
236
|
-
```python
|
|
237
|
-
SessionFactory = Callable[[], Session]
|
|
238
|
-
Filters = Mapping[str, Any]
|
|
239
|
-
```
|
|
101
|
+
Every function signature declares parameter types and return type. Use union types for nullable values. Use generic types for collections. Define type aliases for complex or repeated signatures (e.g., a factory callable, a filter mapping). Avoid `any` / untyped containers. The type checker must pass with zero errors on every commit.
|
|
240
102
|
|
|
241
103
|
---
|
|
242
104
|
|
|
243
105
|
## P10 · Service Orchestration
|
|
244
106
|
|
|
245
|
-
Services accept all dependencies via constructor — no hidden state
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
# Production code
|
|
249
|
-
class AnalysisService:
|
|
250
|
-
def __init__(
|
|
251
|
-
self,
|
|
252
|
-
repository: Repository,
|
|
253
|
-
evaluator: EvaluationService,
|
|
254
|
-
):
|
|
255
|
-
self._repository = repository
|
|
256
|
-
self._evaluator = evaluator
|
|
257
|
-
|
|
258
|
-
# Test code — inject mocks
|
|
259
|
-
service = AnalysisService(
|
|
260
|
-
repository=mock_repository,
|
|
261
|
-
evaluator=mock_evaluator,
|
|
262
|
-
)
|
|
263
|
-
```
|
|
107
|
+
Services accept all dependencies via constructor — no hidden state.
|
|
108
|
+
|
|
109
|
+
A service class receives every collaborator (repositories, other services, external clients) through its constructor. The constructor stores them as private fields. No service creates its own dependencies internally. This makes the dependency graph explicit and enables test doubles to be injected without patching or monkey-patching.
|
|
264
110
|
|
|
265
111
|
---
|
|
266
112
|
|
|
267
113
|
## P11 · Config Isolation
|
|
268
114
|
|
|
269
|
-
Centralized, environment-based configuration with startup validation
|
|
270
|
-
|
|
271
|
-
```python
|
|
272
|
-
@dataclass
|
|
273
|
-
class Config:
|
|
274
|
-
database_url: str
|
|
275
|
-
debug: bool = False
|
|
276
|
-
max_workers: int = 4
|
|
115
|
+
Centralized, environment-based configuration with startup validation.
|
|
277
116
|
|
|
278
|
-
|
|
279
|
-
def from_env(cls) -> "Config":
|
|
280
|
-
return cls(
|
|
281
|
-
database_url=os.environ["DATABASE_URL"],
|
|
282
|
-
debug=os.environ.get("DEBUG", "0") == "1",
|
|
283
|
-
max_workers=int(os.environ.get("MAX_WORKERS", "4")),
|
|
284
|
-
)
|
|
285
|
-
```
|
|
117
|
+
Define a configuration class with typed fields and default values. A class method reads all values from environment variables at startup, parsing them into the correct types. If a required variable is missing, startup fails immediately with a clear error. No other code reads environment variables directly — all access goes through the configuration instance.
|
|
286
118
|
|
|
287
119
|
**Key rules:**
|
|
288
120
|
- All config read from environment at startup
|
|
289
|
-
- No scattered
|
|
121
|
+
- No scattered environment variable calls inside business logic
|
|
290
122
|
- Test config overrides controlled via fixtures
|
|
291
123
|
|
|
292
124
|
---
|