@promovaweb/specsfy 0.7.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/CHANGELOG.md +23 -0
- package/LICENSE +21 -0
- package/README.md +248 -0
- package/bin/specsfy.cjs +3 -0
- package/dist/backlog.d.ts +17 -0
- package/dist/backlog.d.ts.map +1 -0
- package/dist/backlog.js +73 -0
- package/dist/backlog.js.map +1 -0
- package/dist/catalog.d.ts +33 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +135 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +258 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +44 -0
- package/dist/config.js.map +1 -0
- package/dist/filesystem.d.ts +19 -0
- package/dist/filesystem.d.ts.map +1 -0
- package/dist/filesystem.js +67 -0
- package/dist/filesystem.js.map +1 -0
- package/dist/github.d.ts +8 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +36 -0
- package/dist/github.js.map +1 -0
- package/dist/installer.d.ts +48 -0
- package/dist/installer.d.ts.map +1 -0
- package/dist/installer.js +613 -0
- package/dist/installer.js.map +1 -0
- package/dist/main.d.ts +5 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +13 -0
- package/dist/main.js.map +1 -0
- package/dist/progress.d.ts +46 -0
- package/dist/progress.d.ts.map +1 -0
- package/dist/progress.js +148 -0
- package/dist/progress.js.map +1 -0
- package/dist/project-testing.d.ts +27 -0
- package/dist/project-testing.d.ts.map +1 -0
- package/dist/project-testing.js +150 -0
- package/dist/project-testing.js.map +1 -0
- package/dist/skill-lock.d.ts +23 -0
- package/dist/skill-lock.d.ts.map +1 -0
- package/dist/skill-lock.js +80 -0
- package/dist/skill-lock.js.map +1 -0
- package/dist/tui.d.ts +141 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +1219 -0
- package/dist/tui.js.map +1 -0
- package/dist/updater.d.ts +41 -0
- package/dist/updater.d.ts.map +1 -0
- package/dist/updater.js +221 -0
- package/dist/updater.js.map +1 -0
- package/dist/version.d.ts +7 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +7 -0
- package/dist/version.js.map +1 -0
- package/package.json +58 -0
package/dist/tui.d.ts
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard terminal do Specsfy.
|
|
3
|
+
*
|
|
4
|
+
* Mantém as seis áreas públicas, navegação por teclado e mouse, polling dos
|
|
5
|
+
* arquivos do projeto e confirmação explícita antes de alterar skills.
|
|
6
|
+
*/
|
|
7
|
+
import blessed from "neo-blessed";
|
|
8
|
+
import { Catalog, type CatalogEntryValue } from "./catalog.js";
|
|
9
|
+
import { type TestRun } from "./project-testing.js";
|
|
10
|
+
/** Descrições do framework exibidas quando o catálogo remoto não as fornece. */
|
|
11
|
+
export declare const BASE_DESCRIPTIONS: Readonly<Record<string, string>>;
|
|
12
|
+
/** Atalhos globais preservados entre as versões Python e Node.js. */
|
|
13
|
+
export declare const TUI_BINDINGS: {
|
|
14
|
+
readonly "C-q": "Sair";
|
|
15
|
+
readonly escape: "Voltar";
|
|
16
|
+
readonly "C-u": "Atualizar";
|
|
17
|
+
readonly "C-b": "Framework";
|
|
18
|
+
readonly "C-d": "Detectar";
|
|
19
|
+
readonly "C-e": "Alternar";
|
|
20
|
+
readonly space: "Abrir/alternar";
|
|
21
|
+
readonly "C-a": "Aplicar";
|
|
22
|
+
readonly "C-r": "Atualizar skills";
|
|
23
|
+
readonly "C-v": "Marcar";
|
|
24
|
+
readonly "C-l": "Limpar";
|
|
25
|
+
readonly "C-t": "Todas";
|
|
26
|
+
readonly "C-n": "Instaladas";
|
|
27
|
+
readonly "C-c": "Recomendadas";
|
|
28
|
+
readonly "C-h": "Home";
|
|
29
|
+
readonly "C-g": "Backlogs";
|
|
30
|
+
readonly "C-s": "Specs";
|
|
31
|
+
readonly "C-j": "Testes";
|
|
32
|
+
readonly "C-x": "Executar testes";
|
|
33
|
+
readonly "C-k": "Skills";
|
|
34
|
+
readonly "C-o": "Sobre";
|
|
35
|
+
};
|
|
36
|
+
/** Abas públicas na ordem fixa apresentada no dashboard. */
|
|
37
|
+
export declare const TUI_TABS: readonly [{
|
|
38
|
+
readonly id: "home";
|
|
39
|
+
readonly label: "Home";
|
|
40
|
+
readonly key: "C-h";
|
|
41
|
+
}, {
|
|
42
|
+
readonly id: "backlogs";
|
|
43
|
+
readonly label: "Backlogs";
|
|
44
|
+
readonly key: "C-g";
|
|
45
|
+
}, {
|
|
46
|
+
readonly id: "specs";
|
|
47
|
+
readonly label: "Specs";
|
|
48
|
+
readonly key: "C-s";
|
|
49
|
+
}, {
|
|
50
|
+
readonly id: "tests";
|
|
51
|
+
readonly label: "Testes";
|
|
52
|
+
readonly key: "C-j";
|
|
53
|
+
}, {
|
|
54
|
+
readonly id: "skills";
|
|
55
|
+
readonly label: "Skills";
|
|
56
|
+
readonly key: "C-k";
|
|
57
|
+
}, {
|
|
58
|
+
readonly id: "about";
|
|
59
|
+
readonly label: "Sobre";
|
|
60
|
+
readonly key: "C-o";
|
|
61
|
+
}];
|
|
62
|
+
/** Identificador válido de uma área principal do dashboard. */
|
|
63
|
+
export type Tab = (typeof TUI_TABS)[number]["id"];
|
|
64
|
+
/** Filtro aplicado sobre as opções de skill disponíveis. */
|
|
65
|
+
export type SkillFilter = "all" | "installed" | "detected";
|
|
66
|
+
/** Opções de montagem usadas pelo executável e por integrações da TUI. */
|
|
67
|
+
export interface TuiStartOptions {
|
|
68
|
+
screen?: blessed.Widgets.Screen;
|
|
69
|
+
catalog?: Catalog;
|
|
70
|
+
watch?: boolean;
|
|
71
|
+
}
|
|
72
|
+
/** Linha normalizada do seletor de skills. */
|
|
73
|
+
export interface SkillOption {
|
|
74
|
+
name: string;
|
|
75
|
+
description: string;
|
|
76
|
+
kind: string;
|
|
77
|
+
installed: boolean;
|
|
78
|
+
}
|
|
79
|
+
/** Dashboard terminal principal. */
|
|
80
|
+
export declare class SpecsfyTui {
|
|
81
|
+
#private;
|
|
82
|
+
project: string;
|
|
83
|
+
constructor(project?: string);
|
|
84
|
+
/** Aba atualmente exibida, útil para integrações e testes de acessibilidade. */
|
|
85
|
+
get activeTab(): Tab;
|
|
86
|
+
/** Monta a aplicação e resolve depois do encerramento da tela. */
|
|
87
|
+
run(): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Monta a TUI em um screen existente.
|
|
90
|
+
*
|
|
91
|
+
* A separação permite embutir a interface e exercitar o mesmo renderer em
|
|
92
|
+
* terminais virtuais, sem manter um processo pendurado durante os testes.
|
|
93
|
+
*/
|
|
94
|
+
start(options?: TuiStartOptions): Promise<void>;
|
|
95
|
+
private mountShell;
|
|
96
|
+
private bindKeys;
|
|
97
|
+
private showTab;
|
|
98
|
+
/**
|
|
99
|
+
* Retorna um nível por vez: fecha modal, limpa busca e volta ao Home.
|
|
100
|
+
*
|
|
101
|
+
* Essa ordem reproduz a ação `back` do Textual e evita que Escape descarte
|
|
102
|
+
* o contexto da aba enquanto o usuário fecha uma visualização.
|
|
103
|
+
*/
|
|
104
|
+
private goBack;
|
|
105
|
+
private renderHome;
|
|
106
|
+
private renderBacklogs;
|
|
107
|
+
private renderSpecs;
|
|
108
|
+
private openSpec;
|
|
109
|
+
private renderTests;
|
|
110
|
+
private runTests;
|
|
111
|
+
private renderSkills;
|
|
112
|
+
private renderAbout;
|
|
113
|
+
private refreshAll;
|
|
114
|
+
private refreshIfChanged;
|
|
115
|
+
private skillOptions;
|
|
116
|
+
private visibleSkills;
|
|
117
|
+
private setSkillFilter;
|
|
118
|
+
private selectFramework;
|
|
119
|
+
private detectSkills;
|
|
120
|
+
private toggleSelectedSkill;
|
|
121
|
+
private selectVisible;
|
|
122
|
+
private clearVisible;
|
|
123
|
+
private applySkills;
|
|
124
|
+
private updateSkills;
|
|
125
|
+
private showStatus;
|
|
126
|
+
}
|
|
127
|
+
/** Cria as opções base, especialistas e instalações fora do catálogo atual. */
|
|
128
|
+
export declare function buildSkillOptions(catalogEntries: CatalogEntryValue[], installed: Set<string>): SkillOption[];
|
|
129
|
+
/** Retorna o plano explícito de uma skill sem executar mudanças. */
|
|
130
|
+
export declare function skillPlanLabel(name: string, installed: Set<string>, selected: Set<string>): "Manter" | "Instalar" | "Remover" | "Ignorar";
|
|
131
|
+
/** Filtra o catálogo com a mesma regra usada pela busca e pelos botões. */
|
|
132
|
+
export declare function filterSkillOptions(options: SkillOption[], filter: SkillFilter, queryValue: string, installed: Set<string>, detected: Set<string>): SkillOption[];
|
|
133
|
+
/** Formata o painel lateral da skill selecionada. */
|
|
134
|
+
export declare function formatSkillDetail(option: SkillOption, installed: Set<string>, selected: Set<string>, detected: Set<string>): string;
|
|
135
|
+
/** Formata o resumo estável de uma execução de testes. */
|
|
136
|
+
export declare function formatTestRun(result: TestRun): string;
|
|
137
|
+
/** Constrói a barra de progresso textual usada nos cards e tabelas. */
|
|
138
|
+
export declare function progressBar(percent: number, width?: number): string;
|
|
139
|
+
/** Preserva cada metainformação do backlog em sua própria linha no Markdown. */
|
|
140
|
+
export declare function formatBacklogPreview(content: string): string;
|
|
141
|
+
//# sourceMappingURL=tui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
|