github.com/humanagencyprotocol/hap-profiles/calendar@0.4
Calendar authority — governs calendar access: reading, drafting, and booking events
Bounds Schema
| Field | Type | Required | Description |
|---|---|---|---|
profile | string | Yes | - |
booking_daily_max | number | Yes | Maximum new events booked per day |
booking_duration_max | number | Yes | Maximum duration of a single event |
lookahead_days_max | number | Yes | Maximum number of days into the future an event can be booked |
Key order: profile, booking_daily_max, booking_duration_max, lookahead_days_max
Context Schema (local only)
| Field | Type | Required | Description |
|---|---|---|---|
allowed_calendars | string | No | Comma-separated list of calendar names the agent may access |
allowed_attendees | string | No | Comma-separated list of allowed attendee email addresses |
allowed_domains | string | No | Comma-separated list of allowed attendee domains (e.g. acme.com,partner.org) |
Key order: allowed_calendars, allowed_attendees, allowed_domains
Full Definition
{
"id": "github.com/humanagencyprotocol/hap-profiles/calendar@0.4",
"name": "Calendar",
"version": "0.4",
"description": "Calendar authority — governs calendar access: reading, drafting, and booking events",
"boundsSchema": {
"keyOrder": [
"profile",
"booking_daily_max",
"booking_duration_max",
"lookahead_days_max"
],
"fields": {
"profile": {
"type": "string",
"required": true
},
"booking_daily_max": {
"type": "number",
"required": true,
"displayName": "Daily booking limit",
"description": "Maximum new events booked per day",
"unit": "count",
"boundType": {
"kind": "cumulative_count",
"window": "daily"
}
},
"booking_duration_max": {
"type": "number",
"required": true,
"displayName": "Max event duration",
"description": "Maximum duration of a single event",
"unit": "minutes",
"boundType": {
"kind": "per_transaction",
"of": "duration"
}
},
"lookahead_days_max": {
"type": "number",
"required": true,
"displayName": "Max lookahead",
"description": "Maximum number of days into the future an event can be booked",
"unit": "days",
"boundType": {
"kind": "per_transaction",
"of": "lookahead"
}
}
}
},
"contextSchema": {
"keyOrder": [
"allowed_calendars",
"allowed_attendees",
"allowed_domains"
],
"fields": {
"allowed_calendars": {
"type": "string",
"required": false,
"displayName": "Allowed calendars",
"description": "Comma-separated list of calendar names the agent may access",
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"allowed_attendees": {
"type": "string",
"required": false,
"displayName": "Allowed attendees",
"format": "email",
"description": "Comma-separated list of allowed attendee email addresses",
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"allowed_domains": {
"type": "string",
"required": false,
"displayName": "Allowed domains",
"format": "domain",
"description": "Comma-separated list of allowed attendee domains (e.g. acme.com,partner.org)",
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
}
}
},
"executionContextSchema": {
"fields": {
"duration": {
"source": "declared",
"description": "Duration of the event in minutes",
"required": true,
"constraint": {
"type": "number",
"enforceable": [
"max"
]
}
},
"lookahead": {
"source": "declared",
"description": "Days from now the event is scheduled",
"required": true,
"constraint": {
"type": "number",
"enforceable": [
"max"
]
}
},
"allowed_calendars": {
"source": "declared",
"description": "Calendar being used (checked against authorized calendars)",
"required": false,
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"allowed_attendees": {
"source": "declared",
"description": "Attendee addresses from this event (checked against authorized attendees)",
"required": false,
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"allowed_domains": {
"source": "declared",
"description": "Unique attendee domains from this event (checked against authorized domains)",
"required": false,
"constraint": {
"type": "string",
"enforceable": [
"subset"
]
}
},
"booking_count_daily": {
"source": "cumulative",
"cumulativeField": "_count",
"window": "daily",
"description": "Running daily booking count (resolved from execution log)",
"required": true,
"constraint": {
"type": "number",
"enforceable": [
"max"
]
}
}
}
},
"requiredGates": [
"bounds",
"intent",
"commitment",
"decision_owner"
],
"ttl": {
"default": 86400,
"max": 31536000
},
"retention_minimum": 7776000
}