engram-sdk 0.5.5 → 0.5.7
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/BADGE.md +47 -0
- package/README.md +13 -1
- package/assets/BADGE-USAGE.md +39 -0
- package/assets/badge-made-with-engram.svg +23 -0
- package/dist/accounts.d.ts +30 -1
- package/dist/accounts.d.ts.map +1 -1
- package/dist/accounts.js +132 -1
- package/dist/accounts.js.map +1 -1
- package/dist/cli.js +267 -11
- package/dist/cli.js.map +1 -1
- package/dist/hosted-client.d.ts +71 -0
- package/dist/hosted-client.d.ts.map +1 -0
- package/dist/hosted-client.js +154 -0
- package/dist/hosted-client.js.map +1 -0
- package/dist/hosted.d.ts.map +1 -1
- package/dist/hosted.js +152 -11
- package/dist/hosted.js.map +1 -1
- package/dist/mcp.js +124 -15
- package/dist/mcp.js.map +1 -1
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +10 -3
- package/dist/store.js.map +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/eval-rescore-judge.mjs +158 -0
- package/package.json +1 -1
package/BADGE.md
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# "Made with Engram" Badge
|
|
2
|
+
|
|
3
|
+
## Badge URLs (via shields.io)
|
|
4
|
+
|
|
5
|
+
### Dark badge (recommended)
|
|
6
|
+

|
|
7
|
+
|
|
8
|
+
### Flat badge
|
|
9
|
+

|
|
10
|
+
|
|
11
|
+
### For-the-badge (large)
|
|
12
|
+

