forge-server 0.1.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 (412) hide show
  1. package/.claude/hooks/worktree-create.sh +64 -0
  2. package/.claude/hooks/worktree-remove.sh +57 -0
  3. package/.claude/settings.local.json +29 -0
  4. package/.forge/knowledge/conventions.yaml +1 -0
  5. package/.forge/knowledge/decisions.yaml +1 -0
  6. package/.forge/knowledge/gotchas.yaml +1 -0
  7. package/.forge/knowledge/patterns.yaml +1 -0
  8. package/.forge/manifest.yaml +6 -0
  9. package/CLAUDE.md +144 -0
  10. package/bin/setup-forge.sh +132 -0
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +553 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/context/codebase.d.ts +57 -0
  16. package/dist/context/codebase.d.ts.map +1 -0
  17. package/dist/context/codebase.js +301 -0
  18. package/dist/context/codebase.js.map +1 -0
  19. package/dist/context/injector.d.ts +147 -0
  20. package/dist/context/injector.d.ts.map +1 -0
  21. package/dist/context/injector.js +533 -0
  22. package/dist/context/injector.js.map +1 -0
  23. package/dist/context/memory.d.ts +32 -0
  24. package/dist/context/memory.d.ts.map +1 -0
  25. package/dist/context/memory.js +140 -0
  26. package/dist/context/memory.js.map +1 -0
  27. package/dist/context/session-index.d.ts +54 -0
  28. package/dist/context/session-index.d.ts.map +1 -0
  29. package/dist/context/session-index.js +265 -0
  30. package/dist/context/session-index.js.map +1 -0
  31. package/dist/context/session.d.ts +42 -0
  32. package/dist/context/session.d.ts.map +1 -0
  33. package/dist/context/session.js +121 -0
  34. package/dist/context/session.js.map +1 -0
  35. package/dist/index.d.ts +3 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +37 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/ingestion/chunker.d.ts +19 -0
  40. package/dist/ingestion/chunker.d.ts.map +1 -0
  41. package/dist/ingestion/chunker.js +189 -0
  42. package/dist/ingestion/chunker.js.map +1 -0
  43. package/dist/ingestion/embedder.d.ts +45 -0
  44. package/dist/ingestion/embedder.d.ts.map +1 -0
  45. package/dist/ingestion/embedder.js +152 -0
  46. package/dist/ingestion/embedder.js.map +1 -0
  47. package/dist/ingestion/git-analyzer.d.ts +77 -0
  48. package/dist/ingestion/git-analyzer.d.ts.map +1 -0
  49. package/dist/ingestion/git-analyzer.js +437 -0
  50. package/dist/ingestion/git-analyzer.js.map +1 -0
  51. package/dist/ingestion/indexer.d.ts +79 -0
  52. package/dist/ingestion/indexer.d.ts.map +1 -0
  53. package/dist/ingestion/indexer.js +766 -0
  54. package/dist/ingestion/indexer.js.map +1 -0
  55. package/dist/ingestion/markdown-chunker.d.ts +19 -0
  56. package/dist/ingestion/markdown-chunker.d.ts.map +1 -0
  57. package/dist/ingestion/markdown-chunker.js +243 -0
  58. package/dist/ingestion/markdown-chunker.js.map +1 -0
  59. package/dist/ingestion/markdown-knowledge.d.ts +21 -0
  60. package/dist/ingestion/markdown-knowledge.d.ts.map +1 -0
  61. package/dist/ingestion/markdown-knowledge.js +129 -0
  62. package/dist/ingestion/markdown-knowledge.js.map +1 -0
  63. package/dist/ingestion/parser.d.ts +20 -0
  64. package/dist/ingestion/parser.d.ts.map +1 -0
  65. package/dist/ingestion/parser.js +429 -0
  66. package/dist/ingestion/parser.js.map +1 -0
  67. package/dist/ingestion/watcher.d.ts +28 -0
  68. package/dist/ingestion/watcher.d.ts.map +1 -0
  69. package/dist/ingestion/watcher.js +147 -0
  70. package/dist/ingestion/watcher.js.map +1 -0
  71. package/dist/knowledge/hydrator.d.ts +37 -0
  72. package/dist/knowledge/hydrator.d.ts.map +1 -0
  73. package/dist/knowledge/hydrator.js +220 -0
  74. package/dist/knowledge/hydrator.js.map +1 -0
  75. package/dist/knowledge/registry.d.ts +129 -0
  76. package/dist/knowledge/registry.d.ts.map +1 -0
  77. package/dist/knowledge/registry.js +361 -0
  78. package/dist/knowledge/registry.js.map +1 -0
  79. package/dist/knowledge/search.d.ts +114 -0
  80. package/dist/knowledge/search.d.ts.map +1 -0
  81. package/dist/knowledge/search.js +428 -0
  82. package/dist/knowledge/search.js.map +1 -0
  83. package/dist/knowledge/store.d.ts +76 -0
  84. package/dist/knowledge/store.d.ts.map +1 -0
  85. package/dist/knowledge/store.js +230 -0
  86. package/dist/knowledge/store.js.map +1 -0
  87. package/dist/learning/confidence.d.ts +30 -0
  88. package/dist/learning/confidence.d.ts.map +1 -0
  89. package/dist/learning/confidence.js +165 -0
  90. package/dist/learning/confidence.js.map +1 -0
  91. package/dist/learning/patterns.d.ts +52 -0
  92. package/dist/learning/patterns.d.ts.map +1 -0
  93. package/dist/learning/patterns.js +290 -0
  94. package/dist/learning/patterns.js.map +1 -0
  95. package/dist/learning/trajectory.d.ts +55 -0
  96. package/dist/learning/trajectory.d.ts.map +1 -0
  97. package/dist/learning/trajectory.js +200 -0
  98. package/dist/learning/trajectory.js.map +1 -0
  99. package/dist/memory/memory-compat.d.ts +100 -0
  100. package/dist/memory/memory-compat.d.ts.map +1 -0
  101. package/dist/memory/memory-compat.js +146 -0
  102. package/dist/memory/memory-compat.js.map +1 -0
  103. package/dist/memory/observation-store.d.ts +57 -0
  104. package/dist/memory/observation-store.d.ts.map +1 -0
  105. package/dist/memory/observation-store.js +154 -0
  106. package/dist/memory/observation-store.js.map +1 -0
  107. package/dist/memory/session-tracker.d.ts +81 -0
  108. package/dist/memory/session-tracker.d.ts.map +1 -0
  109. package/dist/memory/session-tracker.js +262 -0
  110. package/dist/memory/session-tracker.js.map +1 -0
  111. package/dist/pipeline/engine.d.ts +179 -0
  112. package/dist/pipeline/engine.d.ts.map +1 -0
  113. package/dist/pipeline/engine.js +691 -0
  114. package/dist/pipeline/engine.js.map +1 -0
  115. package/dist/pipeline/events.d.ts +54 -0
  116. package/dist/pipeline/events.d.ts.map +1 -0
  117. package/dist/pipeline/events.js +157 -0
  118. package/dist/pipeline/events.js.map +1 -0
  119. package/dist/pipeline/parallel.d.ts +83 -0
  120. package/dist/pipeline/parallel.d.ts.map +1 -0
  121. package/dist/pipeline/parallel.js +277 -0
  122. package/dist/pipeline/parallel.js.map +1 -0
  123. package/dist/pipeline/state-machine.d.ts +65 -0
  124. package/dist/pipeline/state-machine.d.ts.map +1 -0
  125. package/dist/pipeline/state-machine.js +176 -0
  126. package/dist/pipeline/state-machine.js.map +1 -0
  127. package/dist/query/graph-queries.d.ts +84 -0
  128. package/dist/query/graph-queries.d.ts.map +1 -0
  129. package/dist/query/graph-queries.js +216 -0
  130. package/dist/query/graph-queries.js.map +1 -0
  131. package/dist/query/hybrid-search.d.ts +34 -0
  132. package/dist/query/hybrid-search.d.ts.map +1 -0
  133. package/dist/query/hybrid-search.js +263 -0
  134. package/dist/query/hybrid-search.js.map +1 -0
  135. package/dist/query/intent-detector.d.ts +35 -0
  136. package/dist/query/intent-detector.d.ts.map +1 -0
  137. package/dist/query/intent-detector.js +115 -0
  138. package/dist/query/intent-detector.js.map +1 -0
  139. package/dist/query/ranking.d.ts +57 -0
  140. package/dist/query/ranking.d.ts.map +1 -0
  141. package/dist/query/ranking.js +109 -0
  142. package/dist/query/ranking.js.map +1 -0
  143. package/dist/server.d.ts +3 -0
  144. package/dist/server.d.ts.map +1 -0
  145. package/dist/server.js +291 -0
  146. package/dist/server.js.map +1 -0
  147. package/dist/storage/falkordb-store.d.ts +73 -0
  148. package/dist/storage/falkordb-store.d.ts.map +1 -0
  149. package/dist/storage/falkordb-store.js +346 -0
  150. package/dist/storage/falkordb-store.js.map +1 -0
  151. package/dist/storage/file-cache.d.ts +32 -0
  152. package/dist/storage/file-cache.d.ts.map +1 -0
  153. package/dist/storage/file-cache.js +115 -0
  154. package/dist/storage/file-cache.js.map +1 -0
  155. package/dist/storage/interfaces.d.ts +151 -0
  156. package/dist/storage/interfaces.d.ts.map +1 -0
  157. package/dist/storage/interfaces.js +7 -0
  158. package/dist/storage/interfaces.js.map +1 -0
  159. package/dist/storage/qdrant-store.d.ts +110 -0
  160. package/dist/storage/qdrant-store.d.ts.map +1 -0
  161. package/dist/storage/qdrant-store.js +467 -0
  162. package/dist/storage/qdrant-store.js.map +1 -0
  163. package/dist/storage/schema.d.ts +4 -0
  164. package/dist/storage/schema.d.ts.map +1 -0
  165. package/dist/storage/schema.js +136 -0
  166. package/dist/storage/schema.js.map +1 -0
  167. package/dist/storage/sqlite.d.ts +35 -0
  168. package/dist/storage/sqlite.d.ts.map +1 -0
  169. package/dist/storage/sqlite.js +132 -0
  170. package/dist/storage/sqlite.js.map +1 -0
  171. package/dist/tools/collaboration-tools.d.ts +111 -0
  172. package/dist/tools/collaboration-tools.d.ts.map +1 -0
  173. package/dist/tools/collaboration-tools.js +174 -0
  174. package/dist/tools/collaboration-tools.js.map +1 -0
  175. package/dist/tools/context-tools.d.ts +293 -0
  176. package/dist/tools/context-tools.d.ts.map +1 -0
  177. package/dist/tools/context-tools.js +437 -0
  178. package/dist/tools/context-tools.js.map +1 -0
  179. package/dist/tools/graph-tools.d.ts +129 -0
  180. package/dist/tools/graph-tools.d.ts.map +1 -0
  181. package/dist/tools/graph-tools.js +237 -0
  182. package/dist/tools/graph-tools.js.map +1 -0
  183. package/dist/tools/ingestion-tools.d.ts +96 -0
  184. package/dist/tools/ingestion-tools.d.ts.map +1 -0
  185. package/dist/tools/ingestion-tools.js +90 -0
  186. package/dist/tools/ingestion-tools.js.map +1 -0
  187. package/dist/tools/learning-tools.d.ts +168 -0
  188. package/dist/tools/learning-tools.d.ts.map +1 -0
  189. package/dist/tools/learning-tools.js +158 -0
  190. package/dist/tools/learning-tools.js.map +1 -0
  191. package/dist/tools/memory-tools.d.ts +183 -0
  192. package/dist/tools/memory-tools.d.ts.map +1 -0
  193. package/dist/tools/memory-tools.js +197 -0
  194. package/dist/tools/memory-tools.js.map +1 -0
  195. package/dist/tools/phase-tools.d.ts +954 -0
  196. package/dist/tools/phase-tools.d.ts.map +1 -0
  197. package/dist/tools/phase-tools.js +1215 -0
  198. package/dist/tools/phase-tools.js.map +1 -0
  199. package/dist/tools/pipeline-tools.d.ts +140 -0
  200. package/dist/tools/pipeline-tools.d.ts.map +1 -0
  201. package/dist/tools/pipeline-tools.js +162 -0
  202. package/dist/tools/pipeline-tools.js.map +1 -0
  203. package/dist/tools/registration-tools.d.ts +220 -0
  204. package/dist/tools/registration-tools.d.ts.map +1 -0
  205. package/dist/tools/registration-tools.js +391 -0
  206. package/dist/tools/registration-tools.js.map +1 -0
  207. package/dist/util/circuit-breaker.d.ts +75 -0
  208. package/dist/util/circuit-breaker.d.ts.map +1 -0
  209. package/dist/util/circuit-breaker.js +159 -0
  210. package/dist/util/circuit-breaker.js.map +1 -0
  211. package/dist/util/config.d.ts +23 -0
  212. package/dist/util/config.d.ts.map +1 -0
  213. package/dist/util/config.js +164 -0
  214. package/dist/util/config.js.map +1 -0
  215. package/dist/util/logger.d.ts +13 -0
  216. package/dist/util/logger.d.ts.map +1 -0
  217. package/dist/util/logger.js +45 -0
  218. package/dist/util/logger.js.map +1 -0
  219. package/dist/util/token-counter.d.ts +24 -0
  220. package/dist/util/token-counter.d.ts.map +1 -0
  221. package/dist/util/token-counter.js +48 -0
  222. package/dist/util/token-counter.js.map +1 -0
  223. package/dist/util/types.d.ts +525 -0
  224. package/dist/util/types.d.ts.map +1 -0
  225. package/dist/util/types.js +5 -0
  226. package/dist/util/types.js.map +1 -0
  227. package/docker-compose.yml +20 -0
  228. package/docs/plans/2026-02-27-swarm-coordination/architecture.md +203 -0
  229. package/docs/plans/2026-02-27-swarm-coordination/vision.md +57 -0
  230. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +1 -0
  231. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +300 -0
  232. package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +480 -0
  233. package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +462 -0
  234. package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +181 -0
  235. package/package.json +39 -0
  236. package/plugin/.claude-plugin/plugin.json +8 -0
  237. package/plugin/.mcp.json +15 -0
  238. package/plugin/README.md +134 -0
  239. package/plugin/agents/architect.md +367 -0
  240. package/plugin/agents/backend-specialist.md +263 -0
  241. package/plugin/agents/brainstormer.md +122 -0
  242. package/plugin/agents/data-specialist.md +266 -0
  243. package/plugin/agents/designer.md +408 -0
  244. package/plugin/agents/frontend-specialist.md +241 -0
  245. package/plugin/agents/inspector.md +406 -0
  246. package/plugin/agents/knowledge-keeper.md +443 -0
  247. package/plugin/agents/platform-engineer.md +326 -0
  248. package/plugin/agents/product-manager.md +268 -0
  249. package/plugin/agents/product-owner.md +438 -0
  250. package/plugin/agents/pulse-checker.md +73 -0
  251. package/plugin/agents/qa-strategist.md +500 -0
  252. package/plugin/agents/self-improver.md +310 -0
  253. package/plugin/agents/strategist.md +360 -0
  254. package/plugin/agents/supervisor.md +380 -0
  255. package/plugin/commands/brainstorm.md +25 -0
  256. package/plugin/commands/forge.md +88 -0
  257. package/plugin/docs/atlassian-integration.md +110 -0
  258. package/plugin/docs/workflow.md +126 -0
  259. package/plugin/skills/agent-development/.skillfish.json +10 -0
  260. package/plugin/skills/agent-development/SKILL.md +415 -0
  261. package/plugin/skills/agent-development/examples/agent-creation-prompt.md +238 -0
  262. package/plugin/skills/agent-development/examples/complete-agent-examples.md +427 -0
  263. package/plugin/skills/agent-development/references/agent-creation-system-prompt.md +207 -0
  264. package/plugin/skills/agent-development/references/system-prompt-design.md +411 -0
  265. package/plugin/skills/agent-development/references/triggering-examples.md +491 -0
  266. package/plugin/skills/agent-development/scripts/validate-agent.sh +217 -0
  267. package/plugin/skills/agent-handoff/SKILL.md +335 -0
  268. package/plugin/skills/anti-stub/SKILL.md +317 -0
  269. package/plugin/skills/brainstorm/SKILL.md +31 -0
  270. package/plugin/skills/debugging/SKILL.md +276 -0
  271. package/plugin/skills/fix/SKILL.md +62 -0
  272. package/plugin/skills/frontend-design/.skillfish.json +10 -0
  273. package/plugin/skills/frontend-design/SKILL.md +42 -0
  274. package/plugin/skills/gotchas/SKILL.md +61 -0
  275. package/plugin/skills/graph-orchestrator/SKILL.md +38 -0
  276. package/plugin/skills/history/SKILL.md +58 -0
  277. package/plugin/skills/impact/SKILL.md +59 -0
  278. package/plugin/skills/implementation-execution/SKILL.md +291 -0
  279. package/plugin/skills/index-repo/SKILL.md +55 -0
  280. package/plugin/skills/interviewing/SKILL.md +225 -0
  281. package/plugin/skills/knowledge-curation/SKILL.md +393 -0
  282. package/plugin/skills/learn/SKILL.md +69 -0
  283. package/plugin/skills/mcp-integration/.skillfish.json +10 -0
  284. package/plugin/skills/mcp-integration/SKILL.md +554 -0
  285. package/plugin/skills/mcp-integration/examples/http-server.json +20 -0
  286. package/plugin/skills/mcp-integration/examples/sse-server.json +19 -0
  287. package/plugin/skills/mcp-integration/examples/stdio-server.json +26 -0
  288. package/plugin/skills/mcp-integration/references/authentication.md +549 -0
  289. package/plugin/skills/mcp-integration/references/server-types.md +536 -0
  290. package/plugin/skills/mcp-integration/references/tool-usage.md +538 -0
  291. package/plugin/skills/nestjs/.skillfish.json +10 -0
  292. package/plugin/skills/nestjs/SKILL.md +669 -0
  293. package/plugin/skills/nestjs/drizzle-reference.md +1894 -0
  294. package/plugin/skills/nestjs/reference.md +1447 -0
  295. package/plugin/skills/nestjs/workflow-optimization.md +229 -0
  296. package/plugin/skills/parallel-dispatch/SKILL.md +308 -0
  297. package/plugin/skills/project-discovery/SKILL.md +304 -0
  298. package/plugin/skills/search/SKILL.md +56 -0
  299. package/plugin/skills/security-audit/SKILL.md +362 -0
  300. package/plugin/skills/skill-development/.skillfish.json +10 -0
  301. package/plugin/skills/skill-development/SKILL.md +637 -0
  302. package/plugin/skills/skill-development/references/skill-creator-original.md +209 -0
  303. package/plugin/skills/tdd/SKILL.md +273 -0
  304. package/plugin/skills/terminal-presentation/SKILL.md +395 -0
  305. package/plugin/skills/test-strategy/SKILL.md +365 -0
  306. package/plugin/skills/verification-protocol/SKILL.md +256 -0
  307. package/plugin/skills/visual-explainer/CHANGELOG.md +97 -0
  308. package/plugin/skills/visual-explainer/LICENSE +21 -0
  309. package/plugin/skills/visual-explainer/README.md +137 -0
  310. package/plugin/skills/visual-explainer/SKILL.md +352 -0
  311. package/plugin/skills/visual-explainer/banner.png +0 -0
  312. package/plugin/skills/visual-explainer/package.json +11 -0
  313. package/plugin/skills/visual-explainer/prompts/diff-review.md +68 -0
  314. package/plugin/skills/visual-explainer/prompts/fact-check.md +63 -0
  315. package/plugin/skills/visual-explainer/prompts/generate-slides.md +18 -0
  316. package/plugin/skills/visual-explainer/prompts/generate-web-diagram.md +10 -0
  317. package/plugin/skills/visual-explainer/prompts/plan-review.md +86 -0
  318. package/plugin/skills/visual-explainer/prompts/project-recap.md +61 -0
  319. package/plugin/skills/visual-explainer/references/css-patterns.md +1188 -0
  320. package/plugin/skills/visual-explainer/references/libraries.md +470 -0
  321. package/plugin/skills/visual-explainer/references/responsive-nav.md +212 -0
  322. package/plugin/skills/visual-explainer/references/slide-patterns.md +1403 -0
  323. package/plugin/skills/visual-explainer/templates/architecture.html +596 -0
  324. package/plugin/skills/visual-explainer/templates/data-table.html +540 -0
  325. package/plugin/skills/visual-explainer/templates/mermaid-flowchart.html +435 -0
  326. package/plugin/skills/visual-explainer/templates/slide-deck.html +913 -0
  327. package/src/cli.ts +655 -0
  328. package/src/context/.gitkeep +0 -0
  329. package/src/context/codebase.ts +393 -0
  330. package/src/context/injector.ts +797 -0
  331. package/src/context/memory.ts +187 -0
  332. package/src/context/session-index.ts +327 -0
  333. package/src/context/session.ts +152 -0
  334. package/src/index.ts +47 -0
  335. package/src/ingestion/.gitkeep +0 -0
  336. package/src/ingestion/chunker.ts +277 -0
  337. package/src/ingestion/embedder.ts +167 -0
  338. package/src/ingestion/git-analyzer.ts +545 -0
  339. package/src/ingestion/indexer.ts +984 -0
  340. package/src/ingestion/markdown-chunker.ts +337 -0
  341. package/src/ingestion/markdown-knowledge.ts +175 -0
  342. package/src/ingestion/parser.ts +475 -0
  343. package/src/ingestion/watcher.ts +182 -0
  344. package/src/knowledge/.gitkeep +0 -0
  345. package/src/knowledge/hydrator.ts +246 -0
  346. package/src/knowledge/registry.ts +463 -0
  347. package/src/knowledge/search.ts +565 -0
  348. package/src/knowledge/store.ts +262 -0
  349. package/src/learning/.gitkeep +0 -0
  350. package/src/learning/confidence.ts +193 -0
  351. package/src/learning/patterns.ts +360 -0
  352. package/src/learning/trajectory.ts +268 -0
  353. package/src/memory/.gitkeep +0 -0
  354. package/src/memory/memory-compat.ts +233 -0
  355. package/src/memory/observation-store.ts +224 -0
  356. package/src/memory/session-tracker.ts +332 -0
  357. package/src/pipeline/.gitkeep +0 -0
  358. package/src/pipeline/engine.ts +1139 -0
  359. package/src/pipeline/events.ts +253 -0
  360. package/src/pipeline/parallel.ts +394 -0
  361. package/src/pipeline/state-machine.ts +199 -0
  362. package/src/query/.gitkeep +0 -0
  363. package/src/query/graph-queries.ts +262 -0
  364. package/src/query/hybrid-search.ts +337 -0
  365. package/src/query/intent-detector.ts +131 -0
  366. package/src/query/ranking.ts +161 -0
  367. package/src/server.ts +352 -0
  368. package/src/storage/.gitkeep +0 -0
  369. package/src/storage/falkordb-store.ts +388 -0
  370. package/src/storage/file-cache.ts +141 -0
  371. package/src/storage/interfaces.ts +201 -0
  372. package/src/storage/qdrant-store.ts +557 -0
  373. package/src/storage/schema.ts +139 -0
  374. package/src/storage/sqlite.ts +168 -0
  375. package/src/tools/.gitkeep +0 -0
  376. package/src/tools/collaboration-tools.ts +208 -0
  377. package/src/tools/context-tools.ts +493 -0
  378. package/src/tools/graph-tools.ts +295 -0
  379. package/src/tools/ingestion-tools.ts +122 -0
  380. package/src/tools/learning-tools.ts +181 -0
  381. package/src/tools/memory-tools.ts +234 -0
  382. package/src/tools/phase-tools.ts +1452 -0
  383. package/src/tools/pipeline-tools.ts +188 -0
  384. package/src/tools/registration-tools.ts +450 -0
  385. package/src/util/.gitkeep +0 -0
  386. package/src/util/circuit-breaker.ts +193 -0
  387. package/src/util/config.ts +177 -0
  388. package/src/util/logger.ts +53 -0
  389. package/src/util/token-counter.ts +52 -0
  390. package/src/util/types.ts +710 -0
  391. package/tests/context/.gitkeep +0 -0
  392. package/tests/integration/.gitkeep +0 -0
  393. package/tests/knowledge/.gitkeep +0 -0
  394. package/tests/learning/.gitkeep +0 -0
  395. package/tests/pipeline/.gitkeep +0 -0
  396. package/tests/tools/.gitkeep +0 -0
  397. package/tsconfig.json +21 -0
  398. package/vitest.config.ts +10 -0
  399. package/vscode-extension/.vscodeignore +7 -0
  400. package/vscode-extension/README.md +43 -0
  401. package/vscode-extension/out/edge-collector.js +274 -0
  402. package/vscode-extension/out/edge-collector.js.map +1 -0
  403. package/vscode-extension/out/extension.js +264 -0
  404. package/vscode-extension/out/extension.js.map +1 -0
  405. package/vscode-extension/out/forge-client.js +318 -0
  406. package/vscode-extension/out/forge-client.js.map +1 -0
  407. package/vscode-extension/package-lock.json +59 -0
  408. package/vscode-extension/package.json +71 -0
  409. package/vscode-extension/src/edge-collector.ts +320 -0
  410. package/vscode-extension/src/extension.ts +269 -0
  411. package/vscode-extension/src/forge-client.ts +364 -0
  412. package/vscode-extension/tsconfig.json +19 -0
