context.py python
45 lines 1.3 KB
Raw
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 1 day 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 2 commits
sha256:a78e7e5a8740e03315f325d19edeb3aa1b306b3337d04abbaa9a9e0f3bbeb7a1 docs: MuseHub-first before ISR #74 — staging solidify NEXT Human 1 day ago
sha256:4671b7f787ddbe63ced31c895b688c77ab495653b65a730b423329f26b3c1439 feat: K1-P1 complete — agent provenance, build-verification… Sonnet 4.6 patch 52 days ago