@jeger-ai/opengantry 2.5.0 → 2.6.0

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.
Files changed (57) hide show
  1. package/README.md +4 -3
  2. package/dist/cli/commands/init.d.ts +2 -0
  3. package/dist/cli/commands/init.d.ts.map +1 -1
  4. package/dist/cli/commands/init.js +4 -4
  5. package/dist/cli/commands/init.js.map +1 -1
  6. package/dist/cli/lib/command-reporter.d.ts.map +1 -1
  7. package/dist/cli/lib/command-reporter.js +10 -0
  8. package/dist/cli/lib/command-reporter.js.map +1 -1
  9. package/dist/cli/lib/defensive-guard.d.ts +16 -0
  10. package/dist/cli/lib/defensive-guard.d.ts.map +1 -1
  11. package/dist/cli/lib/defensive-guard.js +253 -32
  12. package/dist/cli/lib/defensive-guard.js.map +1 -1
  13. package/dist/cli/lib/defensive-profile-presets.d.ts +10 -0
  14. package/dist/cli/lib/defensive-profile-presets.d.ts.map +1 -0
  15. package/dist/cli/lib/defensive-profile-presets.js +76 -0
  16. package/dist/cli/lib/defensive-profile-presets.js.map +1 -0
  17. package/dist/cli/lib/defensive-profile.d.ts +40 -4
  18. package/dist/cli/lib/defensive-profile.d.ts.map +1 -1
  19. package/dist/cli/lib/defensive-profile.js +136 -24
  20. package/dist/cli/lib/defensive-profile.js.map +1 -1
  21. package/dist/cli/lib/init-defensive-profile.d.ts +5 -0
  22. package/dist/cli/lib/init-defensive-profile.d.ts.map +1 -0
  23. package/dist/cli/lib/init-defensive-profile.js +14 -0
  24. package/dist/cli/lib/init-defensive-profile.js.map +1 -0
  25. package/dist/cli/lib/init-interactive.d.ts.map +1 -1
  26. package/dist/cli/lib/init-interactive.js +34 -0
  27. package/dist/cli/lib/init-interactive.js.map +1 -1
  28. package/dist/cli/lib/init-plan.d.ts +1 -1
  29. package/dist/cli/lib/init-plan.d.ts.map +1 -1
  30. package/dist/cli/lib/init-plan.js +6 -2
  31. package/dist/cli/lib/init-plan.js.map +1 -1
  32. package/dist/cli/lib/init-profile.d.ts +5 -0
  33. package/dist/cli/lib/init-profile.d.ts.map +1 -1
  34. package/dist/cli/lib/init-profile.js +9 -0
  35. package/dist/cli/lib/init-profile.js.map +1 -1
  36. package/dist/cli/lib/verify-defensive-phase.d.ts +20 -0
  37. package/dist/cli/lib/verify-defensive-phase.d.ts.map +1 -0
  38. package/dist/cli/lib/verify-defensive-phase.js +44 -0
  39. package/dist/cli/lib/verify-defensive-phase.js.map +1 -0
  40. package/dist/cli/lib/verify-engine.d.ts +4 -0
  41. package/dist/cli/lib/verify-engine.d.ts.map +1 -1
  42. package/dist/cli/lib/verify-engine.js +41 -37
  43. package/dist/cli/lib/verify-engine.js.map +1 -1
  44. package/dist/cli/lib/verify-payload-types.d.ts +2 -0
  45. package/dist/cli/lib/verify-payload-types.d.ts.map +1 -1
  46. package/dist/cli/lib/verify-payload.d.ts.map +1 -1
  47. package/dist/cli/lib/verify-payload.js +6 -0
  48. package/dist/cli/lib/verify-payload.js.map +1 -1
  49. package/dist/cli/lib/version.gen.d.ts +1 -1
  50. package/dist/cli/lib/version.gen.js +1 -1
  51. package/dist/cli/program-core.d.ts.map +1 -1
  52. package/dist/cli/program-core.js +2 -0
  53. package/dist/cli/program-core.js.map +1 -1
  54. package/package.json +1 -1
  55. package/templates/.gitagent/config.json +12 -0
  56. package/templates/.gitagent/foreman/SUBSTRATE.version.json +1 -1
  57. package/templates/integrations/compatibility.json +1 -1
