@soleri/core 2.1.0 → 2.4.0

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 (207) hide show
  1. package/dist/brain/brain.d.ts +3 -1
  2. package/dist/brain/brain.d.ts.map +1 -1
  3. package/dist/brain/brain.js +60 -4
  4. package/dist/brain/brain.js.map +1 -1
  5. package/dist/brain/intelligence.d.ts +36 -1
  6. package/dist/brain/intelligence.d.ts.map +1 -1
  7. package/dist/brain/intelligence.js +119 -14
  8. package/dist/brain/intelligence.js.map +1 -1
  9. package/dist/brain/types.d.ts +32 -0
  10. package/dist/brain/types.d.ts.map +1 -1
  11. package/dist/control/identity-manager.d.ts +22 -0
  12. package/dist/control/identity-manager.d.ts.map +1 -0
  13. package/dist/control/identity-manager.js +233 -0
  14. package/dist/control/identity-manager.js.map +1 -0
  15. package/dist/control/intent-router.d.ts +32 -0
  16. package/dist/control/intent-router.d.ts.map +1 -0
  17. package/dist/control/intent-router.js +242 -0
  18. package/dist/control/intent-router.js.map +1 -0
  19. package/dist/control/types.d.ts +68 -0
  20. package/dist/control/types.d.ts.map +1 -0
  21. package/dist/control/types.js +9 -0
  22. package/dist/control/types.js.map +1 -0
  23. package/dist/curator/curator.d.ts +29 -0
  24. package/dist/curator/curator.d.ts.map +1 -1
  25. package/dist/curator/curator.js +135 -0
  26. package/dist/curator/curator.js.map +1 -1
  27. package/dist/facades/types.d.ts +1 -1
  28. package/dist/governance/governance.d.ts +42 -0
  29. package/dist/governance/governance.d.ts.map +1 -0
  30. package/dist/governance/governance.js +488 -0
  31. package/dist/governance/governance.js.map +1 -0
  32. package/dist/governance/index.d.ts +3 -0
  33. package/dist/governance/index.d.ts.map +1 -0
  34. package/dist/governance/index.js +2 -0
  35. package/dist/governance/index.js.map +1 -0
  36. package/dist/governance/types.d.ts +102 -0
  37. package/dist/governance/types.d.ts.map +1 -0
  38. package/dist/governance/types.js +3 -0
  39. package/dist/governance/types.js.map +1 -0
  40. package/dist/index.d.ts +32 -3
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +29 -1
  43. package/dist/index.js.map +1 -1
  44. package/dist/logging/logger.d.ts +37 -0
  45. package/dist/logging/logger.d.ts.map +1 -0
  46. package/dist/logging/logger.js +145 -0
  47. package/dist/logging/logger.js.map +1 -0
  48. package/dist/logging/types.d.ts +19 -0
  49. package/dist/logging/types.d.ts.map +1 -0
  50. package/dist/logging/types.js +2 -0
  51. package/dist/logging/types.js.map +1 -0
  52. package/dist/loop/loop-manager.d.ts +49 -0
  53. package/dist/loop/loop-manager.d.ts.map +1 -0
  54. package/dist/loop/loop-manager.js +105 -0
  55. package/dist/loop/loop-manager.js.map +1 -0
  56. package/dist/loop/types.d.ts +35 -0
  57. package/dist/loop/types.d.ts.map +1 -0
  58. package/dist/loop/types.js +8 -0
  59. package/dist/loop/types.js.map +1 -0
  60. package/dist/planning/gap-analysis.d.ts +29 -0
  61. package/dist/planning/gap-analysis.d.ts.map +1 -0
  62. package/dist/planning/gap-analysis.js +265 -0
  63. package/dist/planning/gap-analysis.js.map +1 -0
  64. package/dist/planning/gap-types.d.ts +29 -0
  65. package/dist/planning/gap-types.d.ts.map +1 -0
  66. package/dist/planning/gap-types.js +28 -0
  67. package/dist/planning/gap-types.js.map +1 -0
  68. package/dist/planning/planner.d.ts +150 -1
  69. package/dist/planning/planner.d.ts.map +1 -1
  70. package/dist/planning/planner.js +365 -2
  71. package/dist/planning/planner.js.map +1 -1
  72. package/dist/project/project-registry.d.ts +79 -0
  73. package/dist/project/project-registry.d.ts.map +1 -0
  74. package/dist/project/project-registry.js +276 -0
  75. package/dist/project/project-registry.js.map +1 -0
  76. package/dist/project/types.d.ts +28 -0
  77. package/dist/project/types.d.ts.map +1 -0
  78. package/dist/project/types.js +5 -0
  79. package/dist/project/types.js.map +1 -0
  80. package/dist/runtime/admin-extra-ops.d.ts +13 -0
  81. package/dist/runtime/admin-extra-ops.d.ts.map +1 -0
  82. package/dist/runtime/admin-extra-ops.js +284 -0
  83. package/dist/runtime/admin-extra-ops.js.map +1 -0
  84. package/dist/runtime/admin-ops.d.ts +15 -0
  85. package/dist/runtime/admin-ops.d.ts.map +1 -0
  86. package/dist/runtime/admin-ops.js +322 -0
  87. package/dist/runtime/admin-ops.js.map +1 -0
  88. package/dist/runtime/capture-ops.d.ts +15 -0
  89. package/dist/runtime/capture-ops.d.ts.map +1 -0
  90. package/dist/runtime/capture-ops.js +345 -0
  91. package/dist/runtime/capture-ops.js.map +1 -0
  92. package/dist/runtime/core-ops.d.ts +7 -3
  93. package/dist/runtime/core-ops.d.ts.map +1 -1
  94. package/dist/runtime/core-ops.js +474 -8
  95. package/dist/runtime/core-ops.js.map +1 -1
  96. package/dist/runtime/curator-extra-ops.d.ts +9 -0
  97. package/dist/runtime/curator-extra-ops.d.ts.map +1 -0
  98. package/dist/runtime/curator-extra-ops.js +59 -0
  99. package/dist/runtime/curator-extra-ops.js.map +1 -0
  100. package/dist/runtime/domain-ops.d.ts.map +1 -1
  101. package/dist/runtime/domain-ops.js +59 -13
  102. package/dist/runtime/domain-ops.js.map +1 -1
  103. package/dist/runtime/grading-ops.d.ts +14 -0
  104. package/dist/runtime/grading-ops.d.ts.map +1 -0
  105. package/dist/runtime/grading-ops.js +105 -0
  106. package/dist/runtime/grading-ops.js.map +1 -0
  107. package/dist/runtime/loop-ops.d.ts +13 -0
  108. package/dist/runtime/loop-ops.d.ts.map +1 -0
  109. package/dist/runtime/loop-ops.js +179 -0
  110. package/dist/runtime/loop-ops.js.map +1 -0
  111. package/dist/runtime/memory-cross-project-ops.d.ts +12 -0
  112. package/dist/runtime/memory-cross-project-ops.d.ts.map +1 -0
  113. package/dist/runtime/memory-cross-project-ops.js +165 -0
  114. package/dist/runtime/memory-cross-project-ops.js.map +1 -0
  115. package/dist/runtime/memory-extra-ops.d.ts +13 -0
  116. package/dist/runtime/memory-extra-ops.d.ts.map +1 -0
  117. package/dist/runtime/memory-extra-ops.js +173 -0
  118. package/dist/runtime/memory-extra-ops.js.map +1 -0
  119. package/dist/runtime/orchestrate-ops.d.ts +17 -0
  120. package/dist/runtime/orchestrate-ops.d.ts.map +1 -0
  121. package/dist/runtime/orchestrate-ops.js +240 -0
  122. package/dist/runtime/orchestrate-ops.js.map +1 -0
  123. package/dist/runtime/planning-extra-ops.d.ts +17 -0
  124. package/dist/runtime/planning-extra-ops.d.ts.map +1 -0
  125. package/dist/runtime/planning-extra-ops.js +300 -0
  126. package/dist/runtime/planning-extra-ops.js.map +1 -0
  127. package/dist/runtime/project-ops.d.ts +15 -0
  128. package/dist/runtime/project-ops.d.ts.map +1 -0
  129. package/dist/runtime/project-ops.js +181 -0
  130. package/dist/runtime/project-ops.js.map +1 -0
  131. package/dist/runtime/runtime.d.ts.map +1 -1
  132. package/dist/runtime/runtime.js +44 -1
  133. package/dist/runtime/runtime.js.map +1 -1
  134. package/dist/runtime/types.d.ts +21 -0
  135. package/dist/runtime/types.d.ts.map +1 -1
  136. package/dist/runtime/vault-extra-ops.d.ts +9 -0
  137. package/dist/runtime/vault-extra-ops.d.ts.map +1 -0
  138. package/dist/runtime/vault-extra-ops.js +195 -0
  139. package/dist/runtime/vault-extra-ops.js.map +1 -0
  140. package/dist/telemetry/telemetry.d.ts +48 -0
  141. package/dist/telemetry/telemetry.d.ts.map +1 -0
  142. package/dist/telemetry/telemetry.js +87 -0
  143. package/dist/telemetry/telemetry.js.map +1 -0
  144. package/dist/vault/vault.d.ts +94 -0
  145. package/dist/vault/vault.d.ts.map +1 -1
  146. package/dist/vault/vault.js +340 -1
  147. package/dist/vault/vault.js.map +1 -1
  148. package/package.json +1 -1
  149. package/src/__tests__/admin-extra-ops.test.ts +420 -0
  150. package/src/__tests__/admin-ops.test.ts +271 -0
  151. package/src/__tests__/brain-intelligence.test.ts +205 -0
  152. package/src/__tests__/brain.test.ts +131 -0
  153. package/src/__tests__/capture-ops.test.ts +509 -0
  154. package/src/__tests__/core-ops.test.ts +266 -2
  155. package/src/__tests__/curator-extra-ops.test.ts +359 -0
  156. package/src/__tests__/domain-ops.test.ts +66 -0
  157. package/src/__tests__/governance.test.ts +522 -0
  158. package/src/__tests__/grading-ops.test.ts +340 -0
  159. package/src/__tests__/identity-manager.test.ts +243 -0
  160. package/src/__tests__/intent-router.test.ts +222 -0
  161. package/src/__tests__/logger.test.ts +200 -0
  162. package/src/__tests__/loop-ops.test.ts +398 -0
  163. package/src/__tests__/memory-cross-project-ops.test.ts +246 -0
  164. package/src/__tests__/memory-extra-ops.test.ts +352 -0
  165. package/src/__tests__/orchestrate-ops.test.ts +284 -0
  166. package/src/__tests__/planner.test.ts +331 -0
  167. package/src/__tests__/planning-extra-ops.test.ts +548 -0
  168. package/src/__tests__/project-ops.test.ts +367 -0
  169. package/src/__tests__/vault-extra-ops.test.ts +407 -0
  170. package/src/brain/brain.ts +114 -7
  171. package/src/brain/intelligence.ts +179 -10
  172. package/src/brain/types.ts +38 -0
  173. package/src/control/identity-manager.ts +354 -0
  174. package/src/control/intent-router.ts +326 -0
  175. package/src/control/types.ts +102 -0
  176. package/src/curator/curator.ts +213 -0
  177. package/src/governance/governance.ts +698 -0
  178. package/src/governance/index.ts +18 -0
  179. package/src/governance/types.ts +111 -0
  180. package/src/index.ts +102 -2
  181. package/src/logging/logger.ts +154 -0
  182. package/src/logging/types.ts +21 -0
  183. package/src/loop/loop-manager.ts +130 -0
  184. package/src/loop/types.ts +44 -0
  185. package/src/planning/gap-analysis.ts +506 -0
  186. package/src/planning/gap-types.ts +58 -0
  187. package/src/planning/planner.ts +478 -2
  188. package/src/project/project-registry.ts +358 -0
  189. package/src/project/types.ts +31 -0
  190. package/src/runtime/admin-extra-ops.ts +307 -0
  191. package/src/runtime/admin-ops.ts +329 -0
  192. package/src/runtime/capture-ops.ts +385 -0
  193. package/src/runtime/core-ops.ts +535 -7
  194. package/src/runtime/curator-extra-ops.ts +71 -0
  195. package/src/runtime/domain-ops.ts +65 -13
  196. package/src/runtime/grading-ops.ts +121 -0
  197. package/src/runtime/loop-ops.ts +194 -0
  198. package/src/runtime/memory-cross-project-ops.ts +192 -0
  199. package/src/runtime/memory-extra-ops.ts +186 -0
  200. package/src/runtime/orchestrate-ops.ts +272 -0
  201. package/src/runtime/planning-extra-ops.ts +327 -0
  202. package/src/runtime/project-ops.ts +196 -0
  203. package/src/runtime/runtime.ts +49 -1
  204. package/src/runtime/types.ts +21 -0
  205. package/src/runtime/vault-extra-ops.ts +225 -0
  206. package/src/telemetry/telemetry.ts +118 -0
  207. package/src/vault/vault.ts +412 -1
