@nxuss/lemma 1.45.0 → 1.45.1

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/README.md CHANGED
@@ -114,6 +114,39 @@ Without a license, Pro tools aren't advertised to the model at all. Full list:
114
114
 
115
115
  ---
116
116
 
117
+ ## Lemma Cloud: one Brain for the whole team
118
+
119
+ **Open now to founder teams.** What one developer's agent learns, every teammate's agent can recall,
120
+ still checked against the code on each machine: a memory goes stale on *your* checkout when the code
121
+ it depends on changed there.
122
+
123
+ - A shared team Brain: memories stored by one agent are recalled by everyone's.
124
+ - Lemma Pro included for every developer on the team.
125
+ - A web console with activity, shared memories, team and billing.
126
+ - Opt-in and narrow: Cloud stores the memories your agents choose to share (their text, with secrets
127
+ redacted first, and the hashes of the files they depend on). Never your repository.
128
+
129
+ | Plan | Founder price | List price | Seats |
130
+ | :--- | :--- | :--- | :--- |
131
+ | **Vinel**, for product teams | $19 / month | $39 | Up to 10 developers |
132
+ | **Regnum**, for high-performance teams | $79 / month | $149 | Up to 50 developers |
133
+
134
+ Founder price locked for 12 months, 14-day free trial, 10 founder spots per plan. Prices in USD,
135
+ before tax. **Apply at [lemma.nxus.studio/#cloud](https://lemma.nxus.studio/#cloud).**
136
+
137
+ Once your team has a key, each developer connects once:
138
+
139
+ ```bash
140
+ lemma cloud login # verifies the key and saves it owner-only in ~/.lemma/cloud.json
141
+ lemma cloud status
142
+ ```
143
+
144
+ Commit a secret-free `.lemma-cloud.json` (`lemma cloud link --url <your team's URL>`) and teammates
145
+ need nothing but `lemma cloud login`. Prefer to share without a server? `brain_team` (Pro) shares
146
+ verified memories through your own repo.
147
+
148
+ ---
149
+
117
150
  ## Setup
118
151
 
119
152
  | Client | How |
@@ -197,4 +230,4 @@ project, never served across projects.
197
230
 
198
231
  ---
199
232
 
200
- MIT © Nxus Studio · [lemma.nxus.studio](https://lemma.nxus.studio) · [Lemma Pro](https://lemma.nxus.studio/upgrade)
233
+ MIT © Nxus Studio · [lemma.nxus.studio](https://lemma.nxus.studio) · [Lemma Pro](https://lemma.nxus.studio/upgrade) · [Lemma Cloud](https://lemma.nxus.studio/#cloud)
@@ -10,6 +10,8 @@ export interface LoginMailer {
10
10
  export interface ResendConfig {
11
11
  apiKey: string;
12
12
  from: string;
13
+ /** Where replies go. The sender can be an address with no mailbox (hello@), so replies need a real one. */
14
+ replyTo?: string;
13
15
  fetchImpl?: typeof fetch;
14
16
  }
15
17
  export declare function resendMailerFromEnv(env?: NodeJS.ProcessEnv): LoginMailer | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,GAAG,SAAS,CAIjG;AAED,qBAAa,YAAa,YAAW,WAAW;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBACZ,MAAM,EAAE,YAAY;IAI3C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB9E"}
1
+ {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,2GAA2G;IAC3G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,GAAG,SAAS,CAKjG;AAED,qBAAa,YAAa,YAAW,WAAW;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBACZ,MAAM,EAAE,YAAY;IAI3C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB9E"}
@@ -6,7 +6,8 @@ function resendMailerFromEnv(env = process.env) {
6
6
  const apiKey = env.RESEND_API_KEY;
7
7
  if (!apiKey)
8
8
  return undefined;
9
- return new ResendMailer({ apiKey, from: env.CONSOLE_MAIL_FROM || 'Lemma <hello@nxus.studio>' });
9
+ const replyTo = env.CONSOLE_MAIL_REPLY_TO?.trim() || undefined;
10
+ return new ResendMailer({ apiKey, from: env.CONSOLE_MAIL_FROM || 'Lemma <hello@nxus.studio>', replyTo });
10
11
  }
11
12
  class ResendMailer {
12
13
  constructor(config) {
@@ -20,6 +21,7 @@ class ResendMailer {
20
21
  body: JSON.stringify({
21
22
  from: this.config.from,
22
23
  to: [to],
24
+ ...(this.config.replyTo ? { reply_to: this.config.replyTo } : {}),
23
25
  subject: 'Your Lemma Cloud sign-in link / Tu enlace de acceso a Lemma Cloud',
24
26
  text: `Sign in to Lemma Cloud (valid ${minutes} minutes, works once):\n${link}\n\n` +
25
27
  `Entra a Lemma Cloud (válido ${minutes} minutos, funciona una vez):\n${link}\n\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":";;;AAgBA,kDAIC;AAJD,SAAgB,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,2BAA2B,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,MAAa,YAAY;IAEvB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,OAAe;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC9F,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,EAAE,EAAE,CAAC,EAAE,CAAC;gBACR,OAAO,EAAE,mEAAmE;gBAC5E,IAAI,EACF,iCAAiC,OAAO,2BAA2B,IAAI,MAAM;oBAC7E,+BAA+B,OAAO,iCAAiC,IAAI,MAAM;oBACjF,yFAAyF;aAC5F,CAAC;SACH,CAAC,CAAC;QACH,iGAAiG;QACjG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAvBD,oCAuBC"}
1
+ {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":";;;AAkBA,kDAKC;AALD,SAAgB,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC/D,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,2BAA2B,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,MAAa,YAAY;IAEvB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,OAAe;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC9F,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,EAAE,EAAE,CAAC,EAAE,CAAC;gBACR,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,EAAE,mEAAmE;gBAC5E,IAAI,EACF,iCAAiC,OAAO,2BAA2B,IAAI,MAAM;oBAC7E,+BAA+B,OAAO,iCAAiC,IAAI,MAAM;oBACjF,yFAAyF;aAC5F,CAAC;SACH,CAAC,CAAC;QACH,iGAAiG;QACjG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;CACF;AAxBD,oCAwBC"}
@@ -10,6 +10,8 @@ export interface LoginMailer {
10
10
  export interface ResendConfig {
11
11
  apiKey: string;
12
12
  from: string;
13
+ /** Where replies go. The sender can be an address with no mailbox (hello@), so replies need a real one. */
14
+ replyTo?: string;
13
15
  fetchImpl?: typeof fetch;
14
16
  }
15
17
  export declare function resendMailerFromEnv(env?: NodeJS.ProcessEnv): LoginMailer | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,GAAG,SAAS,CAIjG;AAED,qBAAa,YAAa,YAAW,WAAW;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBACZ,MAAM,EAAE,YAAY;IAI3C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAiB9E"}
1
+ {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,2GAA2G;IAC3G,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,WAAW,GAAG,SAAS,CAKjG;AAED,qBAAa,YAAa,YAAW,WAAW;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM;IADnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;gBACZ,MAAM,EAAE,YAAY;IAI3C,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAkB9E"}
@@ -2,7 +2,8 @@ export function resendMailerFromEnv(env = process.env) {
2
2
  const apiKey = env.RESEND_API_KEY;
3
3
  if (!apiKey)
4
4
  return undefined;
5
- return new ResendMailer({ apiKey, from: env.CONSOLE_MAIL_FROM || 'Lemma <hello@nxus.studio>' });
5
+ const replyTo = env.CONSOLE_MAIL_REPLY_TO?.trim() || undefined;
6
+ return new ResendMailer({ apiKey, from: env.CONSOLE_MAIL_FROM || 'Lemma <hello@nxus.studio>', replyTo });
6
7
  }
7
8
  export class ResendMailer {
8
9
  constructor(config) {
@@ -16,6 +17,7 @@ export class ResendMailer {
16
17
  body: JSON.stringify({
17
18
  from: this.config.from,
18
19
  to: [to],
20
+ ...(this.config.replyTo ? { reply_to: this.config.replyTo } : {}),
19
21
  subject: 'Your Lemma Cloud sign-in link / Tu enlace de acceso a Lemma Cloud',
20
22
  text: `Sign in to Lemma Cloud (valid ${minutes} minutes, works once):\n${link}\n\n` +
21
23
  `Entra a Lemma Cloud (válido ${minutes} minutos, funciona una vez):\n${link}\n\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAgBA,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,2BAA2B,EAAE,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,OAAO,YAAY;IAEvB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,OAAe;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC9F,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,EAAE,EAAE,CAAC,EAAE,CAAC;gBACR,OAAO,EAAE,mEAAmE;gBAC5E,IAAI,EACF,iCAAiC,OAAO,2BAA2B,IAAI,MAAM;oBAC7E,+BAA+B,OAAO,iCAAiC,IAAI,MAAM;oBACjF,yFAAyF;aAC5F,CAAC;SACH,CAAC,CAAC;QACH,iGAAiG;QACjG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}
1
+ {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../../../src/cloud/console/mailer.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,mBAAmB,CAAC,MAAyB,OAAO,CAAC,GAAG;IACtE,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC;IAClC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,SAAS,CAAC;IAC/D,OAAO,IAAI,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,iBAAiB,IAAI,2BAA2B,EAAE,OAAO,EAAE,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,OAAO,YAAY;IAEvB,YAA6B,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAC/C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,EAAU,EAAE,IAAY,EAAE,OAAe;QAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,+BAA+B,EAAE;YAChE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC9F,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,EAAE,EAAE,CAAC,EAAE,CAAC;gBACR,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,OAAO,EAAE,mEAAmE;gBAC5E,IAAI,EACF,iCAAiC,OAAO,2BAA2B,IAAI,MAAM;oBAC7E,+BAA+B,OAAO,iCAAiC,IAAI,MAAM;oBACjF,yFAAyF;aAC5F,CAAC;SACH,CAAC,CAAC;QACH,iGAAiG;QACjG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxuss/lemma",
3
- "version": "1.45.0",
3
+ "version": "1.45.1",
4
4
  "description": "Local MCP server that gives coding agents a verifiable project memory, trims what enters their context, and masks secrets — with honest accounting of what it saves and costs.",
5
5
  "main": "./dist/cjs/index.js",
6
6
  "module": "./dist/esm/index.js",