mirror of
https://github.com/langchain-ai/openwork.git
synced 2026-07-01 20:37:03 -04:00
rename to deepwork
This commit is contained in:
@@ -27,7 +27,7 @@ What actually happened.
|
||||
## Environment
|
||||
|
||||
- **OS**: [e.g., macOS 14.0, Windows 11, Ubuntu 22.04]
|
||||
- **openwork version**: [e.g., 0.2.0]
|
||||
- **deepwork version**: [e.g., 0.2.0]
|
||||
- **Node.js version**: [e.g., 20.10.0]
|
||||
- **Installation method**: [npm / from source]
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
blank_issues_enabled: true
|
||||
contact_links:
|
||||
- name: Documentation
|
||||
url: https://github.com/langchain-ai/openwork#readme
|
||||
url: https://github.com/langchain-ai/deepwork#readme
|
||||
about: Check the README for setup and usage information
|
||||
|
||||
@@ -74,25 +74,25 @@ jobs:
|
||||
with:
|
||||
name: v${{ steps.version.outputs.version }}
|
||||
body: |
|
||||
## openwork v${{ steps.version.outputs.version }}
|
||||
## deepwork v${{ steps.version.outputs.version }}
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Run directly
|
||||
npx openwork
|
||||
npx deepwork
|
||||
|
||||
# Or install globally
|
||||
npm install -g openwork
|
||||
openwork
|
||||
npm install -g deepwork
|
||||
deepwork
|
||||
```
|
||||
|
||||
Requires Node.js 18+. Electron is installed automatically as a dependency.
|
||||
|
||||
### Links
|
||||
|
||||
- [Documentation](https://github.com/langchain-ai/openwork#readme)
|
||||
- [npm package](https://www.npmjs.com/package/openwork)
|
||||
- [Documentation](https://github.com/langchain-ai/deepwork#readme)
|
||||
- [npm package](https://www.npmjs.com/package/deepwork)
|
||||
draft: false
|
||||
prerelease: ${{ contains(steps.version.outputs.version, '-') }}
|
||||
env:
|
||||
|
||||
+6
-6
@@ -1,6 +1,6 @@
|
||||
# Contributing to openwork
|
||||
# Contributing to deepwork
|
||||
|
||||
Thank you for your interest in contributing to openwork! This document provides guidelines for development and contribution.
|
||||
Thank you for your interest in contributing to deepwork! This document provides guidelines for development and contribution.
|
||||
|
||||
## Development Setup
|
||||
|
||||
@@ -14,8 +14,8 @@ Thank you for your interest in contributing to openwork! This document provides
|
||||
|
||||
1. Fork and clone the repository:
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/openwork.git
|
||||
cd openwork
|
||||
git clone https://github.com/YOUR_USERNAME/deepwork.git
|
||||
cd deepwork
|
||||
```
|
||||
|
||||
2. Install dependencies:
|
||||
@@ -31,7 +31,7 @@ Thank you for your interest in contributing to openwork! This document provides
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
openwork/
|
||||
deepwork/
|
||||
├── src/
|
||||
│ ├── main/ # Electron main process
|
||||
│ │ ├── index.ts # App entry point
|
||||
@@ -82,7 +82,7 @@ openwork/
|
||||
|
||||
## Design System
|
||||
|
||||
openwork uses a tactical/SCADA-inspired design system:
|
||||
deepwork uses a tactical/SCADA-inspired design system:
|
||||
|
||||
### Colors
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# openwork
|
||||
# deepwork
|
||||
|
||||
[](https://github.com/langchain-ai/openwork/actions/workflows/ci.yml)
|
||||
[](https://www.npmjs.com/package/openwork)
|
||||
[](https://github.com/langchain-ai/deepwork/actions/workflows/ci.yml)
|
||||
[](https://www.npmjs.com/package/deepwork)
|
||||
[](https://opensource.org/licenses/MIT)
|
||||
|
||||
A tactical agent interface for [deepagentsjs](https://github.com/langchain-ai/deepagentsjs) - an opinionated harness for building deep agents with filesystem capabilities, planning, and subagent delegation.
|
||||
|
||||

|
||||

|
||||
|
||||
## Features
|
||||
|
||||
@@ -24,11 +24,11 @@ A tactical agent interface for [deepagentsjs](https://github.com/langchain-ai/de
|
||||
|
||||
```bash
|
||||
# Run directly
|
||||
npx openwork
|
||||
npx deepwork
|
||||
|
||||
# Or install globally
|
||||
npm install -g openwork
|
||||
openwork
|
||||
npm install -g deepwork
|
||||
deepwork
|
||||
```
|
||||
|
||||
Requires Node.js 18+. Electron is installed automatically as a dependency.
|
||||
@@ -36,8 +36,8 @@ Requires Node.js 18+. Electron is installed automatically as a dependency.
|
||||
### From Source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/langchain-ai/openwork.git
|
||||
cd openwork
|
||||
git clone https://github.com/langchain-ai/deepwork.git
|
||||
cd deepwork
|
||||
npm install
|
||||
npm run dev
|
||||
```
|
||||
@@ -46,7 +46,7 @@ npm run dev
|
||||
|
||||
### API Keys
|
||||
|
||||
openwork supports multiple LLM providers. Set your API keys via:
|
||||
deepwork supports multiple LLM providers. Set your API keys via:
|
||||
|
||||
1. **Environment Variables** (recommended)
|
||||
```bash
|
||||
@@ -67,7 +67,7 @@ openwork supports multiple LLM providers. Set your API keys via:
|
||||
|
||||
## Architecture
|
||||
|
||||
openwork is built with:
|
||||
deepwork is built with:
|
||||
|
||||
- **Electron** - Cross-platform desktop framework
|
||||
- **React** - UI components with tactical/SCADA-inspired design
|
||||
@@ -127,7 +127,7 @@ To publish a new release:
|
||||
|
||||
## Design System
|
||||
|
||||
openwork uses a tactical/SCADA-inspired design system optimized for:
|
||||
deepwork uses a tactical/SCADA-inspired design system optimized for:
|
||||
|
||||
- **Information density** - Dense layouts for monitoring agent activity
|
||||
- **Status at a glance** - Color-coded status indicators (nominal, warning, critical)
|
||||
|
||||
+4
-4
@@ -34,8 +34,8 @@ Include the following information in your report:
|
||||
|
||||
This security policy applies to:
|
||||
|
||||
- The openwork desktop application
|
||||
- The npm package `openwork`
|
||||
- The deepwork desktop application
|
||||
- The npm package `deepwork`
|
||||
- This GitHub repository
|
||||
|
||||
### Out of Scope
|
||||
@@ -46,9 +46,9 @@ This security policy applies to:
|
||||
|
||||
## Security Best Practices for Users
|
||||
|
||||
When using openwork:
|
||||
When using deepwork:
|
||||
|
||||
1. **API Keys**: Store API keys securely using environment variables rather than hardcoding them.
|
||||
2. **Sensitive Data**: Be cautious when giving agents access to directories containing sensitive information.
|
||||
3. **Human-in-the-Loop**: Use the approval system for sensitive operations.
|
||||
4. **Updates**: Keep openwork updated to receive security patches.
|
||||
4. **Updates**: Keep deepwork updated to receive security patches.
|
||||
|
||||
+8
-8
@@ -1,33 +1,33 @@
|
||||
#!/usr/bin/env node
|
||||
/* eslint-disable @typescript-eslint/no-require-imports */
|
||||
/**
|
||||
* openwork CLI - Launches the Electron app
|
||||
* deepwork CLI - Launches the Electron app
|
||||
*/
|
||||
|
||||
const { spawn } = require('child_process')
|
||||
const path = require('path')
|
||||
|
||||
// Set process title for Activity Monitor
|
||||
process.title = 'openwork'
|
||||
process.title = 'deepwork'
|
||||
|
||||
const args = process.argv.slice(2)
|
||||
|
||||
// Handle --version flag
|
||||
if (args.includes('--version') || args.includes('-v')) {
|
||||
const { version } = require('../package.json')
|
||||
console.log(`openwork v${version}`)
|
||||
console.log(`deepwork v${version}`)
|
||||
process.exit(0)
|
||||
}
|
||||
|
||||
// Handle --help flag
|
||||
if (args.includes('--help') || args.includes('-h')) {
|
||||
console.log(`
|
||||
openwork - A tactical agent interface for deepagentsjs
|
||||
deepwork - A tactical agent interface for deepagentsjs
|
||||
|
||||
Usage:
|
||||
openwork Launch the application
|
||||
openwork --version Show version
|
||||
openwork --help Show this help
|
||||
deepwork Launch the application
|
||||
deepwork --version Show version
|
||||
deepwork --help Show this help
|
||||
`)
|
||||
process.exit(0)
|
||||
}
|
||||
@@ -58,6 +58,6 @@ child.on('close', (code) => {
|
||||
})
|
||||
|
||||
child.on('error', (err) => {
|
||||
console.error('Failed to start openwork:', err.message)
|
||||
console.error('Failed to start deepwork:', err.message)
|
||||
process.exit(1)
|
||||
})
|
||||
|
||||
Generated
+3
-3
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "openwork",
|
||||
"name": "deepwork",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "openwork",
|
||||
"name": "deepwork",
|
||||
"version": "0.1.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -44,7 +44,7 @@
|
||||
"zustand": "^5.0.3"
|
||||
},
|
||||
"bin": {
|
||||
"openwork": "bin/cli.js"
|
||||
"deepwork": "bin/cli.js"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@electron-toolkit/eslint-config-prettier": "^3.0.0",
|
||||
|
||||
+5
-5
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "openwork",
|
||||
"name": "deepwork",
|
||||
"version": "0.1.0",
|
||||
"description": "A tactical agent interface for deepagentsjs",
|
||||
"main": "./out/main/index.js",
|
||||
@@ -11,17 +11,17 @@
|
||||
"README.md"
|
||||
],
|
||||
"bin": {
|
||||
"openwork": "./bin/cli.js"
|
||||
"deepwork": "./bin/cli.js"
|
||||
},
|
||||
"author": "LangChain",
|
||||
"license": "MIT",
|
||||
"homepage": "https://github.com/langchain-ai/openwork",
|
||||
"homepage": "https://github.com/langchain-ai/deepwork",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/langchain-ai/openwork.git"
|
||||
"url": "git+https://github.com/langchain-ai/deepwork.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/langchain-ai/openwork/issues"
|
||||
"url": "https://github.com/langchain-ai/deepwork/issues"
|
||||
},
|
||||
"keywords": [
|
||||
"ai",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* Base system prompt for the openwork agent.
|
||||
* Base system prompt for the deepwork agent.
|
||||
*
|
||||
* Adapted from deepagents-cli default_agent_prompt.md
|
||||
*/
|
||||
|
||||
+1
-1
@@ -50,7 +50,7 @@ function createWindow(): void {
|
||||
app.whenReady().then(async () => {
|
||||
// Set app user model id for windows
|
||||
if (process.platform === 'win32') {
|
||||
app.setAppUserModelId(isDev ? process.execPath : 'com.langchain.openwork')
|
||||
app.setAppUserModelId(isDev ? process.execPath : 'com.langchain.deepwork')
|
||||
}
|
||||
|
||||
// Set dock icon on macOS
|
||||
|
||||
@@ -4,12 +4,12 @@ import * as fs from 'fs/promises'
|
||||
import * as path from 'path'
|
||||
import type { ModelConfig, Provider } from '../types'
|
||||
import { startWatching, stopWatching } from '../services/workspace-watcher'
|
||||
import { getOpenworkDir, getApiKey, setApiKey, deleteApiKey, hasApiKey } from '../storage'
|
||||
import { getDeepworkDir, getApiKey, setApiKey, deleteApiKey, hasApiKey } from '../storage'
|
||||
|
||||
// Store for non-sensitive settings only (no encryption needed)
|
||||
const store = new Store({
|
||||
name: 'settings',
|
||||
cwd: getOpenworkDir()
|
||||
cwd: getDeepworkDir()
|
||||
})
|
||||
|
||||
// Provider configurations
|
||||
@@ -175,7 +175,7 @@ export function registerModelHandlers(ipcMain: IpcMain): void {
|
||||
store.set('defaultModel', modelId)
|
||||
})
|
||||
|
||||
// Set API key for a provider (stored in ~/.openwork/.env)
|
||||
// Set API key for a provider (stored in ~/.deepwork/.env)
|
||||
ipcMain.handle(
|
||||
'models:setApiKey',
|
||||
async (_event, { provider, apiKey }: { provider: string; apiKey: string }) => {
|
||||
@@ -183,7 +183,7 @@ export function registerModelHandlers(ipcMain: IpcMain): void {
|
||||
}
|
||||
)
|
||||
|
||||
// Get API key for a provider (from ~/.openwork/.env or process.env)
|
||||
// Get API key for a provider (from ~/.deepwork/.env or process.env)
|
||||
ipcMain.handle('models:getApiKey', async (_event, provider: string) => {
|
||||
return getApiKey(provider) ?? null
|
||||
})
|
||||
|
||||
+9
-9
@@ -2,8 +2,8 @@ import { homedir } from 'os'
|
||||
import { join } from 'path'
|
||||
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs'
|
||||
|
||||
const OPENWORK_DIR = join(homedir(), '.openwork')
|
||||
const ENV_FILE = join(OPENWORK_DIR, '.env')
|
||||
const DEEPWORK_DIR = join(homedir(), '.deepwork')
|
||||
const ENV_FILE = join(DEEPWORK_DIR, '.env')
|
||||
|
||||
// Environment variable names for each provider
|
||||
const ENV_VAR_NAMES: Record<string, string> = {
|
||||
@@ -11,19 +11,19 @@ const ENV_VAR_NAMES: Record<string, string> = {
|
||||
openai: 'OPENAI_API_KEY'
|
||||
}
|
||||
|
||||
export function getOpenworkDir(): string {
|
||||
if (!existsSync(OPENWORK_DIR)) {
|
||||
mkdirSync(OPENWORK_DIR, { recursive: true })
|
||||
export function getDeepworkDir(): string {
|
||||
if (!existsSync(DEEPWORK_DIR)) {
|
||||
mkdirSync(DEEPWORK_DIR, { recursive: true })
|
||||
}
|
||||
return OPENWORK_DIR
|
||||
return DEEPWORK_DIR
|
||||
}
|
||||
|
||||
export function getDbPath(): string {
|
||||
return join(getOpenworkDir(), 'openwork.sqlite')
|
||||
return join(getDeepworkDir(), 'deepwork.sqlite')
|
||||
}
|
||||
|
||||
export function getCheckpointDbPath(): string {
|
||||
return join(getOpenworkDir(), 'langgraph.sqlite')
|
||||
return join(getDeepworkDir(), 'langgraph.sqlite')
|
||||
}
|
||||
|
||||
export function getEnvFilePath(): string {
|
||||
@@ -53,7 +53,7 @@ function parseEnvFile(): Record<string, string> {
|
||||
|
||||
// Write object back to .env file
|
||||
function writeEnvFile(env: Record<string, string>): void {
|
||||
getOpenworkDir() // ensure dir exists
|
||||
getDeepworkDir() // ensure dir exists
|
||||
const lines = Object.entries(env)
|
||||
.filter(([_, v]) => v)
|
||||
.map(([k, v]) => `${k}=${v}`)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>openwork</title>
|
||||
<title>deepwork</title>
|
||||
<meta
|
||||
http-equiv="Content-Security-Policy"
|
||||
content="default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:"
|
||||
|
||||
@@ -131,7 +131,7 @@ function App(): React.JSX.Element {
|
||||
transformOrigin: 'top left'
|
||||
}}
|
||||
>
|
||||
<span className="app-badge-name">OPENWORK</span>
|
||||
<span className="app-badge-name">DEEPWORK</span>
|
||||
<span className="app-badge-version">{__APP_VERSION__}</span>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user