@fprad0/skill-master-mcp 0.0.7 → 0.0.9

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.
Files changed (58) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +129 -10
  3. package/VERSION.md +3 -3
  4. package/bin/lib/menu-core.mjs +284 -2
  5. package/bin/skill-master-activation.mjs +163 -0
  6. package/bin/skill-master-bootstrap-global.mjs +35 -0
  7. package/bin/skill-master-eval-activation.mjs +32 -0
  8. package/bin/skill-master-install-global-skills.mjs +77 -0
  9. package/bin/skill-master-register-clients.mjs +154 -0
  10. package/bin/skill-master-success-skills.mjs +307 -0
  11. package/dist/activation-evals.d.ts +32 -0
  12. package/dist/activation-evals.d.ts.map +1 -0
  13. package/dist/activation-evals.js +116 -0
  14. package/dist/activation-evals.js.map +1 -0
  15. package/dist/domain-router.d.ts +11 -0
  16. package/dist/domain-router.d.ts.map +1 -0
  17. package/dist/domain-router.js +79 -0
  18. package/dist/domain-router.js.map +1 -0
  19. package/dist/index.js +460 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/moral-governance.d.ts +24 -0
  22. package/dist/moral-governance.d.ts.map +1 -0
  23. package/dist/moral-governance.js +143 -0
  24. package/dist/moral-governance.js.map +1 -0
  25. package/dist/prompt-router.d.ts +47 -0
  26. package/dist/prompt-router.d.ts.map +1 -0
  27. package/dist/prompt-router.js +324 -0
  28. package/dist/prompt-router.js.map +1 -0
  29. package/dist/success-learning.d.ts +147 -0
  30. package/dist/success-learning.d.ts.map +1 -0
  31. package/dist/success-learning.js +444 -0
  32. package/dist/success-learning.js.map +1 -0
  33. package/docs/architecture/APRENDIZADO_DE_IMPLEMENTACOES_BEM_SUCEDIDAS.md +125 -0
  34. package/docs/architecture/ARQUITETURA_AUTO_UPDATE.md +9 -0
  35. package/docs/architecture/PLANO_MASTER_ACIONAMENTO_AUTOMATICO_E_APRENDIZADO.md +341 -0
  36. package/docs/architecture/REDE_SEGURA_DE_SKILLS.md +148 -0
  37. package/docs/planning/V0_0_9_APROVACAO_CRITICA_MENSAGENS_DE_VENDA.md +85 -0
  38. package/docs/planning/V0_0_9_FONTES_E_CRITERIOS_DE_AUTORIDADE.md +139 -0
  39. package/docs/planning/V0_0_9_MATRIZ_SKILLS_MULTIDISCIPLINARES.md +105 -0
  40. package/docs/planning/V0_0_9_POLITICA_MORAL_CATOLICA_PARA_IA.md +181 -0
  41. package/docs/planning/V0_0_9_PROMPTS_EXECUCAO.md +59 -0
  42. package/docs/planning/V0_0_9_ROADMAP_DISCERNIMENTO_E_CONHECIMENTO_AMPLO.md +181 -0
  43. package/docs/skill-candidates/v0.0.9/ai-ethics-human-dignity/SKILL.md +32 -0
  44. package/docs/skill-candidates/v0.0.9/broad-domain-router/SKILL.md +41 -0
  45. package/docs/skill-candidates/v0.0.9/catholic-moral-discernment/SKILL.md +31 -0
  46. package/docs/skill-candidates/v0.0.9/engineering-systems-master/SKILL.md +31 -0
  47. package/docs/skill-candidates/v0.0.9/language-quality-pt-en-fr/SKILL.md +28 -0
  48. package/docs/skill-candidates/v0.0.9/math-science-reasoning/SKILL.md +29 -0
  49. package/docs/skill-candidates/v0.0.9/philosophy-sociology-discernment/SKILL.md +28 -0
  50. package/docs/skill-candidates/v0.0.9/professional-boundary-triage/SKILL.md +40 -0
  51. package/docs/skill-candidates/v0.0.9/release-ethics-gate/SKILL.md +32 -0
  52. package/docs/skill-candidates/v0.0.9/source-authority-reviewer/SKILL.md +31 -0
  53. package/manifests/channels/beta.json +7 -6
  54. package/manifests/channels/stable.json +8 -7
  55. package/network/approved-skills.json +51 -2
  56. package/network/unapproved-skill-candidates.json +77 -0
  57. package/package.json +13 -3
  58. package/sources.json +4 -1