@@ -0,0 +1,76 @@
1
+ export const DEFENSIVE_PROFILE_PRESET_NAMES = [
2
+ "strict_enterprise",
3
+ "balanced_partner",
4
+ "lean_scratchpad",
5
+ ];
6
+ export const DEFENSIVE_PROFILE_PRESET_LABELS = {
7
+ strict_enterprise: "Strict Enterprise — block risky diffs",
8
+ balanced_partner: "Balanced Partner — warn on risky diffs",
9
+ lean_scratchpad: "Lean Scratchpad — audit telemetry only",
10
+ };
11
+ export function isDefensiveProfilePresetName(value) {
12
+ return DEFENSIVE_PROFILE_PRESET_NAMES.includes(value);
13
+ }
14
+ export function parseDefensiveProfilePreset(raw) {
15
+ if (!isDefensiveProfilePresetName(raw)) {
16
+ throw new Error(`defensive profile preset must be one of: ${DEFENSIVE_PROFILE_PRESET_NAMES.join(", ")}`);
17
+ }
18
+ return raw;
19
+ }
20
+ const PRESET_DEFAULTS = {
21
+ strict_enterprise: {
22
+ severity: "block",
23
+ max_net_loc: 300,
24
+ max_files: 15,
25
+ max_churn_ratio: 0.65,
26
+ min_assertion_delta: 0,
27
+ },
28
+ balanced_partner: {
29
+ severity: "warn",
30
+ max_net_loc: 500,
31
+ max_files: 25,
32
+ max_churn_ratio: 0.75,
33
+ min_assertion_delta: 0,
34
+ },
35
+ lean_scratchpad: {
36
+ severity: "audit",
37
+ max_net_loc: 800,
38
+ max_files: 40,
39
+ max_churn_ratio: 0.85,
40
+ min_assertion_delta: 0,
41
+ },
42
+ };
43
+ /** Build a full defensive_profile config for init scaffolding from a named preset. */
44
+ export function buildDefensiveProfileFromPreset(preset) {
45
+ const d = PRESET_DEFAULTS[preset];
46
+ return {
47
+ enabled: true,
48
+ preset,
49
+ guards: {
50
+ net_loc_budget: {
51
+ enabled: true,
52
+ severity: d.severity,
53
+ max_net_loc: d.max_net_loc,
54
+ },
55
+ file_scope: {
56
+ enabled: true,
57
+ severity: d.severity,
58
+ max_files: d.max_files,
59
+ },
60
+ churn_ratio: {
61
+ enabled: true,
62
+ severity: d.severity,
63
+ max_ratio: d.max_churn_ratio,
64
+ },
65
+ test_to_code: {
66
+ enabled: true,
67
+ severity: d.severity,
68
+ min_assertion_delta: d.min_assertion_delta,
69
+ },
70
+ },
71
+ };
72
+ }
73
+ export function presetDefaultSeverity(preset) {
74
+ return PRESET_DEFAULTS[preset].severity;
75
+ }
76
+ //# sourceMappingURL=defensive-profile-presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"defensive-profile-presets.js","sourceRoot":"","sources":["../../../src/cli/lib/defensive-profile-presets.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;CACT,CAAC;AAIX,MAAM,CAAC,MAAM,+BAA+B,GAA+C;IACzF,iBAAiB,EAAE,uCAAuC;IAC1D,gBAAgB,EAAE,wCAAwC;IAC1D,eAAe,EAAE,wCAAwC;CAC1D,CAAC;AAEF,MAAM,UAAU,4BAA4B,CAAC,KAAa;IACxD,OAAQ,8BAAoD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CACb,4CAA4C,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD,MAAM,eAAe,GAA4D;IAC/E,iBAAiB,EAAE;QACjB,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,CAAC;KACvB;IACD,gBAAgB,EAAE;QAChB,QAAQ,EAAE,MAAM;QAChB,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,CAAC;KACvB;IACD,eAAe,EAAE;QACf,QAAQ,EAAE,OAAO;QACjB,WAAW,EAAE,GAAG;QAChB,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,IAAI;QACrB,mBAAmB,EAAE,CAAC;KACvB;CACF,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,+BAA+B,CAC7C,MAAkC;IAElC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,OAAO,EAAE,IAAI;QACb,MAAM;QACN,MAAM,EAAE;YACN,cAAc,EAAE;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW;aAC3B;YACD,UAAU,EAAE;gBACV,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,SAAS,EAAE,CAAC,CAAC,eAAe;aAC7B;YACD,YAAY,EAAE;gBACZ,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,mBAAmB,EAAE,CAAC,CAAC,mBAAmB;aAC3C;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAkC;IACtE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;AAC1C,CAAC"}
@@ -1,22 +1,58 @@
1
1
  import type { GxtConfig } from "./gxt-config.js";
