n2-soul 9.0.0 → 9.0.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.
Files changed (103) hide show
  1. package/package.json +1 -1
  2. package/dist/lib/agent-registry.d.ts +0 -17
  3. package/dist/lib/agent-registry.js +0 -67
  4. package/dist/lib/agent-registry.js.map +0 -1
  5. package/dist/lib/config.d.ts +0 -3
  6. package/dist/lib/config.default.d.ts +0 -3
  7. package/dist/lib/config.default.js +0 -66
  8. package/dist/lib/config.default.js.map +0 -1
  9. package/dist/lib/config.js +0 -36
  10. package/dist/lib/config.js.map +0 -1
  11. package/dist/lib/context.d.ts +0 -15
  12. package/dist/lib/context.js +0 -35
  13. package/dist/lib/context.js.map +0 -1
  14. package/dist/lib/core-memory.d.ts +0 -34
  15. package/dist/lib/core-memory.js +0 -102
  16. package/dist/lib/core-memory.js.map +0 -1
  17. package/dist/lib/entity-memory.d.ts +0 -58
  18. package/dist/lib/entity-memory.js +0 -160
  19. package/dist/lib/entity-memory.js.map +0 -1
  20. package/dist/lib/intercom-log.d.ts +0 -41
  21. package/dist/lib/intercom-log.js +0 -163
  22. package/dist/lib/intercom-log.js.map +0 -1
  23. package/dist/lib/kv-cache/agent-adapter.d.ts +0 -44
  24. package/dist/lib/kv-cache/agent-adapter.js +0 -132
  25. package/dist/lib/kv-cache/agent-adapter.js.map +0 -1
  26. package/dist/lib/kv-cache/backup.d.ts +0 -64
  27. package/dist/lib/kv-cache/backup.js +0 -329
  28. package/dist/lib/kv-cache/backup.js.map +0 -1
  29. package/dist/lib/kv-cache/compressor.d.ts +0 -20
  30. package/dist/lib/kv-cache/compressor.js +0 -92
  31. package/dist/lib/kv-cache/compressor.js.map +0 -1
  32. package/dist/lib/kv-cache/embedding.d.ts +0 -39
  33. package/dist/lib/kv-cache/embedding.js +0 -159
  34. package/dist/lib/kv-cache/embedding.js.map +0 -1
  35. package/dist/lib/kv-cache/index.d.ts +0 -82
  36. package/dist/lib/kv-cache/index.js +0 -302
  37. package/dist/lib/kv-cache/index.js.map +0 -1
  38. package/dist/lib/kv-cache/schema.d.ts +0 -60
  39. package/dist/lib/kv-cache/schema.js +0 -85
  40. package/dist/lib/kv-cache/schema.js.map +0 -1
  41. package/dist/lib/kv-cache/snapshot.d.ts +0 -42
  42. package/dist/lib/kv-cache/snapshot.js +0 -220
  43. package/dist/lib/kv-cache/snapshot.js.map +0 -1
  44. package/dist/lib/kv-cache/sqlite-store.d.ts +0 -66
  45. package/dist/lib/kv-cache/sqlite-store.js +0 -311
  46. package/dist/lib/kv-cache/sqlite-store.js.map +0 -1
  47. package/dist/lib/kv-cache/tier-manager.d.ts +0 -71
  48. package/dist/lib/kv-cache/tier-manager.js +0 -132
  49. package/dist/lib/kv-cache/tier-manager.js.map +0 -1
  50. package/dist/lib/kv-cache/token-saver.d.ts +0 -19
  51. package/dist/lib/kv-cache/token-saver.js +0 -99
  52. package/dist/lib/kv-cache/token-saver.js.map +0 -1
  53. package/dist/lib/paths.d.ts +0 -6
  54. package/dist/lib/paths.js +0 -33
  55. package/dist/lib/paths.js.map +0 -1
  56. package/dist/lib/soul-engine.d.ts +0 -41
  57. package/dist/lib/soul-engine.js +0 -220
  58. package/dist/lib/soul-engine.js.map +0 -1
  59. package/dist/lib/utils.d.ts +0 -16
  60. package/dist/lib/utils.js +0 -174
  61. package/dist/lib/utils.js.map +0 -1
  62. package/dist/sequences/boot.d.ts +0 -13
  63. package/dist/sequences/boot.js +0 -153
  64. package/dist/sequences/boot.js.map +0 -1
  65. package/dist/sequences/end.d.ts +0 -3
  66. package/dist/sequences/end.js +0 -190
  67. package/dist/sequences/end.js.map +0 -1
  68. package/dist/sequences/work.d.ts +0 -17
  69. package/dist/sequences/work.js +0 -240
  70. package/dist/sequences/work.js.map +0 -1
  71. package/dist/tools/brain.d.ts +0 -3
  72. package/dist/tools/brain.js +0 -93
  73. package/dist/tools/brain.js.map +0 -1
  74. package/dist/tools/kv-cache.d.ts +0 -3
  75. package/dist/tools/kv-cache.js +0 -163
  76. package/dist/tools/kv-cache.js.map +0 -1
  77. package/index.js +0 -38
  78. package/lib/agent-registry.js +0 -60
  79. package/lib/config.default.js +0 -84
  80. package/lib/config.example.js +0 -28
  81. package/lib/config.js +0 -28
  82. package/lib/context.js +0 -34
  83. package/lib/core-memory.js +0 -137
  84. package/lib/entity-memory.js +0 -219
  85. package/lib/intercom-log.js +0 -187
  86. package/lib/kv-cache/agent-adapter.js +0 -192
  87. package/lib/kv-cache/backup.js +0 -357
  88. package/lib/kv-cache/compressor.js +0 -130
  89. package/lib/kv-cache/embedding.js +0 -205
  90. package/lib/kv-cache/index.js +0 -400
  91. package/lib/kv-cache/schema.js +0 -124
  92. package/lib/kv-cache/snapshot.js +0 -320
  93. package/lib/kv-cache/sqlite-store.js +0 -402
  94. package/lib/kv-cache/tier-manager.js +0 -248
  95. package/lib/kv-cache/token-saver.js +0 -153
  96. package/lib/paths.js +0 -29
  97. package/lib/soul-engine.js +0 -234
  98. package/lib/utils.js +0 -167
  99. package/sequences/boot.js +0 -127
  100. package/sequences/end.js +0 -157
  101. package/sequences/work.js +0 -260
  102. package/tools/brain.js +0 -122
  103. package/tools/kv-cache.js +0 -225
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n2-soul",
3
- "version": "9.0.0",
3
+ "version": "9.0.1",
4
4
  "description": "AI agent memory & session orchestrator for MCP — persistent KV-Cache, Soul Board, immutable Ledger",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,17 +0,0 @@
