@desplega.ai/agent-swarm 1.49.0 → 1.52.0

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 (547) hide show
  1. package/README.md +1 -1
  2. package/openapi.json +2070 -728
  3. package/package.json +10 -1
  4. package/src/agentmail/handlers.ts +65 -10
  5. package/src/agentmail/templates.ts +111 -0
  6. package/src/be/db.ts +1233 -7
  7. package/src/be/migrations/014_prompt_templates.sql +33 -0
  8. package/src/be/migrations/015_workflow_workspace.sql +3 -0
  9. package/src/be/migrations/016_active_session_runner_session.sql +4 -0
  10. package/src/be/migrations/017_channel_activity_cursors.sql +6 -0
  11. package/src/be/migrations/018_fix_seed_double_version.sql +30 -0
  12. package/src/be/migrations/019_skills.sql +65 -0
  13. package/src/be/migrations/020_approval_requests.sql +41 -0
  14. package/src/be/seed.ts +62 -0
  15. package/src/be/skill-parser.ts +70 -0
  16. package/src/be/skill-sync.ts +106 -0
  17. package/src/commands/runner.ts +320 -132
  18. package/src/commands/templates.ts +172 -0
  19. package/src/github/handlers.ts +292 -77
  20. package/src/github/mentions-aliases.test.ts +73 -0
  21. package/src/github/mentions.test.ts +3 -3
  22. package/src/github/mentions.ts +32 -6
  23. package/src/github/templates.ts +398 -0
  24. package/src/gitlab/handlers.ts +63 -22
  25. package/src/gitlab/templates.ts +140 -0
  26. package/src/heartbeat/heartbeat.ts +19 -10
  27. package/src/heartbeat/templates.ts +30 -0
  28. package/src/http/active-sessions.ts +27 -0
  29. package/src/http/approval-requests.ts +247 -0
  30. package/src/http/config.ts +3 -3
  31. package/src/http/index.ts +9 -2
  32. package/src/http/poll.ts +135 -14
  33. package/src/http/prompt-templates.ts +412 -0
  34. package/src/http/schedules.ts +35 -0
  35. package/src/http/skills.ts +479 -0
  36. package/src/http/workflows.ts +8 -0
  37. package/src/linear/sync.ts +28 -4
  38. package/src/linear/templates.ts +47 -0
  39. package/src/prompts/base-prompt.ts +41 -490
  40. package/src/prompts/registry.ts +57 -0
  41. package/src/prompts/resolver.ts +296 -0
  42. package/src/prompts/session-templates.ts +604 -0
  43. package/src/providers/claude-adapter.ts +15 -2
  44. package/src/providers/pi-mono-extension.ts +5 -1
  45. package/src/scheduler/scheduler.ts +125 -91
  46. package/src/server.ts +44 -0
  47. package/src/slack/assistant.ts +7 -4
  48. package/src/slack/channel-activity.ts +177 -0
  49. package/src/slack/handlers.ts +21 -6
  50. package/src/slack/templates.ts +55 -0
  51. package/src/tests/approval-requests.test.ts +735 -0
  52. package/src/tests/artifact-sdk.test.ts +12 -12
  53. package/src/tests/base-prompt.test.ts +49 -49
  54. package/src/tests/channel-activity.test.ts +363 -0
  55. package/src/tests/heartbeat.test.ts +1 -0
  56. package/src/tests/linear-webhook.test.ts +7 -3
  57. package/src/tests/pool-session-logs.test.ts +199 -0
  58. package/src/tests/prompt-template-github.test.ts +682 -0
  59. package/src/tests/prompt-template-remaining.test.ts +504 -0
  60. package/src/tests/prompt-template-resolver.test.ts +621 -0
  61. package/src/tests/prompt-template-session.test.ts +363 -0
  62. package/src/tests/prompt-templates-db.test.ts +616 -0
  63. package/src/tests/self-improvement.test.ts +8 -7
  64. package/src/tests/skill-parser.test.ts +178 -0
  65. package/src/tests/skill-sync.test.ts +171 -0
  66. package/src/tests/slack-metadata-inheritance.test.ts +1 -1
  67. package/src/tests/slack-thread-followups.test.ts +1 -1
  68. package/src/tests/structured-output.test.ts +0 -4
  69. package/src/tests/tool-annotations.test.ts +2 -1
  70. package/src/tests/update-profile-agentid.test.ts +248 -0
  71. package/src/tests/update-profile-auth.test.ts +195 -0
  72. package/src/tests/workflow-async-v2.test.ts +126 -4
  73. package/src/tests/workflow-definition-validation.test.ts +76 -0
  74. package/src/tests/workflow-executors.test.ts +4 -2
  75. package/src/tests/workflow-retry-v2.test.ts +1 -1
  76. package/src/tests/workflow-schedule-trigger.test.ts +104 -0
  77. package/src/tests/workflow-workspace.test.ts +272 -0
  78. package/src/tools/prompt-templates/delete.ts +86 -0
  79. package/src/tools/prompt-templates/get.ts +89 -0
  80. package/src/tools/prompt-templates/index.ts +5 -0
  81. package/src/tools/prompt-templates/list.ts +95 -0
  82. package/src/tools/prompt-templates/preview.ts +84 -0
  83. package/src/tools/prompt-templates/set.ts +117 -0
  84. package/src/tools/request-human-input.ts +106 -0
  85. package/src/tools/skills/index.ts +11 -0
  86. package/src/tools/skills/skill-create.ts +105 -0
  87. package/src/tools/skills/skill-delete.ts +67 -0
  88. package/src/tools/skills/skill-get.ts +75 -0
  89. package/src/tools/skills/skill-install-remote.ts +152 -0
  90. package/src/tools/skills/skill-install.ts +101 -0
  91. package/src/tools/skills/skill-list.ts +77 -0
  92. package/src/tools/skills/skill-publish.ts +123 -0
  93. package/src/tools/skills/skill-search.ts +43 -0
  94. package/src/tools/skills/skill-sync-remote.ts +128 -0
  95. package/src/tools/skills/skill-uninstall.ts +60 -0
  96. package/src/tools/skills/skill-update.ts +128 -0
  97. package/src/tools/store-progress.ts +22 -4
  98. package/src/tools/task-action.ts +20 -0
  99. package/src/tools/templates.ts +53 -0
  100. package/src/tools/tool-config.ts +23 -0
  101. package/src/tools/update-profile.ts +106 -34
  102. package/src/tools/workflows/create-workflow.ts +19 -1
  103. package/src/tools/workflows/update-workflow.ts +16 -1
  104. package/src/types.ts +109 -2
  105. package/src/workflows/definition.ts +30 -12
  106. package/src/workflows/engine.ts +40 -14
  107. package/src/workflows/executors/agent-task.ts +14 -3
  108. package/src/workflows/executors/human-in-the-loop.ts +160 -0
  109. package/src/workflows/executors/registry.ts +2 -0
  110. package/src/workflows/index.ts +1 -1
  111. package/src/workflows/recovery.ts +72 -0
  112. package/src/workflows/resume.ts +162 -12
  113. package/src/workflows/triggers.ts +31 -2
  114. package/src/workflows/version.ts +2 -0
  115. package/.claude/settings.json +0 -84
  116. package/.claude/settings.local.json +0 -117
  117. package/.dockerignore +0 -61
  118. package/.editorconfig +0 -15
  119. package/.entire/settings.json +0 -4
  120. package/.env.docker.example +0 -56
  121. package/.env.example +0 -78
  122. package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -78
  123. package/.github/ISSUE_TEMPLATE/community-template.yml +0 -77
  124. package/.github/ISSUE_TEMPLATE/config.yml +0 -8
  125. package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -60
  126. package/.github/PULL_REQUEST_TEMPLATE/community-template.md +0 -29
  127. package/.github/workflows/ci.yml +0 -52
  128. package/.github/workflows/docker-and-deploy.yml +0 -132
  129. package/.github/workflows/merge-gate.yml +0 -233
  130. package/.opencode/plugins/entire.ts +0 -133
  131. package/.superset/config.json +0 -6
  132. package/.wts-config.json +0 -4
  133. package/.wts-setup.ts +0 -171
  134. package/CHANGELOG.md +0 -447
  135. package/CLAUDE.md +0 -521
  136. package/CONTRIBUTING.md +0 -315
  137. package/DEPLOYMENT.md +0 -622
  138. package/Dockerfile +0 -65
  139. package/Dockerfile.worker +0 -189
  140. package/MCP.md +0 -841
  141. package/UI.md +0 -40
  142. package/api-entrypoint.sh +0 -56
  143. package/assets/agent-swarm-logo-orange.png +0 -0
  144. package/assets/agent-swarm-logo.png +0 -0
  145. package/assets/agent-swarm.mp4 +0 -0
  146. package/assets/agent-swarm.png +0 -0
  147. package/biome.json +0 -39
  148. package/deploy/DEPLOY.md +0 -60
  149. package/deploy/agent-swarm.service +0 -17
  150. package/deploy/docker-push.ts +0 -30
  151. package/deploy/install.ts +0 -85
  152. package/deploy/prod-db.ts +0 -42
  153. package/deploy/uninstall.ts +0 -12
  154. package/deploy/update.ts +0 -21
  155. package/depot.json +0 -1
  156. package/docker-compose.example.yml +0 -350
  157. package/docker-compose.local.yml +0 -119
  158. package/docker-entrypoint.sh +0 -632
  159. package/docs-site/app/api/search/route.ts +0 -4
  160. package/docs-site/app/docs/[[...slug]]/page.tsx +0 -87
  161. package/docs-site/app/docs/layout.tsx +0 -12
  162. package/docs-site/app/globals.css +0 -24
  163. package/docs-site/app/layout.config.tsx +0 -34
  164. package/docs-site/app/layout.tsx +0 -119
  165. package/docs-site/app/llms-full.txt/route.ts +0 -11
  166. package/docs-site/app/llms.mdx/docs/[[...slug]]/route.ts +0 -24
  167. package/docs-site/app/llms.txt/route.ts +0 -8
  168. package/docs-site/app/page.tsx +0 -5
  169. package/docs-site/app/robots.ts +0 -13
  170. package/docs-site/app/sitemap.ts +0 -37
  171. package/docs-site/components/api-page.client.tsx +0 -4
  172. package/docs-site/components/api-page.tsx +0 -7
  173. package/docs-site/components/mdx/mermaid.tsx +0 -55
  174. package/docs-site/content/docs/(documentation)/architecture/agents.mdx +0 -117
  175. package/docs-site/content/docs/(documentation)/architecture/hooks.mdx +0 -77
  176. package/docs-site/content/docs/(documentation)/architecture/memory.mdx +0 -96
  177. package/docs-site/content/docs/(documentation)/architecture/meta.json +0 -4
  178. package/docs-site/content/docs/(documentation)/architecture/overview.mdx +0 -172
  179. package/docs-site/content/docs/(documentation)/concepts/epics.mdx +0 -98
  180. package/docs-site/content/docs/(documentation)/concepts/meta.json +0 -4
  181. package/docs-site/content/docs/(documentation)/concepts/scheduling.mdx +0 -136
  182. package/docs-site/content/docs/(documentation)/concepts/services.mdx +0 -104
  183. package/docs-site/content/docs/(documentation)/concepts/task-lifecycle.mdx +0 -148
  184. package/docs-site/content/docs/(documentation)/concepts/workflows.mdx +0 -209
  185. package/docs-site/content/docs/(documentation)/contributing.mdx +0 -158
  186. package/docs-site/content/docs/(documentation)/getting-started.mdx +0 -157
  187. package/docs-site/content/docs/(documentation)/guides/agentmail-integration.mdx +0 -79
  188. package/docs-site/content/docs/(documentation)/guides/deployment.mdx +0 -171
  189. package/docs-site/content/docs/(documentation)/guides/github-integration.mdx +0 -81
  190. package/docs-site/content/docs/(documentation)/guides/gitlab-integration.mdx +0 -93
  191. package/docs-site/content/docs/(documentation)/guides/linear-integration.mdx +0 -98
  192. package/docs-site/content/docs/(documentation)/guides/meta.json +0 -13
  193. package/docs-site/content/docs/(documentation)/guides/sentry-integration.mdx +0 -52
  194. package/docs-site/content/docs/(documentation)/guides/slack-integration.mdx +0 -179
  195. package/docs-site/content/docs/(documentation)/guides/x402-payments.mdx +0 -154
  196. package/docs-site/content/docs/(documentation)/index.mdx +0 -65
  197. package/docs-site/content/docs/(documentation)/meta.json +0 -19
  198. package/docs-site/content/docs/(documentation)/reference/cli.mdx +0 -241
  199. package/docs-site/content/docs/(documentation)/reference/environment-variables.mdx +0 -205
  200. package/docs-site/content/docs/(documentation)/reference/mcp-tools.mdx +0 -449
  201. package/docs-site/content/docs/(documentation)/reference/meta.json +0 -4
  202. package/docs-site/content/docs/api-reference/active-sessions.mdx +0 -9
  203. package/docs-site/content/docs/api-reference/agents.mdx +0 -9
  204. package/docs-site/content/docs/api-reference/channels.mdx +0 -9
  205. package/docs-site/content/docs/api-reference/config.mdx +0 -9
  206. package/docs-site/content/docs/api-reference/debug.mdx +0 -9
  207. package/docs-site/content/docs/api-reference/ecosystem.mdx +0 -9
  208. package/docs-site/content/docs/api-reference/epics.mdx +0 -9
  209. package/docs-site/content/docs/api-reference/index.mdx +0 -32
  210. package/docs-site/content/docs/api-reference/memory.mdx +0 -9
  211. package/docs-site/content/docs/api-reference/meta.json +0 -25
  212. package/docs-site/content/docs/api-reference/poll.mdx +0 -9
  213. package/docs-site/content/docs/api-reference/repos.mdx +0 -9
  214. package/docs-site/content/docs/api-reference/schedules.mdx +0 -9
  215. package/docs-site/content/docs/api-reference/session-data.mdx +0 -9
  216. package/docs-site/content/docs/api-reference/stats.mdx +0 -9
  217. package/docs-site/content/docs/api-reference/tasks.mdx +0 -9
  218. package/docs-site/content/docs/api-reference/trackers.mdx +0 -9
  219. package/docs-site/content/docs/api-reference/webhooks.mdx +0 -9
  220. package/docs-site/content/docs/api-reference/workflows.mdx +0 -9
  221. package/docs-site/content/docs/meta.json +0 -3
  222. package/docs-site/lib/get-llm-text.ts +0 -10
  223. package/docs-site/lib/openapi.ts +0 -23
  224. package/docs-site/lib/source.ts +0 -8
  225. package/docs-site/mdx-components.tsx +0 -13
  226. package/docs-site/next.config.mjs +0 -29
  227. package/docs-site/package.json +0 -35
  228. package/docs-site/pnpm-lock.yaml +0 -5407
  229. package/docs-site/postcss.config.mjs +0 -8
  230. package/docs-site/public/logo.png +0 -0
  231. package/docs-site/scripts/generate-docs.ts +0 -171
  232. package/docs-site/source.config.ts +0 -17
  233. package/docs-site/tsconfig.json +0 -46
  234. package/ecosystem.config.cjs +0 -66
  235. package/landing/next.config.ts +0 -14
  236. package/landing/package.json +0 -31
  237. package/landing/pnpm-lock.yaml +0 -1091
  238. package/landing/postcss.config.mjs +0 -8
  239. package/landing/public/apple-touch-icon.png +0 -0
  240. package/landing/public/favicon.ico +0 -0
  241. package/landing/public/logo.png +0 -0
  242. package/landing/public/og-image.png +0 -0
  243. package/landing/public/omghost-desplega.svg +0 -30
  244. package/landing/public/omghost-openfort.svg +0 -9
  245. package/landing/src/app/actions/waitlist.ts +0 -25
  246. package/landing/src/app/blog/openfort-hackathon/page.tsx +0 -863
  247. package/landing/src/app/blog/page.tsx +0 -162
  248. package/landing/src/app/blog/swarm-metrics/page.tsx +0 -685
  249. package/landing/src/app/examples/page.tsx +0 -174
  250. package/landing/src/app/examples/x402/page.tsx +0 -456
  251. package/landing/src/app/globals.css +0 -122
  252. package/landing/src/app/layout.tsx +0 -134
  253. package/landing/src/app/page.tsx +0 -27
  254. package/landing/src/app/robots.ts +0 -13
  255. package/landing/src/app/sitemap.ts +0 -44
  256. package/landing/src/components/architecture.tsx +0 -163
  257. package/landing/src/components/cta.tsx +0 -52
  258. package/landing/src/components/features.tsx +0 -160
  259. package/landing/src/components/footer.tsx +0 -100
  260. package/landing/src/components/hero.tsx +0 -217
  261. package/landing/src/components/how-it-works.tsx +0 -165
  262. package/landing/src/components/navbar.tsx +0 -147
  263. package/landing/src/components/waitlist.tsx +0 -110
  264. package/landing/src/components/why-choose.tsx +0 -149
  265. package/landing/src/components/workshops.tsx +0 -328
  266. package/landing/src/lib/utils.ts +0 -6
  267. package/landing/tsconfig.json +0 -41
  268. package/misc/transcripts/2026-03-09-pi-mono-e2e-verification.md +0 -154
  269. package/new-ui/CLAUDE.md +0 -92
  270. package/new-ui/README.md +0 -73
  271. package/new-ui/biome.json +0 -42
  272. package/new-ui/components.json +0 -21
  273. package/new-ui/index.html +0 -25
  274. package/new-ui/package.json +0 -49
  275. package/new-ui/pnpm-lock.yaml +0 -4845
  276. package/new-ui/public/logo.png +0 -0
  277. package/new-ui/src/api/client.ts +0 -814
  278. package/new-ui/src/api/hooks/index.ts +0 -64
  279. package/new-ui/src/api/hooks/use-agents.ts +0 -58
  280. package/new-ui/src/api/hooks/use-channels.ts +0 -115
  281. package/new-ui/src/api/hooks/use-config-api.ts +0 -46
  282. package/new-ui/src/api/hooks/use-costs.ts +0 -122
  283. package/new-ui/src/api/hooks/use-db-query.ts +0 -29
  284. package/new-ui/src/api/hooks/use-epics.ts +0 -75
  285. package/new-ui/src/api/hooks/use-repos.ts +0 -61
  286. package/new-ui/src/api/hooks/use-schedules.ts +0 -81
  287. package/new-ui/src/api/hooks/use-services.ts +0 -16
  288. package/new-ui/src/api/hooks/use-stats.ts +0 -27
  289. package/new-ui/src/api/hooks/use-tasks.ts +0 -89
  290. package/new-ui/src/api/hooks/use-workflows.ts +0 -109
  291. package/new-ui/src/api/types.ts +0 -549
  292. package/new-ui/src/app/App.tsx +0 -13
  293. package/new-ui/src/app/providers.tsx +0 -32
  294. package/new-ui/src/app/router.tsx +0 -52
  295. package/new-ui/src/components/layout/app-header.tsx +0 -47
  296. package/new-ui/src/components/layout/app-sidebar.tsx +0 -128
  297. package/new-ui/src/components/layout/breadcrumbs.tsx +0 -57
  298. package/new-ui/src/components/layout/config-guard.tsx +0 -22
  299. package/new-ui/src/components/layout/root-layout.tsx +0 -40
  300. package/new-ui/src/components/layout/swarm-switcher.tsx +0 -85
  301. package/new-ui/src/components/shared/command-menu.tsx +0 -131
  302. package/new-ui/src/components/shared/data-grid.tsx +0 -141
  303. package/new-ui/src/components/shared/empty-state.tsx +0 -24
  304. package/new-ui/src/components/shared/error-boundary.tsx +0 -72
  305. package/new-ui/src/components/shared/json-viewer.tsx +0 -47
  306. package/new-ui/src/components/shared/name-connection-modal.tsx +0 -99
  307. package/new-ui/src/components/shared/page-skeleton.tsx +0 -16
  308. package/new-ui/src/components/shared/session-log-viewer.tsx +0 -364
  309. package/new-ui/src/components/shared/stats-bar.tsx +0 -132
  310. package/new-ui/src/components/shared/status-badge.tsx +0 -131
  311. package/new-ui/src/components/shared/usage-summary.tsx +0 -179
  312. package/new-ui/src/components/ui/alert-dialog.tsx +0 -176
  313. package/new-ui/src/components/ui/alert.tsx +0 -60
  314. package/new-ui/src/components/ui/avatar.tsx +0 -96
  315. package/new-ui/src/components/ui/badge.tsx +0 -46
  316. package/new-ui/src/components/ui/button.tsx +0 -62
  317. package/new-ui/src/components/ui/card.tsx +0 -75
  318. package/new-ui/src/components/ui/command.tsx +0 -160
  319. package/new-ui/src/components/ui/dialog.tsx +0 -143
  320. package/new-ui/src/components/ui/dropdown-menu.tsx +0 -226
  321. package/new-ui/src/components/ui/input.tsx +0 -21
  322. package/new-ui/src/components/ui/label.tsx +0 -19
  323. package/new-ui/src/components/ui/progress.tsx +0 -26
  324. package/new-ui/src/components/ui/scroll-area.tsx +0 -54
  325. package/new-ui/src/components/ui/select.tsx +0 -175
  326. package/new-ui/src/components/ui/separator.tsx +0 -28
  327. package/new-ui/src/components/ui/sheet.tsx +0 -132
  328. package/new-ui/src/components/ui/sidebar.tsx +0 -691
  329. package/new-ui/src/components/ui/skeleton.tsx +0 -13
  330. package/new-ui/src/components/ui/sonner.tsx +0 -35
  331. package/new-ui/src/components/ui/switch.tsx +0 -33
  332. package/new-ui/src/components/ui/table.tsx +0 -92
  333. package/new-ui/src/components/ui/tabs.tsx +0 -79
  334. package/new-ui/src/components/ui/textarea.tsx +0 -18
  335. package/new-ui/src/components/ui/tooltip.tsx +0 -51
  336. package/new-ui/src/components/workflows/action-node.tsx +0 -53
  337. package/new-ui/src/components/workflows/condition-node.tsx +0 -50
  338. package/new-ui/src/components/workflows/graph-utils.ts +0 -124
  339. package/new-ui/src/components/workflows/json-tree.tsx +0 -189
  340. package/new-ui/src/components/workflows/node-styles.ts +0 -10
  341. package/new-ui/src/components/workflows/step-detail-sheet.tsx +0 -87
  342. package/new-ui/src/components/workflows/trigger-node.tsx +0 -41
  343. package/new-ui/src/components/workflows/workflow-graph.tsx +0 -65
  344. package/new-ui/src/hooks/use-auto-scroll.ts +0 -82
  345. package/new-ui/src/hooks/use-config.ts +0 -203
  346. package/new-ui/src/hooks/use-keyboard-shortcuts.ts +0 -41
  347. package/new-ui/src/hooks/use-mobile.ts +0 -19
  348. package/new-ui/src/hooks/use-theme.ts +0 -60
  349. package/new-ui/src/lib/config.ts +0 -188
  350. package/new-ui/src/lib/slugs.ts +0 -71
  351. package/new-ui/src/lib/utils.ts +0 -120
  352. package/new-ui/src/main.tsx +0 -11
  353. package/new-ui/src/pages/agents/[id]/page.tsx +0 -492
  354. package/new-ui/src/pages/agents/page.tsx +0 -134
  355. package/new-ui/src/pages/chat/page.tsx +0 -674
  356. package/new-ui/src/pages/config/page.tsx +0 -1109
  357. package/new-ui/src/pages/dashboard/page.tsx +0 -454
  358. package/new-ui/src/pages/debug/page.tsx +0 -275
  359. package/new-ui/src/pages/epics/[id]/page.tsx +0 -809
  360. package/new-ui/src/pages/epics/page.tsx +0 -321
  361. package/new-ui/src/pages/not-found/page.tsx +0 -18
  362. package/new-ui/src/pages/repos/page.tsx +0 -369
  363. package/new-ui/src/pages/schedules/[id]/page.tsx +0 -664
  364. package/new-ui/src/pages/schedules/page.tsx +0 -477
  365. package/new-ui/src/pages/services/page.tsx +0 -128
  366. package/new-ui/src/pages/tasks/[id]/page.tsx +0 -670
  367. package/new-ui/src/pages/tasks/page.tsx +0 -592
  368. package/new-ui/src/pages/usage/page.tsx +0 -195
  369. package/new-ui/src/pages/workflow-runs/[id]/page.tsx +0 -363
  370. package/new-ui/src/pages/workflows/[id]/page.tsx +0 -417
  371. package/new-ui/src/pages/workflows/page.tsx +0 -266
  372. package/new-ui/src/styles/ag-grid.css +0 -36
  373. package/new-ui/src/styles/globals.css +0 -213
  374. package/new-ui/test-results/.last-run.json +0 -4
  375. package/new-ui/tsconfig.app.json +0 -34
  376. package/new-ui/tsconfig.json +0 -4
  377. package/new-ui/tsconfig.node.json +0 -26
  378. package/new-ui/vercel.json +0 -4
  379. package/new-ui/vite.config.ts +0 -28
  380. package/plugin/README.md +0 -1
  381. package/plugin/build-pi-skills.ts +0 -233
  382. package/plugin/hooks/hooks.json +0 -71
  383. package/prek.toml +0 -75
  384. package/pyproject.toml +0 -9
  385. package/scripts/check-db-boundary.sh +0 -60
  386. package/scripts/e2e-docker-provider.ts +0 -820
  387. package/scripts/e2e-io-schemas-test.ts +0 -807
  388. package/scripts/e2e-provider-test.ts +0 -220
  389. package/scripts/e2e-workflow-redesign.sh +0 -229
  390. package/scripts/e2e-workflow-test.sh +0 -285
  391. package/scripts/e2e-workflow-test.ts +0 -857
  392. package/scripts/generate-mcp-docs.ts +0 -415
  393. package/scripts/generate-openapi.ts +0 -26
  394. package/scripts/measure-tool-tokens.ts +0 -118
  395. package/scripts/x402-e2e-test.ts +0 -195
  396. package/scripts/x402-test-server.ts +0 -236
  397. package/scripts/x402-testnet-e2e.ts +0 -668
  398. package/slack-manifest.json +0 -88
  399. package/templates-ui/README.md +0 -46
  400. package/templates-ui/components.json +0 -17
  401. package/templates-ui/eslint.config.mjs +0 -18
  402. package/templates-ui/next.config.ts +0 -7
  403. package/templates-ui/package.json +0 -35
  404. package/templates-ui/pnpm-lock.yaml +0 -4571
  405. package/templates-ui/postcss.config.mjs +0 -7
  406. package/templates-ui/public/file.svg +0 -1
  407. package/templates-ui/public/globe.svg +0 -1
  408. package/templates-ui/public/logo.png +0 -0
  409. package/templates-ui/public/next.svg +0 -1
  410. package/templates-ui/public/vercel.svg +0 -1
  411. package/templates-ui/public/window.svg +0 -1
  412. package/templates-ui/src/app/[category]/[name]/page.tsx +0 -89
  413. package/templates-ui/src/app/api/templates/[...slug]/route.ts +0 -52
  414. package/templates-ui/src/app/api/templates/route.ts +0 -18
  415. package/templates-ui/src/app/builder/page.tsx +0 -37
  416. package/templates-ui/src/app/globals.css +0 -94
  417. package/templates-ui/src/app/layout.tsx +0 -79
  418. package/templates-ui/src/app/page.tsx +0 -38
  419. package/templates-ui/src/app/robots.ts +0 -11
  420. package/templates-ui/src/app/sitemap.ts +0 -31
  421. package/templates-ui/src/components/compose-builder.tsx +0 -442
  422. package/templates-ui/src/components/compose-preview.tsx +0 -117
  423. package/templates-ui/src/components/file-preview.tsx +0 -77
  424. package/templates-ui/src/components/footer.tsx +0 -40
  425. package/templates-ui/src/components/header.tsx +0 -41
  426. package/templates-ui/src/components/template-card.tsx +0 -87
  427. package/templates-ui/src/components/template-detail.tsx +0 -125
  428. package/templates-ui/src/components/template-gallery.tsx +0 -263
  429. package/templates-ui/src/components/ui/badge.tsx +0 -36
  430. package/templates-ui/src/components/ui/button.tsx +0 -57
  431. package/templates-ui/src/components/ui/card.tsx +0 -76
  432. package/templates-ui/src/components/ui/separator.tsx +0 -31
  433. package/templates-ui/src/components/ui/tooltip.tsx +0 -32
  434. package/templates-ui/src/lib/compose-generator.ts +0 -241
  435. package/templates-ui/src/lib/templates.ts +0 -137
  436. package/templates-ui/src/lib/utils.ts +0 -6
  437. package/templates-ui/tsconfig.json +0 -34
  438. package/thoughts/research/2026-02-28-openfort-viem-x402-research.md +0 -679
  439. package/thoughts/research/2026-02-28-x402-payments-research.md +0 -686
  440. package/thoughts/researcher/plans/2026-02-20-agent-self-improvement-plan.md +0 -282
  441. package/thoughts/researcher/research/2026-02-20-agent-self-improvement.md +0 -492
  442. package/thoughts/shared/plans/.gitkeep +0 -0
  443. package/thoughts/shared/plans/2025-12-18-slack-integration.md +0 -1195
  444. package/thoughts/shared/plans/2025-12-19-agent-log-streaming.md +0 -732
  445. package/thoughts/shared/plans/2025-12-19-role-based-swarm-plugin.md +0 -361
  446. package/thoughts/shared/plans/2025-12-20-mobile-responsive-ui.md +0 -501
  447. package/thoughts/shared/plans/2025-12-20-startup-team-swarm.md +0 -560
  448. package/thoughts/shared/plans/2025-12-23-runner-level-polling.md +0 -934
  449. package/thoughts/shared/plans/2025-12-23-runner-session-logs.md +0 -1000
  450. package/thoughts/shared/plans/2025-12-23-worker-lead-spawn-triggers.md +0 -568
  451. package/thoughts/shared/plans/2026-01-09-inverse-teleport.md +0 -1516
  452. package/thoughts/shared/plans/2026-01-12-agent-rename-pm2-control.md +0 -1133
  453. package/thoughts/shared/plans/2026-01-12-github-app-integration.md +0 -380
  454. package/thoughts/shared/plans/2026-01-12-lead-inbox-model.md +0 -876
  455. package/thoughts/shared/plans/2026-01-12-ralph-wiggum-integration.md +0 -463
  456. package/thoughts/shared/plans/2026-01-13-agent-concurrency.md +0 -691
  457. package/thoughts/shared/plans/2026-01-13-github-assignment-handling.md +0 -690
  458. package/thoughts/shared/plans/2026-01-13-prevent-duplicate-trigger-processing.md +0 -1071
  459. package/thoughts/shared/plans/2026-01-14-fix-slack-thread-context.md +0 -507
  460. package/thoughts/shared/plans/2026-01-15-scheduled-tasks-implementation.md +0 -565
  461. package/thoughts/shared/plans/2026-01-15-usage-cost-tracking-ui.md +0 -1479
  462. package/thoughts/shared/plans/2026-01-16-epics-feature-implementation.md +0 -1230
  463. package/thoughts/shared/plans/2026-02-26-mcp-tool-context-reduction.md +0 -282
  464. package/thoughts/shared/plans/2026-03-02-claude-context-mode-integration.md +0 -328
  465. package/thoughts/shared/plans/2026-03-02-code-level-heartbeat.md +0 -224
  466. package/thoughts/shared/research/.gitkeep +0 -0
  467. package/thoughts/shared/research/2025-01-09-inverse-teleport-plan-review.md +0 -420
  468. package/thoughts/shared/research/2025-12-18-slack-integration.md +0 -442
  469. package/thoughts/shared/research/2025-12-19-agent-log-streaming.md +0 -339
  470. package/thoughts/shared/research/2025-12-19-agent-secrets-cli-research.md +0 -390
  471. package/thoughts/shared/research/2025-12-21-gemini-cli-integration.md +0 -376
  472. package/thoughts/shared/research/2025-12-22-runner-loop-architecture.md +0 -582
  473. package/thoughts/shared/research/2025-12-22-setup-experience-improvements.md +0 -264
  474. package/thoughts/shared/research/2026-01-13-lead-duplicate-trigger-processing.md +0 -223
  475. package/thoughts/shared/research/2026-01-14-lead-slack-thread-context.md +0 -277
  476. package/thoughts/shared/research/2026-01-15-ai-tracker-agent-swarm-integration.md +0 -376
  477. package/thoughts/shared/research/2026-01-15-auto-starting-processes-in-worker-containers.md +0 -787
  478. package/thoughts/shared/research/2026-01-15-scheduled-tasks.md +0 -390
  479. package/thoughts/shared/research/2026-01-16-epics-feature-research.md +0 -437
  480. package/thoughts/shared/research/2026-02-26-cliffy-mcp-tools.md +0 -159
  481. package/thoughts/shared/research/2026-03-03-database-migration-system-refactor.md +0 -337
  482. package/thoughts/swarm-researcher/plans/2026-02-23-openclaw-improvements-plan.md +0 -778
  483. package/thoughts/swarm-researcher/plans/2026-02-26-artifacts-localtunnel-plan.md +0 -1269
  484. package/thoughts/swarm-researcher/research/2026-02-23-openclaw-vs-agent-swarm-comparison.md +0 -411
  485. package/thoughts/swarm-researcher/research/2026-02-26-artifacts-localtunnel.md +0 -724
  486. package/thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md +0 -443
  487. package/thoughts/taras/brainstorms/2026-03-20-setup-cli-onboarding.md +0 -307
  488. package/thoughts/taras/plans/2026-01-22-agent-swarm-schemas.md +0 -98
  489. package/thoughts/taras/plans/2026-01-28-per-worker-claude-md.md +0 -617
  490. package/thoughts/taras/plans/2026-01-28-sentry-cli-integration.md +0 -214
  491. package/thoughts/taras/plans/2026-02-20-auto-improvement.md +0 -803
  492. package/thoughts/taras/plans/2026-02-20-env-management.md +0 -538
  493. package/thoughts/taras/plans/2026-02-20-memory-system.md +0 -882
  494. package/thoughts/taras/plans/2026-02-20-repos-knowledge.md +0 -806
  495. package/thoughts/taras/plans/2026-02-20-session-attach.md +0 -647
  496. package/thoughts/taras/plans/2026-02-20-worker-identity.md +0 -820
  497. package/thoughts/taras/plans/2026-02-25-feat-new-ui-visual-redesign-plan.md +0 -768
  498. package/thoughts/taras/plans/2026-03-04-fix-buildSystemPrompt-missing-fields.md +0 -77
  499. package/thoughts/taras/plans/2026-03-04-new-ui-missing-actions.md +0 -543
  500. package/thoughts/taras/plans/2026-03-06-one-time-scheduled-tasks.md +0 -373
  501. package/thoughts/taras/plans/2026-03-08-memory-self-improvement-enhancements.md +0 -512
  502. package/thoughts/taras/plans/2026-03-08-pi-mono-provider-implementation.md +0 -919
  503. package/thoughts/taras/plans/2026-03-09-templates-registry.md +0 -723
  504. package/thoughts/taras/plans/2026-03-10-task-working-directory.md +0 -371
  505. package/thoughts/taras/plans/2026-03-11-archil-per-agent-write-strategy.md +0 -621
  506. package/thoughts/taras/plans/2026-03-12-eliminate-inbox-route-to-tasks.md +0 -61
  507. package/thoughts/taras/plans/2026-03-12-slack-thread-followup-additive.md +0 -488
  508. package/thoughts/taras/plans/2026-03-13-slack-ai-improvements.md +0 -644
  509. package/thoughts/taras/plans/2026-03-16-route-wrapper-openapi.md +0 -636
  510. package/thoughts/taras/plans/2026-03-17-multi-api-config.md +0 -444
  511. package/thoughts/taras/plans/2026-03-18-agent-fs-integration.md +0 -591
  512. package/thoughts/taras/plans/2026-03-18-debug-db-explorer.md +0 -446
  513. package/thoughts/taras/plans/2026-03-18-workflow-redesign.md +0 -987
  514. package/thoughts/taras/plans/2026-03-19-compound-learnings.md +0 -403
  515. package/thoughts/taras/plans/2026-03-19-ticket-tracker-linear-integration.md +0 -860
  516. package/thoughts/taras/plans/2026-03-19-workflow-io-schemas-and-bugs.md +0 -899
  517. package/thoughts/taras/plans/2026-03-20-setup-cli-onboarding.md +0 -874
  518. package/thoughts/taras/plans/2026-03-20-workflow-structured-output-validation-workspace.md +0 -723
  519. package/thoughts/taras/research/2026-01-22-vercel-cli-integration.md +0 -287
  520. package/thoughts/taras/research/2026-01-27-excessive-polling-issue.md +0 -311
  521. package/thoughts/taras/research/2026-01-28-per-worker-claude-md.md +0 -383
  522. package/thoughts/taras/research/2026-01-28-sentry-cli-integration.md +0 -240
  523. package/thoughts/taras/research/2026-02-19-agent-native-swarm-architecture.md +0 -390
  524. package/thoughts/taras/research/2026-02-19-swarm-gaps-implementation.md +0 -594
  525. package/thoughts/taras/research/2026-02-25-dashboard-ui-design-best-practices.md +0 -825
  526. package/thoughts/taras/research/2026-02-26-task-detail-page-redesign.md +0 -393
  527. package/thoughts/taras/research/2026-03-03-new-ui-missing-actions.md +0 -168
  528. package/thoughts/taras/research/2026-03-05-pi-mono-provider-research.md +0 -230
  529. package/thoughts/taras/research/2026-03-06-workflow-engine-design.md +0 -445
  530. package/thoughts/taras/research/2026-03-08-drive-loop-concept.md +0 -375
  531. package/thoughts/taras/research/2026-03-08-pi-mono-deep-dive.md +0 -869
  532. package/thoughts/taras/research/2026-03-09-templates-registry.md +0 -373
  533. package/thoughts/taras/research/2026-03-10-agent-working-directory.md +0 -223
  534. package/thoughts/taras/research/2026-03-10-configurable-event-prompts.md +0 -339
  535. package/thoughts/taras/research/2026-03-11-archil-production-setup.md +0 -181
  536. package/thoughts/taras/research/2026-03-11-archil-shared-disk-write-strategies.md +0 -437
  537. package/thoughts/taras/research/2026-03-13-slack-ai-features.md +0 -258
  538. package/thoughts/taras/research/2026-03-16-openapi-docs-generation.md +0 -335
  539. package/thoughts/taras/research/2026-03-16-route-wrapper-openapi.md +0 -670
  540. package/thoughts/taras/research/2026-03-16-slack-thread-followups-e2e.md +0 -54
  541. package/thoughts/taras/research/2026-03-18-agent-fs-integration.md +0 -558
  542. package/thoughts/taras/research/2026-03-18-linear-integration-finalization.md +0 -526
  543. package/thoughts/taras/research/2026-03-18-workflow-redesign.md +0 -797
  544. package/thoughts/taras/research/2026-03-19-workflow-node-io-schemas-and-bugs.md +0 -563
  545. package/thoughts/taras/research/2026-03-19-workflow-structured-output-validation-workspace.md +0 -486
  546. package/thoughts/taras/research/2026-03-20-prompt-template-registry.md +0 -469
  547. package/tsconfig.json +0 -37
