memento-mcp-server 1.8.0 → 1.9.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.
Files changed (94) hide show
  1. package/dist/config/environment.d.ts.map +1 -1
  2. package/dist/config/environment.js +2 -1
  3. package/dist/config/environment.js.map +1 -1
  4. package/dist/config/index.d.ts.map +1 -1
  5. package/dist/config/index.js +5 -2
  6. package/dist/config/index.js.map +1 -1
  7. package/dist/database/init.d.ts.map +1 -1
  8. package/dist/database/init.js +159 -7
  9. package/dist/database/init.js.map +1 -1
  10. package/dist/database/migration/backup-manager.d.ts +55 -0
  11. package/dist/database/migration/backup-manager.d.ts.map +1 -0
  12. package/dist/database/migration/backup-manager.js +181 -0
  13. package/dist/database/migration/backup-manager.js.map +1 -0
  14. package/dist/database/migration/dependency-validator.d.ts +62 -0
  15. package/dist/database/migration/dependency-validator.d.ts.map +1 -0
  16. package/dist/database/migration/dependency-validator.js +260 -0
  17. package/dist/database/migration/dependency-validator.js.map +1 -0
  18. package/dist/database/migration/migration-detector.d.ts +67 -0
  19. package/dist/database/migration/migration-detector.d.ts.map +1 -0
  20. package/dist/database/migration/migration-detector.js +129 -0
  21. package/dist/database/migration/migration-detector.js.map +1 -0
  22. package/dist/database/migration/migration-logger.d.ts +82 -0
  23. package/dist/database/migration/migration-logger.d.ts.map +1 -0
  24. package/dist/database/migration/migration-logger.js +168 -0
  25. package/dist/database/migration/migration-logger.js.map +1 -0
  26. package/dist/database/migration/migration-runner.d.ts +45 -0
  27. package/dist/database/migration/migration-runner.d.ts.map +1 -0
  28. package/dist/database/migration/migration-runner.js +194 -0
  29. package/dist/database/migration/migration-runner.js.map +1 -0
  30. package/dist/database/migration/migrations/002-mirix-schema-expansion.d.ts +55 -0
  31. package/dist/database/migration/migrations/002-mirix-schema-expansion.d.ts.map +1 -0
  32. package/dist/database/migration/migrations/002-mirix-schema-expansion.js +154 -0
  33. package/dist/database/migration/migrations/002-mirix-schema-expansion.js.map +1 -0
  34. package/dist/database/migration/schema-version-manager.d.ts +43 -0
  35. package/dist/database/migration/schema-version-manager.d.ts.map +1 -0
  36. package/dist/database/migration/schema-version-manager.js +146 -0
  37. package/dist/database/migration/schema-version-manager.js.map +1 -0
  38. package/dist/database/migration/types.d.ts +127 -0
  39. package/dist/database/migration/types.d.ts.map +1 -0
  40. package/dist/database/migration/types.js +5 -0
  41. package/dist/database/migration/types.js.map +1 -0
  42. package/dist/database/schema.sql +69 -1
  43. package/dist/npm-client/memento-client.d.ts.map +1 -1
  44. package/dist/npm-client/memento-client.js +39 -8
  45. package/dist/npm-client/memento-client.js.map +1 -1
  46. package/dist/npm-client/types.d.ts +16 -2
  47. package/dist/npm-client/types.d.ts.map +1 -1
  48. package/dist/npm-client/types.js.map +1 -1
  49. package/dist/npm-client/utils.d.ts.map +1 -1
  50. package/dist/npm-client/utils.js +44 -5
  51. package/dist/npm-client/utils.js.map +1 -1
  52. package/dist/repositories/core-memory-repository.d.ts +81 -0
  53. package/dist/repositories/core-memory-repository.d.ts.map +1 -0
  54. package/dist/repositories/core-memory-repository.js +263 -0
  55. package/dist/repositories/core-memory-repository.js.map +1 -0
  56. package/dist/repositories/knowledge-vault-repository.d.ts +102 -0
  57. package/dist/repositories/knowledge-vault-repository.d.ts.map +1 -0
  58. package/dist/repositories/knowledge-vault-repository.js +395 -0
  59. package/dist/repositories/knowledge-vault-repository.js.map +1 -0
  60. package/dist/services/core-memory-cache-service.d.ts +80 -0
  61. package/dist/services/core-memory-cache-service.d.ts.map +1 -0
  62. package/dist/services/core-memory-cache-service.js +122 -0
  63. package/dist/services/core-memory-cache-service.js.map +1 -0
  64. package/dist/services/core-memory-service.d.ts +117 -0
  65. package/dist/services/core-memory-service.d.ts.map +1 -0
  66. package/dist/services/core-memory-service.js +247 -0
  67. package/dist/services/core-memory-service.js.map +1 -0
  68. package/dist/services/knowledge-vault-service.d.ts +114 -0
  69. package/dist/services/knowledge-vault-service.d.ts.map +1 -0
  70. package/dist/services/knowledge-vault-service.js +233 -0
  71. package/dist/services/knowledge-vault-service.js.map +1 -0
  72. package/dist/tools/memory-injection-prompt.d.ts.map +1 -1
  73. package/dist/tools/memory-injection-prompt.js +28 -4
  74. package/dist/tools/memory-injection-prompt.js.map +1 -1
  75. package/dist/tools/recall-tool.d.ts.map +1 -1
  76. package/dist/tools/recall-tool.js +292 -82
  77. package/dist/tools/recall-tool.js.map +1 -1
  78. package/dist/tools/remember-tool.d.ts.map +1 -1
  79. package/dist/tools/remember-tool.js +282 -106
  80. package/dist/tools/remember-tool.js.map +1 -1
  81. package/dist/tools/types.d.ts +9 -2
  82. package/dist/tools/types.d.ts.map +1 -1
  83. package/dist/tools/types.js +11 -2
  84. package/dist/tools/types.js.map +1 -1
  85. package/dist/types/index.d.ts +20 -3
  86. package/dist/types/index.d.ts.map +1 -1
  87. package/dist/types/index.js +7 -1
  88. package/dist/types/index.js.map +1 -1
  89. package/dist/utils/type-param-validator.d.ts +31 -0
  90. package/dist/utils/type-param-validator.d.ts.map +1 -0
  91. package/dist/utils/type-param-validator.js +76 -0
  92. package/dist/utils/type-param-validator.js.map +1 -0
  93. package/package.json +1 -1
  94. package/src/database/schema.sql +69 -1
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Core Memory Service
3
+ * Core Memory에 대한 비즈니스 로직 처리
4
+ *
5
+ * 클린코드 원칙:
6
+ * - 단일 책임 원칙: Core Memory 비즈니스 로직만 담당
7
+ * - 의존성 역전: Repository에 의존
8
+ * - 캐시 연동: always_load=true인 항목은 캐시에 유지
9
+ */
10
+ import { CoreMemoryRepository, type CoreMemoryRecord } from '../repositories/core-memory-repository.js';
11
+ export interface CoreMemoryCache {
12
+ /**
13
+ * 항목을 캐시에 저장
14
+ */
15
+ set(key: string, value: CoreMemoryRecord): void;
16
+ /**
17
+ * 캐시에서 항목 조회
18
+ */
19
+ get(key: string): CoreMemoryRecord | undefined;
20
+ /**
21
+ * 캐시에서 항목 삭제
22
+ */
23
+ delete(key: string): void;
24
+ /**
25
+ * 캐시 전체 조회 (always_load=true인 항목들)
26
+ */
27
+ getAll(): CoreMemoryRecord[];
28
+ /**
29
+ * 캐시 무효화
30
+ */
31
+ clear(): void;
32
+ /**
33
+ * 캐시 크기 반환
34
+ */
35
+ size(): number;
36
+ }
37
+ export interface CreateCoreMemoryServiceInput {
38
+ agent_id?: string;
39
+ key: string;
40
+ value: string;
41
+ always_load?: boolean;
42
+ origin_source?: string | null;
43
+ }
44
+ export interface UpdateCoreMemoryServiceInput {
45
+ value?: string;
46
+ always_load?: boolean;
47
+ origin_source?: string | null;
48
+ }
49
+ /**
50
+ * Core Memory Service
51
+ */
52
+ export declare class CoreMemoryService {
53
+ private repository;
54
+ private cache;
55
+ constructor(repository: CoreMemoryRepository, cache?: CoreMemoryCache);
56
+ /**
57
+ * 캐시 서비스 설정
58
+ */
59
+ setCache(cache: CoreMemoryCache): void;
60
+ /**
61
+ * Core Memory 생성
62
+ */
63
+ create(input: CreateCoreMemoryServiceInput): Promise<CoreMemoryRecord>;
64
+ /**
65
+ * ID로 Core Memory 조회
66
+ */
67
+ findById(core_id: string): Promise<CoreMemoryRecord | null>;
68
+ /**
69
+ * agent_id와 key로 Core Memory 조회 (캐시 우선)
70
+ */
71
+ findByKey(agent_id: string, key: string): Promise<CoreMemoryRecord | null>;
72
+ /**
73
+ * agent_id로 모든 Core Memory 조회
74
+ */
75
+ findByAgentId(agent_id: string): Promise<CoreMemoryRecord[]>;
76
+ /**
77
+ * always_load=true인 Core Memory 조회 (캐시 우선)
78
+ */
79
+ findAlwaysLoad(agent_id?: string): Promise<CoreMemoryRecord[]>;
80
+ /**
81
+ * Core Memory 업데이트
82
+ */
83
+ update(core_id: string, input: UpdateCoreMemoryServiceInput): Promise<CoreMemoryRecord | null>;
84
+ /**
85
+ * agent_id와 key로 Core Memory 업데이트
86
+ */
87
+ updateByKey(agent_id: string, key: string, input: UpdateCoreMemoryServiceInput): Promise<CoreMemoryRecord | null>;
88
+ /**
89
+ * Core Memory 삭제
90
+ */
91
+ delete(core_id: string): Promise<boolean>;
92
+ /**
93
+ * agent_id와 key로 Core Memory 삭제
94
+ */
95
+ deleteByKey(agent_id: string, key: string): Promise<boolean>;
96
+ /**
97
+ * agent_id로 모든 Core Memory 삭제
98
+ */
99
+ deleteByAgentId(agent_id: string): Promise<number>;
100
+ /**
101
+ * 모든 Core Memory 조회 (관리용)
102
+ */
103
+ findAll(): Promise<CoreMemoryRecord[]>;
104
+ /**
105
+ * Core Memory 개수 조회
106
+ */
107
+ count(agent_id?: string): Promise<number>;
108
+ /**
109
+ * 캐시 키 생성
110
+ */
111
+ private getCacheKey;
112
+ /**
113
+ * 캐시 무효화 및 재로드 (always_load=true인 항목들)
114
+ */
115
+ reloadCache(agent_id?: string): Promise<void>;
116
+ }
117
+ //# sourceMappingURL=core-memory-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-memory-service.d.ts","sourceRoot":"","sources":["../../src/services/core-memory-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Core Memory Service
3
+ * Core Memory에 대한 비즈니스 로직 처리
4
+ *
5
+ * 클린코드 원칙:
6
+ * - 단일 책임 원칙: Core Memory 비즈니스 로직만 담당
7
+ * - 의존성 역전: Repository에 의존
8
+ * - 캐시 연동: always_load=true인 항목은 캐시에 유지
9
+ */
10
+ import { CoreMemoryRepository } from '../repositories/core-memory-repository.js';
11
+ /**
12
+ * Core Memory ID 생성 유틸리티
13
+ */
14
+ function generateCoreId() {
15
+ const timestamp = Date.now();
16
+ const random = Math.random().toString(36).substring(2, 11);
17
+ return `core_${timestamp}_${random}`;
18
+ }
19
+ /**
20
+ * Core Memory Service
21
+ */
22
+ export class CoreMemoryService {
23
+ repository;
24
+ cache = null;
25
+ constructor(repository, cache) {
26
+ this.repository = repository;
27
+ this.cache = cache || null;
28
+ }
29
+ /**
30
+ * 캐시 서비스 설정
31
+ */
32
+ setCache(cache) {
33
+ this.cache = cache;
34
+ }
35
+ /**
36
+ * Core Memory 생성
37
+ */
38
+ async create(input) {
39
+ const { agent_id = 'default', key, value, always_load = false, origin_source = null } = input;
40
+ // 기존 key가 있는지 확인 (UNIQUE 제약)
41
+ const existing = await this.repository.findByKey(agent_id, key);
42
+ if (existing) {
43
+ throw new Error(`Core memory with key '${key}' already exists for agent '${agent_id}'`);
44
+ }
45
+ const core_id = generateCoreId();
46
+ const record = await this.repository.create({
47
+ core_id,
48
+ agent_id,
49
+ key,
50
+ value,
51
+ always_load,
52
+ origin_source
53
+ });
54
+ // always_load=true인 경우 캐시에 추가
55
+ if (always_load && this.cache) {
56
+ this.cache.set(this.getCacheKey(agent_id, key), record);
57
+ }
58
+ return record;
59
+ }
60
+ /**
61
+ * ID로 Core Memory 조회
62
+ */
63
+ async findById(core_id) {
64
+ return this.repository.findById(core_id);
65
+ }
66
+ /**
67
+ * agent_id와 key로 Core Memory 조회 (캐시 우선)
68
+ */
69
+ async findByKey(agent_id, key) {
70
+ // 캐시에서 먼저 조회
71
+ if (this.cache) {
72
+ const cached = this.cache.get(this.getCacheKey(agent_id, key));
73
+ if (cached) {
74
+ return cached;
75
+ }
76
+ }
77
+ // 캐시에 없으면 DB에서 조회
78
+ const record = await this.repository.findByKey(agent_id, key);
79
+ // always_load=true이고 캐시에 없으면 캐시에 추가
80
+ if (record && record.always_load && this.cache) {
81
+ this.cache.set(this.getCacheKey(agent_id, key), record);
82
+ }
83
+ return record;
84
+ }
85
+ /**
86
+ * agent_id로 모든 Core Memory 조회
87
+ */
88
+ async findByAgentId(agent_id) {
89
+ return this.repository.findByAgentId(agent_id);
90
+ }
91
+ /**
92
+ * always_load=true인 Core Memory 조회 (캐시 우선)
93
+ */
94
+ async findAlwaysLoad(agent_id) {
95
+ // 캐시가 있고 캐시에 데이터가 있으면 캐시에서 조회
96
+ if (this.cache && this.cache.size() > 0) {
97
+ const cached = this.cache.getAll();
98
+ if (agent_id) {
99
+ return cached.filter(record => record.agent_id === agent_id);
100
+ }
101
+ return cached;
102
+ }
103
+ // 캐시가 없거나 비어있으면 DB에서 조회
104
+ const dbItems = await this.repository.findAlwaysLoad(agent_id);
105
+ // 캐시가 있으면 DB에서 조회한 항목들을 캐시에 로드
106
+ if (this.cache) {
107
+ for (const item of dbItems) {
108
+ const cacheKey = this.getCacheKey(item.agent_id, item.key);
109
+ this.cache.set(cacheKey, item);
110
+ }
111
+ }
112
+ return dbItems;
113
+ }
114
+ /**
115
+ * Core Memory 업데이트
116
+ */
117
+ async update(core_id, input) {
118
+ const existing = await this.repository.findById(core_id);
119
+ if (!existing) {
120
+ return null;
121
+ }
122
+ const updated = await this.repository.update(core_id, input);
123
+ if (!updated) {
124
+ return null;
125
+ }
126
+ // 캐시 업데이트
127
+ if (this.cache) {
128
+ const cacheKey = this.getCacheKey(updated.agent_id, updated.key);
129
+ if (updated.always_load) {
130
+ // always_load=true인 경우 캐시에 추가/업데이트
131
+ this.cache.set(cacheKey, updated);
132
+ }
133
+ else {
134
+ // always_load=false로 변경된 경우 캐시에서 제거
135
+ this.cache.delete(cacheKey);
136
+ }
137
+ }
138
+ return updated;
139
+ }
140
+ /**
141
+ * agent_id와 key로 Core Memory 업데이트
142
+ */
143
+ async updateByKey(agent_id, key, input) {
144
+ const existing = await this.repository.findByKey(agent_id, key);
145
+ if (!existing) {
146
+ return null;
147
+ }
148
+ const updated = await this.repository.updateByKey(agent_id, key, input);
149
+ if (!updated) {
150
+ return null;
151
+ }
152
+ // 캐시 업데이트
153
+ if (this.cache) {
154
+ const cacheKey = this.getCacheKey(agent_id, key);
155
+ if (updated.always_load) {
156
+ // always_load=true인 경우 캐시에 추가/업데이트
157
+ this.cache.set(cacheKey, updated);
158
+ }
159
+ else {
160
+ // always_load=false로 변경된 경우 캐시에서 제거
161
+ this.cache.delete(cacheKey);
162
+ }
163
+ }
164
+ return updated;
165
+ }
166
+ /**
167
+ * Core Memory 삭제
168
+ */
169
+ async delete(core_id) {
170
+ const existing = await this.repository.findById(core_id);
171
+ if (!existing) {
172
+ return false;
173
+ }
174
+ const deleted = await this.repository.delete(core_id);
175
+ // 캐시에서도 제거
176
+ if (deleted && this.cache) {
177
+ this.cache.delete(this.getCacheKey(existing.agent_id, existing.key));
178
+ }
179
+ return deleted;
180
+ }
181
+ /**
182
+ * agent_id와 key로 Core Memory 삭제
183
+ */
184
+ async deleteByKey(agent_id, key) {
185
+ const existing = await this.repository.findByKey(agent_id, key);
186
+ if (!existing) {
187
+ return false;
188
+ }
189
+ const deleted = await this.repository.deleteByKey(agent_id, key);
190
+ // 캐시에서도 제거
191
+ if (deleted && this.cache) {
192
+ this.cache.delete(this.getCacheKey(agent_id, key));
193
+ }
194
+ return deleted;
195
+ }
196
+ /**
197
+ * agent_id로 모든 Core Memory 삭제
198
+ */
199
+ async deleteByAgentId(agent_id) {
200
+ const deleted = await this.repository.deleteByAgentId(agent_id);
201
+ // 캐시에서도 제거
202
+ if (deleted > 0 && this.cache) {
203
+ // 캐시에서 해당 agent_id의 항목들 제거
204
+ const cached = this.cache.getAll();
205
+ for (const record of cached) {
206
+ if (record.agent_id === agent_id) {
207
+ this.cache.delete(this.getCacheKey(agent_id, record.key));
208
+ }
209
+ }
210
+ }
211
+ return deleted;
212
+ }
213
+ /**
214
+ * 모든 Core Memory 조회 (관리용)
215
+ */
216
+ async findAll() {
217
+ return this.repository.findAll();
218
+ }
219
+ /**
220
+ * Core Memory 개수 조회
221
+ */
222
+ async count(agent_id) {
223
+ return this.repository.count(agent_id);
224
+ }
225
+ /**
226
+ * 캐시 키 생성
227
+ */
228
+ getCacheKey(agent_id, key) {
229
+ return `${agent_id}:${key}`;
230
+ }
231
+ /**
232
+ * 캐시 무효화 및 재로드 (always_load=true인 항목들)
233
+ */
234
+ async reloadCache(agent_id) {
235
+ if (!this.cache) {
236
+ return;
237
+ }
238
+ // 캐시 클리어
239
+ this.cache.clear();
240
+ // always_load=true인 항목들을 DB에서 조회하여 캐시에 로드
241
+ const alwaysLoadItems = await this.repository.findAlwaysLoad(agent_id);
242
+ for (const item of alwaysLoadItems) {
243
+ this.cache.set(this.getCacheKey(item.agent_id, item.key), item);
244
+ }
245
+ }
246
+ }
247
+ //# sourceMappingURL=core-memory-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-memory-service.js","sourceRoot":"","sources":["../../src/services/core-memory-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Knowledge Vault Service
3
+ * Knowledge Vault에 대한 비즈니스 로직 처리
4
+ *
5
+ * 클린코드 원칙:
6
+ * - 단일 책임 원칙: Knowledge Vault 비즈니스 로직만 담당
7
+ * - 의존성 역전: Repository에 의존
8
+ * - Immutable 검증: immutable=true인 경우 업데이트/삭제 제한
9
+ * - 버전 관리: 기존 버전을 삭제하지 않고 새 버전 생성
10
+ */
11
+ import { KnowledgeVaultRepository, type KnowledgeVaultRecord } from '../repositories/knowledge-vault-repository.js';
12
+ export interface CreateKnowledgeVaultServiceInput {
13
+ agent_id?: string;
14
+ key: string;
15
+ value: string;
16
+ immutable?: boolean;
17
+ admin_override?: boolean;
18
+ origin_source?: string | null;
19
+ }
20
+ export interface UpdateKnowledgeVaultServiceInput {
21
+ value?: string;
22
+ immutable?: boolean;
23
+ admin_override?: boolean;
24
+ origin_source?: string | null;
25
+ }
26
+ /**
27
+ * Immutable 데이터 수정 시도 에러
28
+ */
29
+ export declare class ImmutableDataError extends Error {
30
+ constructor(message: string);
31
+ }
32
+ /**
33
+ * Knowledge Vault Service
34
+ */
35
+ export declare class KnowledgeVaultService {
36
+ private repository;
37
+ constructor(repository: KnowledgeVaultRepository);
38
+ /**
39
+ * Knowledge Vault 생성
40
+ * 기존 활성 버전이 있으면 새 버전으로 생성 (기존 버전은 유지)
41
+ */
42
+ create(input: CreateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
43
+ /**
44
+ * ID로 Knowledge Vault 조회
45
+ */
46
+ findById(vault_id: string): Promise<KnowledgeVaultRecord | null>;
47
+ /**
48
+ * agent_id와 key로 활성 버전 조회
49
+ */
50
+ findActiveByKey(agent_id: string, key: string): Promise<KnowledgeVaultRecord | null>;
51
+ /**
52
+ * agent_id와 key로 특정 버전 조회
53
+ */
54
+ findByKeyAndVersion(agent_id: string, key: string, version: number): Promise<KnowledgeVaultRecord | null>;
55
+ /**
56
+ * agent_id와 key로 모든 버전 조회
57
+ */
58
+ findAllVersionsByKey(agent_id: string, key: string): Promise<KnowledgeVaultRecord[]>;
59
+ /**
60
+ * agent_id로 모든 활성 Knowledge Vault 조회
61
+ */
62
+ findActiveByAgentId(agent_id: string): Promise<KnowledgeVaultRecord[]>;
63
+ /**
64
+ * agent_id로 모든 Knowledge Vault 조회 (삭제된 것 포함)
65
+ */
66
+ findByAgentId(agent_id: string): Promise<KnowledgeVaultRecord[]>;
67
+ /**
68
+ * Knowledge Vault 업데이트
69
+ * immutable=true인 경우 새 버전으로 생성 (기존 버전은 유지)
70
+ */
71
+ update(vault_id: string, input: UpdateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
72
+ /**
73
+ * agent_id와 key로 활성 버전 업데이트
74
+ * immutable=true인 경우 새 버전으로 생성
75
+ */
76
+ updateActiveByKey(agent_id: string, key: string, input: UpdateKnowledgeVaultServiceInput): Promise<KnowledgeVaultRecord>;
77
+ /**
78
+ * Knowledge Vault 삭제 (soft delete)
79
+ * immutable=true인 경우 삭제 불가
80
+ */
81
+ delete(vault_id: string): Promise<boolean>;
82
+ /**
83
+ * agent_id와 key로 활성 버전 삭제 (soft delete)
84
+ */
85
+ deleteActiveByKey(agent_id: string, key: string): Promise<boolean>;
86
+ /**
87
+ * 하드 삭제 (물리적 삭제, 주의 필요)
88
+ * immutable=true인 경우에도 강제 삭제 가능 (admin 권한 필요)
89
+ */
90
+ hardDelete(vault_id: string, force?: boolean): Promise<boolean>;
91
+ /**
92
+ * 모든 활성 Knowledge Vault 조회
93
+ */
94
+ findAllActive(): Promise<KnowledgeVaultRecord[]>;
95
+ /**
96
+ * 모든 Knowledge Vault 조회 (삭제된 것 포함)
97
+ */
98
+ findAll(): Promise<KnowledgeVaultRecord[]>;
99
+ /**
100
+ * Knowledge Vault 개수 조회
101
+ */
102
+ count(agent_id?: string, activeOnly?: boolean): Promise<number>;
103
+ /**
104
+ * Immutable 검증
105
+ * immutable=true인 경우 업데이트/삭제 가능 여부 확인
106
+ */
107
+ canUpdate(record: KnowledgeVaultRecord, admin_override?: boolean): boolean;
108
+ /**
109
+ * Immutable 검증
110
+ * immutable=true인 경우 삭제 가능 여부 확인
111
+ */
112
+ canDelete(record: KnowledgeVaultRecord, admin_override?: boolean): boolean;
113
+ }
114
+ //# sourceMappingURL=knowledge-vault-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge-vault-service.d.ts","sourceRoot":"","sources":["../../src/services/knowledge-vault-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,wBAAwB,EACxB,KAAK,oBAAoB,EAG1B,MAAM,+CAA+C,CAAC;AAEvD,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,gCAAgC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAWD;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,wBAAwB;IAExD;;;OAGG;IACG,MAAM,CAAC,KAAK,EAAE,gCAAgC,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAwCpF;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAItE;;OAEG;IACG,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAI1F;;OAEG;IACG,mBAAmB,CACvB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAIvC;;OAEG;IACG,oBAAoB,CACxB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIlC;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAI5E;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAItE;;;OAGG;IACG,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAsChC;;;OAGG;IACG,iBAAiB,CACrB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,gCAAgC,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAShC;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhD;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBxE;;;OAGG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAgB5E;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAItD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAIhD;;OAEG;IACG,KAAK,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,GAAG,OAAO,CAAC,MAAM,CAAC;IAI3E;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO;IAOjF;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,oBAAoB,EAAE,cAAc,GAAE,OAAe,GAAG,OAAO;CAMlF"}