@@ -0,0 +1,179 @@
1
+ /**
2
+ * Loop operations — 7 ops for iterative validation loops.
3
+ *
4
+ * Ops: loop_start, loop_iterate, loop_status, loop_cancel,
5
+ * loop_history, loop_is_active, loop_complete.
6
+ */
7
+ import { z } from 'zod';
8
+ const loopModeSchema = z.enum([
9
+ 'token-migration',
10
+ 'contrast-fix',
11
+ 'component-build',
12
+ 'plan-iteration',
13
+ 'custom',
14
+ ]);
15
+ /**
16
+ * Default max iterations per mode.
17
+ */
18
+ const DEFAULT_MAX_ITERATIONS = {
19
+ 'token-migration': 20,
20
+ 'contrast-fix': 15,
21
+ 'component-build': 20,
22
+ 'plan-iteration': 10,
23
+ custom: 20,
24
+ };
25
+ /**
26
+ * Default target scores per mode.
27
+ */
28
+ const DEFAULT_TARGET_SCORES = {
29
+ 'token-migration': 95,
30
+ 'component-build': 90,
31
+ 'plan-iteration': 90,
32
+ };
33
+ /**
34
+ * Create the 7 loop operations for an agent runtime.
35
+ */
36
+ export function createLoopOps(runtime) {
37
+ const { loop } = runtime;
38
+ return [
39
+ {
40
+ name: 'loop_start',
41
+ description: 'Start an iterative validation loop. Modes: token-migration, contrast-fix, component-build, plan-iteration, custom.',
42
+ auth: 'write',
43
+ schema: z.object({
44
+ mode: loopModeSchema,
45
+ prompt: z.string().describe('Task description for the loop.'),
46
+ maxIterations: z
47
+ .number()
48
+ .optional()
49
+ .describe('Max iterations. Defaults vary by mode (10-20).'),
50
+ targetScore: z
51
+ .number()
52
+ .optional()
53
+ .describe('Target validation score (0-100). Defaults vary by mode.'),
54
+ }),
55
+ handler: async (params) => {
56
+ const mode = params.mode;
57
+ const prompt = params.prompt;
58
+ const maxIterations = params.maxIterations ?? DEFAULT_MAX_ITERATIONS[mode];
59
+ const targetScore = params.targetScore ?? DEFAULT_TARGET_SCORES[mode];
60
+ const state = loop.startLoop({
61
+ mode,
62
+ prompt,
63
+ maxIterations,
64
+ targetScore,
65
+ });
66
+ return {
67
+ started: true,
68
+ loopId: state.id,
69
+ mode,
70
+ maxIterations,
71
+ targetScore: targetScore ?? null,
72
+ };
73
+ },
74
+ },
75
+ {
76
+ name: 'loop_iterate',
77
+ description: 'Record a validation iteration result. If max iterations reached on a failing result, the loop auto-closes.',
78
+ auth: 'write',
79
+ schema: z.object({
80
+ passed: z.boolean().describe('Whether this iteration passed validation.'),
81
+ validationScore: z
82
+ .number()
83
+ .optional()
84
+ .describe('Numeric validation score (0-100).'),
85
+ validationResult: z
86
+ .string()
87
+ .optional()
88
+ .describe('Free-text validation result summary.'),
89
+ }),
90
+ handler: async (params) => {
91
+ const iteration = loop.iterate({
92
+ passed: params.passed,
93
+ validationScore: params.validationScore,
94
+ validationResult: params.validationResult,
95
+ });
96
+ const status = loop.getStatus();
97
+ return {
98
+ iteration: iteration.iteration,
99
+ passed: iteration.passed,
100
+ validationScore: iteration.validationScore ?? null,
101
+ loopActive: loop.isActive(),
102
+ loopStatus: status?.status ?? 'max-iterations',
103
+ };
104
+ },
105
+ },
106
+ {
107
+ name: 'loop_status',
108
+ description: 'Get current loop status, config, and iteration history.',
109
+ auth: 'read',
110
+ handler: async () => {
111
+ const status = loop.getStatus();
112
+ if (!status) {
113
+ return { active: false, loop: null };
114
+ }
115
+ return {
116
+ active: true,
117
+ loop: status,
118
+ };
119
+ },
120
+ },
121
+ {
122
+ name: 'loop_cancel',
123
+ description: 'Cancel the active loop.',
124
+ auth: 'write',
125
+ handler: async () => {
126
+ const cancelled = loop.cancelLoop();
127
+ return {
128
+ cancelled: true,
129
+ loopId: cancelled.id,
130
+ iterations: cancelled.iterations.length,
131
+ status: cancelled.status,
132
+ };
133
+ },
134
+ },
135
+ {
136
+ name: 'loop_history',
137
+ description: 'Get history of all completed, cancelled, and max-iterations loops.',
138
+ auth: 'read',
139
+ handler: async () => {
140
+ const history = loop.getHistory();
141
+ return {
142
+ count: history.length,
143
+ loops: history.map((l) => ({
144
+ id: l.id,
145
+ mode: l.config.mode,
146
+ prompt: l.config.prompt,
147
+ status: l.status,
148
+ iterations: l.iterations.length,
149
+ startedAt: l.startedAt,
150
+ completedAt: l.completedAt,
151
+ })),
152
+ };
153
+ },
154
+ },
155
+ {
156
+ name: 'loop_is_active',
157
+ description: 'Check if a validation loop is currently running.',
158
+ auth: 'read',
159
+ handler: async () => {
160
+ return { active: loop.isActive() };
161
+ },
162
+ },
163
+ {
164
+ name: 'loop_complete',
165
+ description: 'Mark the active loop as completed (validation passed).',
166
+ auth: 'write',
167
+ handler: async () => {
168
+ const completed = loop.completeLoop();
169
+ return {
170
+ completed: true,
171
+ loopId: completed.id,
172
+ iterations: completed.iterations.length,
173
+ status: completed.status,
174
+ };
175
+ },
176
+ },
177
+ ];
178
+ }
179
+ //# sourceMappingURL=loop-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-ops.js","sourceRoot":"","sources":["../../src/runtime/loop-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Cross-project memory operations — 3 ops for sharing knowledge across linked projects.
3
+ *
4
+ * Ops: memory_promote_to_global, memory_configure, memory_cross_project_search.
5
+ */
6
+ import type { OpDefinition } from '../facades/types.js';
7
+ import type { AgentRuntime } from './types.js';
8
+ /**
9
+ * Create the 3 cross-project memory operations for an agent runtime.
10
+ */
11
+ export declare function createMemoryCrossProjectOps(runtime: AgentRuntime): OpDefinition[];
12
+ //# sourceMappingURL=memory-cross-project-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cross-project-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/memory-cross-project-ops.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CAkLjF"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Cross-project memory operations — 3 ops for sharing knowledge across linked projects.
3
+ *
4
+ * Ops: memory_promote_to_global, memory_configure, memory_cross_project_search.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Create the 3 cross-project memory operations for an agent runtime.
9
+ */
10
+ export function createMemoryCrossProjectOps(runtime) {
11
+ const { vault, projectRegistry } = runtime;
12
+ return [
13
+ {
14
+ name: 'memory_promote_to_global',
15
+ description: 'Promote a vault entry to the global pool by adding a _global tag. Promoted entries surface in cross-project searches across all linked projects.',
16
+ auth: 'write',
17
+ schema: z.object({
18
+ entryId: z.string().describe('The vault entry ID to promote.'),
19
+ }),
20
+ handler: async (params) => {
21
+ const entryId = params.entryId;
22
+ const entry = vault.get(entryId);
23
+ if (!entry)
24
+ return { promoted: false, error: `Entry not found: ${entryId}` };
25
+ const tags = entry.tags ?? [];
26
+ if (tags.includes('_global')) {
27
+ return { promoted: false, entryId, message: 'Entry is already promoted to global.' };
28
+ }
29
+ vault.update(entryId, { tags: [...tags, '_global'] });
30
+ return { promoted: true, entryId, tags: [...tags, '_global'] };
31
+ },
32
+ },
33
+ {
34
+ name: 'memory_configure',
35
+ description: 'Configure cross-project memory settings for a project. Stores config in the project registry metadata.',
36
+ auth: 'admin',
37
+ schema: z.object({
38
+ projectPath: z.string().describe('Project path to configure.'),
39
+ crossProjectEnabled: z
40
+ .boolean()
41
+ .optional()
42
+ .describe('Enable/disable cross-project memory search.'),
43
+ extraPaths: z
44
+ .array(z.string())
45
+ .optional()
46
+ .describe('Additional project paths to include in cross-project searches.'),
47
+ }),
48
+ handler: async (params) => {
49
+ const projectPath = params.projectPath;
50
+ const project = projectRegistry.getByPath(projectPath);
51
+ if (!project) {
52
+ return { configured: false, error: `Project not registered: ${projectPath}` };
53
+ }
54
+ const currentMeta = project.metadata ?? {};
55
+ const memoryConfig = currentMeta.memoryConfig ?? {};
56
+ if (params.crossProjectEnabled !== undefined) {
57
+ memoryConfig.crossProjectEnabled = params.crossProjectEnabled;
58
+ }
59
+ if (params.extraPaths !== undefined) {
60
+ memoryConfig.extraPaths = params.extraPaths;
61
+ }
62
+ projectRegistry.register(projectPath, project.name, {
63
+ ...currentMeta,
64
+ memoryConfig,
65
+ });
66
+ return { configured: true, projectPath, memoryConfig };
67
+ },
68
+ },
69
+ {
70
+ name: 'memory_cross_project_search',
71
+ description: 'Search memories across the current project and all linked projects. Results weighted: current=1.0, global=0.9, linked=0.8. Requires cross-project search to be enabled.',
72
+ auth: 'read',
73
+ schema: z.object({
74
+ query: z.string().describe('Search query.'),
75
+ projectPath: z.string().describe('Current project path.'),
76
+ type: z
77
+ .enum(['session', 'lesson', 'preference'])
78
+ .optional()
79
+ .describe('Filter by memory type.'),
80
+ limit: z.number().optional().describe('Max results per project (default 10).'),
81
+ }),
82
+ handler: async (params) => {
83
+ const query = params.query;
84
+ const projectPath = params.projectPath;
85
+ const type = params.type;
86
+ const limit = params.limit ?? 10;
87
+ // Search current project (weight 1.0)
88
+ const currentResults = vault.searchMemories(query, { projectPath, type, limit });
89
+ const weightedResults = currentResults.map((m) => ({
90
+ memory: m,
91
+ weight: 1.0,
92
+ source: 'current',
93
+ }));
94
+ // Search for globally promoted entries (search broadly, then filter for _global tag)
95
+ const allResults = vault.search(query, { limit: limit * 3 });
96
+ const globalEntries = allResults
97
+ .filter((r) => r.entry.tags?.includes('_global'))
98
+ .slice(0, limit)
99
+ .map((r) => ({
100
+ entry: r.entry,
101
+ score: r.score,
102
+ weight: 0.9,
103
+ source: 'global',
104
+ }));
105
+ // Get linked projects and search their memories
106
+ const project = projectRegistry.getByPath(projectPath);
107
+ const linkedMemories = [];
108
+ if (project) {
109
+ const config = project.metadata?.memoryConfig ?? {};
110
+ const enabled = config.crossProjectEnabled !== false; // default enabled
111
+ if (enabled) {
112
+ const linked = projectRegistry.getLinkedProjects(project.id);
113
+ for (const { project: linkedProj } of linked) {
114
+ const results = vault.searchMemories(query, {
115
+ projectPath: linkedProj.path,
116
+ type,
117
+ limit: Math.ceil(limit / 2), // fewer results from linked projects
118
+ });
119
+ for (const m of results) {
120
+ linkedMemories.push({
121
+ memory: m,
122
+ weight: 0.8,
123
+ source: 'linked',
124
+ linkedProject: linkedProj.path,
125
+ });
126
+ }
127
+ }
128
+ // Also search extra paths
129
+ const extraPaths = config.extraPaths ?? [];
130
+ for (const extraPath of extraPaths) {
131
+ const results = vault.searchMemories(query, {
132
+ projectPath: extraPath,
133
+ type,
134
+ limit: Math.ceil(limit / 2),
135
+ });
136
+ for (const m of results) {
137
+ linkedMemories.push({
138
+ memory: m,
139
+ weight: 0.7,
140
+ source: 'linked',
141
+ linkedProject: extraPath,
142
+ });
143
+ }
144
+ }
145
+ }
146
+ }
147
+ // Deduplicate by memory ID
148
+ const seen = new Set(weightedResults.map((r) => r.memory.id));
149
+ const dedupedLinked = linkedMemories.filter((r) => {
150
+ if (seen.has(r.memory.id))
151
+ return false;
152
+ seen.add(r.memory.id);
153
+ return true;
154
+ });
155
+ return {
156
+ memories: weightedResults,
157
+ globalEntries,
158
+ linkedMemories: dedupedLinked,
159
+ totalResults: weightedResults.length + globalEntries.length + dedupedLinked.length,
160
+ };
161
+ },
162
+ },
163
+ ];
164
+ }
165
+ //# sourceMappingURL=memory-cross-project-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-cross-project-ops.js","sourceRoot":"","sources":["../../src/runtime/memory-cross-project-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Extended memory operations — 8 ops for advanced memory management.
3
+ *
4
+ * These complement the 4 base memory ops in core-ops.ts:
5
+ * memory_search, memory_capture, memory_list, session_capture
6
+ *
7
+ * New ops: memory_delete, memory_stats, memory_export, memory_import,
8
+ * memory_prune, memory_deduplicate, memory_topics, memory_by_project
9
+ */
10
+ import type { OpDefinition } from '../facades/types.js';
11
+ import type { AgentRuntime } from './types.js';
12
+ export declare function createMemoryExtraOps(runtime: AgentRuntime): OpDefinition[];
13
+ //# sourceMappingURL=memory-extra-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA2K1E"}
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Extended memory operations — 8 ops for advanced memory management.
3
+ *
4
+ * These complement the 4 base memory ops in core-ops.ts:
5
+ * memory_search, memory_capture, memory_list, session_capture
6
+ *
7
+ * New ops: memory_delete, memory_stats, memory_export, memory_import,
8
+ * memory_prune, memory_deduplicate, memory_topics, memory_by_project
9
+ */
10
+ import { z } from 'zod';
11
+ export function createMemoryExtraOps(runtime) {
12
+ const { vault } = runtime;
13
+ return [
14
+ {
15
+ name: 'memory_delete',
16
+ description: 'Delete a memory by ID. Returns whether the deletion was successful.',
17
+ auth: 'write',
18
+ schema: z.object({
19
+ memoryId: z.string().describe('The memory ID to delete'),
20
+ }),
21
+ handler: async (params) => {
22
+ const memoryId = params.memoryId;
23
+ const existing = vault.getMemory(memoryId);
24
+ if (!existing) {
25
+ return { deleted: false, error: `Memory "${memoryId}" not found.` };
26
+ }
27
+ const deleted = vault.deleteMemory(memoryId);
28
+ return { deleted, memoryId };
29
+ },
30
+ },
31
+ {
32
+ name: 'memory_stats',
33
+ description: 'Detailed memory statistics — counts by type, project, date range, plus oldest/newest timestamps and archived count.',
34
+ auth: 'read',
35
+ schema: z.object({
36
+ projectPath: z.string().optional().describe('Filter stats to a specific project'),
37
+ fromDate: z
38
+ .number()
39
+ .optional()
40
+ .describe('Unix timestamp — only include memories created after this date'),
41
+ toDate: z
42
+ .number()
43
+ .optional()
44
+ .describe('Unix timestamp — only include memories created before this date'),
45
+ }),
46
+ handler: async (params) => {
47
+ return vault.memoryStatsDetailed({
48
+ projectPath: params.projectPath,
49
+ fromDate: params.fromDate,
50
+ toDate: params.toDate,
51
+ });
52
+ },
53
+ },
54
+ {
55
+ name: 'memory_export',
56
+ description: 'Export memories as a JSON array. Optionally filter by project or type. Useful for backup and migration.',
57
+ auth: 'read',
58
+ schema: z.object({
59
+ projectPath: z.string().optional().describe('Filter to a specific project'),
60
+ type: z.enum(['session', 'lesson', 'preference']).optional().describe('Filter by memory type'),
61
+ includeArchived: z
62
+ .boolean()
63
+ .optional()
64
+ .default(false)
65
+ .describe('Whether to include archived memories'),
66
+ }),
67
+ handler: async (params) => {
68
+ const memories = vault.exportMemories({
69
+ projectPath: params.projectPath,
70
+ type: params.type,
71
+ includeArchived: params.includeArchived ?? false,
72
+ });
73
+ return { exported: true, count: memories.length, memories };
74
+ },
75
+ },
76
+ {
77
+ name: 'memory_import',
78
+ description: 'Import memories from a JSON array. Duplicates (same ID) are skipped. Returns imported and skipped counts.',
79
+ auth: 'write',
80
+ schema: z.object({
81
+ memories: z
82
+ .array(z.object({
83
+ id: z.string(),
84
+ projectPath: z.string(),
85
+ type: z.enum(['session', 'lesson', 'preference']),
86
+ context: z.string(),
87
+ summary: z.string(),
88
+ topics: z.array(z.string()).optional().default([]),
89
+ filesModified: z.array(z.string()).optional().default([]),
90
+ toolsUsed: z.array(z.string()).optional().default([]),
91
+ createdAt: z.number(),
92
+ archivedAt: z.number().nullable().optional().default(null),
93
+ }))
94
+ .describe('Array of memory objects to import'),
95
+ }),
96
+ handler: async (params) => {
97
+ const memories = params.memories.map((m) => ({
98
+ id: m.id,
99
+ projectPath: m.projectPath,
100
+ type: m.type,
101
+ context: m.context,
102
+ summary: m.summary,
103
+ topics: m.topics ?? [],
104
+ filesModified: m.filesModified ?? [],
105
+ toolsUsed: m.toolsUsed ?? [],
106
+ createdAt: m.createdAt,
107
+ archivedAt: m.archivedAt ?? null,
108
+ }));
109
+ const result = vault.importMemories(memories);
110
+ return { ...result, total: memories.length };
111
+ },
112
+ },
113
+ {
114
+ name: 'memory_prune',
115
+ description: 'Delete non-archived memories older than N days. Destructive — cannot be undone.',
116
+ auth: 'admin',
117
+ schema: z.object({
118
+ olderThanDays: z
119
+ .number()
120
+ .min(1)
121
+ .describe('Delete memories older than this many days'),
122
+ }),
123
+ handler: async (params) => {
124
+ const days = params.olderThanDays;
125
+ const result = vault.pruneMemories(days);
126
+ return { ...result, olderThanDays: days };
127
+ },
128
+ },
129
+ {
130
+ name: 'memory_deduplicate',
131
+ description: 'Find and remove duplicate memories (same summary + project + type). Keeps the earliest entry in each duplicate group.',
132
+ auth: 'admin',
133
+ schema: z.object({}),
134
+ handler: async () => {
135
+ return vault.deduplicateMemories();
136
+ },
137
+ },
138
+ {
139
+ name: 'memory_topics',
140
+ description: 'List all unique topics across memories, with occurrence counts. Sorted by frequency descending.',
141
+ auth: 'read',
142
+ schema: z.object({}),
143
+ handler: async () => {
144
+ const topics = vault.memoryTopics();
145
+ return { count: topics.length, topics };
146
+ },
147
+ },
148
+ {
149
+ name: 'memory_by_project',
150
+ description: 'List memories grouped by project path. Each group includes the project path, count, and the memories themselves.',
151
+ auth: 'read',
152
+ schema: z.object({
153
+ includeMemories: z
154
+ .boolean()
155
+ .optional()
156
+ .default(true)
157
+ .describe('Whether to include full memory objects or just counts'),
158
+ }),
159
+ handler: async (params) => {
160
+ const includeMemories = params.includeMemories ?? true;
161
+ const groups = vault.memoriesByProject();
162
+ if (!includeMemories) {
163
+ return {
164
+ count: groups.length,
165
+ projects: groups.map((g) => ({ project: g.project, count: g.count })),
166
+ };
167
+ }
168
+ return { count: groups.length, projects: groups };
169
+ },
170
+ },
171
+ ];
172
+ }
173
+ //# sourceMappingURL=memory-extra-ops.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-extra-ops.js","sourceRoot":"","sources":["../../src/runtime/memory-extra-ops.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Orchestration operations — compose planning + brain + vault into high-level workflows.
3
+ *
4
+ * These ops are convenience wrappers that sequence multiple module calls:
5
+ * - orchestrate_plan: brain-informed plan creation
6
+ * - orchestrate_execute: start plan + brain session together
7
+ * - orchestrate_complete: finish plan + brain session + extract knowledge
8
+ * - orchestrate_status: combined status across all modules
9
+ * - orchestrate_quick_capture: one-call knowledge capture without full planning
10
+ */
11
+ import type { OpDefinition } from '../facades/types.js';
12
+ import type { AgentRuntime } from './types.js';
13
+ /**
14
+ * Create the 5 orchestration operations for an agent runtime.
15
+ */
16
+ export declare function createOrchestrateOps(runtime: AgentRuntime): OpDefinition[];
17
+ //# sourceMappingURL=orchestrate-ops.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orchestrate-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/orchestrate-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA6P1E"}