Skip to content

feat(project): scaffold project manager interface#1794

Merged
tejaskash merged 6 commits into
aws:refactorfrom
Hweinstock:feat/project-stubs
Jul 22, 2026
Merged

feat(project): scaffold project manager interface#1794
tejaskash merged 6 commits into
aws:refactorfrom
Hweinstock:feat/project-stubs

Conversation

@Hweinstock

@Hweinstock Hweinstock commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

Problem

We are currently missing a way to create and find existing projects on the local filesystem.

Solution

  • add ProjectManager interface to core interface with stub implementations.
  • migrate core input to a config object instead of positional arguments.
  • design re-usable withProject middleware for commands that requires an existing project.

Note: this PR does not implement e2e functionality, but sets up the scaffolding for future contributions.

We'll likely want a working create command before filling in all of these gaps.

Verification

  • added placeholder unit tests.
  • running agentcore project create --> Error: ProjectManager.create is not implemented yet

@github-actions github-actions Bot added agentcore-harness-reviewing AgentCore Harness review in progress and removed agentcore-harness-reviewing AgentCore Harness review in progress labels Jul 20, 2026
@codecov-commenter

codecov-commenter commented Jul 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.94%. Comparing base (951044e) to head (bfaf476).

Additional details and impacted files
@@             Coverage Diff              @@
##           refactor    #1794      +/-   ##
============================================
+ Coverage     93.91%   93.94%   +0.02%     
============================================
  Files           118      122       +4     
  Lines          6423     6453      +30     
============================================
+ Hits           6032     6062      +30     
  Misses          391      391              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@Hweinstock
Hweinstock force-pushed the feat/project-stubs branch 2 times, most recently from 02c57e3 to 20fc2d6 Compare July 20, 2026 17:06
@Hweinstock
Hweinstock marked this pull request as ready for review July 20, 2026 17:08

@tejaskash tejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like that its available and injected through core.

tejaskash
tejaskash previously approved these changes Jul 20, 2026

@tejaskash tejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, 1 clarification, not blocking

Comment thread src/handlers/project/types.ts Outdated
Comment thread src/core/project/manager.tsx Outdated
import type { ProjectManager } from "../../handlers/project/types";
import type { Logger } from "../../logging";

interface CreateProjectManagerConfig {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be a type and not an interface. Interfaces are used for things that can have multiple implementations, whereas types require specific, concrete/instantiated entities. That's what we need here for the input params for this constructor, so a standard type seems more appropriate.

@Hweinstock Hweinstock Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've always preferred interfaces to types since they tend to provide better error messages, and leave the door open if we want to extend them later on. The typescript language docs appear to recommend interfaces as the default here, but I do not have a strong preference here, especially since its very unlikely we'll want to extend these shapes.

I'll make the swap to types here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's an important distinction between types and interfaces that I think we should respect here. Types hold data of a determinate form. They're not implemented by anything else—they are the thing. They are, in this way, concrete. Interfaces, in contrast, are abstract; they don't have a concrete existence. They must be implemented and instantiated by something else that is concrete. In the case here, what we want is a concrete input with data, which makes a type the right tool for the current job. Making this an interface would bring in a bunch of unnecessary functionality and, as you said, make it possible to extend, which is precisely what we wouldn't want in this case.

Comment thread src/core/project/manager.tsx Outdated
Comment thread src/core/index.tsx Outdated
CreateIamClient,
} from "./types";

interface CoreClientConfig {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like the above, this should be a type.

Comment thread src/handlers/project/create/index.ts Outdated
Comment thread src/handlers/project/index.ts Outdated
Comment thread src/handlers/project/types.ts Outdated
Comment thread src/handlers/project/types.ts Outdated
Comment thread src/handlers/project/types.ts Outdated
Comment thread src/handlers/project/types.ts Outdated
@Hweinstock
Hweinstock force-pushed the feat/project-stubs branch from 0048ccf to c68e6ca Compare July 21, 2026 20:11
@Hweinstock
Hweinstock marked this pull request as draft July 21, 2026 21:12
@Hweinstock
Hweinstock force-pushed the feat/project-stubs branch from 5f39824 to bfaf476 Compare July 21, 2026 21:15
@Hweinstock
Hweinstock marked this pull request as ready for review July 21, 2026 21:21
@Hweinstock

Hweinstock commented Jul 21, 2026

Copy link
Copy Markdown
Contributor Author

Updated implementation to treat project as data instead of an interface. ProjectManager will host all project functionality.

Comment thread src/handlers/project/types.ts Outdated
@tejaskash
tejaskash merged commit 416fd35 into aws:refactor Jul 22, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants