@bazaar.ai/mcp-human-agents 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 (259) hide show
  1. package/.env.example +15 -0
  2. package/README.md +178 -0
  3. package/dist/mcp-server/src/bin.d.ts +3 -0
  4. package/dist/mcp-server/src/bin.d.ts.map +1 -0
  5. package/dist/mcp-server/src/bin.js +10 -0
  6. package/dist/mcp-server/src/bin.js.map +1 -0
  7. package/dist/mcp-server/src/cli/setup.d.ts +2 -0
  8. package/dist/mcp-server/src/cli/setup.d.ts.map +1 -0
  9. package/dist/mcp-server/src/cli/setup.js +274 -0
  10. package/dist/mcp-server/src/cli/setup.js.map +1 -0
  11. package/dist/mcp-server/src/config/defaults.d.ts +16 -0
  12. package/dist/mcp-server/src/config/defaults.d.ts.map +1 -0
  13. package/dist/mcp-server/src/config/defaults.js +19 -0
  14. package/dist/mcp-server/src/config/defaults.js.map +1 -0
  15. package/dist/mcp-server/src/config/env.d.ts +73 -0
  16. package/dist/mcp-server/src/config/env.d.ts.map +1 -0
  17. package/dist/mcp-server/src/config/env.js +72 -0
  18. package/dist/mcp-server/src/config/env.js.map +1 -0
  19. package/dist/mcp-server/src/config/index.d.ts +3 -0
  20. package/dist/mcp-server/src/config/index.d.ts.map +1 -0
  21. package/dist/mcp-server/src/config/index.js +22 -0
  22. package/dist/mcp-server/src/config/index.js.map +1 -0
  23. package/dist/mcp-server/src/context/generator.d.ts +16 -0
  24. package/dist/mcp-server/src/context/generator.d.ts.map +1 -0
  25. package/dist/mcp-server/src/context/generator.js +61 -0
  26. package/dist/mcp-server/src/context/generator.js.map +1 -0
  27. package/dist/mcp-server/src/context/index.d.ts +3 -0
  28. package/dist/mcp-server/src/context/index.d.ts.map +1 -0
  29. package/dist/mcp-server/src/context/index.js +10 -0
  30. package/dist/mcp-server/src/context/index.js.map +1 -0
  31. package/dist/mcp-server/src/context/templates.d.ts +8 -0
  32. package/dist/mcp-server/src/context/templates.d.ts.map +1 -0
  33. package/dist/mcp-server/src/context/templates.js +41 -0
  34. package/dist/mcp-server/src/context/templates.js.map +1 -0
  35. package/dist/mcp-server/src/git/branch.d.ts +13 -0
  36. package/dist/mcp-server/src/git/branch.d.ts.map +1 -0
  37. package/dist/mcp-server/src/git/branch.js +49 -0
  38. package/dist/mcp-server/src/git/branch.js.map +1 -0
  39. package/dist/mcp-server/src/git/diff.d.ts +10 -0
  40. package/dist/mcp-server/src/git/diff.d.ts.map +1 -0
  41. package/dist/mcp-server/src/git/diff.js +39 -0
  42. package/dist/mcp-server/src/git/diff.js.map +1 -0
  43. package/dist/mcp-server/src/git/index.d.ts +5 -0
  44. package/dist/mcp-server/src/git/index.d.ts.map +1 -0
  45. package/dist/mcp-server/src/git/index.js +16 -0
  46. package/dist/mcp-server/src/git/index.js.map +1 -0
  47. package/dist/mcp-server/src/git/merge.d.ts +6 -0
  48. package/dist/mcp-server/src/git/merge.d.ts.map +1 -0
  49. package/dist/mcp-server/src/git/merge.js +30 -0
  50. package/dist/mcp-server/src/git/merge.js.map +1 -0
  51. package/dist/mcp-server/src/git/worktree.d.ts +11 -0
  52. package/dist/mcp-server/src/git/worktree.d.ts.map +1 -0
  53. package/dist/mcp-server/src/git/worktree.js +38 -0
  54. package/dist/mcp-server/src/git/worktree.js.map +1 -0
  55. package/dist/mcp-server/src/http-wrapper.d.ts +6 -0
  56. package/dist/mcp-server/src/http-wrapper.d.ts.map +1 -0
  57. package/dist/mcp-server/src/http-wrapper.js +85 -0
  58. package/dist/mcp-server/src/http-wrapper.js.map +1 -0
  59. package/dist/mcp-server/src/index.d.ts +2 -0
  60. package/dist/mcp-server/src/index.d.ts.map +1 -0
  61. package/dist/mcp-server/src/index.js +28 -0
  62. package/dist/mcp-server/src/index.js.map +1 -0
  63. package/dist/mcp-server/src/platform-client/client.d.ts +17 -0
  64. package/dist/mcp-server/src/platform-client/client.d.ts.map +1 -0
  65. package/dist/mcp-server/src/platform-client/client.js +68 -0
  66. package/dist/mcp-server/src/platform-client/client.js.map +1 -0
  67. package/dist/mcp-server/src/platform-client/index.d.ts +5 -0
  68. package/dist/mcp-server/src/platform-client/index.d.ts.map +1 -0
  69. package/dist/mcp-server/src/platform-client/index.js +10 -0
  70. package/dist/mcp-server/src/platform-client/index.js.map +1 -0
  71. package/dist/mcp-server/src/platform-client/mock-client.d.ts +28 -0
  72. package/dist/mcp-server/src/platform-client/mock-client.d.ts.map +1 -0
  73. package/dist/mcp-server/src/platform-client/mock-client.js +75 -0
  74. package/dist/mcp-server/src/platform-client/mock-client.js.map +1 -0
  75. package/dist/mcp-server/src/platform-client/polling.d.ts +9 -0
  76. package/dist/mcp-server/src/platform-client/polling.d.ts.map +1 -0
  77. package/dist/mcp-server/src/platform-client/polling.js +40 -0
  78. package/dist/mcp-server/src/platform-client/polling.js.map +1 -0
  79. package/dist/mcp-server/src/platform-client/types.d.ts +2 -0
  80. package/dist/mcp-server/src/platform-client/types.d.ts.map +1 -0
  81. package/dist/mcp-server/src/platform-client/types.js +3 -0
  82. package/dist/mcp-server/src/platform-client/types.js.map +1 -0
  83. package/dist/mcp-server/src/provisioning/authorized-keys.d.ts +14 -0
  84. package/dist/mcp-server/src/provisioning/authorized-keys.d.ts.map +1 -0
  85. package/dist/mcp-server/src/provisioning/authorized-keys.js +48 -0
  86. package/dist/mcp-server/src/provisioning/authorized-keys.js.map +1 -0
  87. package/dist/mcp-server/src/provisioning/cleanup.d.ts +19 -0
  88. package/dist/mcp-server/src/provisioning/cleanup.d.ts.map +1 -0
  89. package/dist/mcp-server/src/provisioning/cleanup.js +96 -0
  90. package/dist/mcp-server/src/provisioning/cleanup.js.map +1 -0
  91. package/dist/mcp-server/src/provisioning/index.d.ts +6 -0
  92. package/dist/mcp-server/src/provisioning/index.d.ts.map +1 -0
  93. package/dist/mcp-server/src/provisioning/index.js +24 -0
  94. package/dist/mcp-server/src/provisioning/index.js.map +1 -0
  95. package/dist/mcp-server/src/provisioning/linux-user.d.ts +15 -0
  96. package/dist/mcp-server/src/provisioning/linux-user.d.ts.map +1 -0
  97. package/dist/mcp-server/src/provisioning/linux-user.js +62 -0
  98. package/dist/mcp-server/src/provisioning/linux-user.js.map +1 -0
  99. package/dist/mcp-server/src/provisioning/privileged.d.ts +40 -0
  100. package/dist/mcp-server/src/provisioning/privileged.d.ts.map +1 -0
  101. package/dist/mcp-server/src/provisioning/privileged.js +123 -0
  102. package/dist/mcp-server/src/provisioning/privileged.js.map +1 -0
  103. package/dist/mcp-server/src/provisioning/ssh-config.d.ts +21 -0
  104. package/dist/mcp-server/src/provisioning/ssh-config.d.ts.map +1 -0
  105. package/dist/mcp-server/src/provisioning/ssh-config.js +161 -0
  106. package/dist/mcp-server/src/provisioning/ssh-config.js.map +1 -0
  107. package/dist/mcp-server/src/provisioning/tmux-session.d.ts +37 -0
  108. package/dist/mcp-server/src/provisioning/tmux-session.d.ts.map +1 -0
  109. package/dist/mcp-server/src/provisioning/tmux-session.js +123 -0
  110. package/dist/mcp-server/src/provisioning/tmux-session.js.map +1 -0
  111. package/dist/mcp-server/src/server.d.ts +3 -0
  112. package/dist/mcp-server/src/server.d.ts.map +1 -0
  113. package/dist/mcp-server/src/server.js +67 -0
  114. package/dist/mcp-server/src/server.js.map +1 -0
  115. package/dist/mcp-server/src/state/gig-store.d.ts +19 -0
  116. package/dist/mcp-server/src/state/gig-store.d.ts.map +1 -0
  117. package/dist/mcp-server/src/state/gig-store.js +52 -0
  118. package/dist/mcp-server/src/state/gig-store.js.map +1 -0
  119. package/dist/mcp-server/src/state/index.d.ts +4 -0
  120. package/dist/mcp-server/src/state/index.d.ts.map +1 -0
  121. package/dist/mcp-server/src/state/index.js +8 -0
  122. package/dist/mcp-server/src/state/index.js.map +1 -0
  123. package/dist/mcp-server/src/state/persistence.d.ts +13 -0
  124. package/dist/mcp-server/src/state/persistence.d.ts.map +1 -0
  125. package/dist/mcp-server/src/state/persistence.js +48 -0
  126. package/dist/mcp-server/src/state/persistence.js.map +1 -0
  127. package/dist/mcp-server/src/state/types.d.ts +15 -0
  128. package/dist/mcp-server/src/state/types.d.ts.map +1 -0
  129. package/dist/mcp-server/src/state/types.js +3 -0
  130. package/dist/mcp-server/src/state/types.js.map +1 -0
  131. package/dist/mcp-server/src/tools/dismiss-human.d.ts +25 -0
  132. package/dist/mcp-server/src/tools/dismiss-human.d.ts.map +1 -0
  133. package/dist/mcp-server/src/tools/dismiss-human.js +78 -0
  134. package/dist/mcp-server/src/tools/dismiss-human.js.map +1 -0
  135. package/dist/mcp-server/src/tools/index.d.ts +9 -0
  136. package/dist/mcp-server/src/tools/index.d.ts.map +1 -0
  137. package/dist/mcp-server/src/tools/index.js +20 -0
  138. package/dist/mcp-server/src/tools/index.js.map +1 -0
  139. package/dist/mcp-server/src/tools/list-humans.d.ts +18 -0
  140. package/dist/mcp-server/src/tools/list-humans.d.ts.map +1 -0
  141. package/dist/mcp-server/src/tools/list-humans.js +35 -0
  142. package/dist/mcp-server/src/tools/list-humans.js.map +1 -0
  143. package/dist/mcp-server/src/tools/message-human.d.ts +10 -0
  144. package/dist/mcp-server/src/tools/message-human.d.ts.map +1 -0
  145. package/dist/mcp-server/src/tools/message-human.js +19 -0
  146. package/dist/mcp-server/src/tools/message-human.js.map +1 -0
  147. package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.d.ts +19 -0
  148. package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.d.ts.map +1 -0
  149. package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.js +22 -0
  150. package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.js.map +1 -0
  151. package/dist/mcp-server/src/tools/schemas/list-humans.schema.d.ts +4 -0
  152. package/dist/mcp-server/src/tools/schemas/list-humans.schema.d.ts.map +1 -0
  153. package/dist/mcp-server/src/tools/schemas/list-humans.schema.js +7 -0
  154. package/dist/mcp-server/src/tools/schemas/list-humans.schema.js.map +1 -0
  155. package/dist/mcp-server/src/tools/schemas/message-human.schema.d.ts +13 -0
  156. package/dist/mcp-server/src/tools/schemas/message-human.schema.d.ts.map +1 -0
  157. package/dist/mcp-server/src/tools/schemas/message-human.schema.js +9 -0
  158. package/dist/mcp-server/src/tools/schemas/message-human.schema.js.map +1 -0
  159. package/dist/mcp-server/src/tools/schemas/summon-human.schema.d.ts +22 -0
  160. package/dist/mcp-server/src/tools/schemas/summon-human.schema.d.ts.map +1 -0
  161. package/dist/mcp-server/src/tools/schemas/summon-human.schema.js +18 -0
  162. package/dist/mcp-server/src/tools/schemas/summon-human.schema.js.map +1 -0
  163. package/dist/mcp-server/src/tools/summon-human.d.ts +31 -0
  164. package/dist/mcp-server/src/tools/summon-human.d.ts.map +1 -0
  165. package/dist/mcp-server/src/tools/summon-human.js +137 -0
  166. package/dist/mcp-server/src/tools/summon-human.js.map +1 -0
  167. package/dist/mcp-server/src/tunnel/client.d.ts +16 -0
  168. package/dist/mcp-server/src/tunnel/client.d.ts.map +1 -0
  169. package/dist/mcp-server/src/tunnel/client.js +100 -0
  170. package/dist/mcp-server/src/tunnel/client.js.map +1 -0
  171. package/dist/mcp-server/src/tunnel/index.d.ts +6 -0
  172. package/dist/mcp-server/src/tunnel/index.d.ts.map +1 -0
  173. package/dist/mcp-server/src/tunnel/index.js +28 -0
  174. package/dist/mcp-server/src/tunnel/index.js.map +1 -0
  175. package/dist/mcp-server/src/utils/errors.d.ts +28 -0
  176. package/dist/mcp-server/src/utils/errors.d.ts.map +1 -0
  177. package/dist/mcp-server/src/utils/errors.js +66 -0
  178. package/dist/mcp-server/src/utils/errors.js.map +1 -0
  179. package/dist/mcp-server/src/utils/exec.d.ts +7 -0
  180. package/dist/mcp-server/src/utils/exec.d.ts.map +1 -0
  181. package/dist/mcp-server/src/utils/exec.js +22 -0
  182. package/dist/mcp-server/src/utils/exec.js.map +1 -0
  183. package/dist/mcp-server/src/utils/ip.d.ts +6 -0
  184. package/dist/mcp-server/src/utils/ip.d.ts.map +1 -0
  185. package/dist/mcp-server/src/utils/ip.js +33 -0
  186. package/dist/mcp-server/src/utils/ip.js.map +1 -0
  187. package/dist/mcp-server/src/utils/logger.d.ts +20 -0
  188. package/dist/mcp-server/src/utils/logger.d.ts.map +1 -0
  189. package/dist/mcp-server/src/utils/logger.js +41 -0
  190. package/dist/mcp-server/src/utils/logger.js.map +1 -0
  191. package/dist/shared/src/contractor.types.d.ts +20 -0
  192. package/dist/shared/src/contractor.types.d.ts.map +1 -0
  193. package/dist/shared/src/contractor.types.js +3 -0
  194. package/dist/shared/src/contractor.types.js.map +1 -0
  195. package/dist/shared/src/gig.types.d.ts +32 -0
  196. package/dist/shared/src/gig.types.d.ts.map +1 -0
  197. package/dist/shared/src/gig.types.js +21 -0
  198. package/dist/shared/src/gig.types.js.map +1 -0
  199. package/dist/shared/src/index.d.ts +5 -0
  200. package/dist/shared/src/index.d.ts.map +1 -0
  201. package/dist/shared/src/index.js +21 -0
  202. package/dist/shared/src/index.js.map +1 -0
  203. package/dist/shared/src/mcp-tool.types.d.ts +45 -0
  204. package/dist/shared/src/mcp-tool.types.d.ts.map +1 -0
  205. package/dist/shared/src/mcp-tool.types.js +3 -0
  206. package/dist/shared/src/mcp-tool.types.js.map +1 -0
  207. package/dist/shared/src/platform-api.types.d.ts +73 -0
  208. package/dist/shared/src/platform-api.types.d.ts.map +1 -0
  209. package/dist/shared/src/platform-api.types.js +3 -0
  210. package/dist/shared/src/platform-api.types.js.map +1 -0
  211. package/package.json +41 -0
  212. package/src/bin.ts +7 -0
  213. package/src/cli/setup.ts +317 -0
  214. package/src/config/defaults.ts +21 -0
  215. package/src/config/env.ts +74 -0
  216. package/src/config/index.ts +2 -0
  217. package/src/context/generator.ts +71 -0
  218. package/src/context/index.ts +6 -0
  219. package/src/context/templates.ts +41 -0
  220. package/src/git/branch.ts +46 -0
  221. package/src/git/diff.ts +34 -0
  222. package/src/git/index.ts +4 -0
  223. package/src/git/merge.ts +36 -0
  224. package/src/git/worktree.ts +42 -0
  225. package/src/http-wrapper.ts +94 -0
  226. package/src/index.ts +32 -0
  227. package/src/platform-client/client.ts +93 -0
  228. package/src/platform-client/index.ts +4 -0
  229. package/src/platform-client/mock-client.ts +92 -0
  230. package/src/platform-client/polling.ts +53 -0
  231. package/src/platform-client/types.ts +9 -0
  232. package/src/provisioning/authorized-keys.ts +52 -0
  233. package/src/provisioning/cleanup.ts +106 -0
  234. package/src/provisioning/index.ts +13 -0
  235. package/src/provisioning/linux-user.ts +66 -0
  236. package/src/provisioning/privileged.ts +128 -0
  237. package/src/provisioning/ssh-config.ts +197 -0
  238. package/src/provisioning/tmux-session.ts +136 -0
  239. package/src/server.ts +111 -0
  240. package/src/state/gig-store.ts +56 -0
  241. package/src/state/index.ts +3 -0
  242. package/src/state/persistence.ts +42 -0
  243. package/src/state/types.ts +14 -0
  244. package/src/tools/dismiss-human.ts +103 -0
  245. package/src/tools/index.ts +9 -0
  246. package/src/tools/list-humans.ts +54 -0
  247. package/src/tools/message-human.ts +28 -0
  248. package/src/tools/schemas/dismiss-human.schema.ts +21 -0
  249. package/src/tools/schemas/list-humans.schema.ts +6 -0
  250. package/src/tools/schemas/message-human.schema.ts +8 -0
  251. package/src/tools/schemas/summon-human.schema.ts +19 -0
  252. package/src/tools/summon-human.ts +180 -0
  253. package/src/tunnel/client.ts +116 -0
  254. package/src/tunnel/index.ts +26 -0
  255. package/src/utils/errors.ts +64 -0
  256. package/src/utils/exec.ts +29 -0
  257. package/src/utils/ip.ts +31 -0
  258. package/src/utils/logger.ts +55 -0
  259. package/tsconfig.json +20 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnv = getEnv;
