ai-agent-router 0.1.6 → 0.1.7

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.
Files changed (35) hide show
  1. package/dist/src/app/api/config/route.js +23 -18
  2. package/dist/src/app/api/gateway/[...path]/route.js +22 -14
  3. package/dist/src/app/api/gateway/route.js +16 -11
  4. package/dist/src/app/api/logs/route.js +18 -14
  5. package/dist/src/app/api/models/route.js +51 -43
  6. package/dist/src/app/api/providers/route.js +45 -38
  7. package/dist/src/app/api/providers/test/route.js +20 -16
  8. package/dist/src/app/api/service/start/route.js +23 -16
  9. package/dist/src/app/api/service/status/route.js +13 -9
  10. package/dist/src/app/api/service/stop/route.js +14 -10
  11. package/dist/src/app/components/ConfirmDialog.jsx +4 -1
  12. package/dist/src/app/components/Nav.jsx +14 -8
  13. package/dist/src/app/components/Toast.jsx +6 -3
  14. package/dist/src/app/components/ToastProvider.jsx +15 -8
  15. package/dist/src/app/layout.jsx +9 -5
  16. package/dist/src/app/logs/page.jsx +17 -11
  17. package/dist/src/app/models/page.jsx +31 -25
  18. package/dist/src/app/page.jsx +31 -25
  19. package/dist/src/app/providers/page.jsx +29 -23
  20. package/dist/src/cli/index.js +17 -12
  21. package/dist/src/db/database.js +23 -15
  22. package/dist/src/db/queries.js +75 -49
  23. package/dist/src/db/schema.js +4 -1
  24. package/dist/src/server/crypto.js +17 -8
  25. package/dist/src/server/gateway-server.js +15 -8
  26. package/dist/src/server/gateway.js +11 -8
  27. package/dist/src/server/logger.js +14 -11
  28. package/dist/src/server/providers/anthropic.js +7 -3
  29. package/dist/src/server/providers/gemini.js +8 -4
  30. package/dist/src/server/providers/index.js +14 -8
  31. package/dist/src/server/providers/openai.js +8 -4
  32. package/dist/src/server/providers/types.js +2 -1
  33. package/dist/src/server/service-manager.js +23 -17
  34. package/package.json +1 -1
  35. package/tsconfig.json +2 -2
@@ -1,44 +1,49 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { getConfig, setConfig, getAllConfig } from '@/db/queries';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.GET = GET;
5
+ exports.POST = POST;
6
+ const server_1 = require("next/server");
7
+ const database_1 = require("@/db/database");
8
+ const queries_1 = require("@/db/queries");
4
9
  // Ensure Node.js runtime (required for SQLite)
