@tacuchi/agent-workflow-cli 4.7.0 → 5.0.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/application/dev-graduate-service.d.ts +33 -4
- package/dist/application/dev-graduate-service.d.ts.map +1 -1
- package/dist/application/dev-graduate-service.js +225 -41
- package/dist/application/dev-graduate-service.js.map +1 -1
- package/dist/application/paths-service.d.ts +22 -0
- package/dist/application/paths-service.d.ts.map +1 -1
- package/dist/application/paths-service.js +33 -1
- package/dist/application/paths-service.js.map +1 -1
- package/dist/cli/commands/wave4d-simple.d.ts.map +1 -1
- package/dist/cli/commands/wave4d-simple.js +9 -4
- package/dist/cli/commands/wave4d-simple.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { EnvPort } from "../ports/env.js";
|
|
2
2
|
import type { FileSystemPort } from "../ports/file-system.js";
|
|
3
|
-
import
|
|
3
|
+
import { PathsService } from "./paths-service.js";
|
|
4
|
+
declare const ALLOWED_KINDS: readonly ["decision", "manual", "script", "especificacion", "conclusion", "release"];
|
|
5
|
+
export type GraduateKind = (typeof ALLOWED_KINDS)[number];
|
|
4
6
|
export interface GraduateInput {
|
|
5
7
|
kind?: string;
|
|
6
8
|
session?: string;
|
|
7
9
|
decId?: string;
|
|
8
10
|
slug?: string;
|
|
11
|
+
source?: string;
|
|
9
12
|
}
|
|
10
13
|
export interface GraduateDecisionOutput {
|
|
11
14
|
kind: "decision";
|
|
@@ -16,8 +19,33 @@ export interface GraduateDecisionOutput {
|
|
|
16
19
|
dec_id: string;
|
|
17
20
|
slug: string;
|
|
18
21
|
}
|
|
19
|
-
export interface
|
|
20
|
-
kind: "
|
|
22
|
+
export interface GraduateManualOutput {
|
|
23
|
+
kind: "manual";
|
|
24
|
+
session: string;
|
|
25
|
+
source: string;
|
|
26
|
+
target: string;
|
|
27
|
+
next_number: string;
|
|
28
|
+
slug: string;
|
|
29
|
+
}
|
|
30
|
+
export interface GraduateScriptOutput {
|
|
31
|
+
kind: "script";
|
|
32
|
+
session: string;
|
|
33
|
+
source: string;
|
|
34
|
+
target: string;
|
|
35
|
+
next_number: string;
|
|
36
|
+
slug: string;
|
|
37
|
+
files_copied: number;
|
|
38
|
+
}
|
|
39
|
+
export interface GraduateEspecificacionOutput {
|
|
40
|
+
kind: "especificacion";
|
|
41
|
+
session: string;
|
|
42
|
+
source: string;
|
|
43
|
+
target: string;
|
|
44
|
+
next_number: string;
|
|
45
|
+
slug: string;
|
|
46
|
+
}
|
|
47
|
+
export interface GraduateConclusionOutput {
|
|
48
|
+
kind: "conclusion";
|
|
21
49
|
session: string;
|
|
22
50
|
source: string;
|
|
23
51
|
target: string;
|
|
@@ -27,7 +55,8 @@ export interface GraduatePlanOutput {
|
|
|
27
55
|
export interface GraduateError {
|
|
28
56
|
error: string;
|
|
29
57
|
}
|
|
30
|
-
export type GraduateOutput = GraduateDecisionOutput |
|
|
58
|
+
export type GraduateOutput = GraduateDecisionOutput | GraduateManualOutput | GraduateScriptOutput | GraduateEspecificacionOutput | GraduateConclusionOutput;
|
|
31
59
|
export type GraduateResult = GraduateOutput | GraduateError;
|
|
32
60
|
export declare function runGraduate(fs: FileSystemPort, env: EnvPort, paths: PathsService, input: GraduateInput): Promise<GraduateResult>;
|
|
61
|
+
export {};
|
|
33
62
|
//# sourceMappingURL=dev-graduate-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-graduate-service.d.ts","sourceRoot":"","sources":["../../src/application/dev-graduate-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,
|
|
1
|
+
{"version":3,"file":"dev-graduate-service.d.ts","sourceRoot":"","sources":["../../src/application/dev-graduate-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAwB,MAAM,oBAAoB,CAAC;AAOxE,QAAA,MAAM,aAAa,sFAOT,CAAC;AACX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,cAAc,GACtB,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,4BAA4B,GAC5B,wBAAwB,CAAC;AAC7B,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,aAAa,CAAC;AAE5D,wBAAsB,WAAW,CAC/B,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,aAAa,GACnB,OAAO,CAAC,cAAc,CAAC,CAyCzB"}
|
|
@@ -1,8 +1,62 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
1
|
+
import { basename, join } from "node:path";
|
|
2
|
+
import { PathsService, resolveWorkspaceRoot } from "./paths-service.js";
|
|
2
3
|
import { resolveSession } from "./session-resolver.js";
|
|
4
|
+
// Kinds graduable per DEC-003 (session006). The `release` kind is only
|
|
5
|
+
// invocable through the `release` command — it is rejected here with a hint.
|
|
6
|
+
// `script` is also typically driven by `release`; if invoked directly we still
|
|
7
|
+
// support it but we keep the bundle layout consistent with the release output.
|
|
8
|
+
const ALLOWED_KINDS = [
|
|
9
|
+
"decision",
|
|
10
|
+
"manual",
|
|
11
|
+
"script",
|
|
12
|
+
"especificacion",
|
|
13
|
+
"conclusion",
|
|
14
|
+
"release",
|
|
15
|
+
];
|
|
3
16
|
export async function runGraduate(fs, env, paths, input) {
|
|
4
|
-
|
|
5
|
-
|
|
17
|
+
const validation = validateInput(input);
|
|
18
|
+
if ("error" in validation)
|
|
19
|
+
return validation;
|
|
20
|
+
// DEC-002: walk up from cwd to find the workspace root, then re-anchor session
|
|
21
|
+
// resolution and graduation destination there. Lets the user invoke `graduate`
|
|
22
|
+
// from inside a fuente subdirectory of a hub workspace and still land in the
|
|
23
|
+
// hub's docs/.
|
|
24
|
+
const workspaceRoot = await resolveWorkspaceRoot(fs, env, paths);
|
|
25
|
+
const wsPaths = workspaceRoot === env.cwd()
|
|
26
|
+
? paths
|
|
27
|
+
: new PathsService(paths.namespace, env.homeDir(), workspaceRoot);
|
|
28
|
+
const session = await resolveSession(fs, env, wsPaths, input.session, true);
|
|
29
|
+
if (!session)
|
|
30
|
+
return { error: `Sesión no encontrada: ${input.session}` };
|
|
31
|
+
const ctx = {
|
|
32
|
+
fs,
|
|
33
|
+
workspaceRoot,
|
|
34
|
+
sessionPath: session.path,
|
|
35
|
+
folder: session.folder,
|
|
36
|
+
slug: validation.slug,
|
|
37
|
+
};
|
|
38
|
+
switch (validation.kind) {
|
|
39
|
+
case "decision":
|
|
40
|
+
return graduateDecision(ctx, validation.decId);
|
|
41
|
+
case "manual":
|
|
42
|
+
return graduateManual(ctx, input.source);
|
|
43
|
+
case "script":
|
|
44
|
+
return graduateScript(ctx);
|
|
45
|
+
case "especificacion":
|
|
46
|
+
return graduateEspecificacion(ctx, input.source);
|
|
47
|
+
case "conclusion":
|
|
48
|
+
return graduateConclusion(ctx);
|
|
49
|
+
case "release":
|
|
50
|
+
return {
|
|
51
|
+
error: "El kind 'release' no se gradúa con `graduate`; usá el comando `release` (consolida sesiones en un paquete de paso a producción).",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function validateInput(input) {
|
|
56
|
+
if (input.kind === undefined || !isAllowedKind(input.kind)) {
|
|
57
|
+
return {
|
|
58
|
+
error: `--kind debe ser uno de: ${ALLOWED_KINDS.join(", ")}`,
|
|
59
|
+
};
|
|
6
60
|
}
|
|
7
61
|
if (!input.session || !input.slug) {
|
|
8
62
|
return { error: "--session y --slug son obligatorios" };
|
|
@@ -10,64 +64,157 @@ export async function runGraduate(fs, env, paths, input) {
|
|
|
10
64
|
if (input.kind === "decision" && !input.decId) {
|
|
11
65
|
return { error: "--id (DEC-NNN) obligatorio para --kind decision" };
|
|
12
66
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
if (input.kind === "decision") {
|
|
18
|
-
return graduateDecision(fs, env.cwd(), sessionPath, session.folder, input.decId ?? "", input.slug);
|
|
67
|
+
if (input.kind === "release") {
|
|
68
|
+
return {
|
|
69
|
+
error: "El kind 'release' no se gradúa con `graduate`; usá el comando `release` (consolida sesiones en un paquete de paso a producción).",
|
|
70
|
+
};
|
|
19
71
|
}
|
|
20
|
-
|
|
72
|
+
const validated = {
|
|
73
|
+
kind: input.kind,
|
|
74
|
+
slug: input.slug,
|
|
75
|
+
};
|
|
76
|
+
if (input.decId !== undefined)
|
|
77
|
+
validated.decId = input.decId;
|
|
78
|
+
return validated;
|
|
79
|
+
}
|
|
80
|
+
function isAllowedKind(value) {
|
|
81
|
+
return ALLOWED_KINDS.includes(value);
|
|
21
82
|
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (!
|
|
83
|
+
// ─── decision ───────────────────────────────────────────────────────────────
|
|
84
|
+
async function graduateDecision(ctx, decId) {
|
|
85
|
+
if (!decId)
|
|
86
|
+
return { error: "--id (DEC-NNN) obligatorio para --kind decision" };
|
|
87
|
+
const decFile = join(ctx.sessionPath, "DECISIONES.md");
|
|
88
|
+
if (!(await ctx.fs.exists(decFile))) {
|
|
25
89
|
return { error: "DECISIONES.md no existe en la sesión" };
|
|
26
90
|
}
|
|
27
|
-
const text = await fs.readText(decFile);
|
|
28
|
-
// Mirror Python regex: (^##\s+{decId}[^\n]*\n)(.*?)(?=^##\s+|\Z) — JS no soporta \Z, line-by-line parser.
|
|
91
|
+
const text = await ctx.fs.readText(decFile);
|
|
29
92
|
const block = extractDecisionBlock(text, decId);
|
|
30
93
|
if (!block) {
|
|
31
94
|
return { error: `Bloque ${decId} no encontrado en DECISIONES.md` };
|
|
32
95
|
}
|
|
33
|
-
const destDir = join(
|
|
34
|
-
await fs.mkdirp(destDir);
|
|
35
|
-
const nnn = await nextNumberInDir(fs, destDir);
|
|
36
|
-
const destFile = join(destDir, `${nnn}-${slug}.md`);
|
|
37
|
-
await fs.writeText(destFile, `${block.header}\n\n${block.body}\n`);
|
|
38
|
-
const pointer = `${block.header}\n→ docs/decisiones/${nnn}-${slug}.md\n\n`;
|
|
96
|
+
const destDir = join(ctx.workspaceRoot, "docs", "decisiones");
|
|
97
|
+
await ctx.fs.mkdirp(destDir);
|
|
98
|
+
const nnn = await nextNumberInDir(ctx.fs, destDir);
|
|
99
|
+
const destFile = join(destDir, `${nnn}-${ctx.slug}.md`);
|
|
100
|
+
await ctx.fs.writeText(destFile, `${block.header}\n\n${block.body}\n`);
|
|
101
|
+
const pointer = `${block.header}\n→ docs/decisiones/${nnn}-${ctx.slug}.md\n\n`;
|
|
39
102
|
const newText = text.slice(0, block.startIndex) + pointer + text.slice(block.endIndex);
|
|
40
|
-
await fs.writeText(decFile, newText);
|
|
103
|
+
await ctx.fs.writeText(decFile, newText);
|
|
41
104
|
return {
|
|
42
105
|
kind: "decision",
|
|
43
|
-
session: folder,
|
|
106
|
+
session: ctx.folder,
|
|
44
107
|
source: decFile,
|
|
45
108
|
target: destFile,
|
|
46
109
|
next_number: nnn,
|
|
47
110
|
dec_id: decId,
|
|
48
|
-
slug,
|
|
111
|
+
slug: ctx.slug,
|
|
49
112
|
};
|
|
50
113
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
114
|
+
// ─── manual ─────────────────────────────────────────────────────────────────
|
|
115
|
+
async function graduateManual(ctx, sourceArg) {
|
|
116
|
+
const sourceRel = sourceArg && sourceArg.length > 0 ? sourceArg : "MANUAL.md";
|
|
117
|
+
const sourceFile = join(ctx.sessionPath, sourceRel);
|
|
118
|
+
if (!(await ctx.fs.exists(sourceFile))) {
|
|
119
|
+
return { error: `Fuente no existe: ${sourceRel} en la sesión` };
|
|
55
120
|
}
|
|
56
|
-
const content = await fs.readText(
|
|
57
|
-
const destDir = join(
|
|
58
|
-
await fs.mkdirp(destDir);
|
|
59
|
-
const nnn = await nextNumberInDir(fs, destDir);
|
|
60
|
-
const destFile = join(destDir, `${nnn}-${slug}.md`);
|
|
61
|
-
await fs.writeText(destFile, content);
|
|
62
|
-
const pointer = `# Tareas — ${folder}\n\n→ docs/planes/${nnn}-${slug}.md\n`;
|
|
63
|
-
await fs.writeText(tasksFile, pointer);
|
|
121
|
+
const content = await ctx.fs.readText(sourceFile);
|
|
122
|
+
const destDir = join(ctx.workspaceRoot, "docs", "manuales");
|
|
123
|
+
await ctx.fs.mkdirp(destDir);
|
|
124
|
+
const nnn = await nextNumberInDir(ctx.fs, destDir);
|
|
125
|
+
const destFile = join(destDir, `${nnn}-${ctx.slug}.md`);
|
|
126
|
+
await ctx.fs.writeText(destFile, content);
|
|
64
127
|
return {
|
|
65
|
-
kind: "
|
|
66
|
-
session: folder,
|
|
67
|
-
source:
|
|
128
|
+
kind: "manual",
|
|
129
|
+
session: ctx.folder,
|
|
130
|
+
source: sourceFile,
|
|
68
131
|
target: destFile,
|
|
69
132
|
next_number: nnn,
|
|
70
|
-
slug,
|
|
133
|
+
slug: ctx.slug,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// ─── script ─────────────────────────────────────────────────────────────────
|
|
137
|
+
async function graduateScript(ctx) {
|
|
138
|
+
const sessionCode = parseSessionCode(ctx.folder);
|
|
139
|
+
if (!sessionCode) {
|
|
140
|
+
return { error: `No se pudo extraer el código de sesión de '${ctx.folder}'` };
|
|
141
|
+
}
|
|
142
|
+
const scriptsDir = join(ctx.sessionPath, "scripts");
|
|
143
|
+
const queriesDir = join(ctx.sessionPath, "queries");
|
|
144
|
+
const hasScripts = await ctx.fs.exists(scriptsDir);
|
|
145
|
+
const hasQueries = await ctx.fs.exists(queriesDir);
|
|
146
|
+
if (!hasScripts && !hasQueries) {
|
|
147
|
+
return {
|
|
148
|
+
error: "La sesión no contiene 'scripts/' ni 'queries/' — nada para graduar.",
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const destRoot = join(ctx.workspaceRoot, "docs", "scripts");
|
|
152
|
+
await ctx.fs.mkdirp(destRoot);
|
|
153
|
+
const nnn = await nextNumberInDirsByPrefix(ctx.fs, destRoot);
|
|
154
|
+
const bundleName = `${nnn}-session${sessionCode}-${ctx.slug}`;
|
|
155
|
+
const destDir = join(destRoot, bundleName);
|
|
156
|
+
await ctx.fs.mkdirp(destDir);
|
|
157
|
+
let copied = 0;
|
|
158
|
+
if (hasScripts) {
|
|
159
|
+
copied += await copyTree(ctx.fs, scriptsDir, join(destDir, "scripts"));
|
|
160
|
+
}
|
|
161
|
+
if (hasQueries) {
|
|
162
|
+
copied += await copyTree(ctx.fs, queriesDir, join(destDir, "queries"));
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
kind: "script",
|
|
166
|
+
session: ctx.folder,
|
|
167
|
+
source: hasScripts ? scriptsDir : queriesDir,
|
|
168
|
+
target: destDir,
|
|
169
|
+
next_number: nnn,
|
|
170
|
+
slug: ctx.slug,
|
|
171
|
+
files_copied: copied,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
// ─── especificacion ─────────────────────────────────────────────────────────
|
|
175
|
+
async function graduateEspecificacion(ctx, sourceArg) {
|
|
176
|
+
const sourceRel = sourceArg && sourceArg.length > 0 ? sourceArg : "ENTREGA.md";
|
|
177
|
+
const sourceFile = join(ctx.sessionPath, sourceRel);
|
|
178
|
+
if (!(await ctx.fs.exists(sourceFile))) {
|
|
179
|
+
return { error: `Fuente no existe: ${sourceRel} en la sesión` };
|
|
180
|
+
}
|
|
181
|
+
const content = await ctx.fs.readText(sourceFile);
|
|
182
|
+
const destRoot = join(ctx.workspaceRoot, "docs", "especificaciones");
|
|
183
|
+
await ctx.fs.mkdirp(destRoot);
|
|
184
|
+
const nnn = await nextNumberInDirsByPrefix(ctx.fs, destRoot);
|
|
185
|
+
const destDir = join(destRoot, `${nnn}-${ctx.slug}`);
|
|
186
|
+
await ctx.fs.mkdirp(destDir);
|
|
187
|
+
const filename = basename(sourceRel);
|
|
188
|
+
const destFile = join(destDir, filename);
|
|
189
|
+
await ctx.fs.writeText(destFile, content);
|
|
190
|
+
return {
|
|
191
|
+
kind: "especificacion",
|
|
192
|
+
session: ctx.folder,
|
|
193
|
+
source: sourceFile,
|
|
194
|
+
target: destFile,
|
|
195
|
+
next_number: nnn,
|
|
196
|
+
slug: ctx.slug,
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
// ─── conclusion ─────────────────────────────────────────────────────────────
|
|
200
|
+
async function graduateConclusion(ctx) {
|
|
201
|
+
const sourceFile = join(ctx.sessionPath, "CONCLUSIONES.md");
|
|
202
|
+
if (!(await ctx.fs.exists(sourceFile))) {
|
|
203
|
+
return { error: "CONCLUSIONES.md no existe en la sesión" };
|
|
204
|
+
}
|
|
205
|
+
const content = await ctx.fs.readText(sourceFile);
|
|
206
|
+
const destDir = join(ctx.workspaceRoot, "docs", "conclusiones");
|
|
207
|
+
await ctx.fs.mkdirp(destDir);
|
|
208
|
+
const nnn = await nextNumberInDir(ctx.fs, destDir);
|
|
209
|
+
const destFile = join(destDir, `${nnn}-${ctx.slug}.md`);
|
|
210
|
+
await ctx.fs.writeText(destFile, content);
|
|
211
|
+
return {
|
|
212
|
+
kind: "conclusion",
|
|
213
|
+
session: ctx.folder,
|
|
214
|
+
source: sourceFile,
|
|
215
|
+
target: destFile,
|
|
216
|
+
next_number: nnn,
|
|
217
|
+
slug: ctx.slug,
|
|
71
218
|
};
|
|
72
219
|
}
|
|
73
220
|
function extractDecisionBlock(text, decId) {
|
|
@@ -78,7 +225,6 @@ function extractDecisionBlock(text, decId) {
|
|
|
78
225
|
const headerStart = m.index;
|
|
79
226
|
const headerLine = m[0];
|
|
80
227
|
const headerEnd = headerStart + headerLine.length;
|
|
81
|
-
// Body: after header newline until next `## ` or EOF.
|
|
82
228
|
const afterHeader = text.indexOf("\n", headerEnd);
|
|
83
229
|
const bodyStart = afterHeader === -1 ? text.length : afterHeader + 1;
|
|
84
230
|
let bodyEnd = text.length;
|
|
@@ -110,6 +256,44 @@ async function nextNumberInDir(fs, dir) {
|
|
|
110
256
|
const max = numbers.length > 0 ? Math.max(...numbers) : 0;
|
|
111
257
|
return String(max + 1).padStart(3, "0");
|
|
112
258
|
}
|
|
259
|
+
async function nextNumberInDirsByPrefix(fs, dir) {
|
|
260
|
+
if (!(await fs.exists(dir)))
|
|
261
|
+
return "001";
|
|
262
|
+
const entries = await fs.list(dir);
|
|
263
|
+
const numbers = [];
|
|
264
|
+
for (const entry of entries) {
|
|
265
|
+
if (entry.type !== "dir")
|
|
266
|
+
continue;
|
|
267
|
+
const m = entry.name.match(/^(\d{3})-/);
|
|
268
|
+
if (m?.[1])
|
|
269
|
+
numbers.push(Number.parseInt(m[1], 10));
|
|
270
|
+
}
|
|
271
|
+
const max = numbers.length > 0 ? Math.max(...numbers) : 0;
|
|
272
|
+
return String(max + 1).padStart(3, "0");
|
|
273
|
+
}
|
|
274
|
+
async function copyTree(fs, srcDir, destDir) {
|
|
275
|
+
if (!(await fs.exists(srcDir)))
|
|
276
|
+
return 0;
|
|
277
|
+
await fs.mkdirp(destDir);
|
|
278
|
+
let count = 0;
|
|
279
|
+
const entries = await fs.list(srcDir);
|
|
280
|
+
for (const entry of entries) {
|
|
281
|
+
const target = join(destDir, entry.name);
|
|
282
|
+
if (entry.type === "dir") {
|
|
283
|
+
count += await copyTree(fs, entry.path, target);
|
|
284
|
+
}
|
|
285
|
+
else if (entry.type === "file") {
|
|
286
|
+
const content = await fs.readText(entry.path);
|
|
287
|
+
await fs.writeText(target, content);
|
|
288
|
+
count += 1;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
return count;
|
|
292
|
+
}
|
|
293
|
+
function parseSessionCode(folder) {
|
|
294
|
+
const m = folder.match(/^session(\d{3})-/);
|
|
295
|
+
return m?.[1] ?? null;
|
|
296
|
+
}
|
|
113
297
|
function escapeRegex(s) {
|
|
114
298
|
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
115
299
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-graduate-service.js","sourceRoot":"","sources":["../../src/application/dev-graduate-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dev-graduate-service.js","sourceRoot":"","sources":["../../src/application/dev-graduate-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { EnvPort } from "../ports/env.js";
|
|
2
|
+
import type { FileSystemPort } from "../ports/file-system.js";
|
|
1
3
|
import type { Namespace } from "../runtime/namespace.js";
|
|
2
4
|
export interface ProjectBlockMarkers {
|
|
3
5
|
start: string;
|
|
@@ -25,4 +27,24 @@ export declare class PathsService {
|
|
|
25
27
|
cwdLogFile(): string;
|
|
26
28
|
blockMarkers(): ProjectBlockMarkers;
|
|
27
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolve the workspace root directory.
|
|
32
|
+
*
|
|
33
|
+
* Per DEC-002 (session006), graduation lands at the workspace root regardless
|
|
34
|
+
* of mode:
|
|
35
|
+
* - `workspace_mode=hub` → hub root (parent of `.<ns>/`, where CLAUDE.md with
|
|
36
|
+
* `Mode: hub` lives).
|
|
37
|
+
* - `workspace_mode=project` → project root (parent of `.<ns>/`).
|
|
38
|
+
*
|
|
39
|
+
* Walks up from `env.cwd()` looking for the nearest directory that contains
|
|
40
|
+
* `.<ns>/` (the workflow marker). This guarantees that even when the user has
|
|
41
|
+
* `cd`-ed into a fuente subdirectory of a hub workspace before invoking
|
|
42
|
+
* `graduate`, the destination still resolves to the hub root rather than the
|
|
43
|
+
* fuente.
|
|
44
|
+
*
|
|
45
|
+
* Fallback: if no `.<ns>/` marker is found anywhere up the tree (e.g. the user
|
|
46
|
+
* is outside any workspace), returns `env.cwd()` unchanged so the caller can
|
|
47
|
+
* surface the missing-workspace error normally.
|
|
48
|
+
*/
|
|
49
|
+
export declare function resolveWorkspaceRoot(fs: FileSystemPort, env: EnvPort, paths: PathsService): Promise<string>;
|
|
28
50
|
//# sourceMappingURL=paths-service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths-service.d.ts","sourceRoot":"","sources":["../../src/application/paths-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;IAG9B,IAAI,SAAS,IAAI,SAAS,CAEzB;IAGD,QAAQ,IAAI,MAAM;IAGlB,UAAU,IAAI,MAAM;IAGpB,WAAW,IAAI,MAAM;IAGrB,WAAW,IAAI,MAAM;IAGrB,gBAAgB,IAAI,MAAM;IAG1B,eAAe,IAAI,MAAM;IAGzB,YAAY,IAAI,MAAM;IAGtB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAG3C,iBAAiB,IAAI,MAAM;IAK3B,OAAO,IAAI,MAAM;IAGjB,cAAc,IAAI,MAAM;IAGxB,cAAc,IAAI,MAAM;IAGxB,UAAU,IAAI,MAAM;IAGpB,UAAU,IAAI,MAAM;IAKpB,YAAY,IAAI,mBAAmB;CAOpC"}
|
|
1
|
+
{"version":3,"file":"paths-service.d.ts","sourceRoot":"","sources":["../../src/application/paths-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAFH,EAAE,EAAE,SAAS,EACb,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM;IAG9B,IAAI,SAAS,IAAI,SAAS,CAEzB;IAGD,QAAQ,IAAI,MAAM;IAGlB,UAAU,IAAI,MAAM;IAGpB,WAAW,IAAI,MAAM;IAGrB,WAAW,IAAI,MAAM;IAGrB,gBAAgB,IAAI,MAAM;IAG1B,eAAe,IAAI,MAAM;IAGzB,YAAY,IAAI,MAAM;IAGtB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAG3C,iBAAiB,IAAI,MAAM;IAK3B,OAAO,IAAI,MAAM;IAGjB,cAAc,IAAI,MAAM;IAGxB,cAAc,IAAI,MAAM;IAGxB,UAAU,IAAI,MAAM;IAGpB,UAAU,IAAI,MAAM;IAKpB,YAAY,IAAI,mBAAmB;CAOpC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,MAAM,CAAC,CAUjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { join } from "node:path";
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
2
|
export class PathsService {
|
|
3
3
|
ns;
|
|
4
4
|
home;
|
|
@@ -64,4 +64,36 @@ export class PathsService {
|
|
|
64
64
|
};
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the workspace root directory.
|
|
69
|
+
*
|
|
70
|
+
* Per DEC-002 (session006), graduation lands at the workspace root regardless
|
|
71
|
+
* of mode:
|
|
72
|
+
* - `workspace_mode=hub` → hub root (parent of `.<ns>/`, where CLAUDE.md with
|
|
73
|
+
* `Mode: hub` lives).
|
|
74
|
+
* - `workspace_mode=project` → project root (parent of `.<ns>/`).
|
|
75
|
+
*
|
|
76
|
+
* Walks up from `env.cwd()` looking for the nearest directory that contains
|
|
77
|
+
* `.<ns>/` (the workflow marker). This guarantees that even when the user has
|
|
78
|
+
* `cd`-ed into a fuente subdirectory of a hub workspace before invoking
|
|
79
|
+
* `graduate`, the destination still resolves to the hub root rather than the
|
|
80
|
+
* fuente.
|
|
81
|
+
*
|
|
82
|
+
* Fallback: if no `.<ns>/` marker is found anywhere up the tree (e.g. the user
|
|
83
|
+
* is outside any workspace), returns `env.cwd()` unchanged so the caller can
|
|
84
|
+
* surface the missing-workspace error normally.
|
|
85
|
+
*/
|
|
86
|
+
export async function resolveWorkspaceRoot(fs, env, paths) {
|
|
87
|
+
const start = env.cwd();
|
|
88
|
+
const wfMarker = `.${paths.namespace}`;
|
|
89
|
+
let dir = start;
|
|
90
|
+
while (true) {
|
|
91
|
+
if (await fs.exists(join(dir, wfMarker)))
|
|
92
|
+
return dir;
|
|
93
|
+
const parent = dirname(dir);
|
|
94
|
+
if (parent === dir)
|
|
95
|
+
return start;
|
|
96
|
+
dir = parent;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
67
99
|
//# sourceMappingURL=paths-service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths-service.js","sourceRoot":"","sources":["../../src/application/paths-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"paths-service.js","sourceRoot":"","sources":["../../src/application/paths-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wave4d-simple.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wave4d-simple.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,eAAO,MAAM,mBAAmB,EAAE,UAiBjC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"wave4d-simple.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/wave4d-simple.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,eAAO,MAAM,mBAAmB,EAAE,UAiBjC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UA6B7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,UAcnC,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,UAqC7B,CAAC"}
|
|
@@ -22,7 +22,7 @@ export const bootstrapDsnCommand = {
|
|
|
22
22
|
};
|
|
23
23
|
export const graduateCommand = {
|
|
24
24
|
name: "graduate",
|
|
25
|
-
describe: "Graduate
|
|
25
|
+
describe: "Graduate session artifacts (decision/manual/script/especificacion/conclusion) to docs/.",
|
|
26
26
|
async execute(args, ctx) {
|
|
27
27
|
const input = {};
|
|
28
28
|
const kind = args.values.get("kind");
|
|
@@ -31,12 +31,17 @@ export const graduateCommand = {
|
|
|
31
31
|
const session = args.values.get("session");
|
|
32
32
|
if (session !== undefined)
|
|
33
33
|
input.session = session;
|
|
34
|
-
const id = args.values.get("id");
|
|
35
|
-
if (id !== undefined)
|
|
36
|
-
input.decId = id;
|
|
37
34
|
const slug = args.values.get("slug");
|
|
38
35
|
if (slug !== undefined)
|
|
39
36
|
input.slug = slug;
|
|
37
|
+
const source = args.values.get("source");
|
|
38
|
+
if (source !== undefined)
|
|
39
|
+
input.source = source;
|
|
40
|
+
if (kind === "decision") {
|
|
41
|
+
const id = args.values.get("id") ?? args.values.get("dec-id");
|
|
42
|
+
if (id !== undefined)
|
|
43
|
+
input.decId = id;
|
|
44
|
+
}
|
|
40
45
|
const data = await runGraduate(ctx.fs, ctx.env, ctx.paths, input);
|
|
41
46
|
if ("error" in data) {
|
|
42
47
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wave4d-simple.js","sourceRoot":"","sources":["../../../src/cli/commands/wave4d-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,WAAW,EAAE,MAAM,wCAAwC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,gDAAgD,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAMlF,MAAM,CAAC,MAAM,mBAAmB,GAAe;IAC7C,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,kEAAkE;IAC5E,KAAK,CAAC,OAAO,CAAC,KAAiB,EAAE,GAAe;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChE,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE;gBACrD,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;gBAC7B,QAAQ,EAAE,CAAC;aACZ,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IACjD,CAAC;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAe;IACzC,IAAI,EAAE,UAAU;IAChB,QAAQ,
|
|
1
|
+
{"version":3,"file":"wave4d-simple.js","sourceRoot":"","sources":["../../../src/cli/commands/wave4d-simple.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"description": "Agnostic runtime CLI for session-lifecycle workflows. Auto-detects namespace from any `.<ns>/sessions/` dir in CWD; falls back to 'agent-workflow'. Plugins like `qtc-workflow-plugin` reclaim a fixed namespace via SessionStart hook (writes to `~/.config/agent-workflow/namespace`). Bundles the universal `agent-workflow` skill in the tarball — `self install-skill` copies it from the bundled location to `~/.claude/skills/agent-workflow/`. Override the source with `--from <local-path>` for skill development.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|