agentmemory-cli 1.0.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/README.md +198 -0
- package/dist/commands/delete.d.ts +7 -0
- package/dist/commands/delete.d.ts.map +1 -0
- package/dist/commands/delete.js +67 -0
- package/dist/commands/delete.js.map +1 -0
- package/dist/commands/export.d.ts +7 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +79 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/import.d.ts +6 -0
- package/dist/commands/import.d.ts.map +1 -0
- package/dist/commands/import.js +107 -0
- package/dist/commands/import.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +65 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +8 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +55 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/search.d.ts +7 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +47 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/store.d.ts +8 -0
- package/dist/commands/store.d.ts.map +1 -0
- package/dist/commands/store.js +51 -0
- package/dist/commands/store.js.map +1 -0
- package/dist/commands/sync.d.ts +9 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +90 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +14 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +98 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +13 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +123 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/sync.d.ts +43 -0
- package/dist/lib/sync.d.ts.map +1 -0
- package/dist/lib/sync.js +184 -0
- package/dist/lib/sync.js.map +1 -0
- package/dist/types.d.ts +41 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -0
- package/src/commands/delete.ts +72 -0
- package/src/commands/export.ts +46 -0
- package/src/commands/import.ts +87 -0
- package/src/commands/init.ts +71 -0
- package/src/commands/list.ts +61 -0
- package/src/commands/search.ts +52 -0
- package/src/commands/store.ts +58 -0
- package/src/commands/sync.ts +102 -0
- package/src/index.ts +114 -0
- package/src/lib/api.ts +139 -0
- package/src/lib/config.ts +95 -0
- package/src/lib/sync.ts +186 -0
- package/src/types.ts +47 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CAuCf"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.searchCommand = searchCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const api_js_1 = require("../lib/api.js");
|
|
9
|
+
const config_js_1 = require("../lib/config.js");
|
|
10
|
+
async function searchCommand(query, options) {
|
|
11
|
+
if (!(0, config_js_1.isConfigured)()) {
|
|
12
|
+
console.log(chalk_1.default.red('❌ Not configured. Run "agentmemory init" first.'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const limit = options.limit ? parseInt(options.limit, 10) : 10;
|
|
17
|
+
const memories = await (0, api_js_1.searchMemories)(query, limit);
|
|
18
|
+
if (options.json) {
|
|
19
|
+
console.log(JSON.stringify(memories, null, 2));
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (memories.length === 0) {
|
|
23
|
+
console.log(chalk_1.default.yellow('No memories found matching your query.'));
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
console.log(chalk_1.default.cyan(`\n🔍 Found ${memories.length} memories:\n`));
|
|
27
|
+
for (const memory of memories) {
|
|
28
|
+
const similarity = (memory.similarity * 100).toFixed(1);
|
|
29
|
+
console.log(chalk_1.default.green(`[${similarity}%] `) + chalk_1.default.white(memory.content));
|
|
30
|
+
console.log(chalk_1.default.dim(` ID: ${memory.id}`));
|
|
31
|
+
if (memory.metadata && Object.keys(memory.metadata).length > 0) {
|
|
32
|
+
console.log(chalk_1.default.dim(` Metadata: ${JSON.stringify(memory.metadata)}`));
|
|
33
|
+
}
|
|
34
|
+
console.log();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
if (error instanceof Error) {
|
|
39
|
+
console.log(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
console.log(chalk_1.default.red('❌ Unknown error occurred'));
|
|
43
|
+
}
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":";;;;;AASA,sCA0CC;AAnDD,kDAA0B;AAC1B,0CAA+C;AAC/C,gDAAgD;AAOzC,KAAK,UAAU,aAAa,CACjC,KAAa,EACb,OAAsB;IAEtB,IAAI,CAAC,IAAA,wBAAY,GAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAA,uBAAc,EAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEpD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACpE,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,cAAc,QAAQ,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC;QAErE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,GAAG,eAAK,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/commands/store.ts"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,IAAI,CAAC,CA4Cf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.storeCommand = storeCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const api_js_1 = require("../lib/api.js");
|
|
9
|
+
const config_js_1 = require("../lib/config.js");
|
|
10
|
+
async function storeCommand(content, options) {
|
|
11
|
+
if (!(0, config_js_1.isConfigured)()) {
|
|
12
|
+
console.log(chalk_1.default.red('❌ Not configured. Run "agentmemory init" first.'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
// Build metadata
|
|
17
|
+
let metadata = {};
|
|
18
|
+
if (options.category) {
|
|
19
|
+
metadata.category = options.category;
|
|
20
|
+
}
|
|
21
|
+
if (options.metadata) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = JSON.parse(options.metadata);
|
|
24
|
+
metadata = { ...metadata, ...parsed };
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
console.log(chalk_1.default.red('❌ Invalid metadata JSON format'));
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const memory = await (0, api_js_1.storeMemory)(content, Object.keys(metadata).length > 0 ? metadata : undefined);
|
|
32
|
+
if (options.json) {
|
|
33
|
+
console.log(JSON.stringify(memory, null, 2));
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
console.log(chalk_1.default.green('✅ Memory stored successfully!'));
|
|
37
|
+
console.log(chalk_1.default.dim(` ID: ${memory.id}`));
|
|
38
|
+
console.log(chalk_1.default.dim(` Created: ${memory.created_at}`));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
catch (error) {
|
|
42
|
+
if (error instanceof Error) {
|
|
43
|
+
console.log(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
console.log(chalk_1.default.red('❌ Unknown error occurred'));
|
|
47
|
+
}
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/commands/store.ts"],"names":[],"mappings":";;;;;AAUA,oCA+CC;AAzDD,kDAA0B;AAC1B,0CAA4C;AAC5C,gDAAgD;AAQzC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,OAAqB;IAErB,IAAI,CAAC,IAAA,wBAAY,GAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB;QACjB,IAAI,QAAQ,GAA4B,EAAE,CAAC;QAE3C,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,QAAQ,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC5C,QAAQ,GAAG,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;gBACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAW,EAC9B,OAAO,EACP,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CACxD,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0FrE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.syncCommand = syncCommand;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const config_js_1 = require("../lib/config.js");
|
|
9
|
+
const sync_js_1 = require("../lib/sync.js");
|
|
10
|
+
async function syncCommand(options) {
|
|
11
|
+
if (!(0, config_js_1.isConfigured)()) {
|
|
12
|
+
console.log(chalk_1.default.red('❌ Not configured. Run "agentmemory init" first.'));
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const memoryFile = (0, config_js_1.getMemoryFilePath)();
|
|
16
|
+
try {
|
|
17
|
+
// Status only mode
|
|
18
|
+
if (options.status) {
|
|
19
|
+
console.log(chalk_1.default.dim('Checking sync status...'));
|
|
20
|
+
const status = await (0, sync_js_1.getSyncStatus)();
|
|
21
|
+
if (options.json) {
|
|
22
|
+
console.log(JSON.stringify(status, null, 2));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
console.log(chalk_1.default.cyan('\n📊 Sync Status:\n'));
|
|
26
|
+
console.log(` Memory file: ${memoryFile}`);
|
|
27
|
+
console.log(` Synced: ${chalk_1.default.green(status.synced)}`);
|
|
28
|
+
console.log(` Local only: ${chalk_1.default.yellow(status.localOnly.length)}`);
|
|
29
|
+
console.log(` Cloud only: ${chalk_1.default.blue(status.cloudOnly.length)}`);
|
|
30
|
+
if (status.localOnly.length > 0) {
|
|
31
|
+
console.log(chalk_1.default.yellow('\n Local memories not in cloud:'));
|
|
32
|
+
for (const m of status.localOnly.slice(0, 5)) {
|
|
33
|
+
const preview = m.content.substring(0, 50);
|
|
34
|
+
console.log(chalk_1.default.dim(` • ${preview}...`));
|
|
35
|
+
}
|
|
36
|
+
if (status.localOnly.length > 5) {
|
|
37
|
+
console.log(chalk_1.default.dim(` ... and ${status.localOnly.length - 5} more`));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
if (status.cloudOnly.length > 0) {
|
|
41
|
+
console.log(chalk_1.default.blue('\n Cloud memories not in local file:'));
|
|
42
|
+
for (const m of status.cloudOnly.slice(0, 5)) {
|
|
43
|
+
const preview = m.content.substring(0, 50);
|
|
44
|
+
console.log(chalk_1.default.dim(` • ${preview}...`));
|
|
45
|
+
}
|
|
46
|
+
if (status.cloudOnly.length > 5) {
|
|
47
|
+
console.log(chalk_1.default.dim(` ... and ${status.cloudOnly.length - 5} more`));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
console.log();
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Determine sync direction
|
|
54
|
+
let direction = 'both';
|
|
55
|
+
if (options.push && !options.pull) {
|
|
56
|
+
direction = 'push';
|
|
57
|
+
}
|
|
58
|
+
else if (options.pull && !options.push) {
|
|
59
|
+
direction = 'pull';
|
|
60
|
+
}
|
|
61
|
+
console.log(chalk_1.default.dim(`Syncing memories (${direction})...`));
|
|
62
|
+
console.log(chalk_1.default.dim(`Memory file: ${memoryFile}\n`));
|
|
63
|
+
const result = await (0, sync_js_1.syncMemories)(direction);
|
|
64
|
+
if (options.json) {
|
|
65
|
+
console.log(JSON.stringify(result, null, 2));
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
console.log(chalk_1.default.green('✅ Sync complete!\n'));
|
|
69
|
+
console.log(` 📤 Uploaded: ${chalk_1.default.green(result.uploaded)}`);
|
|
70
|
+
console.log(` 📥 Downloaded: ${chalk_1.default.blue(result.downloaded)}`);
|
|
71
|
+
console.log(` ⏭️ Unchanged: ${chalk_1.default.dim(result.unchanged)}`);
|
|
72
|
+
if (result.errors.length > 0) {
|
|
73
|
+
console.log(chalk_1.default.red(`\n ❌ Errors: ${result.errors.length}`));
|
|
74
|
+
for (const error of result.errors) {
|
|
75
|
+
console.log(chalk_1.default.red(` • ${error}`));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
console.log();
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
if (error instanceof Error) {
|
|
82
|
+
console.log(chalk_1.default.red(`❌ Error: ${error.message}`));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
console.log(chalk_1.default.red('❌ Unknown error occurred'));
|
|
86
|
+
}
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const commander_1 = require("commander");
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const init_js_1 = require("./commands/init.js");
|
|
10
|
+
const store_js_1 = require("./commands/store.js");
|
|
11
|
+
const search_js_1 = require("./commands/search.js");
|
|
12
|
+
const list_js_1 = require("./commands/list.js");
|
|
13
|
+
const delete_js_1 = require("./commands/delete.js");
|
|
14
|
+
const sync_js_1 = require("./commands/sync.js");
|
|
15
|
+
const export_js_1 = require("./commands/export.js");
|
|
16
|
+
const import_js_1 = require("./commands/import.js");
|
|
17
|
+
const program = new commander_1.Command();
|
|
18
|
+
program
|
|
19
|
+
.name('agentmemory')
|
|
20
|
+
.description('CLI tool for AgentMemory - persistent cloud memory for AI agents')
|
|
21
|
+
.version('1.0.0');
|
|
22
|
+
// Init command
|
|
23
|
+
program
|
|
24
|
+
.command('init')
|
|
25
|
+
.description('Initialize AgentMemory CLI with your API key')
|
|
26
|
+
.action(init_js_1.initCommand);
|
|
27
|
+
// Store command
|
|
28
|
+
program
|
|
29
|
+
.command('store <content>')
|
|
30
|
+
.description('Store a new memory')
|
|
31
|
+
.option('-c, --category <category>', 'Category for the memory')
|
|
32
|
+
.option('-m, --metadata <json>', 'Additional metadata as JSON')
|
|
33
|
+
.option('--json', 'Output as JSON')
|
|
34
|
+
.action(store_js_1.storeCommand);
|
|
35
|
+
// Search command
|
|
36
|
+
program
|
|
37
|
+
.command('search <query>')
|
|
38
|
+
.description('Search memories semantically')
|
|
39
|
+
.option('-l, --limit <number>', 'Maximum number of results', '10')
|
|
40
|
+
.option('--json', 'Output as JSON')
|
|
41
|
+
.action(search_js_1.searchCommand);
|
|
42
|
+
// List command
|
|
43
|
+
program
|
|
44
|
+
.command('list')
|
|
45
|
+
.description('List all memories')
|
|
46
|
+
.option('-l, --limit <number>', 'Maximum number of results', '50')
|
|
47
|
+
.option('-o, --offset <number>', 'Offset for pagination', '0')
|
|
48
|
+
.option('--json', 'Output as JSON')
|
|
49
|
+
.action(list_js_1.listCommand);
|
|
50
|
+
// Delete command
|
|
51
|
+
program
|
|
52
|
+
.command('delete <id>')
|
|
53
|
+
.description('Delete a memory by ID')
|
|
54
|
+
.option('-f, --force', 'Skip confirmation')
|
|
55
|
+
.option('--json', 'Output as JSON')
|
|
56
|
+
.action(delete_js_1.deleteCommand);
|
|
57
|
+
// Sync command
|
|
58
|
+
program
|
|
59
|
+
.command('sync')
|
|
60
|
+
.description('Sync memories with local MEMORY.md file')
|
|
61
|
+
.option('--push', 'Only push local to cloud')
|
|
62
|
+
.option('--pull', 'Only pull cloud to local')
|
|
63
|
+
.option('--status', 'Show sync status without making changes')
|
|
64
|
+
.option('--json', 'Output as JSON')
|
|
65
|
+
.action(sync_js_1.syncCommand);
|
|
66
|
+
// Export command
|
|
67
|
+
program
|
|
68
|
+
.command('export')
|
|
69
|
+
.description('Export all memories as JSON')
|
|
70
|
+
.option('-o, --output <file>', 'Output file path')
|
|
71
|
+
.option('-p, --pretty', 'Pretty print JSON')
|
|
72
|
+
.action(export_js_1.exportCommand);
|
|
73
|
+
// Import command
|
|
74
|
+
program
|
|
75
|
+
.command('import <file>')
|
|
76
|
+
.description('Import memories from JSON file')
|
|
77
|
+
.option('--json', 'Output as JSON')
|
|
78
|
+
.action(import_js_1.importCommand);
|
|
79
|
+
// Custom help
|
|
80
|
+
program.addHelpText('after', `
|
|
81
|
+
${chalk_1.default.cyan('Examples:')}
|
|
82
|
+
$ agentmemory init # Setup with your API key
|
|
83
|
+
$ agentmemory store "User prefers dark mode"
|
|
84
|
+
$ agentmemory search "user preferences"
|
|
85
|
+
$ agentmemory list --limit 10
|
|
86
|
+
$ agentmemory sync # Sync with MEMORY.md
|
|
87
|
+
$ agentmemory export > backup.json
|
|
88
|
+
|
|
89
|
+
${chalk_1.default.cyan('Documentation:')}
|
|
90
|
+
https://agentmemory.cloud/docs
|
|
91
|
+
|
|
92
|
+
${chalk_1.default.cyan('Get your API key:')}
|
|
93
|
+
https://agentmemory.cloud/dashboard
|
|
94
|
+
`);
|
|
95
|
+
// Parse arguments
|
|
96
|
+
program.parse();
|
|
97
|
+
// Show help if no command provided
|
|
98
|
+
if (!process.argv.slice(2).length) {
|
|
99
|
+
console.log(chalk_1.default.cyan(`
|
|
100
|
+
🧠 AgentMemory CLI v1.0.0
|
|
101
|
+
|
|
102
|
+
Persistent cloud memory for AI agents.
|
|
103
|
+
`));
|
|
104
|
+
program.outputHelp();
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Memory, MemoriesListResponse, MemorySearchResult } from '../types.js';
|
|
2
|
+
declare class ApiError extends Error {
|
|
3
|
+
statusCode: number;
|
|
4
|
+
constructor(statusCode: number, message: string);
|
|
5
|
+
}
|
|
6
|
+
export declare function storeMemory(content: string, metadata?: Record<string, unknown>): Promise<Memory>;
|
|
7
|
+
export declare function searchMemories(query: string, limit?: number): Promise<MemorySearchResult[]>;
|
|
8
|
+
export declare function listMemories(limit?: number, offset?: number): Promise<MemoriesListResponse>;
|
|
9
|
+
export declare function getMemory(id: string): Promise<Memory>;
|
|
10
|
+
export declare function updateMemory(id: string, content: string, metadata?: Record<string, unknown>): Promise<Memory>;
|
|
11
|
+
export declare function deleteMemory(id: string): Promise<void>;
|
|
12
|
+
export declare function getAllMemories(): Promise<Memory[]>;
|
|
13
|
+
export { ApiError };
|
|
14
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,MAAM,EACN,oBAAoB,EAGpB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,cAAM,QAAS,SAAQ,KAAK;IACP,UAAU,EAAE,MAAM;gBAAlB,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIvD;AAoCD,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAO/B;AAED,wBAAsB,YAAY,CAChC,KAAK,GAAE,MAAW,EAClB,MAAM,GAAE,MAAU,GACjB,OAAO,CAAC,oBAAoB,CAAC,CAM/B;AAED,wBAAsB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3D;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED,wBAAsB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAiBxD;AAED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
|
package/dist/lib/api.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApiError = void 0;
|
|
4
|
+
exports.storeMemory = storeMemory;
|
|
5
|
+
exports.searchMemories = searchMemories;
|
|
6
|
+
exports.listMemories = listMemories;
|
|
7
|
+
exports.getMemory = getMemory;
|
|
8
|
+
exports.updateMemory = updateMemory;
|
|
9
|
+
exports.deleteMemory = deleteMemory;
|
|
10
|
+
exports.getAllMemories = getAllMemories;
|
|
11
|
+
const config_js_1 = require("./config.js");
|
|
12
|
+
class ApiError extends Error {
|
|
13
|
+
statusCode;
|
|
14
|
+
constructor(statusCode, message) {
|
|
15
|
+
super(message);
|
|
16
|
+
this.statusCode = statusCode;
|
|
17
|
+
this.name = 'ApiError';
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.ApiError = ApiError;
|
|
21
|
+
async function request(endpoint, options = {}) {
|
|
22
|
+
const apiKey = (0, config_js_1.getApiKey)();
|
|
23
|
+
const apiUrl = (0, config_js_1.getApiUrl)();
|
|
24
|
+
if (!apiKey) {
|
|
25
|
+
throw new Error('API key not configured. Run "agentmemory init" first.');
|
|
26
|
+
}
|
|
27
|
+
const url = `${apiUrl}${endpoint}`;
|
|
28
|
+
const response = await fetch(url, {
|
|
29
|
+
...options,
|
|
30
|
+
headers: {
|
|
31
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
32
|
+
'Content-Type': 'application/json',
|
|
33
|
+
...options.headers,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
const data = await response.json();
|
|
37
|
+
if (!response.ok) {
|
|
38
|
+
throw new ApiError(response.status, data.error || `Request failed with status ${response.status}`);
|
|
39
|
+
}
|
|
40
|
+
return data;
|
|
41
|
+
}
|
|
42
|
+
async function storeMemory(content, metadata) {
|
|
43
|
+
const body = { content };
|
|
44
|
+
if (metadata) {
|
|
45
|
+
body.metadata = metadata;
|
|
46
|
+
}
|
|
47
|
+
const response = await request('/memories', {
|
|
48
|
+
method: 'POST',
|
|
49
|
+
body: JSON.stringify(body),
|
|
50
|
+
});
|
|
51
|
+
return response.memory;
|
|
52
|
+
}
|
|
53
|
+
async function searchMemories(query, limit = 10) {
|
|
54
|
+
const response = await request('/memories/search', {
|
|
55
|
+
method: 'POST',
|
|
56
|
+
body: JSON.stringify({ query, limit }),
|
|
57
|
+
});
|
|
58
|
+
return response.memories;
|
|
59
|
+
}
|
|
60
|
+
async function listMemories(limit = 50, offset = 0) {
|
|
61
|
+
const response = await request(`/memories?limit=${limit}&offset=${offset}`);
|
|
62
|
+
return response;
|
|
63
|
+
}
|
|
64
|
+
async function getMemory(id) {
|
|
65
|
+
const response = await request(`/memories/${id}`);
|
|
66
|
+
return response.memory;
|
|
67
|
+
}
|
|
68
|
+
async function updateMemory(id, content, metadata) {
|
|
69
|
+
const body = { content };
|
|
70
|
+
if (metadata) {
|
|
71
|
+
body.metadata = metadata;
|
|
72
|
+
}
|
|
73
|
+
const response = await request(`/memories/${id}`, {
|
|
74
|
+
method: 'PUT',
|
|
75
|
+
body: JSON.stringify(body),
|
|
76
|
+
});
|
|
77
|
+
return response.memory;
|
|
78
|
+
}
|
|
79
|
+
async function deleteMemory(id) {
|
|
80
|
+
await request(`/memories/${id}`, {
|
|
81
|
+
method: 'DELETE',
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
async function getAllMemories() {
|
|
85
|
+
const allMemories = [];
|
|
86
|
+
let offset = 0;
|
|
87
|
+
const limit = 100;
|
|
88
|
+
while (true) {
|
|
89
|
+
const response = await listMemories(limit, offset);
|
|
90
|
+
allMemories.push(...response.memories);
|
|
91
|
+
if (response.memories.length < limit) {
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
offset += limit;
|
|
95
|
+
}
|
|
96
|
+
return allMemories;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Config } from '../types.js';
|
|
2
|
+
export declare function getConfigDir(): string;
|
|
3
|
+
export declare function getConfigPath(): string;
|
|
4
|
+
export declare function ensureConfigDir(): void;
|
|
5
|
+
export declare function configExists(): boolean;
|
|
6
|
+
export declare function loadConfig(): Config;
|
|
7
|
+
export declare function saveConfig(config: Partial<Config>): void;
|
|
8
|
+
export declare function getApiKey(): string;
|
|
9
|
+
export declare function getApiUrl(): string;
|
|
10
|
+
export declare function getMemoryFilePath(): string;
|
|
11
|
+
export declare function isConfigured(): boolean;
|
|
12
|
+
export declare function clearConfig(): void;
|
|
13
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAW1C,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAenC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,CAOxD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAUlC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAQlC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED,wBAAgB,YAAY,IAAI,OAAO,CAGtC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAIlC"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.getConfigDir = getConfigDir;
|
|
37
|
+
exports.getConfigPath = getConfigPath;
|
|
38
|
+
exports.ensureConfigDir = ensureConfigDir;
|
|
39
|
+
exports.configExists = configExists;
|
|
40
|
+
exports.loadConfig = loadConfig;
|
|
41
|
+
exports.saveConfig = saveConfig;
|
|
42
|
+
exports.getApiKey = getApiKey;
|
|
43
|
+
exports.getApiUrl = getApiUrl;
|
|
44
|
+
exports.getMemoryFilePath = getMemoryFilePath;
|
|
45
|
+
exports.isConfigured = isConfigured;
|
|
46
|
+
exports.clearConfig = clearConfig;
|
|
47
|
+
const fs = __importStar(require("fs"));
|
|
48
|
+
const path = __importStar(require("path"));
|
|
49
|
+
const os = __importStar(require("os"));
|
|
50
|
+
const CONFIG_DIR = path.join(os.homedir(), '.agentmemory');
|
|
51
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
|
|
52
|
+
const DEFAULT_CONFIG = {
|
|
53
|
+
api_key: '',
|
|
54
|
+
api_url: 'https://agentmemory.cloud/api',
|
|
55
|
+
memory_file: './MEMORY.md'
|
|
56
|
+
};
|
|
57
|
+
function getConfigDir() {
|
|
58
|
+
return CONFIG_DIR;
|
|
59
|
+
}
|
|
60
|
+
function getConfigPath() {
|
|
61
|
+
return CONFIG_FILE;
|
|
62
|
+
}
|
|
63
|
+
function ensureConfigDir() {
|
|
64
|
+
if (!fs.existsSync(CONFIG_DIR)) {
|
|
65
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function configExists() {
|
|
69
|
+
return fs.existsSync(CONFIG_FILE);
|
|
70
|
+
}
|
|
71
|
+
function loadConfig() {
|
|
72
|
+
ensureConfigDir();
|
|
73
|
+
if (!fs.existsSync(CONFIG_FILE)) {
|
|
74
|
+
return { ...DEFAULT_CONFIG };
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const content = fs.readFileSync(CONFIG_FILE, 'utf-8');
|
|
78
|
+
const config = JSON.parse(content);
|
|
79
|
+
return { ...DEFAULT_CONFIG, ...config };
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
console.error('Error reading config file:', error);
|
|
83
|
+
return { ...DEFAULT_CONFIG };
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
function saveConfig(config) {
|
|
87
|
+
ensureConfigDir();
|
|
88
|
+
const existingConfig = loadConfig();
|
|
89
|
+
const newConfig = { ...existingConfig, ...config };
|
|
90
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(newConfig, null, 2));
|
|
91
|
+
}
|
|
92
|
+
function getApiKey() {
|
|
93
|
+
// Check environment variable first
|
|
94
|
+
const envKey = process.env.AGENTMEMORY_API_KEY;
|
|
95
|
+
if (envKey) {
|
|
96
|
+
return envKey;
|
|
97
|
+
}
|
|
98
|
+
// Fall back to config file
|
|
99
|
+
const config = loadConfig();
|
|
100
|
+
return config.api_key;
|
|
101
|
+
}
|
|
102
|
+
function getApiUrl() {
|
|
103
|
+
const envUrl = process.env.AGENTMEMORY_API_URL;
|
|
104
|
+
if (envUrl) {
|
|
105
|
+
return envUrl;
|
|
106
|
+
}
|
|
107
|
+
const config = loadConfig();
|
|
108
|
+
return config.api_url;
|
|
109
|
+
}
|
|
110
|
+
function getMemoryFilePath() {
|
|
111
|
+
const config = loadConfig();
|
|
112
|
+
return config.memory_file;
|
|
113
|
+
}
|
|
114
|
+
function isConfigured() {
|
|
115
|
+
const apiKey = getApiKey();
|
|
116
|
+
return apiKey.length > 0 && apiKey.startsWith('am_');
|
|
117
|
+
}
|
|
118
|
+
function clearConfig() {
|
|
119
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
120
|
+
fs.unlinkSync(CONFIG_FILE);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|