@crewx/sdk 0.8.0-rc.72 → 0.8.0-rc.74

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 (548) hide show
  1. package/README.md +380 -818
  2. package/dist/adapter/context-builder.d.ts +35 -0
  3. package/dist/adapter/context-builder.js +87 -0
  4. package/dist/adapter/index.d.ts +5 -0
  5. package/dist/{core/remote → adapter}/index.js +3 -2
  6. package/dist/adapter/plugin-helper.d.ts +19 -0
  7. package/dist/adapter/plugin-helper.js +45 -0
  8. package/dist/adapter/scoped-store.d.ts +12 -0
  9. package/dist/adapter/scoped-store.js +43 -0
  10. package/dist/adapter/types.d.ts +264 -0
  11. package/dist/adapter/types.js +23 -0
  12. package/dist/agent/resolver.d.ts +18 -0
  13. package/dist/agent/resolver.js +46 -0
  14. package/dist/boxing/box-storage.interface.d.ts +12 -0
  15. package/dist/boxing/box-storage.interface.js +3 -0
  16. package/dist/boxing/box.service.d.ts +4 -0
  17. package/dist/boxing/box.service.js +5 -1
  18. package/dist/boxing/box.types.d.ts +4 -0
  19. package/dist/boxing/box.types.js +3 -0
  20. package/dist/boxing/context-builder.d.ts +6 -7
  21. package/dist/boxing/context-builder.js +3 -0
  22. package/dist/client/CrewxClient.d.ts +65 -0
  23. package/dist/client/CrewxClient.js +86 -0
  24. package/dist/client/index.d.ts +3 -0
  25. package/dist/client/index.js +6 -0
  26. package/dist/config/loader.browser.d.ts +14 -0
  27. package/dist/config/loader.browser.js +59 -0
  28. package/dist/config/loader.d.ts +19 -0
  29. package/dist/config/loader.js +95 -0
  30. package/dist/conversation/index.d.ts +5 -3
  31. package/dist/conversation/index.js +8 -3
  32. package/dist/conversation/sqlite-provider.d.ts +21 -0
  33. package/dist/conversation/sqlite-provider.js +178 -0
  34. package/dist/conversation/to-task-reader.d.ts +14 -0
  35. package/dist/conversation/to-task-reader.js +28 -0
  36. package/dist/conversation/to-template-messages.d.ts +15 -0
  37. package/dist/conversation/to-template-messages.js +34 -0
  38. package/dist/conversation/types.d.ts +101 -0
  39. package/dist/conversation/types.js +10 -0
  40. package/dist/esm/agent/resolver.js +41 -0
  41. package/dist/esm/boxing/box-storage.interface.js +5 -0
  42. package/dist/esm/boxing/box.service.js +69 -0
  43. package/dist/esm/boxing/box.types.js +5 -0
  44. package/dist/esm/boxing/context-builder.js +76 -0
  45. package/dist/esm/client/CrewxClient.js +82 -0
  46. package/dist/esm/client/index.js +2 -0
  47. package/dist/esm/config/loader.browser.js +54 -0
  48. package/dist/esm/config/loader.js +77 -0
  49. package/dist/esm/events/TypedEventEmitter.js +61 -0
  50. package/dist/esm/events/types.js +8 -0
  51. package/dist/esm/facade/Crewx.browser.js +310 -0
  52. package/dist/esm/facade/Crewx.js +941 -0
  53. package/dist/esm/hooks/define.js +10 -0
  54. package/dist/esm/hooks/dispatch.js +76 -0
  55. package/dist/esm/hooks/index.js +6 -0
  56. package/dist/esm/hooks/observer.js +56 -0
  57. package/dist/esm/hooks/plugin.js +12 -0
  58. package/dist/esm/hooks/types.js +9 -0
  59. package/dist/esm/index.browser.js +15 -0
  60. package/dist/esm/index.js +60 -0
  61. package/dist/esm/layout/loader.js +268 -0
  62. package/dist/esm/layout/props-validator.js +297 -0
  63. package/dist/esm/layout/renderer.js +180 -0
  64. package/dist/esm/layout/types.js +31 -0
  65. package/dist/esm/parallel/agent-runtime.js +21 -0
  66. package/dist/esm/parallel/helpers.js +214 -0
  67. package/dist/esm/parallel/index.js +5 -0
  68. package/dist/esm/parallel/parallel-runner.js +221 -0
  69. package/dist/esm/parallel/types.js +5 -0
  70. package/dist/esm/parsers/agent-call.util.js +15 -0
  71. package/dist/esm/parsers/claude.parser.js +64 -0
  72. package/dist/esm/parsers/codex.parser.js +97 -0
  73. package/dist/esm/parsers/copilot.parser.js +63 -0
  74. package/dist/esm/parsers/gemini.parser.js +43 -0
  75. package/dist/esm/parsers/opencode.parser.js +73 -0
  76. package/dist/esm/parsers/router.js +53 -0
  77. package/dist/esm/platform/BrowserFsAdapter.js +80 -0
  78. package/dist/esm/platform/IFsAdapter.js +2 -0
  79. package/dist/esm/platform/NodeFsAdapter.js +34 -0
  80. package/dist/esm/plugin/plugin-provider.js +202 -0
  81. package/dist/esm/plugin/types.js +8 -0
  82. package/dist/esm/plugin.js +25 -0
  83. package/dist/esm/provider/bridge.browser.js +43 -0
  84. package/dist/esm/provider/bridge.js +373 -0
  85. package/dist/esm/provider/parse-usage.js +80 -0
  86. package/dist/esm/provider/register-api.js +21 -0
  87. package/dist/esm/provider/vercel-runtime.js +310 -0
  88. package/dist/esm/remote/index.js +10 -0
  89. package/dist/esm/remote/remote-agent-manager.js +194 -0
  90. package/dist/esm/remote/remote-provider.js +98 -0
  91. package/dist/esm/remote/remote-transport.js +79 -0
  92. package/dist/esm/remote/types.js +8 -0
  93. package/dist/esm/server/auth.js +31 -0
  94. package/dist/esm/server/handler.js +72 -0
  95. package/dist/esm/server/index.js +5 -0
  96. package/dist/esm/server/tool-adapter.js +92 -0
  97. package/dist/esm/template/engine.js +100 -0
  98. package/dist/esm/template/helpers/exec.browser.js +31 -0
  99. package/dist/esm/template/helpers/exec.js +220 -0
  100. package/dist/esm/template/helpers/fenced_code.js +17 -0
  101. package/dist/esm/template/helpers/include.js +20 -0
  102. package/dist/esm/template/helpers/p1p2.js +83 -0
  103. package/dist/esm/template/loader/DocumentLoader.js +124 -0
  104. package/dist/esm/template/types.js +5 -0
  105. package/dist/esm/tools/delegate.js +57 -0
  106. package/dist/esm/tools/index.js +5 -0
  107. package/dist/esm/tools/node/builtin.js +541 -0
  108. package/dist/esm/tools/node/index.js +54 -0
  109. package/dist/esm/types/index.js +27 -0
  110. package/dist/esm/types/task-log.types.js +5 -0
  111. package/dist/esm/utils/env-defaults.js +23 -0
  112. package/dist/esm/utils/glob-match.js +38 -0
  113. package/dist/esm/utils/id.js +46 -0
  114. package/dist/esm/utils/workspace.js +21 -0
  115. package/dist/events/TypedEventEmitter.d.ts +31 -0
  116. package/dist/events/TypedEventEmitter.js +65 -0
  117. package/dist/events/types.d.ts +139 -0
  118. package/dist/events/types.js +9 -0
  119. package/dist/facade/Crewx.browser.d.ts +73 -0
  120. package/dist/facade/Crewx.browser.js +314 -0
  121. package/dist/facade/Crewx.d.ts +267 -0
  122. package/dist/facade/Crewx.js +1299 -0
  123. package/dist/hooks/define.d.ts +10 -0
  124. package/dist/hooks/define.js +13 -0
  125. package/dist/hooks/dispatch.d.ts +61 -0
  126. package/dist/hooks/dispatch.js +147 -0
  127. package/dist/hooks/index.d.ts +13 -0
  128. package/dist/hooks/index.js +24 -0
  129. package/dist/hooks/observer.d.ts +20 -0
  130. package/dist/hooks/observer.js +60 -0
  131. package/dist/hooks/plugin.d.ts +19 -0
  132. package/dist/hooks/plugin.js +17 -0
  133. package/dist/hooks/tool-normalize.d.ts +29 -0
  134. package/dist/hooks/tool-normalize.js +110 -0
  135. package/dist/hooks/types.d.ts +79 -0
  136. package/dist/hooks/types.js +12 -0
  137. package/dist/hooks/yaml-plugin.d.ts +29 -0
  138. package/dist/hooks/yaml-plugin.js +356 -0
  139. package/dist/index.browser.d.ts +15 -0
  140. package/dist/index.browser.js +25 -0
  141. package/dist/index.d.ts +70 -58
  142. package/dist/index.js +144 -133
  143. package/dist/{services/layout-loader.service.d.ts → layout/loader.d.ts} +24 -4
  144. package/dist/{services/layout-loader.service.js → layout/loader.js} +103 -73
  145. package/dist/{services/props-validator.service.d.ts → layout/props-validator.d.ts} +7 -1
  146. package/dist/{services/props-validator.service.js → layout/props-validator.js} +28 -59
  147. package/dist/{services/layout-renderer.service.d.ts → layout/renderer.d.ts} +28 -14
  148. package/dist/layout/renderer.js +193 -0
  149. package/dist/{types/layout.types.d.ts → layout/types.d.ts} +47 -1
  150. package/dist/{types/layout.types.js → layout/types.js} +15 -1
  151. package/dist/parallel/agent-runtime.d.ts +31 -0
  152. package/dist/parallel/agent-runtime.js +25 -0
  153. package/dist/{core/parallel → parallel}/helpers.d.ts +2 -1
  154. package/dist/{core/parallel → parallel}/helpers.js +55 -88
  155. package/dist/parallel/index.d.ts +8 -0
  156. package/dist/{core/parallel → parallel}/index.js +5 -3
  157. package/dist/{core/parallel → parallel}/parallel-runner.d.ts +8 -1
  158. package/dist/{core/parallel → parallel}/parallel-runner.js +53 -57
  159. package/dist/parallel/types.d.ts +65 -0
  160. package/dist/parallel/types.js +6 -0
  161. package/dist/parsers/agent-call.util.d.ts +3 -0
  162. package/dist/parsers/agent-call.util.js +2 -0
  163. package/dist/parsers/api.parser.d.ts +10 -0
  164. package/dist/parsers/api.parser.js +26 -0
  165. package/dist/parsers/claude.parser.d.ts +8 -0
  166. package/dist/parsers/claude.parser.js +22 -1
  167. package/dist/parsers/codex.parser.d.ts +8 -0
  168. package/dist/parsers/codex.parser.js +11 -0
  169. package/dist/parsers/copilot.parser.d.ts +9 -0
  170. package/dist/parsers/copilot.parser.js +8 -0
  171. package/dist/parsers/gemini.parser.d.ts +10 -0
  172. package/dist/parsers/gemini.parser.js +10 -0
  173. package/dist/parsers/opencode.parser.d.ts +12 -0
  174. package/dist/parsers/opencode.parser.js +76 -0
  175. package/dist/parsers/router.d.ts +7 -0
  176. package/dist/parsers/router.js +56 -0
  177. package/dist/platform/BrowserFsAdapter.d.ts +37 -0
  178. package/dist/platform/BrowserFsAdapter.js +84 -0
  179. package/dist/platform/IFsAdapter.d.ts +29 -0
  180. package/dist/{core/remote/types.js → platform/IFsAdapter.js} +1 -1
  181. package/dist/platform/NodeFsAdapter.d.ts +16 -0
  182. package/dist/platform/NodeFsAdapter.js +38 -0
  183. package/dist/plugin/plugin-provider.d.ts +33 -0
  184. package/dist/plugin/plugin-provider.js +207 -0
  185. package/dist/plugin/types.d.ts +53 -0
  186. package/dist/plugin/types.js +9 -0
  187. package/dist/plugin.d.ts +33 -0
  188. package/dist/plugin.js +29 -0
  189. package/dist/plugins/conversation.d.ts +18 -0
  190. package/dist/plugins/conversation.js +59 -0
  191. package/dist/plugins/file-logger.d.ts +29 -0
  192. package/dist/plugins/file-logger.js +87 -0
  193. package/dist/plugins/index.d.ts +16 -0
  194. package/dist/plugins/index.js +19 -0
  195. package/dist/plugins/sqlite-tracing.d.ts +29 -0
  196. package/dist/plugins/sqlite-tracing.js +112 -0
  197. package/dist/provider/bridge.browser.d.ts +49 -0
  198. package/dist/provider/bridge.browser.js +49 -0
  199. package/dist/provider/bridge.d.ts +106 -0
  200. package/dist/provider/bridge.js +380 -0
  201. package/dist/provider/mastra-runtime.d.ts +45 -0
  202. package/dist/provider/mastra-runtime.js +208 -0
  203. package/dist/provider/parse-usage.d.ts +20 -0
  204. package/dist/provider/parse-usage.js +83 -0
  205. package/dist/provider/register-api.d.ts +14 -0
  206. package/dist/provider/register-api.js +24 -0
  207. package/dist/provider/vercel-runtime.d.ts +54 -0
  208. package/dist/provider/vercel-runtime.js +347 -0
  209. package/dist/remote/index.d.ts +13 -0
  210. package/dist/remote/index.js +32 -0
  211. package/dist/remote/remote-agent-manager.d.ts +54 -0
  212. package/dist/{core/remote → remote}/remote-agent-manager.js +100 -97
  213. package/dist/remote/remote-provider.d.ts +47 -0
  214. package/dist/remote/remote-provider.js +141 -0
  215. package/dist/remote/remote-transport.d.ts +32 -0
  216. package/dist/remote/remote-transport.js +83 -0
  217. package/dist/remote/types.d.ts +147 -0
  218. package/dist/remote/types.js +9 -0
  219. package/dist/server/auth.d.ts +21 -0
  220. package/dist/server/auth.js +35 -0
  221. package/dist/server/handler.d.ts +24 -0
  222. package/dist/server/handler.js +75 -0
  223. package/dist/server/index.d.ts +7 -0
  224. package/dist/server/index.js +9 -0
  225. package/dist/server/tool-adapter.d.ts +19 -0
  226. package/dist/server/tool-adapter.js +95 -0
  227. package/dist/template/engine.d.ts +28 -0
  228. package/dist/template/engine.js +137 -0
  229. package/dist/template/helpers/exec.browser.d.ts +22 -0
  230. package/dist/template/helpers/exec.browser.js +41 -0
  231. package/dist/template/helpers/exec.d.ts +60 -0
  232. package/dist/template/helpers/exec.js +230 -0
  233. package/dist/template/helpers/fenced_code.d.ts +22 -0
  234. package/dist/template/helpers/fenced_code.js +20 -0
  235. package/dist/template/helpers/format-conversation.d.ts +30 -0
  236. package/dist/template/helpers/format-conversation.js +53 -0
  237. package/dist/template/helpers/include.d.ts +16 -0
  238. package/dist/template/helpers/include.js +23 -0
  239. package/dist/template/helpers/p1p2.d.ts +37 -0
  240. package/dist/template/helpers/p1p2.js +90 -0
  241. package/dist/template/loader/DocumentLoader.d.ts +48 -0
  242. package/dist/template/loader/DocumentLoader.js +128 -0
  243. package/dist/template/types.d.ts +51 -0
  244. package/dist/template/types.js +6 -0
  245. package/dist/testing/index.d.ts +12 -0
  246. package/dist/testing/index.js +16 -0
  247. package/dist/testing/mock-audit.d.ts +10 -0
  248. package/dist/testing/mock-audit.js +13 -0
  249. package/dist/testing/mock-context.d.ts +27 -0
  250. package/dist/testing/mock-context.js +68 -0
  251. package/dist/testing/mock-logger.d.ts +15 -0
  252. package/dist/testing/mock-logger.js +27 -0
  253. package/dist/testing/mock-router.d.ts +16 -0
  254. package/dist/testing/mock-router.js +67 -0
  255. package/dist/testing/mock-storage.d.ts +9 -0
  256. package/dist/testing/mock-storage.js +21 -0
  257. package/dist/testing/mock-store.d.ts +3 -0
  258. package/dist/testing/mock-store.js +8 -0
  259. package/dist/tools/delegate.d.ts +10 -0
  260. package/dist/tools/delegate.js +60 -0
  261. package/dist/tools/index.d.ts +5 -12
  262. package/dist/tools/index.js +6 -37
  263. package/dist/tools/node/builtin.d.ts +23 -0
  264. package/dist/tools/node/builtin.js +547 -0
  265. package/dist/tools/node/index.d.ts +23 -0
  266. package/dist/tools/node/index.js +59 -0
  267. package/dist/types/index.d.ts +804 -6
  268. package/dist/types/index.js +29 -20
  269. package/dist/types/task-log.types.d.ts +4 -0
  270. package/dist/types/task-log.types.js +3 -0
  271. package/dist/utils/env-defaults.d.ts +18 -0
  272. package/dist/utils/env-defaults.js +27 -0
  273. package/dist/utils/glob-match.d.ts +18 -0
  274. package/dist/utils/glob-match.js +42 -0
  275. package/dist/{core → utils}/id.d.ts +15 -0
  276. package/dist/utils/id.js +50 -0
  277. package/dist/utils/timestamp.d.ts +2 -0
  278. package/dist/utils/timestamp.js +13 -0
  279. package/dist/{core → utils}/workspace.d.ts +4 -0
  280. package/dist/{core → utils}/workspace.js +3 -0
  281. package/package.json +67 -102
  282. package/src/schemas/hooks.schema.json +59 -0
  283. package/templates/agents/default.yaml +490 -0
  284. package/templates/agents/minimal.yaml +16 -0
  285. package/LICENSE +0 -201
  286. package/dist/adapters/MastraToolAdapter.d.ts +0 -9
  287. package/dist/adapters/MastraToolAdapter.js +0 -66
  288. package/dist/adapters/MastraToolAdapter.js.map +0 -1
  289. package/dist/api/index.d.ts +0 -2
  290. package/dist/api/index.js +0 -8
  291. package/dist/api/index.js.map +0 -1
  292. package/dist/boxing/box-storage.interface.js.map +0 -1
  293. package/dist/boxing/box.service.js.map +0 -1
  294. package/dist/boxing/box.types.js.map +0 -1
  295. package/dist/boxing/context-builder.js.map +0 -1
  296. package/dist/boxing/index.d.ts +0 -6
  297. package/dist/boxing/index.js +0 -11
  298. package/dist/boxing/index.js.map +0 -1
  299. package/dist/boxing/tokenizer.d.ts +0 -3
  300. package/dist/boxing/tokenizer.js +0 -11
  301. package/dist/boxing/tokenizer.js.map +0 -1
  302. package/dist/config/api-provider-parser.d.ts +0 -58
  303. package/dist/config/api-provider-parser.js +0 -212
  304. package/dist/config/api-provider-parser.js.map +0 -1
  305. package/dist/config/index.d.ts +0 -3
  306. package/dist/config/index.js +0 -20
  307. package/dist/config/index.js.map +0 -1
  308. package/dist/config/log.config.d.ts +0 -7
  309. package/dist/config/log.config.js +0 -20
  310. package/dist/config/log.config.js.map +0 -1
  311. package/dist/config/pricing.d.ts +0 -11
  312. package/dist/config/pricing.js +0 -53
  313. package/dist/config/pricing.js.map +0 -1
  314. package/dist/config/timeout.config.d.ts +0 -14
  315. package/dist/config/timeout.config.js +0 -34
  316. package/dist/config/timeout.config.js.map +0 -1
  317. package/dist/config/yaml-loader.d.ts +0 -8
  318. package/dist/config/yaml-loader.js +0 -155
  319. package/dist/config/yaml-loader.js.map +0 -1
  320. package/dist/constants/index.d.ts +0 -4
  321. package/dist/constants/index.js +0 -8
  322. package/dist/constants/index.js.map +0 -1
  323. package/dist/constants.d.ts +0 -1
  324. package/dist/constants.js +0 -18
  325. package/dist/constants.js.map +0 -1
  326. package/dist/conversation/conversation-config.d.ts +0 -9
  327. package/dist/conversation/conversation-config.js +0 -22
  328. package/dist/conversation/conversation-config.js.map +0 -1
  329. package/dist/conversation/conversation-history.interface.d.ts +0 -36
  330. package/dist/conversation/conversation-history.interface.js +0 -3
  331. package/dist/conversation/conversation-history.interface.js.map +0 -1
  332. package/dist/conversation/conversation-storage.service.d.ts +0 -16
  333. package/dist/conversation/conversation-storage.service.js +0 -213
  334. package/dist/conversation/conversation-storage.service.js.map +0 -1
  335. package/dist/conversation/index.js.map +0 -1
  336. package/dist/core/__tests__/id.test.d.ts +0 -1
  337. package/dist/core/__tests__/id.test.js +0 -115
  338. package/dist/core/__tests__/id.test.js.map +0 -1
  339. package/dist/core/agent/agent-factory.d.ts +0 -37
  340. package/dist/core/agent/agent-factory.js +0 -68
  341. package/dist/core/agent/agent-factory.js.map +0 -1
  342. package/dist/core/agent/agent-runtime.d.ts +0 -52
  343. package/dist/core/agent/agent-runtime.js +0 -206
  344. package/dist/core/agent/agent-runtime.js.map +0 -1
  345. package/dist/core/agent/event-bus.d.ts +0 -44
  346. package/dist/core/agent/event-bus.js +0 -43
  347. package/dist/core/agent/event-bus.js.map +0 -1
  348. package/dist/core/agent/index.d.ts +0 -3
  349. package/dist/core/agent/index.js +0 -13
  350. package/dist/core/agent/index.js.map +0 -1
  351. package/dist/core/env-defaults.d.ts +0 -1
  352. package/dist/core/env-defaults.js +0 -7
  353. package/dist/core/env-defaults.js.map +0 -1
  354. package/dist/core/id.js +0 -27
  355. package/dist/core/id.js.map +0 -1
  356. package/dist/core/parallel/helpers.js.map +0 -1
  357. package/dist/core/parallel/index.d.ts +0 -4
  358. package/dist/core/parallel/index.js.map +0 -1
  359. package/dist/core/parallel/parallel-runner.js.map +0 -1
  360. package/dist/core/parallel/types.d.ts +0 -41
  361. package/dist/core/parallel/types.js +0 -3
  362. package/dist/core/parallel/types.js.map +0 -1
  363. package/dist/core/providers/MastraAPIProvider.d.ts +0 -31
  364. package/dist/core/providers/MastraAPIProvider.js +0 -365
  365. package/dist/core/providers/MastraAPIProvider.js.map +0 -1
  366. package/dist/core/providers/ai-provider.interface.d.ts +0 -79
  367. package/dist/core/providers/ai-provider.interface.js +0 -23
  368. package/dist/core/providers/ai-provider.interface.js.map +0 -1
  369. package/dist/core/providers/base-ai.provider.d.ts +0 -84
  370. package/dist/core/providers/base-ai.provider.js +0 -1237
  371. package/dist/core/providers/base-ai.provider.js.map +0 -1
  372. package/dist/core/providers/base-ai.types.d.ts +0 -26
  373. package/dist/core/providers/base-ai.types.js +0 -3
  374. package/dist/core/providers/base-ai.types.js.map +0 -1
  375. package/dist/core/providers/claude.provider.d.ts +0 -19
  376. package/dist/core/providers/claude.provider.js +0 -170
  377. package/dist/core/providers/claude.provider.js.map +0 -1
  378. package/dist/core/providers/codex.provider.d.ts +0 -21
  379. package/dist/core/providers/codex.provider.js +0 -134
  380. package/dist/core/providers/codex.provider.js.map +0 -1
  381. package/dist/core/providers/copilot.provider.d.ts +0 -25
  382. package/dist/core/providers/copilot.provider.js +0 -146
  383. package/dist/core/providers/copilot.provider.js.map +0 -1
  384. package/dist/core/providers/dynamic-provider.factory.d.ts +0 -74
  385. package/dist/core/providers/dynamic-provider.factory.js +0 -645
  386. package/dist/core/providers/dynamic-provider.factory.js.map +0 -1
  387. package/dist/core/providers/gemini.provider.d.ts +0 -16
  388. package/dist/core/providers/gemini.provider.js +0 -101
  389. package/dist/core/providers/gemini.provider.js.map +0 -1
  390. package/dist/core/providers/index.d.ts +0 -8
  391. package/dist/core/providers/index.js +0 -20
  392. package/dist/core/providers/index.js.map +0 -1
  393. package/dist/core/providers/mock.provider.d.ts +0 -13
  394. package/dist/core/providers/mock.provider.js +0 -55
  395. package/dist/core/providers/mock.provider.js.map +0 -1
  396. package/dist/core/providers/provider-factory.d.ts +0 -3
  397. package/dist/core/providers/provider-factory.js +0 -65
  398. package/dist/core/providers/provider-factory.js.map +0 -1
  399. package/dist/core/providers/tool-call.types.d.ts +0 -39
  400. package/dist/core/providers/tool-call.types.js +0 -3
  401. package/dist/core/providers/tool-call.types.js.map +0 -1
  402. package/dist/core/remote/index.d.ts +0 -3
  403. package/dist/core/remote/index.js.map +0 -1
  404. package/dist/core/remote/remote-agent-manager.d.ts +0 -24
  405. package/dist/core/remote/remote-agent-manager.js.map +0 -1
  406. package/dist/core/remote/remote-transport.d.ts +0 -15
  407. package/dist/core/remote/remote-transport.js +0 -70
  408. package/dist/core/remote/remote-transport.js.map +0 -1
  409. package/dist/core/remote/types.d.ts +0 -79
  410. package/dist/core/remote/types.js.map +0 -1
  411. package/dist/core/workspace.js.map +0 -1
  412. package/dist/index.js.map +0 -1
  413. package/dist/internal/index.d.ts +0 -1
  414. package/dist/internal/index.js +0 -6
  415. package/dist/internal/index.js.map +0 -1
  416. package/dist/knowledge/DocumentManager.d.ts +0 -4
  417. package/dist/knowledge/DocumentManager.js +0 -119
  418. package/dist/knowledge/DocumentManager.js.map +0 -1
  419. package/dist/knowledge/index.d.ts +0 -1
  420. package/dist/knowledge/index.js +0 -18
  421. package/dist/knowledge/index.js.map +0 -1
  422. package/dist/parsers/agent-call.util.js.map +0 -1
  423. package/dist/parsers/claude.parser.js.map +0 -1
  424. package/dist/parsers/codex.parser.js.map +0 -1
  425. package/dist/parsers/copilot.parser.js.map +0 -1
  426. package/dist/parsers/gemini.parser.js.map +0 -1
  427. package/dist/parsers/index.d.ts +0 -7
  428. package/dist/parsers/index.js +0 -45
  429. package/dist/parsers/index.js.map +0 -1
  430. package/dist/schema/skills-parser.d.ts +0 -8
  431. package/dist/schema/skills-parser.js +0 -438
  432. package/dist/schema/skills-parser.js.map +0 -1
  433. package/dist/schema/skills.types.d.ts +0 -158
  434. package/dist/schema/skills.types.js +0 -41
  435. package/dist/schema/skills.types.js.map +0 -1
  436. package/dist/schemas/api-provider.schema.d.ts +0 -432
  437. package/dist/schemas/api-provider.schema.js +0 -50
  438. package/dist/schemas/api-provider.schema.js.map +0 -1
  439. package/dist/services/index.d.ts +0 -2
  440. package/dist/services/index.js +0 -19
  441. package/dist/services/index.js.map +0 -1
  442. package/dist/services/layout-loader.service.js.map +0 -1
  443. package/dist/services/layout-renderer.service.js +0 -325
  444. package/dist/services/layout-renderer.service.js.map +0 -1
  445. package/dist/services/props-validator.service.js.map +0 -1
  446. package/dist/skills/adapter/claude-skill-adapter.d.ts +0 -11
  447. package/dist/skills/adapter/claude-skill-adapter.js +0 -222
  448. package/dist/skills/adapter/claude-skill-adapter.js.map +0 -1
  449. package/dist/skills/index.d.ts +0 -6
  450. package/dist/skills/index.js +0 -31
  451. package/dist/skills/index.js.map +0 -1
  452. package/dist/skills/runtime/progressive-loader.d.ts +0 -27
  453. package/dist/skills/runtime/progressive-loader.js +0 -186
  454. package/dist/skills/runtime/progressive-loader.js.map +0 -1
  455. package/dist/skills/runtime/runtime-requirements-validator.d.ts +0 -23
  456. package/dist/skills/runtime/runtime-requirements-validator.js +0 -248
  457. package/dist/skills/runtime/runtime-requirements-validator.js.map +0 -1
  458. package/dist/skills/runtime/skill-runtime.service.d.ts +0 -42
  459. package/dist/skills/runtime/skill-runtime.service.js +0 -434
  460. package/dist/skills/runtime/skill-runtime.service.js.map +0 -1
  461. package/dist/tools/file-system.service.d.ts +0 -10
  462. package/dist/tools/file-system.service.js +0 -33
  463. package/dist/tools/file-system.service.js.map +0 -1
  464. package/dist/tools/find.tool.d.ts +0 -21
  465. package/dist/tools/find.tool.js +0 -139
  466. package/dist/tools/find.tool.js.map +0 -1
  467. package/dist/tools/glob.tool.d.ts +0 -24
  468. package/dist/tools/glob.tool.js +0 -153
  469. package/dist/tools/glob.tool.js.map +0 -1
  470. package/dist/tools/grep.tool.d.ts +0 -1
  471. package/dist/tools/grep.tool.js +0 -137
  472. package/dist/tools/grep.tool.js.map +0 -1
  473. package/dist/tools/index.js.map +0 -1
  474. package/dist/tools/ls.tool.d.ts +0 -1
  475. package/dist/tools/ls.tool.js +0 -94
  476. package/dist/tools/ls.tool.js.map +0 -1
  477. package/dist/tools/read-file.tool.d.ts +0 -1
  478. package/dist/tools/read-file.tool.js +0 -69
  479. package/dist/tools/read-file.tool.js.map +0 -1
  480. package/dist/tools/replace.tool.d.ts +0 -1
  481. package/dist/tools/replace.tool.js +0 -68
  482. package/dist/tools/replace.tool.js.map +0 -1
  483. package/dist/tools/run-shell-command.tool.d.ts +0 -1
  484. package/dist/tools/run-shell-command.tool.js +0 -64
  485. package/dist/tools/run-shell-command.tool.js.map +0 -1
  486. package/dist/tools/tree.tool.d.ts +0 -1
  487. package/dist/tools/tree.tool.js +0 -109
  488. package/dist/tools/tree.tool.js.map +0 -1
  489. package/dist/tools/types.d.ts +0 -42
  490. package/dist/tools/types.js +0 -13
  491. package/dist/tools/types.js.map +0 -1
  492. package/dist/tools/utils/file-utils.d.ts +0 -5
  493. package/dist/tools/utils/file-utils.js +0 -221
  494. package/dist/tools/utils/file-utils.js.map +0 -1
  495. package/dist/tools/write-file.tool.d.ts +0 -1
  496. package/dist/tools/write-file.tool.js +0 -55
  497. package/dist/tools/write-file.tool.js.map +0 -1
  498. package/dist/types/agent.types.d.ts +0 -134
  499. package/dist/types/agent.types.js +0 -16
  500. package/dist/types/agent.types.js.map +0 -1
  501. package/dist/types/api-provider.types.d.ts +0 -85
  502. package/dist/types/api-provider.types.js +0 -65
  503. package/dist/types/api-provider.types.js.map +0 -1
  504. package/dist/types/index.js.map +0 -1
  505. package/dist/types/layout.types.js.map +0 -1
  506. package/dist/types/provider.types.d.ts +0 -12
  507. package/dist/types/provider.types.js +0 -3
  508. package/dist/types/provider.types.js.map +0 -1
  509. package/dist/types/skill-runtime.types.d.ts +0 -244
  510. package/dist/types/skill-runtime.types.js +0 -44
  511. package/dist/types/skill-runtime.types.js.map +0 -1
  512. package/dist/types/structured-payload.types.d.ts +0 -46
  513. package/dist/types/structured-payload.types.js +0 -65
  514. package/dist/types/structured-payload.types.js.map +0 -1
  515. package/dist/types/task-log.types.js.map +0 -1
  516. package/dist/types/template.types.d.ts +0 -38
  517. package/dist/types/template.types.js +0 -3
  518. package/dist/types/template.types.js.map +0 -1
  519. package/dist/types.d.ts +0 -1
  520. package/dist/types.js +0 -18
  521. package/dist/types.js.map +0 -1
  522. package/dist/utils/api-provider-normalizer.d.ts +0 -16
  523. package/dist/utils/api-provider-normalizer.js +0 -135
  524. package/dist/utils/api-provider-normalizer.js.map +0 -1
  525. package/dist/utils/base-message-formatter.d.ts +0 -32
  526. package/dist/utils/base-message-formatter.js +0 -170
  527. package/dist/utils/base-message-formatter.js.map +0 -1
  528. package/dist/utils/error-utils.d.ts +0 -3
  529. package/dist/utils/error-utils.js +0 -27
  530. package/dist/utils/error-utils.js.map +0 -1
  531. package/dist/utils/index.d.ts +0 -4
  532. package/dist/utils/index.js +0 -21
  533. package/dist/utils/index.js.map +0 -1
  534. package/dist/utils/math-utils.d.ts +0 -3
  535. package/dist/utils/math-utils.js +0 -10
  536. package/dist/utils/math-utils.js.map +0 -1
  537. package/dist/utils/mention-parser.d.ts +0 -18
  538. package/dist/utils/mention-parser.js +0 -136
  539. package/dist/utils/mention-parser.js.map +0 -1
  540. package/dist/utils/string-utils.d.ts +0 -1
  541. package/dist/utils/string-utils.js +0 -10
  542. package/dist/utils/string-utils.js.map +0 -1
  543. package/dist/utils.d.ts +0 -3
  544. package/dist/utils.js +0 -20
  545. package/dist/utils.js.map +0 -1
  546. package/schema/api-provider-config.json +0 -138
  547. package/schema/crewx-config.json +0 -224
  548. package/schema/skills-config.json +0 -306
