Skip to content

Commit 20d0c04

Browse files
Merge branch 'main' into rename-agents-to-runtimes
2 parents 9a165c6 + 8898535 commit 20d0c04

37 files changed

Lines changed: 170 additions & 645 deletions

File tree

.github/workflows/release.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,12 @@ jobs:
108108
echo "branch=release/v$NEW_VERSION" >> $GITHUB_OUTPUT
109109
echo "New version: $NEW_VERSION"
110110
111+
- name: Regenerate JSON schema
112+
run: |
113+
npm run build
114+
node scripts/generate-schema.mjs
115+
echo "✓ JSON schema regenerated"
116+
111117
- name: Create release branch and PR
112118
env:
113119
NEW_VERSION: ${{ steps.bump.outputs.version }}

docs/commands.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -225,12 +225,12 @@ agentcore add memory \
225225
--expiry 30
226226
```
227227

228-
| Flag | Description |
229-
| ---------------------- | ------------------------------------------------------------------------------------- |
230-
| `--name <name>` | Memory name |
231-
| `--strategies <types>` | Comma-separated: `SEMANTIC`, `SUMMARIZATION`, `USER_PREFERENCE`, `EPISODIC`, `CUSTOM` |
232-
| `--expiry <days>` | Event expiry duration in days (default: 30, min: 7, max: 365) |
233-
| `--json` | JSON output |
228+
| Flag | Description |
229+
| ---------------------- | --------------------------------------------------------------------------- |
230+
| `--name <name>` | Memory name |
231+
| `--strategies <types>` | Comma-separated: `SEMANTIC`, `SUMMARIZATION`, `USER_PREFERENCE`, `EPISODIC` |
232+
| `--expiry <days>` | Event expiry duration in days (default: 30, min: 7, max: 365) |
233+
| `--json` | JSON output |
234234

235235
### add gateway
236236

@@ -474,22 +474,23 @@ Start local development server with hot-reload.
474474
agentcore dev
475475
agentcore dev --agent MyAgent --port 3000
476476
agentcore dev --logs # Non-interactive
477-
agentcore dev --invoke "Hello" --stream # Direct invoke
477+
agentcore dev "Hello" --stream # Invoke running dev server
478+
agentcore dev "Hello" --agent MyAgent # Invoke specific agent
478479

479480
# MCP protocol dev commands
480-
agentcore dev --invoke list-tools
481-
agentcore dev --invoke call-tool --tool myTool --input '{"arg": "value"}'
481+
agentcore dev list-tools
482+
agentcore dev call-tool --tool myTool --input '{"arg": "value"}'
482483
```
483484

484-
| Flag | Description |
485-
| ----------------------- | ------------------------------------------------------ |
486-
| `-p, --port <port>` | Port (default: 8080; MCP uses 8000, A2A uses 9000) |
487-
| `-a, --agent <name>` | Agent to run (required if multiple agents) |
488-
| `-i, --invoke <prompt>` | Invoke running server |
489-
| `-s, --stream` | Stream response (with --invoke) |
490-
| `-l, --logs` | Non-interactive stdout logging |
491-
| `--tool <name>` | MCP tool name (with `--invoke call-tool`) |
492-
| `--input <json>` | MCP tool arguments as JSON (with `--invoke call-tool`) |
485+
| Flag / Argument | Description |
486+
| -------------------- | ---------------------------------------------------- |
487+
| `[prompt]` | Send a prompt to a running dev server |
488+
| `-p, --port <port>` | Port (default: 8080; MCP uses 8000, A2A uses 9000) |
489+
| `-a, --agent <name>` | Agent to run or invoke (required if multiple agents) |
490+
| `-s, --stream` | Stream response when invoking |
491+
| `-l, --logs` | Non-interactive stdout logging |
492+
| `--tool <name>` | MCP tool name (with `call-tool` prompt) |
493+
| `--input <json>` | MCP tool arguments as JSON (with `--tool`) |
493494

494495
### invoke
495496

docs/configuration.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,13 +239,12 @@ on the next deployment.
239239

240240
### Memory Strategies
241241

242-
| Strategy | Description |
243-
| ----------------- | ----------------------------------------------------------- |
244-
| `SEMANTIC` | Vector-based similarity search for relevant context |
245-
| `SUMMARIZATION` | Compressed conversation history |
246-
| `USER_PREFERENCE` | Store user-specific preferences and settings |
247-
| `EPISODIC` | Capture and reflect on meaningful interaction episodes |
248-
| `CUSTOM` | Self-managed strategy with user-controlled extraction logic |
242+
| Strategy | Description |
243+
| ----------------- | ------------------------------------------------------ |
244+
| `SEMANTIC` | Vector-based similarity search for relevant context |
245+
| `SUMMARIZATION` | Compressed conversation history |
246+
| `USER_PREFERENCE` | Store user-specific preferences and settings |
247+
| `EPISODIC` | Capture and reflect on meaningful interaction episodes |
249248

