tempo-agent 1.3.2 → 1.4.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/dist/cli/index.js
CHANGED
|
@@ -102,7 +102,7 @@ design principles, code style rules, and safety constraints.
|
|
|
102
102
|
console.log('');
|
|
103
103
|
console.log(chalk_1.default.yellow('Tip: add .tempo/sessions/ and .tempo/runs/ to your .gitignore'));
|
|
104
104
|
}
|
|
105
|
-
function cmdCompile(args) {
|
|
105
|
+
async function cmdCompile(args) {
|
|
106
106
|
const fileName = args[0];
|
|
107
107
|
if (!fileName) {
|
|
108
108
|
console.error(chalk_1.default.red('Usage: tempo compile <file>'));
|
|
@@ -112,7 +112,7 @@ function cmdCompile(args) {
|
|
|
112
112
|
? fileName
|
|
113
113
|
: path_1.default.join(cwd, '.tempo', 'ideation', fileName);
|
|
114
114
|
try {
|
|
115
|
-
const outPath = (0, compile_1.compileIdeation)(filePath, cwd);
|
|
115
|
+
const outPath = await (0, compile_1.compileIdeation)(filePath, cwd);
|
|
116
116
|
console.log(chalk_1.default.green(`✓ Score compiled → ${outPath}`));
|
|
117
117
|
}
|
|
118
118
|
catch (err) {
|
|
@@ -158,7 +158,7 @@ async function main() {
|
|
|
158
158
|
cmdInit();
|
|
159
159
|
break;
|
|
160
160
|
case 'compile':
|
|
161
|
-
cmdCompile(args);
|
|
161
|
+
await cmdCompile(args);
|
|
162
162
|
break;
|
|
163
163
|
case 'tune':
|
|
164
164
|
await (0, tune_1.tuneIdeation)(cwd);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;AAEA,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,2CAA4C;AAC5C,2DAAwD;AACxD,iDAAsD;AACtD,2CAAgD;AAEhD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;AAE1B,SAAS,SAAS;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtB,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACrF,OAAO,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;IACzF,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,SAAS,OAAO;IACd,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAExD,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,YAAE,CAAC,SAAS,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IACtD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,YAAE,CAAC,aAAa,CACd,UAAU,EACV,IAAI,CAAC,SAAS,CACZ;YACE,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,eAAe;YAC7B,WAAW,EAAE,cAAc;SAC5B,EACD,IAAI,EACJ,CAAC,CACF,EACD,OAAO,CACR,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;IACnE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACtC,YAAE,CAAC,aAAa,CACd,iBAAiB,EACjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDL,EACK,OAAO,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC,CAAC;IAClG,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC,CAAC;IACtF,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,+DAA+D,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function compileIdeation(filePath: string, cwd: string): string
|
|
1
|
+
export declare function compileIdeation(filePath: string, cwd: string): Promise<string>;
|
|
2
2
|
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/ideation/compile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/ideation/compile.ts"],"names":[],"mappings":"AAiCA,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4CpF"}
|
package/dist/ideation/compile.js
CHANGED
|
@@ -6,84 +6,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.compileIdeation = compileIdeation;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
let currentSection = null;
|
|
24
|
-
const buffer = [];
|
|
25
|
-
function flush() {
|
|
26
|
-
if (!currentSection)
|
|
27
|
-
return;
|
|
28
|
-
const text = buffer.join('\n').trim();
|
|
29
|
-
if (currentSection === 'ideas') {
|
|
30
|
-
sections.ideas = text
|
|
31
|
-
.split('\n')
|
|
32
|
-
.map((l) => l.replace(/^[-*]\s*/, '').trim())
|
|
33
|
-
.filter(Boolean);
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
sections[currentSection] = text;
|
|
37
|
-
}
|
|
38
|
-
buffer.length = 0;
|
|
9
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
10
|
+
const aiClient_1 = require("../executor/aiClient");
|
|
11
|
+
const schema_1 = require("../spec/schema");
|
|
12
|
+
const SYSTEM_PROMPT = `You are a senior software architect and project planner. Analyze a markdown ideation document and produce a structured execution score as a valid JSON object.
|
|
13
|
+
|
|
14
|
+
The JSON must strictly follow this schema:
|
|
15
|
+
{
|
|
16
|
+
"goal": "<one concise sentence describing the overall feature objective>",
|
|
17
|
+
"constraints": ["<project constraints, rules, and technical boundaries the implementation must respect>"],
|
|
18
|
+
"steps": [
|
|
19
|
+
{
|
|
20
|
+
"id": 1,
|
|
21
|
+
"description": "<clear, actionable step description>",
|
|
22
|
+
"files_allowed": ["<file paths relative to project root that this step creates or modifies>"]
|
|
39
23
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
flush();
|
|
44
|
-
const heading = headingMatch[1].toLowerCase().trim();
|
|
45
|
-
currentSection = sectionMap[heading] ?? null;
|
|
46
|
-
}
|
|
47
|
-
else {
|
|
48
|
-
buffer.push(line);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
flush();
|
|
52
|
-
return sections;
|
|
53
|
-
}
|
|
54
|
-
function buildSpec(parsed, name) {
|
|
55
|
-
const planLines = parsed.finalPlan.split('\n').filter(Boolean);
|
|
56
|
-
const steps = planLines
|
|
57
|
-
.map((line, i) => ({
|
|
58
|
-
id: i + 1,
|
|
59
|
-
description: line.replace(/^\d+[.)]\s*/, '').trim(),
|
|
60
|
-
files_allowed: [],
|
|
61
|
-
}))
|
|
62
|
-
.filter((s) => s.description.length > 0);
|
|
63
|
-
return {
|
|
64
|
-
goal: parsed.goal || name,
|
|
65
|
-
constraints: parsed.context
|
|
66
|
-
.split('\n')
|
|
67
|
-
.map((l) => l.replace(/^[-*]\s*/, '').trim())
|
|
68
|
-
.filter(Boolean),
|
|
69
|
-
steps: steps.length > 0
|
|
70
|
-
? steps
|
|
71
|
-
: [{ id: 1, description: parsed.finalPlan || 'Implement the plan', files_allowed: [] }],
|
|
72
|
-
tests: [],
|
|
73
|
-
definition_of_done: parsed.ideas,
|
|
74
|
-
};
|
|
24
|
+
],
|
|
25
|
+
"tests": ["<specific, verifiable test case descriptions>"],
|
|
26
|
+
"definition_of_done": ["<measurable acceptance criteria that must be true when the feature is complete>"]
|
|
75
27
|
}
|
|
76
|
-
|
|
28
|
+
|
|
29
|
+
Guidelines:
|
|
30
|
+
- Break the work into sequential, granular steps — each step should be a single focused unit of work
|
|
31
|
+
- Populate files_allowed with specific file paths (not directories) for each step
|
|
32
|
+
- tests must be concrete and verifiable (e.g. "GET /api/users returns 200 with a list of users")
|
|
33
|
+
- definition_of_done must be measurable outcomes (e.g. "All API endpoints return correct HTTP status codes")
|
|
34
|
+
- constraints should capture all technical rules, style requirements, and boundaries mentioned in the ideation
|
|
35
|
+
- Step IDs must be sequential integers starting from 1
|
|
36
|
+
|
|
37
|
+
Respond ONLY with the raw JSON object. No explanations, no markdown code fences, no extra text.`;
|
|
38
|
+
async function compileIdeation(filePath, cwd) {
|
|
77
39
|
if (!fs_1.default.existsSync(filePath)) {
|
|
78
40
|
throw new Error(`File not found: ${filePath}`);
|
|
79
41
|
}
|
|
80
|
-
const content = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
42
|
+
const content = fs_1.default.readFileSync(filePath, 'utf-8').trim();
|
|
81
43
|
const name = path_1.default.basename(filePath, path_1.default.extname(filePath));
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
44
|
+
console.log(chalk_1.default.bold(`\nCompiling: ${path_1.default.basename(filePath)}`));
|
|
45
|
+
let aiResponse;
|
|
46
|
+
try {
|
|
47
|
+
aiResponse = await (0, aiClient_1.callAI)(SYSTEM_PROMPT, `Here is the ideation document:\n\n${content}`);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
throw new Error(`AI call failed: ${err.message}`);
|
|
51
|
+
}
|
|
52
|
+
// Strip markdown code fences if present (```json ... ```)
|
|
53
|
+
const jsonText = aiResponse
|
|
54
|
+
.replace(/^```(?:json)?\s*/i, '')
|
|
55
|
+
.replace(/\s*```\s*$/, '')
|
|
56
|
+
.trim();
|
|
57
|
+
let raw;
|
|
58
|
+
try {
|
|
59
|
+
raw = JSON.parse(jsonText);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
throw new Error(`AI returned invalid JSON. Response:\n${jsonText.slice(0, 500)}`);
|
|
63
|
+
}
|
|
64
|
+
const parsed = schema_1.SpecSchema.safeParse(raw);
|
|
65
|
+
if (!parsed.success) {
|
|
66
|
+
throw new Error(`AI response does not match score schema:\n${JSON.stringify(parsed.error.format(), null, 2)}`);
|
|
67
|
+
}
|
|
68
|
+
const spec = parsed.data;
|
|
69
|
+
const scoresDir = path_1.default.join(cwd, '.tempo', 'scores');
|
|
70
|
+
fs_1.default.mkdirSync(scoresDir, { recursive: true });
|
|
71
|
+
const outPath = path_1.default.join(scoresDir, `${name}.json`);
|
|
87
72
|
fs_1.default.writeFileSync(outPath, JSON.stringify(spec, null, 2), 'utf-8');
|
|
88
73
|
return outPath;
|
|
89
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/ideation/compile.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/ideation/compile.ts"],"names":[],"mappings":";;;;;AAiCA,0CA4CC;AA7ED,4CAAoB;AACpB,gDAAwB;AACxB,kDAA0B;AAC1B,mDAA8C;AAC9C,2CAAkD;AAElD,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;gGAyB0E,CAAC;AAE1F,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,GAAW;IACjE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,gBAAgB,cAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAEnE,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,IAAA,iBAAM,EAAC,aAAa,EAAE,qCAAqC,OAAO,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,0DAA0D;IAC1D,MAAM,QAAQ,GAAG,UAAU;SACxB,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC;SAChC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,IAAI,EAAE,CAAC;IAEV,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wCAAwC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,mBAAU,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACjH,CAAC;IAED,MAAM,IAAI,GAAS,MAAM,CAAC,IAAI,CAAC;IAE/B,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrD,YAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IACrD,YAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|