skedyul 1.7.28 → 1.7.29

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/README.md CHANGED
@@ -238,6 +238,7 @@ skedyul workflows deploy --file ./workflows/reminder.yaml --workplace <subdomain
238
238
  # Testing
239
239
  skedyul chat --agent booking --workplace <subdomain>
240
240
  skedyul dev invoke my_tool --workplace <subdomain>
241
+ skedyul apps deployment --id dpl_... # build + provision logs
241
242
  ```
242
243
 
243
244
  See [CLI reference](./docs/cli.md) for every command, flag, and config file path.
package/dist/.build-stamp CHANGED
@@ -1 +1 @@
1
- 1788249705157
1
+ 1788412919726
@@ -109,6 +109,43 @@ export declare function listTools(ctx: CliContext, input: {
109
109
  tool?: PlatformTool;
110
110
  }>;
111
111
  export declare function invokeTool(ctx: CliContext, input: InvokeToolInput): Promise<InvokeToolResult>;
112
+ export interface GetDeploymentInput {
113
+ deploymentId: string;
114
+ tail?: number;
115
+ includeLogs?: boolean;
116
+ errorsOnly?: boolean;
117
+ }
118
+ export interface DeploymentLogEntry {
119
+ timestamp?: string;
120
+ level?: string;
121
+ message?: string;
122
+ [key: string]: unknown;
123
+ }
124
+ export interface GetDeploymentResult {
125
+ success?: boolean;
126
+ deploymentId?: string;
127
+ status?: string;
128
+ appHandle?: string | null;
129
+ invokeEndpoint?: string | null;
130
+ readyToInvoke?: boolean;
131
+ provision?: {
132
+ id?: string;
133
+ status?: string;
134
+ currentStep?: string | null;
135
+ errorMessage?: string | null;
136
+ } | null;
137
+ pendingMigration?: unknown;
138
+ logs?: DeploymentLogEntry[];
139
+ errors?: DeploymentLogEntry[];
140
+ logsTotal?: number;
141
+ logsTruncated?: boolean;
142
+ logsError?: string | null;
143
+ hint?: string;
144
+ lastError?: string | null;
145
+ error?: string;
146
+ [key: string]: unknown;
147
+ }
148
+ export declare function getDeployment(ctx: CliContext, input: GetDeploymentInput): Promise<GetDeploymentResult>;
112
149
  export declare const apps: {
113
150
  link: typeof linkApp;
114
151
  registerEndpoint: typeof registerEndpoint;
@@ -120,4 +157,5 @@ export declare const apps: {
120
157
  syncResources: typeof syncResources;
121
158
  listTools: typeof listTools;
122
159
  invokeTool: typeof invokeTool;
160
+ getDeployment: typeof getDeployment;
123
161
  };
@@ -7,5 +7,5 @@ export { workflows } from './workflows';
7
7
  export type { WorkflowRecord, WorkflowVersion, DeployWorkflowResult, ValidateWorkflowResult, RunWorkflowResult, WorkflowRunStatus, WorkflowSchema, PublishWorkflowResult, PullWorkflowResult, DeployWorkflowOptions, } from './workflows';
8
8
  export { listWorkflows, getWorkflow, listWorkflowVersions, validateWorkflow, validateWorkflowContent, deployWorkflow, publishWorkflow, pullWorkflow, getWorkflowSchema, runWorkflow, getWorkflowRun, } from './workflows';
9
9
  export { apps } from './apps';
10
- export type { LinkAppInput, LinkAppResult, InvokeToolInput, InvokeToolResult, SyncResourcesResult, PlatformTool, } from './apps';
11
- export { linkApp, registerEndpoint, unregisterEndpoint, heartbeat, installApp, uninstallApp, getInstallation, syncResources, listTools, invokeTool, } from './apps';
10
+ export type { LinkAppInput, LinkAppResult, InvokeToolInput, InvokeToolResult, SyncResourcesResult, PlatformTool, GetDeploymentInput, GetDeploymentResult, DeploymentLogEntry, } from './apps';
11
+ export { linkApp, registerEndpoint, unregisterEndpoint, heartbeat, installApp, uninstallApp, getInstallation, syncResources, listTools, invokeTool, getDeployment, } from './apps';
@@ -35,6 +35,7 @@ __export(api_exports, {
35
35
  crm: () => crm,
36
36
  deployWorkflow: () => deployWorkflow,
37
37
  diffSchema: () => diffSchema,
38
+ getDeployment: () => getDeployment,
38
39
  getInstallation: () => getInstallation,
39
40
  getWorkflow: () => getWorkflow,
40
41
  getWorkflowRun: () => getWorkflowRun,
@@ -753,6 +754,17 @@ async function invokeTool(ctx, input) {
753
754
  timeout: input.timeout
754
755
  });
755
756
  }
757
+ async function getDeployment(ctx, input) {
758
+ return callCliApi(cliApi(ctx), "/app-deploy", void 0, {
759
+ method: "GET",
760
+ query: {
761
+ deploymentId: input.deploymentId,
762
+ tail: input.tail != null ? String(input.tail) : void 0,
763
+ logs: input.includeLogs === false ? "false" : "true",
764
+ errorsOnly: input.errorsOnly ? "true" : void 0
765
+ }
766
+ });
767
+ }
756
768
  var apps = {
757
769
  link: linkApp,
758
770
  registerEndpoint,
@@ -763,7 +775,8 @@ var apps = {
763
775
  installation: getInstallation,
764
776
  syncResources,
765
777
  listTools,
766
- invokeTool
778
+ invokeTool,
779
+ getDeployment
767
780
  };
768
781
  // Annotate the CommonJS export names for ESM import in node:
769
782
  0 && (module.exports = {
@@ -772,6 +785,7 @@ var apps = {
772
785
  crm,
773
786
  deployWorkflow,
774
787
  diffSchema,
788
+ getDeployment,
775
789
  getInstallation,
776
790
  getWorkflow,
777
791
  getWorkflowRun,
@@ -0,0 +1 @@
1
+ export declare function appsCommand(args: string[]): Promise<void>;
package/dist/cli/index.js CHANGED
@@ -2861,6 +2861,17 @@ async function invokeTool(ctx, input) {
2861
2861
  timeout: input.timeout
2862
2862
  });
2863
2863
  }
2864
+ async function getDeployment(ctx, input) {
2865
+ return callCliApi(cliApi(ctx), "/app-deploy", void 0, {
2866
+ method: "GET",
2867
+ query: {
2868
+ deploymentId: input.deploymentId,
2869
+ tail: input.tail != null ? String(input.tail) : void 0,
2870
+ logs: input.includeLogs === false ? "false" : "true",
2871
+ errorsOnly: input.errorsOnly ? "true" : void 0
2872
+ }
2873
+ });
2874
+ }
2864
2875
 
2865
2876
  // src/cli/commands/invoke-remote.ts
2866
2877
  function getMimeType2(filePath) {
@@ -10218,6 +10229,22 @@ var ToolBindingZ = import_v46.z.union([
10218
10229
  executionMode: import_v46.z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
10219
10230
  /** Approval timeout in ms (default: 86400000 = 1 day) */
10220
10231
  approvalTimeoutMs: import_v46.z.number().optional()
10232
+ }),
10233
+ import_v46.z.object({
10234
+ kind: import_v46.z.literal("APP_ENTITY"),
10235
+ /** App handle (e.g., 'bft') */
10236
+ appHandle: import_v46.z.string(),
10237
+ /** Entity handle (e.g., 'member', 'booking') */
10238
+ entity: import_v46.z.string(),
10239
+ /** Operation: get, list, update, create, delete */
10240
+ operation: import_v46.z.enum(["get", "list", "update", "create", "delete"]),
10241
+ handle: import_v46.z.string().optional(),
10242
+ displayName: import_v46.z.string().optional(),
10243
+ description: import_v46.z.string().optional(),
10244
+ /** Execution mode: ALLOW_ALL (default) or REQUIRE_APPROVAL */
10245
+ executionMode: import_v46.z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
10246
+ /** Approval timeout in ms (default: 86400000 = 1 day) */
10247
+ approvalTimeoutMs: import_v46.z.number().optional()
10221
10248
  })
10222
10249
  ]);
10223
10250
  var StageBaseZ = import_v46.z.object({
@@ -14195,6 +14222,137 @@ async function eventCommand(args2) {
14195
14222
  }
14196
14223
  }
14197
14224
 
14225
+ // src/cli/commands/apps.ts
14226
+ init_utils();
14227
+ function printHelp24() {
14228
+ console.log(`
14229
+ skedyul apps - Inspect app installations and deployments
14230
+
14231
+ Usage:
14232
+ skedyul apps deployment --id <deploymentId> [options]
14233
+
14234
+ Required:
14235
+ --id, -i Deployment ID (dpl_...)
14236
+
14237
+ Options:
14238
+ --tail, -n Newest log lines (default: 100, max: 500)
14239
+ --errors-only Only print error/warn lines
14240
+ --no-logs Skip the log tail (FAILED still returns errors)
14241
+ --json Output the full JSON response
14242
+ --help, -h Show this help message
14243
+
14244
+ Examples:
14245
+ skedyul apps deployment --id dpl_abc123
14246
+ skedyul apps deployment --id dpl_abc123 --errors-only
14247
+ skedyul apps deployment --id dpl_abc123 --tail 200 --json
14248
+
14249
+ MCP equivalent: apps_get_deployment
14250
+ `);
14251
+ }
14252
+ function formatLogLine(entry) {
14253
+ const time = entry.timestamp ?? "";
14254
+ const level = (entry.level ?? "info").toUpperCase().padEnd(5);
14255
+ const message = entry.message ?? "";
14256
+ return [time, level, message].filter(Boolean).join(" ");
14257
+ }
14258
+ async function appsCommand(args2) {
14259
+ const { flags, positional } = parseArgs(args2);
14260
+ if (flags.help || flags.h) {
14261
+ printHelp24();
14262
+ return;
14263
+ }
14264
+ const subcommand = positional[0];
14265
+ if (subcommand !== "deployment") {
14266
+ printHelp24();
14267
+ process.exit(subcommand ? 1 : 0);
14268
+ }
14269
+ const deploymentId = String(flags.id ?? flags.i ?? positional[1] ?? "");
14270
+ if (!deploymentId) {
14271
+ console.error("Error: --id <deploymentId> is required");
14272
+ printHelp24();
14273
+ process.exit(1);
14274
+ }
14275
+ const credentials = getCredentials();
14276
+ if (!credentials?.token) {
14277
+ console.error("Not logged in. Run 'skedyul auth login' first.");
14278
+ process.exit(1);
14279
+ }
14280
+ const ctx = {
14281
+ token: credentials.token,
14282
+ serverUrl: credentials.serverUrl || getServerUrl()
14283
+ };
14284
+ const tailFlag = flags.tail ?? flags.n;
14285
+ const tail = typeof tailFlag === "string" && tailFlag.length > 0 ? Number(tailFlag) : void 0;
14286
+ const result = await getDeployment(ctx, {
14287
+ deploymentId,
14288
+ tail: Number.isFinite(tail) ? tail : void 0,
14289
+ includeLogs: flags["no-logs"] ? false : true,
14290
+ errorsOnly: Boolean(flags["errors-only"])
14291
+ });
14292
+ if (flags.json) {
14293
+ console.log(formatJson(result));
14294
+ if (result.error && !result.deploymentId) {
14295
+ process.exit(1);
14296
+ }
14297
+ return;
14298
+ }
14299
+ if (result.error && !result.deploymentId) {
14300
+ console.error(result.error);
14301
+ process.exit(1);
14302
+ }
14303
+ console.log(`Deployment ${result.deploymentId ?? deploymentId}`);
14304
+ console.log(`Status ${result.status ?? "unknown"}`);
14305
+ if (result.appHandle) {
14306
+ console.log(`App ${result.appHandle}`);
14307
+ }
14308
+ if (result.readyToInvoke != null) {
14309
+ console.log(`Ready ${result.readyToInvoke ? "yes" : "no"}`);
14310
+ }
14311
+ if (result.invokeEndpoint) {
14312
+ console.log(`Endpoint ${result.invokeEndpoint}`);
14313
+ }
14314
+ if (result.provision?.status) {
14315
+ console.log(
14316
+ `Provision ${result.provision.status}${result.provision.currentStep ? ` (${result.provision.currentStep})` : ""}`
14317
+ );
14318
+ }
14319
+ if (result.provision?.errorMessage) {
14320
+ console.error(`Provision error: ${result.provision.errorMessage}`);
14321
+ }
14322
+ if (result.pendingMigration) {
14323
+ console.error(
14324
+ "Pending CRM migration \u2014 approve it in Skedyul or via crm.approveMigration before the deploy can finish."
14325
+ );
14326
+ }
14327
+ if (result.lastError) {
14328
+ console.error(`Queue error: ${result.lastError}`);
14329
+ }
14330
+ if (result.hint) {
14331
+ console.error(result.hint);
14332
+ }
14333
+ if (result.logsError) {
14334
+ console.error(`Log fetch: ${result.logsError}`);
14335
+ }
14336
+ const errors = result.errors ?? [];
14337
+ if (errors.length > 0) {
14338
+ console.log("");
14339
+ console.log(`Errors (${errors.length})`);
14340
+ for (const entry of errors) {
14341
+ console.error(formatLogLine(entry));
14342
+ }
14343
+ }
14344
+ const logs = result.logs ?? [];
14345
+ if (logs.length > 0 && !flags["errors-only"]) {
14346
+ const total = result.logsTotal ?? logs.length;
14347
+ const label = result.logsTruncated ? `Logs (newest ${logs.length} of ${total})` : `Logs (${logs.length})`;
14348
+ console.log("");
14349
+ console.log(label);
14350
+ for (const entry of logs) {
14351
+ console.log(formatLogLine(entry));
14352
+ }
14353
+ }
14354
+ }
14355
+
14198
14356
  // src/cli/index.ts
14199
14357
  var args = process.argv.slice(2);
14200
14358
  function printUsage2() {
@@ -14227,6 +14385,7 @@ COMMANDS
14227
14385
  skills Manage skills (list, get, deploy, publish, versions, delete)
14228
14386
  workflows Manage workflows (list, get, deploy, run, publish, pull)
14229
14387
  event Emit test app events to the event bus (CLI testing)
14388
+ apps Inspect app deployments and build logs
14230
14389
  dev Development tools for building and testing apps locally
14231
14390
 
14232
14391
  GETTING STARTED
@@ -14286,6 +14445,7 @@ MORE HELP
14286
14445
  $ skedyul agents --help Show agent management commands
14287
14446
  $ skedyul skills --help Show skill management commands
14288
14447
  $ skedyul workflows --help Show workflow management commands
14448
+ $ skedyul apps --help Show app deployment log commands
14289
14449
  $ skedyul chat --help Show chat command options
14290
14450
  $ skedyul dev --help Show development commands
14291
14451
  $ skedyul <cmd> --help Show help for specific command
@@ -14444,6 +14604,10 @@ async function main() {
14444
14604
  await eventCommand(args.slice(1));
14445
14605
  return;
14446
14606
  }
14607
+ if (command === "apps") {
14608
+ await appsCommand(args.slice(1));
14609
+ return;
14610
+ }
14447
14611
  if (command === "build") {
14448
14612
  await buildCommand(args.slice(1));
14449
14613
  return;
@@ -99,4 +99,22 @@ export interface EntityDefinition extends BaseDefinition {
99
99
  * Used by install suggest/analyze — not applied automatically.
100
100
  */
101
101
  crmMapDefaults?: EntityCrmMapDefaults;
102
+ /**
103
+ * Platform situations this entity participates in, and the short MCP tool
104
+ * name to invoke for each. Omit a key to skip that situation.
105
+ * Core builds a typed payload (see CalendarWindowPullInput) — same pattern
106
+ * as channel `capabilities.messaging.send` + MessageSendInput.
107
+ */
108
+ tools?: EntityRuntimeTools;
109
+ }
110
+ /**
111
+ * Situation → short MCP tool name. Keys are platform contracts; values are
112
+ * the app's tool handle (not `app:{handle}:…`).
113
+ */
114
+ export interface EntityRuntimeTools {
115
+ /**
116
+ * CRM LIST calendar views, before reading instances.
117
+ * Invoked with CalendarWindowPullInput.
118
+ */
119
+ calendarWindowPull?: string;
102
120
  }
@@ -1366,6 +1366,9 @@ var EntityCrmMapDefaultsSchema = z8.object({
1366
1366
  relationshipHandles: z8.record(z8.string(), z8.string()).optional(),
1367
1367
  valueAliases: z8.record(z8.string(), z8.record(z8.string(), z8.string())).optional()
1368
1368
  });
1369
+ var EntityRuntimeToolsSchema = z8.object({
1370
+ calendarWindowPull: z8.string().min(1).optional()
1371
+ });
1369
1372
  var EntityDefinitionSchema = z8.object({
1370
1373
  handle: z8.string(),
1371
1374
  label: z8.string(),
@@ -1374,7 +1377,8 @@ var EntityDefinitionSchema = z8.object({
1374
1377
  fields: z8.array(EntityFieldDefinitionSchema),
1375
1378
  contextFields: z8.array(EntityFieldDefinitionSchema).optional(),
1376
1379
  relationships: z8.array(EntityRelationshipDefinitionSchema).optional(),
1377
- crmMapDefaults: EntityCrmMapDefaultsSchema.optional()
1380
+ crmMapDefaults: EntityCrmMapDefaultsSchema.optional(),
1381
+ tools: EntityRuntimeToolsSchema.optional()
1378
1382
  });
1379
1383
  var RelationshipCardinalitySchema = z8.enum([
1380
1384
  "ONE_TO_ONE",
@@ -2066,6 +2070,32 @@ var MessageSendOutputSchema = z8.object({
2066
2070
  status: z8.enum(["sent", "queued", "failed"]),
2067
2071
  remoteId: z8.string().optional()
2068
2072
  });
2073
+ var CalendarWindowPullWindowSchema = z8.object({
2074
+ startAt: z8.string(),
2075
+ endAt: z8.string(),
2076
+ timezone: z8.string().optional()
2077
+ });
2078
+ var CalendarWindowPullModelSchema = z8.object({
2079
+ id: z8.string(),
2080
+ handle: z8.string().optional()
2081
+ });
2082
+ var CalendarWindowPullEntitySchema = z8.object({
2083
+ handle: z8.string()
2084
+ });
2085
+ var CalendarWindowPullCalendarsSchema = z8.object({
2086
+ ids: z8.array(z8.string()).optional()
2087
+ });
2088
+ var CalendarWindowPullInputSchema = z8.object({
2089
+ window: CalendarWindowPullWindowSchema,
2090
+ model: CalendarWindowPullModelSchema.optional(),
2091
+ entity: CalendarWindowPullEntitySchema.optional(),
2092
+ calendars: CalendarWindowPullCalendarsSchema.optional()
2093
+ });
2094
+ var CalendarWindowPullOutputSchema = z8.object({
2095
+ calendarsUpserted: z8.number().int().nonnegative(),
2096
+ eventsUpserted: z8.number().int().nonnegative(),
2097
+ truncated: z8.boolean()
2098
+ });
2069
2099
  var MessageBulkRecipientSchema = z8.object({
2070
2100
  address: z8.string(),
2071
2101
  renderedBody: z8.string(),
@@ -8897,6 +8927,12 @@ export {
8897
8927
  CRMRelationshipLinkSchema,
8898
8928
  CRMRelationshipSchemaZ,
8899
8929
  CRMSchemaZ,
8930
+ CalendarWindowPullCalendarsSchema,
8931
+ CalendarWindowPullEntitySchema,
8932
+ CalendarWindowPullInputSchema,
8933
+ CalendarWindowPullModelSchema,
8934
+ CalendarWindowPullOutputSchema,
8935
+ CalendarWindowPullWindowSchema,
8900
8936
  CardBlockDefinitionSchema,
8901
8937
  CardBlockHeaderSchema,
8902
8938
  ChannelBatchCapabilitySchema,
@@ -8928,6 +8964,7 @@ export {
8928
8964
  EntityDefinitionSchema,
8929
8965
  EntityFieldDefinitionSchema,
8930
8966
  EntityRelationshipDefinitionSchema,
8967
+ EntityRuntimeToolsSchema,
8931
8968
  EnvSchemaSchema,
8932
8969
  EnvVariableDefinitionSchema,
8933
8970
  EnvVisibilitySchema,
package/dist/index.js CHANGED
@@ -63,6 +63,12 @@ __export(index_exports, {
63
63
  CRMRelationshipLinkSchema: () => CRMRelationshipLinkSchema,
64
64
  CRMRelationshipSchemaZ: () => CRMRelationshipSchemaZ,
65
65
  CRMSchemaZ: () => CRMSchemaZ,
66
+ CalendarWindowPullCalendarsSchema: () => CalendarWindowPullCalendarsSchema,
67
+ CalendarWindowPullEntitySchema: () => CalendarWindowPullEntitySchema,
68
+ CalendarWindowPullInputSchema: () => CalendarWindowPullInputSchema,
69
+ CalendarWindowPullModelSchema: () => CalendarWindowPullModelSchema,
70
+ CalendarWindowPullOutputSchema: () => CalendarWindowPullOutputSchema,
71
+ CalendarWindowPullWindowSchema: () => CalendarWindowPullWindowSchema,
66
72
  CardBlockDefinitionSchema: () => CardBlockDefinitionSchema,
67
73
  CardBlockHeaderSchema: () => CardBlockHeaderSchema,
68
74
  ChannelBatchCapabilitySchema: () => ChannelBatchCapabilitySchema,
@@ -94,6 +100,7 @@ __export(index_exports, {
94
100
  EntityDefinitionSchema: () => EntityDefinitionSchema,
95
101
  EntityFieldDefinitionSchema: () => EntityFieldDefinitionSchema,
96
102
  EntityRelationshipDefinitionSchema: () => EntityRelationshipDefinitionSchema,
103
+ EntityRuntimeToolsSchema: () => EntityRuntimeToolsSchema,
97
104
  EnvSchemaSchema: () => EnvSchemaSchema,
98
105
  EnvVariableDefinitionSchema: () => EnvVariableDefinitionSchema,
99
106
  EnvVisibilitySchema: () => EnvVisibilitySchema,
@@ -1757,6 +1764,9 @@ var EntityCrmMapDefaultsSchema = import_v48.z.object({
1757
1764
  relationshipHandles: import_v48.z.record(import_v48.z.string(), import_v48.z.string()).optional(),
1758
1765
  valueAliases: import_v48.z.record(import_v48.z.string(), import_v48.z.record(import_v48.z.string(), import_v48.z.string())).optional()
1759
1766
  });
1767
+ var EntityRuntimeToolsSchema = import_v48.z.object({
1768
+ calendarWindowPull: import_v48.z.string().min(1).optional()
1769
+ });
1760
1770
  var EntityDefinitionSchema = import_v48.z.object({
1761
1771
  handle: import_v48.z.string(),
1762
1772
  label: import_v48.z.string(),
@@ -1765,7 +1775,8 @@ var EntityDefinitionSchema = import_v48.z.object({
1765
1775
  fields: import_v48.z.array(EntityFieldDefinitionSchema),
1766
1776
  contextFields: import_v48.z.array(EntityFieldDefinitionSchema).optional(),
1767
1777
  relationships: import_v48.z.array(EntityRelationshipDefinitionSchema).optional(),
1768
- crmMapDefaults: EntityCrmMapDefaultsSchema.optional()
1778
+ crmMapDefaults: EntityCrmMapDefaultsSchema.optional(),
1779
+ tools: EntityRuntimeToolsSchema.optional()
1769
1780
  });
1770
1781
  var RelationshipCardinalitySchema = import_v48.z.enum([
1771
1782
  "ONE_TO_ONE",
@@ -2457,6 +2468,32 @@ var MessageSendOutputSchema = import_v48.z.object({
2457
2468
  status: import_v48.z.enum(["sent", "queued", "failed"]),
2458
2469
  remoteId: import_v48.z.string().optional()
2459
2470
  });
2471
+ var CalendarWindowPullWindowSchema = import_v48.z.object({
2472
+ startAt: import_v48.z.string(),
2473
+ endAt: import_v48.z.string(),
2474
+ timezone: import_v48.z.string().optional()
2475
+ });
2476
+ var CalendarWindowPullModelSchema = import_v48.z.object({
2477
+ id: import_v48.z.string(),
2478
+ handle: import_v48.z.string().optional()
2479
+ });
2480
+ var CalendarWindowPullEntitySchema = import_v48.z.object({
2481
+ handle: import_v48.z.string()
2482
+ });
2483
+ var CalendarWindowPullCalendarsSchema = import_v48.z.object({
2484
+ ids: import_v48.z.array(import_v48.z.string()).optional()
2485
+ });
2486
+ var CalendarWindowPullInputSchema = import_v48.z.object({
2487
+ window: CalendarWindowPullWindowSchema,
2488
+ model: CalendarWindowPullModelSchema.optional(),
2489
+ entity: CalendarWindowPullEntitySchema.optional(),
2490
+ calendars: CalendarWindowPullCalendarsSchema.optional()
2491
+ });
2492
+ var CalendarWindowPullOutputSchema = import_v48.z.object({
2493
+ calendarsUpserted: import_v48.z.number().int().nonnegative(),
2494
+ eventsUpserted: import_v48.z.number().int().nonnegative(),
2495
+ truncated: import_v48.z.boolean()
2496
+ });
2460
2497
  var MessageBulkRecipientSchema = import_v48.z.object({
2461
2498
  address: import_v48.z.string(),
2462
2499
  renderedBody: import_v48.z.string(),
@@ -9289,6 +9326,12 @@ var index_default = { z: import_v414.z };
9289
9326
  CRMRelationshipLinkSchema,
9290
9327
  CRMRelationshipSchemaZ,
9291
9328
  CRMSchemaZ,
9329
+ CalendarWindowPullCalendarsSchema,
9330
+ CalendarWindowPullEntitySchema,
9331
+ CalendarWindowPullInputSchema,
9332
+ CalendarWindowPullModelSchema,
9333
+ CalendarWindowPullOutputSchema,
9334
+ CalendarWindowPullWindowSchema,
9292
9335
  CardBlockDefinitionSchema,
9293
9336
  CardBlockHeaderSchema,
9294
9337
  ChannelBatchCapabilitySchema,
@@ -9320,6 +9363,7 @@ var index_default = { z: import_v414.z };
9320
9363
  EntityDefinitionSchema,
9321
9364
  EntityFieldDefinitionSchema,
9322
9365
  EntityRelationshipDefinitionSchema,
9366
+ EntityRuntimeToolsSchema,
9323
9367
  EnvSchemaSchema,
9324
9368
  EnvVariableDefinitionSchema,
9325
9369
  EnvVisibilitySchema,
@@ -32,12 +32,26 @@ export type McpToolBinding = {
32
32
  handle?: string;
33
33
  displayName?: string;
34
34
  description?: string;
35
+ executionMode?: 'ALLOW_ALL' | 'REQUIRE_APPROVAL';
36
+ approvalTimeoutMs?: number;
37
+ };
38
+ export type AppEntityToolBinding = {
39
+ kind: 'APP_ENTITY';
40
+ /** App handle (e.g., 'bft') */
41
+ appHandle: string;
42
+ /** Entity handle (e.g., 'member', 'booking') */
43
+ entity: string;
44
+ /** Operation: get, list, update, create, delete */
45
+ operation: 'get' | 'list' | 'update' | 'create' | 'delete';
46
+ handle?: string;
47
+ displayName?: string;
48
+ description?: string;
35
49
  /** Execution mode: ALLOW_ALL (default) or REQUIRE_APPROVAL */
36
50
  executionMode?: ToolExecutionMode;
37
51
  /** Approval timeout in ms (default: 86400000 = 1 day) */
38
52
  approvalTimeoutMs?: number;
39
53
  };
40
- export type ToolBinding = SystemToolBinding | AgentToolBinding | McpToolBinding;
54
+ export type ToolBinding = SystemToolBinding | AgentToolBinding | McpToolBinding | AppEntityToolBinding;
41
55
  export interface ToolReferenceInput {
42
56
  tool: string;
43
57
  handle?: string;
@@ -89,6 +103,11 @@ export declare function parseToolReferenceString(ref: string): {
89
103
  kind: 'MCP';
90
104
  server: string;
91
105
  tool: string;
106
+ } | {
107
+ kind: 'APP_ENTITY';
108
+ appHandle: string;
109
+ entity: string;
110
+ operation: string;
92
111
  };
93
112
  /**
94
113
  * Parse a tool reference input (string or object) into a ToolBinding.
@@ -179,6 +198,25 @@ declare const StageAgentDefinitionZ: z.ZodObject<{
179
198
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
180
199
  }>>;
181
200
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
201
+ }, z.core.$strip>, z.ZodObject<{
202
+ kind: z.ZodLiteral<"APP_ENTITY">;
203
+ appHandle: z.ZodString;
204
+ entity: z.ZodString;
205
+ operation: z.ZodEnum<{
206
+ list: "list";
207
+ update: "update";
208
+ create: "create";
209
+ delete: "delete";
210
+ get: "get";
211
+ }>;
212
+ handle: z.ZodOptional<z.ZodString>;
213
+ displayName: z.ZodOptional<z.ZodString>;
214
+ description: z.ZodOptional<z.ZodString>;
215
+ executionMode: z.ZodOptional<z.ZodEnum<{
216
+ ALLOW_ALL: "ALLOW_ALL";
217
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
218
+ }>>;
219
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
182
220
  }, z.core.$strip>]>]>>>;
183
221
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
184
222
  }, z.core.$strip>;
@@ -243,6 +281,25 @@ declare const AgentStageBaseZ: z.ZodObject<{
243
281
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
244
282
  }>>;
245
283
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
284
+ }, z.core.$strip>, z.ZodObject<{
285
+ kind: z.ZodLiteral<"APP_ENTITY">;
286
+ appHandle: z.ZodString;
287
+ entity: z.ZodString;
288
+ operation: z.ZodEnum<{
289
+ list: "list";
290
+ update: "update";
291
+ create: "create";
292
+ delete: "delete";
293
+ get: "get";
294
+ }>;
295
+ handle: z.ZodOptional<z.ZodString>;
296
+ displayName: z.ZodOptional<z.ZodString>;
297
+ description: z.ZodOptional<z.ZodString>;
298
+ executionMode: z.ZodOptional<z.ZodEnum<{
299
+ ALLOW_ALL: "ALLOW_ALL";
300
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
301
+ }>>;
302
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
246
303
  }, z.core.$strip>]>]>>>;
247
304
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
248
305
  }, z.core.$strip>>;
@@ -314,6 +371,25 @@ declare const AgentStageZ: z.ZodObject<{
314
371
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
315
372
  }>>;
316
373
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
374
+ }, z.core.$strip>, z.ZodObject<{
375
+ kind: z.ZodLiteral<"APP_ENTITY">;
376
+ appHandle: z.ZodString;
377
+ entity: z.ZodString;
378
+ operation: z.ZodEnum<{
379
+ list: "list";
380
+ update: "update";
381
+ create: "create";
382
+ delete: "delete";
383
+ get: "get";
384
+ }>;
385
+ handle: z.ZodOptional<z.ZodString>;
386
+ displayName: z.ZodOptional<z.ZodString>;
387
+ description: z.ZodOptional<z.ZodString>;
388
+ executionMode: z.ZodOptional<z.ZodEnum<{
389
+ ALLOW_ALL: "ALLOW_ALL";
390
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
391
+ }>>;
392
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
317
393
  }, z.core.$strip>]>]>>>;
318
394
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
319
395
  }, z.core.$strip>>;
@@ -410,6 +486,25 @@ declare const StageZ: z.ZodDiscriminatedUnion<[z.ZodObject<{
410
486
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
411
487
  }>>;
412
488
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
489
+ }, z.core.$strip>, z.ZodObject<{
490
+ kind: z.ZodLiteral<"APP_ENTITY">;
491
+ appHandle: z.ZodString;
492
+ entity: z.ZodString;
493
+ operation: z.ZodEnum<{
494
+ list: "list";
495
+ update: "update";
496
+ create: "create";
497
+ delete: "delete";
498
+ get: "get";
499
+ }>;
500
+ handle: z.ZodOptional<z.ZodString>;
501
+ displayName: z.ZodOptional<z.ZodString>;
502
+ description: z.ZodOptional<z.ZodString>;
503
+ executionMode: z.ZodOptional<z.ZodEnum<{
504
+ ALLOW_ALL: "ALLOW_ALL";
505
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
506
+ }>>;
507
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
413
508
  }, z.core.$strip>]>]>>>;
414
509
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
415
510
  }, z.core.$strip>>;
@@ -558,6 +653,25 @@ declare const StageWithLegacyZ: z.ZodUnion<readonly [z.ZodDiscriminatedUnion<[z.
558
653
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
559
654
  }>>;
560
655
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
656
+ }, z.core.$strip>, z.ZodObject<{
657
+ kind: z.ZodLiteral<"APP_ENTITY">;
658
+ appHandle: z.ZodString;
659
+ entity: z.ZodString;
660
+ operation: z.ZodEnum<{
661
+ list: "list";
662
+ update: "update";
663
+ create: "create";
664
+ delete: "delete";
665
+ get: "get";
666
+ }>;
667
+ handle: z.ZodOptional<z.ZodString>;
668
+ displayName: z.ZodOptional<z.ZodString>;
669
+ description: z.ZodOptional<z.ZodString>;
670
+ executionMode: z.ZodOptional<z.ZodEnum<{
671
+ ALLOW_ALL: "ALLOW_ALL";
672
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
673
+ }>>;
674
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
561
675
  }, z.core.$strip>]>]>>>;
562
676
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
563
677
  }, z.core.$strip>>;
@@ -667,6 +781,25 @@ declare const InlineAgentDefinitionZ: z.ZodObject<{
667
781
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
668
782
  }>>;
669
783
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
784
+ }, z.core.$strip>, z.ZodObject<{
785
+ kind: z.ZodLiteral<"APP_ENTITY">;
786
+ appHandle: z.ZodString;
787
+ entity: z.ZodString;
788
+ operation: z.ZodEnum<{
789
+ list: "list";
790
+ update: "update";
791
+ create: "create";
792
+ delete: "delete";
793
+ get: "get";
794
+ }>;
795
+ handle: z.ZodOptional<z.ZodString>;
796
+ displayName: z.ZodOptional<z.ZodString>;
797
+ description: z.ZodOptional<z.ZodString>;
798
+ executionMode: z.ZodOptional<z.ZodEnum<{
799
+ ALLOW_ALL: "ALLOW_ALL";
800
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
801
+ }>>;
802
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
670
803
  }, z.core.$strip>]>]>>>;
671
804
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
672
805
  }, z.core.$strip>;
@@ -815,6 +948,25 @@ declare const SingleStageAgentZ: z.ZodObject<{
815
948
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
816
949
  }>>;
817
950
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
951
+ }, z.core.$strip>, z.ZodObject<{
952
+ kind: z.ZodLiteral<"APP_ENTITY">;
953
+ appHandle: z.ZodString;
954
+ entity: z.ZodString;
955
+ operation: z.ZodEnum<{
956
+ list: "list";
957
+ update: "update";
958
+ create: "create";
959
+ delete: "delete";
960
+ get: "get";
961
+ }>;
962
+ handle: z.ZodOptional<z.ZodString>;
963
+ displayName: z.ZodOptional<z.ZodString>;
964
+ description: z.ZodOptional<z.ZodString>;
965
+ executionMode: z.ZodOptional<z.ZodEnum<{
966
+ ALLOW_ALL: "ALLOW_ALL";
967
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
968
+ }>>;
969
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
818
970
  }, z.core.$strip>]>]>>>;
819
971
  inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
820
972
  key: z.ZodString;
@@ -908,6 +1060,25 @@ declare const MultiStageAgentZ: z.ZodObject<{
908
1060
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
909
1061
  }>>;
910
1062
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1063
+ }, z.core.$strip>, z.ZodObject<{
1064
+ kind: z.ZodLiteral<"APP_ENTITY">;
1065
+ appHandle: z.ZodString;
1066
+ entity: z.ZodString;
1067
+ operation: z.ZodEnum<{
1068
+ list: "list";
1069
+ update: "update";
1070
+ create: "create";
1071
+ delete: "delete";
1072
+ get: "get";
1073
+ }>;
1074
+ handle: z.ZodOptional<z.ZodString>;
1075
+ displayName: z.ZodOptional<z.ZodString>;
1076
+ description: z.ZodOptional<z.ZodString>;
1077
+ executionMode: z.ZodOptional<z.ZodEnum<{
1078
+ ALLOW_ALL: "ALLOW_ALL";
1079
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1080
+ }>>;
1081
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
911
1082
  }, z.core.$strip>]>]>>>;
912
1083
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
913
1084
  }, z.core.$strip>>>;
@@ -976,6 +1147,25 @@ declare const MultiStageAgentZ: z.ZodObject<{
976
1147
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
977
1148
  }>>;
978
1149
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1150
+ }, z.core.$strip>, z.ZodObject<{
1151
+ kind: z.ZodLiteral<"APP_ENTITY">;
1152
+ appHandle: z.ZodString;
1153
+ entity: z.ZodString;
1154
+ operation: z.ZodEnum<{
1155
+ list: "list";
1156
+ update: "update";
1157
+ create: "create";
1158
+ delete: "delete";
1159
+ get: "get";
1160
+ }>;
1161
+ handle: z.ZodOptional<z.ZodString>;
1162
+ displayName: z.ZodOptional<z.ZodString>;
1163
+ description: z.ZodOptional<z.ZodString>;
1164
+ executionMode: z.ZodOptional<z.ZodEnum<{
1165
+ ALLOW_ALL: "ALLOW_ALL";
1166
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1167
+ }>>;
1168
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
979
1169
  }, z.core.$strip>]>]>>>;
980
1170
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
981
1171
  }, z.core.$strip>>;
@@ -1122,6 +1312,25 @@ export declare const AgentSchemaZ: z.ZodUnion<readonly [z.ZodObject<{
1122
1312
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1123
1313
  }>>;
1124
1314
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1315
+ }, z.core.$strip>, z.ZodObject<{
1316
+ kind: z.ZodLiteral<"APP_ENTITY">;
1317
+ appHandle: z.ZodString;
1318
+ entity: z.ZodString;
1319
+ operation: z.ZodEnum<{
1320
+ list: "list";
1321
+ update: "update";
1322
+ create: "create";
1323
+ delete: "delete";
1324
+ get: "get";
1325
+ }>;
1326
+ handle: z.ZodOptional<z.ZodString>;
1327
+ displayName: z.ZodOptional<z.ZodString>;
1328
+ description: z.ZodOptional<z.ZodString>;
1329
+ executionMode: z.ZodOptional<z.ZodEnum<{
1330
+ ALLOW_ALL: "ALLOW_ALL";
1331
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1332
+ }>>;
1333
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1125
1334
  }, z.core.$strip>]>]>>>;
1126
1335
  inputs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1127
1336
  key: z.ZodString;
@@ -1198,6 +1407,25 @@ export declare const AgentSchemaZ: z.ZodUnion<readonly [z.ZodObject<{
1198
1407
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1199
1408
  }>>;
1200
1409
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1410
+ }, z.core.$strip>, z.ZodObject<{
1411
+ kind: z.ZodLiteral<"APP_ENTITY">;
1412
+ appHandle: z.ZodString;
1413
+ entity: z.ZodString;
1414
+ operation: z.ZodEnum<{
1415
+ list: "list";
1416
+ update: "update";
1417
+ create: "create";
1418
+ delete: "delete";
1419
+ get: "get";
1420
+ }>;
1421
+ handle: z.ZodOptional<z.ZodString>;
1422
+ displayName: z.ZodOptional<z.ZodString>;
1423
+ description: z.ZodOptional<z.ZodString>;
1424
+ executionMode: z.ZodOptional<z.ZodEnum<{
1425
+ ALLOW_ALL: "ALLOW_ALL";
1426
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1427
+ }>>;
1428
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1201
1429
  }, z.core.$strip>]>]>>>;
1202
1430
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1203
1431
  }, z.core.$strip>>>;
@@ -1266,6 +1494,25 @@ export declare const AgentSchemaZ: z.ZodUnion<readonly [z.ZodObject<{
1266
1494
  REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1267
1495
  }>>;
1268
1496
  approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1497
+ }, z.core.$strip>, z.ZodObject<{
1498
+ kind: z.ZodLiteral<"APP_ENTITY">;
1499
+ appHandle: z.ZodString;
1500
+ entity: z.ZodString;
1501
+ operation: z.ZodEnum<{
1502
+ list: "list";
1503
+ update: "update";
1504
+ create: "create";
1505
+ delete: "delete";
1506
+ get: "get";
1507
+ }>;
1508
+ handle: z.ZodOptional<z.ZodString>;
1509
+ displayName: z.ZodOptional<z.ZodString>;
1510
+ description: z.ZodOptional<z.ZodString>;
1511
+ executionMode: z.ZodOptional<z.ZodEnum<{
1512
+ ALLOW_ALL: "ALLOW_ALL";
1513
+ REQUIRE_APPROVAL: "REQUIRE_APPROVAL";
1514
+ }>>;
1515
+ approvalTimeoutMs: z.ZodOptional<z.ZodNumber>;
1269
1516
  }, z.core.$strip>]>]>>>;
1270
1517
  outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1271
1518
  }, z.core.$strip>>;
@@ -69,7 +69,16 @@ function parseToolReferenceString(ref) {
69
69
  if (ref.startsWith("app:")) {
70
70
  const parts = ref.split(":");
71
71
  if (parts.length < 3) {
72
- throw new Error(`Invalid app tool reference: "${ref}". Expected format: app:server:tool`);
72
+ throw new Error(`Invalid app tool reference: "${ref}". Expected format: app:server:tool or app:handle:entity:operation`);
73
+ }
74
+ const ENTITY_OPERATIONS = ["get", "list", "update", "create", "delete"];
75
+ if (parts.length === 4 && ENTITY_OPERATIONS.includes(parts[3])) {
76
+ return {
77
+ kind: "APP_ENTITY",
78
+ appHandle: parts[1],
79
+ entity: parts[2],
80
+ operation: parts[3]
81
+ };
73
82
  }
74
83
  const server = parts[1];
75
84
  const tool = parts.slice(2).join(":");
@@ -139,6 +148,16 @@ function parseToolReference(input) {
139
148
  displayName: input.name,
140
149
  description: input.description
141
150
  };
151
+ } else if (parsed.kind === "APP_ENTITY") {
152
+ return {
153
+ kind: "APP_ENTITY",
154
+ appHandle: parsed.appHandle,
155
+ entity: parsed.entity,
156
+ operation: parsed.operation,
157
+ handle: input.handle,
158
+ displayName: input.name,
159
+ description: input.description
160
+ };
142
161
  }
143
162
  }
144
163
  throw new Error(`Invalid tool reference input: ${JSON.stringify(input)}`);
@@ -199,6 +218,22 @@ var ToolBindingZ = import_v4.z.union([
199
218
  executionMode: import_v4.z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
200
219
  /** Approval timeout in ms (default: 86400000 = 1 day) */
201
220
  approvalTimeoutMs: import_v4.z.number().optional()
221
+ }),
222
+ import_v4.z.object({
223
+ kind: import_v4.z.literal("APP_ENTITY"),
224
+ /** App handle (e.g., 'bft') */
225
+ appHandle: import_v4.z.string(),
226
+ /** Entity handle (e.g., 'member', 'booking') */
227
+ entity: import_v4.z.string(),
228
+ /** Operation: get, list, update, create, delete */
229
+ operation: import_v4.z.enum(["get", "list", "update", "create", "delete"]),
230
+ handle: import_v4.z.string().optional(),
231
+ displayName: import_v4.z.string().optional(),
232
+ description: import_v4.z.string().optional(),
233
+ /** Execution mode: ALLOW_ALL (default) or REQUIRE_APPROVAL */
234
+ executionMode: import_v4.z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
235
+ /** Approval timeout in ms (default: 86400000 = 1 day) */
236
+ approvalTimeoutMs: import_v4.z.number().optional()
202
237
  })
203
238
  ]);
204
239
  var StageBaseZ = import_v4.z.object({
@@ -13,7 +13,16 @@ function parseToolReferenceString(ref) {
13
13
  if (ref.startsWith("app:")) {
14
14
  const parts = ref.split(":");
15
15
  if (parts.length < 3) {
16
- throw new Error(`Invalid app tool reference: "${ref}". Expected format: app:server:tool`);
16
+ throw new Error(`Invalid app tool reference: "${ref}". Expected format: app:server:tool or app:handle:entity:operation`);
17
+ }
18
+ const ENTITY_OPERATIONS = ["get", "list", "update", "create", "delete"];
19
+ if (parts.length === 4 && ENTITY_OPERATIONS.includes(parts[3])) {
20
+ return {
21
+ kind: "APP_ENTITY",
22
+ appHandle: parts[1],
23
+ entity: parts[2],
24
+ operation: parts[3]
25
+ };
17
26
  }
18
27
  const server = parts[1];
19
28
  const tool = parts.slice(2).join(":");
@@ -83,6 +92,16 @@ function parseToolReference(input) {
83
92
  displayName: input.name,
84
93
  description: input.description
85
94
  };
95
+ } else if (parsed.kind === "APP_ENTITY") {
96
+ return {
97
+ kind: "APP_ENTITY",
98
+ appHandle: parsed.appHandle,
99
+ entity: parsed.entity,
100
+ operation: parsed.operation,
101
+ handle: input.handle,
102
+ displayName: input.name,
103
+ description: input.description
104
+ };
86
105
  }
87
106
  }
88
107
  throw new Error(`Invalid tool reference input: ${JSON.stringify(input)}`);
@@ -143,6 +162,22 @@ var ToolBindingZ = z.union([
143
162
  executionMode: z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
144
163
  /** Approval timeout in ms (default: 86400000 = 1 day) */
145
164
  approvalTimeoutMs: z.number().optional()
165
+ }),
166
+ z.object({
167
+ kind: z.literal("APP_ENTITY"),
168
+ /** App handle (e.g., 'bft') */
169
+ appHandle: z.string(),
170
+ /** Entity handle (e.g., 'member', 'booking') */
171
+ entity: z.string(),
172
+ /** Operation: get, list, update, create, delete */
173
+ operation: z.enum(["get", "list", "update", "create", "delete"]),
174
+ handle: z.string().optional(),
175
+ displayName: z.string().optional(),
176
+ description: z.string().optional(),
177
+ /** Execution mode: ALLOW_ALL (default) or REQUIRE_APPROVAL */
178
+ executionMode: z.enum(["ALLOW_ALL", "REQUIRE_APPROVAL"]).optional(),
179
+ /** Approval timeout in ms (default: 86400000 = 1 day) */
180
+ approvalTimeoutMs: z.number().optional()
146
181
  })
147
182
  ]);
148
183
  var StageBaseZ = z.object({
package/dist/schemas.d.ts CHANGED
@@ -404,6 +404,9 @@ export declare const EntityCrmMapDefaultsSchema: z.ZodObject<{
404
404
  relationshipHandles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
405
405
  valueAliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
406
406
  }, z.core.$strip>;
407
+ export declare const EntityRuntimeToolsSchema: z.ZodObject<{
408
+ calendarWindowPull: z.ZodOptional<z.ZodString>;
409
+ }, z.core.$strip>;
407
410
  export declare const EntityDefinitionSchema: z.ZodObject<{
408
411
  handle: z.ZodString;
409
412
  label: z.ZodString;
@@ -467,6 +470,9 @@ export declare const EntityDefinitionSchema: z.ZodObject<{
467
470
  relationshipHandles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
468
471
  valueAliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
469
472
  }, z.core.$strip>>;
473
+ tools: z.ZodOptional<z.ZodObject<{
474
+ calendarWindowPull: z.ZodOptional<z.ZodString>;
475
+ }, z.core.$strip>>;
470
476
  }, z.core.$strip>;
471
477
  export declare const RelationshipCardinalitySchema: z.ZodEnum<{
472
478
  ONE_TO_ONE: "ONE_TO_ONE";
@@ -3674,6 +3680,9 @@ export declare const ProvisionConfigSchema: z.ZodObject<{
3674
3680
  relationshipHandles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
3675
3681
  valueAliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
3676
3682
  }, z.core.$strip>>;
3683
+ tools: z.ZodOptional<z.ZodObject<{
3684
+ calendarWindowPull: z.ZodOptional<z.ZodString>;
3685
+ }, z.core.$strip>>;
3677
3686
  }, z.core.$strip>>>;
3678
3687
  relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
3679
3688
  source: z.ZodObject<{
@@ -4539,6 +4548,9 @@ export declare const SkedyulConfigSchema: z.ZodObject<{
4539
4548
  relationshipHandles: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
4540
4549
  valueAliases: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodString>>>;
4541
4550
  }, z.core.$strip>>;
4551
+ tools: z.ZodOptional<z.ZodObject<{
4552
+ calendarWindowPull: z.ZodOptional<z.ZodString>;
4553
+ }, z.core.$strip>>;
4542
4554
  }, z.core.$strip>>>;
4543
4555
  relationships: z.ZodOptional<z.ZodArray<z.ZodObject<{
4544
4556
  source: z.ZodObject<{
@@ -5253,6 +5265,7 @@ export type ModelDefinition = z.infer<typeof ModelDefinitionSchema>;
5253
5265
  export type EntityFieldDefinition = z.infer<typeof EntityFieldDefinitionSchema>;
5254
5266
  export type EntityRelationshipDefinition = z.infer<typeof EntityRelationshipDefinitionSchema>;
5255
5267
  export type EntityCrmMapDefaults = z.infer<typeof EntityCrmMapDefaultsSchema>;
5268
+ export type EntityRuntimeTools = z.infer<typeof EntityRuntimeToolsSchema>;
5256
5269
  export type EntityDefinition = z.infer<typeof EntityDefinitionSchema>;
5257
5270
  export type ChannelCapabilityType = z.infer<typeof ChannelCapabilityTypeSchema>;
5258
5271
  export type ChannelCapability = z.infer<typeof ChannelCapabilitySchema>;
@@ -5368,6 +5381,49 @@ export type MessageSendAttachment = z.infer<typeof MessageSendAttachmentSchema>;
5368
5381
  export type MessageSendMessage = z.infer<typeof MessageSendMessageSchema>;
5369
5382
  export type MessageSendInput = z.infer<typeof MessageSendInputSchema>;
5370
5383
  export type MessageSendOutput = z.infer<typeof MessageSendOutputSchema>;
5384
+ export declare const CalendarWindowPullWindowSchema: z.ZodObject<{
5385
+ startAt: z.ZodString;
5386
+ endAt: z.ZodString;
5387
+ timezone: z.ZodOptional<z.ZodString>;
5388
+ }, z.core.$strip>;
5389
+ export declare const CalendarWindowPullModelSchema: z.ZodObject<{
5390
+ id: z.ZodString;
5391
+ handle: z.ZodOptional<z.ZodString>;
5392
+ }, z.core.$strip>;
5393
+ export declare const CalendarWindowPullEntitySchema: z.ZodObject<{
5394
+ handle: z.ZodString;
5395
+ }, z.core.$strip>;
5396
+ export declare const CalendarWindowPullCalendarsSchema: z.ZodObject<{
5397
+ ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
5398
+ }, z.core.$strip>;
5399
+ export declare const CalendarWindowPullInputSchema: z.ZodObject<{
5400
+ window: z.ZodObject<{
5401
+ startAt: z.ZodString;
5402
+ endAt: z.ZodString;
5403
+ timezone: z.ZodOptional<z.ZodString>;
5404
+ }, z.core.$strip>;
5405
+ model: z.ZodOptional<z.ZodObject<{
5406
+ id: z.ZodString;
5407
+ handle: z.ZodOptional<z.ZodString>;
5408
+ }, z.core.$strip>>;
5409
+ entity: z.ZodOptional<z.ZodObject<{
5410
+ handle: z.ZodString;
5411
+ }, z.core.$strip>>;
5412
+ calendars: z.ZodOptional<z.ZodObject<{
5413
+ ids: z.ZodOptional<z.ZodArray<z.ZodString>>;
5414
+ }, z.core.$strip>>;
5415
+ }, z.core.$strip>;
5416
+ export declare const CalendarWindowPullOutputSchema: z.ZodObject<{
5417
+ calendarsUpserted: z.ZodNumber;
5418
+ eventsUpserted: z.ZodNumber;
5419
+ truncated: z.ZodBoolean;
5420
+ }, z.core.$strip>;
5421
+ export type CalendarWindowPullWindow = z.infer<typeof CalendarWindowPullWindowSchema>;
5422
+ export type CalendarWindowPullModel = z.infer<typeof CalendarWindowPullModelSchema>;
5423
+ export type CalendarWindowPullEntity = z.infer<typeof CalendarWindowPullEntitySchema>;
5424
+ export type CalendarWindowPullCalendars = z.infer<typeof CalendarWindowPullCalendarsSchema>;
5425
+ export type CalendarWindowPullInput = z.infer<typeof CalendarWindowPullInputSchema>;
5426
+ export type CalendarWindowPullOutput = z.infer<typeof CalendarWindowPullOutputSchema>;
5371
5427
  export declare const MessageBulkRecipientSchema: z.ZodObject<{
5372
5428
  address: z.ZodString;
5373
5429
  renderedBody: z.ZodString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skedyul",
3
- "version": "1.7.28",
3
+ "version": "1.7.29",
4
4
  "description": "The Skedyul SDK for Node.js",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",