@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.
- package/.env.example +15 -0
- package/README.md +178 -0
- package/dist/mcp-server/src/bin.d.ts +3 -0
- package/dist/mcp-server/src/bin.d.ts.map +1 -0
- package/dist/mcp-server/src/bin.js +10 -0
- package/dist/mcp-server/src/bin.js.map +1 -0
- package/dist/mcp-server/src/cli/setup.d.ts +2 -0
- package/dist/mcp-server/src/cli/setup.d.ts.map +1 -0
- package/dist/mcp-server/src/cli/setup.js +274 -0
- package/dist/mcp-server/src/cli/setup.js.map +1 -0
- package/dist/mcp-server/src/config/defaults.d.ts +16 -0
- package/dist/mcp-server/src/config/defaults.d.ts.map +1 -0
- package/dist/mcp-server/src/config/defaults.js +19 -0
- package/dist/mcp-server/src/config/defaults.js.map +1 -0
- package/dist/mcp-server/src/config/env.d.ts +73 -0
- package/dist/mcp-server/src/config/env.d.ts.map +1 -0
- package/dist/mcp-server/src/config/env.js +72 -0
- package/dist/mcp-server/src/config/env.js.map +1 -0
- package/dist/mcp-server/src/config/index.d.ts +3 -0
- package/dist/mcp-server/src/config/index.d.ts.map +1 -0
- package/dist/mcp-server/src/config/index.js +22 -0
- package/dist/mcp-server/src/config/index.js.map +1 -0
- package/dist/mcp-server/src/context/generator.d.ts +16 -0
- package/dist/mcp-server/src/context/generator.d.ts.map +1 -0
- package/dist/mcp-server/src/context/generator.js +61 -0
- package/dist/mcp-server/src/context/generator.js.map +1 -0
- package/dist/mcp-server/src/context/index.d.ts +3 -0
- package/dist/mcp-server/src/context/index.d.ts.map +1 -0
- package/dist/mcp-server/src/context/index.js +10 -0
- package/dist/mcp-server/src/context/index.js.map +1 -0
- package/dist/mcp-server/src/context/templates.d.ts +8 -0
- package/dist/mcp-server/src/context/templates.d.ts.map +1 -0
- package/dist/mcp-server/src/context/templates.js +41 -0
- package/dist/mcp-server/src/context/templates.js.map +1 -0
- package/dist/mcp-server/src/git/branch.d.ts +13 -0
- package/dist/mcp-server/src/git/branch.d.ts.map +1 -0
- package/dist/mcp-server/src/git/branch.js +49 -0
- package/dist/mcp-server/src/git/branch.js.map +1 -0
- package/dist/mcp-server/src/git/diff.d.ts +10 -0
- package/dist/mcp-server/src/git/diff.d.ts.map +1 -0
- package/dist/mcp-server/src/git/diff.js +39 -0
- package/dist/mcp-server/src/git/diff.js.map +1 -0
- package/dist/mcp-server/src/git/index.d.ts +5 -0
- package/dist/mcp-server/src/git/index.d.ts.map +1 -0
- package/dist/mcp-server/src/git/index.js +16 -0
- package/dist/mcp-server/src/git/index.js.map +1 -0
- package/dist/mcp-server/src/git/merge.d.ts +6 -0
- package/dist/mcp-server/src/git/merge.d.ts.map +1 -0
- package/dist/mcp-server/src/git/merge.js +30 -0
- package/dist/mcp-server/src/git/merge.js.map +1 -0
- package/dist/mcp-server/src/git/worktree.d.ts +11 -0
- package/dist/mcp-server/src/git/worktree.d.ts.map +1 -0
- package/dist/mcp-server/src/git/worktree.js +38 -0
- package/dist/mcp-server/src/git/worktree.js.map +1 -0
- package/dist/mcp-server/src/http-wrapper.d.ts +6 -0
- package/dist/mcp-server/src/http-wrapper.d.ts.map +1 -0
- package/dist/mcp-server/src/http-wrapper.js +85 -0
- package/dist/mcp-server/src/http-wrapper.js.map +1 -0
- package/dist/mcp-server/src/index.d.ts +2 -0
- package/dist/mcp-server/src/index.d.ts.map +1 -0
- package/dist/mcp-server/src/index.js +28 -0
- package/dist/mcp-server/src/index.js.map +1 -0
- package/dist/mcp-server/src/platform-client/client.d.ts +17 -0
- package/dist/mcp-server/src/platform-client/client.d.ts.map +1 -0
- package/dist/mcp-server/src/platform-client/client.js +68 -0
- package/dist/mcp-server/src/platform-client/client.js.map +1 -0
- package/dist/mcp-server/src/platform-client/index.d.ts +5 -0
- package/dist/mcp-server/src/platform-client/index.d.ts.map +1 -0
- package/dist/mcp-server/src/platform-client/index.js +10 -0
- package/dist/mcp-server/src/platform-client/index.js.map +1 -0
- package/dist/mcp-server/src/platform-client/mock-client.d.ts +28 -0
- package/dist/mcp-server/src/platform-client/mock-client.d.ts.map +1 -0
- package/dist/mcp-server/src/platform-client/mock-client.js +75 -0
- package/dist/mcp-server/src/platform-client/mock-client.js.map +1 -0
- package/dist/mcp-server/src/platform-client/polling.d.ts +9 -0
- package/dist/mcp-server/src/platform-client/polling.d.ts.map +1 -0
- package/dist/mcp-server/src/platform-client/polling.js +40 -0
- package/dist/mcp-server/src/platform-client/polling.js.map +1 -0
- package/dist/mcp-server/src/platform-client/types.d.ts +2 -0
- package/dist/mcp-server/src/platform-client/types.d.ts.map +1 -0
- package/dist/mcp-server/src/platform-client/types.js +3 -0
- package/dist/mcp-server/src/platform-client/types.js.map +1 -0
- package/dist/mcp-server/src/provisioning/authorized-keys.d.ts +14 -0
- package/dist/mcp-server/src/provisioning/authorized-keys.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/authorized-keys.js +48 -0
- package/dist/mcp-server/src/provisioning/authorized-keys.js.map +1 -0
- package/dist/mcp-server/src/provisioning/cleanup.d.ts +19 -0
- package/dist/mcp-server/src/provisioning/cleanup.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/cleanup.js +96 -0
- package/dist/mcp-server/src/provisioning/cleanup.js.map +1 -0
- package/dist/mcp-server/src/provisioning/index.d.ts +6 -0
- package/dist/mcp-server/src/provisioning/index.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/index.js +24 -0
- package/dist/mcp-server/src/provisioning/index.js.map +1 -0
- package/dist/mcp-server/src/provisioning/linux-user.d.ts +15 -0
- package/dist/mcp-server/src/provisioning/linux-user.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/linux-user.js +62 -0
- package/dist/mcp-server/src/provisioning/linux-user.js.map +1 -0
- package/dist/mcp-server/src/provisioning/privileged.d.ts +40 -0
- package/dist/mcp-server/src/provisioning/privileged.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/privileged.js +123 -0
- package/dist/mcp-server/src/provisioning/privileged.js.map +1 -0
- package/dist/mcp-server/src/provisioning/ssh-config.d.ts +21 -0
- package/dist/mcp-server/src/provisioning/ssh-config.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/ssh-config.js +161 -0
- package/dist/mcp-server/src/provisioning/ssh-config.js.map +1 -0
- package/dist/mcp-server/src/provisioning/tmux-session.d.ts +37 -0
- package/dist/mcp-server/src/provisioning/tmux-session.d.ts.map +1 -0
- package/dist/mcp-server/src/provisioning/tmux-session.js +123 -0
- package/dist/mcp-server/src/provisioning/tmux-session.js.map +1 -0
- package/dist/mcp-server/src/server.d.ts +3 -0
- package/dist/mcp-server/src/server.d.ts.map +1 -0
- package/dist/mcp-server/src/server.js +67 -0
- package/dist/mcp-server/src/server.js.map +1 -0
- package/dist/mcp-server/src/state/gig-store.d.ts +19 -0
- package/dist/mcp-server/src/state/gig-store.d.ts.map +1 -0
- package/dist/mcp-server/src/state/gig-store.js +52 -0
- package/dist/mcp-server/src/state/gig-store.js.map +1 -0
- package/dist/mcp-server/src/state/index.d.ts +4 -0
- package/dist/mcp-server/src/state/index.d.ts.map +1 -0
- package/dist/mcp-server/src/state/index.js +8 -0
- package/dist/mcp-server/src/state/index.js.map +1 -0
- package/dist/mcp-server/src/state/persistence.d.ts +13 -0
- package/dist/mcp-server/src/state/persistence.d.ts.map +1 -0
- package/dist/mcp-server/src/state/persistence.js +48 -0
- package/dist/mcp-server/src/state/persistence.js.map +1 -0
- package/dist/mcp-server/src/state/types.d.ts +15 -0
- package/dist/mcp-server/src/state/types.d.ts.map +1 -0
- package/dist/mcp-server/src/state/types.js +3 -0
- package/dist/mcp-server/src/state/types.js.map +1 -0
- package/dist/mcp-server/src/tools/dismiss-human.d.ts +25 -0
- package/dist/mcp-server/src/tools/dismiss-human.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/dismiss-human.js +78 -0
- package/dist/mcp-server/src/tools/dismiss-human.js.map +1 -0
- package/dist/mcp-server/src/tools/index.d.ts +9 -0
- package/dist/mcp-server/src/tools/index.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/index.js +20 -0
- package/dist/mcp-server/src/tools/index.js.map +1 -0
- package/dist/mcp-server/src/tools/list-humans.d.ts +18 -0
- package/dist/mcp-server/src/tools/list-humans.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/list-humans.js +35 -0
- package/dist/mcp-server/src/tools/list-humans.js.map +1 -0
- package/dist/mcp-server/src/tools/message-human.d.ts +10 -0
- package/dist/mcp-server/src/tools/message-human.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/message-human.js +19 -0
- package/dist/mcp-server/src/tools/message-human.js.map +1 -0
- package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.d.ts +19 -0
- package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.js +22 -0
- package/dist/mcp-server/src/tools/schemas/dismiss-human.schema.js.map +1 -0
- package/dist/mcp-server/src/tools/schemas/list-humans.schema.d.ts +4 -0
- package/dist/mcp-server/src/tools/schemas/list-humans.schema.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/schemas/list-humans.schema.js +7 -0
- package/dist/mcp-server/src/tools/schemas/list-humans.schema.js.map +1 -0
- package/dist/mcp-server/src/tools/schemas/message-human.schema.d.ts +13 -0
- package/dist/mcp-server/src/tools/schemas/message-human.schema.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/schemas/message-human.schema.js +9 -0
- package/dist/mcp-server/src/tools/schemas/message-human.schema.js.map +1 -0
- package/dist/mcp-server/src/tools/schemas/summon-human.schema.d.ts +22 -0
- package/dist/mcp-server/src/tools/schemas/summon-human.schema.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/schemas/summon-human.schema.js +18 -0
- package/dist/mcp-server/src/tools/schemas/summon-human.schema.js.map +1 -0
- package/dist/mcp-server/src/tools/summon-human.d.ts +31 -0
- package/dist/mcp-server/src/tools/summon-human.d.ts.map +1 -0
- package/dist/mcp-server/src/tools/summon-human.js +137 -0
- package/dist/mcp-server/src/tools/summon-human.js.map +1 -0
- package/dist/mcp-server/src/tunnel/client.d.ts +16 -0
- package/dist/mcp-server/src/tunnel/client.d.ts.map +1 -0
- package/dist/mcp-server/src/tunnel/client.js +100 -0
- package/dist/mcp-server/src/tunnel/client.js.map +1 -0
- package/dist/mcp-server/src/tunnel/index.d.ts +6 -0
- package/dist/mcp-server/src/tunnel/index.d.ts.map +1 -0
- package/dist/mcp-server/src/tunnel/index.js +28 -0
- package/dist/mcp-server/src/tunnel/index.js.map +1 -0
- package/dist/mcp-server/src/utils/errors.d.ts +28 -0
- package/dist/mcp-server/src/utils/errors.d.ts.map +1 -0
- package/dist/mcp-server/src/utils/errors.js +66 -0
- package/dist/mcp-server/src/utils/errors.js.map +1 -0
- package/dist/mcp-server/src/utils/exec.d.ts +7 -0
- package/dist/mcp-server/src/utils/exec.d.ts.map +1 -0
- package/dist/mcp-server/src/utils/exec.js +22 -0
- package/dist/mcp-server/src/utils/exec.js.map +1 -0
- package/dist/mcp-server/src/utils/ip.d.ts +6 -0
- package/dist/mcp-server/src/utils/ip.d.ts.map +1 -0
- package/dist/mcp-server/src/utils/ip.js +33 -0
- package/dist/mcp-server/src/utils/ip.js.map +1 -0
- package/dist/mcp-server/src/utils/logger.d.ts +20 -0
- package/dist/mcp-server/src/utils/logger.d.ts.map +1 -0
- package/dist/mcp-server/src/utils/logger.js +41 -0
- package/dist/mcp-server/src/utils/logger.js.map +1 -0
- package/dist/shared/src/contractor.types.d.ts +20 -0
- package/dist/shared/src/contractor.types.d.ts.map +1 -0
- package/dist/shared/src/contractor.types.js +3 -0
- package/dist/shared/src/contractor.types.js.map +1 -0
- package/dist/shared/src/gig.types.d.ts +32 -0
- package/dist/shared/src/gig.types.d.ts.map +1 -0
- package/dist/shared/src/gig.types.js +21 -0
- package/dist/shared/src/gig.types.js.map +1 -0
- package/dist/shared/src/index.d.ts +5 -0
- package/dist/shared/src/index.d.ts.map +1 -0
- package/dist/shared/src/index.js +21 -0
- package/dist/shared/src/index.js.map +1 -0
- package/dist/shared/src/mcp-tool.types.d.ts +45 -0
- package/dist/shared/src/mcp-tool.types.d.ts.map +1 -0
- package/dist/shared/src/mcp-tool.types.js +3 -0
- package/dist/shared/src/mcp-tool.types.js.map +1 -0
- package/dist/shared/src/platform-api.types.d.ts +73 -0
- package/dist/shared/src/platform-api.types.d.ts.map +1 -0
- package/dist/shared/src/platform-api.types.js +3 -0
- package/dist/shared/src/platform-api.types.js.map +1 -0
- package/package.json +41 -0
- package/src/bin.ts +7 -0
- package/src/cli/setup.ts +317 -0
- package/src/config/defaults.ts +21 -0
- package/src/config/env.ts +74 -0
- package/src/config/index.ts +2 -0
- package/src/context/generator.ts +71 -0
- package/src/context/index.ts +6 -0
- package/src/context/templates.ts +41 -0
- package/src/git/branch.ts +46 -0
- package/src/git/diff.ts +34 -0
- package/src/git/index.ts +4 -0
- package/src/git/merge.ts +36 -0
- package/src/git/worktree.ts +42 -0
- package/src/http-wrapper.ts +94 -0
- package/src/index.ts +32 -0
- package/src/platform-client/client.ts +93 -0
- package/src/platform-client/index.ts +4 -0
- package/src/platform-client/mock-client.ts +92 -0
- package/src/platform-client/polling.ts +53 -0
- package/src/platform-client/types.ts +9 -0
- package/src/provisioning/authorized-keys.ts +52 -0
- package/src/provisioning/cleanup.ts +106 -0
- package/src/provisioning/index.ts +13 -0
- package/src/provisioning/linux-user.ts +66 -0
- package/src/provisioning/privileged.ts +128 -0
- package/src/provisioning/ssh-config.ts +197 -0
- package/src/provisioning/tmux-session.ts +136 -0
- package/src/server.ts +111 -0
- package/src/state/gig-store.ts +56 -0
- package/src/state/index.ts +3 -0
- package/src/state/persistence.ts +42 -0
- package/src/state/types.ts +14 -0
- package/src/tools/dismiss-human.ts +103 -0
- package/src/tools/index.ts +9 -0
- package/src/tools/list-humans.ts +54 -0
- package/src/tools/message-human.ts +28 -0
- package/src/tools/schemas/dismiss-human.schema.ts +21 -0
- package/src/tools/schemas/list-humans.schema.ts +6 -0
- package/src/tools/schemas/message-human.schema.ts +8 -0
- package/src/tools/schemas/summon-human.schema.ts +19 -0
- package/src/tools/summon-human.ts +180 -0
- package/src/tunnel/client.ts +116 -0
- package/src/tunnel/index.ts +26 -0
- package/src/utils/errors.ts +64 -0
- package/src/utils/exec.ts +29 -0
- package/src/utils/ip.ts +31 -0
- package/src/utils/logger.ts +55 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"http-wrapper.d.ts","sourceRoot":"","sources":["../../../src/http-wrapper.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|