-
Notifications
You must be signed in to change notification settings - Fork 104
Expand file tree
/
Copy pathplugin.ts
More file actions
109 lines (100 loc) · 3.09 KB
/
plugin.ts
File metadata and controls
109 lines (100 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
* Copyright Red Hat, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import {
coreServices,
createBackendPlugin,
} from '@backstage/backend-plugin-api';
import { migrate } from './database/migration';
import { createNotebooksRouter } from './service/notebooks';
import { createRouter } from './service/router';
/**
* @public
* The lightspeed backend plugin.
*/
export const lightspeedPlugin = createBackendPlugin({
pluginId: 'lightspeed',
register(env) {
env.registerInit({
deps: {
logger: coreServices.logger,
config: coreServices.rootConfig,
http: coreServices.httpRouter,
httpAuth: coreServices.httpAuth,
userInfo: coreServices.userInfo,
permissions: coreServices.permissions,
database: coreServices.database,
},
async init({
logger,
config,
http,
httpAuth,
userInfo,
permissions,
database,
}) {
await migrate(database);
http.use(
await createRouter({
config,
logger,
database,
httpAuth,
userInfo,
permissions,
}),
);
const aiNotebooksEnabled =
config.getOptionalBoolean('lightspeed.notebooks.enabled') ?? false;
if (aiNotebooksEnabled) {
const queryModel = config.getOptionalString(
'lightspeed.notebooks.queryDefaults.model',
);
const queryProvider = config.getOptionalString(
'lightspeed.notebooks.queryDefaults.provider_id',
);
if (!queryModel || !queryProvider) {
logger.warn(
'AI Notebooks feature is enabled but required configuration is missing. ' +
'Please configure lightspeed.notebooks.queryDefaults.model and lightspeed.notebooks.queryDefaults.provider_id. ' +
'Notebooks will not be available until these are set.',
);
} else {
http.use(
await createNotebooksRouter({
config: config,
logger: logger,
httpAuth: httpAuth,
userInfo: userInfo,
permissions,
}),
);
logger.info('AI Notebooks enabled');
http.addAuthPolicy({
path: '/notebooks/health',
allow: 'unauthenticated',
});
}
}
// Configure authentication policies
http.addAuthPolicy({
path: '/health',
allow: 'unauthenticated',
});
},
});
},
});