@charzhu/openjaw-agent 0.3.1 → 0.3.3

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@charzhu/openjaw-agent",
3
- "version": "0.3.1",
3
+ "version": "0.3.3",
4
4
  "description": "OpenJaw Agent — Autonomous desktop AI assistant for the terminal. Rich Ink TUI, 100+ tools, multi-channel bridges (Telegram, Feishu, Teams, WeChat). Standalone, no MCP server required.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -56,10 +56,14 @@
56
56
  "build:mcp": "npm run build --prefix ../openjaw-mcp",
57
57
  "build": "npm run build:mcp && npm run build:ink && node esbuild.config.mjs",
58
58
  "build:tsc": "npm run build:ink && tsc",
59
+ "build:renderer": "vite build",
60
+ "build:desktop": "npm run build && npm run build:renderer",
61
+ "build:icon": "node scripts/generate-icon.mjs",
62
+ "dev:desktop": "vite",
59
63
  "start": "node dist/main.js",
60
64
  "dev": "npm run build:ink && tsx src/main.ts",
61
65
  "tui:hello": "npm run build:ink && tsx src/entry.tsx",
62
- "typecheck": "tsc --noEmit",
66
+ "typecheck": "tsc --noEmit && tsc --noEmit -p src/desktop/renderer/tsconfig.json",
63
67
  "test": "vitest run",
64
68
  "test:watch": "vitest",
65
69
  "prepublishOnly": "npm run build && npm run typecheck && npm test"
@@ -67,9 +71,11 @@
67
71
  "dependencies": {
68
72
  "@anthropic-ai/sdk": "^0.79.0",
69
73
  "@azure/identity": "^4.5.0",
74
+ "@azure/msal-node-extensions": "^5.2.5",
70
75
  "@inquirer/select": "^5.1.2",
71
76
  "@larksuiteoapi/node-sdk": "^1.60.0",
72
77
  "@microsoft/microsoft-graph-client": "^3.0.7",
78
+ "@microsoft/workiq": "^1.0.0",
73
79
  "@modelcontextprotocol/sdk": "^1.29.0",
74
80
  "@nanostores/react": "^1.1.0",
75
81
  "@types/inquirer": "^9.0.9",
@@ -97,6 +103,7 @@
97
103
  "node-notifier": "^10.0.1",
98
104
  "node-telegram-bot-api": "^0.67.0",
99
105
  "openai": "^6.36.0",
106
+ "proper-lockfile": "^4.1.2",
100
107
  "qrcode-terminal": "^0.12.0",
101
108
  "react": "^19.2.4",
102
109
  "react-reconciler": "0.33.0",
@@ -115,16 +122,40 @@
115
122
  "yaml": "^2.8.2",
116
123
  "zod": "^3.24.1"
117
124
  },
125
+ "optionalDependencies": {
126
+ "electron": "^42.0.0"
127
+ },
118
128
  "devDependencies": {
119
129
  "@charzhu/openjaw": "file:../openjaw-mcp",
120
130
  "@openjaw/ink": "file:./packages/openjaw-ink",
131
+ "@radix-ui/react-dialog": "^1.1.16",
132
+ "@radix-ui/react-popover": "^1.1.16",
133
+ "@radix-ui/react-select": "^2.3.0",
134
+ "@radix-ui/react-slot": "^1.2.5",
135
+ "@radix-ui/react-tabs": "^1.1.14",
136
+ "@radix-ui/react-tooltip": "^1.2.9",
137
+ "@tailwindcss/vite": "^4.3.0",
121
138
  "@types/marked": "^5.0.2",
122
139
  "@types/node": "^22.0.0",
123
140
  "@types/node-telegram-bot-api": "^0.64.14",
141
+ "@types/proper-lockfile": "^4.1.4",
124
142
  "@types/react": "^19.2.14",
143
+ "@types/react-dom": "^19.2.0",
144
+ "@vitejs/plugin-react": "^6.0.0",
145
+ "class-variance-authority": "^0.7.1",
146
+ "clsx": "^2.1.1",
125
147
  "esbuild": "~0.27.0",
148
+ "lucide-react": "^1.0.0",
149
+ "react-dom": "^19.2.4",
150
+ "shiki": "^4.0.0",
151
+ "sonner": "^2.0.0",
152
+ "streamdown": "^2.5.0",
153
+ "tailwind-merge": "^3.0.0",
154
+ "tailwindcss": "^4.3.0",
126
155
  "tsx": "^4.19.2",
127
156
  "typescript": "^5.7.2",
157
+ "vite": "^8.0.0",
158
+ "vite-plugin-electron": "^1.0.0",
128
159
  "vitest": "^4.1.3"
129
160
  },
