Skip to content

Commit 7efce7b

Browse files
committed
Revert "feat: add semanticOverride support for SEMANTIC memory strategies (#678) (#696)"
This reverts commit 5e0f584.
1 parent 7a70cf4 commit 7efce7b

6 files changed

Lines changed: 4 additions & 247 deletions

File tree

src/schema/llm-compacted/agentcore.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,6 @@ interface MemoryStrategy {
8383
description?: string;
8484
namespaces?: string[];
8585
reflectionNamespaces?: string[]; // EPISODIC only: namespaces for cross-episode reflections
86-
semanticOverride?: {
87-
// Only valid when type is 'SEMANTIC'
88-
extraction?: { appendToPrompt: string; modelId: string }; // @min 1 for both, @max 30000 for appendToPrompt
89-
consolidation?: { appendToPrompt: string; modelId: string }; // At least one of extraction/consolidation required
90-
};
9186
}
9287

9388
// ─────────────────────────────────────────────────────────────────────────────

src/schema/schemas/__tests__/agentcore-project.test.ts

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -478,56 +478,4 @@ describe('AgentCoreProjectSpecSchema', () => {
478478
});
479479
expect(result.success).toBe(false);
480480
});
481-
482-
it('accepts memory with semanticOverride on SEMANTIC strategy', () => {
483-
const result = AgentCoreProjectSpecSchema.safeParse({
484-
...minimalProject,
485-
memories: [
486-
{
487-
type: 'AgentCoreMemory',
488-
name: 'TestMemory',
489-
eventExpiryDuration: 30,
490-
strategies: [
491-
{
492-
type: 'SEMANTIC',
493-
namespaces: ['/users/{actorId}/facts'],
494-
semanticOverride: {
495-
extraction: {
496-
appendToPrompt: 'Extract key facts',
497-
modelId: 'anthropic.claude-3-sonnet-20240229-v1:0',
498-
},
499-
},
500-
},
501-
],
502-
},
503-
],
504-
});
505-
expect(result.success).toBe(true);
506-
});
507-
508-
it('rejects memory with semanticOverride on SUMMARIZATION strategy', () => {
509-
const result = AgentCoreProjectSpecSchema.safeParse({
510-
...minimalProject,
511-
memories: [
512-
{
513-
type: 'AgentCoreMemory',
514-
name: 'TestMemory',
515-
eventExpiryDuration: 30,
516-
strategies: [
517-
{
518-
type: 'SUMMARIZATION',
519-
namespaces: ['/summaries/{actorId}/{sessionId}'],
520-
semanticOverride: {
521-
extraction: {
522-
appendToPrompt: 'test',
523-
modelId: 'model-1',
524-
},
525-
},
526-
},
527-
],
528-
},
529-
],
530-
});
531-
expect(result.success).toBe(false);
532-
});
533481
});

src/schema/schemas/agentcore-project.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,7 @@ export {
3030
MemoryStrategyTypeSchema,
3131
};
3232
export { EvaluationLevelSchema };
33-
export type {
34-
MemoryStrategy,
35-
MemoryStrategyType,
36-
SemanticOverride,
37-
SemanticExtractionOverride,
38-
SemanticConsolidationOverride,
39-
} from './primitives/memory';
33+
export type { MemoryStrategy, MemoryStrategyType } from './primitives/memory';
4034
export type { OnlineEvalConfig } from './primitives/online-eval-config';
4135
export { OnlineEvalConfigSchema, OnlineEvalConfigNameSchema } from './primitives/online-eval-config';
4236
export type { EvaluationLevel, EvaluatorConfig, LlmAsAJudgeConfig, RatingScale } from './primitives/evaluator';

src/schema/schemas/primitives/__tests__/memory.test.ts

Lines changed: 1 addition & 118 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
import {
2-
DEFAULT_STRATEGY_NAMESPACES,
3-
MemoryStrategySchema,
4-
MemoryStrategyTypeSchema,
5-
SemanticOverrideSchema,
6-
} from '../memory';
1+
import { DEFAULT_STRATEGY_NAMESPACES, MemoryStrategySchema, MemoryStrategyTypeSchema } from '../memory';
72
import { describe, expect, it } from 'vitest';
83

