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 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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}