@lovelybunch/api 1.0.9 → 1.0.11
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/server-with-static.js +47 -31
- package/package.json +4 -4
- package/static/assets/index-xS4jMkpb.js +576 -0
- package/static/index.html +1 -1
|
@@ -47,34 +47,41 @@ app.get('/ws/terminal/:sessionId', upgradeWebSocket((c) => ({
|
|
|
47
47
|
}
|
|
48
48
|
})));
|
|
49
49
|
// Import and register API routes
|
|
50
|
-
import
|
|
51
|
-
import
|
|
52
|
-
import
|
|
53
|
-
import
|
|
54
|
-
import
|
|
55
|
-
import
|
|
56
|
-
import
|
|
57
|
-
import
|
|
58
|
-
import
|
|
59
|
-
import
|
|
60
|
-
import
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
app.
|
|
69
|
-
app.
|
|
70
|
-
app.
|
|
71
|
-
app.
|
|
72
|
-
app.
|
|
73
|
-
app.
|
|
74
|
-
app.
|
|
75
|
-
|
|
76
|
-
app.route('/api/v1/
|
|
77
|
-
app.route('/api/v1/
|
|
50
|
+
import proposals from './routes/api/v1/proposals/index.js';
|
|
51
|
+
import terminalSessions from './routes/api/v1/terminal/sessions/index.js';
|
|
52
|
+
import terminalCreate from './routes/api/v1/terminal/[proposalId]/create/index.js';
|
|
53
|
+
import terminalDestroy from './routes/api/v1/terminal/[proposalId]/destroy/index.js';
|
|
54
|
+
import terminalResize from './routes/api/v1/terminal/[proposalId]/resize/index.js';
|
|
55
|
+
import ai from './routes/api/v1/ai/index.js';
|
|
56
|
+
import chats from './routes/api/v1/chats/index.js';
|
|
57
|
+
import chatsById from './routes/api/v1/chats/[id]/index.js';
|
|
58
|
+
import resources from './routes/api/v1/resources/index.js';
|
|
59
|
+
import resourcesById from './routes/api/v1/resources/[id]/index.js';
|
|
60
|
+
import resourcesThumbnail from './routes/api/v1/resources/[id]/thumbnail/index.js';
|
|
61
|
+
import context from './routes/api/v1/context/index.js';
|
|
62
|
+
import config from './routes/api/v1/config/index.js';
|
|
63
|
+
import user from './routes/api/v1/user/index.js';
|
|
64
|
+
import agents from './routes/api/v1/agents/index.js';
|
|
65
|
+
import agentsById from './routes/api/v1/agents/[id]/index.js';
|
|
66
|
+
// Register API routes FIRST
|
|
67
|
+
console.log('🔗 Registering API routes...');
|
|
68
|
+
app.route('/api/v1/proposals', proposals);
|
|
69
|
+
app.route('/api/v1/terminal/sessions', terminalSessions);
|
|
70
|
+
app.route('/api/v1/terminal/:proposalId/create', terminalCreate);
|
|
71
|
+
app.route('/api/v1/terminal/:proposalId/destroy', terminalDestroy);
|
|
72
|
+
app.route('/api/v1/terminal/:proposalId/resize', terminalResize);
|
|
73
|
+
app.route('/api/v1/ai', ai);
|
|
74
|
+
app.route('/api/v1/chats', chats);
|
|
75
|
+
app.route('/api/v1/chats/:id', chatsById);
|
|
76
|
+
app.route('/api/v1/resources', resources);
|
|
77
|
+
app.route('/api/v1/resources/:id', resourcesById);
|
|
78
|
+
app.route('/api/v1/resources/:id/thumbnail', resourcesThumbnail);
|
|
79
|
+
app.route('/api/v1/context', context);
|
|
80
|
+
app.route('/api/v1/config', config);
|
|
81
|
+
app.route('/api/v1/user', user);
|
|
82
|
+
app.route('/api/v1/agents', agents);
|
|
83
|
+
app.route('/api/v1/agents/:id', agentsById);
|
|
84
|
+
console.log('✅ API routes registered');
|
|
78
85
|
// Health check endpoint
|
|
79
86
|
app.get('/api/health', (c) => {
|
|
80
87
|
return c.json({ status: 'ok', timestamp: new Date().toISOString() });
|
|
@@ -87,7 +94,9 @@ const possibleStaticPaths = [
|
|
|
87
94
|
// When running from development
|
|
88
95
|
path.join(__dirname, '../../../frontend/dist'),
|
|
89
96
|
// When bundled with the API package
|
|
90
|
-
path.join(__dirname, '../static')
|
|
97
|
+
path.join(__dirname, '../static'),
|
|
98
|
+
// When running from coconuts globally
|
|
99
|
+
path.join(__dirname, '../../node_modules/@lovelybunch/api/static')
|
|
91
100
|
];
|
|
92
101
|
// Find the first existing static path
|
|
93
102
|
let staticPath = null;
|
|
@@ -104,12 +113,14 @@ for (const possiblePath of possibleStaticPaths) {
|
|
|
104
113
|
}
|
|
105
114
|
}
|
|
106
115
|
if (staticPath) {
|
|
107
|
-
// Serve static assets
|
|
116
|
+
// Serve all static assets (CSS, JS, images, etc.)
|
|
108
117
|
app.use('/assets/*', serveStatic({ root: staticPath }));
|
|
109
118
|
// Serve specific static files
|
|
110
119
|
app.use('/vite.svg', serveStatic({ root: staticPath }));
|
|
111
120
|
app.use('/favicon.ico', serveStatic({ root: staticPath }));
|
|
112
|
-
|
|
121
|
+
}
|
|
122
|
+
// Serve index.html for all non-API, non-WebSocket routes (SPA routing) - LAST
|
|
123
|
+
if (staticPath) {
|
|
113
124
|
app.get('*', async (c) => {
|
|
114
125
|
const requestPath = c.req.path;
|
|
115
126
|
// Don't serve index.html for API or WebSocket routes
|
|
@@ -121,10 +132,15 @@ if (staticPath) {
|
|
|
121
132
|
return c.html(html);
|
|
122
133
|
}
|
|
123
134
|
catch (error) {
|
|
135
|
+
console.error('Failed to serve index.html:', error);
|
|
124
136
|
return c.text('Not Found', 404);
|
|
125
137
|
}
|
|
126
138
|
});
|
|
127
139
|
}
|
|
140
|
+
else {
|
|
141
|
+
console.warn('⚠️ No static files found. Frontend may not work properly.');
|
|
142
|
+
console.warn(' Run "pnpm run build:bundle" in the api package to bundle frontend files.');
|
|
143
|
+
}
|
|
128
144
|
// Export function to start the server
|
|
129
145
|
export async function startServer(options = {}) {
|
|
130
146
|
const port = options.port || (process.env.PORT ? parseInt(process.env.PORT) : 3000);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lovelybunch/api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "dist/server-with-static.js",
|
|
6
6
|
"exports": {
|
|
@@ -19,14 +19,14 @@
|
|
|
19
19
|
"start:dev": "node dist/server.js",
|
|
20
20
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
21
21
|
},
|
|
22
|
-
"keywords": [],
|
|
22
|
+
"keywords": ["api", "server", "hono", "gait", "coconut"],
|
|
23
23
|
"author": "",
|
|
24
24
|
"license": "ISC",
|
|
25
|
-
"description": "",
|
|
25
|
+
"description": "GAIT API server with Hono and static frontend serving",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@hono/node-server": "^1.13.7",
|
|
28
28
|
"@hono/node-ws": "^1.0.6",
|
|
29
|
-
"@lovelybunch/types": "^1.0.
|
|
29
|
+
"@lovelybunch/types": "^1.0.11",
|
|
30
30
|
"fuse.js": "^7.0.0",
|
|
31
31
|
"gray-matter": "^4.0.3",
|
|
32
32
|
"hono": "^4.9.5",
|