@vess-id/ai-identity 0.16.0 → 0.17.0

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/index.d.ts CHANGED
@@ -32,7 +32,7 @@ export { canonicalResourceId } from './resolver/canonical-resource-id';
32
32
  export { looksLikeNativeId, compareResourceIds, } from './resolver/compare-resource-id';
33
33
  export type { ResourceMatch } from './resolver/compare-resource-id';
34
34
  export * from './types';
35
- export type { PolicyRef, PolicyRefInline, PolicyRefReference, PermissionVcClaims_V2, PermissionVcClaims_V3, Phase1VcLayer, VcApprovalClaim, } from './types/permission-vc';
35
+ export type { PolicyRef, PolicyRefInline, PolicyRefReference, PermissionVcClaims_V2, PermissionVcClaims_V3, Phase1VcLayer, VcApprovalClaim, VcSchedulingDelegationClaim, } from './types/permission-vc';
36
36
  export { isPolicyRefInline, isPolicyRefReference, PHASE_1_VC_LAYER, buildPhase1VcClaims, } from './types/permission-vc';
37
37
  export type { CedarSchema, CedarPolicySetHandle, CedarSchemaHandle, CedarDecisionValue, CedarDecisionDiagnostic, } from './types/cedar-policy';
38
38
  export { isWriteAction, WRITE_ACTION_NAMES } from './utils/action-classifier';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6531,6 +6531,33 @@ var ACTION_REGISTRY = {
6531
6531
  },
6532
6532
  version: "1.0.0"
6533
6533
  },
