@matthias-hausberger/beige 0.0.1
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.md +8 -0
- package/README.md +183 -0
- package/dist/channels/registry.d.ts +14 -0
- package/dist/channels/registry.d.ts.map +1 -0
- package/dist/channels/registry.js +14 -0
- package/dist/channels/registry.js.map +1 -0
- package/dist/channels/telegram.d.ts +92 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +469 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/tui.d.ts +8 -0
- package/dist/channels/tui.d.ts.map +1 -0
- package/dist/channels/tui.js +574 -0
- package/dist/channels/tui.js.map +1 -0
- package/dist/cli.d.ts +23 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +571 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/loader.d.ts +6 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +103 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/loader.spec.d.ts +2 -0
- package/dist/config/loader.spec.d.ts.map +1 -0
- package/dist/config/loader.spec.js +195 -0
- package/dist/config/loader.spec.js.map +1 -0
- package/dist/config/schema.d.ts +107 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +42 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/schema.spec.d.ts +2 -0
- package/dist/config/schema.spec.d.ts.map +1 -0
- package/dist/config/schema.spec.js +180 -0
- package/dist/config/schema.spec.js.map +1 -0
- package/dist/gateway/agent-manager.d.ts +138 -0
- package/dist/gateway/agent-manager.d.ts.map +1 -0
- package/dist/gateway/agent-manager.js +532 -0
- package/dist/gateway/agent-manager.js.map +1 -0
- package/dist/gateway/api.d.ts +43 -0
- package/dist/gateway/api.d.ts.map +1 -0
- package/dist/gateway/api.js +256 -0
- package/dist/gateway/api.js.map +1 -0
- package/dist/gateway/api.spec.d.ts +2 -0
- package/dist/gateway/api.spec.d.ts.map +1 -0
- package/dist/gateway/api.spec.js +256 -0
- package/dist/gateway/api.spec.js.map +1 -0
- package/dist/gateway/audit.d.ts +38 -0
- package/dist/gateway/audit.d.ts.map +1 -0
- package/dist/gateway/audit.js +82 -0
- package/dist/gateway/audit.js.map +1 -0
- package/dist/gateway/audit.spec.d.ts +2 -0
- package/dist/gateway/audit.spec.d.ts.map +1 -0
- package/dist/gateway/audit.spec.js +212 -0
- package/dist/gateway/audit.spec.js.map +1 -0
- package/dist/gateway/gateway.d.ts +27 -0
- package/dist/gateway/gateway.d.ts.map +1 -0
- package/dist/gateway/gateway.js +158 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/policy.d.ts +27 -0
- package/dist/gateway/policy.d.ts.map +1 -0
- package/dist/gateway/policy.js +40 -0
- package/dist/gateway/policy.js.map +1 -0
- package/dist/gateway/policy.spec.d.ts +2 -0
- package/dist/gateway/policy.spec.d.ts.map +1 -0
- package/dist/gateway/policy.spec.js +121 -0
- package/dist/gateway/policy.spec.js.map +1 -0
- package/dist/gateway/provider-health.d.ts +83 -0
- package/dist/gateway/provider-health.d.ts.map +1 -0
- package/dist/gateway/provider-health.js +219 -0
- package/dist/gateway/provider-health.js.map +1 -0
- package/dist/gateway/provider-health.spec.d.ts +2 -0
- package/dist/gateway/provider-health.spec.d.ts.map +1 -0
- package/dist/gateway/provider-health.spec.js +278 -0
- package/dist/gateway/provider-health.spec.js.map +1 -0
- package/dist/gateway/session-settings.d.ts +62 -0
- package/dist/gateway/session-settings.d.ts.map +1 -0
- package/dist/gateway/session-settings.js +91 -0
- package/dist/gateway/session-settings.js.map +1 -0
- package/dist/gateway/session-settings.spec.d.ts +2 -0
- package/dist/gateway/session-settings.spec.d.ts.map +1 -0
- package/dist/gateway/session-settings.spec.js +141 -0
- package/dist/gateway/session-settings.spec.js.map +1 -0
- package/dist/gateway/sessions.d.ts +68 -0
- package/dist/gateway/sessions.d.ts.map +1 -0
- package/dist/gateway/sessions.js +177 -0
- package/dist/gateway/sessions.js.map +1 -0
- package/dist/gateway/sessions.spec.d.ts +2 -0
- package/dist/gateway/sessions.spec.d.ts.map +1 -0
- package/dist/gateway/sessions.spec.js +190 -0
- package/dist/gateway/sessions.spec.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/install.d.ts +39 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +144 -0
- package/dist/install.js.map +1 -0
- package/dist/sandbox/manager.d.ts +63 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +294 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/skills/index.d.ts +2 -0
- package/dist/skills/index.d.ts.map +1 -0
- package/dist/skills/index.js +2 -0
- package/dist/skills/index.js.map +1 -0
- package/dist/skills/registry.d.ts +11 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +86 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/skills/registry.spec.d.ts +2 -0
- package/dist/skills/registry.spec.d.ts.map +1 -0
- package/dist/skills/registry.spec.js +220 -0
- package/dist/skills/registry.spec.js.map +1 -0
- package/dist/socket/protocol.d.ts +21 -0
- package/dist/socket/protocol.d.ts.map +1 -0
- package/dist/socket/protocol.js +7 -0
- package/dist/socket/protocol.js.map +1 -0
- package/dist/socket/protocol.spec.d.ts +2 -0
- package/dist/socket/protocol.spec.d.ts.map +1 -0
- package/dist/socket/protocol.spec.js +135 -0
- package/dist/socket/protocol.spec.js.map +1 -0
- package/dist/socket/server.d.ts +21 -0
- package/dist/socket/server.d.ts.map +1 -0
- package/dist/socket/server.js +133 -0
- package/dist/socket/server.js.map +1 -0
- package/dist/socket/server.spec.d.ts +2 -0
- package/dist/socket/server.spec.d.ts.map +1 -0
- package/dist/socket/server.spec.js +333 -0
- package/dist/socket/server.spec.js.map +1 -0
- package/dist/test/fixtures.d.ts +47 -0
- package/dist/test/fixtures.d.ts.map +1 -0
- package/dist/test/fixtures.js +144 -0
- package/dist/test/fixtures.js.map +1 -0
- package/dist/toolkit/index.d.ts +4 -0
- package/dist/toolkit/index.d.ts.map +1 -0
- package/dist/toolkit/index.js +4 -0
- package/dist/toolkit/index.js.map +1 -0
- package/dist/toolkit/installer.d.ts +26 -0
- package/dist/toolkit/installer.d.ts.map +1 -0
- package/dist/toolkit/installer.js +247 -0
- package/dist/toolkit/installer.js.map +1 -0
- package/dist/toolkit/registry.d.ts +19 -0
- package/dist/toolkit/registry.d.ts.map +1 -0
- package/dist/toolkit/registry.js +119 -0
- package/dist/toolkit/registry.js.map +1 -0
- package/dist/toolkit/registry.spec.d.ts +2 -0
- package/dist/toolkit/registry.spec.d.ts.map +1 -0
- package/dist/toolkit/registry.spec.js +194 -0
- package/dist/toolkit/registry.spec.js.map +1 -0
- package/dist/toolkit/schema.d.ts +61 -0
- package/dist/toolkit/schema.d.ts.map +1 -0
- package/dist/toolkit/schema.js +116 -0
- package/dist/toolkit/schema.js.map +1 -0
- package/dist/toolkit/schema.spec.d.ts +2 -0
- package/dist/toolkit/schema.spec.d.ts.map +1 -0
- package/dist/toolkit/schema.spec.js +202 -0
- package/dist/toolkit/schema.spec.js.map +1 -0
- package/dist/tools/core.d.ts +10 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +246 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/core.spec.d.ts +2 -0
- package/dist/tools/core.spec.d.ts.map +1 -0
- package/dist/tools/core.spec.js +315 -0
- package/dist/tools/core.spec.js.map +1 -0
- package/dist/tools/registry.d.ts +15 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +62 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/registry.spec.d.ts +2 -0
- package/dist/tools/registry.spec.d.ts.map +1 -0
- package/dist/tools/registry.spec.js +228 -0
- package/dist/tools/registry.spec.js.map +1 -0
- package/dist/tools/runner.d.ts +25 -0
- package/dist/tools/runner.d.ts.map +1 -0
- package/dist/tools/runner.js +35 -0
- package/dist/tools/runner.js.map +1 -0
- package/dist/tools/runner.spec.d.ts +2 -0
- package/dist/tools/runner.spec.d.ts.map +1 -0
- package/dist/tools/runner.spec.js +129 -0
- package/dist/tools/runner.spec.js.map +1 -0
- package/dist/types/session.d.ts +8 -0
- package/dist/types/session.d.ts.map +1 -0
- package/dist/types/session.js +23 -0
- package/dist/types/session.js.map +1 -0
- package/package.json +76 -0
- package/tools/README.md +1 -0
- package/tools/kv/README.md +150 -0
- package/tools/kv/index.ts +149 -0
- package/tools/kv/tool.json +23 -0
- package/tools/message/README.md +53 -0
- package/tools/message/index.ts +183 -0
- package/tools/message/tool.json +11 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beige session store.
|
|
3
|
+
*
|
|
4
|
+
* Maps external identifiers (Telegram chat+thread, TUI session name, etc.)
|
|
5
|
+
* to pi session files on disk.
|
|
6
|
+
*
|
|
7
|
+
* Session files are stored at:
|
|
8
|
+
* ~/.beige/sessions/<agent>/<session-id>.jsonl
|
|
9
|
+
*
|
|
10
|
+
* A mapping file tracks which external key maps to which session:
|
|
11
|
+
* ~/.beige/sessions/session-map.json
|
|
12
|
+
*/
|
|
13
|
+
export declare class BeigeSessionStore {
|
|
14
|
+
private beigeDir;
|
|
15
|
+
private sessionsDir;
|
|
16
|
+
private mapFile;
|
|
17
|
+
private sessionMap;
|
|
18
|
+
constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Get the session file path for a given key, or undefined if no session exists.
|
|
21
|
+
*/
|
|
22
|
+
getSessionFile(key: string): string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* Create a new session file for a given key and agent.
|
|
25
|
+
* Returns the path to the new session file.
|
|
26
|
+
*/
|
|
27
|
+
createSession(key: string, agentName: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* Reset a key's session — creates a new session file.
|
|
30
|
+
* The old session file is kept on disk for history.
|
|
31
|
+
*/
|
|
32
|
+
resetSession(key: string, agentName: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Get the agent name for a session key.
|
|
35
|
+
*/
|
|
36
|
+
getAgentName(key: string): string | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* List all sessions for a given agent.
|
|
39
|
+
*/
|
|
40
|
+
listSessions(agentName: string): SessionInfo[];
|
|
41
|
+
/**
|
|
42
|
+
* List all sessions across all agents.
|
|
43
|
+
*/
|
|
44
|
+
listAllSessions(): SessionInfo[];
|
|
45
|
+
/**
|
|
46
|
+
* Build a session key for Telegram.
|
|
47
|
+
*/
|
|
48
|
+
static telegramKey(chatId: number, threadId?: number): string;
|
|
49
|
+
/**
|
|
50
|
+
* Build a session key for TUI.
|
|
51
|
+
*/
|
|
52
|
+
static tuiKey(agentName: string, sessionId?: string): string;
|
|
53
|
+
private loadMap;
|
|
54
|
+
private saveMap;
|
|
55
|
+
}
|
|
56
|
+
export interface SessionMapEntry {
|
|
57
|
+
agentName: string;
|
|
58
|
+
sessionFile: string;
|
|
59
|
+
createdAt: string;
|
|
60
|
+
}
|
|
61
|
+
export interface SessionInfo {
|
|
62
|
+
sessionFile: string;
|
|
63
|
+
sessionId: string;
|
|
64
|
+
agentName: string;
|
|
65
|
+
firstMessage: string;
|
|
66
|
+
createdAt: string;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/gateway/sessions.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAAkC;;IAUpD;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAY/C;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAiBrD;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAKpD;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI7C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAkB9C;;OAEG;IACH,eAAe,IAAI,WAAW,EAAE;IAehC;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IAI7D;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM;IAM5D,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,OAAO;CAGhB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, mkdirSync, existsSync, readdirSync } from "fs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { homedir } from "os";
|
|
4
|
+
/**
|
|
5
|
+
* Beige session store.
|
|
6
|
+
*
|
|
7
|
+
* Maps external identifiers (Telegram chat+thread, TUI session name, etc.)
|
|
8
|
+
* to pi session files on disk.
|
|
9
|
+
*
|
|
10
|
+
* Session files are stored at:
|
|
11
|
+
* ~/.beige/sessions/<agent>/<session-id>.jsonl
|
|
12
|
+
*
|
|
13
|
+
* A mapping file tracks which external key maps to which session:
|
|
14
|
+
* ~/.beige/sessions/session-map.json
|
|
15
|
+
*/
|
|
16
|
+
export class BeigeSessionStore {
|
|
17
|
+
beigeDir;
|
|
18
|
+
sessionsDir;
|
|
19
|
+
mapFile;
|
|
20
|
+
sessionMap;
|
|
21
|
+
constructor() {
|
|
22
|
+
this.beigeDir = resolve(homedir(), ".beige");
|
|
23
|
+
this.sessionsDir = resolve(this.beigeDir, "sessions");
|
|
24
|
+
this.mapFile = resolve(this.sessionsDir, "session-map.json");
|
|
25
|
+
mkdirSync(this.sessionsDir, { recursive: true });
|
|
26
|
+
this.sessionMap = this.loadMap();
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get the session file path for a given key, or undefined if no session exists.
|
|
30
|
+
*/
|
|
31
|
+
getSessionFile(key) {
|
|
32
|
+
const entry = this.sessionMap[key];
|
|
33
|
+
if (!entry)
|
|
34
|
+
return undefined;
|
|
35
|
+
// Verify the file still exists
|
|
36
|
+
if (!existsSync(entry.sessionFile)) {
|
|
37
|
+
delete this.sessionMap[key];
|
|
38
|
+
this.saveMap();
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
return entry.sessionFile;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a new session file for a given key and agent.
|
|
45
|
+
* Returns the path to the new session file.
|
|
46
|
+
*/
|
|
47
|
+
createSession(key, agentName) {
|
|
48
|
+
const agentDir = resolve(this.sessionsDir, agentName);
|
|
49
|
+
mkdirSync(agentDir, { recursive: true });
|
|
50
|
+
const sessionId = generateSessionId();
|
|
51
|
+
const sessionFile = resolve(agentDir, `${sessionId}.jsonl`);
|
|
52
|
+
this.sessionMap[key] = {
|
|
53
|
+
agentName,
|
|
54
|
+
sessionFile,
|
|
55
|
+
createdAt: new Date().toISOString(),
|
|
56
|
+
};
|
|
57
|
+
this.saveMap();
|
|
58
|
+
return sessionFile;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Reset a key's session — creates a new session file.
|
|
62
|
+
* The old session file is kept on disk for history.
|
|
63
|
+
*/
|
|
64
|
+
resetSession(key, agentName) {
|
|
65
|
+
// Don't delete old file — keep it for /resume
|
|
66
|
+
return this.createSession(key, agentName);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Get the agent name for a session key.
|
|
70
|
+
*/
|
|
71
|
+
getAgentName(key) {
|
|
72
|
+
return this.sessionMap[key]?.agentName;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* List all sessions for a given agent.
|
|
76
|
+
*/
|
|
77
|
+
listSessions(agentName) {
|
|
78
|
+
const agentDir = resolve(this.sessionsDir, agentName);
|
|
79
|
+
if (!existsSync(agentDir))
|
|
80
|
+
return [];
|
|
81
|
+
const files = readdirSync(agentDir).filter((f) => f.endsWith(".jsonl"));
|
|
82
|
+
return files.map((f) => {
|
|
83
|
+
const filePath = resolve(agentDir, f);
|
|
84
|
+
const firstLine = readFirstLine(filePath);
|
|
85
|
+
return {
|
|
86
|
+
sessionFile: filePath,
|
|
87
|
+
sessionId: f.replace(".jsonl", ""),
|
|
88
|
+
agentName,
|
|
89
|
+
firstMessage: extractFirstMessage(firstLine),
|
|
90
|
+
createdAt: extractTimestamp(firstLine),
|
|
91
|
+
};
|
|
92
|
+
}).sort((a, b) => b.createdAt.localeCompare(a.createdAt)); // newest first
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* List all sessions across all agents.
|
|
96
|
+
*/
|
|
97
|
+
listAllSessions() {
|
|
98
|
+
if (!existsSync(this.sessionsDir))
|
|
99
|
+
return [];
|
|
100
|
+
const agents = readdirSync(this.sessionsDir).filter((f) => {
|
|
101
|
+
const fullPath = resolve(this.sessionsDir, f);
|
|
102
|
+
try {
|
|
103
|
+
return readdirSync(fullPath).some((file) => file.endsWith(".jsonl"));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
return agents.flatMap((agent) => this.listSessions(agent));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Build a session key for Telegram.
|
|
113
|
+
*/
|
|
114
|
+
static telegramKey(chatId, threadId) {
|
|
115
|
+
return threadId ? `telegram:${chatId}:${threadId}` : `telegram:${chatId}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Build a session key for TUI.
|
|
119
|
+
*/
|
|
120
|
+
static tuiKey(agentName, sessionId) {
|
|
121
|
+
return sessionId ? `tui:${agentName}:${sessionId}` : `tui:${agentName}:default`;
|
|
122
|
+
}
|
|
123
|
+
// ── Private ────────────────────────────────────────────
|
|
124
|
+
loadMap() {
|
|
125
|
+
try {
|
|
126
|
+
return JSON.parse(readFileSync(this.mapFile, "utf-8"));
|
|
127
|
+
}
|
|
128
|
+
catch {
|
|
129
|
+
return {};
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
saveMap() {
|
|
133
|
+
writeFileSync(this.mapFile, JSON.stringify(this.sessionMap, null, 2));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function generateSessionId() {
|
|
137
|
+
const now = new Date();
|
|
138
|
+
const date = now.toISOString().slice(0, 10).replace(/-/g, "");
|
|
139
|
+
const time = now.toISOString().slice(11, 19).replace(/:/g, "");
|
|
140
|
+
const rand = Math.random().toString(36).slice(2, 8);
|
|
141
|
+
return `${date}-${time}-${rand}`;
|
|
142
|
+
}
|
|
143
|
+
function readFirstLine(filePath) {
|
|
144
|
+
try {
|
|
145
|
+
const content = readFileSync(filePath, "utf-8");
|
|
146
|
+
return content.split("\n")[0] || "";
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return "";
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
function extractFirstMessage(line) {
|
|
153
|
+
try {
|
|
154
|
+
const parsed = JSON.parse(line);
|
|
155
|
+
// pi session files have different entry formats
|
|
156
|
+
if (parsed.content && typeof parsed.content === "string") {
|
|
157
|
+
return parsed.content.slice(0, 100);
|
|
158
|
+
}
|
|
159
|
+
if (parsed.firstMessage) {
|
|
160
|
+
return parsed.firstMessage.slice(0, 100);
|
|
161
|
+
}
|
|
162
|
+
return "(session)";
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
return "(session)";
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
function extractTimestamp(line) {
|
|
169
|
+
try {
|
|
170
|
+
const parsed = JSON.parse(line);
|
|
171
|
+
return parsed.timestamp ? new Date(parsed.timestamp).toISOString() : new Date().toISOString();
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return new Date().toISOString();
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/gateway/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAC;AACrF,OAAO,EAAE,OAAO,EAAQ,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,iBAAiB;IACpB,QAAQ,CAAS;IACjB,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,UAAU,CAAkC;IAEpD;QACE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;QAC7D,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,GAAW;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,+BAA+B;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACH,aAAa,CAAC,GAAW,EAAE,SAAiB;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtD,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,iBAAiB,EAAE,CAAC;QACtC,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,SAAS,QAAQ,CAAC,CAAC;QAE5D,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG;YACrB,SAAS;YACT,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,GAAW,EAAE,SAAiB;QACzC,8CAA8C;QAC9C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,GAAW;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,SAAiB;QAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,CAAC;QAErC,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC1C,OAAO;gBACL,WAAW,EAAE,QAAQ;gBACrB,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAClC,SAAS;gBACT,YAAY,EAAE,mBAAmB,CAAC,SAAS,CAAC;gBAC5C,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC;aACvC,CAAC;QACJ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe;IAC5E,CAAC;IAED;;OAEG;IACH,eAAe;QACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;YAAE,OAAO,EAAE,CAAC;QAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAI,CAAC;gBACH,OAAO,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YACvE,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,MAAc,EAAE,QAAiB;QAClD,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,MAAM,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,YAAY,MAAM,EAAE,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,CAAC,SAAiB,EAAE,SAAkB;QACjD,OAAO,SAAS,CAAC,CAAC,CAAC,OAAO,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,SAAS,UAAU,CAAC;IAClF,CAAC;IAED,0DAA0D;IAElD,OAAO;QACb,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,OAAO;QACb,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC;CACF;AAgBD,SAAS,iBAAiB;IACxB,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9D,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,gDAAgD;QAChD,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,WAAW,CAAC;IACrB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAChG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.spec.d.ts","sourceRoot":"","sources":["../../src/gateway/sessions.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import { BeigeSessionStore, } from "./sessions.js";
|
|
3
|
+
import { mkdirSync, rmSync, writeFileSync, existsSync } from "fs";
|
|
4
|
+
import { join, dirname } from "path";
|
|
5
|
+
import { tmpdir } from "os";
|
|
6
|
+
describe("BeigeSessionStore", () => {
|
|
7
|
+
let tempDir;
|
|
8
|
+
let store;
|
|
9
|
+
let originalHome;
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
tempDir = join(tmpdir(), `beige-session-test-${Date.now()}-${Math.random().toString(36).slice(2)}`);
|
|
12
|
+
mkdirSync(tempDir, { recursive: true });
|
|
13
|
+
// Save and override HOME
|
|
14
|
+
originalHome = process.env.HOME;
|
|
15
|
+
process.env.HOME = tempDir;
|
|
16
|
+
store = new BeigeSessionStore();
|
|
17
|
+
});
|
|
18
|
+
afterEach(() => {
|
|
19
|
+
// Restore HOME
|
|
20
|
+
if (originalHome !== undefined) {
|
|
21
|
+
process.env.HOME = originalHome;
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
delete process.env.HOME;
|
|
25
|
+
}
|
|
26
|
+
rmSync(tempDir, { recursive: true, force: true });
|
|
27
|
+
});
|
|
28
|
+
// Helper to create a session with an actual file on disk
|
|
29
|
+
const createSessionWithFile = (key, agentName) => {
|
|
30
|
+
const sessionFile = store.createSession(key, agentName);
|
|
31
|
+
// Create the actual file (the store only creates the mapping)
|
|
32
|
+
writeFileSync(sessionFile, "");
|
|
33
|
+
return sessionFile;
|
|
34
|
+
};
|
|
35
|
+
describe("getSessionFile", () => {
|
|
36
|
+
it("returns undefined for unknown session key", () => {
|
|
37
|
+
const result = store.getSessionFile("unknown-key");
|
|
38
|
+
expect(result).toBeUndefined();
|
|
39
|
+
});
|
|
40
|
+
it("returns session file path for existing session", () => {
|
|
41
|
+
const key = "telegram:123:456";
|
|
42
|
+
const sessionFile = createSessionWithFile(key, "assistant");
|
|
43
|
+
const result = store.getSessionFile(key);
|
|
44
|
+
expect(result).toBe(sessionFile);
|
|
45
|
+
});
|
|
46
|
+
it("returns undefined if session file was deleted", () => {
|
|
47
|
+
const key = "telegram:123:456";
|
|
48
|
+
const sessionFile = createSessionWithFile(key, "assistant");
|
|
49
|
+
// Delete the session file
|
|
50
|
+
rmSync(sessionFile, { force: true });
|
|
51
|
+
const result = store.getSessionFile(key);
|
|
52
|
+
expect(result).toBeUndefined();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe("createSession", () => {
|
|
56
|
+
it("creates session file path in correct directory", () => {
|
|
57
|
+
const key = "telegram:123";
|
|
58
|
+
const sessionFile = store.createSession(key, "assistant");
|
|
59
|
+
expect(sessionFile).toContain("assistant");
|
|
60
|
+
expect(sessionFile).toContain(".jsonl");
|
|
61
|
+
// Directory should exist
|
|
62
|
+
expect(existsSync(dirname(sessionFile))).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
it("creates unique session IDs", () => {
|
|
65
|
+
const key1 = "telegram:1";
|
|
66
|
+
const key2 = "telegram:2";
|
|
67
|
+
const file1 = store.createSession(key1, "assistant");
|
|
68
|
+
const file2 = store.createSession(key2, "assistant");
|
|
69
|
+
expect(file1).not.toBe(file2);
|
|
70
|
+
});
|
|
71
|
+
it("creates agent directory if it doesn't exist", () => {
|
|
72
|
+
const key = "telegram:new";
|
|
73
|
+
const sessionFile = store.createSession(key, "new-agent");
|
|
74
|
+
expect(existsSync(dirname(sessionFile))).toBe(true);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe("resetSession", () => {
|
|
78
|
+
it("creates new session file for key", () => {
|
|
79
|
+
const key = "telegram:123";
|
|
80
|
+
const originalFile = createSessionWithFile(key, "assistant");
|
|
81
|
+
const newFile = store.resetSession(key, "assistant");
|
|
82
|
+
writeFileSync(newFile, ""); // Create the file
|
|
83
|
+
expect(newFile).not.toBe(originalFile);
|
|
84
|
+
expect(existsSync(originalFile)).toBe(true); // Old file still exists
|
|
85
|
+
expect(existsSync(newFile)).toBe(true);
|
|
86
|
+
});
|
|
87
|
+
it("updates session mapping to new file", () => {
|
|
88
|
+
const key = "telegram:123";
|
|
89
|
+
createSessionWithFile(key, "assistant");
|
|
90
|
+
const newFile = store.resetSession(key, "assistant");
|
|
91
|
+
writeFileSync(newFile, ""); // Create the file
|
|
92
|
+
const currentFile = store.getSessionFile(key);
|
|
93
|
+
expect(currentFile).toBe(newFile);
|
|
94
|
+
});
|
|
95
|
+
});
|
|
96
|
+
describe("getAgentName", () => {
|
|
97
|
+
it("returns agent name for session key", () => {
|
|
98
|
+
store.createSession("telegram:123", "assistant");
|
|
99
|
+
const result = store.getAgentName("telegram:123");
|
|
100
|
+
expect(result).toBe("assistant");
|
|
101
|
+
});
|
|
102
|
+
it("returns undefined for unknown key", () => {
|
|
103
|
+
const result = store.getAgentName("unknown");
|
|
104
|
+
expect(result).toBeUndefined();
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
describe("listSessions", () => {
|
|
108
|
+
it("returns empty array for agent with no sessions", () => {
|
|
109
|
+
const sessions = store.listSessions("unknown-agent");
|
|
110
|
+
expect(sessions).toEqual([]);
|
|
111
|
+
});
|
|
112
|
+
it("returns sessions for agent", () => {
|
|
113
|
+
createSessionWithFile("key1", "assistant");
|
|
114
|
+
createSessionWithFile("key2", "assistant");
|
|
115
|
+
const sessions = store.listSessions("assistant");
|
|
116
|
+
expect(sessions.length).toBe(2);
|
|
117
|
+
});
|
|
118
|
+
it("sorts sessions newest first", async () => {
|
|
119
|
+
// Create sessions with slight delay
|
|
120
|
+
createSessionWithFile("session-1", "assistant");
|
|
121
|
+
await new Promise((r) => setTimeout(r, 10));
|
|
122
|
+
createSessionWithFile("session-2", "assistant");
|
|
123
|
+
const sessions = store.listSessions("assistant");
|
|
124
|
+
// Sessions are sorted by createdAt descending (newest first)
|
|
125
|
+
// The second session was created later, so it should be first
|
|
126
|
+
expect(new Date(sessions[0].createdAt).getTime()).toBeGreaterThanOrEqual(new Date(sessions[1].createdAt).getTime());
|
|
127
|
+
});
|
|
128
|
+
it("includes session metadata", () => {
|
|
129
|
+
createSessionWithFile("key", "assistant");
|
|
130
|
+
const sessions = store.listSessions("assistant");
|
|
131
|
+
expect(sessions[0].agentName).toBe("assistant");
|
|
132
|
+
expect(sessions[0].sessionId).toBeTruthy();
|
|
133
|
+
expect(sessions[0].sessionFile).toBeTruthy();
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe("listAllSessions", () => {
|
|
137
|
+
it("returns sessions across all agents", () => {
|
|
138
|
+
createSessionWithFile("key1", "assistant");
|
|
139
|
+
createSessionWithFile("key2", "researcher");
|
|
140
|
+
const sessions = store.listAllSessions();
|
|
141
|
+
expect(sessions.length).toBe(2);
|
|
142
|
+
const agentNames = sessions.map((s) => s.agentName);
|
|
143
|
+
expect(agentNames).toContain("assistant");
|
|
144
|
+
expect(agentNames).toContain("researcher");
|
|
145
|
+
});
|
|
146
|
+
it("returns empty array when no sessions", () => {
|
|
147
|
+
const sessions = store.listAllSessions();
|
|
148
|
+
expect(sessions).toEqual([]);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
describe("static key builders", () => {
|
|
152
|
+
describe("telegramKey", () => {
|
|
153
|
+
it("builds key for chat without thread", () => {
|
|
154
|
+
const key = BeigeSessionStore.telegramKey(123456);
|
|
155
|
+
expect(key).toBe("telegram:123456");
|
|
156
|
+
});
|
|
157
|
+
it("builds key for chat with thread", () => {
|
|
158
|
+
const key = BeigeSessionStore.telegramKey(123456, 789);
|
|
159
|
+
expect(key).toBe("telegram:123456:789");
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
describe("tuiKey", () => {
|
|
163
|
+
it("builds key for agent without session", () => {
|
|
164
|
+
const key = BeigeSessionStore.tuiKey("assistant");
|
|
165
|
+
expect(key).toBe("tui:assistant:default");
|
|
166
|
+
});
|
|
167
|
+
it("builds key for agent with session", () => {
|
|
168
|
+
const key = BeigeSessionStore.tuiKey("assistant", "session-123");
|
|
169
|
+
expect(key).toBe("tui:assistant:session-123");
|
|
170
|
+
});
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
describe("persistence", () => {
|
|
174
|
+
it("persists session map across store instances", () => {
|
|
175
|
+
const key = "telegram:persistence-test";
|
|
176
|
+
createSessionWithFile(key, "assistant");
|
|
177
|
+
// Create a new store
|
|
178
|
+
const newStore = new BeigeSessionStore();
|
|
179
|
+
expect(newStore.getSessionFile(key)).toBeDefined();
|
|
180
|
+
expect(newStore.getAgentName(key)).toBe("assistant");
|
|
181
|
+
});
|
|
182
|
+
it("persists session-map.json file", () => {
|
|
183
|
+
const key = "telegram:persist";
|
|
184
|
+
store.createSession(key, "assistant");
|
|
185
|
+
const mapPath = join(tempDir, ".beige", "sessions", "session-map.json");
|
|
186
|
+
expect(existsSync(mapPath)).toBe(true);
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=sessions.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.spec.js","sourceRoot":"","sources":["../../src/gateway/sessions.spec.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic entry point.
|
|
3
|
+
* For CLI usage, see src/cli.ts.
|
|
4
|
+
*/
|
|
5
|
+
export { Gateway } from "./gateway/gateway.js";
|
|
6
|
+
export { GatewayAPI } from "./gateway/api.js";
|
|
7
|
+
export { loadConfig } from "./config/loader.js";
|
|
8
|
+
export { BeigeSessionStore } from "./gateway/sessions.js";
|
|
9
|
+
export { launchTUI } from "./channels/tui.js";
|
|
10
|
+
export type { BeigeConfig } from "./config/schema.js";
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Programmatic entry point.
|
|
3
|
+
* For CLI usage, see src/cli.ts.
|
|
4
|
+
*/
|
|
5
|
+
export { Gateway } from "./gateway/gateway.js";
|
|
6
|
+
export { GatewayAPI } from "./gateway/api.js";
|
|
7
|
+
export { loadConfig } from "./config/loader.js";
|
|
8
|
+
export { BeigeSessionStore } from "./gateway/sessions.js";
|
|
9
|
+
export { launchTUI } from "./channels/tui.js";
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beige first-time setup.
|
|
3
|
+
*
|
|
4
|
+
* Copies bundled tool packages into ~/.beige/tools/ and writes a default
|
|
5
|
+
* config.json5 when none exists. All operations are safe to re-run: existing
|
|
6
|
+
* files/directories are never overwritten.
|
|
7
|
+
*
|
|
8
|
+
* Source-install detection
|
|
9
|
+
* ────────────────────────
|
|
10
|
+
* When beige is run from a git clone (i.e. the developer installed deps with
|
|
11
|
+
* `npm install` / `pnpm install` but did not publish to npm) there is a `.git`
|
|
12
|
+
* directory sitting next to `package.json`. In that case we skip automatic
|
|
13
|
+
* first-run setup entirely — the developer works directly from the repo.
|
|
14
|
+
*
|
|
15
|
+
* npm-global-install detection
|
|
16
|
+
* ────────────────────────────
|
|
17
|
+
* When installed via `npm install -g beige` there is no `.git` directory in the
|
|
18
|
+
* package root, so `isSourceInstall()` returns false and setup can proceed.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Returns true when beige is being run directly from a git checkout.
|
|
22
|
+
* A `.git` entry at the package root is the canonical signal.
|
|
23
|
+
*/
|
|
24
|
+
export declare function isSourceInstall(): boolean;
|
|
25
|
+
export interface SetupResult {
|
|
26
|
+
/** Paths that were newly created. */
|
|
27
|
+
created: string[];
|
|
28
|
+
/** Paths that already existed and were skipped. */
|
|
29
|
+
skipped: string[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run beige first-time setup.
|
|
33
|
+
*
|
|
34
|
+
* @param force When true, run even on a source install (used by `beige setup`).
|
|
35
|
+
*/
|
|
36
|
+
export declare function runSetup(options?: {
|
|
37
|
+
force?: boolean;
|
|
38
|
+
}): Promise<SetupResult>;
|
|
39
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAyBH;;;GAGG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAEzC;AAqED,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mDAAmD;IACnD,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,WAAW,CAAC,CA8CtF"}
|