@memextend/webui 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/dist/api/config.d.ts +2 -0
- package/dist/api/config.d.ts.map +1 -0
- package/dist/api/config.js +106 -0
- package/dist/api/config.js.map +1 -0
- package/dist/api/memories.d.ts +2 -0
- package/dist/api/memories.d.ts.map +1 -0
- package/dist/api/memories.js +213 -0
- package/dist/api/memories.js.map +1 -0
- package/dist/api/projects.d.ts +2 -0
- package/dist/api/projects.d.ts.map +1 -0
- package/dist/api/projects.js +136 -0
- package/dist/api/projects.js.map +1 -0
- package/dist/api/search.d.ts +2 -0
- package/dist/api/search.d.ts.map +1 -0
- package/dist/api/search.js +97 -0
- package/dist/api/search.js.map +1 -0
- package/dist/api/stats.d.ts +2 -0
- package/dist/api/stats.d.ts.map +1 -0
- package/dist/api/stats.js +183 -0
- package/dist/api/stats.js.map +1 -0
- package/dist/public/app.js +953 -0
- package/dist/public/index.html +551 -0
- package/dist/public/styles.css +1436 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +84 -0
- package/dist/server.js.map +1 -0
- package/package.json +47 -0
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface ServerConfig {
|
|
2
|
+
port: number;
|
|
3
|
+
host: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function createServer(config?: ServerConfig): Promise<import("express-serve-static-core").Express>;
|
|
6
|
+
export declare function startServer(config?: ServerConfig): Promise<void>;
|
|
7
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAuBA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,YAAY,CAAC,MAAM,GAAE,YAAgD,wDAqD1F;AAED,wBAAsB,WAAW,CAAC,MAAM,GAAE,YAAgD,iBAWzF"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// apps/webui/src/server.ts
|
|
2
|
+
// Copyright (c) 2026 ZodTTD LLC. MIT License.
|
|
3
|
+
import express from 'express';
|
|
4
|
+
import { join, dirname } from 'path';
|
|
5
|
+
import { fileURLToPath } from 'url';
|
|
6
|
+
import { homedir } from 'os';
|
|
7
|
+
import { existsSync } from 'fs';
|
|
8
|
+
import { memoriesRouter } from './api/memories.js';
|
|
9
|
+
import { projectsRouter } from './api/projects.js';
|
|
10
|
+
import { searchRouter } from './api/search.js';
|
|
11
|
+
import { statsRouter } from './api/stats.js';
|
|
12
|
+
import { configRouter } from './api/config.js';
|
|
13
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
14
|
+
const __dirname = dirname(__filename);
|
|
15
|
+
// Configuration
|
|
16
|
+
const MEMEXTEND_DIR = join(homedir(), '.memextend');
|
|
17
|
+
const DB_PATH = join(MEMEXTEND_DIR, 'memextend.db');
|
|
18
|
+
const VECTORS_PATH = join(MEMEXTEND_DIR, 'vectors');
|
|
19
|
+
const MODELS_PATH = join(MEMEXTEND_DIR, 'models');
|
|
20
|
+
export async function createServer(config = { port: 3333, host: 'localhost' }) {
|
|
21
|
+
const app = express();
|
|
22
|
+
// Middleware
|
|
23
|
+
app.use(express.json());
|
|
24
|
+
// CORS for local development
|
|
25
|
+
app.use((req, res, next) => {
|
|
26
|
+
res.header('Access-Control-Allow-Origin', '*');
|
|
27
|
+
res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
|
|
28
|
+
res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
|
|
29
|
+
if (req.method === 'OPTIONS') {
|
|
30
|
+
res.sendStatus(200);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
next();
|
|
34
|
+
});
|
|
35
|
+
// Check if memextend is initialized
|
|
36
|
+
if (!existsSync(DB_PATH)) {
|
|
37
|
+
console.error('Error: memextend not initialized. Run `memextend init` first.');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Store paths in app locals for routes to access
|
|
41
|
+
app.locals.dbPath = DB_PATH;
|
|
42
|
+
app.locals.vectorsPath = VECTORS_PATH;
|
|
43
|
+
app.locals.modelsPath = MODELS_PATH;
|
|
44
|
+
app.locals.memextendDir = MEMEXTEND_DIR;
|
|
45
|
+
// API routes
|
|
46
|
+
app.use('/api/memories', memoriesRouter);
|
|
47
|
+
app.use('/api/projects', projectsRouter);
|
|
48
|
+
app.use('/api/search', searchRouter);
|
|
49
|
+
app.use('/api/stats', statsRouter);
|
|
50
|
+
app.use('/api/config', configRouter);
|
|
51
|
+
// Serve static files
|
|
52
|
+
const publicDir = join(__dirname, 'public');
|
|
53
|
+
app.use(express.static(publicDir));
|
|
54
|
+
// SPA fallback - serve index.html for all other routes
|
|
55
|
+
app.get('*', (req, res) => {
|
|
56
|
+
res.sendFile(join(publicDir, 'index.html'));
|
|
57
|
+
});
|
|
58
|
+
// Error handler
|
|
59
|
+
app.use((err, req, res, next) => {
|
|
60
|
+
console.error('Server error:', err);
|
|
61
|
+
res.status(500).json({ error: err.message });
|
|
62
|
+
});
|
|
63
|
+
return app;
|
|
64
|
+
}
|
|
65
|
+
export async function startServer(config = { port: 3333, host: 'localhost' }) {
|
|
66
|
+
const app = await createServer(config);
|
|
67
|
+
return new Promise((resolve) => {
|
|
68
|
+
app.listen(config.port, config.host, () => {
|
|
69
|
+
console.log(`\n memextend Web UI\n`);
|
|
70
|
+
console.log(` Server running at http://${config.host}:${config.port}`);
|
|
71
|
+
console.log(` Press Ctrl+C to stop\n`);
|
|
72
|
+
resolve();
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Run if executed directly
|
|
77
|
+
const isMainModule = process.argv[1] && (process.argv[1].endsWith('server.js') ||
|
|
78
|
+
process.argv[1].endsWith('server.ts'));
|
|
79
|
+
if (isMainModule) {
|
|
80
|
+
const port = parseInt(process.env.PORT || '3333', 10);
|
|
81
|
+
const host = process.env.HOST || 'localhost';
|
|
82
|
+
startServer({ port, host }).catch(console.error);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@memextend/webui",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Web UI for memextend - view and manage your AI memory",
|
|
5
|
+
"author": "ZodTTD LLC <repo@zodttd.com>",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "dist/server.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build": "tsc && cp -r src/public dist/",
|
|
11
|
+
"start": "node dist/server.js",
|
|
12
|
+
"dev": "tsc && cp -r src/public dist/ && node dist/server.js"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"@memextend/core": "^0.1.0",
|
|
16
|
+
"express": "^4.18.2"
|
|
17
|
+
},
|
|
18
|
+
"devDependencies": {
|
|
19
|
+
"@types/express": "^4.17.21"
|
|
20
|
+
},
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "https://github.com/zodttd/memextend.git",
|
|
24
|
+
"directory": "apps/webui"
|
|
25
|
+
},
|
|
26
|
+
"bugs": {
|
|
27
|
+
"url": "https://github.com/zodttd/memextend/issues"
|
|
28
|
+
},
|
|
29
|
+
"homepage": "https://github.com/zodttd/memextend#readme",
|
|
30
|
+
"keywords": [
|
|
31
|
+
"memextend",
|
|
32
|
+
"webui",
|
|
33
|
+
"ai-memory",
|
|
34
|
+
"dashboard",
|
|
35
|
+
"memory-management"
|
|
36
|
+
],
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"README.md"
|
|
40
|
+
],
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=18.0.0"
|
|
43
|
+
},
|
|
44
|
+
"publishConfig": {
|
|
45
|
+
"access": "public"
|
|
46
|
+
}
|
|
47
|
+
}
|