feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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('^' + ".*" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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('^' + ".*" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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('^' + ".*" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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('^' + ".*" + '
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws
, '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); } })(); })();
Skip to content

feat(project): scaffold add runtime handler - #2035

Merged
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime
Aug 21, 2026
Merged

feat(project): scaffold add runtime handler#2035
Hweinstock merged 17 commits into
aws:refactorfrom
Hweinstock:refactor-add-runtime

Conversation

@Hweinstock

@HweinstockHweinstock commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Problem

add runtime is missing.

Solution

  • add support for project add runtime mostly mirroring the schema shapes.
  • support two modes template and byo (import OOS here). We then use this input schema to scaffold the project, and resolve the config that goes into agentcore.json (to be implemented).
  • new template flag describes templates like strands-python, which can be adjusted with flags (ex. --build Container, or --protocol mcp, with defaults for each template. This will keep us flexible to support more templates in the future.

Testing

  • added unit tests for handler parsing, with implementation details to be filled in.

@github-actionsgithub-actionsBot added the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@codecov-commenter

codecov-commenter commented Aug 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 99.64286% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 97.15%. Comparing base (63ed69c) to head (9811509).
⚠️ Report is 1 commits behind head on refactor.

Files with missing linesPatch %Lines
src/handlers/project/add/runtime/index.ts99.52%1 Missing ⚠️
Additional details and impacted files
@@ Coverage Diff @@## refactor #2035 +/- ##
============================================
+ Coverage 97.11% 97.15% +0.04% 
============================================
Files 384 386 +2 Lines 22711 22984 +273 ============================================
+ Hits 22055 22330 +275 + Misses 656 654 -2 

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

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

@github-actionsgithub-actionsBot removed the agentcore-harness-reviewing AgentCore Harness review in progress label Aug 19, 2026
@HweinstockHweinstock changed the title feat(project): scaffold add runtime handler (2)feat(project): scaffold add runtime handlerAug 19, 2026
@Hweinstock
Hweinstock marked this pull request as ready for review August 19, 2026 18:50
flag("entrypoint", "entrypoint file, e.g. main.py:handler (BYO only)", z.string().optional()),
flag("protocol", "server protocol: HTTP, MCP, A2A, AGUI", ProtocolModeSchema.optional()),
flag(
"api-key",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We should mark this as sensitive

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

good call!

`--${templateOnlyFlags[0]} is only available on the template path (--template)`,
);

const inputEnvironmentVariables = parseJsonFlag<Record<string, string>>(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Might be worth changing this to parseJsonFlagWithSchema, and passing in z.record(EnvVarNameSchema, z.string()). That way we aren't accepting null, 0, etc. into env vars

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

I believe this should get validated on line 209 below, since we borrow the env var shape from the existing schema.

]);
export type RuntimeMemoryConfig = z.input<typeof runtimeMemoryConfigSchema>;

const RuntimeInfraConfigSchema = z.object({

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

qq: I see ProjectRuntimeSchema has a bunch of superRefines validating/invalidating flags that need to be used in combination (etc. ensures VPC always has a network config). Is that something we'll account for in the implementation PR or do we need those here?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

we should still surface these errors to the customer since we validate the schema before write, but this made me realize a small bug where this wouldn't rollback the scaffolded files. Fixing that here.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Nice catch on the rollback. With that fix I have no concerns about the validation happening later in the chain

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

OOS but a suggestion that we should try to adopt across the board. Can we divide flags into "basic" and "advanced" so that it is decluttered for the user to see when they type in agentcore project add runtime --help

here is how vercel does it:

Image

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

this is interesting!

tags: parseTags(flags["tags"]),
};

const runtimeInput = isTemplate

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

it looks like --build is accepted for templates but never added to runtimeInput, and the template schema strips it as well.

This means --build Container is silently ignored. Could we include build in the template config?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

yeah good catch. I was initially thinking build would go in here, but the existing asset templates don't actually leverage it and instead have separate templates for build.

I'm working on the template doc now, so this behavior will likely change. I'm making a note to come back to this when we implement the handler to make sure its consistent.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

that sounds good to me! thanks

@jariy17jariy17 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Its good, the nits could be a follow up pr.

RuntimeResourceConfigSchema,
} from "./types";

export const createAddRuntimeHandler = (config: AddProjectResourceConfig) =>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

I like this idea

const entrypoint = flags.entrypoint ?? "main.py";

const source = new SourceResolver({ stdin: config.io.stdin });
const apiKey = await source.resolveText("api-key", flags["api-key"]);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

After looking at Tejas's PR, we shouldn't allow inline secrets. I asked Tejas to shift this helper functino into SourceResolver.

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

It looks like there is some inconsistency here since runtime does allow this:

constbearerToken=awaitresolver.resolveText("bearer-token",sources.bearerToken);
.

I'm going to merge to avoid conflicts, and make a follow-up task to align on consistent behavior here.

@Hweinstock
Hweinstock merged commit b566b33 into aws:refactorAug 21, 2026
8 of 16 checks passed
@Hweinstock
Hweinstock deleted the refactor-add-runtime branch August 21, 2026 19:58
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Hweinstock@codecov-commenter@notgitika@jariy17@nborges-aws