@iq-context/core 0.1.0
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/capture.d.ts +5 -0
- package/dist/capture.js +138 -0
- package/dist/capture.js.map +1 -0
- package/dist/config.d.ts +11 -0
- package/dist/config.js +85 -0
- package/dist/config.js.map +1 -0
- package/dist/discovery.d.ts +1 -0
- package/dist/discovery.js +18 -0
- package/dist/discovery.js.map +1 -0
- package/dist/doctor.d.ts +2 -0
- package/dist/doctor.js +166 -0
- package/dist/doctor.js.map +1 -0
- package/dist/find.d.ts +2 -0
- package/dist/find.js +137 -0
- package/dist/find.js.map +1 -0
- package/dist/go.d.ts +2 -0
- package/dist/go.js +31 -0
- package/dist/go.js.map +1 -0
- package/dist/index.d.ts +16 -0
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +13 -0
- package/dist/init.js +481 -0
- package/dist/init.js.map +1 -0
- package/dist/persistence.d.ts +6 -0
- package/dist/persistence.js +32 -0
- package/dist/persistence.js.map +1 -0
- package/dist/save.d.ts +2 -0
- package/dist/save.js +61 -0
- package/dist/save.js.map +1 -0
- package/dist/staleness.d.ts +9 -0
- package/dist/staleness.js +272 -0
- package/dist/staleness.js.map +1 -0
- package/dist/state.d.ts +18 -0
- package/dist/state.js +176 -0
- package/dist/state.js.map +1 -0
- package/dist/status.d.ts +2 -0
- package/dist/status.js +18 -0
- package/dist/status.js.map +1 -0
- package/dist/trackedArtifacts.d.ts +12 -0
- package/dist/trackedArtifacts.js +138 -0
- package/dist/trackedArtifacts.js.map +1 -0
- package/dist/types.d.ts +276 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/workstream.d.ts +28 -0
- package/dist/workstream.js +119 -0
- package/dist/workstream.js.map +1 -0
- package/dist/wrap.d.ts +2 -0
- package/dist/wrap.js +257 -0
- package/dist/wrap.js.map +1 -0
- package/package.json +20 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const EXCLUDED_DIRECTORIES = new Set([".git", ".iq-context", "node_modules"]);
|
|
4
|
+
/**
|
|
5
|
+
* Resolve configured artifact patterns against regular files in the project.
|
|
6
|
+
*
|
|
7
|
+
* Patterns are project-relative and use `/` separators. `*` and `?` match
|
|
8
|
+
* within one path segment, while `**` crosses directory boundaries.
|
|
9
|
+
*/
|
|
10
|
+
export function resolveTrackedArtifacts(projectRoot, patterns) {
|
|
11
|
+
const normalizedPatterns = patterns
|
|
12
|
+
.map(normalizePattern)
|
|
13
|
+
.filter((pattern) => pattern !== null);
|
|
14
|
+
if (normalizedPatterns.length === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
const matches = new Map();
|
|
18
|
+
for (const pattern of normalizedPatterns) {
|
|
19
|
+
const matcher = globToRegExp(pattern);
|
|
20
|
+
for (const relativePath of listPatternCandidates(projectRoot, pattern)) {
|
|
21
|
+
if (!matcher.test(relativePath)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const existing = matches.get(relativePath);
|
|
25
|
+
if (existing) {
|
|
26
|
+
existing.patterns.push(pattern);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
matches.set(relativePath, {
|
|
30
|
+
absolutePath: path.join(projectRoot, ...relativePath.split("/")),
|
|
31
|
+
relativePath,
|
|
32
|
+
patterns: [pattern],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return Array.from(matches.values()).sort((left, right) => {
|
|
37
|
+
return comparePaths(left.relativePath, right.relativePath);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
function normalizePattern(pattern) {
|
|
41
|
+
const normalized = pattern.trim().replaceAll("\\", "/").replace(/^\.\//, "");
|
|
42
|
+
if (normalized.length === 0
|
|
43
|
+
|| normalized.startsWith("/")
|
|
44
|
+
|| normalized === ".."
|
|
45
|
+
|| normalized.startsWith("../")
|
|
46
|
+
|| normalized.includes("/../")) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
if (normalized.split("/").some((segment) => EXCLUDED_DIRECTORIES.has(segment))) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return normalized;
|
|
53
|
+
}
|
|
54
|
+
function listPatternCandidates(projectRoot, pattern) {
|
|
55
|
+
const firstGlobIndex = pattern.search(/[?*]/);
|
|
56
|
+
if (firstGlobIndex === -1) {
|
|
57
|
+
const absolutePath = path.join(projectRoot, ...pattern.split("/"));
|
|
58
|
+
try {
|
|
59
|
+
return fs.lstatSync(absolutePath).isFile() ? [pattern] : [];
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return [];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const staticPrefix = pattern.slice(0, firstGlobIndex);
|
|
66
|
+
const lastSlashIndex = staticPrefix.lastIndexOf("/");
|
|
67
|
+
const relativeStart = lastSlashIndex === -1 ? "" : staticPrefix.slice(0, lastSlashIndex);
|
|
68
|
+
const absoluteStart = relativeStart.length === 0
|
|
69
|
+
? projectRoot
|
|
70
|
+
: path.join(projectRoot, ...relativeStart.split("/"));
|
|
71
|
+
try {
|
|
72
|
+
if (!fs.statSync(absoluteStart).isDirectory()) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
const files = [];
|
|
80
|
+
function visit(directoryPath, relativeDirectory) {
|
|
81
|
+
const entries = fs.readdirSync(directoryPath, { withFileTypes: true })
|
|
82
|
+
.sort((left, right) => comparePaths(left.name, right.name));
|
|
83
|
+
for (const entry of entries) {
|
|
84
|
+
if (entry.isDirectory() && EXCLUDED_DIRECTORIES.has(entry.name)) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
const absolutePath = path.join(directoryPath, entry.name);
|
|
88
|
+
const relativePath = relativeDirectory.length === 0
|
|
89
|
+
? entry.name
|
|
90
|
+
: `${relativeDirectory}/${entry.name}`;
|
|
91
|
+
if (entry.isDirectory()) {
|
|
92
|
+
visit(absolutePath, relativePath);
|
|
93
|
+
}
|
|
94
|
+
else if (entry.isFile()) {
|
|
95
|
+
files.push(relativePath);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
visit(absoluteStart, relativeStart);
|
|
100
|
+
return files;
|
|
101
|
+
}
|
|
102
|
+
function comparePaths(left, right) {
|
|
103
|
+
if (left < right) {
|
|
104
|
+
return -1;
|
|
105
|
+
}
|
|
106
|
+
if (left > right) {
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
return 0;
|
|
110
|
+
}
|
|
111
|
+
function globToRegExp(pattern) {
|
|
112
|
+
let source = "^";
|
|
113
|
+
for (let index = 0; index < pattern.length; index += 1) {
|
|
114
|
+
const character = pattern[index];
|
|
115
|
+
if (character === "*") {
|
|
116
|
+
const isGlobstar = pattern[index + 1] === "*";
|
|
117
|
+
if (isGlobstar) {
|
|
118
|
+
const followedBySlash = pattern[index + 2] === "/";
|
|
119
|
+
source += followedBySlash ? "(?:.*/)?" : ".*";
|
|
120
|
+
index += followedBySlash ? 2 : 1;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
source += "[^/]*";
|
|
124
|
+
}
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
if (character === "?") {
|
|
128
|
+
source += "[^/]";
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
source += escapeRegExp(character);
|
|
132
|
+
}
|
|
133
|
+
return new RegExp(`${source}$`);
|
|
134
|
+
}
|
|
135
|
+
function escapeRegExp(character) {
|
|
136
|
+
return /[\\^$.*+?()[\]{}|]/.test(character) ? `\\${character}` : character;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=trackedArtifacts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trackedArtifacts.js","sourceRoot":"","sources":["../src/trackedArtifacts.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
export type BriefingMode = "lean" | "standard" | "deep";
|
|
2
|
+
export type WorkstreamMode = "design" | "implement" | "debug" | "research" | "review" | "comms";
|
|
3
|
+
export type WorkstreamLifecycleStatus = "active" | "paused" | "blocked" | "completed" | "abandoned";
|
|
4
|
+
export type CaptureScope = "workstream" | "project";
|
|
5
|
+
export type CaptureKind = "note" | "idea" | "question" | "reference" | "raw";
|
|
6
|
+
export type CaptureInputSource = "argument" | "stdin" | "files" | "mixed";
|
|
7
|
+
export type DurableArtifactKind = "decision" | "discovery" | "assumption";
|
|
8
|
+
export type StalenessLevel = "fresh" | "warning" | "stale";
|
|
9
|
+
export type StalenessScope = "focus" | "workstream" | "project";
|
|
10
|
+
export type StalenessSourceKind = "active_plan" | "active_file" | "active_artifact" | "tracked_artifact" | "branch" | "resume_state" | "continuation";
|
|
11
|
+
export type StalenessReason = "missing" | "changed_after_checkpoint" | "mismatch" | "superseded";
|
|
12
|
+
export interface InitOptions {
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
defaultWorkstream?: string;
|
|
15
|
+
briefingMode?: BriefingMode;
|
|
16
|
+
force: boolean;
|
|
17
|
+
}
|
|
18
|
+
export interface InitResult {
|
|
19
|
+
projectRoot: string;
|
|
20
|
+
defaultWorkstream: string;
|
|
21
|
+
created: string[];
|
|
22
|
+
existing: string[];
|
|
23
|
+
refreshed: string[];
|
|
24
|
+
warnings: string[];
|
|
25
|
+
}
|
|
26
|
+
export interface ProjectPaths {
|
|
27
|
+
projectRoot: string;
|
|
28
|
+
configPath: string;
|
|
29
|
+
projectStatePath: string;
|
|
30
|
+
focusStatePath: string;
|
|
31
|
+
workstreamsDir: string;
|
|
32
|
+
currentWorkstreamPath: string;
|
|
33
|
+
}
|
|
34
|
+
export interface Assumption {
|
|
35
|
+
id?: string;
|
|
36
|
+
text: string;
|
|
37
|
+
status: string;
|
|
38
|
+
}
|
|
39
|
+
export interface ProjectState {
|
|
40
|
+
version: number;
|
|
41
|
+
project_id: string;
|
|
42
|
+
project_name: string;
|
|
43
|
+
objective: string;
|
|
44
|
+
default_briefing_mode: BriefingMode;
|
|
45
|
+
tracked_artifacts: string[];
|
|
46
|
+
global_assumptions: Assumption[];
|
|
47
|
+
stale_warnings: string[];
|
|
48
|
+
workstreams: string[];
|
|
49
|
+
created_at: string;
|
|
50
|
+
updated_at: string;
|
|
51
|
+
}
|
|
52
|
+
export interface FocusState {
|
|
53
|
+
version: number;
|
|
54
|
+
current_workstream_id: string;
|
|
55
|
+
current_environment_id: string | null;
|
|
56
|
+
current_branch: string | null;
|
|
57
|
+
resume_from: string;
|
|
58
|
+
last_command: string;
|
|
59
|
+
last_saved_at: string | null;
|
|
60
|
+
last_wrapped_at: string | null;
|
|
61
|
+
stale: boolean;
|
|
62
|
+
mismatch_flags: string[];
|
|
63
|
+
updated_at: string;
|
|
64
|
+
}
|
|
65
|
+
export interface WorkstreamState {
|
|
66
|
+
version: number;
|
|
67
|
+
workstream_id: string;
|
|
68
|
+
title: string;
|
|
69
|
+
objective: string;
|
|
70
|
+
lifecycle_status: WorkstreamLifecycleStatus;
|
|
71
|
+
mode: WorkstreamMode;
|
|
72
|
+
status_summary: string;
|
|
73
|
+
active_plan: string | null;
|
|
74
|
+
active_task: string | null;
|
|
75
|
+
active_files: string[];
|
|
76
|
+
active_artifacts: string[];
|
|
77
|
+
blockers: string[];
|
|
78
|
+
open_questions: string[];
|
|
79
|
+
next_actions: string[];
|
|
80
|
+
assumptions: Assumption[];
|
|
81
|
+
continuation_hint: string;
|
|
82
|
+
branch: string | null;
|
|
83
|
+
worktree: string | null;
|
|
84
|
+
environment_id: string | null;
|
|
85
|
+
last_saved_at: string | null;
|
|
86
|
+
last_wrapped_at: string | null;
|
|
87
|
+
completed_at: string | null;
|
|
88
|
+
created_at: string;
|
|
89
|
+
updated_at: string;
|
|
90
|
+
}
|
|
91
|
+
export interface ResumeState {
|
|
92
|
+
version: number;
|
|
93
|
+
plan_path: string | null;
|
|
94
|
+
completed_waves: string[];
|
|
95
|
+
next_wave: string | null;
|
|
96
|
+
completed_tasks: string[];
|
|
97
|
+
remaining_tasks: string[];
|
|
98
|
+
paused_reason: string;
|
|
99
|
+
resume_from: string;
|
|
100
|
+
updated_at: string;
|
|
101
|
+
}
|
|
102
|
+
export interface GoOptions {
|
|
103
|
+
startDir: string;
|
|
104
|
+
projectRoot?: string;
|
|
105
|
+
workstreamId?: string;
|
|
106
|
+
mode?: BriefingMode;
|
|
107
|
+
}
|
|
108
|
+
export interface GoResult {
|
|
109
|
+
projectRoot: string;
|
|
110
|
+
mode: BriefingMode;
|
|
111
|
+
projectState: ProjectState;
|
|
112
|
+
workstreamState: WorkstreamState;
|
|
113
|
+
resumeState: ResumeState;
|
|
114
|
+
trackedArtifacts: TrackedArtifactBriefing;
|
|
115
|
+
recentCaptures: CaptureEntry[];
|
|
116
|
+
warnings: string[];
|
|
117
|
+
staleness: StalenessReport;
|
|
118
|
+
}
|
|
119
|
+
export interface TrackedArtifactBriefing {
|
|
120
|
+
configuredPatterns: string[];
|
|
121
|
+
resolvedPaths: string[];
|
|
122
|
+
}
|
|
123
|
+
export interface CaptureOptions {
|
|
124
|
+
startDir: string;
|
|
125
|
+
projectRoot?: string;
|
|
126
|
+
workstreamId?: string;
|
|
127
|
+
scope: CaptureScope;
|
|
128
|
+
body?: string;
|
|
129
|
+
note?: string;
|
|
130
|
+
files: string[];
|
|
131
|
+
kind?: CaptureKind;
|
|
132
|
+
inputSource: CaptureInputSource;
|
|
133
|
+
}
|
|
134
|
+
export interface CaptureEntry {
|
|
135
|
+
version: 1;
|
|
136
|
+
id: string;
|
|
137
|
+
captured_at: string;
|
|
138
|
+
scope: CaptureScope;
|
|
139
|
+
workstream_id: string | null;
|
|
140
|
+
kind: CaptureKind;
|
|
141
|
+
body: string | null;
|
|
142
|
+
note: string | null;
|
|
143
|
+
files: string[];
|
|
144
|
+
source: {
|
|
145
|
+
command: "capture";
|
|
146
|
+
input: CaptureInputSource;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export interface CaptureResult {
|
|
150
|
+
projectRoot: string;
|
|
151
|
+
capturePath: string;
|
|
152
|
+
entry: CaptureEntry;
|
|
153
|
+
}
|
|
154
|
+
export interface CapturePromotion {
|
|
155
|
+
captureId: string;
|
|
156
|
+
kind: DurableArtifactKind;
|
|
157
|
+
}
|
|
158
|
+
export interface StatusOptions {
|
|
159
|
+
startDir: string;
|
|
160
|
+
projectRoot?: string;
|
|
161
|
+
workstreamId?: string;
|
|
162
|
+
}
|
|
163
|
+
export interface StatusResult {
|
|
164
|
+
projectRoot: string;
|
|
165
|
+
projectState: ProjectState;
|
|
166
|
+
focusState: FocusState;
|
|
167
|
+
workstreamState: WorkstreamState;
|
|
168
|
+
resumeState: ResumeState;
|
|
169
|
+
staleness: StalenessReport;
|
|
170
|
+
}
|
|
171
|
+
export interface StalenessReport {
|
|
172
|
+
level: StalenessLevel;
|
|
173
|
+
/** Legacy string projection kept for existing callers; prefer warningDetails for new logic. */
|
|
174
|
+
warnings: string[];
|
|
175
|
+
warningDetails: StalenessWarning[];
|
|
176
|
+
/** Legacy string projection kept for existing callers; prefer warningDetails for new logic. */
|
|
177
|
+
mismatchFlags: string[];
|
|
178
|
+
}
|
|
179
|
+
export interface StalenessWarning {
|
|
180
|
+
message: string;
|
|
181
|
+
scope: StalenessScope;
|
|
182
|
+
sourceKind: StalenessSourceKind;
|
|
183
|
+
reason: StalenessReason;
|
|
184
|
+
path?: string;
|
|
185
|
+
}
|
|
186
|
+
export interface SaveOptions {
|
|
187
|
+
startDir: string;
|
|
188
|
+
projectRoot?: string;
|
|
189
|
+
workstreamId?: string;
|
|
190
|
+
summary?: string;
|
|
191
|
+
mode?: WorkstreamMode;
|
|
192
|
+
files: string[];
|
|
193
|
+
artifacts: string[];
|
|
194
|
+
nextActions: string[];
|
|
195
|
+
blockers: string[];
|
|
196
|
+
questions: string[];
|
|
197
|
+
}
|
|
198
|
+
export interface SaveResult {
|
|
199
|
+
projectRoot: string;
|
|
200
|
+
workstreamState: WorkstreamState;
|
|
201
|
+
resumeState: ResumeState;
|
|
202
|
+
}
|
|
203
|
+
export interface WrapOptions {
|
|
204
|
+
startDir: string;
|
|
205
|
+
projectRoot?: string;
|
|
206
|
+
workstreamId?: string;
|
|
207
|
+
summary?: string;
|
|
208
|
+
nextActions: string[];
|
|
209
|
+
blockers: string[];
|
|
210
|
+
questions: string[];
|
|
211
|
+
decisions: string[];
|
|
212
|
+
discoveries: string[];
|
|
213
|
+
assumptions: string[];
|
|
214
|
+
capturePromotions: CapturePromotion[];
|
|
215
|
+
complete: boolean;
|
|
216
|
+
}
|
|
217
|
+
export interface WrapResult {
|
|
218
|
+
projectRoot: string;
|
|
219
|
+
workstreamState: WorkstreamState;
|
|
220
|
+
resumeState: ResumeState;
|
|
221
|
+
sessionArtifactPath: string;
|
|
222
|
+
durableArtifacts: string[];
|
|
223
|
+
}
|
|
224
|
+
export interface DoctorOptions {
|
|
225
|
+
startDir: string;
|
|
226
|
+
projectRoot?: string;
|
|
227
|
+
}
|
|
228
|
+
export interface DoctorCheck {
|
|
229
|
+
label: string;
|
|
230
|
+
status: "pass" | "warn" | "fail";
|
|
231
|
+
message?: string;
|
|
232
|
+
}
|
|
233
|
+
export interface DoctorResult {
|
|
234
|
+
projectRoot: string;
|
|
235
|
+
checks: DoctorCheck[];
|
|
236
|
+
}
|
|
237
|
+
export type FindScope = "all" | "state" | "sessions" | "docs" | "captures";
|
|
238
|
+
export type FindSourceKind = "state" | "session" | "doc" | "capture" | "artifact";
|
|
239
|
+
export interface FindOptions {
|
|
240
|
+
startDir: string;
|
|
241
|
+
projectRoot?: string;
|
|
242
|
+
workstreamId?: string;
|
|
243
|
+
query: string;
|
|
244
|
+
scope: FindScope;
|
|
245
|
+
limit?: number;
|
|
246
|
+
}
|
|
247
|
+
export interface FindMatch {
|
|
248
|
+
filePath: string;
|
|
249
|
+
lineNumber: number;
|
|
250
|
+
line: string;
|
|
251
|
+
sourceKind: FindSourceKind;
|
|
252
|
+
}
|
|
253
|
+
export interface FindResult {
|
|
254
|
+
projectRoot: string;
|
|
255
|
+
query: string;
|
|
256
|
+
scope: FindScope;
|
|
257
|
+
totalMatches: number;
|
|
258
|
+
matches: FindMatch[];
|
|
259
|
+
}
|
|
260
|
+
export interface WorkstreamListItem {
|
|
261
|
+
workstreamId: string;
|
|
262
|
+
title: string;
|
|
263
|
+
lifecycleStatus: WorkstreamLifecycleStatus;
|
|
264
|
+
isCurrent: boolean;
|
|
265
|
+
}
|
|
266
|
+
export interface WorkstreamListResult {
|
|
267
|
+
projectRoot: string;
|
|
268
|
+
items: WorkstreamListItem[];
|
|
269
|
+
}
|
|
270
|
+
export interface WorkstreamActionResult {
|
|
271
|
+
projectRoot: string;
|
|
272
|
+
workstreamState: WorkstreamState;
|
|
273
|
+
resumeState: ResumeState;
|
|
274
|
+
created: string[];
|
|
275
|
+
existing: string[];
|
|
276
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { WorkstreamActionResult, WorkstreamListResult } from "./types.js";
|
|
2
|
+
export declare function listWorkstreams(options: {
|
|
3
|
+
startDir: string;
|
|
4
|
+
projectRoot?: string;
|
|
5
|
+
}): WorkstreamListResult;
|
|
6
|
+
export declare function createWorkstream(options: {
|
|
7
|
+
startDir: string;
|
|
8
|
+
projectRoot?: string;
|
|
9
|
+
workstreamId: string;
|
|
10
|
+
title?: string;
|
|
11
|
+
objective?: string;
|
|
12
|
+
switchTo: boolean;
|
|
13
|
+
}): WorkstreamActionResult;
|
|
14
|
+
export declare function switchWorkstream(options: {
|
|
15
|
+
startDir: string;
|
|
16
|
+
projectRoot?: string;
|
|
17
|
+
workstreamId: string;
|
|
18
|
+
}): WorkstreamActionResult;
|
|
19
|
+
export declare function completeWorkstream(options: {
|
|
20
|
+
startDir: string;
|
|
21
|
+
projectRoot?: string;
|
|
22
|
+
workstreamId: string;
|
|
23
|
+
}): WorkstreamActionResult;
|
|
24
|
+
export declare function reopenWorkstream(options: {
|
|
25
|
+
startDir: string;
|
|
26
|
+
projectRoot?: string;
|
|
27
|
+
workstreamId: string;
|
|
28
|
+
}): WorkstreamActionResult;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { loadFocusState, loadProjectState, loadResumeState, loadWorkstreamState, resolveProjectRoot, switchFocusToWorkstream, writeProjectState, writeResumeState, writeWorkstreamState, listWorkstreamIds, } from "./state.js";
|
|
2
|
+
import { createWorkstreamScaffold } from "./init.js";
|
|
3
|
+
export function listWorkstreams(options) {
|
|
4
|
+
const projectRoot = resolveProjectRoot(options.startDir, options.projectRoot);
|
|
5
|
+
const projectState = loadProjectState(projectRoot);
|
|
6
|
+
void projectState;
|
|
7
|
+
const currentWorkstreamId = getCurrentFocusWorkstreamId(projectRoot);
|
|
8
|
+
const items = [];
|
|
9
|
+
for (const workstreamId of listWorkstreamIds(projectRoot)) {
|
|
10
|
+
const state = loadWorkstreamState(projectRoot, workstreamId);
|
|
11
|
+
items.push({
|
|
12
|
+
workstreamId,
|
|
13
|
+
title: state.title,
|
|
14
|
+
lifecycleStatus: state.lifecycle_status,
|
|
15
|
+
isCurrent: workstreamId === currentWorkstreamId,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
projectRoot,
|
|
20
|
+
items,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export function createWorkstream(options) {
|
|
24
|
+
const projectRoot = resolveProjectRoot(options.startDir, options.projectRoot);
|
|
25
|
+
const projectState = loadProjectState(projectRoot);
|
|
26
|
+
if (listWorkstreamIds(projectRoot).includes(options.workstreamId)) {
|
|
27
|
+
throw new Error(`Workstream already exists: ${options.workstreamId}`);
|
|
28
|
+
}
|
|
29
|
+
const scaffold = createWorkstreamScaffold({
|
|
30
|
+
projectRoot,
|
|
31
|
+
workstreamId: options.workstreamId,
|
|
32
|
+
title: options.title,
|
|
33
|
+
objective: options.objective,
|
|
34
|
+
});
|
|
35
|
+
const nextProjectState = {
|
|
36
|
+
...projectState,
|
|
37
|
+
workstreams: Array.from(new Set([...projectState.workstreams, options.workstreamId])),
|
|
38
|
+
updated_at: new Date().toISOString(),
|
|
39
|
+
};
|
|
40
|
+
writeProjectState(projectRoot, nextProjectState);
|
|
41
|
+
const workstreamState = loadWorkstreamState(projectRoot, options.workstreamId);
|
|
42
|
+
const resumeState = loadResumeState(projectRoot, options.workstreamId);
|
|
43
|
+
if (options.switchTo) {
|
|
44
|
+
switchFocusToWorkstream(projectRoot, workstreamState, resumeState);
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
projectRoot,
|
|
48
|
+
workstreamState,
|
|
49
|
+
resumeState,
|
|
50
|
+
created: scaffold.created,
|
|
51
|
+
existing: scaffold.existing,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function switchWorkstream(options) {
|
|
55
|
+
const projectRoot = resolveProjectRoot(options.startDir, options.projectRoot);
|
|
56
|
+
const workstreamState = loadWorkstreamState(projectRoot, options.workstreamId);
|
|
57
|
+
const resumeState = loadResumeState(projectRoot, options.workstreamId);
|
|
58
|
+
switchFocusToWorkstream(projectRoot, workstreamState, resumeState);
|
|
59
|
+
return {
|
|
60
|
+
projectRoot,
|
|
61
|
+
workstreamState,
|
|
62
|
+
resumeState,
|
|
63
|
+
created: [],
|
|
64
|
+
existing: [],
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function completeWorkstream(options) {
|
|
68
|
+
return updateWorkstreamLifecycle(options, "completed");
|
|
69
|
+
}
|
|
70
|
+
export function reopenWorkstream(options) {
|
|
71
|
+
return updateWorkstreamLifecycle(options, "active");
|
|
72
|
+
}
|
|
73
|
+
function updateWorkstreamLifecycle(options, lifecycleStatus) {
|
|
74
|
+
const projectRoot = resolveProjectRoot(options.startDir, options.projectRoot);
|
|
75
|
+
const currentState = loadWorkstreamState(projectRoot, options.workstreamId);
|
|
76
|
+
const currentResumeState = loadResumeState(projectRoot, options.workstreamId);
|
|
77
|
+
const timestamp = new Date().toISOString();
|
|
78
|
+
const nextState = {
|
|
79
|
+
...currentState,
|
|
80
|
+
lifecycle_status: lifecycleStatus,
|
|
81
|
+
next_actions: lifecycleStatus === "completed" ? [] : currentState.next_actions,
|
|
82
|
+
continuation_hint: lifecycleStatus === "completed"
|
|
83
|
+
? "Workstream completed."
|
|
84
|
+
: "Reopened; review the latest session context before continuing.",
|
|
85
|
+
completed_at: lifecycleStatus === "completed" ? timestamp : null,
|
|
86
|
+
updated_at: timestamp,
|
|
87
|
+
last_wrapped_at: lifecycleStatus === "completed" ? (currentState.last_wrapped_at ?? timestamp) : currentState.last_wrapped_at,
|
|
88
|
+
};
|
|
89
|
+
writeWorkstreamState(projectRoot, nextState);
|
|
90
|
+
const nextResumeState = {
|
|
91
|
+
...currentResumeState,
|
|
92
|
+
remaining_tasks: lifecycleStatus === "completed" ? [] : currentResumeState.remaining_tasks,
|
|
93
|
+
paused_reason: lifecycleStatus === "completed"
|
|
94
|
+
? "Workstream marked completed."
|
|
95
|
+
: "Workstream reopened for active use.",
|
|
96
|
+
resume_from: lifecycleStatus === "completed"
|
|
97
|
+
? "Workstream completed."
|
|
98
|
+
: "Reopened; review the latest session context before continuing.",
|
|
99
|
+
updated_at: timestamp,
|
|
100
|
+
};
|
|
101
|
+
writeResumeState(projectRoot, options.workstreamId, nextResumeState);
|
|
102
|
+
return {
|
|
103
|
+
projectRoot,
|
|
104
|
+
workstreamState: nextState,
|
|
105
|
+
resumeState: nextResumeState,
|
|
106
|
+
created: [],
|
|
107
|
+
existing: [],
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function getCurrentFocusWorkstreamId(projectRoot) {
|
|
111
|
+
try {
|
|
112
|
+
const focus = loadFocusState(projectRoot);
|
|
113
|
+
return typeof focus.current_workstream_id === "string" ? focus.current_workstream_id : null;
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=workstream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workstream.js","sourceRoot":"","sources":["../src/workstream.ts"],"names":[],"mappings":"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"}
|
package/dist/wrap.d.ts
ADDED