maestro-flow 0.3.1 → 0.3.2

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 (424) hide show
  1. package/.claude/commands/maestro-overlay.md +178 -122
  2. package/.codex/skills/maestro-coordinate/SKILL.md +3 -4
  3. package/dist/src/commands/launcher.js +1 -1
  4. package/dist/src/commands/launcher.js.map +1 -1
  5. package/dist/src/commands/overlay-ui/OverlayList.d.ts +35 -0
  6. package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -0
  7. package/dist/src/commands/overlay-ui/OverlayList.js +143 -0
  8. package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -0
  9. package/dist/src/commands/overlay-ui/index.d.ts +2 -0
  10. package/dist/src/commands/overlay-ui/index.d.ts.map +1 -0
  11. package/dist/src/commands/overlay-ui/index.js +188 -0
  12. package/dist/src/commands/overlay-ui/index.js.map +1 -0
  13. package/dist/src/commands/overlay.d.ts.map +1 -1
  14. package/dist/src/commands/overlay.js +79 -59
  15. package/dist/src/commands/overlay.js.map +1 -1
  16. package/dist/src/core/overlay/applier.d.ts +32 -1
  17. package/dist/src/core/overlay/applier.d.ts.map +1 -1
  18. package/dist/src/core/overlay/applier.js +109 -1
  19. package/dist/src/core/overlay/applier.js.map +1 -1
  20. package/package.json +1 -1
  21. package/dist/agents/cli-agent-runner.d.ts +0 -131
  22. package/dist/agents/cli-agent-runner.d.ts.map +0 -1
  23. package/dist/agents/cli-agent-runner.js +0 -688
  24. package/dist/agents/cli-agent-runner.js.map +0 -1
  25. package/dist/agents/cli-history-store.d.ts +0 -63
  26. package/dist/agents/cli-history-store.d.ts.map +0 -1
  27. package/dist/agents/cli-history-store.js +0 -242
  28. package/dist/agents/cli-history-store.js.map +0 -1
  29. package/dist/agents/dashboard-bridge.d.ts +0 -39
  30. package/dist/agents/dashboard-bridge.d.ts.map +0 -1
  31. package/dist/agents/dashboard-bridge.js +0 -76
  32. package/dist/agents/dashboard-bridge.js.map +0 -1
  33. package/dist/agents/parallel-cli-runner.d.ts +0 -46
  34. package/dist/agents/parallel-cli-runner.d.ts.map +0 -1
  35. package/dist/agents/parallel-cli-runner.js +0 -277
  36. package/dist/agents/parallel-cli-runner.js.map +0 -1
  37. package/dist/agents/terminal-adapter.d.ts +0 -94
  38. package/dist/agents/terminal-adapter.d.ts.map +0 -1
  39. package/dist/agents/terminal-adapter.js +0 -132
  40. package/dist/agents/terminal-adapter.js.map +0 -1
  41. package/dist/agents/terminal-backend.d.ts +0 -53
  42. package/dist/agents/terminal-backend.d.ts.map +0 -1
  43. package/dist/agents/terminal-backend.js +0 -286
  44. package/dist/agents/terminal-backend.js.map +0 -1
  45. package/dist/async/delegate-broker-client.d.ts +0 -22
  46. package/dist/async/delegate-broker-client.d.ts.map +0 -1
  47. package/dist/async/delegate-broker-client.js +0 -47
  48. package/dist/async/delegate-broker-client.js.map +0 -1
  49. package/dist/async/delegate-broker.d.ts +0 -180
  50. package/dist/async/delegate-broker.d.ts.map +0 -1
  51. package/dist/async/delegate-broker.js +0 -1040
  52. package/dist/async/delegate-broker.js.map +0 -1
  53. package/dist/async/delegate-control.d.ts +0 -37
  54. package/dist/async/delegate-control.d.ts.map +0 -1
  55. package/dist/async/delegate-control.js +0 -155
  56. package/dist/async/delegate-control.js.map +0 -1
  57. package/dist/async/index.d.ts +0 -3
  58. package/dist/async/index.d.ts.map +0 -1
  59. package/dist/async/index.js +0 -3
  60. package/dist/async/index.js.map +0 -1
  61. package/dist/cli.d.ts +0 -2
  62. package/dist/cli.d.ts.map +0 -1
  63. package/dist/cli.js +0 -40
  64. package/dist/cli.js.map +0 -1
  65. package/dist/commands/cli.d.ts +0 -3
  66. package/dist/commands/cli.d.ts.map +0 -1
  67. package/dist/commands/cli.js +0 -262
  68. package/dist/commands/cli.js.map +0 -1
  69. package/dist/commands/coordinate.d.ts +0 -3
  70. package/dist/commands/coordinate.d.ts.map +0 -1
  71. package/dist/commands/coordinate.js +0 -275
  72. package/dist/commands/coordinate.js.map +0 -1
  73. package/dist/commands/delegate.d.ts +0 -37
  74. package/dist/commands/delegate.d.ts.map +0 -1
  75. package/dist/commands/delegate.js +0 -470
  76. package/dist/commands/delegate.js.map +0 -1
  77. package/dist/commands/ext.d.ts +0 -3
  78. package/dist/commands/ext.d.ts.map +0 -1
  79. package/dist/commands/ext.js +0 -28
  80. package/dist/commands/ext.js.map +0 -1
  81. package/dist/commands/hooks.d.ts +0 -3
  82. package/dist/commands/hooks.d.ts.map +0 -1
  83. package/dist/commands/hooks.js +0 -126
  84. package/dist/commands/hooks.js.map +0 -1
  85. package/dist/commands/install.d.ts +0 -3
  86. package/dist/commands/install.d.ts.map +0 -1
  87. package/dist/commands/install.js +0 -621
  88. package/dist/commands/install.js.map +0 -1
  89. package/dist/commands/launcher.d.ts +0 -3
  90. package/dist/commands/launcher.d.ts.map +0 -1
  91. package/dist/commands/launcher.js +0 -635
  92. package/dist/commands/launcher.js.map +0 -1
  93. package/dist/commands/link-coordinate.d.ts +0 -3
  94. package/dist/commands/link-coordinate.d.ts.map +0 -1
  95. package/dist/commands/link-coordinate.js +0 -225
  96. package/dist/commands/link-coordinate.js.map +0 -1
  97. package/dist/commands/msg.d.ts +0 -3
  98. package/dist/commands/msg.d.ts.map +0 -1
  99. package/dist/commands/msg.js +0 -110
  100. package/dist/commands/msg.js.map +0 -1
  101. package/dist/commands/overlay.d.ts +0 -3
  102. package/dist/commands/overlay.d.ts.map +0 -1
  103. package/dist/commands/overlay.js +0 -243
  104. package/dist/commands/overlay.js.map +0 -1
  105. package/dist/commands/run.d.ts +0 -3
  106. package/dist/commands/run.d.ts.map +0 -1
  107. package/dist/commands/run.js +0 -15
  108. package/dist/commands/run.js.map +0 -1
  109. package/dist/commands/serve.d.ts +0 -3
  110. package/dist/commands/serve.d.ts.map +0 -1
  111. package/dist/commands/serve.js +0 -16
  112. package/dist/commands/serve.js.map +0 -1
  113. package/dist/commands/spec.d.ts +0 -8
  114. package/dist/commands/spec.d.ts.map +0 -1
  115. package/dist/commands/spec.js +0 -147
  116. package/dist/commands/spec.js.map +0 -1
  117. package/dist/commands/stop.d.ts +0 -3
  118. package/dist/commands/stop.d.ts.map +0 -1
  119. package/dist/commands/stop.js +0 -218
  120. package/dist/commands/stop.js.map +0 -1
  121. package/dist/commands/tool.d.ts +0 -3
  122. package/dist/commands/tool.d.ts.map +0 -1
  123. package/dist/commands/tool.js +0 -29
  124. package/dist/commands/tool.js.map +0 -1
  125. package/dist/commands/uninstall.d.ts +0 -3
  126. package/dist/commands/uninstall.d.ts.map +0 -1
  127. package/dist/commands/uninstall.js +0 -77
  128. package/dist/commands/uninstall.js.map +0 -1
  129. package/dist/commands/view.d.ts +0 -3
  130. package/dist/commands/view.d.ts.map +0 -1
  131. package/dist/commands/view.js +0 -337
  132. package/dist/commands/view.js.map +0 -1
  133. package/dist/config/cli-tools-config.d.ts +0 -26
  134. package/dist/config/cli-tools-config.d.ts.map +0 -1
  135. package/dist/config/cli-tools-config.js +0 -49
  136. package/dist/config/cli-tools-config.js.map +0 -1
  137. package/dist/config/cli-tools-config.test.d.ts +0 -2
  138. package/dist/config/cli-tools-config.test.d.ts.map +0 -1
  139. package/dist/config/cli-tools-config.test.js +0 -59
  140. package/dist/config/cli-tools-config.test.js.map +0 -1
  141. package/dist/config/index.d.ts +0 -4
  142. package/dist/config/index.d.ts.map +0 -1
  143. package/dist/config/index.js +0 -27
  144. package/dist/config/index.js.map +0 -1
  145. package/dist/config/paths.d.ts +0 -15
  146. package/dist/config/paths.d.ts.map +0 -1
  147. package/dist/config/paths.js +0 -27
  148. package/dist/config/paths.js.map +0 -1
  149. package/dist/config/template-discovery.d.ts +0 -32
  150. package/dist/config/template-discovery.d.ts.map +0 -1
  151. package/dist/config/template-discovery.js +0 -128
  152. package/dist/config/template-discovery.js.map +0 -1
  153. package/dist/coordinator/cli-executor.d.ts +0 -22
  154. package/dist/coordinator/cli-executor.d.ts.map +0 -1
  155. package/dist/coordinator/cli-executor.js +0 -49
  156. package/dist/coordinator/cli-executor.js.map +0 -1
  157. package/dist/coordinator/expr-evaluator.d.ts +0 -11
  158. package/dist/coordinator/expr-evaluator.d.ts.map +0 -1
  159. package/dist/coordinator/expr-evaluator.js +0 -351
  160. package/dist/coordinator/expr-evaluator.js.map +0 -1
  161. package/dist/coordinator/graph-loader.d.ts +0 -16
  162. package/dist/coordinator/graph-loader.d.ts.map +0 -1
  163. package/dist/coordinator/graph-loader.js +0 -190
  164. package/dist/coordinator/graph-loader.js.map +0 -1
  165. package/dist/coordinator/graph-types.d.ts +0 -304
  166. package/dist/coordinator/graph-types.d.ts.map +0 -1
  167. package/dist/coordinator/graph-types.js +0 -6
  168. package/dist/coordinator/graph-types.js.map +0 -1
  169. package/dist/coordinator/graph-walker.d.ts +0 -51
  170. package/dist/coordinator/graph-walker.d.ts.map +0 -1
  171. package/dist/coordinator/graph-walker.js +0 -666
  172. package/dist/coordinator/graph-walker.js.map +0 -1
  173. package/dist/coordinator/index.d.ts +0 -13
  174. package/dist/coordinator/index.d.ts.map +0 -1
  175. package/dist/coordinator/index.js +0 -14
  176. package/dist/coordinator/index.js.map +0 -1
  177. package/dist/coordinator/intent-router.d.ts +0 -11
  178. package/dist/coordinator/intent-router.d.ts.map +0 -1
  179. package/dist/coordinator/intent-router.js +0 -65
  180. package/dist/coordinator/intent-router.js.map +0 -1
  181. package/dist/coordinator/link-session.d.ts +0 -29
  182. package/dist/coordinator/link-session.d.ts.map +0 -1
  183. package/dist/coordinator/link-session.js +0 -192
  184. package/dist/coordinator/link-session.js.map +0 -1
  185. package/dist/coordinator/link-walker.d.ts +0 -56
  186. package/dist/coordinator/link-walker.d.ts.map +0 -1
  187. package/dist/coordinator/link-walker.js +0 -548
  188. package/dist/coordinator/link-walker.js.map +0 -1
  189. package/dist/coordinator/output-parser.d.ts +0 -5
  190. package/dist/coordinator/output-parser.d.ts.map +0 -1
  191. package/dist/coordinator/output-parser.js +0 -114
  192. package/dist/coordinator/output-parser.js.map +0 -1
  193. package/dist/coordinator/parallel-executor.d.ts +0 -24
  194. package/dist/coordinator/parallel-executor.d.ts.map +0 -1
  195. package/dist/coordinator/parallel-executor.js +0 -43
  196. package/dist/coordinator/parallel-executor.js.map +0 -1
  197. package/dist/coordinator/prompt-assembler.d.ts +0 -15
  198. package/dist/coordinator/prompt-assembler.d.ts.map +0 -1
  199. package/dist/coordinator/prompt-assembler.js +0 -228
  200. package/dist/coordinator/prompt-assembler.js.map +0 -1
  201. package/dist/coordinator/step-analyzer.d.ts +0 -8
  202. package/dist/coordinator/step-analyzer.d.ts.map +0 -1
  203. package/dist/coordinator/step-analyzer.js +0 -82
  204. package/dist/coordinator/step-analyzer.js.map +0 -1
  205. package/dist/core/extension-loader.d.ts +0 -11
  206. package/dist/core/extension-loader.d.ts.map +0 -1
  207. package/dist/core/extension-loader.js +0 -54
  208. package/dist/core/extension-loader.js.map +0 -1
  209. package/dist/core/manifest.d.ts +0 -24
  210. package/dist/core/manifest.d.ts.map +0 -1
  211. package/dist/core/manifest.js +0 -139
  212. package/dist/core/manifest.js.map +0 -1
  213. package/dist/core/mcp-tool-registry.integration.test.d.ts +0 -2
  214. package/dist/core/mcp-tool-registry.integration.test.d.ts.map +0 -1
  215. package/dist/core/mcp-tool-registry.integration.test.js +0 -220
  216. package/dist/core/mcp-tool-registry.integration.test.js.map +0 -1
  217. package/dist/core/overlay/applier.d.ts +0 -73
  218. package/dist/core/overlay/applier.d.ts.map +0 -1
  219. package/dist/core/overlay/applier.js +0 -248
  220. package/dist/core/overlay/applier.js.map +0 -1
  221. package/dist/core/overlay/loader.d.ts +0 -26
  222. package/dist/core/overlay/loader.d.ts.map +0 -1
  223. package/dist/core/overlay/loader.js +0 -199
  224. package/dist/core/overlay/loader.js.map +0 -1
  225. package/dist/core/overlay/patcher.d.ts +0 -26
  226. package/dist/core/overlay/patcher.d.ts.map +0 -1
  227. package/dist/core/overlay/patcher.js +0 -212
  228. package/dist/core/overlay/patcher.js.map +0 -1
  229. package/dist/core/overlay/section-parser.d.ts +0 -25
  230. package/dist/core/overlay/section-parser.d.ts.map +0 -1
  231. package/dist/core/overlay/section-parser.js +0 -99
  232. package/dist/core/overlay/section-parser.js.map +0 -1
  233. package/dist/core/overlay/types.d.ts +0 -51
  234. package/dist/core/overlay/types.d.ts.map +0 -1
  235. package/dist/core/overlay/types.js +0 -15
  236. package/dist/core/overlay/types.js.map +0 -1
  237. package/dist/core/tool-registry.d.ts +0 -10
  238. package/dist/core/tool-registry.d.ts.map +0 -1
  239. package/dist/core/tool-registry.js +0 -29
  240. package/dist/core/tool-registry.js.map +0 -1
  241. package/dist/core/tool-registry.test.d.ts +0 -2
  242. package/dist/core/tool-registry.test.d.ts.map +0 -1
  243. package/dist/core/tool-registry.test.js +0 -78
  244. package/dist/core/tool-registry.test.js.map +0 -1
  245. package/dist/db/connection-pool.d.ts +0 -21
  246. package/dist/db/connection-pool.d.ts.map +0 -1
  247. package/dist/db/connection-pool.js +0 -53
  248. package/dist/db/connection-pool.js.map +0 -1
  249. package/dist/db/index.d.ts +0 -6
  250. package/dist/db/index.d.ts.map +0 -1
  251. package/dist/db/index.js +0 -9
  252. package/dist/db/index.js.map +0 -1
  253. package/dist/db/schema/core/index.d.ts +0 -5
  254. package/dist/db/schema/core/index.d.ts.map +0 -1
  255. package/dist/db/schema/core/index.js +0 -5
  256. package/dist/db/schema/core/index.js.map +0 -1
  257. package/dist/db/schema/core/organizations.d.ts +0 -244
  258. package/dist/db/schema/core/organizations.d.ts.map +0 -1
  259. package/dist/db/schema/core/organizations.js +0 -44
  260. package/dist/db/schema/core/organizations.js.map +0 -1
  261. package/dist/db/schema/core/permissions.d.ts +0 -158
  262. package/dist/db/schema/core/permissions.d.ts.map +0 -1
  263. package/dist/db/schema/core/permissions.js +0 -62
  264. package/dist/db/schema/core/permissions.js.map +0 -1
  265. package/dist/db/schema/core/refresh-tokens.d.ts +0 -147
  266. package/dist/db/schema/core/refresh-tokens.d.ts.map +0 -1
  267. package/dist/db/schema/core/refresh-tokens.js +0 -22
  268. package/dist/db/schema/core/refresh-tokens.js.map +0 -1
  269. package/dist/db/schema/core/users.d.ts +0 -178
  270. package/dist/db/schema/core/users.d.ts.map +0 -1
  271. package/dist/db/schema/core/users.js +0 -14
  272. package/dist/db/schema/core/users.js.map +0 -1
  273. package/dist/db/tenant-migrator.d.ts +0 -11
  274. package/dist/db/tenant-migrator.d.ts.map +0 -1
  275. package/dist/db/tenant-migrator.js +0 -74
  276. package/dist/db/tenant-migrator.js.map +0 -1
  277. package/dist/db/tenant-schema.d.ts +0 -290
  278. package/dist/db/tenant-schema.d.ts.map +0 -1
  279. package/dist/db/tenant-schema.js +0 -32
  280. package/dist/db/tenant-schema.js.map +0 -1
  281. package/dist/hooks/constants.d.ts +0 -40
  282. package/dist/hooks/constants.d.ts.map +0 -1
  283. package/dist/hooks/constants.js +0 -53
  284. package/dist/hooks/constants.js.map +0 -1
  285. package/dist/hooks/context-monitor.d.ts +0 -33
  286. package/dist/hooks/context-monitor.d.ts.map +0 -1
  287. package/dist/hooks/context-monitor.js +0 -117
  288. package/dist/hooks/context-monitor.js.map +0 -1
  289. package/dist/hooks/delegate-monitor.d.ts +0 -24
  290. package/dist/hooks/delegate-monitor.d.ts.map +0 -1
  291. package/dist/hooks/delegate-monitor.js +0 -76
  292. package/dist/hooks/delegate-monitor.js.map +0 -1
  293. package/dist/hooks/index.d.ts +0 -4
  294. package/dist/hooks/index.d.ts.map +0 -1
  295. package/dist/hooks/index.js +0 -4
  296. package/dist/hooks/index.js.map +0 -1
  297. package/dist/hooks/statusline.d.ts +0 -29
  298. package/dist/hooks/statusline.d.ts.map +0 -1
  299. package/dist/hooks/statusline.js +0 -134
  300. package/dist/hooks/statusline.js.map +0 -1
  301. package/dist/index.d.ts +0 -8
  302. package/dist/index.d.ts.map +0 -1
  303. package/dist/index.js +0 -6
  304. package/dist/index.js.map +0 -1
  305. package/dist/mcp/delegate-channel-relay.d.ts +0 -51
  306. package/dist/mcp/delegate-channel-relay.d.ts.map +0 -1
  307. package/dist/mcp/delegate-channel-relay.js +0 -307
  308. package/dist/mcp/delegate-channel-relay.js.map +0 -1
  309. package/dist/mcp/server.d.ts +0 -6
  310. package/dist/mcp/server.d.ts.map +0 -1
  311. package/dist/mcp/server.js +0 -64
  312. package/dist/mcp/server.js.map +0 -1
  313. package/dist/middleware/auth.d.ts +0 -13
  314. package/dist/middleware/auth.d.ts.map +0 -1
  315. package/dist/middleware/auth.js +0 -27
  316. package/dist/middleware/auth.js.map +0 -1
  317. package/dist/middleware/permission.d.ts +0 -9
  318. package/dist/middleware/permission.d.ts.map +0 -1
  319. package/dist/middleware/permission.js +0 -19
  320. package/dist/middleware/permission.js.map +0 -1
  321. package/dist/middleware/rate-limit.d.ts +0 -9
  322. package/dist/middleware/rate-limit.d.ts.map +0 -1
  323. package/dist/middleware/rate-limit.js +0 -40
  324. package/dist/middleware/rate-limit.js.map +0 -1
  325. package/dist/middleware/tenant.d.ts +0 -17
  326. package/dist/middleware/tenant.d.ts.map +0 -1
  327. package/dist/middleware/tenant.js +0 -57
  328. package/dist/middleware/tenant.js.map +0 -1
  329. package/dist/middleware/validation.d.ts +0 -40
  330. package/dist/middleware/validation.d.ts.map +0 -1
  331. package/dist/middleware/validation.js +0 -51
  332. package/dist/middleware/validation.js.map +0 -1
  333. package/dist/routes/auth.d.ts +0 -3
  334. package/dist/routes/auth.d.ts.map +0 -1
  335. package/dist/routes/auth.js +0 -77
  336. package/dist/routes/auth.js.map +0 -1
  337. package/dist/routes/members.d.ts +0 -4
  338. package/dist/routes/members.d.ts.map +0 -1
  339. package/dist/routes/members.js +0 -114
  340. package/dist/routes/members.js.map +0 -1
  341. package/dist/routes/organizations.d.ts +0 -5
  342. package/dist/routes/organizations.d.ts.map +0 -1
  343. package/dist/routes/organizations.js +0 -97
  344. package/dist/routes/organizations.js.map +0 -1
  345. package/dist/services/auth.service.d.ts +0 -24
  346. package/dist/services/auth.service.d.ts.map +0 -1
  347. package/dist/services/auth.service.js +0 -70
  348. package/dist/services/auth.service.js.map +0 -1
  349. package/dist/services/password.service.d.ts +0 -3
  350. package/dist/services/password.service.d.ts.map +0 -1
  351. package/dist/services/password.service.js +0 -18
  352. package/dist/services/password.service.js.map +0 -1
  353. package/dist/services/rbac.service.d.ts +0 -7
  354. package/dist/services/rbac.service.d.ts.map +0 -1
  355. package/dist/services/rbac.service.js +0 -36
  356. package/dist/services/rbac.service.js.map +0 -1
  357. package/dist/services/token.service.d.ts +0 -18
  358. package/dist/services/token.service.d.ts.map +0 -1
  359. package/dist/services/token.service.js +0 -86
  360. package/dist/services/token.service.js.map +0 -1
  361. package/dist/tools/core-memory.d.ts +0 -12
  362. package/dist/tools/core-memory.d.ts.map +0 -1
  363. package/dist/tools/core-memory.js +0 -276
  364. package/dist/tools/core-memory.js.map +0 -1
  365. package/dist/tools/edit-file.d.ts +0 -25
  366. package/dist/tools/edit-file.d.ts.map +0 -1
  367. package/dist/tools/edit-file.js +0 -462
  368. package/dist/tools/edit-file.js.map +0 -1
  369. package/dist/tools/index.d.ts +0 -8
  370. package/dist/tools/index.d.ts.map +0 -1
  371. package/dist/tools/index.js +0 -536
  372. package/dist/tools/index.js.map +0 -1
  373. package/dist/tools/read-file.d.ts +0 -13
  374. package/dist/tools/read-file.d.ts.map +0 -1
  375. package/dist/tools/read-file.js +0 -91
  376. package/dist/tools/read-file.js.map +0 -1
  377. package/dist/tools/read-many-files.d.ts +0 -15
  378. package/dist/tools/read-many-files.d.ts.map +0 -1
  379. package/dist/tools/read-many-files.js +0 -187
  380. package/dist/tools/read-many-files.js.map +0 -1
  381. package/dist/tools/spec-index-builder.d.ts +0 -58
  382. package/dist/tools/spec-index-builder.d.ts.map +0 -1
  383. package/dist/tools/spec-index-builder.js +0 -211
  384. package/dist/tools/spec-index-builder.js.map +0 -1
  385. package/dist/tools/spec-init.d.ts +0 -17
  386. package/dist/tools/spec-init.d.ts.map +0 -1
  387. package/dist/tools/spec-init.js +0 -215
  388. package/dist/tools/spec-init.js.map +0 -1
  389. package/dist/tools/spec-keyword-extractor.d.ts +0 -24
  390. package/dist/tools/spec-keyword-extractor.d.ts.map +0 -1
  391. package/dist/tools/spec-keyword-extractor.js +0 -84
  392. package/dist/tools/spec-keyword-extractor.js.map +0 -1
  393. package/dist/tools/spec-keyword-extractor.test.d.ts +0 -2
  394. package/dist/tools/spec-keyword-extractor.test.d.ts.map +0 -1
  395. package/dist/tools/spec-keyword-extractor.test.js +0 -99
  396. package/dist/tools/spec-keyword-extractor.test.js.map +0 -1
  397. package/dist/tools/spec-loader.d.ts +0 -15
  398. package/dist/tools/spec-loader.d.ts.map +0 -1
  399. package/dist/tools/spec-loader.js +0 -93
  400. package/dist/tools/spec-loader.js.map +0 -1
  401. package/dist/tools/team-msg.d.ts +0 -52
  402. package/dist/tools/team-msg.d.ts.map +0 -1
  403. package/dist/tools/team-msg.js +0 -449
  404. package/dist/tools/team-msg.js.map +0 -1
  405. package/dist/tools/write-file.d.ts +0 -19
  406. package/dist/tools/write-file.d.ts.map +0 -1
  407. package/dist/tools/write-file.js +0 -165
  408. package/dist/tools/write-file.js.map +0 -1
  409. package/dist/types/index.d.ts +0 -47
  410. package/dist/types/index.d.ts.map +0 -1
  411. package/dist/types/index.js +0 -2
  412. package/dist/types/index.js.map +0 -1
  413. package/dist/types/tool-schema.d.ts +0 -37
  414. package/dist/types/tool-schema.d.ts.map +0 -1
  415. package/dist/types/tool-schema.js +0 -24
  416. package/dist/types/tool-schema.js.map +0 -1
  417. package/dist/utils/file-reader.d.ts +0 -74
  418. package/dist/utils/file-reader.d.ts.map +0 -1
  419. package/dist/utils/file-reader.js +0 -217
  420. package/dist/utils/file-reader.js.map +0 -1
  421. package/dist/utils/path-validator.d.ts +0 -52
  422. package/dist/utils/path-validator.d.ts.map +0 -1
  423. package/dist/utils/path-validator.js +0 -151
  424. package/dist/utils/path-validator.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"write-file.js","sourceRoot":"","sources":["../../src/tools/write-file.ts"],"names":[],"mappings":"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"}
