Error whenever I add "hasEmbeddedWebExtension": true

I am facing problems using embedded webextension. I am following this tutorial Embedded WebExtensions.

I have the following files:

- testHybridv2[directory]
    -index.js
    -package.json
    -webextension[directory]
          -borderify [directory]
                  - manifest.json
                  - borderify.js
                  -icons

I am following the tutorial to embed a webextension inside the legacy SDK addon. I have these files:

First, package.json (this line: "hasEmbeddedWebExtension": true, causes an error. When I remove it, the legacy addon runs ok without errors. But I need to embed webextension in it.

{
  "title": "My Jetpack Addon",
  "name": "testhybridv2",
  "version": "0.0.1",
  "description": "A basic add-on",
  "main": "index.js",
  "author": "",
  "engines": {
    "firefox": ">=38.0a1",
    "fennec": ">=38.0a1"
  },
  "license": "MIT",
  "hasEmbeddedWebExtension": true,
  "keywords": [
    "jetpack"
  ]
}

Second, index.js contains:

const webExtension = require("sdk/webextension");

console.log("inside sdk embedding");

Third, inside the webextension directory, borderify.js contains this line:

document.body.style.border = "5px solid red";

manifest.json contains this:

{

  "manifest_version": 2,
  "name": "Borderify",
  "version": "1.0",

  "description": "Adds a red border to all webpages matching mozilla.org.",

  "icons": {
    "48": "icons/border-48.png"
  },

  "content_scripts": [
    {
      "matches": ["*://*.mozilla.org/*"],
      "js": ["borderify.js"]
    }
  ]

}

When I run the SDK using jpm using the above files content, I get this error and I do not see the extension in the browser knowing that I am using FF Nightly edition with turned off signature requirement :

C:\Users\myuser\Documents\dev\testHybridv2>jpm run -b "C:\Program Files (x86)\Firefox Developer Edition\firefox.exe" --binary-args -jsconsole --no-copy --debug
JPM [info] Starting jpm run on My Jetpack Addon
JPM [info] Creating a new profile
1497255404231   addons.xpi-utils        WARN    addMetadata: Add-on @testhybridv2 is invalid: [Exception... "Failed to open input source 'jar:file:///C:/Users/e/AppData/Local/Temp/75500c73-cb46-4c84-ad11-33b93e9bf530/extensions/@testhybridv2.xpi!/webextension/manifest.json'"  nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)"  location: "JS frame :: resource://gre/modules/Extension.jsm :: readJSON/< :: line 349"  data: yes] Stack trace: readJSON/<()@resource://gre/modules/Extension.jsm:349 < readJSON()@resource://gre/modules/Extension.jsm:346 < readManifest()@resource://gre/modules/Extension.jsm:410 < loadManifestFromWebManifest<()@resource://gre/modules/addons/XPIProvider.jsm:966 < TaskImpl_run()@resource://gre/modules/Task.jsm:319 < TaskImpl()@resource://gre/modules/Task.jsm:277 < asyncFunction()@resource://gre/modules/Task.jsm:252 < loadManifestFromRDF<()@resource://gre/modules/addons/XPIProvider.jsm:1234 < TaskImpl_run()@resource://gre/modules/Task.jsm:319 < TaskImpl()@resource://gre/modules/Task.jsm:277 < asyncFunction()@resource://gre/modules/Task.jsm:252 < loadFromRDF()@resource://gre/modules/addons/XPIProvider.jsm:1510 < TaskImpl_run()@resource://gre/modules/Task.jsm:319 < TaskImpl()@resource://gre/modules/Task.jsm:277 < asyncFunction()@resource://gre/modules/Task.jsm:252 < Task_spawn()@resource://gre/modules/Task.jsm:166 < TaskImpl_handleResultValue()@resource://gre/modules/Task.jsm:389 < TaskImpl_run()@resource://gre/modules/Task.jsm:327 < TaskImpl()@resource://gre/modules/Task.jsm:277 < asyncFunction()@resource://gre/modules/Task.jsm:252 < loadManifestFromZipFile<()@resource://gre/modules/addons/XPIProvider.jsm:1597 < TaskImpl_run()@resource://gre/modules/Task.jsm:319 < TaskImpl()@resource://gre/modules/Task.jsm:277 < asyncFunction()@resource://gre/modules/Task.jsm:252 < loadManifestFromFile()@resource://gre/modules/addons/XPIProvider.jsm:1606 < syncLoadManifestFromFile()@resource://gre/modules/addons/XPIProvider.jsm:1618 < addMetadata()@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:1613 < processFileChanges()@resource://gre/modules/addons/XPIProvider.jsm -> resource://gre/modules/addons/XPIProviderUtils.js:2001 < checkForChanges()@resource://gre/modules/addons/XPIProvider.jsm:3793 < startup()@resource://gre/modules/addons/XPIProvider.jsm:2826 < callProvider()@resource://gre/modules/AddonManager.jsm:272 < _startProvider()@resource://gre/modules/AddonManager.jsm:759 < startup()@resource://gre/modules/AddonManager.jsm:941 < startup()@resource://gre/modules/AddonManager.jsm:3145 < observe()@resource://gre/components/addonManager.js:65

When I remove this line from manifest.json, the legacy addon runs well and I see it in the browser extensions:
“hasEmbeddedWebExtension”: true,

You have to put the borderify stuff directly in the webextension directory, not in it’s own subdirectory. You can only have a single embedded webextension.

Thanks a million. That solved this problem.
I will need to send messages between them but I am taking it step by step.