enlumen 0.2.0__tar.gz

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 (153) hide show
  1. enlumen-0.2.0/.gitignore +45 -0
  2. enlumen-0.2.0/CONTRIBUTING.md +285 -0
  3. enlumen-0.2.0/LICENSE +21 -0
  4. enlumen-0.2.0/LUMEN_SPEC.md +767 -0
  5. enlumen-0.2.0/MANIFESTO.md +305 -0
  6. enlumen-0.2.0/PKG-INFO +412 -0
  7. enlumen-0.2.0/README.md +376 -0
  8. enlumen-0.2.0/docs/CAPABILITY_AWARENESS_MANIFESTO.md +354 -0
  9. enlumen-0.2.0/docs/LUMEN_INTEROPERABILITY_PRINCIPLE.md +57 -0
  10. enlumen-0.2.0/docs/PLAN_REMOTE_CATALOGS_AND_PYPI.md +241 -0
  11. enlumen-0.2.0/docs/REDESIGN_PLAN.md +324 -0
  12. enlumen-0.2.0/logo.png +0 -0
  13. enlumen-0.2.0/lumen/__init__.py +3 -0
  14. enlumen-0.2.0/lumen/catalog/index.yaml +208 -0
  15. enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/flows/debug.yaml +20 -0
  16. enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/flows/onboarding.yaml +23 -0
  17. enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/module.yaml +24 -0
  18. enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/personality.yaml +24 -0
  19. enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/onboarding.yaml +24 -0
  20. enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/planning.yaml +20 -0
  21. enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/pomodoro.yaml +21 -0
  22. enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/module.yaml +23 -0
  23. enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/personality.yaml +22 -0
  24. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/booking.yaml +33 -0
  25. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/cancel.yaml +19 -0
  26. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/onboarding.yaml +23 -0
  27. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/pricing.yaml +10 -0
  28. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/module.yaml +20 -0
  29. enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/personality.yaml +23 -0
  30. enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/flows/onboarding.yaml +17 -0
  31. enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/module.yaml +21 -0
  32. enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/personality.yaml +25 -0
  33. enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/menu.yaml +12 -0
  34. enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/onboarding.yaml +26 -0
  35. enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/reservation.yaml +32 -0
  36. enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/module.yaml +20 -0
  37. enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/personality.yaml +24 -0
  38. enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/onboarding.yaml +23 -0
  39. enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/research.yaml +22 -0
  40. enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/review.yaml +22 -0
  41. enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/module.yaml +26 -0
  42. enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/personality.yaml +24 -0
  43. enlumen-0.2.0/lumen/catalog/mcp_overrides/README.md +49 -0
  44. enlumen-0.2.0/lumen/catalog/mcp_overrides/anthropic.yaml +11 -0
  45. enlumen-0.2.0/lumen/catalog/mcp_overrides/filesystem.yaml +8 -0
  46. enlumen-0.2.0/lumen/catalog/mcp_overrides/github.yaml +11 -0
  47. enlumen-0.2.0/lumen/catalog/mcp_overrides/openai.yaml +11 -0
  48. enlumen-0.2.0/lumen/catalog/mcp_overrides/slack.yaml +11 -0
  49. enlumen-0.2.0/lumen/catalog/modules/docs-helper/SKILL.md +7 -0
  50. enlumen-0.2.0/lumen/catalog/modules/docs-helper/module.yaml +16 -0
  51. enlumen-0.2.0/lumen/catalog/modules/file-manager/SKILL.md +41 -0
  52. enlumen-0.2.0/lumen/catalog/modules/file-manager/manifest.yaml +12 -0
  53. enlumen-0.2.0/lumen/catalog/modules/scheduler/SKILL.md +46 -0
  54. enlumen-0.2.0/lumen/catalog/modules/scheduler/manifest.yaml +14 -0
  55. enlumen-0.2.0/lumen/catalog/modules/web-search-provider/SKILL.md +37 -0
  56. enlumen-0.2.0/lumen/catalog/modules/web-search-provider/manifest.yaml +11 -0
  57. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/connector.py +381 -0
  58. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/module.yaml +23 -0
  59. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/x-lumen.yaml +7 -0
  60. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/connector.py +537 -0
  61. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/module.yaml +60 -0
  62. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/x-lumen.yaml +7 -0
  63. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/README.md +24 -0
  64. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/SKILL.md +16 -0
  65. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/connector.py +314 -0
  66. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/module.yaml +30 -0
  67. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/x-lumen.yaml +7 -0
  68. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/allowlist.js +75 -0
  69. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/bridge.js +576 -0
  70. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/connector.py +552 -0
  71. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/module.yaml +20 -0
  72. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/package.json +16 -0
  73. enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/x-lumen.yaml +6 -0
  74. enlumen-0.2.0/lumen/channels/__init__.py +1 -0
  75. enlumen-0.2.0/lumen/channels/static/logo.png +0 -0
  76. enlumen-0.2.0/lumen/channels/templates/_partials/animated_eye.html +276 -0
  77. enlumen-0.2.0/lumen/channels/templates/_partials/tokens.html +98 -0
  78. enlumen-0.2.0/lumen/channels/templates/awakening.html +244 -0
  79. enlumen-0.2.0/lumen/channels/templates/dashboard.html +1930 -0
  80. enlumen-0.2.0/lumen/channels/templates/login.html +98 -0
  81. enlumen-0.2.0/lumen/channels/templates/owner_setup.html +120 -0
  82. enlumen-0.2.0/lumen/channels/templates/setup.html +732 -0
  83. enlumen-0.2.0/lumen/channels/templates/setup_gate.html +98 -0
  84. enlumen-0.2.0/lumen/channels/web.py +2196 -0
  85. enlumen-0.2.0/lumen/cli/__init__.py +1 -0
  86. enlumen-0.2.0/lumen/cli/doctor.py +191 -0
  87. enlumen-0.2.0/lumen/cli/main.py +383 -0
  88. enlumen-0.2.0/lumen/connectors/built-in.yaml +24 -0
  89. enlumen-0.2.0/lumen/core/__init__.py +1 -0
  90. enlumen-0.2.0/lumen/core/artifact_setup.py +434 -0
  91. enlumen-0.2.0/lumen/core/awareness.py +177 -0
  92. enlumen-0.2.0/lumen/core/brain.py +1533 -0
  93. enlumen-0.2.0/lumen/core/capability_consciousness.py +94 -0
  94. enlumen-0.2.0/lumen/core/catalog.py +174 -0
  95. enlumen-0.2.0/lumen/core/cerebellum.py +715 -0
  96. enlumen-0.2.0/lumen/core/connectors.py +212 -0
  97. enlumen-0.2.0/lumen/core/consciousness.py +56 -0
  98. enlumen-0.2.0/lumen/core/consciousness.yaml +20 -0
  99. enlumen-0.2.0/lumen/core/discovery.py +362 -0
  100. enlumen-0.2.0/lumen/core/events.py +153 -0
  101. enlumen-0.2.0/lumen/core/handlers.py +266 -0
  102. enlumen-0.2.0/lumen/core/inbox.py +139 -0
  103. enlumen-0.2.0/lumen/core/installer.py +461 -0
  104. enlumen-0.2.0/lumen/core/interoperability.py +151 -0
  105. enlumen-0.2.0/lumen/core/marketplace.py +941 -0
  106. enlumen-0.2.0/lumen/core/mcp.py +342 -0
  107. enlumen-0.2.0/lumen/core/memory.py +169 -0
  108. enlumen-0.2.0/lumen/core/model_tiers.py +78 -0
  109. enlumen-0.2.0/lumen/core/module_manifest.py +50 -0
  110. enlumen-0.2.0/lumen/core/module_runtime.py +404 -0
  111. enlumen-0.2.0/lumen/core/module_setup.py +626 -0
  112. enlumen-0.2.0/lumen/core/personality.py +75 -0
  113. enlumen-0.2.0/lumen/core/registry.py +412 -0
  114. enlumen-0.2.0/lumen/core/runtime.py +347 -0
  115. enlumen-0.2.0/lumen/core/secrets_store.py +119 -0
  116. enlumen-0.2.0/lumen/core/session.py +97 -0
  117. enlumen-0.2.0/lumen/core/watchers.py +185 -0
  118. enlumen-0.2.0/lumen/locales/en/flows/create-note.yaml +21 -0
  119. enlumen-0.2.0/lumen/locales/en/flows/create-task.yaml +26 -0
  120. enlumen-0.2.0/lumen/locales/en/flows/search.yaml +16 -0
  121. enlumen-0.2.0/lumen/locales/en/personality.yaml +20 -0
  122. enlumen-0.2.0/lumen/locales/en/ui.yaml +55 -0
  123. enlumen-0.2.0/lumen/locales/es/flows/create-note.yaml +21 -0
  124. enlumen-0.2.0/lumen/locales/es/flows/create-task.yaml +26 -0
  125. enlumen-0.2.0/lumen/locales/es/flows/search.yaml +16 -0
  126. enlumen-0.2.0/lumen/locales/es/personality.yaml +20 -0
  127. enlumen-0.2.0/lumen/locales/es/ui.yaml +55 -0
  128. enlumen-0.2.0/lumen/modules/_template/module.yaml +20 -0
  129. enlumen-0.2.0/lumen/modules/scheduler/SKILL.md +46 -0
  130. enlumen-0.2.0/lumen/modules/scheduler/manifest.yaml +14 -0
  131. enlumen-0.2.0/lumen/modules/web-search-provider/SKILL.md +37 -0
  132. enlumen-0.2.0/lumen/modules/web-search-provider/manifest.yaml +11 -0
  133. enlumen-0.2.0/lumen/skills/text-responder/SKILL.md +9 -0
  134. enlumen-0.2.0/pyproject.toml +82 -0
  135. enlumen-0.2.0/tests/conftest.py +7 -0
  136. enlumen-0.2.0/tests/fixtures/clawhub_search.json +28 -0
  137. enlumen-0.2.0/tests/fixtures/fake_mcp_server.py +84 -0
  138. enlumen-0.2.0/tests/fixtures/mcp_registry.json +91 -0
  139. enlumen-0.2.0/tests/test_artifact_setup.py +532 -0
  140. enlumen-0.2.0/tests/test_awareness.py +251 -0
  141. enlumen-0.2.0/tests/test_brain.py +1819 -0
  142. enlumen-0.2.0/tests/test_cerebellum.py +228 -0
  143. enlumen-0.2.0/tests/test_install_bridge.py +152 -0
  144. enlumen-0.2.0/tests/test_marketplace.py +426 -0
  145. enlumen-0.2.0/tests/test_mcp_runtime.py +473 -0
  146. enlumen-0.2.0/tests/test_memory.py +344 -0
  147. enlumen-0.2.0/tests/test_module_manifests.py +414 -0
  148. enlumen-0.2.0/tests/test_module_setup.py +369 -0
  149. enlumen-0.2.0/tests/test_openrouter_oauth.py +784 -0
  150. enlumen-0.2.0/tests/test_personality_swap.py +245 -0
  151. enlumen-0.2.0/tests/test_remote_catalogs.py +242 -0
  152. enlumen-0.2.0/tests/test_telegram_module.py +171 -0
  153. enlumen-0.2.0/tests/test_web_surfaces.py +883 -0
