karajan-code 1.10.0 → 1.10.1
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/package.json +1 -1
- package/src/commands/run.js +3 -35
- package/src/orchestrator.js +50 -0
package/package.json
CHANGED
package/src/commands/run.js
CHANGED
|
@@ -4,7 +4,7 @@ import { assertAgentsAvailable } from "../agents/availability.js";
|
|
|
4
4
|
import { createActivityLog } from "../activity-log.js";
|
|
5
5
|
import { printHeader, printEvent } from "../utils/display.js";
|
|
6
6
|
import { resolveRole } from "../config.js";
|
|
7
|
-
import { parseCardId
|
|
7
|
+
import { parseCardId } from "../planning-game/adapter.js";
|
|
8
8
|
|
|
9
9
|
export async function runCommandHandler({ task, config, logger, flags }) {
|
|
10
10
|
const requiredProviders = [
|
|
@@ -22,24 +22,10 @@ export async function runCommandHandler({ task, config, logger, flags }) {
|
|
|
22
22
|
if (config.pipeline?.security?.enabled) requiredProviders.push(resolveRole(config, "security").provider);
|
|
23
23
|
await assertAgentsAvailable(requiredProviders);
|
|
24
24
|
|
|
25
|
-
// --- Planning Game: resolve card
|
|
25
|
+
// --- Planning Game: resolve card ID ---
|
|
26
26
|
const pgCardId = flags?.pgTask || parseCardId(task);
|
|
27
27
|
const pgProject = flags?.pgProject || config.planning_game?.project_id || null;
|
|
28
|
-
|
|
29
|
-
let enrichedTask = task;
|
|
30
|
-
|
|
31
|
-
if (pgCardId && pgProject && config.planning_game?.enabled !== false) {
|
|
32
|
-
try {
|
|
33
|
-
const { fetchCard, updateCard } = await import("../planning-game/client.js");
|
|
34
|
-
pgCard = await fetchCard({ projectId: pgProject, cardId: pgCardId });
|
|
35
|
-
if (pgCard) {
|
|
36
|
-
enrichedTask = buildTaskFromCard(pgCard);
|
|
37
|
-
logger.info(`Planning Game: loaded card ${pgCardId} from project ${pgProject}`);
|
|
38
|
-
}
|
|
39
|
-
} catch (err) {
|
|
40
|
-
logger.warn(`Planning Game: could not load card ${pgCardId}: ${err.message}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
28
|
+
const enrichedTask = task;
|
|
43
29
|
|
|
44
30
|
const jsonMode = flags?.json;
|
|
45
31
|
|
|
@@ -65,26 +51,8 @@ export async function runCommandHandler({ task, config, logger, flags }) {
|
|
|
65
51
|
printHeader({ task: enrichedTask, config });
|
|
66
52
|
}
|
|
67
53
|
|
|
68
|
-
const startDate = new Date().toISOString();
|
|
69
54
|
const result = await runFlow({ task: enrichedTask, config, logger, flags, emitter, pgTaskId: pgCardId || null, pgProject: pgProject || null });
|
|
70
55
|
|
|
71
|
-
// --- Planning Game: update card on completion ---
|
|
72
|
-
if (pgCard && pgProject && result?.approved) {
|
|
73
|
-
try {
|
|
74
|
-
const { updateCard } = await import("../planning-game/client.js");
|
|
75
|
-
const updates = buildCompletionUpdates({
|
|
76
|
-
approved: true,
|
|
77
|
-
commits: result.git?.commits || [],
|
|
78
|
-
startDate,
|
|
79
|
-
codeveloper: config.planning_game?.codeveloper || null
|
|
80
|
-
});
|
|
81
|
-
await updateCard({ projectId: pgProject, cardId: pgCardId, firebaseId: pgCard.firebaseId, updates });
|
|
82
|
-
logger.info(`Planning Game: updated ${pgCardId} to "${updates.status}"`);
|
|
83
|
-
} catch (err) {
|
|
84
|
-
logger.warn(`Planning Game: could not update card ${pgCardId}: ${err.message}`);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
|
|
88
56
|
if (jsonMode) {
|
|
89
57
|
console.log(JSON.stringify(result, null, 2));
|
|
90
58
|
}
|
package/src/orchestrator.js
CHANGED
|
@@ -157,6 +157,32 @@ export async function runFlow({ task, config, logger, flags = {}, emitter = null
|
|
|
157
157
|
|
|
158
158
|
eventBase.sessionId = session.id;
|
|
159
159
|
|
|
160
|
+
// --- Planning Game: mark card as In Progress ---
|
|
161
|
+
let pgCard = null;
|
|
162
|
+
if (pgTaskId && pgProject && config.planning_game?.enabled !== false) {
|
|
163
|
+
try {
|
|
164
|
+
const { fetchCard, updateCard } = await import("./planning-game/client.js");
|
|
165
|
+
pgCard = await fetchCard({ projectId: pgProject, cardId: pgTaskId });
|
|
166
|
+
if (pgCard && pgCard.status !== "In Progress") {
|
|
167
|
+
await updateCard({
|
|
168
|
+
projectId: pgProject,
|
|
169
|
+
cardId: pgTaskId,
|
|
170
|
+
firebaseId: pgCard.firebaseId,
|
|
171
|
+
updates: {
|
|
172
|
+
status: "In Progress",
|
|
173
|
+
startDate: new Date().toISOString(),
|
|
174
|
+
developer: "dev_016",
|
|
175
|
+
codeveloper: config.planning_game?.codeveloper || null
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
logger.info(`Planning Game: ${pgTaskId} → In Progress`);
|
|
179
|
+
}
|
|
180
|
+
} catch (err) {
|
|
181
|
+
logger.warn(`Planning Game: could not update ${pgTaskId}: ${err.message}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
session.pg_card = pgCard || null;
|
|
185
|
+
|
|
160
186
|
emitProgress(
|
|
161
187
|
emitter,
|
|
162
188
|
makeEvent("session:start", eventBase, {
|
|
@@ -493,6 +519,30 @@ export async function runFlow({ task, config, logger, flags = {}, emitter = null
|
|
|
493
519
|
}
|
|
494
520
|
session.budget = budgetSummary();
|
|
495
521
|
await markSessionStatus(session, "approved");
|
|
522
|
+
|
|
523
|
+
// --- Planning Game: mark card as To Validate ---
|
|
524
|
+
if (pgCard && pgProject) {
|
|
525
|
+
try {
|
|
526
|
+
const { updateCard } = await import("./planning-game/client.js");
|
|
527
|
+
const { buildCompletionUpdates } = await import("./planning-game/adapter.js");
|
|
528
|
+
const pgUpdates = buildCompletionUpdates({
|
|
529
|
+
approved: true,
|
|
530
|
+
commits: gitResult?.commits || [],
|
|
531
|
+
startDate: session.pg_card?.startDate || session.created_at,
|
|
532
|
+
codeveloper: config.planning_game?.codeveloper || null
|
|
533
|
+
});
|
|
534
|
+
await updateCard({
|
|
535
|
+
projectId: pgProject,
|
|
536
|
+
cardId: session.pg_task_id,
|
|
537
|
+
firebaseId: pgCard.firebaseId,
|
|
538
|
+
updates: pgUpdates
|
|
539
|
+
});
|
|
540
|
+
logger.info(`Planning Game: ${session.pg_task_id} → To Validate`);
|
|
541
|
+
} catch (err) {
|
|
542
|
+
logger.warn(`Planning Game: could not update ${session.pg_task_id} on completion: ${err.message}`);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
|
|
496
546
|
emitProgress(
|
|
497
547
|
emitter,
|
|
498
548
|
makeEvent("session:end", { ...eventBase, stage: "done" }, {
|