Fold trae logic branches into descriptor-driven reads: skipSharedHooksInstall gates (dropped && !isTrae), and the case 'trae' path-rewrite arm now computes the self-alias from the descriptor-driven dirName (.trae). Dead isTrae bindings removed from uninstall/writeManifest/finishInstall. trae's skills dispatch was already descriptor-driven (converter-by-name). RUNTIME_CONTENT_DISPATCH.trae is left as a runtime-keyed table registration (its regex/callback rewrites can't be a byte-identical descriptor map — matches cursor/windsurf/cline). trae stays in RUNTIME_FLAG_IDS: isTrae still gates the agents-converter selection (agents out of scope; removal gated on the cross-runtime agents-dispatch migration). Byte-identical golden parity for all 16 runtimes. UPGRADE: SOLO stage/trigger metadata — emitted Trae SKILL.md now carries stage: workflow (descriptor-gated via hostBehaviors.soloStageMetadata) so Trae's SOLO Agent can auto-invoke GSD skills at the corresponding stage. Field shape is best-effort/inferred (Trae publishes no formal schema). trae.json golden regenerated. Tests: trae-imperative-reference (adapter/axes/fail-closed shouldFlattenDispatch + no runtime==='trae' source-grep, isTrae exempted for agents) + trae-upgrades (stage: workflow on installed SKILL.md, descriptor-gated). Matrix note + changeset added. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
91 lines
2.3 KiB
JSON
91 lines
2.3 KiB
JSON
{
|
|
"id": "trae",
|
|
"role": "runtime",
|
|
"version": "1.7.0-rc.5",
|
|
"title": "Trae IDE",
|
|
"description": "Trae IDE — nested-skill artifact layout; no hook surface (profile-marker-only config); tier-2 support.",
|
|
"tier": "core",
|
|
"requires": [],
|
|
"engines": {
|
|
"gsd": ">=1.6.0"
|
|
},
|
|
"runtime": {
|
|
"configHome": {
|
|
"kind": "dot-home",
|
|
"name": ".trae",
|
|
"env": [
|
|
"TRAE_CONFIG_DIR"
|
|
]
|
|
},
|
|
"localConfigDir": ".trae",
|
|
"configFormat": "none",
|
|
"artifactLayout": {
|
|
"global": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
},
|
|
{
|
|
"kind": "agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeAgentToTraeAgent"
|
|
}
|
|
],
|
|
"local": [
|
|
{
|
|
"kind": "skills",
|
|
"destSubpath": "skills",
|
|
"prefix": "gsd-",
|
|
"nesting": "nested",
|
|
"recursive": false,
|
|
"converter": "convertClaudeCommandToTraeSkill"
|
|
},
|
|
{
|
|
"kind": "agents",
|
|
"destSubpath": "agents",
|
|
"prefix": "gsd-",
|
|
"nesting": "flat",
|
|
"recursive": false,
|
|
"converter": "convertClaudeAgentToTraeAgent"
|
|
}
|
|
]
|
|
},
|
|
"commandStyle": "slash-hyphen",
|
|
"hooksSurface": "none",
|
|
"sandboxTier": "none",
|
|
"supportTier": 2,
|
|
"installSurface": "profile-marker-only",
|
|
"writesSharedSettings": false,
|
|
"permissionWriter": null,
|
|
"extendedHookEvents": [],
|
|
"hostIntegration": {
|
|
"embeddingMode": "imperative",
|
|
"commandSurface": "slash-file",
|
|
"dispatch": {
|
|
"namedDispatch": true,
|
|
"nested": "undocumented",
|
|
"maxDepth": "undocumented",
|
|
"background": true,
|
|
"subagentToolkit": "undocumented",
|
|
"backgroundDispatch": "undocumented"
|
|
},
|
|
"modelMode": "passive",
|
|
"hookBus": "engine",
|
|
"stateIO": "filesystem",
|
|
"transport": "mcp",
|
|
"runtime": "node"
|
|
},
|
|
"hostBehaviors": {
|
|
"skipSharedHooksInstall": true,
|
|
"soloStageMetadata": "workflow"
|
|
}
|
|
}
|
|
}
|