@telora/daemon 0.17.7 → 0.17.13
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/build-info.json +5 -3
- package/dist/assembly-engine.d.ts +8 -0
- package/dist/assembly-engine.d.ts.map +1 -1
- package/dist/assembly-engine.js.map +1 -1
- package/dist/focus-engine.js +2 -2
- package/dist/focus-engine.js.map +1 -1
- package/dist/focus-executor.d.ts.map +1 -1
- package/dist/focus-executor.js +27 -0
- package/dist/focus-executor.js.map +1 -1
- package/dist/prd-controller.d.ts +37 -14
- package/dist/prd-controller.d.ts.map +1 -1
- package/dist/prd-controller.js +177 -66
- package/dist/prd-controller.js.map +1 -1
- package/dist/prd-focus-pushdown.d.ts +42 -0
- package/dist/prd-focus-pushdown.d.ts.map +1 -0
- package/dist/prd-focus-pushdown.js +47 -0
- package/dist/prd-focus-pushdown.js.map +1 -0
- package/dist/prd-frontier.d.ts +27 -0
- package/dist/prd-frontier.d.ts.map +1 -0
- package/dist/prd-frontier.js +46 -0
- package/dist/prd-frontier.js.map +1 -0
- package/dist/prd-steward.d.ts +94 -0
- package/dist/prd-steward.d.ts.map +1 -0
- package/dist/prd-steward.js +173 -0
- package/dist/prd-steward.js.map +1 -0
- package/dist/queries/prd.d.ts +48 -0
- package/dist/queries/prd.d.ts.map +1 -1
- package/dist/queries/prd.js +42 -0
- package/dist/queries/prd.js.map +1 -1
- package/dist/resolvers/index.d.ts +2 -0
- package/dist/resolvers/index.d.ts.map +1 -1
- package/dist/resolvers/index.js +2 -0
- package/dist/resolvers/index.js.map +1 -1
- package/dist/resolvers/prd-context.d.ts +30 -0
- package/dist/resolvers/prd-context.d.ts.map +1 -0
- package/dist/resolvers/prd-context.js +100 -0
- package/dist/resolvers/prd-context.js.map +1 -0
- package/dist/resolvers/prd-persona.d.ts +20 -0
- package/dist/resolvers/prd-persona.d.ts.map +1 -0
- package/dist/resolvers/prd-persona.js +45 -0
- package/dist/resolvers/prd-persona.js.map +1 -0
- package/package.json +2 -2
package/dist/prd-controller.js
CHANGED
|
@@ -18,54 +18,51 @@ import { configForProduct } from './config.js';
|
|
|
18
18
|
import { evaluateClearance, } from './prd-clearance-engine.js';
|
|
19
19
|
import { loadActivePrds, loadPrtGraph, materializeOvercome, armFocus, markNodeCleared, markPrdDone, loadPathways, commitPathway, } from './queries/prd.js';
|
|
20
20
|
import { getFocusDeliveries } from './queries/focuses.js';
|
|
21
|
+
import { computePrtFrontier } from './prd-frontier.js';
|
|
21
22
|
import { fileEscalation } from './escalations.js';
|
|
22
23
|
import { detectDivergence, selectSurvivingPath, } from './prd-divergence.js';
|
|
24
|
+
import { runStewardJudgment, defaultStewardDeps, } from './prd-steward.js';
|
|
23
25
|
/**
|
|
24
26
|
* Process-lifetime dedup of PRDs already escalated for a frontier that cannot be
|
|
25
|
-
* armed (
|
|
26
|
-
* fresh escalation every 60s tick. A daemon restart
|
|
27
|
-
* the desired behavior (a restart is exactly when an
|
|
28
|
-
* their active PRD is still stalled). Injected via
|
|
27
|
+
* armed (prds.assigned_agent_role_id is null -- the PRD is not Played). Without this
|
|
28
|
+
* the controller would file a fresh escalation every 60s tick. A daemon restart
|
|
29
|
+
* re-notifies once, which is the desired behavior (a restart is exactly when an
|
|
30
|
+
* operator wants to be told their active PRD is still stalled). Injected via
|
|
31
|
+
* deps for tests; defaults here.
|
|
29
32
|
*/
|
|
30
33
|
const noRoleEscalatedPrds = new Set();
|
|
34
|
+
/**
|
|
35
|
+
* Per-PRD timestamp (ms) of the last steward cadence run. Process-lifetime.
|
|
36
|
+
* Injected in tests so cadence behavior is verifiable without real timers.
|
|
37
|
+
*/
|
|
38
|
+
const stewardLastRunMs = new Map();
|
|
39
|
+
/**
|
|
40
|
+
* Steward cadence: the minimum interval between proactive steward monitoring
|
|
41
|
+
* runs for a Played PRD -- the "runs on a cadence" path of the AC. 15 minutes
|
|
42
|
+
* is substantially less frequent than the 60s controller tick (satisfies "not
|
|
43
|
+
* every tick") without making the cortex unresponsive to gradual drift.
|
|
44
|
+
* Exported so tests can inject a zero-ms cadence to force an immediate run.
|
|
45
|
+
*/
|
|
46
|
+
export const STEWARD_CADENCE_MS = 15 * 60 * 1000;
|
|
31
47
|
/** Stable machine reason for the "active PRD frontier cannot be armed" signal. */
|
|
32
48
|
export const PRD_FRONTIER_BLOCKED_NO_ROLE = 'prd_frontier_blocked_no_arm_role';
|
|
33
49
|
/**
|
|
34
|
-
*
|
|
35
|
-
* (
|
|
50
|
+
* Resolve the arm role for a PRD from the PRD ROW -- the per-entity "Play"
|
|
51
|
+
* signal (prds.assigned_agent_role_id), or null if the PRD is paused.
|
|
36
52
|
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* => initial frontier.
|
|
42
|
-
* - needsMaterialize = armable overcomes with focusId == null.
|
|
43
|
-
* - needsArm = armable overcomes with focusId set.
|
|
53
|
+
* This is the ONLY source: the global TELORA_PRD_ARM_ROLE_ID env var has been
|
|
54
|
+
* removed outright (it was the out-of-band toggle behind the One Screen RTS
|
|
55
|
+
* silent stall). Play/pause is data on the PRD row, set via telora_prd update.
|
|
56
|
+
* Pure + exported so the row-reads-not-env contract is unit-testable.
|
|
44
57
|
*/
|
|
45
|
-
export function
|
|
46
|
-
|
|
47
|
-
const needsArm = [];
|
|
48
|
-
for (const node of nodes) {
|
|
49
|
-
if (node.nodeType !== 'overcome') {
|
|
50
|
-
continue;
|
|
51
|
-
}
|
|
52
|
-
if (node.status === 'cleared') {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
const prereqs = edges.filter((edge) => edge.edgeType === 'prerequisite' && edge.toNodeId === node.id);
|
|
56
|
-
const allPrereqsCleared = prereqs.every((edge) => clearedNodeIds.has(edge.fromNodeId));
|
|
57
|
-
if (!allPrereqsCleared) {
|
|
58
|
-
continue;
|
|
59
|
-
}
|
|
60
|
-
if (node.focusId === null) {
|
|
61
|
-
needsMaterialize.push(node);
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
needsArm.push(node);
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return { needsMaterialize, needsArm };
|
|
58
|
+
export function resolveArmRoleIdFromPrd(prd) {
|
|
59
|
+
return prd.assignedAgentRoleId ?? null;
|
|
68
60
|
}
|
|
61
|
+
// computePrtFrontier moved to ./prd-frontier.js (dependency-light, so the
|
|
62
|
+
// prd.context resolver can reuse it without dragging in this controller's heavy
|
|
63
|
+
// module graph). Imported above for internal use; re-exported here for existing
|
|
64
|
+
// importers/tests that reference it from prd-controller.
|
|
65
|
+
export { computePrtFrontier };
|
|
69
66
|
/**
|
|
70
67
|
* Compute the set of focus ids whose delivery work is COMPLETE -- at least one
|
|
71
68
|
* delivery exists AND every delivery is in execution_status 'done'. PURE.
|
|
@@ -268,9 +265,9 @@ export async function runPrdControllerTick(prd, deps) {
|
|
|
268
265
|
}
|
|
269
266
|
}
|
|
270
267
|
// Surface the silent stall: an ACTIVE PRD has a live frontier (overcomes ready
|
|
271
|
-
// to materialize or arm) but
|
|
272
|
-
// run. The controller cannot invent a role -- only
|
|
273
|
-
//
|
|
268
|
+
// to materialize or arm) but the PRD is not Played (assigned_agent_role_id is
|
|
269
|
+
// null), so nothing will ever run. The controller cannot invent a role -- only
|
|
270
|
+
// a human can Play the PRD -- so the asymmetric move is to hand control up
|
|
274
271
|
// (escalate), not to silently no-op every tick. Deduped per PRD per process so
|
|
275
272
|
// the 60s tick does not spam; a restart re-notifies once.
|
|
276
273
|
let frontierBlockedNoRole = false;
|
|
@@ -285,8 +282,9 @@ export async function runPrdControllerTick(prd, deps) {
|
|
|
285
282
|
details: {
|
|
286
283
|
prdId: prd.id,
|
|
287
284
|
skippedNoRole,
|
|
288
|
-
hint: '
|
|
289
|
-
'
|
|
285
|
+
hint: 'Play this PRD by setting its assigned_agent_role_id to an agent_roles UUID ' +
|
|
286
|
+
'(telora_prd update assignedAgentRoleId=<uuid>) so the PRD controller can arm ' +
|
|
287
|
+
'frontier foci. Until then this PRD cannot advance.',
|
|
290
288
|
},
|
|
291
289
|
});
|
|
292
290
|
// Record only after a successful file so a transient escalation failure
|
|
@@ -331,25 +329,132 @@ export async function runPrdControllerTick(prd, deps) {
|
|
|
331
329
|
id: p.id,
|
|
332
330
|
status: p.status,
|
|
333
331
|
}));
|
|
334
|
-
const
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
332
|
+
const viable = (pid) => isPathwayViable(pid, nodes, edges, clearedNodeIds, clearanceFailedObstacleIds);
|
|
333
|
+
// --- Cortex: the steward makes the JUDGMENT when the PRD is Played -----
|
|
334
|
+
// When the PRD is Played (assigned_agent_role_id set) AND a steward is
|
|
335
|
+
// wired, the steward (an LLM at the milestone altitude) decides
|
|
336
|
+
// re-capture vs escalate, informing/overriding the deterministic
|
|
337
|
+
// selectSurvivingPath. The steward NEVER takes over frontier compute /
|
|
338
|
+
// clearance / arming -- those stayed in the reflex above. When no steward
|
|
339
|
+
// is wired, or it cannot reach a decision (LLM unavailable), it returns
|
|
340
|
+
// null and we fall through to the deterministic reflex unchanged.
|
|
341
|
+
let decision = null;
|
|
342
|
+
if (prd.assignedAgentRoleId && deps.runStewardJudgment) {
|
|
343
|
+
decision = await deps.runStewardJudgment({
|
|
344
|
+
prd,
|
|
345
|
+
nodes,
|
|
346
|
+
edges,
|
|
347
|
+
signals,
|
|
348
|
+
pathwayStates,
|
|
349
|
+
isPathwayViable: viable,
|
|
350
|
+
});
|
|
342
351
|
}
|
|
343
|
-
|
|
344
|
-
//
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
+
if (decision) {
|
|
353
|
+
// Cortex path. The steward already validated a recommit against
|
|
354
|
+
// viability (a non-viable/unknown target was converted to escalate),
|
|
355
|
+
// so we can trust the action here.
|
|
356
|
+
if (decision.action === 'recommit' &&
|
|
357
|
+
decision.pathwayId &&
|
|
358
|
+
decision.pathwayId !== prd.committedPathId) {
|
|
359
|
+
await deps.commitPathway(prd.id, decision.pathwayId);
|
|
360
|
+
pathSwitched = true;
|
|
361
|
+
}
|
|
362
|
+
else if (decision.action === 'escalate') {
|
|
363
|
+
escalated = true;
|
|
364
|
+
await deps.fileEscalation({
|
|
365
|
+
organizationId: deps.organizationId,
|
|
366
|
+
productId: prd.productId,
|
|
367
|
+
reason: 'prd_divergence_steward_escalation',
|
|
368
|
+
kind: 'prd_divergence_steward_escalation',
|
|
369
|
+
details: { prdId: prd.id, signals, rationale: decision.rationale },
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
// 'hold' (or a recommit to the already-committed path) -> no action.
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
// --- Reflex (deterministic) fallback -- unchanged prior behavior. ---
|
|
376
|
+
const { survivor, switched } = selectSurvivingPath(pathwayStates, {
|
|
377
|
+
committedPathwayId: prd.committedPathId,
|
|
378
|
+
isPathwayViable: viable,
|
|
352
379
|
});
|
|
380
|
+
if (survivor && switched) {
|
|
381
|
+
// Re-point the committed pathway (re-capture). No revert.
|
|
382
|
+
await deps.commitPathway(prd.id, survivor);
|
|
383
|
+
pathSwitched = true;
|
|
384
|
+
}
|
|
385
|
+
else if (!survivor) {
|
|
386
|
+
// No surviving path: the human owns intent -- escalate, never lower the goal.
|
|
387
|
+
escalated = true;
|
|
388
|
+
await deps.fileEscalation({
|
|
389
|
+
organizationId: deps.organizationId,
|
|
390
|
+
productId: prd.productId,
|
|
391
|
+
reason: 'prd_divergence_no_surviving_path',
|
|
392
|
+
kind: 'prd_divergence_no_surviving_path',
|
|
393
|
+
details: { prdId: prd.id, signals },
|
|
394
|
+
});
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
// --- Cadence steward run (monitoring-only, no divergence required) ---------
|
|
400
|
+
//
|
|
401
|
+
// For a Played PRD with a committed pathway and a wired steward, run the
|
|
402
|
+
// steward on a cadence even when no divergence was detected this tick. This is
|
|
403
|
+
// the "spawned when a PRD is Played, runs on a cadence" path of the AC: the
|
|
404
|
+
// steward becomes active as a recurring milestone monitor when the PRD is
|
|
405
|
+
// Played, not just reactively on clearance_fail. On a cadence run the
|
|
406
|
+
// signals array is empty -- the expected output is usually 'hold' (confirming
|
|
407
|
+
// the milestone tracks), but the steward may 'escalate' on drift the
|
|
408
|
+
// deterministic reflex cannot detect. We skip this if the steward already ran
|
|
409
|
+
// this tick via the divergence path (`diverged` is true) to avoid double calls.
|
|
410
|
+
if (!diverged &&
|
|
411
|
+
prd.assignedAgentRoleId &&
|
|
412
|
+
prd.committedPathId &&
|
|
413
|
+
deps.runStewardJudgment) {
|
|
414
|
+
const lastRunMap = deps.stewardLastRun ?? stewardLastRunMs;
|
|
415
|
+
const cadenceMs = deps.stewardCadenceMs ?? STEWARD_CADENCE_MS;
|
|
416
|
+
const lastRun = lastRunMap.get(prd.id) ?? 0;
|
|
417
|
+
const now = Date.now();
|
|
418
|
+
if (now - lastRun >= cadenceMs) {
|
|
419
|
+
const pathways = await deps.loadPathways(prd.id);
|
|
420
|
+
const pathwayStates = pathways.map((p) => ({
|
|
421
|
+
id: p.id,
|
|
422
|
+
status: p.status,
|
|
423
|
+
}));
|
|
424
|
+
const viable = (pid) => isPathwayViable(pid, nodes, edges, clearedNodeIds, clearanceFailedObstacleIds);
|
|
425
|
+
const cadenceDecision = await deps.runStewardJudgment({
|
|
426
|
+
prd,
|
|
427
|
+
nodes,
|
|
428
|
+
edges,
|
|
429
|
+
signals: [],
|
|
430
|
+
pathwayStates,
|
|
431
|
+
isPathwayViable: viable,
|
|
432
|
+
});
|
|
433
|
+
// Stamp before acting so a throw in commitPathway/fileEscalation does not
|
|
434
|
+
// reset the timer to zero (the steward still ran; retry next cadence tick).
|
|
435
|
+
lastRunMap.set(prd.id, now);
|
|
436
|
+
if (cadenceDecision) {
|
|
437
|
+
if (cadenceDecision.action === 'recommit' &&
|
|
438
|
+
cadenceDecision.pathwayId &&
|
|
439
|
+
cadenceDecision.pathwayId !== prd.committedPathId) {
|
|
440
|
+
await deps.commitPathway(prd.id, cadenceDecision.pathwayId);
|
|
441
|
+
pathSwitched = true;
|
|
442
|
+
}
|
|
443
|
+
else if (cadenceDecision.action === 'escalate') {
|
|
444
|
+
escalated = true;
|
|
445
|
+
await deps.fileEscalation({
|
|
446
|
+
organizationId: deps.organizationId,
|
|
447
|
+
productId: prd.productId,
|
|
448
|
+
reason: 'prd_divergence_steward_escalation',
|
|
449
|
+
kind: 'prd_divergence_steward_escalation',
|
|
450
|
+
details: {
|
|
451
|
+
prdId: prd.id,
|
|
452
|
+
signals: [],
|
|
453
|
+
rationale: cadenceDecision.rationale,
|
|
454
|
+
},
|
|
455
|
+
});
|
|
456
|
+
}
|
|
457
|
+
// 'hold' or a recommit to the already-committed path: no action.
|
|
353
458
|
}
|
|
354
459
|
}
|
|
355
460
|
}
|
|
@@ -378,20 +483,26 @@ function defaultDeps(config) {
|
|
|
378
483
|
materializeOvercome: (nodeId) => materializeOvercome(nodeId),
|
|
379
484
|
armFocus: (focusId, agentRoleId) => armFocus(focusId, agentRoleId),
|
|
380
485
|
markPrdDone: (prdId) => markPrdDone(prdId),
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
},
|
|
486
|
+
// The PRD "Play" is a per-entity signal: prds.assigned_agent_role_id is the
|
|
487
|
+
// agent_roles UUID the controller arms frontier foci with (sets
|
|
488
|
+
// product_focuses.assigned_agent_role_id). Set = run all frontier foci;
|
|
489
|
+
// null = paused, every frontier overcome counts as skippedNoRole and the
|
|
490
|
+
// no-arm-role escalation fires as the loud-not-silent backstop. The global
|
|
491
|
+
// TELORA_PRD_ARM_ROLE_ID env var has been removed outright -- no fallback.
|
|
492
|
+
resolveArmRoleId: async (prd) => resolveArmRoleIdFromPrd(prd),
|
|
389
493
|
loadPathways: (prdId) => loadPathways(prdId),
|
|
390
494
|
commitPathway: (prdId, pathwayId) => commitPathway(prdId, pathwayId),
|
|
391
495
|
fileEscalation: (input) => fileEscalation(input),
|
|
496
|
+
// The steward cortex, wired to the live assembly + LLM client. Invoked for
|
|
497
|
+
// a Played PRD that diverged (divergence path) or on the cadence (monitoring
|
|
498
|
+
// path); returns null (reflex fallback) when the LLM is unavailable.
|
|
499
|
+
// defaultStewardDeps dynamic-imports its heavy graph.
|
|
500
|
+
runStewardJudgment: (input) => runStewardJudgment(input, defaultStewardDeps(config)),
|
|
392
501
|
organizationId: config.organizationId,
|
|
393
502
|
worktreeDir: config.worktreeDir,
|
|
394
503
|
noRoleEscalated: noRoleEscalatedPrds,
|
|
504
|
+
stewardLastRun: stewardLastRunMs,
|
|
505
|
+
stewardCadenceMs: STEWARD_CADENCE_MS,
|
|
395
506
|
};
|
|
396
507
|
}
|
|
397
508
|
export async function runPrdControllerTickAll(config, deps) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prd-controller.js","sourceRoot":"","sources":["../src/prd-controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prd-controller.js","sourceRoot":"","sources":["../src/prd-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD -> focus push-down: when the PRD controller arms a frontier focus, that
|
|
3
|
+
* focus team should inherit the milestone's coherent intent (goal / expansion /
|
|
4
|
+
* vision + frontier position) instead of rediscovering it from its own
|
|
5
|
+
* deliveries. This resolves the parent PRD's prd.context and hands it to the
|
|
6
|
+
* focus spawn.
|
|
7
|
+
*
|
|
8
|
+
* ONLY prd.context is pushed to foci. prd.persona (the steward's judgment
|
|
9
|
+
* framing) is deliberately NOT pushed -- a coder focus team operates at the
|
|
10
|
+
* implementation altitude, not the milestone-stewardship altitude.
|
|
11
|
+
*
|
|
12
|
+
* Resolution happens at spawn (the focus only spawns because the PRD armed it),
|
|
13
|
+
* so the milestone context is always fresh -- the frontier state reflects the
|
|
14
|
+
* tree as it is at spawn, not as it was at arm time. A focus not under any PRD
|
|
15
|
+
* yields empty content with no error (non-PRD spawns are unaffected).
|
|
16
|
+
*/
|
|
17
|
+
import { type AssemblyContext, type AssemblyManifestEntry } from './assembly-engine.js';
|
|
18
|
+
/** The push-down recipe: milestone context ONLY (mirrors the PRD workflow's
|
|
19
|
+
* focus_pushdown stage assembly). The steward persona is never in this list. */
|
|
20
|
+
export declare const FOCUS_PUSHDOWN_RECIPE: readonly ["prd.context"];
|
|
21
|
+
export interface FocusMilestoneContextDeps {
|
|
22
|
+
/** Resolve the parent PRD id for a focus (null when not under a PRD). */
|
|
23
|
+
findPrdIdForFocus: (focusId: string) => Promise<string | null>;
|
|
24
|
+
/** Resolve an assembly recipe with manifest (defaults to the engine). */
|
|
25
|
+
resolveRecipe: (recipe: string[], ctx: AssemblyContext) => Promise<{
|
|
26
|
+
content: string;
|
|
27
|
+
manifest: AssemblyManifestEntry[];
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the milestone (prd.context) section for a focus being spawned.
|
|
32
|
+
* Returns empty content + empty manifest when the focus is not under a PRD, or
|
|
33
|
+
* when resolution fails -- the push-down is best-effort and never blocks a spawn.
|
|
34
|
+
*
|
|
35
|
+
* `assemblyCtxBase` is the focus's normal AssemblyContext (without prdId); this
|
|
36
|
+
* sets prdId on a copy so the prd.context resolver targets the parent PRD.
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveFocusMilestoneContext(focusId: string, assemblyCtxBase: AssemblyContext, deps?: Partial<FocusMilestoneContextDeps>): Promise<{
|
|
39
|
+
content: string;
|
|
40
|
+
manifest: AssemblyManifestEntry[];
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=prd-focus-pushdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-focus-pushdown.d.ts","sourceRoot":"","sources":["../src/prd-focus-pushdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC3B,MAAM,sBAAsB,CAAC;AAG9B;iFACiF;AACjF,eAAO,MAAM,qBAAqB,0BAA2B,CAAC;AAE9D,MAAM,WAAW,yBAAyB;IACxC,yEAAyE;IACzE,iBAAiB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC/D,yEAAyE;IACzE,aAAa,EAAE,CACb,MAAM,EAAE,MAAM,EAAE,EAChB,GAAG,EAAE,eAAe,KACjB,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAC,CAAC;CACtE;AAOD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,IAAI,GAAE,OAAO,CAAC,yBAAyB,CAAM,GAC5C,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;CAAE,CAAC,CAajE"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PRD -> focus push-down: when the PRD controller arms a frontier focus, that
|
|
3
|
+
* focus team should inherit the milestone's coherent intent (goal / expansion /
|
|
4
|
+
* vision + frontier position) instead of rediscovering it from its own
|
|
5
|
+
* deliveries. This resolves the parent PRD's prd.context and hands it to the
|
|
6
|
+
* focus spawn.
|
|
7
|
+
*
|
|
8
|
+
* ONLY prd.context is pushed to foci. prd.persona (the steward's judgment
|
|
9
|
+
* framing) is deliberately NOT pushed -- a coder focus team operates at the
|
|
10
|
+
* implementation altitude, not the milestone-stewardship altitude.
|
|
11
|
+
*
|
|
12
|
+
* Resolution happens at spawn (the focus only spawns because the PRD armed it),
|
|
13
|
+
* so the milestone context is always fresh -- the frontier state reflects the
|
|
14
|
+
* tree as it is at spawn, not as it was at arm time. A focus not under any PRD
|
|
15
|
+
* yields empty content with no error (non-PRD spawns are unaffected).
|
|
16
|
+
*/
|
|
17
|
+
import { resolveAssemblyRecipeWithManifest, } from './assembly-engine.js';
|
|
18
|
+
import { findPrdIdForFocus } from './queries/prd.js';
|
|
19
|
+
/** The push-down recipe: milestone context ONLY (mirrors the PRD workflow's
|
|
20
|
+
* focus_pushdown stage assembly). The steward persona is never in this list. */
|
|
21
|
+
export const FOCUS_PUSHDOWN_RECIPE = ['prd.context'];
|
|
22
|
+
const defaultDeps = {
|
|
23
|
+
findPrdIdForFocus,
|
|
24
|
+
resolveRecipe: (recipe, ctx) => resolveAssemblyRecipeWithManifest(recipe, ctx),
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Resolve the milestone (prd.context) section for a focus being spawned.
|
|
28
|
+
* Returns empty content + empty manifest when the focus is not under a PRD, or
|
|
29
|
+
* when resolution fails -- the push-down is best-effort and never blocks a spawn.
|
|
30
|
+
*
|
|
31
|
+
* `assemblyCtxBase` is the focus's normal AssemblyContext (without prdId); this
|
|
32
|
+
* sets prdId on a copy so the prd.context resolver targets the parent PRD.
|
|
33
|
+
*/
|
|
34
|
+
export async function resolveFocusMilestoneContext(focusId, assemblyCtxBase, deps = {}) {
|
|
35
|
+
const { findPrdIdForFocus: findPrd, resolveRecipe } = { ...defaultDeps, ...deps };
|
|
36
|
+
try {
|
|
37
|
+
const prdId = await findPrd(focusId);
|
|
38
|
+
if (!prdId)
|
|
39
|
+
return { content: '', manifest: [] };
|
|
40
|
+
return await resolveRecipe([...FOCUS_PUSHDOWN_RECIPE], { ...assemblyCtxBase, prdId });
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
console.debug(`[prd-focus-pushdown] milestone context resolution failed for focus ${focusId} (non-fatal):`, err.message);
|
|
44
|
+
return { content: '', manifest: [] };
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=prd-focus-pushdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-focus-pushdown.js","sourceRoot":"","sources":["../src/prd-focus-pushdown.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EACL,iCAAiC,GAGlC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD;iFACiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,aAAa,CAAU,CAAC;AAY9D,MAAM,WAAW,GAA8B;IAC7C,iBAAiB;IACjB,aAAa,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,iCAAiC,CAAC,MAAM,EAAE,GAAG,CAAC;CAC/E,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAe,EACf,eAAgC,EAChC,OAA2C,EAAE;IAE7C,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,WAAW,EAAE,GAAG,IAAI,EAAE,CAAC;IAClF,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACjD,OAAO,MAAM,aAAa,CAAC,CAAC,GAAG,qBAAqB,CAAC,EAAE,EAAE,GAAG,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;IACxF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CACX,sEAAsE,OAAO,eAAe,EAC3F,GAAa,CAAC,OAAO,CACvB,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACvC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure PRT (Prerequisite-Tree) frontier computation.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from prd-controller so dependency-light consumers (e.g. the
|
|
5
|
+
* prd.context assembly resolver) can compute the frontier WITHOUT pulling in the
|
|
6
|
+
* controller's heavy module graph (config -> @telora/daemon-core, escalations,
|
|
7
|
+
* divergence). This module imports ONLY the PRT types -- it has no side effects
|
|
8
|
+
* and no I/O.
|
|
9
|
+
*/
|
|
10
|
+
import type { PrtNode, PrtEdge } from './queries/prd.js';
|
|
11
|
+
/**
|
|
12
|
+
* Splits the armable overcome frontier into those still needing a focus
|
|
13
|
+
* (materialize) and those already materialized (arm).
|
|
14
|
+
*
|
|
15
|
+
* PRT frontier semantics (implemented exactly):
|
|
16
|
+
* - prerequisite edge P->Q means P must be cleared before Q.
|
|
17
|
+
* - overcome O is ARMABLE iff O.status !== 'cleared' AND every node P with a
|
|
18
|
+
* prerequisite edge P->O is in clearedNodeIds. No incoming prerequisite edge
|
|
19
|
+
* => initial frontier.
|
|
20
|
+
* - needsMaterialize = armable overcomes with focusId == null.
|
|
21
|
+
* - needsArm = armable overcomes with focusId set.
|
|
22
|
+
*/
|
|
23
|
+
export declare function computePrtFrontier(nodes: PrtNode[], edges: PrtEdge[], clearedNodeIds: Set<string>): {
|
|
24
|
+
needsMaterialize: PrtNode[];
|
|
25
|
+
needsArm: PrtNode[];
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=prd-frontier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-frontier.d.ts","sourceRoot":"","sources":["../src/prd-frontier.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEzD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EAAE,EAChB,KAAK,EAAE,OAAO,EAAE,EAChB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAC1B;IAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC;IAAC,QAAQ,EAAE,OAAO,EAAE,CAAA;CAAE,CA0BtD"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure PRT (Prerequisite-Tree) frontier computation.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from prd-controller so dependency-light consumers (e.g. the
|
|
5
|
+
* prd.context assembly resolver) can compute the frontier WITHOUT pulling in the
|
|
6
|
+
* controller's heavy module graph (config -> @telora/daemon-core, escalations,
|
|
7
|
+
* divergence). This module imports ONLY the PRT types -- it has no side effects
|
|
8
|
+
* and no I/O.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Splits the armable overcome frontier into those still needing a focus
|
|
12
|
+
* (materialize) and those already materialized (arm).
|
|
13
|
+
*
|
|
14
|
+
* PRT frontier semantics (implemented exactly):
|
|
15
|
+
* - prerequisite edge P->Q means P must be cleared before Q.
|
|
16
|
+
* - overcome O is ARMABLE iff O.status !== 'cleared' AND every node P with a
|
|
17
|
+
* prerequisite edge P->O is in clearedNodeIds. No incoming prerequisite edge
|
|
18
|
+
* => initial frontier.
|
|
19
|
+
* - needsMaterialize = armable overcomes with focusId == null.
|
|
20
|
+
* - needsArm = armable overcomes with focusId set.
|
|
21
|
+
*/
|
|
22
|
+
export function computePrtFrontier(nodes, edges, clearedNodeIds) {
|
|
23
|
+
const needsMaterialize = [];
|
|
24
|
+
const needsArm = [];
|
|
25
|
+
for (const node of nodes) {
|
|
26
|
+
if (node.nodeType !== 'overcome') {
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (node.status === 'cleared') {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const prereqs = edges.filter((edge) => edge.edgeType === 'prerequisite' && edge.toNodeId === node.id);
|
|
33
|
+
const allPrereqsCleared = prereqs.every((edge) => clearedNodeIds.has(edge.fromNodeId));
|
|
34
|
+
if (!allPrereqsCleared) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (node.focusId === null) {
|
|
38
|
+
needsMaterialize.push(node);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
needsArm.push(node);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { needsMaterialize, needsArm };
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=prd-frontier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prd-frontier.js","sourceRoot":"","sources":["../src/prd-frontier.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAgB,EAChB,KAAgB,EAChB,cAA2B;IAE3B,MAAM,gBAAgB,GAAc,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC9B,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAC1B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,cAAc,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE,CACxE,CAAC;QACF,MAAM,iBAAiB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QACvF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC1B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACxC,CAAC"}
|