Skip to content

Commit 8a8c297

Browse files
committed
Revert "feat: add semanticOverride support for SEMANTIC memory strategies (#678) (#696)"
This reverts commit 5e0f584.
1 parent 48dadfd commit 8a8c297

6 files changed

Lines changed: 4 additions & 245 deletions

File tree

src/schema/llm-compacted/agentcore.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,6 @@ interface MemoryStrategy {
7878
description?: string;
7979
namespaces?: string[];
8080
reflectionNamespaces?: string[]; // EPISODIC only: namespaces for cross-episode reflections
81-
semanticOverride?: {
82-
// Only valid when type is 'SEMANTIC'
83-
extraction?: { appendToPrompt: string; modelId: string }; // @min 1 for both, @max 30000 for appendToPrompt
84-
consolidation?: { appendToPrompt: string; modelId: string }; // At least one of extraction/consolidation required
85-
};
8681
}
8782

8883
// ─────────────────────────────────────────────────────────────────────────────

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

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -452,54 +452,4 @@ describe('AgentCoreProjectSpecSchema', () => {
452452
});
453453
expect(result.success).toBe(false);
454454
});
455-
456-
it('accepts memory with semanticOverride on SEMANTIC strategy', () => {
457-
const result = AgentCoreProjectSpecSchema.safeParse({
458-
...minimalProject,
459-
memories: [
460-
{
461-
name: 'TestMemory',
462-
eventExpiryDuration: 30,
463-
strategies: [
464-
{
465-
type: 'SEMANTIC',
466-
namespaces: ['/users/{actorId}/facts'],
467-
semanticOverride: {
468-
extraction: {
469-
appendToPrompt: 'Extract key facts',
470-
modelId: 'anthropic.claude-3-sonnet-20240229-v1:0',
471-
},
472-
},
473-
},
474-
],
475-
},
476-
],
477-
});
478-
expect(result.success).toBe(true);
479-
});
480-
481-
it('rejects memory with semanticOverride on SUMMARIZATION strategy', () => {
482-
const result = AgentCoreProjectSpecSchema.safeParse({
483-
...minimalProject,
484-
memories: [
485-
{
486-
name: 'TestMemory',
487-
eventExpiryDuration: 30,
488-
strategies: [
489-
{
490-
type: 'SUMMARIZATION',
491-
namespaces: ['/summaries/{actorId}/{sessionId}'],
492-
semanticOverride: {
493-
extraction: {
494-
appendToPrompt: 'test',
495-
modelId: 'model-1',
496-
},
497-
},
498-
},
499-
],
500-
},
501-
],
502-
});
503-
expect(result.success).toBe(false);
504-
});
505455
});

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)