context.py python
45 lines 1.3 KB
Raw
sha256:0e9549ec7b463911bc08b7d586dc320b1ac9b1f5c943ee7e3865dcc6cb0f6f83 chore(governance): sync handover+roadmap to 84db8c8 (drift:… Human 8 hours ago
1 """Shared CLI runtime context."""
2
3 from __future__ import annotations
4
5 from dataclasses import dataclass
6 from pathlib import Path
7 from typing import Callable
8
9 from adapters.runner import CommandRunner, SubprocessRunner
10 from cli.kit_root import kit_root
11 from cli.output import OutputContext
12 from tools.checkpoints.executor import ScriptExecutor
13 from tools.freeze_reviewer.providers.base import ReviewProvider
14
15
16 @dataclass
17 class CliContext:
18 """Injectable runtime dependencies for commands and tests."""
19
20 kit: Path
21 runner: CommandRunner
22 output: OutputContext
23 cwd: Path
24 review_provider_factory: Callable[[str], ReviewProvider] | None = None
25 script_executor: ScriptExecutor | None = None
26
27 @classmethod
28 def create(
29 cls,
30 *,
31 output: OutputContext | None = None,
32 runner: CommandRunner | None = None,
33 cwd: Path | None = None,
34 kit: Path | None = None,
35 review_provider_factory: Callable[[str], ReviewProvider] | None = None,
36 script_executor: ScriptExecutor | None = None,
37 ) -> CliContext:
38 return cls(
39 kit=kit or kit_root(),
40 runner=runner or SubprocessRunner(),
41 output=output or OutputContext(),
42 cwd=cwd or Path.cwd(),
43 review_provider_factory=review_provider_factory,
44 script_executor=script_executor,
45 )
File History 1 commit
sha256:6abcf1fa82a7a621ccbc945f19acdba5bc0db54569599404a1452fb4a096a199 fix(ISR): default require_independent_second_reviewer to require Human minor 7 hours ago