fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@notgitika@agentcore-cli-automation@jariy17@padmak30
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n 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;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@notgitika@agentcore-cli-automation@jariy17@padmak30
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

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

fix: make configBundles, abTests, httpGateways optional in schema - #1073

Merged
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields
Apr 30, 2026
Merged

fix: make configBundles, abTests, httpGateways optional in schema#1073
notgitika merged 1 commit into
mainfrom
fix/optional-evo-schema-fields

Conversation

@notgitika

Copy link
Copy Markdown
Contributor

Summary

Change configBundles, abTests, and httpGateways from .default([]) to .optional() in the AgentCoreProjectSpec schema. This prevents empty preview-feature arrays from appearing in agentcore.json for users who haven't opted into those features.

All access sites updated with ?? [] for iteration or ??= for initialization before .push().

Test plan

  • npm run typecheck passes (zero errors)
  • Pre-commit hooks pass (eslint, prettier, secretlint)
  • agentcore create does not write configBundles/abTests/httpGateways to agentcore.json
  • agentcore add config-bundle writes configBundles to agentcore.json
  • Existing projects with these fields still work

…a fields
- Preflight: remove config bundle type patching entirely — the CDK
schema does not have a type field, so the patch was dead code
- Teardown: delegate to deleteOrphanedABTests and deleteOrphanedHttpGateways
instead of raw API calls — reuses stop/poll/delete/role-cleanup logic.
Correct ordering: AB tests first (they create rules on gateways),
then gateways, then config bundles.
- Schema: change configBundles, abTests, httpGateways from .default([])
to .optional() so they don't appear in agentcore.json unless the user
opts into those preview features. All access sites updated with ?? []
or ??= guards.
Closes#1070
@notgitika
notgitika requested a review from a teamApril 30, 2026 23:44
@github-actionsgithub-actionsBot added size/m PR size: M agentcore-harness-reviewing AgentCore Harness review in progress labels Apr 30, 2026
@notgitika
notgitika merged commit 839b32b into mainApr 30, 2026
25 checks passed
@notgitika
notgitika deleted the fix/optional-evo-schema-fields branch April 30, 2026 23:48
@github-actions

Copy link
Copy Markdown
Contributor

Coverage Report

StatusCategoryPercentageCovered / Total
🔵Lines42.9%8938 / 20832
🔵Statements42.16%9484 / 22490
🔵Functions39.71%1540 / 3878
🔵Branches39.84%5772 / 14486
Generated in workflow #2255 for commit fb9622c by the Vitest Coverage Report Action

@agentcore-cli-automation

Copy link
Copy Markdown

The stated goal of this PR — "agentcore create does not write configBundles/abTests/httpGateways to agentcore.json" — is not actually achieved by the current changes. The schema was updated to make these fields optional, but several places that produce a fresh project spec still hardcode them as empty arrays, so they will continue to appear in agentcore.json for newly-created projects:

  1. src/cli/project.tscreateDefaultProjectSpec() (lines 21–23) returns configBundles: [], abTests: [], httpGateways: []. This is the spec used by agentcore create (both the TUI flow in useCreateFlow.ts and the non-interactive command in commands/create/action.ts), and also by the remove flow in useRemoveFlow.ts when resetting a project.

  2. src/cli/operations/agent/generate/write-agent-to-project.ts (lines 75–77) — the "create new project" branch of writeAgentToProject also hardcodes these empty arrays.

Since writeProjectSpec runs the data through safeParse and then JSON.stringify, any [] present in the input object is preserved on write — optional-in-schema only strips a field when it is undefined, not when it is []. Result: agentcore create will still write these fields.

To actually achieve the PR goal, drop these three keys from both createDefaultProjectSpec and the new-project branch in write-agent-to-project.ts (or explicitly set them to undefined — but omitting them is cleaner).

It would also be worth adding a test that asserts agentcore.json after agentcore create does not contain these keys, since the unchecked item in the PR's test plan ("agentcore create does not write configBundles/abTests/httpGateways to agentcore.json") is exactly the regression this PR is supposed to prevent.

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Apr 30, 2026
notgitika added a commit that referenced this pull request May 1, 2026
… write (#1074)
The .optional() change from #1073 breaks Zod JSON Schema generation
("Undefined cannot be represented in JSON Schema"). Revert to
.default([]) so schema generation and parsing work, but strip empty
configBundles/abTests/httpGateways in writeProjectSpec before writing
to disk so preview features don't pollute agentcore.json.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/mPR size: M

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@notgitika@agentcore-cli-automation@jariy17@padmak30