@lovelybunch/api 1.0.7 → 1.0.9

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.
@@ -47,39 +47,34 @@ app.get('/ws/terminal/:sessionId', upgradeWebSocket((c) => ({
47
47
  }
48
48
  })));
49
49
  // Import and register API routes
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
67
- app.route('/api/v1/proposals', proposals);
68
- app.route('/api/v1/terminal/sessions', terminalSessions);
69
- app.route('/api/v1/terminal/:proposalId/create', terminalCreate);
70
- app.route('/api/v1/terminal/:proposalId/destroy', terminalDestroy);
71
- app.route('/api/v1/terminal/:proposalId/resize', terminalResize);
72
- app.route('/api/v1/ai', ai);
73
- app.route('/api/v1/chats', chats);
74
- app.route('/api/v1/chats/:id', chatsById);
75
- app.route('/api/v1/resources', resources);
76
- app.route('/api/v1/resources/:id', resourcesById);
77
- app.route('/api/v1/resources/:id/thumbnail', resourcesThumbnail);
78
- app.route('/api/v1/context', context);
79
- app.route('/api/v1/config', config);
80
- app.route('/api/v1/user', user);
81
- app.route('/api/v1/agents', agents);
82
- app.route('/api/v1/agents/:id', agentsById);
50
+ import * as proposals from './routes/api/v1/proposals/route.js';
51
+ import * as proposalsById from './routes/api/v1/proposals/[id]/route.js';
52
+ import * as terminalSessions from './routes/api/v1/terminal/sessions/route.js';
53
+ import * as ai from './routes/api/v1/ai/route.js';
54
+ import * as chats from './routes/api/v1/chats/route.js';
55
+ import * as chatsById from './routes/api/v1/chats/[id]/route.js';
56
+ import * as resources from './routes/api/v1/resources/route.js';
57
+ import * as resourcesById from './routes/api/v1/resources/[id]/route.js';
58
+ import * as config from './routes/api/v1/config/route.js';
59
+ import agentsApp from './routes/api/v1/agents/route.js';
60
+ import agentsByIdApp from './routes/api/v1/agents/[id]/route.js';
61
+ // Register API routes - individual handlers
62
+ app.get('/api/v1/proposals', proposals.GET);
63
+ app.post('/api/v1/proposals', proposals.POST);
64
+ app.get('/api/v1/proposals/:id', proposalsById.GET);
65
+ app.patch('/api/v1/proposals/:id', proposalsById.PATCH);
66
+ app.delete('/api/v1/proposals/:id', proposalsById.DELETE);
67
+ app.get('/api/v1/terminal/sessions', terminalSessions.GET);
68
+ app.post('/api/v1/ai', ai.POST);
69
+ app.get('/api/v1/chats', chats.GET);
70
+ app.post('/api/v1/chats', chats.POST);
71
+ app.get('/api/v1/chats/:id', chatsById.GET);
72
+ app.get('/api/v1/resources', resources.GET);
73
+ app.get('/api/v1/resources/:id', resourcesById.GET);
74
+ app.get('/api/v1/config', config.GET);
75
+ // Register API routes - Hono apps
76
+ app.route('/api/v1/agents', agentsApp);
77
+ app.route('/api/v1/agents', agentsByIdApp);
83
78
  // Health check endpoint
84
79
  app.get('/api/health', (c) => {
85
80
  return c.json({ status: 'ok', timestamp: new Date().toISOString() });
@@ -109,15 +104,26 @@ for (const possiblePath of possibleStaticPaths) {
109
104
  }
110
105
  }
111
106
  if (staticPath) {
112
- // Serve static files for all non-API routes
113
- app.use('/*', serveStatic({
114
- root: staticPath,
115
- // Serve index.html for all non-file routes (SPA routing)
116
- onNotFound: (_p, c) => {
107
+ // Serve static assets
108
+ app.use('/assets/*', serveStatic({ root: staticPath }));
109
+ // Serve specific static files
110
+ app.use('/vite.svg', serveStatic({ root: staticPath }));
111
+ app.use('/favicon.ico', serveStatic({ root: staticPath }));
112
+ // Serve index.html for all non-API, non-WebSocket routes (SPA routing)
113
+ app.get('*', async (c) => {
114
+ const requestPath = c.req.path;
115
+ // Don't serve index.html for API or WebSocket routes
116
+ if (requestPath.startsWith('/api/') || requestPath.startsWith('/ws/')) {
117
+ return c.text('Not Found', 404);
118
+ }
119
+ try {
117
120
  const html = fs.readFileSync(path.join(staticPath, 'index.html'), 'utf-8');
118
- c.html(html);
121
+ return c.html(html);
122
+ }
123
+ catch (error) {
124
+ return c.text('Not Found', 404);
119
125
  }
120
- }));
126
+ });
121
127
  }
122
128
  // Export function to start the server
123
129
  export async function startServer(options = {}) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lovelybunch/api",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "type": "module",
5
5
  "main": "dist/server-with-static.js",
6
6
  "exports": {