@@ -0,0 +1,45 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ dist/
6
+ build/
7
+ .eggs/
8
+
9
+ # Virtual environments
10
+ .venv/
11
+ venv/
12
+ env/
13
+
14
+ # IDE
15
+ .vscode/
16
+ .idea/
17
+ *.swp
18
+ *.swo
19
+
20
+ # Neo runtime data
21
+ data/
22
+ *.db
23
+
24
+ # OS
25
+ .DS_Store
26
+ Thumbs.db
27
+
28
+ # Environment
29
+ .env
30
+ .env.local
31
+
32
+ # User config (contains API keys)
33
+ # ~/.neo/ is the user config dir, not in the repo
34
+ .claude/
35
+ neo/
36
+
37
+ # Agent scratch directories
38
+ .codex_clone/
39
+
40
+ # User-installed modules (the installer copies catalog modules into lumen/modules/
41
+ # at runtime). Only built-in modules (_template, scheduler) are tracked.
42
+ lumen/modules/*
43
+ !lumen/modules/_template/
44
+ !lumen/modules/scheduler/
45
+ !lumen/modules/.gitkeep
@@ -0,0 +1,285 @@
1
+ # Contributing to Lumen
2
+
3
+ ## English
4
+
5
+ ### What is Lumen?
6
+
7
+ Lumen is an open-source AI agent engine — modular, extensible, no limits. Think of it like **WordPress for AI assistants**: you install modules to add capabilities, and each module transforms what Lumen can do.
8
+
9
+ ### What is an x-lumen module?
10
+
11
+ An x-lumen module is a self-contained package that adds capabilities to Lumen. Like a WordPress plugin, it has:
12
+
13
+ - **`module.yaml`** — metadata (name, description, what it provides, what it needs)
14
+ - **`personality.yaml`** — (optional) transforms Lumen's identity and tone
15
+ - **`flows/`** — (optional) conversation flows (booking, onboarding, etc.)
16
+ - **`SKILL.md`** — (optional) detailed instructions for a specific capability
17
+
18
+ There are two main types:
19
+
20
+ | Type | What it does | Example |
21
+ |------|-------------|---------|
22
+ | **Personality** | Changes WHO Lumen is (tone, rules, identity) | `x-lumen-peluqueria` turns Lumen into a barbershop assistant |
23
+ | **Tool/Skill** | Adds WHAT Lumen can do (new capabilities) | `scheduler` adds reminders and recurring tasks |
24
+
25
+ ### Tutorial: Your first module in 10 minutes
26
+
27
+ Let's create `x-lumen-hello` — a simple personality module that makes Lumen greet people enthusiastically.
28
+
29
+ #### 1. Create the module structure
30
+
31
+ ```
32
+ lumen/catalog/kits/x-lumen-hello/
33
+ module.yaml
34
+ personality.yaml
35
+ ```
36
+
37
+ #### 2. Write `module.yaml`
38
+
39
+ ```yaml
40
+ name: x-lumen-hello
41
+ display_name: "Hello Friend"
42
+ description: "A friendly greeter. Lumen becomes an enthusiastic welcomer."
43
+ version: 1.0.0
44
+ author: "Your Name"
45
+ price: free
46
+ min_capability: tier-1
47
+ tags: [x-lumen, personality]
48
+ personality: personality.yaml
49
+ ```
50
+
51
+ Key fields:
52
+ - `name` — must start with `x-lumen-` for personality modules
53
+ - `tags` — include `x-lumen` and `personality` for personality modules
54
+ - `min_capability` — `tier-1` works with free models, `tier-2` for standard, `tier-3` for advanced reasoning
55
+ - `personality` — points to the personality YAML file
56
+
57
+ #### 3. Write `personality.yaml`
58
+
59
+ ```yaml
60
+ identity:
61
+ name: "Hello Friend"
62
+ role: "Enthusiastic greeter"
63
+ description: "I greet everyone with enthusiasm and make them feel welcome."
64
+
65
+ tone:
66
+ style: "enthusiastic, warm, cheerful"
67
+ emojis: generous
68
+ formality: casual
69
+
70
+ rules:
71
+ - "Always greet the user by name if known"
72
+ - "Use exclamation marks generously"
73
+ - "Find something positive about everything"
74
+ ```
75
+
76
+ #### 4. Test it locally
77
+
78
+ 1. Add your module to the catalog index:
79
+ ```yaml
80
+ # lumen/catalog/index.yaml — add under modules:
81
+ - name: x-lumen-hello
82
+ display_name: "Hello Friend"
83
+ description: "A friendly greeter."
84
+ version: "1.0.0"
85
+ author: "Your Name"
86
+ price: free
87
+ tags: [x-lumen, personality]
88
+ path: kits/x-lumen-hello
89
+ ```
90
+
91
+ 2. Start Lumen:
92
+ ```bash
93
+ lumen setup # First time only
94
+ lumen dev # Starts the web dashboard
95
+ ```
96
+
97
+ 3. Open the dashboard, go to **Modules**, find "Hello Friend", and install it.
98
+
99
+ 4. Chat with Lumen and verify the personality change took effect.
100
+
101
+ #### 5. Adding a skill (optional)
102
+
103
+ If your module also adds a capability, add a `SKILL.md`:
104
+
105
+ ```markdown
106
+ ---
107
+ name: hello-greet
108
+ description: "Greet users in creative ways"
109
+ provides: [greeting]
110
+ ---
111
+ # Hello Greet
112
+
113
+ When a user asks for a greeting:
114
+ 1. Ask their name if not known
115
+ 2. Generate a creative, enthusiastic greeting
116
+ 3. Include a fun fact or compliment
117
+ ```
118
+
119
+ ### Submitting a PR
120
+
121
+ 1. Fork the repository
122
+ 2. Create a branch: `feat/my-module-name`
123
+ 3. Add your module under `lumen/catalog/kits/`
124
+ 4. Update `lumen/catalog/index.yaml` with your module entry
125
+ 5. If adding core functionality, add tests under `tests/`
126
+ 6. Open a PR with a clear description of what the module does
127
+
128
+ **Module review checklist:**
129
+ - [ ] `module.yaml` is valid YAML with all required fields
130
+ - [ ] `personality.yaml` (if present) has identity, tone, and rules
131
+ - [ ] Tags include `x-lumen` for personality modules
132
+ - [ ] `min_capability` is set appropriately (tier-1 unless you need advanced reasoning)
133
+ - [ ] No hardcoded secrets or API keys
134
+ - [ ] Works with the web dashboard (install, activate, uninstall)
135
+
136
+ ### Real examples
137
+
138
+ Check the existing kits for reference:
139
+
140
+ - **Personalities**: `lumen/catalog/kits/x-lumen-personal/` — general assistant, `x-lumen-peluqueria/` — barbershop vertical
141
+ - **Skills**: `lumen/modules/scheduler/` — reminder system with SKILL.md
142
+ - **Template**: `lumen/modules/_template/module.yaml` — bare minimum to start
143
+
144
+ ---
145
+
146
+ ## Espanol
147
+
148
+ ### Que es Lumen?
149
+
150
+ Lumen es un motor de agentes de IA open-source — modular, extensible, sin limites. Pensalo como **WordPress para asistentes de IA**: instalas modulos para agregar capacidades, y cada modulo transforma lo que Lumen puede hacer.
151
+
152
+ ### Que es un modulo x-lumen?
153
+
154
+ Un modulo x-lumen es un paquete autocontenido que agrega capacidades a Lumen. Como un plugin de WordPress, tiene:
155
+
156
+ - **`module.yaml`** — metadatos (nombre, descripcion, que provee, que necesita)
157
+ - **`personality.yaml`** — (opcional) transforma la identidad y tono de Lumen
158
+ - **`flows/`** — (opcional) flujos de conversacion (reservas, onboarding, etc.)
159
+ - **`SKILL.md`** — (opcional) instrucciones detalladas para una capacidad especifica
160
+
161
+ Hay dos tipos principales:
162
+
163
+ | Tipo | Que hace | Ejemplo |
164
+ |------|----------|---------|
165
+ | **Personalidad** | Cambia QUIEN es Lumen (tono, reglas, identidad) | `x-lumen-peluqueria` convierte a Lumen en asistente de peluqueria |
166
+ | **Herramienta/Skill** | Agrega QUE puede hacer Lumen (nuevas capacidades) | `scheduler` agrega recordatorios y tareas recurrentes |
167
+
168
+ ### Tutorial: Tu primer modulo en 10 minutos
169
+
170
+ Vamos a crear `x-lumen-hello` — un modulo de personalidad simple que hace que Lumen salude con entusiasmo.
171
+
172
+ #### 1. Crear la estructura del modulo
173
+
174
+ ```
175
+ lumen/catalog/kits/x-lumen-hello/
176
+ module.yaml
177
+ personality.yaml
178
+ ```
179
+
180
+ #### 2. Escribir `module.yaml`
181
+
182
+ ```yaml
183
+ name: x-lumen-hello
184
+ display_name: "Hello Friend"
185
+ description: "Un saludador amigable. Lumen se convierte en un recibidor entusiasta."
186
+ version: 1.0.0
187
+ author: "Tu Nombre"
188
+ price: free
189
+ min_capability: tier-1
190
+ tags: [x-lumen, personality]
191
+ personality: personality.yaml
192
+ ```
193
+
194
+ Campos clave:
195
+ - `name` — debe empezar con `x-lumen-` para modulos de personalidad
196
+ - `tags` — incluir `x-lumen` y `personality` para modulos de personalidad
197
+ - `min_capability` — `tier-1` para modelos gratuitos, `tier-2` para estandar, `tier-3` para razonamiento avanzado
198
+ - `personality` — apunta al archivo YAML de personalidad
199
+
200
+ #### 3. Escribir `personality.yaml`
201
+
202
+ ```yaml
203
+ identity:
204
+ name: "Hello Friend"
205
+ role: "Saludador entusiasta"
206
+ description: "Saludo a todos con entusiasmo y los hago sentir bienvenidos."
207
+
208
+ tone:
209
+ style: "entusiasta, calido, alegre"
210
+ emojis: generous
211
+ formality: casual
212
+
213
+ rules:
214
+ - "Siempre saludo al usuario por nombre si lo conozco"
215
+ - "Uso signos de exclamacion generosamente"
216
+ - "Encuentro algo positivo en todo"
217
+ ```
218
+
219
+ #### 4. Probarlo localmente
220
+
221
+ 1. Agrega tu modulo al indice del catalogo:
222
+ ```yaml
223
+ # lumen/catalog/index.yaml — agregar bajo modules:
224
+ - name: x-lumen-hello
225
+ display_name: "Hello Friend"
226
+ description: "Un saludador amigable."
227
+ version: "1.0.0"
228
+ author: "Tu Nombre"
229
+ price: free
230
+ tags: [x-lumen, personality]
231
+ path: kits/x-lumen-hello
232
+ ```
233
+
234
+ 2. Inicia Lumen:
235
+ ```bash
236
+ lumen setup # Solo la primera vez
237
+ lumen dev # Inicia el dashboard web
238
+ ```
239
+
240
+ 3. Abri el dashboard, anda a **Modulos**, busca "Hello Friend", e instalalo.
241
+
242
+ 4. Chatea con Lumen y verifica que el cambio de personalidad tuvo efecto.
243
+
244
+ #### 5. Agregar un skill (opcional)
245
+
246
+ Si tu modulo tambien agrega una capacidad, agrega un `SKILL.md`:
247
+
248
+ ```markdown
249
+ ---
250
+ name: hello-greet
251
+ description: "Saludar usuarios de formas creativas"
252
+ provides: [greeting]
253
+ ---
254
+ # Hello Greet
255
+
256
+ Cuando un usuario pide un saludo:
257
+ 1. Preguntar su nombre si no lo conoce
258
+ 2. Generar un saludo creativo y entusiasta
259
+ 3. Incluir un dato curioso o cumplido
260
+ ```
261
+
262
+ ### Como proponer un PR
263
+
264
+ 1. Hace fork del repositorio
265
+ 2. Crea una rama: `feat/mi-nombre-de-modulo`
266
+ 3. Agrega tu modulo bajo `lumen/catalog/kits/`
267
+ 4. Actualiza `lumen/catalog/index.yaml` con la entrada de tu modulo
268
+ 5. Si agregas funcionalidad core, agrega tests bajo `tests/`
269
+ 6. Abri un PR con una descripcion clara de lo que hace el modulo
270
+
271
+ **Checklist de revision del modulo:**
272
+ - [ ] `module.yaml` es YAML valido con todos los campos requeridos
273
+ - [ ] `personality.yaml` (si existe) tiene identity, tone y rules
274
+ - [ ] Tags incluyen `x-lumen` para modulos de personalidad
275
+ - [ ] `min_capability` esta configurado apropiadamente (tier-1 a menos que necesites razonamiento avanzado)
276
+ - [ ] Sin secrets o API keys hardcodeados
277
+ - [ ] Funciona con el dashboard web (instalar, activar, desinstalar)
278
+
279
+ ### Ejemplos reales
280
+
281
+ Mira los kits existentes como referencia:
282
+
283
+ - **Personalidades**: `lumen/catalog/kits/x-lumen-personal/` — asistente general, `x-lumen-peluqueria/` — vertical peluqueria
284
+ - **Skills**: `lumen/modules/scheduler/` — sistema de recordatorios con SKILL.md
285
+ - **Template**: `lumen/modules/_template/module.yaml` — lo minimo para empezar
enlumen-0.2.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Gabo Urrutia
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.