@chronary/toolkit 0.1.2
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/CHANGELOG.md +7 -0
- package/LICENSE +189 -0
- package/README.md +113 -0
- package/dist/ai-sdk.cjs +542 -0
- package/dist/ai-sdk.cjs.map +1 -0
- package/dist/ai-sdk.d.cts +47 -0
- package/dist/ai-sdk.d.ts +47 -0
- package/dist/ai-sdk.js +514 -0
- package/dist/ai-sdk.js.map +1 -0
- package/dist/base-BZ_wFEVc.d.cts +60 -0
- package/dist/base-BZ_wFEVc.d.ts +60 -0
- package/dist/index.cjs +586 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +350 -0
- package/dist/index.d.ts +350 -0
- package/dist/index.js +559 -0
- package/dist/index.js.map +1 -0
- package/dist/langchain.cjs +533 -0
- package/dist/langchain.cjs.map +1 -0
- package/dist/langchain.d.cts +33 -0
- package/dist/langchain.d.ts +33 -0
- package/dist/langchain.js +506 -0
- package/dist/langchain.js.map +1 -0
- package/dist/mastra.cjs +538 -0
- package/dist/mastra.cjs.map +1 -0
- package/dist/mastra.d.cts +31 -0
- package/dist/mastra.d.ts +31 -0
- package/dist/mastra.js +511 -0
- package/dist/mastra.js.map +1 -0
- package/dist/mcp.cjs +554 -0
- package/dist/mcp.cjs.map +1 -0
- package/dist/mcp.d.cts +57 -0
- package/dist/mcp.d.ts +57 -0
- package/dist/mcp.js +529 -0
- package/dist/mcp.js.map +1 -0
- package/dist/openai.cjs +551 -0
- package/dist/openai.cjs.map +1 -0
- package/dist/openai.d.cts +58 -0
- package/dist/openai.d.ts +58 -0
- package/dist/openai.js +526 -0
- package/dist/openai.js.map +1 -0
- package/package.json +145 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts","../src/schemas.ts","../src/safe.ts","../src/functions.ts","../src/definitions.ts","../src/base.ts"],"sourcesContent":["import type { z } from 'zod';\r\nimport type { Chronary } from '@chronary/sdk';\r\n\r\n/** All 23 tool names exposed by the toolkit */\r\nexport type ToolName =\r\n | 'list_calendars'\r\n | 'get_calendar'\r\n | 'create_calendar'\r\n | 'update_calendar'\r\n | 'delete_calendar'\r\n | 'list_events'\r\n | 'get_event'\r\n | 'create_event'\r\n | 'update_event'\r\n | 'delete_event'\r\n | 'check_availability'\r\n | 'list_webhooks'\r\n | 'get_webhook'\r\n | 'create_webhook'\r\n | 'update_webhook'\r\n | 'delete_webhook'\r\n | 'list_ical_subscriptions'\r\n | 'get_ical_subscription'\r\n | 'create_ical_subscription'\r\n | 'update_ical_subscription'\r\n | 'delete_ical_subscription'\r\n | 'sync_ical_subscription'\r\n | 'get_usage';\r\n\r\n/** All tool names as a runtime array */\r\nexport const TOOL_NAMES: ToolName[] = [\r\n 'list_calendars',\r\n 'get_calendar',\r\n 'create_calendar',\r\n 'update_calendar',\r\n 'delete_calendar',\r\n 'list_events',\r\n 'get_event',\r\n 'create_event',\r\n 'update_event',\r\n 'delete_event',\r\n 'check_availability',\r\n 'list_webhooks',\r\n 'get_webhook',\r\n 'create_webhook',\r\n 'update_webhook',\r\n 'delete_webhook',\r\n 'list_ical_subscriptions',\r\n 'get_ical_subscription',\r\n 'create_ical_subscription',\r\n 'update_ical_subscription',\r\n 'delete_ical_subscription',\r\n 'sync_ical_subscription',\r\n 'get_usage',\r\n];\r\n\r\n/** MCP-compatible tool annotations */\r\nexport interface ToolAnnotations {\r\n title: string;\r\n readOnlyHint: boolean;\r\n destructiveHint: boolean;\r\n idempotentHint: boolean;\r\n openWorldHint: boolean;\r\n}\r\n\r\n/** Normalized result every tool function returns */\r\nexport interface ToolResult {\r\n result: unknown;\r\n isError: boolean;\r\n}\r\n\r\n/** A single tool definition — framework-agnostic */\r\nexport interface ToolDefinition {\r\n name: ToolName;\r\n description: string;\r\n schema: z.ZodObject<z.ZodRawShape>;\r\n annotations: ToolAnnotations;\r\n execute: (client: Chronary, params: Record<string, unknown>) => Promise<ToolResult>;\r\n}\r\n\r\n/** Config for creating any toolkit adapter */\r\nexport type ChronaryToolkitConfig =\r\n | { client: Chronary; tools?: ToolName[] }\r\n | {\r\n apiKey?: string;\r\n baseUrl?: string;\r\n tools?: ToolName[];\r\n /**\r\n * Extra headers attached to every SDK request. Wrappers (e.g.\r\n * `chronary-mcp`) set `X-Chronary-Client` here so the API can\r\n * attribute the wrapper's traffic separately from the bare SDK's.\r\n */\r\n extraHeaders?: Record<string, string>;\r\n };\r\n","import { z } from 'zod';\r\n\r\n// ── Calendars ──────────────────────────────────────────────────\r\n\r\nexport const ListCalendarsSchema = z.object({\r\n agent_id: z.string().optional().describe('Filter calendars by agent ID'),\r\n include: z.enum(['all']).optional().describe('Set to \"all\" to include soft-deleted calendars'),\r\n limit: z.number().int().min(1).max(200).optional().describe('Max results per page (default 50)'),\r\n offset: z.number().int().min(0).optional().describe('Pagination offset (default 0)'),\r\n});\r\n\r\nexport const GetCalendarSchema = z.object({\r\n calendar_id: z.string().describe('The calendar ID to retrieve'),\r\n});\r\n\r\nexport const CreateCalendarSchema = z.object({\r\n name: z.string().describe('Calendar name'),\r\n timezone: z.string().describe('IANA timezone (e.g., \"America/New_York\")'),\r\n agent_id: z.string().optional().describe('Agent ID to associate the calendar with'),\r\n metadata: z.record(z.unknown()).optional().describe('Arbitrary key-value metadata'),\r\n});\r\n\r\nexport const UpdateCalendarSchema = z.object({\r\n calendar_id: z.string().describe('The calendar ID to update'),\r\n name: z.string().optional().describe('New calendar name'),\r\n timezone: z.string().optional().describe('New IANA timezone'),\r\n metadata: z.record(z.unknown()).optional().describe('Updated metadata'),\r\n});\r\n\r\nexport const DeleteCalendarSchema = z.object({\r\n calendar_id: z.string().describe('The calendar ID to delete'),\r\n});\r\n\r\n// ── Events ─────────────────────────────────────────────────────\r\n\r\nexport const ListEventsSchema = z.object({\r\n calendar_id: z.string().optional().describe('Calendar ID to list events from (provide this or agent_id)'),\r\n agent_id: z.string().optional().describe('Agent ID to list events for (provide this or calendar_id)'),\r\n start_after: z.string().optional().describe('Only events starting after this ISO 8601 datetime'),\r\n start_before: z.string().optional().describe('Only events starting before this ISO 8601 datetime'),\r\n status: z.enum(['confirmed', 'tentative', 'cancelled']).optional().describe('Filter by event status'),\r\n source: z.enum(['internal', 'external_ical']).optional().describe('Filter by event source'),\r\n limit: z.number().int().min(1).max(200).optional().describe('Max results per page (default 50)'),\r\n offset: z.number().int().min(0).optional().describe('Pagination offset (default 0)'),\r\n});\r\n\r\nexport const GetEventSchema = z.object({\r\n calendar_id: z.string().describe('Calendar ID the event belongs to'),\r\n event_id: z.string().describe('The event ID to retrieve'),\r\n});\r\n\r\nexport const CreateEventSchema = z.object({\r\n calendar_id: z.string().describe('Calendar ID to create the event on'),\r\n title: z.string().describe('Event title'),\r\n start_time: z.string().describe('Start time in ISO 8601 format'),\r\n end_time: z.string().describe('End time in ISO 8601 format'),\r\n description: z.string().optional().describe('Event description'),\r\n all_day: z.boolean().optional().describe('Whether this is an all-day event'),\r\n status: z.enum(['confirmed', 'tentative', 'cancelled']).optional().describe('Event status (default \"confirmed\")'),\r\n metadata: z.record(z.unknown()).optional().describe('Arbitrary key-value metadata'),\r\n});\r\n\r\nexport const UpdateEventSchema = z.object({\r\n calendar_id: z.string().describe('Calendar ID the event belongs to'),\r\n event_id: z.string().describe('The event ID to update'),\r\n title: z.string().optional().describe('New event title'),\r\n description: z.string().nullable().optional().describe('New description (null to clear)'),\r\n start_time: z.string().optional().describe('New start time in ISO 8601 format'),\r\n end_time: z.string().optional().describe('New end time in ISO 8601 format'),\r\n all_day: z.boolean().optional().describe('Whether this is an all-day event'),\r\n status: z.enum(['confirmed', 'tentative', 'cancelled']).optional().describe('New event status'),\r\n metadata: z.record(z.unknown()).optional().describe('Updated metadata'),\r\n});\r\n\r\nexport const DeleteEventSchema = z.object({\r\n calendar_id: z.string().describe('Calendar ID the event belongs to'),\r\n event_id: z.string().describe('The event ID to delete'),\r\n});\r\n\r\n// ── Availability ───────────────────────────────────────────────\r\n\r\nexport const CheckAvailabilitySchema = z.object({\r\n agents: z.array(z.string()).min(1).describe('Agent IDs to check availability for'),\r\n start: z.string().describe('Start of time range in ISO 8601 format'),\r\n end: z.string().describe('End of time range in ISO 8601 format'),\r\n slot_duration: z.enum(['15m', '30m', '45m', '1h', '2h']).optional().describe('Duration of availability slots (default \"30m\")'),\r\n calendars: z.array(z.string()).optional().describe('Specific calendar IDs to check (default: all agent calendars)'),\r\n include_busy: z.boolean().optional().describe('Include busy blocks in response'),\r\n});\r\n\r\n// ── Webhooks ───────────────────────────────────────────────────\r\n\r\nexport const ListWebhooksSchema = z.object({\r\n limit: z.number().int().min(1).max(100).optional().describe('Max results per page (default 20)'),\r\n offset: z.number().int().min(0).optional().describe('Pagination offset (default 0)'),\r\n});\r\n\r\nexport const GetWebhookSchema = z.object({\r\n webhook_id: z.string().describe('The webhook ID to retrieve'),\r\n});\r\n\r\nexport const CreateWebhookSchema = z.object({\r\n url: z.string().describe('HTTPS URL to receive webhook payloads'),\r\n events: z.array(z.string()).describe('Event types to subscribe to (e.g., [\"event.created\", \"event.updated\"])'),\r\n});\r\n\r\nexport const UpdateWebhookSchema = z.object({\r\n webhook_id: z.string().describe('The webhook ID to update'),\r\n url: z.string().optional().describe('New webhook URL'),\r\n events: z.array(z.string()).optional().describe('New event type subscriptions'),\r\n active: z.boolean().optional().describe('Enable or disable the webhook'),\r\n});\r\n\r\nexport const DeleteWebhookSchema = z.object({\r\n webhook_id: z.string().describe('The webhook ID to delete'),\r\n});\r\n\r\n// ── iCal Subscriptions ─────────────────────────────────────────\r\n\r\nexport const ListICalSubscriptionsSchema = z.object({\r\n agent_id: z.string().describe('Agent ID to list subscriptions for'),\r\n status: z.enum(['active', 'error', 'paused']).optional().describe('Filter by subscription status'),\r\n limit: z.number().int().min(1).max(200).optional().describe('Max results per page (default 50)'),\r\n offset: z.number().int().min(0).optional().describe('Pagination offset (default 0)'),\r\n});\r\n\r\nexport const GetICalSubscriptionSchema = z.object({\r\n subscription_id: z.string().describe('The iCal subscription ID to retrieve'),\r\n});\r\n\r\nexport const CreateICalSubscriptionSchema = z.object({\r\n agent_id: z.string().describe('Agent ID to create the subscription for'),\r\n calendar_id: z.string().describe('Calendar ID to import events into'),\r\n url: z.string().describe('HTTPS URL of the iCal feed to subscribe to'),\r\n label: z.string().optional().describe('Human-readable label for the subscription'),\r\n});\r\n\r\nexport const UpdateICalSubscriptionSchema = z.object({\r\n subscription_id: z.string().describe('The iCal subscription ID to update'),\r\n label: z.string().optional().describe('New label'),\r\n url: z.string().optional().describe('New iCal feed URL'),\r\n});\r\n\r\nexport const DeleteICalSubscriptionSchema = z.object({\r\n subscription_id: z.string().describe('The iCal subscription ID to delete'),\r\n});\r\n\r\nexport const SyncICalSubscriptionSchema = z.object({\r\n subscription_id: z.string().describe('The iCal subscription ID to sync immediately'),\r\n});\r\n\r\n// ── Usage ──────────────────────────────────────────────────────\r\n\r\nexport const GetUsageSchema = z.object({});\r\n","import { ChronaryError } from '@chronary/sdk';\r\nimport type { ToolResult } from './types';\r\n\r\n/**\r\n * Wraps an async function so SDK errors become structured ToolResult objects\r\n * instead of thrown exceptions. LLMs see error messages, never stack traces.\r\n */\r\nexport function safeFunc<TParams>(\r\n fn: (params: TParams) => Promise<unknown>,\r\n): (params: TParams) => Promise<ToolResult> {\r\n return async (params: TParams): Promise<ToolResult> => {\r\n try {\r\n const result = await fn(params);\r\n return { result: result ?? { success: true }, isError: false };\r\n } catch (err) {\r\n if (err instanceof ChronaryError) {\r\n return { result: `${err.name}: ${err.message}`, isError: true };\r\n }\r\n return {\r\n result: `Error: ${err instanceof Error ? err.message : String(err)}`,\r\n isError: true,\r\n };\r\n }\r\n };\r\n}\r\n","import type { Chronary } from '@chronary/sdk';\r\nimport { safeFunc } from './safe';\r\nimport type { ToolResult } from './types';\r\n\r\ninterface Ctx<P = Record<string, unknown>> {\r\n client: Chronary;\r\n params: P;\r\n}\r\n\r\n// Helper to consume a PageIterator's first page\r\nasync function fetchPage(\r\n iterator: AsyncIterable<unknown> & { getPage(offset?: number, limit?: number): Promise<{ data: unknown[]; total: number; hasMore: boolean }> },\r\n offset?: number,\r\n limit?: number,\r\n) {\r\n const page = await iterator.getPage(offset ?? 0, limit);\r\n return { data: page.data, total: page.total, has_more: page.hasMore };\r\n}\r\n\r\n// ── Calendars ──────────────────────────────────────────────────\r\n\r\nexport const listCalendars = safeFunc(async (ctx: Ctx<{\r\n agent_id?: string; include?: 'all'; limit?: number; offset?: number;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const iter = client.calendars.list({ agentId: params.agent_id, include: params.include, limit: params.limit });\r\n return fetchPage(iter, params.offset, params.limit);\r\n});\r\n\r\nexport const getCalendar = safeFunc(async (ctx: Ctx<{ calendar_id: string }>) => {\r\n return ctx.client.calendars.get(ctx.params.calendar_id);\r\n});\r\n\r\nexport const createCalendar = safeFunc(async (ctx: Ctx<{\r\n name: string; timezone: string; agent_id?: string; metadata?: Record<string, unknown>;\r\n}>) => {\r\n const { client, params } = ctx;\r\n return client.calendars.create({\r\n name: params.name,\r\n timezone: params.timezone,\r\n agentId: params.agent_id,\r\n metadata: params.metadata,\r\n });\r\n});\r\n\r\nexport const updateCalendar = safeFunc(async (ctx: Ctx<{\r\n calendar_id: string; name?: string; timezone?: string; metadata?: Record<string, unknown>;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { calendar_id, ...updates } = params;\r\n return client.calendars.update(calendar_id, updates);\r\n});\r\n\r\nexport const deleteCalendar = safeFunc(async (ctx: Ctx<{ calendar_id: string }>) => {\r\n await ctx.client.calendars.delete(ctx.params.calendar_id);\r\n return undefined; // safeFunc normalizes to { success: true }\r\n});\r\n\r\n// ── Events ─────────────────────────────────────────────────────\r\n\r\nexport const listEvents = safeFunc(async (ctx: Ctx<{\r\n calendar_id?: string; agent_id?: string; start_after?: string; start_before?: string;\r\n status?: 'confirmed' | 'tentative' | 'cancelled'; source?: 'internal' | 'external_ical';\r\n limit?: number; offset?: number;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const iter = client.events.list({\r\n calendarId: params.calendar_id,\r\n agentId: params.agent_id,\r\n start_after: params.start_after,\r\n start_before: params.start_before,\r\n status: params.status,\r\n source: params.source,\r\n limit: params.limit,\r\n });\r\n return fetchPage(iter, params.offset, params.limit);\r\n});\r\n\r\nexport const getEvent = safeFunc(async (ctx: Ctx<{ calendar_id: string; event_id: string }>) => {\r\n return ctx.client.events.get(ctx.params.calendar_id, ctx.params.event_id);\r\n});\r\n\r\nexport const createEvent = safeFunc(async (ctx: Ctx<{\r\n calendar_id: string; title: string; start_time: string; end_time: string;\r\n description?: string; all_day?: boolean;\r\n status?: 'confirmed' | 'tentative' | 'cancelled'; metadata?: Record<string, unknown>;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { calendar_id, ...eventParams } = params;\r\n return client.events.create(calendar_id, eventParams);\r\n});\r\n\r\nexport const updateEvent = safeFunc(async (ctx: Ctx<{\r\n calendar_id: string; event_id: string; title?: string; description?: string | null;\r\n start_time?: string; end_time?: string; all_day?: boolean;\r\n status?: 'confirmed' | 'tentative' | 'cancelled'; metadata?: Record<string, unknown>;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { calendar_id, event_id, ...updates } = params;\r\n return client.events.update(calendar_id, event_id, updates);\r\n});\r\n\r\nexport const deleteEvent = safeFunc(async (ctx: Ctx<{ calendar_id: string; event_id: string }>) => {\r\n await ctx.client.events.delete(ctx.params.calendar_id, ctx.params.event_id);\r\n return undefined;\r\n});\r\n\r\n// ── Availability ───────────────────────────────────────────────\r\n\r\nexport const checkAvailability = safeFunc(async (ctx: Ctx<{\r\n agents: string[]; start: string; end: string;\r\n slot_duration?: '15m' | '30m' | '45m' | '1h' | '2h';\r\n calendars?: string[]; include_busy?: boolean;\r\n}>) => {\r\n return ctx.client.availability.check(ctx.params);\r\n});\r\n\r\n// ── Webhooks ───────────────────────────────────────────────────\r\n\r\nexport const listWebhooks = safeFunc(async (ctx: Ctx<{ limit?: number; offset?: number }>) => {\r\n const { client, params } = ctx;\r\n const iter = client.webhooks.list({ limit: params.limit });\r\n return fetchPage(iter, params.offset, params.limit);\r\n});\r\n\r\nexport const getWebhook = safeFunc(async (ctx: Ctx<{ webhook_id: string }>) => {\r\n return ctx.client.webhooks.get(ctx.params.webhook_id);\r\n});\r\n\r\nexport const createWebhook = safeFunc(async (ctx: Ctx<{ url: string; events: string[] }>) => {\r\n return ctx.client.webhooks.create(ctx.params);\r\n});\r\n\r\nexport const updateWebhook = safeFunc(async (ctx: Ctx<{\r\n webhook_id: string; url?: string; events?: string[]; active?: boolean;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { webhook_id, ...updates } = params;\r\n return client.webhooks.update(webhook_id, updates);\r\n});\r\n\r\nexport const deleteWebhook = safeFunc(async (ctx: Ctx<{ webhook_id: string }>) => {\r\n await ctx.client.webhooks.delete(ctx.params.webhook_id);\r\n return undefined;\r\n});\r\n\r\n// ── iCal Subscriptions ─────────────────────────────────────────\r\n\r\nexport const listICalSubscriptions = safeFunc(async (ctx: Ctx<{\r\n agent_id: string; status?: 'active' | 'error' | 'paused'; limit?: number; offset?: number;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const iter = client.icalSubscriptions.list({\r\n agentId: params.agent_id,\r\n status: params.status,\r\n limit: params.limit,\r\n });\r\n return fetchPage(iter, params.offset, params.limit);\r\n});\r\n\r\nexport const getICalSubscription = safeFunc(async (ctx: Ctx<{ subscription_id: string }>) => {\r\n return ctx.client.icalSubscriptions.get(ctx.params.subscription_id);\r\n});\r\n\r\nexport const createICalSubscription = safeFunc(async (ctx: Ctx<{\r\n agent_id: string; calendar_id: string; url: string; label?: string;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { agent_id, ...subParams } = params;\r\n return client.icalSubscriptions.create(agent_id, subParams);\r\n});\r\n\r\nexport const updateICalSubscription = safeFunc(async (ctx: Ctx<{\r\n subscription_id: string; label?: string; url?: string;\r\n}>) => {\r\n const { client, params } = ctx;\r\n const { subscription_id, ...updates } = params;\r\n return client.icalSubscriptions.update(subscription_id, updates);\r\n});\r\n\r\nexport const deleteICalSubscription = safeFunc(async (ctx: Ctx<{ subscription_id: string }>) => {\r\n await ctx.client.icalSubscriptions.delete(ctx.params.subscription_id);\r\n return undefined;\r\n});\r\n\r\nexport const syncICalSubscription = safeFunc(async (ctx: Ctx<{ subscription_id: string }>) => {\r\n return ctx.client.icalSubscriptions.sync(ctx.params.subscription_id);\r\n});\r\n\r\n// ── Usage ──────────────────────────────────────────────────────\r\n\r\nexport const getUsage = safeFunc(async (ctx: Ctx) => {\r\n return ctx.client.usage.get();\r\n});\r\n\r\n// ── Factory ────────────────────────────────────────────────────\r\n\r\n/** Map of tool name → executor function. Used by definitions.ts to wire up execute(). */\r\nexport function createExecutor(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n fn: (ctx: { client: Chronary; params: any }) => Promise<ToolResult>,\r\n): (client: Chronary, params: Record<string, unknown>) => Promise<ToolResult> {\r\n return (client, params) => fn({ client, params });\r\n}\r\n","import type { ToolDefinition } from './types';\r\nimport * as schemas from './schemas';\r\nimport * as fns from './functions';\r\nimport { createExecutor } from './functions';\r\n\r\nexport const HOSTED_API_MCP_TOOL_NAMES = [\r\n 'create_agent',\r\n 'list_agents',\r\n 'create_calendar',\r\n 'create_event',\r\n 'list_events',\r\n 'get_availability',\r\n 'find_meeting_time',\r\n 'cancel_event',\r\n 'confirm_event',\r\n 'release_event',\r\n 'subscribe_ical',\r\n 'get_calendar_context',\r\n 'create_proposal',\r\n 'list_proposals',\r\n 'get_proposal',\r\n 'respond_to_proposal',\r\n 'resolve_proposal',\r\n 'cancel_proposal',\r\n 'set_availability_rules',\r\n 'get_availability_rules',\r\n 'clear_availability_rules',\r\n] as const;\r\n\r\nexport const TOOL_DEFINITIONS: ToolDefinition[] = [\r\n // ── Calendars ──────────────────────────────────────────────────\r\n {\r\n name: 'list_calendars',\r\n description: 'List calendars, optionally filtered by agent. Returns paginated results.',\r\n schema: schemas.ListCalendarsSchema,\r\n annotations: { title: 'List Calendars', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.listCalendars),\r\n },\r\n {\r\n name: 'get_calendar',\r\n description: 'Get a calendar by its ID, including its name, timezone, and iCal feed URL.',\r\n schema: schemas.GetCalendarSchema,\r\n annotations: { title: 'Get Calendar', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.getCalendar),\r\n },\r\n {\r\n name: 'create_calendar',\r\n description: 'Create a new calendar. Specify a name and IANA timezone. Optionally scope it to an agent.',\r\n schema: schemas.CreateCalendarSchema,\r\n annotations: { title: 'Create Calendar', readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },\r\n execute: createExecutor(fns.createCalendar),\r\n },\r\n {\r\n name: 'update_calendar',\r\n description: 'Update a calendar\\'s name, timezone, or metadata.',\r\n schema: schemas.UpdateCalendarSchema,\r\n annotations: { title: 'Update Calendar', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.updateCalendar),\r\n },\r\n {\r\n name: 'delete_calendar',\r\n description: 'Permanently delete a calendar and all its events.',\r\n schema: schemas.DeleteCalendarSchema,\r\n annotations: { title: 'Delete Calendar', readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.deleteCalendar),\r\n },\r\n\r\n // ── Events ─────────────────────────────────────────────────────\r\n {\r\n name: 'list_events',\r\n description: 'List events on a calendar or for an agent. Supports date range and status filters. Provide calendar_id or agent_id.',\r\n schema: schemas.ListEventsSchema,\r\n annotations: { title: 'List Events', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.listEvents),\r\n },\r\n {\r\n name: 'get_event',\r\n description: 'Get a specific event by its calendar ID and event ID.',\r\n schema: schemas.GetEventSchema,\r\n annotations: { title: 'Get Event', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.getEvent),\r\n },\r\n {\r\n name: 'create_event',\r\n description: 'Create a new event on a calendar. The event blocks the agent\\'s availability during the specified time window and appears in availability queries.',\r\n schema: schemas.CreateEventSchema,\r\n annotations: { title: 'Create Event', readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },\r\n execute: createExecutor(fns.createEvent),\r\n },\r\n {\r\n name: 'update_event',\r\n description: 'Update an existing event\\'s title, times, status, or other properties.',\r\n schema: schemas.UpdateEventSchema,\r\n annotations: { title: 'Update Event', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.updateEvent),\r\n },\r\n {\r\n name: 'delete_event',\r\n description: 'Delete an event from a calendar. This frees the agent\\'s availability during that time.',\r\n schema: schemas.DeleteEventSchema,\r\n annotations: { title: 'Delete Event', readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.deleteEvent),\r\n },\r\n\r\n // ── Availability ───────────────────────────────────────────────\r\n {\r\n name: 'check_availability',\r\n description: 'Check free/busy availability across one or more agents within a time range. Returns available time slots and optionally busy blocks.',\r\n schema: schemas.CheckAvailabilitySchema,\r\n annotations: { title: 'Check Availability', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.checkAvailability),\r\n },\r\n\r\n // ── Webhooks ───────────────────────────────────────────────────\r\n {\r\n name: 'list_webhooks',\r\n description: 'List all webhook subscriptions for the organization.',\r\n schema: schemas.ListWebhooksSchema,\r\n annotations: { title: 'List Webhooks', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.listWebhooks),\r\n },\r\n {\r\n name: 'get_webhook',\r\n description: 'Get a webhook subscription by its ID.',\r\n schema: schemas.GetWebhookSchema,\r\n annotations: { title: 'Get Webhook', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.getWebhook),\r\n },\r\n {\r\n name: 'create_webhook',\r\n description: 'Create a webhook subscription to receive event notifications at a URL. Payloads are signed with HMAC-SHA256.',\r\n schema: schemas.CreateWebhookSchema,\r\n annotations: { title: 'Create Webhook', readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },\r\n execute: createExecutor(fns.createWebhook),\r\n },\r\n {\r\n name: 'update_webhook',\r\n description: 'Update a webhook\\'s URL, subscribed events, or active status.',\r\n schema: schemas.UpdateWebhookSchema,\r\n annotations: { title: 'Update Webhook', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.updateWebhook),\r\n },\r\n {\r\n name: 'delete_webhook',\r\n description: 'Delete a webhook subscription. No further events will be delivered to this URL.',\r\n schema: schemas.DeleteWebhookSchema,\r\n annotations: { title: 'Delete Webhook', readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.deleteWebhook),\r\n },\r\n\r\n // ── iCal Subscriptions ─────────────────────────────────────────\r\n {\r\n name: 'list_ical_subscriptions',\r\n description: 'List external calendar imports (iCal subscriptions) for an agent.',\r\n schema: schemas.ListICalSubscriptionsSchema,\r\n annotations: { title: 'List iCal Subscriptions', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.listICalSubscriptions),\r\n },\r\n {\r\n name: 'get_ical_subscription',\r\n description: 'Get an iCal subscription by its ID, including sync status and last error.',\r\n schema: schemas.GetICalSubscriptionSchema,\r\n annotations: { title: 'Get iCal Subscription', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.getICalSubscription),\r\n },\r\n {\r\n name: 'create_ical_subscription',\r\n description: 'Import an external calendar by subscribing to an iCal feed URL. Events are synced every 30 minutes.',\r\n schema: schemas.CreateICalSubscriptionSchema,\r\n annotations: { title: 'Create iCal Subscription', readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },\r\n execute: createExecutor(fns.createICalSubscription),\r\n },\r\n {\r\n name: 'update_ical_subscription',\r\n description: 'Update an iCal subscription\\'s label or feed URL.',\r\n schema: schemas.UpdateICalSubscriptionSchema,\r\n annotations: { title: 'Update iCal Subscription', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.updateICalSubscription),\r\n },\r\n {\r\n name: 'delete_ical_subscription',\r\n description: 'Remove an external calendar import. Previously synced events remain on the calendar.',\r\n schema: schemas.DeleteICalSubscriptionSchema,\r\n annotations: { title: 'Delete iCal Subscription', readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.deleteICalSubscription),\r\n },\r\n {\r\n name: 'sync_ical_subscription',\r\n description: 'Trigger an immediate sync of an iCal subscription instead of waiting for the next 30-minute poll.',\r\n schema: schemas.SyncICalSubscriptionSchema,\r\n annotations: { title: 'Sync iCal Subscription', readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },\r\n execute: createExecutor(fns.syncICalSubscription),\r\n },\r\n\r\n // ── Usage ──────────────────────────────────────────────────────\r\n {\r\n name: 'get_usage',\r\n description: 'Get quota and usage statistics for the current billing period.',\r\n schema: schemas.GetUsageSchema,\r\n annotations: { title: 'Get Usage', readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },\r\n execute: createExecutor(fns.getUsage),\r\n },\r\n];\r\n\r\nconst toolkitToolNames = new Set<string>(TOOL_DEFINITIONS.map((tool) => tool.name));\r\nconst hostedToolNames = new Set<string>(HOSTED_API_MCP_TOOL_NAMES);\r\n\r\nexport const TOOLKIT_MCP_PARITY = {\r\n hostedToolNames: HOSTED_API_MCP_TOOL_NAMES,\r\n missingHostedTools: HOSTED_API_MCP_TOOL_NAMES.filter((name) => !toolkitToolNames.has(name)),\r\n toolkitOnlyTools: TOOL_DEFINITIONS.map((tool) => tool.name).filter((name) => !hostedToolNames.has(name)),\r\n};\r\n","import { Chronary } from '@chronary/sdk';\r\nimport type { ToolDefinition, ToolName, ChronaryToolkitConfig } from './types';\r\nimport { TOOL_DEFINITIONS } from './definitions';\r\n\r\nfunction resolveClient(config: ChronaryToolkitConfig): Chronary {\r\n if ('client' in config && config.client) return config.client;\r\n const { tools: _tools, ...sdkConfig } = config as {\r\n apiKey?: string;\r\n baseUrl?: string;\r\n tools?: ToolName[];\r\n extraHeaders?: Record<string, string>;\r\n };\r\n return new Chronary(sdkConfig);\r\n}\r\n\r\nexport abstract class BaseToolkit<T> {\r\n protected readonly client: Chronary;\r\n protected readonly definitions: ToolDefinition[];\r\n\r\n constructor(config: ChronaryToolkitConfig) {\r\n this.client = resolveClient(config);\r\n this.definitions = config.tools\r\n ? TOOL_DEFINITIONS.filter((d) => (config.tools as ToolName[]).includes(d.name))\r\n : [...TOOL_DEFINITIONS];\r\n }\r\n\r\n /** Convert a framework-agnostic ToolDefinition into the adapter's native format */\r\n protected abstract buildTool(def: ToolDefinition): T;\r\n\r\n abstract getTools(): T[] | Record<string, T>;\r\n}\r\n\r\nexport abstract class ListToolkit<T> extends BaseToolkit<T> {\r\n getTools(): T[] {\r\n return this.definitions.map((def) => this.buildTool(def));\r\n }\r\n}\r\n\r\nexport abstract class MapToolkit<T> extends BaseToolkit<T> {\r\n getTools(): Record<string, T> {\r\n const map: Record<string, T> = {};\r\n for (const def of this.definitions) {\r\n map[def.name] = this.buildTool(def);\r\n }\r\n return map;\r\n }\r\n}\r\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/adapters/langchain.ts
|
|
21
|
+
var langchain_exports = {};
|
|
22
|
+
__export(langchain_exports, {
|
|
23
|
+
ChronaryToolkit: () => ChronaryToolkit
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(langchain_exports);
|
|
26
|
+
|
|
27
|
+
// src/base.ts
|
|
28
|
+
var import_sdk2 = require("@chronary/sdk");
|
|
29
|
+
|
|
30
|
+
// src/schemas.ts
|
|
31
|
+
var import_zod = require("zod");
|
|
32
|
+
var ListCalendarsSchema = import_zod.z.object({
|
|
33
|
+
agent_id: import_zod.z.string().optional().describe("Filter calendars by agent ID"),
|
|
34
|
+
include: import_zod.z.enum(["all"]).optional().describe('Set to "all" to include soft-deleted calendars'),
|
|
35
|
+
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Max results per page (default 50)"),
|
|
36
|
+
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
37
|
+
});
|
|
38
|
+
var GetCalendarSchema = import_zod.z.object({
|
|
39
|
+
calendar_id: import_zod.z.string().describe("The calendar ID to retrieve")
|
|
40
|
+
});
|
|
41
|
+
var CreateCalendarSchema = import_zod.z.object({
|
|
42
|
+
name: import_zod.z.string().describe("Calendar name"),
|
|
43
|
+
timezone: import_zod.z.string().describe('IANA timezone (e.g., "America/New_York")'),
|
|
44
|
+
agent_id: import_zod.z.string().optional().describe("Agent ID to associate the calendar with"),
|
|
45
|
+
metadata: import_zod.z.record(import_zod.z.unknown()).optional().describe("Arbitrary key-value metadata")
|
|
46
|
+
});
|
|
47
|
+
var UpdateCalendarSchema = import_zod.z.object({
|
|
48
|
+
calendar_id: import_zod.z.string().describe("The calendar ID to update"),
|
|
49
|
+
name: import_zod.z.string().optional().describe("New calendar name"),
|
|
50
|
+
timezone: import_zod.z.string().optional().describe("New IANA timezone"),
|
|
51
|
+
metadata: import_zod.z.record(import_zod.z.unknown()).optional().describe("Updated metadata")
|
|
52
|
+
});
|
|
53
|
+
var DeleteCalendarSchema = import_zod.z.object({
|
|
54
|
+
calendar_id: import_zod.z.string().describe("The calendar ID to delete")
|
|
55
|
+
});
|
|
56
|
+
var ListEventsSchema = import_zod.z.object({
|
|
57
|
+
calendar_id: import_zod.z.string().optional().describe("Calendar ID to list events from (provide this or agent_id)"),
|
|
58
|
+
agent_id: import_zod.z.string().optional().describe("Agent ID to list events for (provide this or calendar_id)"),
|
|
59
|
+
start_after: import_zod.z.string().optional().describe("Only events starting after this ISO 8601 datetime"),
|
|
60
|
+
start_before: import_zod.z.string().optional().describe("Only events starting before this ISO 8601 datetime"),
|
|
61
|
+
status: import_zod.z.enum(["confirmed", "tentative", "cancelled"]).optional().describe("Filter by event status"),
|
|
62
|
+
source: import_zod.z.enum(["internal", "external_ical"]).optional().describe("Filter by event source"),
|
|
63
|
+
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Max results per page (default 50)"),
|
|
64
|
+
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
65
|
+
});
|
|
66
|
+
var GetEventSchema = import_zod.z.object({
|
|
67
|
+
calendar_id: import_zod.z.string().describe("Calendar ID the event belongs to"),
|
|
68
|
+
event_id: import_zod.z.string().describe("The event ID to retrieve")
|
|
69
|
+
});
|
|
70
|
+
var CreateEventSchema = import_zod.z.object({
|
|
71
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to create the event on"),
|
|
72
|
+
title: import_zod.z.string().describe("Event title"),
|
|
73
|
+
start_time: import_zod.z.string().describe("Start time in ISO 8601 format"),
|
|
74
|
+
end_time: import_zod.z.string().describe("End time in ISO 8601 format"),
|
|
75
|
+
description: import_zod.z.string().optional().describe("Event description"),
|
|
76
|
+
all_day: import_zod.z.boolean().optional().describe("Whether this is an all-day event"),
|
|
77
|
+
status: import_zod.z.enum(["confirmed", "tentative", "cancelled"]).optional().describe('Event status (default "confirmed")'),
|
|
78
|
+
metadata: import_zod.z.record(import_zod.z.unknown()).optional().describe("Arbitrary key-value metadata")
|
|
79
|
+
});
|
|
80
|
+
var UpdateEventSchema = import_zod.z.object({
|
|
81
|
+
calendar_id: import_zod.z.string().describe("Calendar ID the event belongs to"),
|
|
82
|
+
event_id: import_zod.z.string().describe("The event ID to update"),
|
|
83
|
+
title: import_zod.z.string().optional().describe("New event title"),
|
|
84
|
+
description: import_zod.z.string().nullable().optional().describe("New description (null to clear)"),
|
|
85
|
+
start_time: import_zod.z.string().optional().describe("New start time in ISO 8601 format"),
|
|
86
|
+
end_time: import_zod.z.string().optional().describe("New end time in ISO 8601 format"),
|
|
87
|
+
all_day: import_zod.z.boolean().optional().describe("Whether this is an all-day event"),
|
|
88
|
+
status: import_zod.z.enum(["confirmed", "tentative", "cancelled"]).optional().describe("New event status"),
|
|
89
|
+
metadata: import_zod.z.record(import_zod.z.unknown()).optional().describe("Updated metadata")
|
|
90
|
+
});
|
|
91
|
+
var DeleteEventSchema = import_zod.z.object({
|
|
92
|
+
calendar_id: import_zod.z.string().describe("Calendar ID the event belongs to"),
|
|
93
|
+
event_id: import_zod.z.string().describe("The event ID to delete")
|
|
94
|
+
});
|
|
95
|
+
var CheckAvailabilitySchema = import_zod.z.object({
|
|
96
|
+
agents: import_zod.z.array(import_zod.z.string()).min(1).describe("Agent IDs to check availability for"),
|
|
97
|
+
start: import_zod.z.string().describe("Start of time range in ISO 8601 format"),
|
|
98
|
+
end: import_zod.z.string().describe("End of time range in ISO 8601 format"),
|
|
99
|
+
slot_duration: import_zod.z.enum(["15m", "30m", "45m", "1h", "2h"]).optional().describe('Duration of availability slots (default "30m")'),
|
|
100
|
+
calendars: import_zod.z.array(import_zod.z.string()).optional().describe("Specific calendar IDs to check (default: all agent calendars)"),
|
|
101
|
+
include_busy: import_zod.z.boolean().optional().describe("Include busy blocks in response")
|
|
102
|
+
});
|
|
103
|
+
var ListWebhooksSchema = import_zod.z.object({
|
|
104
|
+
limit: import_zod.z.number().int().min(1).max(100).optional().describe("Max results per page (default 20)"),
|
|
105
|
+
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
106
|
+
});
|
|
107
|
+
var GetWebhookSchema = import_zod.z.object({
|
|
108
|
+
webhook_id: import_zod.z.string().describe("The webhook ID to retrieve")
|
|
109
|
+
});
|
|
110
|
+
var CreateWebhookSchema = import_zod.z.object({
|
|
111
|
+
url: import_zod.z.string().describe("HTTPS URL to receive webhook payloads"),
|
|
112
|
+
events: import_zod.z.array(import_zod.z.string()).describe('Event types to subscribe to (e.g., ["event.created", "event.updated"])')
|
|
113
|
+
});
|
|
114
|
+
var UpdateWebhookSchema = import_zod.z.object({
|
|
115
|
+
webhook_id: import_zod.z.string().describe("The webhook ID to update"),
|
|
116
|
+
url: import_zod.z.string().optional().describe("New webhook URL"),
|
|
117
|
+
events: import_zod.z.array(import_zod.z.string()).optional().describe("New event type subscriptions"),
|
|
118
|
+
active: import_zod.z.boolean().optional().describe("Enable or disable the webhook")
|
|
119
|
+
});
|
|
120
|
+
var DeleteWebhookSchema = import_zod.z.object({
|
|
121
|
+
webhook_id: import_zod.z.string().describe("The webhook ID to delete")
|
|
122
|
+
});
|
|
123
|
+
var ListICalSubscriptionsSchema = import_zod.z.object({
|
|
124
|
+
agent_id: import_zod.z.string().describe("Agent ID to list subscriptions for"),
|
|
125
|
+
status: import_zod.z.enum(["active", "error", "paused"]).optional().describe("Filter by subscription status"),
|
|
126
|
+
limit: import_zod.z.number().int().min(1).max(200).optional().describe("Max results per page (default 50)"),
|
|
127
|
+
offset: import_zod.z.number().int().min(0).optional().describe("Pagination offset (default 0)")
|
|
128
|
+
});
|
|
129
|
+
var GetICalSubscriptionSchema = import_zod.z.object({
|
|
130
|
+
subscription_id: import_zod.z.string().describe("The iCal subscription ID to retrieve")
|
|
131
|
+
});
|
|
132
|
+
var CreateICalSubscriptionSchema = import_zod.z.object({
|
|
133
|
+
agent_id: import_zod.z.string().describe("Agent ID to create the subscription for"),
|
|
134
|
+
calendar_id: import_zod.z.string().describe("Calendar ID to import events into"),
|
|
135
|
+
url: import_zod.z.string().describe("HTTPS URL of the iCal feed to subscribe to"),
|
|
136
|
+
label: import_zod.z.string().optional().describe("Human-readable label for the subscription")
|
|
137
|
+
});
|
|
138
|
+
var UpdateICalSubscriptionSchema = import_zod.z.object({
|
|
139
|
+
subscription_id: import_zod.z.string().describe("The iCal subscription ID to update"),
|
|
140
|
+
label: import_zod.z.string().optional().describe("New label"),
|
|
141
|
+
url: import_zod.z.string().optional().describe("New iCal feed URL")
|
|
142
|
+
});
|
|
143
|
+
var DeleteICalSubscriptionSchema = import_zod.z.object({
|
|
144
|
+
subscription_id: import_zod.z.string().describe("The iCal subscription ID to delete")
|
|
145
|
+
});
|
|
146
|
+
var SyncICalSubscriptionSchema = import_zod.z.object({
|
|
147
|
+
subscription_id: import_zod.z.string().describe("The iCal subscription ID to sync immediately")
|
|
148
|
+
});
|
|
149
|
+
var GetUsageSchema = import_zod.z.object({});
|
|
150
|
+
|
|
151
|
+
// src/safe.ts
|
|
152
|
+
var import_sdk = require("@chronary/sdk");
|
|
153
|
+
function safeFunc(fn) {
|
|
154
|
+
return async (params) => {
|
|
155
|
+
try {
|
|
156
|
+
const result = await fn(params);
|
|
157
|
+
return { result: result ?? { success: true }, isError: false };
|
|
158
|
+
} catch (err) {
|
|
159
|
+
if (err instanceof import_sdk.ChronaryError) {
|
|
160
|
+
return { result: `${err.name}: ${err.message}`, isError: true };
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
result: `Error: ${err instanceof Error ? err.message : String(err)}`,
|
|
164
|
+
isError: true
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// src/functions.ts
|
|
171
|
+
async function fetchPage(iterator, offset, limit) {
|
|
172
|
+
const page = await iterator.getPage(offset ?? 0, limit);
|
|
173
|
+
return { data: page.data, total: page.total, has_more: page.hasMore };
|
|
174
|
+
}
|
|
175
|
+
var listCalendars = safeFunc(async (ctx) => {
|
|
176
|
+
const { client, params } = ctx;
|
|
177
|
+
const iter = client.calendars.list({ agentId: params.agent_id, include: params.include, limit: params.limit });
|
|
178
|
+
return fetchPage(iter, params.offset, params.limit);
|
|
179
|
+
});
|
|
180
|
+
var getCalendar = safeFunc(async (ctx) => {
|
|
181
|
+
return ctx.client.calendars.get(ctx.params.calendar_id);
|
|
182
|
+
});
|
|
183
|
+
var createCalendar = safeFunc(async (ctx) => {
|
|
184
|
+
const { client, params } = ctx;
|
|
185
|
+
return client.calendars.create({
|
|
186
|
+
name: params.name,
|
|
187
|
+
timezone: params.timezone,
|
|
188
|
+
agentId: params.agent_id,
|
|
189
|
+
metadata: params.metadata
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
var updateCalendar = safeFunc(async (ctx) => {
|
|
193
|
+
const { client, params } = ctx;
|
|
194
|
+
const { calendar_id, ...updates } = params;
|
|
195
|
+
return client.calendars.update(calendar_id, updates);
|
|
196
|
+
});
|
|
197
|
+
var deleteCalendar = safeFunc(async (ctx) => {
|
|
198
|
+
await ctx.client.calendars.delete(ctx.params.calendar_id);
|
|
199
|
+
return void 0;
|
|
200
|
+
});
|
|
201
|
+
var listEvents = safeFunc(async (ctx) => {
|
|
202
|
+
const { client, params } = ctx;
|
|
203
|
+
const iter = client.events.list({
|
|
204
|
+
calendarId: params.calendar_id,
|
|
205
|
+
agentId: params.agent_id,
|
|
206
|
+
start_after: params.start_after,
|
|
207
|
+
start_before: params.start_before,
|
|
208
|
+
status: params.status,
|
|
209
|
+
source: params.source,
|
|
210
|
+
limit: params.limit
|
|
211
|
+
});
|
|
212
|
+
return fetchPage(iter, params.offset, params.limit);
|
|
213
|
+
});
|
|
214
|
+
var getEvent = safeFunc(async (ctx) => {
|
|
215
|
+
return ctx.client.events.get(ctx.params.calendar_id, ctx.params.event_id);
|
|
216
|
+
});
|
|
217
|
+
var createEvent = safeFunc(async (ctx) => {
|
|
218
|
+
const { client, params } = ctx;
|
|
219
|
+
const { calendar_id, ...eventParams } = params;
|
|
220
|
+
return client.events.create(calendar_id, eventParams);
|
|
221
|
+
});
|
|
222
|
+
var updateEvent = safeFunc(async (ctx) => {
|
|
223
|
+
const { client, params } = ctx;
|
|
224
|
+
const { calendar_id, event_id, ...updates } = params;
|
|
225
|
+
return client.events.update(calendar_id, event_id, updates);
|
|
226
|
+
});
|
|
227
|
+
var deleteEvent = safeFunc(async (ctx) => {
|
|
228
|
+
await ctx.client.events.delete(ctx.params.calendar_id, ctx.params.event_id);
|
|
229
|
+
return void 0;
|
|
230
|
+
});
|
|
231
|
+
var checkAvailability = safeFunc(async (ctx) => {
|
|
232
|
+
return ctx.client.availability.check(ctx.params);
|
|
233
|
+
});
|
|
234
|
+
var listWebhooks = safeFunc(async (ctx) => {
|
|
235
|
+
const { client, params } = ctx;
|
|
236
|
+
const iter = client.webhooks.list({ limit: params.limit });
|
|
237
|
+
return fetchPage(iter, params.offset, params.limit);
|
|
238
|
+
});
|
|
239
|
+
var getWebhook = safeFunc(async (ctx) => {
|
|
240
|
+
return ctx.client.webhooks.get(ctx.params.webhook_id);
|
|
241
|
+
});
|
|
242
|
+
var createWebhook = safeFunc(async (ctx) => {
|
|
243
|
+
return ctx.client.webhooks.create(ctx.params);
|
|
244
|
+
});
|
|
245
|
+
var updateWebhook = safeFunc(async (ctx) => {
|
|
246
|
+
const { client, params } = ctx;
|
|
247
|
+
const { webhook_id, ...updates } = params;
|
|
248
|
+
return client.webhooks.update(webhook_id, updates);
|
|
249
|
+
});
|
|
250
|
+
var deleteWebhook = safeFunc(async (ctx) => {
|
|
251
|
+
await ctx.client.webhooks.delete(ctx.params.webhook_id);
|
|
252
|
+
return void 0;
|
|
253
|
+
});
|
|
254
|
+
var listICalSubscriptions = safeFunc(async (ctx) => {
|
|
255
|
+
const { client, params } = ctx;
|
|
256
|
+
const iter = client.icalSubscriptions.list({
|
|
257
|
+
agentId: params.agent_id,
|
|
258
|
+
status: params.status,
|
|
259
|
+
limit: params.limit
|
|
260
|
+
});
|
|
261
|
+
return fetchPage(iter, params.offset, params.limit);
|
|
262
|
+
});
|
|
263
|
+
var getICalSubscription = safeFunc(async (ctx) => {
|
|
264
|
+
return ctx.client.icalSubscriptions.get(ctx.params.subscription_id);
|
|
265
|
+
});
|
|
266
|
+
var createICalSubscription = safeFunc(async (ctx) => {
|
|
267
|
+
const { client, params } = ctx;
|
|
268
|
+
const { agent_id, ...subParams } = params;
|
|
269
|
+
return client.icalSubscriptions.create(agent_id, subParams);
|
|
270
|
+
});
|
|
271
|
+
var updateICalSubscription = safeFunc(async (ctx) => {
|
|
272
|
+
const { client, params } = ctx;
|
|
273
|
+
const { subscription_id, ...updates } = params;
|
|
274
|
+
return client.icalSubscriptions.update(subscription_id, updates);
|
|
275
|
+
});
|
|
276
|
+
var deleteICalSubscription = safeFunc(async (ctx) => {
|
|
277
|
+
await ctx.client.icalSubscriptions.delete(ctx.params.subscription_id);
|
|
278
|
+
return void 0;
|
|
279
|
+
});
|
|
280
|
+
var syncICalSubscription = safeFunc(async (ctx) => {
|
|
281
|
+
return ctx.client.icalSubscriptions.sync(ctx.params.subscription_id);
|
|
282
|
+
});
|
|
283
|
+
var getUsage = safeFunc(async (ctx) => {
|
|
284
|
+
return ctx.client.usage.get();
|
|
285
|
+
});
|
|
286
|
+
function createExecutor(fn) {
|
|
287
|
+
return (client, params) => fn({ client, params });
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// src/definitions.ts
|
|
291
|
+
var HOSTED_API_MCP_TOOL_NAMES = [
|
|
292
|
+
"create_agent",
|
|
293
|
+
"list_agents",
|
|
294
|
+
"create_calendar",
|
|
295
|
+
"create_event",
|
|
296
|
+
"list_events",
|
|
297
|
+
"get_availability",
|
|
298
|
+
"find_meeting_time",
|
|
299
|
+
"cancel_event",
|
|
300
|
+
"confirm_event",
|
|
301
|
+
"release_event",
|
|
302
|
+
"subscribe_ical",
|
|
303
|
+
"get_calendar_context",
|
|
304
|
+
"create_proposal",
|
|
305
|
+
"list_proposals",
|
|
306
|
+
"get_proposal",
|
|
307
|
+
"respond_to_proposal",
|
|
308
|
+
"resolve_proposal",
|
|
309
|
+
"cancel_proposal",
|
|
310
|
+
"set_availability_rules",
|
|
311
|
+
"get_availability_rules",
|
|
312
|
+
"clear_availability_rules"
|
|
313
|
+
];
|
|
314
|
+
var TOOL_DEFINITIONS = [
|
|
315
|
+
// ── Calendars ──────────────────────────────────────────────────
|
|
316
|
+
{
|
|
317
|
+
name: "list_calendars",
|
|
318
|
+
description: "List calendars, optionally filtered by agent. Returns paginated results.",
|
|
319
|
+
schema: ListCalendarsSchema,
|
|
320
|
+
annotations: { title: "List Calendars", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
321
|
+
execute: createExecutor(listCalendars)
|
|
322
|
+
},
|
|
323
|
+
{
|
|
324
|
+
name: "get_calendar",
|
|
325
|
+
description: "Get a calendar by its ID, including its name, timezone, and iCal feed URL.",
|
|
326
|
+
schema: GetCalendarSchema,
|
|
327
|
+
annotations: { title: "Get Calendar", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
328
|
+
execute: createExecutor(getCalendar)
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
name: "create_calendar",
|
|
332
|
+
description: "Create a new calendar. Specify a name and IANA timezone. Optionally scope it to an agent.",
|
|
333
|
+
schema: CreateCalendarSchema,
|
|
334
|
+
annotations: { title: "Create Calendar", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
335
|
+
execute: createExecutor(createCalendar)
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: "update_calendar",
|
|
339
|
+
description: "Update a calendar's name, timezone, or metadata.",
|
|
340
|
+
schema: UpdateCalendarSchema,
|
|
341
|
+
annotations: { title: "Update Calendar", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
342
|
+
execute: createExecutor(updateCalendar)
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
name: "delete_calendar",
|
|
346
|
+
description: "Permanently delete a calendar and all its events.",
|
|
347
|
+
schema: DeleteCalendarSchema,
|
|
348
|
+
annotations: { title: "Delete Calendar", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
349
|
+
execute: createExecutor(deleteCalendar)
|
|
350
|
+
},
|
|
351
|
+
// ── Events ─────────────────────────────────────────────────────
|
|
352
|
+
{
|
|
353
|
+
name: "list_events",
|
|
354
|
+
description: "List events on a calendar or for an agent. Supports date range and status filters. Provide calendar_id or agent_id.",
|
|
355
|
+
schema: ListEventsSchema,
|
|
356
|
+
annotations: { title: "List Events", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
357
|
+
execute: createExecutor(listEvents)
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "get_event",
|
|
361
|
+
description: "Get a specific event by its calendar ID and event ID.",
|
|
362
|
+
schema: GetEventSchema,
|
|
363
|
+
annotations: { title: "Get Event", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
364
|
+
execute: createExecutor(getEvent)
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
name: "create_event",
|
|
368
|
+
description: "Create a new event on a calendar. The event blocks the agent's availability during the specified time window and appears in availability queries.",
|
|
369
|
+
schema: CreateEventSchema,
|
|
370
|
+
annotations: { title: "Create Event", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
371
|
+
execute: createExecutor(createEvent)
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
name: "update_event",
|
|
375
|
+
description: "Update an existing event's title, times, status, or other properties.",
|
|
376
|
+
schema: UpdateEventSchema,
|
|
377
|
+
annotations: { title: "Update Event", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
378
|
+
execute: createExecutor(updateEvent)
|
|
379
|
+
},
|
|
380
|
+
{
|
|
381
|
+
name: "delete_event",
|
|
382
|
+
description: "Delete an event from a calendar. This frees the agent's availability during that time.",
|
|
383
|
+
schema: DeleteEventSchema,
|
|
384
|
+
annotations: { title: "Delete Event", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
385
|
+
execute: createExecutor(deleteEvent)
|
|
386
|
+
},
|
|
387
|
+
// ── Availability ───────────────────────────────────────────────
|
|
388
|
+
{
|
|
389
|
+
name: "check_availability",
|
|
390
|
+
description: "Check free/busy availability across one or more agents within a time range. Returns available time slots and optionally busy blocks.",
|
|
391
|
+
schema: CheckAvailabilitySchema,
|
|
392
|
+
annotations: { title: "Check Availability", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
393
|
+
execute: createExecutor(checkAvailability)
|
|
394
|
+
},
|
|
395
|
+
// ── Webhooks ───────────────────────────────────────────────────
|
|
396
|
+
{
|
|
397
|
+
name: "list_webhooks",
|
|
398
|
+
description: "List all webhook subscriptions for the organization.",
|
|
399
|
+
schema: ListWebhooksSchema,
|
|
400
|
+
annotations: { title: "List Webhooks", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
401
|
+
execute: createExecutor(listWebhooks)
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
name: "get_webhook",
|
|
405
|
+
description: "Get a webhook subscription by its ID.",
|
|
406
|
+
schema: GetWebhookSchema,
|
|
407
|
+
annotations: { title: "Get Webhook", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
408
|
+
execute: createExecutor(getWebhook)
|
|
409
|
+
},
|
|
410
|
+
{
|
|
411
|
+
name: "create_webhook",
|
|
412
|
+
description: "Create a webhook subscription to receive event notifications at a URL. Payloads are signed with HMAC-SHA256.",
|
|
413
|
+
schema: CreateWebhookSchema,
|
|
414
|
+
annotations: { title: "Create Webhook", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
|
|
415
|
+
execute: createExecutor(createWebhook)
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
name: "update_webhook",
|
|
419
|
+
description: "Update a webhook's URL, subscribed events, or active status.",
|
|
420
|
+
schema: UpdateWebhookSchema,
|
|
421
|
+
annotations: { title: "Update Webhook", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
422
|
+
execute: createExecutor(updateWebhook)
|
|
423
|
+
},
|
|
424
|
+
{
|
|
425
|
+
name: "delete_webhook",
|
|
426
|
+
description: "Delete a webhook subscription. No further events will be delivered to this URL.",
|
|
427
|
+
schema: DeleteWebhookSchema,
|
|
428
|
+
annotations: { title: "Delete Webhook", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
429
|
+
execute: createExecutor(deleteWebhook)
|
|
430
|
+
},
|
|
431
|
+
// ── iCal Subscriptions ─────────────────────────────────────────
|
|
432
|
+
{
|
|
433
|
+
name: "list_ical_subscriptions",
|
|
434
|
+
description: "List external calendar imports (iCal subscriptions) for an agent.",
|
|
435
|
+
schema: ListICalSubscriptionsSchema,
|
|
436
|
+
annotations: { title: "List iCal Subscriptions", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
437
|
+
execute: createExecutor(listICalSubscriptions)
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
name: "get_ical_subscription",
|
|
441
|
+
description: "Get an iCal subscription by its ID, including sync status and last error.",
|
|
442
|
+
schema: GetICalSubscriptionSchema,
|
|
443
|
+
annotations: { title: "Get iCal Subscription", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
444
|
+
execute: createExecutor(getICalSubscription)
|
|
445
|
+
},
|
|
446
|
+
{
|
|
447
|
+
name: "create_ical_subscription",
|
|
448
|
+
description: "Import an external calendar by subscribing to an iCal feed URL. Events are synced every 30 minutes.",
|
|
449
|
+
schema: CreateICalSubscriptionSchema,
|
|
450
|
+
annotations: { title: "Create iCal Subscription", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
|
|
451
|
+
execute: createExecutor(createICalSubscription)
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
name: "update_ical_subscription",
|
|
455
|
+
description: "Update an iCal subscription's label or feed URL.",
|
|
456
|
+
schema: UpdateICalSubscriptionSchema,
|
|
457
|
+
annotations: { title: "Update iCal Subscription", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
458
|
+
execute: createExecutor(updateICalSubscription)
|
|
459
|
+
},
|
|
460
|
+
{
|
|
461
|
+
name: "delete_ical_subscription",
|
|
462
|
+
description: "Remove an external calendar import. Previously synced events remain on the calendar.",
|
|
463
|
+
schema: DeleteICalSubscriptionSchema,
|
|
464
|
+
annotations: { title: "Delete iCal Subscription", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
|
|
465
|
+
execute: createExecutor(deleteICalSubscription)
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
name: "sync_ical_subscription",
|
|
469
|
+
description: "Trigger an immediate sync of an iCal subscription instead of waiting for the next 30-minute poll.",
|
|
470
|
+
schema: SyncICalSubscriptionSchema,
|
|
471
|
+
annotations: { title: "Sync iCal Subscription", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
|
|
472
|
+
execute: createExecutor(syncICalSubscription)
|
|
473
|
+
},
|
|
474
|
+
// ── Usage ──────────────────────────────────────────────────────
|
|
475
|
+
{
|
|
476
|
+
name: "get_usage",
|
|
477
|
+
description: "Get quota and usage statistics for the current billing period.",
|
|
478
|
+
schema: GetUsageSchema,
|
|
479
|
+
annotations: { title: "Get Usage", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
|
|
480
|
+
execute: createExecutor(getUsage)
|
|
481
|
+
}
|
|
482
|
+
];
|
|
483
|
+
var toolkitToolNames = new Set(TOOL_DEFINITIONS.map((tool) => tool.name));
|
|
484
|
+
var hostedToolNames = new Set(HOSTED_API_MCP_TOOL_NAMES);
|
|
485
|
+
var TOOLKIT_MCP_PARITY = {
|
|
486
|
+
hostedToolNames: HOSTED_API_MCP_TOOL_NAMES,
|
|
487
|
+
missingHostedTools: HOSTED_API_MCP_TOOL_NAMES.filter((name) => !toolkitToolNames.has(name)),
|
|
488
|
+
toolkitOnlyTools: TOOL_DEFINITIONS.map((tool) => tool.name).filter((name) => !hostedToolNames.has(name))
|
|
489
|
+
};
|
|
490
|
+
|
|
491
|
+
// src/base.ts
|
|
492
|
+
function resolveClient(config) {
|
|
493
|
+
if ("client" in config && config.client) return config.client;
|
|
494
|
+
const { tools: _tools, ...sdkConfig } = config;
|
|
495
|
+
return new import_sdk2.Chronary(sdkConfig);
|
|
496
|
+
}
|
|
497
|
+
var BaseToolkit = class {
|
|
498
|
+
client;
|
|
499
|
+
definitions;
|
|
500
|
+
constructor(config) {
|
|
501
|
+
this.client = resolveClient(config);
|
|
502
|
+
this.definitions = config.tools ? TOOL_DEFINITIONS.filter((d) => config.tools.includes(d.name)) : [...TOOL_DEFINITIONS];
|
|
503
|
+
}
|
|
504
|
+
};
|
|
505
|
+
var ListToolkit = class extends BaseToolkit {
|
|
506
|
+
getTools() {
|
|
507
|
+
return this.definitions.map((def) => this.buildTool(def));
|
|
508
|
+
}
|
|
509
|
+
};
|
|
510
|
+
|
|
511
|
+
// src/adapters/langchain.ts
|
|
512
|
+
var ChronaryToolkit = class extends ListToolkit {
|
|
513
|
+
constructor(config) {
|
|
514
|
+
super(config);
|
|
515
|
+
}
|
|
516
|
+
buildTool(def) {
|
|
517
|
+
const client = this.client;
|
|
518
|
+
return {
|
|
519
|
+
name: def.name,
|
|
520
|
+
description: def.description,
|
|
521
|
+
schema: def.schema,
|
|
522
|
+
call: async (params) => {
|
|
523
|
+
const result = await def.execute(client, params);
|
|
524
|
+
return JSON.stringify(result.result);
|
|
525
|
+
}
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
};
|
|
529
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
530
|
+
0 && (module.exports = {
|
|
531
|
+
ChronaryToolkit
|
|
532
|
+
});
|
|
533
|
+
//# sourceMappingURL=langchain.cjs.map
|