@agent-spaces/server 0.3.63 → 0.3.65

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 (334) hide show
  1. package/dist/adapters/claude-code-runtime/index.js +68 -2
  2. package/dist/adapters/claude-code-runtime/message-format.js +27 -1
  3. package/dist/adapters/claude-code-runtime/sdk-config.js +12 -0
  4. package/dist/adapters/git.js +168 -57
  5. package/dist/agents/agent-designer.js +66 -12
  6. package/dist/agents/agent-message-parts.js +1 -1
  7. package/dist/agents/commit-agent.js +4 -2
  8. package/dist/agents/issue-task-controller.js +7 -3
  9. package/dist/app.js +56 -69
  10. package/dist/package.json +1 -1
  11. package/dist/routes/agent-commands.js +72 -0
  12. package/dist/routes/agent-sse.js +7 -0
  13. package/dist/routes/agent.js +18 -1
  14. package/dist/routes/database.js +346 -0
  15. package/dist/routes/git.js +198 -267
  16. package/dist/routes/kanban.js +39 -0
  17. package/dist/routes/robot-account.js +68 -0
  18. package/dist/services/agent-commands.js +168 -0
  19. package/dist/services/agent.js +36 -2
  20. package/dist/services/builtin-tools/command-tools.js +117 -0
  21. package/dist/services/builtin-tools/database-tools.js +578 -0
  22. package/dist/services/builtin-tools/index.js +5 -0
  23. package/dist/services/builtin-tools/input-helpers.js +26 -0
  24. package/dist/services/builtin-tools/issue-tools.js +209 -0
  25. package/dist/services/builtin-tools/kanban-tools.js +281 -0
  26. package/dist/services/database-vector.js +244 -0
  27. package/dist/services/git-operation-log.js +40 -0
  28. package/dist/services/global-wechat-qr.js +72 -0
  29. package/dist/services/hook-engine.js +175 -17
  30. package/dist/services/kanban.js +50 -0
  31. package/dist/services/notification-hub/bot-agent.js +3 -1
  32. package/dist/services/notification-hub/service.js +12 -2
  33. package/dist/services/robot-account.js +34 -0
  34. package/dist/services/workspace.js +2 -0
  35. package/dist/storage/database-store.js +365 -0
  36. package/dist/storage/kanban-store.js +142 -0
  37. package/dist/storage/robot-account-store.js +39 -0
  38. package/dist/web/404.html +1 -1
  39. package/dist/web/__next.__PAGE__.txt +4 -4
  40. package/dist/web/__next._full.txt +24 -31
  41. package/dist/web/__next._head.txt +4 -4
  42. package/dist/web/__next._index.txt +14 -14
  43. package/dist/web/__next._tree.txt +3 -8
  44. package/dist/web/_next/static/chunks/0-a.-hl3wv99k.js +1 -0
  45. package/dist/web/_next/static/chunks/{0ctg5qmw7uu.1.js → 0-pi.67w.ymsr.js} +3 -3
  46. package/dist/web/_next/static/chunks/0-v_p6j5u3_9l.js +1 -0
  47. package/dist/web/_next/static/chunks/0.-x29t-8gk0r.js +1 -0
  48. package/dist/web/_next/static/chunks/0.6b64sy0g5.3.js +3 -0
  49. package/dist/web/_next/static/chunks/0.l5e8~r7_0~p.js +1 -0
  50. package/dist/web/_next/static/chunks/00-syqzi-6zxr.js +1 -0
  51. package/dist/web/_next/static/chunks/{13~y-b.b9rrw4.js → 01~quun6sefgl.js} +1 -1
  52. package/dist/web/_next/static/chunks/02802taez976w.js +67 -0
  53. package/dist/web/_next/static/chunks/02j4sr9psucf-.js +1 -0
  54. package/dist/web/_next/static/chunks/033.awk90g6eh.js +1 -0
  55. package/dist/web/_next/static/chunks/06.kdsa9rr2h1.js +1 -0
  56. package/dist/web/_next/static/chunks/{0-oog4zg4_m~m.css → 062f9zqctzg.b.css} +0 -3
  57. package/dist/web/_next/static/chunks/06si8l0doqe8p.js +1 -0
  58. package/dist/web/_next/static/chunks/08ugbvzr20drp.js +2 -0
  59. package/dist/web/_next/static/chunks/{0kof5qdg8c2-k.js → 08x85faoz58i7.js} +37 -37
  60. package/dist/web/_next/static/chunks/0_cqojbge48kq.js +5 -0
  61. package/dist/web/_next/static/chunks/0_mvduwjsm35w.js +1 -0
  62. package/dist/web/_next/static/chunks/0d6~~lv0-6kex.js +3 -0
  63. package/dist/web/_next/static/chunks/{0ogpc3f3keopc.js → 0db14450oqzhg.js} +2 -2
  64. package/dist/web/_next/static/chunks/0fttswpzu69qx.js +1 -0
  65. package/dist/web/_next/static/chunks/0gdwop9cnpmtu.js +1 -0
  66. package/dist/web/_next/static/chunks/0ghx3j_.-gdyd.js +1 -0
  67. package/dist/web/_next/static/chunks/0j-l7l_k9jt45.js +1 -0
  68. package/dist/web/_next/static/chunks/0k4zdm72k_bfy.js +1 -0
  69. package/dist/web/_next/static/chunks/0kbvoxla7f751.js +1 -0
  70. package/dist/web/_next/static/chunks/{0aa6bcdmtpekn.js → 0l2w0qz1ea7ql.js} +2 -2
  71. package/dist/web/_next/static/chunks/0p3h-h3zj5ujg.js +30 -0
  72. package/dist/web/_next/static/chunks/0paaat8y96ayc.js +7 -0
  73. package/dist/web/_next/static/chunks/0pm-un~-sy3rl.js +1 -0
  74. package/dist/web/_next/static/chunks/0pq318f8xgafg.js +1 -0
  75. package/dist/web/_next/static/chunks/0t6s8of0qr6nc.js +1 -0
  76. package/dist/web/_next/static/chunks/0u6h-hqc_i52e.js +1 -0
  77. package/dist/web/_next/static/chunks/0uxzi~9b~k4mn.js +31 -0
  78. package/dist/web/_next/static/chunks/{002-dxhags4dj.js → 0v6hte2z-32ca.js} +2 -2
  79. package/dist/web/_next/static/chunks/{014x2qbuiszni.js → 0vis~lx0nxgn-.js} +3 -3
  80. package/dist/web/_next/static/chunks/{0y09i51u6ixq5.js → 0w7.tb29958zj.js} +1 -1
  81. package/dist/web/_next/static/chunks/0xbaakj0dfc0..js +1 -0
  82. package/dist/web/_next/static/chunks/0yd.m1afqg.2t.js +3 -0
  83. package/dist/web/_next/static/chunks/0yhbr8hl09b-5.js +1 -0
  84. package/dist/web/_next/static/chunks/0zncg76rgtbm-.js +1 -0
  85. package/dist/web/_next/static/chunks/0z~vqzbm_q371.js +1 -0
  86. package/dist/web/_next/static/chunks/0~~_ltu6dx_ch.js +1 -0
  87. package/dist/web/_next/static/chunks/{02c22g~xd-y30.js → 11cchuwoupmbf.js} +2 -2
  88. package/dist/web/_next/static/chunks/12jm4gwmvq-0q.js +90 -0
  89. package/dist/web/_next/static/chunks/12oxcgyhpaxw~.js +1 -0
  90. package/dist/web/_next/static/chunks/1452eibz62gs6.css +1 -0
  91. package/dist/web/_next/static/chunks/16zlreiems5cn.js +1 -0
  92. package/dist/web/_next/static/chunks/18awqjk9-o5m0.js +1 -0
  93. package/dist/web/_next/static/chunks/18c7g84y01mj0.js +1 -0
  94. package/dist/web/_next/static/chunks/{turbopack-0ndm2zc_pdptk.js → turbopack-11qjwlynmfc-n.js} +1 -1
  95. package/dist/web/_not-found/__next._full.txt +31 -30
  96. package/dist/web/_not-found/__next._head.txt +4 -4
  97. package/dist/web/_not-found/__next._index.txt +14 -14
  98. package/dist/web/_not-found/__next._not-found.__PAGE__.txt +2 -2
  99. package/dist/web/_not-found/__next._not-found.txt +3 -3
  100. package/dist/web/_not-found/__next._tree.txt +3 -3
  101. package/dist/web/_not-found.html +1 -1
  102. package/dist/web/_not-found.txt +31 -30
  103. package/dist/web/index.html +1 -1
  104. package/dist/web/index.txt +24 -31
  105. package/dist/web/login/__next._full.txt +32 -36
  106. package/dist/web/login/__next._head.txt +4 -4
  107. package/dist/web/login/__next._index.txt +14 -14
  108. package/dist/web/login/__next._tree.txt +3 -8
  109. package/dist/web/login/__next.login.__PAGE__.txt +4 -4
  110. package/dist/web/login/__next.login.txt +3 -3
  111. package/dist/web/login.html +1 -1
  112. package/dist/web/login.txt +32 -36
  113. package/dist/web/settings/__next._full.txt +34 -38
  114. package/dist/web/settings/__next._head.txt +4 -4
  115. package/dist/web/settings/__next._index.txt +14 -14
  116. package/dist/web/settings/__next._tree.txt +3 -8
  117. package/dist/web/settings/__next.settings.__PAGE__.txt +4 -4
  118. package/dist/web/settings/__next.settings.txt +5 -5
  119. package/dist/web/settings/agents/__next._full.txt +27 -32
  120. package/dist/web/settings/agents/__next._head.txt +4 -4
  121. package/dist/web/settings/agents/__next._index.txt +14 -14
  122. package/dist/web/settings/agents/__next._tree.txt +3 -8
  123. package/dist/web/settings/agents/__next.settings.agents.__PAGE__.txt +4 -4
  124. package/dist/web/settings/agents/__next.settings.agents.txt +3 -3
  125. package/dist/web/settings/agents/__next.settings.txt +5 -5
  126. package/dist/web/settings/agents.html +1 -1
  127. package/dist/web/settings/agents.txt +27 -32
  128. package/dist/web/settings/mcps/__next._full.txt +27 -32
  129. package/dist/web/settings/mcps/__next._head.txt +4 -4
  130. package/dist/web/settings/mcps/__next._index.txt +14 -14
  131. package/dist/web/settings/mcps/__next._tree.txt +3 -8
  132. package/dist/web/settings/mcps/__next.settings.mcps.__PAGE__.txt +4 -4
  133. package/dist/web/settings/mcps/__next.settings.mcps.txt +3 -3
  134. package/dist/web/settings/mcps/__next.settings.txt +5 -5
  135. package/dist/web/settings/mcps.html +1 -1
  136. package/dist/web/settings/mcps.txt +27 -32
  137. package/dist/web/settings/models/__next._full.txt +27 -32
  138. package/dist/web/settings/models/__next._head.txt +4 -4
  139. package/dist/web/settings/models/__next._index.txt +14 -14
  140. package/dist/web/settings/models/__next._tree.txt +3 -8
  141. package/dist/web/settings/models/__next.settings.models.__PAGE__.txt +4 -4
  142. package/dist/web/settings/models/__next.settings.models.txt +3 -3
  143. package/dist/web/settings/models/__next.settings.txt +5 -5
  144. package/dist/web/settings/models.html +1 -1
  145. package/dist/web/settings/models.txt +27 -32
  146. package/dist/web/settings/output-styles/__next._full.txt +27 -32
  147. package/dist/web/settings/output-styles/__next._head.txt +4 -4
  148. package/dist/web/settings/output-styles/__next._index.txt +14 -14
  149. package/dist/web/settings/output-styles/__next._tree.txt +3 -8
  150. package/dist/web/settings/output-styles/__next.settings.output-styles.__PAGE__.txt +4 -4
  151. package/dist/web/settings/output-styles/__next.settings.output-styles.txt +3 -3
  152. package/dist/web/settings/output-styles/__next.settings.txt +5 -5
  153. package/dist/web/settings/output-styles.html +1 -1
  154. package/dist/web/settings/output-styles.txt +27 -32
  155. package/dist/web/settings/prompts/__next._full.txt +27 -32
  156. package/dist/web/settings/prompts/__next._head.txt +4 -4
  157. package/dist/web/settings/prompts/__next._index.txt +14 -14
  158. package/dist/web/settings/prompts/__next._tree.txt +3 -8
  159. package/dist/web/settings/prompts/__next.settings.prompts.__PAGE__.txt +4 -4
  160. package/dist/web/settings/prompts/__next.settings.prompts.txt +3 -3
  161. package/dist/web/settings/prompts/__next.settings.txt +5 -5
  162. package/dist/web/settings/prompts.html +1 -1
  163. package/dist/web/settings/prompts.txt +27 -32
  164. package/dist/web/settings/providers/__next._full.txt +27 -32
  165. package/dist/web/settings/providers/__next._head.txt +4 -4
  166. package/dist/web/settings/providers/__next._index.txt +14 -14
  167. package/dist/web/settings/providers/__next._tree.txt +3 -8
  168. package/dist/web/settings/providers/__next.settings.providers.__PAGE__.txt +4 -4
  169. package/dist/web/settings/providers/__next.settings.providers.txt +3 -3
  170. package/dist/web/settings/providers/__next.settings.txt +5 -5
  171. package/dist/web/settings/providers.html +1 -1
  172. package/dist/web/settings/providers.txt +27 -32
  173. package/dist/web/settings/skills/__next._full.txt +27 -32
  174. package/dist/web/settings/skills/__next._head.txt +4 -4
  175. package/dist/web/settings/skills/__next._index.txt +14 -14
  176. package/dist/web/settings/skills/__next._tree.txt +3 -8
  177. package/dist/web/settings/skills/__next.settings.skills.__PAGE__.txt +4 -4
  178. package/dist/web/settings/skills/__next.settings.skills.txt +3 -3
  179. package/dist/web/settings/skills/__next.settings.txt +5 -5
  180. package/dist/web/settings/skills.html +1 -1
  181. package/dist/web/settings/skills.txt +27 -32
  182. package/dist/web/settings/tools/__next._full.txt +38 -0
  183. package/dist/web/settings/tools/__next._head.txt +6 -0
  184. package/dist/web/settings/tools/__next._index.txt +15 -0
  185. package/dist/web/settings/tools/__next._tree.txt +3 -0
  186. package/dist/web/settings/tools/__next.settings.tools.__PAGE__.txt +9 -0
  187. package/dist/web/settings/tools/__next.settings.tools.txt +5 -0
  188. package/dist/web/settings/tools/__next.settings.txt +7 -0
  189. package/dist/web/settings/tools.html +1 -0
  190. package/dist/web/settings/tools.txt +38 -0
  191. package/dist/web/settings.html +1 -1
  192. package/dist/web/settings.txt +34 -38
  193. package/dist/web/workflows/__next._full.txt +32 -38
  194. package/dist/web/workflows/__next._head.txt +4 -4
  195. package/dist/web/workflows/__next._index.txt +14 -14
  196. package/dist/web/workflows/__next._tree.txt +3 -8
  197. package/dist/web/workflows/__next.workflows.__PAGE__.txt +4 -4
  198. package/dist/web/workflows/__next.workflows.txt +3 -3
  199. package/dist/web/workflows.html +1 -1
  200. package/dist/web/workflows.txt +32 -38
  201. package/dist/web/workspace/_/__next._full.txt +31 -36
  202. package/dist/web/workspace/_/__next._head.txt +4 -4
  203. package/dist/web/workspace/_/__next._index.txt +14 -14
  204. package/dist/web/workspace/_/__next._tree.txt +4 -8
  205. package/dist/web/workspace/_/__next.workspace.$d$id.__PAGE__.txt +3 -3
  206. package/dist/web/workspace/_/__next.workspace.$d$id.txt +3 -3
  207. package/dist/web/workspace/_/__next.workspace.txt +3 -3
  208. package/dist/web/workspace/_.html +1 -1
  209. package/dist/web/workspace/_.txt +31 -36
  210. package/dist/web/workspaces/__next._full.txt +30 -37
  211. package/dist/web/workspaces/__next._head.txt +4 -4
  212. package/dist/web/workspaces/__next._index.txt +14 -14
  213. package/dist/web/workspaces/__next._tree.txt +3 -8
  214. package/dist/web/workspaces/__next.workspaces.__PAGE__.txt +4 -4
  215. package/dist/web/workspaces/__next.workspaces.txt +3 -3
  216. package/dist/web/workspaces.html +1 -1
  217. package/dist/web/workspaces.txt +30 -37
  218. package/dist/ws/agent-prompt.js +45 -8
  219. package/dist/ws/agent-runner.js +88 -10
  220. package/package.json +1 -1
  221. package/dist/web/_next/static/chunks/0-1bfvfwifh-m.js +0 -1
  222. package/dist/web/_next/static/chunks/02mf61htij8g0.js +0 -31
  223. package/dist/web/_next/static/chunks/046me66nilkff.js +0 -1
  224. package/dist/web/_next/static/chunks/04v-pqqs-2lvp.css +0 -1
  225. package/dist/web/_next/static/chunks/06w~.izyfylap.js +0 -1
  226. package/dist/web/_next/static/chunks/09t62a89~jesc.js +0 -3
  227. package/dist/web/_next/static/chunks/09y_3krccdd~u.js +0 -1
  228. package/dist/web/_next/static/chunks/0_e~hmntdfop9.js +0 -1
  229. package/dist/web/_next/static/chunks/0_udc.6.tueey.js +0 -1
  230. package/dist/web/_next/static/chunks/0cke33d38fnby.js +0 -90
  231. package/dist/web/_next/static/chunks/0cyq~8xb~r5fc.js +0 -1
  232. package/dist/web/_next/static/chunks/0ewceguykiut5.js +0 -1
  233. package/dist/web/_next/static/chunks/0fxa1edqr7dve.js +0 -1
  234. package/dist/web/_next/static/chunks/0hra80eyuu37u.js +0 -1
  235. package/dist/web/_next/static/chunks/0ie7y4k2ncvnn.js +0 -1
  236. package/dist/web/_next/static/chunks/0igc~uli58ncw.js +0 -2
  237. package/dist/web/_next/static/chunks/0msb2mi3hiu5_.js +0 -67
  238. package/dist/web/_next/static/chunks/0p1n8bvfnpl41.js +0 -1
  239. package/dist/web/_next/static/chunks/0ppr271hz0xoq.js +0 -1
  240. package/dist/web/_next/static/chunks/0s_dva~eh2yhi.js +0 -3
  241. package/dist/web/_next/static/chunks/0typj55ox8d5i.js +0 -1
  242. package/dist/web/_next/static/chunks/0w2p4ldi2aymp.js +0 -1
  243. package/dist/web/_next/static/chunks/0zc0xgp5ourcn.js +0 -1
  244. package/dist/web/_next/static/chunks/0zmhdridea1s5.js +0 -90
  245. package/dist/web/_next/static/chunks/10.alq.6stmld.js +0 -1
  246. package/dist/web/_next/static/chunks/11b3zgk1etlkw.js +0 -7
  247. package/dist/web/_next/static/chunks/11qp8r5dotf7d.js +0 -1
  248. package/dist/web/_next/static/chunks/12mxlicp247c8.js +0 -1
  249. package/dist/web/_next/static/chunks/135w27dd8c19s.js +0 -5
  250. package/dist/web/_next/static/chunks/176dc-dtokxxi.js +0 -16
  251. package/dist/web/_next/static/chunks/17g-0pqre.anw.js +0 -1
  252. package/dist/web/_next/static/media/0a7740363b4d4863-s.1110aazvokzp..woff2 +0 -0
  253. package/dist/web/_next/static/media/0da9c7f357bd9d4d-s.0ek5sshv8wk3m.woff2 +0 -0
  254. package/dist/web/_next/static/media/1b99372b3eaef0c8-s.p.0gx2haw2tmll8.woff2 +0 -0
  255. package/dist/web/_next/static/media/41e95f694c5c4549-s.0r1jrq7neqdsq.woff2 +0 -0
  256. package/dist/web/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2 +0 -0
  257. package/dist/web/_next/static/media/5f9d24ebef5d5292-s.0esuu2f5si~v8.woff2 +0 -0
  258. package/dist/web/_next/static/media/6c55a692938ebbbc-s.0g6rbszwfgn9y.woff2 +0 -0
  259. package/dist/web/_next/static/media/8e6fa89aa22d24ec-s.p.0uvzar8hswo3p.woff2 +0 -0
  260. package/dist/web/_next/static/media/a218039a3287bcfd-s.p.17-1enzs_j91b.woff2 +0 -0
  261. package/dist/web/_next/static/media/b2ea385cb5ae8625-s.0kjod.kaq1k69.woff2 +0 -0
  262. package/dist/web/_next/static/media/bdc7e24a509eb931-s.0apt5mko2.qn3.woff2 +0 -0
  263. package/dist/web/_next/static/media/c3cb240f9c892514-s.163v2i5cux7-c.woff2 +0 -0
  264. package/dist/web/_next/static/media/e2334d715941921e-s.p.12skym0rqknxy.woff2 +0 -0
  265. package/public/output-styles/carmack-mode.md +0 -381
  266. package/public/output-styles/codex-rigor-mode.md +0 -114
  267. package/public/output-styles/dhh-mode.md +0 -265
  268. package/public/output-styles/evan-you-mode.md +0 -539
  269. package/public/output-styles/index.json +0 -37
  270. package/public/output-styles/jobs-mode.md +0 -369
  271. package/public/output-styles/linus-mode.md +0 -135
  272. package/public/output-styles/uncle-bob-mode.md +0 -221
  273. package/public/prompt/andrej-karpathy-skills.md +0 -65
  274. package/public/prompt/claude-token-efficient-coding.md +0 -35
  275. package/public/prompt/index.json +0 -12
  276. package/public/skills/index.json +0 -92
  277. package/public/skills/planning-with-files/planning-with-files-zh/SKILL.md +0 -243
  278. package/public/skills/planning-with-files/planning-with-files-zh/scripts/check-complete.ps1 +0 -44
  279. package/public/skills/planning-with-files/planning-with-files-zh/scripts/check-complete.sh +0 -46
  280. package/public/skills/planning-with-files/planning-with-files-zh/scripts/init-session.ps1 +0 -124
  281. package/public/skills/planning-with-files/planning-with-files-zh/scripts/init-session.sh +0 -124
  282. package/public/skills/planning-with-files/planning-with-files-zh/scripts/session-catchup.py +0 -438
  283. package/public/skills/planning-with-files/planning-with-files-zh/templates/findings.md +0 -29
  284. package/public/skills/planning-with-files/planning-with-files-zh/templates/progress.md +0 -40
  285. package/public/skills/planning-with-files/planning-with-files-zh/templates/task_plan.md +0 -58
  286. package/public/skills/superpowers/brainstorming/SKILL.md +0 -164
  287. package/public/skills/superpowers/brainstorming/scripts/frame-template.html +0 -214
  288. package/public/skills/superpowers/brainstorming/scripts/helper.js +0 -88
  289. package/public/skills/superpowers/brainstorming/scripts/server.cjs +0 -354
  290. package/public/skills/superpowers/brainstorming/scripts/start-server.sh +0 -148
  291. package/public/skills/superpowers/brainstorming/scripts/stop-server.sh +0 -56
  292. package/public/skills/superpowers/brainstorming/spec-document-reviewer-prompt.md +0 -49
  293. package/public/skills/superpowers/brainstorming/visual-companion.md +0 -287
  294. package/public/skills/superpowers/dispatching-parallel-agents/SKILL.md +0 -182
  295. package/public/skills/superpowers/executing-plans/SKILL.md +0 -70
  296. package/public/skills/superpowers/finishing-a-development-branch/SKILL.md +0 -251
  297. package/public/skills/superpowers/receiving-code-review/SKILL.md +0 -213
  298. package/public/skills/superpowers/requesting-code-review/SKILL.md +0 -103
  299. package/public/skills/superpowers/requesting-code-review/code-reviewer.md +0 -168
  300. package/public/skills/superpowers/subagent-driven-development/SKILL.md +0 -279
  301. package/public/skills/superpowers/subagent-driven-development/code-quality-reviewer-prompt.md +0 -25
  302. package/public/skills/superpowers/subagent-driven-development/implementer-prompt.md +0 -113
  303. package/public/skills/superpowers/subagent-driven-development/spec-reviewer-prompt.md +0 -61
  304. package/public/skills/superpowers/systematic-debugging/CREATION-LOG.md +0 -119
  305. package/public/skills/superpowers/systematic-debugging/SKILL.md +0 -296
  306. package/public/skills/superpowers/systematic-debugging/condition-based-waiting-example.ts +0 -158
  307. package/public/skills/superpowers/systematic-debugging/condition-based-waiting.md +0 -115
  308. package/public/skills/superpowers/systematic-debugging/defense-in-depth.md +0 -122
  309. package/public/skills/superpowers/systematic-debugging/find-polluter.sh +0 -63
  310. package/public/skills/superpowers/systematic-debugging/root-cause-tracing.md +0 -169
  311. package/public/skills/superpowers/systematic-debugging/test-academic.md +0 -14
  312. package/public/skills/superpowers/systematic-debugging/test-pressure-1.md +0 -58
  313. package/public/skills/superpowers/systematic-debugging/test-pressure-2.md +0 -68
  314. package/public/skills/superpowers/systematic-debugging/test-pressure-3.md +0 -69
  315. package/public/skills/superpowers/test-driven-development/SKILL.md +0 -371
  316. package/public/skills/superpowers/test-driven-development/testing-anti-patterns.md +0 -299
  317. package/public/skills/superpowers/using-git-worktrees/SKILL.md +0 -215
  318. package/public/skills/superpowers/using-superpowers/SKILL.md +0 -117
  319. package/public/skills/superpowers/using-superpowers/references/codex-tools.md +0 -59
  320. package/public/skills/superpowers/using-superpowers/references/copilot-tools.md +0 -42
  321. package/public/skills/superpowers/using-superpowers/references/gemini-tools.md +0 -51
  322. package/public/skills/superpowers/verification-before-completion/SKILL.md +0 -139
  323. package/public/skills/superpowers/writing-plans/SKILL.md +0 -152
  324. package/public/skills/superpowers/writing-plans/plan-document-reviewer-prompt.md +0 -49
  325. package/public/skills/superpowers/writing-skills/SKILL.md +0 -655
  326. package/public/skills/superpowers/writing-skills/anthropic-best-practices.md +0 -1150
  327. package/public/skills/superpowers/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
  328. package/public/skills/superpowers/writing-skills/graphviz-conventions.dot +0 -172
  329. package/public/skills/superpowers/writing-skills/persuasion-principles.md +0 -187
  330. package/public/skills/superpowers/writing-skills/render-graphs.js +0 -168
  331. package/public/skills/superpowers/writing-skills/testing-skills-with-subagents.md +0 -384
  332. /package/dist/web/_next/static/{OoXAsPtrUWjC1l898FSvI → x4-CsKe6qUQyFDWVtfvUg}/_buildManifest.js +0 -0
  333. /package/dist/web/_next/static/{OoXAsPtrUWjC1l898FSvI → x4-CsKe6qUQyFDWVtfvUg}/_clientMiddlewareManifest.js +0 -0
  334. /package/dist/web/_next/static/{OoXAsPtrUWjC1l898FSvI → x4-CsKe6qUQyFDWVtfvUg}/_ssgManifest.js +0 -0