@@ -0,0 +1,395 @@
1
+ ---
2
+ name: terminal-presentation
3
+ description: This skill should be used for ALL terminal output formatting across the forge system. It defines the universal output standard for agent communication, status updates, summaries, error reports, plan presentations, and all user-facing content. Every forge agent references this skill.
4
+ user-invocable: false
5
+ ---
6
+
7
+ # Terminal Presentation Skill
8
+
9
+ ## Purpose
10
+
11
+ Define the universal output formatting standard for every agent in the Forge system. All user-facing content -- status updates, interview questions, plan summaries, error reports, verification results, and agent handoff messages -- must follow these rules. Consistency across agents builds trust and makes output scannable.
12
+
13
+ ---
14
+
15
+ ## Visual Hierarchy Rules
16
+
17
+ ### Horizontal Rules (`---`)
18
+
19
+ Use `---` to separate major sections of output. Every top-level section boundary gets a horizontal rule. Do not use horizontal rules inside sections -- use headers or blank lines for sub-section separation.
20
+
21
+ ```
22
+ ---
23
+
24
+ ## Section One
25
+ Content here.
26
+
27
+ ---
28
+
29
+ ## Section Two
30
+ Content here.
31
+
32
+ ---
33
+ ```
34
+
35
+ ### Headers (`##` and `###`)
36
+
37
+ Use `##` for primary sections and `###` for sub-sections. Do not use `#` (H1) in terminal output -- it is reserved for document titles in written files. Do not go deeper than `###` in terminal output; use bold text or indentation for further nesting.
38
+
39
+ ```
40
+ ## Primary Section
41
+
42
+ ### Sub-Section
43
+
44
+ **Detail point**: Explanation here.
45
+ ```
46
+
47
+ ### Blockquotes (`>`)
48
+
49
+ Use blockquotes for three purposes:
50
+ 1. **Decision points**: When presenting a decision that requires user input.
51
+ 2. **Callouts**: When highlighting a critical finding, warning, or constraint.
52
+ 3. **Emphasis**: When a single statement needs to stand apart from surrounding content.
53
+
54
+ ```
55
+ > This is a decision point. Choose one of the following options.
56
+
57
+ > WARNING: The existing database schema does not support multi-tenancy.
58
+ > This will require a migration that affects all existing data.
59
+ ```
60
+
61
+ Do not use blockquotes for general content. They lose their emphasis when overused.
62
+
63
+ ### Blank Lines
64
+
65
+ Insert one blank line after every header. Insert one blank line between list items only when items are multi-line. Insert two blank lines before a horizontal rule section separator (one blank line + the rule itself). Do not stack blank lines -- two consecutive blank lines is the maximum.
66
+
67
+ ### Box-Drawing Characters
68
+
69
+ Use Unicode box-drawing characters for emphasis boxes when presenting critical information, summary panels, or phase boundaries:
70
+
71
+ ```
72
+ ┌─────────────────────────────────────────────┐
73
+ │ VERIFICATION COMPLETE │
74
+ │ Status: PASSED │
75
+ │ Checks: 7/7 │
76
+ │ Blockers: 0 Warnings: 2 │
77
+ └─────────────────────────────────────────────┘
78
+ ```
79
+
80
+ Reserve box-drawing for:
81
+ - Final status summaries (pass/fail panels)
82
+ - Phase transition markers
83
+ - Critical alerts that must not be missed
84
+
85
+ Do not use box-drawing for routine content. Overuse dilutes its emphasis.
86
+
87
+ ---
88
+
89
+ ## Agent Identification
90
+
91
+ Every agent must identify itself at the start of its output. Use the agent's role name with a color marker.
92
+
93
+ ### Standard Agent Header Format
94
+
95
+ ```
96
+ --- {ROLE} ---
97
+ ```
98
+
99
+ Where `{ROLE}` is the agent's role name in uppercase (e.g., `STRATEGIST`, `ARCHITECT`, `INSPECTOR`, `DESIGNER`).
100
+
101
+ Each agent has an assigned color for its frontmatter. When presenting in environments that support color (and only then), use the assigned color. In plain text environments, rely on the role name alone.
102
+
103
+ Agent color assignments (from agent definitions):
104
+ - **Strategist**: magenta
105
+ - **Product Manager**: cyan
106
+ - **Architect**: blue
107
+ - **Designer**: green
108
+
109
+ Additional agents should declare their color in their agent definition. When no color is assigned, default to no color styling.
110
+
111
+ ### Status Update Format
112
+
113
+ When reporting status, use this structure:
114
+
115
+ ```
116
+ --- {ROLE} ---
117
+ Phase: {Current Phase}
118
+ Status: {On Track | At Risk | Blocked}
119
+
120
+ ## Summary
121
+ {2-4 sentences on what happened since last report}
122
+
123
+ ## Completed
124
+ - {Item 1}
125
+ - {Item 2}
126
+
127
+ ## Next Action
128
+ - {What happens next}
129
+
130
+ ---
131
+ ```
132
+
133
+ ---
134
+
135
+ ## Interview Formatting
136
+
137
+ When conducting interviews (using the **interviewing** skill), apply these formatting rules:
138
+
139
+ ### Opening Context Summary
140
+
141
+ Before the first question, present a brief context block summarizing what is already known:
142
+
143
+ ```
144
+ ---
145
+
146
+ ## Interview: {Topic}
147
+
148
+ > Context: {1-3 sentences summarizing what is known so far --
149
+ > the vision, prior decisions, or the trigger for this interview.}
150
+
151
+ ---
152
+ ```
153
+
154
+ ### Question Presentation
155
+
156
+ Present exactly one question per message. Frame each question with context from prior answers:
157
+
158
+ ```
159
+ Based on your requirement for {X}, I want to clarify {Y}.
160
+
161
+ **{Question text}**
162
+
163
+ > A) **{Option label}** -- {Brief description of this option and its implications}
164
+ > B) **{Option label}** -- {Brief description of this option and its implications}
165
+ > C) **{Option label}** -- {Brief description of this option and its implications}
166
+ > D) **Something else** -- Describe what you have in mind
167
+ ```
168
+
169
+ Use descriptive option labels, not bare keywords. "A) Server-side rendering -- initial page load served by Node, hydrated on client" is better than "A) SSR."
170
+
171
+ ### Recap Formatting
172
+
173
+ At the end of an interview round, present the recap as:
174
+
175
+ ```
176
+ ---
177
+
178
+ ## Interview Recap
179
+
180
+ > Round {N} complete. Here is what we have established:
181
+
182
+ ### Decisions
183
+ - **{Topic}**: {Decision} -- {Rationale}
184
+ - **{Topic}**: {Decision} -- {Rationale}
185
+
186
+ ### Deferred
187
+ - {Item}: {Why deferred}
188
+
189
+ ### Scope
190
+ - **In**: {List of in-scope items}
191
+ - **Out**: {List of out-of-scope items}
192
+
193
+ > Does this accurately capture what we discussed? Anything to correct or add?
194
+
195
+ ---
196
+ ```
197
+
198
+ ---
199
+
200
+ ## Data Presentation
201
+
202
+ ### Lists Over Tables
203
+
204
+ Prefer bulleted or numbered lists over tables for most data presentation. Lists are easier to scan in a terminal, wrap correctly at any width, and do not break when content varies in length.
205
+
206
+ Use tables only when:
207
+ - Data has 3+ columns that are meaningfully related.
208
+ - Comparison across rows is the primary purpose (e.g., trade-off matrices, risk registers).
209
+ - The content in each cell is short (under 30 characters per cell).
210
+
211
+ ### Table Formatting (When Used)
212
+
213
+ Keep columns narrow. Abbreviate headers. Align columns with pipes and dashes. Do not attempt complex multi-line cells in terminal tables.
214
+
215
+ ```
216
+ | Risk | Likelihood | Impact | Mitigation |
217
+ |---------------|-----------|--------|----------------------|
218
+ | Data loss | Low | High | Automated backups |
219
+ | Auth bypass | Medium | High | Pen test + code audit|
220
+ ```
221
+
222
+ If a table would exceed 80 characters wide, either:
223
+ 1. Abbreviate content to fit.
224
+ 2. Split into multiple narrower tables.
225
+ 3. Convert to a list format with bold labels.
226
+
227
+ ### Code Blocks
228
+
229
+ Always use fenced code blocks with a language tag when presenting code:
230
+
231
+ ````
232
+ ```typescript
233
+ const result = await this.service.findAll();
234
+ ```
235
+ ````
236
+
237
+ For shell commands, use `bash` or `sh` as the language tag:
238
+
239
+ ````
240
+ ```bash
241
+ npm run db:generate && npm run db:migrate
242
+ ```
243
+ ````
244
+
245
+ For file paths, configuration snippets, or structured data without a clear language, use `text`:
246
+
247
+ ````
248
+ ```text
249
+ docs/plans/2026-02-25-notification-system/
250
+ vision.md
251
+ requirements.md
252
+ architecture.md
253
+ xd-plan.md
254
+ ```
255
+ ````
256
+
257
+ ### Progressive Disclosure
258
+
259
+ When presenting complex information, use the bold-summary-then-detail pattern:
260
+
261
+ ```
262
+ - **Authentication**: JWT-based with JWKS rotation.
263
+ Uses Auth0 as the identity provider. Tokens validated on every request
264
+ via the AuthGuard. Refresh tokens stored server-side with 7-day TTL.
265
+
266
+ - **Authorization**: Role-based with resource-level permissions.
267
+ Three roles: admin, editor, viewer. Resource ownership checked at the
268
+ service layer. No client-side role enforcement.
269
+ ```
270
+
271
+ The bold summary allows scanning. The indented detail is there for those who need it.
272
+
273
+ ---
274
+
275
+ ## Error and Warning Presentation
276
+
277
+ ### Severity Markers
278
+
279
+ Use consistent severity markers for all error and warning output:
280
+
281
+ ```
282
+ [BLOCKER] {Description} --> {Suggested fix}
283
+ [MAJOR] {Description} --> {Suggested fix}
284
+ [MINOR] {Description} --> {Suggested fix}
285
+ [INFO] {Description}
286
+ ```
287
+
288
+ ### Error Report Structure
289
+
290
+ When presenting verification failures, security findings, or build errors:
291
+
292
+ ```
293
+ ---
294
+
295
+ ## {Agent} Findings
296
+
297
+ ### Blockers (must fix before proceeding)
298
+ - [BLOCKER] **{Location}**: {Description}
299
+ Fix: {Specific action to take}
300
+
301
+ ### Major Issues (should fix, may defer with justification)
302
+ - [MAJOR] **{Location}**: {Description}
303
+ Fix: {Specific action to take}
304
+
305
+ ### Minor Issues (fix when convenient)
306
+ - [MINOR] **{Location}**: {Description}
307
+
308
+ ### Passed Checks
309
+ - {Check name}: PASSED
310
+ - {Check name}: PASSED
311
+
312
+ ---
313
+ ```
314
+
315
+ Always list passed checks after failures. Seeing what passed provides context for what failed and reassures the user that the non-failing areas were actually checked.
316
+
317
+ ---
318
+
319
+ ## Escalation to HTML
320
+
321
+ Terminal formatting has limits. When content exceeds what the terminal can present clearly, generate an HTML file and reference it.
322
+
323
+ ### When to Escalate to HTML
324
+
325
+ - **Tables with 4+ rows and 4+ columns**: Terminal tables become unreadable at this size.
326
+ - **Architecture diagrams**: System topology, data flow diagrams, module dependency graphs.
327
+ - **Complex comparison matrices**: Feature comparison tables, migration plans with multiple dimensions.
328
+ - **Design system previews**: Color palettes, typography scales, component galleries.
329
+ - **Timeline or Gantt-style views**: Phase plans with dependencies and parallel tracks.
330
+
331
+ ### How to Escalate
332
+
333
+ 1. Generate a self-contained HTML file (inline CSS, no external dependencies) using a clean, professional visual style.
334
+ 2. Write it to the plan folder: `docs/plans/{plan-folder}/{descriptive-name}.html`.
335
+ 3. In the terminal, present a brief summary and reference the file:
336
+
337
+ ```
338
+ > Full architecture diagram written to:
339
+ > `docs/plans/2026-02-25-notification-system/architecture-diagram.html`
340
+ >
341
+ > Open in a browser for the visual overview. Summary below:
342
+
343
+ - 4 services: API Gateway, Notification Service, Email Worker, WebSocket Server
344
+ - Message broker: SQS with DLQ for failed deliveries
345
+ - Database: Shared RDS Postgres instance, separate schemas per service
346
+ ```
347
+
348
+ The terminal gets the summary for quick scanning. The HTML file gets the full visual treatment. Use terminal for interaction; use HTML for complex presentation.
349
+
350
+ ---
351
+
352
+ ## Plan Presentation
353
+
354
+ When presenting a completed plan document (vision, requirements, architecture, XD plan) for user review:
355
+
356
+ 1. Open with the document type and a one-line summary.
357
+ 2. Present each major section as a collapsible block (bold header + indented content).
358
+ 3. Highlight decision points or items needing user confirmation with blockquotes.
359
+ 4. End with an explicit prompt for approval or feedback.
360
+
361
+ ```
362
+ ---
363
+
364
+ ## Architecture Plan: Notification System
365
+
366
+ > 8 modules, 14 API endpoints, 3 new database tables, 1 message queue.
367
+ > Full plan written to `docs/plans/2026-02-25-notification-system/architecture.md`.
368
+
369
+ ### Modules
370
+ - **NotificationModule**: Core notification CRUD and dispatch logic
371
+ - **EmailWorkerModule**: SQS consumer for email delivery via SES
372
+ - **WebSocketModule**: Real-time notification push to connected clients
373
+ ...
374
+
375
+ ### Key Decisions
376
+ - **Message broker**: SQS over Redis Pub/Sub -- durability and DLQ support
377
+ - **Email provider**: SES -- already in the AWS stack, no additional vendor
378
+
379
+ > Ready to approve this plan? Or would you like to drill into any section?
380
+
381
+ ---
382
+ ```
383
+
384
+ ---
385
+
386
+ ## Formatting Anti-Patterns to Avoid
387
+
388
+ - **Wall of text**: Never present more than 4-5 sentences without a visual break (header, list, blank line, or rule). If content is dense, restructure it as a list.
389
+ - **Excessive decoration**: Do not use box-drawing, blockquotes, and bold all in the same section. Pick the one that best serves the content.
390
+ - **Orphaned headers**: Never place a header with no content below it. If a section has nothing to report, write "None" or "N/A" below the header.
391
+ - **Table abuse**: Do not use tables for 2-column key-value data. Use bold labels instead: `**Database**: PostgreSQL 15`.
392
+ - **Unmarked code**: Never present code, commands, or file paths outside of fenced code blocks. Inline backticks are acceptable for short references within prose.
393
+ - **Emoji in professional output**: Do not use emoji in any Forge agent output. Rely on text markers, box-drawing, and structural hierarchy for visual communication.
394
+ - **Inconsistent severity markers**: Always use the standard markers (`[BLOCKER]`, `[MAJOR]`, `[MINOR]`, `[INFO]`). Do not invent new levels or use synonyms.
395
+ - **Hiding critical information in paragraphs**: If something is a blocker, a decision point, or a status change, it must be in a visually distinct element (blockquote, list item with severity marker, or box). Never bury critical information in the middle of a paragraph.