@semacode/cli 1.5.17 → 1.5.19

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 (111) hide show
  1. package/AGENTS.md +268 -260
  2. package/LICENSE +22 -22
  3. package/README.md +93 -61
  4. package/SEMA_BRIEF.curto.txt +8 -6
  5. package/SEMA_BRIEF.md +71 -22
  6. package/SEMA_BRIEF.micro.txt +7 -5
  7. package/SEMA_INDEX.json +931 -193
  8. package/dist/controleComercialSupabase.d.ts +326 -0
  9. package/dist/controleComercialSupabase.js +310 -0
  10. package/dist/controleComercialSupabase.js.map +1 -0
  11. package/dist/docs.js +48 -20
  12. package/dist/docs.js.map +1 -1
  13. package/dist/drift.d.ts +5 -3
  14. package/dist/drift.js +119 -116
  15. package/dist/drift.js.map +1 -1
  16. package/dist/importador.d.ts +1 -1
  17. package/dist/importador.js +1 -200
  18. package/dist/importador.js.map +1 -1
  19. package/dist/index.js +1924 -493
  20. package/dist/index.js.map +1 -1
  21. package/dist/mcpRemoto.d.ts +32 -0
  22. package/dist/mcpRemoto.js +61 -0
  23. package/dist/mcpRemoto.js.map +1 -0
  24. package/dist/projeto.js +3 -21
  25. package/dist/projeto.js.map +1 -1
  26. package/dist/tipos.d.ts +1 -1
  27. package/docs/AGENT_STARTER.md +109 -102
  28. package/docs/cli.md +89 -33
  29. package/docs/como-ensinar-a-sema-para-ia.md +42 -36
  30. package/docs/deploy.md +231 -43
  31. package/docs/documentacao.md +61 -36
  32. package/docs/env.md +63 -14
  33. package/docs/extensao-vscode.md +12 -4
  34. package/docs/fluxo-pratico-ia-sema.md +45 -35
  35. package/docs/instalacao-e-primeiro-uso.md +52 -30
  36. package/docs/integracao-com-ia.md +44 -35
  37. package/docs/mcp.md +270 -31
  38. package/docs/pagamento-ponta-a-ponta.md +40 -24
  39. package/docs/persistencia-vendor-first.md +11 -5
  40. package/docs/prompt-base-ia-sema.md +18 -11
  41. package/docs/rollback.md +17 -15
  42. package/docs/sintaxe.md +37 -229
  43. package/exemplos/agendamento.sema +105 -106
  44. package/exemplos/assinatura.sema +133 -136
  45. package/exemplos/auditoria.sema +89 -88
  46. package/exemplos/autenticacao.sema +125 -125
  47. package/exemplos/author_obra_comum.sema +294 -0
  48. package/exemplos/author_tema_sensivel.sema +264 -0
  49. package/exemplos/automacao.sema +107 -107
  50. package/exemplos/cadastro_usuario.sema +54 -54
  51. package/exemplos/calculadora.sema +78 -78
  52. package/exemplos/crud_simples.sema +89 -89
  53. package/exemplos/estoque.sema +127 -126
  54. package/exemplos/exportacao.sema +94 -94
  55. package/exemplos/fila.sema +130 -131
  56. package/exemplos/integracao_externa.sema +94 -94
  57. package/exemplos/multi_tenant.sema +140 -140
  58. package/exemplos/notificacao.sema +149 -98
  59. package/exemplos/operacao_estrategia.sema +633 -402
  60. package/exemplos/pagamento.sema +434 -222
  61. package/exemplos/pagamento_dominio.sema +35 -35
  62. package/exemplos/pedido.sema +255 -119
  63. package/exemplos/permissao.sema +121 -121
  64. package/exemplos/persistencia_vendor_first.sema +86 -86
  65. package/exemplos/profile_game.sema +114 -0
  66. package/exemplos/profile_legal.sema +105 -0
  67. package/exemplos/profile_ops.sema +110 -0
  68. package/exemplos/profile_research.sema +104 -0
  69. package/exemplos/profile_software.sema +123 -0
  70. package/exemplos/profile_workflow_n8n.sema +99 -0
  71. package/exemplos/relatorio.sema +93 -93
  72. package/exemplos/replica_analitica_erp.sema +160 -0
  73. package/exemplos/testes_embutidos.sema +45 -45
  74. package/exemplos/tratamento_erro.sema +157 -157
  75. package/exemplos/upload_arquivo.sema +93 -93
  76. package/exemplos/webhook.sema +94 -96
  77. package/llms-full.txt +34 -34
  78. package/llms.txt +17 -17
  79. package/node_modules/@sema/gerador-css/dist/index.js +563 -563
  80. package/node_modules/@sema/gerador-css/package.json +1 -1
  81. package/node_modules/@sema/gerador-dart/package.json +1 -1
  82. package/node_modules/@sema/gerador-html/dist/index.js +90 -90
  83. package/node_modules/@sema/gerador-html/package.json +1 -1
  84. package/node_modules/@sema/gerador-javascript/dist/index.js +92 -92
  85. package/node_modules/@sema/gerador-javascript/package.json +1 -1
  86. package/node_modules/@sema/gerador-lua/dist/index.js +53 -53
  87. package/node_modules/@sema/gerador-lua/package.json +1 -1
  88. package/node_modules/@sema/gerador-python/dist/index.js +122 -96
  89. package/node_modules/@sema/gerador-python/dist/index.js.map +1 -1
  90. package/node_modules/@sema/gerador-python/package.json +1 -1
  91. package/node_modules/@sema/gerador-typescript/dist/index.js +153 -153
  92. package/node_modules/@sema/gerador-typescript/package.json +1 -1
  93. package/node_modules/@sema/nucleo/dist/ast/tipos.d.ts +2 -4
  94. package/node_modules/@sema/nucleo/dist/formatador/index.js +26 -46
  95. package/node_modules/@sema/nucleo/dist/formatador/index.js.map +1 -1
  96. package/node_modules/@sema/nucleo/dist/ir/conversor.js +9 -204
  97. package/node_modules/@sema/nucleo/dist/ir/conversor.js.map +1 -1
  98. package/node_modules/@sema/nucleo/dist/ir/modelos.d.ts +3 -35
  99. package/node_modules/@sema/nucleo/dist/lexer/tokens.js +0 -21
  100. package/node_modules/@sema/nucleo/dist/lexer/tokens.js.map +1 -1
  101. package/node_modules/@sema/nucleo/dist/parser/parser.js +0 -40
  102. package/node_modules/@sema/nucleo/dist/parser/parser.js.map +1 -1
  103. package/node_modules/@sema/nucleo/dist/semantico/analisador.d.ts +6 -5
  104. package/node_modules/@sema/nucleo/dist/semantico/analisador.js +76 -307
  105. package/node_modules/@sema/nucleo/dist/semantico/analisador.js.map +1 -1
  106. package/node_modules/@sema/nucleo/dist/semantico/estruturas.d.ts +2 -0
  107. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js +32 -2
  108. package/node_modules/@sema/nucleo/dist/semantico/estruturas.js.map +1 -1
  109. package/node_modules/@sema/nucleo/package.json +1 -1
  110. package/node_modules/@sema/padroes/package.json +1 -1
  111. package/package.json +15 -15