|
|
13
|
+
|
|
14
|
+
## Markdown (copy-paste for READMEs)
|
|
15
|
+
|
|
16
|
+
### Recommended (links to repo)
|
|
17
|
+
```markdown
|
|
18
|
+
[](https://github.com/tstockham96/engram)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Simple (no custom icon)
|
|
22
|
+
```markdown
|
|
23
|
+
[](https://github.com/tstockham96/engram)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### HTML (for websites)
|
|
27
|
+
```html
|
|
28
|
+
<a href="https://github.com/tstockham96/engram">
|
|
29
|
+
<img src="https://img.shields.io/badge/memory-Engram-8B5CF6?style=flat&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iMTAiIG9wYWNpdHk9IjAuMyIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjYiIG9wYWNpdHk9IjAuNiIvPjxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjIuNSIvPjwvc3ZnPg==" alt="Made with Engram" />
|
|
30
|
+
</a>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Adding to Engram's README
|
|
34
|
+
|
|
35
|
+
Add this section to the README:
|
|
36
|
+
|
|
37
|
+
```markdown
|
|
38
|
+
## Badge
|
|
39
|
+
|
|
40
|
+
Using Engram in your project? Add the badge to your README:
|
|
41
|
+
|
|
42
|
+
[](https://github.com/tstockham96/engram)
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
[](https://github.com/tstockham96/engram)
|
|
46
|
+
`` `
|
|
47
|
+
```
|
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
**Universal memory layer for AI agents**
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/engram-sdk)
|
|
6
|
-
[](./LICENSE)
|
|
7
7
|
[](https://github.com/tstockham96/engram)
|
|
8
8
|
|
|
9
9
|
Engram gives AI agents knowledge graphs, consolidation, and spreading activation. Not storage. Understanding.
|
|
@@ -336,6 +336,18 @@ If you're making heavy use of Engram (frequent remembers + recalls in quick succ
|
|
|
336
336
|
|
|
337
337
|
---
|
|
338
338
|
|
|
339
|
+
## Badge
|
|
340
|
+
|
|
341
|
+
Using Engram in your project? Add the badge to your README:
|
|
342
|
+
|
|
343
|
+
[](https://github.com/tstockham96/engram)
|
|
344
|
+
|
|
345
|
+
```markdown
|
|
346
|
+
[](https://github.com/tstockham96/engram)
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
---
|
|
350
|
+
|
|
339
351
|
## License
|
|
340
352
|
|
|
341
353
|
[Business Source License 1.1](./LICENSE)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# "Made with Engram" Badge
|
|
2
|
+
|
|
3
|
+
Add this to your README to show your agent uses Engram for memory.
|
|
4
|
+
|
|
5
|
+
## Markdown
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
[](https://github.com/tstockham96/engram)
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Shields.io (recommended — no hosted SVG needed)
|
|
12
|
+
|
|
13
|
+
```markdown
|
|
14
|
+
[](https://github.com/tstockham96/engram)
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## HTML
|
|
18
|
+
|
|
19
|
+
```html
|
|
20
|
+
<a href="https://github.com/tstockham96/engram">
|
|
21
|
+
<img src="https://img.shields.io/badge/🧠_memory-engram-7c3aed?style=for-the-badge" alt="Memory: Engram" />
|
|
22
|
+
</a>
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Preview
|
|
26
|
+
|
|
27
|
+
The badge renders as a purple shield badge: `🧠 memory | engram`
|
|
28
|
+
|
|
29
|
+
## Variations
|
|
30
|
+
|
|
31
|
+
**Flat style:**
|
|
32
|
+
```markdown
|
|
33
|
+
[](https://github.com/tstockham96/engram)
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
**For-the-badge (larger):**
|
|
37
|
+
```markdown
|
|
38
|
+
[](https://github.com/tstockham96/engram)
|
|
39
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="28" role="img" aria-label="memory: engram">
|
|
2
|
+
<title>memory: engram</title>
|
|
3
|
+
<linearGradient id="s" x2="0" y2="100%">
|
|
4
|
+
<stop offset="0" stop-color="#fff" stop-opacity=".7"/>
|
|
5
|
+
<stop offset=".1" stop-color="#aaa" stop-opacity=".1"/>
|
|
6
|
+
<stop offset=".9" stop-color="#000" stop-opacity=".3"/>
|
|
7
|
+
<stop offset="1" stop-color="#000" stop-opacity=".5"/>
|
|
8
|
+
</linearGradient>
|
|
9
|
+
<clipPath id="r">
|
|
10
|
+
<rect width="180" height="28" rx="5" fill="#fff"/>
|
|
11
|
+
</clipPath>
|
|
12
|
+
<g clip-path="url(#r)">
|
|
13
|
+
<rect width="90" height="28" fill="#555"/>
|
|
14
|
+
<rect x="90" width="90" height="28" fill="#7c3aed"/>
|
|
15
|
+
<rect width="180" height="28" fill="url(#s)"/>
|
|
16
|
+
</g>
|
|
17
|
+
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="11">
|
|
18
|
+
<text x="45" y="19.5" fill="#010101" fill-opacity=".3">🧠 memory</text>
|
|
19
|
+
<text x="45" y="19">🧠 memory</text>
|
|
20
|
+
<text x="135" y="19.5" fill="#010101" fill-opacity=".3">engram</text>
|
|
21
|
+
<text x="135" y="19">engram</text>
|
|
22
|
+
</g>
|
|
23
|
+
</svg>
|
package/dist/accounts.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
export type Plan = 'free' | 'developer' | 'team' | 'business' | 'enterprise';
|
|
1
|
+
export type Plan = 'free' | 'developer' | 'team' | 'business' | 'enterprise' | 'enterprise_trial';
|
|
2
|
+
export type OrgRole = 'admin' | 'member' | 'readonly';
|
|
2
3
|
export interface Account {
|
|
3
4
|
id: string;
|
|
4
5
|
email: string;
|
|
@@ -11,6 +12,20 @@ export interface Account {
|
|
|
11
12
|
usageResetAt: string;
|
|
12
13
|
stripeCustomerId: string | null;
|
|
13
14
|
stripeSubscriptionId: string | null;
|
|
15
|
+
orgId?: string;
|
|
16
|
+
role?: OrgRole;
|
|
17
|
+
}
|
|
18
|
+
export interface Organization {
|
|
19
|
+
id: string;
|
|
20
|
+
name: string;
|
|
21
|
+
plan: Plan;
|
|
22
|
+
createdAt: string;
|
|
23
|
+
trialExpiresAt: string | null;
|
|
24
|
+
allowedDomain: string | null;
|
|
25
|
+
}
|
|
26
|
+
export interface CreateOrgOptions {
|
|
27
|
+
trialDays?: number;
|
|
28
|
+
allowedDomain?: string;
|
|
14
29
|
}
|
|
15
30
|
export declare const PLAN_LIMITS: Record<Plan, {
|
|
16
31
|
memories: number;
|
|
@@ -42,6 +57,20 @@ export declare class AccountStore {
|
|
|
42
57
|
getAccountByStripeCustomerId(customerId: string): Account | null;
|
|
43
58
|
updatePlan(accountId: string, plan: Plan, stripeSubscriptionId?: string): void;
|
|
44
59
|
updateStripeIds(accountId: string, customerId: string, subscriptionId: string): void;
|
|
60
|
+
createOrg(name: string, adminEmail: string, plan: Plan, options?: CreateOrgOptions): {
|
|
61
|
+
org: Organization;
|
|
62
|
+
owner: Account;
|
|
63
|
+
};
|
|
64
|
+
addOrgMember(orgId: string, email: string, role?: OrgRole): Account;
|
|
65
|
+
getOrgById(orgId: string): Organization | null;
|
|
66
|
+
getOrgByAccount(accountId: string): Organization | null;
|
|
67
|
+
getOrgMembers(orgId: string): Account[];
|
|
68
|
+
getVaultId(accountId: string): string;
|
|
69
|
+
isTrialExpired(orgId: string): boolean;
|
|
70
|
+
setTrialExpiry(orgId: string, expiresAt: string): void;
|
|
71
|
+
extendTrial(orgId: string, additionalDays: number): void;
|
|
72
|
+
listOrgs(): Organization[];
|
|
73
|
+
private rowToOrg;
|
|
45
74
|
close(): void;
|
|
46
75
|
private rowToAccount;
|
|
47
76
|
}
|
package/dist/accounts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,IAAI,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
package/dist/accounts.js
CHANGED
|
@@ -6,6 +6,7 @@ export const PLAN_LIMITS = {
|
|
|
6
6
|
team: { memories: 50000, recalls: 25000, consolidations: 100, price: 99 },
|
|
7
7
|
business: { memories: -1, recalls: -1, consolidations: -1, price: 499 },
|
|
8
8
|
enterprise: { memories: -1, recalls: -1, consolidations: -1, price: -1 },
|
|
9
|
+
enterprise_trial: { memories: -1, recalls: -1, consolidations: -1, price: 0 },
|
|
9
10
|
};
|
|
10
11
|
// Basic email format validation (not exhaustive, but catches obvious junk)
|
|
11
12
|
const EMAIL_RE = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
@@ -44,8 +45,27 @@ export class AccountStore {
|
|
|
44
45
|
if (!colNames.has('stripe_subscription_id')) {
|
|
45
46
|
this.db.exec(`ALTER TABLE accounts ADD COLUMN stripe_subscription_id TEXT`);
|
|
46
47
|
}
|
|
48
|
+
// Org membership columns
|
|
49
|
+
if (!colNames.has('org_id')) {
|
|
50
|
+
this.db.exec(`ALTER TABLE accounts ADD COLUMN org_id TEXT`);
|
|
51
|
+
}
|
|
52
|
+
if (!colNames.has('role')) {
|
|
53
|
+
this.db.exec(`ALTER TABLE accounts ADD COLUMN role TEXT`);
|
|
54
|
+
}
|
|
47
55
|
// Index on stripe_customer_id (only safe after column exists)
|
|
48
56
|
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_accounts_stripe_customer ON accounts(stripe_customer_id)`);
|
|
57
|
+
this.db.exec(`CREATE INDEX IF NOT EXISTS idx_accounts_org_id ON accounts(org_id)`);
|
|
58
|
+
// Organizations table
|
|
59
|
+
this.db.exec(`
|
|
60
|
+
CREATE TABLE IF NOT EXISTS organizations (
|
|
61
|
+
id TEXT PRIMARY KEY,
|
|
62
|
+
name TEXT NOT NULL,
|
|
63
|
+
plan TEXT NOT NULL DEFAULT 'enterprise',
|
|
64
|
+
created_at TEXT NOT NULL,
|
|
65
|
+
trial_expires_at TEXT,
|
|
66
|
+
allowed_domain TEXT
|
|
67
|
+
)
|
|
68
|
+
`);
|
|
49
69
|
}
|
|
50
70
|
generateApiKey() {
|
|
51
71
|
return 'eng_live_' + randomBytes(16).toString('hex');
|
|
@@ -149,11 +169,117 @@ export class AccountStore {
|
|
|
149
169
|
this.db.prepare('UPDATE accounts SET stripe_customer_id = ?, stripe_subscription_id = ? WHERE id = ?')
|
|
150
170
|
.run(customerId, subscriptionId, accountId);
|
|
151
171
|
}
|
|
172
|
+
// ============================================================
|
|
173
|
+
// Organization Management
|
|
174
|
+
// ============================================================
|
|
175
|
+
createOrg(name, adminEmail, plan, options = {}) {
|
|
176
|
+
const orgId = randomUUID();
|
|
177
|
+
const now = new Date().toISOString();
|
|
178
|
+
let trialExpiresAt = null;
|
|
179
|
+
if (plan === 'enterprise_trial' && options.trialDays !== undefined) {
|
|
180
|
+
const expiry = new Date(Date.now() + options.trialDays * 24 * 60 * 60 * 1000);
|
|
181
|
+
trialExpiresAt = expiry.toISOString();
|
|
182
|
+
}
|
|
183
|
+
const allowedDomain = options.allowedDomain ?? null;
|
|
184
|
+
// Create the org
|
|
185
|
+
this.db.prepare(`
|
|
186
|
+
INSERT INTO organizations (id, name, plan, created_at, trial_expires_at, allowed_domain)
|
|
187
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
188
|
+
`).run(orgId, name, plan, now, trialExpiresAt, allowedDomain);
|
|
189
|
+
// Create the admin account linked to this org
|
|
190
|
+
const owner = this.createAccount(adminEmail, plan);
|
|
191
|
+
// Link account to org
|
|
192
|
+
this.db.prepare('UPDATE accounts SET org_id = ?, role = ? WHERE id = ?')
|
|
193
|
+
.run(orgId, 'admin', owner.id);
|
|
194
|
+
const org = {
|
|
195
|
+
id: orgId,
|
|
196
|
+
name,
|
|
197
|
+
plan,
|
|
198
|
+
createdAt: now,
|
|
199
|
+
trialExpiresAt,
|
|
200
|
+
allowedDomain,
|
|
201
|
+
};
|
|
202
|
+
return { org, owner: { ...owner, orgId, role: 'admin' } };
|
|
203
|
+
}
|
|
204
|
+
addOrgMember(orgId, email, role = 'member') {
|
|
205
|
+
// Verify org exists
|
|
206
|
+
const org = this.getOrgById(orgId);
|
|
207
|
+
if (!org)
|
|
208
|
+
throw new Error(`Organization ${orgId} not found`);
|
|
209
|
+
// Check domain restriction
|
|
210
|
+
if (org.allowedDomain) {
|
|
211
|
+
const emailDomain = email.split('@')[1]?.toLowerCase();
|
|
212
|
+
if (emailDomain !== org.allowedDomain.toLowerCase()) {
|
|
213
|
+
throw new Error(`Email domain must be @${org.allowedDomain}`);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// Create account with org's plan
|
|
217
|
+
const account = this.createAccount(email, org.plan);
|
|
218
|
+
// Link to org
|
|
219
|
+
this.db.prepare('UPDATE accounts SET org_id = ?, role = ? WHERE id = ?')
|
|
220
|
+
.run(orgId, role, account.id);
|
|
221
|
+
return { ...account, orgId, role };
|
|
222
|
+
}
|
|
223
|
+
getOrgById(orgId) {
|
|
224
|
+
const row = this.db.prepare('SELECT * FROM organizations WHERE id = ?').get(orgId);
|
|
225
|
+
if (!row)
|
|
226
|
+
return null;
|
|
227
|
+
return this.rowToOrg(row);
|
|
228
|
+
}
|
|
229
|
+
getOrgByAccount(accountId) {
|
|
230
|
+
const account = this.getAccountById(accountId);
|
|
231
|
+
if (!account?.orgId)
|
|
232
|
+
return null;
|
|
233
|
+
return this.getOrgById(account.orgId);
|
|
234
|
+
}
|
|
235
|
+
getOrgMembers(orgId) {
|
|
236
|
+
const rows = this.db.prepare('SELECT * FROM accounts WHERE org_id = ? ORDER BY created_at').all(orgId);
|
|
237
|
+
return rows.map(r => this.rowToAccount(r));
|
|
238
|
+
}
|
|
239
|
+
getVaultId(accountId) {
|
|
240
|
+
const row = this.db.prepare('SELECT org_id FROM accounts WHERE id = ?').get(accountId);
|
|
241
|
+
// If account belongs to an org, use org ID as vault key; otherwise use account ID
|
|
242
|
+
return row?.org_id ?? accountId;
|
|
243
|
+
}
|
|
244
|
+
isTrialExpired(orgId) {
|
|
245
|
+
const org = this.getOrgById(orgId);
|
|
246
|
+
if (!org)
|
|
247
|
+
return false;
|
|
248
|
+
if (!org.trialExpiresAt)
|
|
249
|
+
return false; // Paid plans never expire
|
|
250
|
+
return new Date(org.trialExpiresAt) < new Date();
|
|
251
|
+
}
|
|
252
|
+
setTrialExpiry(orgId, expiresAt) {
|
|
253
|
+
this.db.prepare('UPDATE organizations SET trial_expires_at = ? WHERE id = ?')
|
|
254
|
+
.run(expiresAt, orgId);
|
|
255
|
+
}
|
|
256
|
+
extendTrial(orgId, additionalDays) {
|
|
257
|
+
const org = this.getOrgById(orgId);
|
|
258
|
+
if (!org)
|
|
259
|
+
throw new Error(`Organization ${orgId} not found`);
|
|
260
|
+
const currentExpiry = org.trialExpiresAt ? new Date(org.trialExpiresAt) : new Date();
|
|
261
|
+
const newExpiry = new Date(currentExpiry.getTime() + additionalDays * 24 * 60 * 60 * 1000);
|
|
262
|
+
this.setTrialExpiry(orgId, newExpiry.toISOString());
|
|
263
|
+
}
|
|
264
|
+
listOrgs() {
|
|
265
|
+
const rows = this.db.prepare('SELECT * FROM organizations ORDER BY created_at DESC').all();
|
|
266
|
+
return rows.map(r => this.rowToOrg(r));
|
|
267
|
+
}
|
|
268
|
+
rowToOrg(row) {
|
|
269
|
+
return {
|
|
270
|
+
id: row.id,
|
|
271
|
+
name: row.name,
|
|
272
|
+
plan: row.plan,
|
|
273
|
+
createdAt: row.created_at,
|
|
274
|
+
trialExpiresAt: row.trial_expires_at ?? null,
|
|
275
|
+
allowedDomain: row.allowed_domain ?? null,
|
|
276
|
+
};
|
|
277
|
+
}
|
|
152
278
|
close() {
|
|
153
279
|
this.db.close();
|
|
154
280
|
}
|
|
155
281
|
rowToAccount(row) {
|
|
156
|
-
|
|
282
|
+
const account = {
|
|
157
283
|
id: row.id,
|
|
158
284
|
email: row.email,
|
|
159
285
|
apiKey: row.api_key,
|
|
@@ -166,6 +292,11 @@ export class AccountStore {
|
|
|
166
292
|
stripeCustomerId: row.stripe_customer_id ?? null,
|
|
167
293
|
stripeSubscriptionId: row.stripe_subscription_id ?? null,
|
|
168
294
|
};
|
|
295
|
+
if (row.org_id)
|
|
296
|
+
account.orgId = row.org_id;
|
|
297
|
+
if (row.role)
|
|
298
|
+
account.role = row.role;
|
|
299
|
+
return account;
|
|
169
300
|
}
|
|
170
301
|
}
|
|
171
302
|
//# sourceMappingURL=accounts.js.map
|
package/dist/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../src/accounts.ts"],"names":[],"mappings":"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"}
|