@crewx/sdk 0.9.0-rc.130 → 0.9.0-rc.132

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.
@@ -16,6 +16,7 @@ export interface ExternalResourceFinding {
16
16
  export interface InspectSkillBackendOutputOptions {
17
17
  readonly actionId: string;
18
18
  readonly dataPaths?: readonly string[];
19
+ readonly resultProjectionAllow?: readonly string[];
19
20
  readonly durationMs?: number;
20
21
  readonly timedOut?: boolean;
21
22
  readonly contentFramed?: boolean;
@@ -1,6 +1,7 @@
1
1
  import type { UiDefinitionLineageEntry } from '../ui-instance/lineage.js';
2
2
  import type { JsonObject, UiDefinition } from '../ui-instance/types.js';
3
3
  import type { UiPluginHandlerMetadata, UiPluginManifestV2, UiPluginNormalizedManifestV2 } from '../ui-plugin/types.js';
4
+ import { createWorkspaceAppScanCache, type WorkspaceAppScanCache, type WorkspaceAppScanRootIdentity } from './workspace-app-scan-cache.js';
4
5
  import { AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, type AppDiscoveryFsErrorCode } from './node-app-discovery-fs.js';
5
6
  import type { McpAppRegistry } from './types.js';
6
7
  import type { ProductAppBundleFileHash, ProductAppBundleInput, ProductAppBundleProvenance as LoadedProductAppBundleProvenance } from './product-bundle-loader.js';
@@ -17,7 +18,7 @@ export interface ProductAppBundleProvenance extends LoadedProductAppBundleProven
17
18
  readonly files: readonly ProductAppBundleFileHash[];
18
19
  }
19
20
  export type WorkspaceAppDiscoveryIncompleteReason = 'time_limit';
20
- export type WorkspaceAppDiagnosticCode = 'MANIFEST_MISSING' | 'MANIFEST_INVALID' | 'ENTRY_INVALID' | 'INITIAL_STATE_INVALID' | 'DUPLICATE_ID' | 'RESERVED_ID' | 'BUNDLE_INTEGRITY' | 'LINEAGE_INVALID' | 'LINEAGE_STALE' | 'PATH_ESCAPED' | 'LIMIT_EXCEEDED' | 'ASSET_CATALOG_INVALID' | 'EXEC_DENIED';
21
+ export type WorkspaceAppDiagnosticCode = 'MANIFEST_MISSING' | 'MANIFEST_INVALID' | 'ENTRY_INVALID' | 'INITIAL_STATE_INVALID' | 'DUPLICATE_ID' | 'RESERVED_ID' | 'BUNDLE_INTEGRITY' | 'LINEAGE_INVALID' | 'LINEAGE_STALE' | 'PATH_ESCAPED' | 'LIMIT_EXCEEDED' | 'DISCOVERY_TIME_LIMIT' | 'ASSET_CATALOG_INVALID' | 'EXEC_DENIED';
21
22
  export interface WorkspaceAppDiagnostic {
22
23
  readonly code: WorkspaceAppDiagnosticCode;
23
24
  readonly pluginId?: string;
@@ -26,6 +27,7 @@ export interface WorkspaceAppDiagnostic {
26
27
  }
27
28
  export interface ProductAppBundleSnapshotMetadata {
28
29
  readonly indexHash?: string;
30
+ readonly candidates?: readonly WorkspaceAppCandidate[];
29
31
  readonly diagnostics: readonly WorkspaceAppDiagnostic[];
30
32
  readonly reservedAppIds: readonly string[];
31
33
  readonly reservedDefinitionIds: readonly string[];
@@ -37,6 +39,16 @@ export interface AppDiscoveryDirectoryEntry {
37
39
  readonly name: string;
38
40
  readonly kind: AppDiscoveryDirectoryEntryKind;
39
41
  }
42
+ export interface AppDiscoveryFileFingerprint {
43
+ readonly dev: bigint;
44
+ readonly ino: bigint;
45
+ readonly size: bigint;
46
+ readonly mtimeNs: bigint;
47
+ readonly ctimeNs: bigint;
48
+ readonly candidateRealPath: string;
49
+ }
50
+ export interface AppDiscoveryRootIdentity extends WorkspaceAppScanRootIdentity {
51
+ }
40
52
  export type AppDiscoveryDirectoryListing = readonly AppDiscoveryDirectoryEntry[] | readonly string[];
41
53
  export type AppDiscoveryBytes = Uint8Array | ArrayBuffer | readonly number[];
42
54
  export type AppDiscoveryMaybePromise<T> = T | PromiseLike<T>;
@@ -46,6 +58,8 @@ export interface AppDiscoveryFileSystem {
46
58
  readonly readdir?: (root: string, relativePath: string) => AppDiscoveryMaybePromise<AppDiscoveryDirectoryListing>;
47
59
  readonly readVerifiedFile?: (root: string, relativePath: string, byteLimit: number) => AppDiscoveryMaybePromise<AppDiscoveryBytes>;
48
60
  readonly readFileVerified?: (root: string, relativePath: string, byteLimit: number) => AppDiscoveryMaybePromise<AppDiscoveryBytes>;
61
+ readonly fingerprintVerifiedFile?: (root: string, relativePath: string, byteLimit: number) => AppDiscoveryMaybePromise<AppDiscoveryFileFingerprint>;
62
+ readonly getRootIdentity?: (root: string) => AppDiscoveryMaybePromise<AppDiscoveryRootIdentity>;
49
63
  }
50
64
  export interface WorkspaceAppReservedCatalog {
51
65
  readonly appIds?: Iterable<string>;
@@ -66,6 +80,7 @@ export interface WorkspaceAppDiscoveryOptions {
66
80
  readonly reservedDefinitionIds?: Iterable<string>;
67
81
  readonly reservedToolNames?: Iterable<string>;
68
82
  readonly productBundle?: ProductAppBundleInput;
83
+ readonly scanCache?: WorkspaceAppScanCache;
69
84
  }
70
85
  export interface WorkspaceAppToolNames {
71
86
  readonly read: string;
@@ -135,5 +150,5 @@ export declare function discoverWorkspaceApps(workspaceRoot: string, fs?: AppDis
135
150
  export declare function discoverWorkspaceApps(workspaceRoot: string, options?: WorkspaceAppDiscoveryOptions): Promise<WorkspaceAppDiscoveryResult>;
136
151
  export declare const discoverWorkspaceAppCandidates: typeof discoverWorkspaceApps;
137
152
  export declare const scanWorkspaceApps: typeof discoverWorkspaceApps;
138
- export { AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, };
139
- export type { AppDiscoveryFsErrorCode };
153
+ export { AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, createWorkspaceAppScanCache, };
154
+ export type { AppDiscoveryFsErrorCode, WorkspaceAppScanCache, };
@@ -3,11 +3,11 @@ export { McpAppContractError } from './errors.js';
3
3
  export { INSTALLED_APP_ENTRY, InstalledAppRefError, buildInstalledAppRef, validateInstalledAppRef, } from './installed-app-ref.js';
4
4
  export type { BuildInstalledAppRefInput, InstalledAppPackageFile, InstalledAppRef, InstalledAppRefErrorCode, } from './installed-app-ref.js';
5
5
  export { MAX_HTML_LENGTH, createMcpAppRegistry, createBuiltinMcpAppRegistry, buildMcpAppLocalRegistration, createMcpAppLocalRegistration, registerLocalMcpApp, createMcpAppWorkspaceRegistry, createWorkspaceAppRegistry, createWorkspaceMcpAppRegistry, registerMcpApp, resolveMcpAppResource, resolveLocalMcpAppResource, requireMcpAppResource, toMcpAppToolRegistration, makeUiUri, buildMcpAppBundleRegistrationInput, buildMcpAppBundleAgentActionDescriptors, planProductBundleLegacyToolNames, resolveMcpAppFixedResultCall, } from './registry.js';
6
- export { AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, deriveWorkspaceAppToolName, deriveWorkspaceAppToolNames, discoverWorkspaceAppCandidates, discoverWorkspaceApps, LOCAL_APP_TOOL_PREFIX, MCP_APP_WORKSPACE_TOOL_PREFIX, productAppBundleReservations, scanWorkspaceApps, WORKSPACE_APP_TOOL_PREFIX, } from './discovery.js';
6
+ export { AppDiscoveryFsError, NodeAppDiscoveryFs, NodeAppDiscoveryFsAdapter, defaultAppDiscoveryFs, defaultNodeAppDiscoveryFs, createWorkspaceAppScanCache, deriveWorkspaceAppToolName, deriveWorkspaceAppToolNames, discoverWorkspaceAppCandidates, discoverWorkspaceApps, LOCAL_APP_TOOL_PREFIX, MCP_APP_WORKSPACE_TOOL_PREFIX, productAppBundleReservations, scanWorkspaceApps, WORKSPACE_APP_TOOL_PREFIX, } from './discovery.js';
7
7
  export { loadProductAppBundleAssets } from './product-bundle-assets.js';
8
8
  export type { ProductAppBundleAsset, ProductAppBundleAssetCatalog, ProductAppBundleAssetLoadOptions, } from './product-bundle-assets.js';
9
9
  export type { WorkspaceAppAsset, WorkspaceAppAssetCatalog, WorkspaceAppAssetDescriptorV1, WorkspaceAppAssetLocator, } from './workspace-app-assets.js';
10
- export type { AppDiscoveryBytes, AppDiscoveryDiagnostic, AppDiscoveryDirectoryEntry, AppDiscoveryDirectoryEntryKind, AppDiscoveryDirectoryListing, AppDiscoveryFileSystem, AppDiscoveryFsErrorCode, AppDiscoveryMaybePromise, WorkspaceAppDiscoveryOptions as AppDiscoveryOptions, McpAppDiscoveryDiagnostic, WorkspaceAppBuiltinCatalog, WorkspaceAppCandidate, WorkspaceAppDiscoveryIncompleteReason, WorkspaceAppDiscoveryOptions, WorkspaceAppDiscoveryResult, WorkspaceAppDiagnostic, WorkspaceAppDiagnosticCode, WorkspaceAppDiscoverySource, WorkspaceAppResourceSnapshot, WorkspaceAppReservedCatalog, WorkspaceAppSource, WorkspaceAppToolNames, ProductAppBundleDefinitionIdentity, ProductAppBundleFileHash, ProductAppBundleIndex, ProductAppBundleInput, ProductAppBundlePackageIndex, ProductAppBundleReservations, ProductAppBundleProvenance, ProductAppBundleSnapshotMetadata, } from './discovery.js';
10
+ export type { AppDiscoveryBytes, AppDiscoveryDiagnostic, AppDiscoveryDirectoryEntry, AppDiscoveryDirectoryEntryKind, AppDiscoveryDirectoryListing, AppDiscoveryFileSystem, AppDiscoveryFileFingerprint, AppDiscoveryFsErrorCode, AppDiscoveryMaybePromise, AppDiscoveryRootIdentity, WorkspaceAppDiscoveryOptions as AppDiscoveryOptions, McpAppDiscoveryDiagnostic, WorkspaceAppBuiltinCatalog, WorkspaceAppCandidate, WorkspaceAppDiscoveryIncompleteReason, WorkspaceAppDiscoveryOptions, WorkspaceAppDiscoveryResult, WorkspaceAppDiagnostic, WorkspaceAppDiagnosticCode, WorkspaceAppDiscoverySource, WorkspaceAppResourceSnapshot, WorkspaceAppScanCache, WorkspaceAppReservedCatalog, WorkspaceAppSource, WorkspaceAppToolNames, ProductAppBundleDefinitionIdentity, ProductAppBundleFileHash, ProductAppBundleIndex, ProductAppBundleInput, ProductAppBundlePackageIndex, ProductAppBundleReservations, ProductAppBundleProvenance, ProductAppBundleSnapshotMetadata, } from './discovery.js';
11
11
  export { createWorkspaceAppCatalog, discoverWorkspaceAppCatalog, hashAppDefinition, hashCrewxAppDefinition, listWorkspaceApps, } from './catalog.js';
12
12
  export type { CrewxAppBuiltinCatalog, CrewxAppCapability, CrewxAppCatalogOptions, CrewxAppCatalogResult, CrewxAppDefinitionHashInput, CrewxAppDefinitionSummary, CrewxAppDiagnostic, CrewxAppDiagnosticCode, CrewxAppDiagnosticSource, CrewxAppInstalledProjection, CrewxAppLocalDefinitionRef, CrewxAppOrigin, CrewxAppOwnership, CrewxAppShareability, CrewxAppSharingAvailability, CrewxAppSummary, } from './types.js';
13
13
  export { MCP_APP_PROJECTION_MAX_BYTES, buildMcpAppStateDescriptor, buildMcpAppStateProjections, createMcpAppToolResult, projectMcpAppSummaryState, serializeMcpAppStateJson, serializeMcpAppStateXml, } from './projection.js';
@@ -3,6 +3,7 @@ export declare const MCP_APP_MODEL_CONTEXT_MAX_BYTES: number;
3
3
  export declare const MCP_APP_MODEL_CONTEXT_MAX_STRING_LENGTH = 2048;
4
4
  export declare const MCP_APP_MODEL_CONTEXT_MAX_ARRAY_LENGTH = 200;
5
5
  export declare const MCP_APP_MODEL_CONTEXT_MAX_DEPTH = 8;
6
+ export declare const MCP_APP_ACTION_RESULT_MAX_BYTES: number;
6
7
  export interface McpAppModelContextInput {
7
8
  readonly instanceId: string;
8
9
  readonly definitionHash: string;
@@ -20,6 +21,8 @@ export interface McpAppModelContext {
20
21
  }[];
21
22
  readonly structuredContent?: JsonObject;
22
23
  }
24
+ export declare function sanitizeMcpAppActionResult(value: unknown): JsonObject;
25
+ export declare function prepareMcpAppActionResult(value: unknown, selectedAllow: readonly string[]): JsonObject;
23
26
  export declare function sanitizeMcpAppModelContext(value: unknown): McpAppModelContext;
24
27
  export declare function serializeMcpAppModelContextXml(context: McpAppModelContext, options?: {
25
28
  readonly stale?: boolean;
@@ -1,3 +1,4 @@
1
+ import type { AppDiscoveryFileFingerprint, AppDiscoveryRootIdentity } from './discovery.js';
1
2
  export type AppDiscoveryFsErrorCode = 'NOT_FOUND' | 'READ_DENIED' | 'LIMIT_EXCEEDED' | 'PATH_ESCAPED' | 'IDENTITY_CHANGED' | 'TOCTOU' | 'UNSUPPORTED';
2
3
  export declare class AppDiscoveryFsError extends Error {
3
4
  readonly code: AppDiscoveryFsErrorCode;
@@ -9,10 +10,12 @@ export interface NodeAppDiscoveryDirectoryEntry {
9
10
  readonly kind: 'file' | 'directory' | 'symlink' | 'other';
10
11
  }
11
12
  export declare class NodeAppDiscoveryFs {
13
+ getRootIdentity(root: string): Promise<AppDiscoveryRootIdentity>;
12
14
  listDirectory(root: string, relativePath: string): Promise<readonly NodeAppDiscoveryDirectoryEntry[]>;
13
15
  readdir(root: string, relativePath: string): Promise<readonly NodeAppDiscoveryDirectoryEntry[]>;
14
16
  readDirectory(root: string, relativePath: string): Promise<readonly NodeAppDiscoveryDirectoryEntry[]>;
15
17
  readVerifiedFile(root: string, relativePath: string, byteLimit: number): Promise<Uint8Array>;
18
+ fingerprintVerifiedFile(root: string, relativePath: string, byteLimit: number): Promise<AppDiscoveryFileFingerprint>;
16
19
  readFileVerified(root: string, relativePath: string, byteLimit: number): Promise<Uint8Array>;
17
20
  }
18
21
  export declare const defaultAppDiscoveryFs: NodeAppDiscoveryFs;
@@ -2,6 +2,7 @@ import type { JsonObject, UiDefinition } from '../ui-instance/types.js';
2
2
  import type { McpAppServerStateInput, McpAppStateDescriptor, McpAppStateProjections, McpAppToolDescriptor, McpAppToolResult } from './types.js';
3
3
  export declare const MCP_APP_PROJECTION_MAX_BYTES: number;
4
4
  export declare const SENSITIVE_KEY: RegExp;
5
+ export declare function projectMcpAppActionResult(result: unknown, selectedAllow: readonly string[]): JsonObject;
5
6
  export declare function projectMcpAppSummaryState(state: unknown, definition: UiDefinition): JsonObject;
6
7
  export declare function buildMcpAppStateDescriptor(input: McpAppServerStateInput): McpAppStateDescriptor;
7
8
  export declare function serializeMcpAppStateJson(descriptor: McpAppStateDescriptor, dataPaths?: readonly string[]): string;
@@ -426,7 +426,7 @@ export interface CrewxAppSummary {
426
426
  readonly definitionHash: string;
427
427
  readonly provenance?: ProductAppBundleProvenance;
428
428
  }
429
- export type CrewxAppDiagnosticCode = 'MANIFEST_MISSING' | 'MANIFEST_INVALID' | 'ENTRY_INVALID' | 'INITIAL_STATE_INVALID' | 'DUPLICATE_ID' | 'RESERVED_ID' | 'BUNDLE_INTEGRITY' | 'LINEAGE_INVALID' | 'LINEAGE_STALE' | 'PATH_ESCAPED' | 'LIMIT_EXCEEDED' | 'ASSET_CATALOG_INVALID' | 'EXEC_DENIED' | 'SKILL_INVALID' | 'SKILL_READ_FAILED' | 'INSTALLED_MISSING' | 'INSTALLED_CONTENT_ID_MISSING' | 'INSTALLED_IDENTITY_MISMATCH' | 'BUILTIN_INVALID';
429
+ export type CrewxAppDiagnosticCode = 'MANIFEST_MISSING' | 'MANIFEST_INVALID' | 'ENTRY_INVALID' | 'INITIAL_STATE_INVALID' | 'DUPLICATE_ID' | 'RESERVED_ID' | 'BUNDLE_INTEGRITY' | 'LINEAGE_INVALID' | 'LINEAGE_STALE' | 'PATH_ESCAPED' | 'LIMIT_EXCEEDED' | 'DISCOVERY_TIME_LIMIT' | 'ASSET_CATALOG_INVALID' | 'EXEC_DENIED' | 'SKILL_INVALID' | 'SKILL_READ_FAILED' | 'INSTALLED_MISSING' | 'INSTALLED_CONTENT_ID_MISSING' | 'INSTALLED_IDENTITY_MISMATCH' | 'BUILTIN_INVALID';
430
430
  export type CrewxAppDiagnosticSource = 'apps' | 'skills' | 'bundled' | 'node_modules' | 'builtin' | 'installed';
431
431
  export interface CrewxAppDiagnostic {
432
432
  readonly code: CrewxAppDiagnosticCode;
@@ -1,4 +1,5 @@
1
1
  import type { AppDiscoveryFileSystem, WorkspaceAppCandidate, WorkspaceAppDiagnostic, WorkspaceAppSource } from './discovery.js';
2
+ import { type WorkspaceAppScanCache } from './workspace-app-scan-cache.js';
2
3
  import { type ProductAppBundleAsset } from './product-bundle-assets.js';
3
4
  export interface WorkspaceAppAssetLocator {
4
5
  readonly role: string;
@@ -34,5 +35,8 @@ export interface WorkspaceAppAssetCatalogLoadResult {
34
35
  readonly catalogs: readonly WorkspaceAppAssetCatalogDraft[];
35
36
  readonly diagnostics: readonly WorkspaceAppDiagnostic[];
36
37
  }
37
- export declare function loadWorkspaceAppAssetCatalogs(workspaceRoot: string, candidates: readonly WorkspaceAppCandidate[], filesystem?: AppDiscoveryFileSystem): Promise<WorkspaceAppAssetCatalogLoadResult>;
38
+ export declare function loadWorkspaceAppAssetCatalogs(workspaceRoot: string, candidates: readonly WorkspaceAppCandidate[], filesystem?: AppDiscoveryFileSystem, options?: {
39
+ readonly scanCache?: WorkspaceAppScanCache;
40
+ readonly candidateScanWasUnchanged?: boolean;
41
+ }): Promise<WorkspaceAppAssetCatalogLoadResult>;
38
42
  export declare function sealWorkspaceAppAssetCatalog(draft: WorkspaceAppAssetCatalogDraft, snapshotHash: string): WorkspaceAppAssetCatalog;
@@ -0,0 +1,24 @@
1
+ export interface WorkspaceAppScanRootIdentity {
2
+ readonly dev: bigint;
3
+ readonly ino: bigint;
4
+ readonly realPath: string;
5
+ }
6
+ interface WorkspaceAppScanCacheState {
7
+ rootIdentity?: WorkspaceAppScanRootIdentity;
8
+ lastCandidateScanUnchanged?: boolean;
9
+ lastCandidateKeys?: readonly string[];
10
+ scanStartedAtNs?: bigint;
11
+ lastAssetCatalogsUnchanged?: boolean;
12
+ lastSnapshot?: unknown;
13
+ lastSnapshotBuildInputs?: readonly unknown[];
14
+ readonly candidates: Map<string, unknown>;
15
+ readonly assetCatalogs: Map<string, unknown>;
16
+ }
17
+ declare const CACHE_STATE: unique symbol;
18
+ export interface WorkspaceAppScanCache {
19
+ readonly [CACHE_STATE]: WorkspaceAppScanCacheState;
20
+ }
21
+ export declare function createWorkspaceAppScanCache(): WorkspaceAppScanCache;
22
+ export declare function workspaceAppScanCacheState(cache: WorkspaceAppScanCache): WorkspaceAppScanCacheState;
23
+ export declare function resetWorkspaceAppScanCacheForRoot(cache: WorkspaceAppScanCache, identity: WorkspaceAppScanRootIdentity): WorkspaceAppScanCacheState;
24
+ export {};