New:Microsoft Teams Notifications Are Now Available in Socket.Learn more
Get Started

@office-agents/sdk

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@office-agents/sdk

Headless SDK for Office Agents — agent runtime, tools, storage, VFS, skills, OAuth, and provider config for building AI-powered Office Add-ins

Source
npmnpm
Version
0.0.5
Version published
Weekly downloads
11
22.22%
Maintainers
1
Weekly downloads
 
Created
Source

@office-agents/sdk

Headless SDK for building AI-powered Microsoft Office Add-ins. Provides an agent runtime, tool system, virtual filesystem, session storage, and multi-provider LLM integration — all running in the browser.

Browser-only — this package targets browser environments (Office Add-ins, SPAs). It uses IndexedDB, localStorage, and the DOM.

Install

npm install @office-agents/sdk

Overview

The SDK is organized into several modules:

ModuleDescription
RuntimeAgentRuntime — manages agent lifecycle, streaming, model resolution, sessions
ToolsdefineTool, bashTool, readTool — define and register tools for the agent
VFSVirtual filesystem with bash shell (just-bash) — file uploads, custom commands
StorageIndexedDB-backed session persistence, VFS file storage
Provider ConfigMulti-provider LLM configuration (OpenAI, Anthropic, Google, etc.)
OAuthPKCE OAuth flow helpers for provider authentication
SkillsInstallable skill system (prompt snippets + files)
WebWeb search and fetch with pluggable providers
SandboxSES-based sandboxed JavaScript evaluation

Quick Start

1. Define a tool

import { defineTool, toolSuccess, toolError } from "@office-agents/sdk";
import { Type } from "@sinclair/typebox";

const greetTool = defineTool({
  name: "greet",
  label: "Greet",
  description: "Greet someone by name",
  parameters: Type.Object({
    name: Type.String({ description: "Name to greet" }),
  }),
  execute: async (toolCallId, params) => {
    return toolSuccess({ message: `Hello, ${params.name}!` });
  },
});

2. Create a RuntimeAdapter

The RuntimeAdapter interface connects your app to the agent runtime:

import type { RuntimeAdapter } from "@office-agents/sdk";

const adapter: RuntimeAdapter = {
  tools: [greetTool],

  buildSystemPrompt: (skills) => {
    return "You are a helpful assistant. Use tools when appropriate.";
  },

  getDocumentId: async () => {
    return "my-document-id"; // unique ID for session scoping
  },

  // Optional: inject context into each message
  getDocumentMetadata: async () => ({
    metadata: { title: "My Document", sheets: ["Sheet1"] },
  }),

  // Optional: react to tool results (e.g., navigate to a cell)
  onToolResult: (toolCallId, result, isError) => {
    console.log("Tool result:", result);
  },
};

3. Initialize the runtime

import { AgentRuntime } from "@office-agents/sdk";

const runtime = new AgentRuntime(adapter);

// Subscribe to state changes
runtime.subscribe((state) => {
  console.log("Messages:", state.messages.length);
  console.log("Streaming:", state.isStreaming);
});

// Initialize (loads saved config, restores session)
await runtime.init();

// Send a message
await runtime.sendMessage("Hello, who are you?");

4. Virtual filesystem & bash

The SDK includes an in-memory virtual filesystem with a bash shell:

import { writeFile, readFile, getBash, setCustomCommands } from "@office-agents/sdk";

// Write files to VFS
writeFile("/home/user/data.csv", "name,age\nAlice,30\nBob,25");

// Read files
const content = readFile("/home/user/data.csv"); // string | null

// Execute bash commands
const bash = getBash();
const result = bash.exec("ls /home/user/");

// Register custom commands (e.g., csv-to-sheet, pdf-to-text)
setCustomCommands(() => [
  {
    name: "my-command",
    execute: async (args, vfs) => {
      return { stdout: "done", stderr: "", exitCode: 0 };
    },
  },
]);

5. Provider configuration

import { loadSavedConfig, saveConfig, type ProviderConfig } from "@office-agents/sdk";

// Load saved config from localStorage
const config = loadSavedConfig();

// Save a new config
saveConfig({
  provider: "openai",
  apiKey: "sk-...",
  model: "gpt-4o",
  useProxy: false,
  proxyUrl: "",
  thinking: "none",
  followMode: true,
  apiType: "key",
  customBaseUrl: "",
  authMethod: "key",
});

6. Sessions

import {
  createSession,
  listSessions,
  getSession,
  saveSession,
  deleteSession,
  configureNamespace,
} from "@office-agents/sdk";

// Set namespace (scopes storage to a document)
configureNamespace({
  dbName: "MyOfficeAppDB",
  dbVersion: 1,
  localStoragePrefix: "my-office-app",
  documentSettingsPrefix: "my-office-app",
});

// Create and manage sessions
const session = await createSession("My Chat");
const sessions = await listSessions();
await deleteSession(session.id);

7. Skills

Skills are installable prompt snippets with optional files:

import { addSkill, getInstalledSkills, removeSkill, buildSkillsPromptSection } from "@office-agents/sdk";

// Install a skill
await addSkill({
  name: "data-analysis",
  content: "When analyzing data, always start by summarizing the dataset...",
  description: "Data analysis best practices",
});

// Build the skills section for the system prompt
const skills = await getInstalledSkills();
const promptSection = buildSkillsPromptSection(skills);

API Reference

Runtime

  • AgentRuntime — Main class. Manages agent lifecycle, streaming, config, sessions, file uploads, and skills.
  • RuntimeAdapter — Interface your app implements to provide tools, system prompt, document ID, and metadata.
  • RuntimeState — Observable state object (messages, streaming status, sessions, uploads, etc.).

Tools

  • defineTool(config) — Create a typed tool with name, description, parameters (TypeBox schema), and execute function.
  • toolSuccess(data) / toolError(message) / toolText(text) — Helper functions to build tool results.
  • bashTool — Built-in tool: execute bash commands in the VFS.
  • readTool — Built-in tool: read files from the VFS with offset/limit support.

VFS

  • writeFile(path, content) / readFile(path) / deleteFile(path) — File operations.
  • getBash() — Get the bash shell instance.
  • setCustomCommands(fn) — Register custom bash commands.
  • snapshotVfs() / restoreVfs(snapshot) — Snapshot and restore VFS state.
  • setStaticFiles(files) — Mount read-only files (e.g., API docs).

Storage

  • configureNamespace(config) — Configure storage namespacing before creating the runtime. Available fields: dbName, dbVersion, localStoragePrefix, documentSettingsPrefix, documentIdSettingsKey.
  • createSession(title) / saveSession(session) / deleteSession(id) — Session CRUD.
  • loadVfsFiles(sessionId) / saveVfsFiles(sessionId, files) — Persist VFS files per session.

Provider Config

  • loadSavedConfig() / saveConfig(config) — Read/write provider settings from localStorage.
  • buildCustomModel(config) — Build a model instance from a custom base URL config.
  • applyProxyToModel(model, config) — Apply proxy URL to a model.

OAuth

  • generatePKCE() — Generate PKCE code verifier + challenge.
  • buildAuthorizationUrl(provider, ...) / exchangeOAuthCode(...) / refreshOAuthToken(...) — Full OAuth flow.

Web

  • searchWeb(query, options) / searchImages(query, options) — Web search with pluggable providers.
  • fetchWeb(url, options) — Fetch and extract web page content.

Used By

  • @office-agents/excel — Excel Add-in with AI chat
  • @office-agents/powerpoint — PowerPoint Add-in with AI chat

License

MIT

FAQs

Package last updated on 15 Mar 2026

Related posts