@memberjunction/ai-agents 4.2.0 → 4.3.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 (30) hide show
  1. package/README.md +4 -0
  2. package/dist/agent-context-injector.d.ts +63 -23
  3. package/dist/agent-context-injector.d.ts.map +1 -1
  4. package/dist/agent-context-injector.js +205 -55
  5. package/dist/agent-context-injector.js.map +1 -1
  6. package/dist/base-agent.d.ts +36 -2
  7. package/dist/base-agent.d.ts.map +1 -1
  8. package/dist/base-agent.js +189 -13
  9. package/dist/base-agent.js.map +1 -1
  10. package/dist/memory-manager-agent.d.ts +47 -0
  11. package/dist/memory-manager-agent.d.ts.map +1 -1
  12. package/dist/memory-manager-agent.js +389 -51
  13. package/dist/memory-manager-agent.js.map +1 -1
  14. package/package.json +16 -18
  15. package/dist/__tests__/action-changes.test.d.ts +0 -15
  16. package/dist/__tests__/action-changes.test.d.ts.map +0 -1
  17. package/dist/__tests__/action-changes.test.js +0 -394
  18. package/dist/__tests__/action-changes.test.js.map +0 -1
  19. package/dist/__tests__/agent-memory-features.test.d.ts +0 -123
  20. package/dist/__tests__/agent-memory-features.test.d.ts.map +0 -1
  21. package/dist/__tests__/agent-memory-features.test.js +0 -596
  22. package/dist/__tests__/agent-memory-features.test.js.map +0 -1
  23. package/dist/__tests__/agent-type-prompt-params.test.d.ts +0 -14
  24. package/dist/__tests__/agent-type-prompt-params.test.d.ts.map +0 -1
  25. package/dist/__tests__/agent-type-prompt-params.test.js +0 -583
  26. package/dist/__tests__/agent-type-prompt-params.test.js.map +0 -1
  27. package/dist/__tests__/chat-handling-option.test.d.ts +0 -54
  28. package/dist/__tests__/chat-handling-option.test.d.ts.map +0 -1
  29. package/dist/__tests__/chat-handling-option.test.js +0 -222
  30. package/dist/__tests__/chat-handling-option.test.js.map +0 -1
package/README.md CHANGED
@@ -294,6 +294,10 @@ const result = await runner.ExecuteAgent({
294
294
  });
