@agentmeshhq/agent 0.2.1 → 0.4.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 (65) hide show
  1. package/README.md +6 -0
  2. package/dist/__tests__/context-template.test.d.ts +4 -0
  3. package/dist/__tests__/context-template.test.js +235 -0
  4. package/dist/__tests__/context-template.test.js.map +1 -0
  5. package/dist/__tests__/default-branch-fallback.test.d.ts +10 -0
  6. package/dist/__tests__/default-branch-fallback.test.js +123 -0
  7. package/dist/__tests__/default-branch-fallback.test.js.map +1 -0
  8. package/dist/__tests__/default-repo-fallback.test.d.ts +12 -0
  9. package/dist/__tests__/default-repo-fallback.test.js +156 -0
  10. package/dist/__tests__/default-repo-fallback.test.js.map +1 -0
  11. package/dist/__tests__/loader.test.js +140 -28
  12. package/dist/__tests__/loader.test.js.map +1 -1
  13. package/dist/__tests__/no-respawn.test.d.ts +1 -0
  14. package/dist/__tests__/no-respawn.test.js +254 -0
  15. package/dist/__tests__/no-respawn.test.js.map +1 -0
  16. package/dist/__tests__/onboard.test.d.ts +5 -0
  17. package/dist/__tests__/onboard.test.js +343 -0
  18. package/dist/__tests__/onboard.test.js.map +1 -0
  19. package/dist/__tests__/project-flag.test.d.ts +9 -0
  20. package/dist/__tests__/project-flag.test.js +140 -0
  21. package/dist/__tests__/project-flag.test.js.map +1 -0
  22. package/dist/__tests__/shared-resource-guards.test.d.ts +7 -0
  23. package/dist/__tests__/shared-resource-guards.test.js +260 -0
  24. package/dist/__tests__/shared-resource-guards.test.js.map +1 -0
  25. package/dist/cli/index.js +6 -0
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/start.d.ts +4 -0
  28. package/dist/cli/start.js +6 -0
  29. package/dist/cli/start.js.map +1 -1
  30. package/dist/config/loader.d.ts +0 -4
  31. package/dist/config/loader.js +102 -42
  32. package/dist/config/loader.js.map +1 -1
  33. package/dist/config/schema.d.ts +2 -2
  34. package/dist/core/daemon/bootstrap.d.ts +4 -0
  35. package/dist/core/daemon/bootstrap.js +2 -0
  36. package/dist/core/daemon/bootstrap.js.map +1 -1
  37. package/dist/core/daemon/context-template.d.ts +11 -0
  38. package/dist/core/daemon/context-template.js +144 -0
  39. package/dist/core/daemon/context-template.js.map +1 -0
  40. package/dist/core/daemon/crash-log.d.ts +0 -2
  41. package/dist/core/daemon/crash-log.js +0 -1
  42. package/dist/core/daemon/crash-log.js.map +1 -1
  43. package/dist/core/daemon/git-auth.d.ts +18 -0
  44. package/dist/core/daemon/git-auth.js +94 -0
  45. package/dist/core/daemon/git-auth.js.map +1 -0
  46. package/dist/core/daemon/health-policy.d.ts +0 -4
  47. package/dist/core/daemon/health-policy.js +0 -8
  48. package/dist/core/daemon/health-policy.js.map +1 -1
  49. package/dist/core/daemon/state.js +1 -0
  50. package/dist/core/daemon/state.js.map +1 -1
  51. package/dist/core/daemon/workspace.d.ts +13 -0
  52. package/dist/core/daemon/workspace.js +39 -0
  53. package/dist/core/daemon/workspace.js.map +1 -1
  54. package/dist/core/daemon.d.ts +19 -6
  55. package/dist/core/daemon.js +337 -199
  56. package/dist/core/daemon.js.map +1 -1
  57. package/dist/core/injector.d.ts +5 -1
  58. package/dist/core/injector.js +77 -0
  59. package/dist/core/injector.js.map +1 -1
  60. package/dist/core/registry.d.ts +97 -0
  61. package/dist/core/registry.js +59 -0
  62. package/dist/core/registry.js.map +1 -1
  63. package/dist/core/tmux-runtime.js +4 -0
  64. package/dist/core/tmux-runtime.js.map +1 -1
  65. package/package.json +1 -1
