@framers/agentos 0.1.121 → 0.1.123

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 (136) hide show
  1. package/dist/api/TextToolCallParser.d.ts +61 -0
  2. package/dist/api/TextToolCallParser.d.ts.map +1 -0
  3. package/dist/api/TextToolCallParser.js +137 -0
  4. package/dist/api/TextToolCallParser.js.map +1 -0
  5. package/dist/api/agent.d.ts +7 -0
  6. package/dist/api/agent.d.ts.map +1 -1
  7. package/dist/api/agent.js +1 -0
  8. package/dist/api/agent.js.map +1 -1
  9. package/dist/api/generateText.d.ts +105 -0
  10. package/dist/api/generateText.d.ts.map +1 -1
  11. package/dist/api/generateText.js +191 -2
  12. package/dist/api/generateText.js.map +1 -1
  13. package/dist/cognitive_substrate/GMI.d.ts.map +1 -1
  14. package/dist/cognitive_substrate/GMI.js +27 -1
  15. package/dist/cognitive_substrate/GMI.js.map +1 -1
  16. package/dist/cognitive_substrate/IGMI.d.ts +5 -0
  17. package/dist/cognitive_substrate/IGMI.d.ts.map +1 -1
  18. package/dist/cognitive_substrate/IGMI.js.map +1 -1
  19. package/dist/emergent/AdaptPersonalityTool.d.ts +142 -0
  20. package/dist/emergent/AdaptPersonalityTool.d.ts.map +1 -0
  21. package/dist/emergent/AdaptPersonalityTool.js +198 -0
  22. package/dist/emergent/AdaptPersonalityTool.js.map +1 -0
  23. package/dist/emergent/CreateWorkflowTool.d.ts +182 -0
  24. package/dist/emergent/CreateWorkflowTool.d.ts.map +1 -0
  25. package/dist/emergent/CreateWorkflowTool.js +330 -0
  26. package/dist/emergent/CreateWorkflowTool.js.map +1 -0
  27. package/dist/emergent/EmergentCapabilityEngine.d.ts +68 -0
  28. package/dist/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  29. package/dist/emergent/EmergentCapabilityEngine.js +99 -0
  30. package/dist/emergent/EmergentCapabilityEngine.js.map +1 -1
  31. package/dist/emergent/ManageSkillsTool.d.ts +154 -0
  32. package/dist/emergent/ManageSkillsTool.d.ts.map +1 -0
  33. package/dist/emergent/ManageSkillsTool.js +241 -0
  34. package/dist/emergent/ManageSkillsTool.js.map +1 -0
  35. package/dist/emergent/PersonalityMutationStore.d.ts +183 -0
  36. package/dist/emergent/PersonalityMutationStore.d.ts.map +1 -0
  37. package/dist/emergent/PersonalityMutationStore.js +222 -0
  38. package/dist/emergent/PersonalityMutationStore.js.map +1 -0
  39. package/dist/emergent/SelfEvaluateTool.d.ts +199 -0
  40. package/dist/emergent/SelfEvaluateTool.d.ts.map +1 -0
  41. package/dist/emergent/SelfEvaluateTool.js +410 -0
  42. package/dist/emergent/SelfEvaluateTool.js.map +1 -0
  43. package/dist/emergent/SelfImprovementConfig.d.ts +177 -0
  44. package/dist/emergent/SelfImprovementConfig.d.ts.map +1 -0
  45. package/dist/emergent/SelfImprovementConfig.js +43 -0
  46. package/dist/emergent/SelfImprovementConfig.js.map +1 -0
  47. package/dist/emergent/index.d.ts +8 -0
  48. package/dist/emergent/index.d.ts.map +1 -1
  49. package/dist/emergent/index.js +6 -0
  50. package/dist/emergent/index.js.map +1 -1
  51. package/dist/emergent/types.d.ts +9 -0
  52. package/dist/emergent/types.d.ts.map +1 -1
  53. package/dist/emergent/types.js.map +1 -1
  54. package/dist/memory/AgentMemory.d.ts +2 -2
  55. package/dist/memory/AgentMemory.d.ts.map +1 -1
  56. package/dist/memory/AgentMemory.js +4 -3
  57. package/dist/memory/AgentMemory.js.map +1 -1
  58. package/dist/memory/consolidation/ConsolidationLoop.d.ts +31 -4
  59. package/dist/memory/consolidation/ConsolidationLoop.d.ts.map +1 -1
  60. package/dist/memory/consolidation/ConsolidationLoop.js +112 -69
  61. package/dist/memory/consolidation/ConsolidationLoop.js.map +1 -1
  62. package/dist/memory/facade/Memory.d.ts +12 -6
  63. package/dist/memory/facade/Memory.d.ts.map +1 -1
  64. package/dist/memory/facade/Memory.js +216 -212
  65. package/dist/memory/facade/Memory.js.map +1 -1
  66. package/dist/memory/facade/types.d.ts +11 -1
  67. package/dist/memory/facade/types.d.ts.map +1 -1
  68. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts +7 -10
  69. package/dist/memory/feedback/RetrievalFeedbackSignal.d.ts.map +1 -1
  70. package/dist/memory/feedback/RetrievalFeedbackSignal.js +40 -36
  71. package/dist/memory/feedback/RetrievalFeedbackSignal.js.map +1 -1
  72. package/dist/memory/io/ChatGptImporter.d.ts.map +1 -1
  73. package/dist/memory/io/ChatGptImporter.js +24 -18
  74. package/dist/memory/io/ChatGptImporter.js.map +1 -1
  75. package/dist/memory/io/CsvImporter.d.ts.map +1 -1
  76. package/dist/memory/io/CsvImporter.js +21 -8
  77. package/dist/memory/io/CsvImporter.js.map +1 -1
  78. package/dist/memory/io/JsonExporter.d.ts.map +1 -1
  79. package/dist/memory/io/JsonExporter.js +6 -17
  80. package/dist/memory/io/JsonExporter.js.map +1 -1
  81. package/dist/memory/io/JsonImporter.d.ts +3 -0
  82. package/dist/memory/io/JsonImporter.d.ts.map +1 -1
  83. package/dist/memory/io/JsonImporter.js +58 -29
  84. package/dist/memory/io/JsonImporter.js.map +1 -1
  85. package/dist/memory/io/MarkdownExporter.d.ts.map +1 -1
  86. package/dist/memory/io/MarkdownExporter.js +1 -4
  87. package/dist/memory/io/MarkdownExporter.js.map +1 -1
  88. package/dist/memory/io/MarkdownImporter.d.ts.map +1 -1
  89. package/dist/memory/io/MarkdownImporter.js +12 -7
  90. package/dist/memory/io/MarkdownImporter.js.map +1 -1
  91. package/dist/memory/io/ObsidianExporter.d.ts +14 -9
  92. package/dist/memory/io/ObsidianExporter.d.ts.map +1 -1
  93. package/dist/memory/io/ObsidianExporter.js +35 -23
  94. package/dist/memory/io/ObsidianExporter.js.map +1 -1
  95. package/dist/memory/io/ObsidianImporter.d.ts.map +1 -1
  96. package/dist/memory/io/ObsidianImporter.js +34 -27
  97. package/dist/memory/io/ObsidianImporter.js.map +1 -1
  98. package/dist/memory/io/SqliteExporter.d.ts +1 -2
  99. package/dist/memory/io/SqliteExporter.d.ts.map +1 -1
  100. package/dist/memory/io/SqliteExporter.js +2 -3
  101. package/dist/memory/io/SqliteExporter.js.map +1 -1
  102. package/dist/memory/io/SqliteImporter.d.ts +3 -0
  103. package/dist/memory/io/SqliteImporter.d.ts.map +1 -1
  104. package/dist/memory/io/SqliteImporter.js +62 -27
  105. package/dist/memory/io/SqliteImporter.js.map +1 -1
  106. package/dist/memory/store/SqliteBrain.d.ts +84 -24
  107. package/dist/memory/store/SqliteBrain.d.ts.map +1 -1
  108. package/dist/memory/store/SqliteBrain.js +139 -55
  109. package/dist/memory/store/SqliteBrain.js.map +1 -1
  110. package/dist/memory/store/SqliteKnowledgeGraph.d.ts +6 -2
  111. package/dist/memory/store/SqliteKnowledgeGraph.d.ts.map +1 -1
  112. package/dist/memory/store/SqliteKnowledgeGraph.js +94 -120
  113. package/dist/memory/store/SqliteKnowledgeGraph.js.map +1 -1
  114. package/dist/memory/store/SqliteMemoryGraph.d.ts +4 -5
  115. package/dist/memory/store/SqliteMemoryGraph.d.ts.map +1 -1
  116. package/dist/memory/store/SqliteMemoryGraph.js +31 -41
  117. package/dist/memory/store/SqliteMemoryGraph.js.map +1 -1
  118. package/dist/memory/tools/MemoryAddTool.d.ts.map +1 -1
  119. package/dist/memory/tools/MemoryAddTool.js +12 -16
  120. package/dist/memory/tools/MemoryAddTool.js.map +1 -1
  121. package/dist/memory/tools/MemoryDeleteTool.d.ts.map +1 -1
  122. package/dist/memory/tools/MemoryDeleteTool.js +1 -3
  123. package/dist/memory/tools/MemoryDeleteTool.js.map +1 -1
  124. package/dist/memory/tools/MemoryMergeTool.d.ts.map +1 -1
  125. package/dist/memory/tools/MemoryMergeTool.js +13 -22
  126. package/dist/memory/tools/MemoryMergeTool.js.map +1 -1
  127. package/dist/memory/tools/MemorySearchTool.js +4 -4
  128. package/dist/memory/tools/MemorySearchTool.js.map +1 -1
  129. package/dist/memory/tools/MemoryUpdateTool.d.ts.map +1 -1
  130. package/dist/memory/tools/MemoryUpdateTool.js +10 -18
  131. package/dist/memory/tools/MemoryUpdateTool.js.map +1 -1
  132. package/dist/orchestration/runtime/LoopController.d.ts +7 -0
  133. package/dist/orchestration/runtime/LoopController.d.ts.map +1 -1
  134. package/dist/orchestration/runtime/LoopController.js +7 -0
  135. package/dist/orchestration/runtime/LoopController.js.map +1 -1
  136. package/package.json +1 -1
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @fileoverview ManageSkillsTool — ITool implementation that enables agents to
3
+ * dynamically enable, disable, and search for skills at runtime.
4
+ *
5
+ * @module @framers/agentos/emergent/ManageSkillsTool
6
+ *
7
+ * Agents call `manage_skills` to self-modify their active skill set. The tool
8
+ * enforces an allowlist-based permission model:
9
+ * - Wildcard (`'*'`) allows all skills unconditionally.
10
+ * - Exact skill ID matches are always permitted.
11
+ * - Category-based allowlist entries (`'category:X'`) permit any skill in that category.
12
+ * - Same-category expansion: if any skill in category X is already active, other
13
+ * skills in X are also permitted without explicit allowlist entry.
14
+ * - New categories may require approval when `requireApprovalForNewCategories` is set.
15
+ *
16
+ * Locked skills cannot be disabled.
17
+ */
18
+ import type { ITool, ToolExecutionResult, ToolExecutionContext, JSONSchemaObject } from '../core/tools/ITool.js';
19
+ /**
20
+ * Minimal skill descriptor used for active skill listing and search results.
21
+ */
22
+ export interface SkillDescriptor {
23
+ /** Unique skill identifier. */
24
+ skillId: string;
25
+ /** Human-readable skill name. */
26
+ name: string;
27
+ /** Category the skill belongs to. */
28
+ category: string;
29
+ }
30
+ /**
31
+ * Extended skill descriptor returned by search, including a description.
32
+ */
33
+ export interface SkillSearchResult extends SkillDescriptor {
34
+ /** Natural language description of the skill's purpose. */
35
+ description: string;
36
+ }
37
+ /**
38
+ * Input arguments accepted by the `manage_skills` tool.
39
+ * Discriminated on the `action` field.
40
+ */
41
+ export interface ManageSkillsInput extends Record<string, any> {
42
+ /** The action to perform: enable, disable, search, or list. */
43
+ action: 'enable' | 'disable' | 'search' | 'list';
44
+ /** Skill ID to enable or disable (required for enable/disable). */
45
+ skillId?: string;
46
+ /** Search query string (required for search). */
47
+ query?: string;
48
+ }
49
+ /**
50
+ * Dependencies injected into the {@link ManageSkillsTool} constructor.
51
+ */
52
+ export interface ManageSkillsDeps {
53
+ /** Configuration controlling allowlist and approval requirements. */
54
+ config: {
55
+ /**
56
+ * Allowlist of permitted skill IDs or patterns.
57
+ * - `['*']` → all skills allowed.
58
+ * - Exact skill IDs are matched literally.
59
+ * - `'category:X'` → any skill in category X is allowed.
60
+ */
61
+ allowlist: string[];
62
+ /** Whether enabling skills in new categories requires approval. */
63
+ requireApprovalForNewCategories: boolean;
64
+ };
65
+ /** Returns the currently active skills for the agent. */
66
+ getActiveSkills: () => SkillDescriptor[];
67
+ /** Returns the list of skill IDs that cannot be disabled. */
68
+ getLockedSkills: () => string[];
69
+ /** Load and activate a skill by its ID. Returns the skill descriptor. */
70
+ loadSkill: (id: string) => Promise<SkillDescriptor>;
71
+ /** Unload and deactivate a skill by its ID. */
72
+ unloadSkill: (id: string) => void;
73
+ /** Search for available skills matching a query string. */
74
+ searchSkills: (query: string) => SkillSearchResult[];
75
+ }
76
+ /**
77
+ * ITool implementation enabling agents to dynamically manage their skill set
78
+ * at runtime, subject to allowlist and lock constraints.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * const tool = new ManageSkillsTool({
83
+ * config: { allowlist: ['*'], requireApprovalForNewCategories: false },
84
+ * getActiveSkills: () => agent.skills,
85
+ * getLockedSkills: () => ['core-reasoning'],
86
+ * loadSkill: (id) => skillRegistry.load(id),
87
+ * unloadSkill: (id) => skillRegistry.unload(id),
88
+ * searchSkills: (q) => skillRegistry.search(q),
89
+ * });
90
+ * ```
91
+ */
92
+ export declare class ManageSkillsTool implements ITool<ManageSkillsInput> {
93
+ /** @inheritdoc */
94
+ readonly id = "com.framers.emergent.manage-skills";
95
+ /** @inheritdoc */
96
+ readonly name = "manage_skills";
97
+ /** @inheritdoc */
98
+ readonly displayName = "Manage Skills";
99
+ /** @inheritdoc */
100
+ readonly description: string;
101
+ /** @inheritdoc */
102
+ readonly category = "emergent";
103
+ /** @inheritdoc */
104
+ readonly hasSideEffects = true;
105
+ /** @inheritdoc */
106
+ readonly inputSchema: JSONSchemaObject;
107
+ /** Injected dependencies. */
108
+ private readonly deps;
109
+ /**
110
+ * Create a new ManageSkillsTool.
111
+ *
112
+ * @param deps - Injected dependencies including config, skill accessors,
113
+ * and loader/unloader functions.
114
+ */
115
+ constructor(deps: ManageSkillsDeps);
116
+ /**
117
+ * Execute the requested skill management action.
118
+ *
119
+ * @param args - Action type and associated parameters.
120
+ * @param _context - Tool execution context (unused but required by ITool).
121
+ * @returns A {@link ToolExecutionResult} wrapping the action outcome.
122
+ */
123
+ execute(args: ManageSkillsInput, _context: ToolExecutionContext): Promise<ToolExecutionResult>;
124
+ /**
125
+ * Enable a skill after checking allowlist permissions.
126
+ *
127
+ * Allowlist resolution order:
128
+ * 1. `['*']` → always allowed
129
+ * 2. Exact skillId match → allowed
130
+ * 3. `'category:X'` in allowlist and skill.category === X → allowed
131
+ * 4. Skill's category already represented in active skills → allowed (same-category expansion)
132
+ * 5. Otherwise → `requires_approval` if requireApprovalForNewCategories, else `denied`
133
+ */
134
+ private handleEnable;
135
+ /**
136
+ * Resolve whether a skill is permitted by the allowlist configuration.
137
+ *
138
+ * @returns `'allowed'`, `'requires_approval'`, or `'denied'`
139
+ */
140
+ private resolvePermission;
141
+ /**
142
+ * Disable a skill, rejecting if it is locked.
143
+ */
144
+ private handleDisable;
145
+ /**
146
+ * Search for available skills by query string.
147
+ */
148
+ private handleSearch;
149
+ /**
150
+ * List currently active skills.
151
+ */
152
+ private handleList;
153
+ }
154
+ //# sourceMappingURL=ManageSkillsTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageSkillsTool.d.ts","sourceRoot":"","sources":["../../src/emergent/ManageSkillsTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EACV,KAAK,EACL,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAMhC;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC5D,+DAA+D;IAC/D,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;IACjD,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,qEAAqE;IACrE,MAAM,EAAE;QACN;;;;;WAKG;QACH,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,mEAAmE;QACnE,+BAA+B,EAAE,OAAO,CAAC;KAC1C,CAAC;IACF,yDAAyD;IACzD,eAAe,EAAE,MAAM,eAAe,EAAE,CAAC;IACzC,6DAA6D;IAC7D,eAAe,EAAE,MAAM,MAAM,EAAE,CAAC;IAChC,yEAAyE;IACzE,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;IACpD,+CAA+C;IAC/C,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,2DAA2D;IAC3D,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,iBAAiB,EAAE,CAAC;CACtD;AAMD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAiB,YAAW,KAAK,CAAC,iBAAiB,CAAC;IAC/D,kBAAkB;IAClB,QAAQ,CAAC,EAAE,wCAAwC;IAEnD,kBAAkB;IAClB,QAAQ,CAAC,IAAI,mBAAmB;IAEhC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,mBAAmB;IAEvC,kBAAkB;IAClB,QAAQ,CAAC,WAAW,SAE2B;IAE/C,kBAAkB;IAClB,QAAQ,CAAC,QAAQ,cAAc;IAE/B,kBAAkB;IAClB,QAAQ,CAAC,cAAc,QAAQ;IAE/B,kBAAkB;IAClB,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAkBpC;IAEF,6BAA6B;IAC7B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IAExC;;;;;OAKG;gBACS,IAAI,EAAE,gBAAgB;IAQlC;;;;;;OAMG;IACG,OAAO,CACX,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,mBAAmB,CAAC;IAsB/B;;;;;;;;;OASG;YACW,YAAY;IAwD1B;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA+BzB;;OAEG;YACW,aAAa;IAuB3B;;OAEG;YACW,YAAY;IAe1B;;OAEG;YACW,UAAU;CAQzB"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * @fileoverview ManageSkillsTool — ITool implementation that enables agents to
3
+ * dynamically enable, disable, and search for skills at runtime.
4
+ *
5
+ * @module @framers/agentos/emergent/ManageSkillsTool
6
+ *
7
+ * Agents call `manage_skills` to self-modify their active skill set. The tool
8
+ * enforces an allowlist-based permission model:
9
+ * - Wildcard (`'*'`) allows all skills unconditionally.
10
+ * - Exact skill ID matches are always permitted.
11
+ * - Category-based allowlist entries (`'category:X'`) permit any skill in that category.
12
+ * - Same-category expansion: if any skill in category X is already active, other
13
+ * skills in X are also permitted without explicit allowlist entry.
14
+ * - New categories may require approval when `requireApprovalForNewCategories` is set.
15
+ *
16
+ * Locked skills cannot be disabled.
17
+ */
18
+ // ============================================================================
19
+ // TOOL IMPLEMENTATION
20
+ // ============================================================================
21
+ /**
22
+ * ITool implementation enabling agents to dynamically manage their skill set
23
+ * at runtime, subject to allowlist and lock constraints.
24
+ *
25
+ * @example
26
+ * ```ts
27
+ * const tool = new ManageSkillsTool({
28
+ * config: { allowlist: ['*'], requireApprovalForNewCategories: false },
29
+ * getActiveSkills: () => agent.skills,
30
+ * getLockedSkills: () => ['core-reasoning'],
31
+ * loadSkill: (id) => skillRegistry.load(id),
32
+ * unloadSkill: (id) => skillRegistry.unload(id),
33
+ * searchSkills: (q) => skillRegistry.search(q),
34
+ * });
35
+ * ```
36
+ */
37
+ export class ManageSkillsTool {
38
+ /**
39
+ * Create a new ManageSkillsTool.
40
+ *
41
+ * @param deps - Injected dependencies including config, skill accessors,
42
+ * and loader/unloader functions.
43
+ */
44
+ constructor(deps) {
45
+ /** @inheritdoc */
46
+ this.id = 'com.framers.emergent.manage-skills';
47
+ /** @inheritdoc */
48
+ this.name = 'manage_skills';
49
+ /** @inheritdoc */
50
+ this.displayName = 'Manage Skills';
51
+ /** @inheritdoc */
52
+ this.description = 'Enable, disable, search, or list skills available to this agent. ' +
53
+ 'Subject to allowlist and lock constraints.';
54
+ /** @inheritdoc */
55
+ this.category = 'emergent';
56
+ /** @inheritdoc */
57
+ this.hasSideEffects = true;
58
+ /** @inheritdoc */
59
+ this.inputSchema = {
60
+ type: 'object',
61
+ properties: {
62
+ action: {
63
+ type: 'string',
64
+ enum: ['enable', 'disable', 'search', 'list'],
65
+ description: 'The skill management action to perform.',
66
+ },
67
+ skillId: {
68
+ type: 'string',
69
+ description: 'Skill ID to enable or disable.',
70
+ },
71
+ query: {
72
+ type: 'string',
73
+ description: 'Search query for finding skills.',
74
+ },
75
+ },
76
+ required: ['action'],
77
+ };
78
+ this.deps = deps;
79
+ }
80
+ // --------------------------------------------------------------------------
81
+ // EXECUTE
82
+ // --------------------------------------------------------------------------
83
+ /**
84
+ * Execute the requested skill management action.
85
+ *
86
+ * @param args - Action type and associated parameters.
87
+ * @param _context - Tool execution context (unused but required by ITool).
88
+ * @returns A {@link ToolExecutionResult} wrapping the action outcome.
89
+ */
90
+ async execute(args, _context) {
91
+ switch (args.action) {
92
+ case 'enable':
93
+ return this.handleEnable(args.skillId);
94
+ case 'disable':
95
+ return this.handleDisable(args.skillId);
96
+ case 'search':
97
+ return this.handleSearch(args.query);
98
+ case 'list':
99
+ return this.handleList();
100
+ default:
101
+ return {
102
+ success: false,
103
+ error: `Unknown action "${args.action}". Must be one of: enable, disable, search, list`,
104
+ };
105
+ }
106
+ }
107
+ // --------------------------------------------------------------------------
108
+ // ACTION HANDLERS
109
+ // --------------------------------------------------------------------------
110
+ /**
111
+ * Enable a skill after checking allowlist permissions.
112
+ *
113
+ * Allowlist resolution order:
114
+ * 1. `['*']` → always allowed
115
+ * 2. Exact skillId match → allowed
116
+ * 3. `'category:X'` in allowlist and skill.category === X → allowed
117
+ * 4. Skill's category already represented in active skills → allowed (same-category expansion)
118
+ * 5. Otherwise → `requires_approval` if requireApprovalForNewCategories, else `denied`
119
+ */
120
+ async handleEnable(skillId) {
121
+ if (!skillId) {
122
+ return { success: false, error: 'skillId is required for the enable action' };
123
+ }
124
+ // Load the skill first to get its metadata
125
+ let skill;
126
+ try {
127
+ skill = await this.deps.loadSkill(skillId);
128
+ }
129
+ catch (err) {
130
+ return {
131
+ success: false,
132
+ error: `Failed to load skill "${skillId}": ${err.message ?? String(err)}`,
133
+ };
134
+ }
135
+ // Resolve allowlist permission
136
+ const permissionResult = this.resolvePermission(skill);
137
+ if (permissionResult === 'allowed') {
138
+ return {
139
+ success: true,
140
+ output: {
141
+ status: 'enabled',
142
+ skill: { skillId: skill.skillId, name: skill.name, category: skill.category },
143
+ },
144
+ };
145
+ }
146
+ // Not allowed — unload the skill we speculatively loaded
147
+ try {
148
+ this.deps.unloadSkill(skillId);
149
+ }
150
+ catch {
151
+ // Best-effort unload; skill may not have been fully registered
152
+ }
153
+ if (permissionResult === 'requires_approval') {
154
+ return {
155
+ success: true,
156
+ output: {
157
+ status: 'requires_approval',
158
+ skillId,
159
+ category: skill.category,
160
+ reason: `Skill category "${skill.category}" is new and requires approval.`,
161
+ },
162
+ };
163
+ }
164
+ return {
165
+ success: false,
166
+ error: `Skill "${skillId}" is not permitted by the allowlist.`,
167
+ };
168
+ }
169
+ /**
170
+ * Resolve whether a skill is permitted by the allowlist configuration.
171
+ *
172
+ * @returns `'allowed'`, `'requires_approval'`, or `'denied'`
173
+ */
174
+ resolvePermission(skill) {
175
+ const { allowlist, requireApprovalForNewCategories } = this.deps.config;
176
+ // 1. Wildcard
177
+ if (allowlist.includes('*')) {
178
+ return 'allowed';
179
+ }
180
+ // 2. Exact skill ID match
181
+ if (allowlist.includes(skill.skillId)) {
182
+ return 'allowed';
183
+ }
184
+ // 3. Category-based allowlist entry
185
+ if (allowlist.includes(`category:${skill.category}`)) {
186
+ return 'allowed';
187
+ }
188
+ // 4. Same-category expansion: category already represented in active skills
189
+ const activeSkills = this.deps.getActiveSkills();
190
+ const activeCategories = new Set(activeSkills.map((s) => s.category));
191
+ if (activeCategories.has(skill.category)) {
192
+ return 'allowed';
193
+ }
194
+ // 5. Otherwise — requires approval or denied
195
+ return requireApprovalForNewCategories ? 'requires_approval' : 'denied';
196
+ }
197
+ /**
198
+ * Disable a skill, rejecting if it is locked.
199
+ */
200
+ async handleDisable(skillId) {
201
+ if (!skillId) {
202
+ return { success: false, error: 'skillId is required for the disable action' };
203
+ }
204
+ const lockedSkills = this.deps.getLockedSkills();
205
+ if (lockedSkills.includes(skillId)) {
206
+ return {
207
+ success: false,
208
+ error: `Skill "${skillId}" is locked and cannot be disabled.`,
209
+ };
210
+ }
211
+ this.deps.unloadSkill(skillId);
212
+ return {
213
+ success: true,
214
+ output: { status: 'disabled', skillId },
215
+ };
216
+ }
217
+ /**
218
+ * Search for available skills by query string.
219
+ */
220
+ async handleSearch(query) {
221
+ if (!query) {
222
+ return { success: false, error: 'query is required for the search action' };
223
+ }
224
+ const results = this.deps.searchSkills(query);
225
+ return {
226
+ success: true,
227
+ output: { results },
228
+ };
229
+ }
230
+ /**
231
+ * List currently active skills.
232
+ */
233
+ async handleList() {
234
+ const skills = this.deps.getActiveSkills();
235
+ return {
236
+ success: true,
237
+ output: { skills },
238
+ };
239
+ }
240
+ }
241
+ //# sourceMappingURL=ManageSkillsTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ManageSkillsTool.js","sourceRoot":"","sources":["../../src/emergent/ManageSkillsTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * @fileoverview SQLite persistence for personality mutations with
3
+ * Ebbinghaus-style strength decay.
4
+ *
5
+ * Mutations persist across sessions and gradually fade toward baseline
6
+ * unless reinforced by repeated adaptation. The ConsolidationLoop calls
7
+ * {@link PersonalityMutationStore.decayAll} each cycle to reduce mutation
8
+ * strengths; mutations whose strength drops below the 0.1 threshold are
9
+ * pruned automatically.
10
+ *
11
+ * Uses the same {@link IStorageAdapter} interface as EmergentToolRegistry,
12
+ * keeping storage concerns decoupled from specific SQLite drivers.
13
+ *
14
+ * @module @framers/agentos/emergent/PersonalityMutationStore
15
+ */
16
+ import type { IStorageAdapter } from './EmergentToolRegistry.js';
17
+ /**
18
+ * A single persisted personality mutation record.
19
+ *
20
+ * Represents a specific HEXACO trait adjustment made by the agent, along with
21
+ * its current strength (which decays over time) and the reasoning that
22
+ * motivated the change.
23
+ */
24
+ export interface PersonalityMutation {
25
+ /** Unique mutation identifier (format: `pm_<timestamp>_<random>`). */
26
+ id: string;
27
+ /** The agent that made this mutation. */
28
+ agentId: string;
29
+ /** The HEXACO trait that was mutated (e.g., `'openness'`, `'conscientiousness'`). */
30
+ trait: string;
31
+ /** The signed delta applied to the trait value. Positive = increase, negative = decrease. */
32
+ delta: number;
33
+ /** Free-text reasoning explaining why the agent chose to mutate this trait. */
34
+ reasoning: string;
35
+ /** The trait value before this mutation was applied. */
36
+ baselineValue: number;
37
+ /** The trait value after this mutation was applied. */
38
+ mutatedValue: number;
39
+ /**
40
+ * Current strength of this mutation in the range (0, 1].
41
+ *
42
+ * Starts at 1.0 when recorded and decays each consolidation cycle.
43
+ * When strength drops to 0.1 or below, the mutation is pruned.
44
+ */
45
+ strength: number;
46
+ /** Unix epoch millisecond timestamp of when this mutation was recorded. */
47
+ createdAt: number;
48
+ }
49
+ /**
50
+ * Input parameters for recording a new personality mutation.
51
+ *
52
+ * The `strength` and `createdAt` fields are set automatically by the store
53
+ * (1.0 and `Date.now()` respectively).
54
+ */
55
+ export interface RecordMutationInput {
56
+ /** The agent making the mutation. */
57
+ agentId: string;
58
+ /** The HEXACO trait being mutated. */
59
+ trait: string;
60
+ /** The signed delta to apply. */
61
+ delta: number;
62
+ /** Free-text reasoning for the mutation. */
63
+ reasoning: string;
64
+ /** The trait value before mutation. */
65
+ baselineValue: number;
66
+ /** The trait value after mutation. */
67
+ mutatedValue: number;
68
+ }
69
+ /**
70
+ * Result of a decay cycle, reporting how many mutations were weakened
71
+ * and how many were pruned (deleted) for falling below the threshold.
72
+ */
73
+ export interface DecayResult {
74
+ /** Number of mutations whose strength was reduced but still above threshold. */
75
+ decayed: number;
76
+ /** Number of mutations deleted for falling at or below the 0.1 threshold. */
77
+ pruned: number;
78
+ }
79
+ /**
80
+ * SQLite-backed persistence layer for personality mutations with decay.
81
+ *
82
+ * Follows the same `ensureSchema()` pattern as {@link EmergentToolRegistry}:
83
+ * a cached promise guards against concurrent DDL execution, and all DML
84
+ * methods await schema readiness before proceeding.
85
+ *
86
+ * @example
87
+ * ```ts
88
+ * const store = new PersonalityMutationStore(sqliteAdapter);
89
+ *
90
+ * // Record a mutation
91
+ * const id = await store.record({
92
+ * agentId: 'agent-42',
93
+ * trait: 'openness',
94
+ * delta: 0.1,
95
+ * reasoning: 'User prefers creative responses',
96
+ * baselineValue: 0.7,
97
+ * mutatedValue: 0.8,
98
+ * });
99
+ *
100
+ * // Get strength-weighted effective deltas
101
+ * const deltas = await store.getEffectiveDeltas('agent-42');
102
+ * // => { openness: 0.1 } (strength is 1.0 initially)
103
+ *
104
+ * // Decay all mutations by 5%
105
+ * const { decayed, pruned } = await store.decayAll(0.05);
106
+ * ```
107
+ */
108
+ export declare class PersonalityMutationStore {
109
+ /** The underlying SQLite storage adapter. */
110
+ private readonly db;
111
+ /**
112
+ * Cached schema initialization promise.
113
+ * Ensures DDL runs exactly once, even under concurrent access.
114
+ */
115
+ private schemaReady;
116
+ /**
117
+ * Create a new PersonalityMutationStore.
118
+ *
119
+ * @param db - A storage adapter implementing the {@link IStorageAdapter}
120
+ * interface. The same adapter used by EmergentToolRegistry can be reused.
121
+ */
122
+ constructor(db: IStorageAdapter);
123
+ /**
124
+ * Idempotent schema initialization.
125
+ *
126
+ * Creates the `personality_mutations` table and its agent/trait index if
127
+ * they don't already exist. Uses the adapter's `exec()` method when
128
+ * available (for multi-statement DDL), falling back to individual `run()`
129
+ * calls for adapters that don't support it.
130
+ *
131
+ * @returns A promise that resolves when the schema is ready.
132
+ */
133
+ private ensureSchema;
134
+ /**
135
+ * Record a new personality mutation.
136
+ *
137
+ * Inserts a mutation record with initial strength of 1.0 and the current
138
+ * timestamp. The mutation ID is generated deterministically from the
139
+ * current time and a random suffix.
140
+ *
141
+ * @param input - The mutation parameters (agent, trait, delta, reasoning, values).
142
+ * @returns The generated mutation ID.
143
+ */
144
+ record(input: RecordMutationInput): Promise<string>;
145
+ /**
146
+ * Load all active mutations for a given agent.
147
+ *
148
+ * Returns only mutations whose strength is above the 0.1 pruning threshold,
149
+ * ordered by creation time (newest first).
150
+ *
151
+ * @param agentId - The agent whose mutations to load.
152
+ * @returns An array of {@link PersonalityMutation} records.
153
+ */
154
+ loadForAgent(agentId: string): Promise<PersonalityMutation[]>;
155
+ /**
156
+ * Compute the effective (strength-weighted) delta for each trait.
157
+ *
158
+ * For each active mutation, multiplies the raw delta by the mutation's
159
+ * current strength, then sums per trait. This gives a realistic picture
160
+ * of how much each trait has drifted from baseline, accounting for decay.
161
+ *
162
+ * @param agentId - The agent whose effective deltas to compute.
163
+ * @returns A map of trait name to effective delta (sum of `delta * strength`).
164
+ */
165
+ getEffectiveDeltas(agentId: string): Promise<Record<string, number>>;
166
+ /**
167
+ * Decay all active mutations by the given rate and prune expired ones.
168
+ *
169
+ * For each mutation with strength above 0.1:
170
+ * - Subtracts `rate` from its strength.
171
+ * - If the new strength is at or below 0.1, the mutation is deleted (pruned).
172
+ * - Otherwise, the strength is updated in place.
173
+ *
174
+ * This implements Ebbinghaus-style forgetting: mutations that aren't
175
+ * reinforced by repeated adaptation gradually fade away.
176
+ *
177
+ * @param rate - The amount to subtract from each mutation's strength.
178
+ * Typically 0.05 (the default from SelfImprovementConfig).
179
+ * @returns A {@link DecayResult} with counts of decayed and pruned mutations.
180
+ */
181
+ decayAll(rate: number): Promise<DecayResult>;
182
+ }
183
+ //# sourceMappingURL=PersonalityMutationStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersonalityMutationStore.d.ts","sourceRoot":"","sources":["../../src/emergent/PersonalityMutationStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAMjE;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAC;IAEX,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAEhB,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAC;IAEd,6FAA6F;IAC7F,KAAK,EAAE,MAAM,CAAC;IAEd,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAElB,wDAAwD;IACxD,aAAa,EAAE,MAAM,CAAC;IAEtB,uDAAuD;IACvD,YAAY,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB,2EAA2E;IAC3E,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,MAAM,CAAC;IAEhB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IAEd,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IAEd,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAElB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IAEtB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAC;IAEhB,6EAA6E;IAC7E,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,wBAAwB;IACnC,6CAA6C;IAC7C,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAkB;IAErC;;;OAGG;IACH,OAAO,CAAC,WAAW,CAA8B;IAEjD;;;;;OAKG;gBACS,EAAE,EAAE,eAAe;IAQ/B;;;;;;;;;OASG;YACW,YAAY;IAoC1B;;;;;;;;;OASG;IACG,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BzD;;;;;;;;OAQG;IACG,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAyBnE;;;;;;;;;OASG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAe1E;;;;;;;;;;;;;;OAcG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CA4BnD"}