@agentmeshhq/agent 0.3.0 → 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.
- package/LICENSE +21 -0
- package/README.md +6 -0
- package/dist/__tests__/context-template.test.js +2 -0
- package/dist/__tests__/context-template.test.js.map +1 -1
- package/dist/__tests__/default-branch-fallback.test.d.ts +10 -0
- package/dist/__tests__/default-branch-fallback.test.js +123 -0
- package/dist/__tests__/default-branch-fallback.test.js.map +1 -0
- package/dist/__tests__/default-repo-fallback.test.d.ts +12 -0
- package/dist/__tests__/default-repo-fallback.test.js +156 -0
- package/dist/__tests__/default-repo-fallback.test.js.map +1 -0
- package/dist/__tests__/onboard.test.js +2 -0
- package/dist/__tests__/onboard.test.js.map +1 -1
- package/dist/__tests__/project-flag.test.d.ts +9 -0
- package/dist/__tests__/project-flag.test.js +140 -0
- package/dist/__tests__/project-flag.test.js.map +1 -0
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/start.d.ts +4 -0
- package/dist/cli/start.js +6 -0
- package/dist/cli/start.js.map +1 -1
- package/dist/core/daemon/bootstrap.d.ts +4 -0
- package/dist/core/daemon/bootstrap.js +2 -0
- package/dist/core/daemon/bootstrap.js.map +1 -1
- package/dist/core/daemon/git-auth.js +6 -0
- package/dist/core/daemon/git-auth.js.map +1 -1
- package/dist/core/daemon.d.ts +10 -0
- package/dist/core/daemon.js +137 -20
- package/dist/core/daemon.js.map +1 -1
- package/dist/core/registry.d.ts +35 -0
- package/dist/core/registry.js +41 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/tmux-runtime.js +4 -0
- package/dist/core/tmux-runtime.js.map +1 -1
- package/package.json +11 -12
- package/dist/cli/inbox.d.ts +0 -5
- package/dist/cli/inbox.js +0 -123
- package/dist/cli/inbox.js.map +0 -1
- package/dist/cli/issue.d.ts +0 -42
- package/dist/cli/issue.js +0 -297
- package/dist/cli/issue.js.map +0 -1
- package/dist/cli/ready.d.ts +0 -5
- package/dist/cli/ready.js +0 -131
- package/dist/cli/ready.js.map +0 -1
- package/dist/cli/sync.d.ts +0 -8
- package/dist/cli/sync.js +0 -154
- package/dist/cli/sync.js.map +0 -1
- package/dist/core/issue-cache.d.ts +0 -44
- package/dist/core/issue-cache.js +0 -75
- package/dist/core/issue-cache.js.map +0 -1
package/dist/core/registry.d.ts
CHANGED
|
@@ -43,6 +43,8 @@ export interface ProjectAssignment {
|
|
|
43
43
|
code: string;
|
|
44
44
|
description: string | null;
|
|
45
45
|
workdir: string | null;
|
|
46
|
+
default_branch: string | null;
|
|
47
|
+
default_repo_id: string | null;
|
|
46
48
|
};
|
|
47
49
|
repo: {
|
|
48
50
|
repo_id: string;
|
|
@@ -97,6 +99,8 @@ export interface OnboardData {
|
|
|
97
99
|
code: string;
|
|
98
100
|
description: string | null;
|
|
99
101
|
workdir: string | null;
|
|
102
|
+
default_branch: string | null;
|
|
103
|
+
default_repo_id: string | null;
|
|
100
104
|
instructions: string | null;
|
|
101
105
|
workflow_config: OnboardWorkflowConfig;
|
|
102
106
|
} | null;
|
|
@@ -114,6 +118,37 @@ export interface OnboardData {
|
|
|
114
118
|
* Fetch the full onboard payload from HQ
|
|
115
119
|
*/
|
|
116
120
|
export declare function fetchOnboard(url: string, token: string): Promise<OnboardData | null>;
|
|
121
|
+
export interface ProjectLookupResult {
|
|
122
|
+
project: {
|
|
123
|
+
project_id: string;
|
|
124
|
+
name: string;
|
|
125
|
+
code: string;
|
|
126
|
+
description: string | null;
|
|
127
|
+
workdir: string | null;
|
|
128
|
+
default_branch: string | null;
|
|
129
|
+
};
|
|
130
|
+
repo: {
|
|
131
|
+
repo_id: string;
|
|
132
|
+
provider: string;
|
|
133
|
+
full_name: string;
|
|
134
|
+
url: string;
|
|
135
|
+
default_branch: string | null;
|
|
136
|
+
} | null;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Fetch project info by code from HQ
|
|
140
|
+
*/
|
|
141
|
+
export declare function fetchProjectByCode(url: string, token: string, code: string): Promise<ProjectLookupResult | null>;
|
|
142
|
+
export interface CreateAssignmentParams {
|
|
143
|
+
workspace_id: string;
|
|
144
|
+
project_id: string;
|
|
145
|
+
agent_id: string;
|
|
146
|
+
role: string;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Create an assignment for the current agent (auto-assign to project)
|
|
150
|
+
*/
|
|
151
|
+
export declare function createSelfAssignment(url: string, token: string, params: CreateAssignmentParams): Promise<string>;
|
|
117
152
|
/**
|
|
118
153
|
* Fetch the agent's project assignments from HQ
|
|
119
154
|
*/
|
package/dist/core/registry.js
CHANGED
|
@@ -74,6 +74,47 @@ export async function fetchOnboard(url, token) {
|
|
|
74
74
|
const data = (await response.json());
|
|
75
75
|
return data.data || null;
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Fetch project info by code from HQ
|
|
79
|
+
*/
|
|
80
|
+
export async function fetchProjectByCode(url, token, code) {
|
|
81
|
+
const response = await fetch(`${url}/api/v1/agents/me/project-by-code/${encodeURIComponent(code)}`, {
|
|
82
|
+
headers: {
|
|
83
|
+
Authorization: `Bearer ${token}`,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
if (response.status === 404) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
throw new Error(`Failed to fetch project by code: ${response.status}`);
|
|
91
|
+
}
|
|
92
|
+
const data = (await response.json());
|
|
93
|
+
return data.data || null;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Create an assignment for the current agent (auto-assign to project)
|
|
97
|
+
*/
|
|
98
|
+
export async function createSelfAssignment(url, token, params) {
|
|
99
|
+
const response = await fetch(`${url}/api/v1/assignments`, {
|
|
100
|
+
method: "POST",
|
|
101
|
+
headers: {
|
|
102
|
+
Authorization: `Bearer ${token}`,
|
|
103
|
+
"Content-Type": "application/json",
|
|
104
|
+
},
|
|
105
|
+
body: JSON.stringify(params),
|
|
106
|
+
});
|
|
107
|
+
if (!response.ok) {
|
|
108
|
+
if (response.status === 409) {
|
|
109
|
+
// Already assigned — not an error
|
|
110
|
+
return "existing";
|
|
111
|
+
}
|
|
112
|
+
const error = await response.text();
|
|
113
|
+
throw new Error(`Failed to create assignment: ${error}`);
|
|
114
|
+
}
|
|
115
|
+
const data = (await response.json());
|
|
116
|
+
return data.assignment_id;
|
|
117
|
+
}
|
|
77
118
|
/**
|
|
78
119
|
* Fetch the agent's project assignments from HQ
|
|
79
120
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmCzC,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAwB;IAC1D,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,UAAU,EAAE,CAAC;IAEhD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,yBAAyB,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,oBAAoB,EAAE,OAAO,CAAC,MAAM;YACpC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,QAAQ,EAAE,OAAO;YACjB,YAAY,EAAE,OAAO,CAAC,SAAS;YAC/B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC;YACvE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,eAAe,EAAE,OAAO,CAAC,cAAc,IAAI,KAAK;SACjD,CAAC;KACH,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC;IAE7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvD,CAAC;IAED,OAAO;QACL,OAAO;QACP,KAAK;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,SAAiB,EACjB,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,sBAAsB,SAAS,QAAQ,EAAE;QAC1E,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;SACjC;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAe,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAW,EACX,OAAe,EACf,OAAe,EACf,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,kBAAkB,OAAO,QAAQ,EAAE;QACpE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;KAClC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC,EAAE,CAAC;AACrB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/core/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,6 +60,10 @@ export function buildInteractiveCommand(command, env, opencodeSessionId) {
|
|
|
60
60
|
!command.includes("-m ")) {
|
|
61
61
|
finalCommand = `${command} --model ${env.CODEX_MODEL}`;
|
|
62
62
|
}
|
|
63
|
+
// Codex requires --full-auto to skip the interactive directory trust prompt
|
|
64
|
+
if (kind === "codex" && !finalCommand.includes("--full-auto")) {
|
|
65
|
+
finalCommand = `${finalCommand} --full-auto`;
|
|
66
|
+
}
|
|
63
67
|
if (kind === "opencode" &&
|
|
64
68
|
opencodeSessionId &&
|
|
65
69
|
!finalCommand.includes("--session") &&
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tmux-runtime.js","sourceRoot":"","sources":["../../src/core/tmux-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAI7B;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,IAAI,OAAO,KAAK,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,UAAU,CAAC;IACjF,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3E,IAAI,OAAO,KAAK,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,OAAO,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,CAAC,CAAC;IACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAE7D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAE3F,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;YAClE,OAAO,IAAI,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAe,EACf,GAAwC,EACxC,iBAA0B;IAE1B,MAAM,IAAI,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,YAAY,GAAG,OAAO,CAAC;IAE3B,IACE,IAAI,KAAK,UAAU;QACnB,GAAG,EAAE,cAAc;QACnB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxB,CAAC;QACD,YAAY,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC,cAAc,EAAE,CAAC;IAC5D,CAAC;IAED,IACE,IAAI,KAAK,QAAQ;QACjB,GAAG,EAAE,YAAY;QACjB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxB,CAAC;QACD,YAAY,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC,YAAY,EAAE,CAAC;IAC1D,CAAC;IAED,IACE,IAAI,KAAK,OAAO;QAChB,GAAG,EAAE,WAAW;QAChB,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC5B,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EACxB,CAAC;QACD,YAAY,GAAG,GAAG,OAAO,YAAY,GAAG,CAAC,WAAW,EAAE,CAAC;IACzD,CAAC;IAED,IACE,IAAI,KAAK,UAAU;QACnB,iBAAiB;QACjB,CAAC,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC;QACnC,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,EACpC,CAAC;QACD,YAAY,GAAG,GAAG,YAAY,cAAc,iBAAiB,aAAa,CAAC;QAC3E,OAAO,CAAC,GAAG,CAAC,qCAAqC,iBAAiB,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
1
|
+
{"version":3,"file":"tmux-runtime.js","sourceRoot":"","sources":["../../src/core/tmux-runtime.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentmeshhq/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "AgentMesh Agent Wrapper - Turn any AI coding assistant into a dispatchable, nudge-able agent",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -16,15 +16,6 @@
|
|
|
16
16
|
"access": "public",
|
|
17
17
|
"registry": "https://registry.npmjs.org/"
|
|
18
18
|
},
|
|
19
|
-
"scripts": {
|
|
20
|
-
"dev": "tsx watch src/cli/index.ts",
|
|
21
|
-
"build": "tsc -p tsconfig.json",
|
|
22
|
-
"lint": "biome check src",
|
|
23
|
-
"start": "node dist/cli/index.js",
|
|
24
|
-
"test": "vitest run",
|
|
25
|
-
"test:watch": "vitest",
|
|
26
|
-
"prepublishOnly": "pnpm build && pnpm test"
|
|
27
|
-
},
|
|
28
19
|
"dependencies": {
|
|
29
20
|
"commander": "^12.0.0",
|
|
30
21
|
"picocolors": "^1.0.0",
|
|
@@ -53,5 +44,13 @@
|
|
|
53
44
|
"url": "https://github.com/therajushahi/agentmesh.git",
|
|
54
45
|
"directory": "packages/agent"
|
|
55
46
|
},
|
|
56
|
-
"homepage": "https://agentmeshhq.dev"
|
|
57
|
-
|
|
47
|
+
"homepage": "https://agentmeshhq.dev",
|
|
48
|
+
"scripts": {
|
|
49
|
+
"dev": "tsx watch src/cli/index.ts",
|
|
50
|
+
"build": "tsc -p tsconfig.json",
|
|
51
|
+
"lint": "biome check src",
|
|
52
|
+
"start": "node dist/cli/index.js",
|
|
53
|
+
"test": "vitest run",
|
|
54
|
+
"test:watch": "vitest"
|
|
55
|
+
}
|
|
56
|
+
}
|
package/dist/cli/inbox.d.ts
DELETED
package/dist/cli/inbox.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Inbox CLI Command
|
|
3
|
-
* Shows agent's assigned issues and pending handoffs
|
|
4
|
-
*/
|
|
5
|
-
import pc from "picocolors";
|
|
6
|
-
import { loadConfig, getAgentState } from "../config/loader.js";
|
|
7
|
-
import { loadCache } from "../core/issue-cache.js";
|
|
8
|
-
async function getHubUrl() {
|
|
9
|
-
const config = loadConfig();
|
|
10
|
-
return config?.hubUrl || process.env.AGENTMESH_HUB_URL || "https://agentmeshhq.dev";
|
|
11
|
-
}
|
|
12
|
-
async function getToken() {
|
|
13
|
-
const state = getAgentState(process.env.AGENT_NAME || "");
|
|
14
|
-
if (state?.token)
|
|
15
|
-
return state.token;
|
|
16
|
-
if (process.env.AGENT_TOKEN)
|
|
17
|
-
return process.env.AGENT_TOKEN;
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
async function getWorkspace() {
|
|
21
|
-
const config = loadConfig();
|
|
22
|
-
return config?.workspace || process.env.AGENTMESH_WORKSPACE || "agentmesh";
|
|
23
|
-
}
|
|
24
|
-
async function apiRequest(path) {
|
|
25
|
-
const hubUrl = await getHubUrl();
|
|
26
|
-
const token = await getToken();
|
|
27
|
-
try {
|
|
28
|
-
const response = await fetch(`${hubUrl}${path}`, {
|
|
29
|
-
headers: {
|
|
30
|
-
"Content-Type": "application/json",
|
|
31
|
-
...(token && { Authorization: `Bearer ${token}` }),
|
|
32
|
-
},
|
|
33
|
-
});
|
|
34
|
-
if (!response.ok) {
|
|
35
|
-
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
36
|
-
return { error: error.error || response.statusText };
|
|
37
|
-
}
|
|
38
|
-
const data = await response.json();
|
|
39
|
-
return { data: data };
|
|
40
|
-
}
|
|
41
|
-
catch (err) {
|
|
42
|
-
return { error: err.message };
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
function getStatusColor(status) {
|
|
46
|
-
switch (status) {
|
|
47
|
-
case "open":
|
|
48
|
-
return pc.yellow;
|
|
49
|
-
case "in_progress":
|
|
50
|
-
return pc.blue;
|
|
51
|
-
case "review":
|
|
52
|
-
return pc.magenta;
|
|
53
|
-
case "closed":
|
|
54
|
-
return pc.green;
|
|
55
|
-
default:
|
|
56
|
-
return pc.dim;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
function getPriorityColor(priority) {
|
|
60
|
-
switch (priority) {
|
|
61
|
-
case "P0":
|
|
62
|
-
return pc.red;
|
|
63
|
-
case "P1":
|
|
64
|
-
return (s) => pc.yellow(pc.bold(s));
|
|
65
|
-
case "P2":
|
|
66
|
-
return pc.yellow;
|
|
67
|
-
default:
|
|
68
|
-
return pc.dim;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
export async function inbox() {
|
|
72
|
-
console.log(pc.bold("Your Inbox"));
|
|
73
|
-
console.log();
|
|
74
|
-
// Fetch issues assigned to me
|
|
75
|
-
const issuesResult = await apiRequest("/api/v1/agents/me/inbox");
|
|
76
|
-
if (issuesResult.error) {
|
|
77
|
-
if (issuesResult.error.includes("fetch") || issuesResult.error.includes("network")) {
|
|
78
|
-
console.log(pc.yellow("Offline - showing cached assigned issues"));
|
|
79
|
-
const workspace = await getWorkspace();
|
|
80
|
-
const cache = loadCache(workspace);
|
|
81
|
-
const state = getAgentState(process.env.AGENT_NAME || "");
|
|
82
|
-
const myIssues = cache.issues.filter((i) => i.assignee_agent_id === state?.agentId && i.status !== "closed");
|
|
83
|
-
displayInbox(myIssues);
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
console.error(pc.red(`Error fetching inbox: ${issuesResult.error}`));
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
displayInbox(issuesResult.data?.issues || []);
|
|
90
|
-
}
|
|
91
|
-
function displayInbox(issues) {
|
|
92
|
-
if (issues.length === 0) {
|
|
93
|
-
console.log(pc.dim("No assigned issues. Use 'agentmesh ready' to find available work."));
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
// Group by status
|
|
97
|
-
const inProgress = issues.filter((i) => i.status === "in_progress");
|
|
98
|
-
const review = issues.filter((i) => i.status === "review");
|
|
99
|
-
const open = issues.filter((i) => i.status === "open");
|
|
100
|
-
if (inProgress.length > 0) {
|
|
101
|
-
console.log(pc.blue(pc.bold("In Progress")));
|
|
102
|
-
for (const issue of inProgress) {
|
|
103
|
-
console.log(` ${pc.cyan(issue.issue_id)} ${getPriorityColor(issue.priority)(issue.priority)} ${issue.title}`);
|
|
104
|
-
}
|
|
105
|
-
console.log();
|
|
106
|
-
}
|
|
107
|
-
if (review.length > 0) {
|
|
108
|
-
console.log(pc.magenta(pc.bold("In Review")));
|
|
109
|
-
for (const issue of review) {
|
|
110
|
-
console.log(` ${pc.cyan(issue.issue_id)} ${getPriorityColor(issue.priority)(issue.priority)} ${issue.title}`);
|
|
111
|
-
}
|
|
112
|
-
console.log();
|
|
113
|
-
}
|
|
114
|
-
if (open.length > 0) {
|
|
115
|
-
console.log(pc.yellow(pc.bold("Open")));
|
|
116
|
-
for (const issue of open) {
|
|
117
|
-
console.log(` ${pc.cyan(issue.issue_id)} ${getPriorityColor(issue.priority)(issue.priority)} ${issue.title}`);
|
|
118
|
-
}
|
|
119
|
-
console.log();
|
|
120
|
-
}
|
|
121
|
-
console.log(pc.dim(`Total: ${issues.length} issue(s) assigned to you`));
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=inbox.js.map
|
package/dist/cli/inbox.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.js","sourceRoot":"","sources":["../../src/cli/inbox.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/issue.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Issue CLI Commands
|
|
3
|
-
* Integrated issue tracking for agents
|
|
4
|
-
*/
|
|
5
|
-
export interface CreateIssueOptions {
|
|
6
|
-
title: string;
|
|
7
|
-
description?: string;
|
|
8
|
-
type?: string;
|
|
9
|
-
priority?: string;
|
|
10
|
-
project?: string;
|
|
11
|
-
parent?: string;
|
|
12
|
-
labels?: string[];
|
|
13
|
-
}
|
|
14
|
-
export declare function createIssue(options: CreateIssueOptions): Promise<void>;
|
|
15
|
-
export interface ListIssuesOptions {
|
|
16
|
-
status?: string;
|
|
17
|
-
type?: string;
|
|
18
|
-
priority?: string;
|
|
19
|
-
assignee?: string;
|
|
20
|
-
project?: string;
|
|
21
|
-
limit?: number;
|
|
22
|
-
}
|
|
23
|
-
export declare function listIssues(options?: ListIssuesOptions): Promise<void>;
|
|
24
|
-
export declare function showIssue(issueId: string): Promise<void>;
|
|
25
|
-
export interface UpdateIssueOptions {
|
|
26
|
-
title?: string;
|
|
27
|
-
description?: string;
|
|
28
|
-
type?: string;
|
|
29
|
-
priority?: string;
|
|
30
|
-
status?: string;
|
|
31
|
-
project?: string;
|
|
32
|
-
assignee?: string;
|
|
33
|
-
labels?: string[];
|
|
34
|
-
}
|
|
35
|
-
export declare function updateIssue(issueId: string, options: UpdateIssueOptions): Promise<void>;
|
|
36
|
-
export declare function closeIssue(issueId: string): Promise<void>;
|
|
37
|
-
export declare function claimIssue(issueId: string): Promise<void>;
|
|
38
|
-
export interface HandoffOptions {
|
|
39
|
-
to: string;
|
|
40
|
-
reason?: string;
|
|
41
|
-
}
|
|
42
|
-
export declare function handoffIssue(issueId: string, options: HandoffOptions): Promise<void>;
|
package/dist/cli/issue.js
DELETED
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Issue CLI Commands
|
|
3
|
-
* Integrated issue tracking for agents
|
|
4
|
-
*/
|
|
5
|
-
import pc from "picocolors";
|
|
6
|
-
import { loadConfig, getAgentState } from "../config/loader.js";
|
|
7
|
-
import { loadCache, updateCacheIssues, queueChange, } from "../core/issue-cache.js";
|
|
8
|
-
async function getHubUrl() {
|
|
9
|
-
const config = loadConfig();
|
|
10
|
-
return config?.hubUrl || process.env.AGENTMESH_HUB_URL || "https://agentmeshhq.dev";
|
|
11
|
-
}
|
|
12
|
-
async function getToken() {
|
|
13
|
-
// Try agent state first
|
|
14
|
-
const state = getAgentState(process.env.AGENT_NAME || "");
|
|
15
|
-
if (state?.token)
|
|
16
|
-
return state.token;
|
|
17
|
-
// Try environment
|
|
18
|
-
if (process.env.AGENT_TOKEN)
|
|
19
|
-
return process.env.AGENT_TOKEN;
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
async function getWorkspace() {
|
|
23
|
-
const config = loadConfig();
|
|
24
|
-
return config?.workspace || process.env.AGENTMESH_WORKSPACE || "agentmesh";
|
|
25
|
-
}
|
|
26
|
-
async function apiRequest(method, path, body) {
|
|
27
|
-
const hubUrl = await getHubUrl();
|
|
28
|
-
const token = await getToken();
|
|
29
|
-
try {
|
|
30
|
-
const response = await fetch(`${hubUrl}${path}`, {
|
|
31
|
-
method,
|
|
32
|
-
headers: {
|
|
33
|
-
"Content-Type": "application/json",
|
|
34
|
-
...(token && { Authorization: `Bearer ${token}` }),
|
|
35
|
-
},
|
|
36
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
37
|
-
});
|
|
38
|
-
if (!response.ok) {
|
|
39
|
-
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
40
|
-
return { error: error.error || response.statusText };
|
|
41
|
-
}
|
|
42
|
-
if (response.status === 204) {
|
|
43
|
-
return { data: undefined };
|
|
44
|
-
}
|
|
45
|
-
const data = await response.json();
|
|
46
|
-
return { data: data };
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
return { error: err.message };
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
export async function createIssue(options) {
|
|
53
|
-
const workspace = await getWorkspace();
|
|
54
|
-
console.log(pc.cyan("Creating issue..."));
|
|
55
|
-
const result = await apiRequest("POST", `/api/v1/workspaces/${workspace}/issues`, {
|
|
56
|
-
title: options.title,
|
|
57
|
-
description: options.description,
|
|
58
|
-
type: options.type || "task",
|
|
59
|
-
priority: options.priority || "P2",
|
|
60
|
-
project_id: options.project,
|
|
61
|
-
parent_issue_id: options.parent,
|
|
62
|
-
labels: options.labels,
|
|
63
|
-
});
|
|
64
|
-
if (result.error) {
|
|
65
|
-
// Queue for offline sync
|
|
66
|
-
if (result.error.includes("fetch") || result.error.includes("network")) {
|
|
67
|
-
console.log(pc.yellow("Offline - queuing change for later sync"));
|
|
68
|
-
queueChange(workspace, {
|
|
69
|
-
action: "create",
|
|
70
|
-
data: {
|
|
71
|
-
title: options.title,
|
|
72
|
-
description: options.description || null,
|
|
73
|
-
type: options.type || "task",
|
|
74
|
-
priority: options.priority || "P2",
|
|
75
|
-
project_id: options.project || null,
|
|
76
|
-
parent_issue_id: options.parent || null,
|
|
77
|
-
labels: options.labels || [],
|
|
78
|
-
},
|
|
79
|
-
queuedAt: new Date().toISOString(),
|
|
80
|
-
});
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
84
|
-
process.exit(1);
|
|
85
|
-
}
|
|
86
|
-
console.log(pc.green(`Created issue: ${result.data?.issue_id}`));
|
|
87
|
-
}
|
|
88
|
-
export async function listIssues(options = {}) {
|
|
89
|
-
const workspace = await getWorkspace();
|
|
90
|
-
const params = new URLSearchParams();
|
|
91
|
-
if (options.status)
|
|
92
|
-
params.set("status", options.status);
|
|
93
|
-
if (options.type)
|
|
94
|
-
params.set("type", options.type);
|
|
95
|
-
if (options.priority)
|
|
96
|
-
params.set("priority", options.priority);
|
|
97
|
-
if (options.assignee === "me") {
|
|
98
|
-
const state = getAgentState(process.env.AGENT_NAME || "");
|
|
99
|
-
if (state?.agentId)
|
|
100
|
-
params.set("assignee_agent_id", state.agentId);
|
|
101
|
-
}
|
|
102
|
-
else if (options.assignee) {
|
|
103
|
-
params.set("assignee_agent_id", options.assignee);
|
|
104
|
-
}
|
|
105
|
-
if (options.project)
|
|
106
|
-
params.set("project_id", options.project);
|
|
107
|
-
if (options.limit)
|
|
108
|
-
params.set("limit", String(options.limit));
|
|
109
|
-
const result = await apiRequest("GET", `/api/v1/workspaces/${workspace}/issues?${params}`);
|
|
110
|
-
if (result.error) {
|
|
111
|
-
// Try cache
|
|
112
|
-
if (result.error.includes("fetch") || result.error.includes("network")) {
|
|
113
|
-
console.log(pc.yellow("Offline - showing cached issues"));
|
|
114
|
-
const cache = loadCache(workspace);
|
|
115
|
-
displayIssueList(cache.issues.filter((i) => {
|
|
116
|
-
if (options.status && i.status !== options.status)
|
|
117
|
-
return false;
|
|
118
|
-
if (options.type && i.type !== options.type)
|
|
119
|
-
return false;
|
|
120
|
-
if (options.priority && i.priority !== options.priority)
|
|
121
|
-
return false;
|
|
122
|
-
return true;
|
|
123
|
-
}));
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
const issues = result.data?.issues || [];
|
|
130
|
-
// Update cache
|
|
131
|
-
updateCacheIssues(workspace, issues);
|
|
132
|
-
displayIssueList(issues);
|
|
133
|
-
}
|
|
134
|
-
function displayIssueList(issues) {
|
|
135
|
-
if (issues.length === 0) {
|
|
136
|
-
console.log(pc.dim("No issues found"));
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
console.log();
|
|
140
|
-
console.log(pc.bold(`${issues.length} issue(s)`));
|
|
141
|
-
console.log();
|
|
142
|
-
for (const issue of issues) {
|
|
143
|
-
const statusColor = getStatusColor(issue.status);
|
|
144
|
-
const priorityColor = getPriorityColor(issue.priority);
|
|
145
|
-
console.log(`${pc.cyan(issue.issue_id)} ${statusColor(issue.status.padEnd(12))} ${priorityColor(issue.priority.padEnd(3))} ${issue.title}`);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
function getStatusColor(status) {
|
|
149
|
-
switch (status) {
|
|
150
|
-
case "open":
|
|
151
|
-
return pc.yellow;
|
|
152
|
-
case "in_progress":
|
|
153
|
-
return pc.blue;
|
|
154
|
-
case "review":
|
|
155
|
-
return pc.magenta;
|
|
156
|
-
case "closed":
|
|
157
|
-
return pc.green;
|
|
158
|
-
default:
|
|
159
|
-
return pc.dim;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
function getPriorityColor(priority) {
|
|
163
|
-
switch (priority) {
|
|
164
|
-
case "P0":
|
|
165
|
-
return pc.red;
|
|
166
|
-
case "P1":
|
|
167
|
-
return (s) => pc.yellow(pc.bold(s));
|
|
168
|
-
case "P2":
|
|
169
|
-
return pc.yellow;
|
|
170
|
-
case "P3":
|
|
171
|
-
return pc.dim;
|
|
172
|
-
case "P4":
|
|
173
|
-
return pc.dim;
|
|
174
|
-
default:
|
|
175
|
-
return pc.dim;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
export async function showIssue(issueId) {
|
|
179
|
-
const workspace = await getWorkspace();
|
|
180
|
-
const result = await apiRequest("GET", `/api/v1/workspaces/${workspace}/issues/${issueId}`);
|
|
181
|
-
if (result.error) {
|
|
182
|
-
// Try cache
|
|
183
|
-
if (result.error.includes("fetch") || result.error.includes("network")) {
|
|
184
|
-
console.log(pc.yellow("Offline - showing cached issue"));
|
|
185
|
-
const cache = loadCache(workspace);
|
|
186
|
-
const issue = cache.issues.find((i) => i.issue_id === issueId);
|
|
187
|
-
if (!issue) {
|
|
188
|
-
console.error(pc.red(`Issue ${issueId} not found in cache`));
|
|
189
|
-
process.exit(1);
|
|
190
|
-
}
|
|
191
|
-
displayIssue(issue);
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
195
|
-
process.exit(1);
|
|
196
|
-
}
|
|
197
|
-
displayIssue(result.data);
|
|
198
|
-
}
|
|
199
|
-
function displayIssue(issue) {
|
|
200
|
-
console.log();
|
|
201
|
-
console.log(pc.bold(pc.cyan(issue.issue_id)) + " " + issue.title);
|
|
202
|
-
console.log();
|
|
203
|
-
console.log(`Status: ${getStatusColor(issue.status)(issue.status)}`);
|
|
204
|
-
console.log(`Type: ${issue.type}`);
|
|
205
|
-
console.log(`Priority: ${getPriorityColor(issue.priority)(issue.priority)}`);
|
|
206
|
-
if (issue.assignee_agent_id) {
|
|
207
|
-
console.log(`Assignee: ${issue.assignee_agent_id}`);
|
|
208
|
-
}
|
|
209
|
-
if (issue.project_id) {
|
|
210
|
-
console.log(`Project: ${issue.project_id}`);
|
|
211
|
-
}
|
|
212
|
-
if (issue.labels && issue.labels.length > 0) {
|
|
213
|
-
console.log(`Labels: ${issue.labels.join(", ")}`);
|
|
214
|
-
}
|
|
215
|
-
if (issue.external_ref) {
|
|
216
|
-
console.log(`External: ${issue.external_provider}:${issue.external_ref}`);
|
|
217
|
-
if (issue.external_url) {
|
|
218
|
-
console.log(`URL: ${issue.external_url}`);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
console.log();
|
|
222
|
-
console.log(`Created: ${issue.created_at}`);
|
|
223
|
-
console.log(`Updated: ${issue.updated_at}`);
|
|
224
|
-
if (issue.description) {
|
|
225
|
-
console.log();
|
|
226
|
-
console.log(pc.dim("Description:"));
|
|
227
|
-
console.log(issue.description);
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
export async function updateIssue(issueId, options) {
|
|
231
|
-
const workspace = await getWorkspace();
|
|
232
|
-
console.log(pc.cyan(`Updating issue ${issueId}...`));
|
|
233
|
-
const body = {};
|
|
234
|
-
if (options.title)
|
|
235
|
-
body.title = options.title;
|
|
236
|
-
if (options.description)
|
|
237
|
-
body.description = options.description;
|
|
238
|
-
if (options.type)
|
|
239
|
-
body.type = options.type;
|
|
240
|
-
if (options.priority)
|
|
241
|
-
body.priority = options.priority;
|
|
242
|
-
if (options.status)
|
|
243
|
-
body.status = options.status;
|
|
244
|
-
if (options.project)
|
|
245
|
-
body.project_id = options.project;
|
|
246
|
-
if (options.assignee)
|
|
247
|
-
body.assignee_agent_id = options.assignee;
|
|
248
|
-
if (options.labels)
|
|
249
|
-
body.labels = options.labels;
|
|
250
|
-
const result = await apiRequest("PATCH", `/api/v1/workspaces/${workspace}/issues/${issueId}`, body);
|
|
251
|
-
if (result.error) {
|
|
252
|
-
if (result.error.includes("fetch") || result.error.includes("network")) {
|
|
253
|
-
console.log(pc.yellow("Offline - queuing change for later sync"));
|
|
254
|
-
queueChange(workspace, {
|
|
255
|
-
action: "update",
|
|
256
|
-
issueId,
|
|
257
|
-
data: body,
|
|
258
|
-
queuedAt: new Date().toISOString(),
|
|
259
|
-
});
|
|
260
|
-
return;
|
|
261
|
-
}
|
|
262
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
263
|
-
process.exit(1);
|
|
264
|
-
}
|
|
265
|
-
console.log(pc.green(`Updated issue ${issueId}`));
|
|
266
|
-
}
|
|
267
|
-
export async function closeIssue(issueId) {
|
|
268
|
-
await updateIssue(issueId, { status: "closed" });
|
|
269
|
-
}
|
|
270
|
-
// ============================================================================
|
|
271
|
-
// Workflow Commands
|
|
272
|
-
// ============================================================================
|
|
273
|
-
export async function claimIssue(issueId) {
|
|
274
|
-
const workspace = await getWorkspace();
|
|
275
|
-
console.log(pc.cyan(`Claiming issue ${issueId}...`));
|
|
276
|
-
const result = await apiRequest("POST", `/api/v1/workspaces/${workspace}/issues/${issueId}/claim`);
|
|
277
|
-
if (result.error) {
|
|
278
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
279
|
-
process.exit(1);
|
|
280
|
-
}
|
|
281
|
-
console.log(pc.green(`Claimed issue ${issueId} - now assigned to you and in_progress`));
|
|
282
|
-
}
|
|
283
|
-
export async function handoffIssue(issueId, options) {
|
|
284
|
-
const workspace = await getWorkspace();
|
|
285
|
-
console.log(pc.cyan(`Creating handoff for issue ${issueId}...`));
|
|
286
|
-
const result = await apiRequest("POST", `/api/v1/workspaces/${workspace}/issues/${issueId}/handoff`, {
|
|
287
|
-
to_agent_id: options.to,
|
|
288
|
-
reason: options.reason,
|
|
289
|
-
});
|
|
290
|
-
if (result.error) {
|
|
291
|
-
console.error(pc.red(`Error: ${result.error}`));
|
|
292
|
-
process.exit(1);
|
|
293
|
-
}
|
|
294
|
-
console.log(pc.green(`Created handoff ${result.data?.handoff_id}`));
|
|
295
|
-
console.log(pc.dim("Note: Issue assignment unchanged. Target agent will see this in their inbox."));
|
|
296
|
-
}
|
|
297
|
-
//# sourceMappingURL=issue.js.map
|