@promovaweb/specsfy 0.7.0 → 0.8.1

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.
@@ -0,0 +1,28 @@
1
+ /** Diagnóstico compartilhado pelos fluxos de setup, update e upgrade. */
2
+ export interface PrerequisiteCheck {
3
+ name: "node" | "git" | "skills" | "npm" | "project";
4
+ ok: boolean;
5
+ detail: string;
6
+ command?: string[] | undefined;
7
+ }
8
+ interface CheckOptions {
9
+ path?: string;
10
+ nodeVersion?: string;
11
+ skillsOverride?: string;
12
+ skillsLauncher?: string;
13
+ }
14
+ /** Informa se a versão do runtime satisfaz o contrato do pacote. */
15
+ export declare function nodeVersionSupported(version: string): boolean;
16
+ /**
17
+ * Resolve o comando oficial `skills` sem depender apenas do PATH do processo.
18
+ *
19
+ * A instalação incluída no pacote cobre launchers gráficos e chamadas por
20
+ * caminho absoluto, que podem omitir o diretório global do npm no PATH.
21
+ */
22
+ export declare function resolveSkillsCommand(path?: string, override?: string | undefined, launcher?: string | undefined): Promise<string[] | undefined>;
23
+ /** Verifica todos os recursos usados pelos comandos de instalação e atualização. */
24
+ export declare function checkPrerequisites(project: string, options?: CheckOptions): Promise<PrerequisiteCheck[]>;
25
+ /** Interrompe o fluxo com todas as correções necessárias em uma única mensagem. */
26
+ export declare function assertPrerequisites(checks: PrerequisiteCheck[], required?: PrerequisiteCheck["name"][]): void;
27
+ export {};
28
+ //# sourceMappingURL=prerequisites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerequisites.d.ts","sourceRoot":"","sources":["../src/prerequisites.ts"],"names":[],"mappings":"AAAA,yEAAyE;AASzE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,CAAC;IACpD,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CAChC;AAED,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQ7D;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,SAAyB,EAC7B,QAAQ,qBAAiC,EACzC,QAAQ,qBAAkB,GACzB,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAW/B;AAED,oFAAoF;AACpF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAsD9B;AAED,mFAAmF;AACnF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,iBAAiB,EAAE,EAC3B,QAAQ,GAAE,iBAAiB,CAAC,MAAM,CAAC,EAAmC,GACrE,IAAI,CAQN"}
@@ -0,0 +1,134 @@
1
+ /** Diagnóstico compartilhado pelos fluxos de setup, update e upgrade. */
2
+ import { constants } from "node:fs";
3
+ import { access, realpath, stat } from "node:fs/promises";
4
+ import { createRequire } from "node:module";
5
+ import { delimiter, join, resolve } from "node:path";
6
+ const MINIMUM_NODE_VERSION = [22, 20, 0];
7
+ /** Informa se a versão do runtime satisfaz o contrato do pacote. */
8
+ export function nodeVersionSupported(version) {
9
+ const parts = version.split(".").map(Number);
10
+ if (parts.length < 2 || parts.some((part) => !Number.isInteger(part)))
11
+ return false;
12
+ for (let index = 0; index < MINIMUM_NODE_VERSION.length; index += 1) {
13
+ const difference = (parts[index] ?? 0) - MINIMUM_NODE_VERSION[index];
14
+ if (difference)
15
+ return difference > 0;
16
+ }
17
+ return true;
18
+ }
19
+ /**
20
+ * Resolve o comando oficial `skills` sem depender apenas do PATH do processo.
21
+ *
22
+ * A instalação incluída no pacote cobre launchers gráficos e chamadas por
23
+ * caminho absoluto, que podem omitir o diretório global do npm no PATH.
24
+ */
25
+ export async function resolveSkillsCommand(path = process.env.PATH ?? "", override = process.env.SPECSFY_SKILLS_CLI, launcher = process.argv[1]) {
26
+ if (override) {
27
+ const executable = resolve(override);
28
+ return (await isExecutable(executable)) ? [executable] : undefined;
29
+ }
30
+ const skills = await findExecutable("skills", path);
31
+ if (skills)
32
+ return [skills];
33
+ const packaged = await resolvePackagedSkills(launcher);
34
+ if (packaged)
35
+ return [process.execPath, packaged];
36
+ const npx = await findExecutable("npx", path);
37
+ return npx ? [npx, "--yes", "skills"] : undefined;
38
+ }
39
+ /** Verifica todos os recursos usados pelos comandos de instalação e atualização. */
40
+ export async function checkPrerequisites(project, options = {}) {
41
+ const path = options.path ?? process.env.PATH ?? "";
42
+ const nodeVersion = options.nodeVersion ?? process.versions.node;
43
+ const git = await findExecutable("git", path);
44
+ const npm = await findExecutable("npm", path);
45
+ const skills = await resolveSkillsCommand(path, options.skillsOverride ?? process.env.SPECSFY_SKILLS_CLI, options.skillsLauncher ?? process.argv[1]);
46
+ const target = resolve(project);
47
+ let projectOk = false;
48
+ try {
49
+ projectOk = (await stat(target)).isDirectory();
50
+ if (projectOk)
51
+ await access(target, constants.R_OK | constants.W_OK);
52
+ }
53
+ catch {
54
+ projectOk = false;
55
+ }
56
+ return [
57
+ {
58
+ name: "node",
59
+ ok: nodeVersionSupported(nodeVersion),
60
+ detail: `Node.js 22.20 ou mais recente; versão atual: ${nodeVersion}`,
61
+ },
62
+ {
63
+ name: "git",
64
+ ok: Boolean(git),
65
+ detail: git ? `Git encontrado em ${git}` : "Git não encontrado no PATH",
66
+ command: git ? [git] : undefined,
67
+ },
68
+ {
69
+ name: "skills",
70
+ ok: Boolean(skills),
71
+ detail: skills
72
+ ? `skills CLI disponível por ${skills.join(" ")}`
73
+ : "skills CLI ausente; reinstale `@promovaweb/specsfy` pelo npm ou " +
74
+ "disponibilize `skills` ou `npx` no PATH",
75
+ command: skills,
76
+ },
77
+ {
78
+ name: "npm",
79
+ ok: Boolean(npm),
80
+ detail: npm ? `npm encontrado em ${npm}` : "npm não encontrado no PATH",
81
+ command: npm ? [npm] : undefined,
82
+ },
83
+ {
84
+ name: "project",
85
+ ok: projectOk,
86
+ detail: projectOk
87
+ ? `projeto legível e gravável em ${target}`
88
+ : `projeto ausente, inválido ou sem permissão de escrita: ${target}`,
89
+ },
90
+ ];
91
+ }
92
+ /** Interrompe o fluxo com todas as correções necessárias em uma única mensagem. */
93
+ export function assertPrerequisites(checks, required = checks.map(({ name }) => name)) {
94
+ const selected = new Set(required);
95
+ const failures = checks.filter(({ name, ok }) => selected.has(name) && !ok);
96
+ if (!failures.length)
97
+ return;
98
+ throw new Error("pré-requisitos ausentes:\n" +
99
+ failures.map(({ detail }) => `- ${detail}`).join("\n"));
100
+ }
101
+ async function findExecutable(name, path) {
102
+ for (const directory of path.split(delimiter)) {
103
+ if (!directory)
104
+ continue;
105
+ const executable = join(directory, name);
106
+ if (await isExecutable(executable))
107
+ return executable;
108
+ }
109
+ return undefined;
110
+ }
111
+ /** Localiza a dependência `skills` a partir do launcher instalado do Specsfy. */
112
+ async function resolvePackagedSkills(launcher) {
113
+ if (!launcher)
114
+ return undefined;
115
+ try {
116
+ const require = createRequire(await realpath(resolve(launcher)));
117
+ const executable = require.resolve("skills/bin/cli.mjs");
118
+ await access(executable, constants.R_OK);
119
+ return executable;
120
+ }
121
+ catch {
122
+ return undefined;
123
+ }
124
+ }
125
+ async function isExecutable(path) {
126
+ try {
127
+ await access(path, constants.X_OK);
128
+ return true;
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ }
134
+ //# sourceMappingURL=prerequisites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerequisites.js","sourceRoot":"","sources":["../src/prerequisites.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,8 @@ export interface SpecProgress {
8
8
  path: string;
9
9
  content: string;
10
10
  status: string;
11
+ effort: number | null;
12
+ execution_profile: "light" | "standard" | "high" | "maximum" | "unknown";
11
13
  definition_gate: string;
12
14
  plan_gate: string;
13
15
  delivery_gate: string;
@@ -1 +1 @@
1
- {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGxE;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,eAAe,CAwBrE;AAED,8DAA8D;AAC9D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcvE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAG/E"}
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iBAAiB,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGxE;AAED,kDAAkD;AAClD,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,eAAe,CAwBrE;AAED,8DAA8D;AAC9D,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcvE;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAG/E"}
package/dist/progress.js CHANGED
@@ -2,9 +2,10 @@
2
2
  * Projeção de progresso das especificações Markdown.
3
3
  */
4
4
  import { createHash } from "node:crypto";
5
- import { readFile, readdir } from "node:fs/promises";
6
- import { basename, dirname, join, relative } from "node:path";
7
- import { isFile, resolvePath } from "./filesystem.js";
5
+ import { readFile } from "node:fs/promises";
6
+ import { basename, dirname, relative } from "node:path";
7
+ import { resolvePath } from "./filesystem.js";
8
+ import { scanSpecPaths } from "./lifecycle.js";
8
9
  const FIELD = /^\*\*([^*]+)\*\*:\s*(.+?)\s*$/;
9
10
  const TABLE_FIELD = /^\|\s*([^|]+?)\s*\|\s*([^|]+?)\s*\|\s*$/;
10
11
  const CHECKLIST_ITEM = /^\s*[-*+]\s*\[([ xX])\]\s+(.+?)\s*$/;
@@ -13,7 +14,7 @@ const GATE_NAMES = ["definition gate", "plan gate", "delivery gate"];
13
14
  /** Lê specs no layout canônico e no layout legado. */
14
15
  export async function scanSpecs(project) {
15
16
  const root = resolvePath(project);
16
- return Promise.all((await specPaths(root)).map(parseSpec));
17
+ return Promise.all((await scanSpecPaths(root)).map(parseSpec));
17
18
  }
18
19
  /** Consolida as métricas das specs fornecidas. */
19
20
  export function summarizeSpecs(specs) {
@@ -42,7 +43,7 @@ export function summarizeSpecs(specs) {
42
43
  export async function specsFingerprint(project) {
43
44
  const root = resolvePath(project);
44
45
  const digest = createHash("sha256");
45
- for (const path of await specPaths(root)) {
46
+ for (const path of await scanSpecPaths(root)) {
46
47
  digest.update(relative(root, path));
47
48
  digest.update("\0");
48
49
  try {
@@ -60,29 +61,6 @@ export function serializeSpec(spec) {
60
61
  const { content: _content, ...serialized } = spec;
61
62
  return serialized;
62
63
  }
63
- async function specPaths(root) {
64
- const paths = new Set();
65
- for (const parent of [
66
- join(root, "specs", "specs"),
67
- join(root, "specs"),
68
- ]) {
69
- let entries;
70
- try {
71
- entries = await readdir(parent, { withFileTypes: true });
72
- }
73
- catch {
74
- continue;
75
- }
76
- for (const entry of entries) {
77
- if (!entry.isDirectory())
78
- continue;
79
- const path = join(parent, entry.name, "spec.md");
80
- if (await isFile(path))
81
- paths.add(path);
82
- }
83
- }
84
- return [...paths].sort();
85
- }
86
64
  async function parseSpec(path) {
87
65
  const content = await readFile(path, "utf8");
88
66
  const slug = basename(dirname(path));
@@ -118,6 +96,8 @@ async function parseSpec(path) {
118
96
  path,
119
97
  content,
120
98
  status: fields.get("status") ?? "Unknown",
99
+ effort: parsedEffort(fields.get("effort")),
100
+ execution_profile: effortProfile(parsedEffort(fields.get("effort"))),
121
101
  definition_gate: fields.get("definition gate") ?? "Unknown",
122
102
  plan_gate: fields.get("plan gate") ?? "Unknown",
123
103
  delivery_gate: fields.get("delivery gate") ?? "Unknown",
@@ -132,6 +112,23 @@ async function parseSpec(path) {
132
112
  percent: ratio(totalItems ? completedItems : passedGates, totalItems ? totalItems : totalGates),
133
113
  };
134
114
  }
115
+ function parsedEffort(value) {
116
+ if (!value || !/^\d+$/u.test(value))
117
+ return null;
118
+ const effort = Number(value);
119
+ return effort >= 1 && effort <= 10 ? effort : null;
120
+ }
121
+ function effortProfile(effort) {
122
+ if (effort === null)
123
+ return "unknown";
124
+ if (effort <= 2)
125
+ return "light";
126
+ if (effort <= 6)
127
+ return "standard";
128
+ if (effort <= 8)
129
+ return "high";
130
+ return "maximum";
131
+ }
135
132
  function sum(specs, key) {
136
133
  return specs.reduce((total, spec) => total + spec[key], 0);
137
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
package/dist/tui.d.ts CHANGED
@@ -59,6 +59,30 @@ export declare const TUI_TABS: readonly [{
59
59
  readonly label: "Sobre";
60
60
  readonly key: "C-o";
61
61
  }];
62
+ /**
63
+ * Paleta semântica da TUI, derivada dos tokens oficiais do dark mode.
64
+ *
65
+ * Os pares de texto, seleção e foco mantêm contraste mensurável sem depender
66
+ * das cores configuráveis de 16 posições do terminal da pessoa usuária.
67
+ */
68
+ export declare const TUI_THEME: {
69
+ readonly background: "#000A0E";
70
+ readonly surface: "#001117";
71
+ readonly surfaceRaised: "#03212A";
72
+ readonly text: "#F2F8F9";
73
+ readonly textMuted: "#B2C6CE";
74
+ readonly border: "#5F7D8C";
75
+ readonly accent: "#C4B5FD";
76
+ readonly activeBackground: "#5EEDE1";
77
+ readonly activeText: "#001117";
78
+ readonly selectedBackground: "#6D28D9";
79
+ readonly selectedText: "#F2F8F9";
80
+ readonly primaryBackground: "#15626A";
81
+ readonly primaryText: "#F2F8F9";
82
+ readonly focusBackground: "#5EEDE1";
83
+ readonly focusText: "#001117";
84
+ readonly warning: "#FCD34D";
85
+ };
62
86
  /** Identificador válido de uma área principal do dashboard. */
63
87
  export type Tab = (typeof TUI_TABS)[number]["id"];
64
88
  /** Filtro aplicado sobre as opções de skill disponíveis. */
package/dist/tui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}