130
161
  "engines": {
@@ -10,13 +10,13 @@ You are NOT a chatbot. You are an agent that takes action. When the user asks yo
10
10
 
11
11
  - **Act, don't advise.** When asked "send an email," send the email. Don't explain how to send an email.
12
12
  - **Solve problems with code.** When a task involves computation, data processing, or analysis — write code and run it. Don't describe what to do; do it.
13
- - **Think step by step.** Show your reasoning before acting. Explain what you're about to do and why.
13
+ - **Plan internally, then act.** Do not narrate a plan as a standalone response. If the task needs action, call the needed tool(s) in the same assistant response. Only give a text-only response when it is the final answer or when you need user input.
14
14
  - **Verify your work.** After taking action, confirm it succeeded. Run the test, execute the script, check the output. Never assume — always verify.
15
15
  - **Verify every step, not just the last.** Web forms have OK buttons, confirmation dialogs, and error pages. Read the page content after every interaction before declaring success.
16
16
  - **Handle errors gracefully.** If a tool fails, try an alternative approach. If code has a bug, fix it and re-run. If all approaches fail, explain what went wrong.
17
17
  - **Be concise and direct.** Go straight to the point. Lead with the answer or action, not the reasoning. Skip filler words and preamble. If you can say it in one sentence, don't use three.
18
18
  - **No preambles.** Don't say "Sure, I'd be happy to help!" or "As an AI assistant." Just do the work.
19
- - **Brief status updates.** Before your first tool call, briefly state what you're about to do. While working, give short updates only at key moments: when you find something important, when changing direction, or when you've made progress.
19
+ - **No action-only status updates.** Never end a turn with only "I'll...", "Let me...", or a plan for what you will do next. Status text is allowed only when it accompanies actual tool calls in the same response or when reporting final results.
20
20
 
21
21
  ## What You Know
22
22
 
@@ -2,12 +2,28 @@
2
2
 
3
3
  You use a structured reasoning approach for every task.
4
4
 
5
+ ## Tool-use enforcement
6
+
7
+ You MUST use your tools to take action — do not describe what you would do or
8
+ plan to do without actually doing it. When you say you will perform an action
9
+ (e.g. "I'll gather the files", "Let me check the page", "I'll create the deck"),
10
+ you MUST make the corresponding tool call in the same response. Never end your
11
+ turn with a promise of future action — execute it now.
12
+
13
+ Keep working until the task is actually complete. Do not stop with a summary of
14
+ what you plan to do next. If you have tools that can accomplish the task, use
15
+ them instead of telling the user what you would do.
16
+
17
+ Every response must either (a) contain tool calls that make progress, or
18
+ (b) deliver the final result. A response that only states an intention without
19
+ acting is not acceptable.
20
+
5
21
  ## ReAct Loop
6
22
 
7
23
  For each user request, follow this cycle:
8
24
 
9
25
  1. **Observe** — What does the user want? What context do I have?
10
- 2. **Think** — What's my plan? Which tools do I need? In what order?
26
+ 2. **Think internally** — What tools do I need? In what order?
11
27
  3. **Act** — Execute the tool(s).
12
28
  4. **Reflect** — Did it succeed? Verify the result. Do I need another step?
13
29