aimeat 1.4.2 → 1.4.4

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.
File without changes
@@ -23,6 +23,7 @@ downloadedFrom: {{BASE_URL}}/llms.txt
23
23
  9. **Connecting: MCP** - OAuth 2.1 for MCP platforms
24
24
  10. **API Rules** - Response envelope, error format
25
25
  11. **Endpoints** - Full API reference with request/response examples
26
+ 12. **Knowledge Packages** - Manifest-first discovery, typed links, import/export (in Endpoints section)
26
27
 
27
28
  ## For AI assistants: How to help the user
28
29
 
@@ -1349,51 +1350,146 @@ GET {{BASE_URL}}/v1/catalogue/knowledge — Knowledge catalogue
1349
1350
  GET {{BASE_URL}}/v1/catalogue/knowledge/:id — Knowledge package detail
1350
1351
  → 200: { "ok": true, "data": { ... } }
1351
1352
 
1352
- ### Knowledge — Knowledge packages
1353
+ ### Knowledge — Structured knowledge packages
1353
1354
 
1354
- Import, link, and share structured knowledge packages.
1355
+ Knowledge packages are the primary way to share structured information on AIMEAT.
1356
+ A package has a **manifest** (metadata: name, tags, content type, synthesis level,
1357
+ entry list) and **entries** (the actual content, each with its own visibility).
1355
1358
 
1356
- #### Endpoints
1359
+ #### Key design: manifest-first discovery
1357
1360
 
1358
- POST {{BASE_URL}}/v1/knowledge/import Import knowledge package
1359
- Authorization: Bearer <jwt>
1360
- Body: { "package": { "name": "My Knowledge", "version": "1.0.0", "content_type": "reference", "entries": [{ "key": "intro", "title": "Introduction", "value": "..." }], "tags": ["tutorial"], "sharing": { "catalog_listed": true } } }
1361
- → 201: { "ok": true, "data": { "package_id": "...", "manifest_key": "...", "entries_created": 3, "catalog_listed": true } }
1361
+ Packages are designed to be browsed cheaply. Never load all entries up front.
1362
1362
 
1363
- GET {{BASE_URL}}/v1/knowledge/:idKnowledge package detail
1364
- 200: { "ok": true, "data": { "package_id": "...", "manifest": {...}, "tags": [...] } }
1363
+ 1. `GET /v1/catalogue/knowledge`browse manifests (no auth, metadata only)
1364
+ 2. `GET /v1/knowledge/{id}` one package's manifest + entry keys
1365
+ 3. `GET /v1/memory/{entry-key}` — one specific entry's content
1365
1366
 
