agent-bober 0.1.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/.claude-plugin/plugin.json +9 -0
- package/LICENSE +21 -0
- package/README.md +495 -0
- package/agents/bober-evaluator.md +323 -0
- package/agents/bober-generator.md +245 -0
- package/agents/bober-planner.md +248 -0
- package/dist/cli/commands/eval.d.ts +6 -0
- package/dist/cli/commands/eval.d.ts.map +1 -0
- package/dist/cli/commands/eval.js +129 -0
- package/dist/cli/commands/eval.js.map +1 -0
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +547 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +5 -0
- package/dist/cli/commands/plan.d.ts.map +1 -0
- package/dist/cli/commands/plan.js +87 -0
- package/dist/cli/commands/plan.js.map +1 -0
- package/dist/cli/commands/run.d.ts +5 -0
- package/dist/cli/commands/run.d.ts.map +1 -0
- package/dist/cli/commands/run.js +120 -0
- package/dist/cli/commands/run.js.map +1 -0
- package/dist/cli/commands/sprint.d.ts +6 -0
- package/dist/cli/commands/sprint.d.ts.map +1 -0
- package/dist/cli/commands/sprint.js +206 -0
- package/dist/cli/commands/sprint.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +124 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/defaults.d.ts +15 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +226 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +18 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +189 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/schema.d.ts +904 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +181 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/contracts/eval-result.d.ts +205 -0
- package/dist/contracts/eval-result.d.ts.map +1 -0
- package/dist/contracts/eval-result.js +87 -0
- package/dist/contracts/eval-result.js.map +1 -0
- package/dist/contracts/index.d.ts +4 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +16 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/spec.d.ts +101 -0
- package/dist/contracts/spec.d.ts.map +1 -0
- package/dist/contracts/spec.js +51 -0
- package/dist/contracts/spec.js.map +1 -0
- package/dist/contracts/sprint-contract.d.ts +141 -0
- package/dist/contracts/sprint-contract.d.ts.map +1 -0
- package/dist/contracts/sprint-contract.js +80 -0
- package/dist/contracts/sprint-contract.js.map +1 -0
- package/dist/evaluators/builtin/api-check.d.ts +13 -0
- package/dist/evaluators/builtin/api-check.d.ts.map +1 -0
- package/dist/evaluators/builtin/api-check.js +152 -0
- package/dist/evaluators/builtin/api-check.js.map +1 -0
- package/dist/evaluators/builtin/build-check.d.ts +17 -0
- package/dist/evaluators/builtin/build-check.d.ts.map +1 -0
- package/dist/evaluators/builtin/build-check.js +155 -0
- package/dist/evaluators/builtin/build-check.js.map +1 -0
- package/dist/evaluators/builtin/command-runner.d.ts +26 -0
- package/dist/evaluators/builtin/command-runner.d.ts.map +1 -0
- package/dist/evaluators/builtin/command-runner.js +114 -0
- package/dist/evaluators/builtin/command-runner.js.map +1 -0
- package/dist/evaluators/builtin/lint.d.ts +17 -0
- package/dist/evaluators/builtin/lint.d.ts.map +1 -0
- package/dist/evaluators/builtin/lint.js +264 -0
- package/dist/evaluators/builtin/lint.js.map +1 -0
- package/dist/evaluators/builtin/playwright.d.ts +16 -0
- package/dist/evaluators/builtin/playwright.d.ts.map +1 -0
- package/dist/evaluators/builtin/playwright.js +238 -0
- package/dist/evaluators/builtin/playwright.js.map +1 -0
- package/dist/evaluators/builtin/typescript-check.d.ts +12 -0
- package/dist/evaluators/builtin/typescript-check.d.ts.map +1 -0
- package/dist/evaluators/builtin/typescript-check.js +155 -0
- package/dist/evaluators/builtin/typescript-check.js.map +1 -0
- package/dist/evaluators/builtin/unit-test.d.ts +18 -0
- package/dist/evaluators/builtin/unit-test.d.ts.map +1 -0
- package/dist/evaluators/builtin/unit-test.js +279 -0
- package/dist/evaluators/builtin/unit-test.js.map +1 -0
- package/dist/evaluators/index.d.ts +11 -0
- package/dist/evaluators/index.d.ts.map +1 -0
- package/dist/evaluators/index.js +13 -0
- package/dist/evaluators/index.js.map +1 -0
- package/dist/evaluators/plugin-interface.d.ts +50 -0
- package/dist/evaluators/plugin-interface.d.ts.map +1 -0
- package/dist/evaluators/plugin-interface.js +2 -0
- package/dist/evaluators/plugin-interface.js.map +1 -0
- package/dist/evaluators/plugin-loader.d.ts +18 -0
- package/dist/evaluators/plugin-loader.d.ts.map +1 -0
- package/dist/evaluators/plugin-loader.js +107 -0
- package/dist/evaluators/plugin-loader.js.map +1 -0
- package/dist/evaluators/registry.d.ts +78 -0
- package/dist/evaluators/registry.d.ts.map +1 -0
- package/dist/evaluators/registry.js +238 -0
- package/dist/evaluators/registry.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/context-handoff.d.ts +543 -0
- package/dist/orchestrator/context-handoff.d.ts.map +1 -0
- package/dist/orchestrator/context-handoff.js +133 -0
- package/dist/orchestrator/context-handoff.js.map +1 -0
- package/dist/orchestrator/evaluator-agent.d.ts +15 -0
- package/dist/orchestrator/evaluator-agent.d.ts.map +1 -0
- package/dist/orchestrator/evaluator-agent.js +233 -0
- package/dist/orchestrator/evaluator-agent.js.map +1 -0
- package/dist/orchestrator/generator-agent.d.ts +16 -0
- package/dist/orchestrator/generator-agent.d.ts.map +1 -0
- package/dist/orchestrator/generator-agent.js +147 -0
- package/dist/orchestrator/generator-agent.js.map +1 -0
- package/dist/orchestrator/pipeline.d.ts +24 -0
- package/dist/orchestrator/pipeline.d.ts.map +1 -0
- package/dist/orchestrator/pipeline.js +290 -0
- package/dist/orchestrator/pipeline.js.map +1 -0
- package/dist/orchestrator/planner-agent.d.ts +10 -0
- package/dist/orchestrator/planner-agent.d.ts.map +1 -0
- package/dist/orchestrator/planner-agent.js +187 -0
- package/dist/orchestrator/planner-agent.js.map +1 -0
- package/dist/state/helpers.d.ts +5 -0
- package/dist/state/helpers.d.ts.map +1 -0
- package/dist/state/helpers.js +8 -0
- package/dist/state/helpers.js.map +1 -0
- package/dist/state/history.d.ts +39 -0
- package/dist/state/history.d.ts.map +1 -0
- package/dist/state/history.js +162 -0
- package/dist/state/history.js.map +1 -0
- package/dist/state/index.d.ts +8 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +22 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/plan-state.d.ts +21 -0
- package/dist/state/plan-state.d.ts.map +1 -0
- package/dist/state/plan-state.js +108 -0
- package/dist/state/plan-state.js.map +1 -0
- package/dist/state/sprint-state.d.ts +20 -0
- package/dist/state/sprint-state.d.ts.map +1 -0
- package/dist/state/sprint-state.js +98 -0
- package/dist/state/sprint-state.js.map +1 -0
- package/dist/utils/fs.d.ts +31 -0
- package/dist/utils/fs.d.ts.map +1 -0
- package/dist/utils/fs.js +67 -0
- package/dist/utils/fs.js.map +1 -0
- package/dist/utils/git.d.ts +35 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +84 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +45 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +73 -0
- package/dist/utils/logger.js.map +1 -0
- package/hooks/hooks.json +10 -0
- package/package.json +67 -0
- package/scripts/detect-stack.sh +287 -0
- package/scripts/init-project.sh +206 -0
- package/scripts/run-eval.sh +175 -0
- package/skills/bober.anchor/SKILL.md +365 -0
- package/skills/bober.anchor/references/anchor-guide.md +567 -0
- package/skills/bober.brownfield/SKILL.md +422 -0
- package/skills/bober.brownfield/references/codebase-analysis.md +304 -0
- package/skills/bober.eval/SKILL.md +235 -0
- package/skills/bober.eval/references/eval-strategies.md +407 -0
- package/skills/bober.eval/references/feedback-format.md +182 -0
- package/skills/bober.plan/SKILL.md +244 -0
- package/skills/bober.plan/references/clarification-guide.md +124 -0
- package/skills/bober.plan/references/spec-schema.md +253 -0
- package/skills/bober.react/SKILL.md +330 -0
- package/skills/bober.react/references/react-scaffold.md +344 -0
- package/skills/bober.run/SKILL.md +303 -0
- package/skills/bober.solidity/SKILL.md +416 -0
- package/skills/bober.solidity/references/solidity-guide.md +487 -0
- package/skills/bober.sprint/SKILL.md +280 -0
- package/skills/bober.sprint/references/contract-schema.md +251 -0
- package/templates/base/CLAUDE.md +20 -0
- package/templates/base/bober.config.json +35 -0
- package/templates/brownfield/CLAUDE.md +34 -0
- package/templates/brownfield/bober.config.json +37 -0
- package/templates/presets/anchor/CLAUDE.md +163 -0
- package/templates/presets/anchor/bober.config.json +9 -0
- package/templates/presets/api-node/CLAUDE.md +153 -0
- package/templates/presets/api-node/bober.config.json +10 -0
- package/templates/presets/nextjs/CLAUDE.md +82 -0
- package/templates/presets/nextjs/bober.config.json +14 -0
- package/templates/presets/python-api/CLAUDE.md +202 -0
- package/templates/presets/python-api/bober.config.json +9 -0
- package/templates/presets/react-vite/CLAUDE.md +71 -0
- package/templates/presets/react-vite/bober.config.json +53 -0
- package/templates/presets/react-vite/scaffold/package.json +45 -0
- package/templates/presets/react-vite/scaffold/server/index.ts +38 -0
- package/templates/presets/react-vite/scaffold/server/tsconfig.json +24 -0
- package/templates/presets/react-vite/scaffold/src/App.tsx +37 -0
- package/templates/presets/react-vite/scaffold/src/index.html +12 -0
- package/templates/presets/react-vite/scaffold/src/main.tsx +12 -0
- package/templates/presets/react-vite/scaffold/tsconfig.json +27 -0
- package/templates/presets/react-vite/scaffold/vite.config.ts +34 -0
- package/templates/presets/solidity/CLAUDE.md +106 -0
- package/templates/presets/solidity/bober.config.json +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ── Enums & Primitives ──────────────────────────────────────────────
|
|
3
|
+
export const ProjectModeSchema = z.enum(["greenfield", "brownfield"]);
|
|
4
|
+
export const StackSchema = z.object({
|
|
5
|
+
frontend: z.string().optional(),
|
|
6
|
+
backend: z.string().optional(),
|
|
7
|
+
blockchain: z.string().optional(),
|
|
8
|
+
testing: z.string().optional(),
|
|
9
|
+
database: z.string().optional(),
|
|
10
|
+
language: z.string().optional(),
|
|
11
|
+
other: z.array(z.string()).optional(),
|
|
12
|
+
});
|
|
13
|
+
export const ModelChoiceSchema = z.enum([
|
|
14
|
+
"sonnet",
|
|
15
|
+
"opus",
|
|
16
|
+
"haiku",
|
|
17
|
+
"inherit",
|
|
18
|
+
]);
|
|
19
|
+
export const GeneratorModelSchema = z.enum(["sonnet", "opus", "haiku"]);
|
|
20
|
+
export const SprintSizeSchema = z.enum(["small", "medium", "large"]);
|
|
21
|
+
export const ContextResetSchema = z.enum([
|
|
22
|
+
"always",
|
|
23
|
+
"on-threshold",
|
|
24
|
+
"never",
|
|
25
|
+
]);
|
|
26
|
+
/**
|
|
27
|
+
* Well-known built-in evaluator strategy types.
|
|
28
|
+
* The type field also accepts ANY string — unknown types are resolved
|
|
29
|
+
* by looking for a matching registered plugin or the `command` field.
|
|
30
|
+
*/
|
|
31
|
+
export const BUILTIN_STRATEGY_TYPES = [
|
|
32
|
+
"typecheck",
|
|
33
|
+
"lint",
|
|
34
|
+
"unit-test",
|
|
35
|
+
"playwright",
|
|
36
|
+
"api-check",
|
|
37
|
+
"build",
|
|
38
|
+
"custom",
|
|
39
|
+
];
|
|
40
|
+
export const EvalStrategyTypeSchema = z.string().min(1);
|
|
41
|
+
// ── Eval Strategy ───────────────────────────────────────────────────
|
|
42
|
+
export const EvalStrategySchema = z.object({
|
|
43
|
+
/** Strategy type — built-in name OR any custom name (e.g. "k6", "anchor-verify", "slither"). */
|
|
44
|
+
type: EvalStrategyTypeSchema,
|
|
45
|
+
/** Path to a custom plugin module (for type "custom" or any non-built-in type). */
|
|
46
|
+
plugin: z.string().optional(),
|
|
47
|
+
/** Shell command to run directly — shorthand alternative to writing a plugin file. */
|
|
48
|
+
command: z.string().optional(),
|
|
49
|
+
/** Whether this strategy must pass for the sprint to pass. */
|
|
50
|
+
required: z.boolean(),
|
|
51
|
+
/** Arbitrary config passed to the evaluator plugin. */
|
|
52
|
+
config: z.record(z.string(), z.unknown()).optional(),
|
|
53
|
+
/** Human-readable label (defaults to type if not set). */
|
|
54
|
+
label: z.string().optional(),
|
|
55
|
+
});
|
|
56
|
+
// ── Section Schemas ─────────────────────────────────────────────────
|
|
57
|
+
export const ProjectSectionSchema = z.object({
|
|
58
|
+
name: z.string().min(1, "Project name is required"),
|
|
59
|
+
mode: ProjectModeSchema,
|
|
60
|
+
preset: z.string().optional(),
|
|
61
|
+
stack: StackSchema.optional(),
|
|
62
|
+
description: z.string().optional(),
|
|
63
|
+
});
|
|
64
|
+
export const PlannerSectionSchema = z.object({
|
|
65
|
+
maxClarifications: z.number().int().min(0).default(5),
|
|
66
|
+
model: ModelChoiceSchema.default("opus"),
|
|
67
|
+
contextFiles: z.array(z.string()).optional(),
|
|
68
|
+
});
|
|
69
|
+
export const GeneratorSectionSchema = z.object({
|
|
70
|
+
model: GeneratorModelSchema.default("sonnet"),
|
|
71
|
+
maxTurnsPerSprint: z.number().int().min(1).default(50),
|
|
72
|
+
autoCommit: z.boolean().default(true),
|
|
73
|
+
branchPattern: z.string().default("bober/{feature-name}"),
|
|
74
|
+
});
|
|
75
|
+
export const EvaluatorSectionSchema = z.object({
|
|
76
|
+
model: GeneratorModelSchema.default("sonnet"),
|
|
77
|
+
strategies: z.array(EvalStrategySchema),
|
|
78
|
+
maxIterations: z.number().int().min(1).default(3),
|
|
79
|
+
plugins: z.array(z.string()).optional(),
|
|
80
|
+
});
|
|
81
|
+
export const SprintSectionSchema = z.object({
|
|
82
|
+
maxSprints: z.number().int().min(1).default(10),
|
|
83
|
+
requireContracts: z.boolean().default(true),
|
|
84
|
+
sprintSize: SprintSizeSchema.default("medium"),
|
|
85
|
+
});
|
|
86
|
+
export const PipelineSectionSchema = z.object({
|
|
87
|
+
maxIterations: z.number().int().min(1).default(20),
|
|
88
|
+
requireApproval: z.boolean().default(false),
|
|
89
|
+
contextReset: ContextResetSchema.default("always"),
|
|
90
|
+
});
|
|
91
|
+
export const CommandsSectionSchema = z.object({
|
|
92
|
+
install: z.string().optional(),
|
|
93
|
+
build: z.string().optional(),
|
|
94
|
+
test: z.string().optional(),
|
|
95
|
+
lint: z.string().optional(),
|
|
96
|
+
dev: z.string().optional(),
|
|
97
|
+
typecheck: z.string().optional(),
|
|
98
|
+
});
|
|
99
|
+
// ── Full Config ─────────────────────────────────────────────────────
|
|
100
|
+
export const BoberConfigSchema = z.object({
|
|
101
|
+
project: ProjectSectionSchema,
|
|
102
|
+
planner: PlannerSectionSchema,
|
|
103
|
+
generator: GeneratorSectionSchema,
|
|
104
|
+
evaluator: EvaluatorSectionSchema,
|
|
105
|
+
sprint: SprintSectionSchema,
|
|
106
|
+
pipeline: PipelineSectionSchema,
|
|
107
|
+
commands: CommandsSectionSchema,
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* Partial schema used for config files that rely on defaults.
|
|
111
|
+
* Allows every field to be optional except `project` which is always required.
|
|
112
|
+
*/
|
|
113
|
+
export const PartialBoberConfigSchema = BoberConfigSchema.deepPartial().extend({
|
|
114
|
+
project: z.object({
|
|
115
|
+
name: z.string().min(1, "Project name is required").optional(),
|
|
116
|
+
mode: ProjectModeSchema,
|
|
117
|
+
preset: z.string().optional(),
|
|
118
|
+
stack: StackSchema.optional(),
|
|
119
|
+
description: z.string().optional(),
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
// ── Factory ─────────────────────────────────────────────────────────
|
|
123
|
+
/**
|
|
124
|
+
* Create a full default config for a given project mode and optional preset.
|
|
125
|
+
* Callers can override any section by passing a partial config.
|
|
126
|
+
*/
|
|
127
|
+
export function createDefaultConfig(projectName, mode, preset, overrides = {}) {
|
|
128
|
+
const base = {
|
|
129
|
+
project: {
|
|
130
|
+
name: projectName,
|
|
131
|
+
mode,
|
|
132
|
+
preset,
|
|
133
|
+
},
|
|
134
|
+
planner: {
|
|
135
|
+
maxClarifications: 5,
|
|
136
|
+
model: "opus",
|
|
137
|
+
},
|
|
138
|
+
generator: {
|
|
139
|
+
model: "sonnet",
|
|
140
|
+
maxTurnsPerSprint: 50,
|
|
141
|
+
autoCommit: true,
|
|
142
|
+
branchPattern: "bober/{feature-name}",
|
|
143
|
+
},
|
|
144
|
+
evaluator: {
|
|
145
|
+
model: "sonnet",
|
|
146
|
+
strategies: defaultStrategiesForMode(mode, preset),
|
|
147
|
+
maxIterations: 3,
|
|
148
|
+
},
|
|
149
|
+
sprint: {
|
|
150
|
+
maxSprints: 10,
|
|
151
|
+
requireContracts: true,
|
|
152
|
+
sprintSize: "medium",
|
|
153
|
+
},
|
|
154
|
+
pipeline: {
|
|
155
|
+
maxIterations: 20,
|
|
156
|
+
requireApproval: false,
|
|
157
|
+
contextReset: "always",
|
|
158
|
+
},
|
|
159
|
+
commands: {},
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
...base,
|
|
163
|
+
...overrides,
|
|
164
|
+
project: base.project,
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function defaultStrategiesForMode(mode, _preset) {
|
|
168
|
+
if (mode === "brownfield") {
|
|
169
|
+
return [
|
|
170
|
+
{ type: "typecheck", required: true },
|
|
171
|
+
{ type: "lint", required: true },
|
|
172
|
+
{ type: "unit-test", required: true },
|
|
173
|
+
];
|
|
174
|
+
}
|
|
175
|
+
// greenfield
|
|
176
|
+
return [
|
|
177
|
+
{ type: "build", required: true },
|
|
178
|
+
{ type: "lint", required: false },
|
|
179
|
+
];
|
|
180
|
+
}
|
|
181
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const SeveritySchema: z.ZodEnum<["error", "warning", "info"]>;
|
|
3
|
+
export type Severity = z.infer<typeof SeveritySchema>;
|
|
4
|
+
export declare const EvalDetailSchema: z.ZodObject<{
|
|
5
|
+
criterion: z.ZodString;
|
|
6
|
+
passed: z.ZodBoolean;
|
|
7
|
+
message: z.ZodString;
|
|
8
|
+
file: z.ZodOptional<z.ZodString>;
|
|
9
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
severity: z.ZodEnum<["error", "warning", "info"]>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
message: string;
|
|
13
|
+
passed: boolean;
|
|
14
|
+
criterion: string;
|
|
15
|
+
severity: "error" | "warning" | "info";
|
|
16
|
+
file?: string | undefined;
|
|
17
|
+
line?: number | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
message: string;
|
|
20
|
+
passed: boolean;
|
|
21
|
+
criterion: string;
|
|
22
|
+
severity: "error" | "warning" | "info";
|
|
23
|
+
file?: string | undefined;
|
|
24
|
+
line?: number | undefined;
|
|
25
|
+
}>;
|
|
26
|
+
export type EvalDetail = z.infer<typeof EvalDetailSchema>;
|
|
27
|
+
export declare const EvalResultSchema: z.ZodObject<{
|
|
28
|
+
evaluator: z.ZodString;
|
|
29
|
+
passed: z.ZodBoolean;
|
|
30
|
+
score: z.ZodOptional<z.ZodNumber>;
|
|
31
|
+
details: z.ZodArray<z.ZodObject<{
|
|
32
|
+
criterion: z.ZodString;
|
|
33
|
+
passed: z.ZodBoolean;
|
|
34
|
+
message: z.ZodString;
|
|
35
|
+
file: z.ZodOptional<z.ZodString>;
|
|
36
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
37
|
+
severity: z.ZodEnum<["error", "warning", "info"]>;
|
|
38
|
+
}, "strip", z.ZodTypeAny, {
|
|
39
|
+
message: string;
|
|
40
|
+
passed: boolean;
|
|
41
|
+
criterion: string;
|
|
42
|
+
severity: "error" | "warning" | "info";
|
|
43
|
+
file?: string | undefined;
|
|
44
|
+
line?: number | undefined;
|
|
45
|
+
}, {
|
|
46
|
+
message: string;
|
|
47
|
+
passed: boolean;
|
|
48
|
+
criterion: string;
|
|
49
|
+
severity: "error" | "warning" | "info";
|
|
50
|
+
file?: string | undefined;
|
|
51
|
+
line?: number | undefined;
|
|
52
|
+
}>, "many">;
|
|
53
|
+
summary: z.ZodString;
|
|
54
|
+
feedback: z.ZodString;
|
|
55
|
+
timestamp: z.ZodString;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
evaluator: string;
|
|
58
|
+
passed: boolean;
|
|
59
|
+
timestamp: string;
|
|
60
|
+
details: {
|
|
61
|
+
message: string;
|
|
62
|
+
passed: boolean;
|
|
63
|
+
criterion: string;
|
|
64
|
+
severity: "error" | "warning" | "info";
|
|
65
|
+
file?: string | undefined;
|
|
66
|
+
line?: number | undefined;
|
|
67
|
+
}[];
|
|
68
|
+
summary: string;
|
|
69
|
+
feedback: string;
|
|
70
|
+
score?: number | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
evaluator: string;
|
|
73
|
+
passed: boolean;
|
|
74
|
+
timestamp: string;
|
|
75
|
+
details: {
|
|
76
|
+
message: string;
|
|
77
|
+
passed: boolean;
|
|
78
|
+
criterion: string;
|
|
79
|
+
severity: "error" | "warning" | "info";
|
|
80
|
+
file?: string | undefined;
|
|
81
|
+
line?: number | undefined;
|
|
82
|
+
}[];
|
|
83
|
+
summary: string;
|
|
84
|
+
feedback: string;
|
|
85
|
+
score?: number | undefined;
|
|
86
|
+
}>;
|
|
87
|
+
export type EvalResult = z.infer<typeof EvalResultSchema>;
|
|
88
|
+
export declare const SprintEvaluationSchema: z.ZodObject<{
|
|
89
|
+
sprintId: z.ZodString;
|
|
90
|
+
round: z.ZodNumber;
|
|
91
|
+
results: z.ZodArray<z.ZodObject<{
|
|
92
|
+
evaluator: z.ZodString;
|
|
93
|
+
passed: z.ZodBoolean;
|
|
94
|
+
score: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
details: z.ZodArray<z.ZodObject<{
|
|
96
|
+
criterion: z.ZodString;
|
|
97
|
+
passed: z.ZodBoolean;
|
|
98
|
+
message: z.ZodString;
|
|
99
|
+
file: z.ZodOptional<z.ZodString>;
|
|
100
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
101
|
+
severity: z.ZodEnum<["error", "warning", "info"]>;
|
|
102
|
+
}, "strip", z.ZodTypeAny, {
|
|
103
|
+
message: string;
|
|
104
|
+
passed: boolean;
|
|
105
|
+
criterion: string;
|
|
106
|
+
severity: "error" | "warning" | "info";
|
|
107
|
+
file?: string | undefined;
|
|
108
|
+
line?: number | undefined;
|
|
109
|
+
}, {
|
|
110
|
+
message: string;
|
|
111
|
+
passed: boolean;
|
|
112
|
+
criterion: string;
|
|
113
|
+
severity: "error" | "warning" | "info";
|
|
114
|
+
file?: string | undefined;
|
|
115
|
+
line?: number | undefined;
|
|
116
|
+
}>, "many">;
|
|
117
|
+
summary: z.ZodString;
|
|
118
|
+
feedback: z.ZodString;
|
|
119
|
+
timestamp: z.ZodString;
|
|
120
|
+
}, "strip", z.ZodTypeAny, {
|
|
121
|
+
evaluator: string;
|
|
122
|
+
passed: boolean;
|
|
123
|
+
timestamp: string;
|
|
124
|
+
details: {
|
|
125
|
+
message: string;
|
|
126
|
+
passed: boolean;
|
|
127
|
+
criterion: string;
|
|
128
|
+
severity: "error" | "warning" | "info";
|
|
129
|
+
file?: string | undefined;
|
|
130
|
+
line?: number | undefined;
|
|
131
|
+
}[];
|
|
132
|
+
summary: string;
|
|
133
|
+
feedback: string;
|
|
134
|
+
score?: number | undefined;
|
|
135
|
+
}, {
|
|
136
|
+
evaluator: string;
|
|
137
|
+
passed: boolean;
|
|
138
|
+
timestamp: string;
|
|
139
|
+
details: {
|
|
140
|
+
message: string;
|
|
141
|
+
passed: boolean;
|
|
142
|
+
criterion: string;
|
|
143
|
+
severity: "error" | "warning" | "info";
|
|
144
|
+
file?: string | undefined;
|
|
145
|
+
line?: number | undefined;
|
|
146
|
+
}[];
|
|
147
|
+
summary: string;
|
|
148
|
+
feedback: string;
|
|
149
|
+
score?: number | undefined;
|
|
150
|
+
}>, "many">;
|
|
151
|
+
overallPassed: z.ZodBoolean;
|
|
152
|
+
aggregateFeedback: z.ZodString;
|
|
153
|
+
}, "strip", z.ZodTypeAny, {
|
|
154
|
+
round: number;
|
|
155
|
+
sprintId: string;
|
|
156
|
+
results: {
|
|
157
|
+
evaluator: string;
|
|
158
|
+
passed: boolean;
|
|
159
|
+
timestamp: string;
|
|
160
|
+
details: {
|
|
161
|
+
message: string;
|
|
162
|
+
passed: boolean;
|
|
163
|
+
criterion: string;
|
|
164
|
+
severity: "error" | "warning" | "info";
|
|
165
|
+
file?: string | undefined;
|
|
166
|
+
line?: number | undefined;
|
|
167
|
+
}[];
|
|
168
|
+
summary: string;
|
|
169
|
+
feedback: string;
|
|
170
|
+
score?: number | undefined;
|
|
171
|
+
}[];
|
|
172
|
+
overallPassed: boolean;
|
|
173
|
+
aggregateFeedback: string;
|
|
174
|
+
}, {
|
|
175
|
+
round: number;
|
|
176
|
+
sprintId: string;
|
|
177
|
+
results: {
|
|
178
|
+
evaluator: string;
|
|
179
|
+
passed: boolean;
|
|
180
|
+
timestamp: string;
|
|
181
|
+
details: {
|
|
182
|
+
message: string;
|
|
183
|
+
passed: boolean;
|
|
184
|
+
criterion: string;
|
|
185
|
+
severity: "error" | "warning" | "info";
|
|
186
|
+
file?: string | undefined;
|
|
187
|
+
line?: number | undefined;
|
|
188
|
+
}[];
|
|
189
|
+
summary: string;
|
|
190
|
+
feedback: string;
|
|
191
|
+
score?: number | undefined;
|
|
192
|
+
}[];
|
|
193
|
+
overallPassed: boolean;
|
|
194
|
+
aggregateFeedback: string;
|
|
195
|
+
}>;
|
|
196
|
+
export type SprintEvaluation = z.infer<typeof SprintEvaluationSchema>;
|
|
197
|
+
/**
|
|
198
|
+
* Aggregate multiple eval results into a sprint evaluation.
|
|
199
|
+
*/
|
|
200
|
+
export declare function aggregateResults(sprintId: string, round: number, results: EvalResult[]): SprintEvaluation;
|
|
201
|
+
/**
|
|
202
|
+
* Format a sprint evaluation into a human-readable feedback string.
|
|
203
|
+
*/
|
|
204
|
+
export declare function formatFeedback(evaluation: SprintEvaluation): string;
|
|
205
|
+
//# sourceMappingURL=eval-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-result.d.ts","sourceRoot":"","sources":["../../src/contracts/eval-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc,yCAAuC,CAAC;AACnE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAItD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;EAO3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQ3B,CAAC;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAI1D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAItE;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,UAAU,EAAE,GACpB,gBAAgB,CAsBlB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,gBAAgB,GAAG,MAAM,CA2CnE"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
// ── Enums ───────────────────────────────────────────────────────────
|
|
3
|
+
export const SeveritySchema = z.enum(["error", "warning", "info"]);
|
|
4
|
+
// ── Eval Detail ─────────────────────────────────────────────────────
|
|
5
|
+
export const EvalDetailSchema = z.object({
|
|
6
|
+
criterion: z.string().min(1),
|
|
7
|
+
passed: z.boolean(),
|
|
8
|
+
message: z.string(),
|
|
9
|
+
file: z.string().optional(),
|
|
10
|
+
line: z.number().int().optional(),
|
|
11
|
+
severity: SeveritySchema,
|
|
12
|
+
});
|
|
13
|
+
// ── Eval Result ─────────────────────────────────────────────────────
|
|
14
|
+
export const EvalResultSchema = z.object({
|
|
15
|
+
evaluator: z.string().min(1),
|
|
16
|
+
passed: z.boolean(),
|
|
17
|
+
score: z.number().min(0).max(100).optional(),
|
|
18
|
+
details: z.array(EvalDetailSchema),
|
|
19
|
+
summary: z.string(),
|
|
20
|
+
feedback: z.string(),
|
|
21
|
+
timestamp: z.string().datetime(),
|
|
22
|
+
});
|
|
23
|
+
// ── Sprint Evaluation ───────────────────────────────────────────────
|
|
24
|
+
export const SprintEvaluationSchema = z.object({
|
|
25
|
+
sprintId: z.string().min(1),
|
|
26
|
+
round: z.number().int().min(1),
|
|
27
|
+
results: z.array(EvalResultSchema),
|
|
28
|
+
overallPassed: z.boolean(),
|
|
29
|
+
aggregateFeedback: z.string(),
|
|
30
|
+
});
|
|
31
|
+
// ── Helpers ─────────────────────────────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Aggregate multiple eval results into a sprint evaluation.
|
|
34
|
+
*/
|
|
35
|
+
export function aggregateResults(sprintId, round, results) {
|
|
36
|
+
const overallPassed = results.every((r) => r.passed);
|
|
37
|
+
const feedbackParts = [];
|
|
38
|
+
for (const result of results) {
|
|
39
|
+
if (!result.passed) {
|
|
40
|
+
feedbackParts.push(`[${result.evaluator}] FAILED: ${result.feedback}`);
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
feedbackParts.push(`[${result.evaluator}] PASSED: ${result.summary}`);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const aggregateFeedback = feedbackParts.join("\n");
|
|
47
|
+
return {
|
|
48
|
+
sprintId,
|
|
49
|
+
round,
|
|
50
|
+
results,
|
|
51
|
+
overallPassed,
|
|
52
|
+
aggregateFeedback,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Format a sprint evaluation into a human-readable feedback string.
|
|
57
|
+
*/
|
|
58
|
+
export function formatFeedback(evaluation) {
|
|
59
|
+
const lines = [];
|
|
60
|
+
const statusLabel = evaluation.overallPassed ? "PASS" : "FAIL";
|
|
61
|
+
lines.push(`Sprint ${evaluation.sprintId} - Round ${evaluation.round}: ${statusLabel}`);
|
|
62
|
+
lines.push("=".repeat(60));
|
|
63
|
+
for (const result of evaluation.results) {
|
|
64
|
+
const resultStatus = result.passed ? "PASS" : "FAIL";
|
|
65
|
+
lines.push(`\n[${resultStatus}] ${result.evaluator}${result.score !== undefined ? ` (score: ${result.score}/100)` : ""}`);
|
|
66
|
+
lines.push(` Summary: ${result.summary}`);
|
|
67
|
+
const failures = result.details.filter((d) => !d.passed);
|
|
68
|
+
if (failures.length > 0) {
|
|
69
|
+
lines.push(` Issues (${failures.length}):`);
|
|
70
|
+
for (const detail of failures) {
|
|
71
|
+
const location = detail.file
|
|
72
|
+
? ` at ${detail.file}${detail.line !== undefined ? `:${detail.line}` : ""}`
|
|
73
|
+
: "";
|
|
74
|
+
lines.push(` - [${detail.severity.toUpperCase()}] ${detail.message}${location}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (!result.passed && result.feedback) {
|
|
78
|
+
lines.push(` Feedback: ${result.feedback}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
lines.push("\n" + "=".repeat(60));
|
|
82
|
+
lines.push(evaluation.overallPassed
|
|
83
|
+
? "All evaluators passed. Sprint complete."
|
|
84
|
+
: "Some evaluators failed. Rework needed.");
|
|
85
|
+
return lines.join("\n");
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=eval-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eval-result.js","sourceRoot":"","sources":["../../src/contracts/eval-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { ContractStatusSchema, FileActionSchema, SuccessCriterionSchema, FileChangeSchema, SprintContractSchema, type ContractStatus, type FileAction, type SuccessCriterion, type FileChange, type SprintContract, createContract, updateContractStatus, } from "./sprint-contract.js";
|
|
2
|
+
export { PrioritySchema, FeatureSpecSchema, PlanSpecSchema, type Priority, type FeatureSpec, type PlanSpec, createSpec, } from "./spec.js";
|
|
3
|
+
export { SeveritySchema, EvalDetailSchema, EvalResultSchema, SprintEvaluationSchema, type Severity, type EvalDetail, type EvalResult, type SprintEvaluation, aggregateResults, formatFeedback, } from "./eval-result.js";
|
|
4
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EAEpB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,UAAU,EACf,KAAK,cAAc,EAEnB,cAAc,EACd,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,cAAc,EACd,iBAAiB,EACjB,cAAc,EAEd,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EAEb,UAAU,GACX,MAAM,WAAW,CAAC;AAEnB,OAAO,EAEL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EAEtB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,gBAAgB,EAErB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export {
|
|
2
|
+
// Zod schemas
|
|
3
|
+
ContractStatusSchema, FileActionSchema, SuccessCriterionSchema, FileChangeSchema, SprintContractSchema,
|
|
4
|
+
// Helpers
|
|
5
|
+
createContract, updateContractStatus, } from "./sprint-contract.js";
|
|
6
|
+
export {
|
|
7
|
+
// Zod schemas
|
|
8
|
+
PrioritySchema, FeatureSpecSchema, PlanSpecSchema,
|
|
9
|
+
// Helpers
|
|
10
|
+
createSpec, } from "./spec.js";
|
|
11
|
+
export {
|
|
12
|
+
// Zod schemas
|
|
13
|
+
SeveritySchema, EvalDetailSchema, EvalResultSchema, SprintEvaluationSchema,
|
|
14
|
+
// Helpers
|
|
15
|
+
aggregateResults, formatFeedback, } from "./eval-result.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA,OAAO;AACL,cAAc;AACd,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB;AAOpB,UAAU;AACV,cAAc,EACd,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO;AACL,cAAc;AACd,cAAc,EACd,iBAAiB,EACjB,cAAc;AAKd,UAAU;AACV,UAAU,GACX,MAAM,WAAW,CAAC;AAEnB,OAAO;AACL,cAAc;AACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB;AAMtB,UAAU;AACV,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export declare const PrioritySchema: z.ZodEnum<["must", "should", "could"]>;
|
|
3
|
+
export type Priority = z.infer<typeof PrioritySchema>;
|
|
4
|
+
export declare const FeatureSpecSchema: z.ZodObject<{
|
|
5
|
+
id: z.ZodString;
|
|
6
|
+
title: z.ZodString;
|
|
7
|
+
description: z.ZodString;
|
|
8
|
+
priority: z.ZodEnum<["must", "should", "could"]>;
|
|
9
|
+
estimatedSprints: z.ZodNumber;
|
|
10
|
+
acceptanceCriteria: z.ZodArray<z.ZodString, "many">;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
description: string;
|
|
13
|
+
id: string;
|
|
14
|
+
title: string;
|
|
15
|
+
priority: "must" | "should" | "could";
|
|
16
|
+
estimatedSprints: number;
|
|
17
|
+
acceptanceCriteria: string[];
|
|
18
|
+
}, {
|
|
19
|
+
description: string;
|
|
20
|
+
id: string;
|
|
21
|
+
title: string;
|
|
22
|
+
priority: "must" | "should" | "could";
|
|
23
|
+
estimatedSprints: number;
|
|
24
|
+
acceptanceCriteria: string[];
|
|
25
|
+
}>;
|
|
26
|
+
export type FeatureSpec = z.infer<typeof FeatureSpecSchema>;
|
|
27
|
+
export declare const PlanSpecSchema: z.ZodObject<{
|
|
28
|
+
id: z.ZodString;
|
|
29
|
+
title: z.ZodString;
|
|
30
|
+
description: z.ZodString;
|
|
31
|
+
projectType: z.ZodString;
|
|
32
|
+
techStack: z.ZodArray<z.ZodString, "many">;
|
|
33
|
+
features: z.ZodArray<z.ZodObject<{
|
|
34
|
+
id: z.ZodString;
|
|
35
|
+
title: z.ZodString;
|
|
36
|
+
description: z.ZodString;
|
|
37
|
+
priority: z.ZodEnum<["must", "should", "could"]>;
|
|
38
|
+
estimatedSprints: z.ZodNumber;
|
|
39
|
+
acceptanceCriteria: z.ZodArray<z.ZodString, "many">;
|
|
40
|
+
}, "strip", z.ZodTypeAny, {
|
|
41
|
+
description: string;
|
|
42
|
+
id: string;
|
|
43
|
+
title: string;
|
|
44
|
+
priority: "must" | "should" | "could";
|
|
45
|
+
estimatedSprints: number;
|
|
46
|
+
acceptanceCriteria: string[];
|
|
47
|
+
}, {
|
|
48
|
+
description: string;
|
|
49
|
+
id: string;
|
|
50
|
+
title: string;
|
|
51
|
+
priority: "must" | "should" | "could";
|
|
52
|
+
estimatedSprints: number;
|
|
53
|
+
acceptanceCriteria: string[];
|
|
54
|
+
}>, "many">;
|
|
55
|
+
nonFunctional: z.ZodArray<z.ZodString, "many">;
|
|
56
|
+
constraints: z.ZodArray<z.ZodString, "many">;
|
|
57
|
+
createdAt: z.ZodString;
|
|
58
|
+
updatedAt: z.ZodString;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
description: string;
|
|
61
|
+
id: string;
|
|
62
|
+
title: string;
|
|
63
|
+
projectType: string;
|
|
64
|
+
techStack: string[];
|
|
65
|
+
features: {
|
|
66
|
+
description: string;
|
|
67
|
+
id: string;
|
|
68
|
+
title: string;
|
|
69
|
+
priority: "must" | "should" | "could";
|
|
70
|
+
estimatedSprints: number;
|
|
71
|
+
acceptanceCriteria: string[];
|
|
72
|
+
}[];
|
|
73
|
+
nonFunctional: string[];
|
|
74
|
+
constraints: string[];
|
|
75
|
+
createdAt: string;
|
|
76
|
+
updatedAt: string;
|
|
77
|
+
}, {
|
|
78
|
+
description: string;
|
|
79
|
+
id: string;
|
|
80
|
+
title: string;
|
|
81
|
+
projectType: string;
|
|
82
|
+
techStack: string[];
|
|
83
|
+
features: {
|
|
84
|
+
description: string;
|
|
85
|
+
id: string;
|
|
86
|
+
title: string;
|
|
87
|
+
priority: "must" | "should" | "could";
|
|
88
|
+
estimatedSprints: number;
|
|
89
|
+
acceptanceCriteria: string[];
|
|
90
|
+
}[];
|
|
91
|
+
nonFunctional: string[];
|
|
92
|
+
constraints: string[];
|
|
93
|
+
createdAt: string;
|
|
94
|
+
updatedAt: string;
|
|
95
|
+
}>;
|
|
96
|
+
export type PlanSpec = z.infer<typeof PlanSpecSchema>;
|
|
97
|
+
/**
|
|
98
|
+
* Create a new plan specification with sensible defaults.
|
|
99
|
+
*/
|
|
100
|
+
export declare function createSpec(title: string, description: string, features: Omit<FeatureSpec, "id">[]): PlanSpec;
|
|
101
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/contracts/spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,cAAc,wCAAsC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAItD,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;EAO5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWzB,CAAC;AACH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMtD;;GAEG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,GAClC,QAAQ,CAoBV"}
|