@checkstack/backend 0.4.16 → 0.5.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @checkstack/backend
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 3589199: Add About page with platform information, license, contact details, and version information
8
+
9
+ - New `about-common` package with plugin metadata
10
+ - New `about-frontend` package with the About page and user menu item
11
+ - New `/api/about` backend endpoint exposing core version and loaded plugin versions
12
+ - Accessible via "About Checkstack" in the user menu dropdown
13
+
14
+ ## 0.4.17
15
+
16
+ ### Patch Changes
17
+
18
+ - Updated dependencies [23c80bc]
19
+ - @checkstack/backend-api@0.10.0
20
+ - @checkstack/queue-api@0.2.9
21
+ - @checkstack/signal-backend@0.1.15
22
+
3
23
  ## 0.4.16
4
24
 
5
25
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@checkstack/backend",
3
- "version": "0.4.16",
3
+ "version": "0.5.0",
4
4
  "checkstack": {
5
5
  "type": "backend"
6
6
  },
@@ -14,12 +14,12 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@checkstack/api-docs-common": "0.1.8",
17
- "@checkstack/auth-common": "0.5.7",
18
- "@checkstack/backend-api": "0.8.2",
17
+ "@checkstack/auth-common": "0.6.0",
18
+ "@checkstack/backend-api": "0.10.0",
19
19
  "@checkstack/common": "0.6.4",
20
20
  "@checkstack/drizzle-helper": "0.0.4",
21
- "@checkstack/queue-api": "0.2.7",
22
- "@checkstack/signal-backend": "0.1.13",
21
+ "@checkstack/queue-api": "0.2.9",
22
+ "@checkstack/signal-backend": "0.1.15",
23
23
  "@checkstack/signal-common": "0.1.8",
24
24
  "@hono/zod-validator": "^0.7.6",
25
25
  "@orpc/client": "^1.13.14",
@@ -40,6 +40,6 @@
40
40
  "@types/bun": "latest",
41
41
  "@checkstack/tsconfig": "0.0.4",
42
42
  "@checkstack/scripts": "0.1.2",
43
- "@checkstack/test-utils-backend": "0.1.13"
43
+ "@checkstack/test-utils-backend": "0.1.15"
44
44
  }
45
45
  }
package/src/index.ts CHANGED
@@ -95,6 +95,54 @@ app.get("/api/plugins", async (c) => {
95
95
  return c.json(enabledPlugins);
96
96
  });
97
97
 
98
+ // About endpoint - returns core version and loaded plugin versions
99
+ app.get("/api/about", async (c) => {
100
+ // Read core backend version from package.json
101
+ let coreVersion = "unknown";
102
+ try {
103
+ const corePkgPath = path.join(import.meta.dir, "..", "package.json");
104
+ if (fs.existsSync(corePkgPath)) {
105
+ const corePkg = JSON.parse(fs.readFileSync(corePkgPath, "utf8"));
106
+ coreVersion = corePkg.version ?? "unknown";
107
+ }
108
+ } catch {
109
+ rootLogger.debug("Failed to read core backend package.json for version");
110
+ }
111
+
112
+ // Read all enabled plugins with their versions from their package.json files
113
+ const enabledPlugins = await db
114
+ .select({
115
+ name: plugins.name,
116
+ path: plugins.path,
117
+ type: plugins.type,
118
+ })
119
+ .from(plugins)
120
+ .where(eq(plugins.enabled, true));
121
+
122
+ const pluginInfos = enabledPlugins.map((plugin) => {
123
+ let version = "unknown";
124
+ try {
125
+ const pkgJsonPath = path.join(plugin.path, "package.json");
126
+ if (fs.existsSync(pkgJsonPath)) {
127
+ const pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));
128
+ version = pkgJson.version ?? "unknown";
129
+ }
130
+ } catch {
131
+ // Plugin path may not have a readable package.json (e.g., remote plugins)
132
+ }
133
+ return {
134
+ name: plugin.name,
135
+ version,
136
+ type: plugin.type,
137
+ };
138
+ });
139
+
140
+ return c.json({
141
+ coreVersion,
142
+ plugins: pluginInfos,
143
+ });
144
+ });
145
+
98
146
  app.get("/.well-known/jwks.json", async (c) => {
99
147
  const { keyStore } = await import("./services/keystore");
100
148
  const jwks = await keyStore.getPublicJWKS();