squadfoundry 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 (309) hide show
  1. package/AGENTS.md +76 -0
  2. package/PROJECT.md +79 -0
  3. package/README.md +255 -0
  4. package/dist/orchestrator/adapters/context/IContextAdapter.d.ts +65 -0
  5. package/dist/orchestrator/adapters/context/IContextAdapter.d.ts.map +1 -0
  6. package/dist/orchestrator/adapters/context/IContextAdapter.js +12 -0
  7. package/dist/orchestrator/adapters/context/IContextAdapter.js.map +1 -0
  8. package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts +33 -0
  9. package/dist/orchestrator/adapters/context/filesystem.context-adapter.d.ts.map +1 -0
  10. package/dist/orchestrator/adapters/context/filesystem.context-adapter.js +179 -0
  11. package/dist/orchestrator/adapters/context/filesystem.context-adapter.js.map +1 -0
  12. package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts +78 -0
  13. package/dist/orchestrator/adapters/deploy/IDeployAdapter.d.ts.map +1 -0
  14. package/dist/orchestrator/adapters/deploy/IDeployAdapter.js +14 -0
  15. package/dist/orchestrator/adapters/deploy/IDeployAdapter.js.map +1 -0
  16. package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts +31 -0
  17. package/dist/orchestrator/adapters/deploy/vercel.adapter.d.ts.map +1 -0
  18. package/dist/orchestrator/adapters/deploy/vercel.adapter.js +83 -0
  19. package/dist/orchestrator/adapters/deploy/vercel.adapter.js.map +1 -0
  20. package/dist/orchestrator/adapters/host/IHostAdapter.d.ts +89 -0
  21. package/dist/orchestrator/adapters/host/IHostAdapter.d.ts.map +1 -0
  22. package/dist/orchestrator/adapters/host/IHostAdapter.js +10 -0
  23. package/dist/orchestrator/adapters/host/IHostAdapter.js.map +1 -0
  24. package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts +27 -0
  25. package/dist/orchestrator/adapters/host/anthropic.adapter.d.ts.map +1 -0
  26. package/dist/orchestrator/adapters/host/anthropic.adapter.js +118 -0
  27. package/dist/orchestrator/adapters/host/anthropic.adapter.js.map +1 -0
  28. package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts +53 -0
  29. package/dist/orchestrator/adapters/host/antigravity.adapter.d.ts.map +1 -0
  30. package/dist/orchestrator/adapters/host/antigravity.adapter.js +148 -0
  31. package/dist/orchestrator/adapters/host/antigravity.adapter.js.map +1 -0
  32. package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts +13 -0
  33. package/dist/orchestrator/adapters/host/claude-code.adapter.d.ts.map +1 -0
  34. package/dist/orchestrator/adapters/host/claude-code.adapter.js +27 -0
  35. package/dist/orchestrator/adapters/host/claude-code.adapter.js.map +1 -0
  36. package/dist/orchestrator/adapters/host/command-model-invoker.d.ts +8 -0
  37. package/dist/orchestrator/adapters/host/command-model-invoker.d.ts.map +1 -0
  38. package/dist/orchestrator/adapters/host/command-model-invoker.js +46 -0
  39. package/dist/orchestrator/adapters/host/command-model-invoker.js.map +1 -0
  40. package/dist/orchestrator/adapters/host/ide.adapter.d.ts +61 -0
  41. package/dist/orchestrator/adapters/host/ide.adapter.d.ts.map +1 -0
  42. package/dist/orchestrator/adapters/host/ide.adapter.js +173 -0
  43. package/dist/orchestrator/adapters/host/ide.adapter.js.map +1 -0
  44. package/dist/orchestrator/adapters/host/local.adapter.d.ts +26 -0
  45. package/dist/orchestrator/adapters/host/local.adapter.d.ts.map +1 -0
  46. package/dist/orchestrator/adapters/host/local.adapter.js +82 -0
  47. package/dist/orchestrator/adapters/host/local.adapter.js.map +1 -0
  48. package/dist/orchestrator/adapters/host/openai.adapter.d.ts +26 -0
  49. package/dist/orchestrator/adapters/host/openai.adapter.d.ts.map +1 -0
  50. package/dist/orchestrator/adapters/host/openai.adapter.js +77 -0
  51. package/dist/orchestrator/adapters/host/openai.adapter.js.map +1 -0
  52. package/dist/orchestrator/adapters/host/opencode.adapter.d.ts +13 -0
  53. package/dist/orchestrator/adapters/host/opencode.adapter.d.ts.map +1 -0
  54. package/dist/orchestrator/adapters/host/opencode.adapter.js +27 -0
  55. package/dist/orchestrator/adapters/host/opencode.adapter.js.map +1 -0
  56. package/dist/orchestrator/adapters/model/IModelAdapter.d.ts +68 -0
  57. package/dist/orchestrator/adapters/model/IModelAdapter.d.ts.map +1 -0
  58. package/dist/orchestrator/adapters/model/IModelAdapter.js +11 -0
  59. package/dist/orchestrator/adapters/model/IModelAdapter.js.map +1 -0
  60. package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts +93 -0
  61. package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.d.ts.map +1 -0
  62. package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js +10 -0
  63. package/dist/orchestrator/adapters/publishing/ISocialMediaAdapter.js.map +1 -0
  64. package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts +34 -0
  65. package/dist/orchestrator/adapters/publishing/instagram.adapter.d.ts.map +1 -0
  66. package/dist/orchestrator/adapters/publishing/instagram.adapter.js +105 -0
  67. package/dist/orchestrator/adapters/publishing/instagram.adapter.js.map +1 -0
  68. package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts +52 -0
  69. package/dist/orchestrator/adapters/tools/IToolAdapter.d.ts.map +1 -0
  70. package/dist/orchestrator/adapters/tools/IToolAdapter.js +10 -0
  71. package/dist/orchestrator/adapters/tools/IToolAdapter.js.map +1 -0
  72. package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts +89 -0
  73. package/dist/orchestrator/adapters/vcs/IVCSAdapter.d.ts.map +1 -0
  74. package/dist/orchestrator/adapters/vcs/IVCSAdapter.js +11 -0
  75. package/dist/orchestrator/adapters/vcs/IVCSAdapter.js.map +1 -0
  76. package/dist/orchestrator/adapters/vcs/github.adapter.d.ts +36 -0
  77. package/dist/orchestrator/adapters/vcs/github.adapter.d.ts.map +1 -0
  78. package/dist/orchestrator/adapters/vcs/github.adapter.js +110 -0
  79. package/dist/orchestrator/adapters/vcs/github.adapter.js.map +1 -0
  80. package/dist/orchestrator/artifacts/artifact-store.d.ts +47 -0
  81. package/dist/orchestrator/artifacts/artifact-store.d.ts.map +1 -0
  82. package/dist/orchestrator/artifacts/artifact-store.js +135 -0
  83. package/dist/orchestrator/artifacts/artifact-store.js.map +1 -0
  84. package/dist/orchestrator/builder/domain-classifier.d.ts +24 -0
  85. package/dist/orchestrator/builder/domain-classifier.d.ts.map +1 -0
  86. package/dist/orchestrator/builder/domain-classifier.js +156 -0
  87. package/dist/orchestrator/builder/domain-classifier.js.map +1 -0
  88. package/dist/orchestrator/builder/interview-questions.d.ts +13 -0
  89. package/dist/orchestrator/builder/interview-questions.d.ts.map +1 -0
  90. package/dist/orchestrator/builder/interview-questions.js +127 -0
  91. package/dist/orchestrator/builder/interview-questions.js.map +1 -0
  92. package/dist/orchestrator/builder/squad-builder.d.ts +53 -0
  93. package/dist/orchestrator/builder/squad-builder.d.ts.map +1 -0
  94. package/dist/orchestrator/builder/squad-builder.js +107 -0
  95. package/dist/orchestrator/builder/squad-builder.js.map +1 -0
  96. package/dist/orchestrator/builder/squad-generator.d.ts +33 -0
  97. package/dist/orchestrator/builder/squad-generator.d.ts.map +1 -0
  98. package/dist/orchestrator/builder/squad-generator.js +360 -0
  99. package/dist/orchestrator/builder/squad-generator.js.map +1 -0
  100. package/dist/orchestrator/cli/index.d.ts +3 -0
  101. package/dist/orchestrator/cli/index.d.ts.map +1 -0
  102. package/dist/orchestrator/cli/index.js +8 -0
  103. package/dist/orchestrator/cli/index.js.map +1 -0
  104. package/dist/orchestrator/context/context-index.d.ts +48 -0
  105. package/dist/orchestrator/context/context-index.d.ts.map +1 -0
  106. package/dist/orchestrator/context/context-index.js +116 -0
  107. package/dist/orchestrator/context/context-index.js.map +1 -0
  108. package/dist/orchestrator/context/context-loader.d.ts +49 -0
  109. package/dist/orchestrator/context/context-loader.d.ts.map +1 -0
  110. package/dist/orchestrator/context/context-loader.js +111 -0
  111. package/dist/orchestrator/context/context-loader.js.map +1 -0
  112. package/dist/orchestrator/core/guardrails.d.ts +33 -0
  113. package/dist/orchestrator/core/guardrails.d.ts.map +1 -0
  114. package/dist/orchestrator/core/guardrails.js +272 -0
  115. package/dist/orchestrator/core/guardrails.js.map +1 -0
  116. package/dist/orchestrator/core/state-machine.d.ts +65 -0
  117. package/dist/orchestrator/core/state-machine.d.ts.map +1 -0
  118. package/dist/orchestrator/core/state-machine.js +227 -0
  119. package/dist/orchestrator/core/state-machine.js.map +1 -0
  120. package/dist/orchestrator/core/types.d.ts +364 -0
  121. package/dist/orchestrator/core/types.d.ts.map +1 -0
  122. package/dist/orchestrator/core/types.js +10 -0
  123. package/dist/orchestrator/core/types.js.map +1 -0
  124. package/dist/orchestrator/index.d.ts +75 -0
  125. package/dist/orchestrator/index.d.ts.map +1 -0
  126. package/dist/orchestrator/index.js +64 -0
  127. package/dist/orchestrator/index.js.map +1 -0
  128. package/dist/orchestrator/mcp/server.d.ts +35 -0
  129. package/dist/orchestrator/mcp/server.d.ts.map +1 -0
  130. package/dist/orchestrator/mcp/server.js +378 -0
  131. package/dist/orchestrator/mcp/server.js.map +1 -0
  132. package/dist/orchestrator/runtime/agent-dispatcher.d.ts +25 -0
  133. package/dist/orchestrator/runtime/agent-dispatcher.d.ts.map +1 -0
  134. package/dist/orchestrator/runtime/agent-dispatcher.js +82 -0
  135. package/dist/orchestrator/runtime/agent-dispatcher.js.map +1 -0
  136. package/dist/orchestrator/runtime/approval-gate.d.ts +55 -0
  137. package/dist/orchestrator/runtime/approval-gate.d.ts.map +1 -0
  138. package/dist/orchestrator/runtime/approval-gate.js +104 -0
  139. package/dist/orchestrator/runtime/approval-gate.js.map +1 -0
  140. package/dist/orchestrator/runtime/handoff-manager.d.ts +29 -0
  141. package/dist/orchestrator/runtime/handoff-manager.d.ts.map +1 -0
  142. package/dist/orchestrator/runtime/handoff-manager.js +80 -0
  143. package/dist/orchestrator/runtime/handoff-manager.js.map +1 -0
  144. package/dist/orchestrator/runtime/job-manager.d.ts +39 -0
  145. package/dist/orchestrator/runtime/job-manager.d.ts.map +1 -0
  146. package/dist/orchestrator/runtime/job-manager.js +132 -0
  147. package/dist/orchestrator/runtime/job-manager.js.map +1 -0
  148. package/dist/orchestrator/runtime/squad-runtime.d.ts +70 -0
  149. package/dist/orchestrator/runtime/squad-runtime.d.ts.map +1 -0
  150. package/dist/orchestrator/runtime/squad-runtime.js +249 -0
  151. package/dist/orchestrator/runtime/squad-runtime.js.map +1 -0
  152. package/dist/orchestrator/shell/cli.d.ts +4 -0
  153. package/dist/orchestrator/shell/cli.d.ts.map +1 -0
  154. package/dist/orchestrator/shell/cli.js +27 -0
  155. package/dist/orchestrator/shell/cli.js.map +1 -0
  156. package/dist/orchestrator/shell/commands/create.command.d.ts +3 -0
  157. package/dist/orchestrator/shell/commands/create.command.d.ts.map +1 -0
  158. package/dist/orchestrator/shell/commands/create.command.js +41 -0
  159. package/dist/orchestrator/shell/commands/create.command.js.map +1 -0
  160. package/dist/orchestrator/shell/commands/edit.command.d.ts +3 -0
  161. package/dist/orchestrator/shell/commands/edit.command.d.ts.map +1 -0
  162. package/dist/orchestrator/shell/commands/edit.command.js +49 -0
  163. package/dist/orchestrator/shell/commands/edit.command.js.map +1 -0
  164. package/dist/orchestrator/shell/commands/hosts.command.d.ts +3 -0
  165. package/dist/orchestrator/shell/commands/hosts.command.d.ts.map +1 -0
  166. package/dist/orchestrator/shell/commands/hosts.command.js +27 -0
  167. package/dist/orchestrator/shell/commands/hosts.command.js.map +1 -0
  168. package/dist/orchestrator/shell/commands/init.command.d.ts +3 -0
  169. package/dist/orchestrator/shell/commands/init.command.d.ts.map +1 -0
  170. package/dist/orchestrator/shell/commands/init.command.js +13 -0
  171. package/dist/orchestrator/shell/commands/init.command.js.map +1 -0
  172. package/dist/orchestrator/shell/commands/list.command.d.ts +3 -0
  173. package/dist/orchestrator/shell/commands/list.command.d.ts.map +1 -0
  174. package/dist/orchestrator/shell/commands/list.command.js +18 -0
  175. package/dist/orchestrator/shell/commands/list.command.js.map +1 -0
  176. package/dist/orchestrator/shell/commands/run.command.d.ts +3 -0
  177. package/dist/orchestrator/shell/commands/run.command.d.ts.map +1 -0
  178. package/dist/orchestrator/shell/commands/run.command.js +71 -0
  179. package/dist/orchestrator/shell/commands/run.command.js.map +1 -0
  180. package/dist/orchestrator/shell/commands/status.command.d.ts +3 -0
  181. package/dist/orchestrator/shell/commands/status.command.d.ts.map +1 -0
  182. package/dist/orchestrator/shell/commands/status.command.js +29 -0
  183. package/dist/orchestrator/shell/commands/status.command.js.map +1 -0
  184. package/dist/orchestrator/shell/services/active-host-detector.service.d.ts +25 -0
  185. package/dist/orchestrator/shell/services/active-host-detector.service.d.ts.map +1 -0
  186. package/dist/orchestrator/shell/services/active-host-detector.service.js +128 -0
  187. package/dist/orchestrator/shell/services/active-host-detector.service.js.map +1 -0
  188. package/dist/orchestrator/shell/services/host-resolution.service.d.ts +42 -0
  189. package/dist/orchestrator/shell/services/host-resolution.service.d.ts.map +1 -0
  190. package/dist/orchestrator/shell/services/host-resolution.service.js +108 -0
  191. package/dist/orchestrator/shell/services/host-resolution.service.js.map +1 -0
  192. package/dist/orchestrator/shell/services/host-runtime.service.d.ts +23 -0
  193. package/dist/orchestrator/shell/services/host-runtime.service.d.ts.map +1 -0
  194. package/dist/orchestrator/shell/services/host-runtime.service.js +167 -0
  195. package/dist/orchestrator/shell/services/host-runtime.service.js.map +1 -0
  196. package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts +14 -0
  197. package/dist/orchestrator/shell/services/interview-host-bridge.service.d.ts.map +1 -0
  198. package/dist/orchestrator/shell/services/interview-host-bridge.service.js +16 -0
  199. package/dist/orchestrator/shell/services/interview-host-bridge.service.js.map +1 -0
  200. package/dist/orchestrator/shell/services/job-execution.service.d.ts +22 -0
  201. package/dist/orchestrator/shell/services/job-execution.service.d.ts.map +1 -0
  202. package/dist/orchestrator/shell/services/job-execution.service.js +39 -0
  203. package/dist/orchestrator/shell/services/job-execution.service.js.map +1 -0
  204. package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts +6 -0
  205. package/dist/orchestrator/shell/services/project-bootstrap.service.d.ts.map +1 -0
  206. package/dist/orchestrator/shell/services/project-bootstrap.service.js +111 -0
  207. package/dist/orchestrator/shell/services/project-bootstrap.service.js.map +1 -0
  208. package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts +3 -0
  209. package/dist/orchestrator/shell/services/squad-scaffold.service.d.ts.map +1 -0
  210. package/dist/orchestrator/shell/services/squad-scaffold.service.js +30 -0
  211. package/dist/orchestrator/shell/services/squad-scaffold.service.js.map +1 -0
  212. package/dist/tests/integration/instagram-squad.test.d.ts +8 -0
  213. package/dist/tests/integration/instagram-squad.test.d.ts.map +1 -0
  214. package/dist/tests/integration/instagram-squad.test.js +187 -0
  215. package/dist/tests/integration/instagram-squad.test.js.map +1 -0
  216. package/dist/tests/integration/shell/cli-run-host-native.test.d.ts +2 -0
  217. package/dist/tests/integration/shell/cli-run-host-native.test.d.ts.map +1 -0
  218. package/dist/tests/integration/shell/cli-run-host-native.test.js +42 -0
  219. package/dist/tests/integration/shell/cli-run-host-native.test.js.map +1 -0
  220. package/dist/tests/integration/software-squad.test.d.ts +8 -0
  221. package/dist/tests/integration/software-squad.test.d.ts.map +1 -0
  222. package/dist/tests/integration/software-squad.test.js +207 -0
  223. package/dist/tests/integration/software-squad.test.js.map +1 -0
  224. package/dist/tests/unit/artifact-store.test.d.ts +2 -0
  225. package/dist/tests/unit/artifact-store.test.d.ts.map +1 -0
  226. package/dist/tests/unit/artifact-store.test.js +137 -0
  227. package/dist/tests/unit/artifact-store.test.js.map +1 -0
  228. package/dist/tests/unit/context-loader.test.d.ts +2 -0
  229. package/dist/tests/unit/context-loader.test.d.ts.map +1 -0
  230. package/dist/tests/unit/context-loader.test.js +109 -0
  231. package/dist/tests/unit/context-loader.test.js.map +1 -0
  232. package/dist/tests/unit/docs/host-native-docs.test.d.ts +2 -0
  233. package/dist/tests/unit/docs/host-native-docs.test.d.ts.map +1 -0
  234. package/dist/tests/unit/docs/host-native-docs.test.js +18 -0
  235. package/dist/tests/unit/docs/host-native-docs.test.js.map +1 -0
  236. package/dist/tests/unit/guardrails.test.d.ts +2 -0
  237. package/dist/tests/unit/guardrails.test.d.ts.map +1 -0
  238. package/dist/tests/unit/guardrails.test.js +202 -0
  239. package/dist/tests/unit/guardrails.test.js.map +1 -0
  240. package/dist/tests/unit/host/host-adapter-contract.test.d.ts +2 -0
  241. package/dist/tests/unit/host/host-adapter-contract.test.d.ts.map +1 -0
  242. package/dist/tests/unit/host/host-adapter-contract.test.js +53 -0
  243. package/dist/tests/unit/host/host-adapter-contract.test.js.map +1 -0
  244. package/dist/tests/unit/host/ide.adapter.test.d.ts +2 -0
  245. package/dist/tests/unit/host/ide.adapter.test.d.ts.map +1 -0
  246. package/dist/tests/unit/host/ide.adapter.test.js +17 -0
  247. package/dist/tests/unit/host/ide.adapter.test.js.map +1 -0
  248. package/dist/tests/unit/host/native-ide-adapters.test.d.ts +2 -0
  249. package/dist/tests/unit/host/native-ide-adapters.test.d.ts.map +1 -0
  250. package/dist/tests/unit/host/native-ide-adapters.test.js +26 -0
  251. package/dist/tests/unit/host/native-ide-adapters.test.js.map +1 -0
  252. package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts +2 -0
  253. package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.d.ts.map +1 -0
  254. package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js +128 -0
  255. package/dist/tests/unit/runtime/squad-runtime-host-metadata.test.js.map +1 -0
  256. package/dist/tests/unit/shell/active-host-detector.test.d.ts +2 -0
  257. package/dist/tests/unit/shell/active-host-detector.test.d.ts.map +1 -0
  258. package/dist/tests/unit/shell/active-host-detector.test.js +85 -0
  259. package/dist/tests/unit/shell/active-host-detector.test.js.map +1 -0
  260. package/dist/tests/unit/shell/host-resolution.service.test.d.ts +2 -0
  261. package/dist/tests/unit/shell/host-resolution.service.test.d.ts.map +1 -0
  262. package/dist/tests/unit/shell/host-resolution.service.test.js +252 -0
  263. package/dist/tests/unit/shell/host-resolution.service.test.js.map +1 -0
  264. package/dist/tests/unit/shell/interview-host-bridge.test.d.ts +2 -0
  265. package/dist/tests/unit/shell/interview-host-bridge.test.d.ts.map +1 -0
  266. package/dist/tests/unit/shell/interview-host-bridge.test.js +58 -0
  267. package/dist/tests/unit/shell/interview-host-bridge.test.js.map +1 -0
  268. package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts +2 -0
  269. package/dist/tests/unit/shell/project-bootstrap.service.test.d.ts.map +1 -0
  270. package/dist/tests/unit/shell/project-bootstrap.service.test.js +58 -0
  271. package/dist/tests/unit/shell/project-bootstrap.service.test.js.map +1 -0
  272. package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts +2 -0
  273. package/dist/tests/unit/shell/squad-scaffold.service.test.d.ts.map +1 -0
  274. package/dist/tests/unit/shell/squad-scaffold.service.test.js +40 -0
  275. package/dist/tests/unit/shell/squad-scaffold.service.test.js.map +1 -0
  276. package/dist/tests/unit/squad-builder.test.d.ts +2 -0
  277. package/dist/tests/unit/squad-builder.test.d.ts.map +1 -0
  278. package/dist/tests/unit/squad-builder.test.js +126 -0
  279. package/dist/tests/unit/squad-builder.test.js.map +1 -0
  280. package/dist/tests/unit/state-machine.test.d.ts +2 -0
  281. package/dist/tests/unit/state-machine.test.d.ts.map +1 -0
  282. package/dist/tests/unit/state-machine.test.js +133 -0
  283. package/dist/tests/unit/state-machine.test.js.map +1 -0
  284. package/docs/architecture/overview.md +115 -0
  285. package/docs/development/adding-agents.md +75 -0
  286. package/docs/development/adding-hosts.md +104 -0
  287. package/docs/development/adding-integrations.md +83 -0
  288. package/docs/development/host-detection-and-resolution.md +59 -0
  289. package/docs/squads/how-to-create.md +85 -0
  290. package/docs/squads/how-to-execute.md +139 -0
  291. package/docs/superpowers/plans/2026-04-01-host-native-cli-shell-implementation.md +617 -0
  292. package/docs/superpowers/specs/2026-04-01-host-native-cli-shell-design.md +253 -0
  293. package/package.json +103 -0
  294. package/squads/examples/instagram-content/AGENTS.md +63 -0
  295. package/squads/examples/instagram-content/POLICIES.md +45 -0
  296. package/squads/examples/instagram-content/SQUAD.md +63 -0
  297. package/squads/examples/instagram-content/WORKFLOW.md +58 -0
  298. package/squads/examples/instagram-content/config/squad.json +474 -0
  299. package/squads/examples/software-development/AGENTS.md +88 -0
  300. package/squads/examples/software-development/POLICIES.md +44 -0
  301. package/squads/examples/software-development/SQUAD.md +65 -0
  302. package/squads/examples/software-development/WORKFLOW.md +78 -0
  303. package/squads/examples/software-development/config/squad.json +442 -0
  304. package/templates/AGENTS.md +46 -0
  305. package/templates/POLICIES.md +24 -0
  306. package/templates/PROJECT.md +52 -0
  307. package/templates/SQUAD.md +52 -0
  308. package/templates/TASKS.md +31 -0
  309. package/templates/WORKFLOW.md +35 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../orchestrator/core/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Squad Foundry — Core Type Definitions
