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,173 @@
1
+ /**
2
+ * IDEHostAdapter
3
+ *
4
+ * The correct adapter for Claude Code, OpenCode, Codex, Cursor, Zed, Antigravity,
5
+ * and any other AI-native IDE or agent host.
6
+ *
7
+ * These environments ARE the model — they don't need an API key because
8
+ * they are already running inside an LLM session. The IDE/tool handles
9
+ * model execution natively. This adapter simply formats the prompt and
10
+ * delegates execution back to whatever callback the host environment provides.
11
+ *
12
+ * Usage pattern:
13
+ *
14
+ * // Inside Claude Code, OpenCode, etc.:
15
+ * import { IDEHostAdapter } from 'squad-foundry'
16
+ *
17
+ * const adapter = new IDEHostAdapter(async (prompt) => {
18
+ * // The IDE calls its own model here.
19
+ * // In Claude Code this is handled automatically.
20
+ * // In OpenCode you'd use their SDK.
21
+ * // In a script context you'd call your preferred provider.
22
+ * return yourModel.complete(prompt)
23
+ * })
24
+ *
25
+ * The callback receives the fully-built prompt (system + context + step instructions)
26
+ * and returns the raw text response. The adapter parses artifacts and handoff signals
27
+ * from the response text.
28
+ *
29
+ * STATUS: REAL — fully functional when a callback is provided.
30
+ */
31
+ /**
32
+ * Parse artifacts from agent response text.
33
+ *
34
+ * Agents can include artifacts in their response using this convention:
35
+ *
36
+ * ARTIFACT:<name>:<format>
37
+ * <content>
38
+ * END_ARTIFACT
39
+ *
40
+ * This is a lightweight protocol that works in plain text without any
41
+ * tool-use features — compatible with every LLM and every host.
42
+ */
43
+ function parseArtifactsFromText(text) {
44
+ const artifacts = [];
45
+ const pattern = /ARTIFACT:([^:]+):([^\n]+)\n([\s\S]*?)END_ARTIFACT/g;
46
+ let match;
47
+ while ((match = pattern.exec(text)) !== null) {
48
+ const name = match[1]?.trim();
49
+ const format = (match[2]?.trim() ?? 'text');
50
+ const content = match[3]?.trim() ?? '';
51
+ if (name) {
52
+ artifacts.push({ name, format, content });
53
+ }
54
+ }
55
+ return artifacts;
56
+ }
57
+ /**
58
+ * Parse a handoff signal from response text.
59
+ *
60
+ * Convention:
61
+ * HANDOFF:<target_agent_id>:<condition>
62
+ */
63
+ function parseHandoffSignal(text, agents) {
64
+ const pattern = /HANDOFF:([^\s:]+):(.+)/;
65
+ const match = pattern.exec(text);
66
+ if (!match)
67
+ return undefined;
68
+ const targetAgentId = match[1]?.trim() ?? '';
69
+ const condition = match[2]?.trim() ?? 'step_completed';
70
+ if (agents && agents.length > 0 && !agents.includes(targetAgentId))
71
+ return undefined;
72
+ return {
73
+ targetAgentId,
74
+ condition,
75
+ payload: { summary: `Agent signalled handoff to ${targetAgentId}` },
76
+ };
77
+ }
78
+ export class IDEHostAdapter {
79
+ id = 'ide';
80
+ name;
81
+ invoker;
82
+ parseArtifactsFromResponse;
83
+ activeModel;
84
+ constructor(invoker, options = {}) {
85
+ this.invoker = invoker;
86
+ this.name = options.hostName ?? 'IDE Host (Claude Code / OpenCode / Cursor / etc.)';
87
+ this.parseArtifactsFromResponse = options.parseArtifacts ?? true;
88
+ this.activeModel = options.activeModel ?? 'host-native';
89
+ }
90
+ detect(context) {
91
+ const argv = (context.argv ?? process.argv).map((item) => item.toLowerCase());
92
+ const env = context.env ?? process.env;
93
+ const hasIdeSignal = argv.some((item) => item.includes('claude') || item.includes('opencode') || item.includes('codex'))
94
+ || Boolean(env['CLAUDE_CODE'] || env['OPENCODE'] || env['CODEX']);
95
+ return {
96
+ isDetected: hasIdeSignal,
97
+ confidence: hasIdeSignal ? 'medium' : 'low',
98
+ reasons: hasIdeSignal ? ['Detected IDE host signal from argv/env'] : [],
99
+ };
100
+ }
101
+ async initialize() {
102
+ // No initialization needed — the IDE environment is already running
103
+ }
104
+ async runInterviewTurn(input, _state) {
105
+ const rawResponse = await this.invoker(input.prompt);
106
+ return {
107
+ content: rawResponse,
108
+ status: 'continue',
109
+ metadata: { host: this.id, model: this.activeModel ?? 'host-default' },
110
+ };
111
+ }
112
+ async getActiveModel() {
113
+ return this.activeModel;
114
+ }
115
+ async sendPrompt(prompt, agent, job, step, options) {
116
+ // Delegate to the host environment's model
117
+ const rawResponse = await this.invoker(prompt, {
118
+ temperature: options?.temperature,
119
+ maxTokens: options?.maxTokens,
120
+ });
121
+ // Parse artifacts from response text
122
+ const artifacts = this.parseArtifactsFromResponse
123
+ ? parseArtifactsFromText(rawResponse)
124
+ : [];
125
+ // Parse handoff signal
126
+ const allowedAgentIds = Array.isArray(options?.metadata?.['allowedAgentIds'])
127
+ ? (options?.metadata?.['allowedAgentIds'])
128
+ .filter((item) => typeof item === 'string')
129
+ : undefined;
130
+ const handoffSignal = parseHandoffSignal(rawResponse, allowedAgentIds);
131
+ // Detect approval request
132
+ const approvalNeeded = rawResponse.toLowerCase().includes('[needs_approval]') ||
133
+ rawResponse.toLowerCase().includes('[approval_required]');
134
+ const approvalReason = approvalNeeded
135
+ ? `Agent '${agent.name}' requested human approval`
136
+ : undefined;
137
+ // Detect failure
138
+ const status = rawResponse.toLowerCase().includes('[failure]') ||
139
+ rawResponse.toLowerCase().includes('[failed]')
140
+ ? 'failure'
141
+ : 'success';
142
+ return {
143
+ agentId: agent.id,
144
+ stepId: step.id,
145
+ jobId: job.id,
146
+ content: rawResponse,
147
+ artifacts,
148
+ handoffSignal,
149
+ approvalNeeded,
150
+ approvalReason,
151
+ status,
152
+ };
153
+ }
154
+ getCapabilities() {
155
+ return {
156
+ supportsStreaming: false,
157
+ supportsToolUse: true,
158
+ supportsVision: false,
159
+ maxContextTokens: 200000,
160
+ supportedModels: ['host-native'],
161
+ };
162
+ }
163
+ async healthCheck() {
164
+ try {
165
+ const result = await this.invoker('ping');
166
+ return typeof result === 'string';
167
+ }
168
+ catch {
169
+ return false;
170
+ }
171
+ }
172
+ }
173
+ //# sourceMappingURL=ide.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ide.adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/ide.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * LocalHostAdapter — Stub
3
+ *
4
+ * Adapter for running agents via a locally hosted LLM (Ollama, LM Studio,
5
+ * llama.cpp OpenAI-compatible endpoint, etc.).
6
+ *
7
+ * STATUS: STUB — sends a mock response.
8
+ * To activate: configure LOCAL_LLM_BASE_URL and implement the HTTP call.
9
+ */
10
+ import type { IHostAdapter, PromptOptions, HostCapabilities, HostDetectionContext, HostDetectionResult, InterviewTurnInput, InterviewTurnState, InterviewTurnResult } from './IHostAdapter.js';
11
+ import type { AgentDefinition, AgentResponse, JobDefinition, WorkflowStep } from '../../core/types.js';
12
+ export declare class LocalHostAdapter implements IHostAdapter {
13
+ readonly id = "local";
14
+ readonly name = "Local LLM (Ollama / llama.cpp compatible)";
15
+ private baseUrl;
16
+ private defaultModel;
17
+ constructor(baseUrl?: string, defaultModel?: string);
18
+ detect(context: HostDetectionContext): HostDetectionResult;
19
+ initialize(): Promise<void>;
20
+ runInterviewTurn(input: InterviewTurnInput, _state: InterviewTurnState): Promise<InterviewTurnResult>;
21
+ getActiveModel(): Promise<string | null>;
22
+ sendPrompt(prompt: string, agent: AgentDefinition, job: JobDefinition, step: WorkflowStep, options?: PromptOptions): Promise<AgentResponse>;
23
+ getCapabilities(): HostCapabilities;
24
+ healthCheck(): Promise<boolean>;
25
+ }
26
+ //# sourceMappingURL=local.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/local.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEtG,qBAAa,gBAAiB,YAAW,YAAY;IACnD,QAAQ,CAAC,EAAE,WAAU;IACrB,QAAQ,CAAC,IAAI,+CAA8C;IAE3D,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,YAAY,CAAQ;gBAEhB,OAAO,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAKnD,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAUpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQrG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC;IAqBzB,eAAe,IAAI,gBAAgB;IAU7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAWtC"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * LocalHostAdapter — Stub
3
+ *
4
+ * Adapter for running agents via a locally hosted LLM (Ollama, LM Studio,
5
+ * llama.cpp OpenAI-compatible endpoint, etc.).
6
+ *
7
+ * STATUS: STUB — sends a mock response.
8
+ * To activate: configure LOCAL_LLM_BASE_URL and implement the HTTP call.
9
+ */
10
+ export class LocalHostAdapter {
11
+ id = 'local';
12
+ name = 'Local LLM (Ollama / llama.cpp compatible)';
13
+ baseUrl;
14
+ defaultModel;
15
+ constructor(baseUrl, defaultModel) {
16
+ this.baseUrl = baseUrl ?? process.env['LOCAL_LLM_BASE_URL'] ?? 'http://localhost:11434';
17
+ this.defaultModel = defaultModel ?? process.env['LOCAL_LLM_MODEL'] ?? 'llama3.2';
18
+ }
19
+ detect(context) {
20
+ const env = context.env ?? process.env;
21
+ const hasLocalSignal = Boolean(env['LOCAL_LLM_BASE_URL'] || env['LOCAL_LLM_MODEL']);
22
+ return {
23
+ isDetected: hasLocalSignal,
24
+ confidence: hasLocalSignal ? 'medium' : 'low',
25
+ reasons: hasLocalSignal ? ['Detected LOCAL_LLM_* environment variables'] : [],
26
+ };
27
+ }
28
+ async initialize() {
29
+ console.log(`[LocalHostAdapter] Connecting to local LLM at ${this.baseUrl}`);
30
+ }
31
+ async runInterviewTurn(input, _state) {
32
+ return {
33
+ content: input.prompt,
34
+ status: 'continue',
35
+ metadata: { host: this.id, model: this.defaultModel, stub: true },
36
+ };
37
+ }
38
+ async getActiveModel() {
39
+ return this.defaultModel;
40
+ }
41
+ async sendPrompt(prompt, agent, job, step, options) {
42
+ // STUB: Replace with real HTTP call to local LLM
43
+ // Example (Ollama):
44
+ // const res = await fetch(`${this.baseUrl}/api/generate`, {
45
+ // method: 'POST',
46
+ // body: JSON.stringify({ model: options?.model ?? this.defaultModel, prompt })
47
+ // })
48
+ const model = options?.model ?? this.defaultModel;
49
+ console.log(`[LocalHostAdapter][STUB] sendPrompt — agent=${agent.id}, model=${model}, step=${step.id}, prompt_len=${prompt.length}`);
50
+ return {
51
+ agentId: agent.id,
52
+ stepId: step.id,
53
+ jobId: job.id,
54
+ content: `[STUB] Local LLM response for agent '${agent.name}' at step '${step.name}'. Configure LOCAL_LLM_BASE_URL and replace stub.`,
55
+ artifacts: [],
56
+ status: 'success',
57
+ metadata: { stub: true, model, baseUrl: this.baseUrl },
58
+ };
59
+ }
60
+ getCapabilities() {
61
+ return {
62
+ supportsStreaming: true,
63
+ supportsToolUse: false,
64
+ supportsVision: false,
65
+ maxContextTokens: 32768,
66
+ supportedModels: [this.defaultModel],
67
+ };
68
+ }
69
+ async healthCheck() {
70
+ try {
71
+ // STUB: Replace with real connectivity check
72
+ // const res = await fetch(`${this.baseUrl}/api/tags`)
73
+ // return res.ok
74
+ console.log(`[LocalHostAdapter] Would check connectivity to ${this.baseUrl}`);
75
+ return true;
76
+ }
77
+ catch {
78
+ return false;
79
+ }
80
+ }
81
+ }
82
+ //# sourceMappingURL=local.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/local.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * OpenAIHostAdapter — Stub
3
+ *
4
+ * Adapter for running agents via the OpenAI Chat Completions API.
5
+ * Supports GPT-4o, GPT-4o-mini, o1, o3 models.
6
+ *
7
+ * STATUS: STUB — interface is complete, but sendPrompt returns a mock response.
8
+ * To activate: set OPENAI_API_KEY and implement the API call below.
9
+ */
10
+ import type { IHostAdapter, PromptOptions, HostCapabilities, HostDetectionContext, HostDetectionResult, InterviewTurnInput, InterviewTurnState, InterviewTurnResult } from './IHostAdapter.js';
11
+ import type { AgentDefinition, AgentResponse, JobDefinition, WorkflowStep } from '../../core/types.js';
12
+ export declare class OpenAIHostAdapter implements IHostAdapter {
13
+ readonly id = "openai";
14
+ readonly name = "OpenAI (API)";
15
+ private apiKey;
16
+ private defaultModel;
17
+ constructor(apiKey?: string);
18
+ detect(context: HostDetectionContext): HostDetectionResult;
19
+ initialize(): Promise<void>;
20
+ runInterviewTurn(input: InterviewTurnInput, _state: InterviewTurnState): Promise<InterviewTurnResult>;
21
+ getActiveModel(): Promise<string | null>;
22
+ sendPrompt(prompt: string, agent: AgentDefinition, job: JobDefinition, step: WorkflowStep, options?: PromptOptions): Promise<AgentResponse>;
23
+ getCapabilities(): HostCapabilities;
24
+ healthCheck(): Promise<boolean>;
25
+ }
26
+ //# sourceMappingURL=openai.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/openai.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEtG,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,EAAE,YAAW;IACtB,QAAQ,CAAC,IAAI,kBAAiB;IAE9B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAQ;gBAEhB,MAAM,CAAC,EAAE,MAAM;IAK3B,MAAM,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB;IAUpD,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAQrG,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxC,UAAU,CACd,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,eAAe,EACtB,GAAG,EAAE,aAAa,EAClB,IAAI,EAAE,YAAY,EAClB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,aAAa,CAAC;IAmBzB,eAAe,IAAI,gBAAgB;IAU7B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAOtC"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * OpenAIHostAdapter — Stub
3
+ *
4
+ * Adapter for running agents via the OpenAI Chat Completions API.
5
+ * Supports GPT-4o, GPT-4o-mini, o1, o3 models.
6
+ *
7
+ * STATUS: STUB — interface is complete, but sendPrompt returns a mock response.
8
+ * To activate: set OPENAI_API_KEY and implement the API call below.
9
+ */
10
+ export class OpenAIHostAdapter {
11
+ id = 'openai';
12
+ name = 'OpenAI (API)';
13
+ apiKey;
14
+ defaultModel;
15
+ constructor(apiKey) {
16
+ this.apiKey = apiKey ?? process.env['OPENAI_API_KEY'];
17
+ this.defaultModel = process.env['OPENAI_MODEL'] ?? 'gpt-4o';
18
+ }
19
+ detect(context) {
20
+ const env = context.env ?? process.env;
21
+ const hasApiKey = Boolean(env['OPENAI_API_KEY']);
22
+ return {
23
+ isDetected: hasApiKey,
24
+ confidence: hasApiKey ? 'medium' : 'low',
25
+ reasons: hasApiKey ? ['Detected OPENAI_API_KEY in environment'] : [],
26
+ };
27
+ }
28
+ async initialize() {
29
+ if (!this.apiKey) {
30
+ console.warn('[OpenAIHostAdapter] OPENAI_API_KEY not set — running in stub mode');
31
+ }
32
+ }
33
+ async runInterviewTurn(input, _state) {
34
+ return {
35
+ content: input.prompt,
36
+ status: 'continue',
37
+ metadata: { host: this.id, model: this.defaultModel, stub: true },
38
+ };
39
+ }
40
+ async getActiveModel() {
41
+ return this.defaultModel;
42
+ }
43
+ async sendPrompt(prompt, agent, job, step, options) {
44
+ // STUB: Replace with real OpenAI SDK call
45
+ // Example real implementation:
46
+ // const client = new OpenAI({ apiKey: this.apiKey })
47
+ // const completion = await client.chat.completions.create({ model: options?.model ?? 'gpt-4o', ... })
48
+ console.log(`[OpenAIHostAdapter][STUB] sendPrompt — agent=${agent.id}, step=${step.id}`);
49
+ console.log(`[OpenAIHostAdapter][STUB] Prompt: ${prompt.slice(0, 100)}...`);
50
+ return {
51
+ agentId: agent.id,
52
+ stepId: step.id,
53
+ jobId: job.id,
54
+ content: `[STUB] OpenAI response for agent '${agent.name}' at step '${step.name}'. Configure OPENAI_API_KEY and replace stub.`,
55
+ artifacts: [],
56
+ status: 'success',
57
+ metadata: { stub: true, model: options?.model ?? 'gpt-4o' },
58
+ };
59
+ }
60
+ getCapabilities() {
61
+ return {
62
+ supportsStreaming: true,
63
+ supportsToolUse: true,
64
+ supportsVision: true,
65
+ maxContextTokens: 128000,
66
+ supportedModels: ['gpt-4o', 'gpt-4o-mini', 'o1', 'o3-mini'],
67
+ };
68
+ }
69
+ async healthCheck() {
70
+ if (!this.apiKey) {
71
+ console.warn('[OpenAIHostAdapter] Health check failed — no API key');
72
+ return false;
73
+ }
74
+ return true;
75
+ }
76
+ }
77
+ //# sourceMappingURL=openai.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/openai.adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { IDEHostAdapter, type IDEHostAdapterOptions, type ModelInvoker } from './ide.adapter.js';
2
+ export type OpenCodeHostAdapterOptions = IDEHostAdapterOptions & {
3
+ invoker?: ModelInvoker;
4
+ command?: string;
5
+ args?: string[];
6
+ promptMode?: 'stdin' | 'arg';
7
+ };
8
+ export declare class OpenCodeHostAdapter extends IDEHostAdapter {
9
+ readonly id = "opencode";
10
+ readonly name = "OpenCode (native CLI bridge)";
11
+ constructor(options?: OpenCodeHostAdapterOptions);
12
+ }
13
+ //# sourceMappingURL=opencode.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.adapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/opencode.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAEhG,MAAM,MAAM,0BAA0B,GAAG,qBAAqB,GAAG;IAC/D,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,UAAU,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;CAC7B,CAAA;AAWD,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,QAAQ,CAAC,EAAE,cAAa;IACxB,QAAQ,CAAC,IAAI,kCAAiC;gBAElC,OAAO,GAAE,0BAA+B;CAYrD"}
@@ -0,0 +1,27 @@
1
+ import { createCommandModelInvoker } from './command-model-invoker.js';
2
+ import { IDEHostAdapter } from './ide.adapter.js';
3
+ function resolveArgs(args) {
4
+ if (args && args.length > 0)
5
+ return args;
6
+ const envArgs = process.env['OPENCODE_BRIDGE_ARGS'];
7
+ if (envArgs && envArgs.trim().length > 0) {
8
+ return envArgs.split(' ').filter((part) => part.trim().length > 0);
9
+ }
10
+ return ['complete'];
11
+ }
12
+ export class OpenCodeHostAdapter extends IDEHostAdapter {
13
+ id = 'opencode';
14
+ name = 'OpenCode (native CLI bridge)';
15
+ constructor(options = {}) {
16
+ const command = options.command ?? process.env['OPENCODE_BRIDGE_CMD'] ?? 'opencode';
17
+ const args = resolveArgs(options.args);
18
+ const promptMode = options.promptMode ?? process.env['OPENCODE_BRIDGE_PROMPT_MODE'] ?? 'stdin';
19
+ const invoker = options.invoker ?? createCommandModelInvoker({ command, args, promptMode });
20
+ super(invoker, {
21
+ ...options,
22
+ hostName: 'OpenCode',
23
+ activeModel: options.activeModel ?? process.env['OPENCODE_ACTIVE_MODEL'] ?? 'host-native',
24
+ });
25
+ }
26
+ }
27
+ //# sourceMappingURL=opencode.adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"opencode.adapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/host/opencode.adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,cAAc,EAAiD,MAAM,kBAAkB,CAAA;AAShG,SAAS,WAAW,CAAC,IAAe;IAClC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAA;IACxC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACnD,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACpE,CAAC;IACD,OAAO,CAAC,UAAU,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IAC5C,EAAE,GAAG,UAAU,CAAA;IACf,IAAI,GAAG,8BAA8B,CAAA;IAE9C,YAAY,UAAsC,EAAE;QAClD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,UAAU,CAAA;QACnF,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;QACtC,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAK,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAiC,IAAI,OAAO,CAAA;QAC/H,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,yBAAyB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;QAE3F,KAAK,CAAC,OAAO,EAAE;YACb,GAAG,OAAO;YACV,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,aAAa;SAC1F,CAAC,CAAA;IACJ,CAAC;CACF"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * IModelAdapter — Model/Provider Adapter Interface
3
+ *
4
+ * Abstracts the AI model provider (Anthropic, OpenAI, Gemini, Ollama, etc.).
5
+ * Separates model routing from host runtime — you can run Anthropic models
6
+ * from a local host, or OpenAI models from Claude Code.
7
+ *
8
+ * STATUS: Interface defined. Concrete adapters: per-provider stubs.
9
+ */
10
+ import type { ModelPreference } from '../../core/types.js';
11
+ export interface ModelRequest {
12
+ systemPrompt: string;
13
+ userMessage: string;
14
+ history?: MessageTurn[];
15
+ temperature?: number;
16
+ maxTokens?: number;
17
+ tools?: ToolDefinition[];
18
+ }
19
+ export interface MessageTurn {
20
+ role: 'user' | 'assistant';
21
+ content: string;
22
+ }
23
+ export interface ToolDefinition {
24
+ name: string;
25
+ description: string;
26
+ inputSchema: Record<string, unknown>;
27
+ }
28
+ export interface ModelResponse {
29
+ content: string;
30
+ tokensUsed?: {
31
+ input: number;
32
+ output: number;
33
+ };
34
+ stopReason?: 'end_turn' | 'max_tokens' | 'tool_use' | 'stop_sequence';
35
+ model: string;
36
+ provider: string;
37
+ }
38
+ export interface ModelInfo {
39
+ id: string;
40
+ name: string;
41
+ provider: string;
42
+ maxContextTokens: number;
43
+ supportsTools: boolean;
44
+ supportsVision: boolean;
45
+ costPer1kInputTokens?: number;
46
+ costPer1kOutputTokens?: number;
47
+ }
48
+ /**
49
+ * Interface for model/provider adapters.
50
+ * Implement this to add support for a new AI provider.
51
+ */
52
+ export interface IModelAdapter {
53
+ readonly provider: string;
54
+ readonly defaultModel: string;
55
+ /**
56
+ * Send a request to the model and get a response.
57
+ */
58
+ complete(request: ModelRequest, preference?: ModelPreference): Promise<ModelResponse>;
59
+ /**
60
+ * List available models from this provider.
61
+ */
62
+ listModels(): Promise<ModelInfo[]>;
63
+ /**
64
+ * Check that credentials and connectivity are valid.
65
+ */
66
+ healthCheck(): Promise<boolean>;
67
+ }
68
+ //# sourceMappingURL=IModelAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelAdapter.d.ts","sourceRoot":"","sources":["../../../../orchestrator/adapters/model/IModelAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAE1D,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAC9C,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,UAAU,GAAG,eAAe,CAAA;IACrE,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,OAAO,CAAA;IACtB,cAAc,EAAE,OAAO,CAAA;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,CAAA;IAErF;;OAEG;IACH,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAElC;;OAEG;IACH,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;CAChC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * IModelAdapter — Model/Provider Adapter Interface
3
+ *
4
+ * Abstracts the AI model provider (Anthropic, OpenAI, Gemini, Ollama, etc.).
5
+ * Separates model routing from host runtime — you can run Anthropic models
6
+ * from a local host, or OpenAI models from Claude Code.
7
+ *
8
+ * STATUS: Interface defined. Concrete adapters: per-provider stubs.
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=IModelAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IModelAdapter.js","sourceRoot":"","sources":["../../../../orchestrator/adapters/model/IModelAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * ISocialMediaAdapter — Social Media Publishing Adapter Interface
3
+ *
4
+ * Abstracts publishing operations across social media platforms
5
+ * (Instagram, Twitter/X, LinkedIn, TikTok, etc.).
6
+ *
7
+ * STATUS: Interface defined. Concrete adapters: instagram (stub)
8
+ */
9
+ export type MediaType = 'image' | 'video' | 'carousel' | 'reel' | 'story' | 'text';
10
+ export interface MediaAsset {
11
+ type: MediaType;
12
+ url?: string;
13
+ localPath?: string;
14
+ altText?: string;
15
+ caption?: string;
16
+ }
17
+ export interface PostDraft {
18
+ caption: string;
19
+ media?: MediaAsset[];
20
+ hashtags?: string[];
21
+ mentions?: string[];
22
+ scheduledAt?: string;
23
+ location?: string;
24
+ }
25
+ export interface PublishedPost {
26
+ id: string;
27
+ platformPostId: string;
28
+ url: string;
29
+ caption: string;
30
+ publishedAt: string;
31
+ status: 'published' | 'scheduled' | 'failed' | 'pending_review';
32
+ platform: string;
33
+ }
34
+ export interface PostAnalytics {
35
+ postId: string;
36
+ impressions: number;
37
+ reach: number;
38
+ engagement: number;
39
+ likes: number;
40
+ comments: number;
41
+ shares: number;
42
+ saves?: number;
43
+ clickThroughRate?: number;
44
+ measuredAt: string;
45
+ }
46
+ export interface AccountInfo {
47
+ id: string;
48
+ username: string;
49
+ displayName: string;
50
+ platform: string;
51
+ followerCount: number;
52
+ followingCount: number;
53
+ postCount: number;
54
+ }
55
+ export interface PublishingCapabilities {
56
+ supportsScheduling: boolean;
57
+ supportsCarousel: boolean;
58
+ supportsVideo: boolean;
59
+ supportsStories: boolean;
60
+ supportsAnalytics: boolean;
61
+ maxCaptionLength: number;
62
+ maxHashtags: number;
63
+ }
64
+ /**
65
+ * Interface for social media publishing adapters.
66
+ * Implement this to add support for Instagram, LinkedIn, Twitter/X, etc.
67
+ */
68
+ export interface ISocialMediaAdapter {
69
+ readonly id: string;
70
+ readonly platform: string;
71
+ initialize(): Promise<void>;
72
+ /** Get the authenticated account info */
73
+ getAccountInfo(): Promise<AccountInfo>;
74
+ /**
75
+ * Publish a post immediately.
76
+ * IMPORTANT: This must never be called without human approval (guardrail enforced).
77
+ */
78
+ publishPost(draft: PostDraft): Promise<PublishedPost>;
79
+ /**
80
+ * Schedule a post for a future time.
81
+ * IMPORTANT: Requires human approval before scheduling.
82
+ */
83
+ schedulePost(draft: PostDraft, publishAt: string): Promise<PublishedPost>;
84
+ /** Get analytics for a published post */
85
+ getPostAnalytics(postId: string): Promise<PostAnalytics>;
86
+ /** List recent posts */
87
+ listPosts(limit?: number): Promise<PublishedPost[]>;
88
+ /** Delete a scheduled post (not published) */
89
+ cancelScheduledPost(postId: string): Promise<void>;
90
+ getCapabilities(): PublishingCapabilities;
91
+ healthCheck(): Promise<boolean>;
92
+ }
93
+ //# sourceMappingURL=ISocialMediaAdapter.d.ts.map