npm.io
0.3.103 • Published 12h ago

@arbidocs/sdk

Licence
MIT
Version
0.3.103
Deps
2
Size
7.5 MB
Vulns
0
Weekly
349

@arbidocs/sdk

TypeScript SDK for the ARBI platform. Handles authentication, workspace encryption, and streaming AI queries.

Quickstart

npm install @arbidocs/sdk
import { Arbi } from '@arbidocs/sdk/browser'

const arbi = new Arbi({ url: 'https://www.arbidocs.com' })

// Login and select a workspace
await arbi.login('user@example.com', 'password')
const workspaces = await arbi.workspaces.list()
await arbi.selectWorkspace(workspaces[0].external_id)

// Ask a streaming question about your documents
const docs = await arbi.documents.list()
await arbi.assistant.query('Summarize this document', {
  docIds: [docs[0].external_id],
  onToken: (token) => process.stdout.write(token),
})

For Node.js, install fake-indexeddb and import it first:

import 'fake-indexeddb/auto'
import { Arbi } from '@arbidocs/sdk'

Lifecycle

const arbi = new Arbi({ url: 'https://www.arbidocs.com' })

await arbi.login(email, password)            // or arbi.loginWithKey(email, keyBase64)
await arbi.selectWorkspace(workspaceId)
// ... use the SDK ...
await arbi.logout()
Property Description
arbi.isLoggedIn Whether the user is authenticated
arbi.hasWorkspace Whether a workspace is selected

Operations

Namespace Key methods
arbi.workspaces list(), create(), update(), delete(), listUsers(), addUsers(), removeUsers()
arbi.documents list(), get(), uploadFile(), uploadUrl(), update(), delete(), download()
arbi.conversations list(), getThreads(), updateTitle(), share(), delete()
arbi.assistant query(question, options), retrieve(query, docIds), respond(messageId, answer)
arbi.tags list(), create(), update(), delete()
arbi.doctags assign(), remove(), generate()
arbi.contacts list(), add(), remove()
arbi.health check(), models(), mcpTools()

Streaming AI queries

const result = await arbi.assistant.query('What does section 3 say?', {
  docIds: [docId],
  previousResponseId: lastMessageId,   // for multi-turn conversations
  onToken: (token) => { /* append to UI */ },
  onStreamStart: ({ assistant_message_ext_id }) => { /* save for follow-ups */ },
  onAgentStep: (step) => { /* agent tool usage */ },
  onError: (message) => { /* handle error */ },
  onComplete: () => { /* done */ },
})

// result.text — full accumulated response
// result.assistantMessageExtId — use as previousResponseId for follow-ups

Session recovery

The SDK persists the signing key (encrypted) in IndexedDB. Recover a session without a password:

await arbi.loginWithKey('user@example.com', signingKeyBase64)

The SDK also auto-recovers on 401 responses using the stored key.

Security

  • Zero-knowledge auth — passwords never leave the client
  • E2E workspace encryption — symmetric keys wrapped with your public key
  • Encrypted key storage — private keys in IndexedDB encrypted with non-extractable AES-GCM
  • Key zeroing on logout — signing and session keys scrubbed from memory

React

For React apps, use @arbidocs/react instead — it wraps this SDK with hooks and a context provider. See the @arbidocs/react README.

Requirements

  • Browser: Any modern browser with Web Crypto API
  • Node.js: v18+ (install fake-indexeddb)
  • TypeScript: 5.0+ (optional)