⚠️ Pre-release (0.1.x) — Highly experimental. APIs may change without notice. Not for production. Details.
intentcall_codegen
Optional @AgentTool / @AgentParam annotations and build_runner codegen pilot (Phase 5-C).
Hand-written AgentCallEntry remains first-class; codegen is opt-in for stable tools with typed parameters.
Pilot usage
- Add dependency:
dependencies:
intentcall_codegen: ^0.1.0
intentcall_core: ^0.1.0
intentcall_schema: ^0.1.0
dev_dependencies:
build_runner: ^2.4.15
- Annotate a top-level function:
import 'package:intentcall_codegen/intentcall_codegen.dart';
import 'package:intentcall_core/intentcall_core.dart';
import 'package:intentcall_schema/intentcall_schema.dart';
part 'my_tools.g.dart';
@AgentTool(namespace: 'app', name: 'demo_ping', description: 'Ping')
Future<AgentResult> demoPing(@AgentParam('Message') String message) async {
return AgentResult.success(data: {'pong': message});
}
- Run codegen:
dart run build_runner build --delete-conflicting-outputs
- Register generated intent:
registry.register(demoPingRegistration);
// or
registerAll(registry, {demoPingCallEntry});
Generated output
For each @AgentTool function, .g.dart emits:
_<name>InputSchema— JSON Schema from parameter types<name>CallEntry—AgentCallEntry.tool(...)factory<name>Registration—RegisteredAgentIntentvia.toRegistration()
Supported parameter types: String, int, bool, double.
Scope (pilot)
- Top-level functions only
- Tool kind only (resources: hand-write
AgentCallEntry.resource) - Test fixture:
test/fixtures/demo_ping_tool.dart
See intentcall design (declarative authoring).