3
+ *
4
+ * These types form the portable, host-agnostic contract for the entire platform.
5
+ * No external dependencies. No IDE-specific concepts. No vendor lock-in.
6
+ *
7
+ * All adapters, runtime components, and builders operate against these types.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../orchestrator/core/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Squad Foundry — Main Package Entry Point
3
+ *
4
+ * Import from this file when using Squad Foundry as an npm package.
5
+ *
6
+ * @example
7
+ * // In Claude Code, OpenCode, Cursor, Codex, or any AI-native IDE:
8
+ * import { IDEHostAdapter, createSquadRuntime, createSquadBuilder } from 'squad-foundry'
9
+ *
10
+ * const runtime = createSquadRuntime({
11
+ * hostAdapter: new IDEHostAdapter(async (prompt) => {
12
+ * // The IDE handles the model call — YOU provide this callback
13
+ * return yourIDE.complete(prompt)
14
+ * }),
15
+ * })
16
+ */
17
+ export type { SquadId, AgentId, JobId, StepId, GuardrailId, ArtifactId, HandoffId, SquadDomain, BaseJobStatus, JobStatus, AgentDefinition, AgentIO, HandoffRule, ModelPreference, WorkflowDefinition, WorkflowStep, GuardrailSeverity, GuardrailRule, BuiltinGuardrailKey, PolicyDefinition, ApprovalRequirement, SquadDefinition, ExpectedArtifact, IntegrationRef, SquadMetadata, JobDefinition, LoadedContext, FileContent, ArtifactRef, ApprovalRecord, HistoryEntry, HandoffEvent, HandoffPayload, ContextDiscoveryResult, DiscoveredFile, ContextFileCategory, InterviewQuestion, InterviewCategory, InterviewAnswer, InterviewSession, SquadBuildResult, GeneratedFile, AgentResponse, PendingArtifact, HandoffSignal, GuardrailEvaluationContext, GuardrailResult, } from './core/types.js';
18
+ export { StateMachine, createStateMachine, } from './core/state-machine.js';
19
+ export type { TransitionEvent, GuardFn, GuardResult, TransitionDef, TransitionResult, } from './core/state-machine.js';
20
+ export { GuardrailEngine, createGuardrailEngine, } from './core/guardrails.js';
21
+ export type { GuardrailEvaluatorFn } from './core/guardrails.js';
22
+ export type { IHostAdapter, PromptOptions, HostCapabilities, HostDetectionContext, HostDetectionResult, InterviewTurnInput, InterviewTurnState, InterviewTurnResult, } from './adapters/host/IHostAdapter.js';
23
+ export type { IModelAdapter, ModelRequest, ModelResponse, ModelInfo, MessageTurn, ToolDefinition } from './adapters/model/IModelAdapter.js';
24
+ export type { IToolAdapter, ToolInput, ToolOutput, AvailableTool, ToolCategory } from './adapters/tools/IToolAdapter.js';
25
+ export type { IVCSAdapter, BranchOptions, CommitOptions, PullRequestOptions, PullRequestInfo, CommitInfo, BranchInfo, VCSCapabilities } from './adapters/vcs/IVCSAdapter.js';
26
+ export type { ISocialMediaAdapter, MediaType, MediaAsset, PostDraft, PublishedPost, PostAnalytics, AccountInfo, PublishingCapabilities } from './adapters/publishing/ISocialMediaAdapter.js';
27
+ export type { IDeployAdapter, DeployRequest, DeployResult, DeploymentInfo, DeployCapabilities, DeployEnvironment } from './adapters/deploy/IDeployAdapter.js';
28
+ export type { IContextAdapter, ContextLoadOptions, ContextSummary } from './adapters/context/IContextAdapter.js';
29
+ /** Primary adapter for IDE/agent environments (Claude Code, OpenCode, Cursor, Codex, Zed, etc.) */
30
+ export { IDEHostAdapter } from './adapters/host/ide.adapter.js';
31
+ export type { ModelInvoker, IDEHostAdapterOptions } from './adapters/host/ide.adapter.js';
32
+ /** Native bridge adapter for Claude Code CLI environments. */
33
+ export { ClaudeCodeHostAdapter } from './adapters/host/claude-code.adapter.js';
34
+ export type { ClaudeCodeHostAdapterOptions } from './adapters/host/claude-code.adapter.js';
35
+ /** Native bridge adapter for OpenCode CLI environments. */
36
+ export { OpenCodeHostAdapter } from './adapters/host/opencode.adapter.js';
37
+ export type { OpenCodeHostAdapterOptions } from './adapters/host/opencode.adapter.js';
38
+ /**
39
+ * Adapter para o Google Antigravity IDE.
40
+ * Usa a porta 8045 exposta pelo Antigravity (API OpenAI-compatible).
41
+ * Não requer API key — o modelo já está rodando na IDE.
42
+ */
43
+ export { AntigravityHostAdapter } from './adapters/host/antigravity.adapter.js';
44
+ export type { AntigravityAdapterOptions } from './adapters/host/antigravity.adapter.js';
45
+ /** Direct API adapter for Anthropic Claude (requires ANTHROPIC_API_KEY) */
46
+ export { AnthropicHostAdapter } from './adapters/host/anthropic.adapter.js';
47
+ /** Direct API adapter for OpenAI (requires OPENAI_API_KEY) */
48
+ export { OpenAIHostAdapter } from './adapters/host/openai.adapter.js';
49
+ /** Adapter for local LLM (Ollama, LM Studio, llama.cpp — no API key needed) */
50
+ export { LocalHostAdapter } from './adapters/host/local.adapter.js';
51
+ export { GitHubVCSAdapter } from './adapters/vcs/github.adapter.js';
52
+ export { InstagramAdapter } from './adapters/publishing/instagram.adapter.js';
53
+ export { VercelDeployAdapter } from './adapters/deploy/vercel.adapter.js';
54
+ export { FilesystemContextAdapter } from './adapters/context/filesystem.context-adapter.js';
55
+ export { ContextLoader } from './context/context-loader.js';
56
+ export type { ContextLoaderOptions } from './context/context-loader.js';
57
+ export { ContextIndex } from './context/context-index.js';
58
+ export type { IndexedFile } from './context/context-index.js';
59
+ export { ArtifactStore, createArtifactStore } from './artifacts/artifact-store.js';
60
+ export { SquadRuntime, createSquadRuntime } from './runtime/squad-runtime.js';
61
+ export type { RuntimeConfig, StepExecutionResult } from './runtime/squad-runtime.js';
62
+ export { JobManager, createJobManager } from './runtime/job-manager.js';
63
+ export type { CreateJobOptions } from './runtime/job-manager.js';
64
+ export { AgentDispatcher, createAgentDispatcher } from './runtime/agent-dispatcher.js';
65
+ export type { DispatchPlan } from './runtime/agent-dispatcher.js';
66
+ export { HandoffManager, createHandoffManager } from './runtime/handoff-manager.js';
67
+ export { ApprovalGate, createApprovalGate } from './runtime/approval-gate.js';
68
+ export type { ApprovalRequest } from './runtime/approval-gate.js';
69
+ export { SquadBuilder, createSquadBuilder } from './builder/squad-builder.js';
70
+ export type { SquadBuilderOptions } from './builder/squad-builder.js';
71
+ export { DomainClassifier, createDomainClassifier } from './builder/domain-classifier.js';
72
+ export type { ClassificationResult, WorkflowPattern } from './builder/domain-classifier.js';
73
+ export { SquadGenerator, createSquadGenerator } from './builder/squad-generator.js';
74
+ export { INTERVIEW_QUESTIONS, getRequiredQuestions, getQuestionById, getQuestionsByCategory, } from './builder/interview-questions.js';
75
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../orchestrator/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Squad Foundry — Main Package Entry Point
3
+ *
4
+ * Import from this file when using Squad Foundry as an npm package.
5
+ *
6
+ * @example
7
+ * // In Claude Code, OpenCode, Cursor, Codex, or any AI-native IDE:
8
+ * import { IDEHostAdapter, createSquadRuntime, createSquadBuilder } from 'squad-foundry'
9
+ *
10
+ * const runtime = createSquadRuntime({
11
+ * hostAdapter: new IDEHostAdapter(async (prompt) => {
12
+ * // The IDE handles the model call — YOU provide this callback
13
+ * return yourIDE.complete(prompt)
14
+ * }),
15
+ * })
16
+ */
17
+ // ─── Core: State Machine ─────────────────────────────────────────────────────
18
+ export { StateMachine, createStateMachine, } from './core/state-machine.js';
19
+ // ─── Core: Guardrails ────────────────────────────────────────────────────────
20
+ export { GuardrailEngine, createGuardrailEngine, } from './core/guardrails.js';
21
+ // ─── Host Adapters ───────────────────────────────────────────────────────────
22
+ /** Primary adapter for IDE/agent environments (Claude Code, OpenCode, Cursor, Codex, Zed, etc.) */
23
+ export { IDEHostAdapter } from './adapters/host/ide.adapter.js';
24
+ /** Native bridge adapter for Claude Code CLI environments. */
25
+ export { ClaudeCodeHostAdapter } from './adapters/host/claude-code.adapter.js';
26
+ /** Native bridge adapter for OpenCode CLI environments. */
27
+ export { OpenCodeHostAdapter } from './adapters/host/opencode.adapter.js';
28
+ /**
29
+ * Adapter para o Google Antigravity IDE.
30
+ * Usa a porta 8045 exposta pelo Antigravity (API OpenAI-compatible).
31
+ * Não requer API key — o modelo já está rodando na IDE.
32
+ */
33
+ export { AntigravityHostAdapter } from './adapters/host/antigravity.adapter.js';
34
+ /** Direct API adapter for Anthropic Claude (requires ANTHROPIC_API_KEY) */
35
+ export { AnthropicHostAdapter } from './adapters/host/anthropic.adapter.js';
36
+ /** Direct API adapter for OpenAI (requires OPENAI_API_KEY) */
37
+ export { OpenAIHostAdapter } from './adapters/host/openai.adapter.js';
38
+ /** Adapter for local LLM (Ollama, LM Studio, llama.cpp — no API key needed) */
39
+ export { LocalHostAdapter } from './adapters/host/local.adapter.js';
40
+ // ─── VCS Adapters ────────────────────────────────────────────────────────────
41
+ export { GitHubVCSAdapter } from './adapters/vcs/github.adapter.js';
42
+ // ─── Publishing Adapters ─────────────────────────────────────────────────────
43
+ export { InstagramAdapter } from './adapters/publishing/instagram.adapter.js';
44
+ // ─── Deploy Adapters ─────────────────────────────────────────────────────────
45
+ export { VercelDeployAdapter } from './adapters/deploy/vercel.adapter.js';
46
+ // ─── Context Adapter ─────────────────────────────────────────────────────────
47
+ export { FilesystemContextAdapter } from './adapters/context/filesystem.context-adapter.js';
48
+ // ─── Context Layer ───────────────────────────────────────────────────────────
49
+ export { ContextLoader } from './context/context-loader.js';
50
+ export { ContextIndex } from './context/context-index.js';
51
+ // ─── Artifact Store ──────────────────────────────────────────────────────────
52
+ export { ArtifactStore, createArtifactStore } from './artifacts/artifact-store.js';
53
+ // ─── Squad Runtime ───────────────────────────────────────────────────────────
54
+ export { SquadRuntime, createSquadRuntime } from './runtime/squad-runtime.js';
55
+ export { JobManager, createJobManager } from './runtime/job-manager.js';
56
+ export { AgentDispatcher, createAgentDispatcher } from './runtime/agent-dispatcher.js';
57
+ export { HandoffManager, createHandoffManager } from './runtime/handoff-manager.js';
58
+ export { ApprovalGate, createApprovalGate } from './runtime/approval-gate.js';
59
+ // ─── Squad Builder ───────────────────────────────────────────────────────────
60
+ export { SquadBuilder, createSquadBuilder } from './builder/squad-builder.js';
61
+ export { DomainClassifier, createDomainClassifier } from './builder/domain-classifier.js';
62
+ export { SquadGenerator, createSquadGenerator } from './builder/squad-generator.js';
63
+ export { INTERVIEW_QUESTIONS, getRequiredQuestions, getQuestionById, getQuestionsByCategory, } from './builder/interview-questions.js';
64
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA8EH,gFAAgF;AAChF,OAAO,EACL,YAAY,EACZ,kBAAkB,GACnB,MAAM,yBAAyB,CAAA;AAShC,gFAAgF;AAChF,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAqB7B,gFAAgF;AAChF,mGAAmG;AACnG,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAG/D,8DAA8D;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAA;AAG9E,2DAA2D;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAGzE;;;;GAIG;AACH,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAG/E,2EAA2E;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAA;AAE3E,8DAA8D;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAErE,+EAA+E;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,gFAAgF;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAA;AAE7E,gFAAgF;AAChF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAA;AAEzE,gFAAgF;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAA;AAE3F,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAE3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAGzD,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAA;AAElF,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAG7E,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAGvE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAGtF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAG7E,gFAAgF;AAChF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAG7E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAGzF,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAEnF,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,sBAAsB,GACvB,MAAM,kCAAkC,CAAA"}
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Squad Foundry — MCP Server
4
+ *
5
+ * Expõe o Squad Foundry como um MCP Server para ser usado pelo Claude Code,
6
+ * Antigravity, OpenCode, Cursor e qualquer IDE com suporte a MCP.
7
+ *
8
+ * ── Claude Code ──────────────────────────────────────────────────────────────
9
+ * claude mcp add squad-foundry \
10
+ * -e SQUAD_FOUNDRY_ADAPTER=claude-code \
11
+ * -- npx tsx /caminho/para/squad-foundry/orchestrator/mcp/server.ts
12
+ *
13
+ * ── Antigravity ───────────────────────────────────────────────────────────────
14
+ * Settings → MCP → Add Server → Command:
15
+ * npx tsx /caminho/para/squad-foundry/orchestrator/mcp/server.ts
16
+ * (use SQUAD_FOUNDRY_ADAPTER=opencode ou deixe auto-detect se já houver host válido persistido)
17
+ *
18
+ * ── Variáveis de ambiente ─────────────────────────────────────────────────────
19
+ * SQUAD_FOUNDRY_ADAPTER — claude-code | opencode | anthropic | openai | antigravity | local
20
+ * ANTHROPIC_API_KEY — necessário para adapter=anthropic
21
+ * ANTHROPIC_MODEL — modelo Claude (padrão: claude-sonnet-4-6)
22
+ * OPENAI_API_KEY — necessário para adapter=openai
23
+ * ANTIGRAVITY_URL — padrão: http://localhost:8045
24
+ * LOCAL_LLM_BASE_URL — padrão: http://localhost:11434
25
+ *
26
+ * Ferramentas expostas:
27
+ * - squad_list — lista squads disponíveis
28
+ * - squad_build — inicia o processo de criação de um squad
29
+ * - squad_run — executa um job para um squad existente
30
+ * - squad_status — consulta status de um job
31
+ * - squad_approve — aprova uma aprovação pendente
32
+ * - squad_context — mostra contexto carregado do projeto
33
+ */
34
+ export {};
35
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../orchestrator/mcp/server.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG"}
@@ -0,0 +1,378 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Squad Foundry — MCP Server
4
+ *
5
+ * Expõe o Squad Foundry como um MCP Server para ser usado pelo Claude Code,
6
+ * Antigravity, OpenCode, Cursor e qualquer IDE com suporte a MCP.
7
+ *
8
+ * ── Claude Code ──────────────────────────────────────────────────────────────
9
+ * claude mcp add squad-foundry \
10
+ * -e SQUAD_FOUNDRY_ADAPTER=claude-code \
11
+ * -- npx tsx /caminho/para/squad-foundry/orchestrator/mcp/server.ts
12
+ *
13
+ * ── Antigravity ───────────────────────────────────────────────────────────────
14
+ * Settings → MCP → Add Server → Command:
15
+ * npx tsx /caminho/para/squad-foundry/orchestrator/mcp/server.ts
16
+ * (use SQUAD_FOUNDRY_ADAPTER=opencode ou deixe auto-detect se já houver host válido persistido)
17
+ *
18
+ * ── Variáveis de ambiente ─────────────────────────────────────────────────────
19
+ * SQUAD_FOUNDRY_ADAPTER — claude-code | opencode | anthropic | openai | antigravity | local
20
+ * ANTHROPIC_API_KEY — necessário para adapter=anthropic
21
+ * ANTHROPIC_MODEL — modelo Claude (padrão: claude-sonnet-4-6)
22
+ * OPENAI_API_KEY — necessário para adapter=openai
23
+ * ANTIGRAVITY_URL — padrão: http://localhost:8045
24
+ * LOCAL_LLM_BASE_URL — padrão: http://localhost:11434
25
+ *
26
+ * Ferramentas expostas:
27
+ * - squad_list — lista squads disponíveis
28
+ * - squad_build — inicia o processo de criação de um squad
29
+ * - squad_run — executa um job para um squad existente
30
+ * - squad_status — consulta status de um job
31
+ * - squad_approve — aprova uma aprovação pendente
32
+ * - squad_context — mostra contexto carregado do projeto
33
+ */
34
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
35
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
36
+ import { z } from 'zod';
37
+ import { existsSync, readdirSync, readFileSync, writeFileSync } from 'node:fs';
38
+ import { join } from 'node:path';
39
+ import { createSquadBuilder } from '../builder/squad-builder.js';
40
+ import { createSquadRuntime } from '../runtime/squad-runtime.js';
41
+ import { ArtifactStore } from '../artifacts/artifact-store.js';
42
+ import { AntigravityHostAdapter } from '../adapters/host/antigravity.adapter.js';
43
+ import { AnthropicHostAdapter } from '../adapters/host/anthropic.adapter.js';
44
+ import { ClaudeCodeHostAdapter } from '../adapters/host/claude-code.adapter.js';
45
+ import { LocalHostAdapter } from '../adapters/host/local.adapter.js';
46
+ import { OpenAIHostAdapter } from '../adapters/host/openai.adapter.js';
47
+ import { OpenCodeHostAdapter } from '../adapters/host/opencode.adapter.js';
48
+ import { ContextLoader } from '../context/context-loader.js';
49
+ import { ActiveHostDetector } from '../shell/services/active-host-detector.service.js';
50
+ import { HostResolutionService } from '../shell/services/host-resolution.service.js';
51
+ const CWD = process.cwd();
52
+ const ARTIFACTS_DIR = join(CWD, 'artifacts');
53
+ const SQUADS_DIR = join(CWD, 'squads');
54
+ // ─── Adapter selection ────────────────────────────────────────────────────────
55
+ const HOST_PREFS_PATH = join(CWD, 'squad-foundry.hosts.json');
56
+ function createAdapter(hostId) {
57
+ if (hostId === 'claude-code') {
58
+ return new ClaudeCodeHostAdapter();
59
+ }
60
+ if (hostId === 'opencode') {
61
+ return new OpenCodeHostAdapter();
62
+ }
63
+ if (hostId === 'anthropic')
64
+ return new AnthropicHostAdapter();
65
+ if (hostId === 'antigravity')
66
+ return new AntigravityHostAdapter();
67
+ if (hostId === 'local')
68
+ return new LocalHostAdapter();
69
+ if (hostId === 'openai')
70
+ return new OpenAIHostAdapter();
71
+ return null;
72
+ }
73
+ function loadPersistedPreference() {
74
+ if (!existsSync(HOST_PREFS_PATH))
75
+ return null;
76
+ try {
77
+ const data = JSON.parse(readFileSync(HOST_PREFS_PATH, 'utf-8'));
78
+ const validation = data.validation ?? (data.lastValidated
79
+ ? { timestamp: data.lastValidated, matchedSignals: [] }
80
+ : null);
81
+ return {
82
+ preferredHost: data.preferredHost ?? null,
83
+ validation,
84
+ };
85
+ }
86
+ catch {
87
+ return null;
88
+ }
89
+ }
90
+ function persistPreferredHost(preference) {
91
+ const existing = loadPersistedPreference();
92
+ const raw = existsSync(HOST_PREFS_PATH)
93
+ ? JSON.parse(readFileSync(HOST_PREFS_PATH, 'utf-8'))
94
+ : { hosts: [] };
95
+ const knownHosts = new Set([
96
+ ...(raw.hosts ?? []),
97
+ ...(existing?.preferredHost ? [existing.preferredHost] : []),
98
+ ...['claude-code', 'opencode', 'antigravity', 'anthropic', 'local', 'openai'],
99
+ ...(preference.preferredHost ? [preference.preferredHost] : []),
100
+ ]);
101
+ writeFileSync(HOST_PREFS_PATH, `${JSON.stringify({
102
+ preferredHost: preference.preferredHost,
103
+ validation: preference.validation,
104
+ lastValidated: preference.validation?.timestamp ?? null,
105
+ hosts: [...knownHosts].sort((a, b) => a.localeCompare(b)),
106
+ }, null, 2)}\n`, 'utf-8');
107
+ }
108
+ async function resolveHostAdapterForCommand(commandId) {
109
+ const explicitAdapter = process.env['SQUAD_FOUNDRY_ADAPTER'];
110
+ if (explicitAdapter && explicitAdapter !== 'auto') {
111
+ const adapter = createAdapter(explicitAdapter);
112
+ if (!adapter)
113
+ throw new Error(`Unsupported adapter '${explicitAdapter}'.`);
114
+ return adapter;
115
+ }
116
+ const detector = new ActiveHostDetector();
117
+ const detection = await detector.detect({ cwd: CWD, argv: process.argv, env: process.env, processHints: [process.title] });
118
+ const resolver = new HostResolutionService({
119
+ loadPersistedPreference: async () => loadPersistedPreference(),
120
+ persistPreferredHost: async (pref) => persistPreferredHost(pref),
121
+ getHostAdapter: (hostId) => createAdapter(hostId),
122
+ isCommandSupported: async (hostId, _cmd) => {
123
+ return createAdapter(hostId) !== null;
124
+ },
125
+ assistedSelectHost: async () => {
126
+ throw new Error('Host resolution requires explicit SQUAD_FOUNDRY_ADAPTER in MCP mode when no detected/persisted host is valid.');
127
+ },
128
+ });
129
+ const resolved = await resolver.resolve({ detection, commandId });
130
+ const adapter = createAdapter(resolved.hostId);
131
+ if (!adapter) {
132
+ throw new Error(`Resolved host '${resolved.hostId}' is not supported in MCP mode.`);
133
+ }
134
+ return adapter;
135
+ }
136
+ // ─── MCP Server ───────────────────────────────────────────────────────────────
137
+ const server = new McpServer({
138
+ name: 'squad-foundry',
139
+ version: '0.1.0',
140
+ });
141
+ // ─── squad_list ───────────────────────────────────────────────────────────────
142
+ server.tool('squad_list', 'Lista todos os squads disponíveis no projeto e seus jobs', {}, async () => {
143
+ if (!existsSync(SQUADS_DIR)) {
144
+ return { content: [{ type: 'text', text: 'Nenhum squad encontrado. Use squad_build para criar um.' }] };
145
+ }
146
+ const store = new ArtifactStore(ARTIFACTS_DIR);
147
+ const squads = readdirSync(SQUADS_DIR, { withFileTypes: true })
148
+ .filter((d) => d.isDirectory() && d.name !== 'templates' && d.name !== 'examples')
149
+ .map((d) => d.name);
150
+ if (squads.length === 0) {
151
+ return { content: [{ type: 'text', text: 'Nenhum squad encontrado. Use squad_build para criar um.' }] };
152
+ }
153
+ const lines = ['# Squads disponíveis\n'];
154
+ for (const squadId of squads) {
155
+ lines.push(`## ${squadId}`);
156
+ const jobs = store.listJobs(squadId);
157
+ if (jobs.length === 0) {
158
+ lines.push(' Sem jobs ainda.\n');
159
+ }
160
+ else {
161
+ for (const jobId of jobs) {
162
+ const job = store.loadJob(squadId, jobId);
163
+ lines.push(` - Job \`${jobId.slice(0, 16)}...\` [${job?.status ?? 'desconhecido'}]`);
164
+ }
165
+ lines.push('');
166
+ }
167
+ }
168
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
169
+ });
170
+ // ─── squad_build ─────────────────────────────────────────────────────────────
171
+ server.tool('squad_build', 'Cria um novo squad a partir de um conjunto de respostas da entrevista', {
172
+ answers: z.array(z.object({
173
+ questionId: z.string().describe('ID da pergunta (ex: q_objective, q_domain, q_squad_name)'),
174
+ answer: z.string().describe('Resposta para a pergunta'),
175
+ })).describe('Respostas da entrevista de criação do squad'),
176
+ }, async ({ answers }) => {
177
+ const builder = createSquadBuilder({ contextRootPath: CWD, outputDir: CWD });
178
+ const missing = builder.validateAnswers(answers);
179
+ if (missing.length > 0) {
180
+ const questions = builder.getQuestions().filter((q) => missing.includes(q.id));
181
+ const lines = ['# Perguntas obrigatórias não respondidas\n'];
182
+ for (const q of questions) {
183
+ lines.push(`**${q.id}**: ${q.question}`);
184
+ if (q.hint)
185
+ lines.push(` _Dica: ${q.hint}_`);
186
+ lines.push('');
187
+ }
188
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
189
+ }
190
+ try {
191
+ const result = await builder.build(answers);
192
+ const lines = [
193
+ `# Squad '${result.squadDefinition.name}' criado!\n`,
194
+ `**ID:** \`${result.squadDefinition.id}\``,
195
+ `**Domínio:** ${result.squadDefinition.domain}`,
196
+ `**Agentes:** ${result.squadDefinition.agents.map((a) => a.name).join(', ')}`,
197
+ '',
198
+ '## Arquivos gerados',
199
+ ...result.generatedFiles.map((f) => `- \`${f.path}\``),
200
+ ];
201
+ if (result.warnings.length > 0) {
202
+ lines.push('', '## Avisos', ...result.warnings.map((w) => `- ⚠ ${w}`));
203
+ }
204
+ lines.push('', `Para executar: use \`squad_run\` com squad_id \`${result.squadDefinition.id}\``);
205
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
206
+ }
207
+ catch (err) {
208
+ return { content: [{ type: 'text', text: `Erro ao criar squad: ${err}` }], isError: true };
209
+ }
210
+ });
211
+ // ─── squad_interview_questions ────────────────────────────────────────────────
212
+ server.tool('squad_interview_questions', 'Retorna todas as perguntas da entrevista de criação de squad', {}, async () => {
213
+ const builder = createSquadBuilder();
214
+ return { content: [{ type: 'text', text: builder.generateInterviewPrompt() }] };
215
+ });
216
+ // ─── squad_run ────────────────────────────────────────────────────────────────
217
+ server.tool('squad_run', 'Executa um job para um squad existente', {
218
+ squad_id: z.string().describe('ID do squad (ex: software-development, instagram-content)'),
219
+ objective: z.string().describe('Objetivo do job — o que deve ser feito'),
220
+ input: z.string().optional().describe('Input inicial — contexto adicional ou descrição detalhada'),
221
+ }, async ({ squad_id, objective, input }) => {
222
+ const squadConfigPath = join(CWD, 'squads', squad_id, 'config', 'squad.json');
223
+ // Também verifica nos exemplos
224
+ const examplePath = join(CWD, 'squads', 'examples', squad_id, 'config', 'squad.json');
225
+ const configPath = existsSync(squadConfigPath) ? squadConfigPath : existsSync(examplePath) ? examplePath : null;
226
+ if (!configPath) {
227
+ return {
228
+ content: [{ type: 'text', text: `Squad '${squad_id}' não encontrado.\nUse squad_list para ver os squads disponíveis.` }],
229
+ isError: true,
230
+ };
231
+ }
232
+ const { default: squadJson } = await import(configPath, { assert: { type: 'json' } });
233
+ const squad = squadJson;
234
+ // Resolve host adapter through shared detection+resolution flow
235
+ const hostAdapter = await resolveHostAdapterForCommand('run');
236
+ const runtime = createSquadRuntime({
237
+ artifactsDir: ARTIFACTS_DIR,
238
+ hostAdapter,
239
+ contextRootPath: CWD,
240
+ });
241
+ await hostAdapter.initialize();
242
+ const job = await runtime.startJob(squad, objective, input ?? objective);
243
+ await runtime.runAll(squad, job);
244
+ const lines = [
245
+ `# Job executado\n`,
246
+ `**Job ID:** \`${job.id}\``,
247
+ `**Squad:** ${squad.name}`,
248
+ `**Status:** ${job.status}`,
249
+ `**Objetivo:** ${job.objective}`,
250
+ '',
251
+ ];
252
+ if (job.artifacts.length > 0) {
253
+ lines.push('## Artefatos produzidos');
254
+ for (const a of job.artifacts) {
255
+ lines.push(`- **${a.name}** → \`${a.path}\``);
256
+ }
257
+ lines.push('');
258
+ }
259
+ if (job.status === 'WAITING_APPROVAL') {
260
+ const pending = job.approvals.filter((a) => a.status === 'pending');
261
+ lines.push('## ⚠ Aprovações pendentes');
262
+ for (const a of pending) {
263
+ lines.push(`- **ID:** \`${a.id}\``);
264
+ lines.push(` Necessário para: ${a.requiredFor}`);
265
+ }
266
+ lines.push('', 'Use `squad_approve` para aprovar ou rejeitar.');
267
+ }
268
+ if (job.status === 'FAILED') {
269
+ lines.push(`## ❌ Falha\n${job.failureReason ?? 'Sem detalhes'}`);
270
+ }
271
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
272
+ });
273
+ // ─── squad_status ─────────────────────────────────────────────────────────────
274
+ server.tool('squad_status', 'Consulta o status de um job específico', {
275
+ squad_id: z.string().describe('ID do squad'),
276
+ job_id: z.string().describe('ID do job (pode ser o prefixo)'),
277
+ }, async ({ squad_id, job_id }) => {
278
+ const store = new ArtifactStore(ARTIFACTS_DIR);
279
+ const jobs = store.listJobs(squad_id);
280
+ const matchedId = jobs.find((j) => j === job_id || j.startsWith(job_id));
281
+ if (!matchedId) {
282
+ return { content: [{ type: 'text', text: `Job '${job_id}' não encontrado para squad '${squad_id}'.` }], isError: true };
283
+ }
284
+ const job = store.loadJob(squad_id, matchedId);
285
+ if (!job) {
286
+ return { content: [{ type: 'text', text: 'Job não encontrado no disco.' }], isError: true };
287
+ }
288
+ const lines = [
289
+ `# Job ${job.id}\n`,
290
+ `**Squad:** ${job.squadId}`,
291
+ `**Status:** ${job.status}`,
292
+ `**Objetivo:** ${job.objective}`,
293
+ `**Iniciado:** ${job.startedAt}`,
294
+ `**Atualizado:** ${job.updatedAt}`,
295
+ job.completedAt ? `**Concluído:** ${job.completedAt}` : '',
296
+ '',
297
+ `## Artefatos (${job.artifacts.length})`,
298
+ ...job.artifacts.map((a) => `- ${a.name} → \`${a.path}\``),
299
+ '',
300
+ `## Aprovações (${job.approvals.length})`,
301
+ ...job.approvals.map((a) => `- [${a.status}] ${a.requiredFor} \`${a.id}\``),
302
+ '',
303
+ '## Últimos eventos',
304
+ ...job.history.slice(-5).map((e) => `- ${e.timestamp.slice(11, 19)} [${e.type}] ${e.message}`),
305
+ ];
306
+ return { content: [{ type: 'text', text: lines.filter(Boolean).join('\n') }] };
307
+ });
308
+ // ─── squad_approve ────────────────────────────────────────────────────────────
309
+ server.tool('squad_approve', 'Aprova ou rejeita uma aprovação pendente em um job', {
310
+ squad_id: z.string(),
311
+ job_id: z.string(),
312
+ approval_id: z.string().describe('ID da aprovação (retornado por squad_run ou squad_status)'),
313
+ decision: z.enum(['approve', 'reject']).describe('approve ou reject'),
314
+ notes: z.string().optional().describe('Notas opcionais sobre a decisão'),
315
+ }, async ({ squad_id, job_id, approval_id, decision, notes }) => {
316
+ const store = new ArtifactStore(ARTIFACTS_DIR);
317
+ const jobs = store.listJobs(squad_id);
318
+ const matchedId = jobs.find((j) => j === job_id || j.startsWith(job_id));
319
+ if (!matchedId) {
320
+ return { content: [{ type: 'text', text: `Job não encontrado.` }], isError: true };
321
+ }
322
+ const job = store.loadJob(squad_id, matchedId);
323
+ if (!job) {
324
+ return { content: [{ type: 'text', text: `Job não encontrado no disco.` }], isError: true };
325
+ }
326
+ const approval = job.approvals.find((a) => a.id === approval_id);
327
+ if (!approval) {
328
+ return { content: [{ type: 'text', text: `Aprovação '${approval_id}' não encontrada.` }], isError: true };
329
+ }
330
+ if (approval.status !== 'pending') {
331
+ return { content: [{ type: 'text', text: `Aprovação já resolvida (status: ${approval.status}).` }] };
332
+ }
333
+ // Aplica a decisão
334
+ approval.status = decision === 'approve' ? 'approved' : 'rejected';
335
+ approval.resolvedAt = new Date().toISOString();
336
+ approval.resolvedBy = 'human-via-mcp';
337
+ if (notes)
338
+ approval.notes = notes;
339
+ store.saveApprovals(squad_id, matchedId, job.approvals);
340
+ store.saveJob(job);
341
+ const verb = decision === 'approve' ? 'aprovada ✓' : 'rejeitada ✗';
342
+ return {
343
+ content: [{
344
+ type: 'text',
345
+ text: `Aprovação \`${approval_id}\` ${verb}.\n\nPara continuar o job após aprovação, execute squad_run novamente com o mesmo squad_id e objetivo.`,
346
+ }],
347
+ };
348
+ });
349
+ // ─── squad_context ────────────────────────────────────────────────────────────
350
+ server.tool('squad_context', 'Mostra o contexto do projeto carregado (PROJECT.md, TASKS.md, docs, etc.)', {}, async () => {
351
+ const loader = new ContextLoader({ rootPath: CWD });
352
+ const summary = await loader.summarize();
353
+ const lines = [
354
+ '# Contexto do projeto\n',
355
+ `**Arquivos encontrados:** ${summary.totalFiles}`,
356
+ `**Tamanho total:** ${(summary.totalBytes / 1024).toFixed(1)} KB`,
357
+ `**PROJECT.md:** ${summary.hasProjectMd ? '✓' : '✗ não encontrado'}`,
358
+ `**TASKS.md:** ${summary.hasTasksMd ? '✓' : '✗ não encontrado'}`,
359
+ `**AGENTS.md:** ${summary.hasAgentsMd ? '✓' : '✗ não encontrado'}`,
360
+ ];
361
+ if (summary.missingRecommended.length > 0) {
362
+ lines.push('', '## ⚠ Arquivos recomendados ausentes');
363
+ for (const f of summary.missingRecommended) {
364
+ lines.push(`- ${f} (veja \`templates/${f}\` para criar)`);
365
+ }
366
+ }
367
+ if (Object.keys(summary.categoryCounts).length > 0) {
368
+ lines.push('', '## Distribuição por categoria');
369
+ for (const [cat, count] of Object.entries(summary.categoryCounts)) {
370
+ lines.push(`- **${cat}**: ${count} arquivo(s)`);
371
+ }
372
+ }
373
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
374
+ });
375
+ // ─── Start server ─────────────────────────────────────────────────────────────
376
+ const transport = new StdioServerTransport();
377
+ await server.connect(transport);
378
+ //# sourceMappingURL=server.js.map