DF8004: Devframe Id Is Not a Mountable URL Segment
Message
Devframe id "
{id}" is not a mountable URL segment — the hub mounts each frame at<base><id>/.
Cause
initHub derives each frame's mount base from its id (/__devframes/<id>/), and that segment is routed by h3 — where : and * are route-pattern markers and / ends the segment. An id carrying those characters either crashes route registration or matches the wrong paths.
Example
ts
import { initHub } from '@devframes/hub/initiate'
initHub({
devframes: [defineDevframe({ id: 'devframes:plugin:my-tool', /* … */ })], // ✗ throws DF8004
})
// ✓ Good — route-safe id (letters, digits, `_`, `-`, `.`):
defineDevframe({ id: 'devframes_plugin_my-tool', /* … */ })Fix
Set a route-safe id on the definition — letters, digits, _, -, and . only. Plugins that accept an id option can be re-instantiated with a safe one; RPC function ids (the colon-namespaced devframes:plugin:<slug>:<fn> convention) are unaffected — this constraint applies to the devframe id alone.
Source
packages/hub/src/node/initiate.ts—initHubthrows this while mounting thedevframeslist.