5
- export const runtime = 'nodejs';
6
- export async function GET(request) {
10
+ exports.runtime = 'nodejs';
11
+ async function GET(request) {
7
12
  try {
8
13
  // Initialize database on request (safer than module load)
9
- getDatabase();
14
+ (0, database_1.getDatabase)();
10
15
  const { searchParams } = new URL(request.url);
11
16
  const key = searchParams.get('key');
12
17
  if (key) {
13
- const config = getConfig(key);
18
+ const config = (0, queries_1.getConfig)(key);
14
19
  if (!config) {
15
- return NextResponse.json({ error: 'Config not found' }, { status: 404 });
20
+ return server_1.NextResponse.json({ error: 'Config not found' }, { status: 404 });
16
21
  }
17
- return NextResponse.json(config);
22
+ return server_1.NextResponse.json(config);
18
23
  }
19
- const configs = getAllConfig();
20
- return NextResponse.json(configs);
24
+ const configs = (0, queries_1.getAllConfig)();
25
+ return server_1.NextResponse.json(configs);
21
26
  }
22
27
  catch (error) {
23
28
  console.error('Config API error:', error);
24
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
29
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
25
30
  }
26
31
  }
27
- export async function POST(request) {
32
+ async function POST(request) {
28
33
  try {
29
34
  // Initialize database on request
30
- getDatabase();
35
+ (0, database_1.getDatabase)();
31
36
  const body = await request.json();
32
37
  const { key, value } = body;
33
38
  if (!key) {
34
- return NextResponse.json({ error: 'Key is required' }, { status: 400 });
39
+ return server_1.NextResponse.json({ error: 'Key is required' }, { status: 400 });
35
40
  }
36
41
  // Allow value to be null, undefined, or empty string (save as empty string)
37
- const config = setConfig(key, (value === undefined || value === null) ? '' : typeof value === 'string' ? value : JSON.stringify(value));
38
- return NextResponse.json(config);
42
+ const config = (0, queries_1.setConfig)(key, (value === undefined || value === null) ? '' : typeof value === 'string' ? value : JSON.stringify(value));
43
+ return server_1.NextResponse.json(config);
39
44
  }
40
45
  catch (error) {
41
46
  console.error('Config POST API error:', error);
42
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
47
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
43
48
  }
44
49
  }
@@ -1,26 +1,34 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { handleGatewayRequest } from '@/server/gateway';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.POST = POST;
5
+ exports.GET = GET;
6
+ exports.PUT = PUT;
7
+ exports.PATCH = PATCH;
8
+ exports.DELETE = DELETE;
9
+ const server_1 = require("next/server");
10
+ const database_1 = require("@/db/database");
11
+ const gateway_1 = require("@/server/gateway");
4
12
  // Ensure Node.js runtime (required for SQLite)
5
- export const runtime = 'nodejs';
6
- export async function POST(request, { params }) {
13
+ exports.runtime = 'nodejs';
14
+ async function POST(request, { params }) {
7
15
  return handleRequest(request, params, 'POST');
8
16
  }
9
- export async function GET(request, { params }) {
17
+ async function GET(request, { params }) {
10
18
  return handleRequest(request, params, 'GET');
11
19
  }
12
- export async function PUT(request, { params }) {
20
+ async function PUT(request, { params }) {
13
21
  return handleRequest(request, params, 'PUT');
14
22
  }
15
- export async function PATCH(request, { params }) {
23
+ async function PATCH(request, { params }) {
16
24
  return handleRequest(request, params, 'PATCH');
17
25
  }
18
- export async function DELETE(request, { params }) {
26
+ async function DELETE(request, { params }) {
19
27
  return handleRequest(request, params, 'DELETE');
20
28
  }
21
29
  async function handleRequest(request, params, method) {
22
30
  try {
23
- getDatabase();
31
+ (0, database_1.getDatabase)();
24
32
  // Extract model ID from path or query
25
33
  // Common patterns: /v1/models/{model_id}/... or ?model=...
26
34
  const path = params.path.join('/');
@@ -55,7 +63,7 @@ async function handleRequest(request, params, method) {
55
63
  }
56
64
  const bodyProvider = body?.provider;
57
65
  if (!modelId) {
58
- return NextResponse.json({ error: { message: 'Model ID not specified' } }, { status: 400 });
66
+ return server_1.NextResponse.json({ error: { message: 'Model ID not specified' } }, { status: 400 });
59
67
  }
60
68
  // Build gateway request
61
69
  const gatewayRequest = {
@@ -67,14 +75,14 @@ async function handleRequest(request, params, method) {
67
75
  };
68
76
  // Handle the request (pass provider name if specified)
69
77
  const finalProviderName = providerName || bodyProvider;
70
- const response = await handleGatewayRequest(modelId, gatewayRequest, finalProviderName || undefined);
78
+ const response = await (0, gateway_1.handleGatewayRequest)(modelId, gatewayRequest, finalProviderName || undefined);
71
79
  // Return response
72
- return NextResponse.json(response.body, {
80
+ return server_1.NextResponse.json(response.body, {
73
81
  status: response.status,
74
82
  headers: response.headers,
75
83
  });
76
84
  }
77
85
  catch (error) {
78
- return NextResponse.json({ error: { message: error.message || 'Internal server error' } }, { status: 500 });
86
+ return server_1.NextResponse.json({ error: { message: error.message || 'Internal server error' } }, { status: 500 });
79
87
  }
80
88
  }
@@ -1,18 +1,23 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { handleGatewayRequest } from '@/server/gateway';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.POST = POST;
5
+ exports.GET = GET;
6
+ const server_1 = require("next/server");
7
+ const database_1 = require("@/db/database");
8
+ const gateway_1 = require("@/server/gateway");
4
9
  // Ensure Node.js runtime (required for SQLite)
5
- export const runtime = 'nodejs';
10
+ exports.runtime = 'nodejs';
6
11
  // Handle requests to /api/gateway (root gateway endpoint)
7
- export async function POST(request) {
12
+ async function POST(request) {
8
13
  return handleGatewayRequestDirect(request, 'POST');
9
14
  }
10
- export async function GET(request) {
15
+ async function GET(request) {
11
16
  return handleGatewayRequestDirect(request, 'GET');
12
17
  }
13
18
  async function handleGatewayRequestDirect(request, method) {
14
19
  try {
15
- getDatabase();
20
+ (0, database_1.getDatabase)();
16
21
  const searchParams = request.nextUrl.searchParams;
17
22
  let modelId = searchParams.get('model') || searchParams.get('model_id');
18
23
  const providerName = searchParams.get('provider');
@@ -35,7 +40,7 @@ async function handleGatewayRequestDirect(request, method) {
35
40
  }
36
41
  const bodyProvider = body?.provider;
37
42
  if (!modelId) {
38
- return NextResponse.json({ error: { message: 'Model ID not specified' } }, { status: 400 });
43
+ return server_1.NextResponse.json({ error: { message: 'Model ID not specified' } }, { status: 400 });
39
44
  }
40
45
  // Build gateway request
41
46
  const gatewayRequest = {
@@ -47,14 +52,14 @@ async function handleGatewayRequestDirect(request, method) {
47
52
  };
48
53
  // Handle the request (pass provider name if specified)
49
54
  const finalProviderName = providerName || bodyProvider;
50
- const response = await handleGatewayRequest(modelId, gatewayRequest, finalProviderName || undefined);
55
+ const response = await (0, gateway_1.handleGatewayRequest)(modelId, gatewayRequest, finalProviderName || undefined);
51
56
  // Return response
52
- return NextResponse.json(response.body, {
57
+ return server_1.NextResponse.json(response.body, {
53
58
  status: response.status,
54
59
  headers: response.headers,
55
60
  });
56
61
  }
57
62
  catch (error) {
58
- return NextResponse.json({ error: { message: error.message || 'Internal server error' } }, { status: 500 });
63
+ return server_1.NextResponse.json({ error: { message: error.message || 'Internal server error' } }, { status: 500 });
59
64
  }
60
65
  }
@@ -1,27 +1,31 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { getRequestLogs, getRequestLogById, getRequestLogCount } from '@/db/queries';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.dynamic = exports.runtime = void 0;
4
+ exports.GET = GET;
5
+ const server_1 = require("next/server");
6
+ const database_1 = require("@/db/database");
7
+ const queries_1 = require("@/db/queries");
4
8
  // Ensure Node.js runtime (required for SQLite)
5
- export const runtime = 'nodejs';
6
- export const dynamic = 'force-dynamic';
7
- export async function GET(request) {
9
+ exports.runtime = 'nodejs';
10
+ exports.dynamic = 'force-dynamic';
11
+ async function GET(request) {
8
12
  try {
9
- getDatabase();
13
+ (0, database_1.getDatabase)();
10
14
  const { searchParams } = new URL(request.url);
11
15
  const id = searchParams.get('id');
12
16
  const limit = parseInt(searchParams.get('limit') || '100');
13
17
  const offset = parseInt(searchParams.get('offset') || '0');
14
18
  const modelId = searchParams.get('model_id');
15
19
  if (id) {
16
- const log = getRequestLogById(parseInt(id));
20
+ const log = (0, queries_1.getRequestLogById)(parseInt(id));
17
21
  if (!log) {
18
- return NextResponse.json({ error: 'Log not found' }, { status: 404 });
22
+ return server_1.NextResponse.json({ error: 'Log not found' }, { status: 404 });
19
23
  }
20
- return NextResponse.json(log);
24
+ return server_1.NextResponse.json(log);
21
25
  }
22
- const logs = getRequestLogs(limit, offset, modelId ? parseInt(modelId) : undefined);
23
- const total = getRequestLogCount(modelId ? parseInt(modelId) : undefined);
24
- return NextResponse.json({
26
+ const logs = (0, queries_1.getRequestLogs)(limit, offset, modelId ? parseInt(modelId) : undefined);
27
+ const total = (0, queries_1.getRequestLogCount)(modelId ? parseInt(modelId) : undefined);
28
+ return server_1.NextResponse.json({
25
29
  logs,
26
30
  total,
27
31
  limit,
@@ -30,6 +34,6 @@ export async function GET(request) {
30
34
  }
31
35
  catch (error) {
32
36
  console.error('Logs API error:', error);
33
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
37
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
34
38
  }
35
39
  }
@@ -1,56 +1,64 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { getAllModels, createModel, updateModel, deleteModel, getModelsByProvider, getProviderById, } from '@/db/queries';
4
- import { getProviderAdapter } from '@/server/providers';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.GET = GET;
5
+ exports.POST = POST;
6
+ exports.PUT = PUT;
7
+ exports.DELETE = DELETE;
8
+ exports.PATCH = PATCH;
9
+ const server_1 = require("next/server");
10
+ const database_1 = require("@/db/database");
11
+ const queries_1 = require("@/db/queries");
12
+ const providers_1 = require("@/server/providers");
5
13
  // Ensure Node.js runtime (required for SQLite)
6
- export const runtime = 'nodejs';
7
- export async function GET(request) {
14
+ exports.runtime = 'nodejs';
15
+ async function GET(request) {
8
16
  try {
9
- getDatabase();
17
+ (0, database_1.getDatabase)();
10
18
  const { searchParams } = new URL(request.url);
11
19
  const providerId = searchParams.get('provider_id');
12
20
  if (providerId) {
13
- const models = getModelsByProvider(parseInt(providerId));
14
- return NextResponse.json(models);
21
+ const models = (0, queries_1.getModelsByProvider)(parseInt(providerId));
22
+ return server_1.NextResponse.json(models);
15
23
  }
16
24
  else {
17
- const models = getAllModels();
18
- return NextResponse.json(models);
25
+ const models = (0, queries_1.getAllModels)();
26
+ return server_1.NextResponse.json(models);
19
27
  }
20
28
  }
21
29
  catch (error) {
22
30
  console.error('Models API error:', error);
23
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
31
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
24
32
  }
25
33
  }
26
- export async function POST(request) {
34
+ async function POST(request) {
27
35
  try {
28
- getDatabase();
36
+ (0, database_1.getDatabase)();
29
37
  const body = await request.json();
30
38
  const { provider_id, name, model_id, enabled } = body;
31
39
  if (!provider_id || !name || !model_id) {
32
- return NextResponse.json({ error: 'Missing required fields' }, { status: 400 });
40
+ return server_1.NextResponse.json({ error: 'Missing required fields' }, { status: 400 });
33
41
  }
34
- const model = createModel({
42
+ const model = (0, queries_1.createModel)({
35
43
  provider_id,
36
44
  name,
37
45
  model_id,
38
46
  enabled: enabled !== undefined ? enabled : true,
39
47
  });
40
- return NextResponse.json(model);
48
+ return server_1.NextResponse.json(model);
41
49
  }
42
50
  catch (error) {
43
51
  console.error('Models API error:', error);
44
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
52
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
45
53
  }
46
54
  }
47
- export async function PUT(request) {
55
+ async function PUT(request) {
48
56
  try {
49
- getDatabase();
57
+ (0, database_1.getDatabase)();
50
58
  const body = await request.json();
51
59
  const { id, name, model_id, enabled, provider_id } = body;
52
60
  if (!id) {
53
- return NextResponse.json({ error: 'Model ID is required' }, { status: 400 });
61
+ return server_1.NextResponse.json({ error: 'Model ID is required' }, { status: 400 });
54
62
  }
55
63
  const updateData = {};
56
64
  if (name !== undefined)
@@ -61,48 +69,48 @@ export async function PUT(request) {
61
69
  updateData.enabled = enabled;
62
70
  if (provider_id !== undefined)
63
71
  updateData.provider_id = provider_id;
64
- const model = updateModel(id, updateData);
72
+ const model = (0, queries_1.updateModel)(id, updateData);
65
73
  if (!model) {
66
- return NextResponse.json({ error: 'Model not found' }, { status: 404 });
74
+ return server_1.NextResponse.json({ error: 'Model not found' }, { status: 404 });
67
75
  }
68
- return NextResponse.json(model);
76
+ return server_1.NextResponse.json(model);
69
77
  }
70
78
  catch (error) {
71
79
  console.error('Models API error:', error);
72
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
80
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
73
81
  }
74
82
  }
75
- export async function DELETE(request) {
83
+ async function DELETE(request) {
76
84
  try {
77
- getDatabase();
85
+ (0, database_1.getDatabase)();
78
86
  const { searchParams } = new URL(request.url);
79
87
  const id = searchParams.get('id');
80
88
  if (!id) {
81
- return NextResponse.json({ error: 'Model ID is required' }, { status: 400 });
89
+ return server_1.NextResponse.json({ error: 'Model ID is required' }, { status: 400 });
82
90
  }
83
- const success = deleteModel(parseInt(id));
91
+ const success = (0, queries_1.deleteModel)(parseInt(id));
84
92
  if (!success) {
85
- return NextResponse.json({ error: 'Model not found' }, { status: 404 });
93
+ return server_1.NextResponse.json({ error: 'Model not found' }, { status: 404 });
86
94
  }
87
- return NextResponse.json({ success: true });
95
+ return server_1.NextResponse.json({ success: true });
88
96
  }
89
97
  catch (error) {
90
98
  console.error('Models API error:', error);
91
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
99
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
92
100
  }
93
101
  }
94
102
  // Fetch models from provider
95
- export async function PATCH(request) {
103
+ async function PATCH(request) {
96
104
  try {
97
- getDatabase();
105
+ (0, database_1.getDatabase)();
98
106
  const body = await request.json();
99
107
  const { provider_id } = body;
100
108
  if (!provider_id) {
101
- return NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
109
+ return server_1.NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
102
110
  }
103
- const provider = getProviderById(provider_id);
111
+ const provider = (0, queries_1.getProviderById)(provider_id);
104
112
  if (!provider) {
105
- return NextResponse.json({ error: 'Provider not found' }, { status: 404 });
113
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
106
114
  }
107
115
  console.log('[Models API] Fetching models for provider:', {
108
116
  providerId: provider_id,
@@ -110,23 +118,23 @@ export async function PATCH(request) {
110
118
  protocol: provider.protocol,
111
119
  baseUrl: provider.base_url,
112
120
  });
113
- const adapter = getProviderAdapter(provider.protocol);
121
+ const adapter = (0, providers_1.getProviderAdapter)(provider.protocol);
114
122
  const models = await adapter.listModels(provider);
115
123
  console.log('[Models API] Fetched models:', models.length);
116
124
  // Create or update models
117
125
  const results = [];
118
126
  for (const modelInfo of models) {
119
127
  try {
120
- const existing = getAllModels().find(m => m.provider_id === provider_id && m.model_id === modelInfo.id);
128
+ const existing = (0, queries_1.getAllModels)().find(m => m.provider_id === provider_id && m.model_id === modelInfo.id);
121
129
  if (existing) {
122
- updateModel(existing.id, {
130
+ (0, queries_1.updateModel)(existing.id, {
123
131
  name: modelInfo.name,
124
132
  model_id: modelInfo.id,
125
133
  });
126
134
  results.push({ ...existing, name: modelInfo.name });
127
135
  }
128
136
  else {
129
- const newModel = createModel({
137
+ const newModel = (0, queries_1.createModel)({
130
138
  provider_id,
131
139
  name: modelInfo.name,
132
140
  model_id: modelInfo.id,
@@ -139,7 +147,7 @@ export async function PATCH(request) {
139
147
  console.error(`Failed to create/update model ${modelInfo.id}:`, error);
140
148
  }
141
149
  }
142
- return NextResponse.json({
150
+ return server_1.NextResponse.json({
143
151
  success: true,
144
152
  models: results,
145
153
  count: results.length,
@@ -147,6 +155,6 @@ export async function PATCH(request) {
147
155
  }
148
156
  catch (error) {
149
157
  console.error('Models API error:', error);
150
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
158
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
151
159
  }
152
160
  }
@@ -1,77 +1,84 @@
1
- import { NextResponse } from 'next/server';
2
- import { getDatabase } from '@/db/database';
3
- import { getAllProviders, getProviderById, createProvider, updateProvider, deleteProvider } from '@/db/queries';
4
- import { encryptApiKey, decryptApiKey } from '@/server/crypto';
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runtime = void 0;
4
+ exports.GET = GET;
5
+ exports.POST = POST;
6
+ exports.PUT = PUT;
7
+ exports.DELETE = DELETE;
8
+ const server_1 = require("next/server");
9
+ const database_1 = require("@/db/database");
10
+ const queries_1 = require("@/db/queries");
11
+ const crypto_1 = require("@/server/crypto");
5
12
  // Ensure Node.js runtime (required for SQLite)
6
- export const runtime = 'nodejs';
7
- export async function GET(request) {
13
+ exports.runtime = 'nodejs';
14
+ async function GET(request) {
8
15
  try {
9
- getDatabase();
16
+ (0, database_1.getDatabase)();
10
17
  const { searchParams } = new URL(request.url);
11
18
  const id = searchParams.get('id');
12
19
  const includeKey = searchParams.get('includeKey') === 'true';
13
20
  // If ID is provided, return single provider (for editing)
14
21
  if (id) {
15
- const provider = getProviderById(parseInt(id));
22
+ const provider = (0, queries_1.getProviderById)(parseInt(id));
16
23
  if (!provider) {
17
- return NextResponse.json({ error: 'Provider not found' }, { status: 404 });
24
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
18
25
  }
19
26
  // Return with decrypted API key if requested (for editing)
20
- return NextResponse.json({
27
+ return server_1.NextResponse.json({
21
28
  ...provider,
22
- api_key: includeKey ? decryptApiKey(provider.api_key) : '***',
29
+ api_key: includeKey ? (0, crypto_1.decryptApiKey)(provider.api_key) : '***',
23
30
  });
24
31
  }
25
32
  // Return all providers
26
- const providers = getAllProviders();
33
+ const providers = (0, queries_1.getAllProviders)();
27
34
  // Don't return API keys in list view
28
35
  const sanitized = providers.map(p => ({
29
36
  ...p,
30
37
  api_key: '***',
31
38
  }));
32
- return NextResponse.json(sanitized);
39
+ return server_1.NextResponse.json(sanitized);
33
40
  }
34
41
  catch (error) {
35
42
  console.error('Providers API error:', error);
36
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
43
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
37
44
  }
38
45
  }
39
- export async function POST(request) {
46
+ async function POST(request) {
40
47
  try {
41
- getDatabase();
48
+ (0, database_1.getDatabase)();
42
49
  const body = await request.json();
43
50
  const { name, protocol, base_url, api_key } = body;
44
51
  if (!name || !protocol || !base_url || !api_key) {
45
- return NextResponse.json({ error: 'Missing required fields' }, { status: 400 });
52
+ return server_1.NextResponse.json({ error: 'Missing required fields' }, { status: 400 });
46
53
  }
47
- const encryptedKey = encryptApiKey(api_key.trim());
48
- const provider = createProvider({
54
+ const encryptedKey = (0, crypto_1.encryptApiKey)(api_key.trim());
55
+ const provider = (0, queries_1.createProvider)({
49
56
  name,
50
57
  protocol,
51
58
  base_url,
52
59
  api_key: encryptedKey,
53
60
  });
54
- return NextResponse.json({
61
+ return server_1.NextResponse.json({
55
62
  ...provider,
56
63
  api_key: '***',
57
64
  });
58
65
  }
59
66
  catch (error) {
60
67
  console.error('Providers API error:', error);
61
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
68
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
62
69
  }
63
70
  }
64
- export async function PUT(request) {
71
+ async function PUT(request) {
65
72
  try {
66
- getDatabase();
73
+ (0, database_1.getDatabase)();
67
74
  const body = await request.json();
68
75
  const { id, name, protocol, base_url, api_key } = body;
69
76
  if (!id) {
70
- return NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
77
+ return server_1.NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
71
78
  }
72
- const existingProvider = getProviderById(id);
79
+ const existingProvider = (0, queries_1.getProviderById)(id);
73
80
  if (!existingProvider) {
74
- return NextResponse.json({ error: 'Provider not found' }, { status: 404 });
81
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
75
82
  }
76
83
  const updateData = {};
77
84
  if (name !== undefined)
@@ -81,38 +88,38 @@ export async function PUT(request) {
81
88
  if (base_url !== undefined)
82
89
  updateData.base_url = base_url;
83
90
  if (api_key !== undefined && api_key !== null && api_key.trim() !== '') {
84
- updateData.api_key = encryptApiKey(api_key.trim());
91
+ updateData.api_key = (0, crypto_1.encryptApiKey)(api_key.trim());
85
92
  }
86
- const provider = updateProvider(id, updateData);
93
+ const provider = (0, queries_1.updateProvider)(id, updateData);
87
94
  if (!provider) {
88
- return NextResponse.json({ error: 'Provider not found' }, { status: 404 });
95
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
89
96
  }
90
- return NextResponse.json({
97
+ return server_1.NextResponse.json({
91
98
  ...provider,
92
99
  api_key: '***',
93
100
  });
94
101
  }
95
102
  catch (error) {
96
103
  console.error('Providers API error:', error);
97
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
104
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
98
105
  }
99
106
  }
100
- export async function DELETE(request) {
107
+ async function DELETE(request) {
101
108
  try {
102
- getDatabase();
109
+ (0, database_1.getDatabase)();
103
110
  const { searchParams } = new URL(request.url);
104
111
  const id = searchParams.get('id');
105
112
  if (!id) {
106
- return NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
113
+ return server_1.NextResponse.json({ error: 'Provider ID is required' }, { status: 400 });
107
114
  }
108
- const success = deleteProvider(parseInt(id));
115
+ const success = (0, queries_1.deleteProvider)(parseInt(id));
109
116
  if (!success) {
110
- return NextResponse.json({ error: 'Provider not found' }, { status: 404 });
117
+ return server_1.NextResponse.json({ error: 'Provider not found' }, { status: 404 });
111
118
  }
112
- return NextResponse.json({ success: true });
119
+ return server_1.NextResponse.json({ success: true });
113
120
  }
114
121
  catch (error) {
115
122
  console.error('Providers API error:', error);
116
- return NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
123
+ return server_1.NextResponse.json({ error: error.message || 'Internal server error', stack: process.env.NODE_ENV === 'development' ? error.stack : undefined }, { status: 500 });
117
124
  }
118
125
  }