feat: add activities-planner-solo, switch CI seed to activities-planner#2161
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
… to activities-planner - Create activities-planner-solo: fully offline template using functionTool() with deterministic mock data (no network access required) - Rename activities-planner-advanced → activities-planner-complex for clearer naming - Switch CI seed project from weather-project to activities-planner in setup-dev.js and cypress-e2e composite action - Update all 10 Cypress E2E test files to reference activities-planner project IDs, agent names, tool names, and prompt text - Update skills.mdx docs to reference activities-planner-complex Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The setup-dev script and CLI examples now seed activities-planner instead of weather-project. Update the contributing docs to match. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
40e6fc7 to
889ed8f
Compare
Remove the weather-project template which used anti-patterns (random hash tool IDs, separate mcpTool per endpoint, dead code, truncated description). CI and setup-dev already switched to activities-planner. Also removes: - start:weather/dev:weather scripts from agents-cookbook/package.json - weather-project exclusion filters from CLI template listing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- docs: update AI Elements example to use activities-planner IDs - cli tests: update mock template names from weather to activities-planner Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ing-prep Pre-existing copy-paste error — the meeting-prep template had id: 'activities-planner' instead of id: 'meeting-prep'. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
PR Review Summary
(0) Total Issues | Risk: Low
Delta Review
This is a re-review scoped to the 3 commits added since the previous automated review.
Commits reviewed:
| Commit | Description |
|---|---|
b6b41fa8a |
fix(meeting-prep): correct project ID from activities-planner to meeting-prep |
123278c44 |
chore: update remaining weather-project references |
b0ceba5ad |
chore: delete weather-project template |
Delta Analysis
1. Meeting-prep project ID fix ✅
The prior review's "While You're Here" finding has been addressed:
- id: 'activities-planner',
+ id: 'meeting-prep',2. CLI template filter cleanup ✅
The weather-project exclusion filter in templates.ts has been correctly removed now that the template is deleted:
- if (stat.isDirectory() && item !== 'weather-project') {
+ if (stat.isDirectory()) {- return contents
- .filter((item: any) => item.type === 'dir' && item.name !== 'weather-project')
- .map((item: any) => item.name);
+ return contents.filter((item: any) => item.type === 'dir').map((item: any) => item.name);3. Test fixture updates ✅
Test files updated to use activities-planner instead of weather. Remaining weather-project references in packages/create-agents/src/__tests__/templates.test.ts are mock data strings (not file paths) — correctly preserved as independent test fixtures.
4. Documentation updates ✅
ai-elements.mdx example updated to reference activities-planner project and agent IDs.
5. Template deletion ✅
All 9 files in weather-project/ deleted cleanly. No orphaned references found outside of test fixtures/mocks.
✅ APPROVE
Summary: Clean housekeeping delta. The prior "While You're Here" finding (meeting-prep project ID) has been addressed. All weather-project references have been updated or appropriately preserved as test fixtures. Ship it! 🚀
Reviewers (0)
| Reviewer | Returned | Main Findings | Consider | While You're Here | Inline Comments | Pending Recs | Discarded |
|---|---|---|---|---|---|---|---|
| Total | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Note: Trivial cleanup delta — full reviewer dispatch skipped. Manual verification completed for reference consistency.
PR #2162 changed the root `dev` script to use inclusion filters that start agents-manage-ui (port 3000) alongside agents-api. The Cypress composite action calls `pnpm dev --filter=@inkeep/agents-api` which delegates to the root script, causing turbo to start all 5 packages. When start-server-and-test then tries to start the Next.js standalone server on port 3000, it hits EADDRINUSE. Fix: use `pnpm exec turbo dev` directly with a single filter, bypassing the root dev script's hardcoded filters. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
PR Review Summary
(0) Total Issues | Risk: Low
Delta Review
This is a re-review scoped to the 1 commit added since the previous automated review.
Change: cbaf0fab8 — fix(ci): use turbo directly for API server in Cypress E2E
Delta analysis:
- run: pnpm dev --filter='@inkeep/agents-api' &
+ run: pnpm exec turbo dev --filter='@inkeep/agents-api' &This is a correct consistency fix. The change aligns the API server startup command with other turbo invocations in the same file:
| Line | Command | Pattern |
|---|---|---|
| 32 | pnpm exec turbo run build --filter=@inkeep/agents-core |
✅ Direct turbo |
| 61 | pnpm exec turbo build --filter='@inkeep/agents-manage-ui'... |
✅ Direct turbo |
| 69 | pnpm exec turbo dev --filter='@inkeep/agents-api' |
✅ Direct turbo (fixed) |
Why this matters: Using pnpm exec turbo directly ensures consistent turbo caching behavior and avoids any intermediate script indirection that could affect environment variable propagation in background processes.
✅ APPROVE
Summary: Trivial CI consistency fix — the API server startup now uses the same direct turbo invocation pattern as other build steps in the workflow. No issues introduced. 🚀
Reviewers (0)
| Reviewer | Returned | Main Findings | Consider | While You're Here | Inline Comments | Pending Recs | Discarded |
|---|---|---|---|---|---|---|---|
| Total | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Note: Trivial delta (1-line CI fix) — full reviewer dispatch skipped. Manual verification confirmed the change aligns with existing patterns.
Deleting weather-project left tsx unused in agents-cookbook, failing knip. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…d-project-variants # Conflicts: # .github/composite-actions/cypress-e2e/action.yml
There was a problem hiding this comment.
PR Review Summary
(0) Total Issues | Risk: Low
Delta Review
This is a re-review scoped to the 2 commits added since the previous automated review.
Commits reviewed:
| Commit | Description |
|---|---|
63de7741b |
fix(ci): remove unused tsx devDependency from agents-cookbook |
a88fe5410 |
Merge branch 'main' (brings in Slack Socket Mode, scope helpers, turbo exclusions) |
Delta Analysis
1. Remove unused tsx devDependency ✅
devDependencies: {
"@types/node": "^22.18.12",
- "tsx": "^4.20.6",
"typescript": "^5.9.3"
}This is correct cleanup. The tsx package was only used by the start:weather and dev:weather scripts which were deleted when weather-project was removed in an earlier commit. No other template in agents-cookbook uses tsx for development.
2. Merge from main ✅
The merge brings in 4 PRs from main:
- Slack Socket Mode (#2133)
- Scope-aware query helpers (#2151)
- Turbo dev exclusions (#2162)
- CI fix for turbo API server (#2164)
These were reviewed in their respective PRs and are not subject to re-review here. No merge conflicts were introduced.
3. Minor comment cleanup ✅
The cypress-e2e/action.yml change removes a trailing comment (# & means run job in background → &). Trivial housekeeping.
✅ APPROVE
Summary: Trivial delta — just removing an unused devDependency (tsx) that's no longer needed after deleting weather-project, plus a merge from main. No issues introduced. Ship it! 🚀
Reviewers (0)
| Reviewer | Returned | Main Findings | Consider | While You're Here | Inline Comments | Pending Recs | Discarded |
|---|---|---|---|---|---|---|---|
| Total | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Note: Trivial delta (devDependency cleanup + merge from main) — full reviewer dispatch skipped. Manual verification confirmed the change is correct.
|
🔎💬 Inkeep AI search and chat service is syncing content for source 'Inkeep Agent Framework Docs' |
Summary
activities-planner-solo— fully offline template project usingfunctionTool()with deterministic mock data. Demonstratesproject(),agent(),subAgent(),functionTool(),canDelegateTo, anddataComponent()with zero network dependencies.weather-project— replaced byactivities-planneras CI seed and contributor default. All references updated across docs, CLI, and tests.activities-planner— aligns contributor setup with whatcreate-agentsscaffolds for new users..jsextensions across all cookbook templates).activities-planner.Motivation
weather-projecthad several anti-patterns (random hash tool IDs, separatemcpTool()per endpoint, dead code, truncated description) whileactivities-plannerdemonstrates correct SDK patterns (readable IDs,.with({ selectedTools }), project-level tool registration, rich data components). Contributors and CI should use the same patterns new users get.activities-planner-solofills the gap for sandboxed/airgapped/automation environments that can't reach external MCP servers.Changes
New files
agents-cookbook/template-projects/activities-planner-solo/index.tsactivities-planner-solo/agents/activities-planner-solo.tsactivities-planner-solo/tools/get-coordinates.tsactivities-planner-solo/tools/get-weather-forecast.tsactivities-planner-solo/data-components/activities.tsDeleted
agents-cookbook/template-projects/weather-project/— entire directory (9 files). Anti-pattern template replaced by activities-planner.start:weather/dev:weatherscripts fromagents-cookbook/package.jsonweather-projectexclusion filters fromagents-cli/src/utils/templates.tsCI config
scripts/setup-dev.js—pushProject.projectPath→activities-planner.github/composite-actions/cypress-e2e/action.yml— push command →activities-plannerImport normalization
.jsextensions from relative imports acrossactivities-planner,customer-support,deep-research, andmeeting-preptemplates. Aligns withactivities-planner-advancedandactivities-planner-solowhich already use extensionless imports.Documentation
agents-docs/content/community/contributing/overview.mdx— updated setup-dev description, CLI push examplesagents-docs/content/talk-to-your-agents/vercel-ai-sdk/ai-elements.mdx— updated example project/agent IDsCypress test updates (all 10 files)
my-weather-projectactivities-plannerweather-agentactivities-plannergeocoder-agentget-coordinates-agentWeather agentActivities plannerGeocoder agentCoordinates agentWeather ProjectActivities plannerweather-forecast(component)activitiesWeather code at given timeThe type of eventGeocode address(tool)Weather(MCP tool)You are a geocoding specialistYou are a helpful assistant responsible for converting locationYou are a weather forecastingYou are a helpful assistant responsible for taking in coordinatesBug fix
activities-planner-solo/index.ts— removed project-leveltools: () => [getCoordinates, getWeatherForecast].FunctionToolinstances cannot be registered at the project level becauseproject.tscallsgetCredentialReferenceId()unconditionally — a method only MCPToolimplements. The function tools are already correctly registered on subAgents viacanUse().Test plan
Manual QA scenarios. Updated as tests complete.
weather-project,my-weather-project,weather-agent,weather-assistantin Cypress files, docs, and CLI codeplanner-complexorPlannerComplexin codebasepushProject.projectPathpoints toactivities-planneractivities-plannerpnpm buildpasses (11/11 packages)ai-sdk-providerandagents-work-appson main)weather-project/weather-agentrefs replacedactivities-planner-solopushed successfully via CLI. Discovered and fixed bug: FunctionTool cannot be in project-leveltoolsconfig (crashes ongetCredentialReferenceId()).Notes
activities-planner(the original, with Exa MCP) is unchangedactivities-planner-advancedis unchanged (zero diff from main)@inkeep/ai-sdk-providerand@inkeep/agents-work-appsare on main and unrelatedcreate-agents-templateandcreate-agentstest fixtures still referenceweather-projectas mock data — these are independent fixture strings, not file paths🤖 Generated with Claude Code