feat: extend calendar scheduling reconciliation contract
This commit is contained in:
@@ -217,6 +217,12 @@ Other stable runtime capabilities currently include:
|
|||||||
- `payments.requests`
|
- `payments.requests`
|
||||||
- `workflow.definitionContributions` and `workflow.runtimeWorker`
|
- `workflow.definitionContributions` and `workflow.runtimeWorker`
|
||||||
|
|
||||||
|
`calendar.scheduling` keeps workflow modules independent of Calendar-owned
|
||||||
|
models and transport adapters. Consumers may create tentative events, promote
|
||||||
|
the selected event in place, and release unused events idempotently. The
|
||||||
|
provider returns bounded external-delivery and outbox references so consumers
|
||||||
|
can retain retry state without copying Calendar's synchronization internals.
|
||||||
|
|
||||||
`application_status.projection` lets a presentation module resolve the tenant
|
`application_status.projection` lets a presentation module resolve the tenant
|
||||||
and display or request access to an owner-supplied, deliberately bounded
|
and display or request access to an owner-supplied, deliberately bounded
|
||||||
applicant-status view. The provider retains policy, authorization, token, and
|
applicant-status view. The provider retains policy, authorization, token, and
|
||||||
|
|||||||
@@ -45,6 +45,15 @@ class CalendarEventRef:
|
|||||||
outbox_operation_id: str | None = None
|
outbox_operation_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(frozen=True, slots=True)
|
||||||
|
class CalendarEventReleaseRef:
|
||||||
|
event_id: str
|
||||||
|
accepted: bool = True
|
||||||
|
already_released: bool = False
|
||||||
|
external_state: str = "local_released"
|
||||||
|
outbox_operation_id: str | None = None
|
||||||
|
|
||||||
|
|
||||||
@dataclass(frozen=True, slots=True)
|
@dataclass(frozen=True, slots=True)
|
||||||
class CalendarInvitationAttendeeRequest:
|
class CalendarInvitationAttendeeRequest:
|
||||||
address: str
|
address: str
|
||||||
@@ -156,6 +165,27 @@ class CalendarSchedulingProvider(Protocol):
|
|||||||
) -> CalendarEventRef:
|
) -> CalendarEventRef:
|
||||||
...
|
...
|
||||||
|
|
||||||
|
def promote_event(
|
||||||
|
self,
|
||||||
|
session: object,
|
||||||
|
*,
|
||||||
|
tenant_id: str,
|
||||||
|
user_id: str | None,
|
||||||
|
event_id: str,
|
||||||
|
request: CalendarEventRequest,
|
||||||
|
) -> CalendarEventRef:
|
||||||
|
...
|
||||||
|
|
||||||
|
def release_event(
|
||||||
|
self,
|
||||||
|
session: object,
|
||||||
|
*,
|
||||||
|
tenant_id: str,
|
||||||
|
user_id: str | None,
|
||||||
|
event_id: str,
|
||||||
|
) -> CalendarEventReleaseRef:
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
@runtime_checkable
|
@runtime_checkable
|
||||||
class CalendarOutboxProvider(Protocol):
|
class CalendarOutboxProvider(Protocol):
|
||||||
|
|||||||
Reference in New Issue
Block a user