@jossuealcala/madre 1.0.2 → 1.0.3
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.
- package/CHANGELOG.en.md +69 -1
- package/CHANGELOG.md +69 -1
- package/README.en.md +11 -15
- package/README.md +3 -3
- package/bin/madre.cjs +40 -0
- package/bin/madre.mjs +5 -0
- package/docs/REFERENCE.md +29 -3
- package/docs/SDK.md +4 -2
- package/docs/en/REFERENCE.md +29 -3
- package/docs/en/SDK.md +4 -2
- package/docs/training/README.md +28 -1
- package/docs/training/train.sh +5 -1
- package/package.json +3 -3
- package/public/app.js +1626 -151
- package/public/attribution.js +44 -1
- package/public/brands.js +20 -5
- package/public/code-tools.js +143 -0
- package/public/editor.js +20 -4
- package/public/es.js +393 -25
- package/public/hardware.js +50 -0
- package/public/index.html +5 -1
- package/public/macroverso.js +187 -96
- package/public/market-art.js +161 -0
- package/public/market-view.js +529 -0
- package/public/market.js +189 -0
- package/public/neural.js +110 -0
- package/public/nostromo-engine.js +412 -47
- package/public/power.js +100 -0
- package/public/resay.js +5 -0
- package/public/salas-mac.css +98 -14
- package/public/salas-mac.html +9 -1
- package/public/salas-mac.js +307 -30
- package/public/styles.css +838 -61
- package/public/tour.js +48 -6
- package/public/troubleshooting.js +6 -1
- package/public/wallpaper.js +275 -0
- package/src/adapters/cursor.mjs +96 -0
- package/src/adapters/gemini.mjs +10 -3
- package/src/adapters/madre.mjs +2 -1
- package/src/auth-probe.mjs +143 -12
- package/src/bridge/policy.mjs +1 -1
- package/src/capabilities.mjs +9 -0
- package/src/checkpoint.mjs +16 -1
- package/src/credentials.mjs +3 -0
- package/src/dataset.mjs +76 -4
- package/src/enlaces.mjs +208 -2
- package/src/extensions.mjs +11 -3
- package/src/i18n.mjs +16 -0
- package/src/looks.mjs +125 -2
- package/src/market-key.mjs +8 -0
- package/src/market-remote.mjs +239 -0
- package/src/models.mjs +4 -0
- package/src/module-scope.mjs +68 -0
- package/src/modules/ahp.mjs +102 -7
- package/src/modules/bishop-exam.mjs +122 -0
- package/src/modules/bishop.mjs +71 -12
- package/src/modules/enlaces.mjs +87 -6
- package/src/modules/image-studio.mjs +10 -1
- package/src/modules/intents.mjs +3 -1
- package/src/modules/local-models.mjs +124 -0
- package/src/modules/ollama.mjs +12 -3
- package/src/modules/playwright.mjs +73 -15
- package/src/modules/sdk.mjs +61 -9
- package/src/npm-launch.mjs +18 -0
- package/src/ollama.mjs +6 -5
- package/src/outbound.mjs +9 -1
- package/src/ports.mjs +4 -2
- package/src/room/control.mjs +1 -1
- package/src/room/prompt.mjs +13 -2
- package/src/room.mjs +14 -4
- package/src/router.mjs +1 -1
- package/src/runs.mjs +4 -1
- package/src/runtime-detection.mjs +9 -0
- package/src/salas.mjs +26 -0
- package/src/server.mjs +617 -48
- package/src/setup.mjs +1 -1
package/CHANGELOG.en.md
CHANGED
|
@@ -4,7 +4,75 @@ Every published version of `@jossuealcala/madre`. Dates in ISO format.
|
|
|
4
4
|
|
|
5
5
|
A version closes when it is on npm: until then its section is called **Unreleased** and it can keep growing. Each published version has exactly one `vX.Y.Z` tag, one GitHub release and one section here; the patch number can reach two digits (`0.2.10`) before the minor goes up. See `docs/ROADMAP.md` for the criteria on what bumps each number. This is the English translation of [CHANGELOG.md](CHANGELOG.md); the Spanish file is the original.
|
|
6
6
|
|
|
7
|
-
## 1.0.
|
|
7
|
+
## 1.0.4 · Unreleased
|
|
8
|
+
|
|
9
|
+
## 1.0.3 · 2026-10-17
|
|
10
|
+
|
|
11
|
+
- **A code workspace beside the conversation.** The new `CODE` key in the bar opens your files next to the conversation, without leaving it: the project's list with its search, tabs for what you have open and, above the code, the path and the function you are in. ⌘P (Ctrl+P outside macOS) opens any file by its name. Switching tabs never loses what you wrote: the draft stays in its tab, with a dot, until you save or discard it, and the tabs are still there when you come back to the project. In bars you had already arranged, `CODE` shows up next to Agents.
|
|
12
|
+
- **What an agent changed, in its colour.** After a #3 EDIT turn, the lines the agent changed are marked in its colour, and each change comes with three buttons: **Keep**, **Undo** (those lines only; the rest of the turn stays) and **Ask why**, which asks it in the conversation. Above the code, "@claude · 2 changes to review" takes you from one to the next. If you take the whole turn back with UNDO, or rewrite those lines yourself, they stop being marked.
|
|
13
|
+
- **Actions on what you select.** When you ask for a review of some lines, Explain, Improve, Write tests and Fix appear, each with its question ready for the agent.
|
|
14
|
+
- **Side by side.** In Markdown, the rendered document updates as you write; in an HTML page, it reloads when you save. The page needs Preview, and if it is off the button to turn it on is right there.
|
|
15
|
+
- **Gemini connects with your Google AI Studio key, no terminal.** In Settings › Agents, in Connect your agents and in Home, the first thing on Gemini's card is the field to paste your Google AI Studio API key, with the link to get one: MADRE writes it where the Gemini CLI looks for it, readable only by you, and keeps no copy. Below it is the "Google account" button, which opens your browser to pick your account, for the accounts Google still accepts on Gemini CLI: Google refuses free personal accounts (it answers "IneligibleTierError" and asks you to migrate to Antigravity). Before, you had to open a terminal, run `gemini` and type /auth. Everything goes through Google's official CLI and MADRE neither reads nor keeps your session. If you cancel, Gemini is left as it was. Once signed in, every agent shows a single "Sign in again", like Codex; with Claude you pick the account (subscription or Anthropic Console) after the click.
|
|
16
|
+
- **OpenCode connects with GitHub Copilot, no terminal.** OpenCode's card, in Settings › Agents, in Connect your agents and in Home, now has a "GitHub Copilot" button: MADRE runs `opencode auth login -p github-copilot`, picks github.com for you and shows in the room the page (github.com/login/device) and the code you type there, with a button to copy it. Once you authorize it on GitHub, OpenCode is connected to your Copilot subscription (Pro, Pro+, Business or Enterprise). Everything goes through OpenCode's official CLI and MADRE neither reads nor keeps your session. The room only offers providers that allow this kind of access to third-party tools: never a Claude subscription, because Anthropic does not allow it; not ChatGPT or GitLab yet, until OpenAI and GitLab confirm it in writing. Those, and GitHub Enterprise, stay under "Prefer your terminal?" with `opencode auth login`, and the other providers' keys are still pasted in the room.
|
|
17
|
+
- **The terminal, as a second option and never required.** Under each agent, "Prefer your terminal?" unfolds the same step (install or sign in) written as a command, with a button to copy it. MADRE's buttons are still the main way, and the card of an agent that is not installed no longer shows the npm command on its first line.
|
|
18
|
+
- **The Coordinator can learn from your projects.** In Home, every connection the Coordinator reads has a new box, "The Coordinator learns from it", off until you tick it. With it, the Coordinator's training export takes everything that project shares (not just what matches a question), each note under its project's name so it never mixes them. If the project is asleep, the copy from the last time it answered is used, and the panel says where each part came from. Clearing the box or revoking the connection deletes that copy; a model already trained keeps what it learned until you train it again. Also, any project's training export now reads all its conversations, not only the open one.
|
|
19
|
+
- **Turn MADRE off from the bar.** A power key at the end of the top bar, in Home and in every project. It asks first ("Turn MADRE off?", with how many projects close), then closes everything in order: each open project stops its agents, saves what is pending and frees its port, and Home closes last. The page stays saying MADRE is off. Ollama keeps running, since it is its own program.
|
|
20
|
+
- **Home remembers how you arranged it.** The order and size of the widgets, the order of the projects, the projects pinned to the bar and how the cards read are kept by MADRE, no longer by each tab. They stay the same when you open Home from another project or reopen MADRE on another port.
|
|
21
|
+
- **Local AI and delivered notes, in Settings too.**
|
|
22
|
+
- Each project's Settings has a new "Local AI" section with the same as Modules › Local AI, including "Your computer". Home › Settings › Local AI shows "Your computer" too.
|
|
23
|
+
- "What it remembers" has a "Delivered notes" block with Accept and Decline.
|
|
24
|
+
- When notes are waiting, the project's bar says so ("1 note to accept") and takes you straight to them.
|
|
25
|
+
- **Connected projects share their state.** A connection can allow more than reading notes: with "It shares its state", the reading project also reads the other one's Continuity state (objective, phase, next step, blockers, last handoff, accepted decisions and what is pending). Its files and code never travel. If the Coordinator learns from that project, the state goes into its training as a dated snapshot.
|
|
26
|
+
- **Notes delivered between projects.** With "It receives delivered notes", the reading project can hand notes to the other one. They arrive as a card with Accept and Decline, and enter its memory only if you, or one of that project's agents in #3 EDIT or above, accept them. No project writes straight into another's memory.
|
|
27
|
+
- **The local Coordinator's exam.** With @madre, the Coordinator only answered. Now its local model can take an exam from Train your own AI, in Home, in three parts:
|
|
28
|
+
- real questions about your projects;
|
|
29
|
+
- questions about things nobody ever discussed;
|
|
30
|
+
- test orders.
|
|
31
|
+
|
|
32
|
+
If it passes, it gives orders up to #1 and proposes no connections. Retrain it or switch models and the exam no longer holds.
|
|
33
|
+
- **Local AI is measured on your computer.** Modules › Local AI has a new block, "Your computer": it reads your hardware (an Apple chip and its shared memory, an NVIDIA card and its video memory, or the processor alone) and sets it against the minimum of each Qwen2.5 size, from 0.5B to 72B, to run it and to train it. It says which model to use every day, which one you can train and which features are worth turning on: search by meaning, the archivist, @madre, the Coordinator with local AI and training. The download button offers the model your computer runs well, instead of 3B for everyone. If you pull a larger one (7B, 14B, 32B or 72B), @madre uses it. In Train your own AI you pick the size and the commands follow: from 3B up the base is 4-bit, it is fused with `--de-quantize` and Ollama keeps it in 4 bits. When a size does not fit your computer, the recipe says how much memory it needs.
|
|
34
|
+
- **You can scroll up while an agent works.** The conversation no longer pulls you back to the end every time something changes height: once you scroll up, it stays where you left it, without shaking. If an answer or a plan finishes while you read, a round button appears over the box with a dot in the colour of who answered; one click takes you down, and it goes away by itself when you get there. And jumping to a part of the history you had never seen (dragging the scrollbar, Home, a search) no longer makes the conversation jump: when it opens, every message is measured once in the background and the browser remembers its real height.
|
|
35
|
+
- **Notices grow from a dot.** The notice that floats over the box starts as the dot of its colour, opens into its pill and closes back into the dot when it leaves, with a soft shadow that lifts it off the background. While it shows, the last line of the conversation rises by its height, so it no longer covers the chat notice that says the same thing.
|
|
36
|
+
- **A command with a restore point looks like the other notices**: rounded corners and its UNDO underneath, instead of a capsule that swelled into a circle. Long command pills are no longer cut off on the right: they stay in the agent's lane and end in «…».
|
|
37
|
+
- **Long commands can run.** A line several hundred characters long (an `npx tsx -e "…"`, a `node -p`) no longer stops at «Does not run: it is too long»: the card shows it whole, scrolls inside its button if it is very tall, and runs it. The limit only stops a runaway line (over 4,000 characters).
|
|
38
|
+
- **The box no longer gets squeezed.** With HUMAN › COPILOT › TOKEN SAVER › @AGENT and token saver on, text was typed one letter per line. Now the text keeps its width, the address is cut with «…» before the agent you write to, the token saver chip stays on one line and, with many lines, the first visible line fades under the edge.
|
|
39
|
+
- **Neural mode in the maps.** The Memory map and the Project map have a new key, **Neural**, that draws the same network as the neurons of a brain: each memory is a point of light in its color, the links are thin axons, and only the paths something travels light up, with the neuron it reaches. The core and the Coordinator become the central bulb of the brain, beating. Turning it on, the light runs out from the centre and lights every neuron in turn. It shows the same with far less work for your computer; when the map is short of frames, the key invites you to try it, and you decide when to use each mode. The choice holds for Home and all your projects.
|
|
40
|
+
- **The maps close like every other window.** In the Memory map and the Project map, "Leave ×" and "Back to Home ×" are now the × of Settings and Connections. Home's first-time hints no longer show over the Project map: they wait until you close it.
|
|
41
|
+
- **Your own wallpaper.** In Settings › Appearance, the last of the wallpapers is "Your picture": you choose a photo (PNG, JPEG or WebP) and it becomes the background at once, fitted to the screen like MADRE's own wallpapers, with its layer or its mesh in its own colours, its intensity and its blur. "Framing" shows the whole photo with a frame of what your screen shows; you drag it to choose which part stays in view. There is one picture for Home and every project (each decides whether to use it), and it can be changed or removed right there. It is kept on your computer, in `~/.pulse/wallpaper/`, reduced to 2880 px on its longest side.
|
|
42
|
+
- **One scale for the icons.** Every icon takes one of four sizes depending on what holds it: a mark inside a pill, a key or a drawing beside a word, a square key, and a floating button. The Home, reload, Settings and power keys take the size of the bar's keys when the bar folds. What still used text signs as icons (the ⚙ in "Agents in Settings", the ‹ › arrows, the ▸ ▾ of folders and folds, the ↗ of what opens elsewhere and the ◉ of "still open here" or "memory saved") now uses the room's drawings.
|
|
43
|
+
- **The bar with a panel beside it.** With Code docked and a narrow conversation, the bar measures again what fits: what does not fit goes into "More" instead of sitting under Home, the project's name reads whole and, if needed, "1 note to accept" shrinks to its tray and its number. What changes in a narrow window (wider messages, the word on Create) changes there too.
|
|
44
|
+
- **Arranging the bar without spilling.** While you arrange it, a bar with more keys than room scrolls sideways inside its own box, with the mouse wheel too, and the key you drag no longer leaves it. "Add to the bar" reads better: the title with its hint under it, each key drawn as it will stand on the bar with its "+", and its whole name.
|
|
45
|
+
- **Asking about code, clearer.** When you ask about some lines, the agent chosen is lit and the others are dimmed. The card of what an agent changed no longer has a coloured edge on its left. In "What is sent", the scroll bar runs along the window's edge, outside the cards.
|
|
46
|
+
- **Details that looked wrong**: the ring around a thinking avatar is no longer cut on the left; the notice dot on the conversations button sits on its corner, outside; the recipe to train your AI (Mac and Linux) shows every command whole with Copy in view; the clock of a working agent no longer leaves a grey help box under the pointer or makes the browser re-lay out the windows every second; in the top bar, Home's widgets button pulses on hover and fills its squares when it opens, and the shadows of Connections, Map, Modules, Diagnostics and Code are softer; Code, on hover, takes the accent colour and draws a / between < >, and stays that way while open; and "still open here" is centred with the questions under it, since its × no longer pushes it aside.
|
|
47
|
+
- **Codex no longer asks for #4 to read in #3.** Codex reads files with the shell (`cat`, `sed`, `rg`) and the #3 note told it "you cannot run commands": sometimes it answered "I need #4 for 5 min" to open the file it was supposed to edit. Now, only to agents that read with the shell, MADRE makes clear that reading with read-only commands is fine and that what it doesn't run is programs (tests, builds, installs, servers). Claude and OpenCode don't change: they read with their own tools.
|
|
48
|
+
- **Gemini says why Google refuses it.** When Google refuses the free personal account, the answer is no longer the generic "Google rejected the credentials": it says Google no longer accepts that sign-in and to paste a Google AI Studio key in Settings › Agents › Gemini, and Diagnostics finds its fix. The Gemini card no longer promises a free plan.
|
|
49
|
+
- **The round table speaks your language even when someone doesn't answer.** If an agent fails, @madre's summary quotes the reason in the language of the question; before, it could come out in English in the middle of a Spanish summary.
|
|
50
|
+
- **When an agent says it created something that doesn't exist, MADRE says so plainly.** The notice is no longer a line that turns into a dot after ten seconds: it says "@agent said it created spending.html, but it is not in your project", that nothing was written, and brings "Ask again", which puts the same request back in the box with a note for the agent. A plan that mentions the files its steps will make no longer triggers this notice.
|
|
51
|
+
- **Ollama no longer looks like a server of yours that went down.** Ollama opens a process of its own for each model it loads (`llama-server`, with its port) and closes it when it unloads the model after a few idle minutes. If Ollama had been started from a project's folder, that project said "your server :53328 stopped". Now that process counts as part of Ollama.
|
|
52
|
+
- **A first-time hint is never out of your reach.** The card follows what it points at as you move around the page. If what it points at is above or below what you see, a pill at the edge shows its title and "Scroll up to see it" or "Scroll down to see it", and takes you there with a click. Before, a hint about a widget further down was born off the screen and could not be closed.
|
|
53
|
+
- **Home speaks one language.** In a new MADRE that takes your browser's language, the widgets' titles stayed in Spanish while everything else switched to English.
|
|
54
|
+
- **Cursor, the sixth agent.** If you have Cursor and its terminal program (`cursor-agent`), MADRE finds it and puts it with the others: you write to it with `@cursor`, it joins plans and round tables, and in Settings › Agents you sign in with your Cursor account from a button. For now it reads and answers: every turn runs in its ask-only mode, with a configuration made for that turn that does not let it write or run commands, and that is removed when the turn ends. Your Cursor session is left alone. Writing in your project (#2 to #4) will come once its confinement has been tried.
|
|
55
|
+
- **The agents, in drawings of their own.** Codex, Claude, Gemini, OpenCode and Cursor have new drawings by MADRE that recall each brand without copying its logo: the knotted blossom, the spark, the four-pointed star, the block and the cube with its pointer.
|
|
56
|
+
- **An agent that cannot answer looks switched off.** With no session, not installed or with no adapter MADRE can use, the agent turns grey in the project's bar and in Home's, and leaves the picker of the box you write in. If you write to it by name, the message stays in the box and its Settings open so you can connect it.
|
|
57
|
+
- **Create a project from scratch.** In "Add a project", in Home and in the welcome, the new "New project" option makes an empty folder with the name you type, in your home folder or in the one you were walking, and adds it to Home. It never writes over a folder that exists, and says why when a name will not do.
|
|
58
|
+
- **MADRE in Home's air.** With no wallpaper, behind Home there are two very faint clouds in MADRE's palette that drift slowly: her green on the light theme, and on the dark one her phosphor green with a trace of cyan and plum. With "less motion" they stay still.
|
|
59
|
+
- **Gemini does not keep an account Google refuses.** Google lets a free personal account sign in and refuses it at the first question. The "Google account" button now waits for that first answer: if Google refuses the account, Gemini is left as it was (with your key, if you had one) and MADRE tells you why.
|
|
60
|
+
- **Hints inside a window are the same card as the rest.** In Settings, the first-time hint is no longer a band glued to the edges: it is the usual card, with its margins and its small button on the right.
|
|
61
|
+
- **Errors, in your language.** The notice that Google refused the Gemini account, and three more of Gemini's, read in Spanish even when they were kept in English.
|
|
62
|
+
- **The ring of the thinking agent shows whole.** In Chrome, the ring that pulses around the avatar was cut off sharply on the left.
|
|
63
|
+
- **The Market.** A full-screen store of modules, in Home (the «Market» key) and in every project (Modules › Market). On top, a carousel of the featured ones, each with its illustration; below, shelves by what each module is for («Without the terminal», «To create», «AI on your computer», «Connect it»), and a page per module with its price (all free for now), where it is on, its preview, what it does and what it touches. Every module has a new icon, its drawing on its own colors.
|
|
64
|
+
- **For this project, for all, or for one.** Opened from a project, «Get» turns it on in that project only. Opened from Home, you choose «for all your projects» or «only in» one. A module that writes into the folder (Continuity) takes you to its card in Modules, where you read the commands before they run.
|
|
65
|
+
- **Modules in Home.** The new «Modules» key shows what you have on or installed and in which projects: one switch for all your projects and a chip per project to turn it on or off there alone. A change reaches each open project with its next message, without restarting it.
|
|
66
|
+
- **In the conversation.** Ask for something an off module would do (open your page in a browser, make an image, read your pull requests) and a card appears under it with «Turn on», «See it in the Market» and «No, thanks».
|
|
67
|
+
- **New modules without waiting for a MADRE release.** The Market updates from madre.run every time MADRE opens: new modules, the featured ones and their words come in a catalog signed by the author, and MADRE reads none its built-in key does not verify and installs no file whose fingerprint is not the catalog's. Offline, it uses the last one it verified. A module got from the Market updates itself when a new version comes out and tells you once, with what changed. The Market's news and new modules are announced once, with a «See it» key. The connection is on the list of what leaves your computer, and is turned off with «Look for new versions» or `PULSE_MARKET=0`.
|
|
68
|
+
- **A module's switch in a project belongs to that project.** In a project's Modules, turning a module on or off no longer changes it in all your projects: the row says «On in this project». «For all» is decided in Home.
|
|
69
|
+
- **SDK: `ready`, `footer` and a switch per project.** A module can declare `ready(ctx)`, what it asks before it turns on (in one project, in all, or from the Market), and `footer`, up to two keys beside MADRE's version that MADRE draws: one of its icons, the module's words and an https address. `ctx.settings.enabled` is already this project's: MADRE keeps what each one said in `rooms`. The contract goes to 38 fields. The first Market module to use it is «Donate»: a heart beside the version to support MADRE on GitHub Sponsors.
|
|
70
|
+
- **Continuity without the terminal.** In a project with no git, MADRE runs `git init` for you before installing it, and says so in the same confirmation. On a Mac with no git, the notice carries the key that opens Apple's installer. Module texts read in your language, and paths and commands show as written.
|
|
71
|
+
- **The test browser brings its browser.** Turning Test browser on, if the server or the browser is missing, MADRE downloads them and tries again before saying anything; meanwhile it says it may take a few minutes. If npm fails, the notice says npm's reason instead of the path of its log.
|
|
72
|
+
- **Opening MADRE with `npx` no longer breaks Continuity or Test browser.** The variables `npx` leaves behind made the commands MADRE runs for you try to install MADRE's package again.
|
|
73
|
+
- **With an old Node, a clear notice.** On a Node older than 22.5, `madre` says which version it needs and how to install it (nodejs.org or `nvm install 22`), instead of npm's warnings and a «Permission denied».
|
|
74
|
+
- **MADRE on a server with no screen.** The reference explains how to open it on a server and see it from your computer through an SSH tunnel.
|
|
75
|
+
- **Details**: command boxes show their copy icon again; opening a new conversation in window mode no longer leaves the window stuck in the corner; and the log of a module being installed reads on the room's ground, in code type.
|
|
8
76
|
|
|
9
77
|
## 1.0.2 · 2026-10-16
|
|
10
78
|
|
package/CHANGELOG.md
CHANGED
|
@@ -4,7 +4,75 @@ Todas las versiones publicadas de `@jossuealcala/madre`. Fechas en ISO.
|
|
|
4
4
|
|
|
5
5
|
Una versión se cierra cuando está en npm: hasta entonces su sección se llama **Sin publicar** y puede crecer. Cada versión publicada tiene exactamente una etiqueta `vX.Y.Z`, una release en GitHub y una sección aquí; el parche puede llegar a dos dígitos (`0.2.10`) antes de subir el menor. Ver `docs/ROADMAP.md` para el criterio de qué sube cada número.
|
|
6
6
|
|
|
7
|
-
## 1.0.
|
|
7
|
+
## 1.0.4 · Sin publicar
|
|
8
|
+
|
|
9
|
+
## 1.0.3 · 2026-10-17
|
|
10
|
+
|
|
11
|
+
- **Un espacio de código junto a la conversación.** La tecla nueva `CÓDIGO` de la barra abre tus archivos a un lado de la conversación, sin dejarla: la lista del proyecto con su buscador, pestañas para lo que tienes abierto y, sobre el código, la ruta y la función donde estás. ⌘P (Ctrl+P fuera de macOS) abre cualquier archivo por su nombre. Cambiar de pestaña no pierde lo que escribiste: el borrador se queda en su pestaña, con un punto, hasta que guardas o descartas, y las pestañas siguen ahí cuando vuelves al proyecto. En las barras que ya tenías acomodadas, `CÓDIGO` aparece junto a Agentes.
|
|
12
|
+
- **Lo que cambió un agente, en su color.** Después de un turno en #3 EDITAR, las líneas que cambió el agente quedan marcadas con su color, y cada cambio trae tres botones: **Conservar**, **Deshacer** (solo esas líneas; lo demás del turno se queda) y **Preguntar por qué**, que se lo pregunta en la conversación. Arriba del código, «@claude · 2 cambios por revisar» te lleva de uno a otro. Si deshaces el turno completo con DESHACER, o reescribes tú esas líneas, dejan de marcarse.
|
|
13
|
+
- **Acciones sobre lo que seleccionas.** Al pedir revisión de unas líneas aparecen Explicar, Mejorar, Escribir pruebas y Arreglar, cada una con su pregunta lista para el agente.
|
|
14
|
+
- **Al lado.** En un Markdown, el documento renderizado se actualiza mientras escribes; en una página HTML, se recarga al guardar. Para la página hace falta Vista previa, y si está apagada el botón para encenderla está ahí mismo.
|
|
15
|
+
- **Gemini se conecta con tu llave de Google AI Studio, sin terminal.** En Ajustes › Agentes, en Conecta tus agentes y en Inicio, lo primero en la tarjeta de Gemini es el campo para pegar tu llave de API de Google AI Studio, con el enlace para sacarla: MADRE la escribe donde la busca el CLI de Gemini, solo legible por ti, y no guarda copia. Debajo está el botón «Cuenta de Google», que abre tu navegador para elegir tu cuenta, para las cuentas que Google todavía acepta en Gemini CLI: Google rechaza las cuentas personales gratuitas (responde «IneligibleTierError» y pide migrar a Antigravity). Antes había que abrir una terminal, correr `gemini` y escribir /auth. Todo pasa por el CLI oficial de Google y MADRE no lee ni guarda tu sesión. Si cancelas, Gemini queda como estaba. Con la sesión ya iniciada, cada agente muestra un solo «Iniciar sesión otra vez», como Codex; en Claude eliges la cuenta (suscripción o Anthropic Console) después del clic.
|
|
16
|
+
- **OpenCode se conecta con GitHub Copilot, sin terminal.** La tarjeta de OpenCode, en Ajustes › Agentes, en Conecta tus agentes y en Inicio, tiene ahora el botón «GitHub Copilot»: MADRE corre `opencode auth login -p github-copilot`, elige github.com por ti y muestra en la sala la página (github.com/login/device) y el código que escribes ahí, con su botón para copiarlo. Al autorizar en GitHub, OpenCode queda conectado a tu suscripción de Copilot (Pro, Pro+, Business o Enterprise). Todo pasa por el CLI oficial de OpenCode y MADRE no lee ni guarda tu sesión. Desde la sala solo se ofrecen los proveedores que permiten este acceso a herramientas de terceros: la suscripción de Claude nunca, porque Anthropic no lo permite; ChatGPT y GitLab, todavía no, hasta que OpenAI y GitLab lo confirmen por escrito. Esos y GitHub Enterprise siguen en «¿Prefieres tu terminal?» con `opencode auth login`, y las llaves de los demás proveedores se siguen pegando en la sala.
|
|
17
|
+
- **La terminal, como segunda opción y nunca obligatoria.** Debajo de cada agente, «¿Prefieres tu terminal?» despliega el mismo paso (instalar o iniciar sesión) escrito como comando, con su botón para copiarlo. Los botones de MADRE siguen siendo el camino principal, y la tarjeta de un agente sin instalar ya no muestra el comando de npm en su primera línea.
|
|
18
|
+
- **El Coordinador puede aprender de tus proyectos.** En Inicio, cada conexión que lee el Coordinador tiene una casilla nueva, «El Coordinador aprende de él», apagada hasta que la marcas tú. Con ella, al exportar los datos de entrenamiento del Coordinador entra todo lo que ese proyecto comparte (no solo lo que coincida con una pregunta), cada nota con el nombre de su proyecto para que nunca los mezcle. Si el proyecto está dormido se usa la copia de la última vez que respondió, y el panel dice de dónde salió cada cosa. Quitar la casilla o revocar la conexión borra esa copia; un modelo ya entrenado conserva lo aprendido hasta que lo vuelvas a entrenar. Además, la exportación de entrenamiento de cualquier proyecto lee ya todas sus conversaciones, no solo la abierta.
|
|
19
|
+
- **Apagar MADRE desde la barra.** Un botón de encendido al final de la barra superior, en Inicio y en cada proyecto. Pregunta antes («¿Apagar MADRE?», con cuántos proyectos se cierran) y luego cierra todo en orden: cada proyecto abierto detiene a sus agentes, guarda lo pendiente y libera su puerto, y al final se cierra Inicio. La página queda diciendo que MADRE está apagado. Ollama sigue corriendo, porque es su propio programa.
|
|
20
|
+
- **Inicio recuerda cómo lo acomodaste.** El orden y el tamaño de los widgets, el orden de los proyectos, los proyectos fijados en la barra y cómo se leen las tarjetas se guardan en MADRE y ya no en cada pestaña. Siguen iguales aunque abras Inicio desde otro proyecto o vuelvas a abrir MADRE y le toque otro puerto.
|
|
21
|
+
- **La IA local y las notas entregadas, también en Ajustes.**
|
|
22
|
+
- Los Ajustes de cada proyecto tienen una sección nueva, «IA local», con lo mismo que Módulos › IA local, incluido «Tu computadora». Inicio › Ajustes › IA local también muestra «Tu computadora».
|
|
23
|
+
- «Lo que recuerda» tiene un bloque «Notas entregadas» con Aceptar y Rechazar.
|
|
24
|
+
- Cuando hay notas esperando, la barra del proyecto lo avisa («1 nota por aceptar») y te lleva directo a ellas.
|
|
25
|
+
- **Los proyectos conectados comparten su estado.** Una conexión puede permitir algo más que leer notas: con «Comparte su estado», quien lee también lee el estado de Continuidad del otro proyecto (objetivo, fase, siguiente paso, bloqueos, último traspaso, decisiones aceptadas y lo pendiente). Nunca viajan sus archivos ni su código. Si el Coordinador aprende de ese proyecto, el estado entra a su entrenamiento como una foto con fecha.
|
|
26
|
+
- **Notas entregadas entre proyectos.** Con «Recibe notas entregadas», el proyecto que lee puede pasarle notas al otro. Llegan como una tarjeta con Aceptar y Rechazar, y solo entran a su memoria si las aceptas tú o un agente de ese proyecto en #3 EDITAR o más. Ningún proyecto escribe directo en la memoria de otro.
|
|
27
|
+
- **El examen del Coordinador local.** Con @madre, el Coordinador solo respondía. Ahora su modelo local puede presentar un examen desde Entrena tu propia IA, en Inicio, con tres partes:
|
|
28
|
+
- preguntas reales sobre tus proyectos;
|
|
29
|
+
- preguntas sobre cosas de las que nunca se habló;
|
|
30
|
+
- órdenes de prueba.
|
|
31
|
+
|
|
32
|
+
Si aprueba, da órdenes hasta #1 y no propone conexiones. Si vuelves a entrenarlo o cambias de modelo, el examen deja de valer.
|
|
33
|
+
- **La IA local se mide en tu computadora.** Módulos › IA local tiene un bloque nuevo, «Tu computadora»: lee tu equipo (chip Apple y su memoria compartida, tarjeta NVIDIA y su memoria de video, o solo el procesador) y lo compara con el mínimo de cada tamaño de Qwen2.5, de 0.5B a 72B, para correrlo y para entrenarlo. Dice qué modelo usar en el día a día, cuál puedes entrenar y qué funciones vale la pena encender: buscar por significado, quien resume la memoria, @madre, el Coordinador con IA local y entrenar. El botón para descargar el modelo propone el que tu equipo corre bien, en vez de 3B para todos. Si descargas uno más grande (7B, 14B, 32B o 72B), @madre lo usa. En Entrena tu propia IA eliges el tamaño y los comandos se ajustan: desde 3B la base viene en 4 bits, se une con `--de-quantize` y Ollama la guarda en 4 bits. Si un tamaño no alcanza en tu equipo, la receta dice cuánta memoria pide.
|
|
34
|
+
- **Puedes subir mientras un agente trabaja.** La conversación ya no te regresa al final cada vez que algo cambia de alto: en cuanto subes, se queda donde la dejaste, sin temblar. Si mientras lees termina una respuesta o un plan, aparece sobre la caja de escribir un botón redondo con un punto del color de quien contestó; un clic te lleva abajo y se va solo cuando llegas. Y saltar a una parte del historial que nunca habías visto (arrastrando la barra, con Inicio o buscando) ya no hace brincar la conversación: al abrirla, cada mensaje se mide una vez en segundo plano y el navegador recuerda su alto real.
|
|
35
|
+
- **Los avisos nacen de un punto.** El aviso que flota sobre la caja de escribir empieza como el punto de su color, se abre en su píldora y al irse vuelve a cerrarse en el punto, con una sombra suave que lo despega del fondo. Mientras está, la última línea de la conversación sube lo que mide el aviso, así que ya no tapa al aviso del chat que dice lo mismo.
|
|
36
|
+
- **Un comando con punto de restauración se ve como los demás avisos**: esquinas redondeadas y su DESHACER debajo, en vez de una cápsula que se inflaba en círculo. Las píldoras de los comandos largos ya no se cortan a la derecha: respetan el carril del agente y acaban en «…».
|
|
37
|
+
- **Los comandos largos se pueden correr.** Una línea de varios cientos de caracteres (un `npx tsx -e "…"`, un `node -p`) ya no queda en «No corre: es demasiado larga»: la tarjeta la muestra completa, se recorre dentro de su botón si es muy alta, y corre. El límite solo frena una línea desbocada (más de 4,000 caracteres).
|
|
38
|
+
- **La caja de escribir no se aplasta.** Con HUMANO › COPILOTO › AHORRO DE TOKENS › @AGENTE y el ahorro de tokens encendido, el texto se escribía letra por letra en un renglón. Ahora el texto conserva su ancho, la dirección se corta con «…» antes que el agente al que le escribes, la ficha del ahorro de tokens no se parte en renglones y, con muchos renglones, la primera línea visible se desvanece bajo el borde.
|
|
39
|
+
- **Modo neural en los mapas.** El Mapa de memoria y el Mapa de proyectos tienen una tecla nueva, **Neural**, que dibuja la misma red como las neuronas de un cerebro: cada memoria es un punto de luz en su color, los enlaces son axones finos y solo se encienden los caminos por donde viaja algo, con la neurona a la que llega. El núcleo y el Coordinador se vuelven el bulbo central del cerebro, que late. Al encenderlo, la luz sale del centro y va prendiendo cada neurona. Se ve lo mismo con mucho menos trabajo para tu computadora; si al mapa le faltan cuadros, la tecla te invita a probarlo, y tú decides cuándo usar cada modo. La elección vale para Inicio y todos tus proyectos.
|
|
40
|
+
- **Los mapas cierran como las demás ventanas.** En el Mapa de memoria y en el Mapa de proyectos, «Salir ×» y «Volver a Inicio ×» son ahora la × de Ajustes y Conexiones. Los avisos de primera vez de Inicio ya no aparecen sobre el Mapa de proyectos: esperan a que lo cierres.
|
|
41
|
+
- **Tu propia imagen de fondo.** En Ajustes › Apariencia, la última tecla de los fondos es «Tu imagen»: eliges una foto (PNG, JPEG o WebP) y queda de fondo al instante, ajustada a la pantalla como los fondos de MADRE, con su capa o su malla en sus propios colores, su intensidad y su desenfoque. «Encuadre» muestra la foto completa con el recuadro de lo que se ve en tu pantalla; lo arrastras para elegir qué parte queda a la vista. La imagen es una sola para Inicio y todos los proyectos (cada uno decide si la usa) y se puede cambiar o quitar ahí mismo. Se guarda en tu computadora, en `~/.pulse/wallpaper/`, reducida a 2880 px por su lado mayor.
|
|
42
|
+
- **Una sola escala de íconos.** Cada ícono toma uno de cuatro tamaños según lo que lo contiene: la marca dentro de una píldora, la tecla o el dibujo junto a una palabra, la tecla cuadrada y el botón que flota. Las teclas de Inicio, recargar, Ajustes y apagar toman el tamaño de las de la barra cuando esta se pliega. Lo que aún usaba signos de texto como ícono (el ⚙ de «Agentes en Ajustes», las flechas ‹ ›, los ▸ ▾ de carpetas y pliegues, el ↗ de lo que se abre fuera y el ◉ de «sigue abierto aquí» o «memoria guardada») usa ahora los dibujos de la sala.
|
|
43
|
+
- **La barra con un panel al lado.** Con Código acoplado y la conversación angosta, la barra vuelve a medir qué cabe: lo que no entra pasa a «Más» en vez de quedar debajo de Inicio, el nombre del proyecto se lee completo y, si hace falta, «1 nota por aceptar» se reduce a su bandeja y su número. Lo que cambia en una ventana angosta (mensajes más anchos, la palabra de Crear) cambia también ahí.
|
|
44
|
+
- **Acomodar la barra sin que se desborde.** Mientras la acomodas, una barra con más teclas de las que caben se desplaza de lado dentro de su caja, también con la rueda del ratón, y la tecla que arrastras ya no sale de ella. «Agregar a la barra» se lee mejor: el título con su indicación debajo, cada tecla como se verá en la barra con su «+» y su nombre completo.
|
|
45
|
+
- **Preguntar sobre el código, más claro.** Al preguntar por unas líneas, el agente elegido se ilumina y los demás quedan apagados. La tarjeta de lo que cambió un agente ya no lleva el borde de color a la izquierda. En «Lo que se envía», la barra de desplazamiento va en el borde de la ventana, fuera de las tarjetas.
|
|
46
|
+
- **Detalles que se veían mal**: el anillo del avatar que piensa ya no se corta por la izquierda; el punto de aviso del botón de conversaciones va montado en su esquina, por fuera; la receta para entrenar tu IA (Mac y Linux) muestra cada comando completo con Copiar a la vista; el reloj del agente que trabaja ya no deja un recuadro gris de ayuda bajo el cursor ni obliga al navegador a reacomodar las ventanas cada segundo; en la barra de arriba, el botón de widgets de Inicio late al pasar el ratón y llena sus cuadros al abrirse, y las sombras de Conexiones, Mapa, Módulos, Diagnóstico y Código son más suaves; Código, al pasar el ratón, toma el color de acento y dibuja una / entre < >, y abierto se queda así; y «sigue abierto aquí» queda centrado con las preguntas que tiene debajo, porque su × ya no lo empuja a un lado.
|
|
47
|
+
- **Codex ya no pide #4 para leer en #3.** Codex lee los archivos con la terminal (`cat`, `sed`, `rg`) y el aviso de #3 le decía «no puedes correr comandos»: a veces respondía «Necesito #4 por 5 min» para abrir el archivo que debía editar. Ahora, solo a quien lee con la terminal, MADRE le aclara que leer con comandos de solo lectura está bien y que lo que no corre son programas (pruebas, builds, instalaciones, servidores). Claude y OpenCode no cambian: leen con sus propias herramientas.
|
|
48
|
+
- **Gemini dice por qué Google lo rechaza.** Cuando Google rechaza la cuenta personal gratuita, la respuesta ya no es el genérico «Google rechazó las credenciales»: dice que Google ya no acepta ese inicio de sesión y que pegues una llave de Google AI Studio en Ajustes › Agentes › Gemini, y Diagnóstico encuentra su remedio. La tarjeta de Gemini ya no promete un plan gratuito.
|
|
49
|
+
- **La mesa redonda habla en tu idioma también cuando alguien no contesta.** Si un agente falla, el resumen de @madre cita el motivo en el idioma de la pregunta; antes podía salir en inglés en medio de un resumen en español.
|
|
50
|
+
- **Cuando un agente dice que creó algo que no existe, MADRE lo dice claro.** El aviso ya no es una línea que se hace punto a los diez segundos: dice «@agente dijo que creó gastos.html, pero no está en tu proyecto», que no se escribió nada, y trae «Pedirlo otra vez», que regresa la misma petición a la caja con una nota para el agente. Un plan que menciona los archivos que harán sus pasos ya no dispara este aviso.
|
|
51
|
+
- **Ollama ya no parece un servidor tuyo que se cayó.** Ollama abre un proceso propio por cada modelo que carga (`llama-server`, con su puerto) y lo cierra cuando lo descarga tras unos minutos sin uso. Si Ollama se había abierto desde la carpeta de un proyecto, ese proyecto avisaba «tu servidor :53328 se detuvo». Ahora ese proceso cuenta como parte de Ollama.
|
|
52
|
+
- **Un aviso de primera vez nunca se queda fuera de tu alcance.** La tarjeta sigue a lo que señala mientras te mueves por la página. Si lo que señala queda arriba o abajo de lo que ves, en el borde aparece una píldora con su título y «Sube para verlo» o «Baja para verlo», que te lleva ahí con un clic. Antes, un aviso sobre un widget de más abajo nacía fuera de la pantalla y no había cómo cerrarlo.
|
|
53
|
+
- **Inicio habla un solo idioma.** En una MADRE nueva que adopta el idioma de tu navegador, los títulos de los widgets se quedaban en español aunque todo lo demás cambiara a inglés.
|
|
54
|
+
- **Cursor, el sexto agente.** Si tienes Cursor y su programa de terminal (`cursor-agent`), MADRE lo encuentra y lo pone junto a los demás: le escribes con `@cursor`, entra a planes y mesas redondas, y en Ajustes › Agentes inicias sesión con tu cuenta de Cursor desde un botón. Por ahora lee y contesta: cada turno corre en su modo de solo preguntas, con una configuración hecha para ese turno que no le deja escribir ni correr comandos, y que se borra al terminar. Tu sesión de Cursor no se toca. Escribir en tu proyecto (#2 a #4) llegará cuando se haya probado su confinamiento.
|
|
55
|
+
- **Los agentes, con dibujos propios.** Codex, Claude, Gemini, OpenCode y Cursor tienen dibujos nuevos de MADRE que recuerdan la marca de cada uno sin copiar su logo: la flor anudada, la chispa, la estrella de cuatro puntas, el bloque y el cubo con su puntero.
|
|
56
|
+
- **Un agente que no puede contestar se ve apagado.** Sin sesión, sin instalar o sin un adaptador que MADRE pueda usar, el agente queda gris en la barra del proyecto y en la de Inicio, y sale del selector de la caja de escribir. Si le escribes con su nombre, el mensaje se queda en la caja y se abren sus Ajustes para conectarlo.
|
|
57
|
+
- **Crea un proyecto desde cero.** En «Agregar proyecto», en Inicio y en la bienvenida, la opción nueva «Nuevo proyecto» crea una carpeta vacía con el nombre que escribas, en tu carpeta personal o en la que estabas recorriendo, y la agrega a Inicio. Nunca escribe encima de una carpeta que ya existe, y explica por qué si el nombre no sirve.
|
|
58
|
+
- **MADRE en el aire de Inicio.** Sin fondo de pantalla, detrás de Inicio hay dos nubes muy tenues de la paleta de MADRE que se mueven despacio: su verde en el tema claro, y en el oscuro su verde fósforo con un rastro de cian y ciruela. Con «menos movimiento» se quedan quietas.
|
|
59
|
+
- **Gemini no se queda con una cuenta que Google rechaza.** Google deja iniciar sesión con una cuenta personal gratuita y la rechaza después, en la primera pregunta. Ahora el botón «Cuenta de Google» espera esa primera respuesta: si Google rechaza la cuenta, Gemini queda como estaba (con tu llave, si la tenías) y MADRE te dice por qué.
|
|
60
|
+
- **Los avisos dentro de una ventana son la misma tarjeta que los demás.** En Ajustes, el aviso de la primera vez ya no es una franja pegada a los bordes: es la tarjeta de siempre, con sus márgenes y su botón pequeño a la derecha.
|
|
61
|
+
- **Los errores, en tu idioma.** El aviso de que Google rechazó la cuenta de Gemini, y otros tres de Gemini, se leen en español aunque se hayan guardado en inglés.
|
|
62
|
+
- **El anillo del agente que piensa se ve entero.** En Chrome, el anillo que late alrededor del avatar se cortaba en seco por la izquierda.
|
|
63
|
+
- **El Mercado.** Una tienda de módulos a pantalla completa, en Inicio (tecla «Mercado») y en cada proyecto (Módulos › Mercado). Arriba, un carrusel con los destacados, cada uno con su ilustración; debajo, estantes por lo que hace cada módulo («Sin pasar por la terminal», «Para crear», «IA en tu computadora», «Conéctalo») y una página por módulo con su precio (todo gratis por ahora), dónde está encendido, su vista previa, qué hace y qué toca. Cada módulo tiene un ícono nuevo, con su dibujo sobre sus propios colores.
|
|
64
|
+
- **Para este proyecto, para todos o para uno.** Abierto desde un proyecto, «Obtener» lo enciende solo en ese proyecto. Abierto desde Inicio, eliges «para todos tus proyectos» o «solo en» uno. Un módulo que escribe en la carpeta (Continuidad) te lleva a su tarjeta en Módulos, donde lees los comandos antes de que corran.
|
|
65
|
+
- **Módulos en Inicio.** La tecla nueva «Módulos» muestra lo que tienes encendido o instalado y en qué proyectos: un interruptor para todos tus proyectos y una pastilla por proyecto para encenderlo o apagarlo solo ahí. Un cambio llega a cada proyecto abierto con su siguiente mensaje, sin reiniciarlo.
|
|
66
|
+
- **En la conversación.** Si pides algo que un módulo apagado haría (abrir tu página en un navegador, crear una imagen, ver tus pull requests), aparece debajo una tarjeta con «Encender», «Verlo en el Mercado» y «No, gracias».
|
|
67
|
+
- **Módulos nuevos sin esperar a una versión de MADRE.** El Mercado se actualiza desde madre.run cada vez que MADRE se abre: los módulos nuevos, los destacados y sus textos llegan con un catálogo firmado por el autor, y MADRE no lee uno que no verifique con la llave que trae dentro ni instala un archivo cuya huella no sea la del catálogo. Sin internet, usa lo último que verificó. Un módulo obtenido del Mercado se actualiza solo cuando sale una versión nueva y te lo dice una vez, con lo que cambió. Las novedades del Mercado y los módulos nuevos se anuncian una vez, con un botón «Verlo». La conexión está en la lista de lo que sale de tu computadora, y se apaga con «Buscar versiones nuevas» o `PULSE_MARKET=0`.
|
|
68
|
+
- **El interruptor de un módulo en un proyecto es de ese proyecto.** En Módulos de un proyecto, encender o apagar un módulo ya no lo cambia en todos tus proyectos: la fila dice «Encendido en este proyecto». «Para todos» se decide en Inicio.
|
|
69
|
+
- **SDK: `ready`, `footer` y un interruptor por proyecto.** Un módulo puede declarar `ready(ctx)`, lo que pide antes de encenderse (en un proyecto, en todos o desde el Mercado), y `footer`, hasta dos teclas junto a la versión de MADRE que dibuja MADRE: un ícono suyo, las palabras del módulo y una dirección https. `ctx.settings.enabled` ya es el de este proyecto: MADRE guarda en `rooms` lo que dijo cada uno. El contrato pasa a 38 campos. El primer módulo del Mercado que lo usa es «Donar»: un corazón junto a la versión para apoyar a MADRE en GitHub Sponsors.
|
|
70
|
+
- **Continuidad sin terminal.** En un proyecto sin git, MADRE corre `git init` por ti antes de instalarla, y lo dice en la misma confirmación. En una Mac sin git, el aviso trae el botón que abre el instalador de Apple. Los textos de los módulos se leen en tu idioma, y las rutas y comandos se ven como están escritos.
|
|
71
|
+
- **El navegador de pruebas trae su navegador.** Al encender el Navegador de pruebas, si falta el servidor o el navegador, MADRE los descarga y vuelve a probar antes de decirte nada; mientras tanto avisa que puede tardar unos minutos. Si npm falla, el aviso dice el motivo de npm en vez de la ruta de su registro.
|
|
72
|
+
- **Abrir MADRE con `npx` ya no rompe Continuidad ni el Navegador de pruebas.** Las variables que deja `npx` hacían que los comandos que MADRE corre por ti intentaran instalar el paquete de MADRE otra vez.
|
|
73
|
+
- **Con un Node viejo, un aviso claro.** En un Node anterior a 22.5, `madre` dice qué versión hace falta y cómo instalarla (nodejs.org o `nvm install 22`), en vez de los avisos de npm y un «Permission denied».
|
|
74
|
+
- **MADRE en un servidor sin pantalla.** La referencia explica cómo abrirla en un servidor y verla desde tu computadora con un túnel SSH.
|
|
75
|
+
- **Detalles**: las cajas con comandos vuelven a mostrar su ícono de copiar; al abrir una conversación nueva en modo ventana, la ventana ya no se queda pegada en la esquina; y el registro de un módulo que se instala se lee sobre el fondo de la sala, en letra de código.
|
|
8
76
|
|
|
9
77
|
## 1.0.2 · 2026-10-16
|
|
10
78
|
|
package/README.en.md
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
# All your AIs in one chat.
|
|
18
18
|
|
|
19
|
-
Codex, Claude Code, Gemini CLI and
|
|
19
|
+
Codex, Claude Code, Gemini CLI, OpenCode and Cursor working on your projects,
|
|
20
20
|
in the same conversation, remembering the same things. All your projects in one place,
|
|
21
21
|
and a Coordinator that sees them from above.
|
|
22
22
|
|
|
@@ -28,10 +28,10 @@ That's it. No account to create, no cloud to set up, no key to paste.
|
|
|
28
28
|
MADRE uses the sessions those CLIs already have on your machine.
|
|
29
29
|
|
|
30
30
|
<p align="center">
|
|
31
|
-
<
|
|
31
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/home.webp" alt="MADRE Home: the Coordinator with its recent summary, who is waiting for you, the connections and one card per project" width="100%">
|
|
32
32
|
</p>
|
|
33
33
|
|
|
34
|
-
<p align="center"><sub>
|
|
34
|
+
<p align="center"><sub>Home, with all your projects. The 90-second tour is <a href="https://github.com/jossuealcacao-exe/madre/blob/main/docs/media/1.0/madre-1-0.mp4">in Spanish for now</a>. Also at <a href="https://madre.run/en/">madre.run</a>.</sub></p>
|
|
35
35
|
|
|
36
36
|
<br>
|
|
37
37
|
|
|
@@ -55,21 +55,17 @@ If you're coming from 0.7.2, your projects, conversations, memory and settings s
|
|
|
55
55
|
## One conversation, not four terminals
|
|
56
56
|
|
|
57
57
|
<p align="center">
|
|
58
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
58
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/one-chat.webp" alt="All your AIs in one chat: each answer with its agent, and the handoff line that says how many messages the next one received" width="100%">
|
|
59
59
|
</p>
|
|
60
60
|
|
|
61
61
|
You type `@codex` and Codex answers. You type `@claude` and Claude answers, **reading what Codex just said**. You type "@madre, ask the team…" and each one gives its take in turn on the same thing; at the end, @madre sums up where they agree and where they don't, citing each answer.
|
|
62
62
|
|
|
63
|
-
<p align="center">
|
|
64
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/mesa-redonda.gif" alt="A round table in MADRE 1.0: the question, @madre's plan and each agent's answers" width="100%">
|
|
65
|
-
</p>
|
|
66
|
-
|
|
67
63
|
Today that's four windows, four contexts and you copying and pasting between them. MADRE turns it into one thread.
|
|
68
64
|
|
|
69
65
|
## All your projects, in one place
|
|
70
66
|
|
|
71
67
|
<p align="center">
|
|
72
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
68
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/connect-agents.webp" alt="The first time in Home: connect your agents, once for all your projects" width="100%">
|
|
73
69
|
</p>
|
|
74
70
|
|
|
75
71
|
`npx @jossuealcala/madre` opens **Home**. The first time, it walks you through three steps: connect your agents (once for all your projects), add your folders and open the ones you'll use. Each card says whether an agent is working, whether someone is waiting for you and what was decided while you were away.
|
|
@@ -77,7 +73,7 @@ Today that's four windows, four contexts and you copying and pasting between the
|
|
|
77
73
|
## A Coordinator that sees all your projects
|
|
78
74
|
|
|
79
75
|
<p align="center">
|
|
80
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
76
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/coordinator.webp" alt="The Coordinator answers what was decided in two connected projects, saying which one each fact came from" width="100%">
|
|
81
77
|
</p>
|
|
82
78
|
|
|
83
79
|
The **Coordinator** lives in Home. It reads what your projects have learned —only from the ones you connect— and answers you saying which project each fact came from. If you allow it, it carries tasks from one project to another, up to `#2`; anything that needs more permission arrives as a proposal that you unlock. From any project you ask it with `/bishop`.
|
|
@@ -87,7 +83,7 @@ A **connection** says which kinds of note cross over (decisions, facts, preferen
|
|
|
87
83
|
## A memory that outlives the session
|
|
88
84
|
|
|
89
85
|
<p align="center">
|
|
90
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
86
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/memory-map.webp" alt="The Memory map: colored memories around a magma core, joined by their links" width="100%">
|
|
91
87
|
</p>
|
|
92
88
|
|
|
93
89
|
Everything that's said gets indexed. When the conversation outgrows the context window, each agent gets back what it needs, cited. Every ten exchanges, the project distills what was said into typed notes: a decision, a fact, a preference, an open question.
|
|
@@ -99,7 +95,7 @@ With [Ollama](https://ollama.com) running, that memory also **talks**: `@madre`
|
|
|
99
95
|
## They read by default. They write when you say so.
|
|
100
96
|
|
|
101
97
|
<p align="center">
|
|
102
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
98
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/modes.webp" alt="The mode menu, from #0 Incognito to #4 Full access" width="60%">
|
|
103
99
|
</p>
|
|
104
100
|
|
|
105
101
|
Every message goes out with a permission mode, and your mode is the ceiling for everything that message starts.
|
|
@@ -116,13 +112,13 @@ There's also `#0 INCOGNITO`, for what shouldn't be kept anywhere.
|
|
|
116
112
|
Moving up to `#3` or `#4` is deliberate: MADRE asks for your key —by default, the name of the project folder; in Settings › Permissions you can choose a phrase of your own— and the project itself checks it. No agent can grant itself a permission by writing it in its answer.
|
|
117
113
|
|
|
118
114
|
<p align="center">
|
|
119
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
115
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/undo.webp" alt="Claude changed two files in #3 Edit and the Undo button takes the project back to the restore point" width="60%">
|
|
120
116
|
</p>
|
|
121
117
|
|
|
122
118
|
## Your space, your way
|
|
123
119
|
|
|
124
120
|
<p align="center">
|
|
125
|
-
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/
|
|
121
|
+
<img src="https://raw.githubusercontent.com/jossuealcacao-exe/madre/main/docs/media/1.0/en/workspace.webp" alt="The conversation on the left and the code editor beside it, in Edit mode" width="100%">
|
|
126
122
|
</p>
|
|
127
123
|
|
|
128
124
|
Each panel opens alongside or in a window you can move. Several conversations work at once, the viewer edits code, your project's servers open inside MADRE and you build the bar with a right click. **Settings** (⌘ ,) brings together everything you configure, with search, and **Diagnostics** gives you the fix when something breaks.
|
|
@@ -181,7 +177,7 @@ This matters more than any feature.
|
|
|
181
177
|
|
|
182
178
|
## Getting started
|
|
183
179
|
|
|
184
|
-
You need **Node 22.5** or later and at least one of these CLIs with a signed-in session: Codex, Claude Code, Gemini CLI or
|
|
180
|
+
You need **Node 22.5** or later and at least one of these CLIs with a signed-in session: Codex, Claude Code, Gemini CLI, OpenCode or Cursor (`cursor-agent`). Cursor, for now, reads and answers; it does not write in your project yet.
|
|
185
181
|
|
|
186
182
|
```
|
|
187
183
|
npx @jossuealcala/madre
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
<p align="center"><b>Español</b> · <a href="README.en.md">English</a></p>
|
|
6
6
|
|
|
7
|
-
<p align="center"><sub><b>In English:</b> MADRE puts Codex, Claude Code, Gemini CLI and
|
|
7
|
+
<p align="center"><sub><b>In English:</b> MADRE puts Codex, Claude Code, Gemini CLI, OpenCode and Cursor in one local chat on your machine, with one memory they all share. It opens in your browser's language, Spanish or English. <a href="README.en.md"><b>Read the full README in English →</b></a></sub></p>
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
10
|
<a href="https://www.npmjs.com/package/@jossuealcala/madre"><img alt="npm" src="https://img.shields.io/npm/v/@jossuealcala/madre?style=flat-square&label=npm&color=9bff66&labelColor=050605"></a>
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
# Todas tus IAs en un mismo chat.
|
|
20
20
|
|
|
21
|
-
Codex, Claude Code, Gemini CLI y
|
|
21
|
+
Codex, Claude Code, Gemini CLI, OpenCode y Cursor trabajando sobre tus proyectos,
|
|
22
22
|
en la misma conversación, recordando lo mismo. Todos tus proyectos en un lugar,
|
|
23
23
|
y un Coordinador que los ve desde arriba.
|
|
24
24
|
|
|
@@ -183,7 +183,7 @@ Esto importa más que cualquier función.
|
|
|
183
183
|
|
|
184
184
|
## Empezar
|
|
185
185
|
|
|
186
|
-
Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión iniciada: Codex, Claude Code, Gemini CLI
|
|
186
|
+
Necesitas **Node 22.5** o superior y al menos una de estas CLIs con sesión iniciada: Codex, Claude Code, Gemini CLI, OpenCode o Cursor (`cursor-agent`). Cursor, por ahora, lee y contesta; todavía no escribe en tu proyecto.
|
|
187
187
|
|
|
188
188
|
```
|
|
189
189
|
npx @jossuealcala/madre
|
package/bin/madre.cjs
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// SPDX-License-Identifier: AGPL-3.0-only
|
|
3
|
+
// MADRE · © 2026 Jossue Alcalá · GNU AGPL v3 with additional terms (Section 7): ADDITIONAL-TERMS.md
|
|
4
|
+
// The door `madre` and `npx @jossuealcala/madre` come in by (2026-10-18). It only asks which Node is
|
|
5
|
+
// running, in words any Node can read, and then hands over to bin/madre.mjs.
|
|
6
|
+
//
|
|
7
|
+
// madre.mjs is written for today's Node, and an old one (a server on Node 12, the first report)
|
|
8
|
+
// stops while reading it, before its own version check can speak: the person saw npm's
|
|
9
|
+
// EBADENGINE warnings and «madre: Permission denied», and nothing about what to do. Kept to the
|
|
10
|
+
// plainest JavaScript on purpose: no `??`, no `?.`, no `import` the reader would choke on.
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
var parts = String(process.versions.node).split('.');
|
|
14
|
+
var major = Number(parts[0]);
|
|
15
|
+
var minor = Number(parts[1]);
|
|
16
|
+
|
|
17
|
+
if (major < 22 || (major === 22 && minor < 5)) {
|
|
18
|
+
process.stderr.write([
|
|
19
|
+
'',
|
|
20
|
+
' MADRE necesita Node 22.5 o más nuevo, y esta computadora tiene ' + process.version + '.',
|
|
21
|
+
' Instala Node 22 (o más nuevo) desde https://nodejs.org, o con nvm: nvm install 22',
|
|
22
|
+
' y vuelve a correr el mismo comando.',
|
|
23
|
+
'',
|
|
24
|
+
' MADRE needs Node 22.5 or newer, and this computer has ' + process.version + '.',
|
|
25
|
+
' Install Node 22 (or newer) from https://nodejs.org, or with nvm: nvm install 22',
|
|
26
|
+
' and run the same command again.',
|
|
27
|
+
'',
|
|
28
|
+
'',
|
|
29
|
+
].join('\n'));
|
|
30
|
+
process.exit(1);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Read only by a Node that can: an old one never parses this line, because it is a string.
|
|
34
|
+
var path = require('path');
|
|
35
|
+
var url = require('url');
|
|
36
|
+
new Function('target', 'return import(target)')(url.pathToFileURL(path.join(__dirname, 'madre.mjs')).href)
|
|
37
|
+
.catch(function (error) {
|
|
38
|
+
process.stderr.write('\n MADRE could not start: ' + (error && error.stack ? error.stack : error) + '\n\n');
|
|
39
|
+
process.exit(1);
|
|
40
|
+
});
|
package/bin/madre.mjs
CHANGED
|
@@ -14,8 +14,13 @@ import { applyConfigToEnv, loadConfig } from '../src/config.mjs';
|
|
|
14
14
|
import { isOnline, runSetup } from '../src/setup.mjs';
|
|
15
15
|
import { parseArgs } from '../src/cli-args.mjs';
|
|
16
16
|
import { ensureSalasProject, isSalasRoom, projectRootFor } from '../src/salas.mjs';
|
|
17
|
+
import { forgetNpxLaunch } from '../src/npm-launch.mjs';
|
|
17
18
|
import { createServer } from 'node:net';
|
|
18
19
|
|
|
20
|
+
// Before anything is run: what npx left about the call that started MADRE is not passed on to the
|
|
21
|
+
// installers, agents and commands MADRE starts (src/npm-launch.mjs).
|
|
22
|
+
forgetNpxLaunch(process.env);
|
|
23
|
+
|
|
19
24
|
const cli = parseArgs(process.argv.slice(2));
|
|
20
25
|
const { command } = cli;
|
|
21
26
|
const option = (name, fallback) => cli.option(name.replace(/^--/, ''), fallback);
|
package/docs/REFERENCE.md
CHANGED
|
@@ -15,7 +15,7 @@ Necesitas Node 22.5 o superior y al menos una de estas CLIs con sesión iniciada
|
|
|
15
15
|
|
|
16
16
|
1. Corre `npx @jossuealcala/madre` desde cualquier carpeta: abre Inicio, con todos tus proyectos y el Coordinador arriba. La primera vez lo acompaña un asistente de tres pasos: conectar los agentes (cada uno con su botón para instalarlo y firmarlo, ahí mismo; una vez para todos los proyectos), agregar los proyectos (eliges carpetas dentro de tu carpeta de usuario; agregar no abre) y abrir los que vas a usar. `npx @jossuealcala/madre start` dentro de una carpeta sigue abriendo ese proyecto directo; si no hay agentes, el proyecto abre igual en Conecta tus agentes para instalarlos y firmarlos.
|
|
17
17
|
2. El proyecto abre en `http://127.0.0.1:4317`. Elige un agente en el selector o escribe `@claude …`. El chip junto a `to @agente` dice en qué modo sale el mensaje; `#1 SOLO CONVERSAR`, solo lectura, es el predeterminado.
|
|
18
|
-
3. Para sumar o reconectar una IA más tarde: Ajustes → Agentes (el botón de ajustes de la barra, o ⌘, / Ctrl+,), donde los agentes viven junto al resto de los ajustes. Codex
|
|
18
|
+
3. Para sumar o reconectar una IA más tarde: Ajustes → Agentes (el botón de ajustes de la barra, o ⌘, / Ctrl+,), donde los agentes viven junto al resto de los ajustes. Codex, Claude Code, Gemini (con tu cuenta de Google) y OpenCode (con GitHub Copilot) se firman con un clic; Gemini y OpenCode también aceptan su llave ahí mismo. Debajo de cada agente, «¿Prefieres tu terminal?» despliega el mismo paso escrito como comando, para quien prefiera hacerlo a mano. MADRE no guarda credenciales de proveedores: cada sesión y cada llave van al archivo de su propio CLI.
|
|
19
19
|
4. Con Ollama, el módulo IA local (Módulos, en la barra) ya está encendido: la memoria se embebe localmente y `@madre` aparece en la fila.
|
|
20
20
|
5. Ajustes → Memoria decide quién destila la memoria y cada cuánto. El Mapa de memoria, desde la cabecera de Diagnóstico, muestra lo que el proyecto recuerda.
|
|
21
21
|
|
|
@@ -25,13 +25,24 @@ npx @jossuealcala/madre setup # el mismo alta, desde la terminal, si la pr
|
|
|
25
25
|
npx @jossuealcala/madre start --no-open --project RUTA
|
|
26
26
|
```
|
|
27
27
|
|
|
28
|
+
**En un servidor, sin pantalla.** MADRE escucha solo en `127.0.0.1` de la máquina donde corre, y es a propósito: no tiene contraseña, y quien llegara a ella podría poner a trabajar a los agentes ahí. No abras sus puertos a la red. Para usarla en un servidor, ábrela por un túnel SSH desde tu computadora. Inicio usa el 4317 y cada proyecto que abras toma el siguiente puerto libre (4318, 4319…), así que el túnel lleva varios; si abres más proyectos, agrega más `-L`.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# en tu computadora: entra al servidor con el túnel
|
|
32
|
+
ssh -L 4317:127.0.0.1:4317 -L 4318:127.0.0.1:4318 -L 4319:127.0.0.1:4319 -L 4320:127.0.0.1:4320 usuario@servidor
|
|
33
|
+
# ya dentro del servidor
|
|
34
|
+
npx @jossuealcala/madre --no-open
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Luego abre `http://127.0.0.1:4317/salas` en el navegador de tu computadora. Los agentes se instalan en el servidor y se conectan desde Ajustes › Agentes: Claude te da un enlace y un código que pegas ahí mismo, y Gemini y OpenCode aceptan su llave. Usa tu usuario y no root: los agentes trabajan con los permisos de quien corre MADRE.
|
|
38
|
+
|
|
28
39
|
**Tres nombres.** **MADRE** es el producto. **Diagnóstico** es su voz operativa: fallas, conexiones, ajustes. **Historial** es el canal sobre el que corre el proyecto: el registro de eventos, el bloque del plan, la carpeta `.pulse/` donde caen los artefactos; esos identificadores conservan su nombre de antes, PULSE.
|
|
29
40
|
|
|
30
41
|
---
|
|
31
42
|
|
|
32
43
|
## EL PROYECTO
|
|
33
44
|
|
|
34
|
-
**Conecta tus agentes.** Sin agentes en línea el proyecto abre en Conecta tus agentes: una tarjeta por agente con su estado real y la única acción que le toca, `INSTALL` o `SIGN IN`. Todo corre en tu máquina, con el comando a la vista, y la salida se transmite a la misma pantalla. Codex
|
|
45
|
+
**Conecta tus agentes.** Sin agentes en línea el proyecto abre en Conecta tus agentes: una tarjeta por agente con su estado real y la única acción que le toca, `INSTALL` o `SIGN IN`. Todo corre en tu máquina, con el comando a la vista, y la salida se transmite a la misma pantalla. Codex, Claude Code y Gemini se firman con un clic porque su CLI abre el navegador (Gemini no tiene comando para firmarse: MADRE selecciona «Login with Google» en sus ajustes, contesta por ti el sí que pide antes de abrir el navegador y detiene la corrida en cuanto el CLI guarda su sesión; si no termina, deja sus archivos como estaban). OpenCode se firma con GitHub Copilot: MADRE corre `opencode auth login -p github-copilot`, elige github.com en su menú y muestra la página y el código de dispositivo que escribes en GitHub. Desde la sala solo se ofrecen los proveedores que permiten este acceso a herramientas de terceros: nunca la suscripción de Claude (Anthropic no lo permite) y, por ahora, tampoco ChatGPT ni GitLab; esos y GitHub Enterprise quedan en `opencode auth login`, en tu terminal. Gemini y OpenCode también aceptan su llave ahí mismo, que MADRE escribe donde ese CLI la busca, con el archivo cerrado a tu usuario y sin guardar copia en ninguna parte, solo desde esta computadora. Cada tarjeta dice además con qué cuenta se firma ese agente y si hay una entrada sin pagar, para que elegir no sea a ciegas. Esa pantalla se repliega en cuanto un agente queda listo y no vuelve: es el primer contacto de un proyecto sin nadie dentro. A partir de ahí los agentes viven en `⚙ CONNECTIONS`, con los mismos botones y, al lado, los modos, los permisos y las llaves de cada agente.
|
|
35
46
|
|
|
36
47
|
**La barra.** La marca con su latido, la raíz del proyecto, los agentes, `LIVE`, las alertas (`DETENER TODO`, versión nueva), `MODULES`, `Diagnóstico`, tema y panel de archivos. Cada esfera de agente lleva el Uso, su consumo: el límite real del proveedor cuando el CLI lo publica, si no, la ventana local de MADRE. Un clic la despliega.
|
|
37
48
|
|
|
@@ -53,6 +64,8 @@ Un segundo clic en la esfera elegida, o el chip `default model ▾`, elige el mo
|
|
|
53
64
|
|
|
54
65
|
**Archivos.** El icono de la derecha abre el árbol del proyecto en solo lectura. El visor numera líneas; clic y Shift+clic seleccionan un rango y `REVIEW WITH` lo manda a un agente. Con **Vista previa** encendida en `MODULES`, HTML, SVG y Markdown se renderizan en un marco sellado en lugar de mostrar su código, con barra atrás/recargar y recarga automática cuando un agente cambia el archivo.
|
|
55
66
|
|
|
67
|
+
**Código.** La tecla `CÓDIGO` de la barra abre el visor junto a la conversación como espacio de código: los archivos del proyecto con su buscador, pestañas (hasta 12, que siguen ahí al recargar) y, sobre el código, la ruta y la función donde está el cursor. ⌘P (Ctrl+P fuera de macOS) abre un archivo por su nombre. Cambiar de pestaña no pierde lo que escribiste: el borrador se queda en su pestaña, marcado con un punto, hasta que guardas o descartas. Lo que un agente cambió en su último turno de `#3` EDITAR queda marcado en su color, con una tarjeta por cambio: **Conservar** (deja de marcarse), **Deshacer** (vuelve a poner lo que había solo en esas líneas; el resto del turno se queda) y **Preguntar por qué** (se lo pregunta al agente en la conversación). Un turno deshecho con `DESHACER`, o líneas que reescribiste tú, ya no se marcan. Al pedir revisión de unas líneas, `REVISAR CON` ofrece Explicar, Mejorar, Escribir pruebas y Arreglar. **Al lado** pone junto al código el Markdown renderizado mientras escribes, o la página HTML recargada al guardar (esta con Vista previa encendida). Lo conservado se guarda en `code-reviewed.json`, junto al registro del proyecto (`GET /api/files/changes`, `POST /api/files/changes/review`).
|
|
68
|
+
|
|
56
69
|
**Tema.** Sol/luna en la barra: automático, claro u oscuro. El claro no brilla; la pantalla de Diagnóstico sigue siendo fósforo.
|
|
57
70
|
|
|
58
71
|
**Idioma.** El proyecto habla **español** por defecto. El botón `EN` de la barra lo pasa a inglés y el navegador lo recuerda; `PULSE_LANGUAGE=en` manda sobre el config en el siguiente arranque. Un idioma es solo cómo se lee: lo que quedó escrito en el ledger conserva las palabras con que se escribió, y al mostrarse se vuelve a decir en el idioma del proyecto.
|
|
@@ -139,6 +152,8 @@ Todo lo dicho fuera de INCÓGNITO queda indexado junto al ledger, en `~/.pulse/r
|
|
|
139
152
|
|
|
140
153
|
**Mapa de memoria.** La memoria en un mapa, detrás del nombre del proyecto: MADRE es un sol rojo que late, cada memoria un planeta en el color de su tipo, unidos por venas que pulsan. Se navega, se lee y solo se puede borrar, con doble confirmación. Ocho toques al corazón activan el Bloqueo temporal y sellan el archivo diez minutos.
|
|
141
154
|
|
|
155
|
+
**Modo neural.** La tecla **Neural** en la cabecera del Mapa de memoria y del Mapa de proyectos dibuja la misma red como las neuronas de un cerebro: cada memoria es un punto de luz en el color de su tipo, los enlaces son axones finos y solo se encienden los caminos por donde viaja un pulso y la neurona a la que llega. El núcleo (y, en el Mapa de proyectos, el Coordinador) es el bulbo central de ese cerebro, con su tallo, y late. Al encenderlo, la luz sale del núcleo y alcanza cada neurona a su paso. Muestra lo mismo y cuesta una fracción: no hay superficies sombreadas punto por punto, ni nebulosa, ni estrellas. Cuando el equipo no le da al mapa los cuadros que necesita, la tecla invita a probarlo una vez por sesión; tú eliges cuándo usar cada modo. La elección se recuerda para Inicio y todos los proyectos (`pulse.neural` en `~/.pulse/looks.json`).
|
|
156
|
+
|
|
142
157
|
**@madre.** Con Ollama y un modelo de chat, la memoria habla: `@madre` responde desde todo el archivo con citas `[#n]`, dice cuando el proyecto nunca discutió algo, no escribe ni ejecuta, y convoca a los agentes si se lo pides. Sus tokens son locales y no cuentan. Cuando existe un modelo entrenado con el proyecto, lo usa.
|
|
143
158
|
|
|
144
159
|
**Ajustes.** Ajustes → Memoria: quién destila, quiénes pueden, cada cuánto, dónde se embebe, cuánto contexto puede ocupar el recall. Todo en `~/.pulse/config.json`, sin reiniciar.
|
|
@@ -153,7 +168,7 @@ El proyecto acumula material de entrenamiento mientras trabajas. `MEMORY` muestr
|
|
|
153
168
|
|
|
154
169
|
`EXPORT DATASET` escribe `train.jsonl` y `valid.jsonl` junto al ledger, redactados. La tarjeta `TRAIN` trae los comandos ya rellenados con tu carpeta de proyecto y el modelo base que cabe en tu máquina. El entrenamiento corre fuera de MADRE, con mlx en Apple Silicon; la receta vive en [`docs/training/`](training/README.md). En cuanto Ollama tiene un modelo `madre-<proyecto>`, `@madre` responde con él y las demás CLIs reciben la indicación de preguntarle primero: la memoria del proyecto deja de costar tokens.
|
|
155
170
|
|
|
156
|
-
**Ollama.** Si corre en la máquina, MADRE lo usa sin configurar nada: búsqueda inteligente local, archivista local, `@madre`. El módulo IA local, en Módulos, muestra servidor, modelos y roles, descarga los recomendados y deja apagar cada rol. `qwen2.5:7b`
|
|
171
|
+
**Ollama.** Si corre en la máquina, MADRE lo usa sin configurar nada: búsqueda inteligente local, archivista local, `@madre`. El módulo IA local, en Módulos, muestra servidor, modelos y roles, descarga los recomendados y deja apagar cada rol. El modelo que propone sale de tu equipo, no de una regla fija: el bloque «Tu computadora» lee el chip Apple y su memoria compartida, la tarjeta NVIDIA y su memoria de video, o solo el procesador, y muestra cada tamaño de Qwen2.5 (0.5B a 72B) con su mínimo para correr y para entrenar (por ejemplo, `qwen2.5:7b` desde 12 GB y `qwen2.5:3b` desde 8 GB). Si hay varios descargados, usa el más grande; prefiere modelos de chat general sobre los `-coder`.
|
|
157
172
|
|
|
158
173
|
---
|
|
159
174
|
|
|
@@ -233,6 +248,7 @@ En un proyecto, la tecla junto a la casa **cambia de proyecto**: su indicador di
|
|
|
233
248
|
| `POST /api/salas/forget` | Quitar un proyecto de MADRE: lo cierra si está abierto, revoca sus conexiones y aparta su `project.json` como `project.forgotten.json`. Nunca el del Coordinador | La página de Inicio con su `Origin`, nunca un proceso |
|
|
234
249
|
| `GET /api/tour` · `POST /api/tour` | El recorrido de 1.0: si se debe el bonjour, si la persona viene de 0.7.2, capítulos leídos, dónde iba, pistas vistas. Se guarda en `~/.pulse/tour.json`, uno por persona, no uno por puerto | Las páginas de esta Mac |
|
|
235
250
|
| `GET /api/looks` · `POST /api/looks` | La apariencia que comparten Inicio y todos los proyectos: tema, acento, fondo y sus dos diales, burbujas y texto. Se guarda en `~/.pulse/looks.json`, una por persona; cada página la lee al abrir y al volver a verse, y la escribe al cambiarla. Lo que Inicio elige para sus tarjetas se queda en su navegador | Las páginas de esta Mac |
|
|
251
|
+
| `GET /api/looks/wallpaper` · `PUT /api/looks/wallpaper` · `POST /api/looks/wallpaper/frame` · `DELETE /api/looks/wallpaper` | Tu propia imagen de fondo (1.0.3): una sola para todas las páginas, en `~/.pulse/wallpaper/`. La página la ajusta (lado mayor de 2880 px), la codifica y saca sus colores para el velo, la malla y el tinte; el servidor guarda solo una imagen WebP, JPEG o PNG de hasta 8 MB, reconocida por sus primeros bytes (nunca SVG), y la sirve con su tipo y `nosniff`. `GET /api/looks` la incluye como `custom`; cada página sigue eligiéndola o no (`pulse.wallpaper` = `custom`) | Las páginas de esta Mac |
|
|
236
252
|
| `GET /api/tour/projects` · `POST /api/tour/projects` | Los proyectos de 0.7.2 que Inicio no puede listar (sin `project.json`) y traer uno: se busca su carpeta por nombre en las carpetas de siempre y se confirma por el hash de su id. Los quitados a propósito no vuelven | Las páginas de esta Mac |
|
|
237
253
|
| `POST /api/override/arm` | La llave de #3 y #4, comprobada por el proyecto (`src/override.mjs`): lo que se escribió, una o dos veces, y un pase para ese agente y ese modo. Un mensaje a #3 o #4 va solo con su pase; sin permiso recordado abre un mensaje, con él, los que quepan en sus minutos. STOP ALL y un reinicio los retiran. Ocho llaves equivocadas en un minuto responden 429. La huella de la frase nunca sale por `GET /api/settings` ni `/api/state` | Las páginas de esta Mac |
|
|
238
254
|
| `GET /api/copilot` · `POST /api/copilot` · `POST /api/copilot/off` | El copiloto: si está encendido y hasta cuándo; encenderlo con la llave de `#3` (`{ minutes, words }`, 30 a 1440 min) y apagarlo. Un mensaje con `copilot: true` en `#3` va sin pase mientras dura; apagado responde 409 con `copilotOff`. Nunca desde un teléfono | Las páginas de esta Mac |
|
|
@@ -241,6 +257,16 @@ En un proyecto, la tecla junto a la casa **cambia de proyecto**: su indicador di
|
|
|
241
257
|
| `GET /api/enlace/memories` | Lo que este proyecto entrega por un contrato: solo `travels()` y los tipos del contrato, redactado; 404 si el contrato no sirve a quien pide, 423 sellado, 429 sobre el tope | Otro proceso de MADRE con la llave del canal (`~/.pulse/credentials/enlaces.json`), sin `Origin` |
|
|
242
258
|
| `POST /api/enlace/ask` | Lo que este proyecto pide a otro; solo para un turno que corre aquí (409 si no); registra `enlace.received` con agente y turno | El servidor `pulse-enlaces` de un turno, con la llave |
|
|
243
259
|
| `POST /api/salas/enlaces/recall` | Marcar o quitar «Incluir siempre» de una conexión | La página de Inicio, nunca un proceso |
|
|
260
|
+
| `GET /api/enlace/corpus` | (D-S15) Todo lo que este proyecto deja aprender al Coordinador por un contrato con `train`: las notas que viajan de los tipos del contrato, hasta 5,000, redactadas; 404 si el contrato no lo permite, 423 sellado, 429 sobre su tope de 6 por hora | La sala del Coordinador, con la llave del canal, sin `Origin` |
|
|
261
|
+
| `POST /api/salas/enlaces/train` | Marcar o quitar «El Coordinador aprende de él»; al quitarla se borra la copia que guardó Salas | La página de Inicio, nunca un proceso |
|
|
262
|
+
| `GET /api/enlace/state` | (D-S16) El estado canónico de Continuidad (AHP+) de este proyecto por un contrato con `state`: objetivo, fase, siguiente paso, bloqueos, último traspaso, decisiones aceptadas y lo abierto, redactado; `state: null` sin `.ahp/`; 404 si el contrato no lo permite, 423 sellado, 429 sobre `perHour` | La sala que lee, con la llave del canal, sin `Origin` |
|
|
263
|
+
| `POST /api/enlace/deliver` | (D-S17) Notas que entrega la sala que lee por un contrato con `deliver` (1 a 5, de los tipos que se sostienen, 600 caracteres); quedan pendientes en la bandeja; 429 sobre `perHour` o con 50 esperando | La sala que lee, con la llave del canal, sin `Origin` |
|
|
264
|
+
| `POST /api/enlace/ask-state`, `POST /api/enlace/send` | El lado que pide de lo anterior, para las herramientas `enlace_state` y `enlace_deliver` de un turno que corre aquí | Un proceso de esta Mac con la llave y un turno vivo |
|
|
265
|
+
| `GET /api/enlace/inbox` · `POST /api/enlace/inbox/decide` | (D-S17) Las notas entregadas a este proyecto, y aceptar o rechazar una; aceptada, entra a la memoria (`origin: 'delivered'`) | La página del proyecto, o un agente suyo en `#3`/`#4` con la llave |
|
|
266
|
+
| `POST /api/salas/enlaces/allow` | (D-S16, D-S17) Marcar o quitar «Comparte su estado» (`state`) o «Recibe notas entregadas» (`deliver`) | La página de Inicio, nunca un proceso |
|
|
267
|
+
| `POST /api/madre/shutdown` | Apagar MADRE: pide a cada proyecto abierto que se cierre como lo cierra Inicio, espera hasta 15 s y se cierra; responde `closed` y `stuck` | Solo la página de MADRE en esta computadora (`Origin` propio), nunca un proceso ni el teléfono |
|
|
268
|
+
| `GET /api/home-layout` · `POST /api/home-layout` | El acomodo de Inicio en `~/.pulse/home.json` (widgets, orden de proyectos, barra fijada, tarjetas), igual desde cualquier puerto | La página de Inicio |
|
|
269
|
+
| `GET /api/x/bishop/exam` · `POST /api/x/bishop/exam` | (D-S18) El último examen del modelo local del Coordinador y si sigue valiendo para el modelo en uso; empezarlo (corre en segundo plano) | La página de Inicio |
|
|
244
270
|
| `POST /api/enlace/notice` | La línea de Diagnóstico al firmar o revocar | El proyecto que sirve Inicio, con la llave |
|
|
245
271
|
|
|
246
272
|
Los contratos viven en `~/.pulse/config.json` bajo `enlaces` y los cruces en `enlaces.jsonl` junto al registro de cada proyecto.
|
package/docs/SDK.md
CHANGED
|
@@ -54,7 +54,7 @@ export default ({ defineModule }) => defineModule({
|
|
|
54
54
|
|
|
55
55
|
## Lo que un módulo puede declarar
|
|
56
56
|
|
|
57
|
-
Esta tabla es **el contrato completo**:
|
|
57
|
+
Esta tabla es **el contrato completo**: 38 campos, ni uno más. Cualquier otro que escribas MADRE
|
|
58
58
|
te lo dice al instalar («no entendí estos campos») en vez de ignorarlo en silencio. Una prueba de
|
|
59
59
|
la suite compara esta tabla contra el código, así que si alguna vez se separan, es un fallo.
|
|
60
60
|
|
|
@@ -66,11 +66,13 @@ la suite compara esta tabla contra el código, así que si alguna vez se separan
|
|
|
66
66
|
| `tracks` | Si tu módulo envuelve algo de fuera, su versión no es la tuya: es la de esa cosa. Declara `{ name, npm }` o `{ name, github }` y devuelve la versión encontrada en `status(ctx)` como `runs: [{ name, version }]`. MADRE muestra esa versión y busca una más nueva sola, una vez al día, con el botón ↻ de la ficha para mirar ahora |
|
|
67
67
|
| `updatePlan(ctx, { latest })` | Cómo se trae esa versión nueva a esta computadora: `{ command, args, display, note, after }`. MADRE enseña `display` y no corre nada hasta que la humana lo leyó; la salida cae en la sala línea por línea. Sin comando, devuelve `{ command: null, note, download }` y la ficha manda a descargarlo |
|
|
68
68
|
| `updates` | `{ url }` https donde publicas **tu propio módulo**. Con eso su ficha trae un botón que va por el archivo, lo verifica igual que una instalación y lo reemplaza si pasa. Si lo instalaste desde un archivo, MADRE recuerda cuál y no necesitas declarar nada: edítalo y pide una copia nueva |
|
|
69
|
-
| `settings` | Valores por defecto. Viven en `~/.pulse/config.json` bajo `modules.<idEnCamelCase>`; `enabled` es el interruptor |
|
|
69
|
+
| `settings` | Valores por defecto. Viven en `~/.pulse/config.json` bajo `modules.<idEnCamelCase>`; `enabled` es el interruptor para todos los proyectos, y `rooms` guarda lo que dijo cada proyecto, que gana. MADRE lo resuelve por ti: `ctx.settings.enabled` ya es el de este proyecto |
|
|
70
70
|
| `status(ctx)` | Qué muestra la tarjeta: `{ status: { installed, detail }, preflight: { ok, problems }, install: { display } }`. `install` se devuelve desde aquí; no es un campo superior del módulo |
|
|
71
71
|
| `status(ctx)` → `runs` | Lo que tu módulo maneja y no es MADRE: `[{ name, version, target }]`. `version` es lo que encontraste en esta computadora (`null` si no está), `target` lo que instalarías. Si coincide con `tracks.name`, esa es la versión de la ficha |
|
|
72
72
|
| `toggle(ctx, payload)` | Sustituye el interruptor por defecto; `confirm: 'texto'` pide confirmación antes de encender |
|
|
73
73
|
| `onToggle(ctx, enabled)` | Reacciona al interruptor |
|
|
74
|
+
| `ready(ctx)` | Lo que pides antes de encender, en un proyecto o en todos (desde el Mercado también): `null` si está listo, `{ status, body: { error } }` si no. Apagar nunca lo pregunta |
|
|
75
|
+
| `footer` | Hasta dos teclas junto a la versión de MADRE, abajo a la derecha, mientras tu módulo está encendido: `[{ icon: 'heart' \| 'star' \| 'link', label, text, action, url }]`. Los textos pueden ser una frase o `{ es, en }`; `url` tiene que ser https y se abre en otra pestaña. MADRE la dibuja: al pasar el ratón muestra `text` y un botón con `action` |
|
|
74
76
|
| `slash` | Comandos `/nombre` que corren en el servidor con tu `ctx` y devuelven `{ ok, title, text }`. La sala los muestra como tarjeta y los agentes los leen |
|
|
75
77
|
| `toolsForTurn(ctx, turn)` | Servidores MCP para el turno de un agente: `[{ name, command, args, env, tools, sends, brief }]`. MADRE los adjunta a la CLI en su corrida aislada y describe `brief` al agente. `turn` trae el agente, el modo, el arriendo, la carpeta, el puerto y `turn.turn`: el id de la respuesta que ese turno escribirá. Si tu servidor llama de vuelta a la sala en nombre del turno, manda ese id; `ctx.room.runningTurn(id)` dice si sigue corriendo y para qué agente |
|
|
76
78
|
| `toolsForTurn` → `sends` | Cuáles de tus herramientas **mandan algo fuera**. El núcleo las retira por debajo de `#4` AIRLOCK: ni se le cuenta al modelo que existen. Ver abajo |
|