@haex-space/vault-sdk 2.6.7 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { b as HaexHubEvent, c as EXTERNAL_EVENTS, D as DatabaseQueryResult, M as Migration, d as MigrationResult, W as WebRequestOptions, e as WebResponse, f as EventCallback, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, g as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult } from './types-B1O6KckK.mjs';
1
+ import { b as HaexHubEvent, c as EXTERNAL_EVENTS, D as DatabaseQueryResult, M as Migration, d as MigrationResult, W as WebRequestOptions, e as WebResponse, f as EventCallback, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, g as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult } from './types-DmCSegdY.mjs';
2
2
  import { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy';
3
3
 
4
4
  /**
@@ -1211,6 +1211,10 @@ declare class HaexVaultSdk {
1211
1211
  readonly localsend: LocalSendAPI;
1212
1212
  readonly spaces: SpacesAPI;
1213
1213
  readonly shell: ShellAPI;
1214
+ /** Unified action system - register handlers that work for both Bridge and AI requests */
1215
+ readonly actions: {
1216
+ register: (action: string, handler: ExternalRequestHandler) => (() => void);
1217
+ };
1214
1218
  constructor(config?: HaexHubConfig);
1215
1219
  ready(): Promise<void>;
1216
1220
  get setupCompleted(): boolean;
@@ -1249,6 +1253,7 @@ declare class HaexVaultSdk {
1249
1253
  private initIframe;
1250
1254
  private handleEvent;
1251
1255
  private handleExternalRequestInternal;
1256
+ private handleActionRequestInternal;
1252
1257
  private runSetupAsync;
1253
1258
  private notifySubscribersInternal;
1254
1259
  private log;
@@ -1,4 +1,4 @@
1
- import { b as HaexHubEvent, c as EXTERNAL_EVENTS, D as DatabaseQueryResult, M as Migration, d as MigrationResult, W as WebRequestOptions, e as WebResponse, f as EventCallback, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, g as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult } from './types-B1O6KckK.js';
1
+ import { b as HaexHubEvent, c as EXTERNAL_EVENTS, D as DatabaseQueryResult, M as Migration, d as MigrationResult, W as WebRequestOptions, e as WebResponse, f as EventCallback, H as HaexHubConfig, a as ExtensionInfo, A as ApplicationContext, g as DatabasePermissionRequest, P as PermissionResponse, S as SearchResult } from './types-DmCSegdY.js';
2
2
  import { SqliteRemoteDatabase } from 'drizzle-orm/sqlite-proxy';
3
3
 
4
4
  /**
@@ -1211,6 +1211,10 @@ declare class HaexVaultSdk {
1211
1211
  readonly localsend: LocalSendAPI;
1212
1212
  readonly spaces: SpacesAPI;
1213
1213
  readonly shell: ShellAPI;
1214
+ /** Unified action system - register handlers that work for both Bridge and AI requests */
1215
+ readonly actions: {
1216
+ register: (action: string, handler: ExternalRequestHandler) => (() => void);
1217
+ };
1214
1218
  constructor(config?: HaexHubConfig);
1215
1219
  ready(): Promise<void>;
1216
1220
  get setupCompleted(): boolean;
@@ -1249,6 +1253,7 @@ declare class HaexVaultSdk {
1249
1253
  private initIframe;
1250
1254
  private handleEvent;
1251
1255
  private handleExternalRequestInternal;
1256
+ private handleActionRequestInternal;
1252
1257
  private runSetupAsync;
1253
1258
  private notifySubscribersInternal;
1254
1259
  private log;
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
- import { a as SpaceRole, H as HaexVaultSdk } from './client-DvH4bGGw.mjs';
2
- export { A as AuthorizedClient, B as BlockedClient, D as DatabaseAPI, b as DecryptedSpace, c as Device, d as DeviceInfo, e as DeviceType, f as DirEntry, E as ExternalAuthDecision, g as ExternalConnection, h as ExternalConnectionErrorCode, i as ExternalConnectionState, j as ExternalRequest, k as ExternalRequestEvent, l as ExternalRequestHandler, m as ExternalRequestPayload, n as ExternalResponse, F as FileStat, o as FilesystemAPI, L as LOCALSEND_EVENTS, p as LocalSendAPI, q as LocalSendEvent, r as LocalSendFileInfo, s as LocalSendSettings, P as PendingAuthorization, t as PendingTransfer, u as PermissionsAPI, v as RemoteAddBackendRequest, w as RemoteS3Config, x as RemoteS3PublicConfig, R as RemoteStorageAPI, y as RemoteStorageBackendInfo, z as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, C as RequestedExtension, G as SelectFileOptions, I as SelectFolderOptions, J as ServerInfo, K as ServerStatus, M as SessionAuthorization, N as SharedSpace, O as ShellAPI, Q as ShellCreateOptions, T as ShellCreateResponse, V as ShellExitEvent, W as ShellOutputEvent, X as SpaceAccessTokenInfo, Y as SpaceAssignment, Z as SpaceInvite, _ as SpaceKeyGrantInfo, $ as SpaceMemberInfo, a0 as SpaceRoles, a1 as SpacesAPI, a2 as SyncBackendInfo, a3 as TransferDirection, a4 as TransferProgress, a5 as TransferState, a6 as WebAPI, a7 as canExternalClientSendRequests, a8 as isExternalClientConnected } from './client-DvH4bGGw.mjs';
3
- import { E as ExtensionManifest, h as SignedClaimPresentation, H as HaexHubConfig } from './types-B1O6KckK.mjs';
4
- export { A as ApplicationContext, C as ClaimRequirement, i as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, g as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, c as EXTERNAL_EVENTS, p as ErrorCode, f as EventCallback, a as ExtensionInfo, q as ExtensionRuntimeMode, r as ExternalEvent, F as FileChangeEvent, s as FileChangePayload, t as FileChangeType, u as FilteredSyncTablesResult, v as HAEXTENSION_EVENTS, b as HaexHubEvent, w as HaexHubRequest, x as HaexHubResponse, y as HaexVaultSdkError, z as HaextensionEvent, I as IdentityClaim, B as ManifestI18nEntry, G as PermissionDeniedError, J as PermissionErrorBase, K as PermissionErrorCode, L as PermissionPromptError, P as PermissionResponse, N as PermissionStatus, O as SHELL_EVENTS, Q as SearchQuery, R as SearchRequestEvent, S as SearchResult, T as ShellEvent, U as SyncTablesUpdatedEvent, V as TABLE_SEPARATOR, W as WebRequestOptions, e as WebResponse, X as getTableName, Y as isPermissionDeniedError, Z as isPermissionError, _ as isPermissionPromptError } from './types-B1O6KckK.mjs';
1
+ import { a as SpaceRole, H as HaexVaultSdk } from './client-COvneDz1.mjs';
2
+ export { A as AuthorizedClient, B as BlockedClient, D as DatabaseAPI, b as DecryptedSpace, c as Device, d as DeviceInfo, e as DeviceType, f as DirEntry, E as ExternalAuthDecision, g as ExternalConnection, h as ExternalConnectionErrorCode, i as ExternalConnectionState, j as ExternalRequest, k as ExternalRequestEvent, l as ExternalRequestHandler, m as ExternalRequestPayload, n as ExternalResponse, F as FileStat, o as FilesystemAPI, L as LOCALSEND_EVENTS, p as LocalSendAPI, q as LocalSendEvent, r as LocalSendFileInfo, s as LocalSendSettings, P as PendingAuthorization, t as PendingTransfer, u as PermissionsAPI, v as RemoteAddBackendRequest, w as RemoteS3Config, x as RemoteS3PublicConfig, R as RemoteStorageAPI, y as RemoteStorageBackendInfo, z as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, C as RequestedExtension, G as SelectFileOptions, I as SelectFolderOptions, J as ServerInfo, K as ServerStatus, M as SessionAuthorization, N as SharedSpace, O as ShellAPI, Q as ShellCreateOptions, T as ShellCreateResponse, V as ShellExitEvent, W as ShellOutputEvent, X as SpaceAccessTokenInfo, Y as SpaceAssignment, Z as SpaceInvite, _ as SpaceKeyGrantInfo, $ as SpaceMemberInfo, a0 as SpaceRoles, a1 as SpacesAPI, a2 as SyncBackendInfo, a3 as TransferDirection, a4 as TransferProgress, a5 as TransferState, a6 as WebAPI, a7 as canExternalClientSendRequests, a8 as isExternalClientConnected } from './client-COvneDz1.mjs';
3
+ import { E as ExtensionManifest, h as SignedClaimPresentation, H as HaexHubConfig } from './types-DmCSegdY.mjs';
4
+ export { A as ApplicationContext, C as ClaimRequirement, i as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, g as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, c as EXTERNAL_EVENTS, p as ErrorCode, f as EventCallback, a as ExtensionInfo, q as ExtensionRuntimeMode, r as ExternalEvent, F as FileChangeEvent, s as FileChangePayload, t as FileChangeType, u as FilteredSyncTablesResult, v as HAEXTENSION_EVENTS, b as HaexHubEvent, w as HaexHubRequest, x as HaexHubResponse, y as HaexVaultSdkError, z as HaextensionEvent, I as IdentityClaim, B as ManifestI18nEntry, G as PermissionDeniedError, J as PermissionErrorBase, K as PermissionErrorCode, L as PermissionPromptError, P as PermissionResponse, N as PermissionStatus, O as SHELL_EVENTS, Q as SearchQuery, R as SearchRequestEvent, S as SearchResult, T as ShellEvent, U as SyncTablesUpdatedEvent, V as TABLE_SEPARATOR, W as WebRequestOptions, e as WebResponse, X as getTableName, Y as isPermissionDeniedError, Z as isPermissionError, _ as isPermissionPromptError } from './types-DmCSegdY.mjs';
5
5
  export { H as HaextensionConfig } from './config-D_HXjsEV.mjs';
6
6
  import 'drizzle-orm/sqlite-proxy';
7
7
 
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { a as SpaceRole, H as HaexVaultSdk } from './client-CScVlK1m.js';
2
- export { A as AuthorizedClient, B as BlockedClient, D as DatabaseAPI, b as DecryptedSpace, c as Device, d as DeviceInfo, e as DeviceType, f as DirEntry, E as ExternalAuthDecision, g as ExternalConnection, h as ExternalConnectionErrorCode, i as ExternalConnectionState, j as ExternalRequest, k as ExternalRequestEvent, l as ExternalRequestHandler, m as ExternalRequestPayload, n as ExternalResponse, F as FileStat, o as FilesystemAPI, L as LOCALSEND_EVENTS, p as LocalSendAPI, q as LocalSendEvent, r as LocalSendFileInfo, s as LocalSendSettings, P as PendingAuthorization, t as PendingTransfer, u as PermissionsAPI, v as RemoteAddBackendRequest, w as RemoteS3Config, x as RemoteS3PublicConfig, R as RemoteStorageAPI, y as RemoteStorageBackendInfo, z as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, C as RequestedExtension, G as SelectFileOptions, I as SelectFolderOptions, J as ServerInfo, K as ServerStatus, M as SessionAuthorization, N as SharedSpace, O as ShellAPI, Q as ShellCreateOptions, T as ShellCreateResponse, V as ShellExitEvent, W as ShellOutputEvent, X as SpaceAccessTokenInfo, Y as SpaceAssignment, Z as SpaceInvite, _ as SpaceKeyGrantInfo, $ as SpaceMemberInfo, a0 as SpaceRoles, a1 as SpacesAPI, a2 as SyncBackendInfo, a3 as TransferDirection, a4 as TransferProgress, a5 as TransferState, a6 as WebAPI, a7 as canExternalClientSendRequests, a8 as isExternalClientConnected } from './client-CScVlK1m.js';
3
- import { E as ExtensionManifest, h as SignedClaimPresentation, H as HaexHubConfig } from './types-B1O6KckK.js';
4
- export { A as ApplicationContext, C as ClaimRequirement, i as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, g as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, c as EXTERNAL_EVENTS, p as ErrorCode, f as EventCallback, a as ExtensionInfo, q as ExtensionRuntimeMode, r as ExternalEvent, F as FileChangeEvent, s as FileChangePayload, t as FileChangeType, u as FilteredSyncTablesResult, v as HAEXTENSION_EVENTS, b as HaexHubEvent, w as HaexHubRequest, x as HaexHubResponse, y as HaexVaultSdkError, z as HaextensionEvent, I as IdentityClaim, B as ManifestI18nEntry, G as PermissionDeniedError, J as PermissionErrorBase, K as PermissionErrorCode, L as PermissionPromptError, P as PermissionResponse, N as PermissionStatus, O as SHELL_EVENTS, Q as SearchQuery, R as SearchRequestEvent, S as SearchResult, T as ShellEvent, U as SyncTablesUpdatedEvent, V as TABLE_SEPARATOR, W as WebRequestOptions, e as WebResponse, X as getTableName, Y as isPermissionDeniedError, Z as isPermissionError, _ as isPermissionPromptError } from './types-B1O6KckK.js';
1
+ import { a as SpaceRole, H as HaexVaultSdk } from './client-DQbCPz57.js';
2
+ export { A as AuthorizedClient, B as BlockedClient, D as DatabaseAPI, b as DecryptedSpace, c as Device, d as DeviceInfo, e as DeviceType, f as DirEntry, E as ExternalAuthDecision, g as ExternalConnection, h as ExternalConnectionErrorCode, i as ExternalConnectionState, j as ExternalRequest, k as ExternalRequestEvent, l as ExternalRequestHandler, m as ExternalRequestPayload, n as ExternalResponse, F as FileStat, o as FilesystemAPI, L as LOCALSEND_EVENTS, p as LocalSendAPI, q as LocalSendEvent, r as LocalSendFileInfo, s as LocalSendSettings, P as PendingAuthorization, t as PendingTransfer, u as PermissionsAPI, v as RemoteAddBackendRequest, w as RemoteS3Config, x as RemoteS3PublicConfig, R as RemoteStorageAPI, y as RemoteStorageBackendInfo, z as RemoteStorageObjectInfo, U as RemoteUpdateBackendRequest, C as RequestedExtension, G as SelectFileOptions, I as SelectFolderOptions, J as ServerInfo, K as ServerStatus, M as SessionAuthorization, N as SharedSpace, O as ShellAPI, Q as ShellCreateOptions, T as ShellCreateResponse, V as ShellExitEvent, W as ShellOutputEvent, X as SpaceAccessTokenInfo, Y as SpaceAssignment, Z as SpaceInvite, _ as SpaceKeyGrantInfo, $ as SpaceMemberInfo, a0 as SpaceRoles, a1 as SpacesAPI, a2 as SyncBackendInfo, a3 as TransferDirection, a4 as TransferProgress, a5 as TransferState, a6 as WebAPI, a7 as canExternalClientSendRequests, a8 as isExternalClientConnected } from './client-DQbCPz57.js';
3
+ import { E as ExtensionManifest, h as SignedClaimPresentation, H as HaexHubConfig } from './types-DmCSegdY.js';
4
+ export { A as ApplicationContext, C as ClaimRequirement, i as ContextChangedEvent, j as DEFAULT_TIMEOUT, k as DatabaseColumnInfo, l as DatabaseExecuteParams, m as DatabasePermission, g as DatabasePermissionRequest, n as DatabaseQueryParams, D as DatabaseQueryResult, o as DatabaseTableInfo, c as EXTERNAL_EVENTS, p as ErrorCode, f as EventCallback, a as ExtensionInfo, q as ExtensionRuntimeMode, r as ExternalEvent, F as FileChangeEvent, s as FileChangePayload, t as FileChangeType, u as FilteredSyncTablesResult, v as HAEXTENSION_EVENTS, b as HaexHubEvent, w as HaexHubRequest, x as HaexHubResponse, y as HaexVaultSdkError, z as HaextensionEvent, I as IdentityClaim, B as ManifestI18nEntry, G as PermissionDeniedError, J as PermissionErrorBase, K as PermissionErrorCode, L as PermissionPromptError, P as PermissionResponse, N as PermissionStatus, O as SHELL_EVENTS, Q as SearchQuery, R as SearchRequestEvent, S as SearchResult, T as ShellEvent, U as SyncTablesUpdatedEvent, V as TABLE_SEPARATOR, W as WebRequestOptions, e as WebResponse, X as getTableName, Y as isPermissionDeniedError, Z as isPermissionError, _ as isPermissionPromptError } from './types-DmCSegdY.js';
5
5
  export { H as HaextensionConfig } from './config-D_HXjsEV.js';
6
6
  import 'drizzle-orm/sqlite-proxy';
7
7
 
package/dist/index.js CHANGED
@@ -684,6 +684,8 @@ var HAEXTENSION_EVENTS = {
684
684
  var EXTERNAL_EVENTS = {
685
685
  /** External request from authorized client */
686
686
  REQUEST: "haextension:external:request",
687
+ /** AI action request (tool calls from AI assistant) */
688
+ ACTION_REQUEST: "haextension:action:request",
687
689
  /** New external client requesting authorization */
688
690
  AUTHORIZATION_REQUEST: "external:authorization-request"
689
691
  };
@@ -2120,6 +2122,24 @@ async function setupTauriEventListeners(ctx, log, onEvent, onContextChange) {
2120
2122
  } catch (error) {
2121
2123
  log("Failed to setup external request listener:", error);
2122
2124
  }
2125
+ try {
2126
+ await listen(EXTERNAL_EVENTS.ACTION_REQUEST, (event) => {
2127
+ log("====== AI ACTION REQUEST RECEIVED ======");
2128
+ log("Payload:", JSON.stringify(event.payload));
2129
+ if (event.payload) {
2130
+ onEvent({
2131
+ type: EXTERNAL_EVENTS.ACTION_REQUEST,
2132
+ data: event.payload,
2133
+ timestamp: Date.now()
2134
+ });
2135
+ } else {
2136
+ log("AI action request event has no payload!");
2137
+ }
2138
+ });
2139
+ log("AI action request listener registered successfully");
2140
+ } catch (error) {
2141
+ log("Failed to setup AI action request listener:", error);
2142
+ }
2123
2143
  log("Registering file change listener for:", HAEXTENSION_EVENTS.FILE_CHANGED);
2124
2144
  try {
2125
2145
  await listen(HAEXTENSION_EVENTS.FILE_CHANGED, (event) => {
@@ -2439,7 +2459,7 @@ function createMessageHandler(config, pendingRequests, extensionInfo, onEvent) {
2439
2459
  }
2440
2460
  };
2441
2461
  }
2442
- function processEvent(event, log, eventListeners, onContextChanged, onExternalRequest) {
2462
+ function processEvent(event, log, eventListeners, onContextChanged, onExternalRequest, onActionRequest) {
2443
2463
  if (event.type === HAEXTENSION_EVENTS.CONTEXT_CHANGED) {
2444
2464
  const contextEvent = event;
2445
2465
  onContextChanged(contextEvent.data.context);
@@ -2450,6 +2470,13 @@ function processEvent(event, log, eventListeners, onContextChanged, onExternalRe
2450
2470
  onExternalRequest(externalEvent);
2451
2471
  return;
2452
2472
  }
2473
+ if (event.type === EXTERNAL_EVENTS.ACTION_REQUEST) {
2474
+ const actionEvent = event;
2475
+ if (onActionRequest) {
2476
+ onActionRequest(actionEvent);
2477
+ }
2478
+ return;
2479
+ }
2453
2480
  emitEvent(event, log, eventListeners);
2454
2481
  }
2455
2482
  function emitEvent(event, log, eventListeners) {
@@ -2586,6 +2613,12 @@ async function respondToExternalRequest(response, request) {
2586
2613
  await request(EXTERNAL_BRIDGE_COMMANDS.respond, response);
2587
2614
  }
2588
2615
 
2616
+ // src/commands/ai.ts
2617
+ var AI_COMMANDS = {
2618
+ /** Respond to an AI action request */
2619
+ actionRespond: "ai_action_respond"
2620
+ };
2621
+
2589
2622
  // src/client.ts
2590
2623
  var HaexVaultSdk = class {
2591
2624
  constructor(config = {}) {
@@ -2607,6 +2640,12 @@ var HaexVaultSdk = class {
2607
2640
  this.setupHook = null;
2608
2641
  // Public APIs
2609
2642
  this.orm = null;
2643
+ /** Unified action system - register handlers that work for both Bridge and AI requests */
2644
+ this.actions = {
2645
+ register: (action, handler) => {
2646
+ return this.onExternalRequest(action, handler);
2647
+ }
2648
+ };
2610
2649
  this.config = {
2611
2650
  debug: config.debug ?? false,
2612
2651
  timeout: config.timeout ?? DEFAULT_TIMEOUT,
@@ -2896,12 +2935,23 @@ var HaexVaultSdk = class {
2896
2935
  this._context = ctx;
2897
2936
  this.notifySubscribersInternal();
2898
2937
  },
2899
- (extEvent) => this.handleExternalRequestInternal(extEvent.data)
2938
+ (extEvent) => this.handleExternalRequestInternal(extEvent.data),
2939
+ (actionEvent) => this.handleActionRequestInternal(actionEvent.data)
2900
2940
  );
2901
2941
  }
2902
2942
  async handleExternalRequestInternal(request) {
2903
2943
  await handleExternalRequest(request, this.externalRequestHandlers, this.respondToExternalRequest.bind(this), this.log.bind(this));
2904
2944
  }
2945
+ async handleActionRequestInternal(request) {
2946
+ await handleExternalRequest(
2947
+ request,
2948
+ this.externalRequestHandlers,
2949
+ async (response) => {
2950
+ await this.request(AI_COMMANDS.actionRespond, response);
2951
+ },
2952
+ this.log.bind(this)
2953
+ );
2954
+ }
2905
2955
  // ==========================================================================
2906
2956
  // Private: Setup
2907
2957
  // ==========================================================================