@agent-plan/core 0.2.26 → 0.2.28
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 +135 -3
- package/dist/handoff-context.d.ts.map +1 -1
- package/dist/handoff-context.js +336 -25
- 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 +690 -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
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Feature, Phase } from "./schema.js";
|
|
2
|
+
export type DescriptionFreshnessOwnerKind = "feature" | "phase";
|
|
3
|
+
export type DescriptionFreshnessChildKind = "phase" | "task";
|
|
4
|
+
export interface DescriptionFreshnessDiagnostic {
|
|
5
|
+
ownerKind: DescriptionFreshnessOwnerKind;
|
|
6
|
+
ownerId: string;
|
|
7
|
+
ownerRef: string;
|
|
8
|
+
state: "fresh" | "stale";
|
|
9
|
+
ownerDescriptionUpdatedAt: string;
|
|
10
|
+
newestChildKind: DescriptionFreshnessChildKind | null;
|
|
11
|
+
newestChildId: string;
|
|
12
|
+
newestChildRef: string;
|
|
13
|
+
newestChildDescriptionUpdatedAt: string;
|
|
14
|
+
reason: string;
|
|
15
|
+
}
|
|
16
|
+
export interface DescriptionReconciliationStep {
|
|
17
|
+
ownerKind: DescriptionFreshnessOwnerKind;
|
|
18
|
+
ownerId: string;
|
|
19
|
+
ownerRef: string;
|
|
20
|
+
causedByRef: string;
|
|
21
|
+
reason: string;
|
|
22
|
+
action: string;
|
|
23
|
+
}
|
|
24
|
+
export interface HierarchicalDescriptionFreshness {
|
|
25
|
+
diagnostics: DescriptionFreshnessDiagnostic[];
|
|
26
|
+
staleParentRefs: string[];
|
|
27
|
+
reconciliationRequired: boolean;
|
|
28
|
+
reconciliationPreview: DescriptionReconciliationStep[];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Compute child-to-parent description freshness without mutating user-authored
|
|
32
|
+
* prose. Reconciliation is intentionally leaf-to-root: stale phases first,
|
|
33
|
+
* then their owning features.
|
|
34
|
+
*/
|
|
35
|
+
export declare function buildHierarchicalDescriptionFreshness(features: Feature[], phases: Phase[]): HierarchicalDescriptionFreshness;
|
|
36
|
+
export declare function freshnessForOwner(freshness: HierarchicalDescriptionFreshness, ownerKind: DescriptionFreshnessOwnerKind, ownerId: string): DescriptionFreshnessDiagnostic | undefined;
|
|
37
|
+
//# sourceMappingURL=description-freshness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"description-freshness.d.ts","sourceRoot":"","sources":["../src/description-freshness.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,KAAK,EAAQ,MAAM,aAAa,CAAC;AAExD,MAAM,MAAM,6BAA6B,GAAG,SAAS,GAAG,OAAO,CAAC;AAChE,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7D,MAAM,WAAW,8BAA8B;IAC7C,SAAS,EAAE,6BAA6B,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IACzB,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,6BAA6B,GAAG,IAAI,CAAC;IACtD,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,+BAA+B,EAAE,MAAM,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,6BAA6B;IAC5C,SAAS,EAAE,6BAA6B,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gCAAgC;IAC/C,WAAW,EAAE,8BAA8B,EAAE,CAAC;IAC9C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sBAAsB,EAAE,OAAO,CAAC;IAChC,qBAAqB,EAAE,6BAA6B,EAAE,CAAC;CACxD;AA2DD;;;;GAIG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,OAAO,EAAE,EACnB,MAAM,EAAE,KAAK,EAAE,GACd,gCAAgC,CA0ClC;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,gCAAgC,EAC3C,SAAS,EAAE,6BAA6B,EACxC,OAAO,EAAE,MAAM,GACd,8BAA8B,GAAG,SAAS,CAE5C"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { formatFeatureRef, formatPhaseRef } from "./naming.js";
|
|
2
|
+
function descriptionRevision(entity) {
|
|
3
|
+
if (!entity.description.trim() && !entity.descriptionRef?.trim())
|
|
4
|
+
return "";
|
|
5
|
+
return entity.descriptionUpdatedAt?.trim() || entity.createdAt;
|
|
6
|
+
}
|
|
7
|
+
function taskRef(task, phase, featureNumber) {
|
|
8
|
+
return `${formatPhaseRef(phase.number, featureNumber)}/T${String(task.number).padStart(3, "0")}`;
|
|
9
|
+
}
|
|
10
|
+
function newestChild(candidates) {
|
|
11
|
+
return candidates
|
|
12
|
+
.filter((candidate) => candidate.revision)
|
|
13
|
+
.sort((left, right) => right.revision.localeCompare(left.revision) || left.ref.localeCompare(right.ref))[0] ?? null;
|
|
14
|
+
}
|
|
15
|
+
function diagnostic(ownerKind, owner, ownerRef, child) {
|
|
16
|
+
const ownerRevision = descriptionRevision(owner);
|
|
17
|
+
const stale = child !== null && (!ownerRevision || child.revision > ownerRevision);
|
|
18
|
+
const reason = stale
|
|
19
|
+
? `${ownerRef} description is older than ${child.ref}; review the child context and explicitly reconcile the parent description or descriptionRef.`
|
|
20
|
+
: child
|
|
21
|
+
? `${ownerRef} description is at least as recent as its newest described child ${child.ref}.`
|
|
22
|
+
: `${ownerRef} has no described child context requiring reconciliation.`;
|
|
23
|
+
return {
|
|
24
|
+
ownerKind,
|
|
25
|
+
ownerId: owner.id,
|
|
26
|
+
ownerRef,
|
|
27
|
+
state: stale ? "stale" : "fresh",
|
|
28
|
+
ownerDescriptionUpdatedAt: ownerRevision,
|
|
29
|
+
newestChildKind: child?.kind ?? null,
|
|
30
|
+
newestChildId: child?.id ?? "",
|
|
31
|
+
newestChildRef: child?.ref ?? "",
|
|
32
|
+
newestChildDescriptionUpdatedAt: child?.revision ?? "",
|
|
33
|
+
reason,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Compute child-to-parent description freshness without mutating user-authored
|
|
38
|
+
* prose. Reconciliation is intentionally leaf-to-root: stale phases first,
|
|
39
|
+
* then their owning features.
|
|
40
|
+
*/
|
|
41
|
+
export function buildHierarchicalDescriptionFreshness(features, phases) {
|
|
42
|
+
const featureById = new Map(features.map((feature) => [feature.id, feature]));
|
|
43
|
+
const phaseDiagnostics = phases.map((phase) => {
|
|
44
|
+
const feature = phase.featureId ? featureById.get(phase.featureId) : undefined;
|
|
45
|
+
const ref = formatPhaseRef(phase.number, feature?.number);
|
|
46
|
+
const child = newestChild(phase.tasks.map((task) => ({
|
|
47
|
+
kind: "task",
|
|
48
|
+
id: task.id,
|
|
49
|
+
ref: taskRef(task, phase, feature?.number),
|
|
50
|
+
revision: descriptionRevision(task),
|
|
51
|
+
})));
|
|
52
|
+
return diagnostic("phase", phase, ref, child);
|
|
53
|
+
});
|
|
54
|
+
const featureDiagnostics = features.map((feature) => {
|
|
55
|
+
const ownedPhases = phases.filter((phase) => phase.featureId === feature.id);
|
|
56
|
+
const candidates = [];
|
|
57
|
+
for (const phase of ownedPhases) {
|
|
58
|
+
const phaseRef = formatPhaseRef(phase.number, feature.number);
|
|
59
|
+
candidates.push({ kind: "phase", id: phase.id, ref: phaseRef, revision: descriptionRevision(phase) });
|
|
60
|
+
for (const task of phase.tasks) {
|
|
61
|
+
candidates.push({ kind: "task", id: task.id, ref: taskRef(task, phase, feature.number), revision: descriptionRevision(task) });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return diagnostic("feature", feature, formatFeatureRef(feature.number), newestChild(candidates));
|
|
65
|
+
});
|
|
66
|
+
const diagnostics = [...phaseDiagnostics, ...featureDiagnostics];
|
|
67
|
+
const stale = diagnostics.filter((entry) => entry.state === "stale");
|
|
68
|
+
return {
|
|
69
|
+
diagnostics,
|
|
70
|
+
staleParentRefs: stale.map((entry) => entry.ownerRef),
|
|
71
|
+
reconciliationRequired: stale.length > 0,
|
|
72
|
+
reconciliationPreview: stale.map((entry) => ({
|
|
73
|
+
ownerKind: entry.ownerKind,
|
|
74
|
+
ownerId: entry.ownerId,
|
|
75
|
+
ownerRef: entry.ownerRef,
|
|
76
|
+
causedByRef: entry.newestChildRef,
|
|
77
|
+
reason: entry.reason,
|
|
78
|
+
action: `Read ${entry.newestChildRef}, review ${entry.ownerRef}, then explicitly update ${entry.ownerRef}'s description or descriptionRef if the parent prose is stale.`,
|
|
79
|
+
})),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export function freshnessForOwner(freshness, ownerKind, ownerId) {
|
|
83
|
+
return freshness.diagnostics.find((entry) => entry.ownerKind === ownerKind && entry.ownerId === ownerId);
|
|
84
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { Feature, HandoffCompletenessAudit, HandoffCompletenessEntry, HandoffSupportingDocument, Phase, Task } from "./schema.js";
|
|
1
|
+
import type { Feature, HandoffCompletenessAudit, HandoffCompletenessEntry, HandoffColdStartInventoryEntry, HandoffSupportingDocument, Phase, Task } from "./schema.js";
|
|
2
|
+
import { type PhaseWorkMap } from "./task-context.js";
|
|
2
3
|
export declare const COMPLETION_SUMMARY_HEADING = "**Completion summary:**";
|
|
3
4
|
export declare const HANDOFF_COMPLETENESS_AUDIT_VERSION = 1;
|
|
5
|
+
export declare const HANDOFF_COLD_START_INVENTORY_VERSION = 1;
|
|
6
|
+
export declare const TARGET_HANDOFF_CONTENT_CHARS = 8000;
|
|
4
7
|
export declare const MAX_HANDOFF_CONTENT_CHARS = 24000;
|
|
5
8
|
export declare const HANDOFF_AUDIT_START_MARKER = "<!-- agent-plan:handoff-audit:start -->";
|
|
6
9
|
export declare const HANDOFF_AUDIT_END_MARKER = "<!-- agent-plan:handoff-audit:end -->";
|
|
@@ -59,8 +62,69 @@ export declare const HANDOFF_COMPLETENESS_CATEGORIES: readonly [{
|
|
|
59
62
|
readonly id: "conversation-only-facts";
|
|
60
63
|
readonly label: "Conversation-only facts";
|
|
61
64
|
}];
|
|
65
|
+
export declare const HANDOFF_COLD_START_SOURCE_REVIEWS: readonly [{
|
|
66
|
+
readonly id: "conversation";
|
|
67
|
+
readonly label: "Conversation, user corrections, and authorization state";
|
|
68
|
+
}, {
|
|
69
|
+
readonly id: "planner-entities";
|
|
70
|
+
readonly label: "Task, sibling tasks, phase, feature, requirements, and prior handoff";
|
|
71
|
+
}, {
|
|
72
|
+
readonly id: "working-tree";
|
|
73
|
+
readonly label: "Changed files, diffs, implementation state, and ownership";
|
|
74
|
+
}, {
|
|
75
|
+
readonly id: "verification-runtime";
|
|
76
|
+
readonly label: "Commands, test results, runtime observations, and limitations";
|
|
77
|
+
}, {
|
|
78
|
+
readonly id: "peer-agent-output";
|
|
79
|
+
readonly label: "Peer-agent messages and delegated-work results, or confirmation that none exist";
|
|
80
|
+
}];
|
|
81
|
+
export declare const HANDOFF_COLD_START_INVENTORY_CATEGORIES: readonly [{
|
|
82
|
+
readonly id: "files";
|
|
83
|
+
readonly label: "Exact files";
|
|
84
|
+
}, {
|
|
85
|
+
readonly id: "symbols";
|
|
86
|
+
readonly label: "Exact symbols and identifiers";
|
|
87
|
+
}, {
|
|
88
|
+
readonly id: "working-tree-ownership";
|
|
89
|
+
readonly label: "Working-tree state, work ownership, and commit/discard authorization";
|
|
90
|
+
}, {
|
|
91
|
+
readonly id: "negative-state";
|
|
92
|
+
readonly label: "Work not started, removals not performed, and intentionally untouched state";
|
|
93
|
+
}, {
|
|
94
|
+
readonly id: "commands-tools";
|
|
95
|
+
readonly label: "Commands and tool paths";
|
|
96
|
+
}, {
|
|
97
|
+
readonly id: "runtime-wiring";
|
|
98
|
+
readonly label: "Runtime wiring, call sites, and data flow";
|
|
99
|
+
}, {
|
|
100
|
+
readonly id: "preservation-constraints";
|
|
101
|
+
readonly label: "Behavior and code paths that must survive";
|
|
102
|
+
}, {
|
|
103
|
+
readonly id: "verification-evidence";
|
|
104
|
+
readonly label: "Concrete observations proving completed, live, dead, or inert state";
|
|
105
|
+
}, {
|
|
106
|
+
readonly id: "related-planned-work";
|
|
107
|
+
readonly label: "Sibling tasks and related planned capabilities";
|
|
108
|
+
}, {
|
|
109
|
+
readonly id: "user-visible-behavior";
|
|
110
|
+
readonly label: "User-visible behavior";
|
|
111
|
+
}, {
|
|
112
|
+
readonly id: "operator-actions";
|
|
113
|
+
readonly label: "Operator actions";
|
|
114
|
+
}, {
|
|
115
|
+
readonly id: "blockers-risks";
|
|
116
|
+
readonly label: "Blockers and risks";
|
|
117
|
+
}, {
|
|
118
|
+
readonly id: "remaining-work";
|
|
119
|
+
readonly label: "Remaining work";
|
|
120
|
+
}, {
|
|
121
|
+
readonly id: "ordered-resume-steps";
|
|
122
|
+
readonly label: "Ordered resume steps";
|
|
123
|
+
}];
|
|
124
|
+
export declare const HANDOFF_CANONICAL_SECTIONS: readonly ["Current focus", "Current and partial state", "Preservation constraints", "Supporting documents", "Blockers and risks", "How to resume"];
|
|
62
125
|
export type HandoffCompletenessCategory = typeof HANDOFF_COMPLETENESS_CATEGORIES[number]["id"];
|
|
63
|
-
export type
|
|
126
|
+
export type HandoffColdStartInventoryCategory = typeof HANDOFF_COLD_START_INVENTORY_CATEGORIES[number]["id"];
|
|
127
|
+
export type HandoffContractErrorCode = "HANDOFF_PREFLIGHT_REQUIRED" | "HANDOFF_REASON_REQUIRED" | "HANDOFF_CANONICAL_SECTIONS_REQUIRED" | "HANDOFF_COMPLETENESS_AUDIT_REQUIRED" | "HANDOFF_COLD_START_INVENTORY_REQUIRED" | "HANDOFF_COLD_START_INVENTORY_UNCOVERED" | "HANDOFF_CONTENT_LIMIT_EXCEEDED" | "HANDOFF_SUPPORTING_DOCUMENT_INVALID" | "HANDOFF_PERSISTENCE_VERIFICATION_FAILED" | "HANDOFF_READBACK_VERIFICATION_REQUIRED" | "HANDOFF_READBACK_GAPS_FOUND";
|
|
64
128
|
export declare class HandoffContractError extends Error {
|
|
65
129
|
readonly code: HandoffContractErrorCode;
|
|
66
130
|
readonly details: Record<string, unknown>;
|
|
@@ -70,10 +134,24 @@ export interface HandoffCompletenessAuditInput {
|
|
|
70
134
|
version: number;
|
|
71
135
|
entries: HandoffCompletenessEntry[];
|
|
72
136
|
}
|
|
137
|
+
export interface HandoffColdStartInventoryInput {
|
|
138
|
+
version: number;
|
|
139
|
+
sourceReviews: Array<{
|
|
140
|
+
source: string;
|
|
141
|
+
detail: string;
|
|
142
|
+
}>;
|
|
143
|
+
entries: HandoffColdStartInventoryEntry[];
|
|
144
|
+
}
|
|
73
145
|
export interface HandoffSupportingDocumentInput {
|
|
74
146
|
path: string;
|
|
75
147
|
description: string;
|
|
76
148
|
}
|
|
149
|
+
export interface HandoffContentExternalization {
|
|
150
|
+
content: string;
|
|
151
|
+
externalized: boolean;
|
|
152
|
+
extendedContent: string;
|
|
153
|
+
supportingDocument?: HandoffSupportingDocumentInput;
|
|
154
|
+
}
|
|
77
155
|
export interface HandoffTaskContextUpdate {
|
|
78
156
|
taskId: string;
|
|
79
157
|
completionSummary: string;
|
|
@@ -110,21 +188,44 @@ export interface PhaseHandoffAudit {
|
|
|
110
188
|
title: string;
|
|
111
189
|
}>;
|
|
112
190
|
completenessVersion: number;
|
|
191
|
+
targetContentChars: number;
|
|
113
192
|
maxContentChars: number;
|
|
114
193
|
completenessCategories: ReadonlyArray<{
|
|
115
194
|
id: HandoffCompletenessCategory;
|
|
116
195
|
label: string;
|
|
117
196
|
}>;
|
|
197
|
+
canonicalSections: ReadonlyArray<string>;
|
|
198
|
+
requiredHumanInputs: ReadonlyArray<{
|
|
199
|
+
id: "title" | "reason";
|
|
200
|
+
label: string;
|
|
201
|
+
description: string;
|
|
202
|
+
}>;
|
|
203
|
+
draftTemplate: string;
|
|
204
|
+
coldStartInventoryVersion: number;
|
|
205
|
+
coldStartSourceReviews: ReadonlyArray<{
|
|
206
|
+
id: string;
|
|
207
|
+
label: string;
|
|
208
|
+
}>;
|
|
209
|
+
coldStartInventoryCategories: ReadonlyArray<{
|
|
210
|
+
id: HandoffColdStartInventoryCategory;
|
|
211
|
+
label: string;
|
|
212
|
+
}>;
|
|
118
213
|
existingCompletenessAudit: HandoffCompletenessAudit | null;
|
|
214
|
+
phaseWorkMap: PhaseWorkMap;
|
|
119
215
|
}
|
|
120
216
|
export interface RefreshPhaseHandoffInput {
|
|
217
|
+
/** Structured, human-supplied explanation; rendered by the planner. */
|
|
218
|
+
reason: string;
|
|
121
219
|
content: string;
|
|
122
220
|
expectedHandoffUpdatedAt: string;
|
|
123
221
|
reconciledExistingHandoff: boolean;
|
|
124
222
|
completenessAudit?: HandoffCompletenessAuditInput;
|
|
223
|
+
coldStartInventory?: HandoffColdStartInventoryInput;
|
|
125
224
|
supportingDocuments?: HandoffSupportingDocumentInput[];
|
|
126
225
|
/** Populated and verified by PlanStore before pure domain application. */
|
|
127
226
|
verifiedSupportingDocuments?: HandoffSupportingDocument[];
|
|
227
|
+
/** Content is kept in-memory only for cold-start coverage validation. */
|
|
228
|
+
verifiedSupportingDocumentContents?: string[];
|
|
128
229
|
contextSync: PhaseHandoffContextSync;
|
|
129
230
|
}
|
|
130
231
|
export interface RefreshPhaseHandoffResult {
|
|
@@ -134,12 +235,43 @@ export interface RefreshPhaseHandoffResult {
|
|
|
134
235
|
handoffUpdatedAt: string;
|
|
135
236
|
handoffAudit: HandoffCompletenessAudit;
|
|
136
237
|
}
|
|
238
|
+
export interface VerifyPhaseHandoffReadBackInput {
|
|
239
|
+
expectedContentHash: string;
|
|
240
|
+
/** Optional legacy evidence; compact handoffs derive this from persisted state. */
|
|
241
|
+
sourceReviews?: Array<{
|
|
242
|
+
source: string;
|
|
243
|
+
detail: string;
|
|
244
|
+
}>;
|
|
245
|
+
omissionsFound?: string[];
|
|
246
|
+
}
|
|
247
|
+
export interface VerifyPhaseHandoffReadBackResult {
|
|
248
|
+
phaseId: string;
|
|
249
|
+
handoffUpdatedAt: string;
|
|
250
|
+
contentHash: string;
|
|
251
|
+
resumeReadyAt: string;
|
|
252
|
+
sourceReviews: Array<{
|
|
253
|
+
source: string;
|
|
254
|
+
detail: string;
|
|
255
|
+
}>;
|
|
256
|
+
}
|
|
137
257
|
export declare function hasTaskCompletionEvidence(task: Task): boolean;
|
|
258
|
+
export declare function buildHandoffDraftTemplate(phase: Phase, feature: Feature): string;
|
|
138
259
|
export declare function auditPhaseHandoff(phase: Phase, feature: Feature): PhaseHandoffAudit;
|
|
139
260
|
export declare function handoffContentHash(content: string): string;
|
|
140
261
|
export declare function validateHandoffCompletenessAudit(audit: HandoffCompletenessAuditInput | undefined): HandoffCompletenessEntry[];
|
|
262
|
+
export declare function validateHandoffColdStartInventory(inventory: HandoffColdStartInventoryInput | undefined, content: string, supportingDocumentContents?: string[]): HandoffColdStartInventoryEntry[];
|
|
263
|
+
export declare function validateHandoffReadBackVerification(phase: Phase, input: VerifyPhaseHandoffReadBackInput): Array<{
|
|
264
|
+
source: string;
|
|
265
|
+
detail: string;
|
|
266
|
+
}>;
|
|
267
|
+
/**
|
|
268
|
+
* Mechanically compact oversized legacy or verbose handoffs while retaining the
|
|
269
|
+
* complete submitted body in one planner-owned Markdown document.
|
|
270
|
+
*/
|
|
271
|
+
export declare function externalizeOversizedHandoffContent(content: string, supportingDocumentPath: string): HandoffContentExternalization;
|
|
141
272
|
export declare function renderHandoffCompletenessAudit(audit: HandoffCompletenessAuditInput): string;
|
|
142
|
-
export declare function renderVerifiedHandoffContent(content: string, audit?: HandoffCompletenessAuditInput): string;
|
|
273
|
+
export declare function renderVerifiedHandoffContent(content: string, audit?: HandoffCompletenessAuditInput, coldStartInventory?: HandoffColdStartInventoryInput, supportingDocumentContents?: string[]): string;
|
|
274
|
+
export declare function materializeHandoffMetadata(content: string, reason: string, createdAt: string, updatedAt: string): string;
|
|
143
275
|
export declare function validateCanonicalHandoffContent(content: string): void;
|
|
144
276
|
export declare function validateHandoffContextSync(phase: Phase, feature: Feature, input: RefreshPhaseHandoffInput): void;
|
|
145
277
|
export declare function applyHandoffContextSync(phase: Phase, feature: Feature, input: RefreshPhaseHandoffInput, timestamp: string): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handoff-context.d.ts","sourceRoot":"","sources":["../src/handoff-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,OAAO,EACP,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,EACL,IAAI,EACL,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"handoff-context.d.ts","sourceRoot":"","sources":["../src/handoff-context.ts"],"names":[],"mappings":"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"}
|