@nebutra/next-unicorn-skill 1.0.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.
- package/CHANGELOG.md +57 -0
- package/LICENSE +21 -0
- package/README.md +316 -0
- package/SKILL.md +318 -0
- package/dist/analyzer/pattern-catalog.d.ts +35 -0
- package/dist/analyzer/pattern-catalog.d.ts.map +1 -0
- package/dist/analyzer/pattern-catalog.js +342 -0
- package/dist/analyzer/pattern-catalog.js.map +1 -0
- package/dist/analyzer/scanner.d.ts +33 -0
- package/dist/analyzer/scanner.d.ts.map +1 -0
- package/dist/analyzer/scanner.js +302 -0
- package/dist/analyzer/scanner.js.map +1 -0
- package/dist/auditor/ux-auditor.d.ts +26 -0
- package/dist/auditor/ux-auditor.d.ts.map +1 -0
- package/dist/auditor/ux-auditor.js +272 -0
- package/dist/auditor/ux-auditor.js.map +1 -0
- package/dist/checker/peer-dependency-checker.d.ts +62 -0
- package/dist/checker/peer-dependency-checker.d.ts.map +1 -0
- package/dist/checker/peer-dependency-checker.js +94 -0
- package/dist/checker/peer-dependency-checker.js.map +1 -0
- package/dist/index.d.ts +78 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +325 -0
- package/dist/index.js.map +1 -0
- package/dist/planner/migration-planner.d.ts +47 -0
- package/dist/planner/migration-planner.d.ts.map +1 -0
- package/dist/planner/migration-planner.js +144 -0
- package/dist/planner/migration-planner.js.map +1 -0
- package/dist/pr-creator/git-operations.d.ts +29 -0
- package/dist/pr-creator/git-operations.d.ts.map +1 -0
- package/dist/pr-creator/git-operations.js +10 -0
- package/dist/pr-creator/git-operations.js.map +1 -0
- package/dist/pr-creator/platform-client.d.ts +47 -0
- package/dist/pr-creator/platform-client.d.ts.map +1 -0
- package/dist/pr-creator/platform-client.js +9 -0
- package/dist/pr-creator/platform-client.js.map +1 -0
- package/dist/pr-creator/pr-description-builder.d.ts +23 -0
- package/dist/pr-creator/pr-description-builder.d.ts.map +1 -0
- package/dist/pr-creator/pr-description-builder.js +187 -0
- package/dist/pr-creator/pr-description-builder.js.map +1 -0
- package/dist/pr-creator/pr-executor.d.ts +30 -0
- package/dist/pr-creator/pr-executor.d.ts.map +1 -0
- package/dist/pr-creator/pr-executor.js +109 -0
- package/dist/pr-creator/pr-executor.js.map +1 -0
- package/dist/pr-creator/pr-strategy.d.ts +56 -0
- package/dist/pr-creator/pr-strategy.d.ts.map +1 -0
- package/dist/pr-creator/pr-strategy.js +125 -0
- package/dist/pr-creator/pr-strategy.js.map +1 -0
- package/dist/schemas/input.schema.d.ts +231 -0
- package/dist/schemas/input.schema.d.ts.map +1 -0
- package/dist/schemas/input.schema.js +159 -0
- package/dist/schemas/input.schema.js.map +1 -0
- package/dist/schemas/output.schema.d.ts +2543 -0
- package/dist/schemas/output.schema.d.ts.map +1 -0
- package/dist/schemas/output.schema.js +199 -0
- package/dist/schemas/output.schema.js.map +1 -0
- package/dist/scorer/impact-scorer.d.ts +45 -0
- package/dist/scorer/impact-scorer.d.ts.map +1 -0
- package/dist/scorer/impact-scorer.js +243 -0
- package/dist/scorer/impact-scorer.js.map +1 -0
- package/dist/security/osv-client.d.ts +72 -0
- package/dist/security/osv-client.d.ts.map +1 -0
- package/dist/security/osv-client.js +36 -0
- package/dist/security/osv-client.js.map +1 -0
- package/dist/security/vuln-report-builder.d.ts +18 -0
- package/dist/security/vuln-report-builder.d.ts.map +1 -0
- package/dist/security/vuln-report-builder.js +141 -0
- package/dist/security/vuln-report-builder.js.map +1 -0
- package/dist/security/vulnerability-scanner.d.ts +65 -0
- package/dist/security/vulnerability-scanner.d.ts.map +1 -0
- package/dist/security/vulnerability-scanner.js +140 -0
- package/dist/security/vulnerability-scanner.js.map +1 -0
- package/dist/updater/changelog-verifier.d.ts +29 -0
- package/dist/updater/changelog-verifier.d.ts.map +1 -0
- package/dist/updater/changelog-verifier.js +80 -0
- package/dist/updater/changelog-verifier.js.map +1 -0
- package/dist/updater/registry-client.d.ts +49 -0
- package/dist/updater/registry-client.d.ts.map +1 -0
- package/dist/updater/registry-client.js +10 -0
- package/dist/updater/registry-client.js.map +1 -0
- package/dist/updater/update-plan-builder.d.ts +23 -0
- package/dist/updater/update-plan-builder.d.ts.map +1 -0
- package/dist/updater/update-plan-builder.js +93 -0
- package/dist/updater/update-plan-builder.js.map +1 -0
- package/dist/updater/update-policy.d.ts +50 -0
- package/dist/updater/update-policy.d.ts.map +1 -0
- package/dist/updater/update-policy.js +118 -0
- package/dist/updater/update-policy.js.map +1 -0
- package/dist/updater/update-scorer.d.ts +51 -0
- package/dist/updater/update-scorer.d.ts.map +1 -0
- package/dist/updater/update-scorer.js +166 -0
- package/dist/updater/update-scorer.js.map +1 -0
- package/dist/utils/constraint-filter.d.ts +44 -0
- package/dist/utils/constraint-filter.d.ts.map +1 -0
- package/dist/utils/constraint-filter.js +69 -0
- package/dist/utils/constraint-filter.js.map +1 -0
- package/dist/utils/serializer.d.ts +17 -0
- package/dist/utils/serializer.d.ts.map +1 -0
- package/dist/utils/serializer.js +24 -0
- package/dist/utils/serializer.js.map +1 -0
- package/dist/utils/skill-parser.d.ts +29 -0
- package/dist/utils/skill-parser.d.ts.map +1 -0
- package/dist/utils/skill-parser.js +175 -0
- package/dist/utils/skill-parser.js.map +1 -0
- package/dist/verifier/context7.d.ts +48 -0
- package/dist/verifier/context7.d.ts.map +1 -0
- package/dist/verifier/context7.js +97 -0
- package/dist/verifier/context7.js.map +1 -0
- package/examples/backend-node/input.json +28 -0
- package/examples/backend-node/output.json +343 -0
- package/examples/frontend-nextjs/input.json +37 -0
- package/examples/frontend-nextjs/output.json +302 -0
- package/package.json +79 -0
- package/templates/deletion-checklist.md +42 -0
- package/templates/migration-plan.md +61 -0
- package/templates/prd-template.md +123 -0
- package/templates/summary-table.md +28 -0
- package/templates/update-plan.md +61 -0
- package/templates/vuln-report.md +50 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Strategy — plans which pull requests to create from analysis output.
|
|
3
|
+
*
|
|
4
|
+
* Strategy:
|
|
5
|
+
* 1. Security fixes -> separate PRs (highest priority)
|
|
6
|
+
* 2. Grouped dependency updates -> one PR per group
|
|
7
|
+
* 3. Individual dependency updates -> one PR per package
|
|
8
|
+
* 4. Migration PRs -> one PR per migration phase
|
|
9
|
+
*
|
|
10
|
+
* Requirements: 12.1, 12.2, 12.3, 12.5
|
|
11
|
+
*/
|
|
12
|
+
import type { OutputSchema, UpdateItem, RecommendedChange, PRType } from '../schemas/output.schema.js';
|
|
13
|
+
export interface PRPolicy {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
maxOpenPRs: number;
|
|
16
|
+
groupUpdates: boolean;
|
|
17
|
+
separateSecurityPRs: boolean;
|
|
18
|
+
createMigrationPRs: boolean;
|
|
19
|
+
labels: string[];
|
|
20
|
+
reviewers: string[];
|
|
21
|
+
draft: boolean;
|
|
22
|
+
branchPrefix: string;
|
|
23
|
+
}
|
|
24
|
+
export type PRItemKind = {
|
|
25
|
+
kind: 'update';
|
|
26
|
+
update: UpdateItem;
|
|
27
|
+
} | {
|
|
28
|
+
kind: 'migration';
|
|
29
|
+
recommendation: RecommendedChange;
|
|
30
|
+
phaseNumber: number;
|
|
31
|
+
} | {
|
|
32
|
+
kind: 'security';
|
|
33
|
+
update: UpdateItem;
|
|
34
|
+
};
|
|
35
|
+
export interface PRPlan {
|
|
36
|
+
type: PRType;
|
|
37
|
+
/** Unique branch name (Property 26) */
|
|
38
|
+
branchName: string;
|
|
39
|
+
/** Items included in this PR */
|
|
40
|
+
items: PRItemKind[];
|
|
41
|
+
/** Priority: higher = create first */
|
|
42
|
+
priority: number;
|
|
43
|
+
}
|
|
44
|
+
export interface PRStrategyInput {
|
|
45
|
+
output: OutputSchema;
|
|
46
|
+
policy: PRPolicy;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Plan which PRs to create from the analysis output.
|
|
50
|
+
*
|
|
51
|
+
* Property 25: Security PRs separated when policy requires.
|
|
52
|
+
* Property 26: Branch name uniqueness.
|
|
53
|
+
* Property 27: Max open PRs respected.
|
|
54
|
+
*/
|
|
55
|
+
export declare function planPRs(input: PRStrategyInput): PRPlan[];
|
|
56
|
+
//# sourceMappingURL=pr-strategy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-strategy.d.ts","sourceRoot":"","sources":["../../src/pr-creator/pr-strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,MAAM,EACP,MAAM,6BAA6B,CAAC;AAMrC,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAMD;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,CA+GxD"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PR Strategy — plans which pull requests to create from analysis output.
|
|
3
|
+
*
|
|
4
|
+
* Strategy:
|
|
5
|
+
* 1. Security fixes -> separate PRs (highest priority)
|
|
6
|
+
* 2. Grouped dependency updates -> one PR per group
|
|
7
|
+
* 3. Individual dependency updates -> one PR per package
|
|
8
|
+
* 4. Migration PRs -> one PR per migration phase
|
|
9
|
+
*
|
|
10
|
+
* Requirements: 12.1, 12.2, 12.3, 12.5
|
|
11
|
+
*/
|
|
12
|
+
// ---------------------------------------------------------------------------
|
|
13
|
+
// planPRs
|
|
14
|
+
// ---------------------------------------------------------------------------
|
|
15
|
+
/**
|
|
16
|
+
* Plan which PRs to create from the analysis output.
|
|
17
|
+
*
|
|
18
|
+
* Property 25: Security PRs separated when policy requires.
|
|
19
|
+
* Property 26: Branch name uniqueness.
|
|
20
|
+
* Property 27: Max open PRs respected.
|
|
21
|
+
*/
|
|
22
|
+
export function planPRs(input) {
|
|
23
|
+
const { output, policy } = input;
|
|
24
|
+
const plans = [];
|
|
25
|
+
const usedBranches = new Set();
|
|
26
|
+
// ---- 1. Security update PRs ----
|
|
27
|
+
if (output.updatePlan && policy.separateSecurityPRs) {
|
|
28
|
+
const securityUpdates = output.updatePlan.updates.filter((u) => u.urgency === 'critical' || u.urgency === 'urgent');
|
|
29
|
+
for (const update of securityUpdates) {
|
|
30
|
+
const branch = uniqueBranch(`${policy.branchPrefix}fix/${sanitize(update.packageName)}`, usedBranches);
|
|
31
|
+
plans.push({
|
|
32
|
+
type: 'security-update',
|
|
33
|
+
branchName: branch,
|
|
34
|
+
items: [{ kind: 'security', update }],
|
|
35
|
+
priority: update.urgency === 'critical' ? 100 : 90,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
// ---- 2. Grouped dependency updates ----
|
|
40
|
+
if (output.updatePlan && policy.groupUpdates) {
|
|
41
|
+
const groups = output.updatePlan.groups;
|
|
42
|
+
for (const group of groups) {
|
|
43
|
+
// Skip items already handled as security PRs
|
|
44
|
+
const nonSecurityItems = policy.separateSecurityPRs
|
|
45
|
+
? group.items.filter((i) => i.urgency !== 'critical' && i.urgency !== 'urgent')
|
|
46
|
+
: group.items;
|
|
47
|
+
if (nonSecurityItems.length === 0)
|
|
48
|
+
continue;
|
|
49
|
+
const branch = uniqueBranch(`${policy.branchPrefix}chore/${sanitize(group.groupKey)}`, usedBranches);
|
|
50
|
+
plans.push({
|
|
51
|
+
type: 'grouped-update',
|
|
52
|
+
branchName: branch,
|
|
53
|
+
items: nonSecurityItems.map((u) => ({ kind: 'update', update: u })),
|
|
54
|
+
priority: 50,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// ---- 3. Individual dependency updates (not in groups) ----
|
|
59
|
+
if (output.updatePlan) {
|
|
60
|
+
const groupedPackages = new Set(output.updatePlan.groups.flatMap((g) => g.items.map((i) => i.packageName)));
|
|
61
|
+
const securityPackages = new Set(policy.separateSecurityPRs
|
|
62
|
+
? output.updatePlan.updates
|
|
63
|
+
.filter((u) => u.urgency === 'critical' || u.urgency === 'urgent')
|
|
64
|
+
.map((u) => u.packageName)
|
|
65
|
+
: []);
|
|
66
|
+
const individualUpdates = output.updatePlan.updates.filter((u) => !groupedPackages.has(u.packageName) && !securityPackages.has(u.packageName));
|
|
67
|
+
for (const update of individualUpdates) {
|
|
68
|
+
const branch = uniqueBranch(`${policy.branchPrefix}chore/${sanitize(update.packageName)}`, usedBranches);
|
|
69
|
+
plans.push({
|
|
70
|
+
type: 'dependency-update',
|
|
71
|
+
branchName: branch,
|
|
72
|
+
items: [{ kind: 'update', update }],
|
|
73
|
+
priority: 30,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// ---- 4. Migration PRs ----
|
|
78
|
+
if (policy.createMigrationPRs && output.migrationPlan.phases.length > 0) {
|
|
79
|
+
for (const phase of output.migrationPlan.phases) {
|
|
80
|
+
const branch = uniqueBranch(`${policy.branchPrefix}refactor/migration-phase-${phase.phase}`, usedBranches);
|
|
81
|
+
const items = phase.steps.map((step) => ({
|
|
82
|
+
kind: 'migration',
|
|
83
|
+
recommendation: output.recommendedChanges[step.recommendationIndex],
|
|
84
|
+
phaseNumber: phase.phase,
|
|
85
|
+
}));
|
|
86
|
+
plans.push({
|
|
87
|
+
type: 'migration',
|
|
88
|
+
branchName: branch,
|
|
89
|
+
items,
|
|
90
|
+
priority: 10,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Sort by priority descending (security first)
|
|
95
|
+
plans.sort((a, b) => b.priority - a.priority);
|
|
96
|
+
// Enforce maxOpenPRs (Property 27)
|
|
97
|
+
return plans.slice(0, policy.maxOpenPRs);
|
|
98
|
+
}
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
// Helpers
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
/**
|
|
103
|
+
* Sanitize a package name for use in a branch name.
|
|
104
|
+
*/
|
|
105
|
+
function sanitize(name) {
|
|
106
|
+
return name
|
|
107
|
+
.replace(/^@/, '')
|
|
108
|
+
.replace(/\//g, '-')
|
|
109
|
+
.replace(/[^a-zA-Z0-9._-]/g, '-')
|
|
110
|
+
.toLowerCase();
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Ensure branch name uniqueness (Property 26).
|
|
114
|
+
*/
|
|
115
|
+
function uniqueBranch(base, usedBranches) {
|
|
116
|
+
let branch = base;
|
|
117
|
+
let counter = 2;
|
|
118
|
+
while (usedBranches.has(branch)) {
|
|
119
|
+
branch = `${base}-${counter}`;
|
|
120
|
+
counter++;
|
|
121
|
+
}
|
|
122
|
+
usedBranches.add(branch);
|
|
123
|
+
return branch;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=pr-strategy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pr-strategy.js","sourceRoot":"","sources":["../../src/pr-creator/pr-strategy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* VibeCodingDomain — ISO 25010-aligned problem domains where hand-rolled code
|
|
4
|
+
* is most common and mature third-party libraries should be preferred.
|
|
5
|
+
*
|
|
6
|
+
* Classification principle: domains are NOT "tech stack" labels — they are
|
|
7
|
+
* "problem areas most likely to be hand-rolled and should use mature wheels".
|
|
8
|
+
*
|
|
9
|
+
* Covers two axes:
|
|
10
|
+
* - Product / Growth / UX (frontend code most likely to be hand-rolled)
|
|
11
|
+
* - Engineering / Architecture / Delivery (backend/platform code most likely unmaintainable)
|
|
12
|
+
*
|
|
13
|
+
* Maps to ISO 25010 quality characteristics:
|
|
14
|
+
* usability / performance / security / maintainability / reliability /
|
|
15
|
+
* compatibility / portability / functional suitability
|
|
16
|
+
*
|
|
17
|
+
* Naming: kebab-case throughout for README/API/TS type consistency.
|
|
18
|
+
*/
|
|
19
|
+
export declare const VibeCodingDomain: z.ZodEnum<["ux-completeness", "ui-aesthetics", "design-system", "theming-dark-mode", "a11y-accessibility", "responsive-mobile-ux", "empty-loading-error-states", "forms-ux", "validation-feedback", "navigation-information-architecture", "notifications-inapp", "tables-data-grid-ux", "filters-sort-search-ux", "onboarding-guided-tour", "seo", "i18n", "localization-ux", "content-marketing", "landing-page-conversion", "growth-hacking", "analytics-tracking", "attribution-measurement", "ab-testing-experimentation", "product-led-growth", "retention-lifecycle-crm", "referrals-virality", "agent-architecture", "frontend-architecture", "state-management", "data-fetching-caching", "error-handling-resilience", "realtime-collaboration", "file-upload-media", "search-discovery", "api-design-contracts", "backend-architecture", "database-orm-migrations", "caching-rate-limit", "jobs-queue-scheduler", "webhooks-integrations", "feature-flags-config", "multi-tenancy-saas", "auth-security", "permissions-rbac-ux", "security-hardening", "privacy-compliance", "fraud-abuse-prevention", "observability", "logging-tracing-metrics", "error-monitoring", "alerting-incident-response", "testing-strategy", "ci-cd-release", "devex-tooling", "documentation-sop", "code-quality-linting", "dependency-management", "performance-web-vitals", "backend-performance", "cost-optimization", "ai-model-serving", "ai-evaluation-observability", "rag-vector-search", "cross-border-ecommerce", "payments-billing", "marketplace-platform"]>;
|
|
20
|
+
export type VibeCodingDomain = z.infer<typeof VibeCodingDomain>;
|
|
21
|
+
export declare const InputSchema: z.ZodObject<{
|
|
22
|
+
projectMetadata: z.ZodObject<{
|
|
23
|
+
repoPath: z.ZodString;
|
|
24
|
+
languages: z.ZodArray<z.ZodString, "many">;
|
|
25
|
+
packageManagers: z.ZodArray<z.ZodString, "many">;
|
|
26
|
+
currentLibraries: z.ZodRecord<z.ZodString, z.ZodString>;
|
|
27
|
+
}, "strip", z.ZodTypeAny, {
|
|
28
|
+
repoPath: string;
|
|
29
|
+
languages: string[];
|
|
30
|
+
packageManagers: string[];
|
|
31
|
+
currentLibraries: Record<string, string>;
|
|
32
|
+
}, {
|
|
33
|
+
repoPath: string;
|
|
34
|
+
languages: string[];
|
|
35
|
+
packageManagers: string[];
|
|
36
|
+
currentLibraries: Record<string, string>;
|
|
37
|
+
}>;
|
|
38
|
+
optimizationGoals: z.ZodArray<z.ZodString, "many">;
|
|
39
|
+
constraints: z.ZodObject<{
|
|
40
|
+
licenseAllowlist: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
41
|
+
excludedLibraries: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
42
|
+
maxDependencyCount: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
}, "strip", z.ZodTypeAny, {
|
|
44
|
+
licenseAllowlist: string[];
|
|
45
|
+
excludedLibraries: string[];
|
|
46
|
+
maxDependencyCount?: number | undefined;
|
|
47
|
+
}, {
|
|
48
|
+
licenseAllowlist?: string[] | undefined;
|
|
49
|
+
excludedLibraries?: string[] | undefined;
|
|
50
|
+
maxDependencyCount?: number | undefined;
|
|
51
|
+
}>;
|
|
52
|
+
priorityFocusAreas: z.ZodDefault<z.ZodArray<z.ZodEnum<["ux-completeness", "ui-aesthetics", "design-system", "theming-dark-mode", "a11y-accessibility", "responsive-mobile-ux", "empty-loading-error-states", "forms-ux", "validation-feedback", "navigation-information-architecture", "notifications-inapp", "tables-data-grid-ux", "filters-sort-search-ux", "onboarding-guided-tour", "seo", "i18n", "localization-ux", "content-marketing", "landing-page-conversion", "growth-hacking", "analytics-tracking", "attribution-measurement", "ab-testing-experimentation", "product-led-growth", "retention-lifecycle-crm", "referrals-virality", "agent-architecture", "frontend-architecture", "state-management", "data-fetching-caching", "error-handling-resilience", "realtime-collaboration", "file-upload-media", "search-discovery", "api-design-contracts", "backend-architecture", "database-orm-migrations", "caching-rate-limit", "jobs-queue-scheduler", "webhooks-integrations", "feature-flags-config", "multi-tenancy-saas", "auth-security", "permissions-rbac-ux", "security-hardening", "privacy-compliance", "fraud-abuse-prevention", "observability", "logging-tracing-metrics", "error-monitoring", "alerting-incident-response", "testing-strategy", "ci-cd-release", "devex-tooling", "documentation-sop", "code-quality-linting", "dependency-management", "performance-web-vitals", "backend-performance", "cost-optimization", "ai-model-serving", "ai-evaluation-observability", "rag-vector-search", "cross-border-ecommerce", "payments-billing", "marketplace-platform"]>, "many">>;
|
|
53
|
+
/** User-defined custom domains beyond the official enum — extensibility escape hatch */
|
|
54
|
+
customDomains: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
55
|
+
impactWeights: z.ZodOptional<z.ZodObject<{
|
|
56
|
+
scalability: z.ZodNumber;
|
|
57
|
+
performance: z.ZodNumber;
|
|
58
|
+
security: z.ZodNumber;
|
|
59
|
+
maintainability: z.ZodNumber;
|
|
60
|
+
feature_richness: z.ZodNumber;
|
|
61
|
+
ux: z.ZodNumber;
|
|
62
|
+
ui_aesthetics: z.ZodNumber;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
scalability: number;
|
|
65
|
+
performance: number;
|
|
66
|
+
security: number;
|
|
67
|
+
maintainability: number;
|
|
68
|
+
feature_richness: number;
|
|
69
|
+
ux: number;
|
|
70
|
+
ui_aesthetics: number;
|
|
71
|
+
}, {
|
|
72
|
+
scalability: number;
|
|
73
|
+
performance: number;
|
|
74
|
+
security: number;
|
|
75
|
+
maintainability: number;
|
|
76
|
+
feature_richness: number;
|
|
77
|
+
ux: number;
|
|
78
|
+
ui_aesthetics: number;
|
|
79
|
+
}>>;
|
|
80
|
+
updatePolicy: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
82
|
+
defaultStrategy: z.ZodDefault<z.ZodEnum<["patch", "minor", "major", "all"]>>;
|
|
83
|
+
packageOverrides: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodEnum<["patch", "minor", "major", "all"]>>>;
|
|
84
|
+
maxUpdates: z.ZodDefault<z.ZodNumber>;
|
|
85
|
+
minAgeDays: z.ZodDefault<z.ZodNumber>;
|
|
86
|
+
groupRelatedPackages: z.ZodDefault<z.ZodBoolean>;
|
|
87
|
+
pinned: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
88
|
+
}, "strip", z.ZodTypeAny, {
|
|
89
|
+
enabled: boolean;
|
|
90
|
+
defaultStrategy: "patch" | "minor" | "major" | "all";
|
|
91
|
+
packageOverrides: Record<string, "patch" | "minor" | "major" | "all">;
|
|
92
|
+
maxUpdates: number;
|
|
93
|
+
minAgeDays: number;
|
|
94
|
+
groupRelatedPackages: boolean;
|
|
95
|
+
pinned: string[];
|
|
96
|
+
}, {
|
|
97
|
+
enabled?: boolean | undefined;
|
|
98
|
+
defaultStrategy?: "patch" | "minor" | "major" | "all" | undefined;
|
|
99
|
+
packageOverrides?: Record<string, "patch" | "minor" | "major" | "all"> | undefined;
|
|
100
|
+
maxUpdates?: number | undefined;
|
|
101
|
+
minAgeDays?: number | undefined;
|
|
102
|
+
groupRelatedPackages?: boolean | undefined;
|
|
103
|
+
pinned?: string[] | undefined;
|
|
104
|
+
}>>;
|
|
105
|
+
prPolicy: z.ZodOptional<z.ZodObject<{
|
|
106
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
107
|
+
maxOpenPRs: z.ZodDefault<z.ZodNumber>;
|
|
108
|
+
groupUpdates: z.ZodDefault<z.ZodBoolean>;
|
|
109
|
+
separateSecurityPRs: z.ZodDefault<z.ZodBoolean>;
|
|
110
|
+
createMigrationPRs: z.ZodDefault<z.ZodBoolean>;
|
|
111
|
+
labels: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
112
|
+
reviewers: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
113
|
+
draft: z.ZodDefault<z.ZodBoolean>;
|
|
114
|
+
branchPrefix: z.ZodDefault<z.ZodString>;
|
|
115
|
+
platform: z.ZodDefault<z.ZodEnum<["github", "gitlab", "bitbucket"]>>;
|
|
116
|
+
}, "strip", z.ZodTypeAny, {
|
|
117
|
+
enabled: boolean;
|
|
118
|
+
maxOpenPRs: number;
|
|
119
|
+
groupUpdates: boolean;
|
|
120
|
+
separateSecurityPRs: boolean;
|
|
121
|
+
createMigrationPRs: boolean;
|
|
122
|
+
labels: string[];
|
|
123
|
+
reviewers: string[];
|
|
124
|
+
draft: boolean;
|
|
125
|
+
branchPrefix: string;
|
|
126
|
+
platform: "github" | "gitlab" | "bitbucket";
|
|
127
|
+
}, {
|
|
128
|
+
enabled?: boolean | undefined;
|
|
129
|
+
maxOpenPRs?: number | undefined;
|
|
130
|
+
groupUpdates?: boolean | undefined;
|
|
131
|
+
separateSecurityPRs?: boolean | undefined;
|
|
132
|
+
createMigrationPRs?: boolean | undefined;
|
|
133
|
+
labels?: string[] | undefined;
|
|
134
|
+
reviewers?: string[] | undefined;
|
|
135
|
+
draft?: boolean | undefined;
|
|
136
|
+
branchPrefix?: string | undefined;
|
|
137
|
+
platform?: "github" | "gitlab" | "bitbucket" | undefined;
|
|
138
|
+
}>>;
|
|
139
|
+
}, "strip", z.ZodTypeAny, {
|
|
140
|
+
projectMetadata: {
|
|
141
|
+
repoPath: string;
|
|
142
|
+
languages: string[];
|
|
143
|
+
packageManagers: string[];
|
|
144
|
+
currentLibraries: Record<string, string>;
|
|
145
|
+
};
|
|
146
|
+
optimizationGoals: string[];
|
|
147
|
+
constraints: {
|
|
148
|
+
licenseAllowlist: string[];
|
|
149
|
+
excludedLibraries: string[];
|
|
150
|
+
maxDependencyCount?: number | undefined;
|
|
151
|
+
};
|
|
152
|
+
priorityFocusAreas: ("ux-completeness" | "ui-aesthetics" | "design-system" | "theming-dark-mode" | "a11y-accessibility" | "responsive-mobile-ux" | "empty-loading-error-states" | "forms-ux" | "validation-feedback" | "navigation-information-architecture" | "notifications-inapp" | "tables-data-grid-ux" | "filters-sort-search-ux" | "onboarding-guided-tour" | "seo" | "i18n" | "localization-ux" | "content-marketing" | "landing-page-conversion" | "growth-hacking" | "analytics-tracking" | "attribution-measurement" | "ab-testing-experimentation" | "product-led-growth" | "retention-lifecycle-crm" | "referrals-virality" | "agent-architecture" | "frontend-architecture" | "state-management" | "data-fetching-caching" | "error-handling-resilience" | "realtime-collaboration" | "file-upload-media" | "search-discovery" | "api-design-contracts" | "backend-architecture" | "database-orm-migrations" | "caching-rate-limit" | "jobs-queue-scheduler" | "webhooks-integrations" | "feature-flags-config" | "multi-tenancy-saas" | "auth-security" | "permissions-rbac-ux" | "security-hardening" | "privacy-compliance" | "fraud-abuse-prevention" | "observability" | "logging-tracing-metrics" | "error-monitoring" | "alerting-incident-response" | "testing-strategy" | "ci-cd-release" | "devex-tooling" | "documentation-sop" | "code-quality-linting" | "dependency-management" | "performance-web-vitals" | "backend-performance" | "cost-optimization" | "ai-model-serving" | "ai-evaluation-observability" | "rag-vector-search" | "cross-border-ecommerce" | "payments-billing" | "marketplace-platform")[];
|
|
153
|
+
customDomains?: string[] | undefined;
|
|
154
|
+
impactWeights?: {
|
|
155
|
+
scalability: number;
|
|
156
|
+
performance: number;
|
|
157
|
+
security: number;
|
|
158
|
+
maintainability: number;
|
|
159
|
+
feature_richness: number;
|
|
160
|
+
ux: number;
|
|
161
|
+
ui_aesthetics: number;
|
|
162
|
+
} | undefined;
|
|
163
|
+
updatePolicy?: {
|
|
164
|
+
enabled: boolean;
|
|
165
|
+
defaultStrategy: "patch" | "minor" | "major" | "all";
|
|
166
|
+
packageOverrides: Record<string, "patch" | "minor" | "major" | "all">;
|
|
167
|
+
maxUpdates: number;
|
|
168
|
+
minAgeDays: number;
|
|
169
|
+
groupRelatedPackages: boolean;
|
|
170
|
+
pinned: string[];
|
|
171
|
+
} | undefined;
|
|
172
|
+
prPolicy?: {
|
|
173
|
+
enabled: boolean;
|
|
174
|
+
maxOpenPRs: number;
|
|
175
|
+
groupUpdates: boolean;
|
|
176
|
+
separateSecurityPRs: boolean;
|
|
177
|
+
createMigrationPRs: boolean;
|
|
178
|
+
labels: string[];
|
|
179
|
+
reviewers: string[];
|
|
180
|
+
draft: boolean;
|
|
181
|
+
branchPrefix: string;
|
|
182
|
+
platform: "github" | "gitlab" | "bitbucket";
|
|
183
|
+
} | undefined;
|
|
184
|
+
}, {
|
|
185
|
+
projectMetadata: {
|
|
186
|
+
repoPath: string;
|
|
187
|
+
languages: string[];
|
|
188
|
+
packageManagers: string[];
|
|
189
|
+
currentLibraries: Record<string, string>;
|
|
190
|
+
};
|
|
191
|
+
optimizationGoals: string[];
|
|
192
|
+
constraints: {
|
|
193
|
+
licenseAllowlist?: string[] | undefined;
|
|
194
|
+
excludedLibraries?: string[] | undefined;
|
|
195
|
+
maxDependencyCount?: number | undefined;
|
|
196
|
+
};
|
|
197
|
+
priorityFocusAreas?: ("ux-completeness" | "ui-aesthetics" | "design-system" | "theming-dark-mode" | "a11y-accessibility" | "responsive-mobile-ux" | "empty-loading-error-states" | "forms-ux" | "validation-feedback" | "navigation-information-architecture" | "notifications-inapp" | "tables-data-grid-ux" | "filters-sort-search-ux" | "onboarding-guided-tour" | "seo" | "i18n" | "localization-ux" | "content-marketing" | "landing-page-conversion" | "growth-hacking" | "analytics-tracking" | "attribution-measurement" | "ab-testing-experimentation" | "product-led-growth" | "retention-lifecycle-crm" | "referrals-virality" | "agent-architecture" | "frontend-architecture" | "state-management" | "data-fetching-caching" | "error-handling-resilience" | "realtime-collaboration" | "file-upload-media" | "search-discovery" | "api-design-contracts" | "backend-architecture" | "database-orm-migrations" | "caching-rate-limit" | "jobs-queue-scheduler" | "webhooks-integrations" | "feature-flags-config" | "multi-tenancy-saas" | "auth-security" | "permissions-rbac-ux" | "security-hardening" | "privacy-compliance" | "fraud-abuse-prevention" | "observability" | "logging-tracing-metrics" | "error-monitoring" | "alerting-incident-response" | "testing-strategy" | "ci-cd-release" | "devex-tooling" | "documentation-sop" | "code-quality-linting" | "dependency-management" | "performance-web-vitals" | "backend-performance" | "cost-optimization" | "ai-model-serving" | "ai-evaluation-observability" | "rag-vector-search" | "cross-border-ecommerce" | "payments-billing" | "marketplace-platform")[] | undefined;
|
|
198
|
+
customDomains?: string[] | undefined;
|
|
199
|
+
impactWeights?: {
|
|
200
|
+
scalability: number;
|
|
201
|
+
performance: number;
|
|
202
|
+
security: number;
|
|
203
|
+
maintainability: number;
|
|
204
|
+
feature_richness: number;
|
|
205
|
+
ux: number;
|
|
206
|
+
ui_aesthetics: number;
|
|
207
|
+
} | undefined;
|
|
208
|
+
updatePolicy?: {
|
|
209
|
+
enabled?: boolean | undefined;
|
|
210
|
+
defaultStrategy?: "patch" | "minor" | "major" | "all" | undefined;
|
|
211
|
+
packageOverrides?: Record<string, "patch" | "minor" | "major" | "all"> | undefined;
|
|
212
|
+
maxUpdates?: number | undefined;
|
|
213
|
+
minAgeDays?: number | undefined;
|
|
214
|
+
groupRelatedPackages?: boolean | undefined;
|
|
215
|
+
pinned?: string[] | undefined;
|
|
216
|
+
} | undefined;
|
|
217
|
+
prPolicy?: {
|
|
218
|
+
enabled?: boolean | undefined;
|
|
219
|
+
maxOpenPRs?: number | undefined;
|
|
220
|
+
groupUpdates?: boolean | undefined;
|
|
221
|
+
separateSecurityPRs?: boolean | undefined;
|
|
222
|
+
createMigrationPRs?: boolean | undefined;
|
|
223
|
+
labels?: string[] | undefined;
|
|
224
|
+
reviewers?: string[] | undefined;
|
|
225
|
+
draft?: boolean | undefined;
|
|
226
|
+
branchPrefix?: string | undefined;
|
|
227
|
+
platform?: "github" | "gitlab" | "bitbucket" | undefined;
|
|
228
|
+
} | undefined;
|
|
229
|
+
}>;
|
|
230
|
+
export type InputSchema = z.infer<typeof InputSchema>;
|
|
231
|
+
//# sourceMappingURL=input.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/input.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,gBAAgB,i+CAwF3B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAEhE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IActB,wFAAwF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDxF,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* VibeCodingDomain — ISO 25010-aligned problem domains where hand-rolled code
|
|
4
|
+
* is most common and mature third-party libraries should be preferred.
|
|
5
|
+
*
|
|
6
|
+
* Classification principle: domains are NOT "tech stack" labels — they are
|
|
7
|
+
* "problem areas most likely to be hand-rolled and should use mature wheels".
|
|
8
|
+
*
|
|
9
|
+
* Covers two axes:
|
|
10
|
+
* - Product / Growth / UX (frontend code most likely to be hand-rolled)
|
|
11
|
+
* - Engineering / Architecture / Delivery (backend/platform code most likely unmaintainable)
|
|
12
|
+
*
|
|
13
|
+
* Maps to ISO 25010 quality characteristics:
|
|
14
|
+
* usability / performance / security / maintainability / reliability /
|
|
15
|
+
* compatibility / portability / functional suitability
|
|
16
|
+
*
|
|
17
|
+
* Naming: kebab-case throughout for README/API/TS type consistency.
|
|
18
|
+
*/
|
|
19
|
+
export const VibeCodingDomain = z.enum([
|
|
20
|
+
// A. UX Completeness & Design System (Usability / UI quality)
|
|
21
|
+
'ux-completeness',
|
|
22
|
+
'ui-aesthetics',
|
|
23
|
+
'design-system',
|
|
24
|
+
'theming-dark-mode',
|
|
25
|
+
'a11y-accessibility',
|
|
26
|
+
'responsive-mobile-ux',
|
|
27
|
+
'empty-loading-error-states',
|
|
28
|
+
'forms-ux',
|
|
29
|
+
'validation-feedback',
|
|
30
|
+
'navigation-information-architecture',
|
|
31
|
+
'notifications-inapp',
|
|
32
|
+
'tables-data-grid-ux',
|
|
33
|
+
'filters-sort-search-ux',
|
|
34
|
+
'onboarding-guided-tour',
|
|
35
|
+
// B. SEO / i18n / Content (Discoverability / Global-ready)
|
|
36
|
+
'seo',
|
|
37
|
+
'i18n',
|
|
38
|
+
'localization-ux',
|
|
39
|
+
'content-marketing',
|
|
40
|
+
'landing-page-conversion',
|
|
41
|
+
// C. Growth & Data (Experimentation / Analytics)
|
|
42
|
+
'growth-hacking',
|
|
43
|
+
'analytics-tracking',
|
|
44
|
+
'attribution-measurement',
|
|
45
|
+
'ab-testing-experimentation',
|
|
46
|
+
'product-led-growth',
|
|
47
|
+
'retention-lifecycle-crm',
|
|
48
|
+
'referrals-virality',
|
|
49
|
+
// D. App / Frontend Architecture (Maintainability / Modularity)
|
|
50
|
+
'agent-architecture',
|
|
51
|
+
'frontend-architecture',
|
|
52
|
+
'state-management',
|
|
53
|
+
'data-fetching-caching',
|
|
54
|
+
'error-handling-resilience',
|
|
55
|
+
'realtime-collaboration',
|
|
56
|
+
'file-upload-media',
|
|
57
|
+
'search-discovery',
|
|
58
|
+
// E. Backend / Platform (Scalability / Reliability / Compatibility)
|
|
59
|
+
'api-design-contracts',
|
|
60
|
+
'backend-architecture',
|
|
61
|
+
'database-orm-migrations',
|
|
62
|
+
'caching-rate-limit',
|
|
63
|
+
'jobs-queue-scheduler',
|
|
64
|
+
'webhooks-integrations',
|
|
65
|
+
'feature-flags-config',
|
|
66
|
+
'multi-tenancy-saas',
|
|
67
|
+
// F. Security / Compliance (Security)
|
|
68
|
+
'auth-security',
|
|
69
|
+
'permissions-rbac-ux',
|
|
70
|
+
'security-hardening',
|
|
71
|
+
'privacy-compliance',
|
|
72
|
+
'fraud-abuse-prevention',
|
|
73
|
+
// G. Observability / Ops (Reliability / Operability)
|
|
74
|
+
'observability',
|
|
75
|
+
'logging-tracing-metrics',
|
|
76
|
+
'error-monitoring',
|
|
77
|
+
'alerting-incident-response',
|
|
78
|
+
// H. Delivery / Quality / DevEx (Maintainability / DevEx)
|
|
79
|
+
'testing-strategy',
|
|
80
|
+
'ci-cd-release',
|
|
81
|
+
'devex-tooling',
|
|
82
|
+
'documentation-sop',
|
|
83
|
+
'code-quality-linting',
|
|
84
|
+
'dependency-management',
|
|
85
|
+
// I. Performance / Cost (Performance efficiency)
|
|
86
|
+
'performance-web-vitals',
|
|
87
|
+
'backend-performance',
|
|
88
|
+
'cost-optimization',
|
|
89
|
+
// J. AI Engineering
|
|
90
|
+
'ai-model-serving',
|
|
91
|
+
'ai-evaluation-observability',
|
|
92
|
+
'rag-vector-search',
|
|
93
|
+
// K. Business domains (optional — marketing tags, may not participate in rules)
|
|
94
|
+
'cross-border-ecommerce',
|
|
95
|
+
'payments-billing',
|
|
96
|
+
'marketplace-platform',
|
|
97
|
+
]);
|
|
98
|
+
export const InputSchema = z.object({
|
|
99
|
+
projectMetadata: z.object({
|
|
100
|
+
repoPath: z.string().min(1),
|
|
101
|
+
languages: z.array(z.string()).min(1),
|
|
102
|
+
packageManagers: z.array(z.string()).min(1),
|
|
103
|
+
currentLibraries: z.record(z.string(), z.string()), // name -> version
|
|
104
|
+
}),
|
|
105
|
+
optimizationGoals: z.array(z.string()).min(1),
|
|
106
|
+
constraints: z.object({
|
|
107
|
+
licenseAllowlist: z.array(z.string()).default([]),
|
|
108
|
+
excludedLibraries: z.array(z.string()).default([]),
|
|
109
|
+
maxDependencyCount: z.number().int().positive().optional(),
|
|
110
|
+
}),
|
|
111
|
+
priorityFocusAreas: z.array(VibeCodingDomain).default([]),
|
|
112
|
+
/** User-defined custom domains beyond the official enum — extensibility escape hatch */
|
|
113
|
+
customDomains: z.array(z.string().min(1)).optional(),
|
|
114
|
+
impactWeights: z
|
|
115
|
+
.object({
|
|
116
|
+
scalability: z.number().min(0).max(1),
|
|
117
|
+
performance: z.number().min(0).max(1),
|
|
118
|
+
security: z.number().min(0).max(1),
|
|
119
|
+
maintainability: z.number().min(0).max(1),
|
|
120
|
+
feature_richness: z.number().min(0).max(1),
|
|
121
|
+
ux: z.number().min(0).max(1),
|
|
122
|
+
ui_aesthetics: z.number().min(0).max(1),
|
|
123
|
+
})
|
|
124
|
+
.optional(),
|
|
125
|
+
// -------------------------------------------------------------------------
|
|
126
|
+
// Phase 2: Auto-Update Policy
|
|
127
|
+
// -------------------------------------------------------------------------
|
|
128
|
+
updatePolicy: z
|
|
129
|
+
.object({
|
|
130
|
+
enabled: z.boolean().default(false),
|
|
131
|
+
defaultStrategy: z.enum(['patch', 'minor', 'major', 'all']).default('minor'),
|
|
132
|
+
packageOverrides: z
|
|
133
|
+
.record(z.string(), z.enum(['patch', 'minor', 'major', 'all']))
|
|
134
|
+
.default({}),
|
|
135
|
+
maxUpdates: z.number().int().positive().default(50),
|
|
136
|
+
minAgeDays: z.number().int().nonnegative().default(3),
|
|
137
|
+
groupRelatedPackages: z.boolean().default(true),
|
|
138
|
+
pinned: z.array(z.string()).default([]),
|
|
139
|
+
})
|
|
140
|
+
.optional(),
|
|
141
|
+
// -------------------------------------------------------------------------
|
|
142
|
+
// Phase 2: PR Auto-Creation Policy
|
|
143
|
+
// -------------------------------------------------------------------------
|
|
144
|
+
prPolicy: z
|
|
145
|
+
.object({
|
|
146
|
+
enabled: z.boolean().default(false),
|
|
147
|
+
maxOpenPRs: z.number().int().positive().default(10),
|
|
148
|
+
groupUpdates: z.boolean().default(true),
|
|
149
|
+
separateSecurityPRs: z.boolean().default(true),
|
|
150
|
+
createMigrationPRs: z.boolean().default(false),
|
|
151
|
+
labels: z.array(z.string()).default(['next-unicorn', 'dependencies']),
|
|
152
|
+
reviewers: z.array(z.string()).default([]),
|
|
153
|
+
draft: z.boolean().default(true),
|
|
154
|
+
branchPrefix: z.string().default('next-unicorn/'),
|
|
155
|
+
platform: z.enum(['github', 'gitlab', 'bitbucket']).default('github'),
|
|
156
|
+
})
|
|
157
|
+
.optional(),
|
|
158
|
+
});
|
|
159
|
+
//# sourceMappingURL=input.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.schema.js","sourceRoot":"","sources":["../../src/schemas/input.schema.ts"],"names":[],"mappings":"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"}
|