@codedrifters/configulator 0.0.155 → 0.0.157
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 +330 -1
- package/lib/index.d.ts +331 -2
- package/lib/index.js +360 -41
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +341 -24
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.d.ts
CHANGED
|
@@ -239,6 +239,25 @@ interface AgentSkill {
|
|
|
239
239
|
* @example ['src/api/**\/*.ts']
|
|
240
240
|
*/
|
|
241
241
|
readonly paths?: ReadonlyArray<string>;
|
|
242
|
+
/**
|
|
243
|
+
* Resource directories bundled with the skill (e.g., references/, scripts/, assets/).
|
|
244
|
+
* @example ['references/', 'scripts/']
|
|
245
|
+
*/
|
|
246
|
+
readonly references?: ReadonlyArray<string>;
|
|
247
|
+
/**
|
|
248
|
+
* Context isolation mode. Set to 'fork' to run in an isolated subagent context.
|
|
249
|
+
*/
|
|
250
|
+
readonly context?: string;
|
|
251
|
+
/**
|
|
252
|
+
* Subagent name to delegate to when context is 'fork'.
|
|
253
|
+
* @example 'code-reviewer'
|
|
254
|
+
*/
|
|
255
|
+
readonly agent?: string;
|
|
256
|
+
/**
|
|
257
|
+
* Shell for dynamic context injection via !`command` syntax.
|
|
258
|
+
* @default 'bash'
|
|
259
|
+
*/
|
|
260
|
+
readonly shell?: string;
|
|
242
261
|
}
|
|
243
262
|
/**
|
|
244
263
|
* Platform-specific overrides for a sub-agent definition.
|
|
@@ -732,6 +751,19 @@ declare class AgentConfig extends Component {
|
|
|
732
751
|
private resolveRules;
|
|
733
752
|
private resolveSkills;
|
|
734
753
|
private resolveSubAgents;
|
|
754
|
+
/**
|
|
755
|
+
* Resolves template variables in rule content using project metadata.
|
|
756
|
+
* Emits synthesis warnings for rules with unresolved variables.
|
|
757
|
+
*/
|
|
758
|
+
private resolveTemplates;
|
|
759
|
+
/**
|
|
760
|
+
* Resolves template variables in skill instructions using project metadata.
|
|
761
|
+
*/
|
|
762
|
+
private resolveSkillTemplates;
|
|
763
|
+
/**
|
|
764
|
+
* Resolves template variables in sub-agent prompts using project metadata.
|
|
765
|
+
*/
|
|
766
|
+
private resolveSubAgentTemplates;
|
|
735
767
|
}
|
|
736
768
|
|
|
737
769
|
/**
|
|
@@ -786,6 +818,259 @@ declare const vitestBundle: AgentRuleBundle;
|
|
|
786
818
|
*/
|
|
787
819
|
declare const BUILT_IN_BUNDLES: ReadonlyArray<AgentRuleBundle>;
|
|
788
820
|
|
|
821
|
+
/*******************************************************************************
|
|
822
|
+
*
|
|
823
|
+
* Repository Metadata
|
|
824
|
+
*
|
|
825
|
+
******************************************************************************/
|
|
826
|
+
/**
|
|
827
|
+
* Repository identity. Required fields are auto-detected when not provided.
|
|
828
|
+
*/
|
|
829
|
+
interface RepositoryMetadata {
|
|
830
|
+
/**
|
|
831
|
+
* Repository owner (GitHub user or organization).
|
|
832
|
+
* Auto-detected from package.json repository URL when not provided.
|
|
833
|
+
* @example 'codedrifters'
|
|
834
|
+
*/
|
|
835
|
+
readonly owner?: string;
|
|
836
|
+
/**
|
|
837
|
+
* Repository name.
|
|
838
|
+
* Auto-detected from package.json repository URL when not provided.
|
|
839
|
+
* @example 'packages'
|
|
840
|
+
*/
|
|
841
|
+
readonly name?: string;
|
|
842
|
+
/**
|
|
843
|
+
* Default branch name.
|
|
844
|
+
* @default 'main'
|
|
845
|
+
*/
|
|
846
|
+
readonly defaultBranch?: string;
|
|
847
|
+
}
|
|
848
|
+
/*******************************************************************************
|
|
849
|
+
*
|
|
850
|
+
* GitHub Projects Metadata
|
|
851
|
+
*
|
|
852
|
+
******************************************************************************/
|
|
853
|
+
/**
|
|
854
|
+
* A board or view within a GitHub Project.
|
|
855
|
+
*/
|
|
856
|
+
interface GitHubBoardMetadata {
|
|
857
|
+
/** Board/view name. */
|
|
858
|
+
readonly name: string;
|
|
859
|
+
/** Board/view ID. */
|
|
860
|
+
readonly id?: string;
|
|
861
|
+
}
|
|
862
|
+
/**
|
|
863
|
+
* Sprint/iteration field metadata for GitHub Projects.
|
|
864
|
+
*/
|
|
865
|
+
interface GitHubSprintMetadata {
|
|
866
|
+
/** Name of the iteration field in GitHub Projects. */
|
|
867
|
+
readonly fieldName?: string;
|
|
868
|
+
/** Current sprint/iteration name. */
|
|
869
|
+
readonly current?: string;
|
|
870
|
+
/** Known sprint/iteration names. */
|
|
871
|
+
readonly iterations?: ReadonlyArray<string>;
|
|
872
|
+
}
|
|
873
|
+
/**
|
|
874
|
+
* GitHub Projects (v2) context for workflow automation.
|
|
875
|
+
*/
|
|
876
|
+
interface GitHubProjectMetadata {
|
|
877
|
+
/**
|
|
878
|
+
* GitHub Project name.
|
|
879
|
+
* @example 'CodeDrifters Packages'
|
|
880
|
+
*/
|
|
881
|
+
readonly name?: string;
|
|
882
|
+
/**
|
|
883
|
+
* GitHub Project number (visible in the project URL).
|
|
884
|
+
* @example 3
|
|
885
|
+
*/
|
|
886
|
+
readonly number?: number;
|
|
887
|
+
/**
|
|
888
|
+
* GitHub Project node ID (for GraphQL API).
|
|
889
|
+
* @example 'PVT_kwHOABCDEf4AGHIJ'
|
|
890
|
+
*/
|
|
891
|
+
readonly nodeId?: string;
|
|
892
|
+
/**
|
|
893
|
+
* Board or view definitions within the project.
|
|
894
|
+
*/
|
|
895
|
+
readonly boards?: ReadonlyArray<GitHubBoardMetadata>;
|
|
896
|
+
/**
|
|
897
|
+
* Sprint/iteration field metadata.
|
|
898
|
+
*/
|
|
899
|
+
readonly sprints?: GitHubSprintMetadata;
|
|
900
|
+
/**
|
|
901
|
+
* Kanban column (status field) definitions.
|
|
902
|
+
* @example [{ name: 'To Do', id: 'status_1' }, { name: 'In Progress', id: 'status_2' }]
|
|
903
|
+
*/
|
|
904
|
+
readonly columns?: ReadonlyArray<{
|
|
905
|
+
readonly name: string;
|
|
906
|
+
readonly id?: string;
|
|
907
|
+
}>;
|
|
908
|
+
}
|
|
909
|
+
/*******************************************************************************
|
|
910
|
+
*
|
|
911
|
+
* Organization Metadata
|
|
912
|
+
*
|
|
913
|
+
******************************************************************************/
|
|
914
|
+
/**
|
|
915
|
+
* Organization or team context.
|
|
916
|
+
*/
|
|
917
|
+
interface OrganizationMetadata {
|
|
918
|
+
/**
|
|
919
|
+
* Organization or team display name.
|
|
920
|
+
* Used in generated documentation and rule content.
|
|
921
|
+
* @example 'CodeDrifters'
|
|
922
|
+
*/
|
|
923
|
+
readonly name?: string;
|
|
924
|
+
/**
|
|
925
|
+
* GitHub organization login (may differ from display name).
|
|
926
|
+
* @example 'codedrifters'
|
|
927
|
+
*/
|
|
928
|
+
readonly githubOrg?: string;
|
|
929
|
+
}
|
|
930
|
+
/*******************************************************************************
|
|
931
|
+
*
|
|
932
|
+
* Slack Metadata
|
|
933
|
+
*
|
|
934
|
+
******************************************************************************/
|
|
935
|
+
/**
|
|
936
|
+
* Slack channel references for workflow skills.
|
|
937
|
+
*/
|
|
938
|
+
interface SlackMetadata {
|
|
939
|
+
/**
|
|
940
|
+
* Primary project channel.
|
|
941
|
+
* @example '#packages-dev'
|
|
942
|
+
*/
|
|
943
|
+
readonly projectChannel?: string;
|
|
944
|
+
/**
|
|
945
|
+
* Alerts or notifications channel.
|
|
946
|
+
* @example '#packages-alerts'
|
|
947
|
+
*/
|
|
948
|
+
readonly alertsChannel?: string;
|
|
949
|
+
/**
|
|
950
|
+
* Additional named channels. Keys are purpose identifiers.
|
|
951
|
+
* @example { releases: '#releases', support: '#customer-support' }
|
|
952
|
+
*/
|
|
953
|
+
readonly channels?: Readonly<Record<string, string>>;
|
|
954
|
+
}
|
|
955
|
+
/*******************************************************************************
|
|
956
|
+
*
|
|
957
|
+
* Deployment Metadata
|
|
958
|
+
*
|
|
959
|
+
******************************************************************************/
|
|
960
|
+
/**
|
|
961
|
+
* Deployment and environment hints.
|
|
962
|
+
*/
|
|
963
|
+
interface DeploymentMetadata {
|
|
964
|
+
/**
|
|
965
|
+
* AWS account ID for the primary deployment target.
|
|
966
|
+
* @example '123456789012'
|
|
967
|
+
*/
|
|
968
|
+
readonly awsAccountId?: string;
|
|
969
|
+
/**
|
|
970
|
+
* Primary AWS region.
|
|
971
|
+
* @example 'us-east-1'
|
|
972
|
+
*/
|
|
973
|
+
readonly awsRegion?: string;
|
|
974
|
+
/**
|
|
975
|
+
* Named environments.
|
|
976
|
+
* @example { dev: { accountId: '111', region: 'us-east-1' }, prod: { accountId: '222', region: 'us-east-1' } }
|
|
977
|
+
*/
|
|
978
|
+
readonly environments?: Readonly<Record<string, {
|
|
979
|
+
readonly accountId?: string;
|
|
980
|
+
readonly region?: string;
|
|
981
|
+
}>>;
|
|
982
|
+
}
|
|
983
|
+
/*******************************************************************************
|
|
984
|
+
*
|
|
985
|
+
* ProjectMetadata Options & Resolved Shape
|
|
986
|
+
*
|
|
987
|
+
******************************************************************************/
|
|
988
|
+
/**
|
|
989
|
+
* Options for the ProjectMetadata component.
|
|
990
|
+
*/
|
|
991
|
+
interface ProjectMetadataOptions {
|
|
992
|
+
/**
|
|
993
|
+
* Repository identity. When omitted, auto-detected from the Projen
|
|
994
|
+
* project's package.json repository field.
|
|
995
|
+
*/
|
|
996
|
+
readonly repository?: RepositoryMetadata;
|
|
997
|
+
/**
|
|
998
|
+
* GitHub Projects (v2) context for workflow automation.
|
|
999
|
+
* Optional — only needed when skills or rules reference project boards.
|
|
1000
|
+
*/
|
|
1001
|
+
readonly githubProject?: GitHubProjectMetadata;
|
|
1002
|
+
/**
|
|
1003
|
+
* Organization or team metadata.
|
|
1004
|
+
* Optional — used in branch naming, PR conventions, and rule content.
|
|
1005
|
+
*/
|
|
1006
|
+
readonly organization?: OrganizationMetadata;
|
|
1007
|
+
/**
|
|
1008
|
+
* Slack channel references for workflow skills.
|
|
1009
|
+
* Optional — only needed when skills post to or reference Slack channels.
|
|
1010
|
+
*/
|
|
1011
|
+
readonly slack?: SlackMetadata;
|
|
1012
|
+
/**
|
|
1013
|
+
* Important label names used by the project.
|
|
1014
|
+
* Optional — allows skills and rules to reference canonical labels.
|
|
1015
|
+
* @example ['auto-approve', 'wontfix', 'breaking-change']
|
|
1016
|
+
*/
|
|
1017
|
+
readonly labels?: ReadonlyArray<string>;
|
|
1018
|
+
/**
|
|
1019
|
+
* Milestone names or IDs for release planning.
|
|
1020
|
+
* Optional — allows skills to reference milestones by name.
|
|
1021
|
+
*/
|
|
1022
|
+
readonly milestones?: ReadonlyArray<string>;
|
|
1023
|
+
/**
|
|
1024
|
+
* Documentation base path (relative to repo root) or external URL.
|
|
1025
|
+
* Optional — used by "reference docs" skills to point to the right location.
|
|
1026
|
+
* @example 'docs/' or 'https://docs.example.com'
|
|
1027
|
+
*/
|
|
1028
|
+
readonly docsPath?: string;
|
|
1029
|
+
/**
|
|
1030
|
+
* Deployment or environment hints.
|
|
1031
|
+
* Optional — used by deploy-related skills or rules.
|
|
1032
|
+
*/
|
|
1033
|
+
readonly deployment?: DeploymentMetadata;
|
|
1034
|
+
}
|
|
1035
|
+
/**
|
|
1036
|
+
* Resolved project metadata with auto-detected values filled in.
|
|
1037
|
+
* Consumed by AgentConfig and other configulator features at synthesis time.
|
|
1038
|
+
*/
|
|
1039
|
+
interface ResolvedProjectMetadata {
|
|
1040
|
+
readonly repository: {
|
|
1041
|
+
readonly owner: string | undefined;
|
|
1042
|
+
readonly name: string | undefined;
|
|
1043
|
+
/** Always has a value (default: 'main'). */
|
|
1044
|
+
readonly defaultBranch: string;
|
|
1045
|
+
};
|
|
1046
|
+
readonly githubProject?: GitHubProjectMetadata;
|
|
1047
|
+
readonly organization?: OrganizationMetadata;
|
|
1048
|
+
readonly slack?: SlackMetadata;
|
|
1049
|
+
readonly labels?: ReadonlyArray<string>;
|
|
1050
|
+
readonly milestones?: ReadonlyArray<string>;
|
|
1051
|
+
readonly docsPath?: string;
|
|
1052
|
+
readonly deployment?: DeploymentMetadata;
|
|
1053
|
+
}
|
|
1054
|
+
|
|
1055
|
+
/**
|
|
1056
|
+
* Result of template variable resolution.
|
|
1057
|
+
*/
|
|
1058
|
+
interface TemplateResolveResult {
|
|
1059
|
+
/** The template string with all variables resolved or replaced with fallbacks. */
|
|
1060
|
+
readonly resolved: string;
|
|
1061
|
+
/** Template variable keys that could not be resolved from metadata. */
|
|
1062
|
+
readonly unresolvedKeys: ReadonlyArray<string>;
|
|
1063
|
+
}
|
|
1064
|
+
/**
|
|
1065
|
+
* Resolves `{{dotted.path}}` template variables in a string using project metadata.
|
|
1066
|
+
* Unresolved variables are replaced with their fallback placeholders.
|
|
1067
|
+
*
|
|
1068
|
+
* @param template - String potentially containing `{{variable}}` patterns
|
|
1069
|
+
* @param metadata - Resolved project metadata, or undefined if not available
|
|
1070
|
+
* @returns The resolved string and a list of any unresolved variable keys
|
|
1071
|
+
*/
|
|
1072
|
+
declare function resolveTemplateVariables(template: string, metadata: ResolvedProjectMetadata | undefined): TemplateResolveResult;
|
|
1073
|
+
|
|
789
1074
|
/*******************************************************************************
|
|
790
1075
|
*
|
|
791
1076
|
* Git configs for this repo. This venn diagram has a great deal of overlap
|
|
@@ -2095,6 +2380,18 @@ interface MonorepoProjectOptions extends Omit<TypeScriptProjectOptions$1, "defau
|
|
|
2095
2380
|
* @default true
|
|
2096
2381
|
*/
|
|
2097
2382
|
readonly configulatorRegistryConsumer?: boolean;
|
|
2383
|
+
/**
|
|
2384
|
+
* Project metadata configuration. Provides repository identity,
|
|
2385
|
+
* GitHub project context, and organizational details consumed by
|
|
2386
|
+
* AgentConfig and other features at synthesis time.
|
|
2387
|
+
*
|
|
2388
|
+
* - `undefined` or `{}`: auto-instantiate with auto-detection (default)
|
|
2389
|
+
* - `ProjectMetadataOptions`: explicit metadata configuration
|
|
2390
|
+
* - `false`: disable ProjectMetadata entirely
|
|
2391
|
+
*
|
|
2392
|
+
* @default {} (auto-detect from package.json)
|
|
2393
|
+
*/
|
|
2394
|
+
readonly projectMetadata?: ProjectMetadataOptions | false;
|
|
2098
2395
|
/**
|
|
2099
2396
|
* Enable AI agent configuration (Cursor, Claude Code rules).
|
|
2100
2397
|
* When true, generates rule files at the monorepo root with auto-detected
|
|
@@ -2131,6 +2428,38 @@ declare class MonorepoProject extends TypeScriptAppProject {
|
|
|
2131
2428
|
postSynthesize(): void;
|
|
2132
2429
|
}
|
|
2133
2430
|
|
|
2431
|
+
/**
|
|
2432
|
+
* Provides structured project metadata consumed by AgentConfig, skills,
|
|
2433
|
+
* and other configulator features at synthesis time.
|
|
2434
|
+
*
|
|
2435
|
+
* This is a project-level component — it describes the project itself,
|
|
2436
|
+
* not any specific feature. It lives alongside MonorepoProject and
|
|
2437
|
+
* TypeScriptProject and is discovered by consumers via the static
|
|
2438
|
+
* `.of()` factory method.
|
|
2439
|
+
*/
|
|
2440
|
+
declare class ProjectMetadata extends Component {
|
|
2441
|
+
/**
|
|
2442
|
+
* Returns the ProjectMetadata instance for a project, or undefined
|
|
2443
|
+
* if the component has not been added.
|
|
2444
|
+
*/
|
|
2445
|
+
static of(project: Project): ProjectMetadata | undefined;
|
|
2446
|
+
/** Resolved metadata with auto-detected values filled in. */
|
|
2447
|
+
readonly metadata: ResolvedProjectMetadata;
|
|
2448
|
+
constructor(project: Project, options?: ProjectMetadataOptions);
|
|
2449
|
+
/**
|
|
2450
|
+
* Merges explicit options with auto-detected values.
|
|
2451
|
+
* Auto-detection reads the repository URL from package.json
|
|
2452
|
+
* (via Projen's NodePackage manifest) and parses GitHub owner/name.
|
|
2453
|
+
* Explicit options always take precedence over auto-detected values.
|
|
2454
|
+
*/
|
|
2455
|
+
private resolveMetadata;
|
|
2456
|
+
/**
|
|
2457
|
+
* Attempts to auto-detect repository owner and name from the Projen
|
|
2458
|
+
* project's package.json repository field.
|
|
2459
|
+
*/
|
|
2460
|
+
private autoDetectRepository;
|
|
2461
|
+
}
|
|
2462
|
+
|
|
2134
2463
|
/**
|
|
2135
2464
|
* Options for the Vitest config (test block in vitest.config).
|
|
2136
2465
|
*
|
|
@@ -2379,5 +2708,5 @@ declare const COMPLETE_JOB_ID = "complete";
|
|
|
2379
2708
|
*/
|
|
2380
2709
|
declare function addBuildCompleteJob(buildWorkflow: BuildWorkflow): void;
|
|
2381
2710
|
|
|
2382
|
-
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, 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, turborepoBundle, typescriptBundle, vitestBundle };
|
|
2383
|
-
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, GitBranch, IDependencyResolver, McpServerConfig, McpTransport, MergeMethod, MonorepoProjectOptions, PnpmWorkspaceOptions, RemoteCacheOptions, ResetTaskOptions, TurboRepoOptions, TurboRepoTaskOptions, TypeScriptProjectOptions, VersionKey, VitestConfigOptions, VitestOptions };
|
|
2711
|
+
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 };
|