@vertesia/appgen-docs 1.5.0-dev.20260804.124748Z → 1.5.0-dev.20260807.073259Z

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.
@@ -18,7 +18,7 @@ For package-only checks during authoring, run:
18
18
  pnpm run service:build:server
19
19
  ```
20
20
 
21
- The output must list the package artifacts. If an expected type, interaction, prompt, process, view, dashboard, template, widget, activity, tool, or seed script is missing from the summary, fix the exports before publishing.
21
+ The output must list the package artifacts. If an expected type, interaction, prompt, process, view, dashboard, template, widget, activity, hook, subscription, tool, or seed script is missing from the summary, fix the exports before publishing.
22
22
 
23
23
  ## ServerConfig Checklist
24
24
 
@@ -29,9 +29,12 @@ import type { ToolServerConfig } from '@vertesia/tools-sdk';
29
29
  import {
30
30
  activities,
31
31
  dashboards,
32
+ hooks,
32
33
  interactions,
34
+ mcpProviders,
33
35
  processes,
34
36
  skills,
37
+ subscriptions,
35
38
  templates,
36
39
  tools,
37
40
  types,
@@ -49,9 +52,17 @@ export const ServerConfig = {
49
52
  dashboards,
50
53
  processes,
51
54
  views,
55
+ hooks,
56
+ subscriptions,
57
+ mcpProviders,
52
58
  } satisfies ToolServerConfig;
53
59
  ```
54
60
 
61
+ The app module must provide a typed empty default for every supported contribution kind, even when the app does not
62
+ currently register one. When adding a new contribution kind to the template, export its default from
63
+ `src/modules/app/resources`, add it to the codegen `SERVER_RESOURCES` list, and let codegen regenerate
64
+ `src/tool-server/app-server-modules.ts`. Do not put app-owned registries directly under `src/tool-server`.
65
+
55
66
  If a capability is authored in source but absent from the package summary, check that:
56
67
 
57
68
  1. the capability collection exports from its own `index.ts`
