4runr-os 1.0.9 → 1.0.12
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/auth.d.ts +56 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +133 -0
- package/dist/auth.js.map +1 -0
- package/dist/index.js +476 -74
- package/dist/index.js.map +1 -1
- package/dist/local-model-executor.d.ts +41 -0
- package/dist/local-model-executor.d.ts.map +1 -0
- package/dist/local-model-executor.js +201 -0
- package/dist/local-model-executor.js.map +1 -0
- package/dist/local-setup.d.ts +52 -0
- package/dist/local-setup.d.ts.map +1 -0
- package/dist/local-setup.js +254 -0
- package/dist/local-setup.js.map +1 -0
- package/package.json +1 -1
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication & Session Management
|
|
3
|
+
* User authentication for 4Runr OS with session management
|
|
4
|
+
*/
|
|
5
|
+
export interface UserSession {
|
|
6
|
+
username: string;
|
|
7
|
+
loggedInAt: number;
|
|
8
|
+
lastActivityAt: number;
|
|
9
|
+
expiresAt: number;
|
|
10
|
+
gatewayUrl?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Save session to file
|
|
14
|
+
*/
|
|
15
|
+
export declare function saveSession(session: UserSession): void;
|
|
16
|
+
/**
|
|
17
|
+
* Load session from file
|
|
18
|
+
*/
|
|
19
|
+
export declare function loadSession(): UserSession | null;
|
|
20
|
+
/**
|
|
21
|
+
* Clear session file
|
|
22
|
+
*/
|
|
23
|
+
export declare function clearSession(): void;
|
|
24
|
+
/**
|
|
25
|
+
* Update session activity timestamp
|
|
26
|
+
*/
|
|
27
|
+
export declare function updateActivity(session: UserSession): void;
|
|
28
|
+
/**
|
|
29
|
+
* Check if session is still valid
|
|
30
|
+
*/
|
|
31
|
+
export declare function isSessionValid(session: UserSession | null): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Get time remaining in session (in minutes)
|
|
34
|
+
*/
|
|
35
|
+
export declare function getSessionTimeRemaining(session: UserSession | null): number;
|
|
36
|
+
/**
|
|
37
|
+
* Create a new session for a user
|
|
38
|
+
*/
|
|
39
|
+
export declare function createSession(username: string, gatewayUrl?: string): UserSession;
|
|
40
|
+
/**
|
|
41
|
+
* Get user-specific config directory
|
|
42
|
+
*/
|
|
43
|
+
export declare function getUserConfigDir(username: string): string;
|
|
44
|
+
/**
|
|
45
|
+
* Get user-specific agents file path
|
|
46
|
+
*/
|
|
47
|
+
export declare function getUserAgentsPath(username: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Get user-specific chats file path
|
|
50
|
+
*/
|
|
51
|
+
export declare function getUserChatsPath(username: string): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get user-specific tools file path
|
|
54
|
+
*/
|
|
55
|
+
export declare function getUserToolsPath(username: string): string;
|
|
56
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAgBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAOtD;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,WAAW,GAAG,IAAI,CAmBhD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,IAAI,CAQnC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAGzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAGnE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,MAAM,CAI3E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,WAAW,CAYhF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMzD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEzD"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authentication & Session Management
|
|
3
|
+
* User authentication for 4Runr OS with session management
|
|
4
|
+
*/
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
import * as os from 'os';
|
|
8
|
+
const SESSION_DURATION = 2 * 60 * 60 * 1000; // 2 hours (like AWS)
|
|
9
|
+
const SESSION_FILE = path.join(os.homedir(), '.4runr', 'session.json');
|
|
10
|
+
/**
|
|
11
|
+
* Get config directory
|
|
12
|
+
*/
|
|
13
|
+
function getConfigDir() {
|
|
14
|
+
const configDir = path.join(os.homedir(), '.4runr');
|
|
15
|
+
if (!fs.existsSync(configDir)) {
|
|
16
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
return configDir;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Save session to file
|
|
22
|
+
*/
|
|
23
|
+
export function saveSession(session) {
|
|
24
|
+
try {
|
|
25
|
+
getConfigDir(); // Ensure directory exists
|
|
26
|
+
fs.writeFileSync(SESSION_FILE, JSON.stringify(session, null, 2), 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
console.error(`Failed to save session: ${error.message}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Load session from file
|
|
34
|
+
*/
|
|
35
|
+
export function loadSession() {
|
|
36
|
+
try {
|
|
37
|
+
if (!fs.existsSync(SESSION_FILE)) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const data = fs.readFileSync(SESSION_FILE, 'utf-8');
|
|
41
|
+
const session = JSON.parse(data);
|
|
42
|
+
// Check if session is expired
|
|
43
|
+
if (Date.now() > session.expiresAt) {
|
|
44
|
+
clearSession();
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
return session;
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Clear session file
|
|
55
|
+
*/
|
|
56
|
+
export function clearSession() {
|
|
57
|
+
try {
|
|
58
|
+
if (fs.existsSync(SESSION_FILE)) {
|
|
59
|
+
fs.unlinkSync(SESSION_FILE);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
console.error(`Failed to clear session: ${error.message}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Update session activity timestamp
|
|
68
|
+
*/
|
|
69
|
+
export function updateActivity(session) {
|
|
70
|
+
session.lastActivityAt = Date.now();
|
|
71
|
+
saveSession(session);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Check if session is still valid
|
|
75
|
+
*/
|
|
76
|
+
export function isSessionValid(session) {
|
|
77
|
+
if (!session)
|
|
78
|
+
return false;
|
|
79
|
+
return Date.now() < session.expiresAt;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get time remaining in session (in minutes)
|
|
83
|
+
*/
|
|
84
|
+
export function getSessionTimeRemaining(session) {
|
|
85
|
+
if (!session)
|
|
86
|
+
return 0;
|
|
87
|
+
const remaining = session.expiresAt - Date.now();
|
|
88
|
+
return Math.max(0, Math.floor(remaining / 1000 / 60));
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create a new session for a user
|
|
92
|
+
*/
|
|
93
|
+
export function createSession(username, gatewayUrl) {
|
|
94
|
+
const now = Date.now();
|
|
95
|
+
const session = {
|
|
96
|
+
username,
|
|
97
|
+
loggedInAt: now,
|
|
98
|
+
lastActivityAt: now,
|
|
99
|
+
expiresAt: now + SESSION_DURATION,
|
|
100
|
+
gatewayUrl,
|
|
101
|
+
};
|
|
102
|
+
saveSession(session);
|
|
103
|
+
return session;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get user-specific config directory
|
|
107
|
+
*/
|
|
108
|
+
export function getUserConfigDir(username) {
|
|
109
|
+
const userDir = path.join(getConfigDir(), 'users', username);
|
|
110
|
+
if (!fs.existsSync(userDir)) {
|
|
111
|
+
fs.mkdirSync(userDir, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
return userDir;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get user-specific agents file path
|
|
117
|
+
*/
|
|
118
|
+
export function getUserAgentsPath(username) {
|
|
119
|
+
return path.join(getUserConfigDir(username), 'agents.json');
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get user-specific chats file path
|
|
123
|
+
*/
|
|
124
|
+
export function getUserChatsPath(username) {
|
|
125
|
+
return path.join(getUserConfigDir(username), 'chats.json');
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Get user-specific tools file path
|
|
129
|
+
*/
|
|
130
|
+
export function getUserToolsPath(username) {
|
|
131
|
+
return path.join(getUserConfigDir(username), 'tools.json');
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|