@fprad0/skill-master-mcp 0.0.7 → 0.0.8
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 +9 -0
- package/README.md +86 -6
- package/VERSION.md +2 -2
- package/bin/lib/menu-core.mjs +127 -1
- package/bin/skill-master-activation.mjs +163 -0
- package/bin/skill-master-eval-activation.mjs +32 -0
- package/bin/skill-master-success-skills.mjs +307 -0
- package/dist/activation-evals.d.ts +32 -0
- package/dist/activation-evals.d.ts.map +1 -0
- package/dist/activation-evals.js +116 -0
- package/dist/activation-evals.js.map +1 -0
- package/dist/index.js +326 -1
- package/dist/index.js.map +1 -1
- package/dist/prompt-router.d.ts +43 -0
- package/dist/prompt-router.d.ts.map +1 -0
- package/dist/prompt-router.js +308 -0
- package/dist/prompt-router.js.map +1 -0
- package/dist/success-learning.d.ts +147 -0
- package/dist/success-learning.d.ts.map +1 -0
- package/dist/success-learning.js +444 -0
- package/dist/success-learning.js.map +1 -0
- package/docs/architecture/APRENDIZADO_DE_IMPLEMENTACOES_BEM_SUCEDIDAS.md +125 -0
- package/docs/architecture/ARQUITETURA_AUTO_UPDATE.md +9 -0
- package/docs/architecture/PLANO_MASTER_ACIONAMENTO_AUTOMATICO_E_APRENDIZADO.md +341 -0
- package/docs/architecture/REDE_SEGURA_DE_SKILLS.md +148 -0
- package/manifests/channels/beta.json +6 -5
- package/manifests/channels/stable.json +7 -6
- package/network/approved-skills.json +51 -2
- package/network/unapproved-skill-candidates.json +77 -0
- package/package.json +8 -3
- package/sources.json +4 -1
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { evaluateSkillMasterActivation, SKILL_MASTER_ALIASES } from './activation.js';
|
|
2
|
+
const normalize = (value) => value
|
|
3
|
+
.normalize('NFD')
|
|
4
|
+
.replace(/[\u0300-\u036f]/g, '')
|
|
5
|
+
.toLowerCase();
|
|
6
|
+
const includesAny = (normalized, terms) => (terms.some((term) => normalized.includes(normalize(term))));
|
|
7
|
+
const DIRECT_TRIGGER_TERMS = [
|
|
8
|
+
...SKILL_MASTER_ALIASES,
|
|
9
|
+
'use o skill master',
|
|
10
|
+
'use o skill_master',
|
|
11
|
+
'use skill master',
|
|
12
|
+
'utilize o skill master',
|
|
13
|
+
];
|
|
14
|
+
const STRONG_TRIGGER_TERMS = [
|
|
15
|
+
'use o skill',
|
|
16
|
+
'utilize uma skill',
|
|
17
|
+
'crie uma skill',
|
|
18
|
+
'criar skill',
|
|
19
|
+
'aprenda com isso',
|
|
20
|
+
'aprender com isso',
|
|
21
|
+
'atualize o notion',
|
|
22
|
+
'notion',
|
|
23
|
+
'pesquise e implemente',
|
|
24
|
+
'valide npm',
|
|
25
|
+
'validar npm',
|
|
26
|
+
'npm install -g',
|
|
27
|
+
'instale pacote global',
|
|
28
|
+
'instalar pacote global',
|
|
29
|
+
'melhore o mcp',
|
|
30
|
+
'melhorar o mcp',
|
|
31
|
+
'skill-master',
|
|
32
|
+
'skill_master',
|
|
33
|
+
'skill-master-mcp',
|
|
34
|
+
];
|
|
35
|
+
const TECHNICAL_TERMS = [
|
|
36
|
+
'api',
|
|
37
|
+
'arquitetura',
|
|
38
|
+
'automacao',
|
|
39
|
+
'backend',
|
|
40
|
+
'bug',
|
|
41
|
+
'build',
|
|
42
|
+
'cli',
|
|
43
|
+
'codigo',
|
|
44
|
+
'codex',
|
|
45
|
+
'deploy',
|
|
46
|
+
'frontend',
|
|
47
|
+
'github',
|
|
48
|
+
'implemente',
|
|
49
|
+
'implementar',
|
|
50
|
+
'mcp',
|
|
51
|
+
'npm',
|
|
52
|
+
'prompt',
|
|
53
|
+
'refatorar',
|
|
54
|
+
'release',
|
|
55
|
+
'repo',
|
|
56
|
+
'repositorio',
|
|
57
|
+
'script',
|
|
58
|
+
'seguranca',
|
|
59
|
+
'teste',
|
|
60
|
+
'testes',
|
|
61
|
+
'typescript',
|
|
62
|
+
'validar',
|
|
63
|
+
];
|
|
64
|
+
const TRIVIAL_TERMS = [
|
|
65
|
+
'que horas',
|
|
66
|
+
'qual a hora',
|
|
67
|
+
'data de hoje',
|
|
68
|
+
'traduza esta frase',
|
|
69
|
+
'corrija esta frase',
|
|
70
|
+
'reescreva esta frase',
|
|
71
|
+
'resuma em uma frase',
|
|
72
|
+
];
|
|
73
|
+
const PUBLICATION_TERMS = [
|
|
74
|
+
'npm publish',
|
|
75
|
+
'publique',
|
|
76
|
+
'publicar',
|
|
77
|
+
'publicacao',
|
|
78
|
+
'nova versao',
|
|
79
|
+
'release',
|
|
80
|
+
'tag',
|
|
81
|
+
'git push',
|
|
82
|
+
'disponivel para todos',
|
|
83
|
+
];
|
|
84
|
+
const PUBLICATION_AUTH_TERMS = [
|
|
85
|
+
'pode publicar',
|
|
86
|
+
'autorizo publicar',
|
|
87
|
+
'autorizada a publicacao',
|
|
88
|
+
'autorizo a publicacao',
|
|
89
|
+
'publique as atualizacoes',
|
|
90
|
+
'publicar agora',
|
|
91
|
+
];
|
|
92
|
+
const PUBLICATION_NEGATION_TERMS = [
|
|
93
|
+
'sem publicar',
|
|
94
|
+
'sem publicacao',
|
|
95
|
+
'nao publicar',
|
|
96
|
+
'nao publique',
|
|
97
|
+
'não publicar',
|
|
98
|
+
'não publique',
|
|
99
|
+
'nao fazer publicacao',
|
|
100
|
+
'não fazer publicação',
|
|
101
|
+
];
|
|
102
|
+
const LEARNING_TERMS = [
|
|
103
|
+
'aprenda',
|
|
104
|
+
'aprender',
|
|
105
|
+
'skill aprendida',
|
|
106
|
+
'implementacao bem sucedida',
|
|
107
|
+
'implementacao de sucesso',
|
|
108
|
+
'foi sucesso',
|
|
109
|
+
'crie skills sobre',
|
|
110
|
+
'aprove uma skill externa',
|
|
111
|
+
'aprovar skill externa',
|
|
112
|
+
'skill externa',
|
|
113
|
+
'transforme uma skill da web',
|
|
114
|
+
'skill da web',
|
|
115
|
+
];
|
|
116
|
+
const SECRET_TERMS = ['token', 'senha', 'cookie', 'secret', '.env', 'chave'];
|
|
117
|
+
const DESTRUCTIVE_TERMS = ['rm -rf', 'git reset --hard', 'git checkout --', 'apagar tudo', 'deletar tudo'];
|
|
118
|
+
const toRecommendedSkill = (entry, index) => ({
|
|
119
|
+
order: index + 1,
|
|
120
|
+
name: entry.skill.name,
|
|
121
|
+
phase: entry.phase,
|
|
122
|
+
required: entry.required,
|
|
123
|
+
score: entry.score,
|
|
124
|
+
reasons: entry.reasons,
|
|
125
|
+
source: entry.skill.sourceKind,
|
|
126
|
+
trusted: entry.skill.trusted,
|
|
127
|
+
location: entry.skill.location,
|
|
128
|
+
description: entry.skill.description,
|
|
129
|
+
});
|
|
130
|
+
const filterAvailableSkills = (skills, availableSkills) => {
|
|
131
|
+
if (!availableSkills?.length)
|
|
132
|
+
return skills;
|
|
133
|
+
const allowed = new Set(availableSkills.map((skill) => normalize(skill)));
|
|
134
|
+
return skills.filter((skill) => allowed.has(normalize(skill.name)));
|
|
135
|
+
};
|
|
136
|
+
const hasPublicationAuthorization = (normalizedPrompt) => (includesAny(normalizedPrompt, PUBLICATION_AUTH_TERMS));
|
|
137
|
+
const hasPublicationNegation = (normalizedPrompt) => (includesAny(normalizedPrompt, PUBLICATION_NEGATION_TERMS));
|
|
138
|
+
const buildSafetyGates = (normalizedPrompt, options) => {
|
|
139
|
+
const gates = [];
|
|
140
|
+
const publicationNegated = hasPublicationNegation(normalizedPrompt);
|
|
141
|
+
const publicationIntent = includesAny(normalizedPrompt, PUBLICATION_TERMS) && !publicationNegated;
|
|
142
|
+
const publicationAuthorized = hasPublicationAuthorization(normalizedPrompt);
|
|
143
|
+
if (publicationNegated) {
|
|
144
|
+
gates.push({
|
|
145
|
+
code: 'publication_explicitly_disabled',
|
|
146
|
+
severity: 'info',
|
|
147
|
+
message: 'O prompt restringe publicacao; manter a execucao somente local.',
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else if (publicationIntent && !publicationAuthorized) {
|
|
151
|
+
gates.push({
|
|
152
|
+
code: 'publication_requires_explicit_authorization',
|
|
153
|
+
severity: 'blocker',
|
|
154
|
+
message: 'Publicacao, release, tag, push ou pacote novo exigem autorizacao explicita antes de executar.',
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else if (publicationIntent) {
|
|
158
|
+
gates.push({
|
|
159
|
+
code: 'publication_authorization_detected',
|
|
160
|
+
severity: 'warning',
|
|
161
|
+
message: 'Ha intencao de publicacao; validar pacote, changelog, versao e canal antes de executar.',
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
if (includesAny(normalizedPrompt, SECRET_TERMS)) {
|
|
165
|
+
gates.push({
|
|
166
|
+
code: 'secret_redaction_required',
|
|
167
|
+
severity: 'warning',
|
|
168
|
+
message: 'Revisar e remover tokens, senhas, cookies, chaves e arquivos .env de qualquer artefato gerado.',
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
if (includesAny(normalizedPrompt, DESTRUCTIVE_TERMS)) {
|
|
172
|
+
gates.push({
|
|
173
|
+
code: 'destructive_command_review_required',
|
|
174
|
+
severity: 'blocker',
|
|
175
|
+
message: 'Comandos destrutivos exigem revisao humana e confirmacao explicita antes da execucao.',
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
if (includesAny(normalizedPrompt, ['notion'])) {
|
|
179
|
+
gates.push({
|
|
180
|
+
code: 'notion_preflight_required',
|
|
181
|
+
severity: 'info',
|
|
182
|
+
message: 'Confirmar conexao com Notion antes de criar ou atualizar paginas.',
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
if (includesAny(normalizedPrompt, LEARNING_TERMS)) {
|
|
186
|
+
gates.push({
|
|
187
|
+
code: 'learned_skill_human_approval_required',
|
|
188
|
+
severity: 'info',
|
|
189
|
+
message: 'Skills aprendidas precisam de evidencia, revisao de risco e aprovacao humana antes de ativacao.',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
if (options.riskTolerance === 'low') {
|
|
193
|
+
gates.push({
|
|
194
|
+
code: 'low_risk_tolerance_plan_first',
|
|
195
|
+
severity: 'info',
|
|
196
|
+
message: 'Modo conservador: planejar e validar antes de executar alteracoes relevantes.',
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
return gates;
|
|
200
|
+
};
|
|
201
|
+
const selectExecutionMode = (shouldActivate, normalizedPrompt, gates, options) => {
|
|
202
|
+
if (gates.some((gate) => gate.severity === 'blocker'))
|
|
203
|
+
return 'block';
|
|
204
|
+
if (!shouldActivate)
|
|
205
|
+
return 'no-op';
|
|
206
|
+
const publicationExplicitlyDisabled = gates.some((gate) => gate.code === 'publication_explicitly_disabled');
|
|
207
|
+
const planningTerms = publicationExplicitlyDisabled
|
|
208
|
+
? ['planeje', 'planejamento', 'arquitetura', 'pesquise']
|
|
209
|
+
: ['planeje', 'planejamento', 'arquitetura', 'pesquise', 'release', 'publicar', 'aprovacao'];
|
|
210
|
+
if (options.riskTolerance === 'low'
|
|
211
|
+
|| includesAny(normalizedPrompt, planningTerms)) {
|
|
212
|
+
return 'plan';
|
|
213
|
+
}
|
|
214
|
+
return 'assist';
|
|
215
|
+
};
|
|
216
|
+
const buildNextAction = (executionMode, recommendedSkills, notionUpdateNeeded, learningOpportunity) => {
|
|
217
|
+
if (executionMode === 'block') {
|
|
218
|
+
return 'Parar e pedir aprovacao humana ou remover o risco antes de executar.';
|
|
219
|
+
}
|
|
220
|
+
if (executionMode === 'no-op') {
|
|
221
|
+
return 'Responder normalmente sem acionar fluxo pesado do Skill Master.';
|
|
222
|
+
}
|
|
223
|
+
if (recommendedSkills.length > 0) {
|
|
224
|
+
return `Ler e aplicar a primeira skill recomendada: ${recommendedSkills[0].name}.`;
|
|
225
|
+
}
|
|
226
|
+
if (learningOpportunity) {
|
|
227
|
+
return 'Coletar evidencias antes de preparar uma skill aprendida.';
|
|
228
|
+
}
|
|
229
|
+
if (notionUpdateNeeded) {
|
|
230
|
+
return 'Confirmar conexao com Notion e registrar a continuidade.';
|
|
231
|
+
}
|
|
232
|
+
return 'Aplicar a persona Dev Senior Master e executar com validacao real.';
|
|
233
|
+
};
|
|
234
|
+
export const routeSkillMasterPrompt = (skills, prompt, options) => {
|
|
235
|
+
const scopedSkills = filterAvailableSkills(skills, options.availableSkills);
|
|
236
|
+
const normalizedPrompt = normalize(`${prompt} ${options.projectContext ?? ''}`);
|
|
237
|
+
const explicitTrigger = includesAny(normalizedPrompt, DIRECT_TRIGGER_TERMS);
|
|
238
|
+
const strongTrigger = includesAny(normalizedPrompt, STRONG_TRIGGER_TERMS);
|
|
239
|
+
const technicalPrompt = includesAny(normalizedPrompt, TECHNICAL_TERMS);
|
|
240
|
+
const trivialPrompt = includesAny(normalizedPrompt, TRIVIAL_TERMS) && !technicalPrompt && !explicitTrigger;
|
|
241
|
+
const notionUpdateNeeded = includesAny(normalizedPrompt, ['notion']);
|
|
242
|
+
const learningOpportunity = includesAny(normalizedPrompt, LEARNING_TERMS);
|
|
243
|
+
const gates = buildSafetyGates(normalizedPrompt, options);
|
|
244
|
+
const activation = evaluateSkillMasterActivation(scopedSkills, prompt, {
|
|
245
|
+
limit: options.limit,
|
|
246
|
+
sourceKinds: options.sourceKinds,
|
|
247
|
+
});
|
|
248
|
+
const hasRecommendations = activation.recommendations.length > 0;
|
|
249
|
+
const hasBlocker = gates.some((gate) => gate.severity === 'blocker');
|
|
250
|
+
let shouldActivate = false;
|
|
251
|
+
const reasons = [];
|
|
252
|
+
if (options.activationMode === 'manual') {
|
|
253
|
+
shouldActivate = explicitTrigger || hasBlocker;
|
|
254
|
+
if (explicitTrigger)
|
|
255
|
+
reasons.push('modo manual com mencao direta ao Skill Master');
|
|
256
|
+
}
|
|
257
|
+
else if (options.activationMode === 'balanced') {
|
|
258
|
+
shouldActivate = explicitTrigger
|
|
259
|
+
|| hasBlocker
|
|
260
|
+
|| strongTrigger
|
|
261
|
+
|| notionUpdateNeeded
|
|
262
|
+
|| learningOpportunity
|
|
263
|
+
|| (technicalPrompt && hasRecommendations)
|
|
264
|
+
|| activation.shouldActivate;
|
|
265
|
+
if (explicitTrigger)
|
|
266
|
+
reasons.push('mencao direta ao Skill Master');
|
|
267
|
+
if (strongTrigger)
|
|
268
|
+
reasons.push('gatilho forte de skill, MCP, Notion, pesquisa ou validacao');
|
|
269
|
+
if (technicalPrompt && hasRecommendations)
|
|
270
|
+
reasons.push('prompt tecnico com skill aprovada relevante');
|
|
271
|
+
}
|
|
272
|
+
else {
|
|
273
|
+
shouldActivate = !trivialPrompt && (explicitTrigger
|
|
274
|
+
|| hasBlocker
|
|
275
|
+
|| strongTrigger
|
|
276
|
+
|| technicalPrompt
|
|
277
|
+
|| hasRecommendations
|
|
278
|
+
|| notionUpdateNeeded
|
|
279
|
+
|| learningOpportunity);
|
|
280
|
+
if (shouldActivate)
|
|
281
|
+
reasons.push('modo always-on-assisted encontrou possivel ganho operacional');
|
|
282
|
+
}
|
|
283
|
+
if (trivialPrompt && !explicitTrigger && !hasBlocker) {
|
|
284
|
+
shouldActivate = false;
|
|
285
|
+
reasons.push('tarefa trivial sem ganho claro de skill');
|
|
286
|
+
}
|
|
287
|
+
if (activation.reasons.length > 0)
|
|
288
|
+
reasons.push(...activation.reasons);
|
|
289
|
+
if (hasBlocker)
|
|
290
|
+
reasons.push('ha gate bloqueante de seguranca ou publicacao');
|
|
291
|
+
if (reasons.length === 0)
|
|
292
|
+
reasons.push('nenhum gatilho suficiente para acionar o Skill Master');
|
|
293
|
+
const recommendedSkills = activation.recommendations.map(toRecommendedSkill);
|
|
294
|
+
const executionMode = selectExecutionMode(shouldActivate, normalizedPrompt, gates, options);
|
|
295
|
+
return {
|
|
296
|
+
shouldActivate,
|
|
297
|
+
activationMode: options.activationMode,
|
|
298
|
+
activationReason: [...new Set(reasons)].join('; '),
|
|
299
|
+
recommendedSkills,
|
|
300
|
+
personaOverlay: shouldActivate || executionMode === 'block' ? 'Dev Senior Master' : 'none',
|
|
301
|
+
executionMode,
|
|
302
|
+
safetyGates: gates,
|
|
303
|
+
learningOpportunity,
|
|
304
|
+
notionUpdateNeeded,
|
|
305
|
+
nextAction: buildNextAction(executionMode, recommendedSkills, notionUpdateNeeded, learningOpportunity),
|
|
306
|
+
};
|
|
307
|
+
};
|
|
308
|
+
//# sourceMappingURL=prompt-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-router.js","sourceRoot":"","sources":["../src/prompt-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import type { ApprovedSkillIndex } from './types.js';
|
|
2
|
+
declare const SUCCESS_SKILL_SCHEMA_VERSION = "skill-master-success-skill-v1";
|
|
3
|
+
declare const SUCCESS_LEARNING_POLICY_VERSION = "success-learning-human-approval-v1";
|
|
4
|
+
export type ExternalSkillCandidate = {
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
sourceUrl: string;
|
|
8
|
+
creatorName: string;
|
|
9
|
+
creatorUrl: string;
|
|
10
|
+
reviewStatus: 'pending-human-review' | 'approved' | 'blocked' | 'unapproved';
|
|
11
|
+
reason: string;
|
|
12
|
+
riskFlags: string[];
|
|
13
|
+
};
|
|
14
|
+
export type SuccessSkillDraft = {
|
|
15
|
+
schemaVersion: typeof SUCCESS_SKILL_SCHEMA_VERSION;
|
|
16
|
+
generatedAt: string;
|
|
17
|
+
policyVersion: typeof SUCCESS_LEARNING_POLICY_VERSION;
|
|
18
|
+
status: 'draft' | 'study' | 'rejected' | 'approved' | 'activated';
|
|
19
|
+
sourceImplementation: {
|
|
20
|
+
title: string;
|
|
21
|
+
summary: string;
|
|
22
|
+
sourceFiles: string[];
|
|
23
|
+
sourceUrls: string[];
|
|
24
|
+
};
|
|
25
|
+
candidateSkill: {
|
|
26
|
+
name: string;
|
|
27
|
+
description: string;
|
|
28
|
+
triggerPhrases: string[];
|
|
29
|
+
skillMarkdownFile: string;
|
|
30
|
+
contentHash: string;
|
|
31
|
+
};
|
|
32
|
+
evidence: {
|
|
33
|
+
reusablePattern: string;
|
|
34
|
+
implementationNotes: string[];
|
|
35
|
+
validationEvidence: string[];
|
|
36
|
+
};
|
|
37
|
+
governance: {
|
|
38
|
+
requiresHumanApproval: true;
|
|
39
|
+
approved: boolean;
|
|
40
|
+
approvedAt?: string;
|
|
41
|
+
approvedBy?: string;
|
|
42
|
+
approvalBlockers: string[];
|
|
43
|
+
riskFlags: string[];
|
|
44
|
+
};
|
|
45
|
+
creator?: {
|
|
46
|
+
name: string;
|
|
47
|
+
url?: string;
|
|
48
|
+
};
|
|
49
|
+
externalCandidates: ExternalSkillCandidate[];
|
|
50
|
+
decisionLog?: Array<{
|
|
51
|
+
decidedAt: string;
|
|
52
|
+
decidedBy: string;
|
|
53
|
+
decision: 'pending' | 'study' | 'rejected' | 'activated';
|
|
54
|
+
reason: string;
|
|
55
|
+
notionUpdateRecommended: boolean;
|
|
56
|
+
}>;
|
|
57
|
+
};
|
|
58
|
+
export type SuccessSkillReview = {
|
|
59
|
+
schemaVersion: string;
|
|
60
|
+
generatedAt?: string;
|
|
61
|
+
candidateName?: string;
|
|
62
|
+
recommendation: 'ready-for-human-approval' | 'needs-more-evidence' | 'needs-security-review' | 'invalid';
|
|
63
|
+
findings: string[];
|
|
64
|
+
riskFlags: string[];
|
|
65
|
+
approvalBlockers: string[];
|
|
66
|
+
externalUnapprovedCandidates: ExternalSkillCandidate[];
|
|
67
|
+
};
|
|
68
|
+
export type UnapprovedSuccessSkillEntry = {
|
|
69
|
+
filePath: string;
|
|
70
|
+
generatedAt?: string;
|
|
71
|
+
candidateName?: string;
|
|
72
|
+
reason: string;
|
|
73
|
+
riskFlags: string[];
|
|
74
|
+
externalCandidates: ExternalSkillCandidate[];
|
|
75
|
+
};
|
|
76
|
+
export type SuccessSkillActivation = {
|
|
77
|
+
candidateName: string;
|
|
78
|
+
targetRoot: string;
|
|
79
|
+
targetDirectory: string;
|
|
80
|
+
installedSkillPath: string;
|
|
81
|
+
approvalRecordPath: string;
|
|
82
|
+
activatedAt: string;
|
|
83
|
+
};
|
|
84
|
+
export type SuccessSkillApprovalPackage = {
|
|
85
|
+
generatedAt: string;
|
|
86
|
+
filePath: string;
|
|
87
|
+
totalDrafts: number;
|
|
88
|
+
readyForApproval: number;
|
|
89
|
+
needsReview: number;
|
|
90
|
+
};
|
|
91
|
+
export type SuccessSkillDecision = {
|
|
92
|
+
candidateName: string;
|
|
93
|
+
manifestPath: string;
|
|
94
|
+
decision: 'pending' | 'study' | 'rejected';
|
|
95
|
+
decidedAt: string;
|
|
96
|
+
decidedBy: string;
|
|
97
|
+
reason: string;
|
|
98
|
+
notionUpdateRecommended: true;
|
|
99
|
+
};
|
|
100
|
+
export declare const readSuccessSkillDraft: (manifestPath: string) => Promise<SuccessSkillDraft | null>;
|
|
101
|
+
export declare const prepareSuccessSkillDraft: ({ title, summary, reusablePattern, implementationNotes, validationEvidence, triggerPhrases, sourceFiles, sourceUrls, candidateName, description, creatorName, creatorUrl, externalCandidates, approvedIndex, outputDir, }: {
|
|
102
|
+
title: string;
|
|
103
|
+
summary: string;
|
|
104
|
+
reusablePattern: string;
|
|
105
|
+
implementationNotes: string[];
|
|
106
|
+
validationEvidence: string[];
|
|
107
|
+
triggerPhrases: string[];
|
|
108
|
+
sourceFiles: string[];
|
|
109
|
+
sourceUrls: string[];
|
|
110
|
+
candidateName?: string;
|
|
111
|
+
description?: string;
|
|
112
|
+
creatorName?: string;
|
|
113
|
+
creatorUrl?: string;
|
|
114
|
+
externalCandidates: ExternalSkillCandidate[];
|
|
115
|
+
approvedIndex: ApprovedSkillIndex;
|
|
116
|
+
outputDir: string;
|
|
117
|
+
}) => Promise<{
|
|
118
|
+
draft: SuccessSkillDraft;
|
|
119
|
+
manifestPath: string;
|
|
120
|
+
skillPath: string;
|
|
121
|
+
}>;
|
|
122
|
+
export declare const reviewSuccessSkillDraft: ({ manifestPath, approvedIndex, }: {
|
|
123
|
+
manifestPath: string;
|
|
124
|
+
approvedIndex: ApprovedSkillIndex;
|
|
125
|
+
}) => Promise<SuccessSkillReview>;
|
|
126
|
+
export declare const listUnapprovedSuccessSkills: (directory: string) => Promise<UnapprovedSuccessSkillEntry[]>;
|
|
127
|
+
export declare const listSuccessSkillDraftManifests: (directory: string) => Promise<string[]>;
|
|
128
|
+
export declare const recordSuccessSkillDecision: ({ manifestPath, decision, decidedBy, reason, }: {
|
|
129
|
+
manifestPath: string;
|
|
130
|
+
decision: "pending" | "study" | "rejected";
|
|
131
|
+
decidedBy?: string;
|
|
132
|
+
reason: string;
|
|
133
|
+
}) => Promise<SuccessSkillDecision>;
|
|
134
|
+
export declare const activateSuccessSkillDraft: ({ manifestPath, approvedIndex, targetRoot, approvedBy, overwrite, }: {
|
|
135
|
+
manifestPath: string;
|
|
136
|
+
approvedIndex: ApprovedSkillIndex;
|
|
137
|
+
targetRoot: string;
|
|
138
|
+
approvedBy?: string;
|
|
139
|
+
overwrite?: boolean;
|
|
140
|
+
}) => Promise<SuccessSkillActivation>;
|
|
141
|
+
export declare const prepareSuccessSkillApprovalPackage: ({ directory, outputDir, approvedIndex, }: {
|
|
142
|
+
directory: string;
|
|
143
|
+
outputDir: string;
|
|
144
|
+
approvedIndex: ApprovedSkillIndex;
|
|
145
|
+
}) => Promise<SuccessSkillApprovalPackage>;
|
|
146
|
+
export {};
|
|
147
|
+
//# sourceMappingURL=success-learning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"success-learning.d.ts","sourceRoot":"","sources":["../src/success-learning.ts"],"names":[],"mappings":"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"}
|