94
describe('MemoryStrategyTypeSchema', () => {
@@ -175,115 +170,3 @@ describe('DEFAULT_STRATEGY_NAMESPACES', () => {
175170
expect(DEFAULT_STRATEGY_NAMESPACES).not.toHaveProperty('CUSTOM');
176171
});
177172
});
178-
179-
describe('SemanticOverrideSchema', () => {
180-
it('accepts extraction-only override', () => {
181-
const result = SemanticOverrideSchema.safeParse({
182-
extraction: { appendToPrompt: 'Extract key facts', modelId: 'anthropic.claude-3-sonnet-20240229-v1:0' },
183-
});
184-
expect(result.success).toBe(true);
185-
});
186-
187-
it('accepts consolidation-only override', () => {
188-
const result = SemanticOverrideSchema.safeParse({
189-
consolidation: { appendToPrompt: 'Consolidate memories', modelId: 'anthropic.claude-3-sonnet-20240229-v1:0' },
190-
});
191-
expect(result.success).toBe(true);
192-
});
193-
194-
it('accepts both extraction and consolidation', () => {
195-
const result = SemanticOverrideSchema.safeParse({
196-
extraction: { appendToPrompt: 'Extract', modelId: 'model-1' },
197-
consolidation: { appendToPrompt: 'Consolidate', modelId: 'model-2' },
198-
});
199-
expect(result.success).toBe(true);
200-
});
201-
202-
it('rejects empty override (at least one required)', () => {
203-
const result = SemanticOverrideSchema.safeParse({});
204-
expect(result.success).toBe(false);
205-
});
206-
207-
it('rejects extraction with empty appendToPrompt', () => {
208-
const result = SemanticOverrideSchema.safeParse({
209-
extraction: { appendToPrompt: '', modelId: 'model-1' },
210-
});
211-
expect(result.success).toBe(false);
212-
});
213-
214-
it('rejects extraction with missing modelId', () => {
215-
const result = SemanticOverrideSchema.safeParse({
216-
extraction: { appendToPrompt: 'test' },
217-
});
218-
expect(result.success).toBe(false);
219-
});
220-
});
221-
222-
describe('MemoryStrategySchema with semanticOverride', () => {
223-
it('accepts SEMANTIC strategy with extraction override', () => {
224-
const result = MemoryStrategySchema.safeParse({
225-
type: 'SEMANTIC',
226-
semanticOverride: {
227-
extraction: { appendToPrompt: 'Extract key facts', modelId: 'anthropic.claude-3-sonnet-20240229-v1:0' },
228-
},
229-
});
230-
expect(result.success).toBe(true);
231-
});
232-
233-
it('accepts SEMANTIC strategy with both overrides', () => {
234-
const result = MemoryStrategySchema.safeParse({
235-
type: 'SEMANTIC',
236-
semanticOverride: {
237-
extraction: { appendToPrompt: 'Extract', modelId: 'model-1' },
238-
consolidation: { appendToPrompt: 'Consolidate', modelId: 'model-2' },
239-
},
240-
});
241-
expect(result.success).toBe(true);
242-
});
243-
244-
it('accepts SEMANTIC strategy without override (backward compat)', () => {
245-
const result = MemoryStrategySchema.safeParse({ type: 'SEMANTIC' });
246-
expect(result.success).toBe(true);
247-
});
248-
249-
it('rejects semanticOverride on SUMMARIZATION strategy', () => {
250-
const result = MemoryStrategySchema.safeParse({
251-
type: 'SUMMARIZATION',
252-
semanticOverride: {
253-
extraction: { appendToPrompt: 'test', modelId: 'model-1' },
254-
},
255-
});
256-
expect(result.success).toBe(false);
257-
if (!result.success) {
258-
expect(result.error.issues.some(i => i.message.includes('SEMANTIC'))).toBe(true);
259-
}
260-
});
261-
262-
it('rejects semanticOverride on USER_PREFERENCE strategy', () => {
263-
const result = MemoryStrategySchema.safeParse({
264-
type: 'USER_PREFERENCE',
265-
semanticOverride: {
266-
extraction: { appendToPrompt: 'test', modelId: 'model-1' },
267-
},
268-
});
269-
expect(result.success).toBe(false);
270-
});
271-
272-
it('rejects consolidation-only semanticOverride on USER_PREFERENCE strategy', () => {
273-
const result = MemoryStrategySchema.safeParse({
274-
type: 'USER_PREFERENCE',
275-
semanticOverride: {
276-
consolidation: { appendToPrompt: 'test', modelId: 'model-1' },
277-
},
278-
});
279-
expect(result.success).toBe(false);
280-
});
281-
282-
it('rejects SEMANTIC strategy with empty semanticOverride', () => {
283-
const result = MemoryStrategySchema.safeParse({
284-
type: 'SEMANTIC',
285-
semanticOverride: {},
286-
});
287-
expect(result.success).toBe(false);
288-
});
289-
});

