@prostgles/prostgles 2.3.6-dev.1787160729 → 2.3.6-dev.1787224693

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 (43) hide show
  1. package/dist/server/package.json +1 -1
  2. package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.d.ts +7 -1
  3. package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.d.ts.map +1 -1
  4. package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.js +17 -7
  5. package/dist/server/src/ConnectionManager/applyStartupSchemaConfig.js.map +1 -1
  6. package/dist/server/src/ServiceManager/ServiceManager.d.ts +7 -4
  7. package/dist/server/src/ServiceManager/ServiceManager.d.ts.map +1 -1
  8. package/dist/server/src/ServiceManager/ServiceManager.js +36 -12
  9. package/dist/server/src/ServiceManager/ServiceManager.js.map +1 -1
  10. package/dist/server/src/ServiceManager/ServiceManager.spec.js +34 -2
  11. package/dist/server/src/ServiceManager/ServiceManager.spec.js.map +1 -1
  12. package/dist/server/src/ServiceManager/ServiceManagerTypes.d.ts +1 -1
  13. package/dist/server/src/ServiceManager/buildService.js +1 -1
  14. package/dist/server/src/ServiceManager/buildService.js.map +1 -1
  15. package/dist/server/src/ServiceManager/enableService.d.ts +3 -2
  16. package/dist/server/src/ServiceManager/enableService.d.ts.map +1 -1
  17. package/dist/server/src/ServiceManager/enableService.js.map +1 -1
  18. package/dist/server/src/ServiceManager/getServiceEndpoints.d.ts.map +1 -1
  19. package/dist/server/src/ServiceManager/getServiceEndpoints.js +9 -1
  20. package/dist/server/src/ServiceManager/getServiceEndpoints.js.map +1 -1
  21. package/dist/server/src/ServiceManager/initialiseServices.d.ts.map +1 -1
  22. package/dist/server/src/ServiceManager/initialiseServices.js +3 -2
  23. package/dist/server/src/ServiceManager/initialiseServices.js.map +1 -1
  24. package/dist/server/src/cli/cliTemplateFiles.js +34 -6
  25. package/dist/server/src/cli/cliTemplateFiles.js.map +1 -1
  26. package/dist/server/src/cli/getCliAgentsFile.d.ts.map +1 -1
  27. package/dist/server/src/cli/getCliAgentsFile.js +8 -0
  28. package/dist/server/src/cli/getCliAgentsFile.js.map +1 -1
  29. package/dist/server/src/init/prostglesOnReady.d.ts +2 -677
  30. package/dist/server/src/init/prostglesOnReady.d.ts.map +1 -1
  31. package/dist/server/src/init/prostglesOnReady.js +13 -4
  32. package/dist/server/src/init/prostglesOnReady.js.map +1 -1
  33. package/dist/server/src/schemaConfig.d.ts +4 -0
  34. package/dist/server/src/schemaConfig.d.ts.map +1 -1
  35. package/dist/server/src/schemaConfig.js.map +1 -1
  36. package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.d.ts.map +1 -1
  37. package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.js +1 -2
  38. package/dist/server/src/serverFunctions/adminServerFunctions/stateServerAdminFunctions.js.map +1 -1
  39. package/dist/server/src/services.d.ts +2 -1
  40. package/dist/server/src/services.d.ts.map +1 -1
  41. package/dist/server/src/services.js +3 -1
  42. package/dist/server/src/services.js.map +1 -1
  43. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prostgles/prostgles",
3
- "version": "2.3.6-dev.1787160729",
3
+ "version": "2.3.6-dev.1787224693",
4
4
  "description": "Prostgles UI runtime and configurable PostgreSQL dashboard",
5
5
  "main": "dist/server/src/schemaConfig.js",
