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.
- enlumen-0.2.0/.gitignore +45 -0
- enlumen-0.2.0/CONTRIBUTING.md +285 -0
- enlumen-0.2.0/LICENSE +21 -0
- enlumen-0.2.0/LUMEN_SPEC.md +767 -0
- enlumen-0.2.0/MANIFESTO.md +305 -0
- enlumen-0.2.0/PKG-INFO +412 -0
- enlumen-0.2.0/README.md +376 -0
- enlumen-0.2.0/docs/CAPABILITY_AWARENESS_MANIFESTO.md +354 -0
- enlumen-0.2.0/docs/LUMEN_INTEROPERABILITY_PRINCIPLE.md +57 -0
- enlumen-0.2.0/docs/PLAN_REMOTE_CATALOGS_AND_PYPI.md +241 -0
- enlumen-0.2.0/docs/REDESIGN_PLAN.md +324 -0
- enlumen-0.2.0/logo.png +0 -0
- enlumen-0.2.0/lumen/__init__.py +3 -0
- enlumen-0.2.0/lumen/catalog/index.yaml +208 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/flows/debug.yaml +20 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/flows/onboarding.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/module.yaml +24 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-dev/personality.yaml +24 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/onboarding.yaml +24 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/planning.yaml +20 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/flows/pomodoro.yaml +21 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/module.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-focus/personality.yaml +22 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/booking.yaml +33 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/cancel.yaml +19 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/onboarding.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/flows/pricing.yaml +10 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/module.yaml +20 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-peluqueria/personality.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/flows/onboarding.yaml +17 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/module.yaml +21 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-personal/personality.yaml +25 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/menu.yaml +12 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/onboarding.yaml +26 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/flows/reservation.yaml +32 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/module.yaml +20 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-restaurant/personality.yaml +24 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/onboarding.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/research.yaml +22 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/flows/review.yaml +22 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/module.yaml +26 -0
- enlumen-0.2.0/lumen/catalog/kits/x-lumen-scholar/personality.yaml +24 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/README.md +49 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/anthropic.yaml +11 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/filesystem.yaml +8 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/github.yaml +11 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/openai.yaml +11 -0
- enlumen-0.2.0/lumen/catalog/mcp_overrides/slack.yaml +11 -0
- enlumen-0.2.0/lumen/catalog/modules/docs-helper/SKILL.md +7 -0
- enlumen-0.2.0/lumen/catalog/modules/docs-helper/module.yaml +16 -0
- enlumen-0.2.0/lumen/catalog/modules/file-manager/SKILL.md +41 -0
- enlumen-0.2.0/lumen/catalog/modules/file-manager/manifest.yaml +12 -0
- enlumen-0.2.0/lumen/catalog/modules/scheduler/SKILL.md +46 -0
- enlumen-0.2.0/lumen/catalog/modules/scheduler/manifest.yaml +14 -0
- enlumen-0.2.0/lumen/catalog/modules/web-search-provider/SKILL.md +37 -0
- enlumen-0.2.0/lumen/catalog/modules/web-search-provider/manifest.yaml +11 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/connector.py +381 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/module.yaml +23 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-discord/x-lumen.yaml +7 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/connector.py +537 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/module.yaml +60 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-email/x-lumen.yaml +7 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/README.md +24 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/SKILL.md +16 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/connector.py +314 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/module.yaml +30 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-telegram/x-lumen.yaml +7 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/allowlist.js +75 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/bridge.js +576 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/connector.py +552 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/module.yaml +20 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/package.json +16 -0
- enlumen-0.2.0/lumen/catalog/modules/x-lumen-comunicacion-whatsapp/x-lumen.yaml +6 -0
- enlumen-0.2.0/lumen/channels/__init__.py +1 -0
- enlumen-0.2.0/lumen/channels/static/logo.png +0 -0
- enlumen-0.2.0/lumen/channels/templates/_partials/animated_eye.html +276 -0
- enlumen-0.2.0/lumen/channels/templates/_partials/tokens.html +98 -0
- enlumen-0.2.0/lumen/channels/templates/awakening.html +244 -0
- enlumen-0.2.0/lumen/channels/templates/dashboard.html +1930 -0
- enlumen-0.2.0/lumen/channels/templates/login.html +98 -0
- enlumen-0.2.0/lumen/channels/templates/owner_setup.html +120 -0
- enlumen-0.2.0/lumen/channels/templates/setup.html +732 -0
- enlumen-0.2.0/lumen/channels/templates/setup_gate.html +98 -0
- enlumen-0.2.0/lumen/channels/web.py +2196 -0
- enlumen-0.2.0/lumen/cli/__init__.py +1 -0
- enlumen-0.2.0/lumen/cli/doctor.py +191 -0
- enlumen-0.2.0/lumen/cli/main.py +383 -0
- enlumen-0.2.0/lumen/connectors/built-in.yaml +24 -0
- enlumen-0.2.0/lumen/core/__init__.py +1 -0
- enlumen-0.2.0/lumen/core/artifact_setup.py +434 -0
- enlumen-0.2.0/lumen/core/awareness.py +177 -0
- enlumen-0.2.0/lumen/core/brain.py +1533 -0
- enlumen-0.2.0/lumen/core/capability_consciousness.py +94 -0
- enlumen-0.2.0/lumen/core/catalog.py +174 -0
- enlumen-0.2.0/lumen/core/cerebellum.py +715 -0
- enlumen-0.2.0/lumen/core/connectors.py +212 -0
- enlumen-0.2.0/lumen/core/consciousness.py +56 -0
- enlumen-0.2.0/lumen/core/consciousness.yaml +20 -0
- enlumen-0.2.0/lumen/core/discovery.py +362 -0
- enlumen-0.2.0/lumen/core/events.py +153 -0
- enlumen-0.2.0/lumen/core/handlers.py +266 -0
- enlumen-0.2.0/lumen/core/inbox.py +139 -0
- enlumen-0.2.0/lumen/core/installer.py +461 -0
- enlumen-0.2.0/lumen/core/interoperability.py +151 -0
- enlumen-0.2.0/lumen/core/marketplace.py +941 -0
- enlumen-0.2.0/lumen/core/mcp.py +342 -0
- enlumen-0.2.0/lumen/core/memory.py +169 -0
- enlumen-0.2.0/lumen/core/model_tiers.py +78 -0
- enlumen-0.2.0/lumen/core/module_manifest.py +50 -0
- enlumen-0.2.0/lumen/core/module_runtime.py +404 -0
- enlumen-0.2.0/lumen/core/module_setup.py +626 -0
- enlumen-0.2.0/lumen/core/personality.py +75 -0
- enlumen-0.2.0/lumen/core/registry.py +412 -0
- enlumen-0.2.0/lumen/core/runtime.py +347 -0
- enlumen-0.2.0/lumen/core/secrets_store.py +119 -0
- enlumen-0.2.0/lumen/core/session.py +97 -0
- enlumen-0.2.0/lumen/core/watchers.py +185 -0
- enlumen-0.2.0/lumen/locales/en/flows/create-note.yaml +21 -0
- enlumen-0.2.0/lumen/locales/en/flows/create-task.yaml +26 -0
- enlumen-0.2.0/lumen/locales/en/flows/search.yaml +16 -0
- enlumen-0.2.0/lumen/locales/en/personality.yaml +20 -0
- enlumen-0.2.0/lumen/locales/en/ui.yaml +55 -0
- enlumen-0.2.0/lumen/locales/es/flows/create-note.yaml +21 -0
- enlumen-0.2.0/lumen/locales/es/flows/create-task.yaml +26 -0
- enlumen-0.2.0/lumen/locales/es/flows/search.yaml +16 -0
- enlumen-0.2.0/lumen/locales/es/personality.yaml +20 -0
- enlumen-0.2.0/lumen/locales/es/ui.yaml +55 -0
- enlumen-0.2.0/lumen/modules/_template/module.yaml +20 -0
- enlumen-0.2.0/lumen/modules/scheduler/SKILL.md +46 -0
- enlumen-0.2.0/lumen/modules/scheduler/manifest.yaml +14 -0
- enlumen-0.2.0/lumen/modules/web-search-provider/SKILL.md +37 -0
- enlumen-0.2.0/lumen/modules/web-search-provider/manifest.yaml +11 -0
- enlumen-0.2.0/lumen/skills/text-responder/SKILL.md +9 -0
- enlumen-0.2.0/pyproject.toml +82 -0
- enlumen-0.2.0/tests/conftest.py +7 -0
- enlumen-0.2.0/tests/fixtures/clawhub_search.json +28 -0
- enlumen-0.2.0/tests/fixtures/fake_mcp_server.py +84 -0
- enlumen-0.2.0/tests/fixtures/mcp_registry.json +91 -0
- enlumen-0.2.0/tests/test_artifact_setup.py +532 -0
- enlumen-0.2.0/tests/test_awareness.py +251 -0
- enlumen-0.2.0/tests/test_brain.py +1819 -0
- enlumen-0.2.0/tests/test_cerebellum.py +228 -0
- enlumen-0.2.0/tests/test_install_bridge.py +152 -0
- enlumen-0.2.0/tests/test_marketplace.py +426 -0
- enlumen-0.2.0/tests/test_mcp_runtime.py +473 -0
- enlumen-0.2.0/tests/test_memory.py +344 -0
- enlumen-0.2.0/tests/test_module_manifests.py +414 -0
- enlumen-0.2.0/tests/test_module_setup.py +369 -0
- enlumen-0.2.0/tests/test_openrouter_oauth.py +784 -0
- enlumen-0.2.0/tests/test_personality_swap.py +245 -0
- enlumen-0.2.0/tests/test_remote_catalogs.py +242 -0
- enlumen-0.2.0/tests/test_telegram_module.py +171 -0
- enlumen-0.2.0/tests/test_web_surfaces.py +883 -0
enlumen-0.2.0/.gitignore
ADDED
|
@@ -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.
|