6534
+ {
6535
+ action: "calendar.freebusy",
6536
+ resource_type: "calendar:calendar",
6537
+ required_relations: ["viewer", "editor", "admin", "owner"],
6538
+ required_scopes: ["https://www.googleapis.com/auth/calendar.readonly"],
6539
+ capability: "calendar.read.basic",
6540
+ // Availability probe used to check a calendar's busy/free intervals before
6541
+ // proposing meeting slots. Returns only busy time ranges — never event
6542
+ // details (title, attendees, description) — so it stays low-risk read.
6543
+ input_schema: {
6544
+ type: "object",
6545
+ properties: {
6546
+ calendarId: { type: "string", description: "Calendar ID (email address). Defaults to primary calendar." },
6547
+ timeMin: { type: "string", description: 'Lower bound (inclusive) of the window to check, as ISO 8601 datetime, e.g. "2025-01-15T00:00:00Z"' },
6548
+ timeMax: { type: "string", description: 'Upper bound (exclusive) of the window to check, as ISO 8601 datetime, e.g. "2025-01-16T00:00:00Z"' }
6549
+ },
6550
+ required: ["timeMin", "timeMax"],
6551
+ additionalProperties: false
6552
+ },
6553
+ constraints: { rate_bucket: "calendar.read" },
6554
+ effects: ["Read:FreeBusy"],
6555
+ risk: "low",
6556
+ target_bindings: {
6557
+ resource_id: { source: "param", param: "calendarId", required: false, default: "primary" }
6558
+ },
6559
+ version: "1.0.0"
6560
+ },
6534
6561
  {
6535
6562
  action: "calendar.event.create",
6536
6563
  resource_type: "calendar:event",
@@ -7852,9 +7879,21 @@ var ACTION_REGISTRY = {
7852
7879
  },
7853
7880
  // ─── Scheduling Actions (internal) ───
7854
7881
  // scheduling.request is a meeting-time negotiation façade over inbox.send.
7855
- // Candidate slots are computed LLM-side from the user calendar; the server
7856
- // only validates them. Like the inbox actions it is internal (no external
7857
- // OAuth provider), so it carries the single nominal base scope `inbox`.
7882
+ // Candidate slots may be supplied two ways (server-side EXCLUSIVE exactly
7883
+ // one): (a) `candidates` the agent computes them LLM-side from the user
7884
+ // calendar and the server validates + freebusy-filters them, or (b)
7885
+ // `candidateWindow` — the agent hands the server a { start, end } window and
7886
+ // the server generates busy-free candidates from the sender's Google
7887
+ // Calendar. Like the inbox actions it is internal (no external OAuth
7888
+ // provider), so it carries the single nominal base scope `inbox`.
7889
+ //
7890
+ // NOTE: the candidates/candidateWindow exclusivity is expressed here as
7891
+ // `oneOf` for documentation + the deep JSON-Schema authorities, but the SDK's
7892
+ // hand-written `validateActionInput` is a SHALLOW shape gate that does NOT
7893
+ // interpret `oneOf` (neither key is in top-level `required`). The exclusivity
7894
+ // (exactly one of candidates/candidateWindow) is ENFORCED server-side in
7895
+ // SchedulingRequestService — see that service for the 400s on both-given /
7896
+ // both-missing.
7858
7897
  // Spec: docs/specs/2026-06-10-inbox-intent-routing-design.md §2.1
7859
7898
  {
7860
7899
  action: "scheduling.request",
@@ -7872,7 +7911,7 @@ var ACTION_REGISTRY = {
7872
7911
  type: "array",
7873
7912
  minItems: 1,
7874
7913
  maxItems: 10,
7875
- description: "Candidate slots computed by the agent from the user calendar (LLM-side computation; the server only validates)",
7914
+ description: "Explicit candidate slots computed by the agent from the user calendar. The server validates them AND (when Google Calendar is connected) filters out any that conflict with the sender's calendar. Mutually exclusive with candidateWindow \u2014 supply exactly one.",
7876
7915
  items: {
7877
7916
  type: "object",
7878
7917
  properties: {
@@ -7883,9 +7922,33 @@ var ACTION_REGISTRY = {
7883
7922
  additionalProperties: false
7884
7923
  }
7885
7924
  },
7925
+ candidateWindow: {
7926
+ type: "object",
7927
+ description: "A { start, end } search window (ISO 8601, span \u2264 62 days). The server generates busy-free candidate slots from the sender's Google Calendar within it. Mutually exclusive with candidates \u2014 supply exactly one. Requires a connected Google Calendar.",
7928
+ properties: {
7929
+ start: { type: "string", description: "ISO 8601 window start" },
7930
+ end: { type: "string", description: "ISO 8601 window end" }
7931
+ },
7932
+ required: ["start", "end"],
7933
+ additionalProperties: false
7934
+ },
7935
+ hold: {
7936
+ type: "boolean",
7937
+ description: "When true (or omitted, when the sender's delegation policy has holds enabled), tentatively hold the offered slots on the sender's calendar as [\u4EEE] events until the counterpart responds or the request expires. Pass false to skip holds for this request. Only takes effect when the sender has an enabled scheduling delegation policy."
7938
+ },
7886
7939
  message: { type: "string", description: "Optional human-readable message" }
7887
7940
  },
7888
- required: ["to", "topic", "durationMinutes", "candidates"],
7941
+ // candidates / candidateWindow are intentionally NOT in `required`: the
7942
+ // exclusive-choice is documented via `oneOf` and enforced server-side.
7943
+ // Each oneOf branch re-declares its property locally (empty `properties`
7944
+ // entry) so AJV strict mode (`strictRequired`) sees the required key as
7945
+ // defined within the branch scope — the value shape itself is validated
7946
+ // by the top-level `properties` above.
7947
+ required: ["to", "topic", "durationMinutes"],
7948
+ oneOf: [
7949
+ { required: ["candidates"], properties: { candidates: {} } },
7950
+ { required: ["candidateWindow"], properties: { candidateWindow: {} } }
7951
+ ],
7889
7952
  additionalProperties: false
7890
7953
  },
7891
7954
  constraints: { rate_bucket: "inbox.write" },
@@ -7966,8 +8029,8 @@ var ACTION_REGISTRY = {
7966
8029
  },
7967
8030
  {
7968
8031
  capability: "calendar.read.basic",
7969
- description: "Read and list Google Calendar events",
7970
- includes: ["calendar.event.list", "calendar.event.read"],
8032
+ description: "Read and list Google Calendar events, and check free/busy availability",
8033
+ includes: ["calendar.event.list", "calendar.event.read", "calendar.freebusy"],
7971
8034
  version: "1.0.0"
7972
8035
  },
7973
8036
  {