@arbidocs/sdk 0.3.74 → 0.3.76

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,5 +1,5 @@
1
- import { m as ConfigStore, k as CliConfig, l as CliCredentials, C as ChatSession, X as SkippedFile, a0 as UploadResult, h as AuthHeaders, Y as UploadBatchResult, $ as UploadOptions, Z as UploadDirectOptions, _ as UploadDirectResult, V as SUPPORTED_EXTENSIONS, o as DmCryptoContext } from './browser-D_TPBZXY.cjs';
2
- export { A as AgentStepEvent, a as Arbi, b as ArbiApiError, c as ArbiError, e as ArbiOptions, f as ArtifactEvent, g as AuthContext, i as AuthenticatedClient, j as CitationSummary, n as ConnectOptions, D as DOC_TERMINAL_STATUSES, p as DocumentListFields, q as DocumentListOrder, r as DocumentWaiter, s as DocumentWaiterOptions, F as FormattedWsMessage, L as ListAllOptions, t as ListPaginatedOptions, M as MessageLevel, u as MessageMetadataPayload, v as MessageQueuedEvent, O as OutputTokensDetails, P as ParsedSlashCommand, Q as QueryOptions, R as ReconnectOptions, w as ReconnectableWsConnection, x as ResolvedCitation, y as ResponseCompletedEvent, z as ResponseContentPartAddedEvent, B as ResponseCreatedEvent, E as ResponseFailedEvent, G as ResponseOutputItemAddedEvent, H as ResponseOutputItemDoneEvent, I as ResponseOutputTextDeltaEvent, J as ResponseOutputTextDoneEvent, K as ResponseUsage, S as SSEEvent, N as SSEStreamCallbacks, T as SSEStreamResult, U as SSEStreamStartData, W as SkillSummary, a1 as UserInfo, a2 as UserInputRequestEvent, a3 as UserMessageEvent, a4 as WorkspaceContext, a5 as WsConnection, a6 as agentconfig, a7 as assistant, a8 as authenticatedFetch, a9 as buildRetrievalChunkTool, aa as buildRetrievalFullContextTool, ab as buildRetrievalTocTool, ac as connectWebSocket, ad as connectWithReconnect, ae as consumeSSEStream, af as contacts, ag as conversations, ah as countCitations, ai as createAuthenticatedClient, aj as createDocumentWaiter, ak as dm, al as doctags, am as documents, an as files, ao as filterSkills, ap as formatAgentStepLabel, aq as formatFileSize, ar as formatStreamSummary, as as formatUserName, at as formatWorkspaceChoices, au as formatWsMessage, av as generateEncryptedWorkspaceKey, aw as generateNewWorkspaceKey, ax as getErrorCode, ay as getErrorMessage, az as getRawWorkspaceKey, aA as health, aB as parseSSEEvents, aC as parseSlashCommand, aD as parseSlashTokenInProgress, aE as performPasswordLogin, aF as performSigningKeyLogin, aG as performSsoDeviceFlowLogin, aH as requireData, aI as requireOk, aJ as resolveAuth, aK as resolveCitations, aL as resolveWorkspace, aM as responses, aN as selectWorkspace, aO as selectWorkspaceById, aP as settings, aQ as streamSSE, aR as stripCitationMarkdown, aS as summarizeCitations, aT as tags, aU as workspaces } from './browser-D_TPBZXY.cjs';
1
+ import { m as ConfigStore, k as CliConfig, l as CliCredentials, C as ChatSession, X as SkippedFile, a0 as UploadResult, h as AuthHeaders, Y as UploadBatchResult, $ as UploadOptions, Z as UploadDirectOptions, _ as UploadDirectResult, V as SUPPORTED_EXTENSIONS, o as DmCryptoContext } from './browser-D06F2w6S.cjs';
2
+ export { A as AgentStepEvent, a as Arbi, b as ArbiApiError, c as ArbiError, e as ArbiOptions, f as ArtifactEvent, g as AuthContext, i as AuthenticatedClient, j as CitationSummary, n as ConnectOptions, D as DOC_TERMINAL_STATUSES, p as DocumentListFields, q as DocumentListOrder, r as DocumentWaiter, s as DocumentWaiterOptions, F as FormattedWsMessage, L as ListAllOptions, t as ListPaginatedOptions, M as MessageLevel, u as MessageMetadataPayload, v as MessageQueuedEvent, O as OutputTokensDetails, P as ParsedSlashCommand, Q as QueryOptions, R as ReconnectOptions, w as ReconnectableWsConnection, x as ResolvedCitation, y as ResponseCompletedEvent, z as ResponseContentPartAddedEvent, B as ResponseCreatedEvent, E as ResponseFailedEvent, G as ResponseOutputItemAddedEvent, H as ResponseOutputItemDoneEvent, I as ResponseOutputTextDeltaEvent, J as ResponseOutputTextDoneEvent, K as ResponseUsage, S as SSEEvent, N as SSEStreamCallbacks, T as SSEStreamResult, U as SSEStreamStartData, W as SkillSummary, a1 as UserInfo, a2 as UserInputRequestEvent, a3 as UserMessageEvent, a4 as WebSocketAuthError, a5 as WorkspaceContext, a6 as WsConnection, a7 as agentconfig, a8 as assistant, a9 as authenticatedFetch, aa as buildRetrievalChunkTool, ab as buildRetrievalFullContextTool, ac as buildRetrievalTocTool, ad as connectWebSocket, ae as connectWithReconnect, af as consumeSSEStream, ag as contacts, ah as conversations, ai as countCitations, aj as createAuthenticatedClient, ak as createDocumentWaiter, al as dm, am as doctags, an as documents, ao as files, ap as filterSkills, aq as formatAgentStepLabel, ar as formatFileSize, as as formatStreamSummary, at as formatUserName, au as formatWorkspaceChoices, av as formatWsMessage, aw as generateEncryptedWorkspaceKey, ax as generateNewWorkspaceKey, ay as getErrorCode, az as getErrorMessage, aA as getRawWorkspaceKey, aB as health, aC as parseSSEEvents, aD as parseSlashCommand, aE as parseSlashTokenInProgress, aF as performPasswordLogin, aG as performSigningKeyLogin, aH as performSsoDeviceFlowLogin, aI as requireData, aJ as requireOk, aK as resolveAuth, aL as resolveCitations, aM as resolveWorkspace, aN as responses, aO as selectWorkspace, aP as selectWorkspaceById, aQ as settings, aR as streamSSE, aS as stripCitationMarkdown, aT as summarizeCitations, aU as tags, aV as workspaces } from './browser-D06F2w6S.cjs';
3
3
  import { SessionStorageProvider, ArbiClient, components } from '@arbidocs/client';