4
+ exports.setEnv = setEnv;
5
+ const zod_1 = require("zod");
6
+ // TEMPORARY: The default platform URL points to an ngrok tunnel bound to the
7
+ // founder's account. This is fine for early testing but must be replaced with
8
+ // a proper cloud deployment (e.g. https://api.bazaar.ai) before public launch.
9
+ const DEFAULT_PLATFORM_URL = "https://ingrid-hypocycloidal-kaliyah.ngrok-free.dev";
10
+ const EnvSchema = zod_1.z.object({
11
+ PLATFORM_API_URL: zod_1.z.string().url().default(DEFAULT_PLATFORM_URL),
12
+ PLATFORM_API_KEY: zod_1.z.string().default(""),
13
+ /**
14
+ * Hostname or IP the contractor will SSH into. Only needed when
15
+ * TUNNEL_ENABLED=false (legacy direct-SSH mode). When the dev box is
16
+ * exposed via `ngrok tcp`, set this to the ngrok host (e.g.
17
+ * `0.tcp.ngrok.io`). Default `"auto"` triggers cloud metadata + local
18
+ * network detection.
19
+ */
20
+ VM_EXTERNAL_IP: zod_1.z.string().default("auto"),
21
+ /**
22
+ * Public SSH port. Only needed when TUNNEL_ENABLED=false.
23
+ */
24
+ VM_EXTERNAL_SSH_PORT: zod_1.z.coerce.number().int().positive().default(22),
25
+ /**
26
+ * Optional explicit project ID to attach gigs to. If unset, the API
27
+ * will auto-create a default project for the user behind the API key.
28
+ */
29
+ PLATFORM_PROJECT_ID: zod_1.z.string().optional(),
30
+ POLL_INTERVAL_MS: zod_1.z.coerce.number().int().positive().default(3_000),
31
+ POLL_TIMEOUT_MS: zod_1.z.coerce.number().int().positive().default(300_000),
32
+ CLEANUP_WARNING_SECONDS: zod_1.z.coerce.number().int().positive().default(30),
33
+ USE_MOCK_PLATFORM: zod_1.z
34
+ .string()
35
+ .transform((v) => v === "true")
36
+ .default("false"),
37
+ STATE_FILE_PATH: zod_1.z
38
+ .string()
39
+ .default("/var/lib/human-agents/state.json"),
40
+ /**
41
+ * When true, the provisioning code prepends `sudo -n` to privileged
42
+ * commands. Set this to `true` when the MCP server is NOT running as
43
+ * root and instead has NOPASSWD sudo for the relevant commands.
44
+ * See `human-layer/mcp-server/README.md` for the sudoers template.
45
+ */
46
+ PROVISIONING_USE_SUDO: zod_1.z
47
+ .string()
48
+ .transform((v) => v === "true")
49
+ .default("false"),
50
+ /**
51
+ * When true, the MCP server opens a reverse WebSocket tunnel to the
52
+ * platform so contractors can connect without ngrok or public IPs.
53
+ * When false, falls back to legacy direct-SSH mode using
54
+ * VM_EXTERNAL_IP / VM_EXTERNAL_SSH_PORT.
55
+ */
56
+ TUNNEL_ENABLED: zod_1.z
57
+ .string()
58
+ .transform((v) => v === "true")
59
+ .default("true"),
60
+ });
61
+ let cachedEnv = null;
62
+ function getEnv() {
63
+ if (!cachedEnv) {
64
+ cachedEnv = EnvSchema.parse(process.env);
65
+ }
66
+ return cachedEnv;
67
+ }
68
+ /** For testing: override the cached env. */
69
+ function setEnv(env) {
70
+ cachedEnv = env;
71
+ }
72
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../../../src/config/env.ts"],"names":[],"mappings":";;AA+DA,wBAKC;AAGD,wBAEC;AAzED,6BAAwB;AAExB,6EAA6E;AAC7E,+EAA+E;AAC/E,+EAA+E;AAC/E,MAAM,oBAAoB,GAAG,qDAAqD,CAAC;AAEnF,MAAM,SAAS,GAAG,OAAC,CAAC,MAAM,CAAC;IACzB,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC;IAChE,gBAAgB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACxC;;;;;;OAMG;IACH,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1C;;OAEG;IACH,oBAAoB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpE;;;OAGG;IACH,mBAAmB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,gBAAgB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACnE,eAAe,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACpE,uBAAuB,EAAE,OAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACvE,iBAAiB,EAAE,OAAC;SACjB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB,eAAe,EAAE,OAAC;SACf,MAAM,EAAE;SACR,OAAO,CAAC,kCAAkC,CAAC;IAC9C;;;;;OAKG;IACH,qBAAqB,EAAE,OAAC;SACrB,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,OAAO,CAAC;IACnB;;;;;OAKG;IACH,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,MAAM,CAAC;SAC9B,OAAO,CAAC,MAAM,CAAC;CACnB,CAAC,CAAC;AAIH,IAAI,SAAS,GAAe,IAAI,CAAC;AAEjC,SAAgB,MAAM;IACpB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,4CAA4C;AAC5C,SAAgB,MAAM,CAAC,GAAQ;IAC7B,SAAS,GAAG,GAAG,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { getEnv, setEnv, type Env } from "./env.js";
2
+ export * from "./defaults.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AACpD,cAAc,eAAe,CAAC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.setEnv = exports.getEnv = void 0;
18
+ var env_js_1 = require("./env.js");
19
+ Object.defineProperty(exports, "getEnv", { enumerable: true, get: function () { return env_js_1.getEnv; } });
20
+ Object.defineProperty(exports, "setEnv", { enumerable: true, get: function () { return env_js_1.setEnv; } });
21
+ __exportStar(require("./defaults.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/config/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,mCAAoD;AAA3C,gGAAA,MAAM,OAAA;AAAE,gGAAA,MAAM,OAAA;AACvB,gDAA8B"}
@@ -0,0 +1,16 @@
1
+ export interface ContextInput {
2
+ reason: string;
3
+ context: string;
4
+ skills: string[];
5
+ urgency: "low" | "medium" | "high";
6
+ repo: string;
7
+ branch: string;
8
+ worktreePath: string;
9
+ }
10
+ /**
11
+ * Generate and write CONTEXT.md to the worktree.
12
+ * This file is the contractor's briefing — everything they need
13
+ * to understand the problem and start working.
14
+ */
15
+ export declare function generateContext(input: ContextInput): Promise<string>;
16
+ //# sourceMappingURL=generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../../src/context/generator.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAmD1E"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateContext = generateContext;
4
+ const promises_1 = require("node:fs/promises");
5
+ const node_path_1 = require("node:path");
6
+ const logger_js_1 = require("../utils/logger.js");
7
+ /**
8
+ * Generate and write CONTEXT.md to the worktree.
9
+ * This file is the contractor's briefing — everything they need
10
+ * to understand the problem and start working.
11
+ */
12
+ async function generateContext(input) {
13
+ const filePath = (0, node_path_1.join)(input.worktreePath, "CONTEXT.md");
14
+ const urgencyLabel = {
15
+ low: "Low — take your time",
16
+ medium: "Medium — needed soon",
17
+ high: "High — urgent fix needed",
18
+ }[input.urgency];
19
+ const content = `# Contractor Context
20
+
21
+ > This file was auto-generated by the Human Layer MCP server.
22
+ > Read this before starting work.
23
+
24
+ ## What Needs Help
25
+
26
+ ${input.reason}
27
+
28
+ ## Urgency
29
+
30
+ ${urgencyLabel}
31
+
32
+ ## Skills Requested
33
+
34
+ ${input.skills.map((s) => `- ${s}`).join("\n")}
35
+
36
+ ## Context
37
+
38
+ ${input.context}
39
+
40
+ ## Repository
41
+
42
+ - **Repo:** ${input.repo}
43
+ - **Branch:** ${input.branch}
44
+ - **Working directory:** ${input.worktreePath}
45
+
46
+ ## What Success Looks Like
47
+
48
+ Resolve the issue described above. Commit your changes to this branch.
49
+ If you have questions or need clarification, check the tmux message area
50
+ or leave comments in the code.
51
+
52
+ ## When You're Done
53
+
54
+ The AI agent or user will dismiss the session. Your changes will be
55
+ reviewed and optionally merged. Make sure to commit before leaving.
56
+ `;
57
+ await (0, promises_1.writeFile)(filePath, content, "utf-8");
58
+ logger_js_1.logger.info("CONTEXT.md written", { path: filePath });
59
+ return filePath;
60
+ }
61
+ //# sourceMappingURL=generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../src/context/generator.ts"],"names":[],"mappings":";;AAmBA,0CAmDC;AAtED,+CAA6C;AAC7C,yCAAiC;AACjC,kDAA4C;AAY5C;;;;GAIG;AACI,KAAK,UAAU,eAAe,CAAC,KAAmB;IACvD,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG;QACnB,GAAG,EAAE,sBAAsB;QAC3B,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,0BAA0B;KACjC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjB,MAAM,OAAO,GAAG;;;;;;;EAOhB,KAAK,CAAC,MAAM;;;;EAIZ,YAAY;;;;EAIZ,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAI5C,KAAK,CAAC,OAAO;;;;cAID,KAAK,CAAC,IAAI;gBACR,KAAK,CAAC,MAAM;2BACD,KAAK,CAAC,YAAY;;;;;;;;;;;;CAY5C,CAAC;IAEA,MAAM,IAAA,oBAAS,EAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5C,kBAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACtD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { generateContext, type ContextInput } from "./generator.js";
2
+ export { stuckAgentSection, domainGapSection, verificationSection, } from "./templates.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verificationSection = exports.domainGapSection = exports.stuckAgentSection = exports.generateContext = void 0;
4
+ var generator_js_1 = require("./generator.js");
5
+ Object.defineProperty(exports, "generateContext", { enumerable: true, get: function () { return generator_js_1.generateContext; } });
6
+ var templates_js_1 = require("./templates.js");
7
+ Object.defineProperty(exports, "stuckAgentSection", { enumerable: true, get: function () { return templates_js_1.stuckAgentSection; } });
8
+ Object.defineProperty(exports, "domainGapSection", { enumerable: true, get: function () { return templates_js_1.domainGapSection; } });
9
+ Object.defineProperty(exports, "verificationSection", { enumerable: true, get: function () { return templates_js_1.verificationSection; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/context/index.ts"],"names":[],"mappings":";;;AAAA,+CAAoE;AAA3D,+GAAA,eAAe,OAAA;AACxB,+CAIwB;AAHtB,iHAAA,iBAAiB,OAAA;AACjB,gHAAA,gBAAgB,OAAA;AAChB,mHAAA,mBAAmB,OAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Additional context sections that can be appended to CONTEXT.md
3
+ * based on the scenario.
4
+ */
5
+ export declare function stuckAgentSection(attempts: number, lastError: string): string;
6
+ export declare function domainGapSection(domain: string): string;
7
+ export declare function verificationSection(environment: string): string;
8
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/context/templates.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,MAAM,CAcR;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOvD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAO/D"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Additional context sections that can be appended to CONTEXT.md
4
+ * based on the scenario.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.stuckAgentSection = stuckAgentSection;
8
+ exports.domainGapSection = domainGapSection;
9
+ exports.verificationSection = verificationSection;
10
+ function stuckAgentSection(attempts, lastError) {
11
+ return `
12
+ ## AI Agent Status
13
+
14
+ The AI agent has been stuck on this problem for **${attempts} attempts**.
15
+ Last error encountered:
16
+
17
+ \`\`\`
18
+ ${lastError}
19
+ \`\`\`
20
+
21
+ The agent was unable to resolve this on its own and has requested
22
+ human assistance.
23
+ `;
24
+ }
25
+ function domainGapSection(domain) {
26
+ return `
27
+ ## Domain Knowledge Needed
28
+
29
+ This task requires expertise in **${domain}** that the AI agent does
30
+ not have. Your domain knowledge is the key value-add here.
31
+ `;
32
+ }
33
+ function verificationSection(environment) {
34
+ return `
35
+ ## Verification Needed
36
+
37
+ The AI agent needs someone to verify behavior in a real **${environment}**
38
+ environment that it cannot access directly.
39
+ `;
40
+ }
41
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/context/templates.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAEH,8CAiBC;AAED,4CAOC;AAED,kDAOC;AAnCD,SAAgB,iBAAiB,CAC/B,QAAgB,EAChB,SAAiB;IAEjB,OAAO;;;oDAG2C,QAAQ;;;;EAI1D,SAAS;;;;;CAKV,CAAC;AACF,CAAC;AAED,SAAgB,gBAAgB,CAAC,MAAc;IAC7C,OAAO;;;oCAG2B,MAAM;;CAEzC,CAAC;AACF,CAAC;AAED,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,OAAO;;;4DAGmD,WAAW;;CAEtE,CAAC;AACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Get the current branch name.
3
+ */
4
+ export declare function getCurrentBranch(cwd?: string): Promise<string>;
5
+ /**
6
+ * Get the current repo name (from remote or directory).
7
+ */
8
+ export declare function getRepoName(cwd?: string): Promise<string>;
9
+ /**
10
+ * Get the top-level directory of the git repo.
11
+ */
12
+ export declare function getRepoRoot(cwd?: string): Promise<string>;
13
+ //# sourceMappingURL=branch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.d.ts","sourceRoot":"","sources":["../../../../src/git/branch.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASpE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAa/D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAO/D"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getCurrentBranch = getCurrentBranch;
4
+ exports.getRepoName = getRepoName;
5
+ exports.getRepoRoot = getRepoRoot;
6
+ const exec_js_1 = require("../utils/exec.js");
7
+ const errors_js_1 = require("../utils/errors.js");
8
+ /**
9
+ * Get the current branch name.
10
+ */
11
+ async function getCurrentBranch(cwd) {
12
+ try {
13
+ const { stdout } = await (0, exec_js_1.exec)("git rev-parse --abbrev-ref HEAD", {
14
+ cwd,
15
+ });
16
+ return stdout.trim();
17
+ }
18
+ catch (error) {
19
+ throw new errors_js_1.GitError(`Failed to get current branch: ${error}`);
20
+ }
21
+ }
22
+ /**
23
+ * Get the current repo name (from remote or directory).
24
+ */
25
+ async function getRepoName(cwd) {
26
+ try {
27
+ const { stdout } = await (0, exec_js_1.exec)("git remote get-url origin 2>/dev/null || basename $(git rev-parse --show-toplevel)", { cwd });
28
+ const url = stdout.trim();
29
+ // Extract repo name from URL
30
+ const match = url.match(/\/([^/]+?)(?:\.git)?$/);
31
+ return match ? match[1] : url;
32
+ }
33
+ catch (error) {
34
+ throw new errors_js_1.GitError(`Failed to get repo name: ${error}`);
35
+ }
36
+ }
37
+ /**
38
+ * Get the top-level directory of the git repo.
39
+ */
40
+ async function getRepoRoot(cwd) {
41
+ try {
42
+ const { stdout } = await (0, exec_js_1.exec)("git rev-parse --show-toplevel", { cwd });
43
+ return stdout.trim();
44
+ }
45
+ catch (error) {
46
+ throw new errors_js_1.GitError(`Failed to get repo root: ${error}`);
47
+ }
48
+ }
49
+ //# sourceMappingURL=branch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.js","sourceRoot":"","sources":["../../../../src/git/branch.ts"],"names":[],"mappings":";;AAMA,4CASC;AAKD,kCAaC;AAKD,kCAOC;AA7CD,8CAAwC;AACxC,kDAA8C;AAE9C;;GAEG;AACI,KAAK,UAAU,gBAAgB,CAAC,GAAY;IACjD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC,iCAAiC,EAAE;YAC/D,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAQ,CAAC,iCAAiC,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,GAAY;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAC3B,oFAAoF,EACpF,EAAE,GAAG,EAAE,CACR,CAAC;QACF,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAC1B,6BAA6B;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAQ,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,GAAY;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC,+BAA+B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAQ,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Get the list of files changed by the contractor.
3
+ * Uses git diff to compare the state before and after.
4
+ */
5
+ export declare function getFilesChanged(cwd?: string): Promise<string[]>;
6
+ /**
7
+ * Get a summary of changes (for completion report).
8
+ */
9
+ export declare function getDiffSummary(cwd?: string): Promise<string>;
10
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../src/git/diff.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAsB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcrE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOlE"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFilesChanged = getFilesChanged;
4
+ exports.getDiffSummary = getDiffSummary;
5
+ const exec_js_1 = require("../utils/exec.js");
6
+ const logger_js_1 = require("../utils/logger.js");
7
+ /**
8
+ * Get the list of files changed by the contractor.
9
+ * Uses git diff to compare the state before and after.
10
+ */
11
+ async function getFilesChanged(cwd) {
12
+ try {
13
+ const { stdout } = await (0, exec_js_1.exec)("git diff --name-only HEAD~1", { cwd });
14
+ const files = stdout
15
+ .trim()
16
+ .split("\n")
17
+ .filter((f) => f.length > 0);
18
+ logger_js_1.logger.debug("Files changed", { count: files.length });
19
+ return files;
20
+ }
21
+ catch {
22
+ // If HEAD~1 doesn't exist or no changes
23
+ logger_js_1.logger.debug("Could not determine files changed");
24
+ return [];
25
+ }
26
+ }
27
+ /**
28
+ * Get a summary of changes (for completion report).
29
+ */
30
+ async function getDiffSummary(cwd) {
31
+ try {
32
+ const { stdout } = await (0, exec_js_1.exec)("git diff --stat HEAD~1", { cwd });
33
+ return stdout.trim();
34
+ }
35
+ catch {
36
+ return "No changes detected";
37
+ }
38
+ }
39
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../../../src/git/diff.ts"],"names":[],"mappings":";;AAOA,0CAcC;AAKD,wCAOC;AAjCD,8CAAwC;AACxC,kDAA4C;AAE5C;;;GAGG;AACI,KAAK,UAAU,eAAe,CAAC,GAAY;IAChD,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC,6BAA6B,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM;aACjB,IAAI,EAAE;aACN,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/B,kBAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACvD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,wCAAwC;QACxC,kBAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAAC,GAAY;IAC/C,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,qBAAqB,CAAC;IAC/B,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export { getCurrentBranch, getRepoName, getRepoRoot } from "./branch.js";
2
+ export { createWorktree, removeWorktree } from "./worktree.js";
3
+ export { mergeContractorChanges } from "./merge.js";
4
+ export { getFilesChanged, getDiffSummary } from "./diff.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/git/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDiffSummary = exports.getFilesChanged = exports.mergeContractorChanges = exports.removeWorktree = exports.createWorktree = exports.getRepoRoot = exports.getRepoName = exports.getCurrentBranch = void 0;
4
+ var branch_js_1 = require("./branch.js");
5
+ Object.defineProperty(exports, "getCurrentBranch", { enumerable: true, get: function () { return branch_js_1.getCurrentBranch; } });
6
+ Object.defineProperty(exports, "getRepoName", { enumerable: true, get: function () { return branch_js_1.getRepoName; } });
7
+ Object.defineProperty(exports, "getRepoRoot", { enumerable: true, get: function () { return branch_js_1.getRepoRoot; } });
8
+ var worktree_js_1 = require("./worktree.js");
9
+ Object.defineProperty(exports, "createWorktree", { enumerable: true, get: function () { return worktree_js_1.createWorktree; } });
10
+ Object.defineProperty(exports, "removeWorktree", { enumerable: true, get: function () { return worktree_js_1.removeWorktree; } });
11
+ var merge_js_1 = require("./merge.js");
12
+ Object.defineProperty(exports, "mergeContractorChanges", { enumerable: true, get: function () { return merge_js_1.mergeContractorChanges; } });
13
+ var diff_js_1 = require("./diff.js");
14
+ Object.defineProperty(exports, "getFilesChanged", { enumerable: true, get: function () { return diff_js_1.getFilesChanged; } });
15
+ Object.defineProperty(exports, "getDiffSummary", { enumerable: true, get: function () { return diff_js_1.getDiffSummary; } });
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/git/index.ts"],"names":[],"mappings":";;;AAAA,yCAAyE;AAAhE,6GAAA,gBAAgB,OAAA;AAAE,wGAAA,WAAW,OAAA;AAAE,wGAAA,WAAW,OAAA;AACnD,6CAA+D;AAAtD,6GAAA,cAAc,OAAA;AAAE,6GAAA,cAAc,OAAA;AACvC,uCAAoD;AAA3C,kHAAA,sBAAsB,OAAA;AAC/B,qCAA4D;AAAnD,0GAAA,eAAe,OAAA;AAAE,yGAAA,cAAc,OAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Merge contractor's changes from a worktree branch back
3
+ * into the working branch.
4
+ */
5
+ export declare function mergeContractorChanges(worktreePath: string, cwd?: string): Promise<void>;
6
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../../../src/git/merge.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,YAAY,EAAE,MAAM,EACpB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAwBf"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeContractorChanges = mergeContractorChanges;
4
+ const exec_js_1 = require("../utils/exec.js");
5
+ const errors_js_1 = require("../utils/errors.js");
6
+ const logger_js_1 = require("../utils/logger.js");
7
+ /**
8
+ * Merge contractor's changes from a worktree branch back
9
+ * into the working branch.
10
+ */
11
+ async function mergeContractorChanges(worktreePath, cwd) {
12
+ try {
13
+ // Get the branch name from the worktree
14
+ const { stdout: branch } = await (0, exec_js_1.exec)("git rev-parse --abbrev-ref HEAD", { cwd: worktreePath });
15
+ // First, commit any uncommitted changes in the worktree
16
+ try {
17
+ await (0, exec_js_1.exec)('git add -A && git commit -m "Contractor changes (auto-commit)"', { cwd: worktreePath });
18
+ }
19
+ catch {
20
+ // No changes to commit — that's fine
21
+ }
22
+ // Merge into the main working directory
23
+ await (0, exec_js_1.exec)(`git merge ${branch.trim()}`, { cwd });
24
+ logger_js_1.logger.info("Contractor changes merged", { from: branch.trim() });
25
+ }
26
+ catch (error) {
27
+ throw new errors_js_1.GitError(`Failed to merge contractor changes: ${error}`);
28
+ }
29
+ }
30
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../../src/git/merge.ts"],"names":[],"mappings":";;AAQA,wDA2BC;AAnCD,8CAAwC;AACxC,kDAA8C;AAC9C,kDAA4C;AAE5C;;;GAGG;AACI,KAAK,UAAU,sBAAsB,CAC1C,YAAoB,EACpB,GAAY;IAEZ,IAAI,CAAC;QACH,wCAAwC;QACxC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,cAAI,EACnC,iCAAiC,EACjC,EAAE,GAAG,EAAE,YAAY,EAAE,CACtB,CAAC;QAEF,wDAAwD;QACxD,IAAI,CAAC;YACH,MAAM,IAAA,cAAI,EACR,gEAAgE,EAChE,EAAE,GAAG,EAAE,YAAY,EAAE,CACtB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QAED,wCAAwC;QACxC,MAAM,IAAA,cAAI,EAAC,aAAa,MAAM,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAClD,kBAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAQ,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Create a git worktree for "clean" mode.
3
+ * Gives the contractor a fresh checkout of the branch
4
+ * without the AI's dirty working state.
5
+ */
6
+ export declare function createWorktree(branch: string, targetDir: string, cwd?: string): Promise<string>;
7
+ /**
8
+ * Remove a git worktree.
9
+ */
10
+ export declare function removeWorktree(targetDir: string, cwd?: string): Promise<void>;
11
+ //# sourceMappingURL=worktree.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.d.ts","sourceRoot":"","sources":["../../../../src/git/worktree.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createWorktree = createWorktree;
4
+ exports.removeWorktree = removeWorktree;
5
+ const exec_js_1 = require("../utils/exec.js");
6
+ const errors_js_1 = require("../utils/errors.js");
7
+ const logger_js_1 = require("../utils/logger.js");
8
+ /**
9
+ * Create a git worktree for "clean" mode.
10
+ * Gives the contractor a fresh checkout of the branch
11
+ * without the AI's dirty working state.
12
+ */
13
+ async function createWorktree(branch, targetDir, cwd) {
14
+ try {
15
+ await (0, exec_js_1.exec)(`git worktree add ${targetDir} ${branch}`, { cwd });
16
+ logger_js_1.logger.info("Git worktree created", { branch, targetDir });
17
+ return targetDir;
18
+ }
19
+ catch (error) {
20
+ throw new errors_js_1.GitError(`Failed to create worktree at ${targetDir}: ${error}`);
21
+ }
22
+ }
23
+ /**
24
+ * Remove a git worktree.
25
+ */
26
+ async function removeWorktree(targetDir, cwd) {
27
+ try {
28
+ await (0, exec_js_1.exec)(`git worktree remove ${targetDir} --force`, { cwd });
29
+ logger_js_1.logger.info("Git worktree removed", { targetDir });
30
+ }
31
+ catch (error) {
32
+ logger_js_1.logger.warn("Failed to remove worktree (may not exist)", {
33
+ targetDir,
34
+ error: String(error),
35
+ });
36
+ }
37
+ }
38
+ //# sourceMappingURL=worktree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../../../src/git/worktree.ts"],"names":[],"mappings":";;AASA,wCAcC;AAKD,wCAaC;AAzCD,8CAAwC;AACxC,kDAA8C;AAC9C,kDAA4C;AAE5C;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,SAAiB,EACjB,GAAY;IAEZ,IAAI,CAAC;QACH,MAAM,IAAA,cAAI,EAAC,oBAAoB,SAAS,IAAI,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAC/D,kBAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,oBAAQ,CAChB,gCAAgC,SAAS,KAAK,KAAK,EAAE,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,GAAY;IAEZ,IAAI,CAAC;QACH,MAAM,IAAA,cAAI,EAAC,uBAAuB,SAAS,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAChE,kBAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,kBAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE;YACvD,SAAS;YACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Quick HTTP wrapper around the MCP tools for testing.
3
+ * Exposes summon_human, dismiss_human, list_humans, message_human as REST endpoints.
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=http-wrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-wrapper.d.ts","sourceRoot":"","sources":["../../../src/http-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG"}