kairo-mcp 1.3.0
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/CHANGELOG.md +1122 -0
- package/LICENSE +21 -0
- package/README.md +662 -0
- package/dist/cli/cli.d.ts +3 -0
- package/dist/cli/cli.d.ts.map +1 -0
- package/dist/cli/cli.js +226 -0
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/commands.d.ts +10 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +938 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/flags.d.ts +30 -0
- package/dist/cli/flags.d.ts.map +1 -0
- package/dist/cli/flags.js +90 -0
- package/dist/cli/flags.js.map +1 -0
- package/dist/cli/output.d.ts +69 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +166 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/types.d.ts +34 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +2 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/contracts/migrations.d.ts +31 -0
- package/dist/contracts/migrations.d.ts.map +1 -0
- package/dist/contracts/migrations.js +71 -0
- package/dist/contracts/migrations.js.map +1 -0
- package/dist/contracts/schemas.d.ts +53 -0
- package/dist/contracts/schemas.d.ts.map +1 -0
- package/dist/contracts/schemas.js +27 -0
- package/dist/contracts/schemas.js.map +1 -0
- package/dist/contracts/stability.d.ts +32 -0
- package/dist/contracts/stability.d.ts.map +1 -0
- package/dist/contracts/stability.js +140 -0
- package/dist/contracts/stability.js.map +1 -0
- package/dist/contracts/zodSchemas.d.ts +811 -0
- package/dist/contracts/zodSchemas.d.ts.map +1 -0
- package/dist/contracts/zodSchemas.js +139 -0
- package/dist/contracts/zodSchemas.js.map +1 -0
- package/dist/core/brief/budget.d.ts +21 -0
- package/dist/core/brief/budget.d.ts.map +1 -0
- package/dist/core/brief/budget.js +42 -0
- package/dist/core/brief/budget.js.map +1 -0
- package/dist/core/checkpoint/checkpointManager.d.ts +29 -0
- package/dist/core/checkpoint/checkpointManager.d.ts.map +1 -0
- package/dist/core/checkpoint/checkpointManager.js +49 -0
- package/dist/core/checkpoint/checkpointManager.js.map +1 -0
- package/dist/core/compaction/compactor.d.ts +40 -0
- package/dist/core/compaction/compactor.d.ts.map +1 -0
- package/dist/core/compaction/compactor.js +168 -0
- package/dist/core/compaction/compactor.js.map +1 -0
- package/dist/core/continuation/continuationBuilder.d.ts +19 -0
- package/dist/core/continuation/continuationBuilder.d.ts.map +1 -0
- package/dist/core/continuation/continuationBuilder.js +184 -0
- package/dist/core/continuation/continuationBuilder.js.map +1 -0
- package/dist/core/coordination/coordinationManager.d.ts +34 -0
- package/dist/core/coordination/coordinationManager.d.ts.map +1 -0
- package/dist/core/coordination/coordinationManager.js +253 -0
- package/dist/core/coordination/coordinationManager.js.map +1 -0
- package/dist/core/coordination/types.d.ts +52 -0
- package/dist/core/coordination/types.d.ts.map +1 -0
- package/dist/core/coordination/types.js +6 -0
- package/dist/core/coordination/types.js.map +1 -0
- package/dist/core/github/changelog.d.ts +9 -0
- package/dist/core/github/changelog.d.ts.map +1 -0
- package/dist/core/github/changelog.js +41 -0
- package/dist/core/github/changelog.js.map +1 -0
- package/dist/core/github/commitMessage.d.ts +4 -0
- package/dist/core/github/commitMessage.d.ts.map +1 -0
- package/dist/core/github/commitMessage.js +125 -0
- package/dist/core/github/commitMessage.js.map +1 -0
- package/dist/core/github/gitContext.d.ts +3 -0
- package/dist/core/github/gitContext.d.ts.map +1 -0
- package/dist/core/github/gitContext.js +67 -0
- package/dist/core/github/gitContext.js.map +1 -0
- package/dist/core/github/releasePlan.d.ts +8 -0
- package/dist/core/github/releasePlan.d.ts.map +1 -0
- package/dist/core/github/releasePlan.js +56 -0
- package/dist/core/github/releasePlan.js.map +1 -0
- package/dist/core/github/semver.d.ts +11 -0
- package/dist/core/github/semver.d.ts.map +1 -0
- package/dist/core/github/semver.js +23 -0
- package/dist/core/github/semver.js.map +1 -0
- package/dist/core/github/types.d.ts +36 -0
- package/dist/core/github/types.d.ts.map +1 -0
- package/dist/core/github/types.js +2 -0
- package/dist/core/github/types.js.map +1 -0
- package/dist/core/graph/derived.d.ts +6 -0
- package/dist/core/graph/derived.d.ts.map +1 -0
- package/dist/core/graph/derived.js +133 -0
- package/dist/core/graph/derived.js.map +1 -0
- package/dist/core/graph/graphEngine.d.ts +11 -0
- package/dist/core/graph/graphEngine.d.ts.map +1 -0
- package/dist/core/graph/graphEngine.js +28 -0
- package/dist/core/graph/graphEngine.js.map +1 -0
- package/dist/core/graph/imports.d.ts +19 -0
- package/dist/core/graph/imports.d.ts.map +1 -0
- package/dist/core/graph/imports.js +0 -0
- package/dist/core/graph/imports.js.map +1 -0
- package/dist/core/graph/mermaid.d.ts +6 -0
- package/dist/core/graph/mermaid.d.ts.map +1 -0
- package/dist/core/graph/mermaid.js +40 -0
- package/dist/core/graph/mermaid.js.map +1 -0
- package/dist/core/graph/moduleGraph.d.ts +27 -0
- package/dist/core/graph/moduleGraph.d.ts.map +1 -0
- package/dist/core/graph/moduleGraph.js +186 -0
- package/dist/core/graph/moduleGraph.js.map +1 -0
- package/dist/core/graph/types.d.ts +32 -0
- package/dist/core/graph/types.d.ts.map +1 -0
- package/dist/core/graph/types.js +2 -0
- package/dist/core/graph/types.js.map +1 -0
- package/dist/core/query/queryEngine.d.ts +26 -0
- package/dist/core/query/queryEngine.d.ts.map +1 -0
- package/dist/core/query/queryEngine.js +258 -0
- package/dist/core/query/queryEngine.js.map +1 -0
- package/dist/core/query/types.d.ts +70 -0
- package/dist/core/query/types.d.ts.map +1 -0
- package/dist/core/query/types.js +6 -0
- package/dist/core/query/types.js.map +1 -0
- package/dist/core/repo/fingerprint.d.ts +0 -0
- package/dist/core/repo/fingerprint.d.ts.map +1 -0
- package/dist/core/repo/fingerprint.js +17 -0
- package/dist/core/repo/fingerprint.js.map +1 -0
- package/dist/core/repo/frameworkDetectors.d.ts +14 -0
- package/dist/core/repo/frameworkDetectors.d.ts.map +1 -0
- package/dist/core/repo/frameworkDetectors.js +151 -0
- package/dist/core/repo/frameworkDetectors.js.map +1 -0
- package/dist/core/repo/repoScanner.d.ts +20 -0
- package/dist/core/repo/repoScanner.d.ts.map +1 -0
- package/dist/core/repo/repoScanner.js +290 -0
- package/dist/core/repo/repoScanner.js.map +1 -0
- package/dist/core/repo/summary.d.ts +7 -0
- package/dist/core/repo/summary.d.ts.map +1 -0
- package/dist/core/repo/summary.js +34 -0
- package/dist/core/repo/summary.js.map +1 -0
- package/dist/core/repo/types.d.ts +62 -0
- package/dist/core/repo/types.d.ts.map +1 -0
- package/dist/core/repo/types.js +10 -0
- package/dist/core/repo/types.js.map +1 -0
- package/dist/core/risk/guardrail.d.ts +3 -0
- package/dist/core/risk/guardrail.d.ts.map +1 -0
- package/dist/core/risk/guardrail.js +47 -0
- package/dist/core/risk/guardrail.js.map +1 -0
- package/dist/core/risk/riskEngine.d.ts +8 -0
- package/dist/core/risk/riskEngine.d.ts.map +1 -0
- package/dist/core/risk/riskEngine.js +112 -0
- package/dist/core/risk/riskEngine.js.map +1 -0
- package/dist/core/risk/riskHeuristics.d.ts +4 -0
- package/dist/core/risk/riskHeuristics.d.ts.map +1 -0
- package/dist/core/risk/riskHeuristics.js +36 -0
- package/dist/core/risk/riskHeuristics.js.map +1 -0
- package/dist/core/salience/config.d.ts +14 -0
- package/dist/core/salience/config.d.ts.map +1 -0
- package/dist/core/salience/config.js +87 -0
- package/dist/core/salience/config.js.map +1 -0
- package/dist/core/salience/salienceEngine.d.ts +16 -0
- package/dist/core/salience/salienceEngine.d.ts.map +1 -0
- package/dist/core/salience/salienceEngine.js +64 -0
- package/dist/core/salience/salienceEngine.js.map +1 -0
- package/dist/core/salience/signals.d.ts +4 -0
- package/dist/core/salience/signals.d.ts.map +1 -0
- package/dist/core/salience/signals.js +143 -0
- package/dist/core/salience/signals.js.map +1 -0
- package/dist/core/salience/types.d.ts +69 -0
- package/dist/core/salience/types.d.ts.map +1 -0
- package/dist/core/salience/types.js +7 -0
- package/dist/core/salience/types.js.map +1 -0
- package/dist/core/session/eventPayloads.d.ts +92 -0
- package/dist/core/session/eventPayloads.d.ts.map +1 -0
- package/dist/core/session/eventPayloads.js +2 -0
- package/dist/core/session/eventPayloads.js.map +1 -0
- package/dist/core/session/reducer.d.ts +14 -0
- package/dist/core/session/reducer.d.ts.map +1 -0
- package/dist/core/session/reducer.js +181 -0
- package/dist/core/session/reducer.js.map +1 -0
- package/dist/core/session/sessionManager.d.ts +252 -0
- package/dist/core/session/sessionManager.d.ts.map +1 -0
- package/dist/core/session/sessionManager.js +655 -0
- package/dist/core/session/sessionManager.js.map +1 -0
- package/dist/core/telemetry/analytics.d.ts +24 -0
- package/dist/core/telemetry/analytics.d.ts.map +1 -0
- package/dist/core/telemetry/analytics.js +167 -0
- package/dist/core/telemetry/analytics.js.map +1 -0
- package/dist/core/telemetry/exporter.d.ts +17 -0
- package/dist/core/telemetry/exporter.d.ts.map +1 -0
- package/dist/core/telemetry/exporter.js +31 -0
- package/dist/core/telemetry/exporter.js.map +1 -0
- package/dist/core/telemetry/recorder.d.ts +19 -0
- package/dist/core/telemetry/recorder.d.ts.map +1 -0
- package/dist/core/telemetry/recorder.js +43 -0
- package/dist/core/telemetry/recorder.js.map +1 -0
- package/dist/core/telemetry/reports.d.ts +6 -0
- package/dist/core/telemetry/reports.d.ts.map +1 -0
- package/dist/core/telemetry/reports.js +84 -0
- package/dist/core/telemetry/reports.js.map +1 -0
- package/dist/core/telemetry/types.d.ts +82 -0
- package/dist/core/telemetry/types.d.ts.map +1 -0
- package/dist/core/telemetry/types.js +9 -0
- package/dist/core/telemetry/types.js.map +1 -0
- package/dist/core/vector/chunking/memoryChunker.d.ts +10 -0
- package/dist/core/vector/chunking/memoryChunker.d.ts.map +1 -0
- package/dist/core/vector/chunking/memoryChunker.js +202 -0
- package/dist/core/vector/chunking/memoryChunker.js.map +1 -0
- package/dist/core/vector/compression/architectureDigest.d.ts +12 -0
- package/dist/core/vector/compression/architectureDigest.d.ts.map +1 -0
- package/dist/core/vector/compression/architectureDigest.js +37 -0
- package/dist/core/vector/compression/architectureDigest.js.map +1 -0
- package/dist/core/vector/embedding/deterministicEmbedder.d.ts +10 -0
- package/dist/core/vector/embedding/deterministicEmbedder.d.ts.map +1 -0
- package/dist/core/vector/embedding/deterministicEmbedder.js +84 -0
- package/dist/core/vector/embedding/deterministicEmbedder.js.map +1 -0
- package/dist/core/vector/memory/memoryEngine.d.ts +56 -0
- package/dist/core/vector/memory/memoryEngine.d.ts.map +1 -0
- package/dist/core/vector/memory/memoryEngine.js +204 -0
- package/dist/core/vector/memory/memoryEngine.js.map +1 -0
- package/dist/core/vector/memory/memoryFingerprint.d.ts +12 -0
- package/dist/core/vector/memory/memoryFingerprint.d.ts.map +1 -0
- package/dist/core/vector/memory/memoryFingerprint.js +33 -0
- package/dist/core/vector/memory/memoryFingerprint.js.map +1 -0
- package/dist/core/vector/providers/deterministicProvider.d.ts +14 -0
- package/dist/core/vector/providers/deterministicProvider.d.ts.map +1 -0
- package/dist/core/vector/providers/deterministicProvider.js +22 -0
- package/dist/core/vector/providers/deterministicProvider.js.map +1 -0
- package/dist/core/vector/providers/httpEmbeddingProvider.d.ts +32 -0
- package/dist/core/vector/providers/httpEmbeddingProvider.d.ts.map +1 -0
- package/dist/core/vector/providers/httpEmbeddingProvider.js +93 -0
- package/dist/core/vector/providers/httpEmbeddingProvider.js.map +1 -0
- package/dist/core/vector/providers/registry.d.ts +9 -0
- package/dist/core/vector/providers/registry.d.ts.map +1 -0
- package/dist/core/vector/providers/registry.js +79 -0
- package/dist/core/vector/providers/registry.js.map +1 -0
- package/dist/core/vector/providers/types.d.ts +23 -0
- package/dist/core/vector/providers/types.d.ts.map +1 -0
- package/dist/core/vector/providers/types.js +2 -0
- package/dist/core/vector/providers/types.js.map +1 -0
- package/dist/core/vector/retrieval/hybridRetriever.d.ts +37 -0
- package/dist/core/vector/retrieval/hybridRetriever.d.ts.map +1 -0
- package/dist/core/vector/retrieval/hybridRetriever.js +131 -0
- package/dist/core/vector/retrieval/hybridRetriever.js.map +1 -0
- package/dist/core/vector/types.d.ts +87 -0
- package/dist/core/vector/types.d.ts.map +1 -0
- package/dist/core/vector/types.js +6 -0
- package/dist/core/vector/types.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +30 -0
- package/dist/index.js.map +1 -0
- package/dist/inspect/cli.d.ts +3 -0
- package/dist/inspect/cli.d.ts.map +1 -0
- package/dist/inspect/cli.js +40 -0
- package/dist/inspect/cli.js.map +1 -0
- package/dist/inspect/projections.d.ts +141 -0
- package/dist/inspect/projections.d.ts.map +1 -0
- package/dist/inspect/projections.js +311 -0
- package/dist/inspect/projections.js.map +1 -0
- package/dist/inspect/render.d.ts +27 -0
- package/dist/inspect/render.d.ts.map +1 -0
- package/dist/inspect/render.js +325 -0
- package/dist/inspect/render.js.map +1 -0
- package/dist/inspect/server.d.ts +18 -0
- package/dist/inspect/server.d.ts.map +1 -0
- package/dist/inspect/server.js +112 -0
- package/dist/inspect/server.js.map +1 -0
- package/dist/perf/index.d.ts +24 -0
- package/dist/perf/index.d.ts.map +1 -0
- package/dist/perf/index.js +38 -0
- package/dist/perf/index.js.map +1 -0
- package/dist/perf/report.d.ts +8 -0
- package/dist/perf/report.d.ts.map +1 -0
- package/dist/perf/report.js +52 -0
- package/dist/perf/report.js.map +1 -0
- package/dist/perf/runner.d.ts +29 -0
- package/dist/perf/runner.d.ts.map +1 -0
- package/dist/perf/runner.js +74 -0
- package/dist/perf/runner.js.map +1 -0
- package/dist/perf/scenarios.d.ts +8 -0
- package/dist/perf/scenarios.d.ts.map +1 -0
- package/dist/perf/scenarios.js +119 -0
- package/dist/perf/scenarios.js.map +1 -0
- package/dist/perf/types.d.ts +32 -0
- package/dist/perf/types.d.ts.map +1 -0
- package/dist/perf/types.js +6 -0
- package/dist/perf/types.js.map +1 -0
- package/dist/plugins/loader.d.ts +78 -0
- package/dist/plugins/loader.d.ts.map +1 -0
- package/dist/plugins/loader.js +193 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +38 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +10 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/pressure/pressureModel.d.ts +6 -0
- package/dist/pressure/pressureModel.d.ts.map +1 -0
- package/dist/pressure/pressureModel.js +102 -0
- package/dist/pressure/pressureModel.js.map +1 -0
- package/dist/prompts/continuityPrompt.d.ts +7 -0
- package/dist/prompts/continuityPrompt.d.ts.map +1 -0
- package/dist/prompts/continuityPrompt.js +43 -0
- package/dist/prompts/continuityPrompt.js.map +1 -0
- package/dist/sdk/index.d.ts +53 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +130 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/security/patterns.d.ts +16 -0
- package/dist/security/patterns.d.ts.map +1 -0
- package/dist/security/patterns.js +61 -0
- package/dist/security/patterns.js.map +1 -0
- package/dist/security/redactor.d.ts +20 -0
- package/dist/security/redactor.d.ts.map +1 -0
- package/dist/security/redactor.js +58 -0
- package/dist/security/redactor.js.map +1 -0
- package/dist/server/createServer.d.ts +10 -0
- package/dist/server/createServer.d.ts.map +1 -0
- package/dist/server/createServer.js +60 -0
- package/dist/server/createServer.js.map +1 -0
- package/dist/server/registerTools.d.ts +4 -0
- package/dist/server/registerTools.d.ts.map +1 -0
- package/dist/server/registerTools.js +1086 -0
- package/dist/server/registerTools.js.map +1 -0
- package/dist/server/responses.d.ts +17 -0
- package/dist/server/responses.d.ts.map +1 -0
- package/dist/server/responses.js +21 -0
- package/dist/server/responses.js.map +1 -0
- package/dist/snapshot/export.d.ts +26 -0
- package/dist/snapshot/export.d.ts.map +1 -0
- package/dist/snapshot/export.js +164 -0
- package/dist/snapshot/export.js.map +1 -0
- package/dist/snapshot/import.d.ts +34 -0
- package/dist/snapshot/import.d.ts.map +1 -0
- package/dist/snapshot/import.js +114 -0
- package/dist/snapshot/import.js.map +1 -0
- package/dist/snapshot/types.d.ts +63 -0
- package/dist/snapshot/types.d.ts.map +1 -0
- package/dist/snapshot/types.js +2 -0
- package/dist/snapshot/types.js.map +1 -0
- package/dist/storage/faultAdapter.d.ts +64 -0
- package/dist/storage/faultAdapter.d.ts.map +1 -0
- package/dist/storage/faultAdapter.js +134 -0
- package/dist/storage/faultAdapter.js.map +1 -0
- package/dist/storage/fileStorageAdapter.d.ts +55 -0
- package/dist/storage/fileStorageAdapter.d.ts.map +1 -0
- package/dist/storage/fileStorageAdapter.js +219 -0
- package/dist/storage/fileStorageAdapter.js.map +1 -0
- package/dist/storage/paths.d.ts +30 -0
- package/dist/storage/paths.d.ts.map +1 -0
- package/dist/storage/paths.js +32 -0
- package/dist/storage/paths.js.map +1 -0
- package/dist/storage/quarantine.d.ts +36 -0
- package/dist/storage/quarantine.d.ts.map +1 -0
- package/dist/storage/quarantine.js +26 -0
- package/dist/storage/quarantine.js.map +1 -0
- package/dist/storage/redactingAdapter.d.ts +13 -0
- package/dist/storage/redactingAdapter.d.ts.map +1 -0
- package/dist/storage/redactingAdapter.js +91 -0
- package/dist/storage/redactingAdapter.js.map +1 -0
- package/dist/storage/storageAdapter.d.ts +46 -0
- package/dist/storage/storageAdapter.d.ts.map +1 -0
- package/dist/storage/storageAdapter.js +2 -0
- package/dist/storage/storageAdapter.js.map +1 -0
- package/dist/types/domain.d.ts +139 -0
- package/dist/types/domain.d.ts.map +1 -0
- package/dist/types/domain.js +9 -0
- package/dist/types/domain.js.map +1 -0
- package/dist/types/events.d.ts +28 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +7 -0
- package/dist/types/events.js.map +1 -0
- package/dist/utils/errors.d.ts +6 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +10 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/ids.d.ts +7 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +22 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +26 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/time.d.ts +8 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +11 -0
- package/dist/utils/time.js.map +1 -0
- package/package.json +79 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,1122 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Kairo are documented here. The format is based on
|
|
4
|
+
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project adheres to
|
|
5
|
+
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [1.3.0] - 2026-05-21
|
|
10
|
+
|
|
11
|
+
**npm distribution.** Kairo becomes installable like a real developer
|
|
12
|
+
tool. No new architecture subsystems, no schema changes, no new MCP
|
|
13
|
+
tools — packaging, distribution, install smoke, docs.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **`PUBLISHING.md`** — single-file maintainer runbook covering npm
|
|
18
|
+
account / 2FA prerequisites, the pre-publish gate (mirrors the
|
|
19
|
+
install-smoke CI job), the actual `npm publish` flow, and the
|
|
20
|
+
72-hour `npm deprecate` / `npm unpublish` discipline. Every
|
|
21
|
+
`npm publish` is a human decision; this file is the reference.
|
|
22
|
+
|
|
23
|
+
- **`publishConfig.access: "public"`** in `package.json` — defensive
|
|
24
|
+
(the package name is unscoped, so this is already npm's default,
|
|
25
|
+
but explicit-over-implicit is cheaper to get right once).
|
|
26
|
+
|
|
27
|
+
- **Expanded npm `keywords`** (15 entries, up from 7) for npm search
|
|
28
|
+
discoverability: adds `claude`, `cursor`, `ai-coding`, `agent-memory`,
|
|
29
|
+
`local-first`, `deterministic`, `cli`, `typescript`. No behaviour
|
|
30
|
+
change — npm metadata only.
|
|
31
|
+
|
|
32
|
+
- **Install-smoke now exercises `kairo init`** end-to-end. The CI
|
|
33
|
+
job (1) installs the packed tarball into a fresh project, (2)
|
|
34
|
+
runs `kairo init --json` and asserts `mcpJson === 'written'`,
|
|
35
|
+
(3) verifies `.mcp.json` exists and wires `kairo`, (4) re-runs
|
|
36
|
+
`kairo init --json` and asserts the second run reports `mcpJson
|
|
37
|
+
=== 'skipped'` (idempotency contract). Catches every packaging
|
|
38
|
+
regression that affects the documented Quick start path.
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- **README Quick start now leads with `npm install -g kairo-mcp`**.
|
|
43
|
+
The git-install path is preserved as a "dev tip" fallback for users
|
|
44
|
+
who want main-branch builds. The `npx -p kairo-mcp kairo init`
|
|
45
|
+
no-install path is documented honestly — including *why* `-p
|
|
46
|
+
kairo-mcp` is needed (npm packages with multiple bins resolve
|
|
47
|
+
`npx <pkg>` to the bin matching the package name, which here is the
|
|
48
|
+
MCP server, not the CLI).
|
|
49
|
+
|
|
50
|
+
### Not done in this release (deliberate)
|
|
51
|
+
|
|
52
|
+
- **No actual `npm publish` from this commit.** v1.3.0 is *ready*
|
|
53
|
+
to publish, but the publish itself is a human action run from a
|
|
54
|
+
clean local checkout with 2FA. See `PUBLISHING.md`.
|
|
55
|
+
- No MCP tool, schema, persisted artefact, or stability registry
|
|
56
|
+
changes. The CLI surface remains experimental per ADR-0016.
|
|
57
|
+
|
|
58
|
+
### Notes
|
|
59
|
+
|
|
60
|
+
- 193/193 tests pass.
|
|
61
|
+
- `npm pack --dry-run` confirms a clean 266 kB / 384-file tarball:
|
|
62
|
+
no `.kairo/`, no tests, no fixtures, no `.git`, no `.github`. Only
|
|
63
|
+
`dist/`, `README.md`, `LICENSE`, `CHANGELOG.md` ship.
|
|
64
|
+
- The three bins (`kairo`, `kairo-mcp`, `kairo-inspect`) all land on
|
|
65
|
+
PATH after `npm install -g kairo-mcp`. After publish, the
|
|
66
|
+
documented Quick start becomes `npm install -g kairo-mcp; cd
|
|
67
|
+
your-project; kairo init` — three commands, ≤60 seconds.
|
|
68
|
+
|
|
69
|
+
## [1.2.0] - 2026-05-21
|
|
70
|
+
|
|
71
|
+
**DevEx polish — CLI UX + README clarity.** No new architecture
|
|
72
|
+
subsystems. No schema changes. No new MCP tools. Pure surface polish
|
|
73
|
+
across the developer-facing edges that were rough on first contact.
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- **Top-level `kairo --help`** gains a 3-line **Quick start** callout
|
|
78
|
+
above the command list so first-time users see action items
|
|
79
|
+
(`cd → init → doctor → status`) instead of a flat command catalogue.
|
|
80
|
+
The footer hint now points to `kairo doctor` when something looks
|
|
81
|
+
off, not just `kairo help <command>`.
|
|
82
|
+
|
|
83
|
+
- **`kairo init`** now detects the MCP host on `PATH` (currently
|
|
84
|
+
recognises Claude Code; structured to grow) and prints a concrete
|
|
85
|
+
3-step **Next steps** block tailored to what was found:
|
|
86
|
+
```
|
|
87
|
+
Initialised
|
|
88
|
+
.mcp.json: written
|
|
89
|
+
.gitignore: appended
|
|
90
|
+
mcp host: claude
|
|
91
|
+
|
|
92
|
+
Next steps
|
|
93
|
+
1. Open Claude Code in this project: claude
|
|
94
|
+
2. Inside the session, run: /mcp
|
|
95
|
+
→ you should see kairo · connected · 41 tools
|
|
96
|
+
3. If anything looks off, run: kairo doctor
|
|
97
|
+
```
|
|
98
|
+
The `--json` output gains a `detectedHost` field. Existing
|
|
99
|
+
`mcpJson` / `gitignore` / `projectRoot` fields are unchanged.
|
|
100
|
+
|
|
101
|
+
- **`kairo doctor`** now correctly handles the case where it's run
|
|
102
|
+
from inside the `kairo-mcp` dev repo itself (where `dist/index.js`
|
|
103
|
+
lives at the repo root, not under `node_modules/kairo-mcp/`). The
|
|
104
|
+
`kairo-mcp installed` and `version match` checks fall back to the
|
|
105
|
+
self-install path when `node_modules/kairo-mcp/` is absent but the
|
|
106
|
+
current `package.json` says `name: "kairo-mcp"`.
|
|
107
|
+
|
|
108
|
+
- **`README.md`** Quick start and Real workflow sections updated to
|
|
109
|
+
the v1.2.0 output: realistic `kairo init` block with detected host
|
|
110
|
+
+ next-steps; install line no longer pins to a stale v1.1.0 tag.
|
|
111
|
+
|
|
112
|
+
### Notes
|
|
113
|
+
|
|
114
|
+
- 193/193 tests still pass. CI matrix (6 cells + install-smoke) all
|
|
115
|
+
green on v1.1.3 baseline; v1.2.0 changes don't touch any tested
|
|
116
|
+
invariant.
|
|
117
|
+
- Stability registry unchanged. No new MCP tools. No new persisted
|
|
118
|
+
artefacts. The CLI surface remains experimental per ADR-0016.
|
|
119
|
+
- Success condition for this slice (per the brief): _"a new
|
|
120
|
+
developer should understand Kairo and run it on a repo in under
|
|
121
|
+
5 minutes."_ The `init → doctor → status` happy path now takes
|
|
122
|
+
3 commands and reads honestly at every step.
|
|
123
|
+
|
|
124
|
+
## [1.1.3] - 2026-05-21
|
|
125
|
+
|
|
126
|
+
CI caught another real bug, this time on `ubuntu-latest · node 20`. The
|
|
127
|
+
v1.1.2 timeout fix unblocked Windows; v1.1.3 fixes the test-file ordering
|
|
128
|
+
race that was hidden until the matrix finally had room to expose it.
|
|
129
|
+
|
|
130
|
+
### Fixed
|
|
131
|
+
|
|
132
|
+
- **`tests/cli.test.ts` returned exit 1 instead of 2 on `ubuntu-latest ·
|
|
133
|
+
node 20`.** Root cause: `tests/cli.test.ts` assumed `dist/cli/cli.js`
|
|
134
|
+
was already built (it did `spawnSync(node, [CLI, ...])` without first
|
|
135
|
+
running the build), so it was racing against
|
|
136
|
+
`tests/integration.server.test.ts`'s `beforeAll(execSync('npm run
|
|
137
|
+
build'))`. On 5 of 6 matrix cells the Vitest parallel worker picked
|
|
138
|
+
the integration file first; on ubuntu + node 20 it picked the CLI
|
|
139
|
+
file first, the bin didn't exist, `spawnSync` returned 1 (Cannot
|
|
140
|
+
find module), and the "unknown command exits 2" assertion failed.
|
|
141
|
+
|
|
142
|
+
Fix: `tests/cli.test.ts` now has its own `beforeAll` that runs `npm
|
|
143
|
+
run build` if `dist/cli/cli.js` is missing — same pattern
|
|
144
|
+
`integration.server.test.ts` uses. Test-file order is now irrelevant.
|
|
145
|
+
|
|
146
|
+
### Notes
|
|
147
|
+
|
|
148
|
+
- 193/193 tests still pass. No change to MCP tools, CLI behaviour,
|
|
149
|
+
schemas, or any stable surface. Test infrastructure only — this
|
|
150
|
+
bug was always there, just deterministically masked by parallel
|
|
151
|
+
file order on every host except one.
|
|
152
|
+
- This is the **second** real bug the CI matrix has caught in 24h.
|
|
153
|
+
ADR-0017's premise (cross-platform CI catches deterministic
|
|
154
|
+
regressions that local dev can't) keeps holding.
|
|
155
|
+
|
|
156
|
+
## [1.1.2] - 2026-05-21
|
|
157
|
+
|
|
158
|
+
First downstream CI run caught a real Windows + Node 22 flake. Single-line
|
|
159
|
+
timeout fix; no code-layer change. Caught and fixed within an hour of
|
|
160
|
+
v1.1.1 going green — exactly the loop ADR-0017 promised.
|
|
161
|
+
|
|
162
|
+
### Fixed
|
|
163
|
+
|
|
164
|
+
- **`tests/snapshot.test.ts` "refuses to overwrite a non-empty .kairo/
|
|
165
|
+
unless force" timed out at 5000ms on `windows-latest · node 22`.** The
|
|
166
|
+
test does ~2× the work of any other snapshot test (two full
|
|
167
|
+
`seedProject` calls + one export + two imports — one rejected, one with
|
|
168
|
+
`force`). Default Vitest 5s ceiling flaked on slow Windows + Node 22 CI
|
|
169
|
+
runners where `mkdtemp` / `rm -rf` / `spawn` are slower. The other five
|
|
170
|
+
matrix cells (ubuntu × 2, macos × 2, windows + node 20) all passed.
|
|
171
|
+
|
|
172
|
+
Two-part fix:
|
|
173
|
+
- **Per-test timeout 20s** on that specific test — deterministic ceiling
|
|
174
|
+
for the proven-heavy case.
|
|
175
|
+
- **Global `testTimeout: 15_000`** in `vitest.config.ts` — safety net for
|
|
176
|
+
other honest integration tests in this suite (snapshot round-trip,
|
|
177
|
+
inspect-server boot, perf scenarios) that do real filesystem + spawn
|
|
178
|
+
work. Fast tests are unaffected; the default 5s is just too tight as a
|
|
179
|
+
cross-platform ceiling.
|
|
180
|
+
|
|
181
|
+
### Notes
|
|
182
|
+
|
|
183
|
+
- 193/193 tests pass on the v1.1.2 commit on Windows × Node 20 + 22
|
|
184
|
+
locally; the matrix gate ran across all six cells.
|
|
185
|
+
- No change to MCP tools, schemas, or any stable surface. Test infra only.
|
|
186
|
+
|
|
187
|
+
## [1.1.1] - 2026-05-21
|
|
188
|
+
|
|
189
|
+
**Operational CI & repository polish.** No code-layer changes, no
|
|
190
|
+
new MCP tools, no new persisted artefacts, no schema bumps. Pure
|
|
191
|
+
infrastructure-software hardening. See
|
|
192
|
+
[ADR-0017](docs/adr/0017-ci-and-repo-policy.md).
|
|
193
|
+
|
|
194
|
+
### Added
|
|
195
|
+
|
|
196
|
+
- **`.github/workflows/ci.yml`** — cross-platform matrix gate
|
|
197
|
+
(ubuntu / macOS / windows × Node 20 & 22 = 6 cells) running the
|
|
198
|
+
full local gate (`typecheck` → `lint` → `format:check` → `test` →
|
|
199
|
+
`build`). `fail-fast: false` so a Windows flake never masks a real
|
|
200
|
+
macOS regression.
|
|
201
|
+
- **Install-smoke job** — after the matrix gate, runs `npm pack`,
|
|
202
|
+
installs the tarball into a fresh `npm init` project, and verifies
|
|
203
|
+
`dist/index.js` + `dist/cli/cli.js` ship, `kairo --version` exits 0,
|
|
204
|
+
and `kairo doctor --json` returns the documented stable shape.
|
|
205
|
+
Catches packaging regressions like the one v1.0.1 fixed.
|
|
206
|
+
- **`.github/workflows/nightly-replay.yml`** — daily tripwire that
|
|
207
|
+
re-runs the full suite and asserts `exportSnapshot` produces a
|
|
208
|
+
byte-identical `contentSha256` across two consecutive runs of the
|
|
209
|
+
same `.kairo/`. Not a release blocker; surfaces latent flakes and
|
|
210
|
+
Node-minor regressions.
|
|
211
|
+
- **PR template** (`.github/PULL_REQUEST_TEMPLATE.md`) with four
|
|
212
|
+
load-bearing checks: smallest user-visible change, stability
|
|
213
|
+
contract, schemas & migrations (ADR-0012), determinism &
|
|
214
|
+
replay-safety.
|
|
215
|
+
- **Three issue templates** (`.github/ISSUE_TEMPLATE/*.yml`): bug
|
|
216
|
+
report (with version / OS / `kairo doctor --json` blob), feature
|
|
217
|
+
request (with honest-scope checkboxes), stability question (routed
|
|
218
|
+
to the right triage bucket).
|
|
219
|
+
- **`.github/ISSUE_TEMPLATE/config.yml`** — disables blank issues;
|
|
220
|
+
routes "how does X work" questions to GitHub Discussions.
|
|
221
|
+
- **`.github/CODEOWNERS`** — single-owner today; structured to grow.
|
|
222
|
+
|
|
223
|
+
### Changed
|
|
224
|
+
|
|
225
|
+
- **README badge row** swaps the static "tests" badge for a dynamic
|
|
226
|
+
**`ci`** badge that reads from `actions/workflows/ci.yml`. Real-time
|
|
227
|
+
green vs static claim. ADR count bumped from 16 to 17.
|
|
228
|
+
|
|
229
|
+
### Notes
|
|
230
|
+
|
|
231
|
+
- 193/193 tests pass on v1.1.1. Same suite the new CI matrix runs.
|
|
232
|
+
- No flaky network tests, no cloud CI dependencies. CI is
|
|
233
|
+
GitHub-Actions-native and runs entirely on GitHub-hosted runners.
|
|
234
|
+
- Discoverability work (repo topics, description, social preview,
|
|
235
|
+
Discussions toggle) is documented in ADR-0017 §10 but lives in
|
|
236
|
+
GitHub UI, not in the repo files.
|
|
237
|
+
|
|
238
|
+
## [1.1.0] - 2026-05-21
|
|
239
|
+
|
|
240
|
+
**`kairo` CLI surface + full README rewrite.** Developer experience —
|
|
241
|
+
no new cognition, no new persisted artefacts, no schema changes.
|
|
242
|
+
|
|
243
|
+
See [`docs/adr/0016-cli-surface.md`](docs/adr/0016-cli-surface.md).
|
|
244
|
+
|
|
245
|
+
### Added
|
|
246
|
+
|
|
247
|
+
- **`kairo` binary** with 18 subcommands (`init`, `status`, `brief`,
|
|
248
|
+
`continue`, `sessions`, `checkpoints`, `graph`, `search`, `inspect`,
|
|
249
|
+
`serve`, `snapshot`, `compact`, `benchmark`, `doctor`, `stability`,
|
|
250
|
+
`plugins`, `completion`, `version`). Every command honours global
|
|
251
|
+
flags `--json`, `--quiet`, `--verbose`, `--no-color`, `--project`,
|
|
252
|
+
`--help`, `--version`. Globals are accepted on either side of the
|
|
253
|
+
subcommand (git/docker idiom).
|
|
254
|
+
- **`kairo init`** — one command to wire Kairo into any MCP host project
|
|
255
|
+
(writes `.mcp.json`, appends `.kairo/` to `.gitignore`). Idempotent.
|
|
256
|
+
- **`kairo doctor`** — fast self-diagnosis with stable exit code 5 when
|
|
257
|
+
fixable issues are found. Catches the exact `dist/` install gap that
|
|
258
|
+
v1.0.1 fixed.
|
|
259
|
+
- **Stable JSON output** envelope — canonical key ordering at every
|
|
260
|
+
level; error shape `{ "error": { "code": "...", "message": "..." } }`.
|
|
261
|
+
Shape is experimental until v1.2.0 — additive changes only in v1.x.
|
|
262
|
+
- **Shell completion** — `kairo completion bash|zsh|pwsh` emits a
|
|
263
|
+
deterministic script generated from the subcommand registry.
|
|
264
|
+
- **Stable exit codes** (0 ok / 1 unexpected / 2 misuse / 3 no-kairo / 4
|
|
265
|
+
validation / 5 doctor-fixable). Adding a code is back-compat; meaning
|
|
266
|
+
changes are major-version.
|
|
267
|
+
- **`tests/cli.test.ts`** — 11 end-to-end tests over the compiled bin
|
|
268
|
+
(smoke + JSON shape + global-flag positioning + idempotency).
|
|
269
|
+
- **CLI commands added to the stability registry** as `experimental` (new
|
|
270
|
+
surface kind: `cli-command`). Top-level command names are
|
|
271
|
+
back-compat from v1.1.0; `--json` shape locks in v1.2.0.
|
|
272
|
+
|
|
273
|
+
### Changed
|
|
274
|
+
|
|
275
|
+
- **README rewritten.** 24-section structure: hero / problem / 5-minute
|
|
276
|
+
architecture / quickstart / real workflow / token reduction /
|
|
277
|
+
continuation / graph / snapshot / multi-agent / VS Code / inspect /
|
|
278
|
+
architecture diagram / CLI reference / MCP surface / stability / FAQ /
|
|
279
|
+
roadmap / contributing / docs index / licence. Honest scope at the
|
|
280
|
+
top, "What Kairo IS NOT" preserved on the front page.
|
|
281
|
+
- **`package.json` bin** now lists three binaries: `kairo`, `kairo-mcp`,
|
|
282
|
+
`kairo-inspect`. The first is the new developer-facing surface; the
|
|
283
|
+
other two are unchanged from v1.0.1.
|
|
284
|
+
|
|
285
|
+
### Fixed
|
|
286
|
+
|
|
287
|
+
- **CLI smoke caught a friction point on first build.** The flag parser
|
|
288
|
+
initially only accepted globals *before* the subcommand. Fixed to
|
|
289
|
+
accept them on either side — `kairo doctor --json` and
|
|
290
|
+
`kairo --json doctor` are now equivalent.
|
|
291
|
+
|
|
292
|
+
### Notes
|
|
293
|
+
|
|
294
|
+
- 193/193 tests pass on v1.1.0 (was 182 on v1.0.0; +11 CLI tests).
|
|
295
|
+
- No new MCP tools. No new persisted artefacts. No schema bumps.
|
|
296
|
+
- The CLI does **not** drive the session ledger — agent-write ops
|
|
297
|
+
(`session_start`, `record`, `checkpoint`, ...) stay behind MCP. That
|
|
298
|
+
boundary is deliberate (ADR-0016 §3).
|
|
299
|
+
|
|
300
|
+
## [1.0.1] - 2026-05-21
|
|
301
|
+
|
|
302
|
+
Single-line packaging fix caught by first downstream install.
|
|
303
|
+
|
|
304
|
+
### Fixed
|
|
305
|
+
|
|
306
|
+
- **`npm install github:sandy001-kki/Kairo#v1.0.x` now ships a working
|
|
307
|
+
`dist/`.** Added `"prepare": "npm run build"` to `package.json` so
|
|
308
|
+
installs from a git ref run the TypeScript build automatically. Before
|
|
309
|
+
this, the package shipped without `dist/index.js`, and downstream
|
|
310
|
+
consumers (Claude Code, MCP hosts, anything wiring up `kairo-mcp` from
|
|
311
|
+
git) hit `Error: Cannot find module '.../dist/index.js'`. No other
|
|
312
|
+
code changed.
|
|
313
|
+
|
|
314
|
+
### Notes
|
|
315
|
+
|
|
316
|
+
- No surface changes. Stability registry untouched. 182/182 tests pass.
|
|
317
|
+
- This is the recommended baseline for the first wave of v1.x adopters.
|
|
318
|
+
|
|
319
|
+
## [1.0.0] - 2026-05-21
|
|
320
|
+
|
|
321
|
+
**Stable production release.**
|
|
322
|
+
|
|
323
|
+
> v1.0.0 means: Kairo's cognition architecture, storage guarantees, and
|
|
324
|
+
> integration boundaries are stable and trustworthy. It does NOT mean
|
|
325
|
+
> "feature-complete forever".
|
|
326
|
+
|
|
327
|
+
See [`docs/RELEASE_AUDIT_v1.0.0-rc1.md`](docs/RELEASE_AUDIT_v1.0.0-rc1.md)
|
|
328
|
+
for the pre-release audit (10 areas, all PASS) and
|
|
329
|
+
[`docs/DOGFOOD_v1.0.0-rc1.md`](docs/DOGFOOD_v1.0.0-rc1.md) for the
|
|
330
|
+
operational dogfood cycle that ran between rc1 and v1.0.0.
|
|
331
|
+
|
|
332
|
+
### What's stable (the v1.0.0 contract)
|
|
333
|
+
|
|
334
|
+
- **33 stable MCP tools** (continuity loop, intelligence, risk, GitHub,
|
|
335
|
+
graph, memory, coordination, telemetry, analytics, query, brief,
|
|
336
|
+
snapshot).
|
|
337
|
+
- **6 experimental MCP tools** (`kairo_benchmark`, `kairo_perf_report`,
|
|
338
|
+
`kairo_compact_memory`, `kairo_index_status`, `kairo_plugins_list`,
|
|
339
|
+
`kairo_stability_of`) — kept experimental for now per the dogfood
|
|
340
|
+
decision; promotion candidates for v1.0.x or v1.1.0.
|
|
341
|
+
- **1 stable prompt** (`kairo_continuity`), **2 stable resources**
|
|
342
|
+
(`kairo://session/current`, `kairo://checkpoint/latest`).
|
|
343
|
+
- **14 stable inspect HTTP routes**.
|
|
344
|
+
- **7 stable schema constants** (events, telemetry, audit, sessions,
|
|
345
|
+
checkpoints, intelligence, vector index — all under ADR-0012).
|
|
346
|
+
- **Stable snapshot format** (`snapshotSchema: 1`).
|
|
347
|
+
- **Stable token-discipline contract** (compact by default, reports to
|
|
348
|
+
files; brief modes `tiny`/`normal`/`deep` with their v0.8.2 budgets).
|
|
349
|
+
|
|
350
|
+
The full registry lives in
|
|
351
|
+
[`src/contracts/stability.ts`](src/contracts/stability.ts); the policy
|
|
352
|
+
lives in [`docs/API_STABILITY.md`](docs/API_STABILITY.md). Anything
|
|
353
|
+
marked `stable` there stays callable with the same shape on every v1.x
|
|
354
|
+
release.
|
|
355
|
+
|
|
356
|
+
### What v1.0.0 is NOT (5 boundaries on the README front page)
|
|
357
|
+
|
|
358
|
+
1. Not distributed consensus.
|
|
359
|
+
2. Not SaaS.
|
|
360
|
+
3. Not autonomous AGI orchestration.
|
|
361
|
+
4. Not guaranteed semantic truth.
|
|
362
|
+
5. Not real-time collaborative editing.
|
|
363
|
+
|
|
364
|
+
Out of scope **by design**, not deferred.
|
|
365
|
+
|
|
366
|
+
### Changes vs v1.0.0-rc1
|
|
367
|
+
|
|
368
|
+
Code diff between rc1 and v1.0.0 is intentionally tiny — only what the
|
|
369
|
+
dogfood cycle found:
|
|
370
|
+
|
|
371
|
+
- **Fixed (bug):** `SessionManager.heartbeat()` crashed when called
|
|
372
|
+
without arguments (`args.reread` on undefined). The MCP tool always
|
|
373
|
+
passed an object, so the e2e tests missed it; the SDK / direct-import
|
|
374
|
+
path failed. Default arg added; regression test in
|
|
375
|
+
`tests/session.test.ts`.
|
|
376
|
+
- **Fixed (polish):** Continuation brief's "Recommended next actions"
|
|
377
|
+
section showed a duplicate "Investigate and resolve outstanding
|
|
378
|
+
errors" line with a `..` double period when there were unresolved
|
|
379
|
+
errors. `recommendNextActions` now strips a trailing `.` before
|
|
380
|
+
re-adding one and skips the "Continue remaining work" item when the
|
|
381
|
+
remaining entry is the auto-injected error-investigation boilerplate
|
|
382
|
+
(already covered by the "Resolve N unresolved errors" action above).
|
|
383
|
+
- **Added:** `docs/DOGFOOD_v1.0.0-rc1.md` — the operational dogfood
|
|
384
|
+
report with all findings, observations, and decisions.
|
|
385
|
+
|
|
386
|
+
### Notes
|
|
387
|
+
|
|
388
|
+
- **182/182 tests** pass on the v1.0.0 commit. Lint, typecheck, prettier,
|
|
389
|
+
build clean.
|
|
390
|
+
- No schema bumps. No new MCP tools. No new architecture principles. No
|
|
391
|
+
new persisted artefacts. v1.0.0 is the contract, not a feature push.
|
|
392
|
+
- The compatibility matrix and v1.0.0 entry criteria from
|
|
393
|
+
[`docs/V1_READINESS.md`](docs/V1_READINESS.md) are all checked.
|
|
394
|
+
|
|
395
|
+
## [1.0.0-rc1] - 2026-05-21
|
|
396
|
+
|
|
397
|
+
Release-candidate audit pass before v1.0.0. **No new features, no
|
|
398
|
+
architecture changes, no subsystem additions.** Pure verification +
|
|
399
|
+
small honest corrections + the explicit "What Kairo IS NOT" boundary on
|
|
400
|
+
the front page.
|
|
401
|
+
|
|
402
|
+
See [`docs/RELEASE_AUDIT_v1.0.0-rc1.md`](docs/RELEASE_AUDIT_v1.0.0-rc1.md)
|
|
403
|
+
for the full audit. All ten audit areas (determinism, compatibility,
|
|
404
|
+
recovery, token-efficiency, surface, security, performance, documentation,
|
|
405
|
+
honest-scope, release-discipline) passed.
|
|
406
|
+
|
|
407
|
+
### Added
|
|
408
|
+
|
|
409
|
+
- `docs/RELEASE_AUDIT_v1.0.0-rc1.md` — the full audit report and the
|
|
410
|
+
recommendation: tag rc1, dogfood one cycle, cut v1.0.0 if no
|
|
411
|
+
regressions surface.
|
|
412
|
+
- `README.md` — **"What Kairo is NOT"** section (5 boundaries: not
|
|
413
|
+
distributed consensus, not SaaS, not autonomous AGI orchestration,
|
|
414
|
+
not guaranteed semantic truth, not real-time collaborative editing).
|
|
415
|
+
These are out of scope **by design**, not deferred.
|
|
416
|
+
|
|
417
|
+
### Changed
|
|
418
|
+
|
|
419
|
+
- Version bumped to `1.0.0-rc1`. SERVER_VERSION matches.
|
|
420
|
+
|
|
421
|
+
### Notes
|
|
422
|
+
|
|
423
|
+
- 181/181 tests pass on this commit. Lint, typecheck, prettier, build
|
|
424
|
+
clean.
|
|
425
|
+
- v1.0.0 itself will be a version bump from rc1 (no code change required)
|
|
426
|
+
after the dogfood cycle. Optionally lifts validated experimental tools
|
|
427
|
+
to stable in the same release.
|
|
428
|
+
- `v1.0.0` does NOT mean "feature-complete forever". It means: Kairo's
|
|
429
|
+
cognition architecture, storage guarantees, and integration boundaries
|
|
430
|
+
are stable and trustworthy.
|
|
431
|
+
|
|
432
|
+
## [0.9.4] - 2026-05-21
|
|
433
|
+
|
|
434
|
+
Final slice of v0.9.x stabilization. Locks in the integration boundaries
|
|
435
|
+
v1.0.0 will promise. See [API_STABILITY.md](docs/API_STABILITY.md),
|
|
436
|
+
[PLUGIN_API.md](docs/PLUGIN_API.md), [SDK.md](docs/SDK.md),
|
|
437
|
+
[MCP_COMPATIBILITY.md](docs/MCP_COMPATIBILITY.md),
|
|
438
|
+
[V1_READINESS.md](docs/V1_READINESS.md), and
|
|
439
|
+
[ADR-0015](docs/adr/0015-api-stability-and-plugins.md).
|
|
440
|
+
|
|
441
|
+
### Added
|
|
442
|
+
|
|
443
|
+
- **`src/contracts/stability.ts`** — central API stability registry with four
|
|
444
|
+
tiers (`stable` / `experimental` / `internal` / `deprecated`). 33 MCP
|
|
445
|
+
tools, 1 prompt, 2 resources, 14 inspect routes, 7 schemas, and the
|
|
446
|
+
snapshot format are marked stable. 6 tools (`kairo_benchmark`,
|
|
447
|
+
`kairo_perf_report`, `kairo_compact_memory`, `kairo_index_status`,
|
|
448
|
+
`kairo_plugins_list`, `kairo_stability_of`) stay experimental.
|
|
449
|
+
- **`src/plugins/`** — plugin manifest contract (`apiVersion:
|
|
450
|
+
'kairo.plugin/1'`). Zod-validated, semver-compatibility-checked, with a
|
|
451
|
+
vocabulary of declared capabilities. **Manifest-only**: no in-process
|
|
452
|
+
JS execution. Plugins are external MCP servers the host (Claude Desktop,
|
|
453
|
+
Cursor, …) loads via its own config.
|
|
454
|
+
- **`src/sdk/`** — small, read-only, dependency-light local client
|
|
455
|
+
(`KairoClient`). Reads `.kairo/` directly via the same projections the
|
|
456
|
+
inspect surface uses. No MCP spawn, no network. Designed for build
|
|
457
|
+
scripts, CI checks, and editor extensions.
|
|
458
|
+
- **Two new MCP tools** (experimental):
|
|
459
|
+
- `kairo_plugins_list` — list validated plugin manifests.
|
|
460
|
+
- `kairo_stability_of` — lookup the stability tier of any documented
|
|
461
|
+
surface, or dump the full registry.
|
|
462
|
+
- **MCP compatibility tests** in `tests/integration.server.test.ts`:
|
|
463
|
+
assert every tool has a name + `inputSchema`, assert bad input does not
|
|
464
|
+
kill the stdio transport, assert `kairo_stability_of` returns the
|
|
465
|
+
registered tier for stable tools.
|
|
466
|
+
- **Five new docs**: `docs/API_STABILITY.md`, `docs/PLUGIN_API.md`,
|
|
467
|
+
`docs/SDK.md`, `docs/MCP_COMPATIBILITY.md`, `docs/V1_READINESS.md`.
|
|
468
|
+
- **`docs/V1_READINESS.md`** documents the compatibility matrix (Node,
|
|
469
|
+
MCP SDK, transports, embedders, OS, filesystem assumptions) and the
|
|
470
|
+
v1.0.0 entry criteria — all checked.
|
|
471
|
+
|
|
472
|
+
### Changed
|
|
473
|
+
|
|
474
|
+
- Architecture core principles list (`docs/ARCHITECTURE.md` §2) grew a
|
|
475
|
+
10th entry: **"Integration boundaries are explicit."**
|
|
476
|
+
|
|
477
|
+
### Notes
|
|
478
|
+
|
|
479
|
+
- **No new cognition features.** v0.9.4 is pure boundary work: stability
|
|
480
|
+
tiers, plugin discovery, SDK ergonomics, MCP compatibility assertions.
|
|
481
|
+
- **Plugin contract honest scope**: declarations, not enforcement. Code
|
|
482
|
+
loading is deliberately out of scope for v0.9.4 and may come later
|
|
483
|
+
behind an opt-in flag.
|
|
484
|
+
- **181/181 tests** pass, including new `tests/stability.test.ts`,
|
|
485
|
+
`tests/plugins.test.ts`, `tests/sdk.test.ts`.
|
|
486
|
+
|
|
487
|
+
## [0.9.3] - 2026-05-21
|
|
488
|
+
|
|
489
|
+
Third slice of v0.9.x stabilization: scale, performance, and storage
|
|
490
|
+
efficiency. See [PERFORMANCE.md](docs/PERFORMANCE.md) and
|
|
491
|
+
[ADR-0014](docs/adr/0014-scale-and-performance.md).
|
|
492
|
+
|
|
493
|
+
### Added
|
|
494
|
+
|
|
495
|
+
- **`src/perf/`** — deterministic benchmark harness over the hot paths
|
|
496
|
+
(cold/warm scan, graph render, brief generation in `tiny`/`normal`/`deep`
|
|
497
|
+
modes, snapshot export, inspect projection). Reports `min / median / p95 /
|
|
498
|
+
max` plus scenario counters; writes `.kairo/reports/PERFORMANCE.md`.
|
|
499
|
+
- **`src/core/compaction/`** — `compact(projectRoot, opts)` archives events
|
|
500
|
+
from ended sessions older than `olderThanDays` (default 90), lineage-
|
|
501
|
+
protected. Dry-run by default. Archive at `.kairo/archive/events-{ts}.jsonl`
|
|
502
|
+
with manifest at `.kairo/archive/MANIFEST.md`. NEVER deletes; an atomic
|
|
503
|
+
temp-then-rename keeps the live log intact on crash.
|
|
504
|
+
- **Per-chunk incremental vector indexing** in `MemoryEngine.index()`. When
|
|
505
|
+
the top-level `memoryFingerprint` misses, the rebuild looks up each new
|
|
506
|
+
chunk by `sha256(text)` against the existing index; vectors for unchanged
|
|
507
|
+
chunks are reused. New `IndexResult` counters: `embedded`, `reusedVectors`.
|
|
508
|
+
- **Four MCP tools**: `kairo_benchmark`, `kairo_perf_report`,
|
|
509
|
+
`kairo_compact_memory`, `kairo_index_status`. All respect the v0.8.2
|
|
510
|
+
compact-by-default contract — single-line MCP response, full report in
|
|
511
|
+
`.kairo/reports/`.
|
|
512
|
+
|
|
513
|
+
### Changed
|
|
514
|
+
|
|
515
|
+
- `MemoryEngine.stats()` now also returns `memoryFingerprint` and `dim` so
|
|
516
|
+
`kairo_index_status` can render a compact one-line summary.
|
|
517
|
+
- ARCHITECTURE.md core principles gained #9: **"Scale is measured, not
|
|
518
|
+
assumed."**
|
|
519
|
+
|
|
520
|
+
### Notes
|
|
521
|
+
|
|
522
|
+
- Wall-clock benchmark timings depend on the host; the harness is for
|
|
523
|
+
**relative** comparison and regression detection, not absolute
|
|
524
|
+
benchmarking.
|
|
525
|
+
- Compaction is **conservative by default**: false negatives ("did not
|
|
526
|
+
archive an event that could safely have been archived") are preferred
|
|
527
|
+
over false positives.
|
|
528
|
+
- Honest scope: incremental indexing reduces *embed work*, not chunk-build
|
|
529
|
+
work. The chunker still runs in full (already deterministic + offline).
|
|
530
|
+
- 158/158 tests pass, including three new test files: `tests/perf.test.ts`,
|
|
531
|
+
`tests/compaction.test.ts`, `tests/incrementalIndex.test.ts`.
|
|
532
|
+
|
|
533
|
+
## [0.9.2] - 2026-05-21
|
|
534
|
+
|
|
535
|
+
Second slice of v0.9.x stabilization: portable snapshot/import/export and a
|
|
536
|
+
deterministic failure-injection adapter for testing error paths. See
|
|
537
|
+
[SNAPSHOTS.md](docs/SNAPSHOTS.md) and
|
|
538
|
+
[ADR-0013](docs/adr/0013-snapshots-and-failure-injection.md).
|
|
539
|
+
|
|
540
|
+
### Added
|
|
541
|
+
|
|
542
|
+
- **`src/snapshot/`** — single-file portable snapshot format. `KairoSnapshot`
|
|
543
|
+
bundles the full `.kairo/` state with a manifest (counts, schema versions,
|
|
544
|
+
source root, `contentSha256` over canonical JSON).
|
|
545
|
+
- `exportSnapshot(projectRoot, opts?)` — reads through the v0.9.1 migration
|
|
546
|
+
+ validation pipeline, computes a deterministic `contentSha256`, writes a
|
|
547
|
+
single JSON file to `.kairo/snapshots/snapshot-{ts}.json` (override via
|
|
548
|
+
`path`).
|
|
549
|
+
- `importSnapshot(target, snapshotPath, opts?)` — refuses to overwrite a
|
|
550
|
+
non-empty `.kairo/` unless `force: true`; writes through the redacting
|
|
551
|
+
adapter; runs records through migrations on the way in.
|
|
552
|
+
- **`src/storage/faultAdapter.ts`** — `FaultInjector` + `FaultInjectingAdapter`
|
|
553
|
+
wrap any `StorageAdapter` for deterministic in-process error-path testing.
|
|
554
|
+
Rules: `afterN`, `repeating`, custom `error`. Test-only by convention
|
|
555
|
+
(constructor logs a warning when `NODE_ENV !== "test"`).
|
|
556
|
+
- Two new MCP tools: `kairo_snapshot_export` and `kairo_snapshot_import`.
|
|
557
|
+
Compact responses with structured payloads.
|
|
558
|
+
|
|
559
|
+
### Notes
|
|
560
|
+
|
|
561
|
+
- **Round-trip guarantee**: `export → import → re-export` yields the same
|
|
562
|
+
`contentSha256` for a clean source with no secrets.
|
|
563
|
+
- **Honest scope**: snapshots are full dumps (no delta), plain JSON (no
|
|
564
|
+
encryption), and not signed (`contentSha256` proves integrity, not
|
|
565
|
+
authenticity). Fault injection simulates handler behaviour — it does
|
|
566
|
+
not exercise the real OS layer.
|
|
567
|
+
- 149/149 tests, including new `tests/snapshot.test.ts` (6) and
|
|
568
|
+
`tests/faultInjection.test.ts` (6).
|
|
569
|
+
|
|
570
|
+
## [0.9.1] - 2026-05-21
|
|
571
|
+
|
|
572
|
+
First slice of v0.9.x stabilization: schema versioning, formal contracts, and
|
|
573
|
+
corruption quarantine. See [SCHEMA.md](docs/SCHEMA.md) and
|
|
574
|
+
[ADR-0012](docs/adr/0012-schema-versioning.md).
|
|
575
|
+
|
|
576
|
+
### Added
|
|
577
|
+
|
|
578
|
+
- **`src/contracts/`** — central schema constants (`schemas.ts`), zod schemas
|
|
579
|
+
(`zodSchemas.ts`), and a per-artefact migration registry (`migrations.ts`).
|
|
580
|
+
One module is the source of truth for what a "valid Kairo record" looks like.
|
|
581
|
+
- **Explicit `schema` field on every persisted artefact**: `KairoEvent`,
|
|
582
|
+
`TelemetryEvent`, `AuditEntry`, `SessionState`, `Checkpoint` (legacy records
|
|
583
|
+
without it are accepted on read and tagged with the current version
|
|
584
|
+
automatically; old records on disk are migrated on the next write).
|
|
585
|
+
- **Corruption quarantine** (`src/storage/quarantine.ts`,
|
|
586
|
+
`.kairo/quarantine/{file}.jsonl`): JSONL lines that fail to parse or
|
|
587
|
+
validate are appended to the quarantine log with line number, reason, and
|
|
588
|
+
raw contents — every healthy line in the file still loads.
|
|
589
|
+
- **Read-side validation** at the storage-adapter seam via zod. Permissive on
|
|
590
|
+
unknown fields (forward-compat), strict on the required shape.
|
|
591
|
+
- **`kairo-inspect` overview** now surfaces the quarantine count.
|
|
592
|
+
|
|
593
|
+
### Changed
|
|
594
|
+
|
|
595
|
+
- `FileStorageAdapter.readEvents` / `readTelemetry` / `readAudit` now route
|
|
596
|
+
through `readValidatedJsonl`, which validates + migrates + quarantines.
|
|
597
|
+
Torn-trailing-line tolerance (the v0.1 crash-safety contract) is preserved
|
|
598
|
+
unchanged.
|
|
599
|
+
- `loadCheckpoint` / `loadLatestCheckpoint` / `loadSessionSnapshot` migrate
|
|
600
|
+
records on read so consumers always see the current schema shape.
|
|
601
|
+
- `saveCheckpoint` / `saveSessionSnapshot` / `audit` tag records with the
|
|
602
|
+
current schema constant on write.
|
|
603
|
+
|
|
604
|
+
### Notes
|
|
605
|
+
|
|
606
|
+
- **Back-compat guarantee**: patch versions (v0.9.x) never bump a schema
|
|
607
|
+
constant. Records written by any v0.9.x are readable by any other v0.9.x.
|
|
608
|
+
- **Honest scope**: migrations are on-read only; old on-disk records remain
|
|
609
|
+
byte-identical until rewritten. Zod validation is structural, not semantic.
|
|
610
|
+
- 137/137 tests pass, including a new `tests/schema.test.ts` exercising
|
|
611
|
+
legacy-record reads, corruption quarantine, and torn-trailing-line
|
|
612
|
+
invariants.
|
|
613
|
+
|
|
614
|
+
## [0.9.0] - 2026-05-21
|
|
615
|
+
|
|
616
|
+
Developer surfaces & operational inspection. Two read-only projections over
|
|
617
|
+
local `.kairo/`; no new persisted state, no network, no mutations. See
|
|
618
|
+
[SURFACES.md](docs/SURFACES.md) and [ADR-0011](docs/adr/0011-developer-surfaces.md).
|
|
619
|
+
|
|
620
|
+
### Added
|
|
621
|
+
|
|
622
|
+
- **`src/inspect/`** — pure projection helpers (`InspectProjection`) over the
|
|
623
|
+
same primitives the MCP tools already use (`queryEngine`, `CoordinationManager`,
|
|
624
|
+
storage adapter). Read-only; deterministic; replay-safe.
|
|
625
|
+
- **`kairo-inspect` CLI** — zero-dependency local HTTP inspector. Loopback only
|
|
626
|
+
by default (`127.0.0.1:4173`), CSP-locked (`default-src 'none'`), no JS, no
|
|
627
|
+
remote assets. Routes: `/`, `/sessions`, `/sessions/:id`, `/checkpoints`,
|
|
628
|
+
`/checkpoints/:id`, `/continuations/:name`, `/timeline?kind=`, `/graphs`,
|
|
629
|
+
`/graphs/:kind`, `/memory`, `/coordination`, `/risk`, `/events`,
|
|
630
|
+
`/retrieval/:id`. Two reads of the same `.kairo/` produce byte-identical HTML.
|
|
631
|
+
- **VS Code extension** in `extensions/vscode/` (separate publishable package).
|
|
632
|
+
Activity-bar tree views for Overview / Sessions / Checkpoints / Active
|
|
633
|
+
leases / Risk escalations. Reads `.kairo/` directly via Node `fs`; does not
|
|
634
|
+
spawn or depend on the MCP server. Auto-refreshes on `.kairo/` changes via
|
|
635
|
+
`vscode.workspace.createFileSystemWatcher`. Click a checkpoint to open its
|
|
636
|
+
continuation brief.
|
|
637
|
+
- **Cursor integration** via documentation only — Cursor speaks MCP, so the
|
|
638
|
+
existing `kairo-mcp` binary covers it. The VS Code extension also loads in
|
|
639
|
+
Cursor (it's a VS Code fork).
|
|
640
|
+
|
|
641
|
+
### Changed
|
|
642
|
+
|
|
643
|
+
- `package.json` exposes a new `kairo-inspect` bin entry pointing at
|
|
644
|
+
`dist/inspect/cli.js`.
|
|
645
|
+
- Architecture core principles list (docs/ARCHITECTURE.md §2) grew a 7th
|
|
646
|
+
entry: **"Surfaces are projections."**
|
|
647
|
+
|
|
648
|
+
### Notes
|
|
649
|
+
|
|
650
|
+
- Honest scope: v0.9.0 surfaces are **historical inspection**, not real-time
|
|
651
|
+
observability or remote collaboration. No streams, no subscriptions, no push.
|
|
652
|
+
- Explicitly out of scope — _by design, not deferred_: cloud sync, accounts,
|
|
653
|
+
remote telemetry, hosted backend, live collaboration, SaaS infrastructure.
|
|
654
|
+
- 130/130 tests pass including a new `tests/inspect.test.ts` that boots the
|
|
655
|
+
HTTP server on a random port, asserts CSP headers, route shape, and
|
|
656
|
+
determinism (two reads of `/sessions` are byte-identical).
|
|
657
|
+
|
|
658
|
+
## [0.8.2] - 2026-05-20
|
|
659
|
+
|
|
660
|
+
Token efficiency is now a **core architecture principle**. The opposite failure
|
|
661
|
+
mode of repeated rescans is a memory layer that bloats every prompt — v0.8.2
|
|
662
|
+
makes compactness the default. See [TOKEN_EFFICIENCY.md](docs/TOKEN_EFFICIENCY.md)
|
|
663
|
+
and [ADR-0010](docs/adr/0010-token-efficiency.md).
|
|
664
|
+
|
|
665
|
+
### Added
|
|
666
|
+
|
|
667
|
+
- **`src/core/brief/budget.ts`** — `BriefMode` (`tiny` / `normal` / `deep`),
|
|
668
|
+
`BriefBudget` (`maxBriefChars`, `maxRecallItems`, `maxChunkChars`,
|
|
669
|
+
`maxWarnings`, `includeGraphs`), `resolveBudget()`, and a preservation-aware
|
|
670
|
+
`clip()` util. Budgets are deterministic character counts (honest local proxy
|
|
671
|
+
for tokens; exact cost depends on the model's tokeniser).
|
|
672
|
+
- **`kairo_brief` MCP tool** — on-demand continuation brief in a requested mode
|
|
673
|
+
and char budget (`{ mode, maxChars, sessionId? }`).
|
|
674
|
+
- Brief modes in `buildContinuationMarkdown(cp, { budget })`:
|
|
675
|
+
- `tiny` — task / stop point / top-5 changed files / next 3 actions / critical
|
|
676
|
+
warnings only (defaults to 1500 chars).
|
|
677
|
+
- `normal` (**default**) — full section structure, trimmed: top-10 file table,
|
|
678
|
+
top-5 decisions, recall capped at 3 items × 200 chars (defaults to 4000
|
|
679
|
+
chars). Backward-compatible — every section header existing tests assert is
|
|
680
|
+
still present.
|
|
681
|
+
- `deep` — full historical context, opt-in (defaults to 20000 chars).
|
|
682
|
+
|
|
683
|
+
### Changed
|
|
684
|
+
|
|
685
|
+
- **`kairo_graph`** is **compact by default** — returns
|
|
686
|
+
`module graph: N nodes / M edges. Mirror: .kairo/graphs/module.md` instead of
|
|
687
|
+
the full Mermaid. Pass `includeFull: true` to inline the diagram.
|
|
688
|
+
- **`kairo_memory_search`** capped at 5 results by default; each `why` preview
|
|
689
|
+
trimmed to 120 chars. Single-line `[kind] locator (score X.XXX) — why` format.
|
|
690
|
+
- **`kairo_analytics_summary` / `_team_activity` / `_risk_report`** write the
|
|
691
|
+
full report to `.kairo/reports/*.md` and return a 1–2 line summary with the
|
|
692
|
+
file path — the report is never inlined into the prompt.
|
|
693
|
+
- Semantic recall section in `SessionManager` is budget-aware: `tiny` returns no
|
|
694
|
+
recall; `normal` returns top-3 chunks each clipped to 200 chars.
|
|
695
|
+
|
|
696
|
+
### Notes
|
|
697
|
+
|
|
698
|
+
- Dogfood numbers on this repo: same checkpoint at `tiny` = 632 chars (15% of
|
|
699
|
+
deep), `normal` = 2946 chars (71% of deep), `deep` = 4146 chars; explicit
|
|
700
|
+
`maxChars: 1000` override → exactly 1000 chars with truncation marker.
|
|
701
|
+
- Honest scope: budgets are character counts, not real tokens. Truncation is
|
|
702
|
+
preservation-aware (critical sections front-loaded) but still a heuristic.
|
|
703
|
+
- Verbose remains available — `deep` mode and `includeFull: true` never lose
|
|
704
|
+
information; they just stop being the default.
|
|
705
|
+
|
|
706
|
+
## [0.8.1] - 2026-05-20
|
|
707
|
+
|
|
708
|
+
Deterministic historical engineering introspection before any UI work. See
|
|
709
|
+
[QUERY.md](docs/QUERY.md) and [ADR-0009](docs/adr/0009-introspection-read-only.md).
|
|
710
|
+
|
|
711
|
+
### Added
|
|
712
|
+
|
|
713
|
+
- **`src/core/query/`** — pure deterministic query primitives over the existing
|
|
714
|
+
event / telemetry / audit logs + checkpoint files. **No new state, no new
|
|
715
|
+
persisted artefacts** (ADR-0009). Same discipline as the session reducer and
|
|
716
|
+
coordination manager.
|
|
717
|
+
- `queryEvents(filter)` — unified filter (kind/sessionId/worker/since/until) with
|
|
718
|
+
prefix matching (`lease.*`). Stable ts-only sort preserves append/causal order.
|
|
719
|
+
- `timeline(kind)` — per-concern views: `sessions` / `checkpoints` /
|
|
720
|
+
`lease-conflicts` / `retrievals` / `memory-refresh`.
|
|
721
|
+
- `checkpointLineage(id)` — walks `parentCheckpointId` to the root; returns the
|
|
722
|
+
cross-worker DAG path with worker/task/risk at each step.
|
|
723
|
+
- `conflictHistory()` — pairs every `lease.denied` with the conflicting
|
|
724
|
+
`lease.granted` (and the time it was held since, when discoverable).
|
|
725
|
+
- `retrievalTrace(id)` — for a `retrieval.performed`, returns the preceding
|
|
726
|
+
session-start, latest memory refresh, and latest checkpoint.
|
|
727
|
+
- `whyEvent(id)` — generic causality: `guard.hold` → preceding `risk.assessed`;
|
|
728
|
+
`lease.denied` → the conflicting holder grant; else last few in-session events.
|
|
729
|
+
- 5 MCP tools: `kairo_query_events`, `kairo_timeline_query`,
|
|
730
|
+
`kairo_checkpoint_lineage`, `kairo_conflict_history`, `kairo_retrieval_trace`.
|
|
731
|
+
|
|
732
|
+
### Changed
|
|
733
|
+
|
|
734
|
+
- **Namespace visibility refined.** Coordination-class telemetry kinds (`lease.*`,
|
|
735
|
+
`checkpoint.created`, `session.started`/`ended`, `release.prepared`,
|
|
736
|
+
`worker.registered`) carry only shared coordination metadata (scope / holder /
|
|
737
|
+
risk-level / worker id) and are now visible to every worker regardless of the
|
|
738
|
+
emitting worker's namespace tag. Worker-private kinds
|
|
739
|
+
(`memory.refreshed` / `retrieval.performed` / `risk.assessed` / `guard.hold`)
|
|
740
|
+
remain isolated. Regression-tested.
|
|
741
|
+
|
|
742
|
+
### Notes
|
|
743
|
+
|
|
744
|
+
- Replay-identical: pure functions of stable inputs (113 tests; dogfood:
|
|
745
|
+
`queryEvents` over 24 events byte-identical on two runs).
|
|
746
|
+
- Honest scope: **historical introspection, not real-time observability** — no
|
|
747
|
+
streams, no subscriptions, no UI. v0.9.0 surfaces can build on top.
|
|
748
|
+
|
|
749
|
+
## [0.8.0] - 2026-05-20
|
|
750
|
+
|
|
751
|
+
Enterprise telemetry, analytics, and team-coordination insight — engineering
|
|
752
|
+
intelligence **infrastructure**, not a dashboard. See
|
|
753
|
+
[TELEMETRY.md](docs/TELEMETRY.md) and
|
|
754
|
+
[ADR-0008](docs/adr/0008-telemetry-analytics.md).
|
|
755
|
+
|
|
756
|
+
### Added
|
|
757
|
+
|
|
758
|
+
- **`src/core/telemetry/`** — local, redacted, append-only telemetry log
|
|
759
|
+
(`.kairo/telemetry.jsonl`) + a pure, deterministic analytics projection over
|
|
760
|
+
telemetry + the event log + the audit log. No metrics SDK, no sampling, no
|
|
761
|
+
wall-clock math in metrics, no network.
|
|
762
|
+
- Telemetry events emitted from `SessionManager` / the `kairo_assess` tool path:
|
|
763
|
+
`session.started`, `checkpoint.created`, `memory.refreshed`,
|
|
764
|
+
`retrieval.performed`, `graph.generated`, `release.prepared`, `lease.granted`,
|
|
765
|
+
`lease.denied`, `risk.assessed`, `guard.hold`. Secret-redaction counts come from
|
|
766
|
+
the authoritative audit log (no double-emit).
|
|
767
|
+
- **Privacy-first defaults**: local JSONL only, secrets redacted at the boundary,
|
|
768
|
+
team analytics report namespace **names + counts** only (private-namespace
|
|
769
|
+
contents are never returned). Opt-in export via
|
|
770
|
+
`KAIRO_TELEMETRY_EXPORT=jsonl:<path>`; OTLP/Prometheus/SQLite/Postgres are
|
|
771
|
+
designed-for behind `TelemetryExporter` and explicitly not shipped.
|
|
772
|
+
- **Analytics**: sessions per repo, checkpoints per session, average files
|
|
773
|
+
touched, guard holds, risk escalations, lease conflict rate, stale-memory
|
|
774
|
+
rebuilds, memory reuse rate, intelligence cache hit rate, graph truncation
|
|
775
|
+
rate, retrieval patterns, secrets-redacted count, module activity / highest-risk
|
|
776
|
+
modules (via the salience-ranked module graph).
|
|
777
|
+
- **Reports** rendered to `.kairo/reports/`: `ANALYTICS_SUMMARY.md`,
|
|
778
|
+
`TEAM_ACTIVITY.md`, `RISK_REPORT.md`.
|
|
779
|
+
- New MCP tools: `kairo_telemetry_status`, `kairo_analytics_summary`,
|
|
780
|
+
`kairo_team_activity`, `kairo_risk_report`, `kairo_module_activity`.
|
|
781
|
+
|
|
782
|
+
### Notes
|
|
783
|
+
|
|
784
|
+
- Determinism upheld: numeric metrics are byte-stable for the same inputs (the
|
|
785
|
+
only non-deterministic field is the report header's wall-clock `generatedAt`).
|
|
786
|
+
- Honest scope: this is the **local foundation**, not "enterprise-ready". No UI,
|
|
787
|
+
no remote store, no real-time pipeline.
|
|
788
|
+
- Dogfood (5 scenarios on the Kairo repo): 21 telemetry events across 7 kinds;
|
|
789
|
+
3 sessions / 3 checkpoints / 2 workers / 1 lease conflict captured deterministically;
|
|
790
|
+
reports written; **no secret leak**, **no private-namespace text** in any report.
|
|
791
|
+
|
|
792
|
+
## [0.7.1] - 2026-05-19
|
|
793
|
+
|
|
794
|
+
Fixes the v0.7.0 cross-worker session-memory-freshness caveat before any v0.8.0
|
|
795
|
+
enterprise work is built on it.
|
|
796
|
+
|
|
797
|
+
### Fixed
|
|
798
|
+
|
|
799
|
+
- **Stale cross-worker memory.** The vector index was keyed only by
|
|
800
|
+
`repoFingerprint + embedderId`, so decisions/checkpoints/worker-namespace changes
|
|
801
|
+
(which don't change the repo fingerprint) did not invalidate it. Added a
|
|
802
|
+
**deterministic `memoryFingerprint`** = hash of the built chunk set; the index is
|
|
803
|
+
reused only when `repoFingerprint + embedderId + memoryFingerprint` all match.
|
|
804
|
+
Chunks are built first (cheap, offline, deterministic) so only the embed step is
|
|
805
|
+
skipped on a true match — anti-rescan preserved, staleness eliminated.
|
|
806
|
+
- Index `schema` 2 → 3 (older indexes rebuild automatically).
|
|
807
|
+
|
|
808
|
+
### Added
|
|
809
|
+
|
|
810
|
+
- **`kairo_memory_refresh`** — ensure shared memory reflects the latest
|
|
811
|
+
decisions/checkpoints before retrieving; idempotent (rebuilds only if the chunk
|
|
812
|
+
set changed); never leaks private worker-namespace memory.
|
|
813
|
+
- `SessionManager.refreshMemory()`; checkpoint/session-end now auto-refresh so the
|
|
814
|
+
just-created checkpoint is immediately visible to other workers and to the brief.
|
|
815
|
+
|
|
816
|
+
### Changed
|
|
817
|
+
|
|
818
|
+
- Checkpoint chunks are now **shared** (`workspace` namespace) — engineering
|
|
819
|
+
continuity is team-level. Private *reasoning* stays in worker-namespaced decision
|
|
820
|
+
chunks (isolation preserved).
|
|
821
|
+
|
|
822
|
+
### Notes
|
|
823
|
+
|
|
824
|
+
- Deterministic & offline-safe: `memoryFingerprint` is a pure, order-independent
|
|
825
|
+
hash; replay is byte-stable; no network. Dogfood (2 workers on the Kairo repo):
|
|
826
|
+
A's decision invalidates B's view, B's refresh rebuilds then is idempotent, B sees
|
|
827
|
+
the shared checkpoint but never A's private decision, `memoryStats` identical
|
|
828
|
+
across calls.
|
|
829
|
+
|
|
830
|
+
## [0.7.0] - 2026-05-19
|
|
831
|
+
|
|
832
|
+
Coordinated cognition & distributed engineering memory — coordination
|
|
833
|
+
infrastructure, not autonomous-agent hype. See
|
|
834
|
+
[COORDINATION.md](docs/COORDINATION.md) and
|
|
835
|
+
[ADR-0007](docs/adr/0007-coordinated-cognition.md).
|
|
836
|
+
|
|
837
|
+
### Added
|
|
838
|
+
|
|
839
|
+
- **`src/core/coordination/`** — `CoordinationManager`, a pure deterministic
|
|
840
|
+
projection of the shared event log. No network service, no consensus.
|
|
841
|
+
- **Cooperative leases** over `task` / `path` / `module` scopes (ancestor overlap):
|
|
842
|
+
`kairo_lease` acquire/renew/release, with explainable GRANTED/DENIED + conflicting
|
|
843
|
+
holder. Deterministic conflict resolution by log order (earliest wins → later
|
|
844
|
+
`superseded`); TTL expiry evaluated against the clock. Advisory (ADR-0002).
|
|
845
|
+
- **Workers & memory namespaces**: `kairo_session_start` gains `worker` + `namespace`
|
|
846
|
+
(default = per-worker isolation). Shared knowledge stays in `workspace`; a
|
|
847
|
+
worker's session/decision memory is **filtered out of other workers' retrieval** —
|
|
848
|
+
a deterministic pre-ranking step, not an embedding change.
|
|
849
|
+
- **Distributed checkpoint graph**: checkpoints carry owning worker + parent link;
|
|
850
|
+
`kairo_timeline` renders the cross-worker engineering timeline (Mermaid).
|
|
851
|
+
- `kairo_coordination_status`: active workers, held leases, ownership, expiries.
|
|
852
|
+
- New events: `worker.registered`, `lease.acquired|renewed|released` (one shared
|
|
853
|
+
ledger). Lease denials written to the non-secret audit log.
|
|
854
|
+
|
|
855
|
+
### Notes
|
|
856
|
+
|
|
857
|
+
- Honest limitation (documented, not hidden): cooperative file-based coordination,
|
|
858
|
+
**not** partition-tolerant consensus — `O_APPEND` line atomicity + deterministic
|
|
859
|
+
log-order projection, not locking. Two workers that ignore a denial can still both
|
|
860
|
+
act; `superseded` makes the collision auditable.
|
|
861
|
+
- Determinism preserved: state is a stable ts-only fold of the log (equal-ts events
|
|
862
|
+
keep append/causal order); re-projection is byte-identical.
|
|
863
|
+
|
|
864
|
+
## [0.6.1] - 2026-05-19
|
|
865
|
+
|
|
866
|
+
Embedding provider layer — a stronger semantic substrate **without** weakening
|
|
867
|
+
deterministic architectural correctness. See
|
|
868
|
+
[ADR-0006](docs/adr/0006-embedding-provider-layer.md).
|
|
869
|
+
|
|
870
|
+
### Added
|
|
871
|
+
|
|
872
|
+
- **`src/core/vector/providers/`** — `EmbeddingProvider` interface + registry.
|
|
873
|
+
`deterministic` stays the default and the only provider used unless `KAIRO_EMBEDDER`
|
|
874
|
+
selects another (offline, reproducible, CI/test-safe, no network, no secrets).
|
|
875
|
+
- **`HttpEmbeddingProvider`** — one provider covering every OpenAI-compatible endpoint
|
|
876
|
+
(OpenAI / VoyageAI / LM Studio / vLLM) plus Ollama's native shape; presets for
|
|
877
|
+
`openai` / `voyage` / `ollama` / `custom` via `KAIRO_EMBED_*` env. Vectors
|
|
878
|
+
L2-normalised; request timeout; never default; never used in tests/CI.
|
|
879
|
+
- **`architectureLayer`** is now an explicit, explainable ranking factor
|
|
880
|
+
(interface/domain/data/infra), matching the target retrieval formula.
|
|
881
|
+
|
|
882
|
+
### Changed
|
|
883
|
+
|
|
884
|
+
- Embedding is async (`EmbeddingProvider.embed/embedBatch`). `retrieve()` now takes a
|
|
885
|
+
**precomputed query vector** so it stays a pure, deterministic function; the async
|
|
886
|
+
provider boundary lives in `MemoryEngine`.
|
|
887
|
+
- A configured remote provider that errors **falls back to deterministic**, logs it,
|
|
888
|
+
and stamps the index with the provider actually used (no mixed-vector corruption).
|
|
889
|
+
An embedding outage can never break a session.
|
|
890
|
+
|
|
891
|
+
### Notes
|
|
892
|
+
|
|
893
|
+
- Retrieval remains hybrid: similarity is one of **eight** weighted factors. A test
|
|
894
|
+
asserts a perfectly-similar peripheral example still loses to a central
|
|
895
|
+
low-similarity module — embeddings can never override architectural correctness.
|
|
896
|
+
- Dogfood (kairo/zod/nest, deterministic vs a simulated stronger-semantic provider):
|
|
897
|
+
top-5 first-party stayed **5/5 in both arms**; similarity term strengthened
|
|
898
|
+
(avg 0.03 → 0.20–0.33) with no change to the correct top results. Real hosted-model
|
|
899
|
+
numbers require a configured endpoint and are out of CI scope — documented honestly,
|
|
900
|
+
not fabricated.
|
|
901
|
+
|
|
902
|
+
## [0.6.0] - 2026-05-19
|
|
903
|
+
|
|
904
|
+
Vector / semantic memory — architecture-aware hybrid recall, **not** naive RAG. See
|
|
905
|
+
[VECTOR_MEMORY.md](docs/VECTOR_MEMORY.md) and
|
|
906
|
+
[ADR-0005](docs/adr/0005-vector-memory-design.md).
|
|
907
|
+
|
|
908
|
+
### Added
|
|
909
|
+
|
|
910
|
+
- **`src/core/vector/` semantic cognition layer.** Architecture-aware chunks across
|
|
911
|
+
five memory classes (structural / semantic / session / decision / operational)
|
|
912
|
+
built from artifacts Kairo already derives deterministically — not a blind file
|
|
913
|
+
dump.
|
|
914
|
+
- **Pluggable `Embedder`; deterministic local default.** `DeterministicEmbedder` is
|
|
915
|
+
a pure, fixed-256-dim hashed lexical/structural vector (no network, no secrets,
|
|
916
|
+
byte-stable). Documented honestly as lexical, *not* deep-semantic; hosted/semantic
|
|
917
|
+
providers register behind the same interface.
|
|
918
|
+
- **Hybrid, explainable retrieval.** `score = Σ factor·weight` over similarity +
|
|
919
|
+
salience + graph centrality + session recency + runtime layer + dependency
|
|
920
|
+
proximity + checkpoint overlap; every result reports its factors. A central module
|
|
921
|
+
out-ranks a lexically similar peripheral example even with the weak embedder
|
|
922
|
+
(regression-tested).
|
|
923
|
+
- **Fingerprint-keyed index** (repo fingerprint + embedder id): a cache hit does NOT
|
|
924
|
+
re-embed — the same anti-rescan discipline as cached intelligence. Persisted
|
|
925
|
+
through the redaction boundary.
|
|
926
|
+
- **Continuity integration:** `kairo_session_start` indexes automatically; every
|
|
927
|
+
continuation brief auto-carries a "Semantic architecture recall" section so the
|
|
928
|
+
next agent resumes with context instead of rescanning. Deterministic compressed
|
|
929
|
+
architecture digest via `kairo_memory_digest`.
|
|
930
|
+
- New MCP tools: `kairo_memory_search`, `kairo_memory_index`, `kairo_memory_digest`.
|
|
931
|
+
|
|
932
|
+
## [0.5.2] - 2026-05-19
|
|
933
|
+
|
|
934
|
+
Salience-aware graph ranking, prerequisite for v0.6.0 vector memory (embedding weak
|
|
935
|
+
structural signal is long-term memory corruption). See
|
|
936
|
+
[SALIENCE_ENGINE.md](docs/SALIENCE_ENGINE.md) and
|
|
937
|
+
[ADR-0004](docs/adr/0004-reusable-salience-subsystem.md).
|
|
938
|
+
|
|
939
|
+
### Added
|
|
940
|
+
|
|
941
|
+
- **Salience subsystem** (`src/core/salience/`) — a reusable, composable,
|
|
942
|
+
explainable, deterministic ranking engine, **not** graph-specific. Weighted
|
|
943
|
+
independent signals (fan-in, import-degree, execution-path, entrypoint/source-root
|
|
944
|
+
proximity, framework-critical dir, workspace ownership; penalty signals for
|
|
945
|
+
non-production / test / generated areas). Repo-type profiles
|
|
946
|
+
(library/application/monorepo/generic) re-weight via multipliers; per-call weight
|
|
947
|
+
overrides; per-signal explanations. Penalties are weighted evidence, not a
|
|
948
|
+
blacklist (a strong dependency centre in `examples/` can still rank).
|
|
949
|
+
- Module-graph truncation now keeps the most architecturally salient groups instead
|
|
950
|
+
of merely the highest-degree ones; scores each group's representative original
|
|
951
|
+
path so `sample/`/`examples/` prefixes stripped by grouping are still penalised.
|
|
952
|
+
|
|
953
|
+
### Changed
|
|
954
|
+
|
|
955
|
+
- `INTELLIGENCE_SCHEMA` 3 → 4 (module-graph node selection changed); older caches
|
|
956
|
+
auto-regenerate.
|
|
957
|
+
|
|
958
|
+
## [0.5.1] - 2026-05-19
|
|
959
|
+
|
|
960
|
+
Patch from a structured dogfood of v0.5.0 against three real repos (Kairo, zod,
|
|
961
|
+
nestjs/nest). See [DOGFOOD_REPORT.md](DOGFOOD_REPORT.md).
|
|
962
|
+
|
|
963
|
+
### Fixed
|
|
964
|
+
|
|
965
|
+
- **Module graph collapsed entire packages to a single node** on monorepo and
|
|
966
|
+
nested-`src` layouts (`packages/<pkg>/src/**`), dropping all intra-package edges
|
|
967
|
+
as self-edges (zod 504 file-edges → 6 graph edges; nest 3304 → 7). `groupOf` now
|
|
968
|
+
locates the deepest source segment and groups by owning package + dirs under it
|
|
969
|
+
(zod → 11 edges; nest → 45, honestly truncated). Regression test added.
|
|
970
|
+
- **Architecture graph ignored `src/`-nested layers**, so the common layout
|
|
971
|
+
(incl. Kairo itself) got a useless 0-edge fallback. Added
|
|
972
|
+
`RepoInventory.sourceDirs`; the architecture graph now reads source subdirs
|
|
973
|
+
(Kairo: 0 → `Interface → Domain → Data`). `server|cli|cmd|grpc` added to the
|
|
974
|
+
Interface layer rule.
|
|
975
|
+
|
|
976
|
+
### Changed
|
|
977
|
+
|
|
978
|
+
- `INTELLIGENCE_SCHEMA` 2 → 3 (adds `sourceDirs`). Older caches auto-invalidate and
|
|
979
|
+
regenerate — mechanism validated during the dogfood.
|
|
980
|
+
|
|
981
|
+
## [0.5.0] - 2026-05-19
|
|
982
|
+
|
|
983
|
+
### Added
|
|
984
|
+
|
|
985
|
+
- **Flow / graph engine.** Mermaid graphs derived from repo intelligence:
|
|
986
|
+
- `kairo_graph` tool returns `module` / `service` / `architecture` / `pipeline`
|
|
987
|
+
as Mermaid (no rescan); mirrors written to `.kairo/graphs/*.md` on every scan.
|
|
988
|
+
- **Module dependency graph** from real, bounded import extraction added to the
|
|
989
|
+
scanner (regex static `import`/`require`/`from`, JS/TS + Python; resolves the
|
|
990
|
+
NodeNext `.js`→`.ts` convention; relative/internal edges only — bare and
|
|
991
|
+
dynamic imports excluded by design and documented as such).
|
|
992
|
+
- Graphs are **collapsed to directory granularity and node-capped**: too many
|
|
993
|
+
nodes auto-collapse one level shallower, then keep the highest-degree nodes and
|
|
994
|
+
flag `truncated` — a readable graph, not a hairball.
|
|
995
|
+
- Service / architecture / pipeline graphs are pure derivations of cached
|
|
996
|
+
intelligence (frameworks, dirs, CI), each annotated as heuristic.
|
|
997
|
+
|
|
998
|
+
### Changed
|
|
999
|
+
|
|
1000
|
+
- Repo-intelligence artifact schema bumped to **2** (now embeds the module graph).
|
|
1001
|
+
Caches from an older schema are ignored and regenerated automatically — no manual
|
|
1002
|
+
cache clearing.
|
|
1003
|
+
- `kairo_session_start` summary now reports module-graph size and points to
|
|
1004
|
+
`.kairo/graphs/`. The redaction boundary also sanitizes graph mirrors.
|
|
1005
|
+
|
|
1006
|
+
## [0.4.0] - 2026-05-19
|
|
1007
|
+
|
|
1008
|
+
### Added
|
|
1009
|
+
|
|
1010
|
+
- **GitHub engine (advisory only — see [ADR-0003](docs/adr/0003-advisory-github-engine.md)).**
|
|
1011
|
+
Kairo proposes, it never mutates the repo: no `git add/commit/tag/push`.
|
|
1012
|
+
- `kairo_git_status`: read-only branch / ahead-behind / staged-unstaged-untracked
|
|
1013
|
+
/ last-tag / recent-commit introspection that degrades safely outside a repo.
|
|
1014
|
+
- `kairo_commit_message`: a Conventional-Commits message generated **from the
|
|
1015
|
+
session ledger** (decisions, changed files, risk) — not from a diff. Emits no
|
|
1016
|
+
AI co-author trailer.
|
|
1017
|
+
- `kairo_changelog`: a Keep-a-Changelog fragment bucketed Added/Changed/Fixed/
|
|
1018
|
+
Removed from the session.
|
|
1019
|
+
- `kairo_release_plan`: suggested semver bump + tag + release notes from the
|
|
1020
|
+
session and the project's `package.json`, with the documented pre-1.0
|
|
1021
|
+
breaking-change convention (breaking ⇒ MINOR until 1.0.0).
|
|
1022
|
+
- End-to-end MCP integration smoke test: spawns the built server over real stdio,
|
|
1023
|
+
performs the SDK handshake, exercises the full tool/prompt/resource surface and a
|
|
1024
|
+
complete session lifecycle (now including the GitHub tools), and asserts on-disk
|
|
1025
|
+
`.kairo/` artifacts plus cross-process anti-rescan resume. Self-contained.
|
|
1026
|
+
|
|
1027
|
+
## [0.3.0] - 2026-05-19
|
|
1028
|
+
|
|
1029
|
+
### Added
|
|
1030
|
+
|
|
1031
|
+
- **Risk Engine** (`src/core/risk/riskEngine.ts`): classifies the _engineering_ risk
|
|
1032
|
+
of a change set or the whole session (distinct from context-loss pressure).
|
|
1033
|
+
Path sensitivity + change-kind weighting + deletion + secret-adjacency +
|
|
1034
|
+
unresolved-error and high-risk-breadth escalation. Biased toward over-rating; a
|
|
1035
|
+
recorded high/medium factor can never be downgraded by a benign change-kind.
|
|
1036
|
+
- **Guardrail** (`src/core/risk/guardrail.ts`): combines engineering risk with
|
|
1037
|
+
context-loss pressure into `ALLOW` / `CAUTION` / `HOLD`. Conservatism scales with
|
|
1038
|
+
pressure — the same change flips to `HOLD` as the session degrades.
|
|
1039
|
+
- New MCP tool **`kairo_assess`**: call before a risky change to get the guardrail
|
|
1040
|
+
decision; `kairo_session_status` now reports session engineering risk.
|
|
1041
|
+
- **Richer cooperative pressure signals**: `kairo_record` accepts `compaction`
|
|
1042
|
+
(agent's context was summarized — a strong loss signal) and `clarification`
|
|
1043
|
+
(agent had to re-ask the user). Pressure model reweighted to include both.
|
|
1044
|
+
- Checkpoints now embed the engineering `RiskAssessment`, surfaced in the
|
|
1045
|
+
continuation brief so the next agent inherits risk context.
|
|
1046
|
+
|
|
1047
|
+
## [0.2.0] - 2026-05-18
|
|
1048
|
+
|
|
1049
|
+
### Added
|
|
1050
|
+
|
|
1051
|
+
- **Repository Intelligence Engine.** One-time bounded repo scan producing a
|
|
1052
|
+
`RepoIntelligence` artifact: file inventory, language breakdown, framework /
|
|
1053
|
+
dependency detection (Node, Python, Go, Rust, JVM, Docker, K8s, GitHub Actions),
|
|
1054
|
+
and entry-point detection.
|
|
1055
|
+
- **Structural fingerprint** over dependency-manifest contents + file path/size set,
|
|
1056
|
+
used as a cache key so agents reuse cached understanding instead of rescanning;
|
|
1057
|
+
ordinary in-file edits intentionally do not bust the cache (they are tracked by the
|
|
1058
|
+
session ledger).
|
|
1059
|
+
- `kairo_session_start` now scans on first use and returns a compact, cached repo
|
|
1060
|
+
intelligence summary on every resume.
|
|
1061
|
+
- New MCP tools `kairo_repo_scan` (cached, `force` to refresh, reports fingerprint
|
|
1062
|
+
change) and `kairo_repo_intel` (cached summary, no scan).
|
|
1063
|
+
- `StorageAdapter` extended with intelligence persistence; the redaction boundary
|
|
1064
|
+
also sanitizes intelligence artifacts.
|
|
1065
|
+
- Scan is bounded by a file cap and depth and flags `truncated` on very large repos.
|
|
1066
|
+
|
|
1067
|
+
## [0.1.0] - 2026-05-18
|
|
1068
|
+
|
|
1069
|
+
### Added
|
|
1070
|
+
|
|
1071
|
+
- Production MCP server over stdio using the official `@modelcontextprotocol/sdk`,
|
|
1072
|
+
strict TypeScript, ESM, modular architecture.
|
|
1073
|
+
- **Event-sourced storage engine**: append-only `events.jsonl` log, derived JSON
|
|
1074
|
+
snapshots, and human-readable markdown mirrors. Crash-safe and replayable.
|
|
1075
|
+
- **`StorageAdapter` seam** with a local-first file adapter; redaction enforced at the
|
|
1076
|
+
adapter boundary so no engine can bypass it.
|
|
1077
|
+
- **Security redactor**: detectors for AWS, GitHub, Google/Firebase, Slack, Stripe,
|
|
1078
|
+
Razorpay, JWT, PEM private keys, credentialed connection strings, and secret-shaped
|
|
1079
|
+
`KEY=VALUE` assignments; redaction audit logging without leaking values.
|
|
1080
|
+
- **Session manager**: durable ledger of task, changed files, decisions, commands,
|
|
1081
|
+
errors, retries, heartbeats.
|
|
1082
|
+
- **Checkpoint engine**: durable, resumable, sanitized checkpoints with manual,
|
|
1083
|
+
pressure-triggered, and session-end reasons.
|
|
1084
|
+
- **Continuation-prompt engine**: generates a precise next-agent brief (architecture
|
|
1085
|
+
state, completed/remaining work, files to inspect, risks, blockers).
|
|
1086
|
+
- **Cooperative session-pressure model**: risk-of-context-loss score from observed
|
|
1087
|
+
signals with `CONTINUE` / `CHECKPOINT_SOON` / `CHECKPOINT_NOW` directives.
|
|
1088
|
+
- MCP tools: `kairo_session_start`, `kairo_session_status`, `kairo_record`,
|
|
1089
|
+
`kairo_heartbeat`, `kairo_checkpoint`, `kairo_continuation`, `kairo_session_end`.
|
|
1090
|
+
- MCP resources `kairo://session/current` and `kairo://checkpoint/latest`, and the
|
|
1091
|
+
`kairo_continuity` cooperation prompt.
|
|
1092
|
+
- Project documentation, ADRs, CI (lint/typecheck/test/build) and release workflows.
|
|
1093
|
+
|
|
1094
|
+
[Unreleased]: https://github.com/sandy001-kki/Kairo/compare/v1.3.0...HEAD
|
|
1095
|
+
[1.3.0]: https://github.com/sandy001-kki/Kairo/compare/v1.2.0...v1.3.0
|
|
1096
|
+
[1.2.0]: https://github.com/sandy001-kki/Kairo/compare/v1.1.3...v1.2.0
|
|
1097
|
+
[1.1.3]: https://github.com/sandy001-kki/Kairo/compare/v1.1.2...v1.1.3
|
|
1098
|
+
[1.1.2]: https://github.com/sandy001-kki/Kairo/compare/v1.1.1...v1.1.2
|
|
1099
|
+
[1.1.1]: https://github.com/sandy001-kki/Kairo/compare/v1.1.0...v1.1.1
|
|
1100
|
+
[1.1.0]: https://github.com/sandy001-kki/Kairo/compare/v1.0.1...v1.1.0
|
|
1101
|
+
[1.0.1]: https://github.com/sandy001-kki/Kairo/compare/v1.0.0...v1.0.1
|
|
1102
|
+
[1.0.0]: https://github.com/sandy001-kki/Kairo/compare/v1.0.0-rc1...v1.0.0
|
|
1103
|
+
[1.0.0-rc1]: https://github.com/sandy001-kki/Kairo/compare/v0.9.4...v1.0.0-rc1
|
|
1104
|
+
[0.9.4]: https://github.com/sandy001-kki/Kairo/compare/v0.9.3...v0.9.4
|
|
1105
|
+
[0.9.3]: https://github.com/sandy001-kki/Kairo/compare/v0.9.2...v0.9.3
|
|
1106
|
+
[0.9.2]: https://github.com/sandy001-kki/Kairo/compare/v0.9.1...v0.9.2
|
|
1107
|
+
[0.9.1]: https://github.com/sandy001-kki/Kairo/compare/v0.9.0...v0.9.1
|
|
1108
|
+
[0.9.0]: https://github.com/sandy001-kki/Kairo/compare/v0.8.2...v0.9.0
|
|
1109
|
+
[0.8.2]: https://github.com/sandy001-kki/Kairo/compare/v0.8.1...v0.8.2
|
|
1110
|
+
[0.8.1]: https://github.com/sandy001-kki/Kairo/compare/v0.8.0...v0.8.1
|
|
1111
|
+
[0.8.0]: https://github.com/sandy001-kki/Kairo/compare/v0.7.1...v0.8.0
|
|
1112
|
+
[0.7.1]: https://github.com/sandy001-kki/Kairo/compare/v0.7.0...v0.7.1
|
|
1113
|
+
[0.7.0]: https://github.com/sandy001-kki/Kairo/compare/v0.6.1...v0.7.0
|
|
1114
|
+
[0.6.1]: https://github.com/sandy001-kki/Kairo/compare/v0.6.0...v0.6.1
|
|
1115
|
+
[0.6.0]: https://github.com/sandy001-kki/Kairo/compare/v0.5.2...v0.6.0
|
|
1116
|
+
[0.5.2]: https://github.com/sandy001-kki/Kairo/compare/v0.5.1...v0.5.2
|
|
1117
|
+
[0.5.1]: https://github.com/sandy001-kki/Kairo/compare/v0.5.0...v0.5.1
|
|
1118
|
+
[0.5.0]: https://github.com/sandy001-kki/Kairo/compare/v0.4.0...v0.5.0
|
|
1119
|
+
[0.4.0]: https://github.com/sandy001-kki/Kairo/compare/v0.3.0...v0.4.0
|
|
1120
|
+
[0.3.0]: https://github.com/sandy001-kki/Kairo/compare/v0.2.0...v0.3.0
|
|
1121
|
+
[0.2.0]: https://github.com/sandy001-kki/Kairo/compare/v0.1.0...v0.2.0
|
|
1122
|
+
[0.1.0]: https://github.com/sandy001-kki/Kairo/releases/tag/v0.1.0
|