@@ -47,6 +47,8 @@ export function bootstrapDaemon(options) {
47
47
  sandboxImage: options.sandboxImage || "agentmesh/agent-sandbox:latest",
48
48
  sandboxCpu: options.sandboxCpu || "1",
49
49
  sandboxMemory: options.sandboxMemory || "2g",
50
+ projectCode: options.project,
51
+ projectRole: options.role || "dev",
50
52
  };
51
53
  }
52
54
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/core/daemon/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,cAAc,CAAC;AAiCpE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO;YACnD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,OAAO;QAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,OAAO;QAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,KAAK;QAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAErD,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,KAAK;QACvB,UAAU,EAAE,WAAW,CAAC,KAAK;QAC7B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;QACnC,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,WAAW;QACX,YAAY;QACZ,oBAAoB,EAAE,OAAO,CAAC,cAAc,KAAK,IAAI;QACrD,aAAa,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI;QACrC,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,WAAW,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,gCAAgC;QACtE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,GAAG;QACrC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;KAC7C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../../../src/core/daemon/bootstrap.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAqB,MAAM,cAAc,CAAC;AAqCpE;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAyB;IACvD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,QAAQ,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,4BAA4B,EAAE,CAAC;IACjF,CAAC;IAED,IAAI,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG;YACZ,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO;YACnD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK;SAC9C,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,CAAC,OAAO;QAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,OAAO;QAAE,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,CAAC,KAAK;QAAE,WAAW,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAErD,MAAM,YAAY,GAAG,iBAAiB,CAAC;QACrC,QAAQ,EAAE,OAAO,CAAC,KAAK;QACvB,UAAU,EAAE,WAAW,CAAC,KAAK;QAC7B,YAAY,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK;QACnC,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAC;IAEH,OAAO;QACL,MAAM;QACN,WAAW;QACX,YAAY;QACZ,oBAAoB,EAAE,OAAO,CAAC,cAAc,KAAK,IAAI;QACrD,aAAa,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;QACtC,SAAS,EAAE,OAAO,CAAC,SAAS,KAAK,IAAI;QACrC,SAAS,EAAE,OAAO,CAAC,KAAK,KAAK,IAAI;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,WAAW,EAAE,OAAO,CAAC,OAAO,KAAK,IAAI;QACrC,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,gCAAgC;QACtE,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,GAAG;QACrC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,IAAI;QAC5C,WAAW,EAAE,OAAO,CAAC,OAAO;QAC5B,WAAW,EAAE,OAAO,CAAC,IAAI,IAAI,KAAK;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * CLAUDE.md generation for onboarded agents.
3
+ * Renders project context as a persistent file (complements ephemeral tmux injection).
4
+ */
5
+ import type { OnboardData } from "../registry.js";
6
+ export declare function generateClaudeMd(onboard: OnboardData): string;
7
+ export declare function writeClaudeMd({ workdir, onboard, }: {
8
+ workdir: string;
9
+ onboard: OnboardData;
10
+ }): string | null;
11
+ export declare function removeClaudeMd(workdir: string): void;
@@ -0,0 +1,144 @@
1
+ /**
2
+ * CLAUDE.md generation for onboarded agents.
3
+ * Renders project context as a persistent file (complements ephemeral tmux injection).
4
+ */
5
+ import fs from "node:fs";
6
+ import path from "node:path";
7
+ // ---------------------------------------------------------------------------
8
+ // Pure renderer
9
+ // ---------------------------------------------------------------------------
10
+ export function generateClaudeMd(onboard) {
11
+ const lines = [];
12
+ lines.push("<!-- AUTO-GENERATED by AgentMesh — do not edit manually -->");
13
+ lines.push("");
14
+ // ── Identity ──────────────────────────────────────────────────────────
15
+ const a = onboard.agent;
16
+ lines.push("# Agent Context");
17
+ lines.push("");
18
+ lines.push(`- **Name**: ${a.display_name}`);
19
+ lines.push(`- **Model**: ${a.model}`);
20
+ if (onboard.assignment) {
21
+ lines.push(`- **Role**: ${onboard.assignment.role}`);
22
+ }
23
+ if (a.capabilities.length > 0) {
24
+ lines.push(`- **Capabilities**: ${a.capabilities.join(", ")}`);
25
+ }
26
+ lines.push("");
27
+ // ── Project ───────────────────────────────────────────────────────────
28
+ if (onboard.project) {
29
+ const p = onboard.project;
30
+ lines.push("## Project");
31
+ lines.push("");
32
+ lines.push(`- **Name**: ${p.name} (\`${p.code}\`)`);
33
+ if (p.description) {
34
+ lines.push(`- **Description**: ${p.description}`);
35
+ }
36
+ lines.push("");
37
+ // ── Git Workflow Rules ────────────────────────────────────────────
38
+ const wf = p.workflow_config;
39
+ lines.push("## Git Workflow Rules");
40
+ lines.push("");
41
+ lines.push(`- **Branch prefix**: \`${wf.branch_prefix}\``);
42
+ lines.push(`- **PR target branch**: \`${wf.pr_target_branch}\``);
43
+ lines.push(`- **Commit convention**: ${wf.commit_convention}`);
44
+ if (wf.code_review_required) {
45
+ lines.push("- **Code review**: Required before merge");
46
+ }
47
+ if (wf.protected_branches.length > 0) {
48
+ lines.push(`- **Protected branches**: ${wf.protected_branches.map((b) => `\`${b}\``).join(", ")} — NEVER push directly to these`);
49
+ }
50
+ if (wf.custom_rules.length > 0) {
51
+ lines.push("");
52
+ lines.push("### Custom Rules");
53
+ lines.push("");
54
+ for (const rule of wf.custom_rules) {
55
+ lines.push(`- ${rule}`);
56
+ }
57
+ }
58
+ lines.push("");
59
+ }
60
+ // ── Team Roster ────────────────────────────────────────────────────
61
+ if (onboard.team.length > 0) {
62
+ lines.push("## Team");
63
+ lines.push("");
64
+ lines.push("| Agent | Model | Role | Status |");
65
+ lines.push("|-------|-------|------|--------|");
66
+ for (const t of onboard.team) {
67
+ lines.push(`| ${t.display_name} | ${t.model} | ${t.role} | ${t.status} |`);
68
+ }
69
+ lines.push("");
70
+ }
71
+ // ── Hub API Reference ─────────────────────────────────────────────
72
+ lines.push("## Hub API");
73
+ lines.push("");
74
+ const api = onboard.hub_api;
75
+ lines.push(`- **Handoffs**: \`${api.handoffs}\``);
76
+ lines.push(`- **Claims**: \`${api.claims}\``);
77
+ lines.push(`- **Blockers**: \`${api.blockers}\``);
78
+ lines.push(`- **Inbox**: \`${api.inbox}\``);
79
+ lines.push(`- **Heartbeat**: \`${api.heartbeat}\``);
80
+ lines.push("");
81
+ // ── Repositories (NO credentials) ─────────────────────────────────
82
+ if (onboard.repos.length > 0) {
83
+ lines.push("## Repositories");
84
+ lines.push("");
85
+ for (const r of onboard.repos) {
86
+ lines.push(`- \`${r.full_name}\` (${r.provider}) — default branch: \`${r.default_branch ?? "unknown"}\``);
87
+ }
88
+ lines.push("");
89
+ }
90
+ // ── Project Instructions ──────────────────────────────────────────
91
+ if (onboard.project?.instructions) {
92
+ lines.push("## Project Instructions");
93
+ lines.push("");
94
+ lines.push(onboard.project.instructions);
95
+ lines.push("");
96
+ }
97
+ // ── Footer ────────────────────────────────────────────────────────
98
+ lines.push("---");
99
+ lines.push(`*Generated at ${new Date().toISOString()} by AgentMesh*`);
100
+ lines.push("");
101
+ return lines.join("\n");
102
+ }
103
+ // ---------------------------------------------------------------------------
104
+ // File I/O
105
+ // ---------------------------------------------------------------------------
106
+ export function writeClaudeMd({ workdir, onboard, }) {
107
+ if (!fs.existsSync(workdir)) {
108
+ return null;
109
+ }
110
+ const filePath = path.join(workdir, "CLAUDE.md");
111
+ const content = generateClaudeMd(onboard);
112
+ fs.writeFileSync(filePath, content, { encoding: "utf-8" });
113
+ // Ensure CLAUDE.md is in .gitignore
114
+ const gitignorePath = path.join(workdir, ".gitignore");
115
+ try {
116
+ let gitignoreContent = "";
117
+ if (fs.existsSync(gitignorePath)) {
118
+ gitignoreContent = fs.readFileSync(gitignorePath, "utf-8");
119
+ }
120
+ const lines = gitignoreContent.split("\n").map((l) => l.trim());
121
+ if (!lines.includes("CLAUDE.md")) {
122
+ const appendLine = gitignoreContent.endsWith("\n") || gitignoreContent === ""
123
+ ? "CLAUDE.md\n"
124
+ : "\nCLAUDE.md\n";
125
+ fs.appendFileSync(gitignorePath, appendLine);
126
+ }
127
+ }
128
+ catch {
129
+ // Non-fatal: .gitignore update is best-effort
130
+ }
131
+ return filePath;
132
+ }
133
+ export function removeClaudeMd(workdir) {
134
+ try {
135
+ const filePath = path.join(workdir, "CLAUDE.md");
136
+ if (fs.existsSync(filePath)) {
137
+ fs.unlinkSync(filePath);
138
+ }
139
+ }
140
+ catch {
141
+ // Non-fatal: cleanup is best-effort
142
+ }
143
+ }
144
+ //# sourceMappingURL=context-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-template.js","sourceRoot":"","sources":["../../../src/core/daemon/context-template.ts"],"names":[],"mappings":"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"}
@@ -3,8 +3,6 @@ export interface CrashLogInput {
3
3
  agentName: string;
4
4
  agentId: string | null;
5
5
  reason: string;
6
- restartCount: number;
7
- maxRestartAttempts: number;
8
6
  sandboxLabel: string;
9
7
  workdir?: string;
10
8
  model: string;
@@ -10,7 +10,6 @@ Timestamp: ${input.timestamp}
10
10
  Agent: ${input.agentName}
11
11
  Agent ID: ${input.agentId}
12
12
  Reason: ${input.reason}
13
- Restart Count: ${input.restartCount}/${input.maxRestartAttempts}
14
13
  Sandbox: ${input.sandboxLabel}
15
14
  Workdir: ${input.workdir}
16
15
  Model: ${input.model}
@@ -1 +1 @@
1
- {"version":3,"file":"crash-log.js","sourceRoot":"","sources":["../../../src/core/daemon/crash-log.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,OAAO;;;;aAII,KAAK,CAAC,SAAS;SACnB,KAAK,CAAC,SAAS;YACZ,KAAK,CAAC,OAAO;UACf,KAAK,CAAC,MAAM;iBACL,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,kBAAkB;WACpD,KAAK,CAAC,YAAY;WAClB,KAAK,CAAC,OAAO;SACf,KAAK,CAAC,KAAK;;;EAGlB,KAAK,CAAC,UAAU;;;CAGjB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"crash-log.js","sourceRoot":"","sources":["../../../src/core/daemon/crash-log.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoB;IACjD,OAAO;;;;aAII,KAAK,CAAC,SAAS;SACnB,KAAK,CAAC,SAAS;YACZ,KAAK,CAAC,OAAO;UACf,KAAK,CAAC,MAAM;WACX,KAAK,CAAC,YAAY;WAClB,KAAK,CAAC,OAAO;SACf,KAAK,CAAC,KAAK;;;EAGlB,KAAK,CAAC,UAAU;;;CAGjB,CAAC;AACF,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Git Authentication Setup
3
+ * Configures git credential helpers or SSH keys from onboard credentials.
4
+ */
5
+ export interface GitAuthInput {
6
+ type: string;
7
+ value: string;
8
+ repoUrl: string;
9
+ agentName: string;
10
+ }
11
+ /**
12
+ * Sets up git credentials for a repo and returns extra env vars to pass to the runner.
13
+ */
14
+ export declare function setupGitAuth(input: GitAuthInput): Record<string, string>;
15
+ /**
16
+ * Removes credential files created for an agent.
17
+ */
18
+ export declare function cleanupGitAuth(agentName: string): void;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Git Authentication Setup
3
+ * Configures git credential helpers or SSH keys from onboard credentials.
4
+ */
5
+ import fs from "node:fs";
6
+ import os from "node:os";
7
+ import path from "node:path";
8
+ const CREDENTIALS_DIR = path.join(os.homedir(), ".agentmesh", "credentials");
9
+ /**
10
+ * Sets up git credentials for a repo and returns extra env vars to pass to the runner.
11
+ */
12
+ export function setupGitAuth(input) {
13
+ if (!fs.existsSync(CREDENTIALS_DIR)) {
14
+ fs.mkdirSync(CREDENTIALS_DIR, { recursive: true, mode: 0o700 });
15
+ }
16
+ if (input.type === "pat") {
17
+ return setupPatAuth(input);
18
+ }
19
+ if (input.type === "ssh_deploy_key") {
20
+ return setupSshAuth(input);
21
+ }
22
+ console.log(`[GIT-AUTH] Unknown credential type: ${input.type}`);
23
+ return {};
24
+ }
25
+ function setupPatAuth(input) {
26
+ const credFile = path.join(CREDENTIALS_DIR, `${input.agentName}.git-credentials`);
27
+ // Parse repo URL to build credential line
28
+ // e.g., https://github.com/owner/repo -> https://x-access-token:{pat}@github.com
29
+ let host = "github.com";
30
+ try {
31
+ const url = new URL(input.repoUrl);
32
+ host = url.hostname;
33
+ }
34
+ catch {
35
+ // Fallback to github.com
36
+ }
37
+ const credentialLine = `https://x-access-token:${input.value}@${host}\n`;
38
+ // Append to credential file (one host per line)
39
+ if (fs.existsSync(credFile)) {
40
+ const existing = fs.readFileSync(credFile, "utf-8");
41
+ if (!existing.includes(`@${host}`)) {
42
+ fs.appendFileSync(credFile, credentialLine);
43
+ }
44
+ }
45
+ else {
46
+ fs.writeFileSync(credFile, credentialLine, { mode: 0o600 });
47
+ }
48
+ console.log(`[GIT-AUTH] PAT credential configured for ${host}`);
49
+ return {
50
+ GIT_ASKPASS: "echo",
51
+ GIT_CONFIG_COUNT: "1",
52
+ GIT_CONFIG_KEY_0: "credential.helper",
53
+ GIT_CONFIG_VALUE_0: `store --file=${credFile}`,
54
+ };
55
+ }
56
+ function setupSshAuth(input) {
57
+ const keyFile = path.join(CREDENTIALS_DIR, `${input.agentName}.deploy-key`);
58
+ // Warn about legacy PKCS#8 keys that macOS SSH rejects
59
+ if (input.value.includes("BEGIN PRIVATE KEY") &&
60
+ !input.value.includes("BEGIN OPENSSH PRIVATE KEY")) {
61
+ console.warn(`[GIT-AUTH] WARNING: Deploy key for ${input.agentName} is in PKCS#8 format (unsupported by macOS SSH). ` +
62
+ "Please re-generate the deploy key from HQ to get OpenSSH format.");
63
+ }
64
+ fs.writeFileSync(keyFile, input.value, { mode: 0o600 });
65
+ // Ensure the key file ends with a newline (SSH requirement)
66
+ if (!input.value.endsWith("\n")) {
67
+ fs.appendFileSync(keyFile, "\n");
68
+ }
69
+ console.log(`[GIT-AUTH] SSH deploy key written to ${keyFile}`);
70
+ return {
71
+ GIT_SSH_COMMAND: `ssh -i ${keyFile} -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null`,
72
+ };
73
+ }
74
+ /**
75
+ * Removes credential files created for an agent.
76
+ */
77
+ export function cleanupGitAuth(agentName) {
78
+ const patterns = [
79
+ path.join(CREDENTIALS_DIR, `${agentName}.git-credentials`),
80
+ path.join(CREDENTIALS_DIR, `${agentName}.deploy-key`),
81
+ ];
82
+ for (const filePath of patterns) {
83
+ if (fs.existsSync(filePath)) {
84
+ try {
85
+ fs.unlinkSync(filePath);
86
+ console.log(`[GIT-AUTH] Removed ${filePath}`);
87
+ }
88
+ catch (err) {
89
+ console.error(`[GIT-AUTH] Failed to remove ${filePath}:`, err);
90
+ }
91
+ }
92
+ }
93
+ }
94
+ //# sourceMappingURL=git-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-auth.js","sourceRoot":"","sources":["../../../src/core/daemon/git-auth.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,6 @@ export interface ProgressLike {
3
3
  blockedOn?: string;
4
4
  details?: string;
5
5
  }
6
- /**
7
- * Returns true when restart counters should be reset after a stable period.
8
- */
9
- export declare function shouldResetRestartCount(restartCount: number, lastStableTime: Date | null, resetWindowMs: number): boolean;
10
6
  /**
11
7
  * User-facing detail used when an agent is first considered stuck.
12
8
  */
@@ -1,11 +1,3 @@
1
- /**
2
- * Returns true when restart counters should be reset after a stable period.
3
- */
4
- export function shouldResetRestartCount(restartCount, lastStableTime, resetWindowMs) {
5
- if (restartCount <= 0 || !lastStableTime)
6
- return false;
7
- return Date.now() - lastStableTime.getTime() > resetWindowMs;
8
- }
9
1
  /**
10
2
  * User-facing detail used when an agent is first considered stuck.
11
3
  */
@@ -1 +1 @@
1
- {"version":3,"file":"health-policy.js","sourceRoot":"","sources":["../../../src/core/daemon/health-policy.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,YAAoB,EACpB,cAA2B,EAC3B,aAAqB;IAErB,IAAI,YAAY,IAAI,CAAC,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC;IACvD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE,GAAG,aAAa,CAAC;AAC/D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,OAAO,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,aAAa,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QAC7C,OAAO,mIAAmI,CAAC;IAC7I,CAAC;IACD,OAAO,yCAAyC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAwB,EACxB,WAAmB,EACnB,GAAS;IAET,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"health-policy.js","sourceRoot":"","sources":["../../../src/core/daemon/health-policy.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAsB;IACnD,OAAO,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,aAAa,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAsB;IACpD,IAAI,QAAQ,CAAC,MAAM,KAAK,oBAAoB,EAAE,CAAC;QAC7C,OAAO,mIAAmI,CAAC;IAC7I,CAAC;IACD,OAAO,yCAAyC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,WAAwB,EACxB,WAAmB,EACnB,GAAS;IAET,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC;AAC7D,CAAC"}
@@ -72,6 +72,7 @@ export function persistRunningState(input) {
72
72
  runtimeModel: input.runtimeModel,
73
73
  runnerType: input.runnerType,
74
74
  sandboxContainer: input.sandboxContainer,
75
+ servePort: input.serveMode ? input.servePort : undefined,
75
76
  });
76
77
  }
77
78
  //# sourceMappingURL=state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/daemon/state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/core/daemon/state.ts"],"names":[],"mappings":"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"}
@@ -8,3 +8,16 @@ export interface WorkspaceSetupInput {
8
8
  * Ensures a project workspace exists and is on the target default branch.
9
9
  */
10
10
  export declare function setupWorkspace(input: WorkspaceSetupInput): string;
11
+ export interface GitIdentityInput {
12
+ workspacePath: string;
13
+ agentName: string;
14
+ agentDisplayName: string;
15
+ }
16
+ /**
17
+ * Sets local git user.name and user.email for the workspace.
18
+ */
19
+ export declare function configureGitIdentity(input: GitIdentityInput): void;
20
+ /**
21
+ * Validates push access with a dry-run push (non-fatal).
22
+ */
23
+ export declare function validatePushAccess(workspacePath: string, remoteBranch?: string): boolean;
@@ -48,4 +48,43 @@ export function setupWorkspace(input) {
48
48
  console.log(`✓ Workspace ready: ${workspacePath}\n`);
49
49
  return workspacePath;
50
50
  }
51
+ /**
52
+ * Sets local git user.name and user.email for the workspace.
53
+ */
54
+ export function configureGitIdentity(input) {
55
+ const { workspacePath, agentName, agentDisplayName } = input;
56
+ try {
57
+ execSync(`git config user.name "${agentDisplayName}"`, {
58
+ cwd: workspacePath,
59
+ stdio: "pipe",
60
+ });
61
+ execSync(`git config user.email "${agentName}@agents.agentmeshhq.dev"`, {
62
+ cwd: workspacePath,
63
+ stdio: "pipe",
64
+ });
65
+ console.log(`✓ Git identity configured: ${agentDisplayName} <${agentName}@agents.agentmeshhq.dev>`);
66
+ }
67
+ catch (error) {
68
+ console.warn(`⚠ Could not configure git identity: ${error.message}`);
69
+ }
70
+ }
71
+ /**
72
+ * Validates push access with a dry-run push (non-fatal).
73
+ */
74
+ export function validatePushAccess(workspacePath, remoteBranch) {
75
+ const target = remoteBranch ?? "HEAD";
76
+ try {
77
+ execSync(`git push --dry-run origin ${target}`, {
78
+ cwd: workspacePath,
79
+ stdio: "pipe",
80
+ timeout: 15_000,
81
+ });
82
+ console.log("✓ Push access validated");
83
+ return true;
84
+ }
85
+ catch (error) {
86
+ console.warn(`⚠ Push access validation failed: ${error.message}`);
87
+ return false;
88
+ }
89
+ }
51
90
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/core/daemon/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAS7B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAErE,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,2CAA2C,WAAW,EAAE,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;IAElG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,+BAA+B,aAAa,EAAE,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEzC,IAAI,CAAC;YACH,QAAQ,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvE,QAAQ,CAAC,gBAAgB,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACpF,QAAQ,CAAC,mBAAmB,aAAa,EAAE,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACvF,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,iCAAkC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,SAAS,EAAE,CAAC,CAAC;QAChD,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,IAAI,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,QAAQ,CAAC,sBAAsB,aAAa,KAAK,OAAO,MAAM,aAAa,GAAG,EAAE;YAC9E,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7E,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,aAAa,IAAI,CAAC,CAAC;IACrD,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../../src/core/daemon/workspace.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,10 @@ export interface DaemonOptions {
22
22
  sandboxCpu?: string;
23
23
  /** Memory limit for sandbox (default: 2g) */
24
24
  sandboxMemory?: string;
25
+ /** Project code — auto-resolves workdir from project settings */
26
+ project?: string;
27
+ /** Role for auto-assignment (default: dev) */
28
+ role?: string;
25
29
  }
26
30
  export declare class AgentDaemon {
27
31
  private agentName;
@@ -44,12 +48,13 @@ export declare class AgentDaemon {
44
48
  private sandboxImage;
45
49
  private sandboxCpu;
46
50
  private sandboxMemory;
51
+ private onboardData;
47
52
  private sandbox;
53
+ private projectCode;
54
+ private projectRole;
48
55
  private healthCheckInterval;
49
56
  private _preStartSessionId;
50
57
  private _attemptedResumeSessionId;
51
- private restartCount;
52
- private lastStableTime;
53
58
  private stuckSince;
54
59
  private nudgeSentAt;
55
60
  constructor(options: DaemonOptions);
@@ -67,10 +72,6 @@ export declare class AgentDaemon {
67
72
  * Handles stuck agent - sends nudge first, then restarts if still stuck
68
73
  */
69
74
  private handleStuckAgent;
70
- /**
71
- * Restarts the agent session (sandbox or non-sandbox)
72
- */
73
- private restartSession;
74
75
  stop(): Promise<void>;
75
76
  /**
76
77
  * Starts opencode serve mode (for Integration Service)
@@ -90,6 +91,10 @@ export declare class AgentDaemon {
90
91
  * Saves the current agent context to disk
91
92
  */
92
93
  private saveAgentContext;
94
+ /**
95
+ * Resolves workdir from --project flag: looks up project by code, clones repo, self-assigns.
96
+ */
97
+ private resolveProjectWorkdir;
93
98
  /**
94
99
  * Fetches assignments from HQ and validates workdir setup
95
100
  * Uses project.workdir from HQ as source of truth, falls back to helpful instructions
@@ -100,4 +105,12 @@ export declare class AgentDaemon {
100
105
  * Creates ~/.agentmesh/opencode-sandbox.json with permissive permissions and model
101
106
  */
102
107
  private ensureSandboxOpencodeConfig;
108
+ /**
109
+ * Caches onboard data to disk for offline fallback
110
+ */
111
+ private cacheOnboardData;
112
+ /**
113
+ * Loads cached onboard data from disk (without credentials)
114
+ */
115
+ private loadCachedOnboardData;
103
116
  }