295
295
  ```
296
296
 
297
+ ## Architecture Documentation
298
+
299
+ For multi-tenant memory scoping (notes/examples), see [AGENT_MEMORY_SCOPING.md](./AGENT_MEMORY_SCOPING.md).
300
+
297
301
  ## Re-exports
298
302
 
299
303
  For backward compatibility, this package re-exports the following from `@memberjunction/ai-reranker`:
@@ -1,6 +1,6 @@
1
1
  import { UserInfo } from "@memberjunction/core";
2
2
  import { AIAgentNoteEntity, AIAgentExampleEntity } from "@memberjunction/core-entities";
3
- import { UserScope } from "@memberjunction/ai-core-plus";
3
+ import { SecondaryScopeConfig, SecondaryScopeValue } from "@memberjunction/ai-core-plus";
4
4
  import { RerankerConfiguration } from "@memberjunction/ai-reranker";
5
5
  /**
6
6
  * Options for observability integration when retrieving notes.
@@ -30,23 +30,23 @@ export interface GetNotesParams {
30
30
  strategy: 'Relevant' | 'Recent' | 'All';
31
31
  maxNotes: number;
32
32
  contextUser: UserInfo;
33
+ /** Primary scope entity ID for multi-tenant filtering (FK to Entity table). */
34
+ primaryScopeEntityId?: string;
35
+ /** Primary scope record ID for multi-tenant filtering. */
36
+ primaryScopeRecordId?: string;
37
+ /** Arbitrary secondary scope dimensions for multi-tenant filtering. */
38
+ secondaryScopes?: Record<string, SecondaryScopeValue>;
33
39
  /**
34
- * Optional user scope for multi-tenant SaaS deployments.
35
- * When provided, enables hierarchical scope filtering:
36
- * - Global notes (no scope)
37
- * - Primary-scope notes (e.g., org-level)
38
- * - Fully-scoped notes (e.g., contact-level)
40
+ * Optional secondary scope configuration from the agent.
41
+ * Defines per-dimension inheritance modes and validation rules.
39
42
  */
40
- userScope?: UserScope;
43
+ secondaryScopeConfig?: SecondaryScopeConfig | null;
41
44
  /**
42
45
  * Optional reranker configuration for two-stage retrieval.
43
- * When enabled, fetches more candidates via vector search,
44
- * then reranks them using a semantic reranker for better relevance.
45
46
  */
46
47
  rerankerConfig?: RerankerConfiguration | null;
47
48
  /**
48
49
  * Optional observability context for tracing reranking operations.
49
- * When provided, reranking will create an AIAgentRunStep record.
50
50
  */
51
51
  observability?: NotesObservabilityOptions;
52
52
  }
@@ -61,11 +61,17 @@ export interface GetExamplesParams {
61
61
  strategy: 'Semantic' | 'Recent' | 'Rated';
62
62
  maxExamples: number;
63
63
  contextUser: UserInfo;
64
+ /** Primary scope entity ID for multi-tenant filtering (FK to Entity table). */
65
+ primaryScopeEntityId?: string;
66
+ /** Primary scope record ID for multi-tenant filtering. */
67
+ primaryScopeRecordId?: string;
68
+ /** Arbitrary secondary scope dimensions for multi-tenant filtering. */
69
+ secondaryScopes?: Record<string, SecondaryScopeValue>;
64
70
  /**
65
- * Optional user scope for multi-tenant SaaS deployments.
66
- * When provided, enables hierarchical scope filtering.
71
+ * Optional secondary scope configuration from the agent.
72
+ * Defines per-dimension inheritance modes and validation rules.
67
73
  */
68
- userScope?: UserScope;
74
+ secondaryScopeConfig?: SecondaryScopeConfig | null;
69
75
  }
70
76
  /**
71
77
  * Central service for retrieving and formatting notes/examples for injection into agent context.
@@ -100,6 +106,14 @@ export declare class AgentContextInjector {
100
106
  * Get examples using semantic search via AIEngine
101
107
  */
102
108
  private getExamplesViaSemanticSearch;
109
+ /**
110
+ * Build a pre-filter callback for vector search that enforces secondary scope rules.
111
+ * Returns undefined when no scope params are provided (no filtering needed).
112
+ *
113
+ * @param params - Note or example params containing scope and secondaryScopeConfig
114
+ * @param entityExtractor - Function to extract the scoped entity from the embedding metadata
115
+ */
116
+ private buildScopePreFilter;
103
117
  /**
104
118
  * Query notes using multi-dimensional scoping priority.
105
119
  * Implements 8-level scoping hierarchy from most specific to least specific.
@@ -112,25 +126,51 @@ export declare class AgentContextInjector {
112
126
  /**
113
127
  * Build filter with 8-level scoping priority for notes.
114
128
  * Combines MJ-internal scoping (AgentID, UserID, CompanyID) with
115
- * multi-tenant SaaS scoping (PrimaryScopeEntityID, PrimaryScopeRecordID, SecondaryScopes).
129
+ * multi-tenant scoping (PrimaryScopeEntityID, PrimaryScopeRecordID, SecondaryScopes).
116
130
  */
117
131
  private buildNotesScopingFilter;
118
132
  /**
119
- * Build filter for multi-tenant SaaS scoping with hierarchical inheritance.
120
- * Returns notes at all applicable scope levels (global → primary → full).
133
+ * Build filter for multi-tenant secondary scoping with per-dimension inheritance.
134
+ * Returns notes at all applicable scope levels (global -> primary -> full).
135
+ *
136
+ * Inheritance modes per dimension:
137
+ * - 'cascading': Notes without this dimension match queries with it (broader retrieval)
138
+ * - 'strict': Notes must exactly match the dimension value
139
+ */
140
+ private buildSecondaryScopeFilter;
141
+ /**
142
+ * Build SQL filter conditions for secondary dimensions with per-dimension inheritance.
143
+ *
144
+ * For each dimension in the runtime scope:
145
+ * - 'cascading' mode: Match if dimension value matches OR dimension is absent in note
146
+ * - 'strict' mode: Match only if dimension value matches exactly
121
147
  */
122
- private buildSaasScopeFilter;
148
+ private buildPerDimensionFilter;
123
149
  /**
124
150
  * Filter examples using multi-dimensional scoping priority.
125
151
  * Implements 4-level scoping hierarchy for examples (examples are always agent-specific).
126
- * Also handles multi-tenant SaaS scoping when userScope is provided.
152
+ * Also handles multi-tenant secondary scoping when scope params are provided.
127
153
  */
128
154
  private filterExamplesByScoping;
129
155
  /**
130
- * Check if an example matches the SaaS scope criteria (hierarchical).
131
- * Returns true for: global, primary-only, or fully-scoped matches.
156
+ * Check if a scoped entity (note or example) matches the secondary scope criteria
157
+ * with per-dimension inheritance.
158
+ * Returns true for: global, primary-only, secondary-only, or fully-scoped matches.
159
+ */
160
+ private matchesSecondaryScope;
161
+ /**
162
+ * Match secondary scopes with per-dimension inheritance mode.
163
+ *
164
+ * For each dimension in the example's secondary scopes:
165
+ * - 'cascading': Match if user has the same value OR user doesn't have the dimension
166
+ * - 'strict': Match only if user has the exact same value
167
+ */
168
+ private matchSecondaryScopes;
169
+ /**
170
+ * Check if a user's dimension value matches an example's value.
171
+ * Compares as strings to handle mixed types (numbers, booleans stored as JSON strings).
132
172
  */
133
- private matchesSaasScope;
173
+ private userDimensionMatches;
134
174
  /**
135
175
  * Sort examples based on the specified strategy
136
176
  */
@@ -149,9 +189,9 @@ export declare class AgentContextInjector {
149
189
  */
150
190
  FormatNotesForInjection(notes: AIAgentNoteEntity[], includeMemoryPolicy?: boolean): string;
151
191
  /**
152
- * Determine multi-tenant SaaS scope description for a note
192
+ * Determine multi-tenant secondary scope description for a note
153
193
  */
154
- private determineSaaSScope;
194
+ private determineSecondaryScope;
155
195
  /**
156
196
  * Format examples for injection into agent prompt
157
197
  */
@@ -1 +1 @@
1
- {"version":3,"file":"agent-context-injector.d.ts","sourceRoot":"","sources":["../src/agent-context-injector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAyB,MAAM,+BAA+B,CAAC;AAE/G,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAmB,MAAM,6BAA6B,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,QAAQ,CAAC;IACtB;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC9C;;;OAGG;IACH,aAAa,CAAC,EAAE,yBAAyB,CAAC;CAC7C;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,QAAQ,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;CACzB;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC7B;;;OAGG;IACG,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAU9E;;;OAGG;IACG,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAUvF;;;;;;;;;;;;OAYG;YACW,yBAAyB;IA4DvC;;OAEG;YACW,4BAA4B;IAa1C;;;OAGG;YACW,qBAAqB;IAuBnC;;OAEG;YACW,wBAAwB;IActC;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAyD/B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA6B5B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAsC/B;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+BpB;;;OAGG;IACH,OAAO,CAAC,SAAS;IA+CjB;;;;;;OAMG;IACH,uBAAuB,CAAC,KAAK,EAAE,iBAAiB,EAAE,EAAE,mBAAmB,GAAE,OAAc,GAAG,MAAM;IA2ChG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,0BAA0B,CAAC,QAAQ,EAAE,oBAAoB,EAAE,GAAG,MAAM;IAyBpE;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAwB7B"}
1
+ {"version":3,"file":"agent-context-injector.d.ts","sourceRoot":"","sources":["../src/agent-context-injector.ts"],"names":[],"mappings":"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"}
@@ -49,8 +49,12 @@ export class AgentContextInjector {
49
49
  const fetchCount = config?.enabled
50
50
  ? params.maxNotes * config.retrievalMultiplier
51
51
  : params.maxNotes;
52
- // Stage 1: Vector search
53
- const matches = await AIEngine.Instance.FindSimilarAgentNotes(params.currentInput, params.agentId, params.userId, params.companyId, fetchCount);
52
+ // Build scope pre-filter so FindNearest only returns scope-valid candidates
53
+ const scopePreFilter = this.buildScopePreFilter(params, m => m.noteEntity);
54
+ LogStatus(`AgentContextInjector: primaryScopeEntityId=${params.primaryScopeEntityId}, primaryScopeRecordId=${params.primaryScopeRecordId}, secondaryScopes=${JSON.stringify(params.secondaryScopes)}, secondaryScopeConfig=${JSON.stringify(params.secondaryScopeConfig)}, hasPreFilter=${!!scopePreFilter}`);
55
+ // Stage 1: Vector search (scope filtering happens inside FindNearest)
56
+ const matches = await AIEngine.Instance.FindSimilarAgentNotes(params.currentInput, params.agentId, params.userId, params.companyId, fetchCount, 0.5, scopePreFilter);
57
+ LogStatus(`AgentContextInjector: FindSimilarAgentNotes returned ${matches.length} matches: ${matches.map(m => m.note.SecondaryScopes || 'GLOBAL').join(', ')}`);
54
58
  // If no reranker config or disabled, return vector results directly
55
59
  if (!config?.enabled) {
56
60
  return matches.slice(0, params.maxNotes).map(m => m.note);
@@ -73,7 +77,7 @@ export class AgentContextInjector {
73
77
  // Fallback decision is made HERE in the agent class, not in the service
74
78
  const message = error instanceof Error ? error.message : String(error);
75
79
  if (config.fallbackOnError) {
76
- // Graceful fallback to vector search results
80
+ // Graceful fallback to vector search results (already scope-filtered)
77
81
  LogStatus(`AgentContextInjector: Reranking failed (${message}), falling back to vector search results`);
78
82
  return matches.slice(0, params.maxNotes).map(m => m.note);
79
83
  }
@@ -86,10 +90,24 @@ export class AgentContextInjector {
86
90
  * Get examples using semantic search via AIEngine
87
91
  */
88
92
  async getExamplesViaSemanticSearch(params) {
89
- const matches = await AIEngine.Instance.FindSimilarAgentExamples(params.currentInput, params.agentId, params.userId, params.companyId, params.maxExamples);
93
+ // Build scope pre-filter so FindNearest only returns scope-valid candidates
94
+ const scopePreFilter = this.buildScopePreFilter(params, m => m.exampleEntity);
95
+ const matches = await AIEngine.Instance.FindSimilarAgentExamples(params.currentInput, params.agentId, params.userId, params.companyId, params.maxExamples, 0.5, scopePreFilter);
90
96
  // Return entities directly from vector service (no database round-trip)
91
97
  return matches.map(m => m.example);
92
98
  }
99
+ /**
100
+ * Build a pre-filter callback for vector search that enforces secondary scope rules.
101
+ * Returns undefined when no scope params are provided (no filtering needed).
102
+ *
103
+ * @param params - Note or example params containing scope and secondaryScopeConfig
104
+ * @param entityExtractor - Function to extract the scoped entity from the embedding metadata
105
+ */
106
+ buildScopePreFilter(params, entityExtractor) {
107
+ if (!params.primaryScopeRecordId && !params.secondaryScopes)
108
+ return undefined;
109
+ return (metadata) => this.matchesSecondaryScope(entityExtractor(metadata), params.primaryScopeEntityId, params.primaryScopeRecordId, params.secondaryScopes, params.secondaryScopeConfig);
110
+ }
93
111
  /**
94
112
  * Query notes using multi-dimensional scoping priority.
95
113
  * Implements 8-level scoping hierarchy from most specific to least specific.
@@ -129,7 +147,7 @@ export class AgentContextInjector {
129
147
  /**
130
148
  * Build filter with 8-level scoping priority for notes.
131
149
  * Combines MJ-internal scoping (AgentID, UserID, CompanyID) with
132
- * multi-tenant SaaS scoping (PrimaryScopeEntityID, PrimaryScopeRecordID, SecondaryScopes).
150
+ * multi-tenant scoping (PrimaryScopeEntityID, PrimaryScopeRecordID, SecondaryScopes).
133
151
  */
134
152
  buildNotesScopingFilter(params) {
135
153
  const filters = ['Status = \'Active\''];
@@ -168,44 +186,103 @@ export class AgentContextInjector {
168
186
  if (scopeConditions.length > 0) {
169
187
  filters.push(`(${scopeConditions.join(' OR ')})`);
170
188
  }
171
- // Add multi-tenant SaaS scoping if userScope is provided
172
- if (params.userScope) {
173
- const saasScopes = this.buildSaasScopeFilter(params.userScope);
174
- filters.push(`(${saasScopes})`);
189
+ // Add multi-tenant secondary scoping if primary or secondary scopes are provided
190
+ if (params.primaryScopeRecordId || params.secondaryScopes) {
191
+ const scopeFilter = this.buildSecondaryScopeFilter(params.primaryScopeEntityId, params.primaryScopeRecordId, params.secondaryScopes, params.secondaryScopeConfig);
192
+ filters.push(`(${scopeFilter})`);
175
193
  }
176
194
  return filters.join(' AND ');
177
195
  }
178
196
  /**
179
- * Build filter for multi-tenant SaaS scoping with hierarchical inheritance.
180
- * Returns notes at all applicable scope levels (global → primary → full).
197
+ * Build filter for multi-tenant secondary scoping with per-dimension inheritance.
198
+ * Returns notes at all applicable scope levels (global -> primary -> full).
199
+ *
200
+ * Inheritance modes per dimension:
201
+ * - 'cascading': Notes without this dimension match queries with it (broader retrieval)
202
+ * - 'strict': Notes must exactly match the dimension value
181
203
  */
182
- buildSaasScopeFilter(userScope) {
204
+ buildSecondaryScopeFilter(primaryScopeEntityId, primaryScopeRecordId, secondaryScopes, scopeConfig) {
183
205
  const conditions = [];
184
- // Always include global notes (no scope set)
185
- conditions.push('PrimaryScopeRecordID IS NULL');
186
- if (userScope.primaryRecordId) {
206
+ // Always include global notes (no scope set at all)
207
+ conditions.push('(PrimaryScopeRecordID IS NULL AND (SecondaryScopes IS NULL OR SecondaryScopes = \'{}\'))');
208
+ const hasSecondary = secondaryScopes && Object.keys(secondaryScopes).length > 0;
209
+ const allowSecondaryOnly = scopeConfig?.allowSecondaryOnly ?? false;
210
+ // Build primary scope match clause: both entity ID and record ID must match
211
+ const primaryMatchClause = primaryScopeEntityId
212
+ ? `PrimaryScopeEntityID = '${primaryScopeEntityId}' AND PrimaryScopeRecordID = '${primaryScopeRecordId}'`
213
+ : `PrimaryScopeRecordID = '${primaryScopeRecordId}'`;
214
+ if (primaryScopeRecordId) {
187
215
  // Include primary-scope-only notes (matches org, no secondary scopes)
188
216
  conditions.push(`(
189
- PrimaryScopeRecordID = '${userScope.primaryRecordId}'
217
+ ${primaryMatchClause}
190
218
  AND (SecondaryScopes IS NULL OR SecondaryScopes = '{}')
191
219
  )`);
192
220
  // Include fully-scoped notes if secondary scopes are provided
193
- if (userScope.secondary && Object.keys(userScope.secondary).length > 0) {
194
- const secondaryConditions = Object.entries(userScope.secondary)
195
- .map(([key, val]) => `JSON_VALUE(SecondaryScopes, '$.${key}') = '${val}'`)
196
- .join(' AND ');
221
+ if (hasSecondary) {
222
+ const secondaryCondition = this.buildPerDimensionFilter(secondaryScopes, scopeConfig);
197
223
  conditions.push(`(
198
- PrimaryScopeRecordID = '${userScope.primaryRecordId}'
199
- AND ${secondaryConditions}
224
+ ${primaryMatchClause}
225
+ AND ${secondaryCondition}
200
226
  )`);
201
227
  }
202
228
  }
229
+ else if (allowSecondaryOnly && hasSecondary) {
230
+ // Secondary-only scoping: no primary required
231
+ const secondaryCondition = this.buildPerDimensionFilter(secondaryScopes, scopeConfig);
232
+ conditions.push(`(
233
+ PrimaryScopeRecordID IS NULL
234
+ AND SecondaryScopes IS NOT NULL
235
+ AND SecondaryScopes != '{}'
236
+ AND ${secondaryCondition}
237
+ )`);
238
+ }
203
239
  return conditions.join(' OR ');
204
240
  }
241
+ /**
242
+ * Build SQL filter conditions for secondary dimensions with per-dimension inheritance.
243
+ *
244
+ * For each dimension in the runtime scope:
245
+ * - 'cascading' mode: Match if dimension value matches OR dimension is absent in note
246
+ * - 'strict' mode: Match only if dimension value matches exactly
247
+ */
248
+ buildPerDimensionFilter(secondary, scopeConfig) {
249
+ const dimensionConditions = [];
250
+ const defaultMode = scopeConfig?.defaultInheritanceMode ?? 'cascading';
251
+ // Build a map of dimension configs for quick lookup
252
+ const dimConfigMap = new Map();
253
+ if (scopeConfig?.dimensions) {
254
+ for (const dim of scopeConfig.dimensions) {
255
+ dimConfigMap.set(dim.name, dim);
256
+ }
257
+ }
258
+ for (const [key, rawValue] of Object.entries(secondary)) {
259
+ const dimConfig = dimConfigMap.get(key);
260
+ const inheritanceMode = dimConfig?.inheritanceMode ?? defaultMode;
261
+ // Stringify all values (numbers, booleans) for SQL comparison via JSON_VALUE
262
+ const values = Array.isArray(rawValue) ? rawValue.map(String) : [String(rawValue)];
263
+ // Escape single quotes in values to prevent SQL injection
264
+ const escapedValues = values.map(v => v.replace(/'/g, "''"));
265
+ if (inheritanceMode === 'strict') {
266
+ const matchClause = escapedValues.length === 1
267
+ ? `JSON_VALUE(SecondaryScopes, '$.${key}') = '${escapedValues[0]}'`
268
+ : `JSON_VALUE(SecondaryScopes, '$.${key}') IN (${escapedValues.map(v => `'${v}'`).join(', ')})`;
269
+ dimensionConditions.push(matchClause);
270
+ }
271
+ else {
272
+ const matchClause = escapedValues.length === 1
273
+ ? `JSON_VALUE(SecondaryScopes, '$.${key}') = '${escapedValues[0]}'`
274
+ : `JSON_VALUE(SecondaryScopes, '$.${key}') IN (${escapedValues.map(v => `'${v}'`).join(', ')})`;
275
+ dimensionConditions.push(`(JSON_VALUE(SecondaryScopes, '$.${key}') IS NULL OR ${matchClause})`);
276
+ }
277
+ }
278
+ return dimensionConditions.length > 0
279
+ ? `(${dimensionConditions.join(' AND ')})`
280
+ : '1=1';
281
+ }
205
282
  /**
206
283
  * Filter examples using multi-dimensional scoping priority.
207
284
  * Implements 4-level scoping hierarchy for examples (examples are always agent-specific).
208
- * Also handles multi-tenant SaaS scoping when userScope is provided.
285
+ * Also handles multi-tenant secondary scoping when scope params are provided.
209
286
  */
210
287
  filterExamplesByScoping(examples, params) {
211
288
  return examples.filter(example => {
@@ -229,49 +306,122 @@ export class AgentContextInjector {
229
306
  if (!matchesMJScoping) {
230
307
  return false;
231
308
  }
232
- // Check multi-tenant SaaS scoping if userScope is provided
233
- if (params.userScope) {
234
- return this.matchesSaasScope(example, params.userScope);
309
+ // Check multi-tenant secondary scoping if scope params are provided
310
+ if (params.primaryScopeRecordId || params.secondaryScopes) {
311
+ return this.matchesSecondaryScope(example, params.primaryScopeEntityId, params.primaryScopeRecordId, params.secondaryScopes, params.secondaryScopeConfig);
235
312
  }
236
313
  return true;
237
314
  });
238
315
  }
239
316
  /**
240
- * Check if an example matches the SaaS scope criteria (hierarchical).
241
- * Returns true for: global, primary-only, or fully-scoped matches.
317
+ * Check if a scoped entity (note or example) matches the secondary scope criteria
318
+ * with per-dimension inheritance.
319
+ * Returns true for: global, primary-only, secondary-only, or fully-scoped matches.
242
320
  */
243
- matchesSaasScope(example, userScope) {
244
- // Global examples (no scope) always match
245
- if (!example.PrimaryScopeRecordID) {
321
+ matchesSecondaryScope(entity, primaryScopeEntityId, primaryScopeRecordId, secondaryScopes, scopeConfig) {
322
+ const hasSecondary = secondaryScopes && Object.keys(secondaryScopes).length > 0;
323
+ const allowSecondaryOnly = scopeConfig?.allowSecondaryOnly ?? false;
324
+ // Global entities (no scope at all) always match
325
+ const exampleSecondary = entity.SecondaryScopes;
326
+ const hasExampleSecondary = exampleSecondary && exampleSecondary !== '{}';
327
+ if (!entity.PrimaryScopeRecordID && !hasExampleSecondary) {
246
328
  return true;
247
329
  }
248
- // No primary scope provided - only global examples match
249
- if (!userScope.primaryRecordId) {
330
+ // Handle secondary-only mode
331
+ if (allowSecondaryOnly && !primaryScopeRecordId && hasSecondary) {
332
+ if (!entity.PrimaryScopeRecordID && !hasExampleSecondary) {
333
+ return true;
334
+ }
335
+ if (!entity.PrimaryScopeRecordID && hasExampleSecondary) {
336
+ return this.matchSecondaryScopes(exampleSecondary, secondaryScopes, scopeConfig);
337
+ }
338
+ return false;
339
+ }
340
+ // No primary scope provided - only global entities match
341
+ if (!primaryScopeRecordId) {
342
+ return !entity.PrimaryScopeRecordID && !hasExampleSecondary;
343
+ }
344
+ // Primary scope must match (both entity ID and record ID)
345
+ if (entity.PrimaryScopeRecordID !== primaryScopeRecordId) {
250
346
  return false;
251
347
  }
252
- // Primary scope must match
253
- if (example.PrimaryScopeRecordID !== userScope.primaryRecordId) {
348
+ if (primaryScopeEntityId && entity.PrimaryScopeEntityID && entity.PrimaryScopeEntityID !== primaryScopeEntityId) {
254
349
  return false;
255
350
  }
256
- // If example has no secondary scopes, it's an org-level example - matches
257
- const exampleSecondary = example.SecondaryScopes;
258
- if (!exampleSecondary || exampleSecondary === '{}') {
351
+ // If entity has no secondary scopes, it's an org-level entity - matches
352
+ if (!hasExampleSecondary) {
259
353
  return true;
260
354
  }
261
- // Example has secondary scopes - check if they match
262
- if (!userScope.secondary || Object.keys(userScope.secondary).length === 0) {
263
- // User has no secondary scope but example does - no match
355
+ // Entity has secondary scopes - check with per-dimension inheritance
356
+ if (!hasSecondary) {
264
357
  return false;
265
358
  }
266
- // Parse and match secondary scopes
359
+ return this.matchSecondaryScopes(exampleSecondary, secondaryScopes, scopeConfig);
360
+ }
361
+ /**
362
+ * Match secondary scopes with per-dimension inheritance mode.
363
+ *
364
+ * For each dimension in the example's secondary scopes:
365
+ * - 'cascading': Match if user has the same value OR user doesn't have the dimension
366
+ * - 'strict': Match only if user has the exact same value
367
+ */
368
+ matchSecondaryScopes(exampleSecondaryJson, userSecondary, scopeConfig) {
369
+ const defaultMode = scopeConfig?.defaultInheritanceMode ?? 'cascading';
370
+ // Build dimension config map for quick lookup
371
+ const dimConfigMap = new Map();
372
+ if (scopeConfig?.dimensions) {
373
+ for (const dim of scopeConfig.dimensions) {
374
+ dimConfigMap.set(dim.name, dim);
375
+ }
376
+ }
267
377
  try {
268
- const parsedSecondary = JSON.parse(exampleSecondary);
269
- return Object.entries(parsedSecondary).every(([key, val]) => userScope.secondary?.[key] === val);
378
+ const exampleScopes = JSON.parse(exampleSecondaryJson);
379
+ // Check each dimension in the example
380
+ for (const [key, exampleValue] of Object.entries(exampleScopes)) {
381
+ const dimConfig = dimConfigMap.get(key);
382
+ const inheritanceMode = dimConfig?.inheritanceMode ?? defaultMode;
383
+ if (inheritanceMode === 'strict') {
384
+ if (!this.userDimensionMatches(userSecondary[key], exampleValue)) {
385
+ return false;
386
+ }
387
+ }
388
+ else {
389
+ // Cascading: match if user doesn't have this dimension, or values match
390
+ const rawValue = userSecondary[key];
391
+ if (rawValue !== undefined && !this.userDimensionMatches(rawValue, exampleValue)) {
392
+ return false;
393
+ }
394
+ }
395
+ }
396
+ // Also check user dimensions for strict mode requirements
397
+ // (ensures user's strict dimensions are present in example if required)
398
+ for (const [key] of Object.entries(userSecondary)) {
399
+ const dimConfig = dimConfigMap.get(key);
400
+ const inheritanceMode = dimConfig?.inheritanceMode ?? defaultMode;
401
+ if (inheritanceMode === 'strict') {
402
+ const exampleValue = exampleScopes[key];
403
+ if (exampleValue === undefined) {
404
+ return false;
405
+ }
406
+ }
407
+ }
408
+ return true;
270
409
  }
271
410
  catch {
272
411
  return false;
273
412
  }
274
413
  }
414
+ /**
415
+ * Check if a user's dimension value matches an example's value.
416
+ * Compares as strings to handle mixed types (numbers, booleans stored as JSON strings).
417
+ */
418
+ userDimensionMatches(userValue, exampleValue) {
419
+ if (userValue === undefined)
420
+ return false;
421
+ if (Array.isArray(userValue))
422
+ return userValue.map(String).includes(exampleValue);
423
+ return String(userValue) === exampleValue;
424
+ }
275
425
  /**
276
426
  * Sort examples based on the specified strategy
277
427
  */
@@ -356,8 +506,8 @@ export class AgentContextInjector {
356
506
  lines.push('<memory_policy>');
357
507
  lines.push('Precedence (highest to lowest):');
358
508
  lines.push('1) Current user message overrides all stored memory');
359
- lines.push('2) Contact-specific notes override organization-level');
360
- lines.push('3) Organization notes override global defaults');
509
+ lines.push('2) User-specific notes override company-level');
510
+ lines.push('3) Company notes override global defaults');
361
511
  lines.push('4) When same scope, prefer most recent by date');
362
512
  lines.push('');
363
513
  lines.push('Conflict resolution:');
@@ -371,9 +521,9 @@ export class AgentContextInjector {
371
521
  for (const note of notes) {
372
522
  lines.push(`[${note.Type}] ${note.Note}`);
373
523
  const scope = this.determineNoteScope(note);
374
- const saasScope = this.determineSaaSScope(note);
375
- if (saasScope) {
376
- lines.push(` Scope: ${saasScope}`);
524
+ const secondaryScope = this.determineSecondaryScope(note);
525
+ if (secondaryScope) {
526
+ lines.push(` Scope: ${secondaryScope}`);
377
527
  }
378
528
  else if (scope) {
379
529
  lines.push(` Scope: ${scope}`);
@@ -384,18 +534,18 @@ export class AgentContextInjector {
384
534
  return lines.join('\n');
385
535
  }
386
536
  /**
387
- * Determine multi-tenant SaaS scope description for a note
537
+ * Determine multi-tenant secondary scope description for a note
388
538
  */
389
- determineSaaSScope(note) {
390
- // Check for SaaS scoping (takes precedence over MJ scoping)
539
+ determineSecondaryScope(note) {
540
+ // Check for secondary scoping (takes precedence over MJ scoping)
391
541
  if (!note.PrimaryScopeRecordID) {
392
- return null; // No SaaS scope, fall back to MJ scope
542
+ return null; // No secondary scope, fall back to MJ scope
393
543
  }
394
544
  const hasSecondary = note.SecondaryScopes && note.SecondaryScopes !== '{}';
395
545
  if (hasSecondary) {
396
- return 'Contact-specific (most specific)';
546
+ return 'User-specific (most specific)';
397
547
  }
398
- return 'Organization-level';
548
+ return 'Company-level';
399
549
  }
400
550
  /**
401
551
  * Format examples for injection into agent prompt
@@ -1 +1 @@
1
- {"version":3,"file":"agent-context-injector.js","sourceRoot":"","sources":["../src/agent-context-injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-context-injector.js","sourceRoot":"","sources":["../src/agent-context-injector.ts"],"names":[],"mappings":"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"}