Module: KairosMcp
- Defined in:
- lib/kairos_mcp.rb,
lib/kairos_mcp/kairos.rb,
lib/kairos_mcp/safety.rb,
lib/kairos_mcp/server.rb,
lib/kairos_mcp/version.rb,
lib/kairos_mcp/protocol.rb,
lib/kairos_mcp/skillset.rb,
lib/kairos_mcp/action_log.rb,
lib/kairos_mcp/skills_ast.rb,
lib/kairos_mcp/skills_dsl.rb,
lib/kairos_mcp/http_server.rb,
lib/kairos_mcp/initializer.rb,
lib/kairos_mcp/admin/router.rb,
lib/kairos_mcp/safe_evolver.rb,
lib/kairos_mcp/admin/helpers.rb,
lib/kairos_mcp/config_merger.rb,
lib/kairos_mcp/skills_config.rb,
lib/kairos_mcp/skills_parser.rb,
lib/kairos_mcp/tool_registry.rb,
lib/kairos_mcp/layer_registry.rb,
lib/kairos_mcp/meeting_router.rb,
lib/kairos_mcp/skill_contexts.rb,
lib/kairos_mcp/context_manager.rb,
lib/kairos_mcp/storage/backend.rb,
lib/kairos_mcp/tools/base_tool.rb,
lib/kairos_mcp/version_manager.rb,
lib/kairos_mcp/auth/token_store.rb,
lib/kairos_mcp/plugin_projector.rb,
lib/kairos_mcp/skillset_manager.rb,
lib/kairos_mcp/storage/exporter.rb,
lib/kairos_mcp/storage/importer.rb,
lib/kairos_mcp/tools/skills_get.rb,
lib/kairos_mcp/tools/tool_guide.rb,
lib/kairos_mcp/upgrade_analyzer.rb,
lib/kairos_mcp/resource_registry.rb,
lib/kairos_mcp/tools/hello_world.rb,
lib/kairos_mcp/tools/skills_list.rb,
lib/kairos_mcp/auth/authenticator.rb,
lib/kairos_mcp/dsl_ast/ast_engine.rb,
lib/kairos_mcp/dsl_ast/decompiler.rb,
lib/kairos_mcp/invocation_context.rb,
lib/kairos_mcp/kairos_chain/block.rb,
lib/kairos_mcp/kairos_chain/chain.rb,
lib/kairos_mcp/knowledge_provider.rb,
lib/kairos_mcp/skill_tool_adapter.rb,
lib/kairos_mcp/tools/chain_export.rb,
lib/kairos_mcp/tools/chain_import.rb,
lib/kairos_mcp/tools/chain_record.rb,
lib/kairos_mcp/tools/chain_status.rb,
lib/kairos_mcp/tools/chain_verify.rb,
lib/kairos_mcp/tools/context_save.rb,
lib/kairos_mcp/tools/skills_audit.rb,
lib/kairos_mcp/tools/state_commit.rb,
lib/kairos_mcp/tools/state_status.rb,
lib/kairos_mcp/tools/token_manage.rb,
lib/kairos_mcp/vector_search/base.rb,
lib/kairos_mcp/dsl_skills_provider.rb,
lib/kairos_mcp/tools/chain_history.rb,
lib/kairos_mcp/tools/knowledge_get.rb,
lib/kairos_mcp/tools/resource_list.rb,
lib/kairos_mcp/tools/resource_read.rb,
lib/kairos_mcp/tools/skills_evolve.rb,
lib/kairos_mcp/tools/state_history.rb,
lib/kairos_mcp/storage/file_backend.rb,
lib/kairos_mcp/tools/knowledge_list.rb,
lib/kairos_mcp/tools/skills_dsl_get.rb,
lib/kairos_mcp/tools/skills_promote.rb,
lib/kairos_mcp/tools/system_upgrade.rb,
lib/kairos_mcp/tools/skills_dsl_list.rb,
lib/kairos_mcp/tools/skills_rollback.rb,
lib/kairos_mcp/anthropic_skill_parser.rb,
lib/kairos_mcp/dsl_ast/drift_detector.rb,
lib/kairos_mcp/storage/sqlite_backend.rb,
lib/kairos_mcp/tools/definition_drift.rb,
lib/kairos_mcp/tools/knowledge_update.rb,
lib/kairos_mcp/vector_search/provider.rb,
lib/kairos_mcp/tools/definition_verify.rb,
lib/kairos_mcp/kairos_chain/merkle_tree.rb,
lib/kairos_mcp/tools/instructions_update.rb,
lib/kairos_mcp/tools/definition_decompile.rb,
lib/kairos_mcp/tools/formalization_record.rb,
lib/kairos_mcp/state_commit/commit_service.rb,
lib/kairos_mcp/tools/context_create_subdir.rb,
lib/kairos_mcp/tools/formalization_history.rb,
lib/kairos_mcp/state_commit/diff_calculator.rb,
lib/kairos_mcp/state_commit/pending_changes.rb,
lib/kairos_mcp/kairos_chain/skill_transition.rb,
lib/kairos_mcp/state_commit/manifest_builder.rb,
lib/kairos_mcp/state_commit/snapshot_manager.rb,
lib/kairos_mcp/vector_search/fallback_search.rb,
lib/kairos_mcp/vector_search/semantic_search.rb,
lib/kairos_mcp/kairos_chain/formalization_decision.rb
Defined Under Namespace
Modules: Admin, Auth, DslAst, Kairos, KairosChain, StateCommit, Storage, Tools, VectorSearch Classes: ActionLog, AnthropicSkillParser, AstNode, ConfigMerger, ContextManager, DefinitionContext, DslSkillsProvider, EffectContext, EvolveContext, GuaranteesContext, HttpServer, Initializer, InvocationContext, KnowledgeProvider, LayerRegistry, MeetingRouter, PluginProjector, Protocol, ResourceRegistry, SafeEvolver, Safety, Server, SkillBuilder, SkillHistory, SkillSetManager, SkillToolAdapter, SkillsAst, SkillsConfig, SkillsDsl, SkillsParser, Skillset, ToolContext, ToolRegistry, UpgradeAnalyzer, VersionManager
Constant Summary collapse
- TEMPLATE_FILES =
Template Files Registry
Centralized mapping of template files to their data directory destinations. Used by Initializer (for init) and UpgradeAnalyzer (for migration).
Format: [template_relative_path, data_dir_accessor_symbol]
[ ['skills/kairos.rb', :dsl_path], ['skills/kairos.md', :md_path], ['skills/kairos_quickguide.md', :quickguide_path], ['skills/kairos_tutorial.md', :tutorial_path], ['skills/researcher.md', :researcher_path], ['skills/config.yml', :skills_config_path], ['config/safety.yml', :safety_config_path], ['config/tool_metadata.yml', :tool_metadata_path] ].freeze
- TEMPLATE_FILE_TYPES =
File type classification for upgrade conflict resolution
{ 'skills/kairos.rb' => :l0_dsl, 'skills/kairos.md' => :l0_doc, 'skills/kairos_quickguide.md' => :l0_doc, 'skills/kairos_tutorial.md' => :l0_doc, 'skills/researcher.md' => :l0_doc, 'skills/config.yml' => :config_yaml, 'config/safety.yml' => :config_yaml, 'config/tool_metadata.yml' => :config_yaml }.freeze
- VERSION =
"3.15.0"- CHANGELOG_URL =
"https://github.com/masaomi/KairosChain_2026/blob/main/CHANGELOG.md"
Class Method Summary collapse
-
.action_log_path ⇒ Object
L0 action log file path.
-
.blockchain_path ⇒ Object
Blockchain file path (for file backend).
-
.collect_knowledge_entries(user_context: nil) ⇒ Object
Collect L1 knowledge entries for plugin projection Shared by protocol.rb and plugin_project tool.
-
.config_dir ⇒ Object
Config directory (safety.yml, tool_metadata.yml).
-
.context_dir(user_context: nil) ⇒ Object
L2 context directory.
-
.data_dir ⇒ String
Get the root data directory for all runtime data.
-
.data_dir=(path) ⇒ Object
Set the root data directory explicitly.
-
.dsl_path ⇒ Object
L0 skills DSL file path.
-
.embeddings_dir ⇒ Object
Embeddings directory (for vector search).
-
.export_dir ⇒ Object
Export directory (for SQLite export).
-
.gem_root ⇒ String
Path to the gem’s root directory (one level above lib/).
-
.http_server ⇒ Object
HttpServer reference (set when running in HTTP mode) =========================================================================.
- .http_server=(server) ⇒ Object
-
.initialized? ⇒ Boolean
Check if the data directory has been initialized.
-
.knowledge_dir(user_context: nil) ⇒ Object
L1 knowledge directory.
-
.knowledge_index_path ⇒ Object
Knowledge embeddings index path.
-
.md_path ⇒ Object
L0 skills philosophy file path.
-
.meta_path ⇒ Object
Meta file path (.kairos_meta.yml for upgrade tracking).
- .parse_frontmatter(path) ⇒ Object
-
.project_root ⇒ Object
Project root: parent of .kairos/ data directory.
-
.projection_mode ⇒ Object
Determine projection mode for PluginProjector :project (default) — writes to .claude/skills/, .claude/agents/, settings.json :plugin — writes to plugin root skills/, agents/, hooks/hooks.json.
-
.quickguide_path ⇒ Object
L0 skills quick guide file path (user-facing instructions).
-
.register_path_resolver(name, &block) ⇒ Object
Register a named path resolver for tenant-aware directory resolution.
-
.researcher_path ⇒ Object
Researcher instruction mode file path.
-
.reset_data_dir! ⇒ Object
Reset data_dir (for testing or re-initialization).
-
.safety_config_path ⇒ Object
Safety config file path.
-
.skills_config_path ⇒ Object
L0 skills config file path.
-
.skills_dir ⇒ Object
L0 skills directory (kairos.rb, kairos.md, config.yml, versions/).
-
.skills_index_path ⇒ Object
Skills embeddings index path.
-
.skillsets_config_path ⇒ Object
SkillSets config file (enabled/disabled state, layer overrides).
-
.skillsets_dir ⇒ Object
SkillSets directory (plugin-based extensions).
-
.snapshots_dir ⇒ Object
Snapshots directory (for state commit).
-
.sqlite_path ⇒ Object
SQLite database path.
-
.storage_dir ⇒ Object
Storage directory (blockchain, embeddings, snapshots, tokens, etc.).
-
.templates_dir ⇒ String
Path to the bundled templates directory within the gem.
-
.token_store_path ⇒ Object
Token store file path.
-
.tool_metadata_path ⇒ Object
Tool metadata file path.
-
.tutorial_path ⇒ Object
L0 skills tutorial file path (onboarding instructions).
- .unregister_path_resolver(name) ⇒ Object
-
.versions_dir ⇒ Object
L0 skills versions directory.
Class Method Details
.action_log_path ⇒ Object
L0 action log file path
155 156 157 |
# File 'lib/kairos_mcp.rb', line 155 def action_log_path File.join(skills_dir, 'action_log.jsonl') end |
.blockchain_path ⇒ Object
Blockchain file path (for file backend)
180 181 182 |
# File 'lib/kairos_mcp.rb', line 180 def blockchain_path File.join(storage_dir, 'blockchain.json') end |
.collect_knowledge_entries(user_context: nil) ⇒ Object
Collect L1 knowledge entries for plugin projection Shared by protocol.rb and plugin_project tool
301 302 303 304 305 306 307 308 309 310 311 312 313 |
# File 'lib/kairos_mcp.rb', line 301 def collect_knowledge_entries(user_context: nil) kdir = knowledge_dir(user_context: user_context) return [] unless Dir.exist?(kdir) Dir.glob(File.join(kdir, '**', '*.md')).filter_map do |f| fm = parse_frontmatter(f) next unless fm { name: fm['name'] || File.basename(f, '.md'), description: fm['description'] || '', version: fm['version'] || '0', tags: fm['tags'] || [], path: f } end end |
.config_dir ⇒ Object
Config directory (safety.yml, tool_metadata.yml)
220 221 222 |
# File 'lib/kairos_mcp.rb', line 220 def config_dir path_for('config') end |
.context_dir(user_context: nil) ⇒ Object
L2 context directory. Same tenant-aware resolution as knowledge_dir.
169 170 171 172 |
# File 'lib/kairos_mcp.rb', line 169 def context_dir(user_context: nil) resolved = resolve_path(:context, user_context) resolved || path_for('context') end |
.data_dir ⇒ String
Get the root data directory for all runtime data
92 93 94 |
# File 'lib/kairos_mcp.rb', line 92 def data_dir @data_dir ||= resolve_data_dir end |
.data_dir=(path) ⇒ Object
Set the root data directory explicitly
99 100 101 102 |
# File 'lib/kairos_mcp.rb', line 99 def data_dir=(path) @data_dir = File.(path) @path_cache = {} end |
.dsl_path ⇒ Object
L0 skills DSL file path
120 121 122 |
# File 'lib/kairos_mcp.rb', line 120 def dsl_path File.join(skills_dir, 'kairos.rb') end |
.embeddings_dir ⇒ Object
Embeddings directory (for vector search)
195 196 197 |
# File 'lib/kairos_mcp.rb', line 195 def File.join(storage_dir, 'embeddings') end |
.export_dir ⇒ Object
Export directory (for SQLite export)
215 216 217 |
# File 'lib/kairos_mcp.rb', line 215 def export_dir File.join(storage_dir, 'export') end |
.gem_root ⇒ String
Path to the gem’s root directory (one level above lib/)
267 268 269 |
# File 'lib/kairos_mcp.rb', line 267 def gem_root File.('..', __dir__) end |
.http_server ⇒ Object
HttpServer reference (set when running in HTTP mode)
79 80 81 |
# File 'lib/kairos_mcp.rb', line 79 def http_server @http_server end |
.http_server=(server) ⇒ Object
83 84 85 |
# File 'lib/kairos_mcp.rb', line 83 def http_server=(server) @http_server = server end |
.initialized? ⇒ Boolean
Check if the data directory has been initialized
274 275 276 |
# File 'lib/kairos_mcp.rb', line 274 def initialized? File.exist?(dsl_path) && File.exist?(skills_config_path) end |
.knowledge_dir(user_context: nil) ⇒ Object
L1 knowledge directory. When user_context is provided, registered path resolvers can return a tenant-specific path. Without user_context, returns the global path.
162 163 164 165 |
# File 'lib/kairos_mcp.rb', line 162 def knowledge_dir(user_context: nil) resolved = resolve_path(:knowledge, user_context) resolved || path_for('knowledge') end |
.knowledge_index_path ⇒ Object
Knowledge embeddings index path
205 206 207 |
# File 'lib/kairos_mcp.rb', line 205 def knowledge_index_path File.join(, 'knowledge') end |
.md_path ⇒ Object
L0 skills philosophy file path
125 126 127 |
# File 'lib/kairos_mcp.rb', line 125 def md_path File.join(skills_dir, 'kairos.md') end |
.meta_path ⇒ Object
Meta file path (.kairos_meta.yml for upgrade tracking)
245 246 247 |
# File 'lib/kairos_mcp.rb', line 245 def File.join(data_dir, '.kairos_meta.yml') end |
.parse_frontmatter(path) ⇒ Object
315 316 317 318 319 320 321 322 323 324 |
# File 'lib/kairos_mcp.rb', line 315 def parse_frontmatter(path) content = File.read(path, encoding: 'utf-8') return nil unless content.start_with?('---') parts = content.split('---', 3) return nil if parts.length < 3 require 'yaml' YAML.safe_load(parts[1]) rescue StandardError nil end |
.project_root ⇒ Object
Project root: parent of .kairos/ data directory
283 284 285 |
# File 'lib/kairos_mcp.rb', line 283 def project_root File.dirname(data_dir) end |
.projection_mode ⇒ Object
Determine projection mode for PluginProjector :project (default) — writes to .claude/skills/, .claude/agents/, settings.json :plugin — writes to plugin root skills/, agents/, hooks/hooks.json
290 291 292 293 294 295 296 297 |
# File 'lib/kairos_mcp.rb', line 290 def projection_mode return :plugin if ENV['KAIROS_PROJECTION_MODE'] == 'plugin' root = project_root plugin_json = File.join(root, '.claude-plugin', 'plugin.json') claude_dir = File.join(root, '.claude') return :plugin if File.exist?(plugin_json) && !File.exist?(claude_dir) :project end |
.quickguide_path ⇒ Object
L0 skills quick guide file path (user-facing instructions)
130 131 132 |
# File 'lib/kairos_mcp.rb', line 130 def quickguide_path File.join(skills_dir, 'kairos_quickguide.md') end |
.register_path_resolver(name, &block) ⇒ Object
Register a named path resolver for tenant-aware directory resolution. Block receives (type, user_context) and returns a path or nil.
63 64 65 66 67 |
# File 'lib/kairos_mcp.rb', line 63 def register_path_resolver(name, &block) @path_resolver_mutex.synchronize do @path_resolvers[name.to_sym] = block end end |
.researcher_path ⇒ Object
Researcher instruction mode file path
140 141 142 |
# File 'lib/kairos_mcp.rb', line 140 def researcher_path File.join(skills_dir, 'researcher.md') end |
.reset_data_dir! ⇒ Object
Reset data_dir (for testing or re-initialization)
105 106 107 108 |
# File 'lib/kairos_mcp.rb', line 105 def reset_data_dir! @data_dir = nil @path_cache = {} end |
.safety_config_path ⇒ Object
Safety config file path
225 226 227 |
# File 'lib/kairos_mcp.rb', line 225 def safety_config_path File.join(config_dir, 'safety.yml') end |
.skills_config_path ⇒ Object
L0 skills config file path
145 146 147 |
# File 'lib/kairos_mcp.rb', line 145 def skills_config_path File.join(skills_dir, 'config.yml') end |
.skills_dir ⇒ Object
L0 skills directory (kairos.rb, kairos.md, config.yml, versions/)
115 116 117 |
# File 'lib/kairos_mcp.rb', line 115 def skills_dir path_for('skills') end |
.skills_index_path ⇒ Object
Skills embeddings index path
200 201 202 |
# File 'lib/kairos_mcp.rb', line 200 def skills_index_path File.join(, 'skills') end |
.skillsets_config_path ⇒ Object
SkillSets config file (enabled/disabled state, layer overrides)
240 241 242 |
# File 'lib/kairos_mcp.rb', line 240 def skillsets_config_path File.join(skillsets_dir, 'config.yml') end |
.skillsets_dir ⇒ Object
SkillSets directory (plugin-based extensions)
235 236 237 |
# File 'lib/kairos_mcp.rb', line 235 def skillsets_dir path_for('skillsets') end |
.snapshots_dir ⇒ Object
Snapshots directory (for state commit)
210 211 212 |
# File 'lib/kairos_mcp.rb', line 210 def snapshots_dir File.join(storage_dir, 'snapshots') end |
.sqlite_path ⇒ Object
SQLite database path
185 186 187 |
# File 'lib/kairos_mcp.rb', line 185 def sqlite_path File.join(storage_dir, 'kairos.db') end |
.storage_dir ⇒ Object
Storage directory (blockchain, embeddings, snapshots, tokens, etc.)
175 176 177 |
# File 'lib/kairos_mcp.rb', line 175 def storage_dir path_for('storage') end |
.templates_dir ⇒ String
Path to the bundled templates directory within the gem
256 257 258 |
# File 'lib/kairos_mcp.rb', line 256 def templates_dir File.('../templates', __dir__) end |
.token_store_path ⇒ Object
Token store file path
190 191 192 |
# File 'lib/kairos_mcp.rb', line 190 def token_store_path File.join(storage_dir, 'tokens.json') end |
.tool_metadata_path ⇒ Object
Tool metadata file path
230 231 232 |
# File 'lib/kairos_mcp.rb', line 230 def File.join(config_dir, 'tool_metadata.yml') end |
.tutorial_path ⇒ Object
L0 skills tutorial file path (onboarding instructions)
135 136 137 |
# File 'lib/kairos_mcp.rb', line 135 def tutorial_path File.join(skills_dir, 'kairos_tutorial.md') end |
.unregister_path_resolver(name) ⇒ Object
69 70 71 72 73 |
# File 'lib/kairos_mcp.rb', line 69 def unregister_path_resolver(name) @path_resolver_mutex.synchronize do @path_resolvers.delete(name.to_sym) end end |
.versions_dir ⇒ Object
L0 skills versions directory
150 151 152 |
# File 'lib/kairos_mcp.rb', line 150 def versions_dir File.join(skills_dir, 'versions') end |