@@ -0,0 +1,10 @@
1
+ import { ToolObserverPlugin } from './observer';
2
+ export function definePlugin(def) {
3
+ return new (class extends ToolObserverPlugin {
4
+ name = def.name;
5
+ version = def.version;
6
+ on = def.on;
7
+ run = def.run;
8
+ })();
9
+ }
10
+ //# sourceMappingURL=define.js.map
@@ -0,0 +1,76 @@
1
+ import { resolve, relative } from 'path';
2
+ const MAX_REASON_LENGTH = 200;
3
+ export function sanitizeDenyReason(reason) {
4
+ const cleaned = reason.replace(/[\x00-\x1f\x7f]/g, '');
5
+ if (cleaned.length <= MAX_REASON_LENGTH) {
6
+ return cleaned;
7
+ }
8
+ return cleaned.slice(0, MAX_REASON_LENGTH - 11) + ' [redacted]';
9
+ }
10
+ export function isPathSafe(pluginPath, projectRoot) {
11
+ const resolved = resolve(pluginPath);
12
+ const root = resolve(projectRoot);
13
+ const rel = relative(root, resolved);
14
+ if (rel.startsWith('..') || resolve(resolved).startsWith('/etc/') || resolve(resolved).startsWith('/usr/')) {
15
+ return false;
16
+ }
17
+ if (resolved.includes('node_modules')) {
18
+ return false;
19
+ }
20
+ return true;
21
+ }
22
+ export function buildHookContext(input, cwd) {
23
+ return {
24
+ event: 'beforeTool',
25
+ traceId: input.tool_use_id || '',
26
+ agent: { id: '', role: '', team: '' },
27
+ provider: 'cli/claude',
28
+ thread: { id: '' },
29
+ tool: {
30
+ name: input.tool_name,
31
+ rawName: input.tool_name,
32
+ input: input.tool_input,
33
+ },
34
+ cwd: cwd || input.cwd,
35
+ sessionId: input.session_id,
36
+ pass: () => ({ type: 'pass' }),
37
+ deny: (r) => ({ type: 'deny', reason: r }),
38
+ inject: (m) => ({ type: 'inject', message: m }),
39
+ modify: (p) => ({ type: 'modify', patch: p }),
40
+ };
41
+ }
42
+ export async function evaluateHook(plugin, input, cwd) {
43
+ const ctx = buildHookContext(input, cwd);
44
+ const result = await plugin.run(ctx);
45
+ const baseOutput = {
46
+ hookSpecificOutput: {
47
+ hookEventName: input.hook_event_name,
48
+ permissionDecision: 'allow',
49
+ },
50
+ };
51
+ switch (result.type) {
52
+ case 'pass':
53
+ return { exitCode: 0, stdout: baseOutput };
54
+ case 'deny': {
55
+ const sanitizedReason = sanitizeDenyReason(result.reason);
56
+ return {
57
+ exitCode: 2,
58
+ stdout: {
59
+ hookSpecificOutput: {
60
+ hookEventName: input.hook_event_name,
61
+ permissionDecision: 'deny',
62
+ permissionDecisionReason: sanitizedReason,
63
+ },
64
+ },
65
+ };
66
+ }
67
+ case 'inject':
68
+ case 'modify':
69
+ console.error(`[crewx] Hook result type '${result.type}' is not supported in Phase 0. ` +
70
+ `Plugin: ${plugin.name}. Treating as pass.`);
71
+ return { exitCode: 0, stdout: baseOutput };
72
+ default:
73
+ return { exitCode: 0, stdout: baseOutput };
74
+ }
75
+ }
76
+ //# sourceMappingURL=dispatch.js.map
@@ -0,0 +1,6 @@
1
+ export { ToolObserverPlugin } from './observer';
2
+ export { HookPlugin, defineHookPlugin } from './plugin';
3
+ export { definePlugin } from './define';
4
+ export { Tools } from './types';
5
+ export { evaluateHook, sanitizeDenyReason, isPathSafe, buildHookContext, } from './dispatch';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,56 @@
1
+ import { CrewxPlugin } from '../plugin';
2
+ export class ToolObserverPlugin extends CrewxPlugin {
3
+ unsubs = [];
4
+ attach(crewx) {
5
+ if (this.on.beforeTool) {
6
+ const unsub = crewx.on('tool:observed:before', async (e) => {
7
+ if (!this.matchesTool(this.on.beforeTool, e.tool.name))
8
+ return;
9
+ const ctx = this.buildContext('beforeTool', e);
10
+ await this.run(ctx);
11
+ });
12
+ this.unsubs.push(unsub);
13
+ }
14
+ if (this.on.afterTool) {
15
+ const unsub = crewx.on('tool:observed:after', async (e) => {
16
+ if (!this.matchesTool(this.on.afterTool, e.tool.name))
17
+ return;
18
+ const ctx = this.buildContext('afterTool', e);
19
+ await this.run(ctx);
20
+ });
21
+ this.unsubs.push(unsub);
22
+ }
23
+ }
24
+ async detach(_crewx) {
25
+ for (const unsub of this.unsubs)
26
+ unsub();
27
+ this.unsubs = [];
28
+ }
29
+ matchesTool(filter, toolName) {
30
+ if (filter === true)
31
+ return true;
32
+ return filter.includes(toolName);
33
+ }
34
+ buildContext(event, e) {
35
+ return {
36
+ event,
37
+ traceId: e.traceId,
38
+ agent: {
39
+ id: e.agentId || e.agentRef,
40
+ role: '',
41
+ team: '',
42
+ },
43
+ provider: e.provider,
44
+ thread: { id: e.threadId || '' },
45
+ tool: {
46
+ name: e.tool.name,
47
+ rawName: e.tool.rawName,
48
+ input: 'input' in e.tool ? e.tool.input : undefined,
49
+ },
50
+ cwd: process.cwd(),
51
+ sessionId: e.sessionId || '',
52
+ pass: () => ({ type: 'pass' }),
53
+ };
54
+ }
55
+ }
56
+ //# sourceMappingURL=observer.js.map
@@ -0,0 +1,12 @@
1
+ export class HookPlugin {
2
+ capabilities = { required: [] };
3
+ }
4
+ export function defineHookPlugin(def) {
5
+ return new (class extends HookPlugin {
6
+ name = def.name;
7
+ version = def.version;
8
+ capabilities = def.capabilities ?? { required: [] };
9
+ run = def.run;
10
+ })();
11
+ }
12
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1,9 @@
1
+ export const Tools = {
2
+ FileRead: 'file.read',
3
+ FileWrite: 'file.write',
4
+ FileEdit: 'file.edit',
5
+ Shell: 'shell',
6
+ Search: 'search',
7
+ Other: 'other',
8
+ };
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @crewx/sdk browser entry point.
3
+ *
4
+ * Exports only browser-safe modules — no Node.js dependencies
5
+ * (child_process, fs, path, crypto, events).
6
+ */
7
+ // Browser-safe facade
8
+ export { Crewx } from './facade/Crewx.browser.js';
9
+ // Browser-safe provider bridge (registry only, no CLI spawn)
10
+ export { registerProviderFactory, createProvider, ProviderError } from './provider/bridge.browser.js';
11
+ // Config — browser-safe (no fs import)
12
+ export { parseYamlContent, ConfigLoadError } from './config/loader.browser.js';
13
+ // Platform adapters
14
+ export { BrowserFsAdapter } from './platform/BrowserFsAdapter.js';
15
+ //# sourceMappingURL=index.browser.js.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * @crewx/sdk public API surface.
3
+ */
4
+ // Main facade
5
+ export { Crewx } from './facade/Crewx';
6
+ // Plugin system
7
+ export { CrewxPlugin } from './plugin';
8
+ // Event system
9
+ export { TypedEventEmitter } from './events/TypedEventEmitter';
10
+ // Layout system
11
+ export { LayoutLoader } from './layout/loader';
12
+ export { LayoutRenderer } from './layout/renderer';
13
+ export { PropsValidator } from './layout/props-validator';
14
+ export { LayoutLoadError, PropsValidationError } from './layout/types';
15
+ // Template engine
16
+ export { TemplateEngine } from './template/engine';
17
+ // Document loader
18
+ export { DocumentLoader } from './template/loader/DocumentLoader';
19
+ export { NodeFsAdapter, defaultFsAdapter } from './platform/NodeFsAdapter';
20
+ export { BrowserFsAdapter } from './platform/BrowserFsAdapter';
21
+ // P1/P2 helpers (exported for direct use if needed)
22
+ export { truncateHelper, lengthHelper, escapeHandlebarsHelper, formatFileSizeHelper, formatTimestampHelper, } from './template/helpers/p1p2';
23
+ // Exec audit log control
24
+ export { setAuditVerbose } from './template/helpers/exec';
25
+ // Config utilities
26
+ export { loadYamlFile, parseYamlContent, ConfigLoadError } from './config/loader';
27
+ // Agent utilities
28
+ export { resolveAgent, AgentNotFoundError } from './agent/resolver';
29
+ // Provider utilities
30
+ export { createProvider, ProviderError, ClientToolCallRequiredError, registerProviderFactory } from './provider/bridge';
31
+ export { VercelProviderRuntime } from './provider/vercel-runtime';
32
+ export { registerApiProviders } from './provider/register-api';
33
+ // Tools
34
+ export { createDelegateTool } from './tools/delegate';
35
+ // Env utilities
36
+ export { resolveCrewxCli, resolveCrewxWorkspace } from './utils/env-defaults';
37
+ // ID utilities (backward-compat for @crewx/* built-in packages)
38
+ export { generateId, generateFingerprint } from './utils/id';
39
+ // Workspace utilities
40
+ export { hashWorkspaceId, normalizeWorkspacePath } from './utils/workspace';
41
+ // Boxing module
42
+ export { SdkBoxService } from './boxing/box.service';
43
+ export { buildContext } from './boxing/context-builder';
44
+ // Parsers
45
+ export { parseStdoutEvent } from './parsers/router';
46
+ // Provider utilities
47
+ export { parseUsage } from './provider/parse-usage';
48
+ // Parallel execution
49
+ export { ParallelRunner, ParallelRunnerTimeoutError } from './parallel/parallel-runner';
50
+ export { runQueriesParallel, runExecutesParallel } from './parallel/helpers';
51
+ export { AgentRuntime } from './parallel/agent-runtime';
52
+ // Plugin provider module
53
+ export { PluginProviderRuntime, createPluginProviderFactory } from './plugin/plugin-provider';
54
+ // Remote agent module
55
+ export { RemoteProviderRuntime, createRemoteProviderFactory } from './remote/remote-provider';
56
+ export { RemoteAgentManager } from './remote/remote-agent-manager';
57
+ export { McpHttpTransport } from './remote/remote-transport';
58
+ // Server module (MCP handler)
59
+ export { createHandler } from './server/handler';
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,268 @@
1
+ /**
2
+ * LayoutLoader — loads layout templates from templates/agents/*.yaml files.
3
+ * Ported 1:1 from packages/sdk-bak/src/services/layout-loader.service.ts.
4
+ * Only import paths and DEFAULT_OPTIONS.templatesPath are changed.
5
+ */
6
+ import { readFileSync, readdirSync, existsSync } from 'fs';
7
+ import * as path from 'path';
8
+ import { load as loadYaml } from 'js-yaml';
9
+ import { LayoutLoadError, } from './types';
10
+ /**
11
+ * Default loader options — points to SDK's bundled templates directory.
12
+ */
13
+ const DEFAULT_OPTIONS = {
14
+ templatesPath: path.join(__dirname, '../../../templates/agents'),
15
+ validationMode: 'lenient',
16
+ fallbackLayoutId: 'crewx/default',
17
+ };
18
+ /**
19
+ * Layout loader service.
20
+ * Loads and caches layout definitions from YAML files.
21
+ * Provides fallback mechanism and prop override support.
22
+ */
23
+ export class LayoutLoader {
24
+ layouts = new Map();
25
+ options;
26
+ constructor(options) {
27
+ this.options = { ...DEFAULT_OPTIONS, ...options };
28
+ this.loadAllLayouts();
29
+ }
30
+ /**
31
+ * Load a layout by ID with optional props override.
32
+ */
33
+ load(layoutId, propsOverride) {
34
+ let layout = this.layouts.get(layoutId);
35
+ if (!layout) {
36
+ const normalizedId = this.normalizeLayoutId(layoutId);
37
+ layout = this.layouts.get(normalizedId);
38
+ }
39
+ if (!layout) {
40
+ console.warn(`Layout not found: ${layoutId}, falling back to ${this.options.fallbackLayoutId}`);
41
+ layout = this.layouts.get(this.options.fallbackLayoutId);
42
+ if (!layout) {
43
+ throw new LayoutLoadError(`Fallback layout not found: ${this.options.fallbackLayoutId}`, this.options.fallbackLayoutId);
44
+ }
45
+ }
46
+ if (propsOverride && Object.keys(propsOverride).length > 0) {
47
+ return {
48
+ ...layout,
49
+ defaultProps: { ...layout.defaultProps, ...propsOverride },
50
+ };
51
+ }
52
+ return layout;
53
+ }
54
+ getLayoutIds() {
55
+ return Array.from(this.layouts.keys());
56
+ }
57
+ hasLayout(layoutId) {
58
+ if (this.layouts.has(layoutId))
59
+ return true;
60
+ const normalizedId = this.normalizeLayoutId(layoutId);
61
+ return this.layouts.has(normalizedId);
62
+ }
63
+ reload() {
64
+ this.layouts.clear();
65
+ this.loadAllLayouts();
66
+ }
67
+ /**
68
+ * Register or override a layout at runtime.
69
+ */
70
+ registerLayout(layoutId, layoutConfig) {
71
+ if (!layoutId || typeof layoutId !== 'string') {
72
+ throw new LayoutLoadError('Layout ID must be a non-empty string', layoutId);
73
+ }
74
+ const config = typeof layoutConfig === 'string'
75
+ ? { template: layoutConfig }
76
+ : layoutConfig;
77
+ const template = typeof config.template === 'string' ? config.template : '';
78
+ if (!template || template.trim().length === 0) {
79
+ throw new LayoutLoadError(`Custom layout template is empty for ${layoutId}`, layoutId);
80
+ }
81
+ const propsSchemaRaw = config.propsSchema || {};
82
+ const defaultPropsFromSchema = this.extractDefaultProps(propsSchemaRaw);
83
+ const explicitDefaults = config.defaultProps || {};
84
+ const layoutDefinition = {
85
+ id: layoutId,
86
+ version: config.version || '1.0.0',
87
+ description: config.description || `Custom layout ${layoutId}`,
88
+ template,
89
+ propsSchema: this.parsePropsSchema(propsSchemaRaw),
90
+ defaultProps: { ...defaultPropsFromSchema, ...explicitDefaults },
91
+ };
92
+ const existingLayout = this.layouts.get(layoutId);
93
+ const templatesEqual = existingLayout?.template === template &&
94
+ JSON.stringify(existingLayout?.defaultProps ?? {}) === JSON.stringify(layoutDefinition.defaultProps ?? {}) &&
95
+ JSON.stringify(existingLayout?.propsSchema ?? {}) === JSON.stringify(layoutDefinition.propsSchema ?? {});
96
+ this.layouts.set(layoutId, layoutDefinition);
97
+ if (process.env.CREWX_VERBOSE === '1') {
98
+ if (!existingLayout) {
99
+ console.error(`Registered custom layout: ${layoutId}`);
100
+ }
101
+ else if (!templatesEqual) {
102
+ console.error(`Updated custom layout: ${layoutId}`);
103
+ }
104
+ }
105
+ }
106
+ /**
107
+ * Register multiple layouts from a map.
108
+ */
109
+ registerLayouts(layoutsMap) {
110
+ for (const [id, config] of Object.entries(layoutsMap)) {
111
+ try {
112
+ this.registerLayout(id, config);
113
+ }
114
+ catch (error) {
115
+ console.warn(`Failed to register custom layout ${id}:`, error instanceof Error ? error.message : error);
116
+ }
117
+ }
118
+ }
119
+ loadAllLayouts() {
120
+ const layoutsDir = this.options.templatesPath;
121
+ if (!existsSync(layoutsDir)) {
122
+ throw new LayoutLoadError(`Templates directory not found: ${layoutsDir}`, undefined, new Error(`Directory does not exist: ${layoutsDir}`));
123
+ }
124
+ try {
125
+ const files = readdirSync(layoutsDir).filter(f => f.endsWith('.yaml') || f.endsWith('.yml'));
126
+ if (files.length === 0) {
127
+ console.warn(`No layout files found in ${layoutsDir}`);
128
+ }
129
+ for (const file of files) {
130
+ const layoutName = file.replace(/\.(yaml|yml)$/, '');
131
+ const layoutPath = path.join(layoutsDir, file);
132
+ try {
133
+ const layout = this.loadLayoutFile(layoutPath, layoutName);
134
+ const layoutId = `crewx/${layoutName}`;
135
+ this.layouts.set(layoutId, layout);
136
+ if (layoutId !== 'crewx/minimal') {
137
+ if (process.env.CREWX_VERBOSE === '1')
138
+ console.error(`Loaded layout: ${layoutId} from ${file}`);
139
+ }
140
+ }
141
+ catch (error) {
142
+ console.error(`Failed to load layout file ${file}:`, error);
143
+ }
144
+ }
145
+ if (process.env.CREWX_VERBOSE === '1')
146
+ console.error(`Loaded ${this.layouts.size} layouts from ${layoutsDir}`);
147
+ }
148
+ catch (error) {
149
+ throw new LayoutLoadError(`Failed to read layouts directory: ${layoutsDir}`, undefined, error instanceof Error ? error : new Error(String(error)));
150
+ }
151
+ }
152
+ loadLayoutFile(filePath, layoutName) {
153
+ try {
154
+ const content = readFileSync(filePath, 'utf-8');
155
+ if (!content || content.trim().length === 0) {
156
+ console.warn(`Empty YAML file: ${filePath}, will use fallback`);
157
+ throw new LayoutLoadError(`Empty YAML file: ${filePath}`, layoutName, new Error('File content is empty'));
158
+ }
159
+ const parsed = loadYaml(content);
160
+ if (!parsed || typeof parsed !== 'object') {
161
+ console.warn(`Invalid YAML content in ${filePath} (parsed as ${typeof parsed}), will use fallback`);
162
+ throw new LayoutLoadError(`Invalid or empty YAML in ${filePath}`, layoutName, new Error('YAML parsing returned null/undefined or non-object'));
163
+ }
164
+ // Format 2: layouts map (templates/agents/default.yaml format)
165
+ if (parsed.layouts && typeof parsed.layouts === 'object') {
166
+ const entry = this.resolveLayoutEntry(parsed.layouts, layoutName);
167
+ if (!entry || entry.template.trim().length === 0) {
168
+ console.warn(`Empty or missing layout template in ${filePath} for ${layoutName}`);
169
+ throw new LayoutLoadError(`Layout template not found or empty in layouts map: ${layoutName}`, layoutName);
170
+ }
171
+ // propsSchema may be inline in the layout entry object (e.g. default.yaml) or at the top level
172
+ const propsSchemaRaw = entry.propsSchema || parsed.propsSchema || {};
173
+ return {
174
+ id: `crewx/${layoutName}`,
175
+ version: parsed.version || '1.0.0',
176
+ description: parsed.description || `CrewX ${layoutName} layout`,
177
+ template: entry.template,
178
+ propsSchema: this.parsePropsSchema(propsSchemaRaw),
179
+ defaultProps: this.extractDefaultProps(propsSchemaRaw),
180
+ };
181
+ }
182
+ else {
183
+ // Format 1: direct layout definition
184
+ if (!parsed.template || (typeof parsed.template === 'string' && parsed.template.trim().length === 0)) {
185
+ console.warn(`Empty or missing template field in ${filePath}`);
186
+ throw new LayoutLoadError(`Layout template is missing or empty in ${filePath}`, layoutName);
187
+ }
188
+ return {
189
+ id: parsed.id || `crewx/${layoutName}`,
190
+ version: parsed.version || '1.0.0',
191
+ description: parsed.description || '',
192
+ template: parsed.template,
193
+ propsSchema: this.parsePropsSchema(parsed.propsSchema || {}),
194
+ defaultProps: this.extractDefaultProps(parsed.propsSchema || {}),
195
+ };
196
+ }
197
+ }
198
+ catch (error) {
199
+ throw new LayoutLoadError(`Failed to load layout file: ${filePath}`, layoutName, error instanceof Error ? error : new Error(String(error)));
200
+ }
201
+ }
202
+ parsePropsSchema(raw) {
203
+ const schema = {};
204
+ for (const [key, value] of Object.entries(raw)) {
205
+ if (typeof value === 'object' && value !== null) {
206
+ schema[key] = value;
207
+ }
208
+ }
209
+ return schema;
210
+ }
211
+ extractDefaultProps(propsSchema) {
212
+ const defaults = {};
213
+ for (const [key, schema] of Object.entries(propsSchema)) {
214
+ if (schema && typeof schema === 'object') {
215
+ if ('defaultValue' in schema) {
216
+ defaults[key] = schema.defaultValue;
217
+ }
218
+ else if ('default' in schema) {
219
+ defaults[key] = schema.default;
220
+ }
221
+ }
222
+ }
223
+ return defaults;
224
+ }
225
+ normalizeLayoutId(layoutId) {
226
+ if (!layoutId)
227
+ return this.options.fallbackLayoutId;
228
+ if (layoutId.includes('/'))
229
+ return layoutId;
230
+ return `crewx/${layoutId}`;
231
+ }
232
+ resolveLayoutEntry(layoutsMap, layoutName) {
233
+ const candidates = new Set();
234
+ if (layoutName) {
235
+ candidates.add(layoutName);
236
+ if (layoutName.includes('/')) {
237
+ const parts = layoutName.split('/');
238
+ const last = parts[parts.length - 1];
239
+ if (last)
240
+ candidates.add(last);
241
+ }
242
+ else {
243
+ candidates.add(`crewx/${layoutName}`);
244
+ }
245
+ }
246
+ candidates.add('default');
247
+ for (const key of candidates) {
248
+ const value = layoutsMap[key];
249
+ if (typeof value === 'string' && value.trim().length > 0) {
250
+ return { template: value };
251
+ }
252
+ if (value && typeof value === 'object' && typeof value.template === 'string' && value.template.trim().length > 0) {
253
+ return { template: value.template, propsSchema: value.propsSchema };
254
+ }
255
+ }
256
+ for (const value of Object.values(layoutsMap)) {
257
+ if (typeof value === 'string' && value.trim().length > 0) {
258
+ return { template: value };
259
+ }
260
+ const v = value;
261
+ if (v && typeof v === 'object' && typeof v.template === 'string' && v.template.trim().length > 0) {
262
+ return { template: v.template, propsSchema: v.propsSchema };
263
+ }
264
+ }
265
+ return undefined;
266
+ }
267
+ }
268
+ //# sourceMappingURL=loader.js.map