1366
- POST {{BASE_URL}}/v1/knowledge/:id/link Link knowledge package
1367
- Authorization: Bearer <jwt>
1368
- 200: { "ok": true, "data": { ... } }
1367
+ Decide from the manifest what to drill into. The `entries[]` array in the manifest
1368
+ contains `key`, `title`, and `visibility` for each entry, but not the content body.
1369
+ Only fetch entries whose titles match what you actually need.
1370
+
1371
+ #### Manifest structure
1372
+
1373
+ ```json
1374
+ {
1375
+ "type": "knowledge-package",
1376
+ "name": "AIMEAT Heritage: BBS, FidoNet, Usenet, BitTorrent",
1377
+ "version": "1.0.0",
1378
+ "author": "alice",
1379
+ "content_type": "research",
1380
+ "tags": ["bbs", "fidonet", "usenet", "federation"],
1381
+ "language": "en",
1382
+ "maturity": "published",
1383
+ "synthesis": {
1384
+ "level": "synthesized",
1385
+ "description": "Combined author's notes with RFC section references"
1386
+ },
1387
+ "entries": [
1388
+ { "key": "packages/{id}/overview", "title": "Heritage Overview", "visibility": "public" },
1389
+ { "key": "packages/{id}/fidonet", "title": "FidoNet Federation", "visibility": "public" },
1390
+ { "key": "packages/{id}/private-notes", "title": "Author Notes", "visibility": "private" }
1391
+ ],
1392
+ "sharing": { "catalog_listed": true, "allow_clone": true, "license": "CC-BY-4.0", "morsel_price": 0 }
1393
+ }
1394
+ ```
1395
+
1396
+ - **content_type**: idea, research, plan, dataset, document, tutorial, collection, article, story, fiction, guide
1397
+ - **synthesis.level**: original (human wrote it), assisted (AI organized), synthesized (AI combined sources), ai-generated
1398
+ - **maturity**: draft, review, published
1399
+ - **entry visibility**: private (only creator), owner (creator's agents), public (anyone)
1400
+
1401
+ #### Typed links between packages
1402
+
1403
+ Packages link to each other with typed relationships:
1404
+
1405
+ | Relation | When to follow |
1406
+ |----------|---------------|
1407
+ | extends | Deeper detail on a topic |
1408
+ | supersedes | Load newer version, ignore older |
1409
+ | contradicts | Balanced view or conflict flag |
1410
+ | derived-from | Origins or methodology |
1411
+ | references | Citation or source |
1412
+ | related-to | Broad topical connection (last resort) |
1413
+
1414
+ Hard limit: follow at most 2 levels deep, then ask the user.
1369
1415
 
1370
- DELETE {{BASE_URL}}/v1/knowledge/:id/link — Unlink knowledge
1416
+ #### Endpoints
1417
+
1418
+ GET {{BASE_URL}}/v1/catalogue/knowledge — Browse public packages (no auth)
1419
+ Query: ?content_type=research&tags=federation&language=en&sort=recent&page=1&limit=20
1420
+ → 200: { "ok": true, "data": { "packages": [{ "package_id": "0d2ad8dd-...", "name": "AIMEAT Heritage: BBS, FidoNet, Usenet, BitTorrent", "author": "alice", "content_type": "research", "tags": ["bbs", "fidonet"], "language": "en", "maturity": "published", "synthesis_level": "synthesized", "entries_count": 6, "public_entries": 5, "catalog_listed": true, "created_at": "..." }], "total": 2, "page": 1 } }
1421
+
1422
+ GET {{BASE_URL}}/v1/knowledge/:id — Get package manifest (no auth for public)
1423
+ → 200: { "ok": true, "data": { "package_id": "0d2ad8dd-...", "manifest": { "type": "knowledge-package", "name": "...", "entries": [{ "key": "packages/0d2ad8dd-.../overview", "title": "Heritage Overview", "visibility": "public" }], ... }, "tags": ["bbs", "fidonet", "knowledge-package"], "created_at": "...", "updated_at": "..." } }
1424
+
1425
+ GET {{BASE_URL}}/v1/memory/:key — Read one entry's content (auth required)
1426
+ Authorization: Bearer <jwt>
1427
+ Example: GET /v1/memory/packages%2F0d2ad8dd-...%2Foverview
1428
+ → 200: { "ok": true, "data": { "key": "packages/0d2ad8dd-.../overview", "value": { "title": "Heritage Overview", "summary": "The AIMEAT design did not start from a blank page...", "body": "Four heritage systems contribute directly: FidoNet, Usenet, BitTorrent, BBS culture..." }, "visibility": "public" } }
1429
+
1430
+ POST {{BASE_URL}}/v1/knowledge/import — Import a knowledge package
1431
+ Authorization: Bearer <jwt>
1432
+ Body:
1433
+ {
1434
+ "package": {
1435
+ "type": "knowledge-package",
1436
+ "name": "My Research Notes",
1437
+ "version": "1.0.0",
1438
+ "content_type": "research",
1439
+ "tags": ["context-engineering", "agents"],
1440
+ "language": "en",
1441
+ "maturity": "draft",
1442
+ "synthesis": { "level": "assisted", "description": "User provided notes, AI organized into sections" },
1443
+ "entries": [
1444
+ { "key": "findings", "title": "Main Findings", "visibility": "public",
1445
+ "references": [{ "url": "https://example.com/paper", "title": "Source Paper", "accessed": "2026-05-16", "verified": true }] },
1446
+ { "key": "notes", "title": "Personal Notes", "visibility": "private" }
1447
+ ],
1448
+ "sharing": { "catalog_listed": true, "allow_clone": true, "morsel_price": 0 }
1449
+ },
1450
+ "entry_data": {
1451
+ "findings": { "title": "Main Findings", "summary": "...", "body": "..." },
1452
+ "notes": { "title": "Personal Notes", "body": "..." }
1453
+ }
1454
+ }
1455
+ → 201: { "ok": true, "data": { "package_id": "a1b2c3d4-...", "manifest_key": "packages/a1b2c3d4-.../manifest", "entries_created": 2, "catalog_listed": true } }
1456
+
1457
+ GET {{BASE_URL}}/v1/knowledge/:id/links — List typed links
1458
+ → 200: { "ok": true, "data": { "links": [{ "source": "packages/abc.../manifest", "target": "packages/def.../manifest", "relation": "extends", "description": "Deeper analysis of federation patterns" }] } }
1459
+
1460
+ POST {{BASE_URL}}/v1/knowledge/:id/link — Create a link to another package
1371
1461
  Authorization: Bearer <jwt>
1462
+ Body: { "target": "packages/def.../manifest", "relation": "extends", "description": "Deeper analysis" }
1372
1463
  → 200: { "ok": true, "data": { ... } }
1373
1464
 
1374
- GET {{BASE_URL}}/v1/knowledge/:id/linksList links
1465
+ DELETE {{BASE_URL}}/v1/knowledge/:id/linkRemove a link
1375
1466
  Authorization: Bearer <jwt>
1467
+ Body: { "target": "packages/def.../manifest" }
1376
1468
  → 200: { "ok": true, "data": { ... } }
1377
1469
 
1378
1470
  PATCH {{BASE_URL}}/v1/knowledge/:id/sharing — Update sharing settings
1379
1471
  Authorization: Bearer <jwt>
1380
- → 200: { "ok": true, "data": { ... } }
1472
+ Body: { "catalog_listed": true, "allow_clone": true }
1473
+ → 200: { "ok": true, "data": { "package_id": "...", "sharing": { "catalog_listed": true, "allow_clone": true, "morsel_price": 0 } } }
1381
1474
 
1382
- POST {{BASE_URL}}/v1/knowledge/:id/cloneClone knowledge package
1475
+ PATCH {{BASE_URL}}/v1/knowledge/:id/entries/:entryKey/visibilityChange entry visibility
1383
1476
  Authorization: Bearer <jwt>
1384
- → 200: { "ok": true, "data": { ... } }
1477
+ Body: { "visibility": "public" }
1478
+ → 200: { "ok": true, "data": { "package_id": "...", "entry_key": "...", "visibility": "public" } }
1385
1479
 
1386
- GET {{BASE_URL}}/v1/knowledge/:id/exportExport knowledge
1480
+ POST {{BASE_URL}}/v1/knowledge/:id/cloneClone public entries to your namespace
1387
1481
  Authorization: Bearer <jwt>
1388
- → 200: { "ok": true, "data": { ... } }
1482
+ → 200: { "ok": true, "data": { "package_id": "new-id-...", "entries_cloned": 5 } }
1389
1483
 
1390
- POST {{BASE_URL}}/v1/knowledge/contributeContribute knowledge
1391
- Authorization: Bearer <jwt>
1392
- → 200: { "ok": true, "data": { ... } }
1484
+ GET {{BASE_URL}}/v1/knowledge/:id/exportExport package as portable JSON
1485
+ → 200: { "ok": true, "data": { "package": {...}, "entry_data": {...} } }
1393
1486
 
1394
- GET {{BASE_URL}}/v1/knowledge/reputation — Knowledge reputation
1395
- Authorization: Bearer <jwt>
1396
- 200: { "ok": true, "data": { ... } }
1487
+ #### Rules
1488
+ - Browsing the catalogue and reading public package manifests requires no authentication
1489
+ - Reading individual entry content requires authentication (GET /v1/memory/:key)
1490
+ - Entry visibility is per-entry: a public package can have private entries
1491
+ - Cloning copies only public entries to your own namespace
1492
+ - References must have a string URL (use "offline:book-title" for non-web sources, never null)
1397
1493
 
1398
1494
  ### Extensions — V8 sandbox extensions
1399
1495
 
@@ -501,11 +501,11 @@ body {
501
501
  <div class="wiz-card">
502
502
  <label style="margin-bottom:.75rem; display:block;" data-i18n="wizard.welcome.chooseLang">Choose your language</label>
503
503
  <div class="lang-cards">
504
- <div class="lang-card selected" data-lang="en" onclick="setLang('en')">
504
+ <div class="lang-card selected" data-lang="en">
505
505
  <div class="lang-flag">EN</div>
506
506
  <div class="lang-name">English</div>
507
507
  </div>
508
- <div class="lang-card" data-lang="fi" onclick="setLang('fi')">
508
+ <div class="lang-card" data-lang="fi">
509
509
  <div class="lang-flag">FI</div>
510
510
  <div class="lang-name">Suomi</div>
511
511
  <div class="lang-native">Finnish</div>
@@ -514,7 +514,7 @@ body {
514
514
  </div>
515
515
 
516
516
  <div class="btn-row">
517
- <button class="btn btn-primary" onclick="goToStep(2)" data-i18n="wizard.btn.getStarted">Get Started</button>
517
+ <button class="btn btn-primary" data-go-step="2" data-i18n="wizard.btn.getStarted">Get Started</button>
518
518
  </div>
519
519
  </div>
520
520
 
@@ -535,14 +535,14 @@ body {
535
535
  <div class="field">
536
536
  <label data-i18n="wizard.node.typeLabel">Node Type</label>
537
537
  <div class="radio-group">
538
- <label class="radio-card selected" onclick="selectRadio(this,'nodeType','personal')">
538
+ <label class="radio-card selected">
539
539
  <input type="radio" name="nodeType" value="personal" checked>
540
540
  <div>
541
541
  <div class="radio-label" data-i18n="wizard.node.typePersonal">Personal</div>
542
542
  <div class="radio-desc" data-i18n="wizard.node.typePersonalDesc">For your own data and AI agents</div>
543
543
  </div>
544
544
  </label>
545
- <label class="radio-card" onclick="selectRadio(this,'nodeType','full')">
545
+ <label class="radio-card">
546
546
  <input type="radio" name="nodeType" value="full">
547
547
  <div>
548
548
  <div class="radio-label" data-i18n="wizard.node.typeFull">Full</div>
@@ -560,8 +560,8 @@ body {
560
560
  </div>
561
561
 
562
562
  <div class="btn-row">
563
- <button class="btn btn-secondary" onclick="goToStep(1)" data-i18n="wizard.btn.back">Back</button>
564
- <button class="btn btn-primary" onclick="goToStep(3)" data-i18n="wizard.btn.next">Next</button>
563
+ <button class="btn btn-secondary" data-go-step="1" data-i18n="wizard.btn.back">Back</button>
564
+ <button class="btn btn-primary" data-go-step="3" data-i18n="wizard.btn.next">Next</button>
565
565
  </div>
566
566
  </div>
567
567
 
@@ -577,13 +577,13 @@ body {
577
577
  <div class="field">
578
578
  <label data-i18n="wizard.identity.modeLabel">Identity Mode</label>
579
579
  <div class="radio-group">
580
- <label class="radio-card selected" onclick="selectRadio(this,'identityMode','create'); toggleIdentityMode()">
580
+ <label class="radio-card selected">
581
581
  <input type="radio" name="identityMode" value="create" checked>
582
582
  <div>
583
583
  <div class="radio-label" data-i18n="wizard.identity.modeCreate">Create new identity</div>
584
584
  </div>
585
585
  </label>
586
- <label class="radio-card" onclick="selectRadio(this,'identityMode','import'); toggleIdentityMode()">
586
+ <label class="radio-card">
587
587
  <input type="radio" name="identityMode" value="import">
588
588
  <div>
589
589
  <div class="radio-label" data-i18n="wizard.identity.modeImport">Import existing identity</div>
@@ -669,8 +669,8 @@ body {
669
669
  </div>
670
670
 
671
671
  <div class="btn-row">
672
- <button class="btn btn-secondary" onclick="goToStep(2)" data-i18n="wizard.btn.back">Back</button>
673
- <button class="btn btn-primary" onclick="validateAndGoStep4()" data-i18n="wizard.btn.next">Next</button>
672
+ <button class="btn btn-secondary" data-go-step="2" data-i18n="wizard.btn.back">Back</button>
673
+ <button class="btn btn-primary" id="validateBtn" data-i18n="wizard.btn.next">Next</button>
674
674
  </div>
675
675
  </div>
676
676
 
@@ -685,14 +685,14 @@ body {
685
685
  <div class="field">
686
686
  <label data-i18n="wizard.network.anchorLabel">Anchor Operator</label>
687
687
  <div class="radio-group">
688
- <label class="radio-card selected" onclick="selectRadio(this,'anchor','standalone'); toggleGenesis()">
688
+ <label class="radio-card selected">
689
689
  <input type="radio" name="anchor" value="standalone" checked>
690
690
  <div>
691
691
  <div class="radio-label" data-i18n="wizard.network.standalone">Standalone (no federation)</div>
692
692
  <div class="radio-desc" data-i18n="wizard.network.standaloneDesc">Independent node, no connection to other nodes</div>
693
693
  </div>
694
694
  </label>
695
- <label class="radio-card" onclick="selectRadio(this,'anchor','custom'); toggleGenesis()">
695
+ <label class="radio-card">
696
696
  <input type="radio" name="anchor" value="custom">
697
697
  <div>
698
698
  <div class="radio-label" data-i18n="wizard.network.custom">Custom anchor</div>
@@ -711,8 +711,8 @@ body {
711
711
  </div>
712
712
 
713
713
  <div class="btn-row">
714
- <button class="btn btn-secondary" onclick="goToStep(3)" data-i18n="wizard.btn.back">Back</button>
715
- <button class="btn btn-primary" onclick="goToStep(5)" data-i18n="wizard.btn.next">Next</button>
714
+ <button class="btn btn-secondary" data-go-step="3" data-i18n="wizard.btn.back">Back</button>
715
+ <button class="btn btn-primary" data-go-step="5" data-i18n="wizard.btn.next">Next</button>
716
716
  </div>
717
717
  </div>
718
718
 
@@ -763,8 +763,8 @@ body {
763
763
  <div id="initResult"></div>
764
764
 
765
765
  <div class="btn-row" id="step5Buttons">
766
- <button class="btn btn-secondary" onclick="goToStep(4)" data-i18n="wizard.btn.back">Back</button>
767
- <button class="btn btn-success" id="initBtn" onclick="doInit()" data-i18n="wizard.btn.initialize">Initialize Node</button>
766
+ <button class="btn btn-secondary" data-go-step="4" data-i18n="wizard.btn.back">Back</button>
767
+ <button class="btn btn-success" id="initBtn" data-i18n="wizard.btn.initialize">Initialize Node</button>
768
768
  </div>
769
769
  </div>
770
770
 
@@ -1314,6 +1314,39 @@ function escapeHtml(str) {
1314
1314
  if (browserLang.startsWith('fi')) {
1315
1315
  setLang('fi');
1316
1316
  }
1317
+
1318
+ // ── Event bindings (CSP-safe, no inline onclick) ──
1319
+
1320
+ // Language cards
1321
+ document.querySelectorAll('.lang-card').forEach(function(card) {
1322
+ card.addEventListener('click', function() {
1323
+ setLang(card.getAttribute('data-lang'));
1324
+ });
1325
+ });
1326
+
1327
+ // Step navigation buttons
1328
+ document.querySelectorAll('[data-go-step]').forEach(function(btn) {
1329
+ btn.addEventListener('click', function() {
1330
+ goToStep(parseInt(btn.getAttribute('data-go-step')));
1331
+ });
1332
+ });
1333
+
1334
+ // Radio card selection (all radio groups)
1335
+ document.querySelectorAll('.radio-card').forEach(function(card) {
1336
+ card.addEventListener('click', function() {
1337
+ var radio = card.querySelector('input[type="radio"]');
1338
+ if (!radio) return;
1339
+ selectRadio(card, radio.name, radio.value);
1340
+ if (radio.name === 'identityMode') toggleIdentityMode();
1341
+ if (radio.name === 'anchor') toggleGenesis();
1342
+ });
1343
+ });
1344
+
1345
+ // Validate step 3 and go to step 4
1346
+ document.getElementById('validateBtn').addEventListener('click', validateAndGoStep4);
1347
+
1348
+ // Initialize node
1349
+ document.getElementById('initBtn').addEventListener('click', doInit);
1317
1350
  })();
1318
1351
  </script>
1319
1352
  </body>
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-guards.d.ts","sourceRoot":"","sources":["../../../src/server-bootstrap/middleware-guards.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAczE;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE;IAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;CAAE,EACjD,wBAAwB,EAAE,MAAM,IAAI,GACnC;IAAE,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;IAAC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CAAE,CA4G1H"}
1
+ {"version":3,"file":"middleware-guards.d.ts","sourceRoot":"","sources":["../../../src/server-bootstrap/middleware-guards.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAI9B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAczE;;;GAGG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,MAAM,EAAE,YAAY,EACpB,OAAO,EAAE,OAAO,EAChB,gBAAgB,EAAE;IAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;CAAE,EACjD,wBAAwB,EAAE,MAAM,IAAI,GACnC;IAAE,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;IAAC,cAAc,EAAE,OAAO,CAAC,cAAc,CAAC;IAAC,wBAAwB,EAAE,MAAM,IAAI,CAAA;CAAE,CAkH1H"}
@@ -111,7 +111,13 @@ export function setupGuards(app, config, storage, maintenanceCache, invalidateHa
111
111
  ];
112
112
  const wizardPath = wizardCandidates.find(p => existsSync(p));
113
113
  if (wizardPath) {
114
- res.type('text/html').send(readFileSync(wizardPath, 'utf-8'));
114
+ let html = readFileSync(wizardPath, 'utf-8');
115
+ const nonce = res.locals.cspNonce || '';
116
+ if (nonce) {
117
+ html = html.replace(/<script(?=[ >])/g, `<script nonce="${nonce}"`);
118
+ html = html.replace(/<style(?=[ >])/g, `<style nonce="${nonce}"`);
119
+ }
120
+ res.type('text/html').send(html);
115
121
  }
116
122
  else {
117
123
  res.redirect(302, '/v1/setup/status');
@@ -1 +1 @@
1
- {"version":3,"file":"middleware-guards.js","sourceRoot":"","sources":["../../../src/server-bootstrap/middleware-guards.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware-guards.js","sourceRoot":"","sources":["../../../src/server-bootstrap/middleware-guards.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aimeat",
3
- "version": "1.4.2",
3
+ "version": "1.4.4",
4
4
  "description": "AIME AT - AI Memory Exchange and Action Transfer - reference implementation",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -16,81 +16,6 @@
16
16
  "docs/AIMEAT_Help_Prompt.md",
17
17
  "docs/csm-examples/"
18
18
  ],
19
- "scripts": {
20
- "dev": "tsx scripts/kill-port.ts && node --env-file=.env --import tsx src/index.ts start",
21
- "dev:watch": "tsx watch src/index.ts",
22
- "build": "tsc && node --input-type=module -e \"import fs from 'fs';fs.cpSync('locales','dist/locales',{recursive:true});fs.cpSync('public','dist/public',{recursive:true});fs.cpSync('src/static','dist/static',{recursive:true});fs.cpSync('.env.example','dist/.env.example');\"",
23
- "start": "node --env-file=.env dist/src/index.js start",
24
- "test": "vitest run",
25
- "test:coverage": "vitest run --coverage",
26
- "test:watch": "vitest",
27
- "test:api": "tsx test/api-full.ts",
28
- "test:e2e:admin-features": "tsx test/e2e-admin-features.ts",
29
- "test:e2e:anonymous": "tsx test/e2e-anonymous.ts",
30
- "test:e2e:auth-lib": "tsx test/e2e-auth-lib.ts",
31
- "test:e2e:board-ttl": "tsx test/e2e-board-ttl.ts",
32
- "test:e2e:calibrator": "tsx test/e2e-calibrator.ts",
33
- "test:e2e:concurrency": "tsx test/e2e-concurrency.ts",
34
- "test:e2e:disputes": "tsx test/e2e-disputes.ts",
35
- "test:e2e:extensions": "tsx test/e2e-extensions.ts",
36
- "test:e2e:federation": "tsx test/e2e-federation.ts",
37
- "test:e2e:hooks": "tsx test/e2e-hooks.ts",
38
- "test:e2e:knowledge": "tsx test/e2e-knowledge.ts",
39
- "test:e2e:libs": "tsx test/e2e-libs.ts",
40
- "test:e2e:mcp": "tsx test/e2e-mcp.ts",
41
- "test:e2e:micro-memory": "tsx test/e2e-micro-memory.ts",
42
- "test:e2e:packages": "tsx test/e2e-packages.ts",
43
- "test:e2e:personal-node": "tsx test/e2e-personal-node.ts",
44
- "test:e2e:phase0": "tsx test/e2e-phase0.ts",
45
- "test:e2e:portal": "tsx test/e2e-portal.ts",
46
- "test:e2e:security": "tsx test/e2e-security.ts",
47
- "test:e2e:storage-visibility": "tsx test/e2e-storage-visibility.ts",
48
- "test:e2e:cortex-ui": "tsx test/cortex-ui-e2e.ts",
49
- "test:e2e:docker": "bash test/docker/e2e-runner.sh --all",
50
- "test:e2e:docker:full": "bash test/docker/e2e-runner.sh test/api-full.ts",
51
- "test:e2e:docker:admin-features": "bash test/docker/e2e-runner.sh test/e2e-admin-features.ts",
52
- "test:e2e:docker:anonymous": "bash test/docker/e2e-runner.sh test/e2e-anonymous.ts",
53
- "test:e2e:docker:auth-lib": "bash test/docker/e2e-runner.sh test/e2e-auth-lib.ts",
54
- "test:e2e:docker:board-ttl": "bash test/docker/e2e-runner.sh test/e2e-board-ttl.ts",
55
- "test:e2e:docker:concurrency": "bash test/docker/e2e-runner.sh test/e2e-concurrency.ts",
56
- "test:e2e:docker:disputes": "bash test/docker/e2e-runner.sh test/e2e-disputes.ts",
57
- "test:e2e:docker:extensions": "bash test/docker/e2e-runner.sh test/e2e-extensions.ts",
58
- "test:e2e:docker:federation": "bash test/docker/e2e-runner.sh test/e2e-federation.ts",
59
- "test:e2e:docker:hooks": "bash test/docker/e2e-runner.sh test/e2e-hooks.ts",
60
- "test:e2e:docker:knowledge": "bash test/docker/e2e-runner.sh test/e2e-knowledge.ts",
61
- "test:e2e:docker:libs": "bash test/docker/e2e-runner.sh test/e2e-libs.ts",
62
- "test:e2e:docker:mcp": "bash test/docker/e2e-runner.sh test/e2e-mcp.ts",
63
- "test:e2e:docker:micro-memory": "bash test/docker/e2e-runner.sh test/e2e-micro-memory.ts",
64
- "test:e2e:docker:packages": "bash test/docker/e2e-runner.sh test/e2e-packages.ts",
65
- "test:e2e:docker:personal-node": "bash test/docker/e2e-runner.sh test/e2e-personal-node.ts",
66
- "test:e2e:docker:phase0": "bash test/docker/e2e-runner.sh test/e2e-phase0.ts",
67
- "test:e2e:docker:portal": "bash test/docker/e2e-runner.sh test/e2e-portal.ts",
68
- "test:e2e:docker:security": "bash test/docker/e2e-runner.sh test/e2e-security.ts",
69
- "test:e2e:docker:storage-visibility": "bash test/docker/e2e-runner.sh test/e2e-storage-visibility.ts",
70
- "test:e2e": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts",
71
- "test:e2e:memory": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts",
72
- "test:e2e:sqlite": "node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts",
73
- "test:e2e:mongodb": "node --env-file=.env.test.mongodb --import tsx test/run-e2e-ci.ts",
74
- "test:playwright": "node --env-file=.env.test.memory --import tsx test/run-playwright-ci.ts",
75
- "test:playwright:memory": "node --env-file=.env.test.memory --import tsx test/run-playwright-ci.ts",
76
- "test:playwright:sqlite": "node --env-file=.env.test.sqlite --import tsx test/run-playwright-ci.ts",
77
- "test:playwright:mongodb": "node --env-file=.env.test.mongodb --import tsx test/run-playwright-ci.ts",
78
- "test:e2e:all-backends": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts --all && node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts --all && node --env-file=.env.test.mongodb --import tsx test/run-e2e-ci.ts --all",
79
- "test:e2e:ci": "node --import tsx test/run-e2e-ci.ts --all",
80
- "test:e2e:ci:filter": "node --import tsx test/run-e2e-ci.ts",
81
- "lint": "eslint src/",
82
- "typecheck": "tsc --noEmit",
83
- "generate:types": "openapi-typescript ../openapi.yaml -o src/generated/api-types.ts",
84
- "db:generate": "prisma generate",
85
- "db:push": "prisma db push",
86
- "db:init": "node --env-file=.env --import tsx scripts/db-init.ts",
87
- "db:reset": "node --env-file=.env --import tsx scripts/db-reset.ts",
88
- "seed:examples": "node --import tsx scripts/seed-digital-signage.ts",
89
- "indexnow": "node --env-file=.env --import tsx scripts/indexnow.ts",
90
- "audit": "pnpm audit --audit-level=high",
91
- "audit:fix": "pnpm audit --fix",
92
- "prepublishOnly": "pnpm build"
93
- },
94
19
  "keywords": [
95
20
  "aimeat",
96
21
  "ai",
@@ -109,7 +34,6 @@
109
34
  "bugs": {
110
35
  "url": "https://github.com/miikkij/aimeat-protocol/issues"
111
36
  },
112
- "packageManager": "pnpm@10.27.0",
113
37
  "dependencies": {
114
38
  "@clack/prompts": "^1.0.1",
115
39
  "@modelcontextprotocol/sdk": "^1.27.1",
@@ -174,22 +98,78 @@
174
98
  "optionalDependencies": {
175
99
  "@prisma/client": "^6.19.2"
176
100
  },
177
- "pnpm": {
178
- "onlyBuiltDependencies": [
179
- "@prisma/client",
180
- "@prisma/engines",
181
- "better-sqlite3",
182
- "esbuild",
183
- "prisma"
184
- ],
185
- "overrides": {
186
- "hono": ">=4.12.14",
187
- "@hono/node-server": ">=1.19.13",
188
- "express-rate-limit": ">=8.3.0",
189
- "minimatch@>=5.0.0 <5.1.8": "5.1.8",
190
- "js-yaml@>=4.0.0 <4.1.1": "4.1.1",
191
- "path-to-regexp@>=8.0.0 <8.4.0": "8.4.0",
192
- "lodash@>=4.0.0 <4.18.0": "4.18.0"
193
- }
101
+ "scripts": {
102
+ "dev": "tsx scripts/kill-port.ts && node --env-file=.env --import tsx src/index.ts start",
103
+ "dev:watch": "tsx watch src/index.ts",
104
+ "build": "tsc && node --input-type=module -e \"import fs from 'fs';fs.cpSync('locales','dist/locales',{recursive:true});fs.cpSync('public','dist/public',{recursive:true});fs.cpSync('src/static','dist/static',{recursive:true});fs.cpSync('.env.example','dist/.env.example');\"",
105
+ "start": "node --env-file=.env dist/src/index.js start",
106
+ "test": "vitest run",
107
+ "test:coverage": "vitest run --coverage",
108
+ "test:watch": "vitest",
109
+ "test:api": "tsx test/api-full.ts",
110
+ "test:e2e:admin-features": "tsx test/e2e-admin-features.ts",
111
+ "test:e2e:anonymous": "tsx test/e2e-anonymous.ts",
112
+ "test:e2e:auth-lib": "tsx test/e2e-auth-lib.ts",
113
+ "test:e2e:board-ttl": "tsx test/e2e-board-ttl.ts",
114
+ "test:e2e:calibrator": "tsx test/e2e-calibrator.ts",
115
+ "test:e2e:concurrency": "tsx test/e2e-concurrency.ts",
116
+ "test:e2e:disputes": "tsx test/e2e-disputes.ts",
117
+ "test:e2e:extensions": "tsx test/e2e-extensions.ts",
118
+ "test:e2e:federation": "tsx test/e2e-federation.ts",
119
+ "test:e2e:hooks": "tsx test/e2e-hooks.ts",
120
+ "test:e2e:knowledge": "tsx test/e2e-knowledge.ts",
121
+ "test:e2e:libs": "tsx test/e2e-libs.ts",
122
+ "test:e2e:mcp": "tsx test/e2e-mcp.ts",
123
+ "test:e2e:micro-memory": "tsx test/e2e-micro-memory.ts",
124
+ "test:e2e:packages": "tsx test/e2e-packages.ts",
125
+ "test:e2e:personal-node": "tsx test/e2e-personal-node.ts",
126
+ "test:e2e:phase0": "tsx test/e2e-phase0.ts",
127
+ "test:e2e:portal": "tsx test/e2e-portal.ts",
128
+ "test:e2e:security": "tsx test/e2e-security.ts",
129
+ "test:e2e:storage-visibility": "tsx test/e2e-storage-visibility.ts",
130
+ "test:e2e:cortex-ui": "tsx test/cortex-ui-e2e.ts",
131
+ "test:e2e:docker": "bash test/docker/e2e-runner.sh --all",
132
+ "test:e2e:docker:full": "bash test/docker/e2e-runner.sh test/api-full.ts",
133
+ "test:e2e:docker:admin-features": "bash test/docker/e2e-runner.sh test/e2e-admin-features.ts",
134
+ "test:e2e:docker:anonymous": "bash test/docker/e2e-runner.sh test/e2e-anonymous.ts",
135
+ "test:e2e:docker:auth-lib": "bash test/docker/e2e-runner.sh test/e2e-auth-lib.ts",
136
+ "test:e2e:docker:board-ttl": "bash test/docker/e2e-runner.sh test/e2e-board-ttl.ts",
137
+ "test:e2e:docker:concurrency": "bash test/docker/e2e-runner.sh test/e2e-concurrency.ts",
138
+ "test:e2e:docker:disputes": "bash test/docker/e2e-runner.sh test/e2e-disputes.ts",
139
+ "test:e2e:docker:extensions": "bash test/docker/e2e-runner.sh test/e2e-extensions.ts",
140
+ "test:e2e:docker:federation": "bash test/docker/e2e-runner.sh test/e2e-federation.ts",
141
+ "test:e2e:docker:hooks": "bash test/docker/e2e-runner.sh test/e2e-hooks.ts",
142
+ "test:e2e:docker:knowledge": "bash test/docker/e2e-runner.sh test/e2e-knowledge.ts",
143
+ "test:e2e:docker:libs": "bash test/docker/e2e-runner.sh test/e2e-libs.ts",
144
+ "test:e2e:docker:mcp": "bash test/docker/e2e-runner.sh test/e2e-mcp.ts",
145
+ "test:e2e:docker:micro-memory": "bash test/docker/e2e-runner.sh test/e2e-micro-memory.ts",
146
+ "test:e2e:docker:packages": "bash test/docker/e2e-runner.sh test/e2e-packages.ts",
147
+ "test:e2e:docker:personal-node": "bash test/docker/e2e-runner.sh test/e2e-personal-node.ts",
148
+ "test:e2e:docker:phase0": "bash test/docker/e2e-runner.sh test/e2e-phase0.ts",
149
+ "test:e2e:docker:portal": "bash test/docker/e2e-runner.sh test/e2e-portal.ts",
150
+ "test:e2e:docker:security": "bash test/docker/e2e-runner.sh test/e2e-security.ts",
151
+ "test:e2e:docker:storage-visibility": "bash test/docker/e2e-runner.sh test/e2e-storage-visibility.ts",
152
+ "test:e2e": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts",
153
+ "test:e2e:memory": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts",
154
+ "test:e2e:sqlite": "node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts",
155
+ "test:e2e:mongodb": "node --env-file=.env.test.mongodb --import tsx test/run-e2e-ci.ts",
156
+ "test:playwright": "node --env-file=.env.test.memory --import tsx test/run-playwright-ci.ts",
157
+ "test:playwright:memory": "node --env-file=.env.test.memory --import tsx test/run-playwright-ci.ts",
158
+ "test:playwright:sqlite": "node --env-file=.env.test.sqlite --import tsx test/run-playwright-ci.ts",
159
+ "test:playwright:mongodb": "node --env-file=.env.test.mongodb --import tsx test/run-playwright-ci.ts",
160
+ "test:e2e:all-backends": "node --env-file=.env.test.memory --import tsx test/run-e2e-ci.ts --all && node --env-file=.env.test.sqlite --import tsx test/run-e2e-ci.ts --all && node --env-file=.env.test.mongodb --import tsx test/run-e2e-ci.ts --all",
161
+ "test:e2e:ci": "node --import tsx test/run-e2e-ci.ts --all",
162
+ "test:e2e:ci:filter": "node --import tsx test/run-e2e-ci.ts",
163
+ "lint": "eslint src/",
164
+ "typecheck": "tsc --noEmit",
165
+ "generate:types": "openapi-typescript ../openapi.yaml -o src/generated/api-types.ts",
166
+ "db:generate": "prisma generate",
167
+ "db:push": "prisma db push",
168
+ "db:init": "node --env-file=.env --import tsx scripts/db-init.ts",
169
+ "db:reset": "node --env-file=.env --import tsx scripts/db-reset.ts",
170
+ "seed:examples": "node --import tsx scripts/seed-digital-signage.ts",
171
+ "indexnow": "node --env-file=.env --import tsx scripts/indexnow.ts",
172
+ "audit": "pnpm audit --audit-level=high",
173
+ "audit:fix": "pnpm audit --fix"
194
174
  }
195
- }
175
+ }