@codedrifters/configulator 0.0.158 → 0.0.159

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.d.mts CHANGED
@@ -213,6 +213,19 @@ interface AgentSkill {
213
213
  /**
214
214
  * Platform-specific overrides for a sub-agent definition.
215
215
  */
216
+ /**
217
+ * Copilot handoff definition for sub-agent delegation.
218
+ */
219
+ interface CopilotHandoff {
220
+ /** Display label for the handoff action. */
221
+ readonly label: string;
222
+ /** Target agent name. */
223
+ readonly agent: string;
224
+ /** Optional prompt to pass to the target agent. */
225
+ readonly prompt?: string;
226
+ /** Whether to auto-send the handoff without user confirmation. */
227
+ readonly send?: boolean;
228
+ }
216
229
  interface AgentSubAgentPlatformOverrides {
217
230
  /** Claude Code-specific overrides */
218
231
  readonly claude?: {
@@ -220,8 +233,12 @@ interface AgentSubAgentPlatformOverrides {
220
233
  readonly permissionMode?: string;
221
234
  /** Run in isolated git worktree */
222
235
  readonly isolation?: string;
223
- /** Reasoning effort level */
236
+ /** Run as a background task */
237
+ readonly background?: boolean;
238
+ /** Reasoning effort level (Opus): low, medium, high, max */
224
239
  readonly effort?: string;
240
+ /** Persistent memory scope: user, project, local */
241
+ readonly memory?: string;
225
242
  /** Exclude this sub-agent from Claude Code output entirely */
226
243
  readonly exclude?: boolean;
227
244
  };
@@ -236,11 +253,23 @@ interface AgentSubAgentPlatformOverrides {
236
253
  };
237
254
  /** Codex-specific overrides (future) */
238
255
  readonly codex?: {
256
+ /** Sandbox mode: read-only or full */
257
+ readonly sandboxMode?: string;
258
+ /** Model reasoning effort */
259
+ readonly modelReasoningEffort?: string;
239
260
  /** Exclude this sub-agent from Codex output entirely */
240
261
  readonly exclude?: boolean;
241
262
  };
242
263
  /** Copilot-specific overrides (future) */
243
264
  readonly copilot?: {
265
+ /** Target environment: vscode or github-copilot */
266
+ readonly target?: string;
267
+ /** Whether the user can invoke this sub-agent directly */
268
+ readonly userInvocable?: boolean;
269
+ /** Prevent auto-invocation of this sub-agent */
270
+ readonly disableModelInvocation?: boolean;
271
+ /** Handoff definitions for agent-to-agent delegation */
272
+ readonly handoffs?: ReadonlyArray<CopilotHandoff>;
244
273
  /** Exclude this sub-agent from Copilot output entirely */
245
274
  readonly exclude?: boolean;
246
275
  };
@@ -273,8 +302,28 @@ interface AgentSubAgent {
273
302
  * @example ['Read', 'Glob', 'Grep']
274
303
  */
275
304
  readonly tools?: ReadonlyArray<string>;
305
+ /**
306
+ * Tool denylist. Applied before the allowlist.
307
+ * @example ['Bash', 'Write']
308
+ */
309
+ readonly disallowedTools?: ReadonlyArray<string>;
276
310
  /** Maximum agentic turns before the sub-agent stops. */
277
311
  readonly maxTurns?: number;
312
+ /**
313
+ * Skills to preload for this sub-agent.
314
+ * @example ['commit', 'review-pr']
315
+ */
316
+ readonly skills?: ReadonlyArray<string>;
317
+ /**
318
+ * MCP servers available to this sub-agent.
319
+ * Rendered to the platform-specific sub-agent config.
320
+ */
321
+ readonly mcpServers?: Readonly<Record<string, McpServerConfig>>;
322
+ /**
323
+ * Sub-agents this agent can invoke/delegate to.
324
+ * @example ['test-writer', 'code-reviewer']
325
+ */
326
+ readonly canDelegateToAgents?: ReadonlyArray<string>;
278
327
  /** Optional per-platform overrides for this sub-agent. */
279
328
  readonly platforms?: AgentSubAgentPlatformOverrides;
280
329
  }
@@ -294,8 +343,21 @@ interface McpServerConfig {
294
343
  readonly args?: ReadonlyArray<string>;
295
344
  /** URL for HTTP/SSE remote servers. */
296
345
  readonly url?: string;
346
+ /** HTTP headers for HTTP/SSE connections. */
347
+ readonly headers?: Readonly<Record<string, string>>;
297
348
  /** Environment variables for the server process. */
298
349
  readonly env?: Readonly<Record<string, string>>;
350
+ /**
351
+ * Tool allowlist — only these tools from the server will be available.
352
+ * @example ['read_file', 'search']
353
+ */
354
+ readonly enabledTools?: ReadonlyArray<string>;
355
+ /**
356
+ * Tool denylist — these tools from the server will be blocked.
357
+ * Applied before enabledTools.
358
+ * @example ['delete_file', 'execute']
359
+ */
360
+ readonly disabledTools?: ReadonlyArray<string>;
299
361
  }
300
362
 
301
363
  /*******************************************************************************
@@ -361,22 +423,58 @@ interface CursorHooksConfig {
361
423
  * Fires before a shell command executes. Blocking — can deny execution.
362
424
  */
363
425
  readonly beforeShellExecution?: ReadonlyArray<CursorHookAction>;
426
+ /**
427
+ * Fires after a shell command executes. Non-blocking (informational).
428
+ */
429
+ readonly afterShellExecution?: ReadonlyArray<CursorHookAction>;
364
430
  /**
365
431
  * Fires before an MCP tool is invoked. Blocking — can deny execution.
366
432
  */
367
433
  readonly beforeMCPExecution?: ReadonlyArray<CursorHookAction>;
434
+ /**
435
+ * Fires after an MCP tool is invoked. Non-blocking (informational).
436
+ */
437
+ readonly afterMCPExecution?: ReadonlyArray<CursorHookAction>;
368
438
  /**
369
439
  * Fires before a file is read by the AI. Blocking — can rewrite content.
370
440
  */
371
441
  readonly beforeReadFile?: ReadonlyArray<CursorHookAction>;
442
+ /**
443
+ * Fires before a tab file is read. Blocking — can rewrite content.
444
+ */
445
+ readonly beforeTabFileRead?: ReadonlyArray<CursorHookAction>;
372
446
  /**
373
447
  * Fires after a file is edited. Non-blocking (informational).
374
448
  */
375
449
  readonly afterFileEdit?: ReadonlyArray<CursorHookAction>;
450
+ /**
451
+ * Fires after a tab file is edited. Non-blocking (informational).
452
+ */
453
+ readonly afterTabFileEdit?: ReadonlyArray<CursorHookAction>;
376
454
  /**
377
455
  * Fires when the agent stops. Non-blocking (informational).
378
456
  */
379
457
  readonly stop?: ReadonlyArray<CursorHookAction>;
458
+ /**
459
+ * Fires when a session starts. Non-blocking (informational).
460
+ */
461
+ readonly sessionStart?: ReadonlyArray<CursorHookAction>;
462
+ /**
463
+ * Fires when a session ends. Non-blocking (informational).
464
+ */
465
+ readonly sessionEnd?: ReadonlyArray<CursorHookAction>;
466
+ /**
467
+ * Fires before context compaction. Non-blocking (informational).
468
+ */
469
+ readonly preCompact?: ReadonlyArray<CursorHookAction>;
470
+ /**
471
+ * Fires after the agent produces a response. Non-blocking (informational).
472
+ */
473
+ readonly afterAgentResponse?: ReadonlyArray<CursorHookAction>;
474
+ /**
475
+ * Fires after the agent produces a thought. Non-blocking (informational).
476
+ */
477
+ readonly afterAgentThought?: ReadonlyArray<CursorHookAction>;
380
478
  }
381
479
  /**
382
480
  * Cursor-specific configuration options.
@@ -556,6 +654,8 @@ interface ClaudeSettingsConfig {
556
654
  readonly mcpServers?: Readonly<Record<string, McpServerConfig>>;
557
655
  /** MCP servers to explicitly allow. */
558
656
  readonly allowedMcpServers?: ReadonlyArray<string>;
657
+ /** MCP servers to explicitly deny. */
658
+ readonly deniedMcpServers?: ReadonlyArray<string>;
559
659
  /** Environment variables passed to Claude's shell. */
560
660
  readonly env?: Readonly<Record<string, string>>;
561
661
  /** Sandbox configuration. */
@@ -573,6 +673,16 @@ interface ClaudeSettingsConfig {
573
673
  * @example ['**\/.env', '**\/*.key', '**\/secrets/**']
574
674
  */
575
675
  readonly excludeSensitivePatterns?: ReadonlyArray<string>;
676
+ /**
677
+ * Default model ID for the project.
678
+ * @example 'claude-opus-4-6'
679
+ */
680
+ readonly model?: string;
681
+ /**
682
+ * Default reasoning effort level.
683
+ * @example 'high'
684
+ */
685
+ readonly effortLevel?: string;
576
686
  /** Attribution configuration for commits and PRs created by Claude. */
577
687
  readonly attribution?: {
578
688
  /** Attribution mode: 'inherit', 'always', 'never'. */
@@ -583,6 +693,16 @@ interface ClaudeSettingsConfig {
583
693
  readonly email?: string;
584
694
  };
585
695
  };
696
+ /**
697
+ * Glob patterns to exclude from CLAUDE.md file search.
698
+ * @example ['vendor/**', 'generated/**']
699
+ */
700
+ readonly claudeMdExcludes?: ReadonlyArray<string>;
701
+ /**
702
+ * Whether to respect .gitignore when indexing files.
703
+ * @default true
704
+ */
705
+ readonly respectGitignore?: boolean;
586
706
  }
587
707
  /*******************************************************************************
588
708
  *
@@ -2659,4 +2779,4 @@ declare const COMPLETE_JOB_ID = "complete";
2659
2779
  */
2660
2780
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2661
2781
 
2662
- export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, type AwsAccount, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, type McpServerConfig, type McpTransport, type MergeMethod, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
2782
+ export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, type AgentConfigOptions, type AgentModel, type AgentPlatform, type AgentPlatformOverrides, type AgentRule, type AgentRuleBundle, type AgentRuleScope, type AgentSkill, type AgentSubAgent, type AgentSubAgentPlatformOverrides, type ApproveMergeUpgradeOptions, type AwsAccount, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, type AwsDeploymentTargetOptions, type AwsLocalDeploymentConfig, type AwsOrganization, type AwsRegion, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, type CiDeploymentConfig, type ClassTypeOptions, type ClaudeAutoModeConfig, type ClaudeHookAction, type ClaudeHookEntry, type ClaudeHooksConfig, type ClaudePermissionsConfig, type ClaudeRuleTarget, type ClaudeSandboxConfig, type ClaudeSettingsConfig, type CopilotHandoff, type CursorHookAction, type CursorHooksConfig, type CursorSettingsConfig, type DeployWorkflowOptions, type DeploymentMetadata, type GitBranch, type GitHubBoardMetadata, type GitHubProjectMetadata, type GitHubSprintMetadata, type IDependencyResolver, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, type McpServerConfig, type McpTransport, type MergeMethod, MonorepoProject, type MonorepoProjectOptions, type OrganizationMetadata, PROD_DEPLOY_NAME, PnpmWorkspace, type PnpmWorkspaceOptions, ProjectMetadata, type ProjectMetadataOptions, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, type RemoteCacheOptions, type RepositoryMetadata, ResetTask, type ResetTaskOptions, type ResolvedProjectMetadata, type SlackMetadata, type TemplateResolveResult, TestRunner, TurboRepo, type TurboRepoOptions, TurboRepoTask, type TurboRepoTaskOptions, TypeScriptConfig, TypeScriptProject, type TypeScriptProjectOptions, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, type VersionKey, Vitest, type VitestConfigOptions, type VitestOptions, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
package/lib/index.d.ts CHANGED
@@ -262,6 +262,19 @@ interface AgentSkill {
262
262
  /**
263
263
  * Platform-specific overrides for a sub-agent definition.
264
264
  */
265
+ /**
266
+ * Copilot handoff definition for sub-agent delegation.
267
+ */
268
+ interface CopilotHandoff {
269
+ /** Display label for the handoff action. */
270
+ readonly label: string;
271
+ /** Target agent name. */
272
+ readonly agent: string;
273
+ /** Optional prompt to pass to the target agent. */
274
+ readonly prompt?: string;
275
+ /** Whether to auto-send the handoff without user confirmation. */
276
+ readonly send?: boolean;
277
+ }
265
278
  interface AgentSubAgentPlatformOverrides {
266
279
  /** Claude Code-specific overrides */
267
280
  readonly claude?: {
@@ -269,8 +282,12 @@ interface AgentSubAgentPlatformOverrides {
269
282
  readonly permissionMode?: string;
270
283
  /** Run in isolated git worktree */
271
284
  readonly isolation?: string;
272
- /** Reasoning effort level */
285
+ /** Run as a background task */
286
+ readonly background?: boolean;
287
+ /** Reasoning effort level (Opus): low, medium, high, max */
273
288
  readonly effort?: string;
289
+ /** Persistent memory scope: user, project, local */
290
+ readonly memory?: string;
274
291
  /** Exclude this sub-agent from Claude Code output entirely */
275
292
  readonly exclude?: boolean;
276
293
  };
@@ -285,11 +302,23 @@ interface AgentSubAgentPlatformOverrides {
285
302
  };
286
303
  /** Codex-specific overrides (future) */
287
304
  readonly codex?: {
305
+ /** Sandbox mode: read-only or full */
306
+ readonly sandboxMode?: string;
307
+ /** Model reasoning effort */
308
+ readonly modelReasoningEffort?: string;
288
309
  /** Exclude this sub-agent from Codex output entirely */
289
310
  readonly exclude?: boolean;
290
311
  };
291
312
  /** Copilot-specific overrides (future) */
292
313
  readonly copilot?: {
314
+ /** Target environment: vscode or github-copilot */
315
+ readonly target?: string;
316
+ /** Whether the user can invoke this sub-agent directly */
317
+ readonly userInvocable?: boolean;
318
+ /** Prevent auto-invocation of this sub-agent */
319
+ readonly disableModelInvocation?: boolean;
320
+ /** Handoff definitions for agent-to-agent delegation */
321
+ readonly handoffs?: ReadonlyArray<CopilotHandoff>;
293
322
  /** Exclude this sub-agent from Copilot output entirely */
294
323
  readonly exclude?: boolean;
295
324
  };
@@ -322,8 +351,28 @@ interface AgentSubAgent {
322
351
  * @example ['Read', 'Glob', 'Grep']
323
352
  */
324
353
  readonly tools?: ReadonlyArray<string>;
354
+ /**
355
+ * Tool denylist. Applied before the allowlist.
356
+ * @example ['Bash', 'Write']
357
+ */
358
+ readonly disallowedTools?: ReadonlyArray<string>;
325
359
  /** Maximum agentic turns before the sub-agent stops. */
326
360
  readonly maxTurns?: number;
361
+ /**
362
+ * Skills to preload for this sub-agent.
363
+ * @example ['commit', 'review-pr']
364
+ */
365
+ readonly skills?: ReadonlyArray<string>;
366
+ /**
367
+ * MCP servers available to this sub-agent.
368
+ * Rendered to the platform-specific sub-agent config.
369
+ */
370
+ readonly mcpServers?: Readonly<Record<string, McpServerConfig>>;
371
+ /**
372
+ * Sub-agents this agent can invoke/delegate to.
373
+ * @example ['test-writer', 'code-reviewer']
374
+ */
375
+ readonly canDelegateToAgents?: ReadonlyArray<string>;
327
376
  /** Optional per-platform overrides for this sub-agent. */
328
377
  readonly platforms?: AgentSubAgentPlatformOverrides;
329
378
  }
@@ -343,8 +392,21 @@ interface McpServerConfig {
343
392
  readonly args?: ReadonlyArray<string>;
344
393
  /** URL for HTTP/SSE remote servers. */
345
394
  readonly url?: string;
395
+ /** HTTP headers for HTTP/SSE connections. */
396
+ readonly headers?: Readonly<Record<string, string>>;
346
397
  /** Environment variables for the server process. */
347
398
  readonly env?: Readonly<Record<string, string>>;
399
+ /**
400
+ * Tool allowlist — only these tools from the server will be available.
401
+ * @example ['read_file', 'search']
402
+ */
403
+ readonly enabledTools?: ReadonlyArray<string>;
404
+ /**
405
+ * Tool denylist — these tools from the server will be blocked.
406
+ * Applied before enabledTools.
407
+ * @example ['delete_file', 'execute']
408
+ */
409
+ readonly disabledTools?: ReadonlyArray<string>;
348
410
  }
349
411
 
350
412
  /*******************************************************************************
@@ -410,22 +472,58 @@ interface CursorHooksConfig {
410
472
  * Fires before a shell command executes. Blocking — can deny execution.
411
473
  */
412
474
  readonly beforeShellExecution?: ReadonlyArray<CursorHookAction>;
475
+ /**
476
+ * Fires after a shell command executes. Non-blocking (informational).
477
+ */
478
+ readonly afterShellExecution?: ReadonlyArray<CursorHookAction>;
413
479
  /**
414
480
  * Fires before an MCP tool is invoked. Blocking — can deny execution.
415
481
  */
416
482
  readonly beforeMCPExecution?: ReadonlyArray<CursorHookAction>;
483
+ /**
484
+ * Fires after an MCP tool is invoked. Non-blocking (informational).
485
+ */
486
+ readonly afterMCPExecution?: ReadonlyArray<CursorHookAction>;
417
487
  /**
418
488
  * Fires before a file is read by the AI. Blocking — can rewrite content.
419
489
  */
420
490
  readonly beforeReadFile?: ReadonlyArray<CursorHookAction>;
491
+ /**
492
+ * Fires before a tab file is read. Blocking — can rewrite content.
493
+ */
494
+ readonly beforeTabFileRead?: ReadonlyArray<CursorHookAction>;
421
495
  /**
422
496
  * Fires after a file is edited. Non-blocking (informational).
423
497
  */
424
498
  readonly afterFileEdit?: ReadonlyArray<CursorHookAction>;
499
+ /**
500
+ * Fires after a tab file is edited. Non-blocking (informational).
501
+ */
502
+ readonly afterTabFileEdit?: ReadonlyArray<CursorHookAction>;
425
503
  /**
426
504
  * Fires when the agent stops. Non-blocking (informational).
427
505
  */
428
506
  readonly stop?: ReadonlyArray<CursorHookAction>;
507
+ /**
508
+ * Fires when a session starts. Non-blocking (informational).
509
+ */
510
+ readonly sessionStart?: ReadonlyArray<CursorHookAction>;
511
+ /**
512
+ * Fires when a session ends. Non-blocking (informational).
513
+ */
514
+ readonly sessionEnd?: ReadonlyArray<CursorHookAction>;
515
+ /**
516
+ * Fires before context compaction. Non-blocking (informational).
517
+ */
518
+ readonly preCompact?: ReadonlyArray<CursorHookAction>;
519
+ /**
520
+ * Fires after the agent produces a response. Non-blocking (informational).
521
+ */
522
+ readonly afterAgentResponse?: ReadonlyArray<CursorHookAction>;
523
+ /**
524
+ * Fires after the agent produces a thought. Non-blocking (informational).
525
+ */
526
+ readonly afterAgentThought?: ReadonlyArray<CursorHookAction>;
429
527
  }
430
528
  /**
431
529
  * Cursor-specific configuration options.
@@ -605,6 +703,8 @@ interface ClaudeSettingsConfig {
605
703
  readonly mcpServers?: Readonly<Record<string, McpServerConfig>>;
606
704
  /** MCP servers to explicitly allow. */
607
705
  readonly allowedMcpServers?: ReadonlyArray<string>;
706
+ /** MCP servers to explicitly deny. */
707
+ readonly deniedMcpServers?: ReadonlyArray<string>;
608
708
  /** Environment variables passed to Claude's shell. */
609
709
  readonly env?: Readonly<Record<string, string>>;
610
710
  /** Sandbox configuration. */
@@ -622,6 +722,16 @@ interface ClaudeSettingsConfig {
622
722
  * @example ['**\/.env', '**\/*.key', '**\/secrets/**']
623
723
  */
624
724
  readonly excludeSensitivePatterns?: ReadonlyArray<string>;
725
+ /**
726
+ * Default model ID for the project.
727
+ * @example 'claude-opus-4-6'
728
+ */
729
+ readonly model?: string;
730
+ /**
731
+ * Default reasoning effort level.
732
+ * @example 'high'
733
+ */
734
+ readonly effortLevel?: string;
625
735
  /** Attribution configuration for commits and PRs created by Claude. */
626
736
  readonly attribution?: {
627
737
  /** Attribution mode: 'inherit', 'always', 'never'. */
@@ -632,6 +742,16 @@ interface ClaudeSettingsConfig {
632
742
  readonly email?: string;
633
743
  };
634
744
  };
745
+ /**
746
+ * Glob patterns to exclude from CLAUDE.md file search.
747
+ * @example ['vendor/**', 'generated/**']
748
+ */
749
+ readonly claudeMdExcludes?: ReadonlyArray<string>;
750
+ /**
751
+ * Whether to respect .gitignore when indexing files.
752
+ * @default true
753
+ */
754
+ readonly respectGitignore?: boolean;
635
755
  }
636
756
  /*******************************************************************************
637
757
  *
@@ -2709,4 +2829,4 @@ declare const COMPLETE_JOB_ID = "complete";
2709
2829
  declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
2710
2830
 
2711
2831
  export { AGENT_MODEL, AGENT_PLATFORM, AGENT_RULE_SCOPE, AgentConfig, AwsDeployWorkflow, AwsDeploymentConfig, AwsDeploymentTarget, BUILT_IN_BUNDLES, CLAUDE_RULE_TARGET, COMPLETE_JOB_ID, JsiiFaker, MCP_TRANSPORT, MERGE_METHODS, MIMIMUM_RELEASE_AGE, MonorepoProject, PROD_DEPLOY_NAME, PnpmWorkspace, ProjectMetadata, ROOT_CI_TASK_NAME, ROOT_TURBO_TASK_NAME, ResetTask, TestRunner, TurboRepo, TurboRepoTask, TypeScriptConfig, TypeScriptProject, VERSION, VERSION_KEYS_SKIP, VERSION_NPM_PACKAGES, VSCodeConfig, Vitest, addApproveMergeUpgradeWorkflow, addBuildCompleteJob, awsCdkBundle, baseBundle, getLatestEligibleVersion, jestBundle, pnpmBundle, projenBundle, resolveTemplateVariables, turborepoBundle, typescriptBundle, vitestBundle };
2712
- export type { AgentConfigOptions, AgentModel, AgentPlatform, AgentPlatformOverrides, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AwsAccount, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, McpServerConfig, McpTransport, MergeMethod, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
2832
+ export type { AgentConfigOptions, AgentModel, AgentPlatform, AgentPlatformOverrides, AgentRule, AgentRuleBundle, AgentRuleScope, AgentSkill, AgentSubAgent, AgentSubAgentPlatformOverrides, ApproveMergeUpgradeOptions, AwsAccount, AwsDeploymentTargetOptions, AwsLocalDeploymentConfig, AwsOrganization, AwsRegion, CiDeploymentConfig, ClassTypeOptions, ClaudeAutoModeConfig, ClaudeHookAction, ClaudeHookEntry, ClaudeHooksConfig, ClaudePermissionsConfig, ClaudeRuleTarget, ClaudeSandboxConfig, ClaudeSettingsConfig, CopilotHandoff, CursorHookAction, CursorHooksConfig, CursorSettingsConfig, DeployWorkflowOptions, DeploymentMetadata, GitBranch, GitHubBoardMetadata, GitHubProjectMetadata, GitHubSprintMetadata, IDependencyResolver, McpServerConfig, McpTransport, MergeMethod, MonorepoProjectOptions, OrganizationMetadata, PnpmWorkspaceOptions, ProjectMetadataOptions, RemoteCacheOptions, RepositoryMetadata, ResetTaskOptions, ResolvedProjectMetadata, SlackMetadata, TemplateResolveResult, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
package/lib/index.js CHANGED
@@ -1569,21 +1569,11 @@ var ClaudeRenderer = class _ClaudeRenderer {
1569
1569
  }
1570
1570
  const allMcpServers = {};
1571
1571
  for (const [name, config] of Object.entries(mcpServers)) {
1572
- const server = {};
1573
- if (config.command) server.command = config.command;
1574
- if (config.args) server.args = [...config.args];
1575
- if (config.url) server.url = config.url;
1576
- if (config.env) server.env = { ...config.env };
1577
- allMcpServers[name] = server;
1572
+ allMcpServers[name] = _ClaudeRenderer.buildMcpServerObj(config);
1578
1573
  }
1579
1574
  if (settings?.mcpServers) {
1580
1575
  for (const [name, config] of Object.entries(settings.mcpServers)) {
1581
- const server = {};
1582
- if (config.command) server.command = config.command;
1583
- if (config.args) server.args = [...config.args];
1584
- if (config.url) server.url = config.url;
1585
- if (config.env) server.env = { ...config.env };
1586
- allMcpServers[name] = server;
1576
+ allMcpServers[name] = _ClaudeRenderer.buildMcpServerObj(config);
1587
1577
  }
1588
1578
  }
1589
1579
  if (Object.keys(allMcpServers).length > 0) {
@@ -1594,6 +1584,10 @@ var ClaudeRenderer = class _ClaudeRenderer {
1594
1584
  obj.allowedMcpServers = [...settings.allowedMcpServers];
1595
1585
  hasContent = true;
1596
1586
  }
1587
+ if (settings?.deniedMcpServers?.length) {
1588
+ obj.deniedMcpServers = [...settings.deniedMcpServers];
1589
+ hasContent = true;
1590
+ }
1597
1591
  if (settings?.env && Object.keys(settings.env).length > 0) {
1598
1592
  obj.env = { ...settings.env };
1599
1593
  hasContent = true;
@@ -1634,10 +1628,26 @@ var ClaudeRenderer = class _ClaudeRenderer {
1634
1628
  obj.excludeSensitivePatterns = [...settings.excludeSensitivePatterns];
1635
1629
  hasContent = true;
1636
1630
  }
1631
+ if (settings?.model) {
1632
+ obj.model = settings.model;
1633
+ hasContent = true;
1634
+ }
1635
+ if (settings?.effortLevel) {
1636
+ obj.effortLevel = settings.effortLevel;
1637
+ hasContent = true;
1638
+ }
1637
1639
  if (settings?.attribution) {
1638
1640
  obj.attribution = settings.attribution;
1639
1641
  hasContent = true;
1640
1642
  }
1643
+ if (settings?.claudeMdExcludes?.length) {
1644
+ obj.claudeMdExcludes = [...settings.claudeMdExcludes];
1645
+ hasContent = true;
1646
+ }
1647
+ if (settings?.respectGitignore !== void 0) {
1648
+ obj.respectGitignore = settings.respectGitignore;
1649
+ hasContent = true;
1650
+ }
1641
1651
  if (!hasContent) return;
1642
1652
  new import_projen6.JsonFile(component, ".claude/settings.json", { obj });
1643
1653
  }
@@ -1746,24 +1756,54 @@ var ClaudeRenderer = class _ClaudeRenderer {
1746
1756
  lines.push(` - "${tool}"`);
1747
1757
  }
1748
1758
  }
1759
+ if (agent.disallowedTools && agent.disallowedTools.length > 0) {
1760
+ lines.push(`disallowedTools:`);
1761
+ for (const tool of agent.disallowedTools) {
1762
+ lines.push(` - "${tool}"`);
1763
+ }
1764
+ }
1749
1765
  if (agent.maxTurns) {
1750
- lines.push(`max_turns: ${agent.maxTurns}`);
1766
+ lines.push(`maxTurns: ${agent.maxTurns}`);
1767
+ }
1768
+ if (agent.skills && agent.skills.length > 0) {
1769
+ lines.push(`skills:`);
1770
+ for (const skill of agent.skills) {
1771
+ lines.push(` - "${skill}"`);
1772
+ }
1751
1773
  }
1752
1774
  if (agent.platforms?.claude?.permissionMode) {
1753
- lines.push(`permission_mode: ${agent.platforms.claude.permissionMode}`);
1775
+ lines.push(`permissionMode: ${agent.platforms.claude.permissionMode}`);
1754
1776
  }
1755
1777
  if (agent.platforms?.claude?.isolation) {
1756
1778
  lines.push(`isolation: ${agent.platforms.claude.isolation}`);
1757
1779
  }
1780
+ if (agent.platforms?.claude?.background) {
1781
+ lines.push(`background: true`);
1782
+ }
1758
1783
  if (agent.platforms?.claude?.effort) {
1759
1784
  lines.push(`effort: ${agent.platforms.claude.effort}`);
1760
1785
  }
1786
+ if (agent.platforms?.claude?.memory) {
1787
+ lines.push(`memory: ${agent.platforms.claude.memory}`);
1788
+ }
1761
1789
  lines.push("---");
1762
1790
  lines.push("");
1763
1791
  lines.push(...agent.prompt.split("\n"));
1764
1792
  new import_textfile2.TextFile(component, `.claude/agents/${agent.name}.md`, { lines });
1765
1793
  }
1766
1794
  }
1795
+ static buildMcpServerObj(config) {
1796
+ const server = {};
1797
+ if (config.transport) server.type = config.transport;
1798
+ if (config.command) server.command = config.command;
1799
+ if (config.args) server.args = [...config.args];
1800
+ if (config.url) server.url = config.url;
1801
+ if (config.headers && Object.keys(config.headers).length > 0) {
1802
+ server.headers = { ...config.headers };
1803
+ }
1804
+ if (config.env) server.env = { ...config.env };
1805
+ return server;
1806
+ }
1767
1807
  /**
1768
1808
  * Determine the default Claude rule target based on rule scope.
1769
1809
  * ALWAYS-scoped rules default to CLAUDE_MD; FILE_PATTERN rules default to SCOPED_FILE.
@@ -1884,9 +1924,13 @@ var CursorRenderer = class _CursorRenderer {
1884
1924
  const servers = obj.mcpServers;
1885
1925
  for (const [name, config] of Object.entries(mcpServers)) {
1886
1926
  const server = {};
1927
+ if (config.transport) server.transport = config.transport;
1887
1928
  if (config.command) server.command = config.command;
1888
1929
  if (config.args) server.args = [...config.args];
1889
1930
  if (config.url) server.url = config.url;
1931
+ if (config.headers && Object.keys(config.headers).length > 0) {
1932
+ server.headers = { ...config.headers };
1933
+ }
1890
1934
  if (config.env) server.env = { ...config.env };
1891
1935
  servers[name] = server;
1892
1936
  }
@@ -1895,38 +1939,14 @@ var CursorRenderer = class _CursorRenderer {
1895
1939
  static renderHooks(component, settings) {
1896
1940
  if (!settings?.hooks) return;
1897
1941
  const hooks = {};
1898
- const {
1899
- beforeSubmitPrompt,
1900
- beforeShellExecution,
1901
- beforeMCPExecution,
1902
- beforeReadFile,
1903
- afterFileEdit,
1904
- stop
1905
- } = settings.hooks;
1906
- if (beforeSubmitPrompt?.length) {
1907
- hooks.beforeSubmitPrompt = beforeSubmitPrompt.map((h) => ({
1908
- command: h.command
1909
- }));
1910
- }
1911
- if (beforeShellExecution?.length) {
1912
- hooks.beforeShellExecution = beforeShellExecution.map((h) => ({
1913
- command: h.command
1914
- }));
1915
- }
1916
- if (beforeMCPExecution?.length) {
1917
- hooks.beforeMCPExecution = beforeMCPExecution.map((h) => ({
1918
- command: h.command
1919
- }));
1920
- }
1921
- if (beforeReadFile?.length) {
1922
- hooks.beforeReadFile = beforeReadFile.map((h) => ({
1923
- command: h.command
1924
- }));
1925
- }
1926
- if (afterFileEdit?.length) {
1927
- hooks.afterFileEdit = afterFileEdit.map((h) => ({ command: h.command }));
1928
- }
1929
- if (stop?.length) hooks.stop = stop.map((h) => ({ command: h.command }));
1942
+ const hookEntries = settings.hooks;
1943
+ for (const [event, actions] of Object.entries(hookEntries)) {
1944
+ if (actions && actions.length > 0) {
1945
+ hooks[event] = actions.map((h) => ({
1946
+ command: h.command
1947
+ }));
1948
+ }
1949
+ }
1930
1950
  if (Object.keys(hooks).length === 0) return;
1931
1951
  new import_projen7.JsonFile(component, ".cursor/hooks.json", {
1932
1952
  obj: { version: 1, hooks }