@elizaos/plugin-coding-agent 0.1.0-next.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/README.md +169 -0
- package/dist/index.js +5788 -0
- package/dist/index.js.map +45 -0
- package/dist/src/actions/coding-task-handlers.d.ts +44 -0
- package/dist/src/actions/coding-task-handlers.d.ts.map +1 -0
- package/dist/src/actions/coding-task-helpers.d.ts +27 -0
- package/dist/src/actions/coding-task-helpers.d.ts.map +1 -0
- package/dist/src/actions/finalize-workspace.d.ts +11 -0
- package/dist/src/actions/finalize-workspace.d.ts.map +1 -0
- package/dist/src/actions/list-agents.d.ts +11 -0
- package/dist/src/actions/list-agents.d.ts.map +1 -0
- package/dist/src/actions/manage-issues.d.ts +11 -0
- package/dist/src/actions/manage-issues.d.ts.map +1 -0
- package/dist/src/actions/provision-workspace.d.ts +11 -0
- package/dist/src/actions/provision-workspace.d.ts.map +1 -0
- package/dist/src/actions/send-to-agent.d.ts +11 -0
- package/dist/src/actions/send-to-agent.d.ts.map +1 -0
- package/dist/src/actions/spawn-agent.d.ts +11 -0
- package/dist/src/actions/spawn-agent.d.ts.map +1 -0
- package/dist/src/actions/start-coding-task.d.ts +17 -0
- package/dist/src/actions/start-coding-task.d.ts.map +1 -0
- package/dist/src/actions/stop-agent.d.ts +11 -0
- package/dist/src/actions/stop-agent.d.ts.map +1 -0
- package/dist/src/api/agent-routes.d.ts +18 -0
- package/dist/src/api/agent-routes.d.ts.map +1 -0
- package/dist/src/api/coordinator-routes.d.ts +22 -0
- package/dist/src/api/coordinator-routes.d.ts.map +1 -0
- package/dist/src/api/issue-routes.d.ts +17 -0
- package/dist/src/api/issue-routes.d.ts.map +1 -0
- package/dist/src/api/routes.d.ts +36 -0
- package/dist/src/api/routes.d.ts.map +1 -0
- package/dist/src/api/workspace-routes.d.ts +17 -0
- package/dist/src/api/workspace-routes.d.ts.map +1 -0
- package/dist/src/index.d.ts +32 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/providers/action-examples.d.ts +13 -0
- package/dist/src/providers/action-examples.d.ts.map +1 -0
- package/dist/src/providers/active-workspace-context.d.ts +13 -0
- package/dist/src/providers/active-workspace-context.d.ts.map +1 -0
- package/dist/src/services/agent-metrics.d.ts +28 -0
- package/dist/src/services/agent-metrics.d.ts.map +1 -0
- package/dist/src/services/agent-selection.d.ts +53 -0
- package/dist/src/services/agent-selection.d.ts.map +1 -0
- package/dist/src/services/ansi-utils.d.ts +48 -0
- package/dist/src/services/ansi-utils.d.ts.map +1 -0
- package/dist/src/services/pty-auto-response.d.ts +30 -0
- package/dist/src/services/pty-auto-response.d.ts.map +1 -0
- package/dist/src/services/pty-init.d.ts +43 -0
- package/dist/src/services/pty-init.d.ts.map +1 -0
- package/dist/src/services/pty-service.d.ts +92 -0
- package/dist/src/services/pty-service.d.ts.map +1 -0
- package/dist/src/services/pty-session-io.d.ts +46 -0
- package/dist/src/services/pty-session-io.d.ts.map +1 -0
- package/dist/src/services/pty-spawn.d.ts +44 -0
- package/dist/src/services/pty-spawn.d.ts.map +1 -0
- package/dist/src/services/pty-types.d.ts +80 -0
- package/dist/src/services/pty-types.d.ts.map +1 -0
- package/dist/src/services/stall-classifier.d.ts +44 -0
- package/dist/src/services/stall-classifier.d.ts.map +1 -0
- package/dist/src/services/swarm-coordinator-prompts.d.ts +61 -0
- package/dist/src/services/swarm-coordinator-prompts.d.ts.map +1 -0
- package/dist/src/services/swarm-coordinator.d.ts +155 -0
- package/dist/src/services/swarm-coordinator.d.ts.map +1 -0
- package/dist/src/services/swarm-decision-loop.d.ts +37 -0
- package/dist/src/services/swarm-decision-loop.d.ts.map +1 -0
- package/dist/src/services/swarm-idle-watchdog.d.ts +22 -0
- package/dist/src/services/swarm-idle-watchdog.d.ts.map +1 -0
- package/dist/src/services/workspace-git-ops.d.ts +28 -0
- package/dist/src/services/workspace-git-ops.d.ts.map +1 -0
- package/dist/src/services/workspace-github.d.ts +58 -0
- package/dist/src/services/workspace-github.d.ts.map +1 -0
- package/dist/src/services/workspace-lifecycle.d.ts +18 -0
- package/dist/src/services/workspace-lifecycle.d.ts.map +1 -0
- package/dist/src/services/workspace-service.d.ts +84 -0
- package/dist/src/services/workspace-service.d.ts.map +1 -0
- package/dist/src/services/workspace-types.d.ts +81 -0
- package/dist/src/services/workspace-types.d.ts.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm Coordinator — Decision Loop & Blocked/Turn-Complete Handlers
|
|
3
|
+
*
|
|
4
|
+
* Extracted from swarm-coordinator.ts for modularity.
|
|
5
|
+
* All functions are pure async helpers that receive a SwarmCoordinatorContext
|
|
6
|
+
* to access shared state and services.
|
|
7
|
+
*
|
|
8
|
+
* @module services/swarm-decision-loop
|
|
9
|
+
*/
|
|
10
|
+
import type { SwarmCoordinatorContext, TaskContext } from "./swarm-coordinator.js";
|
|
11
|
+
import { type CoordinationLLMResponse } from "./swarm-coordinator-prompts.js";
|
|
12
|
+
/**
|
|
13
|
+
* Ask the LLM to make a coordination decision about a blocked agent.
|
|
14
|
+
*/
|
|
15
|
+
export declare function makeCoordinationDecision(ctx: SwarmCoordinatorContext, taskCtx: TaskContext, promptText: string, recentOutput: string): Promise<CoordinationLLMResponse | null>;
|
|
16
|
+
/**
|
|
17
|
+
* Execute a coordination decision — send response, complete session, escalate, or ignore.
|
|
18
|
+
*/
|
|
19
|
+
export declare function executeDecision(ctx: SwarmCoordinatorContext, sessionId: string, decision: CoordinationLLMResponse): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Handle a "blocked" session event — auto-resolved, escalated, or routed to decision loop.
|
|
22
|
+
*/
|
|
23
|
+
export declare function handleBlocked(ctx: SwarmCoordinatorContext, sessionId: string, taskCtx: TaskContext, data: unknown): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Handle a turn completion event. Instead of immediately stopping the session,
|
|
26
|
+
* ask the LLM whether the overall task is done or the agent needs more turns.
|
|
27
|
+
*/
|
|
28
|
+
export declare function handleTurnComplete(ctx: SwarmCoordinatorContext, sessionId: string, taskCtx: TaskContext, data: unknown): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Handle an autonomous decision for a blocked session — call the LLM and execute immediately.
|
|
31
|
+
*/
|
|
32
|
+
export declare function handleAutonomousDecision(ctx: SwarmCoordinatorContext, sessionId: string, taskCtx: TaskContext, promptText: string, recentOutput: string): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Handle a confirm-mode decision — call LLM, then queue for human approval.
|
|
35
|
+
*/
|
|
36
|
+
export declare function handleConfirmDecision(ctx: SwarmCoordinatorContext, sessionId: string, taskCtx: TaskContext, promptText: string, recentOutput: string): Promise<void>;
|
|
37
|
+
//# sourceMappingURL=swarm-decision-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm-decision-loop.d.ts","sourceRoot":"","sources":["../../../src/services/swarm-decision-loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,KAAK,uBAAuB,EAI7B,MAAM,gCAAgC,CAAC;AA4DxC;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,uBAAuB,EAC5B,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAiBzC;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,uBAAuB,GAChC,OAAO,CAAC,IAAI,CAAC,CAgEf;AAID;;GAEG;AACH,wBAAsB,aAAa,CACjC,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAyGf;AAID;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC,CAoGf;AAID;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAiGf;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,uBAAuB,EAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Swarm Coordinator — Idle Watchdog
|
|
3
|
+
*
|
|
4
|
+
* Extracted from swarm-coordinator.ts for modularity.
|
|
5
|
+
* Scans active sessions for idle ones and asks the LLM to assess their state.
|
|
6
|
+
*
|
|
7
|
+
* @module services/swarm-idle-watchdog
|
|
8
|
+
*/
|
|
9
|
+
import type { SwarmCoordinatorContext, TaskContext } from "./swarm-coordinator.js";
|
|
10
|
+
/** How long a session can be idle before the watchdog checks on it (ms). */
|
|
11
|
+
export declare const IDLE_THRESHOLD_MS: number;
|
|
12
|
+
/** Max idle checks before force-escalating a session. */
|
|
13
|
+
export declare const MAX_IDLE_CHECKS = 3;
|
|
14
|
+
/**
|
|
15
|
+
* Scan all active sessions for idle ones. Called periodically by the watchdog timer.
|
|
16
|
+
*/
|
|
17
|
+
export declare function scanIdleSessions(ctx: SwarmCoordinatorContext): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Handle an idle session by asking the LLM to assess its state.
|
|
20
|
+
*/
|
|
21
|
+
export declare function handleIdleCheck(ctx: SwarmCoordinatorContext, taskCtx: TaskContext, idleMinutes: number): Promise<void>;
|
|
22
|
+
//# sourceMappingURL=swarm-idle-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"swarm-idle-watchdog.d.ts","sourceRoot":"","sources":["../../../src/services/swarm-idle-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAYhC,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,QAAgB,CAAC;AAE/C,yDAAyD;AACzD,eAAO,MAAM,eAAe,IAAI,CAAC;AAIjC;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,uBAAuB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAwEf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,GAAG,EAAE,uBAAuB,EAC5B,OAAO,EAAE,WAAW,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoHf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git operations for Coding Workspace Service
|
|
3
|
+
*
|
|
4
|
+
* Extracted from workspace-service.ts — provides git status, commit, push,
|
|
5
|
+
* and PR creation as standalone functions operating on workspace paths.
|
|
6
|
+
*
|
|
7
|
+
* @module services/workspace-git-ops
|
|
8
|
+
*/
|
|
9
|
+
import type { PullRequestInfo, WorkspaceService } from "git-workspace-service";
|
|
10
|
+
import type { CommitOptions, PROptions, PushOptions, WorkspaceResult, WorkspaceStatusResult } from "./workspace-service.js";
|
|
11
|
+
/**
|
|
12
|
+
* Get workspace git status (branch, staged/modified/untracked files).
|
|
13
|
+
*/
|
|
14
|
+
export declare function getStatus(workspacePath: string): Promise<WorkspaceStatusResult>;
|
|
15
|
+
/**
|
|
16
|
+
* Commit changes in a workspace directory.
|
|
17
|
+
* Returns the commit hash.
|
|
18
|
+
*/
|
|
19
|
+
export declare function commit(workspacePath: string, options: CommitOptions, log: (msg: string) => void): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Push changes to remote for a workspace.
|
|
22
|
+
*/
|
|
23
|
+
export declare function push(workspacePath: string, branch: string, options: PushOptions | undefined, log: (msg: string) => void): Promise<void>;
|
|
24
|
+
/**
|
|
25
|
+
* Create a pull request for a workspace via the underlying WorkspaceService.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createPR(workspaceService: WorkspaceService, workspace: WorkspaceResult, workspaceId: string, options: PROptions, log: (msg: string) => void): Promise<PullRequestInfo>;
|
|
28
|
+
//# sourceMappingURL=workspace-git-ops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-git-ops.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-git-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,eAAe,EAEf,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,eAAe,EACf,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAEhC;;GAEG;AACH,wBAAsB,SAAS,CAC7B,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,qBAAqB,CAAC,CAuChC;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,MAAM,CAAC,CAkBjB;AAED;;GAEG;AACH,wBAAsB,IAAI,CACxB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,GAAG,SAAS,EAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,EAClB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,eAAe,CAAC,CAsB1B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub integration for Coding Workspace Service
|
|
3
|
+
*
|
|
4
|
+
* Extracted from workspace-service.ts — provides GitHub API access
|
|
5
|
+
* via PAT or OAuth device flow, plus all issue management operations.
|
|
6
|
+
*
|
|
7
|
+
* @module services/workspace-github
|
|
8
|
+
*/
|
|
9
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
10
|
+
import { type CreateIssueOptions, GitHubPatClient, type IssueComment, type IssueInfo, type IssueState } from "git-workspace-service";
|
|
11
|
+
/**
|
|
12
|
+
* Callback for surfacing auth prompts to the user.
|
|
13
|
+
* Returns the auth prompt text so Milady can relay it through chat.
|
|
14
|
+
*/
|
|
15
|
+
export type AuthPromptCallback = (prompt: {
|
|
16
|
+
verificationUri: string;
|
|
17
|
+
userCode: string;
|
|
18
|
+
expiresIn: number;
|
|
19
|
+
}) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Context object passed by CodingWorkspaceService into every GitHub function.
|
|
22
|
+
* Lets us keep the extracted functions stateless while still mutating shared state.
|
|
23
|
+
*/
|
|
24
|
+
export interface GitHubContext {
|
|
25
|
+
runtime: IAgentRuntime;
|
|
26
|
+
githubClient: GitHubPatClient | null;
|
|
27
|
+
setGithubClient: (client: GitHubPatClient) => void;
|
|
28
|
+
githubAuthInProgress: Promise<GitHubPatClient> | null;
|
|
29
|
+
setGithubAuthInProgress: (p: Promise<GitHubPatClient> | null) => void;
|
|
30
|
+
authPromptCallback: AuthPromptCallback | null;
|
|
31
|
+
log: (msg: string) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare function parseOwnerRepo(repo: string): {
|
|
34
|
+
owner: string;
|
|
35
|
+
repo: string;
|
|
36
|
+
};
|
|
37
|
+
export declare function ensureGitHubClient(ctx: GitHubContext): Promise<GitHubPatClient>;
|
|
38
|
+
export declare function performOAuthFlow(ctx: GitHubContext, clientId: string): Promise<GitHubPatClient>;
|
|
39
|
+
export declare function createIssue(ctx: GitHubContext, repo: string, options: CreateIssueOptions): Promise<IssueInfo>;
|
|
40
|
+
export declare function getIssue(ctx: GitHubContext, repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
41
|
+
export declare function listIssues(ctx: GitHubContext, repo: string, options?: {
|
|
42
|
+
state?: IssueState | "all";
|
|
43
|
+
labels?: string[];
|
|
44
|
+
assignee?: string;
|
|
45
|
+
}): Promise<IssueInfo[]>;
|
|
46
|
+
export declare function updateIssue(ctx: GitHubContext, repo: string, issueNumber: number, options: {
|
|
47
|
+
title?: string;
|
|
48
|
+
body?: string;
|
|
49
|
+
state?: IssueState;
|
|
50
|
+
labels?: string[];
|
|
51
|
+
assignees?: string[];
|
|
52
|
+
}): Promise<IssueInfo>;
|
|
53
|
+
export declare function addComment(ctx: GitHubContext, repo: string, issueNumber: number, body: string): Promise<IssueComment>;
|
|
54
|
+
export declare function listComments(ctx: GitHubContext, repo: string, issueNumber: number): Promise<IssueComment[]>;
|
|
55
|
+
export declare function closeIssue(ctx: GitHubContext, repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
56
|
+
export declare function reopenIssue(ctx: GitHubContext, repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
57
|
+
export declare function addLabels(ctx: GitHubContext, repo: string, issueNumber: number, labels: string[]): Promise<void>;
|
|
58
|
+
//# sourceMappingURL=workspace-github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-github.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workspace lifecycle utilities — garbage collection and scratch directory cleanup.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from workspace-service.ts to reduce module size.
|
|
5
|
+
*
|
|
6
|
+
* @module services/workspace-lifecycle
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Remove a scratch directory (non-git workspace used for ad-hoc tasks).
|
|
10
|
+
* Safe to call for any path under the workspaces base dir.
|
|
11
|
+
*/
|
|
12
|
+
export declare function removeScratchDir(dirPath: string, baseDir: string, log: (msg: string) => void): Promise<void>;
|
|
13
|
+
/**
|
|
14
|
+
* Garbage-collect orphaned workspace directories.
|
|
15
|
+
* Removes directories older than the given TTL that aren't tracked by the current session.
|
|
16
|
+
*/
|
|
17
|
+
export declare function gcOrphanedWorkspaces(baseDir: string, workspaceTtlMs: number, trackedWorkspaceIds: Set<string>, log: (msg: string) => void): Promise<void>;
|
|
18
|
+
//# sourceMappingURL=workspace-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,EAChC,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,OAAO,CAAC,IAAI,CAAC,CAkDf"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coding Workspace Service - Manages git workspaces for coding tasks
|
|
3
|
+
*
|
|
4
|
+
* Delegates to:
|
|
5
|
+
* - workspace-github.ts (issue management, OAuth, PAT auth)
|
|
6
|
+
* - workspace-git-ops.ts (status, commit, push, PR creation)
|
|
7
|
+
* - workspace-lifecycle.ts (GC, scratch dir cleanup)
|
|
8
|
+
* - workspace-types.ts (shared interface definitions)
|
|
9
|
+
*
|
|
10
|
+
* @module services/workspace-service
|
|
11
|
+
*/
|
|
12
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
13
|
+
import { type CreateIssueOptions, type IssueComment, type IssueInfo, type IssueState, type PullRequestInfo, type WorkspaceEvent } from "git-workspace-service";
|
|
14
|
+
import type { AuthPromptCallback } from "./workspace-github.js";
|
|
15
|
+
export type { AuthPromptCallback } from "./workspace-github.js";
|
|
16
|
+
export type { CodingWorkspaceConfig, CommitOptions, PROptions, ProvisionWorkspaceOptions, PushOptions, WorkspaceResult, WorkspaceStatusResult, } from "./workspace-types.js";
|
|
17
|
+
import type { CodingWorkspaceConfig, CommitOptions, PROptions, ProvisionWorkspaceOptions, PushOptions, WorkspaceResult, WorkspaceStatusResult } from "./workspace-types.js";
|
|
18
|
+
type WorkspaceEventCallback = (event: WorkspaceEvent) => void;
|
|
19
|
+
export declare class CodingWorkspaceService {
|
|
20
|
+
static serviceType: string;
|
|
21
|
+
capabilityDescription: string;
|
|
22
|
+
private runtime;
|
|
23
|
+
private workspaceService;
|
|
24
|
+
private credentialService;
|
|
25
|
+
private githubClient;
|
|
26
|
+
private githubAuthInProgress;
|
|
27
|
+
private serviceConfig;
|
|
28
|
+
private workspaces;
|
|
29
|
+
private labels;
|
|
30
|
+
private eventCallbacks;
|
|
31
|
+
private authPromptCallback;
|
|
32
|
+
constructor(runtime: IAgentRuntime, config?: CodingWorkspaceConfig);
|
|
33
|
+
static start(runtime: IAgentRuntime): Promise<CodingWorkspaceService>;
|
|
34
|
+
static stopRuntime(runtime: IAgentRuntime): Promise<void>;
|
|
35
|
+
private initialize;
|
|
36
|
+
stop(): Promise<void>;
|
|
37
|
+
/** Provision a new workspace */
|
|
38
|
+
provisionWorkspace(options: ProvisionWorkspaceOptions): Promise<WorkspaceResult>;
|
|
39
|
+
getWorkspace(id: string): WorkspaceResult | undefined;
|
|
40
|
+
listWorkspaces(): WorkspaceResult[];
|
|
41
|
+
/**
|
|
42
|
+
* Assign a semantic label to a workspace (e.g. "auth-bugfix").
|
|
43
|
+
* If the label already exists, it is reassigned to the new workspace.
|
|
44
|
+
*/
|
|
45
|
+
setLabel(workspaceId: string, label: string): void;
|
|
46
|
+
getWorkspaceByLabel(label: string): WorkspaceResult | undefined;
|
|
47
|
+
/** Resolve a workspace by label or ID. */
|
|
48
|
+
resolveWorkspace(labelOrId: string): WorkspaceResult | undefined;
|
|
49
|
+
getStatus(workspaceId: string): Promise<WorkspaceStatusResult>;
|
|
50
|
+
commit(workspaceId: string, options: CommitOptions): Promise<string>;
|
|
51
|
+
push(workspaceId: string, options?: PushOptions): Promise<void>;
|
|
52
|
+
createPR(workspaceId: string, options: PROptions): Promise<PullRequestInfo>;
|
|
53
|
+
private getGitHubContext;
|
|
54
|
+
/** Set a callback to surface OAuth auth prompts to the user. */
|
|
55
|
+
setAuthPromptCallback(callback: AuthPromptCallback): void;
|
|
56
|
+
createIssue(repo: string, options: CreateIssueOptions): Promise<IssueInfo>;
|
|
57
|
+
getIssue(repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
58
|
+
listIssues(repo: string, options?: {
|
|
59
|
+
state?: IssueState | "all";
|
|
60
|
+
labels?: string[];
|
|
61
|
+
assignee?: string;
|
|
62
|
+
}): Promise<IssueInfo[]>;
|
|
63
|
+
updateIssue(repo: string, issueNumber: number, options: {
|
|
64
|
+
title?: string;
|
|
65
|
+
body?: string;
|
|
66
|
+
state?: IssueState;
|
|
67
|
+
labels?: string[];
|
|
68
|
+
assignees?: string[];
|
|
69
|
+
}): Promise<IssueInfo>;
|
|
70
|
+
addComment(repo: string, issueNumber: number, body: string): Promise<IssueComment>;
|
|
71
|
+
listComments(repo: string, issueNumber: number): Promise<IssueComment[]>;
|
|
72
|
+
closeIssue(repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
73
|
+
reopenIssue(repo: string, issueNumber: number): Promise<IssueInfo>;
|
|
74
|
+
addLabels(repo: string, issueNumber: number, labels: string[]): Promise<void>;
|
|
75
|
+
removeWorkspace(workspaceId: string): Promise<void>;
|
|
76
|
+
onEvent(callback: WorkspaceEventCallback): () => void;
|
|
77
|
+
private emitEvent;
|
|
78
|
+
/** Remove a scratch directory (non-git workspace) under the workspaces base dir. */
|
|
79
|
+
removeScratchDir(dirPath: string): Promise<void>;
|
|
80
|
+
/** GC orphaned workspace directories older than workspaceTtlMs. */
|
|
81
|
+
private gcOrphanedWorkspaces;
|
|
82
|
+
private log;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=workspace-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-service.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,KAAK,kBAAkB,EAGvB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EAEf,KAAK,eAAe,EAEpB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAchE,YAAY,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAchE,YAAY,EACV,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,KAAK,EACV,qBAAqB,EACrB,aAAa,EACb,SAAS,EACT,yBAAyB,EACzB,WAAW,EACX,eAAe,EACf,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,KAAK,sBAAsB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;AAE9D,qBAAa,sBAAsB;IACjC,MAAM,CAAC,WAAW,SAA8B;IAChD,qBAAqB,SAA6C;IAElE,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,oBAAoB,CAAyC;IACrE,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,kBAAkB,CAAmC;gBAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,GAAE,qBAA0B;WAWzD,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,sBAAsB,CAAC;WAU9D,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;YASjD,UAAU;IAkDlB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,gCAAgC;IAC1B,kBAAkB,CACtB,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,eAAe,CAAC;IAoD3B,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIrD,cAAc,IAAI,eAAe,EAAE;IAInC;;;OAGG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAkBlD,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAK/D,0CAA0C;IAC1C,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAQ1D,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQ9D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAYpE,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,QAAQ,CACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,SAAS,GACjB,OAAO,CAAC,eAAe,CAAC;IAmB3B,OAAO,CAAC,gBAAgB;IAgBxB,gEAAgE;IAChE,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAInD,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,SAAS,CAAC;IAIf,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAI/D,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC;QAC3B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GACA,OAAO,CAAC,SAAS,EAAE,CAAC;IAIjB,WAAW,CACf,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,UAAU,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACtB,GACA,OAAO,CAAC,SAAS,CAAC;IAIf,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC;IAIlB,YAAY,CAChB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIjE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAIlE,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,IAAI,CAAC;IAMV,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,OAAO,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,IAAI;IAUrD,OAAO,CAAC,SAAS;IAUjB,oFAAoF;IAC9E,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD,mEAAmE;YACrD,oBAAoB;IASlC,OAAO,CAAC,GAAG;CAKZ"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type definitions for the Coding Workspace Service.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from workspace-service.ts to reduce module size.
|
|
5
|
+
*
|
|
6
|
+
* @module services/workspace-types
|
|
7
|
+
*/
|
|
8
|
+
import type { WorkspaceStatus } from "git-workspace-service";
|
|
9
|
+
export interface CodingWorkspaceConfig {
|
|
10
|
+
/** Base directory for workspaces (default: ~/.milaidy/workspaces) */
|
|
11
|
+
baseDir?: string;
|
|
12
|
+
/** Branch prefix (default: "milaidy") */
|
|
13
|
+
branchPrefix?: string;
|
|
14
|
+
/** Enable debug logging */
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
/** Max age for orphaned workspace directories in ms (default: 24 hours). Set to 0 to disable GC. */
|
|
17
|
+
workspaceTtlMs?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ProvisionWorkspaceOptions {
|
|
20
|
+
/** Git repository URL */
|
|
21
|
+
repo: string;
|
|
22
|
+
/** Base branch to create from (default: "main") */
|
|
23
|
+
baseBranch?: string;
|
|
24
|
+
/** Exact branch name to use (overrides auto-generated name) */
|
|
25
|
+
branchName?: string;
|
|
26
|
+
/** Use worktree instead of clone */
|
|
27
|
+
useWorktree?: boolean;
|
|
28
|
+
/** Parent workspace ID for worktree */
|
|
29
|
+
parentWorkspaceId?: string;
|
|
30
|
+
/** Execution context */
|
|
31
|
+
execution?: {
|
|
32
|
+
id: string;
|
|
33
|
+
patternName: string;
|
|
34
|
+
};
|
|
35
|
+
/** Task context */
|
|
36
|
+
task?: {
|
|
37
|
+
id: string;
|
|
38
|
+
role: string;
|
|
39
|
+
slug?: string;
|
|
40
|
+
};
|
|
41
|
+
/** User-provided credentials */
|
|
42
|
+
userCredentials?: {
|
|
43
|
+
type: "pat" | "oauth" | "ssh";
|
|
44
|
+
token?: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface WorkspaceResult {
|
|
48
|
+
id: string;
|
|
49
|
+
path: string;
|
|
50
|
+
branch: string;
|
|
51
|
+
baseBranch: string;
|
|
52
|
+
isWorktree: boolean;
|
|
53
|
+
repo: string;
|
|
54
|
+
status: WorkspaceStatus;
|
|
55
|
+
/** Semantic label for referencing this workspace (e.g. "auth-bugfix", "api-tests") */
|
|
56
|
+
label?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface CommitOptions {
|
|
59
|
+
message: string;
|
|
60
|
+
all?: boolean;
|
|
61
|
+
}
|
|
62
|
+
export interface PushOptions {
|
|
63
|
+
setUpstream?: boolean;
|
|
64
|
+
force?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface PROptions {
|
|
67
|
+
title: string;
|
|
68
|
+
body: string;
|
|
69
|
+
base?: string;
|
|
70
|
+
draft?: boolean;
|
|
71
|
+
labels?: string[];
|
|
72
|
+
reviewers?: string[];
|
|
73
|
+
}
|
|
74
|
+
export interface WorkspaceStatusResult {
|
|
75
|
+
branch: string;
|
|
76
|
+
clean: boolean;
|
|
77
|
+
modified: string[];
|
|
78
|
+
staged: string[];
|
|
79
|
+
untracked: string[];
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=workspace-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-types.d.ts","sourceRoot":"","sources":["../../../src/services/workspace-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oGAAoG;IACpG,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uCAAuC;IACvC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,wBAAwB;IACxB,SAAS,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,mBAAmB;IACnB,IAAI,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,gCAAgC;IAChC,eAAe,CAAC,EAAE;QAAE,IAAI,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACrE;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,eAAe,CAAC;IACxB,sFAAsF;IACtF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
|