@cluesmith/codev 2.0.0-rc.6 → 2.0.0-rc.60

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 (374) hide show
  1. package/bin/af.js +2 -2
  2. package/bin/consult.js +1 -1
  3. package/bin/porch.js +6 -35
  4. package/dashboard/dist/assets/index-CXloFYpB.css +32 -0
  5. package/dashboard/dist/assets/index-Ca2fjOJf.js +131 -0
  6. package/dashboard/dist/assets/index-Ca2fjOJf.js.map +1 -0
  7. package/dashboard/dist/index.html +14 -0
  8. package/dist/agent-farm/cli.d.ts.map +1 -1
  9. package/dist/agent-farm/cli.js +94 -65
  10. package/dist/agent-farm/cli.js.map +1 -1
  11. package/dist/agent-farm/commands/architect.d.ts.map +1 -1
  12. package/dist/agent-farm/commands/architect.js +13 -6
  13. package/dist/agent-farm/commands/architect.js.map +1 -1
  14. package/dist/agent-farm/commands/attach.d.ts +13 -0
  15. package/dist/agent-farm/commands/attach.d.ts.map +1 -0
  16. package/dist/agent-farm/commands/attach.js +202 -0
  17. package/dist/agent-farm/commands/attach.js.map +1 -0
  18. package/dist/agent-farm/commands/cleanup.d.ts.map +1 -1
  19. package/dist/agent-farm/commands/cleanup.js +30 -3
  20. package/dist/agent-farm/commands/cleanup.js.map +1 -1
  21. package/dist/agent-farm/commands/consult.js +1 -1
  22. package/dist/agent-farm/commands/consult.js.map +1 -1
  23. package/dist/agent-farm/commands/index.d.ts +2 -2
  24. package/dist/agent-farm/commands/index.d.ts.map +1 -1
  25. package/dist/agent-farm/commands/index.js +2 -2
  26. package/dist/agent-farm/commands/index.js.map +1 -1
  27. package/dist/agent-farm/commands/open.d.ts +4 -2
  28. package/dist/agent-farm/commands/open.d.ts.map +1 -1
  29. package/dist/agent-farm/commands/open.js +37 -70
  30. package/dist/agent-farm/commands/open.js.map +1 -1
  31. package/dist/agent-farm/commands/send.d.ts.map +1 -1
  32. package/dist/agent-farm/commands/send.js +55 -17
  33. package/dist/agent-farm/commands/send.js.map +1 -1
  34. package/dist/agent-farm/commands/{util.d.ts → shell.d.ts} +5 -5
  35. package/dist/agent-farm/commands/shell.d.ts.map +1 -0
  36. package/dist/agent-farm/commands/{util.js → shell.js} +23 -36
  37. package/dist/agent-farm/commands/shell.js.map +1 -0
  38. package/dist/agent-farm/commands/spawn.d.ts.map +1 -1
  39. package/dist/agent-farm/commands/spawn.js +503 -226
  40. package/dist/agent-farm/commands/spawn.js.map +1 -1
  41. package/dist/agent-farm/commands/start.d.ts +3 -0
  42. package/dist/agent-farm/commands/start.d.ts.map +1 -1
  43. package/dist/agent-farm/commands/start.js +55 -265
  44. package/dist/agent-farm/commands/start.js.map +1 -1
  45. package/dist/agent-farm/commands/status.d.ts +2 -0
  46. package/dist/agent-farm/commands/status.d.ts.map +1 -1
  47. package/dist/agent-farm/commands/status.js +61 -3
  48. package/dist/agent-farm/commands/status.js.map +1 -1
  49. package/dist/agent-farm/commands/stop.d.ts +6 -0
  50. package/dist/agent-farm/commands/stop.d.ts.map +1 -1
  51. package/dist/agent-farm/commands/stop.js +116 -12
  52. package/dist/agent-farm/commands/stop.js.map +1 -1
  53. package/dist/agent-farm/commands/tower.d.ts +9 -0
  54. package/dist/agent-farm/commands/tower.d.ts.map +1 -1
  55. package/dist/agent-farm/commands/tower.js +59 -19
  56. package/dist/agent-farm/commands/tower.js.map +1 -1
  57. package/dist/agent-farm/db/index.d.ts.map +1 -1
  58. package/dist/agent-farm/db/index.js +124 -0
  59. package/dist/agent-farm/db/index.js.map +1 -1
  60. package/dist/agent-farm/db/schema.d.ts +2 -2
  61. package/dist/agent-farm/db/schema.d.ts.map +1 -1
  62. package/dist/agent-farm/db/schema.js +26 -5
  63. package/dist/agent-farm/db/schema.js.map +1 -1
  64. package/dist/agent-farm/db/types.d.ts +3 -0
  65. package/dist/agent-farm/db/types.d.ts.map +1 -1
  66. package/dist/agent-farm/db/types.js +3 -0
  67. package/dist/agent-farm/db/types.js.map +1 -1
  68. package/dist/agent-farm/hq-connector.d.ts +2 -6
  69. package/dist/agent-farm/hq-connector.d.ts.map +1 -1
  70. package/dist/agent-farm/hq-connector.js +2 -17
  71. package/dist/agent-farm/hq-connector.js.map +1 -1
  72. package/dist/agent-farm/lib/tower-client.d.ts +157 -0
  73. package/dist/agent-farm/lib/tower-client.d.ts.map +1 -0
  74. package/dist/agent-farm/lib/tower-client.js +223 -0
  75. package/dist/agent-farm/lib/tower-client.js.map +1 -0
  76. package/dist/agent-farm/servers/tower-server.js +2137 -112
  77. package/dist/agent-farm/servers/tower-server.js.map +1 -1
  78. package/dist/agent-farm/state.d.ts +4 -10
  79. package/dist/agent-farm/state.d.ts.map +1 -1
  80. package/dist/agent-farm/state.js +30 -31
  81. package/dist/agent-farm/state.js.map +1 -1
  82. package/dist/agent-farm/types.d.ts +48 -1
  83. package/dist/agent-farm/types.d.ts.map +1 -1
  84. package/dist/agent-farm/utils/config.d.ts.map +1 -1
  85. package/dist/agent-farm/utils/config.js +13 -14
  86. package/dist/agent-farm/utils/config.js.map +1 -1
  87. package/dist/agent-farm/utils/deps.d.ts.map +1 -1
  88. package/dist/agent-farm/utils/deps.js +0 -16
  89. package/dist/agent-farm/utils/deps.js.map +1 -1
  90. package/dist/agent-farm/utils/notifications.d.ts +30 -0
  91. package/dist/agent-farm/utils/notifications.d.ts.map +1 -0
  92. package/dist/agent-farm/utils/notifications.js +121 -0
  93. package/dist/agent-farm/utils/notifications.js.map +1 -0
  94. package/dist/agent-farm/utils/port-registry.d.ts +0 -1
  95. package/dist/agent-farm/utils/port-registry.d.ts.map +1 -1
  96. package/dist/agent-farm/utils/port-registry.js +1 -1
  97. package/dist/agent-farm/utils/port-registry.js.map +1 -1
  98. package/dist/agent-farm/utils/server-utils.d.ts +4 -4
  99. package/dist/agent-farm/utils/server-utils.d.ts.map +1 -1
  100. package/dist/agent-farm/utils/server-utils.js +4 -15
  101. package/dist/agent-farm/utils/server-utils.js.map +1 -1
  102. package/dist/agent-farm/utils/shell.d.ts +9 -22
  103. package/dist/agent-farm/utils/shell.d.ts.map +1 -1
  104. package/dist/agent-farm/utils/shell.js +34 -34
  105. package/dist/agent-farm/utils/shell.js.map +1 -1
  106. package/dist/agent-farm/utils/terminal-ports.d.ts +1 -1
  107. package/dist/agent-farm/utils/terminal-ports.js +1 -1
  108. package/dist/cli.d.ts.map +1 -1
  109. package/dist/cli.js +7 -54
  110. package/dist/cli.js.map +1 -1
  111. package/dist/commands/adopt.d.ts.map +1 -1
  112. package/dist/commands/adopt.js +49 -4
  113. package/dist/commands/adopt.js.map +1 -1
  114. package/dist/commands/consult/index.d.ts +1 -0
  115. package/dist/commands/consult/index.d.ts.map +1 -1
  116. package/dist/commands/consult/index.js +85 -6
  117. package/dist/commands/consult/index.js.map +1 -1
  118. package/dist/commands/doctor.d.ts.map +1 -1
  119. package/dist/commands/doctor.js +0 -15
  120. package/dist/commands/doctor.js.map +1 -1
  121. package/dist/commands/init.d.ts.map +1 -1
  122. package/dist/commands/init.js +41 -2
  123. package/dist/commands/init.js.map +1 -1
  124. package/dist/commands/porch/build-counter.d.ts +5 -0
  125. package/dist/commands/porch/build-counter.d.ts.map +1 -0
  126. package/dist/commands/porch/build-counter.js +5 -0
  127. package/dist/commands/porch/build-counter.js.map +1 -0
  128. package/dist/commands/porch/checks.d.ts +17 -29
  129. package/dist/commands/porch/checks.d.ts.map +1 -1
  130. package/dist/commands/porch/checks.js +96 -144
  131. package/dist/commands/porch/checks.js.map +1 -1
  132. package/dist/commands/porch/index.d.ts +21 -43
  133. package/dist/commands/porch/index.d.ts.map +1 -1
  134. package/dist/commands/porch/index.js +418 -1123
  135. package/dist/commands/porch/index.js.map +1 -1
  136. package/dist/commands/porch/next.d.ts +22 -0
  137. package/dist/commands/porch/next.d.ts.map +1 -0
  138. package/dist/commands/porch/next.js +479 -0
  139. package/dist/commands/porch/next.js.map +1 -0
  140. package/dist/commands/porch/plan.d.ts +70 -0
  141. package/dist/commands/porch/plan.d.ts.map +1 -0
  142. package/dist/commands/porch/plan.js +190 -0
  143. package/dist/commands/porch/plan.js.map +1 -0
  144. package/dist/commands/porch/prompts.d.ts +19 -0
  145. package/dist/commands/porch/prompts.d.ts.map +1 -0
  146. package/dist/commands/porch/prompts.js +255 -0
  147. package/dist/commands/porch/prompts.js.map +1 -0
  148. package/dist/commands/porch/protocol.d.ts +59 -0
  149. package/dist/commands/porch/protocol.d.ts.map +1 -0
  150. package/dist/commands/porch/protocol.js +294 -0
  151. package/dist/commands/porch/protocol.js.map +1 -0
  152. package/dist/commands/porch/state.d.ts +23 -112
  153. package/dist/commands/porch/state.d.ts.map +1 -1
  154. package/dist/commands/porch/state.js +81 -699
  155. package/dist/commands/porch/state.js.map +1 -1
  156. package/dist/commands/porch/types.d.ts +99 -164
  157. package/dist/commands/porch/types.d.ts.map +1 -1
  158. package/dist/commands/porch/types.js +2 -1
  159. package/dist/commands/porch/types.js.map +1 -1
  160. package/dist/commands/porch/verdict.d.ts +31 -0
  161. package/dist/commands/porch/verdict.d.ts.map +1 -0
  162. package/dist/commands/porch/verdict.js +59 -0
  163. package/dist/commands/porch/verdict.js.map +1 -0
  164. package/dist/commands/update.d.ts.map +1 -1
  165. package/dist/commands/update.js +31 -0
  166. package/dist/commands/update.js.map +1 -1
  167. package/dist/lib/scaffold.d.ts +37 -0
  168. package/dist/lib/scaffold.d.ts.map +1 -1
  169. package/dist/lib/scaffold.js +114 -0
  170. package/dist/lib/scaffold.js.map +1 -1
  171. package/dist/terminal/index.d.ts +8 -0
  172. package/dist/terminal/index.d.ts.map +1 -0
  173. package/dist/terminal/index.js +5 -0
  174. package/dist/terminal/index.js.map +1 -0
  175. package/dist/terminal/pty-manager.d.ts +60 -0
  176. package/dist/terminal/pty-manager.d.ts.map +1 -0
  177. package/dist/terminal/pty-manager.js +334 -0
  178. package/dist/terminal/pty-manager.js.map +1 -0
  179. package/dist/terminal/pty-session.d.ts +79 -0
  180. package/dist/terminal/pty-session.d.ts.map +1 -0
  181. package/dist/terminal/pty-session.js +215 -0
  182. package/dist/terminal/pty-session.js.map +1 -0
  183. package/dist/terminal/ring-buffer.d.ts +27 -0
  184. package/dist/terminal/ring-buffer.d.ts.map +1 -0
  185. package/dist/terminal/ring-buffer.js +74 -0
  186. package/dist/terminal/ring-buffer.js.map +1 -0
  187. package/dist/terminal/ws-protocol.d.ts +27 -0
  188. package/dist/terminal/ws-protocol.d.ts.map +1 -0
  189. package/dist/terminal/ws-protocol.js +44 -0
  190. package/dist/terminal/ws-protocol.js.map +1 -0
  191. package/package.json +18 -5
  192. package/skeleton/.claude/skills/af/SKILL.md +74 -0
  193. package/skeleton/.claude/skills/codev/SKILL.md +41 -0
  194. package/skeleton/.claude/skills/consult/SKILL.md +81 -0
  195. package/skeleton/.claude/skills/generate-image/SKILL.md +56 -0
  196. package/skeleton/DEPENDENCIES.md +3 -29
  197. package/skeleton/builders.md +1 -1
  198. package/skeleton/porch/prompts/defend.md +1 -1
  199. package/skeleton/porch/prompts/evaluate.md +2 -2
  200. package/skeleton/porch/prompts/implement.md +1 -1
  201. package/skeleton/porch/prompts/plan.md +1 -1
  202. package/skeleton/porch/prompts/review.md +4 -4
  203. package/skeleton/porch/prompts/specify.md +1 -1
  204. package/skeleton/porch/prompts/understand.md +2 -2
  205. package/skeleton/protocol-schema.json +282 -0
  206. package/skeleton/protocols/bugfix/builder-prompt.md +54 -0
  207. package/skeleton/protocols/bugfix/prompts/fix.md +77 -0
  208. package/skeleton/protocols/bugfix/prompts/investigate.md +77 -0
  209. package/skeleton/protocols/bugfix/prompts/pr.md +61 -0
  210. package/skeleton/protocols/bugfix/protocol.json +19 -2
  211. package/skeleton/protocols/experiment/builder-prompt.md +52 -0
  212. package/skeleton/protocols/experiment/protocol.json +101 -0
  213. package/skeleton/protocols/experiment/protocol.md +3 -3
  214. package/skeleton/protocols/experiment/templates/notes.md +1 -1
  215. package/skeleton/protocols/maintain/builder-prompt.md +46 -0
  216. package/skeleton/protocols/maintain/prompts/audit.md +111 -0
  217. package/skeleton/protocols/maintain/prompts/clean.md +91 -0
  218. package/skeleton/protocols/maintain/prompts/sync.md +113 -0
  219. package/skeleton/protocols/maintain/prompts/verify.md +110 -0
  220. package/skeleton/protocols/maintain/protocol.json +141 -0
  221. package/skeleton/protocols/maintain/protocol.md +14 -8
  222. package/skeleton/protocols/protocol-schema.json +54 -1
  223. package/skeleton/protocols/spir/builder-prompt.md +59 -0
  224. package/skeleton/protocols/spir/prompts/implement.md +208 -0
  225. package/skeleton/protocols/{spider → spir}/prompts/plan.md +6 -70
  226. package/skeleton/protocols/{spider → spir}/prompts/review.md +7 -25
  227. package/skeleton/protocols/{spider → spir}/prompts/specify.md +33 -61
  228. package/skeleton/protocols/spir/protocol.json +152 -0
  229. package/skeleton/protocols/{spider → spir}/protocol.md +35 -21
  230. package/skeleton/protocols/{spider → spir}/templates/plan.md +14 -0
  231. package/skeleton/protocols/{spider → spir}/templates/review.md +1 -1
  232. package/skeleton/protocols/tick/builder-prompt.md +56 -0
  233. package/skeleton/protocols/tick/protocol.json +7 -2
  234. package/skeleton/protocols/tick/protocol.md +18 -18
  235. package/skeleton/protocols/tick/templates/review.md +1 -1
  236. package/skeleton/resources/commands/agent-farm.md +25 -43
  237. package/skeleton/resources/commands/overview.md +7 -17
  238. package/skeleton/resources/workflow-reference.md +4 -4
  239. package/skeleton/roles/architect.md +152 -315
  240. package/skeleton/roles/builder.md +109 -218
  241. package/skeleton/templates/AGENTS.md +2 -2
  242. package/skeleton/templates/CLAUDE.md +2 -2
  243. package/skeleton/templates/cheatsheet.md +7 -5
  244. package/skeleton/templates/projectlist.md +1 -1
  245. package/templates/dashboard/index.html +17 -43
  246. package/templates/dashboard/js/dialogs.js +7 -7
  247. package/templates/dashboard/js/files.js +2 -2
  248. package/templates/dashboard/js/main.js +4 -4
  249. package/templates/dashboard/js/projects.js +3 -3
  250. package/templates/dashboard/js/tabs.js +1 -1
  251. package/templates/dashboard/js/utils.js +22 -87
  252. package/templates/open.html +26 -0
  253. package/templates/tower.html +542 -27
  254. package/dist/agent-farm/commands/kickoff.d.ts +0 -19
  255. package/dist/agent-farm/commands/kickoff.d.ts.map +0 -1
  256. package/dist/agent-farm/commands/kickoff.js +0 -331
  257. package/dist/agent-farm/commands/kickoff.js.map +0 -1
  258. package/dist/agent-farm/commands/rename.d.ts +0 -13
  259. package/dist/agent-farm/commands/rename.d.ts.map +0 -1
  260. package/dist/agent-farm/commands/rename.js +0 -33
  261. package/dist/agent-farm/commands/rename.js.map +0 -1
  262. package/dist/agent-farm/commands/tutorial.d.ts +0 -10
  263. package/dist/agent-farm/commands/tutorial.d.ts.map +0 -1
  264. package/dist/agent-farm/commands/tutorial.js +0 -49
  265. package/dist/agent-farm/commands/tutorial.js.map +0 -1
  266. package/dist/agent-farm/commands/util.d.ts.map +0 -1
  267. package/dist/agent-farm/commands/util.js.map +0 -1
  268. package/dist/agent-farm/servers/dashboard-server.d.ts +0 -7
  269. package/dist/agent-farm/servers/dashboard-server.d.ts.map +0 -1
  270. package/dist/agent-farm/servers/dashboard-server.js +0 -1872
  271. package/dist/agent-farm/servers/dashboard-server.js.map +0 -1
  272. package/dist/agent-farm/servers/open-server.d.ts +0 -7
  273. package/dist/agent-farm/servers/open-server.d.ts.map +0 -1
  274. package/dist/agent-farm/servers/open-server.js +0 -315
  275. package/dist/agent-farm/servers/open-server.js.map +0 -1
  276. package/dist/agent-farm/tutorial/index.d.ts +0 -8
  277. package/dist/agent-farm/tutorial/index.d.ts.map +0 -1
  278. package/dist/agent-farm/tutorial/index.js +0 -8
  279. package/dist/agent-farm/tutorial/index.js.map +0 -1
  280. package/dist/agent-farm/tutorial/prompts.d.ts +0 -57
  281. package/dist/agent-farm/tutorial/prompts.d.ts.map +0 -1
  282. package/dist/agent-farm/tutorial/prompts.js +0 -147
  283. package/dist/agent-farm/tutorial/prompts.js.map +0 -1
  284. package/dist/agent-farm/tutorial/runner.d.ts +0 -52
  285. package/dist/agent-farm/tutorial/runner.d.ts.map +0 -1
  286. package/dist/agent-farm/tutorial/runner.js +0 -204
  287. package/dist/agent-farm/tutorial/runner.js.map +0 -1
  288. package/dist/agent-farm/tutorial/state.d.ts +0 -26
  289. package/dist/agent-farm/tutorial/state.d.ts.map +0 -1
  290. package/dist/agent-farm/tutorial/state.js +0 -89
  291. package/dist/agent-farm/tutorial/state.js.map +0 -1
  292. package/dist/agent-farm/tutorial/steps/first-spec.d.ts +0 -7
  293. package/dist/agent-farm/tutorial/steps/first-spec.d.ts.map +0 -1
  294. package/dist/agent-farm/tutorial/steps/first-spec.js +0 -136
  295. package/dist/agent-farm/tutorial/steps/first-spec.js.map +0 -1
  296. package/dist/agent-farm/tutorial/steps/implementation.d.ts +0 -7
  297. package/dist/agent-farm/tutorial/steps/implementation.d.ts.map +0 -1
  298. package/dist/agent-farm/tutorial/steps/implementation.js +0 -76
  299. package/dist/agent-farm/tutorial/steps/implementation.js.map +0 -1
  300. package/dist/agent-farm/tutorial/steps/index.d.ts +0 -10
  301. package/dist/agent-farm/tutorial/steps/index.d.ts.map +0 -1
  302. package/dist/agent-farm/tutorial/steps/index.js +0 -10
  303. package/dist/agent-farm/tutorial/steps/index.js.map +0 -1
  304. package/dist/agent-farm/tutorial/steps/planning.d.ts +0 -7
  305. package/dist/agent-farm/tutorial/steps/planning.d.ts.map +0 -1
  306. package/dist/agent-farm/tutorial/steps/planning.js +0 -143
  307. package/dist/agent-farm/tutorial/steps/planning.js.map +0 -1
  308. package/dist/agent-farm/tutorial/steps/review.d.ts +0 -7
  309. package/dist/agent-farm/tutorial/steps/review.d.ts.map +0 -1
  310. package/dist/agent-farm/tutorial/steps/review.js +0 -78
  311. package/dist/agent-farm/tutorial/steps/review.js.map +0 -1
  312. package/dist/agent-farm/tutorial/steps/setup.d.ts +0 -7
  313. package/dist/agent-farm/tutorial/steps/setup.d.ts.map +0 -1
  314. package/dist/agent-farm/tutorial/steps/setup.js +0 -126
  315. package/dist/agent-farm/tutorial/steps/setup.js.map +0 -1
  316. package/dist/agent-farm/tutorial/steps/welcome.d.ts +0 -7
  317. package/dist/agent-farm/tutorial/steps/welcome.d.ts.map +0 -1
  318. package/dist/agent-farm/tutorial/steps/welcome.js +0 -50
  319. package/dist/agent-farm/tutorial/steps/welcome.js.map +0 -1
  320. package/dist/commands/pcheck/cache.d.ts +0 -48
  321. package/dist/commands/pcheck/cache.d.ts.map +0 -1
  322. package/dist/commands/pcheck/cache.js +0 -170
  323. package/dist/commands/pcheck/cache.js.map +0 -1
  324. package/dist/commands/pcheck/evaluator.d.ts +0 -15
  325. package/dist/commands/pcheck/evaluator.d.ts.map +0 -1
  326. package/dist/commands/pcheck/evaluator.js +0 -246
  327. package/dist/commands/pcheck/evaluator.js.map +0 -1
  328. package/dist/commands/pcheck/index.d.ts +0 -12
  329. package/dist/commands/pcheck/index.d.ts.map +0 -1
  330. package/dist/commands/pcheck/index.js +0 -249
  331. package/dist/commands/pcheck/index.js.map +0 -1
  332. package/dist/commands/pcheck/parser.d.ts +0 -39
  333. package/dist/commands/pcheck/parser.d.ts.map +0 -1
  334. package/dist/commands/pcheck/parser.js +0 -155
  335. package/dist/commands/pcheck/parser.js.map +0 -1
  336. package/dist/commands/pcheck/types.d.ts +0 -82
  337. package/dist/commands/pcheck/types.d.ts.map +0 -1
  338. package/dist/commands/pcheck/types.js +0 -5
  339. package/dist/commands/pcheck/types.js.map +0 -1
  340. package/dist/commands/porch/consultation.d.ts +0 -56
  341. package/dist/commands/porch/consultation.d.ts.map +0 -1
  342. package/dist/commands/porch/consultation.js +0 -330
  343. package/dist/commands/porch/consultation.js.map +0 -1
  344. package/dist/commands/porch/notifications.d.ts +0 -99
  345. package/dist/commands/porch/notifications.d.ts.map +0 -1
  346. package/dist/commands/porch/notifications.js +0 -223
  347. package/dist/commands/porch/notifications.js.map +0 -1
  348. package/dist/commands/porch/plan-parser.d.ts +0 -38
  349. package/dist/commands/porch/plan-parser.d.ts.map +0 -1
  350. package/dist/commands/porch/plan-parser.js +0 -166
  351. package/dist/commands/porch/plan-parser.js.map +0 -1
  352. package/dist/commands/porch/protocol-loader.d.ts +0 -46
  353. package/dist/commands/porch/protocol-loader.d.ts.map +0 -1
  354. package/dist/commands/porch/protocol-loader.js +0 -253
  355. package/dist/commands/porch/protocol-loader.js.map +0 -1
  356. package/dist/commands/porch/signal-parser.d.ts +0 -88
  357. package/dist/commands/porch/signal-parser.d.ts.map +0 -1
  358. package/dist/commands/porch/signal-parser.js +0 -148
  359. package/dist/commands/porch/signal-parser.js.map +0 -1
  360. package/dist/commands/tower.d.ts +0 -16
  361. package/dist/commands/tower.d.ts.map +0 -1
  362. package/dist/commands/tower.js +0 -21
  363. package/dist/commands/tower.js.map +0 -1
  364. package/skeleton/config.json +0 -7
  365. package/skeleton/porch/protocols/bugfix.json +0 -85
  366. package/skeleton/porch/protocols/spider.json +0 -135
  367. package/skeleton/porch/protocols/tick.json +0 -76
  368. package/skeleton/protocols/spider/prompts/defend.md +0 -215
  369. package/skeleton/protocols/spider/prompts/evaluate.md +0 -241
  370. package/skeleton/protocols/spider/prompts/implement.md +0 -149
  371. package/skeleton/protocols/spider/protocol.json +0 -210
  372. package/templates/dashboard/css/activity.css +0 -151
  373. package/templates/dashboard/js/activity.js +0 -112
  374. /package/skeleton/protocols/{spider → spir}/templates/spec.md +0 -0
