kovrin 2.0.0a1__tar.gz

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.
Files changed (191) hide show
  1. kovrin-2.0.0a1/.env.example +9 -0
  2. kovrin-2.0.0a1/.github/workflows/ci.yml +99 -0
  3. kovrin-2.0.0a1/.github/workflows/publish.yml +50 -0
  4. kovrin-2.0.0a1/.gitignore +71 -0
  5. kovrin-2.0.0a1/.python-version +1 -0
  6. kovrin-2.0.0a1/CHANGELOG.md +41 -0
  7. kovrin-2.0.0a1/CLAUDE.md +770 -0
  8. kovrin-2.0.0a1/CLAUDE_CODE_PROMPT.md +139 -0
  9. kovrin-2.0.0a1/CONTRIBUTING.md +114 -0
  10. kovrin-2.0.0a1/Dockerfile +19 -0
  11. kovrin-2.0.0a1/LICENSE +21 -0
  12. kovrin-2.0.0a1/PKG-INFO +333 -0
  13. kovrin-2.0.0a1/Procfile +1 -0
  14. kovrin-2.0.0a1/README.md +272 -0
  15. kovrin-2.0.0a1/SECURITY.md +51 -0
  16. kovrin-2.0.0a1/dashboard/.gitignore +24 -0
  17. kovrin-2.0.0a1/dashboard/README.md +73 -0
  18. kovrin-2.0.0a1/dashboard/eslint.config.js +23 -0
  19. kovrin-2.0.0a1/dashboard/index.html +16 -0
  20. kovrin-2.0.0a1/dashboard/package-lock.json +3880 -0
  21. kovrin-2.0.0a1/dashboard/package.json +32 -0
  22. kovrin-2.0.0a1/dashboard/src/App.css +1 -0
  23. kovrin-2.0.0a1/dashboard/src/App.tsx +281 -0
  24. kovrin-2.0.0a1/dashboard/src/api/client.ts +243 -0
  25. kovrin-2.0.0a1/dashboard/src/components/ApprovalQueue.tsx +119 -0
  26. kovrin-2.0.0a1/dashboard/src/components/AutonomyControls.tsx +169 -0
  27. kovrin-2.0.0a1/dashboard/src/components/GraphView.tsx +110 -0
  28. kovrin-2.0.0a1/dashboard/src/components/IntentPanel.tsx +98 -0
  29. kovrin-2.0.0a1/dashboard/src/components/PrmScoreView.tsx +98 -0
  30. kovrin-2.0.0a1/dashboard/src/components/ReplayViewer.tsx +217 -0
  31. kovrin-2.0.0a1/dashboard/src/components/ResultPanel.tsx +26 -0
  32. kovrin-2.0.0a1/dashboard/src/components/TokensView.tsx +105 -0
  33. kovrin-2.0.0a1/dashboard/src/components/TopologyView.tsx +91 -0
  34. kovrin-2.0.0a1/dashboard/src/components/TraceViewer.tsx +281 -0
  35. kovrin-2.0.0a1/dashboard/src/components/ViewModeSelector.tsx +33 -0
  36. kovrin-2.0.0a1/dashboard/src/components/WatchdogStatus.tsx +95 -0
  37. kovrin-2.0.0a1/dashboard/src/components/superwork/LiveFeed.tsx +155 -0
  38. kovrin-2.0.0a1/dashboard/src/components/superwork/MetricsPanel.tsx +152 -0
  39. kovrin-2.0.0a1/dashboard/src/components/superwork/ProposalQueue.tsx +175 -0
  40. kovrin-2.0.0a1/dashboard/src/components/superwork/SessionControl.tsx +117 -0
  41. kovrin-2.0.0a1/dashboard/src/components/superwork/SuperWorkDashboard.tsx +150 -0
  42. kovrin-2.0.0a1/dashboard/src/index.css +74 -0
  43. kovrin-2.0.0a1/dashboard/src/main.tsx +10 -0
  44. kovrin-2.0.0a1/dashboard/src/types/generated.ts +287 -0
  45. kovrin-2.0.0a1/dashboard/src/types/kovrin.ts +385 -0
  46. kovrin-2.0.0a1/dashboard/src/types/kovrin.ts.bak +156 -0
  47. kovrin-2.0.0a1/dashboard/tsconfig.app.json +28 -0
  48. kovrin-2.0.0a1/dashboard/tsconfig.json +7 -0
  49. kovrin-2.0.0a1/dashboard/tsconfig.node.json +26 -0
  50. kovrin-2.0.0a1/dashboard/vite.config.ts +16 -0
  51. kovrin-2.0.0a1/docs/ARCHITECTURE.md +514 -0
  52. kovrin-2.0.0a1/docs/KOVRIN_Phase1_Plan.docx +0 -0
  53. kovrin-2.0.0a1/docs/Kovrin_Whitepaper_v2.docx +0 -0
  54. kovrin-2.0.0a1/docs/README_OPENSOURCE.md +258 -0
  55. kovrin-2.0.0a1/docs/SUPERWORK.md +434 -0
  56. kovrin-2.0.0a1/docs/kovrin-design-spec.jsx +778 -0
  57. kovrin-2.0.0a1/docs/prototypes/graph_engine.py +317 -0
  58. kovrin-2.0.0a1/docs/prototypes/intent_v2.py +224 -0
  59. kovrin-2.0.0a1/docs/prototypes/trace_logger.py +200 -0
  60. kovrin-2.0.0a1/examples/quickstart.py +13 -0
  61. kovrin-2.0.0a1/nixpacks.toml +11 -0
  62. kovrin-2.0.0a1/pyproject.toml +119 -0
  63. kovrin-2.0.0a1/railway.toml +8 -0
  64. kovrin-2.0.0a1/specs/AxiomValidation.tla +96 -0
  65. kovrin-2.0.0a1/specs/GraphExecution.tla +152 -0
  66. kovrin-2.0.0a1/specs/HashChain.tla +103 -0
  67. kovrin-2.0.0a1/specs/KovrinSafety.tla +267 -0
  68. kovrin-2.0.0a1/specs/README.md +175 -0
  69. kovrin-2.0.0a1/specs/RoutingMatrix.tla +115 -0
  70. kovrin-2.0.0a1/specs/SpeculationModel.tla +129 -0
  71. kovrin-2.0.0a1/specs/TaskStateMachine.tla +128 -0
  72. kovrin-2.0.0a1/specs/WatchdogMonitor.tla +127 -0
  73. kovrin-2.0.0a1/src/kovrin/__init__.py +545 -0
  74. kovrin-2.0.0a1/src/kovrin/agents/__init__.py +0 -0
  75. kovrin-2.0.0a1/src/kovrin/agents/base.py +300 -0
  76. kovrin-2.0.0a1/src/kovrin/agents/coordinator.py +207 -0
  77. kovrin-2.0.0a1/src/kovrin/agents/registry.py +78 -0
  78. kovrin-2.0.0a1/src/kovrin/agents/tools.py +180 -0
  79. kovrin-2.0.0a1/src/kovrin/api/__init__.py +0 -0
  80. kovrin-2.0.0a1/src/kovrin/api/server.py +747 -0
  81. kovrin-2.0.0a1/src/kovrin/api/superwork_router.py +254 -0
  82. kovrin-2.0.0a1/src/kovrin/audit/__init__.py +0 -0
  83. kovrin-2.0.0a1/src/kovrin/audit/trace_logger.py +250 -0
  84. kovrin-2.0.0a1/src/kovrin/cli.py +388 -0
  85. kovrin-2.0.0a1/src/kovrin/core/__init__.py +0 -0
  86. kovrin-2.0.0a1/src/kovrin/core/constitutional.py +242 -0
  87. kovrin-2.0.0a1/src/kovrin/core/models.py +468 -0
  88. kovrin-2.0.0a1/src/kovrin/engine/__init__.py +0 -0
  89. kovrin-2.0.0a1/src/kovrin/engine/beam_search.py +203 -0
  90. kovrin-2.0.0a1/src/kovrin/engine/confidence.py +109 -0
  91. kovrin-2.0.0a1/src/kovrin/engine/executor.py +301 -0
  92. kovrin-2.0.0a1/src/kovrin/engine/graph.py +315 -0
  93. kovrin-2.0.0a1/src/kovrin/engine/mcts.py +295 -0
  94. kovrin-2.0.0a1/src/kovrin/engine/prm.py +173 -0
  95. kovrin-2.0.0a1/src/kovrin/engine/risk_router.py +198 -0
  96. kovrin-2.0.0a1/src/kovrin/engine/speculation.py +163 -0
  97. kovrin-2.0.0a1/src/kovrin/engine/tokens.py +219 -0
  98. kovrin-2.0.0a1/src/kovrin/engine/topology.py +160 -0
  99. kovrin-2.0.0a1/src/kovrin/examples/__init__.py +0 -0
  100. kovrin-2.0.0a1/src/kovrin/examples/company_ops.py +73 -0
  101. kovrin-2.0.0a1/src/kovrin/exceptions.py +129 -0
  102. kovrin-2.0.0a1/src/kovrin/intent/__init__.py +0 -0
  103. kovrin-2.0.0a1/src/kovrin/intent/parser.py +150 -0
  104. kovrin-2.0.0a1/src/kovrin/intent/schema.py +214 -0
  105. kovrin-2.0.0a1/src/kovrin/logging.py +119 -0
  106. kovrin-2.0.0a1/src/kovrin/providers/__init__.py +67 -0
  107. kovrin-2.0.0a1/src/kovrin/providers/base.py +181 -0
  108. kovrin-2.0.0a1/src/kovrin/providers/circuit_breaker.py +132 -0
  109. kovrin-2.0.0a1/src/kovrin/providers/claude.py +122 -0
  110. kovrin-2.0.0a1/src/kovrin/providers/ollama.py +80 -0
  111. kovrin-2.0.0a1/src/kovrin/providers/openai.py +214 -0
  112. kovrin-2.0.0a1/src/kovrin/providers/router.py +96 -0
  113. kovrin-2.0.0a1/src/kovrin/py.typed +0 -0
  114. kovrin-2.0.0a1/src/kovrin/safety/__init__.py +0 -0
  115. kovrin-2.0.0a1/src/kovrin/safety/critics.py +267 -0
  116. kovrin-2.0.0a1/src/kovrin/safety/watchdog.py +685 -0
  117. kovrin-2.0.0a1/src/kovrin/schema/__init__.py +5 -0
  118. kovrin-2.0.0a1/src/kovrin/schema/__main__.py +10 -0
  119. kovrin-2.0.0a1/src/kovrin/schema/exporter.py +357 -0
  120. kovrin-2.0.0a1/src/kovrin/storage/__init__.py +3 -0
  121. kovrin-2.0.0a1/src/kovrin/storage/db.py +174 -0
  122. kovrin-2.0.0a1/src/kovrin/storage/repository.py +330 -0
  123. kovrin-2.0.0a1/src/kovrin/superwork/__init__.py +40 -0
  124. kovrin-2.0.0a1/src/kovrin/superwork/cli.py +168 -0
  125. kovrin-2.0.0a1/src/kovrin/superwork/context_injector.py +257 -0
  126. kovrin-2.0.0a1/src/kovrin/superwork/metrics.py +162 -0
  127. kovrin-2.0.0a1/src/kovrin/superwork/models.py +142 -0
  128. kovrin-2.0.0a1/src/kovrin/superwork/orchestrator.py +242 -0
  129. kovrin-2.0.0a1/src/kovrin/superwork/repository.py +378 -0
  130. kovrin-2.0.0a1/src/kovrin/superwork/session_watcher.py +256 -0
  131. kovrin-2.0.0a1/src/kovrin/tools/__init__.py +39 -0
  132. kovrin-2.0.0a1/src/kovrin/tools/builtin/__init__.py +32 -0
  133. kovrin-2.0.0a1/src/kovrin/tools/builtin/calculator.py +62 -0
  134. kovrin-2.0.0a1/src/kovrin/tools/builtin/code_exec.py +58 -0
  135. kovrin-2.0.0a1/src/kovrin/tools/builtin/datetime_tool.py +33 -0
  136. kovrin-2.0.0a1/src/kovrin/tools/builtin/file_ops.py +132 -0
  137. kovrin-2.0.0a1/src/kovrin/tools/builtin/http_client.py +107 -0
  138. kovrin-2.0.0a1/src/kovrin/tools/builtin/json_tool.py +43 -0
  139. kovrin-2.0.0a1/src/kovrin/tools/builtin/web_search.py +177 -0
  140. kovrin-2.0.0a1/src/kovrin/tools/models.py +99 -0
  141. kovrin-2.0.0a1/src/kovrin/tools/registry.py +143 -0
  142. kovrin-2.0.0a1/src/kovrin/tools/router.py +341 -0
  143. kovrin-2.0.0a1/src/kovrin/tools/sandbox.py +178 -0
  144. kovrin-2.0.0a1/tests/__init__.py +0 -0
  145. kovrin-2.0.0a1/tests/conftest.py +80 -0
  146. kovrin-2.0.0a1/tests/test_adversarial.py +744 -0
  147. kovrin-2.0.0a1/tests/test_adversarial_tokens.py +219 -0
  148. kovrin-2.0.0a1/tests/test_adversarial_tools.py +430 -0
  149. kovrin-2.0.0a1/tests/test_agent_drift.py +269 -0
  150. kovrin-2.0.0a1/tests/test_agents.py +365 -0
  151. kovrin-2.0.0a1/tests/test_api.py +184 -0
  152. kovrin-2.0.0a1/tests/test_approval.py +342 -0
  153. kovrin-2.0.0a1/tests/test_autonomy.py +159 -0
  154. kovrin-2.0.0a1/tests/test_beam_search.py +241 -0
  155. kovrin-2.0.0a1/tests/test_cli.py +83 -0
  156. kovrin-2.0.0a1/tests/test_confidence.py +120 -0
  157. kovrin-2.0.0a1/tests/test_constitutional.py +150 -0
  158. kovrin-2.0.0a1/tests/test_context_injector.py +108 -0
  159. kovrin-2.0.0a1/tests/test_drift.py +349 -0
  160. kovrin-2.0.0a1/tests/test_exceptions.py +151 -0
  161. kovrin-2.0.0a1/tests/test_exploration_integration.py +162 -0
  162. kovrin-2.0.0a1/tests/test_graph_engine.py +207 -0
  163. kovrin-2.0.0a1/tests/test_hash_persistence.py +154 -0
  164. kovrin-2.0.0a1/tests/test_intent_parser.py +101 -0
  165. kovrin-2.0.0a1/tests/test_logging.py +94 -0
  166. kovrin-2.0.0a1/tests/test_mcts.py +243 -0
  167. kovrin-2.0.0a1/tests/test_models.py +131 -0
  168. kovrin-2.0.0a1/tests/test_orchestrator.py +55 -0
  169. kovrin-2.0.0a1/tests/test_orchestrator_agent.py +270 -0
  170. kovrin-2.0.0a1/tests/test_persistence.py +221 -0
  171. kovrin-2.0.0a1/tests/test_prm.py +218 -0
  172. kovrin-2.0.0a1/tests/test_providers.py +382 -0
  173. kovrin-2.0.0a1/tests/test_replay.py +170 -0
  174. kovrin-2.0.0a1/tests/test_risk_router.py +92 -0
  175. kovrin-2.0.0a1/tests/test_safe_tool_router.py +405 -0
  176. kovrin-2.0.0a1/tests/test_schema_exporter.py +282 -0
  177. kovrin-2.0.0a1/tests/test_session_watcher.py +212 -0
  178. kovrin-2.0.0a1/tests/test_speculation.py +168 -0
  179. kovrin-2.0.0a1/tests/test_streaming.py +231 -0
  180. kovrin-2.0.0a1/tests/test_superwork_api.py +134 -0
  181. kovrin-2.0.0a1/tests/test_superwork_cli.py +26 -0
  182. kovrin-2.0.0a1/tests/test_superwork_metrics.py +138 -0
  183. kovrin-2.0.0a1/tests/test_superwork_models.py +210 -0
  184. kovrin-2.0.0a1/tests/test_superwork_repository.py +173 -0
  185. kovrin-2.0.0a1/tests/test_tokens.py +280 -0
  186. kovrin-2.0.0a1/tests/test_tool_registry.py +209 -0
  187. kovrin-2.0.0a1/tests/test_tools.py +280 -0
  188. kovrin-2.0.0a1/tests/test_topology.py +130 -0
  189. kovrin-2.0.0a1/tests/test_trace_logger.py +129 -0
  190. kovrin-2.0.0a1/tests/test_watchdog.py +474 -0
  191. kovrin-2.0.0a1/tests/test_web_search.py +178 -0