@@ -1,469 +0,0 @@
1
- ---
2
- date: 2026-03-20T16:00:00-04:00
3
- researcher: Claude
4
- git_commit: cb464bc94af8f65b0adf25973cf2fe1bf02c781b
5
- branch: main
6
- repository: desplega-ai/agent-swarm
7
- topic: "Prompt Template Registry — Codebase Analysis"
8
- tags: [research, prompts, templates, events, registry, config]
9
- brainstorm: thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md
10
- status: complete
11
- autonomy: critical
12
- last_updated: 2026-03-20
13
- last_updated_by: Claude
14
- ---
15
-
16
- # Research: Prompt Template Registry — Codebase Analysis
17
-
18
- **Date**: 2026-03-20
19
- **Researcher**: Claude
20
- **Git Commit**: cb464bc
21
- **Branch**: main
22
- **Brainstorm**: [`thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md`](../brainstorms/2026-03-20-prompt-template-registry.md)
23
-
24
- ## Research Question
25
-
26
- Validate and deepen the brainstorm at `thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md` by cataloging all hardcoded prompts, understanding system prompt assembly, mapping the existing config/scope system, and identifying template-like patterns already in the codebase.
27
-
28
- ## Summary
29
-
30
- The agent-swarm codebase contains **~70 distinct hardcoded prompt strings** spread across **13 source files**, producing six categories of output: task descriptions, system prompt constants, hook-injected messages, external platform messages, memory content templates, and session prompts (Linear thoughts, Slack messages). The system prompt is assembled by `getBasePrompt()` in `src/prompts/base-prompt.ts` from 12 named constants using single-brace `{placeholder}` replacement, while event handlers use JS template literals with `${variable}` interpolation. The existing `swarm_config` table provides a proven three-tier scope hierarchy (`global → agent → repo`) with the same resolution pattern proposed in the brainstorm. Two `{{...}}` interpolation engines already exist in the codebase — one for workflows (dot-path, replaces unresolved with empty) and one for workflow templates (flat keys, leaves unresolved in place) — either could serve as the foundation for the prompt template resolver.
31
-
32
- ## Detailed Findings
33
-
34
- ### 1. Hardcoded Prompt Catalog
35
-
36
- #### 1.1 GitHub Event Handlers (`src/github/handlers.ts`)
37
-
38
- **12 task description templates** covering all webhook event types:
39
-
40
- > **Design note (Taras):** Templates could separate a static header (e.g. `[GitHub PR #{{pr.number}}] {{pr.title}}`) from a variable content body — the header pattern is shared across many PR events while the body differs per event type. This suggests a two-part template structure: `title` + `body`.
41
-
42
- | Event | Line | Template Title Pattern | Key Variables |
43
- |-------|------|----------------------|---------------|
44
- | PR assigned | 103 | `[GitHub PR #${pr.number}] ${pr.title}` | `pr.*`, `sender.login`, `repository.full_name`, `GITHUB_BOT_NAME` |
45
- | PR review requested | 183 | `[GitHub PR #${pr.number}] ${pr.title}` | Same as above |
46
- | PR closed/merged | 261 | `${emoji} [GitHub PR #${pr.number}] ${status}` | `pr.*`, `wasMerged`, `pr.merged_by.login`, `task.id` |
47
- | PR synchronize | 298 | `🔄 [GitHub PR #${pr.number}] New commits pushed` | `pr.*`, `task.id` |
48
- | PR mention | 342 | `[GitHub PR #${pr.number}] ${pr.title}` | `pr.*`, `extractMentionContext(pr.body)` |
49
- | Issue assigned | 397 | `[GitHub Issue #${issue.number}] ${issue.title}` | `issue.*`, `sender.login` |
50
- | Issue mention | 475 | `[GitHub Issue #${issue.number}] ${issue.title}` | `issue.*`, `extractMentionContext(issue.body)` |
51
- | Comment mention | 547 | `[GitHub ${targetType} #${targetNumber} Comment]` | `comment.*`, `targetType`, `existingTask.id` |
52
- | PR review submitted | 653 | `${emoji} [GitHub PR #${pr.number} Review] ${label}` | `review.*`, `getReviewStateInfo()` |
53
- | Check run failed | 767 | `${emoji} [GitHub PR #${prNumber} CI] ${check_run.name}` | `check_run.*`, `relatedTask.id` |
54
- | Check suite failed | 841 | `${emoji} [GitHub PR #${prNumber} CI Suite] ${label}` | `check_suite.*`, `relatedTask.id` |
55
- | Workflow run failed | 917 | `${emoji} [GitHub PR #${prNumber} Workflow] ${workflow_run.name}` | `workflow_run.*`, `relatedTask.id` |
56
-
57
- **Cross-cutting fragments:**
58
- - `DELEGATION_INSTRUCTION` (line 19): `"⚠️ As lead, DELEGATE this task to a worker agent - do not tackle it yourself."`
59
- - `getCommandSuggestions(taskType, targetType)` (line 25): Returns 4 variants based on task type (PR, issue, comment)
60
- - `getReviewStateInfo(state)` (line 582): Returns `{emoji, label}` for review states
61
- - `getCheckConclusionInfo(conclusion)` (line 689): Returns `{emoji, label}` for CI conclusions
62
-
63
- **Structural pattern:** All templates follow the same layout: `[Header line]\n\nMetadata lines\n\n---\n${DELEGATION_INSTRUCTION}\n${suggestions}`. Related tasks add `🔀 Consider routing to the same agent working on the related task.`
64
-
65
- #### 1.2 GitLab Event Handlers (`src/gitlab/handlers.ts`)
66
-
67
- **4 task description templates** mirroring the GitHub ones:
68
-
69
- | Event | Line | Key Variables |
70
- |-------|------|---------------|
71
- | MR opened with mention | 94 | `mr.iid`, `mr.title`, `user.username`, `mr.source_branch`, `mr.target_branch` |
72
- | Issue opened/assigned | 175 | `issue.iid`, `issue.title`, `user.username` |
73
- | Comment with mention | 253 | `entityLabel`, `user.username`, `existingTask.id` |
74
- | Pipeline failed | 311 | `pipeline.id`, `mrIid`, `event.merge_request.*` |
75
-
76
- **Notable divergence from GitHub:** GitLab's `DELEGATION_INSTRUCTION` (line 33) is different text — uses markdown bold and names the `send-task` tool explicitly. This is an inconsistency the brainstorm's unified registry would fix.
77
-
78
- #### 1.3 Slack Handlers (`src/slack/handlers.ts`)
79
-
80
- Not a traditional task template — Slack extracts task text from user messages. Key prompt patterns:
81
-
82
- | Pattern | Lines | Description |
83
- |---------|-------|-------------|
84
- | Thread context wrapping | 448-449 | `<thread_context>\n${threadContext}\n</thread_context>\n\n${taskDescription}` |
85
- | Thread message formatting | 204-218 | `"[Agent]: ${truncatedText}"` or `"${userName}: ${m.text}"` per message |
86
- | Rate limit warning | 424-428 | Static: `":satellite: _You're sending too many requests..._"` |
87
- | Empty task warning | 433-436 | Static: `":satellite: _Please provide a task description..._"` |
88
- | No agents online | 461-463 | Static: `":satellite: _No agents are online right now..._"` |
89
- | File attachment | 241-244 | `"[File: ${f.name} (${f.mimetype}, ${formatFileSize(f.size)}) id=${f.id}]"` |
90
-
91
- #### 1.4 Slack Assistant (`src/slack/assistant.ts`)
92
-
93
- | Pattern | Line | Description |
94
- |---------|------|-------------|
95
- | Greeting | 18 | `"Hi! I'm your Agent Swarm assistant. How can I help?"` |
96
- | Suggested prompts | 20-27 | Static 3-item prompt array |
97
- | Channel context | 84 | `"\n\n[User is viewing channel <#${ctx.channel_id}>]"` |
98
- | Offline message | 96-98 | `"No agents are available right now..."` |
99
- | Status messages | 53, 68, 73 | `"Queuing follow-up..."`, `"Processing follow-up..."`, `"Processing your request..."` |
100
-
101
- #### 1.5 AgentMail Handlers (`src/agentmail/handlers.ts`)
102
-
103
- **5 task description templates** for email-to-task conversion:
104
-
105
- | Variant | Line | Title | Trigger |
106
- |---------|------|-------|---------|
107
- | Follow-up in thread | 112 | `[AgentMail] Follow-up email in thread` | Existing thread task found |
108
- | New email → lead | 138 | `[AgentMail] New email received` | Mapped inbox, lead agent |
109
- | New email → worker | 156 | `[AgentMail] New email received` | Mapped inbox, worker agent |
110
- | Unmapped inbox → lead | 177 | `[AgentMail] New email received (unmapped inbox)` | No inbox mapping |
111
- | No agent available | 195 | `[AgentMail] New email received (no agent available)` | No agent online |
112
-
113
- All share variables: `from`, `subject`, `inbox_id`, `thread_id`, `preview` (body truncated to 500 chars). Slight inconsistency: mapped-to-lead variant includes `message_id`, worker variant doesn't.
114
-
115
- #### 1.6 Linear Sync (`src/linear/sync.ts`)
116
-
117
- | Pattern | Line | Type | Variables |
118
- |---------|------|------|-----------|
119
- | New issue task | 277 | Task description | `issueIdentifier`, `issueTitle`, `issueUrl`, `sessionUrl`, `issueDescription` |
120
- | Acknowledgment thought | 305 | Linear activity | `task.id` |
121
- | In-progress message | 481 | Linear activity | Static |
122
- | Follow-up task | 494 | Task description | `issueIdentifier`, `issueTitle`, `issueUrl`, `userMessage` |
123
- | Follow-up ack | 524 | Linear activity | `task.id` |
124
- | Stop signal | 458 | Linear activity | Static: `"Task cancelled by user."` |
125
-
126
- #### 1.7 Heartbeat (`src/heartbeat/heartbeat.ts`)
127
-
128
- **1 escalation task template** (lines 259-278): Assembled from sections array. Lists each stalled task with `task.id.slice(0,8)`, `agentSlice`, `task.lastUpdatedAt`. Includes deterministic `escalationKey` to prevent duplicate escalations. Task type `"heartbeat"`, priority 70.
129
-
130
- #### 1.8 Store Progress (`src/tools/store-progress.ts`)
131
-
132
- | Pattern | Line | Type | Variables |
133
- |---------|------|------|-----------|
134
- | Completed task memory | 183 | Agent memory | `task.task`, `output` |
135
- | Failed task memory | 184 | Agent memory | `task.task`, `failureReason` |
136
- | Swarm-shared memory | 217 | Swarm memory | `requestInfo.agentId`, `taskContent` |
137
- | Follow-up: completed | 250 | Task description | `agentName`, `taskDesc`, `outputSummary`, `taskId` |
138
- | Follow-up: failed | 253 | Task description | `agentName`, `taskDesc`, `reason`, `taskId` |
139
- | Epic context enrichment | 261-274 | Appended to above | `epic.*`, `result.task.epicId` |
140
-
141
- #### 1.9 Runner (`src/commands/runner.ts`)
142
-
143
- **Trigger-based prompts** spawned into provider sessions:
144
-
145
- | Trigger Type | Lines | Key Variables |
146
- |-------------|-------|---------------|
147
- | `task_assigned` | 892-903 | `trigger.taskId`, `taskDesc` |
148
- | `task_offered` | 906-917 | `trigger.taskId`, `taskDesc` |
149
- | `unread_mentions` | 920-926 | `trigger.count` |
150
- | `pool_tasks_available` | 928-936 | `trigger.count` |
151
- | `epic_progress_changed` | 938-1035 | Full epic state: `epic.*`, task summaries, stats |
152
- | Resume with progress | 455-468 | `task.id`, `task.task`, `task.progress` |
153
- | Resume no progress | 470-483 | `task.id`, `task.task` |
154
-
155
- **Context enrichment fragments:**
156
- | Fragment | Lines | Trigger |
157
- |----------|-------|---------|
158
- | Relevant memories | 1071-1075 | Memory search returns results (similarity > 0.4) |
159
- | Epic task context | 1124-1129 | Task belongs to epic, sibling tasks completed |
160
- | Working directory annotation | 2176-2183 | Effective CWD differs from process.cwd() |
161
- | CWD warning (system prompt) | 2189 | Task dir doesn't exist |
162
-
163
- #### 1.10 Hook System (`src/hooks/hook.ts`)
164
-
165
- **13 distinct prompt strings** injected via stdout or block responses:
166
-
167
- | ID | Lines | Type | Trigger |
168
- |----|-------|------|---------|
169
- | Progress reminder (busy) | 670-672 | stdout | Every hook, busy worker |
170
- | Progress reminder (post-tool) | 971-973 | stdout | PostToolUse, worker |
171
- | Send-task confirmation | 966-968 | stdout | PostToolUse, lead + send-task |
172
- | Unregistered agent | 675-681 | stdout | Every hook, no agentInfo |
173
- | Registered agent status | 657-659 | stdout | Every hook, has agentInfo |
174
- | Task cancelled (with file) | 541-543 | Block response | PreToolUse/UserPromptSubmit |
175
- | Task cancelled (no file) | 558-560 | Block response | PreToolUse/UserPromptSubmit |
176
- | Tool loop detected | 808-812 | Block response | PreToolUse |
177
- | Polling limit | 827-829 | Block response | PreToolUse |
178
- | Goal reminder | 770-778 | stdout | PreCompact |
179
- | Shared disk write warning | 88-96 | stdout | PreToolUse/PostToolUse |
180
- | Concurrent session awareness | 705-746 | stdout | SessionStart, lead |
181
- | Session summarization | 1057-1074 | Piped to haiku → memory | Stop event |
182
-
183
- #### 1.11 Pi-Mono Extension (`src/providers/pi-mono-extension.ts`)
184
-
185
- **10 prompt strings** — mirrors a subset of hook.ts for the pi-mono provider. Of the 13 hook prompts cataloged in 1.10, 10 have pi-mono equivalents: task cancellation (2), tool loop, polling limit, progress reminders (2), send-task confirmation, shared disk write warning, concurrent session awareness, PreCompact goal reminder, and session summarization. The 3 hook-only prompts (unregistered agent, registered agent status, progress reminder on busy) have no pi-mono counterpart. Minor differences exist (e.g., send-task confirmation omits task ID in pi-mono).
186
-
187
- #### 1.12 Docker Entrypoint (`docker-entrypoint.sh`)
188
-
189
- **1 task template** (lines 241-248): Agent-fs invitation task for lead. Interpolates `AF_SHARED_ORG_ID` and `AGENT_ID` via shell `${}`. Created via `POST /api/tasks`.
190
-
191
- ---
192
-
193
- ### 2. System Prompt Assembly (`src/prompts/base-prompt.ts`)
194
-
195
- #### 2.1 Architecture
196
-
197
- `getBasePrompt(args: BasePromptArgs)` is the sole export. It assembles the system prompt from 12 module-scoped constants in a fixed order:
198
-
199
- ```
200
- 1. BASE_PROMPT_ROLE — "{role}" and "{agentId}" replaced (line 1)
201
- 2. [Identity block] — name, description, soulMd, identityMd (lines 500-515)
202
- 3. [Repository Context] — repo CLAUDE.md from VCS clone (lines 518-533)
203
- 4. [Agent CLAUDE.md] — truncatable, 20k char cap (lines 580-600)
204
- 5. [Agent TOOLS.md] — truncatable, remaining budget (lines 601-611)
205
- 6. BASE_PROMPT_REGISTER — join-swarm instruction (line 7)
206
- 7. BASE_PROMPT_LEAD or _WORKER — role-conditional (line 539)
207
- 8. BASE_PROMPT_FILESYSTEM — "{agentId}" replaced (line 228)
208
- 9. [BASE_PROMPT_AGENT_FS] — conditional on AGENT_FS_API_URL env (line 306)
209
- 10. BASE_PROMPT_SELF_AWARENESS — static (line 365)
210
- 11. BASE_PROMPT_CONTEXT_MODE — static (line 384)
211
- 12. BASE_PROMPT_GUIDELINES — static (line 390)
212
- 13. BASE_PROMPT_SYSTEM — static (line 397)
213
- 14. [BASE_PROMPT_SERVICES] — conditional on capabilities (line 421)
214
- 15. [BASE_PROMPT_ARTIFACTS] — conditional on capabilities (line 458)
215
- 16. [Capabilities list] — conditional (line 572)
216
- ```
217
-
218
- #### 2.2 Interpolation Pattern
219
-
220
- Uses **single-brace** `{placeholder}` with `.replace()` / `.replaceAll()`:
221
- - `BASE_PROMPT_ROLE.replace("{role}", role).replace("{agentId}", agentId)` (line 497)
222
- - `BASE_PROMPT_FILESYSTEM.replaceAll("{agentId}", agentId)` (line 545)
223
- - `BASE_PROMPT_AGENT_FS.replaceAll("{agentId}", agentId).replaceAll("{sharedOrgId}", sharedOrgId)` (line 550)
224
- - `BASE_PROMPT_SERVICES.replace("{agentId}", agentId).replace("{swarmUrl}", swarmUrl)` (line 562)
225
-
226
- This is distinct from both the `{{...}}` workflow interpolation and the `${...}` JS template literals used by event handlers.
227
-
228
- #### 2.3 Caller Chain
229
-
230
- 1. `runAgent()` in `src/commands/runner.ts` defines a `buildSystemPrompt()` closure (line 1519) that calls `getBasePrompt()`
231
- 2. Called **3 times** during lifecycle: initial (no identity), post-profile-fetch (identity populated), per-task (repo context set)
232
- 3. Result passed to `ProviderSessionConfig.systemPrompt` (line 1174)
233
- 4. Claude adapter: `--append-system-prompt` CLI flag (line 137 of `claude-adapter.ts`)
234
- 5. Pi-mono adapter: `ResourceLoader.appendSystemPrompt` (line 407 of `pi-mono-adapter.ts`)
235
-
236
- #### 2.4 Truncation System
237
-
238
- - `BOOTSTRAP_MAX_CHARS = 20_000` per section
239
- - `BOOTSTRAP_TOTAL_MAX_CHARS = 150_000` total budget
240
- - Protected content (prompt + staticSuffix) is measured first, remainder allocated to truncatable sections
241
- - Agent CLAUDE.md gets priority, TOOLS.md gets leftover budget
242
-
243
- #### 2.5 Dynamic Sections
244
-
245
- | Section | Condition | Source |
246
- |---------|-----------|--------|
247
- | Identity block | `soulMd \|\| identityMd \|\| name` | Agent profile from `/me` API |
248
- | Repo CLAUDE.md | Task has `vcsRepo` | Read from cloned repo |
249
- | Agent CLAUDE.md | `args.claudeMd` truthy | Profile `claudeMd` field |
250
- | Agent TOOLS.md | `args.toolsMd` truthy | Profile `toolsMd` field |
251
- | Lead vs Worker | `role === "lead"` | Runner config |
252
- | Agent-FS | `AGENT_FS_API_URL` env set | Environment |
253
- | Services | capabilities includes `"services"` | `CAPABILITIES` env var |
254
- | Artifacts | capabilities includes `"artifacts"` | `CAPABILITIES` env var |
255
-
256
- ---
257
-
258
- ### 3. Existing Config/Scope System
259
-
260
- #### 3.1 Database Schema (`src/be/migrations/001_initial.sql:246-258`)
261
-
262
- ```sql
263
- CREATE TABLE IF NOT EXISTS swarm_config (
264
- id TEXT PRIMARY KEY,
265
- scope TEXT NOT NULL CHECK(scope IN ('global', 'agent', 'repo')),
266
- scopeId TEXT,
267
- key TEXT NOT NULL,
268
- value TEXT NOT NULL,
269
- isSecret INTEGER NOT NULL DEFAULT 0,
270
- envPath TEXT,
271
- description TEXT,
272
- createdAt TEXT NOT NULL,
273
- lastUpdatedAt TEXT NOT NULL,
274
- UNIQUE(scope, scopeId, key)
275
- );
276
- ```
277
-
278
- #### 3.2 Scope Resolution (`src/be/db.ts:5058-5084`)
279
-
280
- `getResolvedConfig(agentId?, repoId?)` implements the overlay strategy:
281
- 1. Start with all `global` scope configs (keyed by `config.key`)
282
- 2. Overlay `agent`-scoped configs (same key overwrites global)
283
- 3. Overlay `repo`-scoped configs (same key overwrites both)
284
-
285
- **Resolution priority: `repo > agent > global`** — most specific wins.
286
-
287
- **NULL handling caveat:** SQLite treats `NULL != NULL` in UNIQUE constraints, so `UNIQUE(scope, scopeId, key)` doesn't fire for `scope=global` where `scopeId IS NULL`. The `upsertSwarmConfig()` function (line 4966) manually checks for existing entries instead of relying on `ON CONFLICT`.
288
-
289
- #### 3.3 Access Paths
290
-
291
- **MCP tools** (deferred, in `src/tools/swarm-config/`):
292
- - `set-config` — validates scope/scopeId consistency, upserts
293
- - `get-config` — calls `getResolvedConfig()`, masks secrets
294
- - `list-config` — raw listing, no resolution
295
- - `delete-config` — by UUID
296
-
297
- **REST API** (`src/http/config.ts`):
298
- - `GET /api/config/resolved` — merged config with scope resolution
299
- - `GET /api/config/{id}` — single entry
300
- - `GET /api/config` — raw list with filters
301
- - `PUT /api/config` — upsert
302
- - `DELETE /api/config/{id}` — delete
303
-
304
- **Types** (`src/types.ts:460-480`): `SwarmConfigScopeSchema = z.enum(["global", "agent", "repo"])`, `SwarmConfigSchema` with Zod validation.
305
-
306
- #### 3.4 Relevance to Prompt Template Registry
307
-
308
- The config system is a **structural precedent** for the proposed prompt template registry:
309
- - Same scope values (`global`, `agent`, `repo`)
310
- - Same `NULL` handling issue will apply to prompt templates
311
- - Same dual-access pattern (MCP tools + REST API)
312
- - The `envPath` + `writeEnvFile()` pattern shows config values can sync to external systems — analogous to how prompt templates would sync to the resolver cache
313
-
314
- **⚠️ Resolution order discrepancy:** The existing config system resolves **`repo > agent > global`** (repo overlaid last, wins over agent — `db.ts:5076`). However, the brainstorm proposes **`agent > repo > global`** (agent checked first, most specific). These are inverted. The plan needs to decide which precedence to adopt:
315
- - **Config precedent (repo > agent > global):** A repo-level override beats an agent-level one. Makes sense when repo conventions should be enforced regardless of agent.
316
- - **Brainstorm proposal (agent > repo > global):** An agent-level override beats a repo-level one. Makes sense when individual agents should be able to opt out of repo defaults.
317
-
318
- #### 3.5 Task Metadata Available at Resolution Time
319
-
320
- All event handlers call `createTaskExtended(task, options)` (`db.ts:1777`). The `CreateTaskOptions` interface (`db.ts:1707-1740`) provides the following metadata that would be available to the template resolver for scope resolution:
321
-
322
- | Field | Type | Relevance to resolver |
323
- |-------|------|----------------------|
324
- | `agentId` | `string?` | Agent scope lookup |
325
- | `vcsRepo` | `string?` | Repo scope lookup (e.g. `"desplega-ai/agent-swarm"`) |
326
- | `vcsProvider` | `"github" \| "gitlab"?` | Could differentiate GitHub vs GitLab templates |
327
- | `vcsEventType` | `string?` | Maps to event type taxonomy |
328
- | `taskType` | `string?` | Template selection key |
329
- | `source` | `AgentTaskSource?` | Origin (github, gitlab, slack, linear, etc.) |
330
- | `epicId` | `string?` | Epic context enrichment |
331
- | `tags` | `string[]?` | Could influence template selection |
332
- | `parentTaskId` | `string?` | For follow-up context inheritance |
333
- | `creatorAgentId` | `string?` | Who created the task |
334
- | `dir` | `string?` | Working directory context |
335
-
336
- The resolver would need at minimum `agentId` + `vcsRepo` for scope resolution, and `source` + `vcsEventType` (or `taskType`) for template selection.
337
-
338
- ---
339
-
340
- ### 4. Existing Template-Like Patterns
341
-
342
- #### 4.1 Workflow Interpolation (`src/workflows/template.ts`)
343
-
344
- **General-purpose `{{path.to.value}}` engine:**
345
- - `interpolate(template, context)` — regex `/\{\{([^}]+)\}\}/g`, dot-path resolution, replaces unresolved with empty string, tracks unresolved tokens
346
- - `deepInterpolate(value, context)` — recursive tree walk for objects/arrays
347
- - Returns `{ result: string, unresolved: string[] }`
348
-
349
- **Used by:** Agent profile template interpolation in `runner.ts:1700-1719` with context `{ agent: { name, role, description, capabilities } }`.
350
-
351
- **Gap for prompt template registry:** The brainstorm proposes `{{@template[event_type]}}` syntax for recursive template embedding (e.g., `{{@template[common.delegation_instruction]}}`). The existing `interpolate()` function does **not** support this — its regex `/\{\{([^}]+)\}\}/g` would match `@template[common.delegation_instruction]` as a dot-path and try to resolve it against the context object (failing silently, returning `""`). To support recursive embedding, the resolver would need to either:
352
- 1. **Extend `interpolate()`** with a pre-pass that detects `{{@template[...]}}` tokens, resolves them from the registry, and substitutes before variable interpolation
353
- 2. **Wrap `interpolate()`** in a resolver function that handles template references in a loop (with depth limit of 3 and cycle detection per the brainstorm)
354
-
355
- Option 2 (wrapping) is cleaner — keeps `interpolate()` unchanged and adds template-specific logic in a new `resolveTemplate()` function.
356
-
357
- #### 4.2 Workflow Template Instantiation (`src/workflows/templates.ts`)
358
-
359
- **Separate system for `WorkflowTemplate` objects:**
360
- - `validateTemplateVariables(variables, provided)` — checks required vars with defaults
361
- - `instantiateTemplate(template, variables)` — validates + deep-clones + replaces
362
- - `replaceStringPlaceholders(str, vars)` — regex `/\{\{(\w+)\}\}/g`, flat keys only, leaves unresolved as-is
363
-
364
- **Key difference:** Flat keys (`{{key}}`) vs dot-paths (`{{a.b.c}}`), and unresolved handling differs.
365
-
366
- #### 4.3 Base Prompt Interpolation (`src/prompts/base-prompt.ts`)
367
-
368
- **Single-brace `{placeholder}` with `.replace()`** — a third, distinct interpolation pattern. No regex, no unresolved tracking, simple string replacement.
369
-
370
- #### 4.4 Scheduled Tasks (`001_initial.sql:222`)
371
-
372
- `scheduled_tasks.taskTemplate` is a `TEXT NOT NULL` column storing task description strings. In `src/scheduler/scheduler.ts:35,125,285`, this value is passed directly to `createTaskExtended()` as the task description — **no interpolation performed**. This is the closest existing concept to "stored task description templates" but lacks any variable substitution.
373
-
374
- #### 4.5 Template Registry Types (`templates/schema.ts`)
375
-
376
- `TemplateConfig` and `TemplateResponse` types define the agent profile template system. Files (`claudeMd`, `soulMd`, `identityMd`, `toolsMd`, `setupScript`) contain `{{agent.*}}` tokens interpolated at registration time via the workflow `interpolate()` function.
377
-
378
- ---
379
-
380
- ## Code References
381
-
382
- | File | Lines | Description |
383
- |------|-------|-------------|
384
- | `src/github/handlers.ts` | 19-20, 25-38, 103-917 | GitHub event handler templates, DELEGATION_INSTRUCTION, getCommandSuggestions |
385
- | `src/gitlab/handlers.ts` | 33-34, 54-63, 94-311 | GitLab event handler templates, separate DELEGATION_INSTRUCTION |
386
- | `src/slack/handlers.ts` | 204-218, 424-499 | Thread context wrapping, user-facing messages |
387
- | `src/slack/assistant.ts` | 18-98 | Greeting, suggested prompts, offline message |
388
- | `src/agentmail/handlers.ts` | 112-197 | 5 email-to-task templates |
389
- | `src/linear/sync.ts` | 277-524 | Linear issue tasks and thought activities |
390
- | `src/heartbeat/heartbeat.ts` | 259-296 | Escalation task template |
391
- | `src/tools/store-progress.ts` | 183-279 | Memory content + follow-up task templates + epic context |
392
- | `src/commands/runner.ts` | 455-1129, 2176-2197 | Trigger prompts, resume prompts, context enrichment |
393
- | `src/hooks/hook.ts` | 88-1074 | 13 hook-injected messages (stdout + block responses) |
394
- | `src/providers/pi-mono-extension.ts` | 173-594 | 10 pi-mono mirror prompts |
395
- | `docker-entrypoint.sh` | 241-248 | Agent-fs invitation task |
396
- | `src/prompts/base-prompt.ts` | 1-638 | 12 system prompt constants + getBasePrompt() assembly |
397
- | `src/be/db.ts` | 4845-5084 | Config CRUD + scope resolution |
398
- | `src/be/migrations/001_initial.sql` | 246-258 | swarm_config table schema |
399
- | `src/http/config.ts` | 16-191 | Config REST API endpoints |
400
- | `src/tools/swarm-config/` | — | Config MCP tools (set, get, list, delete) |
401
- | `src/types.ts` | 460-480 | SwarmConfigSchema, SwarmConfigScopeSchema |
402
- | `src/workflows/template.ts` | 13-74 | `{{path.to.value}}` interpolation engine |
403
- | `src/workflows/templates.ts` | 7-86 | Workflow template instantiation + `{{key}}` replacement |
404
- | `templates/schema.ts` | 1-35 | Agent profile template types |
405
-
406
- ## Architecture Documentation
407
-
408
- ### Three Interpolation Patterns Coexisting
409
-
410
- | Pattern | Syntax | Engine | Unresolved Handling | Used By |
411
- |---------|--------|--------|-------------------|---------|
412
- | JS template literals | `${var}` | JavaScript runtime | N/A (compile-time) | Event handlers (GitHub, GitLab, Slack, etc.) |
413
- | Single-brace | `{var}` | `.replace()` / `.replaceAll()` | Left as-is | `getBasePrompt()` system prompt constants |
414
- | Double-brace (dot-path) | `{{a.b.c}}` | Regex + object walk | Replaced with `""` | Workflow interpolation, agent profile templates |
415
- | Double-brace (flat) | `{{key}}` | Regex + map lookup | Left as-is | Workflow template instantiation |
416
-
417
- ### Prompt Output Categories
418
-
419
- | Category | Count | Examples |
420
- |----------|-------|---------|
421
- | Task descriptions | ~30 | GitHub/GitLab events, AgentMail, Linear, heartbeat, follow-ups |
422
- | System prompt constants | 12 | BASE_PROMPT_ROLE through BASE_PROMPT_ARTIFACTS |
423
- | Hook-injected messages | ~13 | Progress reminders, cancellation blocks, goal reminders |
424
- | External platform messages | ~8 | Linear thoughts, Slack user messages, Slack status |
425
- | Memory content templates | 3 | Task completion/failure memory strings |
426
- | Session prompts (triggers) | 7 | task_assigned, task_offered, resume, epic progress, etc. |
427
-
428
- ### Hook/Extension Duplication
429
-
430
- `src/hooks/hook.ts` and `src/providers/pi-mono-extension.ts` contain **near-identical prompt strings** — the pi-mono extension mirrors Claude Code hooks for the alternative provider. This means any prompt change needs to be made in both files, a maintenance burden the registry would eliminate.
431
-
432
- ## Historical Context (from thoughts/)
433
-
434
- - `thoughts/taras/research/2026-03-10-configurable-event-prompts.md` — Earlier research on the same topic, likely a precursor to the brainstorm document
435
- - `thoughts/taras/brainstorms/2026-03-20-prompt-template-registry.md` — The brainstorm this research validates, containing key decisions on scope hierarchy, three-state control, seeded defaults, and audit history
436
-
437
- ## Related Research
438
-
439
- *(Earlier research at `2026-03-10-configurable-event-prompts.md` was a preliminary try — superseded by this document and the brainstorm.)*
440
-
441
- ## Resolved Questions (from review)
442
-
443
- - **Interpolation syntax:** ✅ Reuse the existing `interpolate()` from `src/workflows/template.ts` with good test coverage. No need for a dedicated resolver.
444
- - **Hook/extension prompts:** ✅ Out of scope — leave hook-injected messages (progress reminders, cancellation blocks, goal reminders) as hardcoded. They have different delivery mechanisms and don’t benefit from runtime customization.
445
- - **Pi-mono duplication:** ✅ Out of scope — don’t unify hook.ts / pi-mono-extension.ts through the registry. Only thing to consider is skill mapping differences added recently (if any).
446
- - **Scheduled task templates:** ✅ Out of scope — `scheduled_tasks.taskTemplate` is user/lead-defined, not system-defined. Could add interpolation later but not needed now.
447
- - **Memory content templates:** ✅ Out of scope — store-progress memory strings are tightly coupled to their logic, not worth abstracting into the registry.
448
-
449
- ## Open Questions
450
-
451
- - **Template structure:** Should templates separate a static `title` pattern (e.g. `[GitHub PR #{{pr.number}}] {{pr.title}}`) from a variable `body`? Many event types share the same header but differ in body content. This could simplify overrides — customize the body without touching the title.
452
- - **Skill mapping differences (pi-mono):** Were any skill mapping differences between hook.ts and pi-mono-extension.ts added recently that would affect template scoping?
453
-
454
- ---
455
-
456
- ## Review Errata
457
-
458
- _Reviewed: 2026-03-20 by Claude_
459
-
460
- ### Critical
461
- - [x] **Scope resolution order mismatch** — Section 3.4 claimed "same resolution strategy." Fixed: now explicitly flags that config uses `repo > agent > global` while brainstorm proposes `agent > repo > global`, with pros/cons for each. Decision deferred to plan phase.
462
-
463
- ### Important
464
- - [x] **Missing `createTaskExtended()` metadata analysis** — Added section 3.5 documenting all `CreateTaskOptions` fields available at resolution time, with relevance mapping for the template resolver.
465
- - [x] **`{{@template[...]}}` recursive embedding not assessed** — Added gap analysis in section 4.1 explaining that `interpolate()` doesn't support `{{@template[...]}}` syntax. Recommends wrapping (not extending) `interpolate()` in a new `resolveTemplate()` function for template references + cycle detection.
466
-
467
- ### Minor (auto-fixed)
468
- - [x] **Summary category count** — said "four categories" but table showed six. Fixed to "six categories."
469
- - [x] **Pi-mono prompt count clarity** — "10 prompts" referenced "6A-6M" without explaining the mapping. Expanded to list which 10 of 13 are mirrored and which 3 are hook-only.
package/tsconfig.json DELETED
@@ -1,37 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- // Environment setup & latest features
4
- "lib": ["ESNext"],
5
- "types": ["bun"],
6
- "target": "ESNext",
7
- "module": "Preserve",
8
- "moduleDetection": "force",
9
- "jsx": "react-jsx",
10
- "allowJs": true,
11
-
12
- // Bundler mode
13
- "moduleResolution": "bundler",
14
- "allowImportingTsExtensions": true,
15
-
16
- // Path aliases
17
- "baseUrl": ".",
18
- "paths": {
19
- "@/*": ["src/*"]
20
- },
21
- "verbatimModuleSyntax": true,
22
- "noEmit": true,
23
-
24
- // Best practices
25
- "strict": true,
26
- "skipLibCheck": true,
27
- "noFallthroughCasesInSwitch": true,
28
- "noUncheckedIndexedAccess": true,
29
- "noImplicitOverride": true,
30
-
31
- // Some stricter flags (disabled by default)
32
- "noUnusedLocals": false,
33
- "noUnusedParameters": false,
34
- "noPropertyAccessFromIndexSignature": false
35
- },
36
- "exclude": ["ui", "new-ui", "templates-ui", "landing", "node_modules", "scripts", "src/tests", "work", "logs", "plugin", "docs-site"]
37
- }