@abco20/btxml-checker 0.1.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/dist/model.js ADDED
@@ -0,0 +1,2 @@
1
+ var q={Error:"error",Warning:"warning",Info:"info"};function T(e,t,i,r,n="",o,a){return{code:e,severity:t,message:i,uri:n,...r?{range:r}:{},...o?{details:o}:{},...a?{data:a}:{}}}var oe={DuplicateNodeModelId:"BT006_DUPLICATE_NODE_MODEL_ID"};function de(e){return e.kind==="bt-document"?"bt-xml":e.kind==="model-document"?"model-xml":"unknown"}function s(e,t){return e.attributes.find(i=>i.name===t)}function ue(e){return e==="Action"||e==="Condition"||e==="Control"||e==="Decorator"||e==="SubTree"}function ae(e){if(e)return{uri:e.uri,range:e.range,value:e.value}}function se(e,t="inline-tree-nodes-model"){return e.kind==="model-document"?"external-tree-nodes-model":t}function V(e,t,i){for(let r of e.attributes||[]){let n=[...String(r.value).matchAll(/\{([^}]+)\}/g)];for(let o of n){let a=o.index??0,d=r.valueRange.start,u={...d,character:d.character+o[0].length,offset:d.offset+a+o[0].length};t.push({name:o[1],attributeName:r.name,element:e,uri:i,range:{start:{...d,character:d.character+a,offset:d.offset+a},end:u}})}}for(let r of e.children||[])r.kind==="element"&&V(r,t,i)}function ce(e,t,i,r){let n=[];for(let o of e.children||[]){if(o.kind!=="element"||!ue(o.name))continue;let a=s(o,"ID");if(!a)continue;let d=[];for(let u of o.children||[]){if(u.kind!=="element"||u.name!=="input_port"&&u.name!=="output_port"&&u.name!=="inout_port")continue;let c=s(u,"name"),l=s(u,"type"),y=s(u,"default")||s(u,"default_value"),D=s(u,"enum"),k=(u.children||[]).filter(h=>h.kind==="text").map(h=>h.text).join("").trim()||void 0,m=u.name==="input_port"?"input":u.name==="output_port"?"output":"inout",g=(m==="input"||m==="inout")&&y===void 0;d.push({source:i,direction:m,name:c?c.value:"",type:l?.value||void 0,defaultValue:y?.value||void 0,description:k,required:g,element:u,uri:t,range:u.range,nameRange:c?.range,enum:D?.value?D.value.split(";"):void 0})}n.push({id:a.value,kind:o.name,source:i,sourceMeta:{sourceKind:i,file:t,range:o.range},editable:r,ports:d,element:o,uri:t,range:o.range,elementRange:o.range,idRange:a.range})}return n}function le(e,t){let i=[];for(let r of e.children||[]){if(r.kind!=="element"||r.name!=="BehaviorTree")continue;let n=s(r,"ID");n&&i.push({id:n.value,kind:"BehaviorTree",uri:t,element:r,range:r.range,elementRange:r.range,idRange:n.range})}return i}function pe(e,t){let i=[],r=(n,o)=>{let a=n.name==="BehaviorTree"?s(n,"ID")?.value??o:o;if(n.name==="SubTree"){let d=s(n,"ID");d&&i.push({id:d.value,uri:t,element:n,range:n.range,elementRange:n.range,idRange:d.range,parentBehaviorTreeId:a,attributes:n.attributes})}for(let d of n.children||[])d.kind==="element"&&r(d,a)};for(let n of e.children||[])n.kind==="element"&&r(n);return i}function me(e){return{id:e.id,kind:e.kind,uri:e.uri,range:e.range,elementRange:e.elementRange,idRange:e.idRange}}function I(e){return{source:e.source,direction:e.direction,name:e.name,type:e.type,defaultValue:e.defaultValue,description:e.description,required:e.required,uri:e.uri,range:e.range,nameRange:e.nameRange,enum:e.enum?[...e.enum]:void 0}}function fe(e){return{id:e.id,kind:e.kind,editable:e.editable,ports:e.ports.map(I),source:e.source,sourceMeta:e.sourceMeta?{sourceKind:e.sourceMeta.sourceKind,file:e.sourceMeta.file,range:e.sourceMeta.range}:void 0,uri:e.uri,range:e.range,elementRange:e.elementRange,idRange:e.idRange}}function ye(e){return{id:e.id,uri:e.uri,range:e.range,elementRange:e.elementRange,idRange:e.idRange,parentBehaviorTreeId:e.parentBehaviorTreeId}}function ge(e){return{name:e.name,attributeName:e.attributeName,uri:e.uri,range:e.range}}function Se(e){return{uri:e.uri,path:e.path,isBtXml:e.isBtXml,kind:e.kind,behaviorTrees:e.behaviorTrees.map(me),subtreeReferences:e.subtreeReferences.map(ye),blackboardReferences:e.blackboardReferences.map(ge),treeNodesModel:e.treeNodesModel.map(fe),genericSubTreePorts:e.genericSubTreePorts.map(I),rootMainTreeToExecute:ae(e.rootMainTreeToExecute)}}function be(e){return e.node.kind==="SubTree"&&e.node.id==="SubTree"?(e.genericSubTreePorts.push(...e.node.ports),!0):(e.treeNodesModel.push(e.node),!1)}function De(e){return T(oe.DuplicateNodeModelId,q.Error,`duplicate node model ID \`${e.id}\``,e.idRange||e.range,e.uri,{primaryLabel:"this node model ID is already defined in the same model source",help:"merge the duplicate definitions or rename one of them"})}function ke(e,t){let i=[],r=t?.uri||e.uri,n=e.root,o=e.isBtXml,a=de(e),d=se(e),u=((t?.path??e.path)||r==="")&&e.kind==="model-document"?!0:e.kind!=="model-document",c=n&&e.kind!=="model-document"?le(n,r):[],l=[],y=[],D=n?n.name==="TreeNodesModel"?[n]:n.children.filter(p=>p.kind==="element"&&p.name==="TreeNodesModel"):[];for(let p of D){let ne=ce(p,r,d,u),P=new Map;for(let S of ne)be({node:S,treeNodesModel:l,genericSubTreePorts:y})||(P.has(S.id)?i.push(De(S)):P.set(S.id,S))}let k=n?pe(n,r):[],m=n?(()=>{let p=[];return V(n,p,r),p})():[],g=n?s(n,"main_tree_to_execute"):void 0;return{extracted:{publicModel:Se({uri:r,path:t?.path??e.path,isBtXml:o,kind:a,behaviorTrees:c,subtreeReferences:k,blackboardReferences:m,treeNodesModel:l,genericSubTreePorts:y,rootMainTreeToExecute:g?{uri:r,range:g.range,value:g.value}:void 0}),extractedBehaviorTrees:c,extractedTreeNodesModel:l,extractedSubTreeReferences:k,extractedBlackboardReferences:m},diagnostics:i}}function M(e,t){let{extracted:i,diagnostics:r}=ke(e,t);return{model:i.publicModel,diagnostics:r}}function U(e,t){return M(e,t)}var w=new Set(["ID","name","_name","_autoremap","_failureIf","_successIf","_skipIf","_while","_onSuccess","_onFailure","_onHalted","_post"]),he=new Set([...w,"_autoremap","_description","__shared_blackboard"]),Be=new Map([[".","port names must not contain `.`"],["<","port names must not contain `<`"],[">","port names must not contain `>`"],["&","port names must not contain `&`"],['"','port names must not contain `"`'],["'","port names must not contain `'`"],["/","port names must not contain `/`"],["\\","port names must not contain `\\`"],[":","port names must not contain `:`"],["*","port names must not contain `*`"],["?","port names must not contain `?`"],["|","port names must not contain `|`"]]);function L(e){return w.has(e)}function _(e){return he.has(e)}function F(e){if(e.length===0)return"port names must not be empty";if(/^[0-9]/.test(e))return"port names must not start with a digit";if(_(e))return`\`${e}\` is a reserved attribute name`;for(let t of e){let i=t.charCodeAt(0);if(i<=31||i===127)return"port names must not contain ASCII control characters";if(t===" "||t===" "||t===`
2
+ `||t==="\r")return"port names must not contain whitespace";let r=Be.get(t);if(r)return r}}function E(e,t){let i=t.direction??"input";return{source:"config",name:e,direction:i,type:t.type,defaultValue:t.default,description:t.description,required:t.required??((i==="input"||i==="inout")&&t.default===void 0),enum:t.enum}}function G(e,t){return{id:e,kind:t.kind,source:"config",sourceMeta:{sourceKind:"config"},editable:!0,ports:Object.entries(t.ports??{}).map(([i,r])=>E(i,r))}}function K(e,t,i){return i!==void 0?i:(e==="input"||e==="inout")&&t===void 0}var O=[{id:"AlwaysFailure",kind:"Action",ports:[]},{id:"AlwaysSuccess",kind:"Action",ports:[]},{id:"AsyncFallback",kind:"Control",ports:[]},{id:"AsyncSequence",kind:"Control",ports:[]},{id:"Delay",kind:"Decorator",ports:[{name:"delay_msec",direction:"input",type:"unsigned int",description:"Tick the child after a few milliseconds",required:!0}]},{id:"Fallback",kind:"Control",ports:[]},{id:"ForceFailure",kind:"Decorator",ports:[]},{id:"ForceSuccess",kind:"Decorator",ports:[]},{id:"IfThenElse",kind:"Control",ports:[]},{id:"Inverter",kind:"Decorator",ports:[]},{id:"KeepRunningUntilFailure",kind:"Decorator",ports:[]},{id:"LoopBool",kind:"Decorator",ports:[{name:"value",direction:"output",type:"bool",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<bool, std::allocator<bool> > >",required:!0}]},{id:"LoopDouble",kind:"Decorator",ports:[{name:"value",direction:"output",type:"double",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<double, std::allocator<double> > >",required:!0}]},{id:"LoopInt",kind:"Decorator",ports:[{name:"value",direction:"output",type:"int",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<int, std::allocator<int> > >",required:!0}]},{id:"LoopString",kind:"Decorator",ports:[{name:"value",direction:"output",type:"std::string",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >",required:!0}]},{id:"Parallel",kind:"Control",ports:[{name:"failure_count",direction:"input",type:"int",defaultValue:"1",description:"number of children that need to fail to trigger a FAILURE",required:!1},{name:"success_count",direction:"input",type:"int",defaultValue:"-1",description:"number of children that need to succeed to trigger a SUCCESS",required:!1}]},{id:"ParallelAll",kind:"Control",ports:[{name:"max_failures",direction:"input",type:"int",defaultValue:"1",description:"If the number of children returning FAILURE exceeds this value, ParallelAll returns FAILURE",required:!1}]},{id:"Precondition",kind:"Decorator",ports:[{name:"else",direction:"input",type:"BT::NodeStatus",defaultValue:"FAILURE",description:"Return status if condition is false",required:!1},{name:"if",direction:"input",type:"std::string",required:!0}]},{id:"ReactiveFallback",kind:"Control",ports:[]},{id:"ReactiveSequence",kind:"Control",ports:[]},{id:"Repeat",kind:"Decorator",ports:[{name:"num_cycles",direction:"input",type:"int",description:"Repeat a successful child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RetryUntilSuccessful",kind:"Decorator",ports:[{name:"num_attempts",direction:"input",type:"int",description:"Execute again a failing child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RunOnce",kind:"Decorator",ports:[{name:"then_skip",direction:"input",type:"bool",defaultValue:"true",description:"If true, skip after the first execution, otherwise return the same NodeStatus returned once bu the child.",required:!1}]},{id:"Script",kind:"Action",ports:[{name:"code",direction:"input",type:"std::string",description:"Piece of code that can be parsed",required:!0}]},{id:"ScriptCondition",kind:"Condition",ports:[{name:"code",direction:"input",type:"BT::AnyTypeAllowed",description:"Piece of code that can be parsed. Must return false or true",required:!0}]},{id:"Sequence",kind:"Control",ports:[]},{id:"SequenceWithMemory",kind:"Control",ports:[]},{id:"SetBlackboard",kind:"Action",ports:[{name:"output_key",direction:"inout",type:"BT::AnyTypeAllowed",description:"Name of the blackboard entry where the value should be written",required:!0},{name:"value",direction:"input",type:"BT::AnyTypeAllowed",description:"Value to be written int othe output_key",required:!0}]},{id:"SkipUnlessUpdated",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"Sleep",kind:"Action",ports:[{name:"msec",direction:"input",type:"unsigned int",required:!0}]},{id:"Switch2",kind:"Control",ports:[{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch3",kind:"Control",ports:[{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch4",kind:"Control",ports:[{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch5",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch6",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_6",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Timeout",kind:"Decorator",ports:[{name:"msec",direction:"input",type:"unsigned int",description:"After a certain amount of time, halt() the child if it is still running.",required:!0}]},{id:"UnsetBlackboard",kind:"Action",ports:[{name:"key",direction:"input",type:"std::string",description:"Key of the entry to remove",required:!0}]},{id:"WaitValueUpdate",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WasEntryUpdated",kind:"Action",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WhileDoElse",kind:"Control",ports:[]}],j={id:"SubTree",kind:"SubTree",ports:[{name:"_autoremap",direction:"input",type:"bool",defaultValue:"false",description:"If true, all the ports with the same name will be remapped",required:!1}]};var W=[{id:"AlwaysFailure",kind:"Action",ports:[]},{id:"AlwaysSuccess",kind:"Action",ports:[]},{id:"AsyncFallback",kind:"Control",ports:[]},{id:"AsyncSequence",kind:"Control",ports:[]},{id:"Delay",kind:"Decorator",ports:[{name:"delay_msec",direction:"input",type:"unsigned int",description:"Tick the child after a few milliseconds",required:!0}]},{id:"Fallback",kind:"Control",ports:[]},{id:"ForceFailure",kind:"Decorator",ports:[]},{id:"ForceSuccess",kind:"Decorator",ports:[]},{id:"IfThenElse",kind:"Control",ports:[]},{id:"Inverter",kind:"Decorator",ports:[]},{id:"KeepRunningUntilFailure",kind:"Decorator",ports:[]},{id:"LoopBool",kind:"Decorator",ports:[{name:"value",direction:"output",type:"bool",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<bool, std::allocator<bool> > >",required:!0}]},{id:"LoopDouble",kind:"Decorator",ports:[{name:"value",direction:"output",type:"double",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<double, std::allocator<double> > >",required:!0}]},{id:"LoopInt",kind:"Decorator",ports:[{name:"value",direction:"output",type:"int",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<int, std::allocator<int> > >",required:!0}]},{id:"LoopString",kind:"Decorator",ports:[{name:"value",direction:"output",type:"std::string",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"std::shared_ptr<std::deque<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >",required:!0}]},{id:"Parallel",kind:"Control",ports:[{name:"failure_count",direction:"input",type:"int",defaultValue:"1",description:"number of children that need to fail to trigger a FAILURE",required:!1},{name:"success_count",direction:"input",type:"int",defaultValue:"-1",description:"number of children that need to succeed to trigger a SUCCESS",required:!1}]},{id:"ParallelAll",kind:"Control",ports:[{name:"max_failures",direction:"input",type:"int",defaultValue:"1",description:"If the number of children returning FAILURE exceeds this value, ParallelAll returns FAILURE",required:!1}]},{id:"Precondition",kind:"Decorator",ports:[{name:"else",direction:"input",type:"BT::NodeStatus",defaultValue:"FAILURE",description:"Return status if condition is false",required:!1},{name:"if",direction:"input",type:"std::string",required:!0}]},{id:"ReactiveFallback",kind:"Control",ports:[]},{id:"ReactiveSequence",kind:"Control",ports:[]},{id:"Repeat",kind:"Decorator",ports:[{name:"num_cycles",direction:"input",type:"int",description:"Repeat a successful child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RetryUntilSuccessful",kind:"Decorator",ports:[{name:"num_attempts",direction:"input",type:"int",description:"Execute again a failing child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RunOnce",kind:"Decorator",ports:[{name:"then_skip",direction:"input",type:"bool",defaultValue:"true",description:"If true, skip after the first execution, otherwise return the same NodeStatus returned once by the child.",required:!1}]},{id:"Script",kind:"Action",ports:[{name:"code",direction:"input",type:"std::string",description:"Piece of code that can be parsed",required:!0}]},{id:"ScriptCondition",kind:"Condition",ports:[{name:"code",direction:"input",type:"BT::AnyTypeAllowed",description:"Piece of code that can be parsed. Must return false or true",required:!0}]},{id:"Sequence",kind:"Control",ports:[]},{id:"SequenceWithMemory",kind:"Control",ports:[]},{id:"SetBlackboard",kind:"Action",ports:[{name:"output_key",direction:"inout",type:"BT::AnyTypeAllowed",description:"Name of the blackboard entry where the value should be written",required:!0},{name:"value",direction:"input",type:"BT::AnyTypeAllowed",description:"Value to be written into the output_key",required:!0}]},{id:"SkipUnlessUpdated",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"Sleep",kind:"Action",ports:[{name:"msec",direction:"input",type:"unsigned int",required:!0}]},{id:"Switch2",kind:"Control",ports:[{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch3",kind:"Control",ports:[{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch4",kind:"Control",ports:[{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch5",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch6",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_6",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Timeout",kind:"Decorator",ports:[{name:"msec",direction:"input",type:"unsigned int",description:"After a certain amount of time, halt() the child if it is still running.",required:!0}]},{id:"UnsetBlackboard",kind:"Action",ports:[{name:"key",direction:"input",type:"std::string",description:"Key of the entry to remove",required:!0}]},{id:"WaitValueUpdate",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WasEntryUpdated",kind:"Action",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WhileDoElse",kind:"Control",ports:[]}],X={id:"SubTree",kind:"SubTree",ports:[{name:"_autoremap",direction:"input",type:"bool",defaultValue:"false",description:"If true, all the ports with the same name will be remapped",required:!1}]};var z=[{id:"AlwaysFailure",kind:"Action",ports:[]},{id:"AlwaysSuccess",kind:"Action",ports:[]},{id:"AsyncFallback",kind:"Control",ports:[]},{id:"AsyncSequence",kind:"Control",ports:[]},{id:"Delay",kind:"Decorator",ports:[{name:"delay_msec",direction:"input",type:"unsigned int",description:"Tick the child after a few milliseconds",required:!0}]},{id:"Fallback",kind:"Control",ports:[]},{id:"ForceFailure",kind:"Decorator",ports:[]},{id:"ForceSuccess",kind:"Decorator",ports:[]},{id:"IfThenElse",kind:"Control",ports:[]},{id:"Inverter",kind:"Decorator",ports:[]},{id:"KeepRunningUntilFailure",kind:"Decorator",ports:[]},{id:"LoopBool",kind:"Decorator",ports:[{name:"value",direction:"output",type:"bool",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"BT::AnyTypeAllowed",required:!0}]},{id:"LoopDouble",kind:"Decorator",ports:[{name:"value",direction:"output",type:"double",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"BT::AnyTypeAllowed",required:!0}]},{id:"LoopInt",kind:"Decorator",ports:[{name:"value",direction:"output",type:"int",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"BT::AnyTypeAllowed",required:!0}]},{id:"LoopString",kind:"Decorator",ports:[{name:"value",direction:"output",type:"std::string",required:!1},{name:"if_empty",direction:"input",type:"BT::NodeStatus",defaultValue:"SUCCESS",description:"Status to return if queue is empty: SUCCESS, FAILURE, SKIPPED",required:!1},{name:"queue",direction:"inout",type:"BT::AnyTypeAllowed",required:!0}]},{id:"Parallel",kind:"Control",ports:[{name:"failure_count",direction:"input",type:"int",defaultValue:"1",description:"number of children that need to fail to trigger a FAILURE",required:!1},{name:"success_count",direction:"input",type:"int",defaultValue:"-1",description:"number of children that need to succeed to trigger a SUCCESS",required:!1}]},{id:"ParallelAll",kind:"Control",ports:[{name:"max_failures",direction:"input",type:"int",defaultValue:"1",description:"If the number of children returning FAILURE exceeds this value, ParallelAll returns FAILURE",required:!1}]},{id:"Precondition",kind:"Decorator",ports:[{name:"else",direction:"input",type:"BT::NodeStatus",defaultValue:"FAILURE",description:"Return status if condition is false",required:!1},{name:"if",direction:"input",type:"std::string",required:!0}]},{id:"ReactiveFallback",kind:"Control",ports:[]},{id:"ReactiveSequence",kind:"Control",ports:[]},{id:"Repeat",kind:"Decorator",ports:[{name:"num_cycles",direction:"input",type:"int",description:"Repeat a successful child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RetryUntilSuccessful",kind:"Decorator",ports:[{name:"num_attempts",direction:"input",type:"int",description:"Execute again a failing child up to N times. Use -1 to create an infinite loop.",required:!0}]},{id:"RunOnce",kind:"Decorator",ports:[{name:"then_skip",direction:"input",type:"bool",defaultValue:"true",description:"If true, skip after the first execution, otherwise return the same NodeStatus returned once by the child.",required:!1}]},{id:"Script",kind:"Action",ports:[{name:"code",direction:"input",type:"std::string",description:"Piece of code that can be parsed",required:!0}]},{id:"ScriptCondition",kind:"Condition",ports:[{name:"code",direction:"input",type:"BT::AnyTypeAllowed",description:"Piece of code that can be parsed. Must return false or true",required:!0}]},{id:"Sequence",kind:"Control",ports:[]},{id:"SequenceWithMemory",kind:"Control",ports:[]},{id:"SetBlackboard",kind:"Action",ports:[{name:"output_key",direction:"inout",type:"BT::AnyTypeAllowed",description:"Name of the blackboard entry where the value should be written",required:!0},{name:"value",direction:"input",type:"BT::AnyTypeAllowed",description:"Value to be written into the output_key",required:!0}]},{id:"SkipUnlessUpdated",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"Sleep",kind:"Action",ports:[{name:"msec",direction:"input",type:"unsigned int",required:!0}]},{id:"Switch2",kind:"Control",ports:[{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch3",kind:"Control",ports:[{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch4",kind:"Control",ports:[{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch5",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Switch6",kind:"Control",ports:[{name:"case_5",direction:"input",type:"std::string",required:!0},{name:"case_4",direction:"input",type:"std::string",required:!0},{name:"case_6",direction:"input",type:"std::string",required:!0},{name:"case_3",direction:"input",type:"std::string",required:!0},{name:"case_2",direction:"input",type:"std::string",required:!0},{name:"case_1",direction:"input",type:"std::string",required:!0},{name:"variable",direction:"input",type:"std::string",required:!0}]},{id:"Timeout",kind:"Decorator",ports:[{name:"msec",direction:"input",type:"unsigned int",description:"After a certain amount of time, halt() the child if it is still running.",required:!0}]},{id:"TryCatch",kind:"Control",ports:[{name:"catch_on_halt",direction:"input",type:"bool",defaultValue:"false",description:"If true, execute the catch child when the node is halted during the try-block",required:!1}]},{id:"UnsetBlackboard",kind:"Action",ports:[{name:"key",direction:"input",type:"std::string",description:"Key of the entry to remove",required:!0}]},{id:"WaitValueUpdate",kind:"Decorator",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WasEntryUpdated",kind:"Action",ports:[{name:"entry",direction:"input",type:"BT::Any",description:"Entry to check",required:!0}]},{id:"WhileDoElse",kind:"Control",ports:[]}],$={id:"SubTree",kind:"SubTree",ports:[{name:"_autoremap",direction:"input",type:"bool",defaultValue:"false",description:"If true, all the ports with the same name will be remapped",required:!1}]};var J=["4.6.2","4.8.2","4.9.0"],C="4.9.0",b={"4.6.2":{models:O,genericSubTreeModel:j},"4.8.2":{models:W,genericSubTreeModel:X},"4.9.0":{models:z,genericSubTreeModel:$}};var x=J.map(e=>`btcpp-v${e}`),H=["btcpp-v4",...x],R=`btcpp-v${C}`;function Q(e){return{source:"builtin",direction:e.direction,name:e.name,type:e.type,defaultValue:e.defaultValue,description:e.description,required:e.required,enum:e.enum}}function qe(e){return e.map(t=>({id:t.id,kind:t.kind,ports:t.ports.map(Q)}))}function Y(e){if(e)return{id:e.id,kind:e.kind,ports:e.ports.map(Q)}}function Te(){let e={};for(let[t,i]of Object.entries(b))e[`btcpp-v${t}`]=qe(i.models);return e}function Me(){let e={};for(let[t,i]of Object.entries(b))e[`btcpp-v${t}`]=Y(i.genericSubTreeModel);return e}var Z=Te(),_e=Me();function Ee(e){let t=e.replace(/^btcpp-v/,"");return Object.hasOwn(b,t)}function N(e){return e==="btcpp-v4"?R:e}function Ce(e){return e==="btcpp-v4"?C:e.replace(/^btcpp-v/,"")}function A(e){if(e&&e!=="btcpp-v4"&&!Ee(e))throw new Error(`unsupported builtin model set: ${e}`)}function ee(e="btcpp-v4"){A(e);let t=N(e);return Z[t].map(r=>B(r))}function te(e,t="btcpp-v4"){A(t);let i=N(t),n=Z[i].find(o=>o.id===e);return n?B(n):void 0}function ie(e="btcpp-v4"){A(e);let t=_e[N(e)]??Y(b[Ce(e)].genericSubTreeModel);return t?(t.ports??[]).map(i=>({...i,enum:i.enum?[...i.enum]:void 0})):[]}function B(e){return{id:e.id,kind:e.kind,source:"builtin",sourceMeta:{sourceKind:"builtin"},editable:!1,ports:(e.ports??[]).map(t=>({...t,enum:t.enum?[...t.enum]:void 0}))}}function f(e){return{id:e.id,kind:e.kind,ports:[...e.ports].sort((t,i)=>{let r=t.name.localeCompare(i.name);if(r!==0)return r;let n=t.direction.localeCompare(i.direction);if(n!==0)return n;let o=(t.type??"").localeCompare(i.type??"");if(o!==0)return o;let a=(t.defaultValue??"").localeCompare(i.defaultValue??"");return a!==0?a:(t.description??"").localeCompare(i.description??"")}).map(t=>({name:t.name,direction:t.direction,type:t.type,required:t.required,defaultValue:t.defaultValue,enum:t.enum?[...t.enum].sort():void 0,description:t.description}))}}function v(e,t){let i=f(e),r=f(t);return JSON.stringify(i)===JSON.stringify(r)}function re(e,t){if(v(e,t))return"none";let i=f(e),r=f(t);if(i.kind!==r.kind)return"kind";if(i.ports.length!==r.ports.length)return"ports";let n=new Map(r.ports.map(d=>[d.name,d])),o=!1,a=!1;for(let d of i.ports){let u=n.get(d.name);if(!u){a=!0;continue}(d.direction!==u.direction||d.type!==u.type||d.required!==u.required)&&(a=!0);let c=d.enum?JSON.stringify(d.enum):"",l=u.enum?JSON.stringify(u.enum):"";c!==l&&(a=!0),d.description!==u.description&&(a=!0),d.defaultValue!==u.defaultValue&&(o=!0)}return a?"ports":o?"port-default":"mixed"}export{R as DEFAULT_BTCPP_V4_MODEL_SET,H as SUPPORTED_BUILTIN_MODEL_SETS,x as SUPPORTED_VERSIONED_BTCPP_MODEL_SETS,v as areEquivalentNodeModels,U as buildDocumentModel,M as buildDocumentModelResult,B as builtinToNodeModel,re as classifyNodeModelDifference,te as getBuiltinNodeModel,ie as getGenericSubTreePorts,F as getInvalidPortNameReason,f as getNodeModelSignature,K as inferRequired,L as isReservedAttribute,_ as isReservedPortName,ee as listBuiltinNodeModels,G as normalizeConfigNodeModel,E as normalizeConfigPort};
@@ -0,0 +1,125 @@
1
+ import { S as SourceRange } from './diagnostic-B5htzyJ9.js';
2
+
3
+ type ModelSourceRef = {
4
+ readonly uri?: string;
5
+ readonly sourceKind: NodeModelSourceKind;
6
+ readonly nodeId: string;
7
+ readonly kind: TreeNodeKind;
8
+ readonly range?: SourceRange;
9
+ readonly idRange?: SourceRange;
10
+ readonly sourceIndex: number;
11
+ };
12
+ type PortSourceRef = {
13
+ readonly uri?: string;
14
+ readonly sourceKind: NodeModelSourceKind;
15
+ readonly nodeId: string;
16
+ readonly portName: string;
17
+ readonly direction: PortDirection;
18
+ readonly range?: SourceRange;
19
+ readonly nameRange?: SourceRange;
20
+ readonly sourceIndex: number;
21
+ };
22
+ type BehaviorTreeDef = {
23
+ readonly id: string;
24
+ readonly kind: "BehaviorTree";
25
+ readonly uri: string;
26
+ readonly range?: SourceRange;
27
+ readonly elementRange?: SourceRange;
28
+ readonly idRange?: SourceRange;
29
+ };
30
+ type TreeNodeKind = "Action" | "Condition" | "Control" | "Decorator" | "SubTree";
31
+ type PortDirection = "input" | "output" | "inout";
32
+ type NodeModelSourceKind = "config" | "node-definition-file" | "inline-tree-nodes-model" | "external-tree-nodes-model" | "model-augmentation" | "builtin";
33
+ type TypeLiteralValidator = {
34
+ readonly kind: "pattern";
35
+ readonly pattern: string;
36
+ } | {
37
+ readonly kind: "enum";
38
+ readonly values: readonly string[];
39
+ } | {
40
+ readonly kind: "tuple";
41
+ readonly separator: string;
42
+ readonly items: readonly string[];
43
+ } | {
44
+ readonly kind: "json-schema";
45
+ readonly schema: unknown;
46
+ };
47
+ type PortTypeRefinement = {
48
+ readonly from?: string;
49
+ readonly to: string;
50
+ };
51
+ type EffectivePortTypeSource = NodeModelSourceKind;
52
+ type NodeModelSource = {
53
+ readonly sourceKind: NodeModelSourceKind;
54
+ readonly file?: string;
55
+ readonly range?: SourceRange;
56
+ };
57
+ type PortDef = {
58
+ readonly source: NodeModelSourceKind;
59
+ readonly direction: PortDirection;
60
+ readonly name: string;
61
+ readonly type?: string;
62
+ readonly originalType?: string;
63
+ readonly effectiveType?: string;
64
+ readonly typeSource?: EffectivePortTypeSource;
65
+ readonly typeRefinement?: PortTypeRefinement;
66
+ readonly validate?: TypeLiteralValidator;
67
+ readonly defaultValue?: string;
68
+ readonly description?: string;
69
+ readonly required: boolean;
70
+ readonly uri?: string;
71
+ readonly range?: SourceRange;
72
+ readonly nameRange?: SourceRange;
73
+ readonly enum?: readonly string[];
74
+ };
75
+ type TreeNodeModelDef = {
76
+ readonly id: string;
77
+ readonly kind: TreeNodeKind;
78
+ readonly editable?: boolean;
79
+ readonly ports: readonly PortDef[];
80
+ readonly source?: NodeModelSourceKind;
81
+ readonly sourceMeta?: NodeModelSource;
82
+ readonly uri?: string;
83
+ readonly range?: SourceRange;
84
+ readonly elementRange?: SourceRange;
85
+ readonly idRange?: SourceRange;
86
+ };
87
+ type BuiltinNodeDef = {
88
+ readonly id: string;
89
+ readonly kind: TreeNodeKind;
90
+ readonly ports?: readonly PortDef[];
91
+ };
92
+ type SubTreeReference = {
93
+ readonly id: string;
94
+ readonly uri: string;
95
+ readonly range?: SourceRange;
96
+ readonly elementRange?: SourceRange;
97
+ readonly idRange?: SourceRange;
98
+ readonly parentBehaviorTreeId?: string;
99
+ };
100
+ type BlackboardReference = {
101
+ readonly name: string;
102
+ readonly attributeName: string;
103
+ readonly uri: string;
104
+ readonly range?: SourceRange;
105
+ };
106
+ type AttributeValueRef = {
107
+ readonly uri: string;
108
+ readonly range: SourceRange;
109
+ readonly value: string;
110
+ };
111
+ type BtDocumentModelKind = "bt-xml" | "model-xml" | "unknown";
112
+ type BtDocumentModel = {
113
+ readonly uri: string;
114
+ readonly path?: string;
115
+ readonly isBtXml: boolean;
116
+ readonly kind: BtDocumentModelKind;
117
+ readonly behaviorTrees: readonly BehaviorTreeDef[];
118
+ readonly subtreeReferences: readonly SubTreeReference[];
119
+ readonly blackboardReferences: readonly BlackboardReference[];
120
+ readonly treeNodesModel: readonly TreeNodeModelDef[];
121
+ readonly genericSubTreePorts: readonly PortDef[];
122
+ readonly rootMainTreeToExecute?: AttributeValueRef;
123
+ };
124
+
125
+ export type { AttributeValueRef as A, BehaviorTreeDef as B, ModelSourceRef as M, NodeModelSource as N, PortDef as P, SubTreeReference as S, TreeNodeKind as T, TreeNodeModelDef as a, BtDocumentModel as b, PortDirection as c, BuiltinNodeDef as d, BlackboardReference as e, BtDocumentModelKind as f, NodeModelSourceKind as g, PortSourceRef as h };
@@ -0,0 +1,250 @@
1
+ import { R as ResolvedBtxmlConfig, E as EffectiveFileConfig, a as RawBtxmlConfig } from './types-BgqDzlJ8.js';
2
+ import { c as SourcePosition, S as SourceRange, D as Diagnostic } from './diagnostic-B5htzyJ9.js';
3
+ import { a as TreeNodeModelDef, P as PortDef } from './public-types-B2noBQY9.js';
4
+ import { M as ModelAugmentationFile } from './types-BaOc_AYN.js';
5
+ import { S as SemanticDocumentView, a as SemanticTreeNodeView, b as SemanticPortBindingView } from './types-CkOvIGPf.js';
6
+ import { N as NodeUsageResolution, P as PortUsageResolution } from './types-SY4-jKCn.js';
7
+
8
+ type TextDocument = {
9
+ readonly uri: string;
10
+ readonly languageId: "xml" | "btcpp-xml";
11
+ readonly version: number;
12
+ readonly text: string;
13
+ positionAt(offset: number): SourcePosition;
14
+ offsetAt(position: {
15
+ line: number;
16
+ character: number;
17
+ }): number;
18
+ getText(range?: SourceRange): string;
19
+ };
20
+
21
+ type TextEdit = {
22
+ readonly range: SourceRange;
23
+ readonly newText: string;
24
+ };
25
+ type WorkspaceEdit = {
26
+ readonly uri: string;
27
+ readonly edits: readonly TextEdit[];
28
+ };
29
+
30
+ type FileStat = {
31
+ type: "file" | "directory" | "other";
32
+ size?: number;
33
+ };
34
+ type DirEntry = {
35
+ name: string;
36
+ type: FileStat["type"];
37
+ };
38
+ interface WorkspaceHost {
39
+ readFile(uri: string): Promise<string>;
40
+ exists(uri: string): Promise<boolean>;
41
+ readDir(uri: string): Promise<readonly DirEntry[]>;
42
+ stat?(uri: string): Promise<FileStat | undefined>;
43
+ realpath?(uri: string): Promise<string>;
44
+ }
45
+ type Location = {
46
+ uri: string;
47
+ range: SourceRange;
48
+ };
49
+ type CompletionItemKind = "Text" | "Method" | "Function" | "Constructor" | "Field" | "Variable" | "Class" | "Interface" | "Module" | "Property" | "Unit" | "Value" | "Enum" | "Keyword" | "Snippet" | "File" | "Reference";
50
+ type CompletionItem = {
51
+ label: string;
52
+ kind: CompletionItemKind;
53
+ detail?: string;
54
+ documentation?: string;
55
+ insertText?: string;
56
+ insertTextFormat?: "plainText" | "snippet";
57
+ textEdit?: TextEdit;
58
+ sortText?: string;
59
+ filterText?: string;
60
+ data?: unknown;
61
+ };
62
+ type CompletionInput = {
63
+ document: TextDocument;
64
+ position: SourcePosition;
65
+ triggerCharacter?: string;
66
+ config?: EffectiveFileConfig;
67
+ };
68
+ type CompletionResult = {
69
+ items: CompletionItem[];
70
+ isIncomplete?: boolean;
71
+ };
72
+ type HoverInput = {
73
+ document: TextDocument;
74
+ position: SourcePosition;
75
+ config?: EffectiveFileConfig;
76
+ };
77
+ type HoverResult = {
78
+ contents?: string;
79
+ range?: SourceRange;
80
+ };
81
+ type DefinitionInput = {
82
+ document: TextDocument;
83
+ position: SourcePosition;
84
+ config?: EffectiveFileConfig;
85
+ };
86
+ type DefinitionResult = {
87
+ locations: Location[];
88
+ };
89
+ type ReferencesInput = {
90
+ document: TextDocument;
91
+ position: SourcePosition;
92
+ config?: EffectiveFileConfig;
93
+ };
94
+ type ReferencesResult = {
95
+ locations: Location[];
96
+ };
97
+ type DocumentSymbol = {
98
+ name: string;
99
+ detail?: string;
100
+ kind: string;
101
+ range: SourceRange;
102
+ selectionRange: SourceRange;
103
+ children?: DocumentSymbol[];
104
+ };
105
+ type DocumentSymbolsInput = {
106
+ document: TextDocument;
107
+ config?: EffectiveFileConfig;
108
+ };
109
+ type DocumentSymbolsResult = {
110
+ symbols: DocumentSymbol[];
111
+ };
112
+ type CodeAction = {
113
+ title: string;
114
+ kind?: string;
115
+ diagnostics?: Diagnostic[];
116
+ edits: TextEdit[];
117
+ workspaceEdits?: WorkspaceEdit[];
118
+ command?: {
119
+ title: string;
120
+ command: string;
121
+ arguments?: unknown[];
122
+ };
123
+ };
124
+ type CodeActionsInput = {
125
+ document: TextDocument;
126
+ range?: SourceRange;
127
+ diagnostics?: Diagnostic[];
128
+ config?: EffectiveFileConfig;
129
+ };
130
+ type CodeActionsResult = {
131
+ actions: CodeAction[];
132
+ };
133
+ type FormattingInput = {
134
+ document: TextDocument;
135
+ config?: EffectiveFileConfig;
136
+ };
137
+ type FormattingResult = {
138
+ edits: TextEdit[];
139
+ diagnostics: Diagnostic[];
140
+ };
141
+ type DiagnosticsInput = {
142
+ document: TextDocument;
143
+ config?: EffectiveFileConfig;
144
+ mode?: "strict" | "tolerant";
145
+ };
146
+ type DiagnosticsResult = {
147
+ diagnostics: Diagnostic[];
148
+ partial?: boolean;
149
+ };
150
+ type SemanticDocumentViewResult = {
151
+ view?: SemanticDocumentView;
152
+ diagnostics: Diagnostic[];
153
+ partial?: boolean;
154
+ };
155
+ type WorkspaceDiagnosticsResult = {
156
+ diagnostics: Diagnostic[];
157
+ };
158
+ type NodeCatalogResult = {
159
+ models: readonly TreeNodeModelDef[];
160
+ };
161
+ type SemanticNodeResult = {
162
+ node?: SemanticTreeNodeView;
163
+ };
164
+ type NodeUsageAtResult = {
165
+ node?: SemanticTreeNodeView;
166
+ usage?: NodeUsageResolution;
167
+ };
168
+ type NodeModelResult = {
169
+ model?: TreeNodeModelDef;
170
+ };
171
+ type ChildCapabilityReason = "behavior-tree" | "generic-control" | "generic-decorator" | "generic-leaf" | "model-kind" | "unknown-model";
172
+ type ChildCapabilityResult = {
173
+ capable: boolean;
174
+ reason: ChildCapabilityReason;
175
+ modelId?: string;
176
+ kind?: TreeNodeModelDef["kind"];
177
+ };
178
+ type PortInfoResult = {
179
+ node?: SemanticTreeNodeView;
180
+ binding?: SemanticPortBindingView;
181
+ port?: PortDef;
182
+ usage?: PortUsageResolution;
183
+ nodeUsage?: NodeUsageResolution;
184
+ };
185
+ type LanguageServiceOptions = {
186
+ config?: EffectiveFileConfig;
187
+ augmentations?: readonly ModelAugmentationFile[];
188
+ };
189
+ interface LanguageService {
190
+ getDiagnostics(input: DiagnosticsInput): DiagnosticsResult;
191
+ getCompletions(input: CompletionInput): CompletionResult;
192
+ getHover(input: HoverInput): HoverResult;
193
+ getDefinition(input: DefinitionInput): DefinitionResult;
194
+ getReferences(input: ReferencesInput): ReferencesResult;
195
+ getDocumentSymbols(input: DocumentSymbolsInput): DocumentSymbolsResult;
196
+ getCodeActions(input: CodeActionsInput): CodeActionsResult;
197
+ getFormattingEdits(input: FormattingInput): FormattingResult;
198
+ }
199
+ type LoadProjectOptions = {
200
+ cwd?: string;
201
+ configPath?: string;
202
+ projectRoot?: string;
203
+ };
204
+ type ProjectLoadResult = {
205
+ ok: boolean;
206
+ diagnostics: Diagnostic[];
207
+ };
208
+ type WorkspaceServiceOptions = {
209
+ config?: RawBtxmlConfig;
210
+ configBasePath?: string;
211
+ };
212
+ type BtEditorServiceOptions = WorkspaceServiceOptions;
213
+ type NodeWorkspaceServiceOptions = LoadProjectOptions & {
214
+ config?: RawBtxmlConfig;
215
+ host?: WorkspaceHost;
216
+ };
217
+ interface BtEditorService {
218
+ openDocument(uri: string, text: string, version?: number, languageId?: TextDocument["languageId"]): void;
219
+ updateDocument(uri: string, text: string, version?: number, languageId?: TextDocument["languageId"]): void;
220
+ closeDocument(uri: string): void;
221
+ getResolvedConfig(): ResolvedBtxmlConfig | undefined;
222
+ getEffectiveConfigForDocument(uri: string): EffectiveFileConfig | undefined;
223
+ getDocument(uri: string): TextDocument | undefined;
224
+ getDiagnostics(uri: string): DiagnosticsResult;
225
+ getWorkspaceDiagnostics(): WorkspaceDiagnosticsResult;
226
+ getSemanticDocumentView(uri: string): SemanticDocumentViewResult;
227
+ getNodeCatalog(uri: string): NodeCatalogResult;
228
+ getSemanticNode(uri: string, nodeId: string): SemanticNodeResult;
229
+ getNodeUsageAt(uri: string, position: SourcePosition): NodeUsageAtResult;
230
+ getNodeModelById(modelId: string, uri?: string): NodeModelResult;
231
+ getChildCapability(uri: string, tagName: string, attributes?: Record<string, string | undefined>): ChildCapabilityResult;
232
+ getPortInfoAt(uri: string, position: SourcePosition): PortInfoResult;
233
+ getFormattingEdits(uri: string): FormattingResult;
234
+ getCompletions(uri: string, position: SourcePosition, triggerCharacter?: string): CompletionResult;
235
+ getHover(uri: string, position: SourcePosition): HoverResult;
236
+ getDefinition(uri: string, position: SourcePosition): DefinitionResult;
237
+ getReferences(uri: string, position: SourcePosition): ReferencesResult;
238
+ getDocumentSymbols(uri: string): DocumentSymbolsResult;
239
+ getCodeActions(uri: string, range?: SourceRange, diagnostics?: Diagnostic[]): CodeActionsResult;
240
+ getLanguageService(): LanguageService;
241
+ dispose(): void;
242
+ }
243
+ interface BtProjectEditorService extends BtEditorService {
244
+ loadProject(options?: LoadProjectOptions): Promise<ProjectLoadResult>;
245
+ refreshProject(options?: LoadProjectOptions): Promise<ProjectLoadResult>;
246
+ notifyWatchedFileChanged(uri: string): Promise<ProjectLoadResult | undefined>;
247
+ getProjectConfig(): RawBtxmlConfig | undefined;
248
+ }
249
+
250
+ export type { BtEditorServiceOptions as B, CodeAction as C, DefinitionInput as D, FormattingInput as F, HoverInput as H, LanguageServiceOptions as L, NodeCatalogResult as N, PortInfoResult as P, ReferencesInput as R, SemanticDocumentViewResult as S, WorkspaceDiagnosticsResult as W, LanguageService as a, BtEditorService as b, CodeActionsInput as c, CodeActionsResult as d, CompletionInput as e, CompletionItem as f, CompletionItemKind as g, CompletionResult as h, DefinitionResult as i, DiagnosticsInput as j, DiagnosticsResult as k, DocumentSymbol as l, DocumentSymbolsInput as m, DocumentSymbolsResult as n, FormattingResult as o, HoverResult as p, Location as q, NodeModelResult as r, NodeUsageAtResult as s, ReferencesResult as t, SemanticNodeResult as u, WorkspaceHost as v, NodeWorkspaceServiceOptions as w, BtProjectEditorService as x, LoadProjectOptions as y, ProjectLoadResult as z };