a2a-memory 0.1.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/LICENSE +21 -0
- package/README.md +119 -0
- package/dist/cli/commands/config.d.ts +6 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +56 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/extract.d.ts +8 -0
- package/dist/cli/commands/extract.d.ts.map +1 -0
- package/dist/cli/commands/extract.js +103 -0
- package/dist/cli/commands/extract.js.map +1 -0
- package/dist/cli/commands/list.d.ts +6 -0
- package/dist/cli/commands/list.d.ts.map +1 -0
- package/dist/cli/commands/list.js +44 -0
- package/dist/cli/commands/list.js.map +1 -0
- package/dist/cli/commands/search.d.ts +6 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +45 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +8 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +132 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/status.d.ts +6 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +70 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/sync.d.ts +6 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +142 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/index.d.ts +14 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/manager.d.ts +18 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +95 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/db/database.d.ts +55 -0
- package/dist/db/database.d.ts.map +1 -0
- package/dist/db/database.js +414 -0
- package/dist/db/database.js.map +1 -0
- package/dist/extraction/extractor.d.ts +12 -0
- package/dist/extraction/extractor.d.ts.map +1 -0
- package/dist/extraction/extractor.js +265 -0
- package/dist/extraction/extractor.js.map +1 -0
- package/dist/extraction/filter.d.ts +19 -0
- package/dist/extraction/filter.d.ts.map +1 -0
- package/dist/extraction/filter.js +60 -0
- package/dist/extraction/filter.js.map +1 -0
- package/dist/extraction/scorer.d.ts +18 -0
- package/dist/extraction/scorer.d.ts.map +1 -0
- package/dist/extraction/scorer.js +107 -0
- package/dist/extraction/scorer.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +14 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +144 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/session-end.d.ts +13 -0
- package/dist/hooks/session-end.d.ts.map +1 -0
- package/dist/hooks/session-end.js +85 -0
- package/dist/hooks/session-end.js.map +1 -0
- package/dist/hooks/session-start.d.ts +15 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +77 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/session/parser.d.ts +30 -0
- package/dist/session/parser.d.ts.map +1 -0
- package/dist/session/parser.js +129 -0
- package/dist/session/parser.js.map +1 -0
- package/dist/sync/client.d.ts +72 -0
- package/dist/sync/client.d.ts.map +1 -0
- package/dist/sync/client.js +138 -0
- package/dist/sync/client.js.map +1 -0
- package/dist/sync/index.d.ts +8 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +6 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/synchronizer.d.ts +39 -0
- package/dist/sync/synchronizer.d.ts.map +1 -0
- package/dist/sync/synchronizer.js +169 -0
- package/dist/sync/synchronizer.js.map +1 -0
- package/dist/types/index.d.ts +140 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +48 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/sync/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sync Module - A2A Server Synchronization
|
|
3
|
+
*/
|
|
4
|
+
export { A2AClient } from './client.js';
|
|
5
|
+
export type { A2AClientConfig, RemoteMemory } from './client.js';
|
|
6
|
+
export { MemorySynchronizer } from './synchronizer.js';
|
|
7
|
+
export type { SyncResult } from './synchronizer.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Synchronizer
|
|
3
|
+
* 로컬 메모리와 원격 A2A 서버 간 동기화
|
|
4
|
+
*/
|
|
5
|
+
import type { MemoryDatabase } from '../db/database.js';
|
|
6
|
+
import type { A2AClient } from './client.js';
|
|
7
|
+
export interface SyncResult {
|
|
8
|
+
pushed: number;
|
|
9
|
+
pulled: number;
|
|
10
|
+
conflicts: number;
|
|
11
|
+
errors: string[];
|
|
12
|
+
duration: number;
|
|
13
|
+
}
|
|
14
|
+
export declare class MemorySynchronizer {
|
|
15
|
+
private db;
|
|
16
|
+
private client;
|
|
17
|
+
constructor(db: MemoryDatabase, client: A2AClient);
|
|
18
|
+
/**
|
|
19
|
+
* 양방향 동기화
|
|
20
|
+
*/
|
|
21
|
+
sync(): Promise<SyncResult>;
|
|
22
|
+
/**
|
|
23
|
+
* 로컬→원격만
|
|
24
|
+
*/
|
|
25
|
+
push(): Promise<SyncResult>;
|
|
26
|
+
/**
|
|
27
|
+
* 원격→로컬만
|
|
28
|
+
*/
|
|
29
|
+
pull(): Promise<SyncResult>;
|
|
30
|
+
/**
|
|
31
|
+
* 동기화 상태 확인
|
|
32
|
+
*/
|
|
33
|
+
getStatus(): Promise<{
|
|
34
|
+
pendingPush: number;
|
|
35
|
+
pendingPull: number;
|
|
36
|
+
lastSyncedAt?: string;
|
|
37
|
+
}>;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=synchronizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/sync/synchronizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAG7C,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,MAAM;gBADN,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,SAAS;IAG3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IA+BjC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAyCjC;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC;IAgEjC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CAqBH"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Synchronizer
|
|
3
|
+
* 로컬 메모리와 원격 A2A 서버 간 동기화
|
|
4
|
+
*/
|
|
5
|
+
export class MemorySynchronizer {
|
|
6
|
+
db;
|
|
7
|
+
client;
|
|
8
|
+
constructor(db, client) {
|
|
9
|
+
this.db = db;
|
|
10
|
+
this.client = client;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 양방향 동기화
|
|
14
|
+
*/
|
|
15
|
+
async sync() {
|
|
16
|
+
const startTime = Date.now();
|
|
17
|
+
const result = {
|
|
18
|
+
pushed: 0,
|
|
19
|
+
pulled: 0,
|
|
20
|
+
conflicts: 0,
|
|
21
|
+
errors: [],
|
|
22
|
+
duration: 0,
|
|
23
|
+
};
|
|
24
|
+
try {
|
|
25
|
+
// 1. Push (로컬→원격)
|
|
26
|
+
const pushResult = await this.push();
|
|
27
|
+
result.pushed = pushResult.pushed;
|
|
28
|
+
result.errors.push(...pushResult.errors);
|
|
29
|
+
// 2. Pull (원격→로컬)
|
|
30
|
+
const pullResult = await this.pull();
|
|
31
|
+
result.pulled = pullResult.pulled;
|
|
32
|
+
result.conflicts = pullResult.conflicts;
|
|
33
|
+
result.errors.push(...pullResult.errors);
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
if (error instanceof Error) {
|
|
37
|
+
result.errors.push(error.message);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
result.duration = Date.now() - startTime;
|
|
41
|
+
return result;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 로컬→원격만
|
|
45
|
+
*/
|
|
46
|
+
async push() {
|
|
47
|
+
const startTime = Date.now();
|
|
48
|
+
const result = {
|
|
49
|
+
pushed: 0,
|
|
50
|
+
pulled: 0,
|
|
51
|
+
conflicts: 0,
|
|
52
|
+
errors: [],
|
|
53
|
+
duration: 0,
|
|
54
|
+
};
|
|
55
|
+
try {
|
|
56
|
+
const pending = this.db.getPendingSyncMemories();
|
|
57
|
+
for (const memory of pending) {
|
|
58
|
+
try {
|
|
59
|
+
const remoteMemory = await this.client.createMemory({
|
|
60
|
+
content: memory.content,
|
|
61
|
+
category: memory.category,
|
|
62
|
+
tier: memory.tier,
|
|
63
|
+
tags: memory.tags,
|
|
64
|
+
});
|
|
65
|
+
// sync_status 업데이트
|
|
66
|
+
this.db.setSyncStatus(memory.id, remoteMemory.id, 'synced');
|
|
67
|
+
result.pushed++;
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
if (error instanceof Error) {
|
|
71
|
+
result.errors.push(`메모리 ${memory.id} 푸시 실패: ${error.message}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
if (error instanceof Error) {
|
|
78
|
+
result.errors.push(error.message);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
result.duration = Date.now() - startTime;
|
|
82
|
+
return result;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 원격→로컬만
|
|
86
|
+
*/
|
|
87
|
+
async pull() {
|
|
88
|
+
const startTime = Date.now();
|
|
89
|
+
const result = {
|
|
90
|
+
pushed: 0,
|
|
91
|
+
pulled: 0,
|
|
92
|
+
conflicts: 0,
|
|
93
|
+
errors: [],
|
|
94
|
+
duration: 0,
|
|
95
|
+
};
|
|
96
|
+
try {
|
|
97
|
+
// 원격 메모리 목록 가져오기 (최대 100개)
|
|
98
|
+
const remoteMemories = await this.client.listMemories({ limit: 100 });
|
|
99
|
+
for (const remote of remoteMemories) {
|
|
100
|
+
try {
|
|
101
|
+
// 이미 로컬에 있는지 확인 (remote_id 기준)
|
|
102
|
+
const existing = this.db.findMemoryByRemoteId(remote.id);
|
|
103
|
+
if (!existing) {
|
|
104
|
+
// 새로운 메모리 생성
|
|
105
|
+
const created = this.db.createMemory({
|
|
106
|
+
content: remote.content,
|
|
107
|
+
category: remote.category,
|
|
108
|
+
tier: (remote.tier ?? 'tier2'),
|
|
109
|
+
tags: remote.tags ?? [],
|
|
110
|
+
});
|
|
111
|
+
this.db.setSyncStatus(created.id, remote.id, 'synced');
|
|
112
|
+
result.pulled++;
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
// 충돌 검사 (updated_at 비교)
|
|
116
|
+
const remoteUpdated = new Date(remote.updated_at);
|
|
117
|
+
const localUpdated = new Date(existing.updatedAt);
|
|
118
|
+
if (remoteUpdated > localUpdated) {
|
|
119
|
+
// 원격이 더 최신 → 로컬 업데이트
|
|
120
|
+
this.db.updateMemory(existing.id, {
|
|
121
|
+
content: remote.content,
|
|
122
|
+
category: remote.category,
|
|
123
|
+
tier: (remote.tier ?? existing.tier),
|
|
124
|
+
tags: remote.tags ?? existing.tags,
|
|
125
|
+
});
|
|
126
|
+
this.db.setSyncStatus(existing.id, remote.id, 'synced');
|
|
127
|
+
result.conflicts++;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
if (error instanceof Error) {
|
|
133
|
+
result.errors.push(`메모리 ${remote.id} 풀 실패: ${error.message}`);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
if (error instanceof Error) {
|
|
140
|
+
result.errors.push(error.message);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
result.duration = Date.now() - startTime;
|
|
144
|
+
return result;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* 동기화 상태 확인
|
|
148
|
+
*/
|
|
149
|
+
async getStatus() {
|
|
150
|
+
const pendingPush = this.db.getPendingSyncMemories().length;
|
|
151
|
+
// 원격 메모리 개수 확인 (간단한 방법으로 limit=1 요청)
|
|
152
|
+
let pendingPull = 0;
|
|
153
|
+
try {
|
|
154
|
+
const remote = await this.client.listMemories({ limit: 1000 });
|
|
155
|
+
const localSynced = this.db.getSyncedMemoryCount();
|
|
156
|
+
pendingPull = Math.max(0, remote.length - localSynced);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// 원격 접속 실패 시 0
|
|
160
|
+
}
|
|
161
|
+
const lastSyncedAt = this.db.getLastSyncedAt();
|
|
162
|
+
return {
|
|
163
|
+
pendingPush,
|
|
164
|
+
pendingPull,
|
|
165
|
+
lastSyncedAt: lastSyncedAt ?? undefined,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=synchronizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synchronizer.js","sourceRoot":"","sources":["../../src/sync/synchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Memory Plugin - Shared Types
|
|
3
|
+
*
|
|
4
|
+
* 이 파일은 모든 모듈이 공유하는 타입 정의입니다.
|
|
5
|
+
* 변경 시 모든 의존 모듈에 영향을 미치므로 신중하게 수정하세요.
|
|
6
|
+
*/
|
|
7
|
+
export type MemoryCategory = 'error_solution' | 'code_pattern' | 'decision' | 'context' | 'preference';
|
|
8
|
+
export type MemoryTier = 'semantic' | 'episodic' | 'procedural';
|
|
9
|
+
export interface Memory {
|
|
10
|
+
id: string;
|
|
11
|
+
content: string;
|
|
12
|
+
category: MemoryCategory;
|
|
13
|
+
tier: MemoryTier;
|
|
14
|
+
tags: string[];
|
|
15
|
+
embedding?: number[];
|
|
16
|
+
projectPath?: string;
|
|
17
|
+
sessionId?: string;
|
|
18
|
+
createdAt: string;
|
|
19
|
+
updatedAt: string;
|
|
20
|
+
accessCount: number;
|
|
21
|
+
lastAccessedAt?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface MemoryCreateInput {
|
|
24
|
+
content: string;
|
|
25
|
+
category: MemoryCategory;
|
|
26
|
+
tier: MemoryTier;
|
|
27
|
+
tags?: string[];
|
|
28
|
+
projectPath?: string;
|
|
29
|
+
sessionId?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface MemorySearchOptions {
|
|
32
|
+
query: string;
|
|
33
|
+
limit?: number;
|
|
34
|
+
category?: MemoryCategory;
|
|
35
|
+
tier?: MemoryTier;
|
|
36
|
+
projectPath?: string;
|
|
37
|
+
minScore?: number;
|
|
38
|
+
}
|
|
39
|
+
export interface MemorySearchResult {
|
|
40
|
+
memory: Memory;
|
|
41
|
+
score: number;
|
|
42
|
+
matchType: 'vector' | 'fts' | 'hybrid';
|
|
43
|
+
}
|
|
44
|
+
export interface SessionMessage {
|
|
45
|
+
parentUuid?: string;
|
|
46
|
+
uuid: string;
|
|
47
|
+
type: 'human' | 'assistant' | 'system';
|
|
48
|
+
message: {
|
|
49
|
+
role: string;
|
|
50
|
+
content: string | SessionContentBlock[];
|
|
51
|
+
};
|
|
52
|
+
timestamp: string;
|
|
53
|
+
gitBranch?: string;
|
|
54
|
+
cwd?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface SessionContentBlock {
|
|
57
|
+
type: 'text' | 'tool_use' | 'tool_result';
|
|
58
|
+
text?: string;
|
|
59
|
+
name?: string;
|
|
60
|
+
input?: Record<string, unknown>;
|
|
61
|
+
content?: string;
|
|
62
|
+
}
|
|
63
|
+
export interface SessionInfo {
|
|
64
|
+
sessionId: string;
|
|
65
|
+
projectPath: string;
|
|
66
|
+
filePath: string;
|
|
67
|
+
messageCount: number;
|
|
68
|
+
startTime?: string;
|
|
69
|
+
endTime?: string;
|
|
70
|
+
sizeBytes: number;
|
|
71
|
+
}
|
|
72
|
+
export interface ExtractionResult {
|
|
73
|
+
memories: MemoryCreateInput[];
|
|
74
|
+
sessionInfo: SessionInfo;
|
|
75
|
+
stats: {
|
|
76
|
+
totalMessages: number;
|
|
77
|
+
extractedPatterns: number;
|
|
78
|
+
filteredSensitive: number;
|
|
79
|
+
processingTimeMs: number;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export interface A2AConfig {
|
|
83
|
+
server: {
|
|
84
|
+
url: string;
|
|
85
|
+
apiKey?: string;
|
|
86
|
+
};
|
|
87
|
+
mode: 'local' | 'team';
|
|
88
|
+
autoCapture: {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
triggers: string[];
|
|
91
|
+
excludePatterns: string[];
|
|
92
|
+
significanceThreshold: number;
|
|
93
|
+
};
|
|
94
|
+
autoInject: {
|
|
95
|
+
enabled: boolean;
|
|
96
|
+
maxMemories: number;
|
|
97
|
+
maxTokens: number;
|
|
98
|
+
};
|
|
99
|
+
sessionSummary: {
|
|
100
|
+
enabled: boolean;
|
|
101
|
+
minActions: number;
|
|
102
|
+
};
|
|
103
|
+
db: {
|
|
104
|
+
path: string;
|
|
105
|
+
maxSizeMB: number;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export declare const DEFAULT_CONFIG: A2AConfig;
|
|
109
|
+
export interface HookContext {
|
|
110
|
+
hookName: 'SessionStart' | 'PostToolUse' | 'SessionEnd';
|
|
111
|
+
sessionId: string;
|
|
112
|
+
projectPath: string;
|
|
113
|
+
cwd: string;
|
|
114
|
+
}
|
|
115
|
+
export interface SessionStartContext extends HookContext {
|
|
116
|
+
hookName: 'SessionStart';
|
|
117
|
+
}
|
|
118
|
+
export interface PostToolUseContext extends HookContext {
|
|
119
|
+
hookName: 'PostToolUse';
|
|
120
|
+
toolName: string;
|
|
121
|
+
toolInput: Record<string, unknown>;
|
|
122
|
+
toolResult: string;
|
|
123
|
+
}
|
|
124
|
+
export interface SessionEndContext extends HookContext {
|
|
125
|
+
hookName: 'SessionEnd';
|
|
126
|
+
capturedMemoryIds: string[];
|
|
127
|
+
modifiedFiles: string[];
|
|
128
|
+
}
|
|
129
|
+
export interface SignificanceSignal {
|
|
130
|
+
name: string;
|
|
131
|
+
score: number;
|
|
132
|
+
matched: boolean;
|
|
133
|
+
}
|
|
134
|
+
export interface SignificanceResult {
|
|
135
|
+
totalScore: number;
|
|
136
|
+
signals: SignificanceSignal[];
|
|
137
|
+
shouldCapture: boolean;
|
|
138
|
+
}
|
|
139
|
+
export declare const SENSITIVE_PATTERNS: RegExp[];
|
|
140
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A2A Memory Plugin - Shared Types
|
|
3
|
+
*
|
|
4
|
+
* 이 파일은 모든 모듈이 공유하는 타입 정의입니다.
|
|
5
|
+
* 변경 시 모든 의존 모듈에 영향을 미치므로 신중하게 수정하세요.
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_CONFIG = {
|
|
8
|
+
server: {
|
|
9
|
+
url: 'https://a2a-api-production-8d17.up.railway.app',
|
|
10
|
+
},
|
|
11
|
+
mode: 'local',
|
|
12
|
+
autoCapture: {
|
|
13
|
+
enabled: false, // Opt-in (GDPR)
|
|
14
|
+
triggers: ['Write', 'Edit', 'Bash'],
|
|
15
|
+
excludePatterns: [
|
|
16
|
+
'*.key', '*.pem', '.env', 'credentials.json',
|
|
17
|
+
'secrets.yaml', 'sk-*', 'sk_live_*',
|
|
18
|
+
],
|
|
19
|
+
significanceThreshold: 0.6,
|
|
20
|
+
},
|
|
21
|
+
autoInject: {
|
|
22
|
+
enabled: true,
|
|
23
|
+
maxMemories: 5,
|
|
24
|
+
maxTokens: 2000,
|
|
25
|
+
},
|
|
26
|
+
sessionSummary: {
|
|
27
|
+
enabled: true,
|
|
28
|
+
minActions: 3,
|
|
29
|
+
},
|
|
30
|
+
db: {
|
|
31
|
+
path: '~/.a2a/memory.db',
|
|
32
|
+
maxSizeMB: 100,
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
// ============================================================
|
|
36
|
+
// Sensitive Info Patterns
|
|
37
|
+
// ============================================================
|
|
38
|
+
export const SENSITIVE_PATTERNS = [
|
|
39
|
+
/(?:api[_-]?key|apikey)\s*[:=]\s*['"]?[\w-]{20,}/gi,
|
|
40
|
+
/(?:secret|password|passwd|pwd)\s*[:=]\s*['"]?[^\s'"]{8,}/gi,
|
|
41
|
+
/sk-[a-zA-Z0-9]{20,}/g, // OpenAI keys
|
|
42
|
+
/sk_live_[a-zA-Z0-9]{20,}/g, // Stripe keys
|
|
43
|
+
/ghp_[a-zA-Z0-9]{36,}/g, // GitHub tokens
|
|
44
|
+
/(?:Bearer\s+)[a-zA-Z0-9._-]{20,}/gi, // Bearer tokens
|
|
45
|
+
/[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g, // emails
|
|
46
|
+
/-----BEGIN\s+(?:RSA\s+)?PRIVATE\s+KEY-----/g, // private keys
|
|
47
|
+
];
|
|
48
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAmIH,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE;QACN,GAAG,EAAE,gDAAgD;KACtD;IACD,IAAI,EAAE,OAAO;IACb,WAAW,EAAE;QACX,OAAO,EAAE,KAAK,EAAG,gBAAgB;QACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QACnC,eAAe,EAAE;YACf,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB;YAC5C,cAAc,EAAE,MAAM,EAAE,WAAW;SACpC;QACD,qBAAqB,EAAE,GAAG;KAC3B;IACD,UAAU,EAAE;QACV,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,CAAC;QACd,SAAS,EAAE,IAAI;KAChB;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,CAAC;KACd;IACD,EAAE,EAAE;QACF,IAAI,EAAE,kBAAkB;QACxB,SAAS,EAAE,GAAG;KACf;CACF,CAAC;AA8CF,+DAA+D;AAC/D,0BAA0B;AAC1B,+DAA+D;AAE/D,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,mDAAmD;IACnD,4DAA4D;IAC5D,sBAAsB,EAAqB,cAAc;IACzD,2BAA2B,EAAgB,cAAc;IACzD,uBAAuB,EAAoB,gBAAgB;IAC3D,oCAAoC,EAAO,gBAAgB;IAC3D,iDAAiD,EAAG,SAAS;IAC7D,6CAA6C,EAAS,eAAe;CACtE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "a2a-memory",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Persistent AI memory for Claude Code - Session extraction, local DB, and hook automation",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"a2a-memory": "dist/cli/index.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist/**/*",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"dev": "tsc --watch",
|
|
19
|
+
"test": "vitest",
|
|
20
|
+
"test:run": "vitest run",
|
|
21
|
+
"lint": "eslint src/",
|
|
22
|
+
"clean": "rm -rf dist/",
|
|
23
|
+
"prepublishOnly": "npm run build"
|
|
24
|
+
},
|
|
25
|
+
"keywords": ["claude", "claude-code", "memory", "ai", "plugin", "session", "knowledge"],
|
|
26
|
+
"license": "MIT",
|
|
27
|
+
"repository": {
|
|
28
|
+
"type": "git",
|
|
29
|
+
"url": "https://github.com/a2a-memory/a2a"
|
|
30
|
+
},
|
|
31
|
+
"homepage": "https://a2a-dashboard-production.up.railway.app",
|
|
32
|
+
"engines": {
|
|
33
|
+
"node": ">=18.0.0"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {
|
|
36
|
+
"better-sqlite3": "^11.0.0",
|
|
37
|
+
"commander": "^12.0.0",
|
|
38
|
+
"chalk": "^5.3.0",
|
|
39
|
+
"ora": "^8.0.0",
|
|
40
|
+
"inquirer": "^9.0.0",
|
|
41
|
+
"glob": "^10.0.0",
|
|
42
|
+
"zod": "^3.22.0"
|
|
43
|
+
},
|
|
44
|
+
"devDependencies": {
|
|
45
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
46
|
+
"@types/node": "^20.0.0",
|
|
47
|
+
"typescript": "^5.4.0",
|
|
48
|
+
"vitest": "^1.6.0",
|
|
49
|
+
"eslint": "^8.57.0",
|
|
50
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
51
|
+
"@typescript-eslint/parser": "^7.0.0"
|
|
52
|
+
}
|
|
53
|
+
}
|