@opencoop/opencode-plugin 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/LICENSE +178 -0
- package/README.fa.md +221 -0
- package/README.md +245 -0
- package/dist/auth/auth-manager.d.ts +45 -0
- package/dist/auth/auth-manager.js +157 -0
- package/dist/auth/auth-manager.js.map +1 -0
- package/dist/auth/session-manager.d.ts +14 -0
- package/dist/auth/session-manager.js +50 -0
- package/dist/auth/session-manager.js.map +1 -0
- package/dist/filesystem/change-tracker.d.ts +18 -0
- package/dist/filesystem/change-tracker.js +96 -0
- package/dist/filesystem/change-tracker.js.map +1 -0
- package/dist/filesystem/file-manager.d.ts +39 -0
- package/dist/filesystem/file-manager.js +189 -0
- package/dist/filesystem/file-manager.js.map +1 -0
- package/dist/filesystem/lock-manager.d.ts +15 -0
- package/dist/filesystem/lock-manager.js +120 -0
- package/dist/filesystem/lock-manager.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/server/mcp-server.d.ts +20 -0
- package/dist/server/mcp-server.js +392 -0
- package/dist/server/mcp-server.js.map +1 -0
- package/dist/types/index.d.ts +80 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +3 -0
- package/dist/utils/config.js +38 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/database.d.ts +12 -0
- package/dist/utils/database.js +110 -0
- package/dist/utils/database.js.map +1 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +11 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/web/public/assets/app.js +446 -0
- package/dist/web/public/assets/style.css +639 -0
- package/dist/web/public/index.html +190 -0
- package/dist/web/public/invite.html +132 -0
- package/dist/web/server.d.ts +3 -0
- package/dist/web/server.js +150 -0
- package/dist/web/server.js.map +1 -0
- package/package.json +47 -0
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
export interface ServerConfig {
|
|
2
|
+
port: number;
|
|
3
|
+
workspacePath: string;
|
|
4
|
+
jwtSecret: string;
|
|
5
|
+
databasePath: string;
|
|
6
|
+
mode: "host" | "remote";
|
|
7
|
+
hostUrl?: string;
|
|
8
|
+
inviteToken?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface FileMetadata {
|
|
11
|
+
name: string;
|
|
12
|
+
path: string;
|
|
13
|
+
type: "file" | "directory";
|
|
14
|
+
size: number;
|
|
15
|
+
modifiedAt: Date;
|
|
16
|
+
createdAt: Date;
|
|
17
|
+
}
|
|
18
|
+
export interface LockInfo {
|
|
19
|
+
id: string;
|
|
20
|
+
filePath: string;
|
|
21
|
+
userId: string;
|
|
22
|
+
userName: string;
|
|
23
|
+
reason: string;
|
|
24
|
+
acquiredAt: Date;
|
|
25
|
+
expiresAt: Date;
|
|
26
|
+
}
|
|
27
|
+
export interface AcquireLockParams {
|
|
28
|
+
workspaceId: string;
|
|
29
|
+
filePath: string;
|
|
30
|
+
userId: string;
|
|
31
|
+
sessionId: string;
|
|
32
|
+
reason?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface ChangeLogEntry {
|
|
35
|
+
id: string;
|
|
36
|
+
workspaceId: string;
|
|
37
|
+
filePath: string;
|
|
38
|
+
userId: string;
|
|
39
|
+
userName?: string;
|
|
40
|
+
action: "create" | "read" | "update" | "delete" | "move" | "lock" | "unlock";
|
|
41
|
+
oldContentHash?: string;
|
|
42
|
+
newContentHash?: string;
|
|
43
|
+
oldPath?: string;
|
|
44
|
+
newPath?: string;
|
|
45
|
+
metadata?: string;
|
|
46
|
+
timestamp: Date;
|
|
47
|
+
}
|
|
48
|
+
export interface TeamMember {
|
|
49
|
+
id: string;
|
|
50
|
+
workspaceId: string;
|
|
51
|
+
userId: string;
|
|
52
|
+
role: string;
|
|
53
|
+
permissions: string;
|
|
54
|
+
invitedAt: Date;
|
|
55
|
+
acceptedAt?: Date;
|
|
56
|
+
email?: string;
|
|
57
|
+
name?: string;
|
|
58
|
+
}
|
|
59
|
+
export interface InviteLink {
|
|
60
|
+
id: string;
|
|
61
|
+
workspaceId: string;
|
|
62
|
+
token: string;
|
|
63
|
+
email?: string;
|
|
64
|
+
permissions: string;
|
|
65
|
+
expiresAt?: Date;
|
|
66
|
+
maxUses?: number;
|
|
67
|
+
useCount: number;
|
|
68
|
+
createdBy: string;
|
|
69
|
+
createdAt: Date;
|
|
70
|
+
revokedAt?: Date;
|
|
71
|
+
}
|
|
72
|
+
export interface ActiveSession {
|
|
73
|
+
id: string;
|
|
74
|
+
userId: string;
|
|
75
|
+
workspaceId: string;
|
|
76
|
+
mcpSessionId?: string;
|
|
77
|
+
connectedAt: Date;
|
|
78
|
+
lastHeartbeat: Date;
|
|
79
|
+
userAgent?: string;
|
|
80
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { promises as fs } from "fs";
|
|
2
|
+
import path from "path";
|
|
3
|
+
import { fileURLToPath } from "url";
|
|
4
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
const CONFIG_DIR = path.join(__dirname, "..", "..", "data");
|
|
6
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
7
|
+
export async function loadConfig(project) {
|
|
8
|
+
try {
|
|
9
|
+
const data = await fs.readFile(CONFIG_FILE, "utf-8");
|
|
10
|
+
return JSON.parse(data);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
// Return default config
|
|
14
|
+
return getDefaultConfig();
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export async function saveConfig(config) {
|
|
18
|
+
await fs.mkdir(CONFIG_DIR, { recursive: true });
|
|
19
|
+
await fs.writeFile(CONFIG_FILE, JSON.stringify(config, null, 2), "utf-8");
|
|
20
|
+
}
|
|
21
|
+
function getDefaultConfig() {
|
|
22
|
+
return {
|
|
23
|
+
port: 31313,
|
|
24
|
+
workspacePath: "",
|
|
25
|
+
jwtSecret: generateRandomSecret(),
|
|
26
|
+
databasePath: path.join(CONFIG_DIR, "opencoop.db"),
|
|
27
|
+
mode: "host",
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function generateRandomSecret() {
|
|
31
|
+
const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
32
|
+
let result = "";
|
|
33
|
+
for (let i = 0; i < 32; i++) {
|
|
34
|
+
result += chars.charAt(Math.floor(Math.random() * chars.length));
|
|
35
|
+
}
|
|
36
|
+
return result;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAGpC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAa;IAC5C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,wBAAwB;QACxB,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAoB;IACnD,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO;QACL,IAAI,EAAE,KAAK;QACX,aAAa,EAAE,EAAE;QACjB,SAAS,EAAE,oBAAoB,EAAE;QACjC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC;QAClD,IAAI,EAAE,MAAM;KACb,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,MAAM,KAAK,GAAG,gEAAgE,CAAC;IAC/E,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Database as SqlJsDatabase } from "sql.js";
|
|
2
|
+
export declare function initDatabase(databasePath: string): Promise<SqlJsDatabase>;
|
|
3
|
+
export declare function getDatabase(): SqlJsDatabase;
|
|
4
|
+
export declare function saveDatabase(): Promise<void>;
|
|
5
|
+
export declare function closeDatabase(): Promise<void>;
|
|
6
|
+
export declare function markDirty(): void;
|
|
7
|
+
export declare function startAutoSave(): void;
|
|
8
|
+
export declare function stopAutoSave(): void;
|
|
9
|
+
export declare function runQuery(sql: string, params?: any[]): void;
|
|
10
|
+
export declare function getAllRows<T = any>(sql: string, params?: any[]): T[];
|
|
11
|
+
export declare function getRow<T = any>(sql: string, params?: any[]): T | null;
|
|
12
|
+
export declare function getScalar<T = any>(sql: string, params?: any[]): T | null;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import initSqlJs from "sql.js";
|
|
2
|
+
import { promises as fs } from "fs";
|
|
3
|
+
import path from "path";
|
|
4
|
+
import { logger } from "./logger.js";
|
|
5
|
+
let dbInstance = null;
|
|
6
|
+
let dbPath = "";
|
|
7
|
+
export async function initDatabase(databasePath) {
|
|
8
|
+
if (dbInstance)
|
|
9
|
+
return dbInstance;
|
|
10
|
+
dbPath = databasePath;
|
|
11
|
+
const dir = path.dirname(databasePath);
|
|
12
|
+
try {
|
|
13
|
+
await fs.mkdir(dir, { recursive: true });
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// Directory exists
|
|
17
|
+
}
|
|
18
|
+
const SQL = await initSqlJs();
|
|
19
|
+
try {
|
|
20
|
+
const fileBuffer = await fs.readFile(databasePath);
|
|
21
|
+
dbInstance = new SQL.Database(fileBuffer);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
dbInstance = new SQL.Database();
|
|
25
|
+
}
|
|
26
|
+
dbInstance.run("PRAGMA journal_mode = WAL");
|
|
27
|
+
dbInstance.run("PRAGMA foreign_keys = ON");
|
|
28
|
+
logger.info(`Database initialized at ${databasePath}`);
|
|
29
|
+
return dbInstance;
|
|
30
|
+
}
|
|
31
|
+
export function getDatabase() {
|
|
32
|
+
if (!dbInstance) {
|
|
33
|
+
throw new Error("Database not initialized. Call initDatabase() first.");
|
|
34
|
+
}
|
|
35
|
+
return dbInstance;
|
|
36
|
+
}
|
|
37
|
+
export async function saveDatabase() {
|
|
38
|
+
if (!dbInstance || !dbPath)
|
|
39
|
+
return;
|
|
40
|
+
const data = dbInstance.export();
|
|
41
|
+
const buffer = Buffer.from(data);
|
|
42
|
+
await fs.writeFile(dbPath, buffer);
|
|
43
|
+
}
|
|
44
|
+
export async function closeDatabase() {
|
|
45
|
+
if (dbInstance) {
|
|
46
|
+
await saveDatabase();
|
|
47
|
+
dbInstance.close();
|
|
48
|
+
dbInstance = null;
|
|
49
|
+
dbPath = "";
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Auto-save every 5 seconds if there are changes
|
|
53
|
+
let dirty = false;
|
|
54
|
+
let autoSaveInterval = null;
|
|
55
|
+
export function markDirty() {
|
|
56
|
+
dirty = true;
|
|
57
|
+
}
|
|
58
|
+
export function startAutoSave() {
|
|
59
|
+
if (autoSaveInterval)
|
|
60
|
+
return;
|
|
61
|
+
autoSaveInterval = setInterval(async () => {
|
|
62
|
+
if (dirty) {
|
|
63
|
+
await saveDatabase();
|
|
64
|
+
dirty = false;
|
|
65
|
+
}
|
|
66
|
+
}, 5000);
|
|
67
|
+
}
|
|
68
|
+
export function stopAutoSave() {
|
|
69
|
+
if (autoSaveInterval) {
|
|
70
|
+
clearInterval(autoSaveInterval);
|
|
71
|
+
autoSaveInterval = null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// Helper to run queries
|
|
75
|
+
export function runQuery(sql, params = []) {
|
|
76
|
+
const db = getDatabase();
|
|
77
|
+
db.run(sql, params);
|
|
78
|
+
markDirty();
|
|
79
|
+
}
|
|
80
|
+
// Helper to get all rows
|
|
81
|
+
export function getAllRows(sql, params = []) {
|
|
82
|
+
const db = getDatabase();
|
|
83
|
+
const stmt = db.prepare(sql);
|
|
84
|
+
stmt.bind(params);
|
|
85
|
+
const results = [];
|
|
86
|
+
while (stmt.step()) {
|
|
87
|
+
results.push(stmt.getAsObject());
|
|
88
|
+
}
|
|
89
|
+
stmt.free();
|
|
90
|
+
return results;
|
|
91
|
+
}
|
|
92
|
+
// Helper to get single row
|
|
93
|
+
export function getRow(sql, params = []) {
|
|
94
|
+
const db = getDatabase();
|
|
95
|
+
const stmt = db.prepare(sql);
|
|
96
|
+
stmt.bind(params);
|
|
97
|
+
if (stmt.step()) {
|
|
98
|
+
const result = stmt.getAsObject();
|
|
99
|
+
stmt.free();
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
stmt.free();
|
|
103
|
+
return null;
|
|
104
|
+
}
|
|
105
|
+
// Helper to get scalar value
|
|
106
|
+
export function getScalar(sql, params = []) {
|
|
107
|
+
const row = getRow(sql, params);
|
|
108
|
+
return row?.value ?? null;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/utils/database.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE;QACT,MAAM,EAAE,aAAa;QACrB,OAAO,EAAE;YACP,QAAQ,EAAE,IAAI;SACf;KACF;IACD,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM;CACvC,CAAC,CAAC"}
|