npm package diff

Package: @forge/manifest

Versions: 8.9.0-next.0-experimental-611b366 - 8.9.0-next.1

Modified: package/out/schema/basic-manifest-schema.json

Index: package/out/schema/basic-manifest-schema.json
===================================================================
--- package/out/schema/basic-manifest-schema.json
+++ package/out/schema/basic-manifest-schema.json
@@ -62,8 +62,99 @@
                     ],
                     "title": "requiredProduct",
                     "description": "The required product for cross-product functionality. If not set, app is not a cross-product app."
                 },
+                "contexts": {
+                    "type": "object",
+                    "title": "contexts",
+                    "description": "The required context for cross-context functionality. If not set, app is not a cross-context app.",
+                    "oneOf": [
+                        {
+                            "required": ["confluence"],
+                            "additionalProperties": false,
+                            "properties": {
+                                "confluence": {
+                                    "type": "object",
+                                    "required": ["required"],
+                                    "properties": {
+                                        "required": { "enum": [true] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "jira": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "compass": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                }
+                            }
+                        },
+                        {
+                            "required": ["jira"],
+                            "additionalProperties": false,
+                            "properties": {
+                                "confluence": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "jira": {
+                                    "type": "object",
+                                    "required": ["required"],
+                                    "properties": {
+                                        "required": { "enum": [true] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "compass": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                }
+                            }
+                        },
+                        {
+                            "required": ["compass"],
+                            "additionalProperties": false,
+                            "properties": {
+                                "confluence": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "jira": {
+                                    "type": "object",
+                                    "properties": {
+                                        "required": { "enum": [false] }
+                                    },
+                                    "additionalProperties": false
+                                },
+                                "compass": {
+                                    "type": "object",
+                                    "required": ["required"],
+                                    "properties": {
+                                        "required": { "enum": [true] }
+                                    },
+                                    "additionalProperties": false
+                                }
+                            }
+                        }
+                    ]
+                },
                 "licensing": {
                     "additionalProperties": false,
                     "required": [
                         "enabled"

Modified: package/out/schema/manifest-schema.json

Large diffs are not rendered by default.

Modified: package/package.json

Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "8.9.0-next.0-experimental-611b366",
+  "version": "8.9.0-next.1",
   "description": "Definitions and validations of the Forge manifest",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run compile",

Modified: package/CHANGELOG.md

Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,11 +1,11 @@
 # @forge/manifest
 
-## 8.9.0-next.0-experimental-611b366
+## 8.9.0-next.1
 
-### Minor Changes
+### Patch Changes
 
-- 94e48b9: Remove agent mode support per product decision
+- 64daaa5: validate schema for app.contexts so developers can define a required context in the manifest
 
 ## 8.9.0-next.0
 
 ### Minor Changes

Modified: package/out/schema/basic-manifest.d.ts

Index: package/out/schema/basic-manifest.d.ts
===================================================================
--- package/out/schema/basic-manifest.d.ts
+++ package/out/schema/basic-manifest.d.ts
@@ -29,8 +29,45 @@
  * The required product for cross-product functionality. If not set, app is not a cross-product app.
  */
 export type RequiredProduct = 'confluence' | 'jira' | 'compass';
 /**
+ * The required context for cross-context functionality. If not set, app is not a cross-context app.
+ */
+export type Contexts =
+  | {
+      confluence: {
+        required: true;
+      };
+      jira?: {
+        required?: false;
+      };
+      compass?: {
+        required?: false;
+      };
+    }
+  | {
+      confluence?: {
+        required?: false;
+      };
+      jira: {
+        required: true;
+      };
+      compass?: {
+        required?: false;
+      };
+    }
+  | {
+      confluence?: {
+        required?: false;
+      };
+      jira?: {
+        required?: false;
+      };
+      compass: {
+        required: true;
+      };
+    };
+/**
  * Whether to enable paid app licensing for production installations of this app. Default value of false.
  */
 export type Enabled = boolean;
 /**
@@ -58,8 +95,9 @@
   description?: Description;
   id: Id;
   runtime: Runtime;
   requiredProduct?: RequiredProduct;
+  contexts?: Contexts;
   licensing?: Licensing;
   features?: Features;
   connect?: Connect;
   /**

Modified: package/out/schema/manifest.d.ts

Large diffs are not rendered by default.