4
4
 
5
5
  /**
@@ -634,10 +634,9 @@ declare class OpenClawOrchestrator implements Orchestrator {
634
634
  */
635
635
 
636
636
  interface DmListenerOptions {
637
- /** Authenticated ArbiClient instance */
637
+ /** Authenticated ArbiClient instance. The WebSocket token and re-login are
638
+ * both derived from this — it must already hold a valid session. */
638
639
  arbi: ArbiClient;
639
- /** Access token for WebSocket auth */
640
- accessToken: string;
641
640
  /** Base URL of the ARBI server */
642
641
  baseUrl: string;
643
642
  /** DM crypto context for encrypt/decrypt */
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { m as ConfigStore, k as CliConfig, l as CliCredentials, C as ChatSession, X as SkippedFile, a0 as UploadResult, h as AuthHeaders, Y as UploadBatchResult, $ as UploadOptions, Z as UploadDirectOptions, _ as UploadDirectResult, V as SUPPORTED_EXTENSIONS, o as DmCryptoContext } from './browser-D_TPBZXY.js';
2
- export { A as AgentStepEvent, a as Arbi, b as ArbiApiError, c as ArbiError, e as ArbiOptions, f as ArtifactEvent, g as AuthContext, i as AuthenticatedClient, j as CitationSummary, n as ConnectOptions, D as DOC_TERMINAL_STATUSES, p as DocumentListFields, q as DocumentListOrder, r as DocumentWaiter, s as DocumentWaiterOptions, F as FormattedWsMessage, L as ListAllOptions, t as ListPaginatedOptions, M as MessageLevel, u as MessageMetadataPayload, v as MessageQueuedEvent, O as OutputTokensDetails, P as ParsedSlashCommand, Q as QueryOptions, R as ReconnectOptions, w as ReconnectableWsConnection, x as ResolvedCitation, y as ResponseCompletedEvent, z as ResponseContentPartAddedEvent, B as ResponseCreatedEvent, E as ResponseFailedEvent, G as ResponseOutputItemAddedEvent, H as ResponseOutputItemDoneEvent, I as ResponseOutputTextDeltaEvent, J as ResponseOutputTextDoneEvent, K as ResponseUsage, S as SSEEvent, N as SSEStreamCallbacks, T as SSEStreamResult, U as SSEStreamStartData, W as SkillSummary, a1 as UserInfo, a2 as UserInputRequestEvent, a3 as UserMessageEvent, a4 as WorkspaceContext, a5 as WsConnection, a6 as agentconfig, a7 as assistant, a8 as authenticatedFetch, a9 as buildRetrievalChunkTool, aa as buildRetrievalFullContextTool, ab as buildRetrievalTocTool, ac as connectWebSocket, ad as connectWithReconnect, ae as consumeSSEStream, af as contacts, ag as conversations, ah as countCitations, ai as createAuthenticatedClient, aj as createDocumentWaiter, ak as dm, al as doctags, am as documents, an as files, ao as filterSkills, ap as formatAgentStepLabel, aq as formatFileSize, ar as formatStreamSummary, as as formatUserName, at as formatWorkspaceChoices, au as formatWsMessage, av as generateEncryptedWorkspaceKey, aw as generateNewWorkspaceKey, ax as getErrorCode, ay as getErrorMessage, az as getRawWorkspaceKey, aA as health, aB as parseSSEEvents, aC as parseSlashCommand, aD as parseSlashTokenInProgress, aE as performPasswordLogin, aF as performSigningKeyLogin, aG as performSsoDeviceFlowLogin, aH as requireData, aI as requireOk, aJ as resolveAuth, aK as resolveCitations, aL as resolveWorkspace, aM as responses, aN as selectWorkspace, aO as selectWorkspaceById, aP as settings, aQ as streamSSE, aR as stripCitationMarkdown, aS as summarizeCitations, aT as tags, aU as workspaces } from './browser-D_TPBZXY.js';
1
+ import { m as ConfigStore, k as CliConfig, l as CliCredentials, C as ChatSession, X as SkippedFile, a0 as UploadResult, h as AuthHeaders, Y as UploadBatchResult, $ as UploadOptions, Z as UploadDirectOptions, _ as UploadDirectResult, V as SUPPORTED_EXTENSIONS, o as DmCryptoContext } from './browser-D06F2w6S.js';
2
+ export { A as AgentStepEvent, a as Arbi, b as ArbiApiError, c as ArbiError, e as ArbiOptions, f as ArtifactEvent, g as AuthContext, i as AuthenticatedClient, j as CitationSummary, n as ConnectOptions, D as DOC_TERMINAL_STATUSES, p as DocumentListFields, q as DocumentListOrder, r as DocumentWaiter, s as DocumentWaiterOptions, F as FormattedWsMessage, L as ListAllOptions, t as ListPaginatedOptions, M as MessageLevel, u as MessageMetadataPayload, v as MessageQueuedEvent, O as OutputTokensDetails, P as ParsedSlashCommand, Q as QueryOptions, R as ReconnectOptions, w as ReconnectableWsConnection, x as ResolvedCitation, y as ResponseCompletedEvent, z as ResponseContentPartAddedEvent, B as ResponseCreatedEvent, E as ResponseFailedEvent, G as ResponseOutputItemAddedEvent, H as ResponseOutputItemDoneEvent, I as ResponseOutputTextDeltaEvent, J as ResponseOutputTextDoneEvent, K as ResponseUsage, S as SSEEvent, N as SSEStreamCallbacks, T as SSEStreamResult, U as SSEStreamStartData, W as SkillSummary, a1 as UserInfo, a2 as UserInputRequestEvent, a3 as UserMessageEvent, a4 as WebSocketAuthError, a5 as WorkspaceContext, a6 as WsConnection, a7 as agentconfig, a8 as assistant, a9 as authenticatedFetch, aa as buildRetrievalChunkTool, ab as buildRetrievalFullContextTool, ac as buildRetrievalTocTool, ad as connectWebSocket, ae as connectWithReconnect, af as consumeSSEStream, ag as contacts, ah as conversations, ai as countCitations, aj as createAuthenticatedClient, ak as createDocumentWaiter, al as dm, am as doctags, an as documents, ao as files, ap as filterSkills, aq as formatAgentStepLabel, ar as formatFileSize, as as formatStreamSummary, at as formatUserName, au as formatWorkspaceChoices, av as formatWsMessage, aw as generateEncryptedWorkspaceKey, ax as generateNewWorkspaceKey, ay as getErrorCode, az as getErrorMessage, aA as getRawWorkspaceKey, aB as health, aC as parseSSEEvents, aD as parseSlashCommand, aE as parseSlashTokenInProgress, aF as performPasswordLogin, aG as performSigningKeyLogin, aH as performSsoDeviceFlowLogin, aI as requireData, aJ as requireOk, aK as resolveAuth, aL as resolveCitations, aM as resolveWorkspace, aN as responses, aO as selectWorkspace, aP as selectWorkspaceById, aQ as settings, aR as streamSSE, aS as stripCitationMarkdown, aT as summarizeCitations, aU as tags, aV as workspaces } from './browser-D06F2w6S.js';
3
3
  import { SessionStorageProvider, ArbiClient, components } from '@arbidocs/client';
4
4
 
5
5
  /**
@@ -634,10 +634,9 @@ declare class OpenClawOrchestrator implements Orchestrator {
634
634
  */
635
635
 
636
636
  interface DmListenerOptions {
637
- /** Authenticated ArbiClient instance */
637
+ /** Authenticated ArbiClient instance. The WebSocket token and re-login are
638
+ * both derived from this — it must already hold a valid session. */
638
639
  arbi: ArbiClient;
639
- /** Access token for WebSocket auth */
640
- accessToken: string;
641
640
  /** Base URL of the ARBI server */
642
641
  baseUrl: string;
643
642
  /** DM crypto context for encrypt/decrypt */
package/dist/index.js CHANGED
@@ -4399,6 +4399,12 @@ function formatStreamSummary(result, elapsedTime) {
4399
4399
  var consumeSSEStream = streamSSE;
4400
4400
  var AUTH_TIMEOUT_MS = 1e4;
4401
4401
  var MAX_BACKOFF_MS = 3e4;
4402
+ var WebSocketAuthError = class extends Error {
4403
+ constructor(reason) {
4404
+ super(`WebSocket auth failed: ${reason}`);
4405
+ this.name = "WebSocketAuthError";
4406
+ }
4407
+ };
4402
4408
  function connectWebSocket(options) {
4403
4409
  const { baseUrl, accessToken, onMessage, onClose } = options;
4404
4410
  const url = buildWebSocketUrl(baseUrl);
@@ -4426,7 +4432,7 @@ function connectWebSocket(options) {
4426
4432
  resolve2({ close: () => ws.close() });
4427
4433
  } else {
4428
4434
  ws.close();
4429
- reject(new Error(`WebSocket auth failed: ${msg.reason || "unknown"}`));
4435
+ reject(new WebSocketAuthError(msg.reason || "unknown"));
4430
4436
  }
4431
4437
  }
4432
4438
  return;
@@ -4449,52 +4455,66 @@ async function connectWithReconnect(options) {
4449
4455
  const {
4450
4456
  maxRetries = 10,
4451
4457
  initialDelayMs = 1e3,
4458
+ getAccessToken,
4459
+ refreshAuth,
4452
4460
  onReconnecting,
4453
4461
  onReconnected,
4454
4462
  onReconnectFailed,
4455
4463
  onClose,
4456
- ...connectOpts
4464
+ onMessage,
4465
+ baseUrl,
4466
+ accessToken
4457
4467
  } = options;
4468
+ const resolveToken = getAccessToken ?? (() => accessToken);
4458
4469
  let closed = false;
4459
- let reconnectTimer = null;
4470
+ let cancelDelay = null;
4460
4471
  let currentConnection = null;
4472
+ const connectOnce = async () => {
4473
+ const token = await resolveToken();
4474
+ if (!token) throw new WebSocketAuthError("no access token available");
4475
+ return connectWebSocket({
4476
+ baseUrl,
4477
+ accessToken: token,
4478
+ onMessage,
4479
+ onClose: (code, reason) => {
4480
+ currentConnection = null;
4481
+ onClose?.(code, reason);
4482
+ if (!closed) void scheduleReconnect();
4483
+ }
4484
+ });
4485
+ };
4461
4486
  const scheduleReconnect = async () => {
4462
4487
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
4463
4488
  if (closed) return;
4464
4489
  const delay = Math.min(initialDelayMs * Math.pow(2, attempt - 1), MAX_BACKOFF_MS);
4465
4490
  onReconnecting?.(attempt, maxRetries);
4466
4491
  await new Promise((resolve2) => {
4467
- reconnectTimer = setTimeout(resolve2, delay);
4492
+ const timer = setTimeout(resolve2, delay);
4493
+ cancelDelay = () => {
4494
+ clearTimeout(timer);
4495
+ resolve2();
4496
+ };
4468
4497
  });
4498
+ cancelDelay = null;
4469
4499
  if (closed) return;
4470
4500
  try {
4471
- currentConnection = await connectWebSocket({
4472
- ...connectOpts,
4473
- onClose: (code, reason) => {
4474
- currentConnection = null;
4475
- onClose?.(code, reason);
4476
- if (!closed) scheduleReconnect();
4477
- }
4478
- });
4501
+ currentConnection = await connectOnce();
4479
4502
  onReconnected?.();
4480
4503
  return;
4481
- } catch {
4504
+ } catch (err) {
4505
+ if (err instanceof WebSocketAuthError && refreshAuth) {
4506
+ await refreshAuth().catch(() => {
4507
+ });
4508
+ }
4482
4509
  }
4483
4510
  }
4484
4511
  if (!closed) onReconnectFailed?.();
4485
4512
  };
4486
- currentConnection = await connectWebSocket({
4487
- ...connectOpts,
4488
- onClose: (code, reason) => {
4489
- currentConnection = null;
4490
- onClose?.(code, reason);
4491
- if (!closed) scheduleReconnect();
4492
- }
4493
- });
4513
+ currentConnection = await connectOnce();
4494
4514
  return {
4495
4515
  close: () => {
4496
4516
  closed = true;
4497
- if (reconnectTimer) clearTimeout(reconnectTimer);
4517
+ cancelDelay?.();
4498
4518
  currentConnection?.close();
4499
4519
  currentConnection = null;
4500
4520
  }
@@ -7114,10 +7134,14 @@ var OpenClawOrchestrator = class {
7114
7134
 
7115
7135
  // src/listen/dm-listener.ts
7116
7136
  async function startDmListener(options) {
7117
- const { arbi, accessToken, baseUrl, crypto, orchestrator, parentExtId, onLog, onError } = options;
7137
+ const { arbi, baseUrl, crypto, orchestrator, parentExtId, onLog, onError } = options;
7118
7138
  const log = onLog ?? (() => {
7119
7139
  });
7120
7140
  const logError = onError ?? ((msg) => console.error(msg));
7141
+ const initialToken = arbi.session.getState().accessToken;
7142
+ if (!initialToken) {
7143
+ throw new Error("No access token \u2014 run `arbi login` first.");
7144
+ }
7121
7145
  const handleNotification = async (msg) => {
7122
7146
  if (msg.type !== "user_message") return;
7123
7147
  const senderExtId = msg.sender?.external_id;
@@ -7187,7 +7211,10 @@ async function startDmListener(options) {
7187
7211
  }
7188
7212
  const ws = await connectWithReconnect({
7189
7213
  baseUrl,
7190
- accessToken,
7214
+ accessToken: initialToken,
7215
+ getAccessToken: () => arbi.session.getState().accessToken,
7216
+ refreshAuth: () => arbi.auth.relogin(),
7217
+ maxRetries: Infinity,
7191
7218
  onMessage: (msg) => {
7192
7219
  if ("sender" in msg && "recipient" in msg) {
7193
7220
  const notification = msg;
@@ -7199,14 +7226,12 @@ async function startDmListener(options) {
7199
7226
  }
7200
7227
  },
7201
7228
  onReconnecting: (attempt, max) => {
7202
- log(`WebSocket reconnecting (${attempt}/${max})...`);
7229
+ const limit = Number.isFinite(max) ? `/${max}` : "";
7230
+ log(`WebSocket reconnecting (attempt ${attempt}${limit})...`);
7203
7231
  },
7204
7232
  onReconnected: () => {
7205
7233
  log("WebSocket reconnected");
7206
7234
  },
7207
- onReconnectFailed: () => {
7208
- logError("WebSocket reconnection failed \u2014 listener stopped");
7209
- },
7210
7235
  onClose: (_code, reason) => {
7211
7236
  log(`WebSocket closed: ${reason || "no reason"}`);
7212
7237
  }
@@ -7220,6 +7245,6 @@ async function startDmListener(options) {
7220
7245
  };
7221
7246
  }
7222
7247
 
7223
- export { Arbi, ArbiApiError, ArbiError, ClaudeOrchestrator, DOC_TERMINAL_STATUSES, FileConfigStore, OpenClawOrchestrator, agentconfig_exports as agentconfig, agents_exports as agents, assistant_exports as assistant, authenticatedFetch, buildRetrievalChunkTool, buildRetrievalFullContextTool, buildRetrievalTocTool, connectWebSocket, connectWithReconnect, consumeSSEStream, contacts_exports as contacts, conversations_exports as conversations, countCitations, createAuthenticatedClient, createDocumentWaiter, device_flow_exports as deviceFlow, dm_exports as dm, doctags_exports as doctags, documents_exports as documents, documents_node_exports as documentsNode, files_exports as files, filterSkills, formatAgentStepLabel, formatFileSize, formatStreamSummary, formatUserName, formatWorkspaceChoices, formatWsMessage, generateEncryptedWorkspaceKey, generateNewWorkspaceKey, getErrorCode, getErrorMessage, getRawWorkspaceKey, health_exports as health, listen_exports as listen, parseSSEEvents, parseSlashCommand, parseSlashTokenInProgress, performPasswordLogin, performSigningKeyLogin, performSsoDeviceFlowLogin, projects_exports as projects, requireData, requireOk, resolveAuth, resolveCitations, resolveWorkspace, responses_exports as responses, selectWorkspace, selectWorkspaceById, sessions_exports as sessions, settings_exports as settings, startDmListener, streamSSE, stripCitationMarkdown, summarizeCitations, tags_exports as tags, workspaces_exports as workspaces };
7248
+ export { Arbi, ArbiApiError, ArbiError, ClaudeOrchestrator, DOC_TERMINAL_STATUSES, FileConfigStore, OpenClawOrchestrator, WebSocketAuthError, agentconfig_exports as agentconfig, agents_exports as agents, assistant_exports as assistant, authenticatedFetch, buildRetrievalChunkTool, buildRetrievalFullContextTool, buildRetrievalTocTool, connectWebSocket, connectWithReconnect, consumeSSEStream, contacts_exports as contacts, conversations_exports as conversations, countCitations, createAuthenticatedClient, createDocumentWaiter, device_flow_exports as deviceFlow, dm_exports as dm, doctags_exports as doctags, documents_exports as documents, documents_node_exports as documentsNode, files_exports as files, filterSkills, formatAgentStepLabel, formatFileSize, formatStreamSummary, formatUserName, formatWorkspaceChoices, formatWsMessage, generateEncryptedWorkspaceKey, generateNewWorkspaceKey, getErrorCode, getErrorMessage, getRawWorkspaceKey, health_exports as health, listen_exports as listen, parseSSEEvents, parseSlashCommand, parseSlashTokenInProgress, performPasswordLogin, performSigningKeyLogin, performSsoDeviceFlowLogin, projects_exports as projects, requireData, requireOk, resolveAuth, resolveCitations, resolveWorkspace, responses_exports as responses, selectWorkspace, selectWorkspaceById, sessions_exports as sessions, settings_exports as settings, startDmListener, streamSSE, stripCitationMarkdown, summarizeCitations, tags_exports as tags, workspaces_exports as workspaces };
7224
7249
  //# sourceMappingURL=index.js.map
7225
7250
  //# sourceMappingURL=index.js.map