activity-core/src/activity_core
tegwick 176867cbe3 feat(WP-0003b): parser, workflow wiring, triggers, webhooks
T44: ActivityDefinition markdown file parser (definition_parser.py)
  - Scans activity-definitions/*.md and ACTIVITY_DEFINITION_DIRS paths
  - Parses YAML frontmatter + fenced rule/instruction blocks
  - Raises ParseError on any malformed file — never silently skips

T45: ActivityDefinition sync command
  - Migration 0006: adds rules_json/instructions_json JSONB columns
  - sync_activity_definitions.py + make sync-activity-definitions
  - Called at worker startup before schedule sync

T46: Rule/instruction pipeline wired into RunActivityWorkflow
  - New evaluate_rules and emit_tasks Temporal activities
  - Workflow passes event_envelope_json to enable rule evaluation
  - EventRouter now passes full envelope JSON as 4th workflow arg
  - IssueSink.emit() writes task_spawn_log rows per task

T47: ScheduledTriggerConfig model (one-off future datetime trigger)

T48: One-off Temporal Schedule support
  - Fixed timezone_name → time_zone_name (was causing all schedule tests to fail)
  - Added ScheduleCalendarSpec-based one-off schedule with remaining_actions=1
  - cancel_scheduled() for admin cancellation
  - Fixed backfill() call to use *args unpacking (not list wrapper)
  - Fixed ScheduleAlreadyRunningError catch in upsert_schedule
  - sync_schedules now handles ScheduledTriggerConfig definitions

T49: Webhook receiver
  - POST /webhooks/gitea  — HMAC-SHA256 via X-Gitea-Signature-256
  - POST /webhooks/github — HMAC-SHA256 via X-Hub-Signature-256
  - Normalisers: repo.created, push, issue.closed → EventEnvelope
  - Publishes to NATS activity.{type} subject after registry validation
  - Mounted in api.py at /webhooks prefix

T50: Gitea event type definitions
  - gitea.repo.created.md, gitea.push.md, gitea.issue.closed.md
  - Each includes normaliser field mapping in Consumer Notes

Tests: 18 passed, 1 skipped (integration). Fixed embedded Temporal
server visibility latency in test_upsert_schedule_creates_schedule.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-14 23:02:33 +02:00
..
rules feat(event-bridge): WP-0003a — domain model, rules module, event type registry 2026-05-14 22:01:15 +02:00
__init__.py Add project scaffold: contracts, schemas, docker-compose, workplans 2026-03-04 22:45:40 +01:00
activities.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
api.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
db.py feat(db): init Alembic (async) + SQLAlchemy declarative base — T08 2026-03-26 21:45:40 +00:00
definition_parser.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
event_router.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
event_type_registry.py feat(event-bridge): WP-0003a — domain model, rules module, event type registry 2026-05-14 22:01:15 +02:00
issue_sink.py feat(event-bridge): WP-0003a — domain model, rules module, event type registry 2026-05-14 22:01:15 +02:00
models.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
orm.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
schedule_manager.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
seed.py feat(db): add dev seed script for ActivityDefinition — T12 2026-03-26 21:53:59 +00:00
sync_activity_definitions.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
sync_schedules.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
template_engine.py feat(activities): resolve_context stub + evaluate_templates — T15/T16 2026-03-26 22:06:09 +00:00
webhook_receiver.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
worker.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00
workflows.py feat(WP-0003b): parser, workflow wiring, triggers, webhooks 2026-05-14 23:02:33 +02:00