@@ -0,0 +1,168 @@
1
+ import { existsSync, readdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { getDataDir, ensureDir } from '../storage/json-store.js';
4
+ function getAgentTemplatesDir() {
5
+ return join(getDataDir(), 'agent-templates');
6
+ }
7
+ function getCommandsDir(agentId) {
8
+ return join(getAgentTemplatesDir(), agentId, 'commands');
9
+ }
10
+ function getAgentName(agentId) {
11
+ const agentPath = join(getAgentTemplatesDir(), agentId, 'agent.json');
12
+ if (!existsSync(agentPath))
13
+ return undefined;
14
+ try {
15
+ const config = JSON.parse(readFileSync(agentPath, 'utf-8'));
16
+ return config.name || agentId;
17
+ }
18
+ catch {
19
+ return agentId;
20
+ }
21
+ }
22
+ function readCommandsFromDir(dir, agentId, group = '') {
23
+ if (!existsSync(dir))
24
+ return [];
25
+ const agentName = getAgentName(agentId);
26
+ return readdirSync(dir, { withFileTypes: true })
27
+ .flatMap((entry) => {
28
+ if (entry.isDirectory()) {
29
+ return readCommandsFromDir(join(dir, entry.name), agentId, entry.name);
30
+ }
31
+ if (!entry.name.endsWith('.md'))
32
+ return [];
33
+ return {
34
+ name: entry.name.replace(/\.md$/, ''),
35
+ content: readFileSync(join(dir, entry.name), 'utf-8'),
36
+ group,
37
+ agentId,
38
+ agentName,
39
+ };
40
+ });
41
+ }
42
+ export function listAgentsWithCommands() {
43
+ const templatesDir = getAgentTemplatesDir();
44
+ if (!existsSync(templatesDir))
45
+ return [];
46
+ return readdirSync(templatesDir, { withFileTypes: true })
47
+ .filter((entry) => entry.isDirectory())
48
+ .map((entry) => {
49
+ const commandsDir = getCommandsDir(entry.name);
50
+ const commands = readCommandsFromDir(commandsDir, entry.name);
51
+ return {
52
+ agentId: entry.name,
53
+ agentName: getAgentName(entry.name) || entry.name,
54
+ commandCount: commands.length,
55
+ };
56
+ });
57
+ }
58
+ export function listAllCommands() {
59
+ const templatesDir = getAgentTemplatesDir();
60
+ if (!existsSync(templatesDir))
61
+ return [];
62
+ return readdirSync(templatesDir, { withFileTypes: true })
63
+ .filter((entry) => entry.isDirectory())
64
+ .flatMap((entry) => {
65
+ const commandsDir = getCommandsDir(entry.name);
66
+ return readCommandsFromDir(commandsDir, entry.name);
67
+ });
68
+ }
69
+ export function listCommands(agentId) {
70
+ return readCommandsFromDir(getCommandsDir(agentId), agentId);
71
+ }
72
+ function resolveCommandPath(agentId, name, group) {
73
+ if (group) {
74
+ return join(getCommandsDir(agentId), group, `${name}.md`);
75
+ }
76
+ return join(getCommandsDir(agentId), `${name}.md`);
77
+ }
78
+ function findCommandPath(agentId, name, group) {
79
+ if (group) {
80
+ const p = join(getCommandsDir(agentId), group, `${name}.md`);
81
+ return existsSync(p) ? p : null;
82
+ }
83
+ // Search root first, then subdirectories
84
+ const root = join(getCommandsDir(agentId), `${name}.md`);
85
+ if (existsSync(root))
86
+ return root;
87
+ if (existsSync(getCommandsDir(agentId))) {
88
+ for (const entry of readdirSync(getCommandsDir(agentId), { withFileTypes: true })) {
89
+ if (entry.isDirectory()) {
90
+ const p = join(getCommandsDir(agentId), entry.name, `${name}.md`);
91
+ if (existsSync(p))
92
+ return p;
93
+ }
94
+ }
95
+ }
96
+ return null;
97
+ }
98
+ export function getCommand(agentId, name, group) {
99
+ const filePath = findCommandPath(agentId, name, group);
100
+ if (!filePath)
101
+ return null;
102
+ // Infer group from path
103
+ const commandsDir = getCommandsDir(agentId);
104
+ const relative = filePath.slice(commandsDir.length + 1);
105
+ const parts = relative.split('/');
106
+ const inferredGroup = parts.length > 1 ? parts.slice(0, -1).join('/') : '';
107
+ return {
108
+ name,
109
+ content: readFileSync(filePath, 'utf-8'),
110
+ group: inferredGroup,
111
+ agentId,
112
+ agentName: getAgentName(agentId),
113
+ };
114
+ }
115
+ export function createCommand(agentId, name, content, group) {
116
+ const dir = group ? join(getCommandsDir(agentId), group) : getCommandsDir(agentId);
117
+ ensureDir(dir);
118
+ const filePath = join(dir, `${name}.md`);
119
+ writeFileSync(filePath, content, 'utf-8');
120
+ return {
121
+ name,
122
+ content,
123
+ group: group || '',
124
+ agentId,
125
+ agentName: getAgentName(agentId),
126
+ };
127
+ }
128
+ export function updateCommand(agentId, name, content, group) {
129
+ const filePath = findCommandPath(agentId, name, group);
130
+ if (!filePath)
131
+ return null;
132
+ writeFileSync(filePath, content, 'utf-8');
133
+ const commandsDir = getCommandsDir(agentId);
134
+ const relative = filePath.slice(commandsDir.length + 1);
135
+ const parts = relative.split('/');
136
+ const inferredGroup = parts.length > 1 ? parts.slice(0, -1).join('/') : '';
137
+ return {
138
+ name,
139
+ content,
140
+ group: inferredGroup,
141
+ agentId,
142
+ agentName: getAgentName(agentId),
143
+ };
144
+ }
145
+ export function deleteCommand(agentId, name, group) {
146
+ const filePath = findCommandPath(agentId, name, group);
147
+ if (!filePath)
148
+ return false;
149
+ unlinkSync(filePath);
150
+ return true;
151
+ }
152
+ export function applyCommandToAgents(sourceAgentId, name, group, targetAgentIds) {
153
+ const src = getCommand(sourceAgentId, name, group);
154
+ if (!src)
155
+ return 0;
156
+ let applied = 0;
157
+ for (const targetId of targetAgentIds) {
158
+ if (targetId === sourceAgentId)
159
+ continue;
160
+ try {
161
+ createCommand(targetId, src.name, src.content);
162
+ applied++;
163
+ }
164
+ catch { /* skip */ }
165
+ }
166
+ return applied;
167
+ }
168
+ //# sourceMappingURL=agent-commands.js.map
@@ -3,7 +3,7 @@ import { copyFileSync, cpSync, existsSync, readFileSync, readdirSync, rmSync, st
3
3
  import { basename, extname, isAbsolute, join, normalize, relative } from 'node:path';
4
4
  import { BUILT_IN_AGENT_TOOLS } from '@agent-spaces/shared';
5
5
  import { listAgentSessions, getAgentSession, createAgentSession, updateAgentSession, deleteAgentSession, getAgentUsageDashboard, recordAgentUsage, } from '../storage/agent-store.js';
6
- import { getWorkspace } from '../storage/workspace-store.js';
6
+ import { getWorkspace, listWorkspaces } from '../storage/workspace-store.js';
7
7
  import { listIssues, updateIssue } from '../storage/issue-store.js';
8
8
  import { listChannels, updateChannel } from './channel.js';
9
9
  import { ensureDir, getDataDir } from '../storage/json-store.js';
@@ -13,6 +13,7 @@ export const AGENT_GENERATOR_PRESET_ID = 'agent-generator';
13
13
  export const AGENT_COMMIT_PRESET_ID = 'commit-agent';
14
14
  const VALID_RUNTIME_KINDS = ['open-agent-sdk', 'claude-code', 'codex', 'langchain'];
15
15
  const VALID_TOOL_NAMES = new Set(BUILT_IN_AGENT_TOOLS.map((tool) => tool.name));
16
+ const CLAUDE_BUILT_IN_DIRS = ['agents', 'commands'];
16
17
  const ANTHROPIC_BRIDGE_PROVIDERS = [
17
18
  'openai-responses-to-anthropic-messages',
18
19
  'openai-chat-completions-to-anthropic-messages',
@@ -338,6 +339,20 @@ export function getAgentConfigDir(workspaceId, preset) {
338
339
  ensureWorkspaceAgentCopy(preset, ws.agentspaceDir);
339
340
  return workspaceAgentDir;
340
341
  }
342
+ export function syncTemplatesToAllWorkspaces() {
343
+ const templates = listTemplates().filter((template) => existsSync(getGlobalAgentTemplateDir(template.id)));
344
+ const workspaces = listWorkspaces();
345
+ let agents = 0;
346
+ for (const workspace of workspaces) {
347
+ if (!workspace.agentspaceDir)
348
+ continue;
349
+ for (const template of templates) {
350
+ writeWorkspaceAgentCopy(template, workspace.agentspaceDir);
351
+ agents++;
352
+ }
353
+ }
354
+ return { workspaces: workspaces.length, agents };
355
+ }
341
356
  export function getAvailableSkillNames(agentDir, skills) {
342
357
  if (!agentDir || !Array.isArray(skills))
343
358
  return [];
@@ -541,10 +556,29 @@ function writeWorkspaceAgentCopy(preset, agentspaceDir) {
541
556
  function ensureWorkspaceAgentCopy(preset, agentspaceDir) {
542
557
  const workspaceAgentDir = getWorkspaceAgentDir(agentspaceDir, preset.id);
543
558
  const requiredFiles = ['agent.json', 'mcp.json'];
544
- if (requiredFiles.every((file) => existsSync(join(workspaceAgentDir, file))))
559
+ const sourceDir = getGlobalAgentTemplateDir(preset.id);
560
+ const missingRequiredFile = requiredFiles.some((file) => !existsSync(join(workspaceAgentDir, file)));
561
+ const missingBuiltInDir = CLAUDE_BUILT_IN_DIRS.some((dir) => {
562
+ const sourceBuiltInDir = join(sourceDir, dir);
563
+ const targetBuiltInDir = join(workspaceAgentDir, dir);
564
+ return existsSync(sourceBuiltInDir)
565
+ && statSync(sourceBuiltInDir).isDirectory()
566
+ && countFiles(sourceBuiltInDir) > countFiles(targetBuiltInDir);
567
+ });
568
+ if (!missingRequiredFile && !missingBuiltInDir)
545
569
  return;
546
570
  writeWorkspaceAgentCopy(preset, agentspaceDir);
547
571
  }
572
+ function countFiles(dir) {
573
+ if (!existsSync(dir) || !statSync(dir).isDirectory())
574
+ return 0;
575
+ return readdirSync(dir, { withFileTypes: true }).reduce((count, entry) => {
576
+ const fullPath = join(dir, entry.name);
577
+ if (entry.isDirectory())
578
+ return count + countFiles(fullPath);
579
+ return entry.isFile() ? count + 1 : count;
580
+ }, 0);
581
+ }
548
582
  export function readAgentTemplate(agentId) {
549
583
  const filePath = join(getGlobalAgentTemplateDir(agentId), 'agent.json');
550
584
  if (!existsSync(filePath)) {
@@ -0,0 +1,117 @@
1
+ import { BUILT_IN_AGENT_TOOLS } from '@agent-spaces/shared';
2
+ import * as commandService from '../command.js';
3
+ import * as commandProcessManager from '../command-process-manager.js';
4
+ const readTerminalOutputInputSchema = {
5
+ type: 'object',
6
+ properties: {
7
+ workspaceId: {
8
+ type: 'string',
9
+ description: 'Optional workspace ID. If omitted, the current workspace is used.',
10
+ },
11
+ sessionId: {
12
+ type: 'string',
13
+ description: 'Terminal session ID to read.',
14
+ },
15
+ offset: {
16
+ type: 'integer',
17
+ minimum: 0,
18
+ description: 'Number of newest lines to skip before reading. Defaults to 0.',
19
+ },
20
+ limit: {
21
+ type: 'integer',
22
+ minimum: 1,
23
+ maximum: 1000,
24
+ description: 'Maximum number of lines to read. Defaults to 100.',
25
+ },
26
+ },
27
+ required: ['sessionId'],
28
+ additionalProperties: false,
29
+ };
30
+ export function createCommandFunctionTools(workspaceId, allowedTools) {
31
+ const allowedToolNames = new Set(allowedTools ?? BUILT_IN_AGENT_TOOLS.map((tool) => tool.name));
32
+ const tools = [
33
+ {
34
+ name: 'ReadTerminalOutput',
35
+ description: 'Read paginated terminal output by terminal session ID. Defaults to the newest 100 lines.',
36
+ inputSchema: readTerminalOutputInputSchema,
37
+ annotations: { readOnly: true, openWorld: false },
38
+ execute: async (input) => {
39
+ const data = input;
40
+ if (data.workspaceId && data.workspaceId !== workspaceId)
41
+ throw new Error('workspaceId mismatch');
42
+ return commandProcessManager.readTerminalOutput(workspaceId, data.sessionId, {
43
+ offset: data.offset,
44
+ limit: data.limit,
45
+ });
46
+ },
47
+ },
48
+ {
49
+ name: 'ListQuickCommands',
50
+ description: 'List all quick commands for the workspace with running status.',
51
+ inputSchema: {
52
+ type: 'object',
53
+ properties: {
54
+ workspaceId: { type: 'string', description: 'The workspace ID' },
55
+ },
56
+ required: ['workspaceId'],
57
+ additionalProperties: false,
58
+ },
59
+ annotations: { readOnly: true, openWorld: false },
60
+ execute: async (input) => {
61
+ const data = input;
62
+ if (data.workspaceId !== workspaceId)
63
+ throw new Error('workspaceId mismatch');
64
+ const commands = commandService.listCommands(workspaceId);
65
+ const processes = commandProcessManager.getCommandProcesses(workspaceId);
66
+ const processMap = new Map(processes.map(p => [p.commandId, p]));
67
+ return commands.map(cmd => ({
68
+ ...cmd,
69
+ running: processMap.has(cmd.id) ? processMap.get(cmd.id).status : false,
70
+ }));
71
+ },
72
+ },
73
+ {
74
+ name: 'RunQuickCommand',
75
+ description: 'Run a quick command by ID. Returns sessionId.',
76
+ inputSchema: {
77
+ type: 'object',
78
+ properties: {
79
+ workspaceId: { type: 'string' },
80
+ commandId: { type: 'string' },
81
+ },
82
+ required: ['workspaceId', 'commandId'],
83
+ additionalProperties: false,
84
+ },
85
+ annotations: { destructive: false, openWorld: false },
86
+ execute: async (input) => {
87
+ const data = input;
88
+ if (data.workspaceId !== workspaceId)
89
+ throw new Error('workspaceId mismatch');
90
+ return { sessionId: commandProcessManager.runCommand(workspaceId, data.commandId) };
91
+ },
92
+ },
93
+ {
94
+ name: 'StopQuickCommand',
95
+ description: 'Stop a running quick command by ID.',
96
+ inputSchema: {
97
+ type: 'object',
98
+ properties: {
99
+ workspaceId: { type: 'string' },
100
+ commandId: { type: 'string' },
101
+ },
102
+ required: ['workspaceId', 'commandId'],
103
+ additionalProperties: false,
104
+ },
105
+ annotations: { destructive: false, openWorld: false },
106
+ execute: async (input) => {
107
+ const data = input;
108
+ if (data.workspaceId !== workspaceId)
109
+ throw new Error('workspaceId mismatch');
110
+ commandProcessManager.stopCommand(workspaceId, data.commandId);
111
+ return { stopped: true };
112
+ },
113
+ },
114
+ ];
115
+ return tools.filter((tool) => allowedToolNames.has(tool.name));
116
+ }
117
+ //# sourceMappingURL=command-tools.js.map