Class: KairosMcp::Tools::ChainImport
- Inherits:
-
BaseTool
- Object
- BaseTool
- KairosMcp::Tools::ChainImport
show all
- Defined in:
- lib/kairos_mcp/tools/chain_import.rb
Instance Method Summary
collapse
Methods inherited from BaseTool
#harness_requirement, #initialize, #invoke_tool, #to_full_schema, #to_schema
Instance Method Details
#call(arguments) ⇒ Object
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 70
def call(arguments)
source = arguments['source']
approved = arguments['approved']
skip_backup = arguments['skip_backup'] || false
input_dir = arguments['input_dir']
unless %w[files export].include?(source)
return text_content("Error: source must be 'files' or 'export'")
end
unless SkillsConfig.storage_backend_sqlite?
return text_content("Error: chain_import only works with SQLite backend. Current backend: #{SkillsConfig.storage_backend}")
end
sqlite_config = SkillsConfig.sqlite_config
db_path = File.expand_path(sqlite_config['path'] || 'storage/kairos.db', base_dir)
unless approved
return preview_import(source, db_path, input_dir)
end
require_relative '../storage/importer'
backup_path = nil
if File.exist?(db_path) && !skip_backup
backup_path = create_backup(db_path)
end
result = case source
when 'files'
Storage::Importer.rebuild_from_files(db_path: db_path)
when 'export'
export_dir = input_dir || File.expand_path('storage/export', base_dir)
Storage::Importer.import(input_dir: export_dir, db_path: db_path)
end
if result[:error]
return text_content("Import failed: #{result[:error]}\n\nBackup available at: #{backup_path}")
end
output = <<~OUTPUT
Import completed successfully!
Source: #{source}
Database: #{db_path}
#{backup_path ? "Backup created: #{backup_path}" : "No backup (database was new or skip_backup=true)"}
Imported:
- Blocks: #{result[:blocks]}
- Action logs: #{result[:action_logs]}
- Knowledge metadata: #{result[:knowledge_meta]}
NOTE: Restart the MCP server to use the imported data.
OUTPUT
text_content(output)
end
|
#category ⇒ Object
19
20
21
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 19
def category
:chain
end
|
#description ⇒ Object
15
16
17
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 15
def description
'Import data from files to SQLite database. WARNING: This will overwrite existing data. Requires approved=true and creates automatic backup before import.'
end
|
#examples ⇒ Object
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 27
def examples
[
{
title: 'Import from files',
code: 'chain_import(source: "files", approved: true)'
},
{
title: 'Import from export directory',
code: 'chain_import(source: "export", input_dir: "/path/to/export", approved: true)'
}
]
end
|
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 44
def input_schema
{
type: 'object',
properties: {
source: {
type: 'string',
enum: ['files', 'export'],
description: "'files' = rebuild from original file storage (blockchain.json, action_log.jsonl, knowledge/). 'export' = import from exported directory."
},
input_dir: {
type: 'string',
description: "For source='export': directory containing exported files. Defaults to storage/export/"
},
approved: {
type: 'boolean',
description: 'REQUIRED: Must be true to proceed. This confirms you understand data will be overwritten.'
},
skip_backup: {
type: 'boolean',
description: 'Skip automatic backup before import. NOT RECOMMENDED. Default: false'
}
},
required: ['source', 'approved']
}
end
|
#name ⇒ Object
11
12
13
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 11
def name
'chain_import'
end
|
40
41
42
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 40
def related_tools
%w[chain_export chain_status]
end
|
23
24
25
|
# File 'lib/kairos_mcp/tools/chain_import.rb', line 23
def usecase_tags
%w[import restore sqlite migrate blockchain]
end
|