@agent-native/scheduling 0.2.52 → 0.2.53-nightly-20261105110131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/server/availability-engine.d.ts +24 -0
- package/dist/server/availability-engine.d.ts.map +1 -1
- package/dist/server/availability-engine.js +73 -5
- package/dist/server/availability-engine.js.map +1 -1
- package/dist/server/providers/errors.d.ts +22 -0
- package/dist/server/providers/errors.d.ts.map +1 -0
- package/dist/server/providers/errors.js +53 -0
- package/dist/server/providers/errors.js.map +1 -0
- package/dist/server/providers/google-calendar.d.ts +0 -11
- package/dist/server/providers/google-calendar.d.ts.map +1 -1
- package/dist/server/providers/google-calendar.js +57 -3
- package/dist/server/providers/google-calendar.js.map +1 -1
- package/dist/server/providers/index.d.ts +1 -0
- package/dist/server/providers/index.d.ts.map +1 -1
- package/dist/server/providers/index.js +1 -0
- package/dist/server/providers/index.js.map +1 -1
- package/dist/server/providers/office365.d.ts.map +1 -1
- package/dist/server/providers/office365.js +87 -25
- package/dist/server/providers/office365.js.map +1 -1
- package/docs/llms-full.txt +29 -8
- package/docs/providers.md +10 -0
- package/docs/skills/integrations/SKILL.md +19 -8
- package/package.json +4 -4
- package/src/server/availability-engine.test.ts +459 -23
- package/src/server/availability-engine.ts +110 -10
- package/src/server/providers/calendar-busy.test.ts +417 -0
- package/src/server/providers/errors.ts +66 -0
- package/src/server/providers/google-calendar.ts +71 -4
- package/src/server/providers/index.ts +1 -0
- package/src/server/providers/office365.ts +111 -33
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"office365.js","sourceRoot":"","sources":["../../../src/server/providers/office365.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"office365.js","sourceRoot":"","sources":["../../../src/server/providers/office365.ts"],"names":[],"mappings":"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"}
|
package/docs/llms-full.txt
CHANGED
|
@@ -337,6 +337,16 @@ registerCalendarProvider({
|
|
|
337
337
|
});
|
|
338
338
|
```
|
|
339
339
|
|
|
340
|
+
`getBusy` must throw when it can't read any requested calendar, including a
|
|
341
|
+
200 response that reports a per-calendar error. Returning `[]` means "no busy
|
|
342
|
+
time", so a failure returned as `[]` lets bookers take slots the host is busy.
|
|
343
|
+
When the provider rejects the credential (401/403), throw
|
|
344
|
+
`CalendarCredentialInvalidError` so availability reports the calendar as
|
|
345
|
+
needing reconnection rather than as a transient failure. When it throttles
|
|
346
|
+
the request (rate or quota limits, which Google can send as 403), throw
|
|
347
|
+
`CalendarLookupRateLimitedError` with any `Retry-After` seconds instead, and
|
|
348
|
+
don't mark the credential invalid.
|
|
349
|
+
|
|
340
350
|
All methods receive a `credentialId` — use it to look up the OAuth token via
|
|
341
351
|
your token store. The package's `setSchedulingContext()` doesn't touch
|
|
342
352
|
tokens; consumers typically use core's `oauth_tokens` and pass a
|
|
@@ -769,9 +779,20 @@ description: Calendar + video provider integrations — Google Calendar, Office
|
|
|
769
779
|
## Busy-time aggregation
|
|
770
780
|
|
|
771
781
|
`aggregateBusy({userEmail, rangeStart, rangeEnd})` merges:
|
|
782
|
+
|
|
772
783
|
- Confirmed bookings hosted by the user
|
|
773
784
|
- External busy from each `selected_calendars` entry via the provider
|
|
774
785
|
|
|
786
|
+
If any selected calendar can't be read (its `getBusy` throws, its provider
|
|
787
|
+
isn't registered, or its credential is `invalid`), `aggregateBusy`,
|
|
788
|
+
`getAvailableSlots`, and `assertSlotAvailable` throw
|
|
789
|
+
`CalendarAvailabilityUnavailableError` (`errorCode:
|
|
790
|
+
"calendar_availability_unavailable"`, status 503, or 429 with Retry-After
|
|
791
|
+
when every failure was a provider throttle) naming the calendar,
|
|
792
|
+
instead of treating it as free. Show "Couldn't check <calendar>" and offer no
|
|
793
|
+
times; tell the host to reconnect when the reason is `credential_invalid`.
|
|
794
|
+
Credentials with no selected calendars are not checked.
|
|
795
|
+
|
|
775
796
|
Cached in `calendar_cache` (short TTL, default 5 min). Busted on any
|
|
776
797
|
booking write for that host.
|
|
777
798
|
|
|
@@ -781,14 +802,14 @@ See `docs/providers.md` for the full interface.
|
|
|
781
802
|
|
|
782
803
|
## Common tasks
|
|
783
804
|
|
|
784
|
-
| User
|
|
785
|
-
|
|
786
|
-
| "Connect Google Calendar"
|
|
787
|
-
| "Stop checking my vacation calendar" | `toggle-selected-calendar --include false` for that externalId
|
|
788
|
-
| "Default to Zoom for new bookings"
|
|
789
|
-
| "Connect Microsoft Teams"
|
|
790
|
-
| "Default to Teams for new bookings"
|
|
791
|
-
| "Refresh calendar cache"
|
|
805
|
+
| User | Action |
|
|
806
|
+
| ------------------------------------ | -------------------------------------------------------------------------------------------------------- |
|
|
807
|
+
| "Connect Google Calendar" | `connect-calendar --kind google_calendar --redirectUri ...` → redirect to returned `authUrl` |
|
|
808
|
+
| "Stop checking my vacation calendar" | `toggle-selected-calendar --include false` for that externalId |
|
|
809
|
+
| "Default to Zoom for new bookings" | `set-default-conferencing-app --credentialId <zoom-cred>` |
|
|
810
|
+
| "Connect Microsoft Teams" | `connect-video --kind teams_video --redirectUri ...` → complete the callback with `completeVideoOAuth()` |
|
|
811
|
+
| "Default to Teams for new bookings" | `set-default-conferencing-app --credentialId <teams-cred>` |
|
|
812
|
+
| "Refresh calendar cache" | `refresh-busy-times` |
|
|
792
813
|
|
|
793
814
|
## Microsoft Teams setup
|
|
794
815
|
|
package/docs/providers.md
CHANGED
|
@@ -45,6 +45,16 @@ registerCalendarProvider({
|
|
|
45
45
|
});
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
`getBusy` must throw when it can't read any requested calendar, including a
|
|
49
|
+
200 response that reports a per-calendar error. Returning `[]` means "no busy
|
|
50
|
+
time", so a failure returned as `[]` lets bookers take slots the host is busy.
|
|
51
|
+
When the provider rejects the credential (401/403), throw
|
|
52
|
+
`CalendarCredentialInvalidError` so availability reports the calendar as
|
|
53
|
+
needing reconnection rather than as a transient failure. When it throttles
|
|
54
|
+
the request (rate or quota limits, which Google can send as 403), throw
|
|
55
|
+
`CalendarLookupRateLimitedError` with any `Retry-After` seconds instead, and
|
|
56
|
+
don't mark the credential invalid.
|
|
57
|
+
|
|
48
58
|
All methods receive a `credentialId` — use it to look up the OAuth token via
|
|
49
59
|
your token store. The package's `setSchedulingContext()` doesn't touch
|
|
50
60
|
tokens; consumers typically use core's `oauth_tokens` and pass a
|
|
@@ -33,9 +33,20 @@ description: Calendar + video provider integrations — Google Calendar, Office
|
|
|
33
33
|
## Busy-time aggregation
|
|
34
34
|
|
|
35
35
|
`aggregateBusy({userEmail, rangeStart, rangeEnd})` merges:
|
|
36
|
+
|
|
36
37
|
- Confirmed bookings hosted by the user
|
|
37
38
|
- External busy from each `selected_calendars` entry via the provider
|
|
38
39
|
|
|
40
|
+
If any selected calendar can't be read (its `getBusy` throws, its provider
|
|
41
|
+
isn't registered, or its credential is `invalid`), `aggregateBusy`,
|
|
42
|
+
`getAvailableSlots`, and `assertSlotAvailable` throw
|
|
43
|
+
`CalendarAvailabilityUnavailableError` (`errorCode:
|
|
44
|
+
"calendar_availability_unavailable"`, status 503, or 429 with Retry-After
|
|
45
|
+
when every failure was a provider throttle) naming the calendar,
|
|
46
|
+
instead of treating it as free. Show "Couldn't check <calendar>" and offer no
|
|
47
|
+
times; tell the host to reconnect when the reason is `credential_invalid`.
|
|
48
|
+
Credentials with no selected calendars are not checked.
|
|
49
|
+
|
|
39
50
|
Cached in `calendar_cache` (short TTL, default 5 min). Busted on any
|
|
40
51
|
booking write for that host.
|
|
41
52
|
|
|
@@ -45,14 +56,14 @@ See `docs/providers.md` for the full interface.
|
|
|
45
56
|
|
|
46
57
|
## Common tasks
|
|
47
58
|
|
|
48
|
-
| User
|
|
49
|
-
|
|
50
|
-
| "Connect Google Calendar"
|
|
51
|
-
| "Stop checking my vacation calendar" | `toggle-selected-calendar --include false` for that externalId
|
|
52
|
-
| "Default to Zoom for new bookings"
|
|
53
|
-
| "Connect Microsoft Teams"
|
|
54
|
-
| "Default to Teams for new bookings"
|
|
55
|
-
| "Refresh calendar cache"
|
|
59
|
+
| User | Action |
|
|
60
|
+
| ------------------------------------ | -------------------------------------------------------------------------------------------------------- |
|
|
61
|
+
| "Connect Google Calendar" | `connect-calendar --kind google_calendar --redirectUri ...` → redirect to returned `authUrl` |
|
|
62
|
+
| "Stop checking my vacation calendar" | `toggle-selected-calendar --include false` for that externalId |
|
|
63
|
+
| "Default to Zoom for new bookings" | `set-default-conferencing-app --credentialId <zoom-cred>` |
|
|
64
|
+
| "Connect Microsoft Teams" | `connect-video --kind teams_video --redirectUri ...` → complete the callback with `completeVideoOAuth()` |
|
|
65
|
+
| "Default to Teams for new bookings" | `set-default-conferencing-app --credentialId <teams-cred>` |
|
|
66
|
+
| "Refresh calendar cache" | `refresh-busy-times` |
|
|
56
67
|
|
|
57
68
|
## Microsoft Teams setup
|
|
58
69
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-native/scheduling",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.53-nightly-20261105110131",
|
|
4
4
|
"description": "Scheduling primitives for agent-native apps — event types, availability, bookings, team scheduling, workflows, and routing forms.",
|
|
5
5
|
"homepage": "https://github.com/BuilderIO/agent-native#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"nanoid": "^5.1.9",
|
|
57
57
|
"rrule": "^2.8.1",
|
|
58
58
|
"zod": "^4.3.6",
|
|
59
|
-
"@agent-native/toolkit": "^0.
|
|
59
|
+
"@agent-native/toolkit": "^0.225.0-nightly-20261105110131"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
62
62
|
"@tabler/icons-react": "3.44.0",
|
|
@@ -66,10 +66,10 @@
|
|
|
66
66
|
"react": "^19.2.5",
|
|
67
67
|
"typescript-7": "npm:typescript@^7.0.2",
|
|
68
68
|
"vitest": "^4.1.5",
|
|
69
|
-
"@agent-native/core": "0.
|
|
69
|
+
"@agent-native/core": "0.225.0-nightly-20261105110131"
|
|
70
70
|
},
|
|
71
71
|
"peerDependencies": {
|
|
72
|
-
"@agent-native/core": "
|
|
72
|
+
"@agent-native/core": "0.225.0-nightly-20261105110131",
|
|
73
73
|
"@tabler/icons-react": "^3.41.1",
|
|
74
74
|
"drizzle-orm": ">=0.45",
|
|
75
75
|
"react": ">=18",
|