expxdev 0.5.1 → 0.5.2

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 (75) hide show
  1. package/dist/cli/init.js +39 -5
  2. package/dist/cli/init.js.map +1 -1
  3. package/dist/harness/hooks.d.ts +9 -4
  4. package/dist/harness/hooks.js +34 -3
  5. package/dist/harness/hooks.js.map +1 -1
  6. package/dist/harness/instalar.d.ts +19 -0
  7. package/dist/harness/instalar.js +42 -1
  8. package/dist/harness/instalar.js.map +1 -1
  9. package/dist/harness/settings.js +6 -0
  10. package/dist/harness/settings.js.map +1 -1
  11. package/dist/nucleo/busca.d.ts +8 -0
  12. package/dist/nucleo/busca.js +27 -2
  13. package/dist/nucleo/busca.js.map +1 -1
  14. package/dist/nucleo/catalogo.d.ts +7 -1
  15. package/dist/nucleo/catalogo.js +73 -9
  16. package/dist/nucleo/catalogo.js.map +1 -1
  17. package/dist/nucleo/layout.d.ts +8 -0
  18. package/dist/nucleo/layout.js +22 -0
  19. package/dist/nucleo/layout.js.map +1 -1
  20. package/dist/parser/descoberta/trabalhos.d.ts +14 -2
  21. package/dist/parser/descoberta/trabalhos.js +59 -0
  22. package/dist/parser/descoberta/trabalhos.js.map +1 -1
  23. package/dist/parser/esquema/cabecalho.d.ts +21 -5
  24. package/dist/parser/esquema/cabecalho.js +24 -5
  25. package/dist/parser/esquema/cabecalho.js.map +1 -1
  26. package/dist/parser/esquema/enums.d.ts +41 -4
  27. package/dist/parser/esquema/enums.js +39 -9
  28. package/dist/parser/esquema/enums.js.map +1 -1
  29. package/dist/parser/esquema/evento.d.ts +1 -0
  30. package/dist/parser/esquema/kinds.d.ts +288 -0
  31. package/dist/parser/esquema/kinds.js +84 -1
  32. package/dist/parser/esquema/kinds.js.map +1 -1
  33. package/dist/plugin/montagem.d.ts +5 -0
  34. package/dist/plugin/montagem.js +67 -1
  35. package/dist/plugin/montagem.js.map +1 -1
  36. package/dist/servidor/http.d.ts +5 -0
  37. package/dist/servidor/http.js +28 -0
  38. package/dist/servidor/http.js.map +1 -1
  39. package/dist/servidor/observador.d.ts +27 -1
  40. package/dist/servidor/observador.js +152 -19
  41. package/dist/servidor/observador.js.map +1 -1
  42. package/dist/servidor/painel.js +13 -3
  43. package/dist/servidor/painel.js.map +1 -1
  44. package/dist/update/comparar.js +2 -2
  45. package/dist/update/comparar.js.map +1 -1
  46. package/dist/watch/desenho/barra.d.ts +29 -0
  47. package/dist/watch/desenho/barra.js +111 -0
  48. package/dist/watch/desenho/barra.js.map +1 -0
  49. package/dist/watch/desenho/desenhar.d.ts +15 -2
  50. package/dist/watch/desenho/desenhar.js +65 -11
  51. package/dist/watch/desenho/desenhar.js.map +1 -1
  52. package/dist/watch/desenho/painel.d.ts +14 -0
  53. package/dist/watch/desenho/painel.js +260 -0
  54. package/dist/watch/desenho/painel.js.map +1 -0
  55. package/dist/watch/fontes/estado-schema.d.ts +7 -0
  56. package/dist/watch/opcoes.d.ts +2 -0
  57. package/dist/watch/opcoes.js +11 -4
  58. package/dist/watch/opcoes.js.map +1 -1
  59. package/dist/watch/terminal/tela.d.ts +15 -12
  60. package/dist/watch/terminal/tela.js +79 -3
  61. package/dist/watch/terminal/tela.js.map +1 -1
  62. package/dist/watch/visao/atividade.d.ts +70 -0
  63. package/dist/watch/visao/atividade.js +0 -0
  64. package/dist/watch/visao/atividade.js.map +1 -0
  65. package/dist/watch/visao/frota.d.ts +46 -0
  66. package/dist/watch/visao/frota.js +67 -0
  67. package/dist/watch/visao/frota.js.map +1 -0
  68. package/dist/watch/visao/projetar.d.ts +9 -0
  69. package/dist/watch/visao/projetar.js +55 -0
  70. package/dist/watch/visao/projetar.js.map +1 -1
  71. package/dist/watch/watch.d.ts +2 -0
  72. package/dist/watch/watch.js +48 -3
  73. package/dist/watch/watch.js.map +1 -1
  74. package/nucleo/hooks/expx-lembrete.sh +136 -0
  75. package/package.json +1 -1