@@ -0,0 +1,9 @@
1
+ ANTHROPIC_API_KEY=your_key_here
2
+
3
+ # Brave Search API key for web search tool
4
+ # Free tier: 2,000 queries/month, no credit card required
5
+ # Get your key at: https://api.search.brave.com/
6
+ BRAVE_SEARCH_API_KEY=your_brave_key_here
7
+
8
+ # Database URL — PostgreSQL for production, SQLite path for local dev
9
+ # DATABASE_URL=postgresql://user:password@localhost:5432/kovrin
@@ -0,0 +1,99 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ branches: [main]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ python-version: ["3.12", "3.13"]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v4
18
+
19
+ - name: Set up Python ${{ matrix.python-version }}
20
+ uses: actions/setup-python@v5
21
+ with:
22
+ python-version: ${{ matrix.python-version }}
23
+
24
+ - name: Install dependencies
25
+ run: |
26
+ python -m pip install --upgrade pip
27
+ pip install -e ".[dev,api]"
28
+
29
+ - name: Lint with ruff
30
+ run: |
31
+ ruff check src/ tests/
32
+
33
+ - name: Format check with ruff
34
+ run: |
35
+ ruff format --check src/ tests/
36
+
37
+ - name: Run tests with coverage
38
+ run: |
39
+ pytest tests/ -m "not integration" -v --tb=short \
40
+ --ignore=tests/test_api.py \
41
+ --ignore=tests/test_superwork_api.py \
42
+ --cov=src/kovrin --cov-report=xml --cov-report=term-missing \
43
+ --cov-fail-under=70
44
+
45
+ - name: Upload coverage to Codecov
46
+ if: matrix.python-version == '3.12'
47
+ uses: codecov/codecov-action@v4
48
+ with:
49
+ file: coverage.xml
50
+ fail_ci_if_error: false
51
+
52
+ typecheck:
53
+ runs-on: ubuntu-latest
54
+
55
+ steps:
56
+ - uses: actions/checkout@v4
57
+
58
+ - name: Set up Python
59
+ uses: actions/setup-python@v5
60
+ with:
61
+ python-version: "3.12"
62
+
63
+ - name: Install dependencies
64
+ run: |
65
+ python -m pip install --upgrade pip
66
+ pip install -e ".[dev,api]"
67
+
68
+ - name: Type check with mypy
69
+ run: |
70
+ mypy src/kovrin/ --ignore-missing-imports \
71
+ --no-strict \
72
+ --warn-return-any \
73
+ --warn-unused-configs \
74
+ --disallow-untyped-defs \
75
+ --exclude 'superwork|examples' \
76
+ || echo "::warning::mypy found type errors (non-blocking)"
77
+
78
+ security:
79
+ runs-on: ubuntu-latest
80
+
81
+ steps:
82
+ - uses: actions/checkout@v4
83
+
84
+ - name: Set up Python
85
+ uses: actions/setup-python@v5
86
+ with:
87
+ python-version: "3.12"
88
+
89
+ - name: Install dependencies
90
+ run: |
91
+ python -m pip install --upgrade pip
92
+ pip install -e ".[dev,api]"
93
+ pip install pip-audit
94
+
95
+ - name: Dependency audit
96
+ run: |
97
+ pip-audit --desc --ignore-vuln PYSEC-0 \
98
+ --skip-editable \
99
+ || echo "::warning::pip-audit found issues (non-blocking)"
@@ -0,0 +1,50 @@
1
+ name: Publish to PyPI
2
+
3
+ on:
4
+ release:
5
+ types: [published]
6
+
7
+ permissions:
8
+ contents: read
9
+ id-token: write # Required for trusted publishing
10
+
11
+ jobs:
12
+ build:
13
+ name: Build distribution
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+
18
+ - name: Set up Python
19
+ uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.12"
22
+
23
+ - name: Install build tools
24
+ run: pip install build
25
+
26
+ - name: Build package
27
+ run: python -m build
28
+
29
+ - name: Upload artifacts
30
+ uses: actions/upload-artifact@v4
31
+ with:
32
+ name: dist
33
+ path: dist/
34
+
35
+ publish-pypi:
36
+ name: Publish to PyPI
37
+ needs: build
38
+ runs-on: ubuntu-latest
39
+ environment: pypi
40
+ permissions:
41
+ id-token: write
42
+ steps:
43
+ - name: Download artifacts
44
+ uses: actions/download-artifact@v4
45
+ with:
46
+ name: dist
47
+ path: dist/
48
+
49
+ - name: Publish to PyPI
50
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,71 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+ *.so
6
+ *.egg-info/
7
+ *.egg
8
+ dist/
9
+ build/
10
+ sdist/
11
+ wheels/
12
+ *.whl
13
+
14
+ # Virtual environments
15
+ .venv/
16
+ venv/
17
+ ENV/
18
+
19
+ # IDE
20
+ .vscode/
21
+ .idea/
22
+ *.swp
23
+ *.swo
24
+ *~
25
+ .DS_Store
26
+
27
+ # Environment & secrets
28
+ .env
29
+ .env.local
30
+ .env.production
31
+ !.env.example
32
+
33
+ # Database
34
+ *.db
35
+ *.sqlite3
36
+
37
+ # Testing & coverage
38
+ .pytest_cache/
39
+ htmlcov/
40
+ .coverage
41
+ .coverage.*
42
+ coverage.xml
43
+ *.cover
44
+
45
+ # mypy / ruff
46
+ .mypy_cache/
47
+ .ruff_cache/
48
+
49
+ # Logs
50
+ logs/
51
+ *.log
52
+
53
+ # Node (dashboard)
54
+ node_modules/
55
+ dashboard/node_modules/
56
+ dashboard/dist/
57
+ dashboard/.vite/
58
+
59
+ # Claude Code session data
60
+ .claude/
61
+
62
+ # OS files
63
+ Thumbs.db
64
+ ehthumbs.db
65
+
66
+ # Jupyter
67
+ .ipynb_checkpoints/
68
+
69
+ # Distribution / packaging
70
+ *.tar.gz
71
+ *.zip
@@ -0,0 +1 @@
1
+ 3.12.12
@@ -0,0 +1,41 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [2.0.0a1] - 2026-02-24
9
+
10
+ ### Added
11
+
12
+ - **Constitutional Core (Layer 0)** — 5 immutable axioms with SHA-256 integrity verification. All-or-nothing: one axiom fails = entire task rejected.
13
+ - **Risk-Based Routing Matrix** — Deterministic `(RiskLevel x SpeculationTier) -> RoutingAction` table with 4 autonomy profiles (DEFAULT, CAUTIOUS, AGGRESSIVE, LOCKED). CRITICAL risk always routes to HUMAN_APPROVAL — hardcoded, non-overridable.
14
+ - **Merkle Audit Trail** — SHA-256 hash chain, append-only, tamper-evident. `ImmutableTraceLog` with `verify_integrity()`.
15
+ - **Critic Pipeline** — SafetyCritic (L0 compliance), FeasibilityCritic (capability matching), PolicyCritic (organizational constraints). All must PASS for task execution.
16
+ - **IntentV2 Schema** — AMR-inspired graph with speech act performatives, semantic frames, and HTN decomposition via Claude API.
17
+ - **ExecutionGraph** — DAG-based execution with topological sort, wave-based parallel execution, and dependency resolution.
18
+ - **Watchdog Agent** — Independent safety monitor with temporal rules (NoExecutionAfterRejection, ExcessiveFailureRate, UnexpectedEventSequence). Graduated containment: WARN -> PAUSE -> KILL (irreversible).
19
+ - **Delegation Capability Tokens (DCT)** — HMAC-SHA256 signed tokens with scope narrowing, cascading revocation via TokenAuthority.
20
+ - **MCTS Explorer** — Monte Carlo Tree Search with UCB1 for decomposition exploration.
21
+ - **Beam Search Executor** — Parallel beam execution with pruning.
22
+ - **Process Reward Model (PRM)** — Step-level scoring for agent drift detection.
23
+ - **Speculative Execution** — Three tiers: FREE (read-only), GUARDED (checkpoint/rollback), NONE (human approval).
24
+ - **Safety-Gated Tools** — 8 built-in tools (web_search, calculator, datetime, json_transform, code_analysis, http_request, file_read, file_write) with per-tool risk profiles, sandboxed execution, and Merkle-audited calls.
25
+ - **Multi-Model Providers** — ClaudeProvider, OpenAIProvider, OllamaProvider with ModelRouter and CircuitBreakerProvider for fault tolerance.
26
+ - **Multi-Agent Coordination** — AgentCoordinator with AgentRegistry and DCT-scoped delegation.
27
+ - **CLI** — `kovrin run`, `kovrin verify`, `kovrin audit`, `kovrin serve`, `kovrin status`.
28
+ - **FastAPI Server** — REST + WebSocket + SSE endpoints for pipeline execution, audit, and real-time events.
29
+ - **Schema Exporter** — JSON Schema + TypeScript type generation from Pydantic models (42 models, 17 enums).
30
+ - **TLA+ Formal Verification** — 8 specification modules with 10 machine-checked safety invariants.
31
+ - **741 tests** — Including 42 adversarial attack tests targeting safety bypasses.
32
+ - **CI/CD** — GitHub Actions (pytest, mypy, pip-audit) + Railway auto-deploy.
33
+ - **Brave Search Integration** — Real web search via Brave Search API (free tier).
34
+ - **Custom Exceptions** — KovrinError hierarchy with 10 specific exception types.
35
+ - **Structured Logging** — JSON + human-readable output via `kovrin.logging`.
36
+
37
+ ### Fixed
38
+
39
+ - FeasibilityCritic false rejections — improved prompt with detailed tool capabilities and explicit evaluation rules. Verified: 4/4 tasks PASS in production.
40
+
41
+ [2.0.0a1]: https://github.com/nkovalcin/kovrin/releases/tag/v2.0.0a1