Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 10 additions & 3 deletions src/cli/commands/create/action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,17 @@ export interface CreateProjectOptions {
name: string;
cwd: string;
skipGit?: boolean;
skipInstall?: boolean;
skipDependencyCheck?: boolean;
onProgress?: ProgressCallback;
}

export async function createProject(options: CreateProjectOptions): Promise<CreateResult> {
const { name, cwd, skipGit, skipDependencyCheck, onProgress } = options;
const { name, cwd, skipGit, skipInstall, skipDependencyCheck, onProgress } = options;

if (skipInstall) {
process.env.AGENTCORE_SKIP_INSTALL = '1';
}
const projectRoot = join(cwd, name);
const configBaseDir = join(projectRoot, CONFIG_DIR);

Expand Down Expand Up @@ -125,6 +130,7 @@ export interface CreateWithAgentOptions {
idleTimeout?: number;
maxLifetime?: number;
skipGit?: boolean;
skipInstall?: boolean;
skipPythonSetup?: boolean;
onProgress?: ProgressCallback;
}
Expand All @@ -147,6 +153,7 @@ export async function createProjectWithAgent(options: CreateWithAgentOptions): P
idleTimeout,
maxLifetime: maxLifetimeOpt,
skipGit,
skipInstall,
skipPythonSetup,
onProgress,
} = options;
Expand All @@ -163,7 +170,7 @@ export async function createProjectWithAgent(options: CreateWithAgentOptions): P
}

// First create the base project (skip dependency check since we already did it)
const projectResult = await createProject({ name, cwd, skipGit, skipDependencyCheck: true, onProgress });
const projectResult = await createProject({ name, cwd, skipGit, skipInstall, skipDependencyCheck: true, onProgress });
if (!projectResult.success) {
// Merge warnings from both checks
const allWarnings = [...depWarnings, ...(projectResult.warnings ?? [])];
Expand Down Expand Up @@ -267,7 +274,7 @@ export async function createProjectWithAgent(options: CreateWithAgentOptions): P
onProgress?.('Add agent to project', 'done');

// Set up Python environment if needed (unless skipped)
if (language === 'Python' && !skipPythonSetup) {
if (language === 'Python' && !skipPythonSetup && !skipInstall) {
onProgress?.('Set up Python environment', 'start');
const agentDir = join(projectRoot, APP_DIR, name);
await setupPythonProject({ projectDir: agentDir });
Expand Down
16 changes: 15 additions & 1 deletion src/cli/commands/create/command.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,13 @@ async function handleCreateCLI(options: CreateOptions): Promise<void> {
const skipAgent = options.agent === false;

const result = skipAgent
? await createProject({ name: options.name!, cwd, skipGit: options.skipGit, onProgress })
? await createProject({
name: options.name!,
cwd,
skipGit: options.skipGit,
skipInstall: options.skipInstall,
onProgress,
})
: await createProjectWithAgent({
name: options.name!,
cwd,
Expand All @@ -140,6 +146,7 @@ async function handleCreateCLI(options: CreateOptions): Promise<void> {
idleTimeout: options.idleTimeout ? Number(options.idleTimeout) : undefined,
maxLifetime: options.maxLifetime ? Number(options.maxLifetime) : undefined,
skipGit: options.skipGit,
skipInstall: options.skipInstall,
skipPythonSetup: options.skipPythonSetup,
onProgress,
});
Expand All @@ -148,6 +155,11 @@ async function handleCreateCLI(options: CreateOptions): Promise<void> {
console.log(JSON.stringify(result));
} else if (result.success) {
printCreateSummary(options.name!, result.agentName, options.language, options.framework);
if (options.skipInstall) {
console.log(
"\nDependency installation was skipped. Run 'npm install' in agentcore/cdk/ and 'uv sync' in your agent directory manually."
);
}
} else {
console.error(result.error);
}
Expand Down Expand Up @@ -190,6 +202,7 @@ export const registerCreate = (program: Command) => {
.option('--output-dir <dir>', 'Output directory (default: current directory) [non-interactive]')
.option('--skip-git', 'Skip git repository initialization [non-interactive]')
.option('--skip-python-setup', 'Skip Python virtual environment setup [non-interactive]')
.option('--skip-install', 'Skip all dependency installation (npm install, uv sync) [non-interactive]')
.option('--dry-run', 'Preview what would be created without making changes [non-interactive]')
.option('--json', 'Output as JSON [non-interactive]')
.action(async options => {
Expand Down Expand Up @@ -217,6 +230,7 @@ export const registerCreate = (program: Command) => {
options.outputDir ??
options.skipGit ??
options.skipPythonSetup ??
options.skipInstall ??
options.dryRun ??
options.json
);
Expand Down
1 change: 1 addition & 0 deletions src/cli/commands/create/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export interface CreateOptions extends VpcOptions {
outputDir?: string;
skipGit?: boolean;
skipPythonSetup?: boolean;
skipInstall?: boolean;
dryRun?: boolean;
json?: boolean;
}
Expand Down
Loading