@@ -0,0 +1,136 @@
1
+ #!/usr/bin/env bash
2
+ # expx-lembrete.sh — o gatilho que garante que a skill seja CONSIDERADA.
3
+ #
4
+ # UserPromptSubmit: roda antes da primeira acao do modelo, e o que ele
5
+ # escreve no stdout entra no contexto daquele turno.
6
+ #
7
+ # ---------------------------------------------------------------------------
8
+ # Por que este arquivo existe
9
+ #
10
+ # Uma descricao de skill so compete depois que o modelo decide procurar uma.
11
+ # Quando ele forma hipotese tecnica direto do relato — "sei o que provavelmente
12
+ # e isso" — a etapa de escolher o processo simplesmente nao acontece, e a
13
+ # descricao, por melhor que seja, nunca e lida.
14
+ #
15
+ # Foi medido: um relato de defeito nao acionou a runx em SEIS sessoes
16
+ # seguidas, com a descricao reescrita tres vezes (910, 1020 e 287 caracteres),
17
+ # sem concorrente, sem cache velho e com a palavra "bug" literal no pedido. A
18
+ # propria sessao, ao ser questionada, respondeu: "nao e que eu li a descricao
19
+ # e julguei que nao se aplicava — eu nao a li".
20
+ #
21
+ # O que resolve nao e descricao melhor: e uma instrucao imperativa injetada
22
+ # ANTES da primeira acao. E o mecanismo que o plugin superpowers usava, e a
23
+ # razao de ele vencer as skills do metodo mesmo sem descricao superior.
24
+ #
25
+ # ---------------------------------------------------------------------------
26
+ # Regras que este arquivo respeita
27
+ #
28
+ # 1. Rapido — so casamento de padrao em shell, sem rede, sem parser.
29
+ # 2. Falha aberta — qualquer erro sai 0 e nao injeta nada. Nunca bloqueia.
30
+ # 3. Um lembrete — no maximo UMA skill por prompt, a de maior prioridade.
31
+ # Injetar tres sugestoes e o mesmo que nao injetar nenhuma.
32
+ # 4. So o que esta instalado — nao sugere skill ausente do projeto.
33
+
34
+ set -u
35
+
36
+ # Sem stdin utilizavel, nao ha o que fazer.
37
+ EVENTO="$(cat 2>/dev/null || true)"
38
+ [ -z "$EVENTO" ] && exit 0
39
+
40
+ # O prompt do usuario. Com jq quando existe; sem jq, um grep tolerante.
41
+ if command -v jq >/dev/null 2>&1; then
42
+ PROMPT="$(printf '%s' "$EVENTO" | jq -r '.prompt // empty' 2>/dev/null)"
43
+ else
44
+ PROMPT="$(printf '%s' "$EVENTO" \
45
+ | grep -o '"prompt"[[:space:]]*:[[:space:]]*"[^"]*"' \
46
+ | head -1 | sed 's/.*:[[:space:]]*"//; s/"$//')"
47
+ fi
48
+ [ -z "$PROMPT" ] && exit 0
49
+
50
+ # Prompt curto e saudacao nao disparam nada.
51
+ [ "${#PROMPT}" -lt 12 ] && exit 0
52
+
53
+ # Minusculas e SEM acento: a pessoa digita "nao acompanha", "codigo", "calculo"
54
+ # tanto quanto as formas acentuadas, e um padrao que so casa com acento perde
55
+ # metade dos relatos reais.
56
+ # O `tr`/`sed` do BSD trabalha byte a byte e corta caracteres multibyte no
57
+ # meio, produzindo lixo invalido. O Python resolve isso com uma passada de
58
+ # normalizacao Unicode; sem ele, cai para minusculas so em ASCII, que ainda
59
+ # casa a maioria dos padroes.
60
+ if command -v python3 >/dev/null 2>&1; then
61
+ P="$(printf '%s' "$PROMPT" | python3 -c "
62
+ import sys,unicodedata
63
+ t=sys.stdin.read().lower()
64
+ print(''.join(c for c in unicodedata.normalize('NFD',t) if unicodedata.category(c)!='Mn'))
65
+ " 2>/dev/null)"
66
+ else
67
+ P="$(printf '%s' "$PROMPT" | tr '[:upper:]' '[:lower:]')"
68
+ fi
69
+ [ -z "$P" ] && P="$(printf '%s' "$PROMPT" | tr '[:upper:]' '[:lower:]')"
70
+
71
+ RAIZ="${CLAUDE_PROJECT_DIR:-$PWD}"
72
+
73
+ # A skill esta instalada NESTE projeto?
74
+ instalada() {
75
+ [ -f "$RAIZ/.claude/skills/$1/SKILL.md" ] && return 0
76
+ [ -d "$RAIZ/.expx/marketplace/plugins/expx/skills/$1" ] && return 0
77
+ return 1
78
+ }
79
+
80
+ casa() { printf '%s' "$P" | grep -Eq "$1"; }
81
+
82
+ # ------------------------------------------------------------------ gatilhos
83
+ #
84
+ # A ordem E a prioridade, e ela segue o fluxo do metodo: decidir se ha trabalho
85
+ # (prodx) vem antes de planejar (sprintx) e de corrigir (runx); entregar
86
+ # (mergex) vem depois. Consultas (memox, stackx) sao as mais especificas e
87
+ # ficam no topo por isso — quem pergunta "isso ja aconteceu antes?" nao quer
88
+ # que a resposta seja abrir uma ocorrencia.
89
+
90
+ SKILL=""
91
+ MOTIVO=""
92
+
93
+ # memox — pergunta sobre o passado
94
+ if casa '(ja (aconteceu|deu|teve|foi) (antes|isso)|e recorrente|voltou a (acontecer|dar)|historico (do|da|de)|quem mexeu|ja foi (decidido|tentado|descartado)|regressao)'; then
95
+ SKILL="memox"; MOTIVO="a pergunta e sobre o passado do codigo"
96
+
97
+ # stackx — pergunta sobre convencao do projeto
98
+ elif casa '(qual o padrao|como (escrevo|faco) (o )?teste|onde (coloco|fica|ponho)|convencao|esta no padrao|padroes do projeto)'; then
99
+ SKILL="stackx"; MOTIVO="a pergunta e sobre a convencao tecnica do repositorio"
100
+
101
+ # mergex — entrega
102
+ elif casa '(abrir? (o )?pr\b|pull request|criar? (a )?branch|commitar|versionar|subir o trabalho|mandar para revisao|pronto para (entregar|revisao)|pacote (do|de) qa)'; then
103
+ SKILL="mergex"; MOTIVO="e trabalho de entrega e revisao"
104
+
105
+ # prodx — pedido cru, ainda por decidir
106
+ elif casa '(seria bom se|seria legal se|poderia (ter|fazer)|vale a pena|ja existe (no sistema|isso)|ideia de|gostaria de ter|queria (uma|um) (tela|relatorio|campo) nov)'; then
107
+ SKILL="prodx"; MOTIVO="e um pedido cru, e decidir SE vira trabalho vem antes de planejar"
108
+
109
+ # runx — defeito no que ja existe
110
+ elif casa '(\bbug\b|defeito|nao funciona|parou de funcionar|nao esta funcionando|nao acompanha|nao segue o padrao|(esta|ta|vindo|vem|veio|calculando|somando|mostrando|exibindo) errad|valor errado|(errado|divergente|incorret)|nao responde|nao carrega|nao salva|nao aparece|trava|travando|quebrou|quebrado|erro ao|falha ao|deveria .* mas)'; then
111
+ SKILL="runx"; MOTIVO="e um defeito em algo que ja existe"
112
+
113
+ # sprintx — construir algo novo
114
+ elif casa '(implementar|construir|criar (uma|um) (feature|funcionalidade|integracao)|adicionar (uma|um) (feature|funcionalidade)|integrar com|refatorar|migrar (para|de))'; then
115
+ SKILL="sprintx"; MOTIVO="e trabalho de construcao"
116
+ fi
117
+
118
+ [ -z "$SKILL" ] && exit 0
119
+ instalada "$SKILL" || exit 0
120
+
121
+ # A instrucao. Imperativa e curta: ela existe para que a etapa de ESCOLHER o
122
+ # processo aconteca, nao para descrever a skill — isso a descricao ja faz.
123
+ TEXTO="[Expx] Este pedido casa com a skill \`$SKILL\` ($MOTIVO).
124
+
125
+ ANTES de ler codigo, formar hipotese ou editar qualquer arquivo: leia a descricao da skill \`$SKILL\` e decida explicitamente se ela se aplica. Se aplicar, use-a. Se nao aplicar, diga em uma linha por que nao.
126
+
127
+ Hipotese tecnica forte nao dispensa esta checagem — e justamente quando ela mais protege."
128
+
129
+ if command -v jq >/dev/null 2>&1; then
130
+ jq -n --arg t "$TEXTO" \
131
+ '{hookSpecificOutput:{hookEventName:"UserPromptSubmit",additionalContext:$t}}' 2>/dev/null || true
132
+ else
133
+ ESC="$(printf '%s' "$TEXTO" | sed 's/\\/\\\\/g; s/"/\\"/g' | awk '{printf "%s\\n",$0}')"
134
+ printf '{"hookSpecificOutput":{"hookEventName":"UserPromptSubmit","additionalContext":"%s"}}\n' "$ESC"
135
+ fi
136
+ exit 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "expxdev",
3
- "version": "0.5.1",
3
+ "version": "0.5.2",
4
4
  "description": "CLI do metodo Expx: instala, atualiza e opera o ecossistema de skills, e sobe o painel de operacao",
5
5
  "type": "module",
6
6
  "bin": {