strands-compose-agentcore 0.1.0__tar.gz

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 (88) hide show
  1. strands_compose_agentcore-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +133 -0
  2. strands_compose_agentcore-0.1.0/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. strands_compose_agentcore-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +46 -0
  4. strands_compose_agentcore-0.1.0/.github/PULL_REQUEST_TEMPLATE.md +42 -0
  5. strands_compose_agentcore-0.1.0/.github/agents/developer.agent.md +54 -0
  6. strands_compose_agentcore-0.1.0/.github/agents/docs-writer.agent.md +65 -0
  7. strands_compose_agentcore-0.1.0/.github/agents/reviewer.agent.md +64 -0
  8. strands_compose_agentcore-0.1.0/.github/agents/tester.agent.md +51 -0
  9. strands_compose_agentcore-0.1.0/.github/copilot-instructions.md +46 -0
  10. strands_compose_agentcore-0.1.0/.github/dependabot.yml +20 -0
  11. strands_compose_agentcore-0.1.0/.github/instructions/docs.instructions.md +13 -0
  12. strands_compose_agentcore-0.1.0/.github/instructions/examples.instructions.md +14 -0
  13. strands_compose_agentcore-0.1.0/.github/instructions/source.instructions.md +16 -0
  14. strands_compose_agentcore-0.1.0/.github/instructions/tests.instructions.md +19 -0
  15. strands_compose_agentcore-0.1.0/.github/skills/check-and-test/SKILL.md +46 -0
  16. strands_compose_agentcore-0.1.0/.github/skills/strands-api-lookup/SKILL.md +75 -0
  17. strands_compose_agentcore-0.1.0/.github/workflows/ci.yml +71 -0
  18. strands_compose_agentcore-0.1.0/.github/workflows/publish.yml +123 -0
  19. strands_compose_agentcore-0.1.0/.gitignore +60 -0
  20. strands_compose_agentcore-0.1.0/.pre-commit-config.yaml +48 -0
  21. strands_compose_agentcore-0.1.0/.secrets.baseline +127 -0
  22. strands_compose_agentcore-0.1.0/AGENTS.md +185 -0
  23. strands_compose_agentcore-0.1.0/CHANGELOG.md +47 -0
  24. strands_compose_agentcore-0.1.0/CLAUDE.md +3 -0
  25. strands_compose_agentcore-0.1.0/CONTRIBUTING.md +115 -0
  26. strands_compose_agentcore-0.1.0/GEMINI.md +3 -0
  27. strands_compose_agentcore-0.1.0/ISSUE_SOLVE.md +1008 -0
  28. strands_compose_agentcore-0.1.0/LICENSE +190 -0
  29. strands_compose_agentcore-0.1.0/PKG-INFO +292 -0
  30. strands_compose_agentcore-0.1.0/README.md +265 -0
  31. strands_compose_agentcore-0.1.0/RELEASING.md +50 -0
  32. strands_compose_agentcore-0.1.0/SECURITY.md +31 -0
  33. strands_compose_agentcore-0.1.0/SUPPORT.md +39 -0
  34. strands_compose_agentcore-0.1.0/docs/Chapter_01.md +121 -0
  35. strands_compose_agentcore-0.1.0/docs/Chapter_02.md +121 -0
  36. strands_compose_agentcore-0.1.0/docs/Chapter_03.md +114 -0
  37. strands_compose_agentcore-0.1.0/docs/Chapter_04.md +157 -0
  38. strands_compose_agentcore-0.1.0/docs/Chapter_05.md +114 -0
  39. strands_compose_agentcore-0.1.0/docs/Chapter_06.md +476 -0
  40. strands_compose_agentcore-0.1.0/docs/Chapter_07.md +228 -0
  41. strands_compose_agentcore-0.1.0/docs/Chapter_08.md +115 -0
  42. strands_compose_agentcore-0.1.0/docs/Chapter_09.md +266 -0
  43. strands_compose_agentcore-0.1.0/docs/Quick_Recipes.md +108 -0
  44. strands_compose_agentcore-0.1.0/docs/README.md +28 -0
  45. strands_compose_agentcore-0.1.0/examples/01_quick_start/README.md +86 -0
  46. strands_compose_agentcore-0.1.0/examples/01_quick_start/config.yaml +61 -0
  47. strands_compose_agentcore-0.1.0/examples/01_quick_start/main.py +17 -0
  48. strands_compose_agentcore-0.1.0/examples/02_deploy/README.md +292 -0
  49. strands_compose_agentcore-0.1.0/examples/02_deploy/config.yaml +21 -0
  50. strands_compose_agentcore-0.1.0/examples/02_deploy/main.py +20 -0
  51. strands_compose_agentcore-0.1.0/examples/02_deploy/pyproject.toml +7 -0
  52. strands_compose_agentcore-0.1.0/examples/README.md +26 -0
  53. strands_compose_agentcore-0.1.0/justfile +28 -0
  54. strands_compose_agentcore-0.1.0/pyproject.toml +117 -0
  55. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/__init__.py +39 -0
  56. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/_utils.py +39 -0
  57. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/app.py +263 -0
  58. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/cli/__init__.py +141 -0
  59. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/cli/client.py +26 -0
  60. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/cli/dev.py +125 -0
  61. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/cli/utils.py +44 -0
  62. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/client/__init__.py +37 -0
  63. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/client/agentcore.py +333 -0
  64. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/client/local.py +164 -0
  65. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/client/repl.py +84 -0
  66. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/client/utils.py +127 -0
  67. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/py.typed +0 -0
  68. strands_compose_agentcore-0.1.0/src/strands_compose_agentcore/session.py +159 -0
  69. strands_compose_agentcore-0.1.0/tasks/README.md +152 -0
  70. strands_compose_agentcore-0.1.0/tasks/check.just +28 -0
  71. strands_compose_agentcore-0.1.0/tasks/clean.just +55 -0
  72. strands_compose_agentcore-0.1.0/tasks/commit.just +19 -0
  73. strands_compose_agentcore-0.1.0/tasks/format.just +13 -0
  74. strands_compose_agentcore-0.1.0/tasks/install.just +15 -0
  75. strands_compose_agentcore-0.1.0/tasks/release.just +39 -0
  76. strands_compose_agentcore-0.1.0/tasks/test.just +13 -0
  77. strands_compose_agentcore-0.1.0/tests/__init__.py +1 -0
  78. strands_compose_agentcore-0.1.0/tests/conftest.py +39 -0
  79. strands_compose_agentcore-0.1.0/tests/test_app.py +222 -0
  80. strands_compose_agentcore-0.1.0/tests/test_app_invoke.py +304 -0
  81. strands_compose_agentcore-0.1.0/tests/test_cli.py +293 -0
  82. strands_compose_agentcore-0.1.0/tests/test_client_agentcore.py +361 -0
  83. strands_compose_agentcore-0.1.0/tests/test_client_repl.py +120 -0
  84. strands_compose_agentcore-0.1.0/tests/test_integration.py +95 -0
  85. strands_compose_agentcore-0.1.0/tests/test_local_client.py +144 -0
  86. strands_compose_agentcore-0.1.0/tests/test_repl.py +158 -0
  87. strands_compose_agentcore-0.1.0/tests/test_sse.py +47 -0
  88. strands_compose_agentcore-0.1.0/uv.lock +1948 -0
