promptbridge 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/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/cli.js.map +1 -0
- package/dist/functions/app.d.ts +2 -0
- package/dist/functions/app.d.ts.map +1 -0
- package/dist/functions/app.js +80 -0
- package/dist/functions/app.js.map +1 -0
- package/dist/functions/browser.d.ts +6 -0
- package/dist/functions/browser.d.ts.map +1 -0
- package/dist/functions/browser.js +116 -0
- package/dist/functions/browser.js.map +1 -0
- package/dist/functions/chatbot.d.ts +2 -0
- package/dist/functions/chatbot.d.ts.map +1 -0
- package/dist/functions/chatbot.js +178 -0
- package/dist/functions/chatbot.js.map +1 -0
- package/dist/functions/config.d.ts +17 -0
- package/dist/functions/config.d.ts.map +1 -0
- package/dist/functions/config.js +20 -0
- package/dist/functions/config.js.map +1 -0
- package/dist/functions/db.d.ts +3 -0
- package/dist/functions/db.d.ts.map +1 -0
- package/dist/functions/db.js +6 -0
- package/dist/functions/db.js.map +1 -0
- package/dist/functions/queue.d.ts +2 -0
- package/dist/functions/queue.d.ts.map +1 -0
- package/dist/functions/queue.js +92 -0
- package/dist/functions/queue.js.map +1 -0
- package/dist/functions/routes.d.ts +2 -0
- package/dist/functions/routes.d.ts.map +1 -0
- package/dist/functions/routes.js +182 -0
- package/dist/functions/routes.js.map +1 -0
- package/dist/functions/session.d.ts +3 -0
- package/dist/functions/session.d.ts.map +1 -0
- package/dist/functions/session.js +69 -0
- package/dist/functions/session.js.map +1 -0
- package/dist/functions/state.d.ts +3 -0
- package/dist/functions/state.d.ts.map +1 -0
- package/dist/functions/state.js +17 -0
- package/dist/functions/state.js.map +1 -0
- package/dist/functions/types.d.ts +30 -0
- package/dist/functions/types.d.ts.map +1 -0
- package/dist/functions/types.js +3 -0
- package/dist/functions/types.js.map +1 -0
- package/dist/functions/utils.d.ts +2 -0
- package/dist/functions/utils.d.ts.map +1 -0
- package/dist/functions/utils.js +21 -0
- package/dist/functions/utils.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/package.json +59 -0
- package/public/assets/index-Bydik9KB.js +175 -0
- package/public/assets/index-DphI_DG8.css +1 -0
- package/public/index.html +14 -0
- package/public/vite.svg +1 -0
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.setupRoutes = void 0;
|
|
7
|
+
const state_1 = require("./state");
|
|
8
|
+
const session_1 = require("./session");
|
|
9
|
+
const browser_1 = require("./browser");
|
|
10
|
+
const queue_1 = require("./queue");
|
|
11
|
+
const db_1 = require("./db");
|
|
12
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
13
|
+
const setupRoutes = () => {
|
|
14
|
+
// Health check endpoint
|
|
15
|
+
state_1.state.app.get('/health', (req, res) => {
|
|
16
|
+
res.json({
|
|
17
|
+
status: 'ok',
|
|
18
|
+
initialized: state_1.state.isInitialized,
|
|
19
|
+
queueLength: state_1.state.requestQueue.length
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
// Chat endpoint
|
|
23
|
+
state_1.state.app.post('/chat', async (req, res) => {
|
|
24
|
+
const { prompt } = req.body;
|
|
25
|
+
if (!prompt || typeof prompt !== 'string') {
|
|
26
|
+
res.status(400).json({ error: 'Missing or invalid prompt' });
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (!state_1.state.isInitialized) {
|
|
30
|
+
res.status(503).json({ error: 'Service not ready', details: 'Browser not initialized' });
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Log request to DB
|
|
34
|
+
let dbRequestId = '';
|
|
35
|
+
try {
|
|
36
|
+
const apiReq = await db_1.db.apiRequest.create({
|
|
37
|
+
data: {
|
|
38
|
+
prompt,
|
|
39
|
+
status: 'Queued',
|
|
40
|
+
apiKeyId: req.apiKeyId || null
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
dbRequestId = apiReq.id;
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
console.error('Failed to log request to DB:', err);
|
|
47
|
+
}
|
|
48
|
+
// Add to queue
|
|
49
|
+
const queuePosition = state_1.state.requestQueue.length + 1;
|
|
50
|
+
state_1.state.requestQueue.push({ req, res, dbRequestId });
|
|
51
|
+
console.log(`[API] Request received. Queue position: ${queuePosition}`);
|
|
52
|
+
if (!state_1.state.isProcessing) {
|
|
53
|
+
(0, queue_1.processQueue)();
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
console.log(`[API] Processing another request. Request queued at position ${queuePosition}.`);
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
// Admin: save session
|
|
60
|
+
state_1.state.app.post('/admin/save-session', async (req, res) => {
|
|
61
|
+
try {
|
|
62
|
+
await (0, session_1.saveSession)();
|
|
63
|
+
res.json({ message: 'Session saved successfully' });
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.error('Failed to save session:', error);
|
|
67
|
+
res.status(500).json({ error: 'Failed to save session' });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
// Admin: start browser logic
|
|
71
|
+
state_1.state.app.post('/admin/start', async (req, res) => {
|
|
72
|
+
try {
|
|
73
|
+
await (0, browser_1.startBrowser)();
|
|
74
|
+
res.json({ message: 'API Logic started successfully' });
|
|
75
|
+
}
|
|
76
|
+
catch (error) {
|
|
77
|
+
console.error('Failed to start browser:', error);
|
|
78
|
+
res.status(500).json({ error: 'Failed to start API Logic' });
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Admin: stop browser logic
|
|
82
|
+
state_1.state.app.post('/admin/stop', async (req, res) => {
|
|
83
|
+
try {
|
|
84
|
+
await (0, browser_1.stopBrowser)();
|
|
85
|
+
res.json({ message: 'API Logic stopped successfully' });
|
|
86
|
+
// Kill the backend process completely as requested by user
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
console.log('Terminating backend process...');
|
|
89
|
+
process.exit(0);
|
|
90
|
+
}, 500);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
console.error('Failed to stop browser:', error);
|
|
94
|
+
res.status(500).json({ error: 'Failed to stop API Logic' });
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
// Admin: get status
|
|
98
|
+
state_1.state.app.get('/admin/status', async (req, res) => {
|
|
99
|
+
try {
|
|
100
|
+
const twentyFourHoursAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
|
|
101
|
+
const totalRequests24h = await db_1.db.apiRequest.count({
|
|
102
|
+
where: { createdAt: { gte: twentyFourHoursAgo } }
|
|
103
|
+
});
|
|
104
|
+
res.json({
|
|
105
|
+
isActive: state_1.state.isActive,
|
|
106
|
+
initialized: state_1.state.isInitialized,
|
|
107
|
+
queueLength: state_1.state.requestQueue.length,
|
|
108
|
+
browserActive: !!state_1.state.browser,
|
|
109
|
+
pageActive: !!state_1.state.page,
|
|
110
|
+
totalRequests24h
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
// Fallback if DB fails
|
|
115
|
+
res.json({
|
|
116
|
+
isActive: state_1.state.isActive,
|
|
117
|
+
initialized: state_1.state.isInitialized,
|
|
118
|
+
queueLength: state_1.state.requestQueue.length,
|
|
119
|
+
browserActive: !!state_1.state.browser,
|
|
120
|
+
pageActive: !!state_1.state.page,
|
|
121
|
+
totalRequests24h: 0
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
// Admin: get recent analytics
|
|
126
|
+
state_1.state.app.get('/admin/analytics', async (req, res) => {
|
|
127
|
+
try {
|
|
128
|
+
const logs = await db_1.db.apiRequest.findMany({
|
|
129
|
+
orderBy: { createdAt: 'desc' },
|
|
130
|
+
take: 10
|
|
131
|
+
});
|
|
132
|
+
res.json({ logs });
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
res.status(500).json({ error: 'Failed to fetch analytics' });
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
// Admin: list api keys
|
|
139
|
+
state_1.state.app.get('/admin/api-keys', async (req, res) => {
|
|
140
|
+
try {
|
|
141
|
+
const keys = await db_1.db.apiKey.findMany({
|
|
142
|
+
orderBy: { createdAt: 'desc' }
|
|
143
|
+
});
|
|
144
|
+
res.json(keys);
|
|
145
|
+
}
|
|
146
|
+
catch (error) {
|
|
147
|
+
res.status(500).json({ error: 'Failed to fetch API keys' });
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
// Admin: generate api key
|
|
151
|
+
state_1.state.app.post('/admin/api-keys', async (req, res) => {
|
|
152
|
+
try {
|
|
153
|
+
const { owner } = req.body;
|
|
154
|
+
const newKey = `pb_${crypto_1.default.randomBytes(16).toString('hex')}`;
|
|
155
|
+
const apiKey = await db_1.db.apiKey.create({
|
|
156
|
+
data: {
|
|
157
|
+
key: newKey,
|
|
158
|
+
owner: owner || 'Admin'
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
res.json(apiKey);
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
res.status(500).json({ error: 'Failed to generate API key' });
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
// Admin: delete api key
|
|
168
|
+
state_1.state.app.delete('/admin/api-keys/:id', async (req, res) => {
|
|
169
|
+
try {
|
|
170
|
+
const { id } = req.params;
|
|
171
|
+
await db_1.db.apiKey.delete({
|
|
172
|
+
where: { id: id }
|
|
173
|
+
});
|
|
174
|
+
res.json({ message: 'API key deleted successfully' });
|
|
175
|
+
}
|
|
176
|
+
catch (error) {
|
|
177
|
+
res.status(500).json({ error: 'Failed to delete API key' });
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
};
|
|
181
|
+
exports.setupRoutes = setupRoutes;
|
|
182
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/functions/routes.ts"],"names":[],"mappings":";;;;;;AACA,mCAAgC;AAChC,uCAAwC;AACxC,uCAAsD;AACtD,mCAAuC;AAEvC,6BAA0B;AAC1B,oDAA4B;AAErB,MAAM,WAAW,GAAG,GAAS,EAAE;IAClC,wBAAwB;IACxB,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAY,EAAE,GAAa,EAAE,EAAE;QACrD,GAAG,CAAC,IAAI,CAAC;YACL,MAAM,EAAE,IAAI;YACZ,WAAW,EAAE,aAAK,CAAC,aAAa;YAChC,WAAW,EAAE,aAAK,CAAC,YAAY,CAAC,MAAM;SACzC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,gBAAgB;IAChB,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QACzE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,IAAmB,CAAC;QAE3C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAmB,CAAC,CAAC;YAC9E,OAAO;QACX,CAAC;QAED,IAAI,CAAC,aAAK,CAAC,aAAa,EAAE,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,yBAAyB,EAAmB,CAAC,CAAC;YAC1G,OAAO;QACX,CAAC;QAED,oBAAoB;QACpB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAE,CAAC,UAAU,CAAC,MAAM,CAAC;gBACtC,IAAI,EAAE;oBACF,MAAM;oBACN,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAG,GAAW,CAAC,QAAQ,IAAI,IAAI;iBAC1C;aACJ,CAAC,CAAC;YACH,WAAW,GAAG,MAAM,CAAC,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,eAAe;QACf,MAAM,aAAa,GAAG,aAAK,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;QACpD,aAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,2CAA2C,aAAa,EAAE,CAAC,CAAC;QAExE,IAAI,CAAC,aAAK,CAAC,YAAY,EAAE,CAAC;YACtB,IAAA,oBAAY,GAAE,CAAC;QACnB,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,gEAAgE,aAAa,GAAG,CAAC,CAAC;QAClG,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,sBAAsB;IACtB,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QACvF,IAAI,CAAC;YACD,MAAM,IAAA,qBAAW,GAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAmB,CAAC,CAAC;QAC/E,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,6BAA6B;IAC7B,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAChF,IAAI,CAAC;YACD,MAAM,IAAA,sBAAY,GAAE,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC5D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACjD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAmB,CAAC,CAAC;QAClF,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAiB,EAAE;QAC/E,IAAI,CAAC;YACD,MAAM,IAAA,qBAAW,GAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,gCAAgC,EAAE,CAAC,CAAC;YAExD,2DAA2D;YAC3D,UAAU,CAAC,GAAG,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAChD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAmB,CAAC,CAAC;QACjF,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACjE,IAAI,CAAC;YACD,MAAM,kBAAkB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAEtE,MAAM,gBAAgB,GAAG,MAAM,OAAE,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC/C,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,EAAE;aACpD,CAAC,CAAC;YAEH,GAAG,CAAC,IAAI,CAAC;gBACL,QAAQ,EAAE,aAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,aAAK,CAAC,aAAa;gBAChC,WAAW,EAAE,aAAK,CAAC,YAAY,CAAC,MAAM;gBACtC,aAAa,EAAE,CAAC,CAAC,aAAK,CAAC,OAAO;gBAC9B,UAAU,EAAE,CAAC,CAAC,aAAK,CAAC,IAAI;gBACxB,gBAAgB;aACnB,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,uBAAuB;YACvB,GAAG,CAAC,IAAI,CAAC;gBACL,QAAQ,EAAE,aAAK,CAAC,QAAQ;gBACxB,WAAW,EAAE,aAAK,CAAC,aAAa;gBAChC,WAAW,EAAE,aAAK,CAAC,YAAY,CAAC,MAAM;gBACtC,aAAa,EAAE,CAAC,CAAC,aAAK,CAAC,OAAO;gBAC9B,UAAU,EAAE,CAAC,CAAC,aAAK,CAAC,IAAI;gBACxB,gBAAgB,EAAE,CAAC;aACtB,CAAC,CAAC;QACP,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,8BAA8B;IAC9B,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACpE,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBACtC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;gBAC9B,IAAI,EAAE,EAAE;aACX,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACvB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACjE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uBAAuB;IACvB,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACnE,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,OAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAClC,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aACjC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,0BAA0B;IAC1B,aAAK,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QACpE,IAAI,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YAC3B,MAAM,MAAM,GAAG,MAAM,gBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,MAAM,GAAG,MAAM,OAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBAClC,IAAI,EAAE;oBACF,GAAG,EAAE,MAAM;oBACX,KAAK,EAAE,KAAK,IAAI,OAAO;iBAC1B;aACJ,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC,CAAC;QAClE,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,wBAAwB;IACxB,aAAK,CAAC,GAAG,CAAC,MAAM,CAAC,qBAAqB,EAAE,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,EAAE;QAC1E,IAAI,CAAC;YACD,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,OAAE,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnB,KAAK,EAAE,EAAE,EAAE,EAAE,EAAY,EAAE;aAC9B,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;QAChE,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AA9KW,QAAA,WAAW,eA8KtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/functions/session.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,IAAI,CAyBhD,CAAC;AAEF,eAAO,MAAM,WAAW,QAAa,OAAO,CAAC,OAAO,CAwCnD,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadSession = exports.saveSession = void 0;
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const state_1 = require("./state");
|
|
9
|
+
const config_1 = require("./config");
|
|
10
|
+
const saveSession = async () => {
|
|
11
|
+
if (!state_1.state.page) {
|
|
12
|
+
throw new Error('Browser page not initialized');
|
|
13
|
+
}
|
|
14
|
+
const cookies = await state_1.state.page.cookies();
|
|
15
|
+
const localStorageData = await state_1.state.page.evaluate(() => {
|
|
16
|
+
const data = {};
|
|
17
|
+
for (let i = 0; i < window.localStorage.length; i++) {
|
|
18
|
+
const key = window.localStorage.key(i);
|
|
19
|
+
if (key) {
|
|
20
|
+
data[key] = window.localStorage.getItem(key) || '';
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return data;
|
|
24
|
+
});
|
|
25
|
+
const sessionData = {
|
|
26
|
+
cookies,
|
|
27
|
+
localStorage: localStorageData
|
|
28
|
+
};
|
|
29
|
+
await fs_extra_1.default.writeJSON(config_1.CONFIG.sessionFile, sessionData, { spaces: 2 });
|
|
30
|
+
console.log('Session saved successfully');
|
|
31
|
+
};
|
|
32
|
+
exports.saveSession = saveSession;
|
|
33
|
+
const loadSession = async () => {
|
|
34
|
+
try {
|
|
35
|
+
if (!state_1.state.page) {
|
|
36
|
+
throw new Error('Browser page not initialized');
|
|
37
|
+
}
|
|
38
|
+
const exists = await fs_extra_1.default.pathExists(config_1.CONFIG.sessionFile);
|
|
39
|
+
if (!exists) {
|
|
40
|
+
console.log('No saved session found, navigating without session...');
|
|
41
|
+
await state_1.state.page.goto(config_1.CONFIG.chatbotUrl, {
|
|
42
|
+
waitUntil: 'networkidle2',
|
|
43
|
+
timeout: config_1.CONFIG.timeouts.navigation
|
|
44
|
+
});
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
const sessionData = await fs_extra_1.default.readJSON(config_1.CONFIG.sessionFile);
|
|
48
|
+
// Navigate to the site before setting cookies
|
|
49
|
+
await state_1.state.page.goto(config_1.CONFIG.chatbotUrl, {
|
|
50
|
+
waitUntil: 'networkidle2',
|
|
51
|
+
timeout: config_1.CONFIG.timeouts.navigation
|
|
52
|
+
});
|
|
53
|
+
await state_1.state.page.setCookie(...sessionData.cookies);
|
|
54
|
+
await state_1.state.page.evaluate((storageData) => {
|
|
55
|
+
for (const [key, value] of Object.entries(storageData)) {
|
|
56
|
+
window.localStorage.setItem(key, value);
|
|
57
|
+
}
|
|
58
|
+
}, sessionData.localStorage);
|
|
59
|
+
await state_1.state.page.reload({ waitUntil: 'networkidle2' });
|
|
60
|
+
console.log('Session restored successfully');
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
console.error('Failed to load session:', error);
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
exports.loadSession = loadSession;
|
|
69
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/functions/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/functions/state.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,eAAO,MAAM,KAAK,EAAE,QAQnB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.state = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
exports.state = {
|
|
9
|
+
app: (0, express_1.default)(),
|
|
10
|
+
browser: null,
|
|
11
|
+
page: null,
|
|
12
|
+
isInitialized: false,
|
|
13
|
+
isActive: true,
|
|
14
|
+
requestQueue: [],
|
|
15
|
+
isProcessing: false,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/functions/state.ts"],"names":[],"mappings":";;;;;;AAAA,sDAA8B;AAGjB,QAAA,KAAK,GAAa;IAC3B,GAAG,EAAE,IAAA,iBAAO,GAAE;IACd,OAAO,EAAE,IAAI;IACb,IAAI,EAAE,IAAI;IACV,aAAa,EAAE,KAAK;IACpB,QAAQ,EAAE,IAAI;IACd,YAAY,EAAE,EAAE;IAChB,YAAY,EAAE,KAAK;CACtB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { Cookie, Page, Browser } from 'puppeteer';
|
|
2
|
+
import { Request, Response, Application } from 'express';
|
|
3
|
+
export interface SessionData {
|
|
4
|
+
cookies: Cookie[];
|
|
5
|
+
localStorage: Record<string, string>;
|
|
6
|
+
}
|
|
7
|
+
export interface ChatRequest {
|
|
8
|
+
prompt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface ChatResponse {
|
|
11
|
+
answer: string;
|
|
12
|
+
}
|
|
13
|
+
export interface ErrorResponse {
|
|
14
|
+
error: string;
|
|
15
|
+
details?: string;
|
|
16
|
+
}
|
|
17
|
+
export interface AppState {
|
|
18
|
+
app: Application;
|
|
19
|
+
browser: Browser | null;
|
|
20
|
+
page: Page | null;
|
|
21
|
+
isInitialized: boolean;
|
|
22
|
+
isActive: boolean;
|
|
23
|
+
requestQueue: Array<{
|
|
24
|
+
req: Request;
|
|
25
|
+
res: Response;
|
|
26
|
+
dbRequestId: string;
|
|
27
|
+
}>;
|
|
28
|
+
isProcessing: boolean;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,WAAW;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IACzB,MAAM,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ;IACrB,GAAG,EAAE,WAAW,CAAC;IACjB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,QAAQ,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1E,YAAY,EAAE,OAAO,CAAC;CACzB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/functions/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/functions/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,GAAI,MAAM,MAAM,KAAG,MAmBjD,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatResponseCode = void 0;
|
|
4
|
+
const formatResponseCode = (text) => {
|
|
5
|
+
// Some frontends or specific APIs (like compiling to python engines)
|
|
6
|
+
// want the literal \n sequence explicitly preserved as text rather than an actual invisible newline character.
|
|
7
|
+
// If we receive "Line 1\nLine 2", we convert it to "Line 1\\nLine 2".
|
|
8
|
+
let formatted = text;
|
|
9
|
+
// Aggressively strip ChatGPT UI labels that leak through DOM extraction
|
|
10
|
+
let changed = true;
|
|
11
|
+
while (changed) {
|
|
12
|
+
const before = formatted;
|
|
13
|
+
formatted = formatted.replace(/^[\s\r\n]*(Run|Python|Copy code|Copy)[\s\r\n]*/i, '');
|
|
14
|
+
changed = formatted !== before;
|
|
15
|
+
}
|
|
16
|
+
// Convert carriage returns too in case Windows encoding crept in
|
|
17
|
+
formatted = formatted.replace(/\r/g, '\\r');
|
|
18
|
+
return formatted;
|
|
19
|
+
};
|
|
20
|
+
exports.formatResponseCode = formatResponseCode;
|
|
21
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/functions/utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAU,EAAE;IACvD,sEAAsE;IACtE,+GAA+G;IAC/G,sEAAsE;IAEtE,IAAI,SAAS,GAAG,IAAI,CAAC;IAErB,wEAAwE;IACxE,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,SAAS,CAAC;QACzB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,iDAAiD,EAAE,EAAE,CAAC,CAAC;QACrF,OAAO,GAAG,SAAS,KAAK,MAAM,CAAC;IACnC,CAAC;IAED,iEAAiE;IACjE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAE5C,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAnBW,QAAA,kBAAkB,sBAmB7B"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const state_1 = require("./functions/state");
|
|
4
|
+
const app_1 = require("./functions/app");
|
|
5
|
+
const browser_1 = require("./functions/browser");
|
|
6
|
+
const config_1 = require("./functions/config");
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const start = async () => {
|
|
9
|
+
(0, app_1.setupApp)();
|
|
10
|
+
await (0, browser_1.initializeBrowser)();
|
|
11
|
+
state_1.state.app.listen(config_1.CONFIG.port, () => {
|
|
12
|
+
console.log(`🚀 Server running on port ${config_1.CONFIG.port}`);
|
|
13
|
+
console.log(`📝 Chatbot URL: ${config_1.CONFIG.chatbotUrl}`);
|
|
14
|
+
console.log(`🤖 Headless mode: ${config_1.CONFIG.headless}`);
|
|
15
|
+
// Automatically open the user's browser to the dashboard
|
|
16
|
+
const url = `http://localhost:${config_1.CONFIG.port}`;
|
|
17
|
+
const startCmd = process.platform === 'win32' ? 'start' : process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
18
|
+
(0, child_process_1.exec)(`${startCmd} ${url}`);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
process.on('SIGTERM', () => (0, browser_1.shutdownBrowser)());
|
|
22
|
+
process.on('SIGINT', () => (0, browser_1.shutdownBrowser)());
|
|
23
|
+
start().catch(error => {
|
|
24
|
+
console.error('Failed to start service:', error);
|
|
25
|
+
process.exit(1);
|
|
26
|
+
});
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,6CAA0C;AAC1C,yCAA2C;AAC3C,iDAAyE;AACzE,+CAA4C;AAE5C,iDAAqC;AAErC,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;IACtC,IAAA,cAAQ,GAAE,CAAC;IAEX,MAAM,IAAA,2BAAiB,GAAE,CAAC;IAE1B,aAAK,CAAC,GAAG,CAAC,MAAM,CAAC,eAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,GAAG,CAAC,6BAA6B,eAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,mBAAmB,eAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,eAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEpD,yDAAyD;QACzD,MAAM,GAAG,GAAG,oBAAoB,eAAM,CAAC,IAAI,EAAE,CAAC;QAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9G,IAAA,oBAAI,EAAC,GAAG,QAAQ,IAAI,GAAG,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,IAAA,yBAAe,GAAE,CAAC,CAAC;AAC/C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAA,yBAAe,GAAE,CAAC,CAAC;AAE9C,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;IACpB,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;IACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "promptbridge",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "no limit llm api?",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"promptbridge": "./dist/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"public/"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
15
|
+
"build": "tsc && node -e \"require('fs-extra').copySync('../dist', 'public')\"",
|
|
16
|
+
"build:backend-only": "tsc",
|
|
17
|
+
"start": "node dist/index.js",
|
|
18
|
+
"dev": "nodemon --watch src src/index.ts",
|
|
19
|
+
"clean": "rm -rf dist",
|
|
20
|
+
"prebuild": "npm run clean"
|
|
21
|
+
},
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/Pranav-Kunjir/PromptBridge.git"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"promptbridge",
|
|
28
|
+
"llm",
|
|
29
|
+
"proxy",
|
|
30
|
+
"cli"
|
|
31
|
+
],
|
|
32
|
+
"author": "Pranav Kunjir",
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"type": "commonjs",
|
|
35
|
+
"bugs": {
|
|
36
|
+
"url": "https://github.com/Pranav-Kunjir/PromptBridge/issues"
|
|
37
|
+
},
|
|
38
|
+
"homepage": "https://github.com/Pranav-Kunjir/PromptBridge#readme",
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@prisma/client": "^6.19.2",
|
|
41
|
+
"cors": "^2.8.6",
|
|
42
|
+
"express": "^5.2.1",
|
|
43
|
+
"fs-extra": "^11.3.3",
|
|
44
|
+
"puppeteer": "^24.37.5",
|
|
45
|
+
"puppeteer-extra": "^3.3.6",
|
|
46
|
+
"puppeteer-extra-plugin-stealth": "^2.11.2"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@types/cors": "^2.8.19",
|
|
50
|
+
"@types/express": "^5.0.6",
|
|
51
|
+
"@types/fs-extra": "^11.0.4",
|
|
52
|
+
"@types/node": "^25.3.2",
|
|
53
|
+
"@types/puppeteer": "^5.4.7",
|
|
54
|
+
"nodemon": "^3.1.14",
|
|
55
|
+
"prisma": "^6.19.2",
|
|
56
|
+
"ts-node": "^10.9.2",
|
|
57
|
+
"typescript": "^5.9.3"
|
|
58
|
+
}
|
|
59
|
+
}
|