@@ -14,6 +14,9 @@ Full code examples for each resource type. SKILL.md has the workflow and decisio
14
14
  - [Interaction (code-based)](#interaction-code-based)
15
15
  - [Content Type](#content-type)
16
16
  - [Rendering Template](#rendering-template)
17
+ - [Application lifecycle hooks](#application-lifecycle-hooks)
18
+ - [Application event hooks](#application-event-hooks)
19
+ - [Application event subscriptions](#application-event-subscriptions)
17
20
  - [Collection registration & icons](#collection-registration--icons)
18
21
 
19
22
  ---
@@ -373,6 +376,148 @@ export const MyTemplates = new RenderingTemplateCollection({
373
376
 
374
377
  ---
375
378
 
379
+ ## Application lifecycle hooks
380
+
381
+ Lifecycle hooks are authenticated server handlers, not resource collections. They remain app-owned module
382
+ contributions. Use them when installation must initialize project data or uninstallation must clean it up. Keep install
383
+ hooks idempotent because they may be invoked again for recovery or reinstallation.
384
+
385
+ ### `src/modules/app/resources/hooks/install.ts`
386
+
387
+ ```typescript
388
+ import type { AppLifecycleHook } from "@vertesia/tools-sdk";
389
+
390
+ export const install = (async (context) => {
391
+ const client = await context.getClient();
392
+ const project = context.payload.project;
393
+ if (!project) throw new Error("Install hooks require a project-scoped token");
394
+ const installationId = context.metadata.app_install_id;
395
+ const settings = context.metadata.app_settings;
396
+
397
+ // Query existing project state first and create only what is missing.
398
+ console.log("Installing app", { projectId: project.id, installationId, settings });
399
+ void client;
400
+ }) satisfies AppLifecycleHook;
401
+ ```
402
+
403
+ An uninstall hook has the same signature and belongs in `src/modules/app/resources/hooks/uninstall.ts`.
404
+
405
+ ### Registration
406
+
407
+ ```typescript
408
+ // src/modules/app/resources/hooks/index.ts
409
+ import type { AppHookDefinition } from "@vertesia/tools-sdk";
410
+ import { install } from "./install.js";
411
+
412
+ export const hooks = [
413
+ { kind: "lifecycle", name: "install", handler: install },
414
+ ] satisfies AppHookDefinition[];
415
+ ```
416
+
417
+ Registered hooks are exposed as authenticated POST endpoints at `/api/hooks/install` and `/api/hooks/uninstall`. The
418
+ app package advertises their endpoint paths under `hooks` for inspection. Studio invokes the conventional endpoints
419
+ directly and treats a 404 as an absent optional hook.
420
+
421
+ Building an immutable version advertises these definitions but does not execute them. Studio runs the promoted
422
+ version's install hook during promotion reconciliation and runs the previous promoted version's uninstall hook when
423
+ it is replaced or removed. For an unpromoted candidate, validate source registration and package output only; do not
424
+ invoke lifecycle endpoints manually or fail candidate QA because their side effects are absent.
425
+
426
+ In an appgen capability manifest, declare lifecycle hooks with type `hook` and ids such as
427
+ `app:<app-name>:install` and `app:<app-name>:uninstall`.
428
+
429
+ Do not create project-local copies of app-owned package type definitions. When hooks create content objects, use the
430
+ portable `app:<app-name>:<type-name>` type reference.
431
+
432
+ ---
433
+
434
+ ## Application event hooks
435
+
436
+ Event hooks are authenticated webhook handlers for platform event deliveries. Their payload is the standard event
437
+ envelope `{ event, delivery: { id, subscription_id, attempt } }`, and their context exposes the caller token,
438
+ decoded token payload, and `getClient()`.
439
+
440
+ ### `src/modules/app/resources/hooks/content-updated.ts`
441
+
442
+ ```typescript
443
+ import type { AppEventHook } from "@vertesia/tools-sdk";
444
+
445
+ export const contentUpdated = (async ({ event, delivery }, context) => {
446
+ const client = await context.getClient();
447
+ console.log("Processing event", {
448
+ eventId: event.event_id,
449
+ category: event.event_category,
450
+ action: event.action,
451
+ resourceId: event.resource_id,
452
+ deliveryId: delivery.id,
453
+ });
454
+ void client;
455
+ }) satisfies AppEventHook;
456
+ ```
457
+
458
+ ### Registration
459
+
460
+ ```typescript
461
+ import type { AppHookDefinition } from "@vertesia/tools-sdk";
462
+ import { contentUpdated } from "./content-updated.js";
463
+
464
+ export const hooks = [
465
+ {
466
+ kind: "event",
467
+ name: "content-updated",
468
+ description: "Processes updated content objects.",
469
+ handler: contentUpdated,
470
+ },
471
+ ] satisfies AppHookDefinition[];
472
+ ```
473
+
474
+ Event hook names must be kebab-case URL-safe segments. `install` and `uninstall` are reserved. The example is exposed
475
+ at `POST /api/hooks/content-updated` and advertised by `/api/package?scope=hooks`.
476
+ Represent it in an appgen capability manifest as a `hook` artifact such as
477
+ `app:<app-name>:content-updated`.
478
+
479
+ ---
480
+
481
+ ## Application event subscriptions
482
+
483
+ Subscriptions are declarative package contributions that route matching platform events to an event hook in the same
484
+ app. They do not contain a deployment URL or project scope. Studio derives both from the version selected during
485
+ promotion.
486
+
487
+ ```typescript
488
+ // src/modules/app/resources/subscriptions/index.ts
489
+ import type { AppEventSubscriptionDefinition } from "@vertesia/tools-sdk";
490
+
491
+ export const subscriptions = [
492
+ {
493
+ id: "content-updated",
494
+ name: "Content updated",
495
+ description: "Refresh app-owned projections after content changes.",
496
+ hook: "content-updated",
497
+ filter: {
498
+ action: ["update"],
499
+ resource_type: ["content_object"],
500
+ },
501
+ run_as_role: "automation",
502
+ enabled: true,
503
+ priority: "normal",
504
+ },
505
+ ] satisfies AppEventSubscriptionDefinition[];
506
+ ```
507
+
508
+ The `hook` value must match the `name` of a registered event hook. Package generation rejects missing hooks,
509
+ lifecycle hooks, duplicate subscription ids, and ids that are not kebab-case. Multiple subscriptions may reference
510
+ the same event hook with different filters. Inspect the result with `GET /api/package?scope=subscriptions`.
511
+ Represent each definition in an appgen capability manifest as a `subscription` artifact such as
512
+ `app:<app-name>:content-updated`.
513
+
514
+ An unpromoted candidate exposes these package definitions but does not create protected Event Bus subscriptions, and
515
+ matching events are not delivered to that candidate's hook. Candidate validation is therefore limited to source and
516
+ package-summary wiring. Use Event Bus subscription and delivery evidence only after the version has been explicitly
517
+ promoted.
518
+
519
+ ---
520
+
376
521
  ## Collection registration & icons
377
522
 
378
523
  ### Adding a collection to its type's index
@@ -76,8 +76,8 @@ export * from './tooltip';
76
76
  import { type VariantProps } from 'class-variance-authority';
77
77
  import * as React from 'react';
78
78
  declare const variants: (props?: ({
79
- size?: "xs" | "sm" | "md" | "lg" | "xl" | null | undefined;
80
- variant?: "default" | "legacy" | "unstyled" | "noPadding" | null | undefined;
79
+ size?: "lg" | "md" | "sm" | "xl" | "xs" | null | undefined;
80
+ variant?: "default" | "legacy" | "noPadding" | "unstyled" | null | undefined;
81
81
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
82
82
  type InputVariant = 'default' | 'unstyled' | 'noPadding' | 'legacy';
83
83
  export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size' | 'onChange'> {
@@ -102,8 +102,8 @@ export { Input };
102
102
  import { type VariantProps } from 'class-variance-authority';
103
103
  import * as React from 'react';
104
104
  declare const buttonVariants: (props?: ({
105
- variant?: "link" | "destructive" | "outline" | "secondary" | "ghost" | "primary" | "unstyled" | null | undefined;
106
- size?: "xs" | "sm" | "md" | "lg" | "xl" | "none" | "icon" | null | undefined;
105
+ variant?: "destructive" | "ghost" | "link" | "outline" | "primary" | "secondary" | "unstyled" | null | undefined;
106
+ size?: "icon" | "lg" | "md" | "none" | "sm" | "xl" | "xs" | null | undefined;
107
107
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
108
108
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
109
109
  asChild?: boolean;
@@ -150,7 +150,7 @@ export { Button, buttonVariants, CopyButton };
150
150
  import { type VariantProps } from 'class-variance-authority';
151
151
  import type * as React from 'react';
152
152
  declare const badgeVariants: (props?: ({
153
- variant?: "done" | "default" | "destructive" | "outline" | "secondary" | "success" | "attention" | "info" | null | undefined;
153
+ variant?: "attention" | "default" | "destructive" | "done" | "info" | "outline" | "secondary" | "success" | null | undefined;
154
154
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
155
155
  interface BaseBadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof badgeVariants> {
156
156
  children: React.ReactNode;
@@ -158,7 +158,7 @@ interface BaseBadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantP
158
158
  }
159
159
  export declare function Badge({ className, variant, children, onClick, ...props }: BaseBadgeProps): React.JSX.Element;
160
160
  declare const dotBadgeVariants: (props?: ({
161
- variant?: "done" | "default" | "destructive" | "outline" | "success" | "attention" | "info" | null | undefined;
161
+ variant?: "attention" | "default" | "destructive" | "done" | "info" | "outline" | "success" | null | undefined;
162
162
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
163
163
  interface DotBadgeProps extends React.HTMLAttributes<HTMLSpanElement>, VariantProps<typeof dotBadgeVariants> {
164
164
  children?: React.ReactNode;
@@ -743,12 +743,13 @@ interface FlexibleHeightLayoutProps {
743
743
  }
744
744
  export declare function FullHeightLayout({ className, children }: FlexibleHeightLayoutProps): React.JSX.Element;
745
745
  export declare namespace FullHeightLayout {
746
- var Fixed: ({ heightClass, className, children }: FixedProps) => React.JSX.Element;
747
- var Body: ({ className, children }: BodyProps) => React.JSX.Element;
748
- var VR: () => React.JSX.Element;
749
- var HR: () => React.JSX.Element;
750
- var Flex: ({ className, children }: BodyProps) => React.JSX.Element;
751
- var Tab: ({ children }: {
746
+ export var Fixed: ({ heightClass, className, children }: FixedProps) => React.JSX.Element;
747
+ var _a: ({ className, children }: BodyProps) => React.JSX.Element;
748
+ export { _a as Body };
749
+ export var VR: () => React.JSX.Element;
750
+ export var HR: () => React.JSX.Element;
751
+ export var Flex: ({ className, children }: BodyProps) => React.JSX.Element;
752
+ export var Tab: ({ children }: {
752
753
  children: React.ReactNode;
753
754
  }) => React.JSX.Element;
754
755
  }
@@ -783,7 +784,7 @@ export declare function SidebarSection({ children, title, action, isFooter, clas
783
784
  export declare function SidebarTooltip({ children, text }: {
784
785
  children: React.ReactNode;
785
786
  text?: string;
786
- }): string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | null | undefined> | null | undefined;
787
+ }): string | number | bigint | boolean | import("react").JSX.Element | Iterable<import("react").ReactNode> | Promise<string | number | bigint | boolean | Iterable<import("react").ReactNode> | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | import("react").ReactPortal | null | undefined> | null | undefined;
787
788
  export interface SidebarItemIconProps {
788
789
  className?: string;
789
790
  'aria-hidden'?: boolean | 'true' | 'false';
@@ -940,9 +941,9 @@ declare class UserSession {
940
941
  name: string;
941
942
  } | undefined;
942
943
  get project(): {
943
- account: string;
944
944
  id: string;
945
945
  name: string;
946
+ account: string;
946
947
  restricted?: boolean | undefined;
947
948
  } | undefined;
948
949
  get accounts(): {
@@ -157,9 +157,9 @@ export declare class VertesiaClient extends AbstractFetchClient<VertesiaClient>
157
157
  getRawJWT(): Promise<string | null>;
158
158
  getDecodedJWT(): Promise<AuthTokenPayload | null>;
159
159
  getProject(): Promise<{
160
- account: string;
161
160
  id: string;
162
161
  name: string;
162
+ account: string;
163
163
  restricted?: boolean | undefined;
164
164
  } | null>;
165
165
  getAccount(): Promise<{
@@ -234,7 +234,7 @@ export declare function decodeEndpoints(endpoints: string | Record<string, strin
234
234
  // @vertesia/client: AppsApi.d.ts
235
235
  // -----------------------------------------------------------------------------
236
236
  import { ApiTopic, type ClientBase } from '@vertesia/api-fetch-client';
237
- import type { AppBuildProgress, AppDeleteSummary, AppDevelopmentTaskDetails, AppDevelopmentTaskList, AppInspectionResult, AppInstallation, AppInstallationKind, AppInstallationListEntry, AppInstallationPayload, AppInstallationWithManifest, AppManifest, AppManifestData, AppPackage, AppPackageScope, AppRepoBranch, AppRepoCommits, AppRepoDocumentCommit, AppRepoRefs, AppRepoTree, AppScaffoldProgress, AppToolCollection, AppVersionListQuery, AppVersionRecord, CountResult, CreateAppRepoBranchRequest, DeleteAppVersionResponse, ProjectRef, PromoteAppVersionResponse, RequireAtLeastOne, StartAppBuildRequest, StartAppBuildResponse, StartAppScaffoldRequest, StartAppScaffoldResponse, UpsertAppVersionRequest, ValidateUrlResponse } from '@vertesia/common';
237
+ import type { AppApiKeyCollectionParams, AppBuildProgress, AppDeleteSummary, AppDevelopmentTaskDetails, AppDevelopmentTaskList, AppInspectionResult, AppInstallation, AppInstallationKind, AppInstallationListEntry, AppInstallationPayload, AppInstallationWithManifest, AppManifest, AppManifestData, AppPackage, AppPackageScope, AppRepoBranch, AppRepoCommits, AppRepoDocumentCommit, AppRepoRefs, AppRepoTree, AppScaffoldProgress, AppToolCollection, AppVersionListQuery, AppVersionRecord, CountResult, CreateAppRepoBranchRequest, DeleteAppVersionResponse, McpApiKeyStatus, ProjectRef, PromoteAppVersionResponse, RequireAtLeastOne, StartAppBuildRequest, StartAppBuildResponse, StartAppScaffoldRequest, StartAppScaffoldResponse, UpsertAppVersionRequest, ValidateUrlResponse } from '@vertesia/common';
238
238
  export interface OrphanedAppInstallation extends Omit<AppInstallation, 'manifest'> {
239
239
  manifest: null;
240
240
  }
@@ -247,6 +247,16 @@ export default class AppsApi extends ApiTopic {
247
247
  * which the server treats as a dry-run and returns counts + paths.
248
248
  */
249
249
  previewDelete(id: string): Promise<AppDeleteSummary>;
250
+ /**
251
+ * Store the API key of an MCP tool collection declared with `auth: 'api_key'`.
252
+ * The key is write-only: it is encrypted server-side and never returned by any endpoint,
253
+ * so the response carries only the configured flag and a masked hint.
254
+ */
255
+ setMcpCollectionApiKey(appId: string, collectionId: string, apiKey: string): Promise<McpApiKeyStatus>;
256
+ /** Whether an MCP tool collection has an API key stored, with a masked hint for display. */
257
+ getMcpCollectionApiKeyStatus(appId: string, collectionId: string): Promise<McpApiKeyStatus>;
258
+ /** Remove the stored API key of an MCP tool collection. */
259
+ deleteMcpCollectionApiKey(appId: string, collectionId: string): Promise<McpApiKeyStatus>;
250
260
  /**
251
261
  * Cascade-delete an app and everything attached to it (versions,
252
262
  * installations + ACEs, git repo on the app-git server). Pass through
@@ -361,7 +371,7 @@ export default class AppsApi extends ApiTopic {
361
371
  client_id?: string;
362
372
  client_secret?: string;
363
373
  scopes?: string[];
364
- }>): Promise<AppInstallation>;
374
+ }>, apiKeyParams?: AppApiKeyCollectionParams): Promise<AppInstallation>;
365
375
  /**
366
376
  * Remove the given app from the current project.
367
377
  * @param installationId - the id of the app installation
@@ -1435,6 +1445,10 @@ import type { BucketReadAccessStatusResponse, BulkUploadUrlsPayload, BulkUploadU
1435
1445
  import { StreamSource } from '../StreamSource.js';
1436
1446
  export declare const MEMORIES_PREFIX = "memories";
1437
1447
  export declare const ARTIFACTS_PREFIX = "agents";
1448
+ export declare class FileDownloadError extends Error {
1449
+ readonly status?: number;
1450
+ constructor(location: string, status?: number, statusText?: string, cause?: unknown);
1451
+ }
1438
1452
  export declare function getMemoryFilePath(name: string): string;
1439
1453
  /**
1440
1454
  * Build the storage path for an agent artifact
@@ -2410,7 +2424,7 @@ export interface GroundedMetadata {
2410
2424
  }
2411
2425
  export type Transcript = z.infer<typeof TranscriptSchema>;
2412
2426
  export declare const TextExtractionStatus: {
2413
- readonly success: "success";
2427
+ readonly success: 'success';
2414
2428
  };
2415
2429
  export interface TranscriptMediaResult {
2416
2430
  hasText: boolean;
@@ -2559,8 +2573,8 @@ export declare enum ImageRenditionFormat {
2559
2573
  webp = "webp"
2560
2574
  }
2561
2575
  export declare const MarkdownRenditionFormat: {
2562
- readonly docx: "docx";
2563
- readonly pdf: "pdf";
2576
+ readonly docx: 'docx';
2577
+ readonly pdf: 'pdf';
2564
2578
  };
2565
2579
  export type MarkdownRenditionFormat = z.infer<typeof MarkdownRenditionFormatSchema>;
2566
2580
  export interface GetRenditionParams {
@@ -3701,6 +3715,12 @@ export declare enum FileProcessingStatus {
3701
3715
  ERROR = "error"
3702
3716
  }
3703
3717
  export type ConversationFile = z.infer<typeof ConversationFileSchema>;
3718
+ /**
3719
+ * A file is deliverable when it is ready and has not yet been delivered to the agent as part
3720
+ * of a user message. Deliverable files get attached to the next message; consumed ones stay
3721
+ * reachable to tools via artifact_path/md_path but are not re-attached.
3722
+ */
3723
+ export declare function isDeliverableFile(file: ConversationFile): boolean;
3704
3724
  /**
3705
3725
  * Details for file processing SYSTEM messages.
3706
3726
  * Used when type is AgentMessageType.SYSTEM with system_type: 'file_processing'.
@@ -3936,13 +3956,13 @@ export interface ActiveWorkstreamsQueryResult {
3936
3956
  // @vertesia/common: apps.d.ts
3937
3957
  // -----------------------------------------------------------------------------
3938
3958
  import type { z } from 'zod';
3939
- import type { AgentToolApprovalClassSchema, AgentToolDefinitionSchema, AppBuildProgressSchema, AppBuildProgressStatusSchema, AppBuildTriggerSchema, AppDevelopmentTaskDetailsSchema, AppDevelopmentTaskListSchema, AppDevelopmentTaskSchema, AppInspectionCapabilityReportSchema, AppInspectionIssueSchema, AppInspectionResultSchema, AppInstallationKindSchema, AppInstallationOAuthBindingSchema, AppInstallationPayloadSchema, AppInstallationProjectsQuerySchema, AppInstallationProviderBindingSchema, AppInstallationsQuerySchema, AppOAuthCollectionParamsSchema, AppOAuthProviderParamsSchema, AppRepoBranchSchema, AppRepoCommitSchema, AppRepoCommitsSchema, AppRepoDocumentCommitSchema, AppRepoRefSchema, AppRepoRefsSchema, AppRepoTreeEntrySchema, AppRepoTreeSchema, AppScaffoldModuleSchema, AppScaffoldProgressSchema, AppScaffoldProgressStatusSchema, AppToolCollectionSchema, AppVersionGitRefTypeSchema, AppVersionGitSourceSchema, AppVersionKindSchema, AppVersionRecordSchema, AppVersionStateSchema, AppVersionStorageSchema, AppVersionTargetSchema, AppVersionUrlsSchema, DeleteAppVersionResponseSchema, OAuthClientCredentialsSchema, StartAppBuildRequestSchema, StartAppBuildResponseSchema, StartAppScaffoldRequestSchema, StartAppScaffoldResponseSchema, UpdateAppInstallationToolAllowlistPayloadSchema, UpsertAppVersionRequestSchema, ValidateUrlRequestSchema, ValidateUrlResponseSchema } from './api-schemas/app-lifecycle.js';
3940
- import type { AppInstallationListEntrySchema, AppInstallationSchema, AppInstallationWithManifestSchema, AppManifestDataSchema, AppManifestSchema, AppPackageSchema, AppWidgetInfoSchema, CompositeAppCardOverridesSchema, CompositeAppConfigPayloadSchema, CompositeAppConfigSchema, CompositeAppEntrySchema, CompositeAppHeaderItemKindSchema, CompositeAppHeaderItemSchema, CompositeAppHeaderItemTargetSchema, CompositeAppHeaderOverridesSchema, CompositeAppHomePluginSchema, CompositeAppLogoOverridesSchema, CompositeAppMenuSectionSchema, CompositeAppMessageOverridesSchema, CompositeAppMessageStyleSchema, CompositeAppNavItemPermissionsSchema, CompositeAppSidebarOverridesSchema, CompositeAppSwitchersOverridesSchema, CompositeAppThemeOverridesSchema, CompositeAppUserMenuOverridesSchema, PromoteAppVersionResponseSchema } from './api-schemas/app-runtime.js';
3941
- import type { AppAccessControlSchema, AppAvailableInSchema, AppCapabilitiesSchema, AppGitSourceConfigSchema, AppManifestSourceSchema, AppSourceConfigSchema, AppUIConfigSchema, MCPOAuthConfigSchema, MCPToolAnnotationsSchema, MCPToolCollectionObjectSchema, McpOAuthConnectResponseSchema, McpOAuthDisconnectResponseSchema, McpOAuthTokenRequestSchema, McpOAuthTokenResponseSchema, OAuthAuthorizeResponseSchema, OAuthAuthStatusSchema, OAuthMetadataResponseSchema, ToolCollectionAuthTypeSchema, ToolCollectionObjectSchema, VertesiaSDKToolCollectionObjectSchema } from './api-schemas/apps.js';
3959
+ import type { AgentToolApprovalClassSchema, AgentToolDefinitionSchema, AppApiKeyCollectionParamsSchema, AppBuildProgressSchema, AppBuildProgressStatusSchema, AppBuildTriggerSchema, AppDeleteSummarySchema, AppDevelopmentTaskDetailsSchema, AppDevelopmentTaskListSchema, AppDevelopmentTaskSchema, AppInspectionCapabilityReportSchema, AppInspectionIssueSchema, AppInspectionResultSchema, AppInstallationKindSchema, AppInstallationOAuthBindingSchema, AppInstallationPayloadSchema, AppInstallationProjectsQuerySchema, AppInstallationProviderBindingSchema, AppInstallationsQuerySchema, AppOAuthCollectionParamsSchema, AppOAuthProviderParamsSchema, AppRepoBranchSchema, AppRepoCommitSchema, AppRepoCommitsSchema, AppRepoDocumentCommitSchema, AppRepoRefSchema, AppRepoRefsSchema, AppRepoTreeEntrySchema, AppRepoTreeSchema, AppScaffoldModuleSchema, AppScaffoldProgressSchema, AppScaffoldProgressStatusSchema, AppToolCollectionSchema, AppVersionGitRefTypeSchema, AppVersionGitSourceSchema, AppVersionKindSchema, AppVersionRecordSchema, AppVersionStateSchema, AppVersionStorageSchema, AppVersionTargetSchema, AppVersionUrlsSchema, DeleteAppVersionResponseSchema, McpApiKeyCredentialSchema, OAuthClientCredentialsSchema, StartAppBuildRequestSchema, StartAppBuildResponseSchema, StartAppScaffoldRequestSchema, StartAppScaffoldResponseSchema, UpdateAppInstallationToolAllowlistPayloadSchema, UpsertAppVersionRequestSchema, ValidateUrlRequestSchema, ValidateUrlResponseSchema } from './api-schemas/app-lifecycle.js';
3960
+ import type { AppEventHookDeliverySchema, AppEventHookPayloadSchema, AppEventSubscriptionDefinitionSchema, AppInstallationListEntrySchema, AppInstallationSchema, AppInstallationWithManifestSchema, AppManifestDataSchema, AppManifestSchema, AppPackageEventHookSchema, AppPackageHooksSchema, AppPackageSchema, AppWidgetInfoSchema, CompositeAppCardOverridesSchema, CompositeAppConfigPayloadSchema, CompositeAppConfigSchema, CompositeAppEntrySchema, CompositeAppHeaderItemKindSchema, CompositeAppHeaderItemSchema, CompositeAppHeaderItemTargetSchema, CompositeAppHeaderOverridesSchema, CompositeAppHomePluginSchema, CompositeAppLogoOverridesSchema, CompositeAppMenuSectionSchema, CompositeAppMessageOverridesSchema, CompositeAppMessageStyleSchema, CompositeAppNavItemPermissionsSchema, CompositeAppSidebarOverridesSchema, CompositeAppSwitchersOverridesSchema, CompositeAppThemeOverridesSchema, CompositeAppUserMenuOverridesSchema, PromoteAppVersionResponseSchema } from './api-schemas/app-runtime.js';
3961
+ import type { AppAccessControlSchema, AppAvailableInSchema, AppCapabilitiesSchema, AppGitSourceConfigSchema, AppManifestSourceSchema, AppSourceConfigSchema, AppUIConfigSchema, MCPApiKeyConfigSchema, MCPOAuthConfigSchema, MCPToolAnnotationsSchema, MCPToolCollectionObjectSchema, McpApiKeyStatusSchema, McpOAuthConnectResponseSchema, McpOAuthDisconnectResponseSchema, McpOAuthTokenRequestSchema, McpOAuthTokenResponseSchema, OAuthAuthorizeResponseSchema, OAuthAuthStatusSchema, OAuthMetadataResponseSchema, SetMcpApiKeyRequestSchema, ToolCollectionAuthTypeSchema, ToolCollectionObjectSchema, VertesiaSDKToolCollectionObjectSchema } from './api-schemas/apps.js';
3942
3962
  import type { RemoteActivityDefinitionSchema } from './api-schemas/integrations.js';
3943
3963
  import type { ProjectToolInfoSchema, RenderingTemplateDefinitionRefSchema, RenderingTemplateDefinitionSchema } from './api-schemas/project.js';
3944
3964
  /** Allowed values for AppUINavItem.preferredSection */
3945
- export declare const PREFERRED_SECTIONS: readonly ["default", "footer", "settings"];
3965
+ export declare const PREFERRED_SECTIONS: readonly ['default', 'footer', 'settings'];
3946
3966
  /**
3947
3967
  * Additional navigation item for an app's UI configuration.
3948
3968
  * Used in AppUIConfig.navigation to define sidebar navigation entries in CompositeApp shell contexts.
@@ -3978,6 +3998,8 @@ export type ToolCollectionAuthType = z.infer<typeof ToolCollectionAuthTypeSchema
3978
3998
  */
3979
3999
  export type ToolCollectionType = 'mcp' | 'vertesia_sdk';
3980
4000
  export type MCPOAuthConfig = z.infer<typeof MCPOAuthConfigSchema>;
4001
+ /** Install-time provisioning blueprint for an `auth: 'api_key'` MCP collection. Never holds the key. */
4002
+ export type MCPApiKeyConfig = z.infer<typeof MCPApiKeyConfigSchema>;
3981
4003
  export type MCPToolCollectionObject = z.infer<typeof MCPToolCollectionObjectSchema>;
3982
4004
  export type VertesiaSDKToolCollectionObject = z.infer<typeof VertesiaSDKToolCollectionObjectSchema>;
3983
4005
  export type ToolCollectionObject = z.infer<typeof ToolCollectionObjectSchema>;
@@ -4030,7 +4052,7 @@ export type RemoteActivityDefinition = z.infer<typeof RemoteActivityDefinitionSc
4030
4052
  * Canonical app capabilities Studio renders/supports. The public type is derived from
4031
4053
  * this list so runtime validation and TypeScript cannot drift.
4032
4054
  */
4033
- export declare const APP_CAPABILITIES: readonly ["ui", "tools", "interactions", "types", "processes", "views", "templates", "dashboards"];
4055
+ export declare const APP_CAPABILITIES: readonly ['ui', 'tools', 'interactions', 'types', 'processes', 'views', 'templates', 'dashboards'];
4034
4056
  export type AppCapabilities = z.infer<typeof AppCapabilitiesSchema>;
4035
4057
  /**
4036
4058
  * Header carrying the app version a generated-app UI is running, so studio/zeno resolve app-owned
@@ -4045,13 +4067,13 @@ export declare const APP_VERSION_HEADER = "x-vertesia-app-version";
4045
4067
  * {@link AppCapabilities} folds together. Used by the App Solution Architect manifest and
4046
4068
  * the publish-time capability gate.
4047
4069
  */
4048
- export declare const APP_ARTIFACT_TYPES: readonly ["interaction", "agent", "type", "process", "view", "template", "dashboard", "activity", "tool"];
4070
+ export declare const APP_ARTIFACT_TYPES: readonly ['interaction', 'agent', 'type', 'process', 'view', 'template', 'dashboard', 'activity', 'tool', 'hook', 'subscription'];
4049
4071
  export type AppArtifactType = (typeof APP_ARTIFACT_TYPES)[number];
4050
4072
  /**
4051
4073
  * A single platform artifact the App Solution Architect requires the build to create.
4052
4074
  * `id` is the app-owned in-code id the implementation must register and reference
4053
4075
  * (e.g. `app:<name>:main:extract-item` for interactions/agents, `app:<name>:<type>` for
4054
- * types, `app:<name>:<process>` for processes).
4076
+ * types, `app:<name>:<process>` for processes, and `app:<name>:<local-id>` for hooks/subscriptions).
4055
4077
  */
4056
4078
  /**
4057
4079
  * Build progress for one artifact, maintained by the developer agent as a living checklist:
@@ -4081,10 +4103,10 @@ export interface AppPlannedArtifact {
4081
4103
  }
4082
4104
  /**
4083
4105
  * Structured result the App Solution Architect emits alongside its prose artifacts — the
4084
- * machine-readable contract for the build. The implementation MUST create and successfully
4085
- * exercise every required artifact before building a deployable version. Persisted into the app repo as
4086
- * {@link APP_CAPABILITY_MANIFEST_PATH} so it survives across runs and the version-build
4087
- * capability gate can verify against it deterministically. If the builder finds the plan
4106
+ * machine-readable contract for the build. The implementation MUST register every required artifact
4107
+ * before building a candidate, then successfully exercise it after that candidate is installed and
4108
+ * version-pinned. Persisted into the app repo as {@link APP_CAPABILITY_MANIFEST_PATH} so it survives
4109
+ * across runs and the package-registration gate can verify it deterministically. If the builder finds the plan
4088
4110
  * wrong or insufficient, the orchestrator relaunches the architect to revise the manifest;
4089
4111
  * the gate always checks against the latest committed copy.
4090
4112
  */
@@ -4253,8 +4275,13 @@ export type AppRepoBranch = z.infer<typeof AppRepoBranchSchema>;
4253
4275
  * Canonical package scopes, including the catch-all `all`. The public type is derived
4254
4276
  * from this list so request parsing and TypeScript cannot drift.
4255
4277
  */
4256
- export declare const APP_PACKAGE_SCOPES: readonly ["ui", "tools", "interactions", "types", "processes", "views", "templates", "dashboards", "settings", "widgets", "activities", "all"];
4278
+ export declare const APP_PACKAGE_SCOPES: readonly ['ui', 'tools', 'interactions', 'types', 'processes', 'views', 'templates', 'dashboards', 'settings', 'widgets', 'activities', 'hooks', 'subscriptions', 'all'];
4257
4279
  export type AppPackageScope = (typeof APP_PACKAGE_SCOPES)[number];
4280
+ export type AppPackageEventHook = z.infer<typeof AppPackageEventHookSchema>;
4281
+ export type AppPackageHooks = z.infer<typeof AppPackageHooksSchema>;
4282
+ export type AppEventHookDelivery = z.infer<typeof AppEventHookDeliverySchema>;
4283
+ export type AppEventHookPayload = z.infer<typeof AppEventHookPayloadSchema>;
4284
+ export type AppEventSubscriptionDefinition = z.infer<typeof AppEventSubscriptionDefinitionSchema>;
4258
4285
  export type AppPackage = z.infer<typeof AppPackageSchema>;
4259
4286
  /**
4260
4287
  * A single diagnostic produced while inspecting an app's registration state.
@@ -4298,6 +4325,10 @@ export interface OrphanedAppInstallation extends Omit<AppInstallation, 'manifest
4298
4325
  }
4299
4326
  export type OAuthClientCredentials = z.infer<typeof OAuthClientCredentialsSchema>;
4300
4327
  export type AppOAuthCollectionParams = z.infer<typeof AppOAuthCollectionParamsSchema>;
4328
+ /** One installer-supplied MCP API key. */
4329
+ export type McpApiKeyCredential = z.infer<typeof McpApiKeyCredentialSchema>;
4330
+ /** Installer-supplied MCP API keys, keyed by collection id. */
4331
+ export type AppApiKeyCollectionParams = z.infer<typeof AppApiKeyCollectionParamsSchema>;
4301
4332
  export type AppOAuthProviderParams = z.infer<typeof AppOAuthProviderParamsSchema>;
4302
4333
  export type AppInstallationPayload = z.infer<typeof AppInstallationPayloadSchema>;
4303
4334
  export type UpdateAppInstallationToolAllowlistPayload = z.infer<typeof UpdateAppInstallationToolAllowlistPayloadSchema>;
@@ -4323,6 +4354,13 @@ export interface McpOAuthCollectionRef {
4323
4354
  app_install_id: string;
4324
4355
  collection_id: string;
4325
4356
  }
4357
+ /**
4358
+ * Payload for storing the static bearer token of an `auth: 'api_key'` MCP collection.
4359
+ * The key is write-only — it is never echoed back by any endpoint.
4360
+ */
4361
+ export type SetMcpApiKeyRequest = z.infer<typeof SetMcpApiKeyRequestSchema>;
4362
+ /** Whether an `auth: 'api_key'` MCP collection has a key stored, plus a display-only hint. */
4363
+ export type McpApiKeyStatus = z.infer<typeof McpApiKeyStatusSchema>;
4326
4364
  export type McpOAuthTokenRequest = z.infer<typeof McpOAuthTokenRequestSchema>;
4327
4365
  export type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponseSchema>;
4328
4366
  export type McpOAuthConnectResponse = z.infer<typeof McpOAuthConnectResponseSchema>;
@@ -4436,7 +4474,7 @@ export type CompositeAppHeaderItemKind = z.infer<typeof CompositeAppHeaderItemKi
4436
4474
  /** Where a header link opens. */
4437
4475
  export type CompositeAppHeaderItemTarget = z.infer<typeof CompositeAppHeaderItemTargetSchema>;
4438
4476
  /** Stable identifiers for the built-in header items. */
4439
- export declare const COMPOSITE_APP_HEADER_BUILTIN_IDS: readonly ["app_portal", "docs", "help", "user_menu"];
4477
+ export declare const COMPOSITE_APP_HEADER_BUILTIN_IDS: readonly ['app_portal', 'docs', 'help', 'user_menu'];
4440
4478
  /**
4441
4479
  * A single button in the CompositeApp header bar.
4442
4480
  *
@@ -4459,18 +4497,14 @@ export type ValidateUrlResponse = z.infer<typeof ValidateUrlResponseSchema>;
4459
4497
  * Result of DELETE /api/v1/apps/:id. With `?confirm=true` the cascade runs and
4460
4498
  * `deleted: true` is set; without it the endpoint returns a dry-run summary so
4461
4499
  * the UI can show what would be removed.
4500
+ *
4501
+ * Inferred from the published component rather than hand-written: the endpoint
4502
+ * had been declaring `CountResult`, so response validation reported a missing
4503
+ * `count` and every field here as unexpected — and in local development, where
4504
+ * the check fails closed, that surfaced as a 500 raised AFTER the app was
4505
+ * already deleted. Deriving the type is what keeps the two from drifting again.
4462
4506
  */
4463
- export interface AppDeleteSummary {
4464
- confirmed: boolean;
4465
- app_id: string;
4466
- app_name: string;
4467
- versions: number;
4468
- installations: number;
4469
- storage_prefix: string;
4470
- git_repo_url?: string;
4471
- deleted: boolean;
4472
- warnings: string[];
4473
- }
4507
+ export type AppDeleteSummary = z.infer<typeof AppDeleteSummarySchema>;
4474
4508
 
4475
4509
  // -----------------------------------------------------------------------------
4476
4510
  // @vertesia/common: interaction.d.ts
@@ -5233,32 +5267,32 @@ import type { AlterTableOperationSchema, AlterTablePayloadSchema, BatchQueryPayl
5233
5267
  * Supported column data types for DuckDB tables.
5234
5268
  */
5235
5269
  export declare const DataColumnType: {
5236
- readonly STRING: "STRING";
5237
- readonly INTEGER: "INTEGER";
5238
- readonly BIGINT: "BIGINT";
5239
- readonly FLOAT: "FLOAT";
5240
- readonly DOUBLE: "DOUBLE";
5241
- readonly DECIMAL: "DECIMAL";
5242
- readonly BOOLEAN: "BOOLEAN";
5243
- readonly DATE: "DATE";
5244
- readonly TIMESTAMP: "TIMESTAMP";
5245
- readonly JSON: "JSON";
5270
+ readonly STRING: 'STRING';
5271
+ readonly INTEGER: 'INTEGER';
5272
+ readonly BIGINT: 'BIGINT';
5273
+ readonly FLOAT: 'FLOAT';
5274
+ readonly DOUBLE: 'DOUBLE';
5275
+ readonly DECIMAL: 'DECIMAL';
5276
+ readonly BOOLEAN: 'BOOLEAN';
5277
+ readonly DATE: 'DATE';
5278
+ readonly TIMESTAMP: 'TIMESTAMP';
5279
+ readonly JSON: 'JSON';
5246
5280
  };
5247
5281
  export type DataColumnType = z.infer<typeof DataColumnTypeSchema>;
5248
5282
  /**
5249
5283
  * Semantic types that provide AI agents with context about column meaning.
5250
5284
  */
5251
5285
  export declare const SemanticColumnType: {
5252
- readonly EMAIL: "email";
5253
- readonly PHONE: "phone";
5254
- readonly URL: "url";
5255
- readonly CURRENCY: "currency";
5256
- readonly PERCENTAGE: "percentage";
5257
- readonly PERSON_NAME: "person_name";
5258
- readonly ADDRESS: "address";
5259
- readonly COUNTRY: "country";
5260
- readonly DATE_ISO: "date_iso";
5261
- readonly IDENTIFIER: "identifier";
5286
+ readonly EMAIL: 'email';
5287
+ readonly PHONE: 'phone';
5288
+ readonly URL: 'url';
5289
+ readonly CURRENCY: 'currency';
5290
+ readonly PERCENTAGE: 'percentage';
5291
+ readonly PERSON_NAME: 'person_name';
5292
+ readonly ADDRESS: 'address';
5293
+ readonly COUNTRY: 'country';
5294
+ readonly DATE_ISO: 'date_iso';
5295
+ readonly IDENTIFIER: 'identifier';
5262
5296
  };
5263
5297
  export type SemanticColumnType = z.infer<typeof SemanticColumnTypeSchema>;
5264
5298
  /**
@@ -5306,10 +5340,10 @@ export type DataStoreFullSchemaResponse = z.infer<typeof DataStoreFullSchemaResp
5306
5340
  * Data store lifecycle status.
5307
5341
  */
5308
5342
  export declare const DataStoreStatus: {
5309
- readonly CREATING: "creating";
5310
- readonly ACTIVE: "active";
5311
- readonly ERROR: "error";
5312
- readonly ARCHIVED: "archived";
5343
+ readonly CREATING: 'creating';
5344
+ readonly ACTIVE: 'active';
5345
+ readonly ERROR: 'error';
5346
+ readonly ARCHIVED: 'archived';
5313
5347
  };
5314
5348
  export type DataStoreStatus = z.infer<typeof DataStoreStatusSchema>;
5315
5349
  /**
@@ -5334,11 +5368,11 @@ export type GetDataStoreTableQuery = z.infer<typeof GetDataStoreTableQuerySchema
5334
5368
  * Import job status.
5335
5369
  */
5336
5370
  export declare const ImportStatus: {
5337
- readonly PENDING: "pending";
5338
- readonly PROCESSING: "processing";
5339
- readonly COMPLETED: "completed";
5340
- readonly FAILED: "failed";
5341
- readonly ROLLED_BACK: "rolled_back";
5371
+ readonly PENDING: 'pending';
5372
+ readonly PROCESSING: 'processing';
5373
+ readonly COMPLETED: 'completed';
5374
+ readonly FAILED: 'failed';
5375
+ readonly ROLLED_BACK: 'rolled_back';
5342
5376
  };
5343
5377
  export type ImportStatus = z.infer<typeof ImportStatusSchema>;
5344
5378
  /**
@@ -5474,9 +5508,9 @@ export declare const DEFAULT_RETENTION_CONFIG: DataStoreRetentionConfig;
5474
5508
  */
5475
5509
  export declare const DashboardStatus: {
5476
5510
  /** Dashboard is active and usable */
5477
- readonly ACTIVE: "active";
5511
+ readonly ACTIVE: 'active';
5478
5512
  /** Dashboard has been archived (soft deleted) */
5479
- readonly ARCHIVED: "archived";
5513
+ readonly ARCHIVED: 'archived';
5480
5514
  };
5481
5515
  export type DashboardStatus = z.infer<typeof DashboardStatusSchema>;
5482
5516
  /**
@@ -61,6 +61,7 @@ export * from './secrets.js';
61
61
  export * from './skill.js';
62
62
  export * from './store/index.js';
63
63
  export type { ContentObjectExportArtifact, ContentObjectExportArtifactFile, ContentObjectExportProgress, ContentObjectExportResult, ContentObjectExportStatusResponse, DeleteContentObjectExportResponse, ExportContentObjectsFilter, ExportContentObjectsIncludeOptions, ExportedContentObjectRecord, ListContentObjectExportsResponse, StartContentObjectExportRequest, StartContentObjectExportResponse, ZenoBulkContentObjectExportComposeRequest, ZenoBulkContentObjectExportPlanRequest, ZenoBulkContentObjectExportPlanResponse, ZenoBulkContentObjectExportRequest, ZenoBulkContentObjectExportShardRange, ZenoBulkContentObjectExportShardRequest, ZenoBulkContentObjectExportShardResult, ZenoBulkContentObjectExportSplitShardRequest, ZenoBulkContentObjectExportSplitShardResponse, } from './store/store.js';
64
+ export * from './sts-errors.js';
64
65
  export * from './sts-token-types.js';
65
66
  export * from './tenant.js';
66
67
  export * from './tool-execution.js';
@@ -84,13 +85,13 @@ export * from './workflow-analytics.js';
84
85
  // @vertesia/common: apps.d.ts
85
86
  // -----------------------------------------------------------------------------
86
87
  import type { z } from 'zod';
87
- import type { AgentToolApprovalClassSchema, AgentToolDefinitionSchema, AppBuildProgressSchema, AppBuildProgressStatusSchema, AppBuildTriggerSchema, AppDevelopmentTaskDetailsSchema, AppDevelopmentTaskListSchema, AppDevelopmentTaskSchema, AppInspectionCapabilityReportSchema, AppInspectionIssueSchema, AppInspectionResultSchema, AppInstallationKindSchema, AppInstallationOAuthBindingSchema, AppInstallationPayloadSchema, AppInstallationProjectsQuerySchema, AppInstallationProviderBindingSchema, AppInstallationsQuerySchema, AppOAuthCollectionParamsSchema, AppOAuthProviderParamsSchema, AppRepoBranchSchema, AppRepoCommitSchema, AppRepoCommitsSchema, AppRepoDocumentCommitSchema, AppRepoRefSchema, AppRepoRefsSchema, AppRepoTreeEntrySchema, AppRepoTreeSchema, AppScaffoldModuleSchema, AppScaffoldProgressSchema, AppScaffoldProgressStatusSchema, AppToolCollectionSchema, AppVersionGitRefTypeSchema, AppVersionGitSourceSchema, AppVersionKindSchema, AppVersionRecordSchema, AppVersionStateSchema, AppVersionStorageSchema, AppVersionTargetSchema, AppVersionUrlsSchema, DeleteAppVersionResponseSchema, OAuthClientCredentialsSchema, StartAppBuildRequestSchema, StartAppBuildResponseSchema, StartAppScaffoldRequestSchema, StartAppScaffoldResponseSchema, UpdateAppInstallationToolAllowlistPayloadSchema, UpsertAppVersionRequestSchema, ValidateUrlRequestSchema, ValidateUrlResponseSchema } from './api-schemas/app-lifecycle.js';
88
- import type { AppInstallationListEntrySchema, AppInstallationSchema, AppInstallationWithManifestSchema, AppManifestDataSchema, AppManifestSchema, AppPackageSchema, AppWidgetInfoSchema, CompositeAppCardOverridesSchema, CompositeAppConfigPayloadSchema, CompositeAppConfigSchema, CompositeAppEntrySchema, CompositeAppHeaderItemKindSchema, CompositeAppHeaderItemSchema, CompositeAppHeaderItemTargetSchema, CompositeAppHeaderOverridesSchema, CompositeAppHomePluginSchema, CompositeAppLogoOverridesSchema, CompositeAppMenuSectionSchema, CompositeAppMessageOverridesSchema, CompositeAppMessageStyleSchema, CompositeAppNavItemPermissionsSchema, CompositeAppSidebarOverridesSchema, CompositeAppSwitchersOverridesSchema, CompositeAppThemeOverridesSchema, CompositeAppUserMenuOverridesSchema, PromoteAppVersionResponseSchema } from './api-schemas/app-runtime.js';
89
- import type { AppAccessControlSchema, AppAvailableInSchema, AppCapabilitiesSchema, AppGitSourceConfigSchema, AppManifestSourceSchema, AppSourceConfigSchema, AppUIConfigSchema, MCPOAuthConfigSchema, MCPToolAnnotationsSchema, MCPToolCollectionObjectSchema, McpOAuthConnectResponseSchema, McpOAuthDisconnectResponseSchema, McpOAuthTokenRequestSchema, McpOAuthTokenResponseSchema, OAuthAuthorizeResponseSchema, OAuthAuthStatusSchema, OAuthMetadataResponseSchema, ToolCollectionAuthTypeSchema, ToolCollectionObjectSchema, VertesiaSDKToolCollectionObjectSchema } from './api-schemas/apps.js';
88
+ import type { AgentToolApprovalClassSchema, AgentToolDefinitionSchema, AppApiKeyCollectionParamsSchema, AppBuildProgressSchema, AppBuildProgressStatusSchema, AppBuildTriggerSchema, AppDeleteSummarySchema, AppDevelopmentTaskDetailsSchema, AppDevelopmentTaskListSchema, AppDevelopmentTaskSchema, AppInspectionCapabilityReportSchema, AppInspectionIssueSchema, AppInspectionResultSchema, AppInstallationKindSchema, AppInstallationOAuthBindingSchema, AppInstallationPayloadSchema, AppInstallationProjectsQuerySchema, AppInstallationProviderBindingSchema, AppInstallationsQuerySchema, AppOAuthCollectionParamsSchema, AppOAuthProviderParamsSchema, AppRepoBranchSchema, AppRepoCommitSchema, AppRepoCommitsSchema, AppRepoDocumentCommitSchema, AppRepoRefSchema, AppRepoRefsSchema, AppRepoTreeEntrySchema, AppRepoTreeSchema, AppScaffoldModuleSchema, AppScaffoldProgressSchema, AppScaffoldProgressStatusSchema, AppToolCollectionSchema, AppVersionGitRefTypeSchema, AppVersionGitSourceSchema, AppVersionKindSchema, AppVersionRecordSchema, AppVersionStateSchema, AppVersionStorageSchema, AppVersionTargetSchema, AppVersionUrlsSchema, DeleteAppVersionResponseSchema, McpApiKeyCredentialSchema, OAuthClientCredentialsSchema, StartAppBuildRequestSchema, StartAppBuildResponseSchema, StartAppScaffoldRequestSchema, StartAppScaffoldResponseSchema, UpdateAppInstallationToolAllowlistPayloadSchema, UpsertAppVersionRequestSchema, ValidateUrlRequestSchema, ValidateUrlResponseSchema } from './api-schemas/app-lifecycle.js';
89
+ import type { AppEventHookDeliverySchema, AppEventHookPayloadSchema, AppEventSubscriptionDefinitionSchema, AppInstallationListEntrySchema, AppInstallationSchema, AppInstallationWithManifestSchema, AppManifestDataSchema, AppManifestSchema, AppPackageEventHookSchema, AppPackageHooksSchema, AppPackageSchema, AppWidgetInfoSchema, CompositeAppCardOverridesSchema, CompositeAppConfigPayloadSchema, CompositeAppConfigSchema, CompositeAppEntrySchema, CompositeAppHeaderItemKindSchema, CompositeAppHeaderItemSchema, CompositeAppHeaderItemTargetSchema, CompositeAppHeaderOverridesSchema, CompositeAppHomePluginSchema, CompositeAppLogoOverridesSchema, CompositeAppMenuSectionSchema, CompositeAppMessageOverridesSchema, CompositeAppMessageStyleSchema, CompositeAppNavItemPermissionsSchema, CompositeAppSidebarOverridesSchema, CompositeAppSwitchersOverridesSchema, CompositeAppThemeOverridesSchema, CompositeAppUserMenuOverridesSchema, PromoteAppVersionResponseSchema } from './api-schemas/app-runtime.js';
90
+ import type { AppAccessControlSchema, AppAvailableInSchema, AppCapabilitiesSchema, AppGitSourceConfigSchema, AppManifestSourceSchema, AppSourceConfigSchema, AppUIConfigSchema, MCPApiKeyConfigSchema, MCPOAuthConfigSchema, MCPToolAnnotationsSchema, MCPToolCollectionObjectSchema, McpApiKeyStatusSchema, McpOAuthConnectResponseSchema, McpOAuthDisconnectResponseSchema, McpOAuthTokenRequestSchema, McpOAuthTokenResponseSchema, OAuthAuthorizeResponseSchema, OAuthAuthStatusSchema, OAuthMetadataResponseSchema, SetMcpApiKeyRequestSchema, ToolCollectionAuthTypeSchema, ToolCollectionObjectSchema, VertesiaSDKToolCollectionObjectSchema } from './api-schemas/apps.js';
90
91
  import type { RemoteActivityDefinitionSchema } from './api-schemas/integrations.js';
91
92
  import type { ProjectToolInfoSchema, RenderingTemplateDefinitionRefSchema, RenderingTemplateDefinitionSchema } from './api-schemas/project.js';
92
93
  /** Allowed values for AppUINavItem.preferredSection */
93
- export declare const PREFERRED_SECTIONS: readonly ["default", "footer", "settings"];
94
+ export declare const PREFERRED_SECTIONS: readonly ['default', 'footer', 'settings'];
94
95
  /**
95
96
  * Additional navigation item for an app's UI configuration.
96
97
  * Used in AppUIConfig.navigation to define sidebar navigation entries in CompositeApp shell contexts.
@@ -126,6 +127,8 @@ export type ToolCollectionAuthType = z.infer<typeof ToolCollectionAuthTypeSchema
126
127
  */
127
128
  export type ToolCollectionType = 'mcp' | 'vertesia_sdk';
128
129
  export type MCPOAuthConfig = z.infer<typeof MCPOAuthConfigSchema>;
130
+ /** Install-time provisioning blueprint for an `auth: 'api_key'` MCP collection. Never holds the key. */
131
+ export type MCPApiKeyConfig = z.infer<typeof MCPApiKeyConfigSchema>;
129
132
  export type MCPToolCollectionObject = z.infer<typeof MCPToolCollectionObjectSchema>;
130
133
  export type VertesiaSDKToolCollectionObject = z.infer<typeof VertesiaSDKToolCollectionObjectSchema>;
131
134
  export type ToolCollectionObject = z.infer<typeof ToolCollectionObjectSchema>;
@@ -178,7 +181,7 @@ export type RemoteActivityDefinition = z.infer<typeof RemoteActivityDefinitionSc
178
181
  * Canonical app capabilities Studio renders/supports. The public type is derived from
179
182
  * this list so runtime validation and TypeScript cannot drift.
180
183
  */
181
- export declare const APP_CAPABILITIES: readonly ["ui", "tools", "interactions", "types", "processes", "views", "templates", "dashboards"];
184
+ export declare const APP_CAPABILITIES: readonly ['ui', 'tools', 'interactions', 'types', 'processes', 'views', 'templates', 'dashboards'];
182
185
  export type AppCapabilities = z.infer<typeof AppCapabilitiesSchema>;
183
186
  /**
184
187
  * Header carrying the app version a generated-app UI is running, so studio/zeno resolve app-owned
@@ -193,13 +196,13 @@ export declare const APP_VERSION_HEADER = "x-vertesia-app-version";
193
196
  * {@link AppCapabilities} folds together. Used by the App Solution Architect manifest and
194
197
  * the publish-time capability gate.
195
198
  */
196
- export declare const APP_ARTIFACT_TYPES: readonly ["interaction", "agent", "type", "process", "view", "template", "dashboard", "activity", "tool"];
199
+ export declare const APP_ARTIFACT_TYPES: readonly ['interaction', 'agent', 'type', 'process', 'view', 'template', 'dashboard', 'activity', 'tool', 'hook', 'subscription'];
197
200
  export type AppArtifactType = (typeof APP_ARTIFACT_TYPES)[number];
198
201
  /**
199
202
  * A single platform artifact the App Solution Architect requires the build to create.
200
203
  * `id` is the app-owned in-code id the implementation must register and reference
201
204
  * (e.g. `app:<name>:main:extract-item` for interactions/agents, `app:<name>:<type>` for
202
- * types, `app:<name>:<process>` for processes).
205
+ * types, `app:<name>:<process>` for processes, and `app:<name>:<local-id>` for hooks/subscriptions).
203
206
  */
204
207
  /**
205
208
  * Build progress for one artifact, maintained by the developer agent as a living checklist:
@@ -229,10 +232,10 @@ export interface AppPlannedArtifact {
229
232
  }
230
233
  /**
231
234
  * Structured result the App Solution Architect emits alongside its prose artifacts — the
232
- * machine-readable contract for the build. The implementation MUST create and successfully
233
- * exercise every required artifact before building a deployable version. Persisted into the app repo as
234
- * {@link APP_CAPABILITY_MANIFEST_PATH} so it survives across runs and the version-build
235
- * capability gate can verify against it deterministically. If the builder finds the plan
235
+ * machine-readable contract for the build. The implementation MUST register every required artifact
236
+ * before building a candidate, then successfully exercise it after that candidate is installed and
237
+ * version-pinned. Persisted into the app repo as {@link APP_CAPABILITY_MANIFEST_PATH} so it survives
238
+ * across runs and the package-registration gate can verify it deterministically. If the builder finds the plan
236
239
  * wrong or insufficient, the orchestrator relaunches the architect to revise the manifest;
237
240
  * the gate always checks against the latest committed copy.
238
241
  */
@@ -401,8 +404,13 @@ export type AppRepoBranch = z.infer<typeof AppRepoBranchSchema>;
401
404
  * Canonical package scopes, including the catch-all `all`. The public type is derived
402
405
  * from this list so request parsing and TypeScript cannot drift.
403
406
  */
404
- export declare const APP_PACKAGE_SCOPES: readonly ["ui", "tools", "interactions", "types", "processes", "views", "templates", "dashboards", "settings", "widgets", "activities", "all"];
407
+ export declare const APP_PACKAGE_SCOPES: readonly ['ui', 'tools', 'interactions', 'types', 'processes', 'views', 'templates', 'dashboards', 'settings', 'widgets', 'activities', 'hooks', 'subscriptions', 'all'];
405
408
  export type AppPackageScope = (typeof APP_PACKAGE_SCOPES)[number];
409
+ export type AppPackageEventHook = z.infer<typeof AppPackageEventHookSchema>;
410
+ export type AppPackageHooks = z.infer<typeof AppPackageHooksSchema>;
411
+ export type AppEventHookDelivery = z.infer<typeof AppEventHookDeliverySchema>;
412
+ export type AppEventHookPayload = z.infer<typeof AppEventHookPayloadSchema>;
413
+ export type AppEventSubscriptionDefinition = z.infer<typeof AppEventSubscriptionDefinitionSchema>;
406
414
  export type AppPackage = z.infer<typeof AppPackageSchema>;
407
415
  /**
408
416
  * A single diagnostic produced while inspecting an app's registration state.
@@ -446,6 +454,10 @@ export interface OrphanedAppInstallation extends Omit<AppInstallation, 'manifest
446
454
  }
447
455
  export type OAuthClientCredentials = z.infer<typeof OAuthClientCredentialsSchema>;
448
456
  export type AppOAuthCollectionParams = z.infer<typeof AppOAuthCollectionParamsSchema>;
457
+ /** One installer-supplied MCP API key. */
458
+ export type McpApiKeyCredential = z.infer<typeof McpApiKeyCredentialSchema>;
459
+ /** Installer-supplied MCP API keys, keyed by collection id. */
460
+ export type AppApiKeyCollectionParams = z.infer<typeof AppApiKeyCollectionParamsSchema>;
449
461
  export type AppOAuthProviderParams = z.infer<typeof AppOAuthProviderParamsSchema>;
450
462
  export type AppInstallationPayload = z.infer<typeof AppInstallationPayloadSchema>;
451
463
  export type UpdateAppInstallationToolAllowlistPayload = z.infer<typeof UpdateAppInstallationToolAllowlistPayloadSchema>;
@@ -471,6 +483,13 @@ export interface McpOAuthCollectionRef {
471
483
  app_install_id: string;
472
484
  collection_id: string;
473
485
  }
486
+ /**
487
+ * Payload for storing the static bearer token of an `auth: 'api_key'` MCP collection.
488
+ * The key is write-only — it is never echoed back by any endpoint.
489
+ */
490
+ export type SetMcpApiKeyRequest = z.infer<typeof SetMcpApiKeyRequestSchema>;
491
+ /** Whether an `auth: 'api_key'` MCP collection has a key stored, plus a display-only hint. */
492
+ export type McpApiKeyStatus = z.infer<typeof McpApiKeyStatusSchema>;
474
493
  export type McpOAuthTokenRequest = z.infer<typeof McpOAuthTokenRequestSchema>;
475
494
  export type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponseSchema>;
476
495
  export type McpOAuthConnectResponse = z.infer<typeof McpOAuthConnectResponseSchema>;
@@ -584,7 +603,7 @@ export type CompositeAppHeaderItemKind = z.infer<typeof CompositeAppHeaderItemKi
584
603
  /** Where a header link opens. */
585
604
  export type CompositeAppHeaderItemTarget = z.infer<typeof CompositeAppHeaderItemTargetSchema>;
586
605
  /** Stable identifiers for the built-in header items. */
587
- export declare const COMPOSITE_APP_HEADER_BUILTIN_IDS: readonly ["app_portal", "docs", "help", "user_menu"];
606
+ export declare const COMPOSITE_APP_HEADER_BUILTIN_IDS: readonly ['app_portal', 'docs', 'help', 'user_menu'];
588
607
  /**
589
608
  * A single button in the CompositeApp header bar.
590
609
  *
@@ -607,18 +626,14 @@ export type ValidateUrlResponse = z.infer<typeof ValidateUrlResponseSchema>;
607
626
  * Result of DELETE /api/v1/apps/:id. With `?confirm=true` the cascade runs and
608
627
  * `deleted: true` is set; without it the endpoint returns a dry-run summary so
609
628
  * the UI can show what would be removed.
629
+ *
630
+ * Inferred from the published component rather than hand-written: the endpoint
631
+ * had been declaring `CountResult`, so response validation reported a missing
632
+ * `count` and every field here as unexpected — and in local development, where
633
+ * the check fails closed, that surfaced as a 500 raised AFTER the app was
634
+ * already deleted. Deriving the type is what keeps the two from drifting again.
610
635
  */
611
- export interface AppDeleteSummary {
612
- confirmed: boolean;
613
- app_id: string;
614
- app_name: string;
615
- versions: number;
616
- installations: number;
617
- storage_prefix: string;
618
- git_repo_url?: string;
619
- deleted: boolean;
620
- warnings: string[];
621
- }
636
+ export type AppDeleteSummary = z.infer<typeof AppDeleteSummarySchema>;
622
637
 
623
638
  // -----------------------------------------------------------------------------
624
639
  // @vertesia/common: data-platform.d.ts
@@ -637,32 +652,32 @@ import type { AlterTableOperationSchema, AlterTablePayloadSchema, BatchQueryPayl
637
652
  * Supported column data types for DuckDB tables.
638
653
  */
639
654
  export declare const DataColumnType: {
640
- readonly STRING: "STRING";
641
- readonly INTEGER: "INTEGER";
642
- readonly BIGINT: "BIGINT";
643
- readonly FLOAT: "FLOAT";
644
- readonly DOUBLE: "DOUBLE";
645
- readonly DECIMAL: "DECIMAL";
646
- readonly BOOLEAN: "BOOLEAN";
647
- readonly DATE: "DATE";
648
- readonly TIMESTAMP: "TIMESTAMP";
649
- readonly JSON: "JSON";
655
+ readonly STRING: 'STRING';
656
+ readonly INTEGER: 'INTEGER';
657
+ readonly BIGINT: 'BIGINT';
658
+ readonly FLOAT: 'FLOAT';
659
+ readonly DOUBLE: 'DOUBLE';
660
+ readonly DECIMAL: 'DECIMAL';
661
+ readonly BOOLEAN: 'BOOLEAN';
662
+ readonly DATE: 'DATE';
663
+ readonly TIMESTAMP: 'TIMESTAMP';
664
+ readonly JSON: 'JSON';
650
665
  };
651
666
  export type DataColumnType = z.infer<typeof DataColumnTypeSchema>;
652
667
  /**
653
668
  * Semantic types that provide AI agents with context about column meaning.
654
669
  */
655
670
  export declare const SemanticColumnType: {
656
- readonly EMAIL: "email";
657
- readonly PHONE: "phone";
658
- readonly URL: "url";
659
- readonly CURRENCY: "currency";
660
- readonly PERCENTAGE: "percentage";
661
- readonly PERSON_NAME: "person_name";
662
- readonly ADDRESS: "address";
663
- readonly COUNTRY: "country";
664
- readonly DATE_ISO: "date_iso";
665
- readonly IDENTIFIER: "identifier";
671
+ readonly EMAIL: 'email';
672
+ readonly PHONE: 'phone';
673
+ readonly URL: 'url';
674
+ readonly CURRENCY: 'currency';
675
+ readonly PERCENTAGE: 'percentage';
676
+ readonly PERSON_NAME: 'person_name';
677
+ readonly ADDRESS: 'address';
678
+ readonly COUNTRY: 'country';
679
+ readonly DATE_ISO: 'date_iso';
680
+ readonly IDENTIFIER: 'identifier';
666
681
  };
667
682
  export type SemanticColumnType = z.infer<typeof SemanticColumnTypeSchema>;
668
683
  /**
@@ -710,10 +725,10 @@ export type DataStoreFullSchemaResponse = z.infer<typeof DataStoreFullSchemaResp
710
725
  * Data store lifecycle status.
711
726
  */
712
727
  export declare const DataStoreStatus: {
713
- readonly CREATING: "creating";
714
- readonly ACTIVE: "active";
715
- readonly ERROR: "error";
716
- readonly ARCHIVED: "archived";
728
+ readonly CREATING: 'creating';
729
+ readonly ACTIVE: 'active';
730
+ readonly ERROR: 'error';
731
+ readonly ARCHIVED: 'archived';
717
732
  };
718
733
  export type DataStoreStatus = z.infer<typeof DataStoreStatusSchema>;
719
734
  /**
@@ -738,11 +753,11 @@ export type GetDataStoreTableQuery = z.infer<typeof GetDataStoreTableQuerySchema
738
753
  * Import job status.
739
754
  */
740
755
  export declare const ImportStatus: {
741
- readonly PENDING: "pending";
742
- readonly PROCESSING: "processing";
743
- readonly COMPLETED: "completed";
744
- readonly FAILED: "failed";
745
- readonly ROLLED_BACK: "rolled_back";
756
+ readonly PENDING: 'pending';
757
+ readonly PROCESSING: 'processing';
758
+ readonly COMPLETED: 'completed';
759
+ readonly FAILED: 'failed';
760
+ readonly ROLLED_BACK: 'rolled_back';
746
761
  };
747
762
  export type ImportStatus = z.infer<typeof ImportStatusSchema>;
748
763
  /**
@@ -878,9 +893,9 @@ export declare const DEFAULT_RETENTION_CONFIG: DataStoreRetentionConfig;
878
893
  */
879
894
  export declare const DashboardStatus: {
880
895
  /** Dashboard is active and usable */
881
- readonly ACTIVE: "active";
896
+ readonly ACTIVE: 'active';
882
897
  /** Dashboard has been archived (soft deleted) */
883
- readonly ARCHIVED: "archived";
898
+ readonly ARCHIVED: 'archived';
884
899
  };
885
900
  export type DashboardStatus = z.infer<typeof DashboardStatusSchema>;
886
901
  /**
@@ -1773,10 +1788,10 @@ export declare enum FullTextType {
1773
1788
  }
1774
1789
  export type SearchTypes = SupportedEmbeddingTypes | FullTextType;
1775
1790
  export declare const SearchTypes: {
1776
- readonly full_text: FullTextType.full_text;
1777
1791
  readonly text: SupportedEmbeddingTypes.text;
1778
1792
  readonly image: SupportedEmbeddingTypes.image;
1779
1793
  readonly properties: SupportedEmbeddingTypes.properties;
1794
+ readonly full_text: FullTextType.full_text;
1780
1795
  };
1781
1796
  export type ProjectConfigurationEmbedding = z.infer<typeof ProjectConfigurationEmbeddingSchema>;
1782
1797
  export type ProjectConfigurationEmbeddingEnablePayload = z.infer<typeof ProjectConfigurationEmbeddingEnablePayloadSchema>;
@@ -2623,7 +2638,7 @@ export interface GroundedMetadata {
2623
2638
  }
2624
2639
  export type Transcript = z.infer<typeof TranscriptSchema>;
2625
2640
  export declare const TextExtractionStatus: {
2626
- readonly success: "success";
2641
+ readonly success: 'success';
2627
2642
  };
2628
2643
  export interface TranscriptMediaResult {
2629
2644
  hasText: boolean;
@@ -2772,8 +2787,8 @@ export declare enum ImageRenditionFormat {
2772
2787
  webp = "webp"
2773
2788
  }
2774
2789
  export declare const MarkdownRenditionFormat: {
2775
- readonly docx: "docx";
2776
- readonly pdf: "pdf";
2790
+ readonly docx: 'docx';
2791
+ readonly pdf: 'pdf';
2777
2792
  };
2778
2793
  export type MarkdownRenditionFormat = z.infer<typeof MarkdownRenditionFormatSchema>;
2779
2794
  export interface GetRenditionParams {
@@ -3373,9 +3388,9 @@ export declare const ProcessDefinitionBodyJsonSchema: {
3373
3388
  minLength: number;
3374
3389
  $ref?: undefined;
3375
3390
  } | {
3376
- $ref: string;
3377
3391
  type?: undefined;
3378
3392
  minLength?: undefined;
3393
+ $ref: string;
3379
3394
  })[];
3380
3395
  };
3381
3396
  failure_policy: {
@@ -4118,6 +4133,12 @@ export declare enum FileProcessingStatus {
4118
4133
  ERROR = "error"
4119
4134
  }
4120
4135
  export type ConversationFile = z.infer<typeof ConversationFileSchema>;
4136
+ /**
4137
+ * A file is deliverable when it is ready and has not yet been delivered to the agent as part
4138
+ * of a user message. Deliverable files get attached to the next message; consumed ones stay
4139
+ * reachable to tools via artifact_path/md_path but are not re-attached.
4140
+ */
4141
+ export declare function isDeliverableFile(file: ConversationFile): boolean;
4121
4142
  /**
4122
4143
  * Details for file processing SYSTEM messages.
4123
4144
  * Used when type is AgentMessageType.SYSTEM with system_type: 'file_processing'.
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vertesia/appgen-docs",
3
- "version": "1.5.0-dev.20260804.124748Z",
3
+ "version": "1.5.0-dev.20260807.073259Z",
4
4
  "description": "Generated SDK references and development guidance for Vertesia app agents",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -17,11 +17,11 @@
17
17
  },
18
18
  "devDependencies": {
19
19
  "@types/node": "^24.13.3",
20
- "typescript": "^6.0.3",
21
- "@vertesia/client": "1.5.0-dev.20260804.124748Z",
22
- "@vertesia/common": "1.5.0-dev.20260804.124748Z",
20
+ "typescript": "7.0.2",
21
+ "@vertesia/client": "1.5.0-dev.20260807.073259Z",
22
+ "@vertesia/common": "1.5.0-dev.20260807.073259Z",
23
23
  "@vertesia/tsconfig": "0.1.0",
24
- "@vertesia/ui": "1.5.0-dev.20260804.124748Z"
24
+ "@vertesia/ui": "1.5.0-dev.20260807.073259Z"
25
25
  },
26
26
  "repository": {
27
27
  "type": "git",
@@ -34,7 +34,7 @@
34
34
  "documentation",
35
35
  "app-development"
36
36
  ],
37
- "gitHead": "87ac9166db2b38bd1be6e37adf0414ea83e402ee",
37
+ "gitHead": "e6ebc1482ad6c4df965d74c79f82eb25fc6e2ce3",
38
38
  "scripts": {
39
39
  "build": "pnpm run clean && tsc -p tsconfig.json && node ./scripts/generate-docs.mjs",
40
40
  "clean": "rimraf ./lib ./docs ./tsconfig.tsbuildinfo",