@promptbook/cli 0.112.0-95 → 0.112.0-97
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/apps/agents-server/README.md +3 -3
- package/apps/agents-server/next.config.ts +8 -1
- package/apps/agents-server/playwright.config.ts +4 -1
- package/apps/agents-server/src/app/admin/code-runners/CodeRunnersClient.tsx +358 -19
- package/apps/agents-server/src/app/admin/database/DatabaseAdminClient.tsx +38 -0
- package/apps/agents-server/src/app/admin/database/DatabaseAdminStudioSurface.tsx +42 -0
- package/apps/agents-server/src/app/admin/database/page.tsx +34 -0
- package/apps/agents-server/src/app/admin/servers/CreateServerDialog.tsx +46 -505
- package/apps/agents-server/src/app/admin/servers/ServersClient.tsx +23 -11
- package/apps/agents-server/src/app/admin/servers/ServersRegistryApi.ts +5 -0
- package/apps/agents-server/src/app/admin/servers/ServersRegistryDnsTypes.ts +87 -0
- package/apps/agents-server/src/app/admin/servers/ServersRegistryTable.tsx +258 -128
- package/apps/agents-server/src/app/admin/servers/useCreateServerWizard.ts +46 -334
- package/apps/agents-server/src/app/admin/servers/useServersRegistryState.ts +26 -2
- package/apps/agents-server/src/app/admin/update/UpdateClient.tsx +435 -0
- package/apps/agents-server/src/app/admin/update/page.tsx +14 -0
- package/apps/agents-server/src/app/api/admin/code-runners/authentication/route.ts +197 -0
- package/apps/agents-server/src/app/api/admin/code-runners/route.ts +4 -35
- package/apps/agents-server/src/app/api/admin/database/studio/route.ts +113 -0
- package/apps/agents-server/src/app/api/admin/servers/[serverId]/route.ts +10 -5
- package/apps/agents-server/src/app/api/admin/servers/route.ts +97 -6
- package/apps/agents-server/src/app/api/admin/update/route.ts +52 -0
- package/apps/agents-server/src/app/api/auth/login/route.ts +8 -0
- package/apps/agents-server/src/app/api/auth/logout/route.ts +10 -2
- package/apps/agents-server/src/app/layout.tsx +1 -0
- package/apps/agents-server/src/app/page.tsx +10 -0
- package/apps/agents-server/src/components/Header/buildHeaderSystemMenuItems.ts +10 -0
- package/apps/agents-server/src/database/$provideClientSql.ts +4 -21
- package/apps/agents-server/src/database/$provideDatabaseAdminExecutor.ts +252 -0
- package/apps/agents-server/src/database/$providePostgresPool.ts +27 -0
- package/apps/agents-server/src/database/$provideSupabaseForServer.ts +11 -1
- package/apps/agents-server/src/database/agentsServerDatabaseMode.ts +20 -1
- package/apps/agents-server/src/database/postgres/$provideLocalPostgresSupabase.ts +1261 -0
- package/apps/agents-server/src/database/resolvePostgresConnectionString.ts +26 -0
- package/apps/agents-server/src/database/sqlite/$provideAgentsServerSqliteDatabase.ts +83 -0
- package/apps/agents-server/src/database/sqlite/$provideLocalSqliteSupabase.ts +20 -71
- package/apps/agents-server/src/languages/ServerTranslationKeys.ts +2 -0
- package/apps/agents-server/src/languages/translations/czech.yaml +2 -0
- package/apps/agents-server/src/languages/translations/english.yaml +2 -0
- package/apps/agents-server/src/middleware.ts +32 -0
- package/apps/agents-server/src/tools/$provideServer.ts +2 -2
- package/apps/agents-server/src/utils/codeRunnerAuthentication.ts +394 -0
- package/apps/agents-server/src/utils/codeRunnerConfiguration.ts +67 -0
- package/apps/agents-server/src/utils/serverManagement/standaloneVpsServerMetadata.ts +145 -0
- package/apps/agents-server/src/utils/serverRegistry.ts +7 -6
- package/apps/agents-server/src/utils/session.ts +37 -9
- package/apps/agents-server/src/utils/shibboleth/createShibbolethAuthenticationLogPayload.ts +173 -0
- package/apps/agents-server/src/utils/shibboleth/writeShibbolethAuthenticationLog.ts +27 -0
- package/apps/agents-server/src/utils/standaloneVpsDnsDiagnostics.ts +258 -0
- package/apps/agents-server/src/utils/standaloneVpsRawIpBootstrap.ts +87 -0
- package/apps/agents-server/src/utils/vpsConfiguration.ts +87 -15
- package/apps/agents-server/src/utils/vpsSelfUpdate.ts +664 -0
- package/esm/apps/agents-server/src/database/agentsServerDatabaseMode.d.ts +9 -1
- package/esm/apps/agents-server/src/utils/serverRegistry.d.ts +1 -1
- package/esm/index.es.js +8 -6
- package/esm/index.es.js.map +1 -1
- package/esm/src/version.d.ts +1 -1
- package/package.json +2 -1
- package/src/book-components/Chat/utils/renderMarkdown.ts +1 -3
- package/src/cli/cli-commands/agents-server/ensureAgentsServerEnvFile.ts +1 -1
- package/src/other/templates/getTemplatesPipelineCollection.ts +767 -745
- package/src/scrapers/document/DocumentScraper.ts +1 -1
- package/src/scrapers/document-legacy/LegacyDocumentScraper.ts +1 -1
- package/src/version.ts +2 -2
- package/src/versions.txt +2 -1
- package/umd/apps/agents-server/src/database/agentsServerDatabaseMode.d.ts +9 -1
- package/umd/apps/agents-server/src/utils/serverRegistry.d.ts +1 -1
- package/umd/index.umd.js +8 -6
- package/umd/index.umd.js.map +1 -1
- package/umd/src/version.d.ts +1 -1
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import type { StudioBFFSqlLintDetails, StudioBFFSqlLintResult } from '@prisma/studio-core/data/bff';
|
|
2
|
+
import type { Pool, PoolClient } from 'pg';
|
|
3
|
+
import { $providePostgresPool } from './$providePostgresPool';
|
|
4
|
+
import { isAgentsServerSqliteMode } from './agentsServerDatabaseMode';
|
|
5
|
+
import {
|
|
6
|
+
$provideAgentsServerSqliteDatabase,
|
|
7
|
+
type AgentsServerSqliteDatabase,
|
|
8
|
+
} from './sqlite/$provideAgentsServerSqliteDatabase';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Query shape sent by Embedded Prisma Studio adapters.
|
|
12
|
+
*
|
|
13
|
+
* @private internal utility of Agents Server database admin
|
|
14
|
+
*/
|
|
15
|
+
export type DatabaseAdminQuery = {
|
|
16
|
+
readonly sql: string;
|
|
17
|
+
readonly parameters?: ReadonlyArray<unknown>;
|
|
18
|
+
readonly transformations?: Partial<Record<string, 'json-parse'>>;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* SQL executor surface required by the Embedded Prisma Studio BFF endpoint.
|
|
23
|
+
*
|
|
24
|
+
* @private internal utility of Agents Server database admin
|
|
25
|
+
*/
|
|
26
|
+
export type DatabaseAdminExecutor = {
|
|
27
|
+
readonly execute: (query: DatabaseAdminQuery) => Promise<Array<Record<string, unknown>>>;
|
|
28
|
+
readonly executeTransaction: (
|
|
29
|
+
queries: ReadonlyArray<DatabaseAdminQuery>,
|
|
30
|
+
) => Promise<Array<Array<Record<string, unknown>>>>;
|
|
31
|
+
readonly lintSql: (details: StudioBFFSqlLintDetails) => Promise<StudioBFFSqlLintResult>;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Provides a raw SQL executor for the configured Agents Server database backend.
|
|
36
|
+
*
|
|
37
|
+
* @returns Database admin executor for the active database mode.
|
|
38
|
+
*
|
|
39
|
+
* @private exported from Agents Server database utilities
|
|
40
|
+
*/
|
|
41
|
+
export function $provideDatabaseAdminExecutor(): DatabaseAdminExecutor {
|
|
42
|
+
return isAgentsServerSqliteMode() ? $provideSqliteDatabaseAdminExecutor() : $providePostgresDatabaseAdminExecutor();
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Provides the PostgreSQL raw SQL executor used by Embedded Prisma Studio.
|
|
47
|
+
*
|
|
48
|
+
* @returns PostgreSQL-backed database admin executor.
|
|
49
|
+
*/
|
|
50
|
+
function $providePostgresDatabaseAdminExecutor(): DatabaseAdminExecutor {
|
|
51
|
+
const pool = $providePostgresPool();
|
|
52
|
+
|
|
53
|
+
return {
|
|
54
|
+
execute: (query) => executePostgresDatabaseAdminQuery(pool, query),
|
|
55
|
+
executeTransaction: (queries) => executePostgresDatabaseAdminTransaction(pool, queries),
|
|
56
|
+
lintSql: (details) => Promise.resolve({ diagnostics: [], schemaVersion: details.schemaVersion }),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Provides the SQLite raw SQL executor used by Embedded Prisma Studio.
|
|
62
|
+
*
|
|
63
|
+
* @returns SQLite-backed database admin executor.
|
|
64
|
+
*/
|
|
65
|
+
function $provideSqliteDatabaseAdminExecutor(): DatabaseAdminExecutor {
|
|
66
|
+
const database = $provideAgentsServerSqliteDatabase();
|
|
67
|
+
|
|
68
|
+
return {
|
|
69
|
+
execute: (query) => Promise.resolve(executeSqliteDatabaseAdminQuery(database, query)),
|
|
70
|
+
executeTransaction: (queries) =>
|
|
71
|
+
Promise.resolve(
|
|
72
|
+
database.transaction((transactionQueries: ReadonlyArray<DatabaseAdminQuery>) =>
|
|
73
|
+
transactionQueries.map((query) => executeSqliteDatabaseAdminQuery(database, query)),
|
|
74
|
+
)(queries),
|
|
75
|
+
),
|
|
76
|
+
lintSql: (details) => Promise.resolve({ diagnostics: [], schemaVersion: details.schemaVersion }),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Executes one PostgreSQL query for Embedded Prisma Studio.
|
|
82
|
+
*
|
|
83
|
+
* @param client - PostgreSQL pool or transaction client.
|
|
84
|
+
* @param query - SQL query generated by Embedded Prisma Studio.
|
|
85
|
+
* @returns JSON-safe result rows.
|
|
86
|
+
*/
|
|
87
|
+
async function executePostgresDatabaseAdminQuery(
|
|
88
|
+
client: Pick<Pool | PoolClient, 'query'>,
|
|
89
|
+
query: DatabaseAdminQuery,
|
|
90
|
+
): Promise<Array<Record<string, unknown>>> {
|
|
91
|
+
const result = await client.query(query.sql, normalizeDatabaseAdminParameters(query.parameters));
|
|
92
|
+
return normalizeDatabaseAdminRows(query, result.rows as Array<Record<string, unknown>>);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Executes PostgreSQL queries inside one database transaction.
|
|
97
|
+
*
|
|
98
|
+
* @param pool - Shared PostgreSQL pool.
|
|
99
|
+
* @param queries - SQL queries generated by Embedded Prisma Studio.
|
|
100
|
+
* @returns Ordered result sets for each query.
|
|
101
|
+
*/
|
|
102
|
+
async function executePostgresDatabaseAdminTransaction(
|
|
103
|
+
pool: Pool,
|
|
104
|
+
queries: ReadonlyArray<DatabaseAdminQuery>,
|
|
105
|
+
): Promise<Array<Array<Record<string, unknown>>>> {
|
|
106
|
+
const client = await pool.connect();
|
|
107
|
+
|
|
108
|
+
try {
|
|
109
|
+
await client.query('BEGIN');
|
|
110
|
+
const results: Array<Array<Record<string, unknown>>> = [];
|
|
111
|
+
|
|
112
|
+
for (const query of queries) {
|
|
113
|
+
results.push(await executePostgresDatabaseAdminQuery(client, query));
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
await client.query('COMMIT');
|
|
117
|
+
return results;
|
|
118
|
+
} catch (error) {
|
|
119
|
+
await client.query('ROLLBACK').catch(() => undefined);
|
|
120
|
+
throw error;
|
|
121
|
+
} finally {
|
|
122
|
+
client.release();
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Executes one SQLite query for Embedded Prisma Studio.
|
|
128
|
+
*
|
|
129
|
+
* @param database - Shared SQLite database.
|
|
130
|
+
* @param query - SQL query generated by Embedded Prisma Studio.
|
|
131
|
+
* @returns JSON-safe result rows.
|
|
132
|
+
*/
|
|
133
|
+
function executeSqliteDatabaseAdminQuery(
|
|
134
|
+
database: AgentsServerSqliteDatabase,
|
|
135
|
+
query: DatabaseAdminQuery,
|
|
136
|
+
): Array<Record<string, unknown>> {
|
|
137
|
+
const statement = database.prepare(query.sql);
|
|
138
|
+
const parameters = normalizeDatabaseAdminParameters(query.parameters);
|
|
139
|
+
const isReader = statement.reader === true;
|
|
140
|
+
const rows = isReader ? statement.all(...parameters) : [];
|
|
141
|
+
|
|
142
|
+
if (!isReader) {
|
|
143
|
+
statement.run(...parameters);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
return normalizeDatabaseAdminRows(query, rows);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Normalizes query parameters before passing them into SQL drivers.
|
|
151
|
+
*
|
|
152
|
+
* @param parameters - Query parameters generated by Embedded Prisma Studio.
|
|
153
|
+
* @returns Parameters safe to bind to PostgreSQL or SQLite.
|
|
154
|
+
*/
|
|
155
|
+
function normalizeDatabaseAdminParameters(parameters: ReadonlyArray<unknown> = []): Array<unknown> {
|
|
156
|
+
return parameters.map((value) => (value === undefined ? null : value));
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Applies Studio result transformations and converts rows into JSON-safe objects.
|
|
161
|
+
*
|
|
162
|
+
* @param query - SQL query whose transformations should be applied.
|
|
163
|
+
* @param rows - Raw database rows.
|
|
164
|
+
* @returns JSON-safe transformed rows.
|
|
165
|
+
*/
|
|
166
|
+
function normalizeDatabaseAdminRows(
|
|
167
|
+
query: DatabaseAdminQuery,
|
|
168
|
+
rows: ReadonlyArray<Record<string, unknown>>,
|
|
169
|
+
): Array<Record<string, unknown>> {
|
|
170
|
+
return rows.map((row) => normalizeDatabaseAdminRow(applyDatabaseAdminQueryTransformations(query, row)));
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Applies one query's declared result transformations to a row.
|
|
175
|
+
*
|
|
176
|
+
* @param query - SQL query whose transformations should be applied.
|
|
177
|
+
* @param row - Raw database row.
|
|
178
|
+
* @returns Transformed row.
|
|
179
|
+
*/
|
|
180
|
+
function applyDatabaseAdminQueryTransformations(
|
|
181
|
+
query: DatabaseAdminQuery,
|
|
182
|
+
row: Record<string, unknown>,
|
|
183
|
+
): Record<string, unknown> {
|
|
184
|
+
const transformations = query.transformations;
|
|
185
|
+
|
|
186
|
+
if (!transformations || Object.keys(transformations).length === 0) {
|
|
187
|
+
return row;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
const transformedRow = { ...row };
|
|
191
|
+
|
|
192
|
+
for (const [column, transformation] of Object.entries(transformations)) {
|
|
193
|
+
if (transformation !== 'json-parse' || typeof transformedRow[column] !== 'string') {
|
|
194
|
+
continue;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
try {
|
|
198
|
+
transformedRow[column] = JSON.parse(transformedRow[column] as string);
|
|
199
|
+
} catch (error) {
|
|
200
|
+
console.error(`Failed to JSON.parse database admin column "${column}".`, error);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return transformedRow;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
/**
|
|
208
|
+
* Converts one database row into values that can be returned via `NextResponse.json`.
|
|
209
|
+
*
|
|
210
|
+
* @param row - Database row.
|
|
211
|
+
* @returns JSON-safe row.
|
|
212
|
+
*/
|
|
213
|
+
function normalizeDatabaseAdminRow(row: Record<string, unknown>): Record<string, unknown> {
|
|
214
|
+
return Object.fromEntries(
|
|
215
|
+
Object.entries(row).map(([key, value]) => [key, normalizeDatabaseAdminValue(value)]),
|
|
216
|
+
) as Record<string, unknown>;
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* Converts one database value into a JSON-safe representation.
|
|
221
|
+
*
|
|
222
|
+
* @param value - Database value.
|
|
223
|
+
* @returns JSON-safe value.
|
|
224
|
+
*/
|
|
225
|
+
function normalizeDatabaseAdminValue(value: unknown): unknown {
|
|
226
|
+
if (typeof value === 'bigint') {
|
|
227
|
+
return value.toString();
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
if (value instanceof Date) {
|
|
231
|
+
return value.toISOString();
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
if (typeof Buffer !== 'undefined' && Buffer.isBuffer(value)) {
|
|
235
|
+
return value.toString('base64');
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (Array.isArray(value)) {
|
|
239
|
+
return value.map(normalizeDatabaseAdminValue);
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
if (typeof value === 'object' && value !== null) {
|
|
243
|
+
return Object.fromEntries(
|
|
244
|
+
Object.entries(value as Record<string, unknown>).map(([key, childValue]) => [
|
|
245
|
+
key,
|
|
246
|
+
normalizeDatabaseAdminValue(childValue),
|
|
247
|
+
]),
|
|
248
|
+
);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
return value;
|
|
252
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Pool } from 'pg';
|
|
2
|
+
import { resolvePostgresConnectionString } from './resolvePostgresConnectionString';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Shared PostgreSQL pool reused across the Agents Server process.
|
|
6
|
+
*
|
|
7
|
+
* @private internal singleton of Agents Server database layer
|
|
8
|
+
*/
|
|
9
|
+
let postgresPool: Pool | null = null;
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Provides the shared PostgreSQL pool used by raw SQL helpers and local PostgreSQL adapters.
|
|
13
|
+
*
|
|
14
|
+
* @returns Shared PostgreSQL pool.
|
|
15
|
+
*
|
|
16
|
+
* @private exported from Agents Server database utilities
|
|
17
|
+
*/
|
|
18
|
+
export function $providePostgresPool(): Pool {
|
|
19
|
+
if (!postgresPool) {
|
|
20
|
+
postgresPool = new Pool({
|
|
21
|
+
connectionString: resolvePostgresConnectionString(),
|
|
22
|
+
ssl: { rejectUnauthorized: false },
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return postgresPool;
|
|
27
|
+
}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
import { createRequire } from 'module';
|
|
1
2
|
import { $isRunningInNode } from '@promptbook-local/utils';
|
|
2
3
|
import { createClient, SupabaseClient } from '@supabase/supabase-js';
|
|
3
|
-
import { isAgentsServerSqliteMode } from './agentsServerDatabaseMode';
|
|
4
|
+
import { isAgentsServerPostgresMode, isAgentsServerSqliteMode } from './agentsServerDatabaseMode';
|
|
4
5
|
import { $provideLocalSqliteSupabase } from './sqlite/$provideLocalSqliteSupabase';
|
|
5
6
|
import { AgentsServerDatabase } from './schema';
|
|
6
7
|
|
|
8
|
+
const requirePostgresSupabase = createRequire(__filename);
|
|
9
|
+
|
|
7
10
|
/**
|
|
8
11
|
* Internal cache for `$provideSupabaseForServer`
|
|
9
12
|
*
|
|
@@ -32,6 +35,13 @@ export function $provideSupabaseForServer(): SupabaseClient<AgentsServerDatabase
|
|
|
32
35
|
return $provideLocalSqliteSupabase() as SupabaseClient<AgentsServerDatabase>;
|
|
33
36
|
}
|
|
34
37
|
|
|
38
|
+
if (isAgentsServerPostgresMode()) {
|
|
39
|
+
const { $provideLocalPostgresSupabase } = requirePostgresSupabase(
|
|
40
|
+
'./postgres/$provideLocalPostgresSupabase',
|
|
41
|
+
) as typeof import('./postgres/$provideLocalPostgresSupabase');
|
|
42
|
+
return $provideLocalPostgresSupabase() as SupabaseClient<AgentsServerDatabase>;
|
|
43
|
+
}
|
|
44
|
+
|
|
35
45
|
if (!supabase) {
|
|
36
46
|
// Create a single supabase client for interacting with your database
|
|
37
47
|
supabase = createClient<AgentsServerDatabase>(
|
|
@@ -11,7 +11,7 @@ export const AGENTS_SERVER_SQLITE_PATH_ENV_NAME = 'PTBK_AGENTS_SERVER_SQLITE_PAT
|
|
|
11
11
|
/**
|
|
12
12
|
* Supported Agents Server database backends.
|
|
13
13
|
*/
|
|
14
|
-
export type AgentsServerDatabaseMode = 'supabase' | 'sqlite';
|
|
14
|
+
export type AgentsServerDatabaseMode = 'supabase' | 'sqlite' | 'postgres';
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Resolves the configured Agents Server database backend.
|
|
@@ -23,6 +23,10 @@ export function resolveAgentsServerDatabaseMode(): AgentsServerDatabaseMode {
|
|
|
23
23
|
return 'sqlite';
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
if (rawMode === 'postgres' || rawMode === 'postgresql') {
|
|
27
|
+
return 'postgres';
|
|
28
|
+
}
|
|
29
|
+
|
|
26
30
|
return 'supabase';
|
|
27
31
|
}
|
|
28
32
|
|
|
@@ -32,3 +36,18 @@ export function resolveAgentsServerDatabaseMode(): AgentsServerDatabaseMode {
|
|
|
32
36
|
export function isAgentsServerSqliteMode(): boolean {
|
|
33
37
|
return resolveAgentsServerDatabaseMode() === 'sqlite';
|
|
34
38
|
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Returns whether the Agents Server is using the standalone PostgreSQL backend.
|
|
42
|
+
*/
|
|
43
|
+
export function isAgentsServerPostgresMode(): boolean {
|
|
44
|
+
return resolveAgentsServerDatabaseMode() === 'postgres';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Returns whether the Agents Server is using a standalone local database backend.
|
|
49
|
+
*/
|
|
50
|
+
export function isAgentsServerStandaloneMode(): boolean {
|
|
51
|
+
const databaseMode = resolveAgentsServerDatabaseMode();
|
|
52
|
+
return databaseMode === 'sqlite' || databaseMode === 'postgres';
|
|
53
|
+
}
|