250249
Strategy configuration:
251250

docs/local-development.md

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,16 @@ agentcore dev --logs
2020

2121
## Invoking Local Agents
2222

23-
With the dev server running, open another terminal:
23+
Start the dev server in one terminal, then send prompts from another:
2424

2525
```bash
26-
# Interactive chat
27-
agentcore invoke
28-
29-
# Single prompt
30-
agentcore invoke "What can you do?"
31-
32-
# With streaming
33-
agentcore invoke "Tell me a story" --stream
26+
# Terminal 1: start the dev server
27+
agentcore dev --logs
3428

35-
# Direct invoke to running server
36-
agentcore dev --invoke "Hello" --stream
29+
# Terminal 2: send prompts
30+
agentcore dev "What can you do?"
31+
agentcore dev "Tell me a story" --stream
32+
agentcore dev "Hello" --agent MyAgent
3733
```
3834

3935
## Environment Setup

docs/memory.md

Lines changed: 6 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,12 @@ conversations, enabling cross-session recall via semantic search.
168168

169169
## Memory Strategies
170170

171-
| Strategy | Description |
172-
| ----------------- | ----------------------------------------------------------- |
173-
| `SEMANTIC` | Vector-based similarity search for relevant context |
174-
| `SUMMARIZATION` | Compressed conversation history |
175-
| `USER_PREFERENCE` | Store user-specific preferences and settings |
176-
| `EPISODIC` | Capture and reflect on meaningful interaction episodes |
177-
| `CUSTOM` | Self-managed strategy with user-controlled extraction logic |
171+
| Strategy | Description |
172+
| ----------------- | ------------------------------------------------------ |
173+
| `SEMANTIC` | Vector-based similarity search for relevant context |
174+
| `SUMMARIZATION` | Compressed conversation history |
175+
| `USER_PREFERENCE` | Store user-specific preferences and settings |
176+
| `EPISODIC` | Capture and reflect on meaningful interaction episodes |
178177

179178
You can combine multiple strategies:
180179

@@ -189,36 +188,6 @@ You can combine multiple strategies:
189188
}
190189
```
191190

192-
### Self-Managed (Custom) Strategy
193-
194-
The `CUSTOM` strategy lets you control memory extraction logic externally rather than relying on built-in
195-
implementations. This is useful when you need specialized extraction pipelines or want to integrate with your own
196-
processing infrastructure.
197-
198-
**Prerequisites:** CUSTOM strategies require user-managed extraction logic and are not functional without it. You must
199-
implement your own extraction mechanism (e.g., via AWS Lambda).
200-
201-
**Key characteristics:**
202-
203-
- No default namespaces are assigned — you provide your own or omit them
204-
- Each memory supports at most one CUSTOM strategy
205-
- You are responsible for implementing the extraction logic that processes memory events
206-
207-
```json
208-
{
209-
"type": "AgentCoreMemory",
210-
"name": "MyMemory",
211-
"eventExpiryDuration": 30,
212-
"strategies": [
213-
{
214-
"type": "CUSTOM",
215-
"name": "my_custom_strategy",
216-
"description": "Custom extraction logic"
217-
}
218-
]
219-
}
220-
```
221-
222191
### Strategy Options
223192

224193
Each strategy can have optional configuration:

src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1696,11 +1696,6 @@ def get_memory_session_manager(session_id: str, actor_id: str) -> Optional[Agent
16961696
{{/if}}
16971697
{{#if (includes memoryProviders.[0].strategies "SUMMARIZATION")}}
16981698
f"/summaries/{actor_id}/{session_id}": RetrievalConfig(top_k=3, relevance_score=0.5),
1699-
{{/if}}
1700-
{{#if (includes memoryProviders.[0].strategies "CUSTOM")}}
1701-
# TODO: Add your custom namespace and retrieval config.
1702-
# Custom strategies use user-controlled extraction logic.
1703-
# Example: f"/custom/{actor_id}/data": RetrievalConfig(top_k=3, relevance_score=0.5),
17041699
{{/if}}
17051700
}
17061701
{{/if}}
@@ -3662,11 +3657,6 @@ def get_memory_session_manager(session_id: str, actor_id: str) -> Optional[Agent
36623657
{{/if}}
36633658
{{#if (includes memoryProviders.[0].strategies "SUMMARIZATION")}}
36643659
f"/summaries/{actor_id}/{session_id}": RetrievalConfig(top_k=3, relevance_score=0.5),
3665-
{{/if}}
3666-
{{#if (includes memoryProviders.[0].strategies "CUSTOM")}}
3667-
# TODO: Add your custom namespace and retrieval config.
3668-
# Custom strategies use user-controlled extraction logic.
3669-
# Example: f"/custom/{actor_id}/data": RetrievalConfig(top_k=3, relevance_score=0.5),
36703660
{{/if}}
36713661
}
36723662
{{/if}}
@@ -4010,7 +4000,7 @@ file maps to a JSON config file and includes validation constraints as comments.
40104000
- **BuildType**: \`'CodeZip'\` | \`'Container'\`
40114001
- **NetworkMode**: \`'PUBLIC'\`
40124002
- **RuntimeVersion**: \`'PYTHON_3_10'\` | \`'PYTHON_3_11'\` | \`'PYTHON_3_12'\` | \`'PYTHON_3_13'\`
4013-
- **MemoryStrategyType**: \`'SEMANTIC'\` | \`'SUMMARIZATION'\` | \`'USER_PREFERENCE'\` | \`'EPISODIC'\` | \`'CUSTOM'\`
4003+
- **MemoryStrategyType**: \`'SEMANTIC'\` | \`'SUMMARIZATION'\` | \`'USER_PREFERENCE'\` | \`'EPISODIC'\`
40144004
40154005
### Build Types
40164006

src/assets/agents/AGENTS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ file maps to a JSON config file and includes validation constraints as comments.
6363
- **BuildType**: `'CodeZip'` | `'Container'`
6464
- **NetworkMode**: `'PUBLIC'`
6565
- **RuntimeVersion**: `'PYTHON_3_10'` | `'PYTHON_3_11'` | `'PYTHON_3_12'` | `'PYTHON_3_13'`
66-
- **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` | `'EPISODIC'` | `'CUSTOM'`
66+
- **MemoryStrategyType**: `'SEMANTIC'` | `'SUMMARIZATION'` | `'USER_PREFERENCE'` | `'EPISODIC'`
6767