1
- export interface AgentInfo {
2
- id: string;
3
- name: string;
4
- provider: string;
5
- model: string;
6
- soul: string;
7
- rank: string;
8
- enabled: boolean;
9
- }
10
- /** Detect agents directory dynamically (project-local first, cross-platform) */
11
- export declare function detectAgentsDir(): string | null;
12
- /** List all registered agents from the agents directory */
13
- export declare function listAgents(agentsDir: string | null): AgentInfo[];
14
- /** Find agent by name (case-insensitive) */
15
- export declare function findAgent(agentsDir: string | null, name: string): AgentInfo | null;
16
- /** Read global config */
17
- export declare function readGlobalConfig(agentsDir: string | null): Record<string, unknown> | null;
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.detectAgentsDir = detectAgentsDir;
7
- exports.listAgents = listAgents;
8
- exports.findAgent = findAgent;
9
- exports.readGlobalConfig = readGlobalConfig;
10
- // Soul v9.0 — Dynamic agent registry. Detects agents from N2 Browser config.
11
- const fs_1 = __importDefault(require("fs"));
12
- const path_1 = __importDefault(require("path"));
13
- const utils_1 = require("./utils");
14
- const paths_1 = require("./paths");
15
- /** Detect agents directory dynamically (project-local first, cross-platform) */
16
- function detectAgentsDir() {
17
- const candidates = [
18
- process.env.N2_AGENTS_DIR,
19
- (0, paths_1.getAgentsDir)(),
20
- path_1.default.join(process.cwd(), '_data', 'agents'),
21
- ];
22
- for (const dir of candidates) {
23
- if (dir && fs_1.default.existsSync(dir))
24
- return dir;
25
- }
26
- return null;
27
- }
28
- /** List all registered agents from the agents directory */
29
- function listAgents(agentsDir) {
30
- if (!agentsDir || !fs_1.default.existsSync(agentsDir))
31
- return [];
32
- try {
33
- return fs_1.default.readdirSync(agentsDir)
34
- .filter(f => f.endsWith('.json') && f !== 'global.json')
35
- .map((f) => {
36
- const data = (0, utils_1.readJson)(path_1.default.join(agentsDir, f));
37
- if (!data)
38
- return null;
39
- return {
40
- id: data.id || path_1.default.basename(f, '.json'),
41
- name: data.name || 'unknown',
42
- provider: data.provider || 'unknown',
43
- model: data.model || 'unknown',
44
- soul: data.soul || '',
45
- rank: data.rank || '?',
46
- enabled: data.enabled !== false,
47
- };
48
- })
49
- .filter((a) => a !== null && a.enabled);
50
- }
51
- catch (e) {
52
- (0, utils_1.logError)('listAgents', e);
53
- return [];
54
- }
55
- }
56
- /** Find agent by name (case-insensitive) */
57
- function findAgent(agentsDir, name) {
58
- const agents = listAgents(agentsDir);
59
- return agents.find(a => a.name.toLowerCase() === name.toLowerCase()) || null;
60
- }
61
- /** Read global config */
62
- function readGlobalConfig(agentsDir) {
63
- if (!agentsDir)
64
- return null;
65
- return (0, utils_1.readJson)(path_1.default.join(agentsDir, 'global.json'));
66
- }
67
- //# sourceMappingURL=agent-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/lib/agent-registry.ts"],"names":[],"mappings":";;;;;AA2BA,0CAWC;AAGD,gCAuBC;AAGD,8BAGC;AAGD,4CAGC;AA5ED,6EAA6E;AAC7E,4CAAoB;AACpB,gDAAwB;AACxB,mCAA6C;AAC7C,mCAAuC;AAsBvC,gFAAgF;AAChF,SAAgB,eAAe;IAC7B,MAAM,UAAU,GAA2B;QACzC,OAAO,CAAC,GAAG,CAAC,aAAa;QACzB,IAAA,oBAAY,GAAE;QACd,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC;KAC5C,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,GAAG,IAAI,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,2DAA2D;AAC3D,SAAgB,UAAU,CAAC,SAAwB;IACjD,IAAI,CAAC,SAAS,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACvD,IAAI,CAAC;QACH,OAAO,YAAE,CAAC,WAAW,CAAC,SAAS,CAAC;aAC7B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,aAAa,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,EAAoB,EAAE;YAC3B,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAgB,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,IAAI;gBAAE,OAAO,IAAI,CAAC;YACvB,OAAO;gBACL,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,cAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC;gBACxC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;gBAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,SAAS;gBACpC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;gBAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,KAAK;aAChC,CAAC;QACJ,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAkB,EAAE,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAA,gBAAQ,EAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,4CAA4C;AAC5C,SAAgB,SAAS,CAAC,SAAwB,EAAE,IAAY;IAC9D,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,CAAC;AAC/E,CAAC;AAED,yBAAyB;AACzB,SAAgB,gBAAgB,CAAC,SAAwB;IACvD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,OAAO,IAAA,gBAAQ,EAA0B,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;AAChF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { SoulConfig } from '../types';
2
- declare const config: SoulConfig;
3
- export default config;
@@ -1,3 +0,0 @@
1
- import type { SoulConfig } from '../types';
2
- declare const defaults: SoulConfig;
3
- export default defaults;
@@ -1,66 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- // Soul v9.0 — Default config. Zero hardcoded paths, all dynamic.
7
- const path_1 = __importDefault(require("path"));
8
- const defaults = {
9
- SOUL_ROOT: path_1.default.resolve(__dirname, '..', '..'),
10
- DATA_DIR: path_1.default.resolve(__dirname, '..', '..', 'data'),
11
- TIMEZONE: 'Asia/Seoul',
12
- AGENTS_DIR: null,
13
- LANG: process.env.N2_LANG || 'en',
14
- SEARCH: {
15
- maxDepth: 6,
16
- minKeywordLength: 2,
17
- previewLength: 200,
18
- recencyBonus: 10,
19
- defaultMaxResults: 10,
20
- semanticEnabled: false,
21
- semanticWeight: 0.3,
22
- },
23
- FILE_TREE: {
24
- hidePaths: ['test', '_data', '_history', 'soul/data/kv-cache'],
25
- compactPaths: ['soul/data/projects', 'soul/data/memory'],
26
- childLimit: 20,
27
- },
28
- WORK: {
29
- sessionTtlHours: 24,
30
- maxDecisions: 20,
31
- },
32
- KV_CACHE: {
33
- enabled: true,
34
- autoSaveOnWorkEnd: true,
35
- autoLoadOnBoot: true,
36
- backend: 'json',
37
- maxSnapshotsPerProject: 50,
38
- maxSnapshotAgeDays: 30,
39
- compressionTarget: 1000,
40
- snapshotDir: null,
41
- sqliteDir: null,
42
- tokenBudget: {
43
- bootContext: 2000,
44
- searchResult: 500,
45
- progressiveLoad: true,
46
- },
47
- tier: {
48
- hotDays: 7,
49
- warmDays: 30,
50
- },
51
- embedding: {
52
- enabled: false,
53
- model: 'nomic-embed-text',
54
- endpoint: null,
55
- },
56
- backup: {
57
- enabled: false,
58
- dir: null,
59
- schedule: 'daily',
60
- keepCount: 7,
61
- incremental: true,
62
- },
63
- },
64
- };
65
- exports.default = defaults;
66
- //# sourceMappingURL=config.default.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.default.js","sourceRoot":"","sources":["../../src/lib/config.default.ts"],"names":[],"mappings":";;;;;AAAA,iEAAiE;AACjE,gDAAwB;AAGxB,MAAM,QAAQ,GAAe;IAC3B,SAAS,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC;IAC9C,QAAQ,EAAE,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;IACrD,QAAQ,EAAE,YAAY;IACtB,UAAU,EAAE,IAAI;IAChB,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI;IAEjC,MAAM,EAAE;QACN,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,CAAC;QACnB,aAAa,EAAE,GAAG;QAClB,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,GAAG;KACpB;IAED,SAAS,EAAE;QACT,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,oBAAoB,CAAC;QAC9D,YAAY,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;QACxD,UAAU,EAAE,EAAE;KACf;IAED,IAAI,EAAE;QACJ,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;KACjB;IAED,QAAQ,EAAE;QACR,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,IAAI;QACpB,OAAO,EAAE,MAAM;QACf,sBAAsB,EAAE,EAAE;QAC1B,kBAAkB,EAAE,EAAE;QACtB,iBAAiB,EAAE,IAAI;QACvB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;QACf,WAAW,EAAE;YACX,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,GAAG;YACjB,eAAe,EAAE,IAAI;SACtB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,EAAE;SACb;QACD,SAAS,EAAE;YACT,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,kBAAkB;YACzB,QAAQ,EAAE,IAAI;SACf;QACD,MAAM,EAAE;YACN,OAAO,EAAE,KAAK;YACd,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,OAAO;YACjB,SAAS,EAAE,CAAC;YACZ,WAAW,EAAE,IAAI;SAClB;KACF;CACF,CAAC;AAEF,kBAAe,QAAQ,CAAC"}
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const config_default_1 = __importDefault(require("./config.default"));
7
- let local = {};
8
- try {
9
- // NOTE: require() intentionally kept — config.local.js is a runtime-optional CJS file
10
- // that may or may not exist. Static import cannot handle optional modules gracefully.
11
- local = require('./config.local.js');
12
- }
13
- catch (e) {
14
- const err = e;
15
- if (err.code !== 'MODULE_NOT_FOUND')
16
- throw e;
17
- }
18
- /** Deep merge: local overrides default, nested objects are merged (not replaced) */
19
- function deepMerge(base, override) {
20
- const result = { ...base };
21
- for (const key of Object.keys(override)) {
22
- const ov = override[key];
23
- const bv = base[key];
24
- if (ov && typeof ov === 'object' && !Array.isArray(ov) &&
25
- bv && typeof bv === 'object' && !Array.isArray(bv)) {
26
- result[key] = deepMerge(bv, ov);
27
- }
28
- else {
29
- result[key] = ov;
30
- }
31
- }
32
- return result;
33
- }
34
- const config = deepMerge(config_default_1.default, local);
35
- exports.default = config;
36
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":";;;;;AAEA,sEAAwC;AAMxC,IAAI,KAAK,GAA4B,EAAE,CAAC;AACxC,IAAI,CAAC;IACH,sFAAsF;IACtF,sFAAsF;IACtF,KAAK,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AACvC,CAAC;AAAC,OAAO,CAAU,EAAE,CAAC;IACpB,MAAM,GAAG,GAAG,CAA0B,CAAC;IACvC,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB;QAAE,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,oFAAoF;AACpF,SAAS,SAAS,CAChB,IAAO,EACP,QAAwB;IAExB,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAA6B,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAA4B,CAAC,CAAC;QAClD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAc,CAAC,CAAC;QAChC,IACE,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,EAAE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,EAClD,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACrB,EAA6B,EAC7B,EAA0C,CAC3C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC;AAED,MAAM,MAAM,GAAe,SAAS,CAClC,wBAA8C,EAC9C,KAAwD,CAChC,CAAC;AAE3B,kBAAe,MAAM,CAAC"}
@@ -1,15 +0,0 @@
1
- interface SessionContext {
2
- agentName: string | null;
3
- kvChain: Record<string, string>;
4
- }
5
- /** Get current session context */
6
- export declare function getContext(): SessionContext;
7
- /** Set agent name (called during n2_boot) */
8
- export declare function setAgentName(name: string): void;
9
- /** Get agent name with fallback */
10
- export declare function getAgentName(): string;
11
- /** Set KV chain parent (for session linking) */
12
- export declare function setKvChainParent(project: string, sessionId: string): void;
13
- /** Get and consume KV chain parent */
14
- export declare function popKvChainParent(project: string): string | null;
15
- export {};
@@ -1,35 +0,0 @@
1
- "use strict";
2
- // Soul v9.0 — Session context manager. Replaces global state anti-pattern.
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.getContext = getContext;
5
- exports.setAgentName = setAgentName;
6
- exports.getAgentName = getAgentName;
7
- exports.setKvChainParent = setKvChainParent;
8
- exports.popKvChainParent = popKvChainParent;
9
- const _ctx = {
10
- agentName: null,
11
- kvChain: {},
12
- };
13
- /** Get current session context */
14
- function getContext() {
15
- return _ctx;
16
- }
17
- /** Set agent name (called during n2_boot) */
18
- function setAgentName(name) {
19
- _ctx.agentName = name;
20
- }
21
- /** Get agent name with fallback */
22
- function getAgentName() {
23
- return _ctx.agentName || process.env.N2_AGENT_NAME || 'default';
24
- }
25
- /** Set KV chain parent (for session linking) */
26
- function setKvChainParent(project, sessionId) {
27
- _ctx.kvChain[project] = sessionId;
28
- }
29
- /** Get and consume KV chain parent */
30
- function popKvChainParent(project) {
31
- const parent = _ctx.kvChain[project] || null;
32
- delete _ctx.kvChain[project];
33
- return parent;
34
- }
35
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":";AAAA,2EAA2E;;AAa3E,gCAEC;AAGD,oCAEC;AAGD,oCAEC;AAGD,4CAEC;AAGD,4CAIC;AA9BD,MAAM,IAAI,GAAmB;IAC3B,SAAS,EAAE,IAAI;IACf,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,kCAAkC;AAClC,SAAgB,UAAU;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6CAA6C;AAC7C,SAAgB,YAAY,CAAC,IAAY;IACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACxB,CAAC;AAED,mCAAmC;AACnC,SAAgB,YAAY;IAC1B,OAAO,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS,CAAC;AAClE,CAAC;AAED,gDAAgD;AAChD,SAAgB,gBAAgB,CAAC,OAAe,EAAE,SAAiB;IACjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;AACpC,CAAC;AAED,sCAAsC;AACtC,SAAgB,gBAAgB,CAAC,OAAe;IAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,34 +0,0 @@
1
- interface CoreMemoryFile {
2
- agent: string;
3
- memory: Record<string, string>;
4
- updatedAt: string;
5
- }
6
- /**
7
- * CoreMemory — Agent-specific always-loaded memory.
8
- * Automatically included in context at boot.
9
- * Data path: data/memory/core-memory/{agent}.json
10
- */
11
- export declare class CoreMemory {
12
- private readonly dir;
13
- private _cache;
14
- constructor(dataDir: string);
15
- /** Agent core memory file path */
16
- private _filePath;
17
- /** Load agent core memory */
18
- read(agentName: string): CoreMemoryFile;
19
- /** Write key-value to core memory */
20
- write(agentName: string, key: string, value: string): {
21
- action: string;
22
- };
23
- /** Remove key from core memory */
24
- remove(agentName: string, key: string): boolean;
25
- /** List all keys for an agent */
26
- keys(agentName: string): string[];
27
- /** Generate prompt text for boot injection */
28
- toPrompt(agentName: string, maxTokens?: number): string;
29
- /** Summary of all agents' core memories */
30
- toContextAll(): string;
31
- /** Invalidate cache */
32
- invalidateCache(): void;
33
- }
34
- export {};
@@ -1,102 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.CoreMemory = void 0;
7
- // Soul v9.0 — Core Memory: agent-specific facts, auto-injected at boot.
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const utils_1 = require("./utils");
11
- /**
12
- * CoreMemory — Agent-specific always-loaded memory.
13
- * Automatically included in context at boot.
14
- * Data path: data/memory/core-memory/{agent}.json
15
- */
16
- class CoreMemory {
17
- dir;
18
- _cache;
19
- constructor(dataDir) {
20
- this.dir = path_1.default.join(dataDir, 'memory', 'core-memory');
21
- this._cache = {};
22
- }
23
- /** Agent core memory file path */
24
- _filePath(agentName) {
25
- const safeName = agentName.toLowerCase().replace(/[^a-z0-9\-_]/g, '');
26
- return path_1.default.join(this.dir, `${safeName}.json`);
27
- }
28
- /** Load agent core memory */
29
- read(agentName) {
30
- const cached = this._cache[agentName];
31
- if (cached)
32
- return cached;
33
- const data = (0, utils_1.readJson)(this._filePath(agentName));
34
- const result = data || { agent: agentName, memory: {}, updatedAt: (0, utils_1.nowISO)() };
35
- this._cache[agentName] = result;
36
- return result;
37
- }
38
- /** Write key-value to core memory */
39
- write(agentName, key, value) {
40
- const data = this.read(agentName);
41
- const action = data.memory[key] ? 'updated' : 'created';
42
- data.memory[key] = value;
43
- data.updatedAt = (0, utils_1.nowISO)();
44
- this._cache[agentName] = data;
45
- if (!fs_1.default.existsSync(this.dir))
46
- fs_1.default.mkdirSync(this.dir, { recursive: true });
47
- (0, utils_1.writeJson)(this._filePath(agentName), data);
48
- return { action };
49
- }
50
- /** Remove key from core memory */
51
- remove(agentName, key) {
52
- const data = this.read(agentName);
53
- if (!(key in data.memory))
54
- return false;
55
- delete data.memory[key];
56
- data.updatedAt = (0, utils_1.nowISO)();
57
- this._cache[agentName] = data;
58
- (0, utils_1.writeJson)(this._filePath(agentName), data);
59
- return true;
60
- }
61
- /** List all keys for an agent */
62
- keys(agentName) {
63
- const data = this.read(agentName);
64
- return Object.keys(data.memory);
65
- }
66
- /** Generate prompt text for boot injection */
67
- toPrompt(agentName, maxTokens = 500) {
68
- const data = this.read(agentName);
69
- const entries = Object.entries(data.memory);
70
- if (entries.length === 0)
71
- return '';
72
- const lines = entries.map(([k, v]) => `${k}: ${v}`);
73
- let result = lines.join(' | ');
74
- // Rough char-based token limit
75
- if (result.length > maxTokens * 2) {
76
- result = result.slice(0, maxTokens * 2) + '...';
77
- }
78
- return `Core[${agentName}]: ${result}`;
79
- }
80
- /** Summary of all agents' core memories */
81
- toContextAll() {
82
- if (!fs_1.default.existsSync(this.dir))
83
- return '';
84
- const files = fs_1.default.readdirSync(this.dir).filter(f => f.endsWith('.json'));
85
- if (files.length === 0)
86
- return '';
87
- const summaries = [];
88
- for (const f of files) {
89
- const agent = f.replace('.json', '');
90
- const prompt = this.toPrompt(agent, 200);
91
- if (prompt)
92
- summaries.push(prompt);
93
- }
94
- return summaries.join('\n');
95
- }
96
- /** Invalidate cache */
97
- invalidateCache() {
98
- this._cache = {};
99
- }
100
- }
101
- exports.CoreMemory = CoreMemory;
102
- //# sourceMappingURL=core-memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core-memory.js","sourceRoot":"","sources":["../../src/lib/core-memory.ts"],"names":[],"mappings":"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"}
@@ -1,58 +0,0 @@
1
- import type { EntityType } from '../types';
2
- interface StoredEntity {
3
- type: EntityType;
4
- name: string;
5
- attributes: Record<string, string | number | boolean | null>;
6
- firstSeen: string;
7
- lastMentioned: string;
8
- mentionCount: number;
9
- }
10
- export interface EntityInput {
11
- type: EntityType;
12
- name: string;
13
- attributes?: Record<string, string | number | boolean | null>;
14
- }
15
- interface UpsertResult {
16
- action: 'created' | 'updated' | 'skip';
17
- entity: StoredEntity | null;
18
- }
19
- interface BatchResult {
20
- created: number;
21
- updated: number;
22
- skipped: number;
23
- }
24
- /**
25
- * EntityMemory — Structured entity tracking and auto-injection.
26
- * Data path: data/memory/entities.json
27
- * Entity types: person, hardware, project, concept, place, service
28
- */
29
- export declare class EntityMemory {
30
- private readonly filePath;
31
- private _cache;
32
- constructor(dataDir: string);
33
- /** Load entity data (with caching) */
34
- private _load;
35
- /** Save changes + update cache */
36
- private _save;
37
- /** Add or update an entity (upsert). Merges attributes on match. */
38
- upsert(entity: EntityInput): UpsertResult;
39
- /** Batch upsert multiple entities */
40
- upsertBatch(entities: EntityInput[]): BatchResult;
41
- /** Get entity by name */
42
- get(name: string): StoredEntity | null;
43
- /** Get entities by type */
44
- getByType(type: EntityType): StoredEntity[];
45
- /** Search entities by keyword */
46
- search(query: string): StoredEntity[];
47
- /** List all entities */
48
- list(): StoredEntity[];
49
- /** Remove entity by name (optionally filter by type) */
50
- remove(name: string, type?: EntityType): boolean;
51
- /** Prune old entities (not mentioned for maxAge days) */
52
- prune(maxAgeDays?: number): number;
53
- /** Generate context string for boot injection */
54
- toContext(maxItems?: number): string;
55
- /** Invalidate cache (for testing/reload) */
56
- invalidateCache(): void;
57
- }
58
- export {};
@@ -1,160 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.EntityMemory = void 0;
7
- // Soul v9.0 — Entity Memory: structured entity tracking for people, places, concepts, etc.
8
- const fs_1 = __importDefault(require("fs"));
9
- const path_1 = __importDefault(require("path"));
10
- const utils_1 = require("./utils");
11
- /**
12
- * EntityMemory — Structured entity tracking and auto-injection.
13
- * Data path: data/memory/entities.json
14
- * Entity types: person, hardware, project, concept, place, service
15
- */
16
- class EntityMemory {
17
- filePath;
18
- _cache;
19
- constructor(dataDir) {
20
- this.filePath = path_1.default.join(dataDir, 'memory', 'entities.json');
21
- this._cache = null;
22
- }
23
- /** Load entity data (with caching) */
24
- _load() {
25
- if (this._cache)
26
- return this._cache;
27
- const data = (0, utils_1.readJson)(this.filePath);
28
- this._cache = data || { entities: [], updatedAt: (0, utils_1.nowISO)() };
29
- return this._cache;
30
- }
31
- /** Save changes + update cache */
32
- _save(data) {
33
- data.updatedAt = (0, utils_1.nowISO)();
34
- this._cache = data;
35
- const dir = path_1.default.dirname(this.filePath);
36
- if (!fs_1.default.existsSync(dir))
37
- fs_1.default.mkdirSync(dir, { recursive: true });
38
- (0, utils_1.writeJson)(this.filePath, data);
39
- }
40
- /** Add or update an entity (upsert). Merges attributes on match. */
41
- upsert(entity) {
42
- if (!entity || !entity.name || !entity.type) {
43
- return { action: 'skip', entity: null };
44
- }
45
- const data = this._load();
46
- const nameKey = entity.name.toLowerCase().trim();
47
- const existing = data.entities.find(e => e.name.toLowerCase().trim() === nameKey && e.type === entity.type);
48
- if (existing) {
49
- existing.attributes = { ...existing.attributes, ...(entity.attributes || {}) };
50
- existing.lastMentioned = (0, utils_1.nowISO)();
51
- existing.mentionCount = (existing.mentionCount || 1) + 1;
52
- this._save(data);
53
- return { action: 'updated', entity: existing };
54
- }
55
- const newEntity = {
56
- type: entity.type,
57
- name: entity.name,
58
- attributes: entity.attributes || {},
59
- firstSeen: (0, utils_1.nowISO)(),
60
- lastMentioned: (0, utils_1.nowISO)(),
61
- mentionCount: 1,
62
- };
63
- data.entities.push(newEntity);
64
- this._save(data);
65
- return { action: 'created', entity: newEntity };
66
- }
67
- /** Batch upsert multiple entities */
68
- upsertBatch(entities) {
69
- if (!Array.isArray(entities))
70
- return { created: 0, updated: 0, skipped: 0 };
71
- const stats = { created: 0, updated: 0, skipped: 0 };
72
- for (const e of entities) {
73
- const result = this.upsert(e);
74
- if (result.action === 'created')
75
- stats.created++;
76
- else if (result.action === 'updated')
77
- stats.updated++;
78
- else
79
- stats.skipped++;
80
- }
81
- return stats;
82
- }
83
- /** Get entity by name */
84
- get(name) {
85
- const data = this._load();
86
- const nameKey = name.toLowerCase().trim();
87
- return data.entities.find(e => e.name.toLowerCase().trim() === nameKey) || null;
88
- }
89
- /** Get entities by type */
90
- getByType(type) {
91
- const data = this._load();
92
- return data.entities.filter(e => e.type === type);
93
- }
94
- /** Search entities by keyword */
95
- search(query) {
96
- const data = this._load();
97
- const keywords = query.toLowerCase().split(/\s+/);
98
- return data.entities.filter(e => {
99
- const text = [e.name, e.type, JSON.stringify(e.attributes)].join(' ').toLowerCase();
100
- return keywords.some(kw => text.includes(kw));
101
- });
102
- }
103
- /** List all entities */
104
- list() {
105
- return this._load().entities;
106
- }
107
- /** Remove entity by name (optionally filter by type) */
108
- remove(name, type) {
109
- const data = this._load();
110
- const nameKey = name.toLowerCase().trim();
111
- const before = data.entities.length;
112
- data.entities = data.entities.filter(e => {
113
- const match = e.name.toLowerCase().trim() === nameKey;
114
- if (type)
115
- return !(match && e.type === type);
116
- return !match;
117
- });
118
- if (data.entities.length < before) {
119
- this._save(data);
120
- return true;
121
- }
122
- return false;
123
- }
124
- /** Prune old entities (not mentioned for maxAge days) */
125
- prune(maxAgeDays = 90) {
126
- const data = this._load();
127
- const cutoff = Date.now() - maxAgeDays * 24 * 60 * 60 * 1000;
128
- const before = data.entities.length;
129
- data.entities = data.entities.filter(e => {
130
- const last = new Date(e.lastMentioned || e.firstSeen).getTime();
131
- return last >= cutoff;
132
- });
133
- if (data.entities.length < before) {
134
- this._save(data);
135
- }
136
- return before - data.entities.length;
137
- }
138
- /** Generate context string for boot injection */
139
- toContext(maxItems = 10) {
140
- const data = this._load();
141
- if (data.entities.length === 0)
142
- return '';
143
- const sorted = [...data.entities]
144
- .sort((a, b) => (b.mentionCount || 0) - (a.mentionCount || 0))
145
- .slice(0, maxItems);
146
- const lines = sorted.map(e => {
147
- const attrs = Object.entries(e.attributes || {})
148
- .map(([k, v]) => `${k}:${v}`)
149
- .join(', ');
150
- return `${e.name}[${e.type}]${attrs ? ': ' + attrs : ''}`;
151
- });
152
- return `Entities(${data.entities.length}): ${lines.join(' | ')}`;
153
- }
154
- /** Invalidate cache (for testing/reload) */
155
- invalidateCache() {
156
- this._cache = null;
157
- }
158
- }
159
- exports.EntityMemory = EntityMemory;
160
- //# sourceMappingURL=entity-memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entity-memory.js","sourceRoot":"","sources":["../../src/lib/entity-memory.ts"],"names":[],"mappings":"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"}