@@ -0,0 +1,133 @@
1
+ name: Bug Report
2
+ description: Report a bug in strands-compose-agentcore
3
+ title: "[BUG] "
4
+ labels: ["bug", "triage"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for taking the time to fill out this bug report for strands-compose-agentcore!
11
+
12
+ - type: checkboxes
13
+ id: checks
14
+ attributes:
15
+ label: Checks
16
+ options:
17
+ - label: I have updated to the latest version of strands-compose-agentcore
18
+ required: true
19
+ - label: I have checked the documentation and this is not expected behavior
20
+ required: true
21
+ - label: I have searched [./issues](./issues?q=) and there are no duplicates of my issue
22
+ required: true
23
+
24
+ - type: input
25
+ id: agentcore-adapter-version
26
+ attributes:
27
+ label: strands-compose-agentcore Version
28
+ description: Which version of strands-compose-agentcore are you using?
29
+ placeholder: e.g., 0.1.0
30
+ validations:
31
+ required: true
32
+
33
+ - type: input
34
+ id: compose-version
35
+ attributes:
36
+ label: strands-compose Version
37
+ description: Which version of strands-compose are you using?
38
+ placeholder: e.g., 0.1.1
39
+ validations:
40
+ required: true
41
+
42
+ - type: input
43
+ id: agentcore-version
44
+ attributes:
45
+ label: bedrock-agentcore Version
46
+ description: Which version of bedrock-agentcore are you using?
47
+ placeholder: e.g., 1.4.0
48
+ validations:
49
+ required: true
50
+
51
+ - type: input
52
+ id: python-version
53
+ attributes:
54
+ label: Python Version
55
+ description: Which version of Python are you using?
56
+ placeholder: e.g., 3.11.5
57
+ validations:
58
+ required: true
59
+
60
+ - type: input
61
+ id: os
62
+ attributes:
63
+ label: Operating System
64
+ description: Which operating system are you using?
65
+ placeholder: e.g., Ubuntu 22.04 / Windows 11 / macOS 14
66
+ validations:
67
+ required: true
68
+
69
+ - type: dropdown
70
+ id: installation-method
71
+ attributes:
72
+ label: Installation Method
73
+ description: How did you install strands-compose-agentcore?
74
+ options:
75
+ - pip
76
+ - uv
77
+ - git clone
78
+ - other
79
+ validations:
80
+ required: true
81
+
82
+ - type: textarea
83
+ id: config-yaml
84
+ attributes:
85
+ label: Relevant YAML Config
86
+ description: Paste the relevant portion of your `config.yaml` (remove any secrets)
87
+ render: yaml
88
+
89
+ - type: textarea
90
+ id: steps-to-reproduce
91
+ attributes:
92
+ label: Steps to Reproduce
93
+ description: Detailed steps to reproduce the behavior
94
+ placeholder: |
95
+ 1. config.yaml and code snippet (minimal reproducible example)
96
+ 2. Run the command...
97
+ 3. See error...
98
+ validations:
99
+ required: true
100
+
101
+ - type: textarea
102
+ id: expected-behavior
103
+ attributes:
104
+ label: Expected Behavior
105
+ description: A clear description of what you expected to happen
106
+ validations:
107
+ required: true
108
+
109
+ - type: textarea
110
+ id: actual-behavior
111
+ attributes:
112
+ label: Actual Behavior
113
+ description: What actually happened — include full traceback if applicable
114
+ validations:
115
+ required: true
116
+
117
+ - type: textarea
118
+ id: additional-context
119
+ attributes:
120
+ label: Additional Context
121
+ description: Any other relevant information, logs, screenshots, etc.
122
+
123
+ - type: textarea
124
+ id: possible-solution
125
+ attributes:
126
+ label: Possible Solution
127
+ description: Optional — if you have suggestions on how to fix the bug
128
+
129
+ - type: input
130
+ id: related-issues
131
+ attributes:
132
+ label: Related Issues
133
+ description: Optional — link to related issues if applicable
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: false
2
+ contact_links:
3
+ - name: strands-compose-agentcore Discussions
4
+ url: https://github.com/strands-compose/bedrock-agentcore/discussions
5
+ about: Please ask and answer questions here
6
+ - name: strands-compose-agentcore Documentation
7
+ url: https://github.com/strands-compose/bedrock-agentcore/tree/main/examples
8
+ about: Visit the examples for help
@@ -0,0 +1,46 @@
1
+ name: Feature Request
2
+ description: Suggest a new feature or enhancement for strands-compose-agentcore
3
+ title: "[FEATURE] "
4
+ labels: ["enhancement", "triage"]
5
+ assignees: []
6
+ body:
7
+ - type: markdown
8
+ attributes:
9
+ value: |
10
+ Thanks for suggesting a new feature for strands-compose-agentcore!
11
+
12
+ - type: textarea
13
+ id: problem-statement
14
+ attributes:
15
+ label: Problem Statement
16
+ description: Describe the problem you're trying to solve. What is currently difficult or impossible to do?
17
+ placeholder: I would like strands-compose-agentcore to...
18
+ validations:
19
+ required: true
20
+
21
+ - type: textarea
22
+ id: proposed-solution
23
+ attributes:
24
+ label: Proposed Solution
25
+ description: Optional — describe your proposed solution. How would this feature work? Include example YAML or Python if helpful.
26
+
27
+ - type: textarea
28
+ id: use-case
29
+ attributes:
30
+ label: Use Case
31
+ description: Provide specific use cases for the feature. How would people use it?
32
+ placeholder: This would help with...
33
+ validations:
34
+ required: true
35
+
36
+ - type: textarea
37
+ id: alternatives
38
+ attributes:
39
+ label: Alternatives Considered
40
+ description: Optional — have you considered alternative approaches? What are their pros and cons?
41
+
42
+ - type: textarea
43
+ id: additional-context
44
+ attributes:
45
+ label: Additional Context
46
+ description: Any other context, screenshots, code examples, or references that might help understand the request.
@@ -0,0 +1,42 @@
1
+ ## Description
2
+
3
+ <!-- Provide a detailed description of the changes in this PR -->
4
+
5
+ ## Related Issues
6
+
7
+ <!-- Link to related issues using #issue-number format -->
8
+
9
+ ## Type of Change
10
+
11
+ <!-- Choose one and delete the rest -->
12
+
13
+ - Bug fix
14
+ - New feature
15
+ - Breaking change
16
+ - Documentation update
17
+ - Other (please describe):
18
+
19
+ ## YAML / API Impact
20
+
21
+ <!-- Does this change affect the config schema or the public Python API?
22
+ If yes, describe what changes and whether it's backwards-compatible. -->
23
+
24
+ ## Testing
25
+
26
+ How have you tested the change?
27
+
28
+ - [ ] I ran `uv run just check` (lint + type check + security scan)
29
+ - [ ] I ran `uv run just test` (all tests pass, coverage ≥ 90%)
30
+ - [ ] I added or updated tests that prove my fix is effective or my feature works
31
+ - [ ] I verified existing examples in `examples/` still work
32
+
33
+ ## Checklist
34
+
35
+ - [ ] I have read `AGENTS.md` and my changes comply with all project rules
36
+ - [ ] I have updated the documentation accordingly
37
+ - [ ] My changes generate no new warnings
38
+ - [ ] Any dependent changes have been merged and published
39
+
40
+ ---
41
+
42
+ By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: developer
3
+ description: Implements features and fixes bugs in strands-compose-agentcore following all project architecture and coding conventions
4
+ tools: [
5
+ "read", "edit", "search", "execute", "agent", "web", "todo",
6
+ "bedrock-agentcore-mcp-server/*", "aws-documentation-mcp-server/*",
7
+ ]
8
+ ---
9
+
10
+ You are an expert contributor to strands-compose-agentcore. Your job is to implement features and fix bugs while strictly following the project's architecture and coding conventions.
11
+
12
+ **Read `AGENTS.md` first** — it is the single source of truth for architecture, Python rules, naming, logging style, key APIs, and directory structure. Everything below supplements those rules for the developer workflow.
13
+
14
+ ## Environment
15
+
16
+ This project uses **uv** as the package manager and task runner. Always use `uv run` to execute Python and project commands — never bare `python`, `pip`, or `pytest`:
17
+
18
+ ```bash
19
+ uv run python script.py # run any Python script
20
+ uv run just install # install deps + git hooks (once after clone)
21
+ uv run just check # lint + type check + security scan
22
+ uv run just test # pytest with coverage (≥90%)
23
+ uv run just format # auto-format with ruff
24
+ ```
25
+
26
+ ## Workflow
27
+
28
+ 1. Read the issue carefully. Identify the minimal change needed.
29
+ 2. Read `AGENTS.md` — understand the architecture, key APIs, and rules.
30
+ 3. Check strands and strands-compose — if they already provide what is needed, use it directly. Do NOT reimplement.
31
+ 4. Identify which module(s) should change using the Directory Structure in `AGENTS.md`.
32
+ 5. Implement the change following all Python rules, naming, and logging conventions from `AGENTS.md`.
33
+ 6. Write or update unit tests in `tests/` mirroring the changed module path.
34
+ 7. Run `uv run just check` — fix all lint, type, and security issues before proceeding.
35
+ 8. Run `uv run just test` — all tests must pass and coverage must remain ≥ 90%.
36
+ 9. Open a draft PR with a clear description of what changed and why.
37
+
38
+ ## Where New Code Goes
39
+
40
+ See the Directory Structure in `AGENTS.md` for the full layout. Key paths:
41
+
42
+ - App factory or lifespan changes → `src/strands_compose_agentcore/app.py`
43
+ - Session state and streaming → `src/strands_compose_agentcore/session.py`
44
+ - Client changes → `src/strands_compose_agentcore/client.py`
45
+ - Public API changes → `src/strands_compose_agentcore/__init__.py`
46
+
47
+ ## Hard Rules
48
+
49
+ All Python rules, naming, logging style, and architecture constraints are defined in `AGENTS.md`. Key reminders:
50
+
51
+ - Never modify files outside the scope of the issue.
52
+ - Never reimplement what strands or strands-compose already provides.
53
+ - Always run `uv run just check` and `uv run just test` before committing.
54
+ - Make the smallest reasonable change — don't refactor unrelated code.
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: docs-writer
3
+ description: Writes and updates documentation for strands-compose-agentcore — README, docs chapters, examples, and changelog
4
+ tools: [
5
+ "read", "edit", "search", "execute", "web", "todo",
6
+ "bedrock-agentcore-mcp-server/*", "aws-documentation-mcp-server/*"
7
+ ]
8
+ ---
9
+
10
+ You are a documentation specialist for strands-compose-agentcore. Your job is to write and improve documentation so that users can understand and use the adapter effectively.
11
+
12
+ **Read `AGENTS.md` first** — it contains the project architecture, directory structure, key APIs, and coding conventions. Your documentation must be consistent with what is defined there.
13
+
14
+ ## Environment
15
+
16
+ This project uses **uv** as the package manager and task runner. Always use `uv run` to execute Python and project commands — never bare `python`, `pip`, or `pytest`:
17
+
18
+ ```bash
19
+ uv run python examples/01_minimal/app.py # run an example
20
+ uv run just check # lint + type check + security scan
21
+ uv run just format # auto-format with ruff
22
+ ```
23
+
24
+ ## Workflow
25
+
26
+ 1. Identify what needs documenting from the issue or PR.
27
+ 2. Determine the correct location for the change (see below).
28
+ 3. Write clear, concise, accurate documentation. Test any YAML or Python examples by running them with `uv run python`.
29
+ 4. Run `uv run just check` to ensure no markdown lint issues.
30
+ 5. Open a PR scoped only to documentation changes.
31
+
32
+ ## Where Documentation Lives
33
+
34
+ | Content | Location |
35
+ |---------|----------|
36
+ | Project overview, installation, quick-start | `README.md` |
37
+ | In-depth chapters (architecture, streaming, deployment, etc.) | `docs/Chapter_01-08.md` |
38
+ | Quick copy-paste patterns | `docs/Quick_Recipes.md` |
39
+ | Example projects | `examples/NN_name/` — each needs `config.yaml`, `README.md` |
40
+ | Release history | `CHANGELOG.md` — follows Keep a Changelog format |
41
+
42
+ See the full Directory Structure in `AGENTS.md`.
43
+
44
+ ## Writing Rules
45
+
46
+ - Use plain English. Short sentences. Active voice.
47
+ - Every documented feature needs a minimal working YAML example.
48
+ - YAML examples must use valid strands-compose syntax.
49
+ - Python examples must be runnable as-is with `uv run python`.
50
+ - Show `uv run` in all command examples — never bare `python`, `pip`, or `pytest`.
51
+ - Do not document internal implementation details — only the public API and YAML config surface.
52
+ - Use relative links (never absolute URLs) for files within the repository.
53
+ - Keep `README.md` concise — link out to `docs/` and `examples/` for detail rather than expanding inline.
54
+
55
+ ## Examples
56
+
57
+ When adding a new example under `examples/`:
58
+ - Follow the naming pattern: `NN_short_name/` (next available number).
59
+ - Include `config.yaml` and `app.py` (or equivalent entry point).
60
+ - The `README.md` must explain what the example demonstrates and how to run it with `uv run python`.
61
+
62
+ ## What Not to Change
63
+
64
+ - Do not modify source code.
65
+ - Do not remove existing examples without an explicit request.
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: reviewer
3
+ description: Reviews code in pull requests for correctness, style, architecture compliance, and security in strands-compose-agentcore
4
+ tools: [
5
+ "read", "search", "execute", "web", "todo",
6
+ "bedrock-agentcore-mcp-server/*", "aws-documentation-mcp-server/*",
7
+ ]
8
+ ---
9
+
10
+ You are a senior code reviewer for strands-compose-agentcore. Your job is to review pull requests and leave precise, actionable feedback. You enforce the project rules strictly but fairly.
11
+
12
+ **Read `AGENTS.md` first** — it is the single source of truth for architecture, Python rules, naming, logging style, key APIs, and directory structure. The checklist below is derived from those rules.
13
+
14
+ ## Environment
15
+
16
+ This project uses **uv** as the package manager and task runner. Always use `uv run` to execute commands — never bare `python`, `pip`, or `pytest`:
17
+
18
+ ```bash
19
+ uv run just check # lint + type check + security scan
20
+ uv run just test # pytest with coverage (≥90%)
21
+ ```
22
+
23
+ ## Review Workflow
24
+
25
+ 1. Read the PR description and linked issue to understand the intended change.
26
+ 2. Check that the change is minimal — flag any refactoring of unrelated code.
27
+ 3. Run `uv run just check` — report any lint, type, or security failures.
28
+ 4. Run `uv run just test` — report any test failures or coverage regressions.
29
+ 5. Verify compliance with `AGENTS.md` rules using the checklist below.
30
+ 6. Leave inline comments on specific lines. Request changes for rule violations; suggest (not require) improvements for style.
31
+
32
+ ## Review Checklist
33
+
34
+ All rules referenced below are defined in `AGENTS.md`. Verify each:
35
+
36
+ ### Architecture
37
+ - [ ] Change is placed in the correct module (see Directory Structure in `AGENTS.md`)
38
+ - [ ] No strands or strands-compose functionality reimplemented (see Key APIs in `AGENTS.md`)
39
+ - [ ] No global state, singletons, or auto-registration introduced
40
+ - [ ] Public API changes are reflected in `src/strands_compose_agentcore/__init__.py`
41
+
42
+ ### Python Rules (see `AGENTS.md` → Python Rules)
43
+ - [ ] `from __future__ import annotations` present in every modified module
44
+ - [ ] All functions/methods fully typed (parameters + return type)
45
+ - [ ] No `Optional`, `Union`, `List`, `Dict` — only `X | None`, `list`, `dict`
46
+ - [ ] Google-style docstring on every new public class, function, and method
47
+ - [ ] Class docstrings on `__init__`, not the class body
48
+ - [ ] No f-strings in `logger.*` calls — `%s` field-value pairs only (see `AGENTS.md` → Logging Style)
49
+ - [ ] No bare `except:` — specific exception types with context messages
50
+ - [ ] Properties returning mutable state return copies: `return list(self._items)`
51
+ - [ ] No hardcoded secrets, no `eval()`, `exec()`, `subprocess(shell=True)`
52
+
53
+ ### Tests
54
+ - [ ] New public code has tests in `tests/` mirroring the source path
55
+ - [ ] Error paths are tested with `pytest.raises`
56
+ - [ ] Tests are named descriptively (see `AGENTS.md` → Testing)
57
+
58
+ ### Commits
59
+ - [ ] Commit messages follow conventional commits (`feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `chore:`)
60
+ - [ ] No "WIP" commits in the final PR
61
+
62
+ ## Tone
63
+
64
+ Be direct and specific. Quote the problematic line. Explain why it violates a rule (reference the specific `AGENTS.md` section) and what the fix should be. Don't leave vague comments like "consider refactoring this".
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: tester
3
+ description: Writes and improves tests for strands-compose-agentcore — unit, integration, and example smoke tests
4
+ tools: ["agent", "read", "edit", "search", "execute", "web", "todo"]
5
+ ---
6
+
7
+ You are a testing specialist for strands-compose-agentcore. Your job is to add missing tests, improve coverage, and ensure all test behaviour is correct and well-structured.
8
+
9
+ **Read `AGENTS.md` first** — it defines the project architecture, Python rules, logging conventions, and testing requirements. Everything below supplements those rules for the testing workflow.
10
+
11
+ ## Environment
12
+
13
+ This project uses **uv** as the package manager and task runner. Always use `uv run` to execute commands — never bare `python`, `pip`, or `pytest`:
14
+
15
+ ```bash
16
+ uv run just test # pytest with coverage (≥90%)
17
+ uv run just check # lint + type check + security scan
18
+ uv run pytest tests/test_app.py # run a specific test file
19
+ uv run pytest -k "test_name" # run a specific test by name
20
+ ```
21
+
22
+ ## Workflow
23
+
24
+ 1. Identify what is under-tested: missing unit tests, edge cases, or error paths.
25
+ 2. Place new test files in `tests/` mirroring the `src/strands_compose_agentcore/` path (e.g. `src/strands_compose_agentcore/app.py` → `tests/test_app.py`).
26
+ 3. Write tests following all Python rules from `AGENTS.md` (type hints, `from __future__ import annotations`, etc.).
27
+ 4. Run `uv run just test` — all tests must pass and coverage must remain ≥ 90%.
28
+ 5. Run `uv run just check` — tests must also pass lint and type checks.
29
+
30
+ ## Test Structure Rules
31
+
32
+ - Test **behaviour**, not implementation details.
33
+ - Name tests descriptively: `test_<what>_<condition>_<expected_outcome>`.
34
+ - Good: `test_interpolate_missing_var_without_default_raises_value_error`
35
+ - Bad: `test_interpolate_1`
36
+ - One `assert` concept per test where practical — split into multiple tests rather than one large test.
37
+ - Use `pytest.raises` with `match=` to assert exception messages.
38
+ - Mock at the boundary: patch I/O, network, and strands internals — not internal logic you're testing.
39
+ - Use `tmp_path` for any file system interactions.
40
+
41
+ ## Coverage Targets
42
+
43
+ - Every public function and method must have at least one test.
44
+ - Error paths (`ValueError`, `KeyError`, `RuntimeError`, etc.) each need a dedicated test.
45
+ - Parametrize repetitive cases instead of copy-pasting test bodies.
46
+
47
+ ## What Not to Change
48
+
49
+ - Do not modify source code to make tests pass — fix the test or raise an issue.
50
+ - Do not add integration tests for behaviour already covered by unit tests.
51
+ - Do not remove existing tests unless they are genuinely wrong or duplicate.
@@ -0,0 +1,46 @@
1
+ # strands-compose-agentcore — Copilot Instructions
2
+
3
+ **Read `AGENTS.md` in the repository root** — it is the single source of truth
4
+ for all project rules, architecture, Python conventions, logging style, key APIs,
5
+ directory structure, and tooling commands.
6
+
7
+ This file provides supplementary context for Copilot.
8
+ Do not duplicate rules from `AGENTS.md` here.
9
+
10
+ ## Quick Reference
11
+
12
+ This is **strands-compose-agentcore**: a deployment adapter that runs
13
+ [strands-compose](https://github.com/strands-compose/sdk-python) YAML configs
14
+ on [AWS Bedrock AgentCore Runtime](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/).
15
+
16
+ ## Custom Agents
17
+
18
+ Specialized agents are defined in `.github/agents/`.
19
+ Select the right one for your task:
20
+
21
+ | Agent | Purpose | Tool Access |
22
+ |-------|---------|-------------|
23
+ | `developer` | Implement features and fix bugs | read, edit, search, execute, agent |
24
+ | `reviewer` | Review PRs for correctness and compliance | read, search, execute (read-only) |
25
+ | `tester` | Write and improve tests | read, edit, search, execute |
26
+ | `docs-writer` | Write and update documentation | read, edit, search, execute |
27
+
28
+ ## Skills
29
+
30
+ Skills in `.github/skills/` are **automatically activated** when relevant:
31
+
32
+ | Skill | Triggered When |
33
+ |-------|---------------|
34
+ | `check-and-test` | Validating, linting, testing, or checking code quality |
35
+ | `strands-api-lookup` | Working with strands/strands-compose APIs, checking upstream functionality |
36
+
37
+ ## Path-Specific Instructions
38
+
39
+ Targeted rules in `.github/instructions/` are applied automatically based on file paths:
40
+
41
+ | File | Applies To |
42
+ |------|-----------|
43
+ | `source.instructions.md` | `src/**/*.py` |
44
+ | `tests.instructions.md` | `tests/**/*.py` |
45
+ | `examples.instructions.md` | `examples/**/*.py`, `examples/**/*.yaml` |
46
+ | `docs.instructions.md` | `docs/**/*.md` |
@@ -0,0 +1,20 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: "pip"
4
+ directory: "/"
5
+ schedule:
6
+ interval: "daily"
7
+ open-pull-requests-limit: 100
8
+ commit-message:
9
+ prefix: ci
10
+ groups:
11
+ dev-dependencies:
12
+ patterns:
13
+ - "pytest"
14
+ - package-ecosystem: "github-actions"
15
+ directory: "/"
16
+ schedule:
17
+ interval: "daily"
18
+ open-pull-requests-limit: 100
19
+ commit-message:
20
+ prefix: ci
@@ -0,0 +1,13 @@
1
+ ---
2
+ applyTo: "docs/**/*.md"
3
+ ---
4
+
5
+ # Documentation Instructions
6
+
7
+ - Use plain English. Short sentences. Active voice.
8
+ - Use bare `python` and `pip` in all command examples — docs target end users who install via pip, not package developers.
9
+ - Every documented feature needs a minimal working YAML example.
10
+ - Python examples must be runnable as-is with `python`.
11
+ - Do not document internal implementation details — only the public API and YAML config surface.
12
+ - Use relative links for files within the repository (never absolute URLs).
13
+ - Keep content consistent with `AGENTS.md` rules and the Key APIs table.
@@ -0,0 +1,14 @@
1
+ ---
2
+ applyTo: "examples/**/*.py,examples/**/*.yaml"
3
+ ---
4
+
5
+ # Example Code Instructions
6
+
7
+ Examples must be complete, easy to understand, and self-contained where runnable.
8
+
9
+ - Runnable example directories need `config.yaml`, `main.py`, `pyproject.toml`, and `README.md`.
10
+ - Python files must be runnable as-is with `python examples/NN_name/main.py`.
11
+ - YAML files must use valid strands-compose syntax.
12
+ - Use bare `python` and `pip` in all command examples — examples target end users, not package developers.
13
+ - Keep examples minimal — demonstrate one concept per example.
14
+ - Do not import private/internal APIs — only use the public API from `strands_compose_agentcore`.
@@ -0,0 +1,16 @@
1
+ ---
2
+ applyTo: "src/**/*.py"
3
+ ---
4
+
5
+ # Source Code Instructions
6
+
7
+ All Python rules from `AGENTS.md` apply. Key reminders for source files:
8
+
9
+ - `from __future__ import annotations` at the top of every module.
10
+ - Full type annotations on all public functions (parameters + return type).
11
+ - Use `X | None`, `list`, `dict` — never `Optional`, `Union`, `List`, `Dict`.
12
+ - Google-style docstring on every public class, function, and method. Class docstrings go on `__init__`. Exception: ``@dataclass`` classes use the class body.
13
+ - Structured logging with `%s` and field-value pairs — never f-strings in `logger.*` calls.
14
+ - Use `print()` for user-facing CLI and REPL output. Use `logging.getLogger(__name__)` for diagnostics.
15
+ - Check strands and strands-compose before implementing — do NOT reimplement upstream functionality.
16
+ - Run `uv run just check` and `uv run just test` before committing.
@@ -0,0 +1,19 @@
1
+ ---
2
+ applyTo: "tests/**/*.py"
3
+ ---
4
+
5
+ # Test Code Instructions
6
+
7
+ All Python rules from `AGENTS.md` apply. Additional rules for test files:
8
+
9
+ - `from __future__ import annotations` at the top of every test module.
10
+ - Name tests descriptively: `test_<what>_<condition>_<expected_outcome>`.
11
+ - Test **behaviour**, not implementation details.
12
+ - One `assert` concept per test where practical.
13
+ - Use `pytest.raises` with `match=` for exception tests.
14
+ - Mock at the boundary: patch I/O, network, and strands internals — not internal logic.
15
+ - Use `tmp_path` for file system interactions.
16
+ - Parametrize repetitive cases instead of copy-pasting test bodies.
17
+ - Run tests with `uv run just test` — never bare `pytest`.
18
+ - In edge cases use `uv run pytest ...` for faster iteration.
19
+ - Coverage must remain ≥ 90%.
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: check-and-test
3
+ description: Run lint, type checks, security scan, and tests for strands-compose-agentcore. Use this when asked to validate, check, lint, test, or verify code quality.
4
+ ---
5
+
6
+ # Check and Test
7
+
8
+ Run the full validation pipeline before committing or opening a PR.
9
+
10
+ ## Steps
11
+
12
+ 1. Run lint, type check, and security scan:
13
+
14
+ ```bash
15
+ uv run just check
16
+ ```
17
+
18
+ 2. If `check` fails, auto-format first and re-run:
19
+
20
+ ```bash
21
+ uv run just format
22
+ uv run just check
23
+ ```
24
+
25
+ 3. Run the test suite with coverage:
26
+
27
+ ```bash
28
+ uv run just test
29
+ ```
30
+
31
+ 4. If a specific test fails, run it in isolation for faster debugging:
32
+
33
+ ```bash
34
+ uv run pytest tests/test_app.py -x -v
35
+ uv run pytest -k "test_name" -x -v
36
+ ```
37
+
38
+ ## Coverage
39
+
40
+ Coverage must remain **≥ 90%**. If coverage drops, add tests for the uncovered code before proceeding.
41
+
42
+ ## Troubleshooting
43
+
44
+ - **Import errors**: Run `uv run just install` to sync dependencies.
45
+ - **Type errors**: Check for missing `from __future__ import annotations` at the top of the module.
46
+ - **Lint errors**: Run `uv run just format` first — it fixes most style issues automatically.