@@ -1,47 +0,0 @@
1
- export interface MaestroConfig {
2
- version: string;
3
- extensions: ExtensionConfig[];
4
- mcp: McpConfig;
5
- workflows: WorkflowConfig;
6
- }
7
- export interface ExtensionConfig {
8
- name: string;
9
- enabled: boolean;
10
- path: string;
11
- config?: Record<string, unknown>;
12
- }
13
- export interface McpConfig {
14
- port: number;
15
- host: string;
16
- enabledTools: string[];
17
- }
18
- export interface WorkflowConfig {
19
- templatesDir: string;
20
- workflowsDir: string;
21
- }
22
- export interface Tool {
23
- name: string;
24
- description: string;
25
- inputSchema: Record<string, unknown>;
26
- handler: (input: Record<string, unknown>) => Promise<ToolResult>;
27
- }
28
- export interface ToolResult {
29
- content: Array<{
30
- type: string;
31
- text: string;
32
- }>;
33
- isError?: boolean;
34
- }
35
- export interface Extension {
36
- name: string;
37
- version: string;
38
- tools?: Tool[];
39
- activate: (ctx: ExtensionContext) => Promise<void>;
40
- deactivate?: () => Promise<void>;
41
- }
42
- export interface ExtensionContext {
43
- registerTool: (tool: Tool) => void;
44
- config: Record<string, unknown>;
45
- log: (msg: string) => void;
46
- }
47
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,GAAG,EAAE,SAAS,CAAC;IACf,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,QAAQ,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -1,37 +0,0 @@
1
- /**
2
- * CCW-style Tool Schema & Result types
3
- *
4
- * Used by ported CCW tools that follow the { schema, handler } export pattern.
5
- * The adapter function converts CCW ToolResult → maestro ToolResult.
6
- */
7
- export interface ToolSchema {
8
- name: string;
9
- description: string;
10
- inputSchema: {
11
- type: 'object';
12
- properties: Record<string, unknown>;
13
- required?: string[];
14
- };
15
- }
16
- export interface CcwToolResult<T = unknown> {
17
- success: boolean;
18
- result?: T;
19
- error?: string;
20
- }
21
- export type CcwToolHandler<TParams = Record<string, unknown>, TResult = unknown> = (params: TParams) => Promise<CcwToolResult<TResult>>;
22
- export interface CcwToolRegistration<TParams = Record<string, unknown>> {
23
- schema: ToolSchema;
24
- handler: CcwToolHandler<TParams>;
25
- }
26
- export interface McpToolResult {
27
- content: Array<{
28
- type: string;
29
- text: string;
30
- }>;
31
- isError?: boolean;
32
- }
33
- /**
34
- * Convert CCW-style ToolResult to maestro MCP ToolResult
35
- */
36
- export declare function ccwResultToMcp(ccwResult: CcwToolResult): McpToolResult;
37
- //# sourceMappingURL=tool-schema.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-schema.d.ts","sourceRoot":"","sources":["../../src/types/tool-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAGD,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,CAAC,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,MAAM,MAAM,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,OAAO,IAC7E,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAGvD,MAAM,WAAW,mBAAmB,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACpE,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,cAAc,CAAC,OAAO,CAAC,CAAC;CAClC;AAGD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,CAYtE"}
@@ -1,24 +0,0 @@
1
- /**
2
- * CCW-style Tool Schema & Result types
3
- *
4
- * Used by ported CCW tools that follow the { schema, handler } export pattern.
5
- * The adapter function converts CCW ToolResult → maestro ToolResult.
6
- */
7
- /**
8
- * Convert CCW-style ToolResult to maestro MCP ToolResult
9
- */
10
- export function ccwResultToMcp(ccwResult) {
11
- if (ccwResult.success) {
12
- const text = typeof ccwResult.result === 'string'
13
- ? ccwResult.result
14
- : JSON.stringify(ccwResult.result, null, 2);
15
- return { content: [{ type: 'text', text }] };
16
- }
17
- else {
18
- return {
19
- content: [{ type: 'text', text: ccwResult.error || 'Unknown error' }],
20
- isError: true,
21
- };
22
- }
23
- }
24
- //# sourceMappingURL=tool-schema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-schema.js","sourceRoot":"","sources":["../../src/types/tool-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAoCH;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,SAAwB;IACrD,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;YAC/C,CAAC,CAAC,SAAS,CAAC,MAAM;YAClB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,eAAe,EAAE,CAAC;YACrE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,74 +0,0 @@
1
- /**
2
- * Shared file reading utilities
3
- *
4
- * Extracted from read-file.ts for reuse across read_file and read_many_files tools.
5
- */
6
- export declare const MAX_CONTENT_LENGTH = 5000;
7
- export declare const MAX_FILES = 50;
8
- export declare const MAX_TOTAL_CONTENT = 50000;
9
- export declare const BINARY_EXTENSIONS: Set<string>;
10
- export interface FileEntry {
11
- path: string;
12
- size: number;
13
- content?: string;
14
- truncated?: boolean;
15
- matches?: string[];
16
- totalLines?: number;
17
- lineRange?: {
18
- start: number;
19
- end: number;
20
- };
21
- }
22
- export interface ReadContentOptions {
23
- maxLength: number;
24
- offset?: number;
25
- limit?: number;
26
- }
27
- export interface ReadContentResult {
28
- content: string;
29
- truncated: boolean;
30
- totalLines?: number;
31
- lineRange?: {
32
- start: number;
33
- end: number;
34
- };
35
- }
36
- export interface ReadResult {
37
- files: FileEntry[];
38
- totalFiles: number;
39
- message: string;
40
- }
41
- /**
42
- * Check if file is likely binary
43
- */
44
- export declare function isBinaryFile(filePath: string): boolean;
45
- /**
46
- * Convert glob pattern to regex
47
- * Supports: *, ?, and brace expansion {a,b,c}
48
- */
49
- export declare function globToRegex(pattern: string): RegExp;
50
- /**
51
- * Check if filename matches glob pattern
52
- */
53
- export declare function matchesPattern(filename: string, pattern: string): boolean;
54
- /**
55
- * Recursively collect files from directory
56
- */
57
- export declare function collectFiles(dir: string, pattern: string | undefined, maxDepth: number, currentDepth?: number): string[];
58
- /**
59
- * Read file content with truncation and optional line-based pagination
60
- */
61
- export declare function readFileContent(filePath: string, options: ReadContentOptions): ReadContentResult;
62
- /**
63
- * Find regex matches in content with safety protections
64
- * - Empty string pattern = "match all" (no filtering) - returns null
65
- * - Dangerous patterns (zero-width matches) = "match all" for safety - returns null
66
- * - Validates pattern to prevent infinite loops
67
- * - Limits iterations to prevent ReDoS attacks
68
- * - Deduplicates results to prevent duplicates
69
- * - Reports errors instead of silent failure
70
- *
71
- * @returns Array of matching lines, null to match all content (empty string or dangerous pattern), empty array for no matches
72
- */
73
- export declare function findMatches(content: string, pattern: string): string[] | null;
74
- //# sourceMappingURL=file-reader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-reader.d.ts","sourceRoot":"","sources":["../../src/utils/file-reader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,eAAO,MAAM,kBAAkB,OAAO,CAAC;AAEvC,eAAO,MAAM,SAAS,KAAK,CAAC;AAE5B,eAAO,MAAM,iBAAiB,QAAQ,CAAC;AAGvC,eAAO,MAAM,iBAAiB,aAQ5B,CAAC;AAEH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5C;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAsBnD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAGzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,QAAQ,EAAE,MAAM,EAChB,YAAY,GAAE,MAAU,GACvB,MAAM,EAAE,CA2BV;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CAkDhG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAyE7E"}
@@ -1,217 +0,0 @@
1
- /**
2
- * Shared file reading utilities
3
- *
4
- * Extracted from read-file.ts for reuse across read_file and read_many_files tools.
5
- */
6
- import { readFileSync, readdirSync } from 'fs';
7
- import { join, extname } from 'path';
8
- // Max content per file (truncate if larger)
9
- export const MAX_CONTENT_LENGTH = 5000;
10
- // Max files to return
11
- export const MAX_FILES = 50;
12
- // Max total content length
13
- export const MAX_TOTAL_CONTENT = 50000;
14
- // Common binary extensions to skip
15
- export const BINARY_EXTENSIONS = new Set([
16
- '.png', '.jpg', '.jpeg', '.gif', '.bmp', '.ico', '.webp', '.svg',
17
- '.pdf', '.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx',
18
- '.zip', '.tar', '.gz', '.rar', '.7z',
19
- '.exe', '.dll', '.so', '.dylib',
20
- '.mp3', '.mp4', '.wav', '.avi', '.mov',
21
- '.woff', '.woff2', '.ttf', '.eot', '.otf',
22
- '.pyc', '.class', '.o', '.obj',
23
- ]);
24
- /**
25
- * Check if file is likely binary
26
- */
27
- export function isBinaryFile(filePath) {
28
- const ext = extname(filePath).toLowerCase();
29
- return BINARY_EXTENSIONS.has(ext);
30
- }
31
- /**
32
- * Convert glob pattern to regex
33
- * Supports: *, ?, and brace expansion {a,b,c}
34
- */
35
- export function globToRegex(pattern) {
36
- // Handle brace expansion: *.{md,json,ts} -> (?:.*\.md|.*\.json|.*\.ts)
37
- const braceMatch = pattern.match(/^(.*)\{([^}]+)\}(.*)$/);
38
- if (braceMatch) {
39
- const [, prefix, options, suffix] = braceMatch;
40
- const optionList = options.split(',').map(opt => `${prefix}${opt}${suffix}`);
41
- // Create a regex that matches any of the expanded patterns
42
- const expandedPatterns = optionList.map(opt => {
43
- return opt
44
- .replace(/[.+^${}()|[\]\\]/g, '\\$&')
45
- .replace(/\*/g, '.*')
46
- .replace(/\?/g, '.');
47
- });
48
- return new RegExp(`^(?:${expandedPatterns.join('|')})$`, 'i');
49
- }
50
- // Standard glob conversion
51
- const escaped = pattern
52
- .replace(/[.+^${}()|[\]\\]/g, '\\$&')
53
- .replace(/\*/g, '.*')
54
- .replace(/\?/g, '.');
55
- return new RegExp(`^${escaped}$`, 'i');
56
- }
57
- /**
58
- * Check if filename matches glob pattern
59
- */
60
- export function matchesPattern(filename, pattern) {
61
- const regex = globToRegex(pattern);
62
- return regex.test(filename);
63
- }
64
- /**
65
- * Recursively collect files from directory
66
- */
67
- export function collectFiles(dir, pattern, maxDepth, currentDepth = 0) {
68
- if (currentDepth > maxDepth)
69
- return [];
70
- const files = [];
71
- try {
72
- const entries = readdirSync(dir, { withFileTypes: true });
73
- for (const entry of entries) {
74
- // Skip hidden files/dirs and node_modules
75
- if (entry.name.startsWith('.') || entry.name === 'node_modules')
76
- continue;
77
- const fullPath = join(dir, entry.name);
78
- if (entry.isDirectory()) {
79
- files.push(...collectFiles(fullPath, pattern, maxDepth, currentDepth + 1));
80
- }
81
- else if (entry.isFile()) {
82
- if (!pattern || matchesPattern(entry.name, pattern)) {
83
- files.push(fullPath);
84
- }
85
- }
86
- }
87
- }
88
- catch {
89
- // Skip directories we can't read
90
- }
91
- return files;
92
- }
93
- /**
94
- * Read file content with truncation and optional line-based pagination
95
- */
96
- export function readFileContent(filePath, options) {
97
- const { maxLength, offset, limit } = options;
98
- if (isBinaryFile(filePath)) {
99
- return { content: '[Binary file]', truncated: false };
100
- }
101
- try {
102
- const content = readFileSync(filePath, 'utf8');
103
- const lines = content.split('\n');
104
- const totalLines = lines.length;
105
- // If offset/limit specified, use line-based pagination
106
- if (offset !== undefined || limit !== undefined) {
107
- const startLine = Math.min(offset ?? 0, totalLines);
108
- const endLine = limit !== undefined ? Math.min(startLine + limit, totalLines) : totalLines;
109
- const selectedLines = lines.slice(startLine, endLine);
110
- const selectedContent = selectedLines.join('\n');
111
- const actualEnd = endLine;
112
- const hasMore = actualEnd < totalLines;
113
- let finalContent = selectedContent;
114
- if (selectedContent.length > maxLength) {
115
- finalContent = selectedContent.substring(0, maxLength) + `\n... (+${selectedContent.length - maxLength} chars)`;
116
- }
117
- // Calculate actual line range (handle empty selection)
118
- const actualLineEnd = selectedLines.length > 0 ? startLine + selectedLines.length - 1 : startLine;
119
- return {
120
- content: finalContent,
121
- truncated: hasMore || selectedContent.length > maxLength,
122
- totalLines,
123
- lineRange: { start: startLine, end: actualLineEnd },
124
- };
125
- }
126
- // Default behavior: truncate by character length
127
- if (content.length > maxLength) {
128
- return {
129
- content: content.substring(0, maxLength) + `\n... (+${content.length - maxLength} chars)`,
130
- truncated: true,
131
- totalLines,
132
- };
133
- }
134
- return { content, truncated: false, totalLines };
135
- }
136
- catch (error) {
137
- return { content: `[Error: ${error.message}]`, truncated: false };
138
- }
139
- }
140
- /**
141
- * Find regex matches in content with safety protections
142
- * - Empty string pattern = "match all" (no filtering) - returns null
143
- * - Dangerous patterns (zero-width matches) = "match all" for safety - returns null
144
- * - Validates pattern to prevent infinite loops
145
- * - Limits iterations to prevent ReDoS attacks
146
- * - Deduplicates results to prevent duplicates
147
- * - Reports errors instead of silent failure
148
- *
149
- * @returns Array of matching lines, null to match all content (empty string or dangerous pattern), empty array for no matches
150
- */
151
- export function findMatches(content, pattern) {
152
- // 1. Empty string pattern = "match all" (no filtering)
153
- if (!pattern || pattern.length === 0) {
154
- return null;
155
- }
156
- // 2. Pattern length limit
157
- if (pattern.length > 1000) {
158
- console.error('[read_file] contentPattern error: Pattern too long (max 1000 characters), returning all content');
159
- return null;
160
- }
161
- // 3. Dangerous pattern detection
162
- try {
163
- const testRegex = new RegExp(pattern, 'gm');
164
- const emptyTest = testRegex.exec('');
165
- if (emptyTest && emptyTest[0] === '' && emptyTest.index === 0) {
166
- const secondMatch = testRegex.exec('');
167
- if (secondMatch && secondMatch.index === 0) {
168
- console.warn(`[read_file] contentPattern: Dangerous pattern "${pattern.substring(0, 50)}" detected, returning all content`);
169
- return null;
170
- }
171
- }
172
- }
173
- catch (e) {
174
- console.error(`[read_file] contentPattern: Invalid regex pattern: ${e.message}, returning all content`);
175
- return null;
176
- }
177
- try {
178
- const regex = new RegExp(pattern, 'gm');
179
- const matches = [];
180
- const seen = new Set();
181
- let match;
182
- let iterations = 0;
183
- let lastIndex = -1;
184
- const MAX_ITERATIONS = 1000;
185
- const MAX_MATCHES = 50;
186
- while ((match = regex.exec(content)) !== null && matches.length < MAX_MATCHES) {
187
- iterations++;
188
- if (iterations > MAX_ITERATIONS) {
189
- console.error(`[read_file] contentPattern warning: Exceeded ${MAX_ITERATIONS} iterations for pattern "${pattern.substring(0, 50)}"`);
190
- break;
191
- }
192
- if (match.index === lastIndex) {
193
- regex.lastIndex = match.index + 1;
194
- continue;
195
- }
196
- lastIndex = match.index;
197
- const lineStart = content.lastIndexOf('\n', match.index) + 1;
198
- const lineEnd = content.indexOf('\n', match.index);
199
- const line = content.substring(lineStart, lineEnd === -1 ? undefined : lineEnd).trim();
200
- if (!line)
201
- continue;
202
- if (!seen.has(line)) {
203
- seen.add(line);
204
- matches.push(line.substring(0, 200));
205
- }
206
- if (matches.length >= 10)
207
- break;
208
- }
209
- return matches;
210
- }
211
- catch (error) {
212
- const errorMsg = error.message;
213
- console.error(`[read_file] contentPattern error: ${errorMsg}`);
214
- return [];
215
- }
216
- }
217
- //# sourceMappingURL=file-reader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-reader.js","sourceRoot":"","sources":["../../src/utils/file-reader.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- /**
2
- * Centralized Path Validation Utility
3
- *
4
- * Provides secure path validation and resolution for MCP tools.
5
- * Prevents path traversal attacks and ensures operations stay within allowed directories.
6
- */
7
- /**
8
- * Check if sandbox mode is enabled
9
- * When enabled, path validation restricts access to allowed directories only
10
- */
11
- export declare function isSandboxEnabled(): boolean;
12
- /**
13
- * Get project root directory
14
- * Priority: MAESTRO_PROJECT_ROOT > process.cwd()
15
- */
16
- export declare function getProjectRoot(): string;
17
- /**
18
- * Get allowed directories list
19
- * Priority: MAESTRO_ALLOWED_DIRS > [getProjectRoot()]
20
- */
21
- export declare function getAllowedDirectories(): string[];
22
- /**
23
- * Normalize path (unify separators to forward slash)
24
- */
25
- export declare function normalizePath(p: string): string;
26
- /**
27
- * Check if path is within allowed directories
28
- */
29
- export declare function isPathWithinAllowedDirectories(targetPath: string, allowedDirectories: string[]): boolean;
30
- /**
31
- * Validate and resolve path (core function)
32
- *
33
- * Security model:
34
- * 1. Resolve to absolute path
35
- * 2. Check against allowed directories
36
- * 3. Resolve symlinks and re-verify
37
- *
38
- * @param filePath - Path to validate
39
- * @param options - Validation options
40
- * @returns Validated absolute path
41
- * @throws Error if path is outside allowed directories or validation fails
42
- */
43
- export declare function validatePath(filePath: string, options?: {
44
- allowedDirectories?: string[];
45
- mustExist?: boolean;
46
- }): Promise<string>;
47
- /**
48
- * Resolve project-relative path (simplified, no strict validation)
49
- * Use for cases where strict security validation is not needed
50
- */
51
- export declare function resolveProjectPath(...pathSegments: string[]): string;
52
- //# sourceMappingURL=path-validator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"path-validator.d.ts","sourceRoot":"","sources":["../../src/utils/path-validator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAG1C;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAMhD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAuBD;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,EAAE,GAC3B,OAAO,CAST;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;IACP,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;CAChB,GACL,OAAO,CAAC,MAAM,CAAC,CAmEjB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,CAEpE"}
@@ -1,151 +0,0 @@
1
- /**
2
- * Centralized Path Validation Utility
3
- *
4
- * Provides secure path validation and resolution for MCP tools.
5
- * Prevents path traversal attacks and ensures operations stay within allowed directories.
6
- */
7
- import { resolve, isAbsolute, normalize, sep } from 'path';
8
- import { realpath } from 'fs/promises';
9
- // Environment variable configuration
10
- const ENV_PROJECT_ROOT = 'MAESTRO_PROJECT_ROOT';
11
- const ENV_ALLOWED_DIRS = 'MAESTRO_ALLOWED_DIRS';
12
- const ENV_ENABLE_SANDBOX = 'MAESTRO_ENABLE_SANDBOX';
13
- /**
14
- * Check if sandbox mode is enabled
15
- * When enabled, path validation restricts access to allowed directories only
16
- */
17
- export function isSandboxEnabled() {
18
- const value = process.env[ENV_ENABLE_SANDBOX];
19
- return value === '1' || value?.toLowerCase() === 'true';
20
- }
21
- /**
22
- * Get project root directory
23
- * Priority: MAESTRO_PROJECT_ROOT > process.cwd()
24
- */
25
- export function getProjectRoot() {
26
- return process.env[ENV_PROJECT_ROOT] || process.cwd();
27
- }
28
- /**
29
- * Get allowed directories list
30
- * Priority: MAESTRO_ALLOWED_DIRS > [getProjectRoot()]
31
- */
32
- export function getAllowedDirectories() {
33
- const envDirs = process.env[ENV_ALLOWED_DIRS];
34
- if (envDirs) {
35
- return envDirs.split(',').map(d => d.trim()).filter(Boolean);
36
- }
37
- return [getProjectRoot()];
38
- }
39
- /**
40
- * Normalize path (unify separators to forward slash)
41
- */
42
- export function normalizePath(p) {
43
- return normalize(p).replace(/\\/g, '/');
44
- }
45
- function canonicalizeForComparison(p) {
46
- const base = getProjectRoot();
47
- const absolute = isAbsolute(p) ? p : resolve(base, p);
48
- let canonical = normalize(absolute);
49
- // Remove trailing separators (except drive roots like C:\ and posix root /)
50
- canonical = canonical.replace(/[\\/]+$/, '');
51
- if (/^[a-zA-Z]:$/.test(canonical)) {
52
- canonical += sep;
53
- }
54
- else if (canonical === '') {
55
- canonical = sep;
56
- }
57
- // Windows paths are case-insensitive.
58
- if (process.platform === 'win32') {
59
- canonical = canonical.toLowerCase();
60
- }
61
- return canonical;
62
- }
63
- /**
64
- * Check if path is within allowed directories
65
- */
66
- export function isPathWithinAllowedDirectories(targetPath, allowedDirectories) {
67
- const canonicalTarget = canonicalizeForComparison(targetPath);
68
- return allowedDirectories.some(dir => {
69
- const canonicalDir = canonicalizeForComparison(dir);
70
- if (canonicalTarget === canonicalDir)
71
- return true;
72
- const boundary = canonicalDir.endsWith(sep) ? canonicalDir : canonicalDir + sep;
73
- return canonicalTarget.startsWith(boundary);
74
- });
75
- }
76
- /**
77
- * Validate and resolve path (core function)
78
- *
79
- * Security model:
80
- * 1. Resolve to absolute path
81
- * 2. Check against allowed directories
82
- * 3. Resolve symlinks and re-verify
83
- *
84
- * @param filePath - Path to validate
85
- * @param options - Validation options
86
- * @returns Validated absolute path
87
- * @throws Error if path is outside allowed directories or validation fails
88
- */
89
- export async function validatePath(filePath, options = {}) {
90
- const sandboxEnabled = isSandboxEnabled();
91
- const allowedDirs = options.allowedDirectories || getAllowedDirectories();
92
- // 1. Resolve to absolute path
93
- const absolutePath = isAbsolute(filePath)
94
- ? filePath
95
- : resolve(getProjectRoot(), filePath);
96
- const normalizedPath = normalizePath(absolutePath);
97
- // 2. Initial sandbox check (only if sandbox is enabled)
98
- if (sandboxEnabled && !isPathWithinAllowedDirectories(normalizedPath, allowedDirs)) {
99
- throw new Error(`Access denied: path "${normalizedPath}" is outside allowed directories. ` +
100
- `Allowed: [${allowedDirs.join(', ')}]`);
101
- }
102
- // 3. Try to resolve symlinks and re-verify
103
- try {
104
- const realPath = await realpath(absolutePath);
105
- const normalizedReal = normalizePath(realPath);
106
- // Only check symlink target if sandbox is enabled
107
- if (sandboxEnabled && !isPathWithinAllowedDirectories(normalizedReal, allowedDirs)) {
108
- throw new Error(`Access denied: symlink target "${normalizedReal}" is outside allowed directories`);
109
- }
110
- return normalizedReal;
111
- }
112
- catch (error) {
113
- // File doesn't exist - validate parent directory
114
- if (error.code === 'ENOENT') {
115
- if (options.mustExist) {
116
- throw new Error(`File not found: ${absolutePath}`);
117
- }
118
- // Validate parent directory's real path (only if sandbox is enabled)
119
- const parentDir = resolve(absolutePath, '..');
120
- try {
121
- const realParent = await realpath(parentDir);
122
- const normalizedParent = normalizePath(realParent);
123
- if (sandboxEnabled && !isPathWithinAllowedDirectories(normalizedParent, allowedDirs)) {
124
- throw new Error(`Access denied: parent directory "${normalizedParent}" is outside allowed directories`);
125
- }
126
- }
127
- catch (parentError) {
128
- if (parentError.code === 'ENOENT') {
129
- // Parent directory doesn't exist either - return original absolute path
130
- // Let the caller create it if needed
131
- return absolutePath;
132
- }
133
- throw parentError;
134
- }
135
- return absolutePath;
136
- }
137
- // Re-throw access denied errors
138
- if (error.message?.includes('Access denied')) {
139
- throw error;
140
- }
141
- throw error;
142
- }
143
- }
144
- /**
145
- * Resolve project-relative path (simplified, no strict validation)
146
- * Use for cases where strict security validation is not needed
147
- */
148
- export function resolveProjectPath(...pathSegments) {
149
- return resolve(getProjectRoot(), ...pathSegments);
150
- }
151
- //# sourceMappingURL=path-validator.js.map