@@ -0,0 +1,143 @@
1
+ const normalize = (value) => value
2
+ .normalize('NFD')
3
+ .replace(/[\u0300-\u036f]/g, '')
4
+ .toLowerCase();
5
+ const includesAny = (value, terms) => (terms.some((term) => value.includes(normalize(term))));
6
+ const VATICAN_SOURCES = [
7
+ 'Catechism of the Catholic Church: https://www.vatican.va/archive/ENG0015/_INDEX.HTM',
8
+ 'Artificial Intelligence and Peace: https://www.vatican.va/content/francesco/en/messages/peace/documents/20231208-messaggio-57giornatamondiale-pace2024.html',
9
+ 'Laudato si: https://www.vatican.va/content/francesco/en/encyclicals/documents/papa-francesco_20150524_enciclica-laudato-si.html',
10
+ 'Compendium of the Social Doctrine of the Church: https://www.vatican.va/roman_curia/pontifical_councils/justpeace/documents/rc_pc_justpeace_doc_20060526_compendio-dott-soc_en.html',
11
+ ];
12
+ const PROFESSIONAL_TERMS = [
13
+ 'advogado',
14
+ 'juridico',
15
+ 'juridica',
16
+ 'processo',
17
+ 'contrato',
18
+ 'diagnostico',
19
+ 'medico',
20
+ 'psicologo',
21
+ 'terapia',
22
+ 'investimento',
23
+ 'imposto',
24
+ 'tributario',
25
+ 'financeiro',
26
+ ];
27
+ const BLOCKED_TERMS = [
28
+ 'phishing',
29
+ 'fraude',
30
+ 'falsificar',
31
+ 'burlar lei',
32
+ 'enganar usuario',
33
+ 'roubar',
34
+ 'malware',
35
+ 'keylogger',
36
+ 'explorar vulnerabilidade',
37
+ 'invadir',
38
+ 'arma autonoma',
39
+ 'manipular vulneraveis',
40
+ ];
41
+ const WARNING_TERMS = [
42
+ 'vigilancia',
43
+ 'monitorar funcionario',
44
+ 'rastrear pessoa',
45
+ 'dados pessoais',
46
+ 'score de pessoas',
47
+ 'decisao automatica',
48
+ 'credito',
49
+ 'demitir',
50
+ 'dark pattern',
51
+ 'persuasao',
52
+ 'criancas',
53
+ 'menores',
54
+ ];
55
+ const GOOD_TERMS = [
56
+ 'acessibilidade',
57
+ 'privacidade',
58
+ 'seguranca',
59
+ 'documentacao',
60
+ 'educacao',
61
+ 'transparencia',
62
+ 'auditoria',
63
+ 'consentimento',
64
+ ];
65
+ const severityRank = {
66
+ info: 1,
67
+ warning: 2,
68
+ refer: 3,
69
+ blocker: 4,
70
+ };
71
+ const riskFromGates = (gates) => {
72
+ const maxRank = Math.max(0, ...gates.map((gate) => severityRank[gate.severity]));
73
+ if (maxRank >= severityRank.blocker)
74
+ return 'blocked';
75
+ if (maxRank >= severityRank.refer)
76
+ return 'high';
77
+ if (maxRank >= severityRank.warning)
78
+ return 'medium';
79
+ if (maxRank >= severityRank.info)
80
+ return 'low';
81
+ return 'none';
82
+ };
83
+ export const evaluateMoralDiscernment = (prompt, options = {}) => {
84
+ const normalized = normalize(`${prompt} ${options.projectContext ?? ''}`);
85
+ const gates = [];
86
+ if (includesAny(normalized, BLOCKED_TERMS)) {
87
+ gates.push({
88
+ code: 'moral_block_harm_or_deception',
89
+ severity: 'blocker',
90
+ domain: 'truth',
91
+ message: 'Pedido indica fraude, dano, invasao, manipulacao injusta ou engano deliberado; recusar execucao direta.',
92
+ });
93
+ }
94
+ if (includesAny(normalized, WARNING_TERMS)) {
95
+ gates.push({
96
+ code: 'moral_human_impact_review_required',
97
+ severity: 'warning',
98
+ domain: 'human_dignity',
99
+ message: 'Pedido pode afetar dignidade humana, privacidade, trabalho, menores ou decisoes sensiveis; exigir plano, transparencia e revisao humana.',
100
+ });
101
+ }
102
+ if (includesAny(normalized, PROFESSIONAL_TERMS)) {
103
+ gates.push({
104
+ code: 'professional_authority_required',
105
+ severity: 'refer',
106
+ domain: 'professional_boundary',
107
+ message: 'Area profissional sensivel detectada; limitar a informacao geral e encaminhar decisao real a profissional habilitado.',
108
+ });
109
+ }
110
+ if (includesAny(normalized, ['ia', 'ai', 'automacao', 'algoritmo', 'modelo', 'llm'])) {
111
+ gates.push({
112
+ code: 'technology_must_serve_person',
113
+ severity: includesAny(normalized, GOOD_TERMS) ? 'info' : 'warning',
114
+ domain: 'technology_limit',
115
+ message: 'Tecnologia deve servir a pessoa humana, a verdade, a justica e o bem comum; validar impacto antes de automatizar.',
116
+ });
117
+ }
118
+ if (options.riskTolerance === 'low' && gates.length > 0 && !gates.some((gate) => gate.severity === 'blocker')) {
119
+ gates.push({
120
+ code: 'low_risk_moral_plan_first',
121
+ severity: 'info',
122
+ domain: 'justice',
123
+ message: 'Modo conservador: documentar criterio moral, fonte e alternativa antes de executar.',
124
+ });
125
+ }
126
+ const moralRiskLevel = riskFromGates(gates);
127
+ const blocked = moralRiskLevel === 'blocked';
128
+ const requiresHumanAuthority = gates.some((gate) => gate.severity === 'refer' || gate.severity === 'blocker');
129
+ return {
130
+ moralRiskLevel,
131
+ gates,
132
+ sourcesToConsult: gates.length > 0 ? VATICAN_SOURCES : [],
133
+ allowedPath: blocked
134
+ ? 'Nao executar a solicitacao original; trabalhar somente em alternativa licita, verdadeira e orientada ao bem.'
135
+ : 'Executar com transparencia, validacao, menor coleta de dados possivel e supervisao humana proporcional ao risco.',
136
+ blockedPath: 'Fraude, mentira deliberada, exploracao, vigilancia injusta, dano, abuso de vulneraveis ou substituicao indevida de autoridade humana.',
137
+ recommendedAlternative: blocked
138
+ ? 'Reformular para defesa, auditoria, educacao, privacidade, reparacao, documentacao ou prevencao de dano.'
139
+ : 'Registrar risco, fontes, limites e criterios de revisao antes de transformar a decisao em comportamento padrao.',
140
+ requiresHumanAuthority,
141
+ };
142
+ };
143
+ //# sourceMappingURL=moral-governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moral-governance.js","sourceRoot":"","sources":["../src/moral-governance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { type DomainRoute } from './domain-router.js';
2
+ import { type MoralDiscernmentResult } from './moral-governance.js';
3
+ import type { SkillRecord, SkillSourceKind } from './types.js';
4
+ export type PromptRouterActivationMode = 'manual' | 'balanced' | 'always-on-assisted';
5
+ export type PromptRouterRiskTolerance = 'low' | 'normal' | 'high';
6
+ export type PromptRouterExecutionMode = 'plan' | 'assist' | 'block' | 'no-op';
7
+ export type PromptRouterSafetyGate = {
8
+ code: string;
9
+ severity: 'info' | 'warning' | 'blocker';
10
+ message: string;
11
+ };
12
+ export type PromptRouterRecommendedSkill = {
13
+ order: number;
14
+ name: string;
15
+ phase: string;
16
+ required: boolean;
17
+ score: number;
18
+ reasons: string[];
19
+ source: SkillSourceKind;
20
+ trusted: boolean;
21
+ location: string;
22
+ description: string;
23
+ };
24
+ export type PromptRouterDecision = {
25
+ shouldActivate: boolean;
26
+ activationMode: PromptRouterActivationMode;
27
+ activationReason: string;
28
+ recommendedSkills: PromptRouterRecommendedSkill[];
29
+ personaOverlay: 'Dev Senior Master' | 'none';
30
+ executionMode: PromptRouterExecutionMode;
31
+ safetyGates: PromptRouterSafetyGate[];
32
+ moralDiscernment: MoralDiscernmentResult;
33
+ domainRoute: DomainRoute;
34
+ learningOpportunity: boolean;
35
+ notionUpdateNeeded: boolean;
36
+ nextAction: string;
37
+ };
38
+ export type PromptRouterOptions = {
39
+ activationMode: PromptRouterActivationMode;
40
+ projectContext?: string;
41
+ availableSkills?: string[];
42
+ riskTolerance: PromptRouterRiskTolerance;
43
+ limit: number;
44
+ sourceKinds?: SkillSourceKind[];
45
+ };
46
+ export declare const routeSkillMasterPrompt: (skills: SkillRecord[], prompt: string, options: PromptRouterOptions) => PromptRouterDecision;
47
+ //# sourceMappingURL=prompt-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-router.d.ts","sourceRoot":"","sources":["../src/prompt-router.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAA4B,KAAK,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAkB,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/E,MAAM,MAAM,0BAA0B,GAAG,QAAQ,GAAG,UAAU,GAAG,oBAAoB,CAAC;AACtF,MAAM,MAAM,yBAAyB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAClE,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAE9E,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,0BAA0B,CAAC;IAC3C,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,4BAA4B,EAAE,CAAC;IAClD,cAAc,EAAE,mBAAmB,GAAG,MAAM,CAAC;IAC7C,aAAa,EAAE,yBAAyB,CAAC;IACzC,WAAW,EAAE,sBAAsB,EAAE,CAAC;IACtC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,WAAW,EAAE,WAAW,CAAC;IACzB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,0BAA0B,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,yBAAyB,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC,CAAC;AA4RF,eAAO,MAAM,sBAAsB,GACjC,QAAQ,WAAW,EAAE,EACrB,QAAQ,MAAM,EACd,SAAS,mBAAmB,KAC3B,oBA8EF,CAAC"}
@@ -0,0 +1,324 @@
1
+ import { evaluateSkillMasterActivation, SKILL_MASTER_ALIASES } from './activation.js';
2
+ import { routeKnowledgeDomain } from './domain-router.js';
3
+ import { evaluateMoralDiscernment } from './moral-governance.js';
4
+ const normalize = (value) => value
5
+ .normalize('NFD')
6
+ .replace(/[\u0300-\u036f]/g, '')
7
+ .toLowerCase();
8
+ const includesAny = (normalized, terms) => (terms.some((term) => normalized.includes(normalize(term))));
9
+ const DIRECT_TRIGGER_TERMS = [
10
+ ...SKILL_MASTER_ALIASES,
11
+ 'use o skill master',
12
+ 'use o skill_master',
13
+ 'use skill master',
14
+ 'utilize o skill master',
15
+ ];
16
+ const STRONG_TRIGGER_TERMS = [
17
+ 'use o skill',
18
+ 'utilize uma skill',
19
+ 'crie uma skill',
20
+ 'criar skill',
21
+ 'aprenda com isso',
22
+ 'aprender com isso',
23
+ 'atualize o notion',
24
+ 'notion',
25
+ 'pesquise e implemente',
26
+ 'valide npm',
27
+ 'validar npm',
28
+ 'npm install -g',
29
+ 'instale pacote global',
30
+ 'instalar pacote global',
31
+ 'melhore o mcp',
32
+ 'melhorar o mcp',
33
+ 'skill-master',
34
+ 'skill_master',
35
+ 'skill-master-mcp',
36
+ ];
37
+ const TECHNICAL_TERMS = [
38
+ 'api',
39
+ 'arquitetura',
40
+ 'automacao',
41
+ 'backend',
42
+ 'bug',
43
+ 'build',
44
+ 'cli',
45
+ 'codigo',
46
+ 'codex',
47
+ 'deploy',
48
+ 'frontend',
49
+ 'github',
50
+ 'implemente',
51
+ 'implementar',
52
+ 'mcp',
53
+ 'npm',
54
+ 'prompt',
55
+ 'refatorar',
56
+ 'release',
57
+ 'repo',
58
+ 'repositorio',
59
+ 'script',
60
+ 'seguranca',
61
+ 'teste',
62
+ 'testes',
63
+ 'typescript',
64
+ 'validar',
65
+ ];
66
+ const TRIVIAL_TERMS = [
67
+ 'que horas',
68
+ 'qual a hora',
69
+ 'data de hoje',
70
+ 'traduza esta frase',
71
+ 'corrija esta frase',
72
+ 'reescreva esta frase',
73
+ 'resuma em uma frase',
74
+ ];
75
+ const PUBLICATION_TERMS = [
76
+ 'npm publish',
77
+ 'publique',
78
+ 'publicar',
79
+ 'publicacao',
80
+ 'nova versao',
81
+ 'release',
82
+ 'tag',
83
+ 'git push',
84
+ 'disponivel para todos',
85
+ ];
86
+ const PUBLICATION_AUTH_TERMS = [
87
+ 'pode publicar',
88
+ 'autorizo publicar',
89
+ 'autorizada a publicacao',
90
+ 'autorizo a publicacao',
91
+ 'publique as atualizacoes',
92
+ 'publicar agora',
93
+ ];
94
+ const PUBLICATION_NEGATION_TERMS = [
95
+ 'sem publicar',
96
+ 'sem publicacao',
97
+ 'nao publicar',
98
+ 'nao publique',
99
+ 'não publicar',
100
+ 'não publique',
101
+ 'nao fazer publicacao',
102
+ 'não fazer publicação',
103
+ ];
104
+ const LEARNING_TERMS = [
105
+ 'aprenda',
106
+ 'aprender',
107
+ 'skill aprendida',
108
+ 'implementacao bem sucedida',
109
+ 'implementacao de sucesso',
110
+ 'foi sucesso',
111
+ 'crie skills sobre',
112
+ 'aprove uma skill externa',
113
+ 'aprovar skill externa',
114
+ 'skill externa',
115
+ 'transforme uma skill da web',
116
+ 'skill da web',
117
+ ];
118
+ const SECRET_TERMS = ['token', 'senha', 'cookie', 'secret', '.env', 'chave'];
119
+ const DESTRUCTIVE_TERMS = ['rm -rf', 'git reset --hard', 'git checkout --', 'apagar tudo', 'deletar tudo'];
120
+ const toRecommendedSkill = (entry, index) => ({
121
+ order: index + 1,
122
+ name: entry.skill.name,
123
+ phase: entry.phase,
124
+ required: entry.required,
125
+ score: entry.score,
126
+ reasons: entry.reasons,
127
+ source: entry.skill.sourceKind,
128
+ trusted: entry.skill.trusted,
129
+ location: entry.skill.location,
130
+ description: entry.skill.description,
131
+ });
132
+ const filterAvailableSkills = (skills, availableSkills) => {
133
+ if (!availableSkills?.length)
134
+ return skills;
135
+ const allowed = new Set(availableSkills.map((skill) => normalize(skill)));
136
+ return skills.filter((skill) => allowed.has(normalize(skill.name)));
137
+ };
138
+ const hasPublicationAuthorization = (normalizedPrompt) => (includesAny(normalizedPrompt, PUBLICATION_AUTH_TERMS));
139
+ const hasPublicationNegation = (normalizedPrompt) => (includesAny(normalizedPrompt, PUBLICATION_NEGATION_TERMS));
140
+ const buildSafetyGates = (normalizedPrompt, options, moralDiscernment) => {
141
+ const gates = [];
142
+ const publicationNegated = hasPublicationNegation(normalizedPrompt);
143
+ const publicationIntent = includesAny(normalizedPrompt, PUBLICATION_TERMS) && !publicationNegated;
144
+ const publicationAuthorized = hasPublicationAuthorization(normalizedPrompt);
145
+ if (publicationNegated) {
146
+ gates.push({
147
+ code: 'publication_explicitly_disabled',
148
+ severity: 'info',
149
+ message: 'O prompt restringe publicacao; manter a execucao somente local.',
150
+ });
151
+ }
152
+ else if (publicationIntent && !publicationAuthorized) {
153
+ gates.push({
154
+ code: 'publication_requires_explicit_authorization',
155
+ severity: 'blocker',
156
+ message: 'Publicacao, release, tag, push ou pacote novo exigem autorizacao explicita antes de executar.',
157
+ });
158
+ }
159
+ else if (publicationIntent) {
160
+ gates.push({
161
+ code: 'publication_authorization_detected',
162
+ severity: 'warning',
163
+ message: 'Ha intencao de publicacao; validar pacote, changelog, versao e canal antes de executar.',
164
+ });
165
+ }
166
+ if (includesAny(normalizedPrompt, SECRET_TERMS)) {
167
+ gates.push({
168
+ code: 'secret_redaction_required',
169
+ severity: 'warning',
170
+ message: 'Revisar e remover tokens, senhas, cookies, chaves e arquivos .env de qualquer artefato gerado.',
171
+ });
172
+ }
173
+ if (includesAny(normalizedPrompt, DESTRUCTIVE_TERMS)) {
174
+ gates.push({
175
+ code: 'destructive_command_review_required',
176
+ severity: 'blocker',
177
+ message: 'Comandos destrutivos exigem revisao humana e confirmacao explicita antes da execucao.',
178
+ });
179
+ }
180
+ if (includesAny(normalizedPrompt, ['notion'])) {
181
+ gates.push({
182
+ code: 'notion_preflight_required',
183
+ severity: 'info',
184
+ message: 'Confirmar conexao com Notion antes de criar ou atualizar paginas.',
185
+ });
186
+ }
187
+ if (includesAny(normalizedPrompt, LEARNING_TERMS)) {
188
+ gates.push({
189
+ code: 'learned_skill_human_approval_required',
190
+ severity: 'info',
191
+ message: 'Skills aprendidas precisam de evidencia, revisao de risco e aprovacao humana antes de ativacao.',
192
+ });
193
+ }
194
+ for (const gate of moralDiscernment.gates) {
195
+ gates.push({
196
+ code: gate.code,
197
+ severity: gate.severity === 'blocker' ? 'blocker' : gate.severity === 'refer' ? 'warning' : gate.severity,
198
+ message: gate.message,
199
+ });
200
+ }
201
+ if (options.riskTolerance === 'low') {
202
+ gates.push({
203
+ code: 'low_risk_tolerance_plan_first',
204
+ severity: 'info',
205
+ message: 'Modo conservador: planejar e validar antes de executar alteracoes relevantes.',
206
+ });
207
+ }
208
+ return gates;
209
+ };
210
+ const selectExecutionMode = (shouldActivate, normalizedPrompt, gates, options) => {
211
+ if (gates.some((gate) => gate.severity === 'blocker'))
212
+ return 'block';
213
+ if (!shouldActivate)
214
+ return 'no-op';
215
+ const publicationExplicitlyDisabled = gates.some((gate) => gate.code === 'publication_explicitly_disabled');
216
+ const planningTerms = publicationExplicitlyDisabled
217
+ ? ['planeje', 'planejamento', 'arquitetura', 'pesquise']
218
+ : ['planeje', 'planejamento', 'arquitetura', 'pesquise', 'release', 'publicar', 'aprovacao'];
219
+ if (options.riskTolerance === 'low'
220
+ || includesAny(normalizedPrompt, planningTerms)) {
221
+ return 'plan';
222
+ }
223
+ return 'assist';
224
+ };
225
+ const buildNextAction = (executionMode, recommendedSkills, notionUpdateNeeded, learningOpportunity) => {
226
+ if (executionMode === 'block') {
227
+ return 'Parar e pedir aprovacao humana ou remover o risco antes de executar.';
228
+ }
229
+ if (executionMode === 'no-op') {
230
+ return 'Responder normalmente sem acionar fluxo pesado do Skill Master.';
231
+ }
232
+ if (recommendedSkills.length > 0) {
233
+ return `Ler e aplicar a primeira skill recomendada: ${recommendedSkills[0].name}.`;
234
+ }
235
+ if (learningOpportunity) {
236
+ return 'Coletar evidencias antes de preparar uma skill aprendida.';
237
+ }
238
+ if (notionUpdateNeeded) {
239
+ return 'Confirmar conexao com Notion e registrar a continuidade.';
240
+ }
241
+ return 'Aplicar a persona Dev Senior Master e executar com validacao real.';
242
+ };
243
+ export const routeSkillMasterPrompt = (skills, prompt, options) => {
244
+ const scopedSkills = filterAvailableSkills(skills, options.availableSkills);
245
+ const normalizedPrompt = normalize(`${prompt} ${options.projectContext ?? ''}`);
246
+ const explicitTrigger = includesAny(normalizedPrompt, DIRECT_TRIGGER_TERMS);
247
+ const strongTrigger = includesAny(normalizedPrompt, STRONG_TRIGGER_TERMS);
248
+ const technicalPrompt = includesAny(normalizedPrompt, TECHNICAL_TERMS);
249
+ const trivialPrompt = includesAny(normalizedPrompt, TRIVIAL_TERMS) && !technicalPrompt && !explicitTrigger;
250
+ const notionUpdateNeeded = includesAny(normalizedPrompt, ['notion']);
251
+ const learningOpportunity = includesAny(normalizedPrompt, LEARNING_TERMS);
252
+ const moralDiscernment = evaluateMoralDiscernment(prompt, {
253
+ projectContext: options.projectContext,
254
+ riskTolerance: options.riskTolerance,
255
+ });
256
+ const domainRoute = routeKnowledgeDomain(`${prompt} ${options.projectContext ?? ''}`);
257
+ const gates = buildSafetyGates(normalizedPrompt, options, moralDiscernment);
258
+ const activation = evaluateSkillMasterActivation(scopedSkills, prompt, {
259
+ limit: options.limit,
260
+ sourceKinds: options.sourceKinds,
261
+ });
262
+ const hasRecommendations = activation.recommendations.length > 0;
263
+ const hasBlocker = gates.some((gate) => gate.severity === 'blocker');
264
+ let shouldActivate = false;
265
+ const reasons = [];
266
+ if (options.activationMode === 'manual') {
267
+ shouldActivate = explicitTrigger || hasBlocker;
268
+ if (explicitTrigger)
269
+ reasons.push('modo manual com mencao direta ao Skill Master');
270
+ }
271
+ else if (options.activationMode === 'balanced') {
272
+ shouldActivate = explicitTrigger
273
+ || hasBlocker
274
+ || strongTrigger
275
+ || notionUpdateNeeded
276
+ || learningOpportunity
277
+ || (technicalPrompt && hasRecommendations)
278
+ || activation.shouldActivate;
279
+ if (explicitTrigger)
280
+ reasons.push('mencao direta ao Skill Master');
281
+ if (strongTrigger)
282
+ reasons.push('gatilho forte de skill, MCP, Notion, pesquisa ou validacao');
283
+ if (technicalPrompt && hasRecommendations)
284
+ reasons.push('prompt tecnico com skill aprovada relevante');
285
+ }
286
+ else {
287
+ shouldActivate = !trivialPrompt && (explicitTrigger
288
+ || hasBlocker
289
+ || strongTrigger
290
+ || technicalPrompt
291
+ || hasRecommendations
292
+ || notionUpdateNeeded
293
+ || learningOpportunity);
294
+ if (shouldActivate)
295
+ reasons.push('modo always-on-assisted encontrou possivel ganho operacional');
296
+ }
297
+ if (trivialPrompt && !explicitTrigger && !hasBlocker) {
298
+ shouldActivate = false;
299
+ reasons.push('tarefa trivial sem ganho claro de skill');
300
+ }
301
+ if (activation.reasons.length > 0)
302
+ reasons.push(...activation.reasons);
303
+ if (hasBlocker)
304
+ reasons.push('ha gate bloqueante de seguranca ou publicacao');
305
+ if (reasons.length === 0)
306
+ reasons.push('nenhum gatilho suficiente para acionar o Skill Master');
307
+ const recommendedSkills = activation.recommendations.map(toRecommendedSkill);
308
+ const executionMode = selectExecutionMode(shouldActivate, normalizedPrompt, gates, options);
309
+ return {
310
+ shouldActivate,
311
+ activationMode: options.activationMode,
312
+ activationReason: [...new Set(reasons)].join('; '),
313
+ recommendedSkills,
314
+ personaOverlay: shouldActivate || executionMode === 'block' ? 'Dev Senior Master' : 'none',
315
+ executionMode,
316
+ safetyGates: gates,
317
+ moralDiscernment,
318
+ domainRoute,
319
+ learningOpportunity,
320
+ notionUpdateNeeded,
321
+ nextAction: buildNextAction(executionMode, recommendedSkills, notionUpdateNeeded, learningOpportunity),
322
+ };
323
+ };
324
+ //# 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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"}