@agent-plan/core 0.2.26 → 0.2.27
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/description-freshness.d.ts +37 -0
- package/dist/description-freshness.d.ts.map +1 -0
- package/dist/description-freshness.js +84 -0
- package/dist/handoff-context.d.ts +134 -3
- package/dist/handoff-context.d.ts.map +1 -1
- package/dist/handoff-context.js +334 -16
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/package-version.d.ts +2 -0
- package/dist/package-version.d.ts.map +1 -1
- package/dist/package-version.js +1 -1
- package/dist/payload-fallback.d.ts +1 -1
- package/dist/payload-fallback.d.ts.map +1 -1
- package/dist/payload-fallback.js +6 -0
- package/dist/plan-store.d.ts +129 -30
- package/dist/plan-store.d.ts.map +1 -1
- package/dist/plan-store.js +685 -115
- package/dist/planner-rules.d.ts.map +1 -1
- package/dist/planner-rules.js +6 -2
- package/dist/read-tracking.d.ts +27 -3
- package/dist/read-tracking.d.ts.map +1 -1
- package/dist/read-tracking.js +53 -4
- package/dist/recap.d.ts.map +1 -1
- package/dist/recap.js +33 -9
- package/dist/renderer.d.ts.map +1 -1
- package/dist/renderer.js +0 -1
- package/dist/requirement-macro-tasks.d.ts +2 -2
- package/dist/requirement-macro-tasks.d.ts.map +1 -1
- package/dist/requirement-macro-tasks.js +2 -2
- package/dist/runtime-diagnostics.d.ts +34 -0
- package/dist/runtime-diagnostics.d.ts.map +1 -0
- package/dist/runtime-diagnostics.js +39 -0
- package/dist/schema.d.ts +487 -17
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +24 -4
- package/dist/task-context.d.ts +41 -2
- package/dist/task-context.d.ts.map +1 -1
- package/dist/task-context.js +102 -4
- package/dist/task-selection.d.ts +44 -1
- package/dist/task-selection.d.ts.map +1 -1
- package/dist/task-selection.js +158 -7
- package/dist/write-coordination.d.ts +27 -0
- package/dist/write-coordination.d.ts.map +1 -0
- package/dist/write-coordination.js +223 -0
- package/package.json +1 -1
- package/planner-skill.md +36 -20
package/dist/schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/schema.js
CHANGED
|
@@ -157,7 +157,7 @@ export const ProjectSchema = z.object({
|
|
|
157
157
|
export const SubtaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
|
|
158
158
|
export const TaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
|
|
159
159
|
export const PhaseStatusSchema = z.enum(["draft", "discovery", "planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
|
|
160
|
-
export const
|
|
160
|
+
export const MacroTaskStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
|
|
161
161
|
export const FeatureStatusSchema = z.enum(["planned", "in-progress", "done", "blocked", "canceled", "rejected", "deferred", "waiting"]);
|
|
162
162
|
export const SubtaskSchema = z.object({
|
|
163
163
|
id: z.string().min(1),
|
|
@@ -251,6 +251,8 @@ export const TaskSchema = z.object({
|
|
|
251
251
|
updatedAt: TimestampSchema,
|
|
252
252
|
/** Durable attestations of completed full context reads by harness session. */
|
|
253
253
|
sessionInfo: z.array(SessionInfoSchema).default([]),
|
|
254
|
+
/** Session currently owning this in-progress task ("" when not in-progress or legacy). Enables concurrent starts across agent sessions. */
|
|
255
|
+
activeOwnerSession: z.string().default(""),
|
|
254
256
|
}).transform((task) => ({
|
|
255
257
|
...task,
|
|
256
258
|
checklist: task.checklist
|
|
@@ -277,13 +279,32 @@ export const HandoffSupportingDocumentSchema = z.object({
|
|
|
277
279
|
contentHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
278
280
|
contentLength: z.number().int().nonnegative(),
|
|
279
281
|
});
|
|
282
|
+
export const HandoffColdStartInventoryEntrySchema = z.object({
|
|
283
|
+
category: z.string().min(1),
|
|
284
|
+
items: z.array(z.string().min(1)).default([]),
|
|
285
|
+
notApplicableReason: z.string().optional(),
|
|
286
|
+
});
|
|
287
|
+
export const HandoffColdStartSourceReviewSchema = z.object({
|
|
288
|
+
source: z.string().min(1),
|
|
289
|
+
detail: z.string().min(1),
|
|
290
|
+
});
|
|
291
|
+
export const HandoffColdStartInventorySchema = z.object({
|
|
292
|
+
version: z.number().int().positive(),
|
|
293
|
+
sourceReviews: z.array(HandoffColdStartSourceReviewSchema),
|
|
294
|
+
entries: z.array(HandoffColdStartInventoryEntrySchema),
|
|
295
|
+
});
|
|
280
296
|
export const HandoffCompletenessAuditSchema = z.object({
|
|
281
297
|
version: z.number().int().positive(),
|
|
282
298
|
entries: z.array(HandoffCompletenessEntrySchema),
|
|
299
|
+
coldStartInventory: HandoffColdStartInventorySchema.optional(),
|
|
283
300
|
supportingDocuments: z.array(HandoffSupportingDocumentSchema).default([]),
|
|
284
301
|
contentHash: z.string().regex(/^[a-f0-9]{64}$/),
|
|
285
302
|
contentLength: z.number().int().nonnegative(),
|
|
303
|
+
/** Structural validation timestamp written with the handoff candidate. */
|
|
286
304
|
verifiedAt: TimestampSchema,
|
|
305
|
+
/** Set only after a separate persisted read-back and source reconciliation. */
|
|
306
|
+
resumeReadyAt: z.union([TimestampSchema, z.literal("")]).default(""),
|
|
307
|
+
readBackSourceReviews: z.array(HandoffColdStartSourceReviewSchema).default([]),
|
|
287
308
|
});
|
|
288
309
|
export const PhaseSchema = z.object({
|
|
289
310
|
id: z.string(),
|
|
@@ -378,7 +399,7 @@ export const MacroTaskSchema = z.object({
|
|
|
378
399
|
id: z.string().regex(/^MT-\d{3}$/),
|
|
379
400
|
title: z.string().min(1),
|
|
380
401
|
description: z.string().default(""),
|
|
381
|
-
status:
|
|
402
|
+
status: MacroTaskStatusSchema,
|
|
382
403
|
createdAt: TimestampSchema,
|
|
383
404
|
updatedAt: TimestampSchema,
|
|
384
405
|
});
|
|
@@ -386,14 +407,13 @@ export const RequirementSchema = z.object({
|
|
|
386
407
|
id: z.string(),
|
|
387
408
|
title: z.string().min(1),
|
|
388
409
|
description: z.string().default(""),
|
|
389
|
-
status: RequirementStatusSchema,
|
|
390
410
|
macroTasks: z.array(MacroTaskSchema).default([]),
|
|
391
411
|
linkedPhaseIds: z.array(z.string().min(1)).default([]),
|
|
392
412
|
createdAt: TimestampSchema,
|
|
393
413
|
updatedAt: TimestampSchema,
|
|
394
414
|
/** Durable attestations of completed full context reads by harness session. */
|
|
395
415
|
sessionInfo: z.array(SessionInfoSchema).default([]),
|
|
396
|
-
});
|
|
416
|
+
}).strip(); // Legacy persisted top-level `status` is accepted as unknown input and removed from canonical output.
|
|
397
417
|
export const RequirementsDocumentSchema = z.object({
|
|
398
418
|
requirements: z.array(RequirementSchema),
|
|
399
419
|
});
|
package/dist/task-context.d.ts
CHANGED
|
@@ -1,4 +1,43 @@
|
|
|
1
|
-
import type { Feature, Phase, Requirement } from "./schema.js";
|
|
1
|
+
import type { AcceptedDecision, Feature, Phase, Project, Requirement, Task } from "./schema.js";
|
|
2
|
+
export declare const MAX_ACCEPTED_DECISION_CONTEXT_CHARS = 8000;
|
|
3
|
+
export declare const MAX_PHASE_WORK_MAP_CHARS = 8000;
|
|
4
|
+
export interface PhaseWorkMapEntry {
|
|
5
|
+
taskId: string;
|
|
6
|
+
ref: string;
|
|
7
|
+
number: number;
|
|
8
|
+
priority: number;
|
|
9
|
+
status: Task["status"];
|
|
10
|
+
title: string;
|
|
11
|
+
conciseGoal: string;
|
|
12
|
+
dependencies: string[];
|
|
13
|
+
remainingCapabilityOwner: boolean;
|
|
14
|
+
current: boolean;
|
|
15
|
+
}
|
|
16
|
+
export interface PhaseWorkMap {
|
|
17
|
+
content: string;
|
|
18
|
+
entries: PhaseWorkMapEntry[];
|
|
19
|
+
total: number;
|
|
20
|
+
truncated: boolean;
|
|
21
|
+
maxChars: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ScopedAcceptedDecisions {
|
|
24
|
+
scope: string;
|
|
25
|
+
decisions: AcceptedDecision[] | undefined;
|
|
26
|
+
}
|
|
27
|
+
/** Render every canonical field needed to understand an Accepted Decision. */
|
|
28
|
+
export declare function renderAcceptedDecisionsSection(label: string, decisions: AcceptedDecision[] | undefined): string;
|
|
29
|
+
/**
|
|
30
|
+
* Build bounded ambient/load context. This is an orientation summary, not a
|
|
31
|
+
* full-read attestation: truncation is explicit and points to entity full reads.
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildBoundedAcceptedDecisionContext(scopes: ScopedAcceptedDecisions[], maxChars?: number): {
|
|
34
|
+
content: string;
|
|
35
|
+
total: number;
|
|
36
|
+
truncated: boolean;
|
|
37
|
+
maxChars: number;
|
|
38
|
+
};
|
|
39
|
+
/** Build a bounded, priority-ordered map of sibling capability ownership. */
|
|
40
|
+
export declare function buildPhaseWorkMap(phase: Phase, featureNumber?: number, currentTaskId?: string, maxChars?: number): PhaseWorkMap;
|
|
2
41
|
/**
|
|
3
42
|
* Build a compact, agent-facing context block that surfaces the PARENT PHASE
|
|
4
43
|
* (and grandparent FEATURE) description when a task is started. The phase
|
|
@@ -12,5 +51,5 @@ import type { Feature, Phase, Requirement } from "./schema.js";
|
|
|
12
51
|
* Harness-agnostic: returns a plain markdown string. Both the Pi adapter and
|
|
13
52
|
* the MCP server append this to their `task_start` confirmation text.
|
|
14
53
|
*/
|
|
15
|
-
export declare function buildPhaseContextBlock(phase: Phase, feature: Feature | undefined, linkedRequirements?: Requirement[], featureRequirements?: Requirement[]): string;
|
|
54
|
+
export declare function buildPhaseContextBlock(phase: Phase, feature: Feature | undefined, linkedRequirements?: Requirement[], featureRequirements?: Requirement[], task?: Pick<Task, "id" | "acceptedDecisions">, project?: Pick<Project, "acceptedDecisions">): string;
|
|
16
55
|
//# sourceMappingURL=task-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-context.d.ts","sourceRoot":"","sources":["../src/task-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"task-context.d.ts","sourceRoot":"","sources":["../src/task-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAGhG,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wBAAwB,EAAE,OAAO,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,gBAAgB,EAAE,GAAG,SAAS,CAAC;CAC3C;AAOD,8EAA8E;AAC9E,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,GAAG,SAAS,GAAG,MAAM,CAgB/G;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,uBAAuB,EAAE,EACjC,QAAQ,SAAsC,GAC7C;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAY1E;AAQD,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,aAAa,CAAC,EAAE,MAAM,EACtB,aAAa,CAAC,EAAE,MAAM,EACtB,QAAQ,SAA2B,GAClC,YAAY,CAwCd;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,kBAAkB,GAAE,WAAW,EAAO,EACtC,mBAAmB,GAAE,WAAW,EAAO,EACvC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,mBAAmB,CAAC,EAC7C,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,GAC3C,MAAM,CA0DR"}
|
package/dist/task-context.js
CHANGED
|
@@ -1,4 +1,94 @@
|
|
|
1
1
|
import { formatPhaseRef } from "./naming.js";
|
|
2
|
+
export const MAX_ACCEPTED_DECISION_CONTEXT_CHARS = 8_000;
|
|
3
|
+
export const MAX_PHASE_WORK_MAP_CHARS = 8_000;
|
|
4
|
+
function indentDecisionValue(value) {
|
|
5
|
+
const normalized = value.trim() || "(not provided)";
|
|
6
|
+
return normalized.split(/\r?\n/).map((line) => ` ${line}`).join("\n");
|
|
7
|
+
}
|
|
8
|
+
/** Render every canonical field needed to understand an Accepted Decision. */
|
|
9
|
+
export function renderAcceptedDecisionsSection(label, decisions) {
|
|
10
|
+
const entries = decisions ?? [];
|
|
11
|
+
const lines = [`${label} (${entries.length}):`];
|
|
12
|
+
if (entries.length === 0)
|
|
13
|
+
return `${lines[0]}\n - None.`;
|
|
14
|
+
for (const decision of entries) {
|
|
15
|
+
lines.push(` - ${decision.title}`);
|
|
16
|
+
lines.push(` ID: ${decision.id}`);
|
|
17
|
+
lines.push(` Accepted at: ${decision.acceptedAt}`);
|
|
18
|
+
lines.push(" Decision:");
|
|
19
|
+
lines.push(indentDecisionValue(decision.decision));
|
|
20
|
+
lines.push(" Rationale:");
|
|
21
|
+
lines.push(indentDecisionValue(decision.rationale));
|
|
22
|
+
lines.push(" Implementation notes:");
|
|
23
|
+
lines.push(indentDecisionValue(decision.implementationNotes));
|
|
24
|
+
}
|
|
25
|
+
return lines.join("\n");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Build bounded ambient/load context. This is an orientation summary, not a
|
|
29
|
+
* full-read attestation: truncation is explicit and points to entity full reads.
|
|
30
|
+
*/
|
|
31
|
+
export function buildBoundedAcceptedDecisionContext(scopes, maxChars = MAX_ACCEPTED_DECISION_CONTEXT_CHARS) {
|
|
32
|
+
const populated = scopes
|
|
33
|
+
.map((scope) => ({ ...scope, decisions: scope.decisions ?? [] }))
|
|
34
|
+
.filter((scope) => scope.decisions.length > 0);
|
|
35
|
+
const total = populated.reduce((count, scope) => count + scope.decisions.length, 0);
|
|
36
|
+
const full = total === 0
|
|
37
|
+
? "Accepted decisions: none."
|
|
38
|
+
: populated.map((scope) => renderAcceptedDecisionsSection(`Accepted decisions — ${scope.scope}`, scope.decisions)).join("\n\n");
|
|
39
|
+
if (full.length <= maxChars)
|
|
40
|
+
return { content: full, total, truncated: false, maxChars };
|
|
41
|
+
const suffix = "\n\n[Accepted Decision context truncated for transport safety. Use the relevant full entity read to retrieve every canonical field.]";
|
|
42
|
+
const limit = Math.max(0, maxChars - suffix.length);
|
|
43
|
+
return { content: `${full.slice(0, limit)}${suffix}`.slice(0, maxChars), total, truncated: true, maxChars };
|
|
44
|
+
}
|
|
45
|
+
function conciseTaskGoal(task) {
|
|
46
|
+
const source = task.description?.trim() || task.notes?.trim() || task.title;
|
|
47
|
+
const firstParagraph = source.split(/\n\s*\n|\r?\n/).find((line) => line.trim())?.trim() ?? task.title;
|
|
48
|
+
return firstParagraph.length <= 240 ? firstParagraph : `${firstParagraph.slice(0, 237).trimEnd()}...`;
|
|
49
|
+
}
|
|
50
|
+
/** Build a bounded, priority-ordered map of sibling capability ownership. */
|
|
51
|
+
export function buildPhaseWorkMap(phase, featureNumber, currentTaskId, maxChars = MAX_PHASE_WORK_MAP_CHARS) {
|
|
52
|
+
const phaseRef = formatPhaseRef(phase.number, featureNumber);
|
|
53
|
+
const tasks = phase.tasks ?? [];
|
|
54
|
+
const refById = new Map(tasks.map((task) => [task.id, `${phaseRef}/T${String(task.number).padStart(3, "0")}`]));
|
|
55
|
+
const entries = [...tasks]
|
|
56
|
+
.sort((left, right) => (left.priority ?? left.number) - (right.priority ?? right.number) || left.number - right.number)
|
|
57
|
+
.map((task) => ({
|
|
58
|
+
taskId: task.id,
|
|
59
|
+
ref: `${phaseRef}/T${String(task.number).padStart(3, "0")}`,
|
|
60
|
+
number: task.number,
|
|
61
|
+
priority: task.priority ?? task.number,
|
|
62
|
+
status: task.status,
|
|
63
|
+
title: task.title,
|
|
64
|
+
conciseGoal: conciseTaskGoal(task),
|
|
65
|
+
dependencies: (task.dependsOn ?? []).map((dependency) => refById.get(dependency) ?? dependency),
|
|
66
|
+
remainingCapabilityOwner: !["done", "canceled", "rejected"].includes(task.status),
|
|
67
|
+
current: task.id === currentTaskId,
|
|
68
|
+
}));
|
|
69
|
+
const header = `Phase work map — canonical sibling capability ownership (${entries.length}, priority order):`;
|
|
70
|
+
const blocks = entries.map((entry) => [
|
|
71
|
+
`- ${entry.ref}${entry.current ? " (current)" : ""} — ${entry.title} [priority ${entry.priority}; ${entry.status}]`,
|
|
72
|
+
` Goal: ${entry.conciseGoal}`,
|
|
73
|
+
` Depends on: ${entry.dependencies.length > 0 ? entry.dependencies.join(", ") : "None."}`,
|
|
74
|
+
entry.remainingCapabilityOwner
|
|
75
|
+
? ` Ownership: ${entry.ref} owns this remaining capability; do not duplicate it in another task.`
|
|
76
|
+
: " Ownership: no remaining capability ownership (terminal task).",
|
|
77
|
+
].join("\n"));
|
|
78
|
+
const suffix = "[Phase work map truncated for transport safety. Read the canonical phase and task full views before proposing work; place deeper context under .planner/docs/.]";
|
|
79
|
+
const included = [];
|
|
80
|
+
let truncated = false;
|
|
81
|
+
for (const block of blocks) {
|
|
82
|
+
const candidate = [header, ...included, block].join("\n");
|
|
83
|
+
if (candidate.length + suffix.length + 1 > maxChars) {
|
|
84
|
+
truncated = true;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
included.push(block);
|
|
88
|
+
}
|
|
89
|
+
const content = [header, ...included, ...(truncated ? [suffix] : [])].join("\n").slice(0, maxChars);
|
|
90
|
+
return { content, entries, total: entries.length, truncated, maxChars };
|
|
91
|
+
}
|
|
2
92
|
/**
|
|
3
93
|
* Build a compact, agent-facing context block that surfaces the PARENT PHASE
|
|
4
94
|
* (and grandparent FEATURE) description when a task is started. The phase
|
|
@@ -12,7 +102,7 @@ import { formatPhaseRef } from "./naming.js";
|
|
|
12
102
|
* Harness-agnostic: returns a plain markdown string. Both the Pi adapter and
|
|
13
103
|
* the MCP server append this to their `task_start` confirmation text.
|
|
14
104
|
*/
|
|
15
|
-
export function buildPhaseContextBlock(phase, feature, linkedRequirements = [], featureRequirements = []) {
|
|
105
|
+
export function buildPhaseContextBlock(phase, feature, linkedRequirements = [], featureRequirements = [], task, project) {
|
|
16
106
|
const lines = [];
|
|
17
107
|
const phaseRef = formatPhaseRef(phase.number, feature?.number);
|
|
18
108
|
const requirementsBlock = (label, requirements, empty) => {
|
|
@@ -27,16 +117,22 @@ export function buildPhaseContextBlock(phase, feature, linkedRequirements = [],
|
|
|
27
117
|
}
|
|
28
118
|
};
|
|
29
119
|
lines.push(`\n📋 Task context — read this BEFORE touching code:`);
|
|
120
|
+
lines.push(`\n${buildBoundedAcceptedDecisionContext([
|
|
121
|
+
...(project ? [{ scope: "project", decisions: project.acceptedDecisions }] : []),
|
|
122
|
+
...(feature ? [{ scope: `feature F${String(feature.number).padStart(3, "0")}`, decisions: feature.acceptedDecisions }] : []),
|
|
123
|
+
{ scope: `phase ${phaseRef}`, decisions: phase.acceptedDecisions },
|
|
124
|
+
...(task ? [{ scope: "task", decisions: task.acceptedDecisions }] : []),
|
|
125
|
+
]).content}`);
|
|
30
126
|
if (feature) {
|
|
31
127
|
lines.push(`Feature F${String(feature.number).padStart(3, "0")} — ${feature.name}`);
|
|
32
128
|
if (feature.description && feature.description.trim()) {
|
|
33
129
|
lines.push(`\nFeature description:\n${feature.description.trim()}`);
|
|
34
130
|
}
|
|
35
|
-
requirementsBlock("
|
|
131
|
+
requirementsBlock("Product requirements linked to feature (outcomes, never coding/process rules)", featureRequirements, "None linked to this feature.");
|
|
36
132
|
}
|
|
37
133
|
else {
|
|
38
134
|
lines.push("Feature context: no parent feature linked to this phase.");
|
|
39
|
-
requirementsBlock("
|
|
135
|
+
requirementsBlock("Product requirements linked to feature (outcomes, never coding/process rules)", [], "None linked to this feature.");
|
|
40
136
|
}
|
|
41
137
|
lines.push(`\nPhase ${phaseRef} — ${phase.title}`);
|
|
42
138
|
if (phase.summary && phase.summary.trim()) {
|
|
@@ -59,7 +155,9 @@ export function buildPhaseContextBlock(phase, feature, linkedRequirements = [],
|
|
|
59
155
|
bullet("Open questions", phase.openQuestions);
|
|
60
156
|
bullet("Decisions", phase.decisions);
|
|
61
157
|
bullet("Completion criteria", phase.completionCriteria);
|
|
62
|
-
requirementsBlock("
|
|
158
|
+
requirementsBlock("Product requirements linked to phase (outcomes, never coding/process rules)", linkedRequirements, "None linked to this phase.");
|
|
159
|
+
lines.push(`\n${buildPhaseWorkMap(phase, feature?.number, task?.id).content}`);
|
|
160
|
+
lines.push("Before proposing or creating work, reread this canonical phase work map and the relevant sibling task full view so an already-owned capability is not duplicated.");
|
|
63
161
|
lines.push(`\n(End of phase context. Now proceed with the task.)`);
|
|
64
162
|
return lines.join("\n");
|
|
65
163
|
}
|
package/dist/task-selection.d.ts
CHANGED
|
@@ -1,10 +1,52 @@
|
|
|
1
1
|
import type { Feature, Phase, Task, WorkDeviation } from "./schema.js";
|
|
2
|
+
export type RecommendationClaimKind = "recommendation" | "advisory" | "conflict" | "insufficient";
|
|
3
|
+
export type RecommendationClaimSource = "priority" | "active-task" | "resume-deviation" | "dependency-ready" | "handoff" | "archived-handoff";
|
|
4
|
+
export interface RecommendationClaim {
|
|
5
|
+
kind: RecommendationClaimKind;
|
|
6
|
+
source: RecommendationClaimSource;
|
|
7
|
+
ref: string;
|
|
8
|
+
title: string;
|
|
9
|
+
reason: string;
|
|
10
|
+
taskId?: string;
|
|
11
|
+
phaseId?: string;
|
|
12
|
+
featureId?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface RecommendationHandoffEvidence {
|
|
15
|
+
compositeRef: string;
|
|
16
|
+
firstLine: string;
|
|
17
|
+
/** Authoritative only after persisted read-back verification. */
|
|
18
|
+
resumeReady: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface RecommendationArchivedHandoffEvidence {
|
|
21
|
+
compositeRef: string;
|
|
22
|
+
firstLine: string;
|
|
23
|
+
reason: string;
|
|
24
|
+
}
|
|
25
|
+
export interface RecommendationEvidence {
|
|
26
|
+
handoffs?: RecommendationHandoffEvidence[];
|
|
27
|
+
archivedHandoffs?: RecommendationArchivedHandoffEvidence[];
|
|
28
|
+
}
|
|
2
29
|
export type TaskRecommendationKind = "active" | "resume" | "priority" | "conflict" | "none";
|
|
3
30
|
export interface TaskCandidate {
|
|
4
31
|
feature: Feature | undefined;
|
|
5
32
|
phase: Phase;
|
|
6
33
|
task: Task;
|
|
7
34
|
}
|
|
35
|
+
export interface WorkSummary {
|
|
36
|
+
id: string;
|
|
37
|
+
number: number;
|
|
38
|
+
priority: number;
|
|
39
|
+
title: string;
|
|
40
|
+
status: string;
|
|
41
|
+
}
|
|
42
|
+
export interface NextWorkRecommendation {
|
|
43
|
+
selection: TaskRecommendation;
|
|
44
|
+
activeTask: WorkSummary | null;
|
|
45
|
+
nextFeature: WorkSummary | null;
|
|
46
|
+
nextPhase: WorkSummary | null;
|
|
47
|
+
nextTask: WorkSummary | null;
|
|
48
|
+
claims: RecommendationClaim[];
|
|
49
|
+
}
|
|
8
50
|
export interface TaskRecommendation {
|
|
9
51
|
kind: TaskRecommendationKind;
|
|
10
52
|
candidate?: TaskCandidate;
|
|
@@ -30,7 +72,8 @@ export declare function checkExplicitTaskStart(features: Feature[], phases: Phas
|
|
|
30
72
|
* may use its recommendation as a default while still allowing an explicitly
|
|
31
73
|
* approved temporary deviation.
|
|
32
74
|
*/
|
|
33
|
-
export declare function recommendNextTask(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string): TaskRecommendation;
|
|
75
|
+
export declare function recommendNextTask(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string, sessionId?: string): TaskRecommendation;
|
|
76
|
+
export declare function recommendNextWork(features: Feature[], phases: Phase[], deviations?: WorkDeviation[], currentPhaseId?: string, sessionId?: string, evidence?: RecommendationEvidence): NextWorkRecommendation;
|
|
34
77
|
/**
|
|
35
78
|
* Snapshot fields surfaced in the explicit resume-required proposal. Derived
|
|
36
79
|
* from {@link TaskPauseSnapshot}; kept structural so adapters can build it
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"task-selection.d.ts","sourceRoot":"","sources":["../src/task-selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5F,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,CAAC,EAAE,aAAa,EAAE,CAAC;IACnC,8EAA8E;IAC9E,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,mFAAmF;AACnF,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;
|
|
1
|
+
{"version":3,"file":"task-selection.d.ts","sourceRoot":"","sources":["../src/task-selection.ts"],"names":[],"mappings":"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"}
|
package/dist/task-selection.js
CHANGED
|
@@ -1,8 +1,108 @@
|
|
|
1
1
|
const unavailable = new Set(["blocked", "waiting", "deferred", "canceled", "rejected"]);
|
|
2
2
|
const hardUnavailable = new Set(["blocked", "deferred", "canceled", "rejected"]);
|
|
3
3
|
const terminal = new Set(["done", "canceled", "rejected"]);
|
|
4
|
-
const priority = (entity) => entity.priority
|
|
4
|
+
const priority = (entity) => entity.priority != null ? entity.priority : Number.MAX_SAFE_INTEGER;
|
|
5
5
|
const compare = (a, b) => priority(a) - priority(b) || a.number - b.number;
|
|
6
|
+
const summarizeFeature = (feature) => ({ id: feature.id, number: feature.number, priority: feature.priority, title: feature.name, status: feature.status });
|
|
7
|
+
const summarizePhase = (phase) => ({ id: phase.id, number: phase.number, priority: phase.priority, title: phase.title, status: phase.status });
|
|
8
|
+
const summarizeTask = (task) => ({ id: task.id, number: task.number, priority: task.priority, title: task.title, status: task.status });
|
|
9
|
+
const RECOMMENDATION_CLAIM_LIMIT = 8;
|
|
10
|
+
const selectionClaimKind = (selectionKind) => {
|
|
11
|
+
if (selectionKind === "priority")
|
|
12
|
+
return "recommendation";
|
|
13
|
+
if (selectionKind === "conflict")
|
|
14
|
+
return "conflict";
|
|
15
|
+
if (selectionKind === "none")
|
|
16
|
+
return "insufficient";
|
|
17
|
+
return "advisory";
|
|
18
|
+
};
|
|
19
|
+
const buildRecommendationClaims = (selection, evidence = {}, dependencyReadyCandidates = []) => {
|
|
20
|
+
const claims = [];
|
|
21
|
+
if (selection.candidate) {
|
|
22
|
+
claims.push({
|
|
23
|
+
kind: selectionClaimKind(selection.kind),
|
|
24
|
+
source: selection.kind === "resume" ? "resume-deviation" : selection.kind === "active" ? "active-task" : "priority",
|
|
25
|
+
ref: selection.candidate.task.id,
|
|
26
|
+
title: selection.candidate.task.title,
|
|
27
|
+
reason: selection.reason,
|
|
28
|
+
taskId: selection.candidate.task.id,
|
|
29
|
+
phaseId: selection.candidate.phase.id,
|
|
30
|
+
...(selection.candidate.feature?.id ? { featureId: selection.candidate.feature.id } : {}),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
for (const candidate of dependencyReadyCandidates) {
|
|
34
|
+
claims.push({
|
|
35
|
+
kind: "advisory",
|
|
36
|
+
source: "dependency-ready",
|
|
37
|
+
ref: candidate.task.id,
|
|
38
|
+
title: candidate.task.title,
|
|
39
|
+
reason: "All persisted task dependencies are done; this task is ready for explicit priority review.",
|
|
40
|
+
taskId: candidate.task.id,
|
|
41
|
+
phaseId: candidate.phase.id,
|
|
42
|
+
...(candidate.feature?.id ? { featureId: candidate.feature.id } : {}),
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
if (selection.kind === "conflict") {
|
|
46
|
+
for (const activeCandidate of selection.activeCandidates ?? []) {
|
|
47
|
+
claims.push({
|
|
48
|
+
kind: "conflict",
|
|
49
|
+
source: "active-task",
|
|
50
|
+
ref: activeCandidate.task.id,
|
|
51
|
+
title: activeCandidate.task.title,
|
|
52
|
+
reason: "Multiple in-progress tasks are persisted; resolve the active-work conflict before automatic selection.",
|
|
53
|
+
taskId: activeCandidate.task.id,
|
|
54
|
+
phaseId: activeCandidate.phase.id,
|
|
55
|
+
...(activeCandidate.feature?.id ? { featureId: activeCandidate.feature.id } : {}),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (selection.deviation) {
|
|
60
|
+
const deviationTaskId = selection.candidate?.task.id ?? selection.deviation.resumeTaskId;
|
|
61
|
+
claims.push({
|
|
62
|
+
kind: "advisory",
|
|
63
|
+
source: "resume-deviation",
|
|
64
|
+
ref: deviationTaskId,
|
|
65
|
+
title: selection.candidate?.task.title ?? "Resume-required deviation",
|
|
66
|
+
reason: selection.deviation.state === "resume-required"
|
|
67
|
+
? "Persisted deviation requires resuming the preserved task before new priority work can continue."
|
|
68
|
+
: "Persisted approved deviation competes with priority selection.",
|
|
69
|
+
taskId: deviationTaskId,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
for (const handoff of evidence.handoffs ?? []) {
|
|
73
|
+
if (!handoff.resumeReady) {
|
|
74
|
+
claims.push({
|
|
75
|
+
kind: "insufficient",
|
|
76
|
+
source: "handoff",
|
|
77
|
+
ref: handoff.compositeRef,
|
|
78
|
+
title: handoff.firstLine || handoff.compositeRef,
|
|
79
|
+
reason: "Persisted handoff read-back is incomplete; it is not an actionable resume claim.",
|
|
80
|
+
});
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
claims.push({
|
|
84
|
+
kind: "advisory",
|
|
85
|
+
source: "handoff",
|
|
86
|
+
ref: handoff.compositeRef,
|
|
87
|
+
title: handoff.firstLine || handoff.compositeRef,
|
|
88
|
+
reason: "Persisted phase handoff is resume-ready and competes with fresh priority work.",
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
// Archived Markdown is historical context, not authoritative next-work
|
|
92
|
+
// evidence. A future explicit structured resume target may opt it in; never
|
|
93
|
+
// recover an action by parsing archived prose.
|
|
94
|
+
void evidence.archivedHandoffs;
|
|
95
|
+
if (claims.length === 0) {
|
|
96
|
+
claims.push({
|
|
97
|
+
kind: "insufficient",
|
|
98
|
+
source: "priority",
|
|
99
|
+
ref: "",
|
|
100
|
+
title: "No competing claim evidence",
|
|
101
|
+
reason: selection.reason,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return claims.slice(0, RECOMMENDATION_CLAIM_LIMIT);
|
|
105
|
+
};
|
|
6
106
|
/**
|
|
7
107
|
* Validate an explicitly requested task start. Priority and existing active
|
|
8
108
|
* work remain advisory for explicit user choices; availability and dependency
|
|
@@ -41,14 +141,21 @@ export function checkExplicitTaskStart(features, phases, taskId, deviations = []
|
|
|
41
141
|
* may use its recommendation as a default while still allowing an explicitly
|
|
42
142
|
* approved temporary deviation.
|
|
43
143
|
*/
|
|
44
|
-
export function recommendNextTask(features, phases, deviations = [], currentPhaseId = "") {
|
|
144
|
+
export function recommendNextTask(features, phases, deviations = [], currentPhaseId = "", sessionId = "") {
|
|
45
145
|
const featureById = new Map(features.map((feature) => [feature.id, feature]));
|
|
46
146
|
const candidates = phases.flatMap((phase) => phase.tasks.map((task) => ({ feature: phase.featureId ? featureById.get(phase.featureId) : undefined, phase, task })));
|
|
47
147
|
const byTaskId = new Map(candidates.map((candidate) => [candidate.task.id, candidate]));
|
|
48
148
|
const active = candidates.filter(({ task }) => task.status === "in-progress");
|
|
49
|
-
if (
|
|
149
|
+
if (sessionId) {
|
|
150
|
+
const ownedActive = active.filter(({ task }) => task.activeOwnerSession === sessionId);
|
|
151
|
+
if (ownedActive.length > 1)
|
|
152
|
+
return { kind: "conflict", activeCandidates: ownedActive, reason: "This session owns more than one active task; resolve the active-work conflict before autonomous selection." };
|
|
153
|
+
if (ownedActive.length === 1)
|
|
154
|
+
return { kind: "active", candidate: ownedActive[0], reason: "Resume the single active task owned by this session." };
|
|
155
|
+
}
|
|
156
|
+
else if (active.length > 1)
|
|
50
157
|
return { kind: "conflict", activeCandidates: active, reason: "More than one task is in progress; resolve the active-work conflict before autonomous selection." };
|
|
51
|
-
if (active.length === 1)
|
|
158
|
+
else if (active.length === 1)
|
|
52
159
|
return { kind: "active", candidate: active[0], reason: "Resume the single active task." };
|
|
53
160
|
const newestFirst = (left, right) => right.createdAt.localeCompare(left.createdAt);
|
|
54
161
|
const resumable = (candidate) => candidate
|
|
@@ -105,11 +212,55 @@ export function recommendNextTask(features, phases, deviations = [], currentPhas
|
|
|
105
212
|
reason: "Continue the current phase before selecting new work elsewhere.",
|
|
106
213
|
};
|
|
107
214
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
215
|
+
const bestTaskInPhase = (phaseId) => ready
|
|
216
|
+
.filter((candidate) => candidate.phase.id === phaseId)
|
|
217
|
+
.sort((a, b) => compare(a.task, b.task))[0];
|
|
218
|
+
const bestPhaseInFeature = (featureId) => {
|
|
219
|
+
const phaseIds = new Set(ready.filter((candidate) => candidate.feature?.id === featureId).map((candidate) => candidate.phase.id));
|
|
220
|
+
return phases
|
|
221
|
+
.filter((phase) => phase.featureId === featureId && phaseIds.has(phase.id))
|
|
222
|
+
.sort((a, b) => compare(a, b))[0];
|
|
223
|
+
};
|
|
224
|
+
const bestFeature = features
|
|
225
|
+
.filter((feature) => ready.some((candidate) => candidate.feature?.id === feature.id))
|
|
226
|
+
.sort((a, b) => compare(a, b))[0];
|
|
227
|
+
if (!bestFeature)
|
|
228
|
+
return { kind: "none", reason: "No ready task is available." };
|
|
229
|
+
const bestPhase = bestPhaseInFeature(bestFeature.id);
|
|
230
|
+
if (!bestPhase)
|
|
231
|
+
return { kind: "none", reason: "No ready task is available." };
|
|
232
|
+
const candidate = bestTaskInPhase(bestPhase.id);
|
|
233
|
+
return candidate
|
|
234
|
+
? { kind: "priority", candidate, reason: "Select the lowest-priority ready feature, then phase, then task." }
|
|
111
235
|
: { kind: "none", reason: "No ready task is available." };
|
|
112
236
|
}
|
|
237
|
+
export function recommendNextWork(features, phases, deviations = [], currentPhaseId = "", sessionId = "", evidence = {}) {
|
|
238
|
+
const selection = recommendNextTask(features, phases, deviations, currentPhaseId, sessionId);
|
|
239
|
+
const featureById = new Map(features.map((feature) => [feature.id, feature]));
|
|
240
|
+
const taskById = new Map(phases.flatMap((phase) => phase.tasks.map((task) => [task.id, task])));
|
|
241
|
+
const dependencyReadyCandidates = phases.flatMap((phase) => phase.tasks.map((task) => ({
|
|
242
|
+
feature: phase.featureId ? featureById.get(phase.featureId) : undefined,
|
|
243
|
+
phase,
|
|
244
|
+
task,
|
|
245
|
+
})))
|
|
246
|
+
.filter(({ feature, phase, task }) => task.status === "planned"
|
|
247
|
+
&& task.dependsOn.length > 0
|
|
248
|
+
&& !hardUnavailable.has(phase.status)
|
|
249
|
+
&& !(feature && hardUnavailable.has(feature.status))
|
|
250
|
+
&& task.dependsOn.every((id) => taskById.get(id)?.status === "done"))
|
|
251
|
+
.sort((left, right) => compare(left.feature ?? { priority: 0, number: 0 }, right.feature ?? { priority: 0, number: 0 }) || compare(left.phase, right.phase) || compare(left.task, right.task));
|
|
252
|
+
const activeTask = selection.kind === "active" && selection.candidate
|
|
253
|
+
? summarizeTask(selection.candidate.task)
|
|
254
|
+
: null;
|
|
255
|
+
return {
|
|
256
|
+
selection,
|
|
257
|
+
activeTask,
|
|
258
|
+
nextFeature: selection.candidate?.feature ? summarizeFeature(selection.candidate.feature) : null,
|
|
259
|
+
nextPhase: selection.candidate ? summarizePhase(selection.candidate.phase) : null,
|
|
260
|
+
nextTask: selection.candidate ? summarizeTask(selection.candidate.task) : null,
|
|
261
|
+
claims: buildRecommendationClaims(selection, evidence, dependencyReadyCandidates),
|
|
262
|
+
};
|
|
263
|
+
}
|
|
113
264
|
/**
|
|
114
265
|
* Build an explicit resume-required proposal. `ref` is the already-formatted
|
|
115
266
|
* composite reference (F00x/P00x/T00x) supplied by the caller; `snapshot` is
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
interface WriterOwner {
|
|
2
|
+
token: string;
|
|
3
|
+
pid: number;
|
|
4
|
+
hostname: string;
|
|
5
|
+
cwd: string;
|
|
6
|
+
acquiredAt: string;
|
|
7
|
+
}
|
|
8
|
+
export interface PlanWriterBusyDetails {
|
|
9
|
+
errorCode: "PLAN_WRITER_BUSY";
|
|
10
|
+
planRoot: string;
|
|
11
|
+
lockPath: string;
|
|
12
|
+
waitedMs: number;
|
|
13
|
+
owner?: WriterOwner | undefined;
|
|
14
|
+
}
|
|
15
|
+
export declare class PlanWriterBusyError extends Error {
|
|
16
|
+
readonly details: PlanWriterBusyDetails;
|
|
17
|
+
readonly code = "PLAN_WRITER_BUSY";
|
|
18
|
+
constructor(details: PlanWriterBusyDetails);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Serialize one logical planner mutation across processes for a planner root.
|
|
22
|
+
* Nested writes in the same async transaction are re-entrant. Reads never take
|
|
23
|
+
* this lock, so secondary processes remain available for inspection.
|
|
24
|
+
*/
|
|
25
|
+
export declare function withPlanRootWriteLock<T>(root: string, fn: () => Promise<T>): Promise<T>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=write-coordination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-coordination.d.ts","sourceRoot":"","sources":["../src/write-coordination.ts"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;CACjC;AAED,qBAAa,mBAAoB,SAAQ,KAAK;aAGhB,OAAO,EAAE,qBAAqB;IAF1D,QAAQ,CAAC,IAAI,sBAAsB;gBAEP,OAAO,EAAE,qBAAqB;CAO3D;AAwLD;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAa7F"}
|