@opengeni/config 1.1.1 → 1.1.2-canary.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/config",
3
- "version": "1.1.1",
3
+ "version": "1.1.2-canary.0",
4
4
  "description": "OpenGeni runtime configuration: settings resolution, deployment knobs, and config validation shared across the server packages.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -33,9 +33,9 @@
33
33
  "prepublishOnly": "bash ../../scripts/prepublish-guard"
34
34
  },
35
35
  "dependencies": {
36
- "@opengeni/codex": "^0.2.22",
37
- "@opengeni/contracts": "^3.0.1",
38
- "@opengeni/xai-subscription": "^0.1.4",
36
+ "@opengeni/codex": "^0.2.22-canary.8",
37
+ "@opengeni/contracts": "^3.0.2-canary.0",
38
+ "@opengeni/xai-subscription": "^0.1.4-canary.8",
39
39
  "zod": "^4.2.1"
40
40
  },
41
41
  "engines": {
package/src/index.ts CHANGED
@@ -283,6 +283,24 @@ export const McpServerConnectionRefSchema = z
283
283
  });
284
284
  export type McpServerConnectionRef = z.infer<typeof McpServerConnectionRefSchema>;
285
285
 
286
+ /** Operator-owned protocol binding. Tool annotations cannot establish recovery. */
287
+ export const McpOperationRecoverySchema = z
288
+ .record(
289
+ z.string().min(1).max(512).regex(/^\S+$/u),
290
+ z.object({ observerTool: z.string().min(1).max(512).regex(/^\S+$/u) }).strict(),
291
+ )
292
+ .superRefine((bindings, context) => {
293
+ for (const [originalTool, binding] of Object.entries(bindings)) {
294
+ if (originalTool === binding.observerTool) {
295
+ context.addIssue({
296
+ code: "custom",
297
+ path: [originalTool, "observerTool"],
298
+ message: "MCP recovery observer must differ from the original tool",
299
+ });
300
+ }
301
+ }
302
+ });
303
+
286
304
  /** Public, digest-pinned desktop image used by Modal unless the operator overrides it. */
287
305
  export const DEFAULT_MODAL_IMAGE_REF =
288
306
  "opengenipublicneuacr.azurecr.io/opengeni-desktop@sha256:c3bd17b8841de1bff9bb2777aad422cf8c75de78e2c30f9ac81d0cd6810a1b78";
@@ -1376,6 +1394,7 @@ const SettingsSchema = z.object({
1376
1394
  */
1377
1395
  headers: z.record(z.string(), z.string()).optional(),
1378
1396
  connectionRef: McpServerConnectionRefSchema.optional(),
1397
+ operationRecovery: McpOperationRecoverySchema.optional(),
1379
1398
  }),
1380
1399
  )
1381
1400
  .default([]),