@agent-plan/core 0.2.19-next.2 → 0.2.19-next.21
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/checklist.d.ts +16 -0
- package/dist/checklist.d.ts.map +1 -0
- package/dist/checklist.js +52 -0
- package/dist/display-status.d.ts +99 -0
- package/dist/display-status.d.ts.map +1 -0
- package/dist/display-status.js +176 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/naming.d.ts +21 -3
- package/dist/naming.d.ts.map +1 -1
- package/dist/naming.js +45 -3
- package/dist/plan-store.d.ts +205 -22
- package/dist/plan-store.d.ts.map +1 -1
- package/dist/plan-store.js +940 -187
- package/dist/recap.d.ts.map +1 -1
- package/dist/recap.js +35 -9
- package/dist/refs.d.ts +23 -0
- package/dist/refs.d.ts.map +1 -1
- package/dist/refs.js +81 -0
- package/dist/schema.d.ts +806 -128
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +73 -4
- package/dist/task-context.d.ts +16 -0
- package/dist/task-context.d.ts.map +1 -0
- package/dist/task-context.js +65 -0
- package/dist/task-selection.d.ts +23 -0
- package/dist/task-selection.d.ts.map +1 -0
- package/dist/task-selection.js +66 -0
- package/package.json +4 -1
package/dist/plan-store.d.ts
CHANGED
|
@@ -1,23 +1,94 @@
|
|
|
1
|
-
import { type Feature, type FeaturesDocument, type Manifest, type Phase, type PlanWorkspace, type Project, type RequirementsDocument, type ActivityEntry, type ActivityLog, type CodebaseProfile, type ResumeFocus } from "./schema.js";
|
|
1
|
+
import { type Feature, type FeaturesDocument, type Manifest, type Phase, type PlanWorkspace, type Project, type RequirementsDocument, type Requirement, type ActivityEntry, type ActivityLog, type CodebaseProfile, type ResumeFocus, type WorkDeviation } from "./schema.js";
|
|
2
|
+
import { type ParentDisplay } from "./display-status.js";
|
|
3
|
+
export interface PlanStoreErrorDetails {
|
|
4
|
+
path?: string;
|
|
5
|
+
operation?: string;
|
|
6
|
+
backupTried?: boolean;
|
|
7
|
+
backupFailed?: boolean;
|
|
8
|
+
jsonParseError?: {
|
|
9
|
+
message: string;
|
|
10
|
+
line?: number;
|
|
11
|
+
column?: number;
|
|
12
|
+
};
|
|
13
|
+
validationErrors?: {
|
|
14
|
+
path: string;
|
|
15
|
+
message: string;
|
|
16
|
+
}[];
|
|
17
|
+
rawPreview?: string;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
}
|
|
2
20
|
export declare class PlanStoreError extends Error {
|
|
3
21
|
readonly cause?: unknown | undefined;
|
|
4
|
-
|
|
22
|
+
readonly details?: PlanStoreErrorDetails | undefined;
|
|
23
|
+
constructor(message: string, cause?: unknown | undefined, details?: PlanStoreErrorDetails | undefined);
|
|
5
24
|
}
|
|
6
25
|
export declare function setWriteBusyHook(hook: ((busy: boolean) => void) | undefined): void;
|
|
7
26
|
export declare function setWriteNotifyHook(hook: (() => void) | undefined): void;
|
|
8
27
|
export declare function withFeatureLock<T>(featureId: string, fn: () => Promise<T>): Promise<T>;
|
|
9
|
-
/** Summary of a phase that has a non-empty handoff, for the
|
|
28
|
+
/** Summary of a phase that has a non-empty pending handoff, for the
|
|
29
|
+
* listHandoffs() API. Completed/canceled phases are never returned here. */
|
|
10
30
|
export interface PhaseHandoffSummary {
|
|
11
31
|
phaseId: string;
|
|
32
|
+
/** Owning feature id (for deep-linking to the phase-detail route). */
|
|
33
|
+
featureId?: string | undefined;
|
|
12
34
|
/** Human-readable composite ref, e.g. `P003` or `P003(F002)`. */
|
|
13
35
|
compositeRef: string;
|
|
14
36
|
/** handoffUpdatedAt (falls back to phase.updatedAt if unset). */
|
|
15
37
|
updatedAt: string;
|
|
16
38
|
/** First non-empty line of the handoff, leading markdown headers stripped, ~80 chars. */
|
|
17
39
|
firstLine: string;
|
|
40
|
+
/** Full handoff content (phase.handoff) — lets the /handoff viewer render
|
|
41
|
+
* inline without a per-phase fetch. */
|
|
42
|
+
content: string;
|
|
43
|
+
}
|
|
44
|
+
/** Summary of an archived handoff. The content remains recoverable under
|
|
45
|
+
* `.planner/.local/handoff-archive/` but is not part of the active handoff
|
|
46
|
+
* list. */
|
|
47
|
+
export interface ArchivedPhaseHandoffSummary {
|
|
48
|
+
phaseId: string;
|
|
49
|
+
featureId?: string | undefined;
|
|
50
|
+
compositeRef: string;
|
|
51
|
+
file: string;
|
|
52
|
+
archivedAt: string;
|
|
53
|
+
reason: string;
|
|
54
|
+
firstLine: string;
|
|
55
|
+
content: string;
|
|
56
|
+
}
|
|
57
|
+
/** Summary of a phase file that exists on disk but no longer resolves to a
|
|
58
|
+
* valid owning feature. Missing back-links alone do NOT make a phase orphan:
|
|
59
|
+
* if `phase.featureId` still resolves to a known feature, repair can relink
|
|
60
|
+
* it. */
|
|
61
|
+
export interface OrphanPhaseSummary {
|
|
62
|
+
phaseId: string;
|
|
63
|
+
featureId?: string | undefined;
|
|
64
|
+
shortId?: string | undefined;
|
|
65
|
+
compositeRef: string;
|
|
66
|
+
title: string;
|
|
67
|
+
reason: string;
|
|
18
68
|
}
|
|
19
69
|
export declare function migrateToUuids(store: PlanStore): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* One-time idempotent migration to GLOBAL F/P/T numbering.
|
|
72
|
+
*
|
|
73
|
+
* Legacy plans assign Phase.number per-feature and Task.number per-phase, so
|
|
74
|
+
* every feature has a P001 and every phase has a T001 (ambiguous in chat/handoffs).
|
|
75
|
+
* This renumbers ALL features/phases/tasks by `createdAt` asc (stable tiebreak by
|
|
76
|
+
* id) into a single project-wide 1..N sequence and sets the monotonic project
|
|
77
|
+
* counters (nextFeatureNumber/nextPhaseNumber/nextTaskNumber).
|
|
78
|
+
*
|
|
79
|
+
* Idempotent: if no duplicate phase/task/feature numbers exist across the
|
|
80
|
+
* project, the plan is already global → no renumber writes happen (only the
|
|
81
|
+
* counters are ensured, in case project.json predates them). MUST run before
|
|
82
|
+
* ensureStructureOrdering (which no longer renumbers — numbers are stable).
|
|
83
|
+
*/
|
|
84
|
+
export declare function migrateToGlobalSequence(store: PlanStore): Promise<{
|
|
85
|
+
migrated: boolean;
|
|
86
|
+
phases: number;
|
|
87
|
+
tasks: number;
|
|
88
|
+
features: number;
|
|
89
|
+
}>;
|
|
20
90
|
export declare class PlanStore {
|
|
91
|
+
#private;
|
|
21
92
|
readonly root: string;
|
|
22
93
|
private autoSync;
|
|
23
94
|
private syncGuard;
|
|
@@ -46,6 +117,18 @@ export declare class PlanStore {
|
|
|
46
117
|
ensureStructureOrdering(): Promise<{
|
|
47
118
|
changed: boolean;
|
|
48
119
|
}>;
|
|
120
|
+
/** Rebuild each phase's `tasks` + `taskIds` from the task's OWN `phaseId`
|
|
121
|
+
* (source of truth). Heals plans where tasks got filed into the wrong phase
|
|
122
|
+
* file (e.g. the migrateToGlobalSequence index-mismatch bug, @agent-plan/core
|
|
123
|
+
* <0.2.19-next.7). Deterministic, lossless, idempotent: groups every task by
|
|
124
|
+
* its phaseId, preserves each phase's existing taskIds order, appends orphan
|
|
125
|
+
* tasks (whose phaseId dangles or is empty) by number. Writes a phase file
|
|
126
|
+
* only when its task set actually changed. */
|
|
127
|
+
rebuildContainment(): Promise<{
|
|
128
|
+
changed: number;
|
|
129
|
+
tasks: number;
|
|
130
|
+
orphan: number;
|
|
131
|
+
}>;
|
|
49
132
|
private manifestPath;
|
|
50
133
|
private projectPath;
|
|
51
134
|
private requirementsPath;
|
|
@@ -63,11 +146,45 @@ export declare class PlanStore {
|
|
|
63
146
|
private codebasePath;
|
|
64
147
|
private resumePath;
|
|
65
148
|
private activityPath;
|
|
66
|
-
private
|
|
149
|
+
private localRoot;
|
|
150
|
+
private timestampPath;
|
|
151
|
+
private backupsDir;
|
|
152
|
+
private tmpDir;
|
|
153
|
+
private handoffArchiveDir;
|
|
154
|
+
/** One-time migration for plans created before .planner/.local/ existed.
|
|
155
|
+
* Moves a legacy root-level file into .local/ if the legacy file exists and
|
|
156
|
+
* the .local/ counterpart does not. Safe to call on every load. */
|
|
157
|
+
private migrateLegacyLocalFile;
|
|
158
|
+
private migrateLegacyGeneratedDir;
|
|
159
|
+
private migrateLegacyHandoffArchive;
|
|
67
160
|
init(projectName: string): Promise<void>;
|
|
161
|
+
/** Idempotently ensure `.planner/.gitignore` ignores `.local/` (and the
|
|
162
|
+
* canonical transient/derived patterns). Projects initialized before the
|
|
163
|
+
* `.local/` move either have no `.planner/.gitignore` or one with stale
|
|
164
|
+
* root-level patterns. This upgrades them safely on load and on repair.
|
|
165
|
+
* Returns true if the file was (re)written. Safe to call on every load. */
|
|
166
|
+
ensureGitignore(): Promise<boolean>;
|
|
68
167
|
exists(): Promise<boolean>;
|
|
69
168
|
loadManifest(): Promise<Manifest>;
|
|
70
169
|
loadProject(): Promise<Project>;
|
|
170
|
+
/**
|
|
171
|
+
* Allocate the next global sequence number for a feature/phase/task.
|
|
172
|
+
* Reads the monotonic counter from project.json, increments it, persists,
|
|
173
|
+
* and returns the allocated number. MUST be called within withFeatureLock
|
|
174
|
+
* (adapters create entities inside a lock) so the counter is race-free.
|
|
175
|
+
* The counter never reuses a number — deletions leave gaps (by design:
|
|
176
|
+
* stable references survive deletion).
|
|
177
|
+
*/
|
|
178
|
+
allocFeatureNumber(): Promise<number>;
|
|
179
|
+
allocPhaseNumber(): Promise<number>;
|
|
180
|
+
allocTaskNumber(): Promise<number>;
|
|
181
|
+
/** Allocate a globally-unique sequence number. `atomicUpdateJson` already
|
|
182
|
+
* serializes concurrent calls via `withWriteLock` on the project file, so
|
|
183
|
+
* the read-modify-write is race-free in-process. The collision guard
|
|
184
|
+
* additionally skips any candidate that already exists in the data (safety
|
|
185
|
+
* net for cross-process races or manual edits) and persists the corrected
|
|
186
|
+
* counter. */
|
|
187
|
+
private allocSeqNumber;
|
|
71
188
|
loadPhase(phaseId: string): Promise<Phase>;
|
|
72
189
|
/** Read raw feature files WITHOUT the derived `status` field. Used
|
|
73
190
|
* internally so loadFeatures/loadAll can derive status from phases without
|
|
@@ -90,19 +207,27 @@ export declare class PlanStore {
|
|
|
90
207
|
/** True when a guard bypass is currently active (not expired). */
|
|
91
208
|
isGuardBypassed(): Promise<boolean>;
|
|
92
209
|
loadActivityLog(): Promise<ActivityLog>;
|
|
93
|
-
handoffExists(): Promise<boolean>;
|
|
94
|
-
loadHandoff(): Promise<{
|
|
95
|
-
content: string;
|
|
96
|
-
createdAt: string;
|
|
97
|
-
updatedAt: string;
|
|
98
|
-
} | null>;
|
|
99
|
-
saveHandoff(content: string): Promise<void>;
|
|
100
|
-
deleteHandoff(): Promise<void>;
|
|
101
210
|
appendActivity(type: string, ref: string, summary: string): Promise<ActivityEntry>;
|
|
102
211
|
/** Derive an up-to-date resume focus from the current workspace state. */
|
|
103
212
|
refreshResume(notes?: string, lastSessionSummary?: string): Promise<ResumeFocus>;
|
|
104
213
|
loadRequirements(): Promise<RequirementsDocument>;
|
|
214
|
+
linkedRequirementsForPhase(phaseId: string): Promise<Requirement[]>;
|
|
215
|
+
/** Requirements linked to any phase belonging to a feature, deduplicated by ID. */
|
|
216
|
+
linkedRequirementsForFeature(featureId: string): Promise<Requirement[]>;
|
|
217
|
+
loadPhaseWithRequirements(phaseId: string): Promise<Phase & {
|
|
218
|
+
linkedRequirements: Requirement[];
|
|
219
|
+
}>;
|
|
220
|
+
loadAllPhasesWithRequirements(): Promise<Array<Phase & {
|
|
221
|
+
linkedRequirements: Requirement[];
|
|
222
|
+
}>>;
|
|
105
223
|
loadAllPhases(): Promise<Phase[]>;
|
|
224
|
+
/** Derive the parent display snapshot for a phase from its tasks' canonical
|
|
225
|
+
* statuses. Pure, non-persisting. */
|
|
226
|
+
loadPhaseDisplay(phaseId: string): Promise<ParentDisplay>;
|
|
227
|
+
/** Derive the parent display snapshot for a feature from its phases' DERIVED
|
|
228
|
+
* canonical statuses (each phase status is derived from its tasks at read
|
|
229
|
+
* time, then mapped via fromCanonicalStatus). Pure, non-persisting. */
|
|
230
|
+
loadFeatureDisplay(featureId: string): Promise<ParentDisplay>;
|
|
106
231
|
loadAll(): Promise<PlanWorkspace>;
|
|
107
232
|
/** Migrate legacy non-feature-scoped phase ids to feature-scoped ids and repair
|
|
108
233
|
* dangling feature.phaseIds references. Idempotent. */
|
|
@@ -148,12 +273,21 @@ export declare class PlanStore {
|
|
|
148
273
|
prioritiesAssigned: number;
|
|
149
274
|
duplicateShortIds: string[];
|
|
150
275
|
};
|
|
276
|
+
containment: {
|
|
277
|
+
changed: number;
|
|
278
|
+
tasks: number;
|
|
279
|
+
orphan: number;
|
|
280
|
+
};
|
|
281
|
+
handoffs: {
|
|
282
|
+
archived: number;
|
|
283
|
+
};
|
|
151
284
|
integrity: {
|
|
152
285
|
duplicatePhaseIds: string[];
|
|
153
286
|
danglingPhaseIds: string[];
|
|
154
287
|
duplicateShortIds: string[];
|
|
155
288
|
};
|
|
156
289
|
}>;
|
|
290
|
+
private repairPhaseFeatureRefs;
|
|
157
291
|
/** Validate plan integrity: globally unique phase ids and resolvable feature.phaseIds. */
|
|
158
292
|
validateIntegrity(): Promise<{
|
|
159
293
|
duplicatePhaseIds: string[];
|
|
@@ -169,6 +303,10 @@ export declare class PlanStore {
|
|
|
169
303
|
* Returns the composite ref of the phase if its handoff was cleared, else null. */
|
|
170
304
|
syncTaskStatusRollup(phaseId: string): Promise<string | null>;
|
|
171
305
|
updateProject(updater: (p: Project) => Project): Promise<Project>;
|
|
306
|
+
/** Persist an explicitly approved work deviation without coupling it to a harness. */
|
|
307
|
+
addWorkDeviation(deviation: WorkDeviation): Promise<Project>;
|
|
308
|
+
/** Mark an approved/active deviation as resolved or canceled while retaining its audit record. */
|
|
309
|
+
setWorkDeviationState(id: string, state: "active" | "resolved" | "canceled", timestamp?: string): Promise<Project>;
|
|
172
310
|
updateFeatures(updater: (f: FeaturesDocument) => FeaturesDocument): Promise<FeaturesDocument>;
|
|
173
311
|
updateRequirements(updater: (r: RequirementsDocument) => RequirementsDocument): Promise<RequirementsDocument>;
|
|
174
312
|
saveProject(project: Project): Promise<void>;
|
|
@@ -185,21 +323,66 @@ export declare class PlanStore {
|
|
|
185
323
|
updatePhase(phaseId: string, updater: (phase: Phase) => Phase): Promise<Phase>;
|
|
186
324
|
/** Get the handoff text for a phase ("" if none). Throws if phase missing. */
|
|
187
325
|
getPhaseHandoff(phaseId: string): Promise<string>;
|
|
188
|
-
/** Set the handoff text for a phase + stamp handoffUpdatedAt.
|
|
189
|
-
*
|
|
326
|
+
/** Set the handoff text for a phase + stamp handoffUpdatedAt. A completed or
|
|
327
|
+
* canceled phase cannot receive a new operational handoff. Replacing an
|
|
328
|
+
* existing handoff archives the previous content as `superseded` first. */
|
|
190
329
|
setPhaseHandoff(phaseId: string, text: string): Promise<void>;
|
|
191
|
-
/**
|
|
192
|
-
*
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
330
|
+
/** Mark the phase handoff as read/acknowledged on recap (sets handoffReadAt).
|
|
331
|
+
* Does NOT clear the handoff — content is kept until a task starts or the
|
|
332
|
+
* phase completes, so a restart between read and resume does not lose it. */
|
|
333
|
+
markHandoffRead(phaseId: string): Promise<void>;
|
|
334
|
+
/** One-time import of a legacy .planner/HANDOFF.md file (file-based handoff
|
|
335
|
+
* from before F004) into the entity-scoped phase.handoff. Idempotent: if the
|
|
336
|
+
* file is absent or empty, no-op. If it exists + non-empty + the target phase
|
|
337
|
+
* has no handoff, writes the content onto the current in-progress phase (or
|
|
338
|
+
* the first phase if none in-progress) with an "imported" handoffHistory entry,
|
|
339
|
+
* then renames the file to HANDOFF.md.bak so it won't re-import. If the target
|
|
340
|
+
* already has a handoff, the entity-scoped one wins and the file is just .bak'd. */
|
|
341
|
+
importLegacyHandoffFile(): Promise<{
|
|
342
|
+
imported: boolean;
|
|
343
|
+
phaseRef?: string;
|
|
344
|
+
}>;
|
|
345
|
+
/** Clear the handoff for a phase, archiving its content first. The handoff
|
|
346
|
+
* markdown is written to .planner/handoff-archive/<phaseId>-<ISO>.md and a
|
|
347
|
+
* metadata entry { file, clearedAt, reason } is prepended to handoffHistory
|
|
348
|
+
* (capped at 5; oldest file is deleted when trimmed). handoffUpdatedAt is
|
|
349
|
+
* left unchanged as an audit trail. If the handoff is empty, this is a no-op.
|
|
350
|
+
* reason: "task-started" | "phase-done" | "manual" | "superseded" | "imported". */
|
|
351
|
+
clearPhaseHandoff(phaseId: string, reason?: string): Promise<void>;
|
|
352
|
+
/** Archive stale handoffs left on phases that are already completed/canceled.
|
|
353
|
+
* Idempotent: only non-empty phase.handoff values are moved. */
|
|
354
|
+
private archiveStaleHandoffs;
|
|
355
|
+
/** Public maintenance operation for retroactively archiving stale handoffs. */
|
|
356
|
+
cleanupStaleHandoffs(): Promise<number>;
|
|
357
|
+
/** List only active/pending phase handoffs, newest first. Completed,
|
|
358
|
+
* canceled, and orphaned phases are intentionally excluded. Any legacy stale
|
|
359
|
+
* handoff found on a completed/canceled phase is archived before returning,
|
|
360
|
+
* so callers (including /handoff) also repair old plans automatically. */
|
|
196
361
|
listHandoffs(): Promise<PhaseHandoffSummary[]>;
|
|
362
|
+
/** List recoverable archived handoffs from phase.handoffHistory. Archived
|
|
363
|
+
* entries are never returned by listHandoffs() and are safe to show on a
|
|
364
|
+
* dedicated history page. */
|
|
365
|
+
listArchivedHandoffs(): Promise<ArchivedPhaseHandoffSummary[]>;
|
|
366
|
+
listOrphanPhases(): Promise<OrphanPhaseSummary[]>;
|
|
367
|
+
cleanupOrphanPhases(): Promise<{
|
|
368
|
+
found: OrphanPhaseSummary[];
|
|
369
|
+
removed: OrphanPhaseSummary[];
|
|
370
|
+
}>;
|
|
197
371
|
deletePhase(phaseId: string): Promise<void>;
|
|
372
|
+
/** Remove a phase file AND its inline .bak backup. atomicUpdateJson (used by
|
|
373
|
+
* updatePhase without root) writes the backup inline at phases/<id>.json.bak,
|
|
374
|
+
* and readJson falls back to `${path}.bak` on a missing main file — so a
|
|
375
|
+
* delete that leaves the .bak behind would RESURRECT the deleted phase on
|
|
376
|
+
* the next read. Feature backups (written with root) live under
|
|
377
|
+
* .local/backups/ and are never read by readJson, so only the inline .bak
|
|
378
|
+
* needs removing here. */
|
|
379
|
+
private unlinkPhaseFiles;
|
|
198
380
|
/** Load the full workspace (manifest + phases + project + requirements + features) */
|
|
199
381
|
loadWorkspace(): Promise<PlanWorkspace>;
|
|
200
|
-
/** Load all data, render markdown, and write into generated/.
|
|
382
|
+
/** Load all data, render markdown, and write into generated/. Skips files
|
|
383
|
+
* whose content is unchanged to avoid unnecessary backup churn. */
|
|
201
384
|
writeGenerated(): Promise<string[]>;
|
|
202
|
-
/** Update
|
|
203
|
-
private
|
|
385
|
+
/** Update .local/timestamp.json to reflect a change. */
|
|
386
|
+
private touchTimestamp;
|
|
204
387
|
}
|
|
205
388
|
//# sourceMappingURL=plan-store.d.ts.map
|
package/dist/plan-store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-store.d.ts","sourceRoot":"","sources":["../src/plan-store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plan-store.d.ts","sourceRoot":"","sources":["../src/plan-store.ts"],"names":[],"mappings":"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"}
|