Skip to content

Commit edf8274

Browse files
committed
feat(project): scaffold add/remove/dev/deploy/status/build commands
Each command throws NotImplementedError, a new AgentCoreCLIError subclass.
1 parent 5b9506f commit edf8274

10 files changed

Lines changed: 97 additions & 1 deletion

File tree

src/errors/errors.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,3 +64,10 @@ export class InputValidationError extends AgentCoreCLIError {
6464
super(message, { ...options, source: ERROR_SOURCE.USER });
6565
}
6666
}
67+
68+
/** Error raised when a command or operation has not been implemented yet. */
69+
export class NotImplementedError extends AgentCoreCLIError {
70+
constructor(message?: string, options?: Omit<AgentCoreCLIErrorOptions, "source">) {
71+
super(message ?? "not implemented yet", { ...options, source: ERROR_SOURCE.INTERNAL });
72+
}
73+
}

src/errors/index.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
1-
export { AgentCoreCLIError, InputValidationError, type AgentCoreCLIErrorOptions } from "./errors";
1+
export {
2+
AgentCoreCLIError,
3+
InputValidationError,
4+
NotImplementedError,
5+
type AgentCoreCLIErrorOptions,
6+
} from "./errors";
27
export { ERROR_SOURCE } from "./types";

src/handlers/project/add/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createAddProjectHandler = () =>
5+
createHandler({
6+
name: "add",
7+
description: "add a resource to the project",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project add is not implemented yet");
10+
},
11+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createBuildProjectHandler = () =>
5+
createHandler({
6+
name: "build",
7+
description: "build the project's deployable artifacts",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project build is not implemented yet");
10+
},
11+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createDeployProjectHandler = () =>
5+
createHandler({
6+
name: "deploy",
7+
description: "deploy the project to AWS",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project deploy is not implemented yet");
10+
},
11+
});

src/handlers/project/dev/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createDevProjectHandler = () =>
5+
createHandler({
6+
name: "dev",
7+
description: "run the project locally for development",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project dev is not implemented yet");
10+
},
11+
});

src/handlers/project/index.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
import { Router } from "../../router";
22
import { createCreateProjectHandler } from "./create";
3+
import { createAddProjectHandler } from "./add";
4+
import { createRemoveProjectHandler } from "./remove";
5+
import { createDevProjectHandler } from "./dev";
6+
import { createDeployProjectHandler } from "./deploy";
7+
import { createStatusProjectHandler } from "./status";
8+
import { createBuildProjectHandler } from "./build";
39
import type { ProjectManager } from "./types";
410

511
type ProjectHandlerConfig = {
@@ -10,6 +16,12 @@ export function createProjectHandler(config: ProjectHandlerConfig): Router {
1016
const project = new Router("project", "manage an AgentCore project");
1117

1218
project.handler(createCreateProjectHandler({ projectManager: config.projectManager }));
19+
project.handler(createAddProjectHandler());
20+
project.handler(createRemoveProjectHandler());
21+
project.handler(createDevProjectHandler());
22+
project.handler(createDeployProjectHandler());
23+
project.handler(createStatusProjectHandler());
24+
project.handler(createBuildProjectHandler());
1325

1426
return project;
1527
}

src/handlers/project/project.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ async function run(args: string[]): Promise<void> {
1717
await root.route(["node", "agentcore", "project", ...args]);
1818
}
1919

20+
describe.each(["add", "remove", "dev", "deploy", "status", "build"])("project %s", (command) => {
21+
test("throws because it is not implemented yet", async () => {
22+
await expect(run([command])).rejects.toThrow(/not implemented/);
23+
});
24+
});
25+
2026
describe("project create", () => {
2127
test("throws because it is not implemented yet", async () => {
2228
await expect(run(["create"])).rejects.toThrow(/not implemented/);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createRemoveProjectHandler = () =>
5+
createHandler({
6+
name: "remove",
7+
description: "remove a resource from the project",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project remove is not implemented yet");
10+
},
11+
});
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createHandler } from "../../../router";
2+
import { NotImplementedError } from "../../../errors";
3+
4+
export const createStatusProjectHandler = () =>
5+
createHandler({
6+
name: "status",
7+
description: "show the status of the project's deployed resources",
8+
handle: async () => {
9+
throw new NotImplementedError("agentcore project status is not implemented yet");
10+
},
11+
});

0 commit comments

Comments
 (0)