6
6
  "bin": {
@@ -1,8 +1,14 @@
1
1
  import type { DBS } from "..";
2
2
  import type { DB } from "prostgles-server/dist/Prostgles";
3
+ export declare const getStartupSchemaConfig: () => {
4
+ configPath: string;
5
+ databaseUrl: string;
6
+ schemaConfig: import("../schemaConfig").SchemaConfig;
7
+ } | undefined;
3
8
  /** Apply the config selected by the CLI after the state database is ready. */
4
- export declare const applyStartupSchemaConfig: ({ dbs, db, }: {
9
+ export declare const applyStartupSchemaConfig: ({ dbs, db, startupSchemaConfig, }: {
5
10
  dbs: DBS;
6
11
  db: DB;
12
+ startupSchemaConfig: ReturnType<typeof getStartupSchemaConfig>;
7
13
  }) => Promise<void>;
8
14
  //# sourceMappingURL=applyStartupSchemaConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"applyStartupSchemaConfig.d.ts","sourceRoot":"","sources":["../../../../src/ConnectionManager/applyStartupSchemaConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAM9B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AAE1D,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,GAAU,cAG5C;IACD,GAAG,EAAE,GAAG,CAAC;IACT,EAAE,EAAE,EAAE,CAAC;CACR,kBAiDA,CAAC"}
1
+ {"version":3,"file":"applyStartupSchemaConfig.d.ts","sourceRoot":"","sources":["../../../../src/ConnectionManager/applyStartupSchemaConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAM9B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AAE1D,eAAO,MAAM,sBAAsB;;;;aA2BlC,CAAC;AAEF,8EAA8E;AAC9E,eAAO,MAAM,wBAAwB,GAAU,mCAI5C;IACD,GAAG,EAAE,GAAG,CAAC;IACT,EAAE,EAAE,EAAE,CAAC;IACP,mBAAmB,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC,CAAC;CAChE,kBA8BA,CAAC"}
@@ -1,21 +1,19 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applyStartupSchemaConfig = void 0;
3
+ exports.applyStartupSchemaConfig = exports.getStartupSchemaConfig = void 0;
4
4
  const __1 = require("..");
5
5
  const upsertConnection_1 = require("../upsertConnection");
6
6
  const getSchemaConfig_1 = require("./getSchemaConfig");
7
7
  const syncSchemaConfig_1 = require("./syncSchemaConfig");
8
- /** Apply the config selected by the CLI after the state database is ready. */
9
- const applyStartupSchemaConfig = async ({ dbs, db, }) => {
8
+ const getStartupSchemaConfig = () => {
10
9
  const configPath = process.env.PROSTGLES_UI_CONFIG;
11
10
  if (!configPath)
12
11
  return;
13
- const config_sync = {
12
+ const loadedSchemaConfig = (0, getSchemaConfig_1.getSchemaConfig)({
14
13
  configPath,
15
14
  type: "cli",
16
15
  lastSynced: new Date().toISOString(),
17
- };
18
- const loadedSchemaConfig = (0, getSchemaConfig_1.getSchemaConfig)(config_sync);
16
+ });
19
17
  const schemaConfig = loadedSchemaConfig.config;
20
18
  if (!schemaConfig.id) {
21
19
  throw new Error("The config must export an `id` when started through the CLI.");
@@ -24,6 +22,18 @@ const applyStartupSchemaConfig = async ({ dbs, db, }) => {
24
22
  if (!databaseUrl) {
25
23
  throw new Error("PROSTGLES_DATABASE_URL is required when started through the CLI.");
26
24
  }
25
+ return {
26
+ configPath: loadedSchemaConfig.configPath,
27
+ databaseUrl,
28
+ schemaConfig,
29
+ };
30
+ };
31
+ exports.getStartupSchemaConfig = getStartupSchemaConfig;
32
+ /** Apply the config selected by the CLI after the state database is ready. */
33
+ const applyStartupSchemaConfig = async ({ dbs, db, startupSchemaConfig, }) => {
34
+ if (!startupSchemaConfig)
35
+ return;
36
+ const { configPath, databaseUrl, schemaConfig } = startupSchemaConfig;
27
37
  const configuredConnection = {
28
38
  ...schemaConfig.connection,
29
39
  type: "Connection URI",
@@ -40,7 +50,7 @@ const applyStartupSchemaConfig = async ({ dbs, db, }) => {
40
50
  await (0, syncSchemaConfig_1.syncSchemaConfig)({
41
51
  dbs,
42
52
  connectionId: connection.id,
43
- configPath: loadedSchemaConfig.configPath,
53
+ configPath,
44
54
  type: "cli",
45
55
  });
46
56
  await __1.connectionManager.startConnection(connection.id, dbs, db);
@@ -1 +1 @@
1
- {"version":3,"file":"applyStartupSchemaConfig.js","sourceRoot":"","sources":["../../../../src/ConnectionManager/applyStartupSchemaConfig.ts"],"names":[],"mappings":";;;AACA,0BAAuC;AAEvC,0DAAuD;AACvD,uDAAoD;AACpD,yDAAsD;AAGtD,8EAA8E;AACvE,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC7C,GAAG,EACH,EAAE,GAIH,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,WAAW,GAAG;QAClB,UAAU;QACV,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KAC5B,CAAC;IACX,MAAM,kBAAkB,GAAG,IAAA,iCAAe,EAAC,WAAW,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IACD,MAAM,oBAAoB,GAAG;QAC3B,GAAG,YAAY,CAAC,UAAU;QAC1B,IAAI,EAAE,gBAAyB;QAC/B,OAAO,EAAE,WAAW;KACrB,CAAC;IAEF,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;QACvD,IAAI,EAAE,YAAY,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,mCAAgB,EAC3C;QACE,GAAG,oBAAoB;QACvB,EAAE,EAAE,kBAAkB,EAAE,EAAE;QAC1B,IAAI,EAAE,YAAY,CAAC,EAAE;KACF,EACrB,IAAI,EACJ,GAAG,EACH,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,MAAM,IAAA,mCAAgB,EAAC;QACrB,GAAG;QACH,YAAY,EAAE,UAAU,CAAC,EAAE;QAC3B,UAAU,EAAE,kBAAkB,CAAC,UAAU;QACzC,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,qBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAvDW,QAAA,wBAAwB,4BAuDnC"}
1
+ {"version":3,"file":"applyStartupSchemaConfig.js","sourceRoot":"","sources":["../../../../src/ConnectionManager/applyStartupSchemaConfig.ts"],"names":[],"mappings":";;;AACA,0BAAuC;AAEvC,0DAAuD;AACvD,uDAAoD;AACpD,yDAAsD;AAG/C,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO;IAExB,MAAM,kBAAkB,GAAG,IAAA,iCAAe,EAAC;QACzC,UAAU;QACV,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC;IAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACb,8DAA8D,CAC/D,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACvD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,kEAAkE,CACnE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,kBAAkB,CAAC,UAAU;QACzC,WAAW;QACX,YAAY;KACb,CAAC;AACJ,CAAC,CAAC;AA3BW,QAAA,sBAAsB,0BA2BjC;AAEF,8EAA8E;AACvE,MAAM,wBAAwB,GAAG,KAAK,EAAE,EAC7C,GAAG,EACH,EAAE,EACF,mBAAmB,GAKpB,EAAE,EAAE;IACH,IAAI,CAAC,mBAAmB;QAAE,OAAO;IACjC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC;IACtE,MAAM,oBAAoB,GAAG;QAC3B,GAAG,YAAY,CAAC,UAAU;QAC1B,IAAI,EAAE,gBAAyB;QAC/B,OAAO,EAAE,WAAW;KACrB,CAAC;IAEF,MAAM,kBAAkB,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC;QACvD,IAAI,EAAE,YAAY,CAAC,EAAE;KACtB,CAAC,CAAC;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,IAAA,mCAAgB,EAC3C;QACE,GAAG,oBAAoB;QACvB,EAAE,EAAE,kBAAkB,EAAE,EAAE;QAC1B,IAAI,EAAE,YAAY,CAAC,EAAE;KACF,EACrB,IAAI,EACJ,GAAG,EACH,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,MAAM,IAAA,mCAAgB,EAAC;QACrB,GAAG;QACH,YAAY,EAAE,UAAU,CAAC,EAAE;QAC3B,UAAU;QACV,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;IACH,MAAM,qBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC;AAtCW,QAAA,wBAAwB,4BAsCnC"}
@@ -3,16 +3,19 @@ import type { DBS } from "..";
3
3
  import { ServiceInstance, type ProstglesService, type RunningServiceInstance, type ServiceRegistry } from "./ServiceManagerTypes";
4
4
  import type { ExtractBy } from "../../../common/utils";
5
5
  export type StringKeyof<T> = Extract<keyof T, string>;
6
- export type ServiceManagerOptions<Services extends ServiceRegistry> = {
6
+ export type ServiceManagerConfig<Services extends ServiceRegistry> = {
7
7
  services: Services;
8
8
  serviceRoot: string;
9
- dbs?: DBS;
10
9
  };
11
10
  export declare class ServiceManager<Services extends ServiceRegistry = Record<string, ProstglesService>> {
12
11
  readonly services: Services;
13
- readonly serviceRoot: string;
12
+ private readonly serviceRoots;
14
13
  dbs: DBS | undefined;
15
- constructor({ services, serviceRoot, dbs }: ServiceManagerOptions<Services>);
14
+ private constructor();
15
+ static create<Services extends ServiceRegistry>(config: ServiceManagerConfig<Services>, dbs: DBS | undefined): Promise<ServiceManager<Services>>;
16
+ private registerServices;
17
+ addServices: <AdditionalServices extends ServiceRegistry>({ services, serviceRoot, }: ServiceManagerConfig<AdditionalServices>) => Promise<ServiceManager<Services & AdditionalServices>>;
18
+ getServiceRoot: (serviceName: string) => string;
16
19
  serviceLogUpdateQueue: Map<string, Promise<void>>;
17
20
  onServiceLog: (serviceName: StringKeyof<Services>, logItems: ProcessLog[]) => void;
18
21
  activeServices: Map<string, ServiceInstance>;
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceManager.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAI9B,OAAO,EAEL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,qBAAqB,CAAC,QAAQ,SAAS,eAAe,IAAI;IACpE,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,CAAC;AAEF,qBAAa,cAAc,CACzB,QAAQ,SAAS,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC;gBAET,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,EAAE,qBAAqB,CAAC,QAAQ,CAAC;IAsB3E,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAa;IAC9D,YAAY,GACV,aAAa,WAAW,CAAC,QAAQ,CAAC,EAClC,UAAU,UAAU,EAAE,UAiDtB;IACF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAa;IACzD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAa;IAE3E,gBAAgB,CAAC,MAAM,SAAS,eAAe,CAAC,QAAQ,CAAC,EACvD,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAClC,cAAc,EAAE,MAAM,GAQG,OAAO,CAAC,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAGvE,UAAU,CACR,WAAW,SAAS,WAAW,CAAC,QAAQ,CAAC,EACzC,gBAAgB,SAAS,QAAQ,EAEjC,WAAW,EAAE,WAAW,GACvB,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS;IAOvD,qBAAqB,CACzB,WAAW,SAAS,WAAW,CAAC,QAAQ,CAAC,EACzC,gBAAgB,SAAS,QAAQ,EAEjC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,GACpC,OAAO,CACR,SAAS,CACP,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAC9C,QAAQ,EACR,SAAS,CACV,CACF;IAqBD,YAAY,uIAA2B;IAEvC,YAAY,oIAA2B;IAEvC,aAAa,mHAA4B;IAEzC,WAAW,gCAA0B;IAErC,OAAO,aAOL;CACH"}
1
+ {"version":3,"file":"ServiceManager.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAI9B,OAAO,EAEL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAC;AAK/B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,MAAM,oBAAoB,CAAC,QAAQ,SAAS,eAAe,IAAI;IACnE,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,qBAAa,cAAc,CACzB,QAAQ,SAAS,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAEnE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6B;IAC1D,GAAG,EAAE,GAAG,GAAG,SAAS,CAAC;IAErB,OAAO;WAQM,MAAM,CAAC,QAAQ,SAAS,eAAe,EAClD,MAAM,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EACtC,GAAG,EAAE,GAAG,GAAG,SAAS;YAOR,gBAAgB;IA2B9B,WAAW,GAAU,kBAAkB,SAAS,eAAe,EAAE,4BAG9D,oBAAoB,CAAC,kBAAkB,CAAC,4DAMzC;IAEF,cAAc,GAAI,aAAa,MAAM,YAMnC;IAEF,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAa;IAC9D,YAAY,GACV,aAAa,WAAW,CAAC,QAAQ,CAAC,EAClC,UAAU,UAAU,EAAE,UAiDtB;IACF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAa;IACzD,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAa;IAE3E,gBAAgB,CAAC,MAAM,SAAS,eAAe,CAAC,QAAQ,CAAC,EACvD,WAAW,EAAE,WAAW,CAAC,QAAQ,CAAC,EAClC,cAAc,EAAE,MAAM,GAQG,OAAO,CAAC,eAAe,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAGvE,UAAU,CACR,WAAW,SAAS,WAAW,CAAC,QAAQ,CAAC,EACzC,gBAAgB,SAAS,QAAQ,EAEjC,WAAW,EAAE,WAAW,GACvB,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,GAAG,SAAS;IAOvD,qBAAqB,CACzB,WAAW,SAAS,WAAW,CAAC,QAAQ,CAAC,EACzC,gBAAgB,SAAS,QAAQ,EAEjC,WAAW,EAAE,WAAW,EACxB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,GACpC,OAAO,CACR,SAAS,CACP,eAAe,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAC9C,QAAQ,EACR,SAAS,CACV,CACF;IAqBD,YAAY,uIAA2B;IAEvC,YAAY,oIAA2B;IAEvC,aAAa,mHAA4B;IAEzC,WAAW,gCAA0B;IAErC,OAAO,aAOL;CACH"}
@@ -11,22 +11,46 @@ const utils_1 = require("../init/utils");
11
11
  const withRetries_1 = require("./withRetries");
12
12
  class ServiceManager {
13
13
  services;
14
- serviceRoot;
14
+ serviceRoots = new Map();
15
15
  dbs;
16
- constructor({ services, serviceRoot, dbs }) {
17
- if (services !== ServiceManagerTypes_1.prostglesServices) {
18
- const clashingServices = Object.keys(services).filter((serviceName) => Object.keys(ServiceManagerTypes_1.prostglesServices).includes(serviceName));
19
- if (clashingServices.length > 0) {
20
- throw new Error(`ServiceManager: Clashing service names detected: ${clashingServices.join(", ")}. Please rename your services to avoid conflicts with built-in services.`);
21
- }
22
- }
23
- this.services = services;
24
- this.serviceRoot = serviceRoot;
16
+ constructor(_config, dbs) {
17
+ this.services = {};
25
18
  this.dbs = dbs;
26
- if (dbs) {
27
- void (0, initialiseServices_1.initialiseServices)(this, dbs).catch(console.error);
19
+ }
20
+ static async create(config, dbs) {
21
+ const instance = new ServiceManager(config, dbs);
22
+ await instance.registerServices(config, true);
23
+ return instance;
24
+ }
25
+ async registerServices({ services, serviceRoot }, allowBuiltInServices = false) {
26
+ const clashingServices = Object.keys(services).filter((serviceName) => Object.hasOwn(this.services, serviceName) ||
27
+ (!allowBuiltInServices &&
28
+ Object.hasOwn(ServiceManagerTypes_1.prostglesServices, serviceName)));
29
+ if (clashingServices.length) {
30
+ throw new Error(`ServiceManager: Clashing service names detected: ${clashingServices.join(", ")}. Please rename your services to avoid conflicts with registered or built-in services.`);
31
+ }
32
+ Object.assign(this.services, services);
33
+ Object.keys(services).forEach((serviceName) => {
34
+ this.serviceRoots.set(serviceName, serviceRoot);
35
+ });
36
+ if (this.dbs) {
37
+ await (0, initialiseServices_1.initialiseServices)(this, this.dbs);
28
38
  }
29
39
  }
40
+ addServices = async ({ services, serviceRoot, }) => {
41
+ await this.registerServices({
42
+ services,
43
+ serviceRoot,
44
+ });
45
+ return this;
46
+ };
47
+ getServiceRoot = (serviceName) => {
48
+ const serviceRoot = this.serviceRoots.get(serviceName);
49
+ if (serviceRoot === undefined) {
50
+ throw new Error(`Service ${serviceName} has no registered root`);
51
+ }
52
+ return serviceRoot;
53
+ };
30
54
  serviceLogUpdateQueue = new Map();
31
55
  onServiceLog = (serviceName, logItems) => {
32
56
  const prevQueue = this.serviceLogUpdateQueue.get(serviceName) ?? Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceManager.js","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ServiceManager.js","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.ts"],"names":[],"mappings":"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"}
@@ -7,15 +7,47 @@ const ServiceManager_1 = require("./ServiceManager");
7
7
  const ServiceManagerTypes_1 = require("./ServiceManagerTypes");
8
8
  exports.IS_GITHUB_WORKER = process.env.CI === "true";
9
9
  void (0, node_test_1.describe)("Service manager tests", async () => {
10
+ await (0, node_test_1.test)("Initialises built-in and additional services without name clashes", async () => {
11
+ let insertedServiceNames = [];
12
+ const serviceManager = await ServiceManager_1.ServiceManager.create({
13
+ services: ServiceManagerTypes_1.prostglesServices,
14
+ serviceRoot: "built-in-services",
15
+ }, {
16
+ services: {
17
+ insertMany: (services) => {
18
+ insertedServiceNames = services.map(({ name }) => name);
19
+ return Promise.resolve();
20
+ },
21
+ find: () => Promise.resolve([]),
22
+ },
23
+ });
24
+ const extendedServiceManager = await serviceManager.addServices({
25
+ services: { appService: ServiceManagerTypes_1.prostglesServices.documents },
26
+ serviceRoot: "app-services",
27
+ });
28
+ assert_1.strict.equal(extendedServiceManager.services.appService, ServiceManagerTypes_1.prostglesServices.documents);
29
+ assert_1.strict.equal(extendedServiceManager.getServiceRoot("documents"), "built-in-services");
30
+ assert_1.strict.equal(extendedServiceManager.getServiceRoot("appService"), "app-services");
31
+ await assert_1.strict.rejects(() => extendedServiceManager.addServices({
32
+ services: { documents: ServiceManagerTypes_1.prostglesServices.documents },
33
+ serviceRoot: "app-services",
34
+ }));
35
+ assert_1.strict.deepEqual(insertedServiceNames.sort(), [
36
+ "appService",
37
+ "documents",
38
+ "speechToText",
39
+ "webSearchSearxng",
40
+ ]);
41
+ });
10
42
  await (0, node_test_1.test)("Enable speechToText", async () => {
11
43
  if (exports.IS_GITHUB_WORKER) {
12
44
  return;
13
45
  }
14
46
  let logText = "";
15
- const serviceManager = new ServiceManager_1.ServiceManager({
47
+ const serviceManager = await ServiceManager_1.ServiceManager.create({
16
48
  services: ServiceManagerTypes_1.prostglesServices,
17
49
  serviceRoot: "src/ServiceManager/services",
18
- });
50
+ }, undefined);
19
51
  const res = await serviceManager.enableService("speechToText", (logs) => {
20
52
  const lastLog = logs.at(-1)?.text;
21
53
  console.warn(lastLog);
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceManager.spec.js","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.spec.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAChC,yCAA2C;AAC3C,qDAAkD;AAClD,+DAA0D;AAE7C,QAAA,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,CAAC;AAE1D,KAAK,IAAA,oBAAQ,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;IAChD,MAAM,IAAA,gBAAI,EAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QAC3C,IAAI,wBAAgB,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,IAAI,+BAAc,CAAC;YACxC,QAAQ,EAAE,uCAAiB;YAC3B,WAAW,EAAE,6BAA6B;SAC3C,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,IAAI,OAAO,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpC,eAAM,CAAC,KAAK,CACV,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EACpD,IAAI,EACJ,iCAAiC,CAClC,CAAC;QACF,cAAc,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ServiceManager.spec.js","sourceRoot":"","sources":["../../../../src/ServiceManager/ServiceManager.spec.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ export type ProstglesService = {
15
15
  env?: Record<string, string>;
16
16
  /**
17
17
  * Directory containing the Docker build context.
18
- * Relative paths resolve from ServiceManager.serviceRoot.
18
+ * Relative paths resolve from the root used to register this service.
19
19
  * Defaults to `<serviceName>/src`.
20
20
  */
21
21
  buildContext?: string;
@@ -34,7 +34,7 @@ async function buildService(serviceName, onLogs) {
34
34
  if (!service) {
35
35
  throw new Error(`Service ${serviceName} not found in service registry`);
36
36
  }
37
- const serviceCwd = (0, path_1.resolve)(this.serviceRoot, service.buildContext ?? (0, path_1.join)(serviceName, "src"));
37
+ const serviceCwd = (0, path_1.resolve)(this.getServiceRoot(serviceName), service.buildContext ?? (0, path_1.join)(serviceName, "src"));
38
38
  const imageName = (0, exports.camelCaseToSkewerCase)(serviceName);
39
39
  const { buildArgs } = await (0, getSelectedConfigEnvs_1.getSelectedConfigEnvs)(this, serviceName);
40
40
  /** Only rebuild if hash differs */
@@ -1 +1 @@
1
- {"version":3,"file":"buildService.js","sourceRoot":"","sources":["../../../../src/ServiceManager/buildService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"buildService.js","sourceRoot":"","sources":["../../../../src/ServiceManager/buildService.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ProcessLog } from "../McpHub/DockerSandbox/executeDockerCommand";
2
- import type { ServiceManager } from "./ServiceManager";
3
- export declare function enableService(this: ServiceManager, serviceName: string, onLogs: (logs: ProcessLog[]) => void): Promise<import("./ServiceManagerTypes").RunningServiceInstance<import("./ServiceManagerTypes").ProstglesService>>;
2
+ import type { ServiceManager, StringKeyof } from "./ServiceManager";
3
+ import type { RunningServiceInstance, ServiceRegistry } from "./ServiceManagerTypes";
4
+ export declare function enableService<Services extends ServiceRegistry, ServiceName extends StringKeyof<Services>>(this: ServiceManager<Services>, serviceName: ServiceName, onLogs: (logs: ProcessLog[]) => void): Promise<RunningServiceInstance<Services[ServiceName]>>;
4
5
  //# sourceMappingURL=enableService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"enableService.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/enableService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAsB,aAAa,CACjC,IAAI,EAAE,cAAc,EACpB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,qHAiCrC"}
1
+ {"version":3,"file":"enableService.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/enableService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAE/B,wBAAsB,aAAa,CACjC,QAAQ,SAAS,eAAe,EAChC,WAAW,SAAS,WAAW,CAAC,QAAQ,CAAC,EAEzC,IAAI,EAAE,cAAc,CAAC,QAAQ,CAAC,EAC9B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,IAAI,GACnC,OAAO,CAAC,sBAAsB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAgCxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"enableService.js","sourceRoot":"","sources":["../../../../src/ServiceManager/enableService.ts"],"names":[],"mappings":";;AAGA,sCAoCC;AApCM,KAAK,UAAU,aAAa,CAEjC,WAAmB,EACnB,MAAoC;IAEpC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,aAAa,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,WAAW,WAAW,6BAA6B,WAAW,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,oBAAoB,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;YACrD,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAC7B,EAAE,IAAI,EAAE,WAAW,EAAE,EACrB,EAAE,UAAU,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAC/C,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"enableService.js","sourceRoot":"","sources":["../../../../src/ServiceManager/enableService.ts"],"names":[],"mappings":";;AAOA,sCAuCC;AAvCM,KAAK,UAAU,aAAa,CAKjC,WAAwB,EACxB,MAAoC;IAEpC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,aAAa,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;QACxC,OAAO,aAA8D,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAChC,CAAC;IACD,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACjE,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CACb,WAAW,WAAW,6BAA6B,WAAW,EAAE,CACjE,CAAC;QACJ,CAAC;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAClE,IAAI,oBAAoB,EAAE,MAAM,KAAK,eAAe,EAAE,CAAC;YACrD,MAAM,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAC7B,EAAE,IAAI,EAAE,WAAW,EAAE,EACrB,EAAE,UAAU,EAAE,oBAAoB,CAAC,SAAS,EAAE,CAC/C,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACnE,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,OAAO,MAAgE,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getServiceEndpoints.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceEndpoints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,gBAAgB,EAAE,sCAI7D;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C,KAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,WAAW,CA0GxC,CAAC"}
1
+ {"version":3,"file":"getServiceEndpoints.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceEndpoints.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,gBAAgB,EAAE,sCAI7D;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;CAC1C,KAAG,sBAAsB,CAAC,CAAC,CAAC,CAAC,WAAW,CAkHxC,CAAC"}
@@ -75,7 +75,15 @@ const getServiceEndpoints = ({ serviceName, endpoints, baseUrl, }) => {
75
75
  throw new Error(`Error calling endpoint ${endpoint} of service ${serviceName}: ${response.status} ${response.statusText} ${errorText}`);
76
76
  }
77
77
  if (outputSchema) {
78
- const responseData = await response.json();
78
+ const text = await response.text();
79
+ let responseData;
80
+ try {
81
+ responseData = JSON.parse(text);
82
+ }
83
+ catch {
84
+ // Allow for text output if outputSchema is not JSON
85
+ responseData = text;
86
+ }
79
87
  const validatedOutput = (0, prostgles_types_1.getJSONBSchemaValidationError)(outputSchema, responseData, {
80
88
  allowExtraProperties: true,
81
89
  });
@@ -1 +1 @@
1
- {"version":3,"file":"getServiceEndpoints.js","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceEndpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getServiceEndpoints.js","sourceRoot":"","sources":["../../../../src/ServiceManager/getServiceEndpoints.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initialiseServices.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAK9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,cAAc,EAC9B,KAAK,GAAG,kBA4CT,CAAC"}
1
+ {"version":3,"file":"initialiseServices.d.ts","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAC7B,gBAAgB,cAAc,EAC9B,KAAK,GAAG,kBA0CT,CAAC"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.initialiseServices = void 0;
4
- const ServiceManagerTypes_1 = require("./ServiceManagerTypes");
5
4
  const initialiseServices = async (serviceManager, dbs) => {
6
5
  await dbs.services
7
- .insertMany(Object.entries(ServiceManagerTypes_1.prostglesServices).map(([name, service]) => ({
6
+ .insertMany(Object.entries(serviceManager.services).map(([name, service]) => ({
8
7
  name,
9
8
  label: service.label,
10
9
  icon: service.icon,
@@ -19,6 +18,8 @@ const initialiseServices = async (serviceManager, dbs) => {
19
18
  void dbs.services.find({ status: "running" }).then((services) => {
20
19
  const activeServiceNames = [];
21
20
  services.forEach((service) => {
21
+ if (!Object.hasOwn(serviceManager.services, service.name))
22
+ return;
22
23
  activeServiceNames.push(service.name);
23
24
  console.log("Re-enabling service on startup: ", service.name);
24
25
  serviceManager
@@ -1 +1 @@
1
- {"version":3,"file":"initialiseServices.js","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":";;;AAGA,+DAG+B;AAGxB,MAAM,kBAAkB,GAAG,KAAK,EACrC,cAA8B,EAC9B,GAAQ,EACR,EAAE;IACF,MAAM,GAAG,CAAC,QAAQ;SACf,UAAU,CACT,MAAM,CAAC,OAAO,CAAC,uCAAqD,CAAC,CAAC,GAAG,CACvE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAClB,CAAC;QACC,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI;QAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,SAAS;KAClB,CAA0C,CAC9C,EACD;QACE,UAAU,EAAE,WAAW;KACxB,CACF;SACA,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9D,MAAM,kBAAkB,GAAa,EAAE,CAAC;YACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,cAAc;qBACX,aAAa,CACZ,OAAO,CAAC,IAAsC,EAC9C,GAAG,EAAE,GAAE,CAAC,CACT;qBACA,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE;gBACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CACT,gDAAgD,EAChD,WAAW,CACZ,CAAC;oBACF,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AA9CW,QAAA,kBAAkB,sBA8C7B"}
1
+ {"version":3,"file":"initialiseServices.js","sourceRoot":"","sources":["../../../../src/ServiceManager/initialiseServices.ts"],"names":[],"mappings":";;;AAKO,MAAM,kBAAkB,GAAG,KAAK,EACrC,cAA8B,EAC9B,GAAQ,EACR,EAAE;IACF,MAAM,GAAG,CAAC,QAAQ;SACf,UAAU,CACT,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAG,CACzC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,CAClB,CAAC;QACC,IAAI;QACJ,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,YAAY,EAAE,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,IAAI;QAC9C,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,SAAS;KAClB,CAA0C,CAC9C,EACD;QACE,UAAU,EAAE,WAAW;KACxB,CACF;SACA,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YAC9D,MAAM,kBAAkB,GAAa,EAAE,CAAC;YACxC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC;oBAAE,OAAO;gBAClE,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9D,cAAc;qBACX,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC;qBACrC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE;gBACvD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;oBAC9C,OAAO,CAAC,GAAG,CACT,gDAAgD,EAChD,WAAW,CACZ,CAAC;oBACF,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;gBACpD,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AA5CW,QAAA,kBAAkB,sBA4C7B"}
@@ -66,6 +66,7 @@ const getCliTemplateFiles = ({ configId }) => ({
66
66
  "index.ts": `
67
67
  import { defineConfig } from "@prostgles/prostgles";
68
68
  import type { DBGeneratedSchema } from "../${exports.generatedFolderName}/DBGeneratedSchema";
69
+ import { serviceManagerConfig } from "./serviceManager";
69
70
 
70
71
  const prostgles = defineConfig<DBGeneratedSchema>();
71
72
 
@@ -74,6 +75,7 @@ const getCliTemplateFiles = ({ configId }) => ({
74
75
  connection: {
75
76
  table_options: {},
76
77
  },
78
+ services: serviceManagerConfig,
77
79
  tableConfig: {},
78
80
  });`,
79
81
  [servicesFolderName]: {
@@ -82,18 +84,28 @@ const getCliTemplateFiles = ({ configId }) => ({
82
84
  import type { ProstglesService } from "@prostgles/prostgles/services";
83
85
 
84
86
  export const myService = {
85
- buildContext: "myService",
86
87
  icon: "Extension",
87
88
  label: "My service",
88
89
  description: "Example local Docker service.",
89
90
  port: 8080,
90
91
  healthCheck: { endpoint: "/health" },
91
- endpoints: {},
92
+ endpoints: {
93
+ "/hey": {
94
+ method: "GET",
95
+ inputSchema: undefined,
96
+ description: "Service info endpoint",
97
+ outputSchema: "string",
98
+ },
99
+ },
92
100
  } as const satisfies ProstglesService;`,
93
101
  src: {
94
102
  Dockerfile: `
95
103
  FROM python:3.13-alpine
96
104
 
105
+ WORKDIR /app
106
+ RUN printf 'service-ok' > health
107
+ RUN printf 'Hello from myService!' > hey
108
+
97
109
  EXPOSE 8080
98
110
 
99
111
  CMD ["python", "-m", "http.server", "8080", "--bind", "0.0.0.0"]`,
@@ -101,14 +113,22 @@ const getCliTemplateFiles = ({ configId }) => ({
101
113
  },
102
114
  },
103
115
  "serviceManager.ts": `
104
- import { ServiceManager } from "@prostgles/prostgles/services";
116
+ import {
117
+ getServiceManager,
118
+ type ServiceManagerConfig,
119
+ } from "@prostgles/prostgles/services";
105
120
  import { myService } from "./services/myService/myService.service";
106
121
  import path from "node:path";
107
122
 
108
- export const serviceManager = new ServiceManager({
109
- services: { myService },
123
+ export const services = { myService };
124
+
125
+ export const serviceManagerConfig = {
126
+ services,
110
127
  serviceRoot: path.resolve(__dirname, "..", "..", "src", "services"),
111
- });`,
128
+ } satisfies ServiceManagerConfig<typeof services>;
129
+
130
+ /** The host-owned instance used by Prostgles and the Services UI. */
131
+ export const serviceManager = getServiceManager<typeof services>();`,
112
132
  },
113
133
  [testsFolderName]: {
114
134
  "deployment.test.ts": `
@@ -297,6 +317,7 @@ const schemaConfigGuidance = {
297
317
  joins: "Use `joins` only for relationships that cannot be inferred from foreign keys.",
298
318
  onInitSQL: "Use `onInitSQL` only for SQL initialization that cannot be expressed by `tableConfig`.",
299
319
  onMount: "Use `onMount` for startup integration work and return cleanup logic when resources are opened.",
320
+ services: "Register Docker-backed runtimes with `services` so Prostgles can expose and control them.",
300
321
  tableConfig: "Define tables and columns in `tableConfig`, including constraints and indexes.",
301
322
  tableConfigMigrations: "For schema changes that transform existing data, increment `tableConfigMigrations.version` and use `onMigrate`.",
302
323
  tableHooks: "Define `tableHooks` as a separate top-level config property.",
@@ -324,6 +345,13 @@ const getCliAgentsFile = () => `
324
345
  - ${schemaConfigGuidance.watchSchemaType}
325
346
  - ${schemaConfigGuidance.onInitSQL} ${schemaConfigGuidance.onMount}
326
347
 
348
+ ## Services
349
+
350
+ - If a server function needs a non-Node.js runtime or system dependencies, implement that work as a service instead of running it directly in the function.
351
+ - Define services under \`src/services/<serviceName>/\`, with the typed \`*.service.ts\` definition beside a \`src/\` Docker build context. Declare a health check and typed endpoints for every operation the app calls.
352
+ - Register each service in \`src/serviceManager.ts\` and expose its config through the top-level \`services\` property. Service names must not collide with built-in Prostgles services or another app service.
353
+ - Import the exported \`serviceManager\` in server functions and use \`getServiceWithRetries(serviceName)\` before calling an endpoint. This is the host-owned instance shown in the Prostgles Services UI; do not construct another \`ServiceManager\`.
354
+
327
355
  ## Typed database object
328
356
 
329
357
  - The Prostgles \`dbo\` object available in \`onMount\`, \`tableHooks\`, and server functions is \`DBOFullyTyped<DBGeneratedSchema>\`. Table names, columns, filters, selects, inserts, updates, and results are fully typed.
@@ -1 +1 @@
1
- {"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliTemplateFiles.js","sourceRoot":"","sources":["../../../../src/cli/cliTemplateFiles.ts"],"names":[],"mappings":";;;;AAAA,yCAA0C;AAC1C,mCAAqC;AAErC,8EAA6C;AAC7C,qDAAwD;AACxD,+BAAqC;AACrC,2BAA8C;AAEvC,MAAM,oBAAoB,GAAG,CAAC,EACnC,QAAQ,EACR,UAAU,GAIX,EAAE,EAAE;IACH,eAAe,CAAC,UAAU,EAAE,mBAAmB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AARW,QAAA,oBAAoB,wBAQ/B;AAEW,QAAA,aAAa,GAAG,KAAK,CAAC;AACtB,QAAA,mBAAmB,GAAG,WAAW,CAAC;AAC/C,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,MAAM,kBAAkB,GAAG,UAAU,CAAC;AACzB,QAAA,iBAAiB,GAAG;IAC/B,WAAW;IACX,cAAc;IACd,cAAc;IACd,YAAY;IACZ,kBAAkB;CACV,CAAC;AAMX,MAAM,eAAe,GAAG,CAAC,UAAkB,EAAE,WAAwB,EAAE,EAAE;IACvE,KAAK,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAA,WAAI,EAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,IAAA,cAAS,EAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAA,iBAAS,EAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAA,cAAS,EAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,EAAE,QAAQ,EAAwB,EAAE,EAAE,CACjE,CAAC;IACC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI;IACxE,eAAe,EACb,IAAI,CAAC,SAAS,CACZ;QACE,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,QAAQ;YAC1B,OAAO,EAAE,GAAG;YACZ,MAAM,EAAE,OAAO;YACf,eAAe,EAAE,IAAI;YACrB,gCAAgC,EAAE,IAAI;YACtC,aAAa,EAAE,IAAI;YACnB,wBAAwB,EAAE,IAAI;YAC9B,YAAY,EAAE,IAAI;YAClB,MAAM,EAAE,IAAI;YACZ,mBAAmB,EAAE,IAAI;SAC1B;QACD,OAAO,EAAE,CAAC,qBAAa,EAAE,2BAAmB,EAAE,eAAe,CAAC;QAC9D,OAAO,EAAE,CAAC,GAAG,qBAAa,kBAAkB,CAAC;KAC9C,EACD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI;IACV,WAAW,EAAE,gBAAgB,EAAE;IAC/B,CAAC,2BAAmB,CAAC,EAAE;QACrB,sBAAsB,EACpB,wFAAwF;KAC3F;IACD,CAAC,qBAAa,CAAC,EAAE;QACf,GAAG,IAAA,6BAAW,EAAC,yBAAiB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;QACvE,UAAU,EAAE;;qDAEmC,2BAAmB;;;;;;gBAMxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;;;;YAM5B;QACN,CAAC,kBAAkB,CAAC,EAAE;YACpB,SAAS,EAAE;gBACT,sBAAsB,EAAE;;;;;;;;;;;;;;;;;mDAiBiB;gBACzC,GAAG,EAAE;oBACH,UAAU,EAAE;;;;;;;;;+EASuD;iBACpE;aACF;SACF;QACD,mBAAmB,EAAE;;;;;;;;;;;;;;;;4EAgBiD;KACvE;IACD,CAAC,eAAe,CAAC,EAAE;QACjB,oBAAoB,EAAE;;;;;;;;;;wBAUJ,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;YAqBpC;KACP;IACD,mBAAmB,EAAE,YAAY;IACjC,YAAY,EAAE;;;;;YAKN;IACR,cAAc,EAAE;;;sBAGE,IAAA,oBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;;;;;;uEAMY,QAAQ;;;;6DAIlB;CAC1D,CAAU,CAAC;AAEd,MAAM,cAAc,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,OAAO;IAChB,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EAAE;QACP,KAAK,EAAE,6CAA6C;QACpD,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,UAAU;QAChB,UAAU,EAAE,gBAAgB;QAC5B,KAAK,EAAE,4BAA4B;QACnC,IAAI,EAAE,mFAAmF;KAC1F;IACD,YAAY,EAAE,EAAE,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,IAAI,sBAAW,CAAC,OAAO,EAAE,EAAE;IAC/D,eAAe,EAAE;QACf,GAAG,IAAA,0BAAQ,EAAC,sBAAW,CAAC,YAAY,EAAE,CAAC,YAAY,CAAC,CAAC;QACrD,GAAG,IAAA,0BAAQ,EAAC,sBAAW,CAAC,eAAe,EAAE;YACvC,YAAY;YACZ,QAAQ;YACR,wBAAwB;YACxB,mBAAmB;YACnB,aAAa;SACd,CAAC;KACH;IACD,OAAO,EAAE;QACP,aAAa,EAAE;YACb,KAAK,EAAE,8BAA8B;YACrC,OAAO,EAAE,4BAA4B;SACtC;KACF;CACF,CAAC,CAAC;AACH,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAgCL,qBAAa;;;;;;;;;;WAUlB,2BAAmB;;;eAGf,kBAAkB;;;;;;;;iBAQhB,qBAAa,eAAe,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA6BtD,yBAAiB;KAChB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC;KAC/B,GAAG,CACF,CAAC,UAAU,EAAE,EAAE,CACb,uBAAuB,UAAU,QAAQ,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAC1E;KACA,IAAI,CAAC,SAAS,CAAC;KACjB,CAAC;AAUN;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,cAAc,EACZ,iGAAiG;IACnG,UAAU,EACR,mGAAmG;IACrG,cAAc,EACZ,+FAA+F;IACjG,SAAS,EACP,4GAA4G;IAC9G,EAAE,EAAE,oEAAoE;IACxE,KAAK,EACH,+EAA+E;IACjF,SAAS,EACP,wFAAwF;IAC1F,OAAO,EACL,gGAAgG;IAClG,QAAQ,EACN,2FAA2F;IAC7F,WAAW,EACT,gFAAgF;IAClF,qBAAqB,EACnB,iHAAiH;IACnH,UAAU,EAAE,8DAA8D;IAC1E,eAAe,EACb,+EAA+E;IACjF,UAAU,EACR,0FAA0F;CAC9D,CAAC;AAEjC,MAAM,kBAAkB,GAAG;IACzB,gBAAgB,EACd,gFAAgF;IAClF,eAAe,EACb,wEAAwE;IAC1E,aAAa,EACX,yPAAyP;CAC/N,CAAC;AAE/B,MAAM,gBAAgB,GAAG,GAAG,EAAE,CAAC;;;;;;;;;MASzB,oBAAoB,CAAC,EAAE;MACvB,oBAAoB,CAAC,UAAU,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,eAAe;MAC5G,oBAAoB,CAAC,cAAc;MACnC,oBAAoB,CAAC,cAAc;MACnC,oBAAoB,CAAC,eAAe;MACpC,oBAAoB,CAAC,SAAS,IAAI,oBAAoB,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmC9D,oBAAoB,CAAC,WAAW,IAAI,oBAAoB,CAAC,qBAAqB;MAC9E,oBAAoB,CAAC,UAAU;MAC/B,kBAAkB,CAAC,aAAa;;;MAGhC,oBAAoB,CAAC,KAAK;;;;MAI1B,oBAAoB,CAAC,UAAU;;;;;;;;;;;;;MAa/B,oBAAoB,CAAC,SAAS;;;;;oFAKgD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getCliAgentsFile.d.ts","sourceRoot":"","sources":["../../../../src/cli/getCliAgentsFile.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,gBAAgB,cAsE0D,CAAC"}
1
+ {"version":3,"file":"getCliAgentsFile.d.ts","sourceRoot":"","sources":["../../../../src/cli/getCliAgentsFile.ts"],"names":[],"mappings":"AAqDA,eAAO,MAAM,gBAAgB,cA6E0D,CAAC"}
@@ -15,6 +15,7 @@ const schemaConfigGuidance = {
15
15
  joins: "Use `joins` only for relationships that cannot be inferred from foreign keys.",
16
16
  onInitSQL: "Use `onInitSQL` only for SQL initialization that cannot be expressed by `tableConfig`.",
17
17
  onMount: "Use `onMount` for startup integration work and return cleanup logic when resources are opened.",
18
+ services: "Register Docker-backed runtimes with `services` so Prostgles can expose and control them.",
18
19
  tableConfig: "Define tables and columns in `tableConfig`, including constraints and indexes.",
19
20
  tableConfigMigrations: "For schema changes that transform existing data, increment `tableConfigMigrations.version` and use `onMigrate`.",
20
21
  tableHooks: "Define `tableHooks` as a separate top-level config property.",
@@ -42,6 +43,13 @@ const getCliAgentsFile = () => (0, utils_1.fixIndent)(`
42
43
  - ${schemaConfigGuidance.watchSchemaType}
43
44
  - ${schemaConfigGuidance.onInitSQL} ${schemaConfigGuidance.onMount}
44
45
 
46
+ ## Services
47
+
48
+ - If a server function needs a non-Node.js runtime or system dependencies, implement that work as a service instead of running it directly in the function.
49
+ - Define services under \`src/services/<serviceName>/\`, with the typed \`*.service.ts\` definition beside a \`src/\` Docker build context. Declare a health check and typed endpoints for every operation the app calls.
50
+ - Register each service in \`src/serviceManager.ts\` and expose its config through the top-level \`services\` property. Service names must not collide with built-in Prostgles services or another app service.
51
+ - Import the exported \`serviceManager\` in server functions and use \`getServiceWithRetries(serviceName)\` before calling an endpoint. This is the host-owned instance shown in the Prostgles Services UI; do not construct another \`ServiceManager\`.
52
+
45
53
  ## Typed database object
46
54
 
47
55
  - The Prostgles \`dbo\` object available in \`onMount\`, \`tableHooks\`, and server functions is \`DBOFullyTyped<DBGeneratedSchema>\`. Table names, columns, filters, selects, inserts, updates, and results are fully typed.
@@ -1 +1 @@
1
- {"version":3,"file":"getCliAgentsFile.js","sourceRoot":"","sources":["../../../../src/cli/getCliAgentsFile.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAW1C;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,cAAc,EACZ,iGAAiG;IACnG,UAAU,EACR,mGAAmG;IACrG,cAAc,EACZ,+FAA+F;IACjG,SAAS,EACP,4GAA4G;IAC9G,EAAE,EAAE,oEAAoE;IACxE,KAAK,EACH,+EAA+E;IACjF,SAAS,EACP,wFAAwF;IAC1F,OAAO,EACL,gGAAgG;IAClG,WAAW,EACT,gFAAgF;IAClF,qBAAqB,EACnB,iHAAiH;IACnH,UAAU,EAAE,8DAA8D;IAC1E,eAAe,EACb,+EAA+E;IACjF,UAAU,EACR,0FAA0F;CAC9D,CAAC;AAEjC,MAAM,kBAAkB,GAAG;IACzB,gBAAgB,EACd,gFAAgF;IAClF,eAAe,EACb,wEAAwE;IAC1E,aAAa,EACX,yPAAyP;CAC/N,CAAC;AAExB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,IAAA,iBAAS,EAAC;;;;;;;;;QASJ,oBAAoB,CAAC,EAAE;QACvB,oBAAoB,CAAC,UAAU,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,eAAe;QAC5G,oBAAoB,CAAC,cAAc;QACnC,oBAAoB,CAAC,cAAc;QACnC,oBAAoB,CAAC,eAAe;QACpC,oBAAoB,CAAC,SAAS,IAAI,oBAAoB,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4B9D,oBAAoB,CAAC,WAAW,IAAI,oBAAoB,CAAC,qBAAqB;QAC9E,oBAAoB,CAAC,UAAU;QAC/B,kBAAkB,CAAC,aAAa;;;QAGhC,oBAAoB,CAAC,KAAK;;;;QAI1B,oBAAoB,CAAC,UAAU;;;;;;;;;;;;;QAa/B,oBAAoB,CAAC,SAAS;;;;;sFAKgD,CAAC,CAAC;AAtE3E,QAAA,gBAAgB,oBAsE2D"}
1
+ {"version":3,"file":"getCliAgentsFile.js","sourceRoot":"","sources":["../../../../src/cli/getCliAgentsFile.ts"],"names":[],"mappings":";;;AAAA,yCAA0C;AAW1C;;;GAGG;AACH,MAAM,oBAAoB,GAAG;IAC3B,cAAc,EACZ,iGAAiG;IACnG,UAAU,EACR,mGAAmG;IACrG,cAAc,EACZ,+FAA+F;IACjG,SAAS,EACP,4GAA4G;IAC9G,EAAE,EAAE,oEAAoE;IACxE,KAAK,EACH,+EAA+E;IACjF,SAAS,EACP,wFAAwF;IAC1F,OAAO,EACL,gGAAgG;IAClG,QAAQ,EACN,2FAA2F;IAC7F,WAAW,EACT,gFAAgF;IAClF,qBAAqB,EACnB,iHAAiH;IACnH,UAAU,EAAE,8DAA8D;IAC1E,eAAe,EACb,+EAA+E;IACjF,UAAU,EACR,0FAA0F;CAC9D,CAAC;AAEjC,MAAM,kBAAkB,GAAG;IACzB,gBAAgB,EACd,gFAAgF;IAClF,eAAe,EACb,wEAAwE;IAC1E,aAAa,EACX,yPAAyP;CAC/N,CAAC;AAExB,MAAM,gBAAgB,GAAG,GAAG,EAAE,CACnC,IAAA,iBAAS,EAAC;;;;;;;;;QASJ,oBAAoB,CAAC,EAAE;QACvB,oBAAoB,CAAC,UAAU,IAAI,kBAAkB,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,eAAe;QAC5G,oBAAoB,CAAC,cAAc;QACnC,oBAAoB,CAAC,cAAc;QACnC,oBAAoB,CAAC,eAAe;QACpC,oBAAoB,CAAC,SAAS,IAAI,oBAAoB,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmC9D,oBAAoB,CAAC,WAAW,IAAI,oBAAoB,CAAC,qBAAqB;QAC9E,oBAAoB,CAAC,UAAU;QAC/B,kBAAkB,CAAC,aAAa;;;QAGhC,oBAAoB,CAAC,KAAK;;;;QAI1B,oBAAoB,CAAC,UAAU;;;;;;;;;;;;;QAa/B,oBAAoB,CAAC,SAAS;;;;;sFAKgD,CAAC,CAAC;AA7E3E,QAAA,gBAAgB,oBA6E2D"}