src/schema/schemas/primitives/index.ts

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
1-
export type {
2-
MemoryStrategy,
3-
MemoryStrategyType,
4-
SemanticOverride,
5-
SemanticExtractionOverride,
6-
SemanticConsolidationOverride,
7-
} from './memory';
1+
export type { MemoryStrategy, MemoryStrategyType } from './memory';
82
export {
93
DEFAULT_EPISODIC_REFLECTION_NAMESPACES,
104
DEFAULT_STRATEGY_NAMESPACES,
115
MemoryStrategyNameSchema,
126
MemoryStrategySchema,
137
MemoryStrategyTypeSchema,
14-
SemanticOverrideSchema,
15-
SemanticExtractionOverrideSchema,
16-
SemanticConsolidationOverrideSchema,
178
} from './memory';
189

1910
export type {

src/schema/schemas/primitives/memory.ts

Lines changed: 1 addition & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -48,54 +48,6 @@ export const MemoryStrategyNameSchema = z
4848
'Must begin with a letter and contain only alphanumeric characters and underscores (max 48 chars)'
4949
);
5050

51-
// ============================================================================
52-
// Semantic Override Types (CloudFormation SemanticOverride)
53-
// ============================================================================
54-
55-
/**
56-
* Configuration for overriding semantic memory extraction behavior.
57-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-bedrockagentcore-memory-semanticoverrideextractionconfigurationinput.html
58-
*/
59-
export const SemanticExtractionOverrideSchema = z.object({
60-
/** Custom prompt to append for memory extraction */
61-
appendToPrompt: z.string().min(1).max(30000),
62-
/** Bedrock model ID to use for extraction */
63-
modelId: z.string().min(1),
64-
});
65-
66-
export type SemanticExtractionOverride = z.infer<typeof SemanticExtractionOverrideSchema>;
67-
68-
/**
69-
* Configuration for overriding semantic memory consolidation behavior.
70-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-bedrockagentcore-memory-semanticoverrideconsolidationconfigurationinput.html
71-
*/
72-
export const SemanticConsolidationOverrideSchema = z.object({
73-
/** Custom prompt to append for memory consolidation */
74-
appendToPrompt: z.string().min(1).max(30000),
75-
/** Bedrock model ID to use for consolidation */
76-
modelId: z.string().min(1),
77-
});
78-
79-
export type SemanticConsolidationOverride = z.infer<typeof SemanticConsolidationOverrideSchema>;
80-
81-
/**
82-
* Override configuration for semantic memory strategy.
83-
* At least one of extraction or consolidation must be provided.
84-
* @see https://docs.aws.amazon.com/AWSCloudFormation/latest/TemplateReference/aws-properties-bedrockagentcore-memory-semanticoverride.html
85-
*/
86-
export const SemanticOverrideSchema = z
87-
.object({
88-
/** Override extraction behavior (custom prompt + model) */
89-
extraction: SemanticExtractionOverrideSchema.optional(),
90-
/** Override consolidation behavior (custom prompt + model) */
91-
consolidation: SemanticConsolidationOverrideSchema.optional(),
92-
})
93-
.refine(data => data.extraction !== undefined || data.consolidation !== undefined, {
94-
message: 'At least one of extraction or consolidation must be provided',
95-
});
96-
97-
export type SemanticOverride = z.infer<typeof SemanticOverrideSchema>;
98-
9951
/**
10052
* Memory strategy configuration.
10153
* Each memory can have multiple strategies with optional namespace scoping.
@@ -112,8 +64,6 @@ export const MemoryStrategySchema = z
11264
namespaces: z.array(z.string()).optional(),
11365
/** Reflection namespaces for EPISODIC strategy. Required by the service for episodic strategies. */
11466
reflectionNamespaces: z.array(z.string()).optional(),
115-
/** Only valid when type is 'SEMANTIC'. Override extraction and/or consolidation behavior. */
116-
semanticOverride: SemanticOverrideSchema.optional(),
11767
})
11868
.refine(
11969
strategy =>
@@ -133,10 +83,6 @@ export const MemoryStrategySchema = z
13383
message: 'Each reflectionNamespace must be a prefix of at least one namespace',
13484
path: ['reflectionNamespaces'],
13585
}
136-
)
137-
.refine(strategy => strategy.semanticOverride === undefined || strategy.type === 'SEMANTIC', {
138-
message: 'semanticOverride is only valid for SEMANTIC strategy type',
139-
path: ['semanticOverride'],
140-
});
86+
);
14187

14288
export type MemoryStrategy = z.infer<typeof MemoryStrategySchema>;

0 commit comments

Comments
 (0)