6868
### Build Types
6969

src/assets/python/a2a/strands/capabilities/memory/session.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ def get_memory_session_manager(session_id: str, actor_id: str) -> Optional[Agent
2121
{{/if}}
2222
{{#if (includes memoryProviders.[0].strategies "SUMMARIZATION")}}
2323
f"/summaries/{actor_id}/{session_id}": RetrievalConfig(top_k=3, relevance_score=0.5),
24-
{{/if}}
25-
{{#if (includes memoryProviders.[0].strategies "CUSTOM")}}
26-
# TODO: Add your custom namespace and retrieval config.
27-
# Custom strategies use user-controlled extraction logic.
28-
# Example: f"/custom/{actor_id}/data": RetrievalConfig(top_k=3, relevance_score=0.5),
2924
{{/if}}
3025
}
3126
{{/if}}

src/assets/python/http/strands/capabilities/memory/session.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,6 @@ def get_memory_session_manager(session_id: str, actor_id: str) -> Optional[Agent
2121
{{/if}}
2222
{{#if (includes memoryProviders.[0].strategies "SUMMARIZATION")}}
2323
f"/summaries/{actor_id}/{session_id}": RetrievalConfig(top_k=3, relevance_score=0.5),
24-
{{/if}}
25-
{{#if (includes memoryProviders.[0].strategies "CUSTOM")}}
26-
# TODO: Add your custom namespace and retrieval config.
27-
# Custom strategies use user-controlled extraction logic.
28-
# Example: f"/custom/{actor_id}/data": RetrievalConfig(top_k=3, relevance_score=0.5),
2924
{{/if}}
3025
}
3126
{{/if}}

src/cli/commands/add/__tests__/add-memory.test.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,17 +51,16 @@ describe('add memory command', () => {
5151
expect(json.error.includes('INVALID'), `Error: ${json.error}`).toBeTruthy();
5252
});
5353

54-
// Issue #677: CUSTOM strategy is now supported
55-
it('creates memory with CUSTOM strategy', async () => {
56-
const memoryName = `memCustom${Date.now()}`;
54+
// Issue #235: CUSTOM strategy has been removed
55+
it('rejects CUSTOM strategy', async () => {
5756
const result = await runCLI(
58-
['add', 'memory', '--name', memoryName, '--strategies', 'CUSTOM', '--json'],
57+
['add', 'memory', '--name', 'testCustom', '--strategies', 'CUSTOM', '--json'],
5958
projectDir
6059
);
61-
expect(result.exitCode, `stdout: ${result.stdout}, stderr: ${result.stderr}`).toBe(0);
60+
expect(result.exitCode).toBe(1);
6261
const json = JSON.parse(result.stdout);
63-
expect(json.success).toBe(true);
64-
expect(json.memoryName).toBe(memoryName);
62+
expect(json.success).toBe(false);
63+
expect(json.error.includes('CUSTOM'), `Error: ${json.error}`).toBeTruthy();
6564
});
6665
});
6766

0 commit comments

Comments
 (0)