@@ -1,136 +1,133 @@
1
- module exemplos.assinatura {
2
- docs {
3
- resumo: "Gestao de assinaturas recorrentes com upgrade, downgrade e cancelamento."
4
- }
5
-
6
- entity Assinatura {
7
- fields {
8
- id: Id
9
- cliente_id: Id
10
- plano_id: Id
11
- status: Texto
12
- inicio_em: Timestamp
13
- proximo_vencimento: Timestamp
14
- cancelada_em: Timestamp
15
- }
16
- }
17
-
18
- task criar_assinatura {
19
- input {
20
- cliente_id: Id required
21
- plano_id: Id required
22
- token_pagamento: Texto required
23
- }
24
- output {
25
- assinatura: Assinatura
26
- }
27
- rules {
28
- cliente_id deve_ser valido
29
- plano_id deve_ser valido
30
- token_pagamento deve_ser valido
31
- }
32
- effects {
33
- consulta Cliente por cliente_id
34
- consulta Plano por plano_id
35
- consulta gateway_pagamento criticidade = alta
36
- persistencia Assinatura
37
- evento assinatura_criada criticidade = alta
38
- notificacao cliente confirmacao_assinatura criticidade = media
39
- auditoria criacao_assinatura criticidade = alta
40
- }
41
- state ciclo_assinatura {
42
- transitions {
43
- PENDENTE -> ATIVA
44
- }
45
- }
46
- guarantees {
47
- assinatura existe
48
- assinatura.status == ATIVA
49
- }
50
- error {
51
- pagamento_recusado: "Pagamento inicial recusado."
52
- cliente_ja_assina: "Cliente ja possui assinatura ativa."
53
- plano_invalido: "Plano nao disponivel para assinatura."
54
- }
55
- tests {
56
- caso "cria assinatura pro" {
57
- given { cliente_id: "cli_1" plano_id: "plano_pro" token_pagamento: "tok_ok" }
58
- expect { sucesso: verdadeiro }
59
- }
60
- }
61
- }
62
-
63
- task cancelar_assinatura {
64
- input {
65
- assinatura_id: Id required
66
- motivo: Texto required
67
- imediato: Booleano
68
- }
69
- output {
70
- protocolo: Id
71
- }
72
- rules {
73
- assinatura_id deve_ser valido
74
- assinatura.status == ATIVA
75
- motivo deve_ser preenchido
76
- }
77
- effects {
78
- persistencia Assinatura
79
- consulta gateway_pagamento criticidade = alta
80
- evento assinatura_cancelada criticidade = alta
81
- notificacao cliente confirmacao_cancelamento criticidade = media
82
- auditoria cancelamento_assinatura criticidade = alta
83
- }
84
- state ciclo_assinatura {
85
- transitions {
86
- ATIVA -> CANCELADA
87
- ATIVA -> PENDENTE_CANCELAMENTO
88
- }
89
- }
90
- guarantees {
91
- protocolo existe
92
- }
93
- error {
94
- assinatura_ja_cancelada: "Assinatura ja foi cancelada."
95
- }
96
- tests {
97
- caso "cancela assinatura ativa" {
98
- given { assinatura_id: "asn_1" motivo: "Nao preciso mais" imediato: falso }
99
- expect { sucesso: verdadeiro }
100
- }
101
- }
102
- }
103
-
104
- task renovar_assinatura {
105
- input {
106
- assinatura_id: Id required
107
- }
108
- output {
109
- protocolo_cobranca: Id
110
- }
111
- rules {
112
- assinatura_id deve_ser valido
113
- assinatura.status == ATIVA
114
- assinatura.proximo_vencimento <= hoje
115
- }
116
- effects {
117
- consulta gateway_pagamento criticidade = alta
118
- persistencia Assinatura
119
- evento assinatura_renovada criticidade = media
120
- auditoria renovacao_assinatura criticidade = alta
121
- }
122
- guarantees {
123
- protocolo_cobranca existe
124
- }
125
- error {
126
- pagamento_recusado: "Cobranca de renovacao recusada — assinatura sera suspensa."
127
- assinatura_cancelada: "Nao e possivel renovar assinatura cancelada."
128
- }
129
- tests {
130
- caso "renova assinatura no vencimento" {
131
- given { assinatura_id: "asn_1" }
132
- expect { sucesso: verdadeiro }
133
- }
134
- }
135
- }
136
- }
1
+ module exemplos.assinatura {
2
+ docs {
3
+ resumo: "Gestao de assinaturas recorrentes com upgrade, downgrade e cancelamento."
4
+ }
5
+
6
+ entity Assinatura {
7
+ fields {
8
+ id: Id
9
+ cliente_id: Id
10
+ plano_id: Id
11
+ status: Texto
12
+ inicio_em: Timestamp
13
+ proximo_vencimento: Timestamp
14
+ cancelada_em: Timestamp
15
+ }
16
+ }
17
+
18
+ task criar_assinatura {
19
+ input {
20
+ cliente_id: Id required
21
+ plano_id: Id required
22
+ token_pagamento: Texto required
23
+ }
24
+ output {
25
+ assinatura: Assinatura
26
+ }
27
+ rules {
28
+ cliente_id deve_ser valido
29
+ plano_id deve_ser valido
30
+ token_pagamento deve_ser valido
31
+ }
32
+ effects {
33
+ consulta Cliente por cliente_id
34
+ consulta Plano por plano_id
35
+ consulta gateway_pagamento criticidade = alta
36
+ persistencia Assinatura
37
+ evento assinatura_criada criticidade = alta
38
+ notificacao cliente confirmacao_assinatura criticidade = media
39
+ auditoria criacao_assinatura criticidade = alta
40
+ }
41
+ state ciclo_assinatura {
42
+ transitions {
43
+ PENDENTE -> ATIVA
44
+ }
45
+ }
46
+ guarantees {
47
+ assinatura existe
48
+ assinatura.status == ATIVA
49
+ }
50
+ error {
51
+ pagamento_recusado: "Pagamento inicial recusado."
52
+ cliente_ja_assina: "Cliente ja possui assinatura ativa."
53
+ plano_invalido: "Plano nao disponivel para assinatura."
54
+ }
55
+ tests {
56
+ caso "cria assinatura pro" {
57
+ given { cliente_id: "cli_1" plano_id: "plano_pro" token_pagamento: "tok_ok" }
58
+ expect { sucesso: verdadeiro }
59
+ }
60
+ }
61
+ }
62
+
63
+ task cancelar_assinatura {
64
+ input {
65
+ assinatura_id: Id required
66
+ motivo: Texto required
67
+ imediato: Booleano
68
+ }
69
+ output {
70
+ protocolo: Id
71
+ }
72
+ rules {
73
+ assinatura_id deve_ser valido
74
+ motivo deve_ser preenchido
75
+ }
76
+ effects {
77
+ persistencia Assinatura
78
+ consulta gateway_pagamento criticidade = alta
79
+ evento assinatura_cancelada criticidade = alta
80
+ notificacao cliente confirmacao_cancelamento criticidade = media
81
+ auditoria cancelamento_assinatura criticidade = alta
82
+ }
83
+ state ciclo_assinatura {
84
+ transitions {
85
+ ATIVA -> CANCELADA
86
+ ATIVA -> PENDENTE_CANCELAMENTO
87
+ }
88
+ }
89
+ guarantees {
90
+ protocolo existe
91
+ }
92
+ error {
93
+ assinatura_ja_cancelada: "Assinatura ja foi cancelada."
94
+ }
95
+ tests {
96
+ caso "cancela assinatura ativa" {
97
+ given { assinatura_id: "asn_1" motivo: "Nao preciso mais" imediato: falso }
98
+ expect { sucesso: verdadeiro }
99
+ }
100
+ }
101
+ }
102
+
103
+ task renovar_assinatura {
104
+ input {
105
+ assinatura_id: Id required
106
+ }
107
+ output {
108
+ protocolo_cobranca: Id
109
+ }
110
+ rules {
111
+ assinatura_id deve_ser valido
112
+ }
113
+ effects {
114
+ consulta gateway_pagamento criticidade = alta
115
+ persistencia Assinatura
116
+ evento assinatura_renovada criticidade = media
117
+ auditoria renovacao_assinatura criticidade = alta
118
+ }
119
+ guarantees {
120
+ protocolo_cobranca existe
121
+ }
122
+ error {
123
+ pagamento_recusado: "Cobranca de renovacao recusada — assinatura sera suspensa."
124
+ assinatura_cancelada: "Nao e possivel renovar assinatura cancelada."
125
+ }
126
+ tests {
127
+ caso "renova assinatura no vencimento" {
128
+ given { assinatura_id: "asn_1" }
129
+ expect { sucesso: verdadeiro }
130
+ }
131
+ }
132
+ }
133
+ }
@@ -1,88 +1,89 @@
1
- module exemplos.auditoria {
2
- docs {
3
- resumo: "Registro imutavel de acoes criticas com rastreabilidade completa."
4
- }
5
-
6
- entity RegistroAuditoria {
7
- fields {
8
- id: Id
9
- ator_id: Id
10
- ator_tipo: Texto
11
- acao: Texto
12
- recurso: Texto
13
- recurso_id: Id
14
- dados_antes: Objeto
15
- dados_depois: Objeto
16
- ip_origem: Texto
17
- timestamp: Timestamp
18
- contexto: Objeto
19
- }
20
- }
21
-
22
- task registrar_acao {
23
- input {
24
- ator_id: Id required
25
- acao: Texto required
26
- recurso: Texto required
27
- recurso_id: Id required
28
- dados_antes: Objeto
29
- dados_depois: Objeto
30
- ip_origem: Texto
31
- }
32
- output {
33
- auditoria_id: Id
34
- }
35
- rules {
36
- acao deve_ser preenchida
37
- recurso deve_ser preenchido
38
- ator_id deve_ser valido
39
- }
40
- effects {
41
- persistencia RegistroAuditoria criticidade = alta
42
- }
43
- guarantees {
44
- auditoria_id existe
45
- RegistroAuditoria.imutavel == verdadeiro
46
- }
47
- error {
48
- falha_persistencia: "Nao foi possivel registrar a auditoria — operacao bloqueada."
49
- }
50
- tests {
51
- caso "registra acao critica" {
52
- given { ator_id: "usr_1" acao: "deletar_usuario" recurso: "Usuario" recurso_id: "usr_2" }
53
- expect { sucesso: verdadeiro }
54
- }
55
- }
56
- }
57
-
58
- task consultar_historico {
59
- input {
60
- recurso: Texto required
61
- recurso_id: Id required
62
- data_inicio: Data
63
- data_fim: Data
64
- }
65
- output {
66
- registros: Lista
67
- total: Inteiro
68
- }
69
- rules {
70
- recurso deve_ser preenchido
71
- recurso_id deve_ser valido
72
- }
73
- effects {
74
- consulta RegistroAuditoria por recurso e recurso_id
75
- auditoria consulta_historico
76
- }
77
- guarantees {
78
- registros existe
79
- total >= 0
80
- }
81
- tests {
82
- caso "consulta historico de usuario" {
83
- given { recurso: "Usuario" recurso_id: "usr_1" }
84
- expect { sucesso: verdadeiro }
85
- }
86
- }
87
- }
88
- }
1
+ module exemplos.auditoria {
2
+ docs {
3
+ resumo: "Registro imutavel de acoes criticas com rastreabilidade completa."
4
+ }
5
+
6
+ entity RegistroAuditoria {
7
+ fields {
8
+ id: Id
9
+ ator_id: Id
10
+ ator_tipo: Texto
11
+ acao: Texto
12
+ recurso: Texto
13
+ recurso_id: Id
14
+ dados_antes: Objeto
15
+ dados_depois: Objeto
16
+ ip_origem: Texto
17
+ timestamp: Timestamp
18
+ contexto: Objeto
19
+ }
20
+ }
21
+
22
+ task registrar_acao {
23
+ input {
24
+ ator_id: Id required
25
+ acao: Texto required
26
+ recurso: Texto required
27
+ recurso_id: Id required
28
+ dados_antes: Objeto
29
+ dados_depois: Objeto
30
+ ip_origem: Texto
31
+ }
32
+ output {
33
+ auditoria_id: Id
34
+ imutavel: Booleano
35
+ }
36
+ rules {
37
+ acao deve_ser preenchida
38
+ recurso deve_ser preenchido
39
+ ator_id deve_ser valido
40
+ }
41
+ effects {
42
+ persistencia RegistroAuditoria criticidade = alta
43
+ }
44
+ guarantees {
45
+ auditoria_id existe
46
+ imutavel == verdadeiro
47
+ }
48
+ error {
49
+ falha_persistencia: "Nao foi possivel registrar a auditoria — operacao bloqueada."
50
+ }
51
+ tests {
52
+ caso "registra acao critica" {
53
+ given { ator_id: "usr_1" acao: "deletar_usuario" recurso: "Usuario" recurso_id: "usr_2" }
54
+ expect { sucesso: verdadeiro }
55
+ }
56
+ }
57
+ }
58
+
59
+ task consultar_historico {
60
+ input {
61
+ recurso: Texto required
62
+ recurso_id: Id required
63
+ data_inicio: Data
64
+ data_fim: Data
65
+ }
66
+ output {
67
+ registros: Lista
68
+ total: Inteiro
69
+ }
70
+ rules {
71
+ recurso deve_ser preenchido
72
+ recurso_id deve_ser valido
73
+ }
74
+ effects {
75
+ consulta RegistroAuditoria por recurso e recurso_id
76
+ auditoria consulta_historico
77
+ }
78
+ guarantees {
79
+ registros existe
80
+ total >= 0
81
+ }
82
+ tests {
83
+ caso "consulta historico de usuario" {
84
+ given { recurso: "Usuario" recurso_id: "usr_1" }
85
+ expect { sucesso: verdadeiro }
86
+ }
87
+ }
88
+ }
89
+ }