@holoscript/framework 6.0.3

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.
Files changed (329) hide show
  1. package/ALL-test-results.json +1 -0
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +21 -0
  4. package/ROADMAP.md +175 -0
  5. package/dist/AgentManifest-CB4xM-Ma.d.cts +704 -0
  6. package/dist/AgentManifest-CB4xM-Ma.d.ts +704 -0
  7. package/dist/BehaviorTree-BrBFECv5.d.cts +103 -0
  8. package/dist/BehaviorTree-BrBFECv5.d.ts +103 -0
  9. package/dist/InvisibleWallet-BB6tFvRA.d.cts +1732 -0
  10. package/dist/InvisibleWallet-rtRrBOA8.d.ts +1732 -0
  11. package/dist/OrchestratorAgent-BvWgf9uw.d.cts +798 -0
  12. package/dist/OrchestratorAgent-Q_CbVTmO.d.ts +798 -0
  13. package/dist/agents/index.cjs +4790 -0
  14. package/dist/agents/index.d.cts +1788 -0
  15. package/dist/agents/index.d.ts +1788 -0
  16. package/dist/agents/index.js +4695 -0
  17. package/dist/ai/index.cjs +5347 -0
  18. package/dist/ai/index.d.cts +1753 -0
  19. package/dist/ai/index.d.ts +1753 -0
  20. package/dist/ai/index.js +5244 -0
  21. package/dist/behavior.cjs +449 -0
  22. package/dist/behavior.d.cts +130 -0
  23. package/dist/behavior.d.ts +130 -0
  24. package/dist/behavior.js +407 -0
  25. package/dist/economy/index.cjs +3659 -0
  26. package/dist/economy/index.d.cts +747 -0
  27. package/dist/economy/index.d.ts +747 -0
  28. package/dist/economy/index.js +3617 -0
  29. package/dist/implementations-D9T3un9D.d.cts +236 -0
  30. package/dist/implementations-D9T3un9D.d.ts +236 -0
  31. package/dist/index.cjs +24550 -0
  32. package/dist/index.d.cts +1729 -0
  33. package/dist/index.d.ts +1729 -0
  34. package/dist/index.js +24277 -0
  35. package/dist/learning/index.cjs +219 -0
  36. package/dist/learning/index.d.cts +104 -0
  37. package/dist/learning/index.d.ts +104 -0
  38. package/dist/learning/index.js +189 -0
  39. package/dist/negotiation/index.cjs +970 -0
  40. package/dist/negotiation/index.d.cts +610 -0
  41. package/dist/negotiation/index.d.ts +610 -0
  42. package/dist/negotiation/index.js +931 -0
  43. package/dist/skills/index.cjs +1118 -0
  44. package/dist/skills/index.d.cts +289 -0
  45. package/dist/skills/index.d.ts +289 -0
  46. package/dist/skills/index.js +1079 -0
  47. package/dist/swarm/index.cjs +5268 -0
  48. package/dist/swarm/index.d.cts +2433 -0
  49. package/dist/swarm/index.d.ts +2433 -0
  50. package/dist/swarm/index.js +5221 -0
  51. package/dist/training/index.cjs +2745 -0
  52. package/dist/training/index.d.cts +1734 -0
  53. package/dist/training/index.d.ts +1734 -0
  54. package/dist/training/index.js +2687 -0
  55. package/extract-failures.js +10 -0
  56. package/package.json +82 -0
  57. package/src/__tests__/bounty-marketplace.test.ts +374 -0
  58. package/src/__tests__/delegation.test.ts +144 -0
  59. package/src/__tests__/distributed-claimer.test.ts +147 -0
  60. package/src/__tests__/done-log-audit.test.ts +342 -0
  61. package/src/__tests__/framework.test.ts +865 -0
  62. package/src/__tests__/goal-synthesizer.test.ts +236 -0
  63. package/src/__tests__/presence.test.ts +223 -0
  64. package/src/__tests__/protocol-agent.test.ts +254 -0
  65. package/src/__tests__/revenue-splitter.test.ts +114 -0
  66. package/src/__tests__/scenario-driven-todo.test.ts +197 -0
  67. package/src/__tests__/self-improve.test.ts +349 -0
  68. package/src/__tests__/service-lifecycle.test.ts +237 -0
  69. package/src/__tests__/skill-router.test.ts +121 -0
  70. package/src/agents/AgentManifest.ts +493 -0
  71. package/src/agents/AgentRegistry.ts +475 -0
  72. package/src/agents/AgentTypes.ts +585 -0
  73. package/src/agents/AgentWalletRegistry.ts +83 -0
  74. package/src/agents/AuthenticatedCRDT.ts +388 -0
  75. package/src/agents/CapabilityMatcher.ts +453 -0
  76. package/src/agents/CrossRealityHandoff.ts +305 -0
  77. package/src/agents/CulturalMemory.ts +454 -0
  78. package/src/agents/FederatedRegistryAdapter.ts +429 -0
  79. package/src/agents/NormEngine.ts +450 -0
  80. package/src/agents/OrchestratorAgent.ts +414 -0
  81. package/src/agents/SkillWorkflowEngine.ts +472 -0
  82. package/src/agents/TaskDelegationService.ts +551 -0
  83. package/src/agents/__tests__/AgentManifest.prod.test.ts +134 -0
  84. package/src/agents/__tests__/AgentManifest.test.ts +182 -0
  85. package/src/agents/__tests__/AgentModule.test.ts +864 -0
  86. package/src/agents/__tests__/AgentRegistry.prod.test.ts +125 -0
  87. package/src/agents/__tests__/AgentRegistry.test.ts +148 -0
  88. package/src/agents/__tests__/AgentTypes.test.ts +534 -0
  89. package/src/agents/__tests__/AgentWalletRegistry.test.ts +152 -0
  90. package/src/agents/__tests__/AuthenticatedCRDT.test.ts +558 -0
  91. package/src/agents/__tests__/CapabilityMatcher.prod.test.ts +117 -0
  92. package/src/agents/__tests__/CapabilityMatcher.test.ts +178 -0
  93. package/src/agents/__tests__/CrossRealityHandoff.test.ts +402 -0
  94. package/src/agents/__tests__/CulturalMemory.test.ts +200 -0
  95. package/src/agents/__tests__/FederatedRegistryAdapter.test.ts +409 -0
  96. package/src/agents/__tests__/NormEngine.test.ts +276 -0
  97. package/src/agents/__tests__/OrchestratorAgent.test.ts +182 -0
  98. package/src/agents/__tests__/SkillWorkflowEngine.test.ts +357 -0
  99. package/src/agents/__tests__/TaskDelegationService.test.ts +446 -0
  100. package/src/agents/index.ts +107 -0
  101. package/src/agents/spatial-comms/Layer1RealTime.ts +621 -0
  102. package/src/agents/spatial-comms/Layer2A2A.ts +661 -0
  103. package/src/agents/spatial-comms/Layer3MCP.ts +651 -0
  104. package/src/agents/spatial-comms/ProtocolTypes.ts +543 -0
  105. package/src/agents/spatial-comms/SpatialCommClient.ts +483 -0
  106. package/src/agents/spatial-comms/__tests__/performance-benchmark.test.ts +465 -0
  107. package/src/agents/spatial-comms/examples/multi-agent-world-creation.ts +409 -0
  108. package/src/agents/spatial-comms/index.ts +66 -0
  109. package/src/ai/AIAdapter.ts +313 -0
  110. package/src/ai/AICopilot.ts +331 -0
  111. package/src/ai/AIOutputValidator.ts +203 -0
  112. package/src/ai/BTNodes.ts +239 -0
  113. package/src/ai/BehaviorSelector.ts +135 -0
  114. package/src/ai/BehaviorTree.ts +153 -0
  115. package/src/ai/Blackboard.ts +165 -0
  116. package/src/ai/GenerationAnalytics.ts +461 -0
  117. package/src/ai/GenerationCache.ts +265 -0
  118. package/src/ai/GoalPlanner.ts +165 -0
  119. package/src/ai/HoloScriptGenerator.ts +580 -0
  120. package/src/ai/InfluenceMap.ts +180 -0
  121. package/src/ai/NavMesh.ts +168 -0
  122. package/src/ai/PerceptionSystem.ts +178 -0
  123. package/src/ai/PromptTemplates.ts +453 -0
  124. package/src/ai/SemanticSearchService.ts +80 -0
  125. package/src/ai/StateMachine.ts +196 -0
  126. package/src/ai/SteeringBehavior.ts +150 -0
  127. package/src/ai/SteeringBehaviors.ts +244 -0
  128. package/src/ai/TrainingDataGenerator.ts +1082 -0
  129. package/src/ai/UtilityAI.ts +145 -0
  130. package/src/ai/__tests__/AIAdapter.prod.test.ts +259 -0
  131. package/src/ai/__tests__/AIAdapter.test.ts +109 -0
  132. package/src/ai/__tests__/AICopilot.prod.test.ts +341 -0
  133. package/src/ai/__tests__/AICopilot.test.ts +178 -0
  134. package/src/ai/__tests__/AIOutputValidator.prod.test.ts +226 -0
  135. package/src/ai/__tests__/AIOutputValidator.test.ts +138 -0
  136. package/src/ai/__tests__/BTNodes.prod.test.ts +391 -0
  137. package/src/ai/__tests__/BTNodes.test.ts +263 -0
  138. package/src/ai/__tests__/BehaviorSelector.prod.test.ts +129 -0
  139. package/src/ai/__tests__/BehaviorSelector.test.ts +132 -0
  140. package/src/ai/__tests__/BehaviorTree.prod.test.ts +266 -0
  141. package/src/ai/__tests__/BehaviorTree.test.ts +216 -0
  142. package/src/ai/__tests__/Blackboard.prod.test.ts +339 -0
  143. package/src/ai/__tests__/Blackboard.test.ts +183 -0
  144. package/src/ai/__tests__/GenerationAnalytics.prod.test.ts +141 -0
  145. package/src/ai/__tests__/GenerationAnalytics.test.ts +165 -0
  146. package/src/ai/__tests__/GenerationCache.prod.test.ts +144 -0
  147. package/src/ai/__tests__/GenerationCache.test.ts +171 -0
  148. package/src/ai/__tests__/GoalPlanner.prod.test.ts +189 -0
  149. package/src/ai/__tests__/GoalPlanner.test.ts +137 -0
  150. package/src/ai/__tests__/GoalPlannerDepth.prod.test.ts +217 -0
  151. package/src/ai/__tests__/HoloScriptGenerator.test.ts +125 -0
  152. package/src/ai/__tests__/InfluenceMap.prod.test.ts +146 -0
  153. package/src/ai/__tests__/InfluenceMap.test.ts +149 -0
  154. package/src/ai/__tests__/NavMesh.prod.test.ts +141 -0
  155. package/src/ai/__tests__/NavMesh.test.ts +159 -0
  156. package/src/ai/__tests__/PerceptionSystem.prod.test.ts +135 -0
  157. package/src/ai/__tests__/PerceptionSystem.test.ts +250 -0
  158. package/src/ai/__tests__/PromptTemplates.prod.test.ts +313 -0
  159. package/src/ai/__tests__/PromptTemplates.test.ts +146 -0
  160. package/src/ai/__tests__/SemanticSearch.test.ts +37 -0
  161. package/src/ai/__tests__/StateMachine.prod.test.ts +162 -0
  162. package/src/ai/__tests__/StateMachine.test.ts +163 -0
  163. package/src/ai/__tests__/SteeringBehavior.prod.test.ts +251 -0
  164. package/src/ai/__tests__/SteeringBehavior.test.ts +135 -0
  165. package/src/ai/__tests__/SteeringBehaviors.prod.test.ts +133 -0
  166. package/src/ai/__tests__/SteeringBehaviors.test.ts +151 -0
  167. package/src/ai/__tests__/TrainingDataGenerator.prod.test.ts +286 -0
  168. package/src/ai/__tests__/TrainingDataGenerator.test.ts +286 -0
  169. package/src/ai/__tests__/UtilityAI.prod.test.ts +207 -0
  170. package/src/ai/__tests__/UtilityAI.test.ts +155 -0
  171. package/src/ai/__tests__/adapters.prod.test.ts +263 -0
  172. package/src/ai/__tests__/adapters.test.ts +320 -0
  173. package/src/ai/adapters.ts +1585 -0
  174. package/src/ai/index.ts +130 -0
  175. package/src/behavior/BehaviorPresets.ts +140 -0
  176. package/src/behavior/BehaviorTree.ts +236 -0
  177. package/src/behavior/StateMachine.ts +176 -0
  178. package/src/behavior/StateTrait.ts +67 -0
  179. package/src/behavior/index.ts +8 -0
  180. package/src/behavior.ts +8 -0
  181. package/src/board/audit.ts +284 -0
  182. package/src/board/board-ops.ts +336 -0
  183. package/src/board/board-types.ts +302 -0
  184. package/src/board/index.ts +69 -0
  185. package/src/define-agent.ts +46 -0
  186. package/src/define-team.ts +33 -0
  187. package/src/delegation.ts +265 -0
  188. package/src/distributed-claimer.ts +228 -0
  189. package/src/economy/AgentBudgetEnforcer.ts +464 -0
  190. package/src/economy/BountyManager.ts +185 -0
  191. package/src/economy/CreatorRevenueAggregator.ts +460 -0
  192. package/src/economy/InvisibleWallet.ts +82 -0
  193. package/src/economy/KnowledgeMarketplace.ts +193 -0
  194. package/src/economy/PaymentWebhookService.ts +512 -0
  195. package/src/economy/RevenueSplitter.ts +156 -0
  196. package/src/economy/SubscriptionManager.ts +546 -0
  197. package/src/economy/UnifiedBudgetOptimizer.ts +635 -0
  198. package/src/economy/UsageMeter.ts +440 -0
  199. package/src/economy/_core-stubs.ts +219 -0
  200. package/src/economy/index.ts +100 -0
  201. package/src/economy/x402-facilitator.ts +1978 -0
  202. package/src/index.ts +348 -0
  203. package/src/knowledge/__tests__/knowledge-consolidator.test.ts +444 -0
  204. package/src/knowledge/__tests__/knowledge-store-vector.test.ts +291 -0
  205. package/src/knowledge/brain.ts +167 -0
  206. package/src/knowledge/consolidation.ts +581 -0
  207. package/src/knowledge/knowledge-consolidator.ts +510 -0
  208. package/src/knowledge/knowledge-store.ts +616 -0
  209. package/src/learning/MemoryConsolidator.ts +102 -0
  210. package/src/learning/MemoryScorer.ts +69 -0
  211. package/src/learning/ProceduralCompiler.ts +45 -0
  212. package/src/learning/SemanticClusterer.ts +66 -0
  213. package/src/learning/index.ts +8 -0
  214. package/src/llm/llm-adapter.ts +159 -0
  215. package/src/mesh/index.ts +309 -0
  216. package/src/negotiation/NegotiationProtocol.ts +694 -0
  217. package/src/negotiation/NegotiationTypes.ts +473 -0
  218. package/src/negotiation/VotingMechanisms.ts +691 -0
  219. package/src/negotiation/index.ts +49 -0
  220. package/src/protocol/goal-synthesizer.ts +317 -0
  221. package/src/protocol/implementations.ts +474 -0
  222. package/src/protocol/micro-phase-decomposer.ts +299 -0
  223. package/src/protocol/micro-step-decomposer.test.ts +306 -0
  224. package/src/protocol-agent.test.ts +353 -0
  225. package/src/protocol-agent.ts +670 -0
  226. package/src/self-improve/absorb-scanner.ts +252 -0
  227. package/src/self-improve/evolution-engine.ts +149 -0
  228. package/src/self-improve/framework-absorber.ts +214 -0
  229. package/src/self-improve/index.ts +50 -0
  230. package/src/self-improve/prompt-optimizer.ts +212 -0
  231. package/src/self-improve/test-generator.ts +175 -0
  232. package/src/skill-router.ts +186 -0
  233. package/src/skills/index.ts +5 -0
  234. package/src/skills/skill-md-bridge.ts +1699 -0
  235. package/src/swarm/ACOEngine.ts +261 -0
  236. package/src/swarm/CollectiveIntelligence.ts +383 -0
  237. package/src/swarm/ContributionSynthesizer.ts +481 -0
  238. package/src/swarm/LeaderElection.ts +393 -0
  239. package/src/swarm/PSOEngine.ts +206 -0
  240. package/src/swarm/QuorumPolicy.ts +173 -0
  241. package/src/swarm/SwarmCoordinator.ts +335 -0
  242. package/src/swarm/SwarmManager.ts +442 -0
  243. package/src/swarm/SwarmMembership.ts +456 -0
  244. package/src/swarm/VotingRound.ts +255 -0
  245. package/src/swarm/__tests__/ACOEngine.prod.test.ts +164 -0
  246. package/src/swarm/__tests__/ACOEngine.test.ts +117 -0
  247. package/src/swarm/__tests__/CollectiveIntelligence.prod.test.ts +296 -0
  248. package/src/swarm/__tests__/CollectiveIntelligence.test.ts +457 -0
  249. package/src/swarm/__tests__/ContributionSynthesizer.prod.test.ts +269 -0
  250. package/src/swarm/__tests__/ContributionSynthesizer.test.ts +254 -0
  251. package/src/swarm/__tests__/LeaderElection.prod.test.ts +196 -0
  252. package/src/swarm/__tests__/LeaderElection.test.ts +151 -0
  253. package/src/swarm/__tests__/PSOEngine.prod.test.ts +162 -0
  254. package/src/swarm/__tests__/PSOEngine.test.ts +106 -0
  255. package/src/swarm/__tests__/QuorumPolicy.prod.test.ts +216 -0
  256. package/src/swarm/__tests__/QuorumPolicy.test.ts +177 -0
  257. package/src/swarm/__tests__/SwarmCoordinator.prod.test.ts +186 -0
  258. package/src/swarm/__tests__/SwarmCoordinator.test.ts +167 -0
  259. package/src/swarm/__tests__/SwarmManager.prod.test.ts +308 -0
  260. package/src/swarm/__tests__/SwarmManager.test.ts +373 -0
  261. package/src/swarm/__tests__/SwarmMembership.prod.test.ts +273 -0
  262. package/src/swarm/__tests__/SwarmMembership.test.ts +264 -0
  263. package/src/swarm/__tests__/VotingRound.prod.test.ts +233 -0
  264. package/src/swarm/__tests__/VotingRound.test.ts +174 -0
  265. package/src/swarm/analytics/SwarmInspector.ts +476 -0
  266. package/src/swarm/analytics/SwarmMetrics.ts +449 -0
  267. package/src/swarm/analytics/__tests__/SwarmInspector.prod.test.ts +366 -0
  268. package/src/swarm/analytics/__tests__/SwarmInspector.test.ts +454 -0
  269. package/src/swarm/analytics/__tests__/SwarmMetrics.prod.test.ts +254 -0
  270. package/src/swarm/analytics/__tests__/SwarmMetrics.test.ts +370 -0
  271. package/src/swarm/analytics/index.ts +7 -0
  272. package/src/swarm/index.ts +69 -0
  273. package/src/swarm/messaging/BroadcastChannel.ts +509 -0
  274. package/src/swarm/messaging/GossipProtocol.ts +565 -0
  275. package/src/swarm/messaging/SwarmEventBus.ts +443 -0
  276. package/src/swarm/messaging/__tests__/BroadcastChannel.prod.test.ts +331 -0
  277. package/src/swarm/messaging/__tests__/BroadcastChannel.test.ts +333 -0
  278. package/src/swarm/messaging/__tests__/GossipProtocol.prod.test.ts +356 -0
  279. package/src/swarm/messaging/__tests__/GossipProtocol.test.ts +437 -0
  280. package/src/swarm/messaging/__tests__/SwarmEventBus.prod.test.ts +191 -0
  281. package/src/swarm/messaging/__tests__/SwarmEventBus.test.ts +247 -0
  282. package/src/swarm/messaging/index.ts +8 -0
  283. package/src/swarm/spatial/FlockingBehavior.ts +462 -0
  284. package/src/swarm/spatial/FormationController.ts +500 -0
  285. package/src/swarm/spatial/Vector3.ts +170 -0
  286. package/src/swarm/spatial/ZoneClaiming.ts +509 -0
  287. package/src/swarm/spatial/__tests__/FlockingBehavior.prod.test.ts +239 -0
  288. package/src/swarm/spatial/__tests__/FlockingBehavior.test.ts +298 -0
  289. package/src/swarm/spatial/__tests__/FormationController.prod.test.ts +240 -0
  290. package/src/swarm/spatial/__tests__/FormationController.test.ts +297 -0
  291. package/src/swarm/spatial/__tests__/Vector3.prod.test.ts +283 -0
  292. package/src/swarm/spatial/__tests__/Vector3.test.ts +224 -0
  293. package/src/swarm/spatial/__tests__/ZoneClaiming.prod.test.ts +246 -0
  294. package/src/swarm/spatial/__tests__/ZoneClaiming.test.ts +374 -0
  295. package/src/swarm/spatial/index.ts +28 -0
  296. package/src/team.ts +1245 -0
  297. package/src/training/LRScheduler.ts +377 -0
  298. package/src/training/QualityScoringPipeline.ts +139 -0
  299. package/src/training/SoftDedup.ts +461 -0
  300. package/src/training/SparsityMonitor.ts +685 -0
  301. package/src/training/SparsityMonitorTypes.ts +209 -0
  302. package/src/training/SpatialTrainingDataGenerator.ts +1526 -0
  303. package/src/training/SpatialTrainingDataTypes.ts +216 -0
  304. package/src/training/TrainingPipelineConfig.ts +215 -0
  305. package/src/training/constants.ts +94 -0
  306. package/src/training/index.ts +138 -0
  307. package/src/training/schema.ts +147 -0
  308. package/src/training/scripts/generate-novel-use-cases-dataset.ts +272 -0
  309. package/src/training/scripts/generate-spatial-dataset.ts +521 -0
  310. package/src/training/training/data/novel-use-cases.jsonl +153 -0
  311. package/src/training/training/data/spatial-reasoning-10k.jsonl +9354 -0
  312. package/src/training/trainingmonkey/TrainingMonkeyIntegration.ts +477 -0
  313. package/src/training/trainingmonkey/TrainingMonkeyTypes.ts +230 -0
  314. package/src/training/trainingmonkey/index.ts +26 -0
  315. package/src/training/trait-mappings.ts +157 -0
  316. package/src/types/core-stubs.d.ts +113 -0
  317. package/src/types.ts +304 -0
  318. package/test-output.txt +0 -0
  319. package/test-result.json +1 -0
  320. package/tsc-errors.txt +4 -0
  321. package/tsc_output.txt +0 -0
  322. package/tsconfig.json +14 -0
  323. package/tsup-learning-esm.config.ts +12 -0
  324. package/tsup.config.ts +21 -0
  325. package/typescript-errors-2.txt +0 -0
  326. package/typescript-errors.txt +22 -0
  327. package/vitest-log-utf8.txt +268 -0
  328. package/vitest-log.txt +0 -0
  329. package/vitest.config.ts +8 -0
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Skill-MD Bridge — Bidirectional .hsplus <-> SKILL.md Conversion
3
+ *
4
+ * Converts HoloScript .hsplus composition skills to portable SKILL.md format
5
+ * (ClawHub/OpenClaw compatible) and back. Enables cross-platform skill sharing
6
+ * between HoloClaw's native .hsplus format and the broader agent skill ecosystem.
7
+ *
8
+ * Forward bridge: .hsplus -> SKILL.md
9
+ * - Extracts composition metadata (name, description, version) as YAML frontmatter
10
+ * - Converts behavior tree sequences into Markdown instruction steps
11
+ * - Includes trait declarations, state schema, and runtime requirements
12
+ * - Maps input_schema/output_schema to OpenClaw frontmatter fields
13
+ *
14
+ * Reverse bridge: SKILL.md -> .hsplus
15
+ * - Parses YAML frontmatter into composition metadata + trait declarations
16
+ * - Converts Markdown instructions into behavior tree sequence nodes
17
+ * - Wraps in full composition structure with @economy, @rate_limiter, @timeout_guard
18
+ * - Parses input_schema/output_schema from frontmatter into typed schemas
19
+ *
20
+ * HoloClaw Skill interop:
21
+ * - toHoloClawSkill() converts ParsedSkill to the Skill interface from SkillRegistryTrait
22
+ * - fromHoloClawSkill() converts Skill objects back to ParsedSkill for serialization
23
+ *
24
+ * ClawHub CLI integration: publish/install skill packages with registry URL support
25
+ *
26
+ * @version 1.1.0
27
+ * @see compositions/skills/*.hsplus — HoloClaw native skill format
28
+ * @see .claude/skills/ *\/SKILL.md — Claude Code SKILL.md format
29
+ * @see https://docs.openclaw.ai/tools/skills — ClawHub specification
30
+ *
31
+ * Security considerations (Corridor-inline):
32
+ * - File paths are validated against path traversal
33
+ * - No shell execution in the bridge itself (CLI integration uses subprocess)
34
+ * - Skill content is parsed, not eval'd
35
+ * - YAML frontmatter is parsed with safe subset (no !!python/exec etc.)
36
+ */
37
+ /**
38
+ * Schema field definition for input/output schemas.
39
+ * Compatible with OpenClaw SKILL.md frontmatter format and HoloClaw SkillInput/SkillOutput.
40
+ */
41
+ interface SchemaField {
42
+ /** Field name */
43
+ name: string;
44
+ /** Field type: string, number, boolean, object, array */
45
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
46
+ /** Whether this field is required (inputs only) */
47
+ required?: boolean;
48
+ /** Human-readable description */
49
+ description: string;
50
+ /** Default value (inputs only) */
51
+ default?: unknown;
52
+ }
53
+ /**
54
+ * Metadata extracted from an .hsplus composition skill or SKILL.md frontmatter.
55
+ * This is the canonical interchange format between the two representations.
56
+ */
57
+ interface SkillMetadata {
58
+ /** Skill identifier (kebab-case, e.g. "code-health") */
59
+ name: string;
60
+ /** Human-readable description of what the skill does */
61
+ description: string;
62
+ /** Semantic version string */
63
+ version: string;
64
+ /** Author name or organization */
65
+ author: string;
66
+ /** Skill category for marketplace browsing */
67
+ category?: string;
68
+ /** Tags for search/discovery */
69
+ tags?: string[];
70
+ /** Input schema fields (OpenClaw input_schema frontmatter) */
71
+ inputSchema?: SchemaField[];
72
+ /** Output schema fields (OpenClaw output_schema frontmatter) */
73
+ outputSchema?: SchemaField[];
74
+ /** Minimum HoloScript CLI version required */
75
+ holoCliVersion?: string;
76
+ /** Minimum Node.js version required */
77
+ nodeVersion?: string;
78
+ /** Economy budget limit per invocation (USD) */
79
+ spendLimit?: number;
80
+ /** Whether users can invoke this skill via slash command */
81
+ userInvocable?: boolean;
82
+ /** License identifier (SPDX) */
83
+ license?: string;
84
+ /** Homepage URL */
85
+ homepage?: string;
86
+ /** Repository URL */
87
+ repository?: string;
88
+ }
89
+ /**
90
+ * A state variable declared in a composition skill.
91
+ */
92
+ interface SkillStateVar {
93
+ /** Variable name */
94
+ name: string;
95
+ /** Type: string, number, boolean */
96
+ type: string;
97
+ /** Default value */
98
+ defaultValue: string | number | boolean;
99
+ }
100
+ /**
101
+ * A trait declaration extracted from a composition skill.
102
+ */
103
+ interface SkillTraitDecl {
104
+ /** Trait name (e.g. "rate_limiter", "economy") */
105
+ name: string;
106
+ /** Trait configuration parameters */
107
+ config: Record<string, unknown>;
108
+ }
109
+ /**
110
+ * A behavior tree action step extracted from a composition skill.
111
+ */
112
+ interface SkillActionStep {
113
+ /** Action name (e.g. "shell_exec", "diagnose") */
114
+ action: string;
115
+ /** Human-readable description of what this step does */
116
+ description: string;
117
+ /** Action parameters */
118
+ params: Record<string, unknown>;
119
+ /** BT node type: action, sequence, selector, condition */
120
+ nodeType: 'action' | 'sequence' | 'selector' | 'condition';
121
+ }
122
+ /**
123
+ * A test assertion extracted from a composition skill.
124
+ */
125
+ interface SkillTest {
126
+ /** Test name */
127
+ name: string;
128
+ /** Setup expression (optional) */
129
+ setup?: string;
130
+ /** Assert expression */
131
+ assert: string;
132
+ }
133
+ /**
134
+ * Fully parsed skill representation — the intermediate form between .hsplus and SKILL.md.
135
+ */
136
+ interface ParsedSkill {
137
+ metadata: SkillMetadata;
138
+ traits: SkillTraitDecl[];
139
+ state: SkillStateVar[];
140
+ steps: SkillActionStep[];
141
+ tests: SkillTest[];
142
+ /** Raw environment block properties (if any) */
143
+ environment?: Record<string, unknown>;
144
+ /** Raw object declarations (for complex skills with scene objects) */
145
+ objects?: string[];
146
+ /** Original source comments (leading comment block) */
147
+ sourceComments: string[];
148
+ }
149
+ /**
150
+ * Result of a bridge conversion operation.
151
+ */
152
+ interface BridgeResult<T> {
153
+ success: boolean;
154
+ data?: T;
155
+ errors: string[];
156
+ warnings: string[];
157
+ }
158
+ /**
159
+ * ClawHub package manifest for publish/install operations.
160
+ */
161
+ interface ClawHubManifest {
162
+ name: string;
163
+ version: string;
164
+ description: string;
165
+ author: string;
166
+ license: string;
167
+ /** ClawHub registry URL for distribution */
168
+ registryUrl: string;
169
+ /** Tags for registry search/discovery */
170
+ tags?: string[];
171
+ /** Homepage URL */
172
+ homepage?: string;
173
+ /** Repository URL */
174
+ repository?: string;
175
+ holoScript: {
176
+ format: 'hsplus';
177
+ minCliVersion: string;
178
+ traits: string[];
179
+ stateVars: string[];
180
+ testCount: number;
181
+ /** Input schema field names */
182
+ inputFields: string[];
183
+ /** Output schema field names */
184
+ outputFields: string[];
185
+ };
186
+ files: string[];
187
+ dependencies?: Record<string, string>;
188
+ }
189
+ /**
190
+ * Parse an .hsplus composition source string into a structured ParsedSkill.
191
+ * Uses regex-based extraction (not a full parser) for lightweight, dependency-free operation.
192
+ */
193
+ declare function parseHsplus(source: string): BridgeResult<ParsedSkill>;
194
+ /**
195
+ * Convert a ParsedSkill into a SKILL.md string (ClawHub-compatible format).
196
+ */
197
+ declare function toSkillMd(skill: ParsedSkill): BridgeResult<string>;
198
+ /**
199
+ * Convert an .hsplus source string directly to SKILL.md string.
200
+ * Convenience wrapper combining parseHsplus + toSkillMd.
201
+ */
202
+ declare function hsplusToSkillMd(source: string): BridgeResult<string>;
203
+ /**
204
+ * Parse a SKILL.md string into a structured ParsedSkill.
205
+ */
206
+ declare function parseSkillMd(markdown: string): BridgeResult<ParsedSkill>;
207
+ /**
208
+ * Convert a ParsedSkill into an .hsplus composition source string.
209
+ */
210
+ declare function toHsplus(skill: ParsedSkill): BridgeResult<string>;
211
+ /**
212
+ * Convert a SKILL.md string directly to .hsplus source string.
213
+ * Convenience wrapper combining parseSkillMd + toHsplus.
214
+ */
215
+ declare function skillMdToHsplus(markdown: string): BridgeResult<string>;
216
+ /**
217
+ * Generate a ClawHub package manifest from a ParsedSkill.
218
+ * This manifest can be used for `clawhub publish` operations.
219
+ */
220
+ declare function generateClawHubManifest(skill: ParsedSkill, registryUrl?: string): ClawHubManifest;
221
+ /**
222
+ * Generate the complete set of files needed for a ClawHub publish.
223
+ * Returns a map of filename -> content.
224
+ */
225
+ declare function generateClawHubPackage(source: string): BridgeResult<Map<string, string>>;
226
+ /**
227
+ * Generate a CLI command string for publishing to ClawHub.
228
+ * Does NOT execute the command -- returns the string for the caller to execute.
229
+ *
230
+ * @param skillName - The skill name (kebab-case)
231
+ * @param registry - The registry URL (default: https://registry.clawhub.com)
232
+ */
233
+ declare function getPublishCommand(skillName: string, registry?: string): string;
234
+ /**
235
+ * Generate a CLI command string for installing a skill from ClawHub.
236
+ *
237
+ * @param skillName - The skill name (kebab-case)
238
+ * @param targetDir - Target directory (default: compositions/skills)
239
+ * @param registry - The registry URL (default: https://registry.clawhub.com)
240
+ */
241
+ declare function getInstallCommand(skillName: string, targetDir?: string, registry?: string): string;
242
+ /**
243
+ * Generate a CLI command string for installing via the HoloScript CLI.
244
+ *
245
+ * @param skillName - The skill name (kebab-case)
246
+ */
247
+ declare function getHsInstallCommand(skillName: string): string;
248
+ /**
249
+ * HoloClaw Skill interface — mirrors SkillRegistryTrait.Skill without the
250
+ * execute function (which cannot be serialized). This is the shape used for
251
+ * registry listing and interchange.
252
+ */
253
+ interface HoloClawSkill {
254
+ id: string;
255
+ name: string;
256
+ description: string;
257
+ version: string;
258
+ author: string;
259
+ inputs: HoloClawSkillInput[];
260
+ outputs: HoloClawSkillOutput[];
261
+ sandbox: boolean;
262
+ }
263
+ interface HoloClawSkillInput {
264
+ name: string;
265
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
266
+ required: boolean;
267
+ description: string;
268
+ default?: unknown;
269
+ }
270
+ interface HoloClawSkillOutput {
271
+ name: string;
272
+ type: string;
273
+ description: string;
274
+ }
275
+ /**
276
+ * Convert a ParsedSkill (bridge intermediate) to a HoloClaw Skill object.
277
+ * This enables skills parsed from SKILL.md to be registered in the HoloClaw
278
+ * SkillRegistry runtime (minus the execute function, which must be provided
279
+ * separately or wired via a BT executor).
280
+ */
281
+ declare function toHoloClawSkill(parsed: ParsedSkill): HoloClawSkill;
282
+ /**
283
+ * Convert a HoloClaw Skill object to a ParsedSkill (bridge intermediate).
284
+ * This enables HoloClaw runtime skills to be serialized as SKILL.md or .hsplus
285
+ * for distribution via ClawHub.
286
+ */
287
+ declare function fromHoloClawSkill(skill: HoloClawSkill): ParsedSkill;
288
+
289
+ export { type BridgeResult, type ClawHubManifest, type HoloClawSkill, type HoloClawSkillInput, type HoloClawSkillOutput, type ParsedSkill, type SchemaField, type SkillActionStep, type SkillMetadata, type SkillStateVar, type SkillTest, type SkillTraitDecl, fromHoloClawSkill, generateClawHubManifest, generateClawHubPackage, getHsInstallCommand, getInstallCommand, getPublishCommand, hsplusToSkillMd, parseHsplus, parseSkillMd, skillMdToHsplus, toHoloClawSkill, toHsplus, toSkillMd };
@@ -0,0 +1,289 @@
1
+ /**
2
+ * Skill-MD Bridge — Bidirectional .hsplus <-> SKILL.md Conversion
3
+ *
4
+ * Converts HoloScript .hsplus composition skills to portable SKILL.md format
5
+ * (ClawHub/OpenClaw compatible) and back. Enables cross-platform skill sharing
6
+ * between HoloClaw's native .hsplus format and the broader agent skill ecosystem.
7
+ *
8
+ * Forward bridge: .hsplus -> SKILL.md
9
+ * - Extracts composition metadata (name, description, version) as YAML frontmatter
10
+ * - Converts behavior tree sequences into Markdown instruction steps
11
+ * - Includes trait declarations, state schema, and runtime requirements
12
+ * - Maps input_schema/output_schema to OpenClaw frontmatter fields
13
+ *
14
+ * Reverse bridge: SKILL.md -> .hsplus
15
+ * - Parses YAML frontmatter into composition metadata + trait declarations
16
+ * - Converts Markdown instructions into behavior tree sequence nodes
17
+ * - Wraps in full composition structure with @economy, @rate_limiter, @timeout_guard
18
+ * - Parses input_schema/output_schema from frontmatter into typed schemas
19
+ *
20
+ * HoloClaw Skill interop:
21
+ * - toHoloClawSkill() converts ParsedSkill to the Skill interface from SkillRegistryTrait
22
+ * - fromHoloClawSkill() converts Skill objects back to ParsedSkill for serialization
23
+ *
24
+ * ClawHub CLI integration: publish/install skill packages with registry URL support
25
+ *
26
+ * @version 1.1.0
27
+ * @see compositions/skills/*.hsplus — HoloClaw native skill format
28
+ * @see .claude/skills/ *\/SKILL.md — Claude Code SKILL.md format
29
+ * @see https://docs.openclaw.ai/tools/skills — ClawHub specification
30
+ *
31
+ * Security considerations (Corridor-inline):
32
+ * - File paths are validated against path traversal
33
+ * - No shell execution in the bridge itself (CLI integration uses subprocess)
34
+ * - Skill content is parsed, not eval'd
35
+ * - YAML frontmatter is parsed with safe subset (no !!python/exec etc.)
36
+ */
37
+ /**
38
+ * Schema field definition for input/output schemas.
39
+ * Compatible with OpenClaw SKILL.md frontmatter format and HoloClaw SkillInput/SkillOutput.
40
+ */
41
+ interface SchemaField {
42
+ /** Field name */
43
+ name: string;
44
+ /** Field type: string, number, boolean, object, array */
45
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
46
+ /** Whether this field is required (inputs only) */
47
+ required?: boolean;
48
+ /** Human-readable description */
49
+ description: string;
50
+ /** Default value (inputs only) */
51
+ default?: unknown;
52
+ }
53
+ /**
54
+ * Metadata extracted from an .hsplus composition skill or SKILL.md frontmatter.
55
+ * This is the canonical interchange format between the two representations.
56
+ */
57
+ interface SkillMetadata {
58
+ /** Skill identifier (kebab-case, e.g. "code-health") */
59
+ name: string;
60
+ /** Human-readable description of what the skill does */
61
+ description: string;
62
+ /** Semantic version string */
63
+ version: string;
64
+ /** Author name or organization */
65
+ author: string;
66
+ /** Skill category for marketplace browsing */
67
+ category?: string;
68
+ /** Tags for search/discovery */
69
+ tags?: string[];
70
+ /** Input schema fields (OpenClaw input_schema frontmatter) */
71
+ inputSchema?: SchemaField[];
72
+ /** Output schema fields (OpenClaw output_schema frontmatter) */
73
+ outputSchema?: SchemaField[];
74
+ /** Minimum HoloScript CLI version required */
75
+ holoCliVersion?: string;
76
+ /** Minimum Node.js version required */
77
+ nodeVersion?: string;
78
+ /** Economy budget limit per invocation (USD) */
79
+ spendLimit?: number;
80
+ /** Whether users can invoke this skill via slash command */
81
+ userInvocable?: boolean;
82
+ /** License identifier (SPDX) */
83
+ license?: string;
84
+ /** Homepage URL */
85
+ homepage?: string;
86
+ /** Repository URL */
87
+ repository?: string;
88
+ }
89
+ /**
90
+ * A state variable declared in a composition skill.
91
+ */
92
+ interface SkillStateVar {
93
+ /** Variable name */
94
+ name: string;
95
+ /** Type: string, number, boolean */
96
+ type: string;
97
+ /** Default value */
98
+ defaultValue: string | number | boolean;
99
+ }
100
+ /**
101
+ * A trait declaration extracted from a composition skill.
102
+ */
103
+ interface SkillTraitDecl {
104
+ /** Trait name (e.g. "rate_limiter", "economy") */
105
+ name: string;
106
+ /** Trait configuration parameters */
107
+ config: Record<string, unknown>;
108
+ }
109
+ /**
110
+ * A behavior tree action step extracted from a composition skill.
111
+ */
112
+ interface SkillActionStep {
113
+ /** Action name (e.g. "shell_exec", "diagnose") */
114
+ action: string;
115
+ /** Human-readable description of what this step does */
116
+ description: string;
117
+ /** Action parameters */
118
+ params: Record<string, unknown>;
119
+ /** BT node type: action, sequence, selector, condition */
120
+ nodeType: 'action' | 'sequence' | 'selector' | 'condition';
121
+ }
122
+ /**
123
+ * A test assertion extracted from a composition skill.
124
+ */
125
+ interface SkillTest {
126
+ /** Test name */
127
+ name: string;
128
+ /** Setup expression (optional) */
129
+ setup?: string;
130
+ /** Assert expression */
131
+ assert: string;
132
+ }
133
+ /**
134
+ * Fully parsed skill representation — the intermediate form between .hsplus and SKILL.md.
135
+ */
136
+ interface ParsedSkill {
137
+ metadata: SkillMetadata;
138
+ traits: SkillTraitDecl[];
139
+ state: SkillStateVar[];
140
+ steps: SkillActionStep[];
141
+ tests: SkillTest[];
142
+ /** Raw environment block properties (if any) */
143
+ environment?: Record<string, unknown>;
144
+ /** Raw object declarations (for complex skills with scene objects) */
145
+ objects?: string[];
146
+ /** Original source comments (leading comment block) */
147
+ sourceComments: string[];
148
+ }
149
+ /**
150
+ * Result of a bridge conversion operation.
151
+ */
152
+ interface BridgeResult<T> {
153
+ success: boolean;
154
+ data?: T;
155
+ errors: string[];
156
+ warnings: string[];
157
+ }
158
+ /**
159
+ * ClawHub package manifest for publish/install operations.
160
+ */
161
+ interface ClawHubManifest {
162
+ name: string;
163
+ version: string;
164
+ description: string;
165
+ author: string;
166
+ license: string;
167
+ /** ClawHub registry URL for distribution */
168
+ registryUrl: string;
169
+ /** Tags for registry search/discovery */
170
+ tags?: string[];
171
+ /** Homepage URL */
172
+ homepage?: string;
173
+ /** Repository URL */
174
+ repository?: string;
175
+ holoScript: {
176
+ format: 'hsplus';
177
+ minCliVersion: string;
178
+ traits: string[];
179
+ stateVars: string[];
180
+ testCount: number;
181
+ /** Input schema field names */
182
+ inputFields: string[];
183
+ /** Output schema field names */
184
+ outputFields: string[];
185
+ };
186
+ files: string[];
187
+ dependencies?: Record<string, string>;
188
+ }
189
+ /**
190
+ * Parse an .hsplus composition source string into a structured ParsedSkill.
191
+ * Uses regex-based extraction (not a full parser) for lightweight, dependency-free operation.
192
+ */
193
+ declare function parseHsplus(source: string): BridgeResult<ParsedSkill>;
194
+ /**
195
+ * Convert a ParsedSkill into a SKILL.md string (ClawHub-compatible format).
196
+ */
197
+ declare function toSkillMd(skill: ParsedSkill): BridgeResult<string>;
198
+ /**
199
+ * Convert an .hsplus source string directly to SKILL.md string.
200
+ * Convenience wrapper combining parseHsplus + toSkillMd.
201
+ */
202
+ declare function hsplusToSkillMd(source: string): BridgeResult<string>;
203
+ /**
204
+ * Parse a SKILL.md string into a structured ParsedSkill.
205
+ */
206
+ declare function parseSkillMd(markdown: string): BridgeResult<ParsedSkill>;
207
+ /**
208
+ * Convert a ParsedSkill into an .hsplus composition source string.
209
+ */
210
+ declare function toHsplus(skill: ParsedSkill): BridgeResult<string>;
211
+ /**
212
+ * Convert a SKILL.md string directly to .hsplus source string.
213
+ * Convenience wrapper combining parseSkillMd + toHsplus.
214
+ */
215
+ declare function skillMdToHsplus(markdown: string): BridgeResult<string>;
216
+ /**
217
+ * Generate a ClawHub package manifest from a ParsedSkill.
218
+ * This manifest can be used for `clawhub publish` operations.
219
+ */
220
+ declare function generateClawHubManifest(skill: ParsedSkill, registryUrl?: string): ClawHubManifest;
221
+ /**
222
+ * Generate the complete set of files needed for a ClawHub publish.
223
+ * Returns a map of filename -> content.
224
+ */
225
+ declare function generateClawHubPackage(source: string): BridgeResult<Map<string, string>>;
226
+ /**
227
+ * Generate a CLI command string for publishing to ClawHub.
228
+ * Does NOT execute the command -- returns the string for the caller to execute.
229
+ *
230
+ * @param skillName - The skill name (kebab-case)
231
+ * @param registry - The registry URL (default: https://registry.clawhub.com)
232
+ */
233
+ declare function getPublishCommand(skillName: string, registry?: string): string;
234
+ /**
235
+ * Generate a CLI command string for installing a skill from ClawHub.
236
+ *
237
+ * @param skillName - The skill name (kebab-case)
238
+ * @param targetDir - Target directory (default: compositions/skills)
239
+ * @param registry - The registry URL (default: https://registry.clawhub.com)
240
+ */
241
+ declare function getInstallCommand(skillName: string, targetDir?: string, registry?: string): string;
242
+ /**
243
+ * Generate a CLI command string for installing via the HoloScript CLI.
244
+ *
245
+ * @param skillName - The skill name (kebab-case)
246
+ */
247
+ declare function getHsInstallCommand(skillName: string): string;
248
+ /**
249
+ * HoloClaw Skill interface — mirrors SkillRegistryTrait.Skill without the
250
+ * execute function (which cannot be serialized). This is the shape used for
251
+ * registry listing and interchange.
252
+ */
253
+ interface HoloClawSkill {
254
+ id: string;
255
+ name: string;
256
+ description: string;
257
+ version: string;
258
+ author: string;
259
+ inputs: HoloClawSkillInput[];
260
+ outputs: HoloClawSkillOutput[];
261
+ sandbox: boolean;
262
+ }
263
+ interface HoloClawSkillInput {
264
+ name: string;
265
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
266
+ required: boolean;
267
+ description: string;
268
+ default?: unknown;
269
+ }
270
+ interface HoloClawSkillOutput {
271
+ name: string;
272
+ type: string;
273
+ description: string;
274
+ }
275
+ /**
276
+ * Convert a ParsedSkill (bridge intermediate) to a HoloClaw Skill object.
277
+ * This enables skills parsed from SKILL.md to be registered in the HoloClaw
278
+ * SkillRegistry runtime (minus the execute function, which must be provided
279
+ * separately or wired via a BT executor).
280
+ */
281
+ declare function toHoloClawSkill(parsed: ParsedSkill): HoloClawSkill;
282
+ /**
283
+ * Convert a HoloClaw Skill object to a ParsedSkill (bridge intermediate).
284
+ * This enables HoloClaw runtime skills to be serialized as SKILL.md or .hsplus
285
+ * for distribution via ClawHub.
286
+ */
287
+ declare function fromHoloClawSkill(skill: HoloClawSkill): ParsedSkill;
288
+
289
+ export { type BridgeResult, type ClawHubManifest, type HoloClawSkill, type HoloClawSkillInput, type HoloClawSkillOutput, type ParsedSkill, type SchemaField, type SkillActionStep, type SkillMetadata, type SkillStateVar, type SkillTest, type SkillTraitDecl, fromHoloClawSkill, generateClawHubManifest, generateClawHubPackage, getHsInstallCommand, getInstallCommand, getPublishCommand, hsplusToSkillMd, parseHsplus, parseSkillMd, skillMdToHsplus, toHoloClawSkill, toHsplus, toSkillMd };