Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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" + '
fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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('^' + ".*" + ' fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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('^' + ".*" + ' fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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" + ' fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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('^' + ".*" + ' fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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('^' + ".*" + ' fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation
, '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); } })(); })(); fix(create): use harness-first language when project already exists by tejaskash · Pull Request #1594 · aws/agentcore-cli · GitHub
Skip to content

fix(create): use harness-first language when project already exists - #1594

Closed
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message
Closed

fix(create): use harness-first language when project already exists#1594
tejaskash wants to merge 1 commit into
mainfrom
tkashina/harness-first-existing-project-message

Conversation

@tejaskash

Copy link
Copy Markdown
Contributor

Problem

When a user runs agentcore create inside an existing project, the existing-project-error screen tells them only:

Use add agent to create a new agent in the existing project.

As part of the harness GA cutover, the create experience is harness-first. This message should lead with add harness.

Change

One file — src/cli/tui/screens/create/CreateScreen.tsx (the existing-project-error phase). The message now reads:

A project already exists at this location.
Found: <path>
Use add harness to add a harness to the existing project.
Or use add agent to add a code-based agent.

Unconditional — no isPreviewEnabled() branch — matching the post-merge GA state where there's a single CLI and harness is a first-class create option. This is consistent with the harness-first voice already used in the create-type picker in the same screen (Harness (recommended)).

This is the only place this message exists; the CLI flag path (validate.ts) only checks folder-name collisions and has no equivalent message.

Addresses the "harness-first language" action item (#4) in the Harness GA plan.

⚠️ Ordering dependency

add harness is still preview-gated today:

// src/cli/primitives/registry.tsexportconstharnessPrimitive=isPreviewEnabled() ? newHarnessPrimitive() : undefined;

This message is only correct once harness is ungated for all builds — i.e. it must land with or after the __PREVIEW__ / isPreviewEnabled removal work. It should not ship to the latest npm tag before that gating is removed, or a GA build would point users at an add harness command that doesn't exist in that build.

Testing

  • npm run typecheck
  • eslint (pre-commit) ✅ / prettier ✅
  • create.test.ts — 16/16 pass
  • Rendered live in the TUI harness on a preview build (target state): both lines display correctly when running create from inside an existing project.

When a user runs `agentcore create` inside an existing project, the
existing-project-error screen now leads with `add harness` and offers
`add agent` as the code-based alternative, instead of pointing only at
`add agent`.
Part of the harness GA cutover (single CLI, harness as a first-class
create option). Unconditional — no isPreviewEnabled() branch — matching
the post-merge GA state.
@tejaskash
tejaskash requested a review from a teamJune 18, 2026 20:38
@github-actionsgithub-actionsBot added the size/xs PR size: XS label Jun 18, 2026
@agentcore-devx-automationagentcore-devx-automationBot added the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@agentcore-devx-automation

Copy link
Copy Markdown
Contributor

Claude Security Review: no high-confidence findings. (run)

@agentcore-devx-automationagentcore-devx-automationBot removed the claude-security-reviewing Claude Code /security-review in progress label Jun 18, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Package Tarball

aws-agentcore-0.20.1.tgz

How to install

gh release download pr-1594-tarball --repo aws/agentcore-cli --pattern "*.tgz" --dir /tmp/pr-tarball
npm install -g /tmp/pr-tarball/aws-agentcore-0.20.1.tgz

@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines36.92%13501 / 36559
🔵Statements36.21%14356 / 39642
🔵Functions31.49%2310 / 7335
🔵Branches30.69%8917 / 29052
Generated in workflow #3724 for commit 6891012 by the Vitest Coverage Report Action

@agentcore-cli-automationagentcore-cli-automation left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Tiny, focused message change — implementation is correct. My only concern is the ordering dependency you've flagged in the PR description: the PR points users at add harness unconditionally, but on main that command is still preview-gated, and a release from main runs npm run build (not build:preview) so __PREVIEW__ = false and harnessPrimitive ends up undefined (registry.ts:26). A GA user hitting the existing-project-error screen would be told to run a command that isn't registered in their build. Left an inline comment with options.

<Box marginTop={1} flexDirection="column">
<Text>
Use <Text color="cyan">add agent</Text> to create a new agent in the existing project.
Use <Text color="cyan">add harness</Text> to add a harness to the existing project.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The PR description correctly calls out that this is only safe once add harness is ungated, but the change as written doesn't enforce that — the message renders the same regardless of __PREVIEW__. Today on main:

  • src/cli/primitives/registry.ts:26harnessPrimitive = isPreviewEnabled() ? new HarnessPrimitive() : undefined
  • src/cli/cli.ts:131-132 only registers commands for primitives in ALL_PRIMITIVES, so add harness is not registered in GA builds
  • .github/workflows/release.yml runs npm run build (GA, __PREVIEW__ = false) when releasing from main to npm latest

So if this PR merges to main and a latest release happens before harness is ungated, GA users will land on the existing-project-error screen, follow the instruction to run agentcore add harness, and hit error: 'harness' is not a valid subcommand.

A few ways to address:

  1. Gate the message on isPreviewEnabled() — show the new harness-first wording only in preview builds, keep the existing "Use add agent…" wording in GA. When the harness ungating PR lands and removes isPreviewEnabled() from registry.ts, it can also remove this branch and leave just the new message. Most defensive option, makes this PR independently safe to merge.
  2. Hold the PR and merge it as part of (or immediately after) the harness ungating PR, with a release-branch coordination so a latest build never goes out with this message but without add harness registered.
  3. Add a guard at registration time so the message is sourced from whether harnessPrimitive is defined (e.g. import harnessPrimitive and conditionally render the harness line). Same effect as option 1 but keyed off the actual registration rather than the build flag.

Option 1 or 3 would let this land independently of release sequencing.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Jun 18, 2026
@notgitika
notgitika deleted the tkashina/harness-first-existing-project-message branch July 15, 2026 22:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xsPR size: XS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@tejaskash@agentcore-cli-automation