Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); feat(project): scaffold add harness handler by Hweinstock · Pull Request #1998 · aws/agentcore-cli · GitHub
Skip to content

feat(project): scaffold add harness handler - #1998

Merged
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness
Aug 14, 2026
Merged

feat(project): scaffold add harness handler#1998
Hweinstock merged 4 commits into
aws:refactorfrom
Hweinstock:feat/add-harness

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Problem

We're missing functionality to add resources to a project. This PR sets up the handler for agentcore project add harness as an example, and scaffolds the remaining work for add.

Solution

  • setup a handler that takes the same flags at the imperative harness create (with a extra few project specific ones). Alternatively considered using different flags from imperative, but this creates an inconsistent UX where project command inputs are similar to api shapes, but slightly different (ex. containerUri is top level, vs nested in json).
  • convert those flags into the spec format expected by the schemas.
  • scaffold an add function for the shared functionality.

Testing / Verification

  • created a project, attempted to add a harness and got the not implemented error.
  • add unit tests for the flag parsing.

Next Steps

  • I want to move the scaffolding of runtime into the add function, then call that from the handler when we're scaffolding. This will make it easier to re-use the logic, and handle harness in the same place.
  • implement the rest of add via json source.

@HweinstockHweinstock changed the title Feat/add harnessfeat(project): scaffold add harness handlerAug 13, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
@codecov-commenter

codecov-commenter commented Aug 13, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.50860% with 2 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.96%. Comparing base (9398c03) to head (d9138cd).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/harness/index.ts99.48%2 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #1998 +/- ##
============================================
+ Coverage 96.91% 96.96% +0.04% 
============================================
Files 356 357 +1 Lines 20136 20531 +395 ============================================
+ Hits 19515 19908 +393 - Misses 621 623 +2 

☔ 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.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 13, 2026
Comment threadsrc/core/project/manager.tsx Outdated
}

// eslint-disable-next-line require-yield
public async *add<TResource extends ProjectResource>(

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

i'm imagining minimal special casing here. We'll want to scaffold files for runtime/harness, then the rest should be simple shared logic to write the schema changes. We will also need some special casing for harness since it links to the config in the scaffolded files.

});

/** Converts the SDK's tagged-union model config into the flat project-schema shape. */
function toModelConfig(modelConfig: HarnessModelConfiguration): HarnessModel {

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we handle all the api shape --> project schema conversion in the handler to keep the shared logic clean.

@Hweinstock
Hweinstock marked this pull request as ready for review August 13, 2026 19:54
])("%s", async (_label, flags) => {
await inProject();
// TODO: update to verify that the project updates.
await expect(run(["add", "harness", ...flags])).rejects.toThrow("not yet implemented");

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.

TODO: MAke sure you fix tests after implementation

}

// eslint-disable-next-line require-yield
public async *addResource<TResource extends ProjectResource>(

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.

nice!

Comment on lines +229 to +238
if ("agentCoreGateway" in c && c.agentCoreGateway) {
return {
type: tool.type,
name: tool.name,
config: {
agentCoreGateway: {
gatewayArn: requireField(c.agentCoreGateway.gatewayArn, "agentCoreGateway.gatewayArn"),
},
},
};

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.

what about when users set outbound auth or JWT here? are these being dropped or are they somewhere where I'm missing them. I am looking at toAuthorizationConfig below and I see those fields.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good catch, looks like we want to wire up the field here

outboundAuth: HarnessGatewayOutboundAuthSchema.optional(),
from https://docs.aws.amazon.com/bedrock-agentcore-control/latest/APIReference/API_HarnessAgentCoreGatewayConfig.html. I'll track this as a follow-up.

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.

thanks!

Comment on lines +357 to +358
async function inBuildableProject(): Promise<string> {
const projectRoot = await inProject("MyAgent");

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.

nice!

@Hweinstock
Hweinstock merged commit 64d601f into aws:refactorAug 14, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the feat/add-harness branch August 14, 2026 19:31
Sign up for freeto 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.

5 participants

@Hweinstock@codecov-commenter@tejaskash@notgitika@jariy17