2
- export interface NetLocBudgetGuard {
2
+ import { type DefensiveProfilePresetName } from "./defensive-profile-presets.js";
3
+ export type GuardSeverity = "block" | "warn" | "audit";
4
+ export declare const GUARD_SEVERITIES: readonly GuardSeverity[];
5
+ export interface GuardConfigBase {
3
6
  enabled?: boolean;
7
+ severity?: GuardSeverity;
8
+ }
9
+ export interface NetLocBudgetGuard extends GuardConfigBase {
4
10
  max_net_loc?: number;
5
11
  }
12
+ export interface FileScopeGuard extends GuardConfigBase {
13
+ max_files?: number;
14
+ }
15
+ export interface ChurnRatioGuard extends GuardConfigBase {
16
+ max_ratio?: number;
17
+ }
18
+ export interface TestToCodeGuard extends GuardConfigBase {
19
+ min_assertion_delta?: number;
20
+ }
6
21
  export interface DefensiveProfileGuards {
7
22
  net_loc_budget?: NetLocBudgetGuard;
23
+ file_scope?: FileScopeGuard;
24
+ churn_ratio?: ChurnRatioGuard;
25
+ test_to_code?: TestToCodeGuard;
8
26
  }
9
27
  export interface DefensiveProfileConfig {
10
28
  enabled?: boolean;
29
+ preset?: DefensiveProfilePresetName | "custom";
11
30
  guards?: DefensiveProfileGuards;
12
31
  }
13
- export interface ResolvedNetLocBudgetGuard {
32
+ export interface ResolvedGuard<T> {
14
33
  enabled: true;
15
- max_net_loc: number;
34
+ severity: GuardSeverity;
35
+ config: T;
16
36
  }
37
+ export type ResolvedNetLocBudget = ResolvedGuard<{
38
+ max_net_loc: number;
39
+ }>;
40
+ export type ResolvedFileScope = ResolvedGuard<{
41
+ max_files: number;
42
+ }>;
43
+ export type ResolvedChurnRatio = ResolvedGuard<{
44
+ max_ratio: number;
45
+ }>;
46
+ export type ResolvedTestToCode = ResolvedGuard<{
47
+ min_assertion_delta: number;
48
+ }>;
17
49
  export interface ResolvedDefensiveProfile {
18
50
  enabled: boolean;
19
- net_loc_budget: ResolvedNetLocBudgetGuard | null;
51
+ preset: DefensiveProfilePresetName | "custom" | null;
52
+ net_loc_budget: ResolvedNetLocBudget | null;
53
+ file_scope: ResolvedFileScope | null;
54
+ churn_ratio: ResolvedChurnRatio | null;
55
+ test_to_code: ResolvedTestToCode | null;
20
56
  }
21
57
  export declare function validateDefensiveProfile(raw: unknown): DefensiveProfileConfig;
22
58
  /** Fail-closed resolution: profile must be explicitly enabled; guards opt-in per guard. */
@@ -1 +1 @@
1
- {"version":3,"file":"defensive-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/defensive-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,cAAc,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAClD;AAWD,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CAsC7E;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,wBAAwB,CAgBnF"}
1
+ {"version":3,"file":"defensive-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/defensive-profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAGL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAEvD,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAA+B,CAAC;AAErF,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAe,SAAQ,eAAe;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,iBAAiB,CAAC;IACnC,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,YAAY,CAAC,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,0BAA0B,GAAG,QAAQ,CAAC;IAC/C,MAAM,CAAC,EAAE,sBAAsB,CAAC;CACjC;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,OAAO,EAAE,IAAI,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAC1E,MAAM,MAAM,iBAAiB,GAAG,aAAa,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACrE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AACtE,MAAM,MAAM,kBAAkB,GAAG,aAAa,CAAC;IAAE,mBAAmB,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEhF,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,0BAA0B,GAAG,QAAQ,GAAG,IAAI,CAAC;IACrD,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACvC,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;CACzC;AAgED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,sBAAsB,CA4E7E;AA+BD,2FAA2F;AAC3F,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,wBAAwB,CAgCnF"}
@@ -1,10 +1,59 @@
1
+ import { isDefensiveProfilePresetName, presetDefaultSeverity, } from "./defensive-profile-presets.js";
2
+ export const GUARD_SEVERITIES = ["block", "warn", "audit"];
1
3
  const DEFAULT_NET_LOC_BUDGET = 500;
4
+ const DEFAULT_MAX_FILES = 25;
5
+ const DEFAULT_MAX_CHURN_RATIO = 0.75;
6
+ const DEFAULT_MIN_ASSERTION_DELTA = 0;
2
7
  function parsePositiveInt(value, field) {
3
8
  if (typeof value !== "number" || !Number.isInteger(value) || value < 1) {
4
9
  throw new Error(`defensive_profile: ${field} must be a positive integer`);
5
10
  }
6
11
  return value;
7
12
  }
13
+ function parseNonNegativeInt(value, field) {
14
+ if (typeof value !== "number" || !Number.isInteger(value) || value < 0) {
15
+ throw new Error(`defensive_profile: ${field} must be a non-negative integer`);
16
+ }
17
+ return value;
18
+ }
19
+ function parseRatio(value, field) {
20
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0 || value > 1) {
21
+ throw new Error(`defensive_profile: ${field} must be a number in (0, 1]`);
22
+ }
23
+ return value;
24
+ }
25
+ function parseSeverity(value, field) {
26
+ if (value == null)
27
+ return undefined;
28
+ if (typeof value !== "string" || !GUARD_SEVERITIES.includes(value)) {
29
+ throw new Error(`defensive_profile: ${field} must be block, warn, or audit`);
30
+ }
31
+ return value;
32
+ }
33
+ function parseGuardEnabled(value, field) {
34
+ if (value == null)
35
+ return undefined;
36
+ if (typeof value !== "boolean") {
37
+ throw new Error(`defensive_profile: ${field}.enabled must be a boolean`);
38
+ }
39
+ return value;
40
+ }
41
+ function validateGuardObject(raw, guardName, validateFields) {
42
+ if (raw == null)
43
+ return undefined;
44
+ if (typeof raw !== "object") {
45
+ throw new Error(`defensive_profile.guards.${guardName} must be an object`);
46
+ }
47
+ const g = raw;
48
+ const enabled = parseGuardEnabled(g.enabled, `guards.${guardName}`);
49
+ const severity = parseSeverity(g.severity, `guards.${guardName}.severity`);
50
+ const fields = validateFields(g);
51
+ return {
52
+ ...(enabled != null ? { enabled } : {}),
53
+ ...(severity != null ? { severity } : {}),
54
+ ...fields,
55
+ };
56
+ }
8
57
  export function validateDefensiveProfile(raw) {
9
58
  if (raw == null)
10
59
  return {};
@@ -15,52 +64,115 @@ export function validateDefensiveProfile(raw) {
15
64
  if (o.enabled != null && typeof o.enabled !== "boolean") {
16
65
  throw new Error("defensive_profile.enabled must be a boolean");
17
66
  }
67
+ let preset;
68
+ if (o.preset != null) {
69
+ if (typeof o.preset !== "string") {
70
+ throw new Error("defensive_profile.preset must be a string");
71
+ }
72
+ if (o.preset !== "custom" && !isDefensiveProfilePresetName(o.preset)) {
73
+ throw new Error("defensive_profile.preset must be strict_enterprise, balanced_partner, lean_scratchpad, or custom");
74
+ }
75
+ preset = o.preset;
76
+ }
18
77
  let guards;
19
78
  if (o.guards != null) {
20
79
  if (typeof o.guards !== "object") {
21
80
  throw new Error("defensive_profile.guards must be an object");
22
81
  }
23
82
  const g = o.guards;
24
- let net_loc_budget;
25
- if (g.net_loc_budget != null) {
26
- if (typeof g.net_loc_budget !== "object") {
27
- throw new Error("defensive_profile.guards.net_loc_budget must be an object");
28
- }
29
- const nlb = g.net_loc_budget;
30
- if (nlb.enabled != null && typeof nlb.enabled !== "boolean") {
31
- throw new Error("defensive_profile.guards.net_loc_budget.enabled must be a boolean");
32
- }
83
+ const net_loc_budget = validateGuardObject(g.net_loc_budget, "net_loc_budget", (nlb) => {
84
+ const out = {};
33
85
  if (nlb.max_net_loc != null) {
34
86
  parsePositiveInt(nlb.max_net_loc, "guards.net_loc_budget.max_net_loc");
87
+ out.max_net_loc = nlb.max_net_loc;
35
88
  }
36
- net_loc_budget = {
37
- ...(nlb.enabled != null ? { enabled: nlb.enabled } : {}),
38
- ...(nlb.max_net_loc != null ? { max_net_loc: nlb.max_net_loc } : {}),
39
- };
40
- }
41
- guards = { ...(net_loc_budget ? { net_loc_budget } : {}) };
89
+ return out;
90
+ });
91
+ const file_scope = validateGuardObject(g.file_scope, "file_scope", (fs) => {
92
+ const out = {};
93
+ if (fs.max_files != null) {
94
+ parsePositiveInt(fs.max_files, "guards.file_scope.max_files");
95
+ out.max_files = fs.max_files;
96
+ }
97
+ return out;
98
+ });
99
+ const churn_ratio = validateGuardObject(g.churn_ratio, "churn_ratio", (cr) => {
100
+ const out = {};
101
+ if (cr.max_ratio != null) {
102
+ parseRatio(cr.max_ratio, "guards.churn_ratio.max_ratio");
103
+ out.max_ratio = cr.max_ratio;
104
+ }
105
+ return out;
106
+ });
107
+ const test_to_code = validateGuardObject(g.test_to_code, "test_to_code", (ttc) => {
108
+ const out = {};
109
+ if (ttc.min_assertion_delta != null) {
110
+ parseNonNegativeInt(ttc.min_assertion_delta, "guards.test_to_code.min_assertion_delta");
111
+ out.min_assertion_delta = ttc.min_assertion_delta;
112
+ }
113
+ return out;
114
+ });
115
+ guards = {
116
+ ...(net_loc_budget ? { net_loc_budget } : {}),
117
+ ...(file_scope ? { file_scope } : {}),
118
+ ...(churn_ratio ? { churn_ratio } : {}),
119
+ ...(test_to_code ? { test_to_code } : {}),
120
+ };
42
121
  }
43
122
  return {
44
123
  ...(o.enabled != null ? { enabled: o.enabled } : {}),
124
+ ...(preset ? { preset } : {}),
45
125
  ...(guards ? { guards } : {}),
46
126
  };
47
127
  }
128
+ function defaultSeverityForPreset(preset) {
129
+ if (preset && preset !== "custom" && isDefensiveProfilePresetName(preset)) {
130
+ return presetDefaultSeverity(preset);
131
+ }
132
+ return "block";
133
+ }
134
+ function resolveGuardSeverity(guard, preset) {
135
+ return guard?.severity ?? defaultSeverityForPreset(preset);
136
+ }
137
+ function resolveEnabledGuard(guard, preset, buildConfig) {
138
+ if (!guard?.enabled)
139
+ return null;
140
+ return {
141
+ enabled: true,
142
+ severity: resolveGuardSeverity(guard, preset),
143
+ config: buildConfig(),
144
+ };
145
+ }
48
146
  /** Fail-closed resolution: profile must be explicitly enabled; guards opt-in per guard. */
49
147
  export function resolveDefensiveProfile(config) {
50
148
  const raw = config.defensive_profile;
51
149
  if (!raw?.enabled) {
52
- return { enabled: false, net_loc_budget: null };
53
- }
54
- const guard = raw.guards?.net_loc_budget;
55
- if (!guard?.enabled) {
56
- return { enabled: true, net_loc_budget: null };
150
+ return {
151
+ enabled: false,
152
+ preset: null,
153
+ net_loc_budget: null,
154
+ file_scope: null,
155
+ churn_ratio: null,
156
+ test_to_code: null,
157
+ };
57
158
  }
159
+ const preset = raw.preset ?? null;
160
+ const guards = raw.guards;
58
161
  return {
59
162
  enabled: true,
60
- net_loc_budget: {
61
- enabled: true,
62
- max_net_loc: guard.max_net_loc ?? DEFAULT_NET_LOC_BUDGET,
63
- },
163
+ preset,
164
+ net_loc_budget: resolveEnabledGuard(guards?.net_loc_budget, preset, () => ({
165
+ max_net_loc: guards?.net_loc_budget?.max_net_loc ?? DEFAULT_NET_LOC_BUDGET,
166
+ })),
167
+ file_scope: resolveEnabledGuard(guards?.file_scope, preset, () => ({
168
+ max_files: guards?.file_scope?.max_files ?? DEFAULT_MAX_FILES,
169
+ })),
170
+ churn_ratio: resolveEnabledGuard(guards?.churn_ratio, preset, () => ({
171
+ max_ratio: guards?.churn_ratio?.max_ratio ?? DEFAULT_MAX_CHURN_RATIO,
172
+ })),
173
+ test_to_code: resolveEnabledGuard(guards?.test_to_code, preset, () => ({
174
+ min_assertion_delta: guards?.test_to_code?.min_assertion_delta ?? DEFAULT_MIN_ASSERTION_DELTA,
175
+ })),
64
176
  };
65
177
  }
66
178
  //# sourceMappingURL=defensive-profile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"defensive-profile.js","sourceRoot":"","sources":["../../../src/cli/lib/defensive-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defensive-profile.js","sourceRoot":"","sources":["../../../src/cli/lib/defensive-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type DefensiveProfilePresetName } from "./defensive-profile-presets.js";
2
+ /** Merge defensive_profile preset into scaffolded config.json body. */
3
+ export declare function mergeDefensiveProfileIntoConfigBody(templateBody: string, preset: DefensiveProfilePresetName | null | undefined): string;
4
+ export declare function isConfigJsonTarget(targetPath: string): boolean;
5
+ //# sourceMappingURL=init-defensive-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-defensive-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-defensive-profile.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAIxC,uEAAuE;AACvE,wBAAgB,mCAAmC,CACjD,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,0BAA0B,GAAG,IAAI,GAAG,SAAS,GACpD,MAAM,CAMR;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,14 @@
1
+ import { buildDefensiveProfileFromPreset, } from "./defensive-profile-presets.js";
2
+ const CONFIG_REL = ".gitagent/config.json";
3
+ /** Merge defensive_profile preset into scaffolded config.json body. */
4
+ export function mergeDefensiveProfileIntoConfigBody(templateBody, preset) {
5
+ const parsed = JSON.parse(templateBody);
6
+ if (preset) {
7
+ parsed.defensive_profile = buildDefensiveProfileFromPreset(preset);
8
+ }
9
+ return `${JSON.stringify(parsed, null, 2)}\n`;
10
+ }
11
+ export function isConfigJsonTarget(targetPath) {
12
+ return targetPath.replace(/\\/g, "/") === CONFIG_REL;
13
+ }
14
+ //# sourceMappingURL=init-defensive-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-defensive-profile.js","sourceRoot":"","sources":["../../../src/cli/lib/init-defensive-profile.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,GAEhC,MAAM,gCAAgC,CAAC;AAExC,MAAM,UAAU,GAAG,uBAAuB,CAAC;AAE3C,uEAAuE;AACvE,MAAM,UAAU,mCAAmC,CACjD,YAAoB,EACpB,MAAqD;IAErD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAA4B,CAAC;IACnE,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,CAAC,iBAAiB,GAAG,+BAA+B,CAAC,MAAM,CAAsC,CAAC;IAC1G,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,OAAO,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,UAAU,CAAC;AACvD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init-interactive.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAkK3B,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAyC7B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAO9F;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAc/F"}
1
+ {"version":3,"file":"init-interactive.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"AAOA,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,mBAAmB,CAAC;AAkM3B,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAsD7B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAO9F;AAED,wBAAsB,4BAA4B,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAc/F"}
@@ -2,6 +2,7 @@ import * as p from "@clack/prompts";
2
2
  import { INTEGRATION_IDE_KEYS, integrationWizardLabel, loadIntegrationCompat, } from "./integration-compat.js";
3
3
  import { defaultInitProfile, mergeInitProfile, } from "./init-profile.js";
4
4
  import { defaultArchitectureLocation } from "./init-compose.js";
5
+ import { DEFENSIVE_PROFILE_PRESET_LABELS, DEFENSIVE_PROFILE_PRESET_NAMES, } from "./defensive-profile-presets.js";
5
6
  function wizardCancelled(value) {
6
7
  return p.isCancel(value);
7
8
  }
@@ -101,6 +102,29 @@ async function promptInitArchitecture(partial, base) {
101
102
  architectureAccessRequired,
102
103
  };
103
104
  }
105
+ async function promptDefensiveProfile(partial) {
106
+ const choice = await p.select({
107
+ message: "Defensive profile baseline",
108
+ options: [
109
+ { value: "skip", label: "Skip — keep template defaults (disabled)" },
110
+ ...DEFENSIVE_PROFILE_PRESET_NAMES.map((value) => ({
111
+ value,
112
+ label: DEFENSIVE_PROFILE_PRESET_LABELS[value],
113
+ })),
114
+ ],
115
+ initialValue: partial.defensiveProfilePreset === null
116
+ ? "skip"
117
+ : (partial.defensiveProfilePreset ?? "balanced_partner"),
118
+ });
119
+ if (wizardCancelled(choice)) {
120
+ p.cancel("init cancelled");
121
+ return null;
122
+ }
123
+ if (choice === "skip") {
124
+ return { defensiveProfilePreset: null };
125
+ }
126
+ return { defensiveProfilePreset: choice };
127
+ }
104
128
  async function promptInitInfrastructure(partial, base) {
105
129
  const skills = await p.select({
106
130
  message: "Skills preset",
@@ -146,6 +170,11 @@ export async function runInitInteractiveWizard(repoRoot, templatesRoot, partial)
146
170
  const architecture = await promptInitArchitecture(partial, base);
147
171
  if (!architecture)
148
172
  return null;
173
+ const defensive = partial.defensiveProfilePreset !== undefined
174
+ ? { defensiveProfilePreset: partial.defensiveProfilePreset }
175
+ : await promptDefensiveProfile(partial);
176
+ if (!defensive)
177
+ return null;
149
178
  const infrastructure = await promptInitInfrastructure(partial, base);
150
179
  if (!infrastructure)
151
180
  return null;
@@ -153,12 +182,17 @@ export async function runInitInteractiveWizard(repoRoot, templatesRoot, partial)
153
182
  ...partial,
154
183
  ...integrations,
155
184
  ...architecture,
185
+ ...defensive,
156
186
  ...infrastructure,
157
187
  });
188
+ const defensiveLine = profile.defensiveProfilePreset == null
189
+ ? "Defensive profile: disabled (template default)"
190
+ : `Defensive profile: ${profile.defensiveProfilePreset}`;
158
191
  p.note([
159
192
  `IDEs: ${profile.ides.join(", ")}`,
160
193
  `Doc: ${profile.integrationsDocPath}`,
161
194
  `Architecture: ${profile.architectureSource}${profile.architectureLocation ? ` → ${profile.architectureLocation}` : ""}`,
195
+ defensiveLine,
162
196
  `Skills: ${profile.skillsPreset}`,
163
197
  `Hooks: ${profile.gitHooks ? "yes" : "no"}`,
164
198
  `CI: ${profile.ciWorkflow ? "yes" : "no"}`,
@@ -1 +1 @@
1
- {"version":3,"file":"init-interactive.js","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-interactive.js","sourceRoot":"","sources":["../../../src/cli/lib/init-interactive.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ export interface InitPlanResult {
13
13
  unchanged: string[];
14
14
  conflicts: string[];
15
15
  }
16
- export declare function planInitAssets(assets: (InitAsset | InitAssetSpec)[], templatesRoot: string, repoRoot: string, force: boolean): InitPlanResult;
16
+ export declare function planInitAssets(assets: (InitAsset | InitAssetSpec)[], templatesRoot: string, repoRoot: string, force: boolean, profile?: InitProfile): InitPlanResult;
17
17
  export declare function applyInitWrites(writes: PlannedWrite[]): void;
18
18
  export declare function logInitSummary(writes: PlannedWrite[], skippedUserMutable: string[], unchanged: string[]): void;
19
19
  export declare function logInitNextSteps(profile?: InitProfile): void;
@@ -1 +1 @@
1
- {"version":3,"file":"init-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,EACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,GACb,cAAc,CAwChB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAM5D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAQN;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAgB5D"}
1
+ {"version":3,"file":"init-plan.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAwB,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,CAAC,SAAS,GAAG,aAAa,CAAC,EAAE,EACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,WAAW,GACpB,cAAc,CA4ChB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAM5D;AAED,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EAAE,EACtB,kBAAkB,EAAE,MAAM,EAAE,EAC5B,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAQN;AAGD,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI,CAgB5D"}
@@ -5,7 +5,8 @@ import { logError, logInfo } from "./cli-io.js";
5
5
  import { audienceSectionTitle, filterTaggedStepsForAudience, formatAudienceNextStep, INIT_TAGGED_NEXT_STEPS, } from "./audience-output.js";
6
6
  import { getOutputAudience } from "./output-context.js";
7
7
  import { templatePathForAsset } from "./init-asset-catalog.js";
8
- export function planInitAssets(assets, templatesRoot, repoRoot, force) {
8
+ import { isConfigJsonTarget, mergeDefensiveProfileIntoConfigBody, } from "./init-defensive-profile.js";
9
+ export function planInitAssets(assets, templatesRoot, repoRoot, force, profile) {
9
10
  const writes = [];
10
11
  const conflicts = [];
11
12
  const skippedUserMutable = [];
@@ -21,7 +22,10 @@ export function planInitAssets(assets, templatesRoot, repoRoot, force) {
21
22
  logError(`init: missing template for ${asset.targetPath} at ${templateAbs}`);
22
23
  return { ok: false, writes, skippedUserMutable, unchanged, conflicts };
23
24
  }
24
- const body = fs.readFileSync(templateAbs, "utf8");
25
+ const bodyRaw = fs.readFileSync(templateAbs, "utf8");
26
+ const body = profile?.defensiveProfilePreset && isConfigJsonTarget(asset.targetPath)
27
+ ? mergeDefensiveProfileIntoConfigBody(bodyRaw, profile.defensiveProfilePreset)
28
+ : bodyRaw;
25
29
  const existing = fs.existsSync(targetAbs) ? fs.readFileSync(targetAbs, "utf8") : null;
26
30
  if (existing === null) {
27
31
  writes.push({ absoluteTarget: targetAbs, body, executable: asset.executable === true });
@@ -1 +1 @@
1
- {"version":3,"file":"init-plan.js","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init-plan.js","sourceRoot":"","sources":["../../../src/cli/lib/init-plan.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { IntegrationIdeKey } from "./integration-compat.js";
2
+ import { type DefensiveProfilePresetName } from "./defensive-profile-presets.js";
2
3
  export type SkillsPreset = "minimal" | "specimen";
3
4
  /** Where code architecture docs live — unset means agents must ask before implementing. */
4
5
  export type ArchitectureSourceKind = "unset" | "file" | "directory" | "external";
@@ -13,6 +14,8 @@ export interface InitProfile {
13
14
  architectureAccessRequired?: boolean;
14
15
  architectureCredentialSlot?: string;
15
16
  architectureAuthHint?: string;
17
+ /** Selected defensive profile preset; undefined = prompt/default, null = explicit skip */
18
+ defensiveProfilePreset?: DefensiveProfilePresetName | null;
16
19
  }
17
20
  export declare const DEFAULT_INTEGRATIONS_DOC_PATH = "docs/INTEGRATIONS.md";
18
21
  export declare function defaultInitProfile(): InitProfile;
@@ -29,6 +32,8 @@ export declare function profileFromCliFlags(opts: {
29
32
  noCi?: boolean;
30
33
  archSource?: string;
31
34
  archLocation?: string;
35
+ defensiveProfile?: string;
36
+ noDefensiveProfile?: boolean;
32
37
  }): Partial<InitProfile>;
33
38
  export declare function mergeInitProfile(base: InitProfile, partial: Partial<InitProfile>): InitProfile;
34
39
  export declare function hasFullCliProfile(partial: Partial<InitProfile>): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"init-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEjE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,2FAA2F;AAC3F,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAEpE,wBAAgB,kBAAkB,IAAI,WAAW,CAShD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAK3E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAO7D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,WAAW,CAAC,CAYvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAa9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAQxE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B,GAAG,OAAO,CAKV"}
1
+ {"version":3,"file":"init-profile.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/init-profile.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,gCAAgC,CAAC;AAExC,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAElD,2FAA2F;AAC3F,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CAAC;AAEjF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,sBAAsB,CAAC;IAC3C,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,0FAA0F;IAC1F,sBAAsB,CAAC,EAAE,0BAA0B,GAAG,IAAI,CAAC;CAC5D;AAED,eAAO,MAAM,6BAA6B,yBAAyB,CAAC;AAEpE,wBAAgB,kBAAkB,IAAI,WAAW,CAShD;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,CAK3E;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAO7D;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUrF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B,GAAG,OAAO,CAAC,WAAW,CAAC,CAgBvB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,WAAW,CAiB9F;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAQxE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC/B,GAAG,OAAO,CAKV"}