
Security News
Axios Supply Chain Attack Reaches OpenAI macOS Signing Pipeline, Forces Certificate Rotation
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.
workstory-agent
Advanced tools
Multi-agent system for extracting structured work story data from conversational inputs
Multi-agent system for extracting structured work story data from conversational inputs using LLM-powered property agents.
npm install @workstory/agent
import { MCPStorageManager, MemoryStorageAdapter, createDefaultAgents } from '@workstory/agent';
// Create storage adapter (or use FirestoreStorageAdapter for production)
const storageAdapter = new MemoryStorageAdapter();
// Initialize manager with OpenAI API key
const manager = new MCPStorageManager({
storageAdapter,
agents: createDefaultAgents(),
autoUpdate: true,
llmConfig: {
apiKey: process.env.OPENAI_API_KEY,
model: 'gpt-4o',
temperature: 0.7,
maxTokens: 1000,
},
});
// Add a chat message
await manager.addChatMessage('user123', {
id: 'msg1',
role: 'user',
content: 'I worked at Google as a Software Engineer from 2020 to 2022',
timestamp: new Date().toISOString(),
});
// Work story will auto-update (if autoUpdate: true)
// Or manually trigger update
const result = await manager.updateWorkStoryFromChat('user123', 50);
// Get the updated work story
const workStory = await manager.getWorkStory('user123');
console.log(workStory.data.timeline.engagements);
org.workstory.standard v1.0.0 schemaimport { MemoryStorageAdapter } from '@workstory/agent';
const adapter = new MemoryStorageAdapter();
import { FirestoreStorageAdapter } from '@workstory/agent';
import { getFirestore } from 'firebase/firestore';
const db = getFirestore();
const adapter = new FirestoreStorageAdapter(db);
Note: Requires firebase as a peer dependency. Install with:
npm install firebase
Implement the MCPStorageAdapter interface:
import { MCPStorageAdapter, GoldStandardWorkStory, ChatMessage } from '@workstory/agent';
class MyCustomAdapter implements MCPStorageAdapter {
async readWorkStory(userId: string): Promise<GoldStandardWorkStory | null> {
// Read from your database
}
async writeWorkStory(userId: string, workStory: GoldStandardWorkStory): Promise<void> {
// Write to your database
}
async readChatLog(userId: string, limit?: number): Promise<ChatMessage[]> {
// Read chat messages
}
async writeChatMessage(userId: string, message: ChatMessage): Promise<void> {
// Write chat message
}
}
The package includes default agents for:
Create custom agents by extending BasePropertyAgent:
import { BasePropertyAgent, PropertyAgentResponse, ChatMessage, GoldStandardWorkStory } from '@workstory/agent';
class CustomAgent extends BasePropertyAgent {
constructor() {
super({
propertyPath: 'customProperty',
description: 'Extract custom data',
systemPrompt: 'Your extraction instructions',
});
}
async extractProperty(chatLog: ChatMessage[], currentWorkStory: GoldStandardWorkStory): Promise<PropertyAgentResponse> {
// Custom extraction logic
}
getCurrentValue(workStory: GoldStandardWorkStory): any {
return workStory.data.customProperty;
}
updateWorkStory(workStory: GoldStandardWorkStory, value: any): GoldStandardWorkStory {
return {
...workStory,
data: {
...workStory.data,
customProperty: value,
},
};
}
}
llmConfig: {
apiKey: string, // OpenAI API key (required)
apiUrl?: string, // Default: 'https://api.openai.com/v1/chat/completions'
model?: string, // Default: 'gpt-4o'
temperature?: number, // Default: 0.7
maxTokens?: number, // Default: 1000
maxRetries?: number, // Default: 10
retryDelay?: number, // Default: 1000ms
timeout?: number, // Default: 120000ms (2 minutes)
}
When autoUpdate: true, the work story automatically updates after chat messages are added (with a 1-second debounce).
const manager = new MCPStorageManager({
storageAdapter,
autoUpdate: true, // Automatically update on message add
});
getWorkStory(userId: string): Promise<GoldStandardWorkStory>Get the current work story for a user.
updateWorkStoryFromChat(userId: string, chatLogLimit?: number): Promise<WorkstoryUpdateResult>Manually trigger work story update from chat logs.
addChatMessage(userId: string, message: ChatMessage): Promise<void>Add a chat message and trigger auto-update if enabled.
interface WorkstoryUpdateResult {
updated: boolean;
updatedProperties: string[];
agentResponses: Map<string, PropertyAgentResponse>;
workStory: GoldStandardWorkStory;
}
Work stories follow the org.workstory.standard v1.0.0 schema:
interface GoldStandardWorkStory {
schema: {
name: "org.workstory.standard";
version: "1.0.0";
document_type: "work_story";
};
id: string;
created_at: string;
updated_at: string;
source: WorkStorySource;
privacy: WorkStoryPrivacy;
data: {
person?: PersonData;
summary?: SummaryData;
timeline?: { engagements: Engagement[] };
skills?: SkillsData;
preferences?: PreferencesData;
// ... more fields
};
}
See the examples/ directory for more examples:
MIT
FAQs
Multi-agent system for extracting structured work story data from conversational inputs
The npm package workstory-agent receives a total of 1 weekly downloads. As such, workstory-agent popularity was classified as not popular.
We found that workstory-agent demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OpenAI rotated macOS signing certificates after a malicious Axios package reached its CI pipeline in a broader software supply chain attack.

Security News
Open source is under attack because of how much value it creates. It has been the foundation of every major software innovation for the last three decades. This is not the time to walk away from it.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.