claude-mem-opencode 0.0.1
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/README.md +391 -0
- package/dist/bundle/claude-mem-opencode.js +542 -0
- package/dist/bundle/index.d.ts +13 -0
- package/dist/bundle/index.d.ts.map +1 -0
- package/dist/bundle/index.js.map +1 -0
- package/dist/bundle/package.json +10 -0
- package/dist/bundle/skill/SKILL.md +118 -0
- package/dist/bundle/skill/operations/search.md +178 -0
- package/dist/bundle/skill/operations/timeline.md +269 -0
- package/dist/bundle/skill/operations/workflow.md +375 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +164 -0
- package/dist/cli.js.map +1 -0
- package/dist/integration/context-injector.d.ts +19 -0
- package/dist/integration/context-injector.d.ts.map +1 -0
- package/dist/integration/context-injector.js +47 -0
- package/dist/integration/context-injector.js.map +1 -0
- package/dist/integration/event-listeners.d.ts +41 -0
- package/dist/integration/event-listeners.d.ts.map +1 -0
- package/dist/integration/event-listeners.js +156 -0
- package/dist/integration/event-listeners.js.map +1 -0
- package/dist/integration/index.d.ts +66 -0
- package/dist/integration/index.d.ts.map +1 -0
- package/dist/integration/index.js +127 -0
- package/dist/integration/index.js.map +1 -0
- package/dist/integration/session-mapper.d.ts +39 -0
- package/dist/integration/session-mapper.d.ts.map +1 -0
- package/dist/integration/session-mapper.js +63 -0
- package/dist/integration/session-mapper.js.map +1 -0
- package/dist/integration/test.d.ts +6 -0
- package/dist/integration/test.d.ts.map +1 -0
- package/dist/integration/test.js +73 -0
- package/dist/integration/test.js.map +1 -0
- package/dist/integration/utils/logger.d.ts +15 -0
- package/dist/integration/utils/logger.d.ts.map +1 -0
- package/dist/integration/utils/logger.js +26 -0
- package/dist/integration/utils/logger.js.map +1 -0
- package/dist/integration/utils/privacy.d.ts +32 -0
- package/dist/integration/utils/privacy.d.ts.map +1 -0
- package/dist/integration/utils/privacy.js +62 -0
- package/dist/integration/utils/privacy.js.map +1 -0
- package/dist/integration/utils/project-name.d.ts +16 -0
- package/dist/integration/utils/project-name.d.ts.map +1 -0
- package/dist/integration/utils/project-name.js +28 -0
- package/dist/integration/utils/project-name.js.map +1 -0
- package/dist/integration/version-checker.d.ts +52 -0
- package/dist/integration/version-checker.d.ts.map +1 -0
- package/dist/integration/version-checker.js +121 -0
- package/dist/integration/version-checker.js.map +1 -0
- package/dist/integration/worker-client.d.ts +94 -0
- package/dist/integration/worker-client.d.ts.map +1 -0
- package/dist/integration/worker-client.js +188 -0
- package/dist/integration/worker-client.js.map +1 -0
- package/dist/test.d.ts +6 -0
- package/dist/test.d.ts.map +1 -0
- package/dist/test.js +73 -0
- package/dist/test.js.map +1 -0
- package/package.json +69 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../../src/integration/utils/privacy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmC;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyD;IAE3F;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQnC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG;IAoB5B;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKrC;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CASrE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Strip privacy tags from text and JSON
|
|
3
|
+
* Consistent with claude-mem's tag-stripping logic
|
|
4
|
+
*/
|
|
5
|
+
export class PrivacyTagStripper {
|
|
6
|
+
PRIVATE_TAG_REGEX = /<private>[\s\S]*?<\/private>/gi;
|
|
7
|
+
CONTEXT_TAG_REGEX = /<claude-mem-context>[\s\S]*?<\/claude-mem-context>/gi;
|
|
8
|
+
/**
|
|
9
|
+
* Strip privacy tags from text
|
|
10
|
+
*/
|
|
11
|
+
stripFromText(text) {
|
|
12
|
+
if (!text)
|
|
13
|
+
return text;
|
|
14
|
+
return text
|
|
15
|
+
.replace(this.PRIVATE_TAG_REGEX, '[private content removed]')
|
|
16
|
+
.replace(this.CONTEXT_TAG_REGEX, '[system context removed]');
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Strip privacy tags from JSON (recursive)
|
|
20
|
+
*/
|
|
21
|
+
stripFromJson(obj) {
|
|
22
|
+
if (typeof obj === 'string') {
|
|
23
|
+
return this.stripFromText(obj);
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(obj)) {
|
|
26
|
+
return obj.map(item => this.stripFromJson(item));
|
|
27
|
+
}
|
|
28
|
+
if (obj !== null && typeof obj === 'object') {
|
|
29
|
+
const result = {};
|
|
30
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
31
|
+
result[key] = this.stripFromJson(value);
|
|
32
|
+
}
|
|
33
|
+
return result;
|
|
34
|
+
}
|
|
35
|
+
return obj;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if text contains only private content
|
|
39
|
+
*/
|
|
40
|
+
isFullyPrivate(text) {
|
|
41
|
+
const stripped = this.stripFromText(text);
|
|
42
|
+
return stripped.trim().length === 0;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if text contains privacy tags
|
|
46
|
+
*/
|
|
47
|
+
hasPrivacyTags(text) {
|
|
48
|
+
return this.PRIVATE_TAG_REGEX.test(text) || this.CONTEXT_TAG_REGEX.test(text);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Count privacy tags in text
|
|
52
|
+
*/
|
|
53
|
+
countPrivacyTags(text) {
|
|
54
|
+
const privateMatches = text.match(this.PRIVATE_TAG_REGEX);
|
|
55
|
+
const contextMatches = text.match(this.CONTEXT_TAG_REGEX);
|
|
56
|
+
return {
|
|
57
|
+
private: privateMatches ? privateMatches.length : 0,
|
|
58
|
+
context: contextMatches ? contextMatches.length : 0
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=privacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../../src/integration/utils/privacy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,kBAAkB;IACZ,iBAAiB,GAAG,gCAAgC,CAAA;IACpD,iBAAiB,GAAG,sDAAsD,CAAA;IAE3F;;OAEG;IACH,aAAa,CAAC,IAAY;QACxB,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAA;QAEtB,OAAO,IAAI;aACR,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;aAC5D,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,0BAA0B,CAAC,CAAA;IAChE,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,GAAQ;QACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;QAChC,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAA;QAClD,CAAC;QAED,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAwB,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;YACD,OAAO,MAAM,CAAA;QACf,CAAC;QAED,OAAO,GAAG,CAAA;IACZ,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAA;IACrC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,IAAY;QACzB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/E,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,IAAY;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QACzD,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAEzD,OAAO;YACL,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACnD,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpD,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract project name from directory path
|
|
3
|
+
* Consistent with claude-mem's project name logic
|
|
4
|
+
*/
|
|
5
|
+
export declare class ProjectNameExtractor {
|
|
6
|
+
/**
|
|
7
|
+
* Extract project name from directory
|
|
8
|
+
* Uses same logic as claude-mem's getProjectName()
|
|
9
|
+
*/
|
|
10
|
+
extract(directory: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Extract project name for current directory
|
|
13
|
+
*/
|
|
14
|
+
getCurrentProject(): string;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=project-name.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name.d.ts","sourceRoot":"","sources":["../../../src/integration/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,qBAAa,oBAAoB;IAC/B;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAalC;;OAEG;IACH,iBAAiB,IAAI,MAAM;CAG5B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extract project name from directory path
|
|
3
|
+
* Consistent with claude-mem's project name logic
|
|
4
|
+
*/
|
|
5
|
+
import path from 'path';
|
|
6
|
+
export class ProjectNameExtractor {
|
|
7
|
+
/**
|
|
8
|
+
* Extract project name from directory
|
|
9
|
+
* Uses same logic as claude-mem's getProjectName()
|
|
10
|
+
*/
|
|
11
|
+
extract(directory) {
|
|
12
|
+
// Get base directory name
|
|
13
|
+
const baseName = path.basename(directory);
|
|
14
|
+
// If it's a hidden directory, use parent
|
|
15
|
+
if (baseName.startsWith('.')) {
|
|
16
|
+
const parent = path.dirname(directory);
|
|
17
|
+
return path.basename(parent);
|
|
18
|
+
}
|
|
19
|
+
return baseName;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extract project name for current directory
|
|
23
|
+
*/
|
|
24
|
+
getCurrentProject() {
|
|
25
|
+
return this.extract(process.cwd());
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=project-name.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-name.js","sourceRoot":"","sources":["../../../src/integration/utils/project-name.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,OAAO,oBAAoB;IAC/B;;;OAGG;IACH,OAAO,CAAC,SAAiB;QACvB,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;QAEzC,yCAAyC;QACzC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;YACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9B,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACpC,CAAC;CACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime claude-mem version compatibility checker
|
|
3
|
+
*/
|
|
4
|
+
export interface WorkerHealthResponse {
|
|
5
|
+
status: 'ok' | 'error';
|
|
6
|
+
version: string;
|
|
7
|
+
apiVersion: string;
|
|
8
|
+
}
|
|
9
|
+
export interface CompatibilityResult {
|
|
10
|
+
isCompatible: boolean;
|
|
11
|
+
isTested: boolean;
|
|
12
|
+
workerVersion: string;
|
|
13
|
+
apiVersion: string;
|
|
14
|
+
recommendation: string;
|
|
15
|
+
testedVersions: string[];
|
|
16
|
+
}
|
|
17
|
+
export interface CompatibilityMatrix {
|
|
18
|
+
version: string;
|
|
19
|
+
status: 'compatible' | 'incompatible' | 'unknown';
|
|
20
|
+
date: string;
|
|
21
|
+
notes?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare class VersionChecker {
|
|
24
|
+
private workerUrl;
|
|
25
|
+
private readonly COMPATIBILITY_FILE;
|
|
26
|
+
constructor(workerUrl?: string);
|
|
27
|
+
/**
|
|
28
|
+
* Check worker health and version
|
|
29
|
+
*/
|
|
30
|
+
checkWorkerHealth(): Promise<WorkerHealthResponse>;
|
|
31
|
+
/**
|
|
32
|
+
* Parse COMPATIBILITY.md to get tested versions
|
|
33
|
+
*/
|
|
34
|
+
getTestedVersions(): Promise<CompatibilityMatrix[]>;
|
|
35
|
+
/**
|
|
36
|
+
* Check if a specific version has been tested
|
|
37
|
+
*/
|
|
38
|
+
isVersionTested(version: string, testedVersions: CompatibilityMatrix[]): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Check API version compatibility
|
|
41
|
+
*/
|
|
42
|
+
isApiVersionCompatible(apiVersion: string): boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Full compatibility check
|
|
45
|
+
*/
|
|
46
|
+
checkCompatibility(): Promise<CompatibilityResult>;
|
|
47
|
+
/**
|
|
48
|
+
* Log compatibility warning if needed
|
|
49
|
+
*/
|
|
50
|
+
logCompatibilityWarning(): Promise<void>;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=version-checker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-checker.d.ts","sourceRoot":"","sources":["../../src/integration/version-checker.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAA;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,OAAO,CAAA;IACjB,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,cAAc,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,YAAY,GAAG,cAAc,GAAG,SAAS,CAAA;IACjD,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;gBAE5C,SAAS,GAAE,MAAiC;IAIxD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAUxD;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IA8BzD;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,GAAG,OAAO;IAIhF;;OAEG;IACH,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAKnD;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAmCxD;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;CAiB/C"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime claude-mem version compatibility checker
|
|
3
|
+
*/
|
|
4
|
+
export class VersionChecker {
|
|
5
|
+
workerUrl;
|
|
6
|
+
COMPATIBILITY_FILE = 'COMPATIBILITY.md';
|
|
7
|
+
constructor(workerUrl = 'http://localhost:37777') {
|
|
8
|
+
this.workerUrl = workerUrl;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Check worker health and version
|
|
12
|
+
*/
|
|
13
|
+
async checkWorkerHealth() {
|
|
14
|
+
const response = await fetch(`${this.workerUrl}/api/health`);
|
|
15
|
+
if (!response.ok) {
|
|
16
|
+
throw new Error(`Worker health check failed: ${response.status}`);
|
|
17
|
+
}
|
|
18
|
+
return await response.json();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parse COMPATIBILITY.md to get tested versions
|
|
22
|
+
*/
|
|
23
|
+
async getTestedVersions() {
|
|
24
|
+
try {
|
|
25
|
+
const fs = await import('fs/promises');
|
|
26
|
+
const path = await import('path');
|
|
27
|
+
const compatPath = path.join(process.cwd(), this.COMPATIBILITY_FILE);
|
|
28
|
+
const content = await fs.readFile(compatPath, 'utf-8');
|
|
29
|
+
const lines = content.split('\n');
|
|
30
|
+
const versions = [];
|
|
31
|
+
const sectionRegex = /- claude-mem v(\d+\.\d+\.\d+):\s*(✅|❌|⚠️)\s*(Compatible|Incompatible|Unknown)\s*\((\d{4}-\d{2}-\d{2})\)/;
|
|
32
|
+
for (const line of lines) {
|
|
33
|
+
const match = line.match(sectionRegex);
|
|
34
|
+
if (match) {
|
|
35
|
+
versions.push({
|
|
36
|
+
version: match[1],
|
|
37
|
+
status: match[2] === '✅' ? 'compatible' : match[2] === '❌' ? 'incompatible' : 'unknown',
|
|
38
|
+
date: match[4]
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return versions;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.warn('[VERSION_CHECKER] Could not read COMPATIBILITY.md');
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if a specific version has been tested
|
|
51
|
+
*/
|
|
52
|
+
isVersionTested(version, testedVersions) {
|
|
53
|
+
return testedVersions.some(v => v.version === version && v.status === 'compatible');
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check API version compatibility
|
|
57
|
+
*/
|
|
58
|
+
isApiVersionCompatible(apiVersion) {
|
|
59
|
+
const supportedVersions = ['1.0', '2.0'];
|
|
60
|
+
return supportedVersions.includes(apiVersion);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Full compatibility check
|
|
64
|
+
*/
|
|
65
|
+
async checkCompatibility() {
|
|
66
|
+
const health = await this.checkWorkerHealth();
|
|
67
|
+
const testedVersions = await this.getTestedVersions();
|
|
68
|
+
const isTested = this.isVersionTested(health.version, testedVersions);
|
|
69
|
+
const isCompatible = this.isApiVersionCompatible(health.apiVersion);
|
|
70
|
+
const testedVersionList = testedVersions
|
|
71
|
+
.filter(v => v.status === 'compatible')
|
|
72
|
+
.map(v => v.version)
|
|
73
|
+
.sort((a, b) => b.localeCompare(a, undefined, { numeric: true }));
|
|
74
|
+
let recommendation;
|
|
75
|
+
if (!isCompatible) {
|
|
76
|
+
recommendation = `❌ Incompatible API version: ${health.apiVersion}. ` +
|
|
77
|
+
`Supported: 1.0, 2.0. ` +
|
|
78
|
+
`Please update claude-mem or opencode-mem.`;
|
|
79
|
+
}
|
|
80
|
+
else if (!isTested) {
|
|
81
|
+
recommendation = `⚠️ This claude-mem version (${health.version}) has not been tested ` +
|
|
82
|
+
`with this version of opencode-mem. ` +
|
|
83
|
+
`Tested versions: ${testedVersionList.slice(0, 5).join(', ')}. ` +
|
|
84
|
+
`Proceed with caution.`;
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
recommendation = `✅ claude-mem v${health.version} is fully compatible and tested.`;
|
|
88
|
+
}
|
|
89
|
+
return {
|
|
90
|
+
isCompatible,
|
|
91
|
+
isTested,
|
|
92
|
+
workerVersion: health.version,
|
|
93
|
+
apiVersion: health.apiVersion,
|
|
94
|
+
recommendation,
|
|
95
|
+
testedVersions: testedVersionList
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Log compatibility warning if needed
|
|
100
|
+
*/
|
|
101
|
+
async logCompatibilityWarning() {
|
|
102
|
+
try {
|
|
103
|
+
const result = await this.checkCompatibility();
|
|
104
|
+
if (!result.isCompatible) {
|
|
105
|
+
console.error(result.recommendation);
|
|
106
|
+
throw new Error('Incompatible claude-mem version');
|
|
107
|
+
}
|
|
108
|
+
else if (!result.isTested) {
|
|
109
|
+
console.warn(result.recommendation);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
console.log(result.recommendation);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
console.error('[VERSION_CHECKER] Compatibility check failed:', error);
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=version-checker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version-checker.js","sourceRoot":"","sources":["../../src/integration/version-checker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for claude-mem worker API
|
|
3
|
+
* Handles all communication with worker service on localhost:37777
|
|
4
|
+
*/
|
|
5
|
+
export interface InitSessionRequest {
|
|
6
|
+
contentSessionId: string;
|
|
7
|
+
project: string;
|
|
8
|
+
prompt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface InitSessionResponse {
|
|
11
|
+
sessionDbId: number;
|
|
12
|
+
promptNumber: number;
|
|
13
|
+
skipped: boolean;
|
|
14
|
+
reason?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ObservationRequest {
|
|
17
|
+
sessionDbId: number;
|
|
18
|
+
promptNumber: number;
|
|
19
|
+
toolName: string;
|
|
20
|
+
toolInput: any;
|
|
21
|
+
toolOutput: string;
|
|
22
|
+
cwd: string;
|
|
23
|
+
timestamp: number;
|
|
24
|
+
}
|
|
25
|
+
export declare class WorkerClient {
|
|
26
|
+
private baseUrl;
|
|
27
|
+
private timeout;
|
|
28
|
+
constructor(portOrUrl?: number | string);
|
|
29
|
+
/**
|
|
30
|
+
* Get worker port
|
|
31
|
+
*/
|
|
32
|
+
getPort(): number;
|
|
33
|
+
/**
|
|
34
|
+
* Get worker URL
|
|
35
|
+
*/
|
|
36
|
+
getWorkerUrl(): string;
|
|
37
|
+
/**
|
|
38
|
+
* Check if worker is running (returns full health data)
|
|
39
|
+
*/
|
|
40
|
+
checkHealth(): Promise<any>;
|
|
41
|
+
/**
|
|
42
|
+
* Check if worker is running (boolean)
|
|
43
|
+
*/
|
|
44
|
+
healthCheck(): Promise<boolean>;
|
|
45
|
+
/**
|
|
46
|
+
* Wait for worker to be ready
|
|
47
|
+
*/
|
|
48
|
+
waitForReady(timeoutMs?: number): Promise<boolean>;
|
|
49
|
+
/**
|
|
50
|
+
* Check if worker is ready to accept requests
|
|
51
|
+
*/
|
|
52
|
+
readinessCheck(): Promise<boolean>;
|
|
53
|
+
/**
|
|
54
|
+
* Initialize a new claude-mem session
|
|
55
|
+
*/
|
|
56
|
+
initSession(request: InitSessionRequest): Promise<InitSessionResponse>;
|
|
57
|
+
/**
|
|
58
|
+
* Add an observation (tool usage) to a session
|
|
59
|
+
*/
|
|
60
|
+
addObservation(request: ObservationRequest): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Complete a session (triggers summarization)
|
|
63
|
+
*/
|
|
64
|
+
completeSession(sessionDbId: number): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Get memory context for a project
|
|
67
|
+
*/
|
|
68
|
+
getProjectContext(project: string): Promise<string>;
|
|
69
|
+
/**
|
|
70
|
+
* Search memory (basic search, returns observation IDs)
|
|
71
|
+
*/
|
|
72
|
+
search(query: string, options?: {
|
|
73
|
+
limit?: number;
|
|
74
|
+
type?: string;
|
|
75
|
+
project?: string;
|
|
76
|
+
}): Promise<any>;
|
|
77
|
+
/**
|
|
78
|
+
* Search memories (alias for search with object parameter)
|
|
79
|
+
*/
|
|
80
|
+
searchMemories(params: {
|
|
81
|
+
query: string;
|
|
82
|
+
type?: string;
|
|
83
|
+
limit?: number;
|
|
84
|
+
}): Promise<any>;
|
|
85
|
+
/**
|
|
86
|
+
* Get full observations by IDs
|
|
87
|
+
*/
|
|
88
|
+
getObservations(ids: number[]): Promise<any>;
|
|
89
|
+
/**
|
|
90
|
+
* Get timeline context around an observation
|
|
91
|
+
*/
|
|
92
|
+
getTimeline(sessionDbId: number, observationId: number, window?: number): Promise<any>;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=worker-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-client.d.ts","sourceRoot":"","sources":["../../src/integration/worker-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,gBAAgB,EAAE,MAAM,CAAA;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,GAAG,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAgB;gBAEnB,SAAS,GAAE,MAAM,GAAG,MAAc;IAQ9C;;OAEG;IACH,OAAO,IAAI,MAAM;IAKjB;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC;IAajC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAKrC;;OAEG;IACG,YAAY,CAAC,SAAS,GAAE,MAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAU/D;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAe5E;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAczD;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAazD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QACpC,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,OAAO,CAAC,EAAE,MAAM,CAAA;KACjB,GAAG,OAAO,CAAC,GAAG,CAAC;IAoBhB;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE;QAC3B,KAAK,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,MAAM,CAAA;KACf,GAAG,OAAO,CAAC,GAAG,CAAC;IAOhB;;OAEG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAelD;;OAEG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAE,MAAU,GAAG,OAAO,CAAC,GAAG,CAAC;CAchG"}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP client for claude-mem worker API
|
|
3
|
+
* Handles all communication with worker service on localhost:37777
|
|
4
|
+
*/
|
|
5
|
+
export class WorkerClient {
|
|
6
|
+
baseUrl;
|
|
7
|
+
timeout = 30000;
|
|
8
|
+
constructor(portOrUrl = 37777) {
|
|
9
|
+
if (typeof portOrUrl === 'string') {
|
|
10
|
+
this.baseUrl = portOrUrl;
|
|
11
|
+
}
|
|
12
|
+
else {
|
|
13
|
+
this.baseUrl = `http://127.0.0.1:${portOrUrl}`;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Get worker port
|
|
18
|
+
*/
|
|
19
|
+
getPort() {
|
|
20
|
+
const match = this.baseUrl.match(/:(\d+)$/);
|
|
21
|
+
return match ? parseInt(match[1]) : 37777;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get worker URL
|
|
25
|
+
*/
|
|
26
|
+
getWorkerUrl() {
|
|
27
|
+
return this.baseUrl;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if worker is running (returns full health data)
|
|
31
|
+
*/
|
|
32
|
+
async checkHealth() {
|
|
33
|
+
try {
|
|
34
|
+
const response = await fetch(`${this.baseUrl}/api/health`, {
|
|
35
|
+
signal: AbortSignal.timeout(5000)
|
|
36
|
+
});
|
|
37
|
+
const data = await response.json();
|
|
38
|
+
return data;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.log('[WORKER_CLIENT] Health check failed:', error);
|
|
42
|
+
return { status: 'error', version: 'unknown' };
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Check if worker is running (boolean)
|
|
47
|
+
*/
|
|
48
|
+
async healthCheck() {
|
|
49
|
+
const result = await this.checkHealth();
|
|
50
|
+
return result.status === 'ok' || result.status === undefined;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Wait for worker to be ready
|
|
54
|
+
*/
|
|
55
|
+
async waitForReady(timeoutMs = 30000) {
|
|
56
|
+
const start = Date.now();
|
|
57
|
+
while (Date.now() - start < timeoutMs) {
|
|
58
|
+
const ready = await this.readinessCheck();
|
|
59
|
+
if (ready)
|
|
60
|
+
return true;
|
|
61
|
+
await new Promise(resolve => setTimeout(resolve, 500));
|
|
62
|
+
}
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if worker is ready to accept requests
|
|
67
|
+
*/
|
|
68
|
+
async readinessCheck() {
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetch(`${this.baseUrl}/api/readiness`);
|
|
71
|
+
return response.ok;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Initialize a new claude-mem session
|
|
79
|
+
*/
|
|
80
|
+
async initSession(request) {
|
|
81
|
+
const response = await fetch(`${this.baseUrl}/api/sessions/init`, {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: { 'Content-Type': 'application/json' },
|
|
84
|
+
body: JSON.stringify(request),
|
|
85
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
86
|
+
});
|
|
87
|
+
if (!response.ok) {
|
|
88
|
+
throw new Error(`Session init failed: ${response.status} ${response.statusText}`);
|
|
89
|
+
}
|
|
90
|
+
return response.json();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Add an observation (tool usage) to a session
|
|
94
|
+
*/
|
|
95
|
+
async addObservation(request) {
|
|
96
|
+
const response = await fetch(`${this.baseUrl}/api/sessions/observations`, {
|
|
97
|
+
method: 'POST',
|
|
98
|
+
headers: { 'Content-Type': 'application/json' },
|
|
99
|
+
body: JSON.stringify(request),
|
|
100
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
101
|
+
});
|
|
102
|
+
if (!response.ok) {
|
|
103
|
+
throw new Error(`Observation add failed: ${response.status} ${response.statusText}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Complete a session (triggers summarization)
|
|
108
|
+
*/
|
|
109
|
+
async completeSession(sessionDbId) {
|
|
110
|
+
const response = await fetch(`${this.baseUrl}/sessions/${sessionDbId}/complete`, {
|
|
111
|
+
method: 'POST',
|
|
112
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
113
|
+
});
|
|
114
|
+
if (!response.ok) {
|
|
115
|
+
throw new Error(`Session complete failed: ${response.status} ${response.statusText}`);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get memory context for a project
|
|
120
|
+
*/
|
|
121
|
+
async getProjectContext(project) {
|
|
122
|
+
const url = `${this.baseUrl}/api/context/inject?project=${encodeURIComponent(project)}`;
|
|
123
|
+
const response = await fetch(url, {
|
|
124
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
125
|
+
});
|
|
126
|
+
if (!response.ok) {
|
|
127
|
+
throw new Error(`Context fetch failed: ${response.status} ${response.statusText}`);
|
|
128
|
+
}
|
|
129
|
+
return response.text();
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Search memory (basic search, returns observation IDs)
|
|
133
|
+
*/
|
|
134
|
+
async search(query, options) {
|
|
135
|
+
const params = new URLSearchParams({
|
|
136
|
+
q: query,
|
|
137
|
+
limit: String(options?.limit ?? 10)
|
|
138
|
+
});
|
|
139
|
+
if (options?.type)
|
|
140
|
+
params.append('type', options.type);
|
|
141
|
+
if (options?.project)
|
|
142
|
+
params.append('project', options.project);
|
|
143
|
+
const response = await fetch(`${this.baseUrl}/api/search?${params}`, {
|
|
144
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
145
|
+
});
|
|
146
|
+
if (!response.ok) {
|
|
147
|
+
throw new Error(`Search failed: ${response.status} ${response.statusText}`);
|
|
148
|
+
}
|
|
149
|
+
return response.json();
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Search memories (alias for search with object parameter)
|
|
153
|
+
*/
|
|
154
|
+
async searchMemories(params) {
|
|
155
|
+
return this.search(params.query, {
|
|
156
|
+
type: params.type,
|
|
157
|
+
limit: params.limit
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get full observations by IDs
|
|
162
|
+
*/
|
|
163
|
+
async getObservations(ids) {
|
|
164
|
+
const response = await fetch(`${this.baseUrl}/api/observations/batch`, {
|
|
165
|
+
method: 'POST',
|
|
166
|
+
headers: { 'Content-Type': 'application/json' },
|
|
167
|
+
body: JSON.stringify({ ids }),
|
|
168
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
169
|
+
});
|
|
170
|
+
if (!response.ok) {
|
|
171
|
+
throw new Error(`Get observations failed: ${response.status} ${response.statusText}`);
|
|
172
|
+
}
|
|
173
|
+
return response.json();
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Get timeline context around an observation
|
|
177
|
+
*/
|
|
178
|
+
async getTimeline(sessionDbId, observationId, window = 5) {
|
|
179
|
+
const response = await fetch(`${this.baseUrl}/api/timeline?session=${sessionDbId}&observation=${observationId}&window=${window}`, {
|
|
180
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
181
|
+
});
|
|
182
|
+
if (!response.ok) {
|
|
183
|
+
throw new Error(`Timeline fetch failed: ${response.status} ${response.statusText}`);
|
|
184
|
+
}
|
|
185
|
+
return response.json();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=worker-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/integration/worker-client.ts"],"names":[],"mappings":"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"}
|
package/dist/test.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":";AAEA;;GAEG"}
|