@@ -1,99 +0,0 @@
1
- /**
2
- * Porch Notifications
3
- *
4
- * Simple notification system for porch events.
5
- * Supports console logging and optional desktop notifications.
6
- */
7
- import type { ConsultationFeedback } from './types.js';
8
- /**
9
- * Notification event types
10
- */
11
- export type NotificationEvent = 'phase-start' | 'phase-complete' | 'gate-pending' | 'gate-approved' | 'consultation-start' | 'consultation-complete' | 'check-failed' | 'blocked' | 'error';
12
- /**
13
- * Notification payload
14
- */
15
- export interface NotificationPayload {
16
- event: NotificationEvent;
17
- projectId: string;
18
- phase?: string;
19
- message: string;
20
- details?: string;
21
- }
22
- /**
23
- * Send a notification
24
- */
25
- export declare function notify(payload: NotificationPayload, options?: {
26
- desktop?: boolean;
27
- }): Promise<void>;
28
- /**
29
- * Notify phase start
30
- */
31
- export declare function notifyPhaseStart(projectId: string, phase: string, options?: {
32
- desktop?: boolean;
33
- }): Promise<void>;
34
- /**
35
- * Notify phase complete
36
- */
37
- export declare function notifyPhaseComplete(projectId: string, phase: string, options?: {
38
- desktop?: boolean;
39
- }): Promise<void>;
40
- /**
41
- * Notify gate pending approval
42
- */
43
- export declare function notifyGatePending(projectId: string, phase: string, gateName: string, options?: {
44
- desktop?: boolean;
45
- }): Promise<void>;
46
- /**
47
- * Notify gate approved
48
- */
49
- export declare function notifyGateApproved(projectId: string, gateName: string, options?: {
50
- desktop?: boolean;
51
- }): Promise<void>;
52
- /**
53
- * Notify consultation start
54
- */
55
- export declare function notifyConsultationStart(projectId: string, phase: string, models: string[], options?: {
56
- desktop?: boolean;
57
- }): Promise<void>;
58
- /**
59
- * Notify consultation complete
60
- */
61
- export declare function notifyConsultationComplete(projectId: string, phase: string, feedback: ConsultationFeedback[], allApproved: boolean, options?: {
62
- desktop?: boolean;
63
- }): Promise<void>;
64
- /**
65
- * Notify check failed
66
- */
67
- export declare function notifyCheckFailed(projectId: string, phase: string, checkName: string, error: string, options?: {
68
- desktop?: boolean;
69
- }): Promise<void>;
70
- /**
71
- * Notify blocked
72
- */
73
- export declare function notifyBlocked(projectId: string, reason: string, options?: {
74
- desktop?: boolean;
75
- }): Promise<void>;
76
- /**
77
- * Notify error
78
- */
79
- export declare function notifyError(projectId: string, error: string, options?: {
80
- desktop?: boolean;
81
- }): Promise<void>;
82
- /**
83
- * Create a notification context for a project
84
- * Returns bound notification functions
85
- */
86
- export declare function createNotifier(projectId: string, options?: {
87
- desktop?: boolean;
88
- }): {
89
- phaseStart: (phase: string) => Promise<void>;
90
- phaseComplete: (phase: string) => Promise<void>;
91
- gatePending: (phase: string, gateName: string) => Promise<void>;
92
- gateApproved: (gateName: string) => Promise<void>;
93
- consultationStart: (phase: string, models: string[]) => Promise<void>;
94
- consultationComplete: (phase: string, feedback: ConsultationFeedback[], allApproved: boolean) => Promise<void>;
95
- checkFailed: (phase: string, checkName: string, error: string) => Promise<void>;
96
- blocked: (reason: string) => Promise<void>;
97
- error: (error: string) => Promise<void>;
98
- };
99
- //# sourceMappingURL=notifications.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/notifications.ts"],"names":[],"mappings":"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"}
@@ -1,223 +0,0 @@
1
- /**
2
- * Porch Notifications
3
- *
4
- * Simple notification system for porch events.
5
- * Supports console logging and optional desktop notifications.
6
- */
7
- import { spawn } from 'node:child_process';
8
- import chalk from 'chalk';
9
- /**
10
- * Send a desktop notification (macOS only)
11
- * Fails silently if osascript is not available
12
- */
13
- async function sendDesktopNotification(title, message) {
14
- if (process.platform !== 'darwin') {
15
- return;
16
- }
17
- return new Promise((resolve) => {
18
- const script = `display notification "${message.replace(/"/g, '\\"')}" with title "${title.replace(/"/g, '\\"')}"`;
19
- const proc = spawn('osascript', ['-e', script], { stdio: 'ignore' });
20
- proc.on('close', () => resolve());
21
- proc.on('error', () => resolve());
22
- // Don't wait forever
23
- setTimeout(() => resolve(), 2000);
24
- });
25
- }
26
- /**
27
- * Format and log a notification to console
28
- */
29
- function logNotification(payload) {
30
- const { event, projectId, phase, message, details } = payload;
31
- let icon;
32
- let color;
33
- switch (event) {
34
- case 'phase-start':
35
- icon = '>';
36
- color = chalk.blue;
37
- break;
38
- case 'phase-complete':
39
- icon = '✓';
40
- color = chalk.green;
41
- break;
42
- case 'gate-pending':
43
- icon = '◉';
44
- color = chalk.yellow;
45
- break;
46
- case 'gate-approved':
47
- icon = '✓';
48
- color = chalk.green;
49
- break;
50
- case 'consultation-start':
51
- icon = '⟳';
52
- color = chalk.blue;
53
- break;
54
- case 'consultation-complete':
55
- icon = '✓';
56
- color = chalk.green;
57
- break;
58
- case 'check-failed':
59
- icon = '✗';
60
- color = chalk.red;
61
- break;
62
- case 'blocked':
63
- icon = '!';
64
- color = chalk.yellow;
65
- break;
66
- case 'error':
67
- icon = '✗';
68
- color = chalk.red;
69
- break;
70
- default:
71
- icon = '•';
72
- color = chalk.gray;
73
- }
74
- const prefix = phase
75
- ? `[porch:${projectId}:${phase}]`
76
- : `[porch:${projectId}]`;
77
- console.log(color(`${icon} ${prefix} ${message}`));
78
- if (details) {
79
- console.log(chalk.gray(` ${details}`));
80
- }
81
- }
82
- /**
83
- * Send a notification
84
- */
85
- export async function notify(payload, options = {}) {
86
- // Always log to console
87
- logNotification(payload);
88
- // Desktop notification for important events
89
- if (options.desktop) {
90
- const shouldNotify = payload.event === 'gate-pending' ||
91
- payload.event === 'consultation-complete' ||
92
- payload.event === 'check-failed' ||
93
- payload.event === 'blocked' ||
94
- payload.event === 'error';
95
- if (shouldNotify) {
96
- const title = `Porch: ${payload.projectId}`;
97
- await sendDesktopNotification(title, payload.message);
98
- }
99
- }
100
- }
101
- /**
102
- * Notify phase start
103
- */
104
- export async function notifyPhaseStart(projectId, phase, options = {}) {
105
- await notify({
106
- event: 'phase-start',
107
- projectId,
108
- phase,
109
- message: `Starting phase: ${phase}`,
110
- }, options);
111
- }
112
- /**
113
- * Notify phase complete
114
- */
115
- export async function notifyPhaseComplete(projectId, phase, options = {}) {
116
- await notify({
117
- event: 'phase-complete',
118
- projectId,
119
- phase,
120
- message: `Completed phase: ${phase}`,
121
- }, options);
122
- }
123
- /**
124
- * Notify gate pending approval
125
- */
126
- export async function notifyGatePending(projectId, phase, gateName, options = {}) {
127
- await notify({
128
- event: 'gate-pending',
129
- projectId,
130
- phase,
131
- message: `Gate pending: ${gateName}`,
132
- details: `Run: porch approve ${projectId} ${gateName}`,
133
- }, options);
134
- }
135
- /**
136
- * Notify gate approved
137
- */
138
- export async function notifyGateApproved(projectId, gateName, options = {}) {
139
- await notify({
140
- event: 'gate-approved',
141
- projectId,
142
- message: `Gate approved: ${gateName}`,
143
- }, options);
144
- }
145
- /**
146
- * Notify consultation start
147
- */
148
- export async function notifyConsultationStart(projectId, phase, models, options = {}) {
149
- await notify({
150
- event: 'consultation-start',
151
- projectId,
152
- phase,
153
- message: `Starting ${models.length}-way consultation`,
154
- details: `Models: ${models.join(', ')}`,
155
- }, options);
156
- }
157
- /**
158
- * Notify consultation complete
159
- */
160
- export async function notifyConsultationComplete(projectId, phase, feedback, allApproved, options = {}) {
161
- const approveCount = feedback.filter((f) => f.verdict === 'APPROVE').length;
162
- const changeCount = feedback.filter((f) => f.verdict === 'REQUEST_CHANGES').length;
163
- const message = allApproved
164
- ? `Consultation complete: All ${approveCount} models approved`
165
- : `Consultation complete: ${approveCount} approved, ${changeCount} requested changes`;
166
- await notify({
167
- event: 'consultation-complete',
168
- projectId,
169
- phase,
170
- message,
171
- details: feedback.map((f) => `${f.model}: ${f.verdict}`).join(', '),
172
- }, options);
173
- }
174
- /**
175
- * Notify check failed
176
- */
177
- export async function notifyCheckFailed(projectId, phase, checkName, error, options = {}) {
178
- await notify({
179
- event: 'check-failed',
180
- projectId,
181
- phase,
182
- message: `Check failed: ${checkName}`,
183
- details: error,
184
- }, options);
185
- }
186
- /**
187
- * Notify blocked
188
- */
189
- export async function notifyBlocked(projectId, reason, options = {}) {
190
- await notify({
191
- event: 'blocked',
192
- projectId,
193
- message: `Blocked: ${reason}`,
194
- }, options);
195
- }
196
- /**
197
- * Notify error
198
- */
199
- export async function notifyError(projectId, error, options = {}) {
200
- await notify({
201
- event: 'error',
202
- projectId,
203
- message: `Error: ${error}`,
204
- }, options);
205
- }
206
- /**
207
- * Create a notification context for a project
208
- * Returns bound notification functions
209
- */
210
- export function createNotifier(projectId, options = {}) {
211
- return {
212
- phaseStart: (phase) => notifyPhaseStart(projectId, phase, options),
213
- phaseComplete: (phase) => notifyPhaseComplete(projectId, phase, options),
214
- gatePending: (phase, gateName) => notifyGatePending(projectId, phase, gateName, options),
215
- gateApproved: (gateName) => notifyGateApproved(projectId, gateName, options),
216
- consultationStart: (phase, models) => notifyConsultationStart(projectId, phase, models, options),
217
- consultationComplete: (phase, feedback, allApproved) => notifyConsultationComplete(projectId, phase, feedback, allApproved, options),
218
- checkFailed: (phase, checkName, error) => notifyCheckFailed(projectId, phase, checkName, error, options),
219
- blocked: (reason) => notifyBlocked(projectId, reason, options),
220
- error: (error) => notifyError(projectId, error, options),
221
- };
222
- }
223
- //# sourceMappingURL=notifications.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"notifications.js","sourceRoot":"","sources":["../../../src/commands/porch/notifications.ts"],"names":[],"mappings":"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"}
@@ -1,38 +0,0 @@
1
- /**
2
- * Plan Parser
3
- *
4
- * Extracts implementation phases from plan.md files.
5
- * Supports the standard codev plan format with `### Phase N: <title>` headers.
6
- */
7
- import type { PlanPhase } from './types.js';
8
- /**
9
- * Extract phases from a plan markdown file
10
- *
11
- * Looks for either:
12
- * - `## Implementation Phases` or `## Phases` section
13
- * - `### Phase N: <title>` headers within that section
14
- *
15
- * Falls back to treating entire implementation as single phase if no structured phases found.
16
- */
17
- export declare function extractPhasesFromPlan(planContent: string): PlanPhase[];
18
- /**
19
- * Extract phases from a plan file path
20
- */
21
- export declare function extractPhasesFromPlanFile(planFilePath: string): PlanPhase[];
22
- /**
23
- * Find the plan file for a project
24
- */
25
- export declare function findPlanFile(projectRoot: string, projectId: string, projectName?: string): string | null;
26
- /**
27
- * Get the current phase ID based on completed phases
28
- */
29
- export declare function getCurrentPhase(phases: PlanPhase[], completedPhases: Set<string>): PlanPhase | null;
30
- /**
31
- * Get the next phase after a given phase
32
- */
33
- export declare function getNextPhase(phases: PlanPhase[], currentPhaseId: string): PlanPhase | null;
34
- /**
35
- * Check if all phases are complete
36
- */
37
- export declare function allPhasesComplete(phases: PlanPhase[], completedPhases: Set<string>): boolean;
38
- //# sourceMappingURL=plan-parser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-parser.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/plan-parser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,CAwEtE;AAkCD;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,EAAE,CAO3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BxG;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,SAAS,GAAG,IAAI,CAOlB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,SAAS,EAAE,EACnB,cAAc,EAAE,MAAM,GACrB,SAAS,GAAG,IAAI,CAMlB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,GAC3B,OAAO,CAET"}
@@ -1,166 +0,0 @@
1
- /**
2
- * Plan Parser
3
- *
4
- * Extracts implementation phases from plan.md files.
5
- * Supports the standard codev plan format with `### Phase N: <title>` headers.
6
- */
7
- import * as fs from 'node:fs';
8
- /**
9
- * Extract phases from a plan markdown file
10
- *
11
- * Looks for either:
12
- * - `## Implementation Phases` or `## Phases` section
13
- * - `### Phase N: <title>` headers within that section
14
- *
15
- * Falls back to treating entire implementation as single phase if no structured phases found.
16
- */
17
- export function extractPhasesFromPlan(planContent) {
18
- const phases = [];
19
- // Look for the phases section
20
- const phaseSectionMatch = planContent.match(/##\s*(?:Implementation\s+)?Phases\s*\n([\s\S]*?)(?=\n##\s|$)/i);
21
- if (!phaseSectionMatch) {
22
- // No phases section found, return single default phase
23
- return [{
24
- id: 'phase_1',
25
- title: 'Implementation',
26
- description: 'Single implementation phase (no structured phases in plan)',
27
- }];
28
- }
29
- const phasesSection = phaseSectionMatch[1];
30
- // Extract individual phases with ### Phase N: <title> format
31
- const phaseRegex = /###\s*Phase\s+(\d+):\s*([^\n]+)\n([\s\S]*?)(?=\n###\s*Phase|\n##\s|$)/gi;
32
- let match;
33
- while ((match = phaseRegex.exec(phasesSection)) !== null) {
34
- const [, number, title, content] = match;
35
- const phaseId = `phase_${number}`;
36
- // Extract description from content (bullet points or first paragraph)
37
- const description = extractPhaseDescription(content);
38
- phases.push({
39
- id: phaseId,
40
- title: title.trim(),
41
- description,
42
- });
43
- }
44
- // If no phases found with numbered format, try alternative format
45
- if (phases.length === 0) {
46
- // Try format: ### <title> (without Phase N prefix)
47
- const altRegex = /###\s*([^\n]+)\n([\s\S]*?)(?=\n###|\n##\s|$)/gi;
48
- let phaseNum = 1;
49
- while ((match = altRegex.exec(phasesSection)) !== null) {
50
- const [, title, content] = match;
51
- // Skip if this looks like a non-phase section
52
- if (title.toLowerCase().includes('dependencies') ||
53
- title.toLowerCase().includes('acceptance') ||
54
- title.toLowerCase().includes('test')) {
55
- continue;
56
- }
57
- phases.push({
58
- id: `phase_${phaseNum}`,
59
- title: title.trim(),
60
- description: extractPhaseDescription(content),
61
- });
62
- phaseNum++;
63
- }
64
- }
65
- // If still no phases, return single default
66
- if (phases.length === 0) {
67
- return [{
68
- id: 'phase_1',
69
- title: 'Implementation',
70
- description: 'Single implementation phase (could not parse plan phases)',
71
- }];
72
- }
73
- return phases;
74
- }
75
- /**
76
- * Extract a description from phase content
77
- * Takes the first few bullet points or the first paragraph
78
- */
79
- function extractPhaseDescription(content) {
80
- const lines = content.trim().split('\n');
81
- const descLines = [];
82
- for (const line of lines) {
83
- const trimmed = line.trim();
84
- // Stop at subheadings
85
- if (trimmed.startsWith('###') || trimmed.startsWith('####')) {
86
- break;
87
- }
88
- // Collect bullet points
89
- if (trimmed.startsWith('- ') || trimmed.startsWith('* ')) {
90
- const bulletContent = trimmed.slice(2).trim();
91
- // Skip long bullets
92
- if (bulletContent.length < 100) {
93
- descLines.push(bulletContent);
94
- }
95
- }
96
- // Limit to first 5 items
97
- if (descLines.length >= 5)
98
- break;
99
- }
100
- return descLines.join(', ');
101
- }
102
- /**
103
- * Extract phases from a plan file path
104
- */
105
- export function extractPhasesFromPlanFile(planFilePath) {
106
- if (!fs.existsSync(planFilePath)) {
107
- throw new Error(`Plan file not found: ${planFilePath}`);
108
- }
109
- const content = fs.readFileSync(planFilePath, 'utf-8');
110
- return extractPhasesFromPlan(content);
111
- }
112
- /**
113
- * Find the plan file for a project
114
- */
115
- export function findPlanFile(projectRoot, projectId, projectName) {
116
- const possiblePaths = [
117
- // New structure: codev/projects/<id>-<name>/plan.md
118
- `${projectRoot}/codev/projects/${projectId}-${projectName}/plan.md`,
119
- `${projectRoot}/codev/projects/${projectId}/plan.md`,
120
- // Legacy structure: codev/plans/<id>-<name>.md
121
- `${projectRoot}/codev/plans/${projectId}-${projectName}.md`,
122
- ];
123
- // Also try to find by ID prefix in legacy structure
124
- const plansDir = `${projectRoot}/codev/plans`;
125
- if (fs.existsSync(plansDir)) {
126
- const files = fs.readdirSync(plansDir);
127
- const match = files.find(f => f.startsWith(`${projectId}-`) && f.endsWith('.md'));
128
- if (match) {
129
- possiblePaths.push(`${plansDir}/${match}`);
130
- }
131
- }
132
- for (const planPath of possiblePaths) {
133
- if (fs.existsSync(planPath)) {
134
- return planPath;
135
- }
136
- }
137
- return null;
138
- }
139
- /**
140
- * Get the current phase ID based on completed phases
141
- */
142
- export function getCurrentPhase(phases, completedPhases) {
143
- for (const phase of phases) {
144
- if (!completedPhases.has(phase.id)) {
145
- return phase;
146
- }
147
- }
148
- return null; // All phases complete
149
- }
150
- /**
151
- * Get the next phase after a given phase
152
- */
153
- export function getNextPhase(phases, currentPhaseId) {
154
- const currentIndex = phases.findIndex(p => p.id === currentPhaseId);
155
- if (currentIndex >= 0 && currentIndex < phases.length - 1) {
156
- return phases[currentIndex + 1];
157
- }
158
- return null;
159
- }
160
- /**
161
- * Check if all phases are complete
162
- */
163
- export function allPhasesComplete(phases, completedPhases) {
164
- return phases.every(p => completedPhases.has(p.id));
165
- }
166
- //# sourceMappingURL=plan-parser.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"plan-parser.js","sourceRoot":"","sources":["../../../src/commands/porch/plan-parser.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- /**
2
- * Protocol Loader
3
- *
4
- * Loads and validates protocol definitions from JSON files.
5
- */
6
- import type { Protocol, Phase } from './types.js';
7
- /**
8
- * Find protocol JSON file
9
- */
10
- export declare function findProtocolFile(projectRoot: string, protocolName: string): string | null;
11
- /**
12
- * Load protocol from JSON file
13
- */
14
- export declare function loadProtocol(projectRoot: string, protocolName: string): Protocol | null;
15
- /**
16
- * Get all available protocols
17
- */
18
- export declare function listProtocols(projectRoot: string): string[];
19
- /**
20
- * Get default protocol (spider)
21
- */
22
- export declare function getDefaultProtocol(projectRoot: string): Protocol | null;
23
- /**
24
- * Validate a protocol has required phases
25
- */
26
- export declare function validateProtocol(protocol: Protocol): {
27
- valid: boolean;
28
- errors: string[];
29
- };
30
- /**
31
- * Get phase by ID
32
- */
33
- export declare function getPhase(protocol: Protocol, phaseId: string): Phase | null;
34
- /**
35
- * Get the next phase after a given phase
36
- */
37
- export declare function getNextPhase(protocol: Protocol, currentPhaseId: string): Phase | null;
38
- /**
39
- * Check if a phase is a terminal phase (no next phase)
40
- */
41
- export declare function isTerminalPhase(protocol: Protocol, phaseId: string): boolean;
42
- /**
43
- * Get phased phases (phases that run per plan phase)
44
- */
45
- export declare function getPhasedPhases(protocol: Protocol): Phase[];
46
- //# sourceMappingURL=protocol-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"protocol-loader.d.ts","sourceRoot":"","sources":["../../../src/commands/porch/protocol-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAyC,MAAM,YAAY,CAAC;AA8EzF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQzF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAevF;AAuID;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAEvE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAmCzF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI,CAMrF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAG5E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,KAAK,EAAE,CAE3D"}