agentxl 1.0.0 → 1.1.2
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/LICENSE +21 -0
- package/README.md +352 -197
- package/bin/agentxl-folder-picker.exe +0 -0
- package/bin/agentxl.js +44 -8
- package/dist/agent/models.d.ts +9 -9
- package/dist/agent/models.d.ts.map +1 -1
- package/dist/agent/models.js +44 -8
- package/dist/agent/models.js.map +1 -1
- package/dist/agent/prompt/folder-context.d.ts +26 -0
- package/dist/agent/prompt/folder-context.d.ts.map +1 -0
- package/dist/agent/prompt/folder-context.js +105 -0
- package/dist/agent/prompt/folder-context.js.map +1 -0
- package/dist/agent/prompt/system-prompt.d.ts +21 -0
- package/dist/agent/prompt/system-prompt.d.ts.map +1 -0
- package/dist/agent/prompt/system-prompt.js +130 -0
- package/dist/agent/prompt/system-prompt.js.map +1 -0
- package/dist/agent/session.d.ts +10 -4
- package/dist/agent/session.d.ts.map +1 -1
- package/dist/agent/session.js +53 -15
- package/dist/agent/session.js.map +1 -1
- package/dist/agent/tools/excel.d.ts +24 -0
- package/dist/agent/tools/excel.d.ts.map +1 -0
- package/dist/agent/tools/excel.js +132 -0
- package/dist/agent/tools/excel.js.map +1 -0
- package/dist/server/document-converter.d.ts +71 -0
- package/dist/server/document-converter.d.ts.map +1 -0
- package/dist/server/document-converter.js +353 -0
- package/dist/server/document-converter.js.map +1 -0
- package/dist/server/excel-bridge.d.ts +38 -0
- package/dist/server/excel-bridge.d.ts.map +1 -0
- package/dist/server/excel-bridge.js +75 -0
- package/dist/server/excel-bridge.js.map +1 -0
- package/dist/server/folder-picker.d.ts +9 -0
- package/dist/server/folder-picker.d.ts.map +1 -0
- package/dist/server/folder-picker.js +204 -0
- package/dist/server/folder-picker.js.map +1 -0
- package/dist/server/folder-scanner.d.ts +43 -0
- package/dist/server/folder-scanner.d.ts.map +1 -0
- package/dist/server/folder-scanner.js +161 -0
- package/dist/server/folder-scanner.js.map +1 -0
- package/dist/server/http.d.ts +19 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +62 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/index.d.ts +16 -4
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +70 -246
- package/dist/server/index.js.map +1 -1
- package/dist/server/json-store.d.ts +19 -0
- package/dist/server/json-store.d.ts.map +1 -0
- package/dist/server/json-store.js +37 -0
- package/dist/server/json-store.js.map +1 -0
- package/dist/server/routes/agent.d.ts +16 -0
- package/dist/server/routes/agent.d.ts.map +1 -0
- package/dist/server/routes/agent.js +196 -0
- package/dist/server/routes/agent.js.map +1 -0
- package/dist/server/routes/excel.d.ts +10 -0
- package/dist/server/routes/excel.d.ts.map +1 -0
- package/dist/server/routes/excel.js +41 -0
- package/dist/server/routes/excel.js.map +1 -0
- package/dist/server/routes/folder.d.ts +15 -0
- package/dist/server/routes/folder.d.ts.map +1 -0
- package/dist/server/routes/folder.js +184 -0
- package/dist/server/routes/folder.js.map +1 -0
- package/dist/server/routes/workbook.d.ts +7 -0
- package/dist/server/routes/workbook.d.ts.map +1 -0
- package/dist/server/routes/workbook.js +31 -0
- package/dist/server/routes/workbook.js.map +1 -0
- package/dist/server/static.d.ts +12 -0
- package/dist/server/static.d.ts.map +1 -0
- package/dist/server/static.js +83 -0
- package/dist/server/static.js.map +1 -0
- package/dist/server/workbook-folder-store.d.ts +24 -0
- package/dist/server/workbook-folder-store.d.ts.map +1 -0
- package/dist/server/workbook-folder-store.js +76 -0
- package/dist/server/workbook-folder-store.js.map +1 -0
- package/dist/server/workbook-identity.d.ts +8 -0
- package/dist/server/workbook-identity.d.ts.map +1 -0
- package/dist/server/workbook-identity.js +57 -0
- package/dist/server/workbook-identity.js.map +1 -0
- package/manifest/manifest-hosted.xml +107 -0
- package/package.json +24 -10
- package/taskpane/dist/assets/index-BnD8psE_.js +224 -0
- package/taskpane/dist/assets/index-BuAcDfRq.css +1 -0
- package/taskpane/dist/index.html +2 -2
- package/taskpane/dist/assets/index-6sMpIYxE.css +0 -1
- package/taskpane/dist/assets/index-DyLrQ3Aa.js +0 -164
package/README.md
CHANGED
|
@@ -1,129 +1,284 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://img.shields.io/badge/Excel-
|
|
2
|
+
<img src="https://img.shields.io/badge/Excel-Document_to_Workpaper-059669?style=for-the-badge&logo=microsoftexcel&logoColor=white" alt="AgentXL" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<h1 align="center">AgentXL</h1>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<strong>
|
|
9
|
-
|
|
8
|
+
<strong>Turn source documents into traceable Excel workpapers.</strong><br>
|
|
9
|
+
A local-first agent for document-heavy work that ends in spreadsheets.<br>
|
|
10
|
+
Point AgentXL at a folder, let it search the evidence, then map grounded answers into Excel.
|
|
10
11
|
</p>
|
|
11
12
|
|
|
13
|
+
<p align="center">
|
|
14
|
+
<img src="https://img.shields.io/npm/v/agentxl?color=059669" alt="npm version" />
|
|
15
|
+
<img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" />
|
|
16
|
+
<img src="https://img.shields.io/badge/platform-Windows%20%7C%20Mac-lightgrey" alt="Platform" />
|
|
17
|
+
<img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="Node 20+" />
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<!-- TODO: Replace with actual demo GIF showing: select local folder → ask question → trace answer to source → map into Excel -->
|
|
21
|
+
<!-- <p align="center"><img src="https://raw.githubusercontent.com/satish860/agentxl/master/docs/demo.gif" alt="AgentXL demo" width="600" /></p> -->
|
|
22
|
+
|
|
12
23
|
<p align="center">
|
|
13
24
|
<a href="#quick-start">Quick Start</a> •
|
|
14
|
-
<a href="#
|
|
25
|
+
<a href="#the-method">The Method</a> •
|
|
15
26
|
<a href="#how-it-works">How It Works</a> •
|
|
16
27
|
<a href="#supported-providers">Providers</a> •
|
|
17
28
|
<a href="#troubleshooting">Troubleshooting</a>
|
|
18
29
|
</p>
|
|
19
30
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
Most spreadsheet work does not start in Excel. It starts in messy PDFs, statements, exports, agreements, and support folders.
|
|
34
|
+
|
|
35
|
+
AgentXL is being built for that workflow:
|
|
36
|
+
|
|
37
|
+
- **point to a local folder of source documents**
|
|
38
|
+
- **ask a question or give an instruction**
|
|
39
|
+
- **let the agent search the evidence and read the right files**
|
|
40
|
+
- **map the grounded result into Excel with traceability**
|
|
41
|
+
|
|
42
|
+
Built for audit and diligence workflows first — useful anywhere document-heavy work ends in spreadsheets.
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npm install -g agentxl
|
|
46
|
+
agentxl start
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
No server. No cloud account with us. No classic RAG stack. You bring your own AI model.
|
|
26
50
|
|
|
27
51
|
---
|
|
28
52
|
|
|
29
53
|
## Quick Start
|
|
30
54
|
|
|
31
|
-
|
|
55
|
+
## Windows — Quick Start (no coding required)
|
|
56
|
+
|
|
57
|
+
1. Download the latest `.zip` from [GitHub Releases](https://github.com/satish860/agentxl/releases)
|
|
58
|
+
2. Extract to a folder (e.g. `Desktop\AgentXL`)
|
|
59
|
+
3. Double-click **AgentXL.vbs**
|
|
60
|
+
4. If sign-in is needed, run **AgentXL Login.vbs** first
|
|
61
|
+
5. Excel opens with AgentXL in the **Home** ribbon
|
|
62
|
+
|
|
63
|
+
The Windows release is self-contained — bundled Node.js, no system install required.
|
|
64
|
+
|
|
65
|
+
Alternatively, install the add-in directly from Excel (see [Install the Excel add-in](#5-add-to-excel) below).
|
|
32
66
|
|
|
33
67
|
### 1. Install
|
|
34
68
|
|
|
69
|
+
**Option A — npm**
|
|
70
|
+
|
|
35
71
|
```bash
|
|
36
72
|
npm install -g agentxl
|
|
37
73
|
```
|
|
38
74
|
|
|
75
|
+
This is the simplest cross-platform install path.
|
|
76
|
+
|
|
77
|
+
**Option B — Windows release (no Node.js needed)**
|
|
78
|
+
|
|
79
|
+
1. Download the latest `.zip` from [GitHub Releases](https://github.com/satish860/agentxl/releases)
|
|
80
|
+
2. Extract to a folder
|
|
81
|
+
3. Double-click **AgentXL.vbs**
|
|
82
|
+
|
|
83
|
+
The release ZIP is self-contained: it bundles its own Node.js runtime, the built app, and production dependencies. No separate Node.js installation required.
|
|
84
|
+
|
|
39
85
|
### 2. Start
|
|
40
86
|
|
|
41
87
|
```bash
|
|
42
88
|
agentxl start
|
|
43
89
|
```
|
|
44
90
|
|
|
45
|
-
The CLI walks you through
|
|
91
|
+
The CLI walks you through setup:
|
|
46
92
|
|
|
47
93
|
```
|
|
48
94
|
✅ Auth ready
|
|
49
|
-
✅ HTTPS certificate ready
|
|
95
|
+
✅ HTTPS certificate ready
|
|
50
96
|
✅ Server running at https://localhost:3001
|
|
51
97
|
```
|
|
52
98
|
|
|
53
99
|
### 3. Choose your AI provider
|
|
54
100
|
|
|
55
|
-
On first run, the CLI asks how to connect
|
|
101
|
+
On first run, the CLI asks how to connect:
|
|
56
102
|
|
|
57
|
-
| If you have... | Pick |
|
|
58
|
-
|
|
59
|
-
| **Claude Pro/Max**
|
|
60
|
-
| **ChatGPT Plus/Pro**
|
|
61
|
-
| **GitHub Copilot** subscription | Option 3 — sign in with browser |
|
|
62
|
-
| **An API key**
|
|
63
|
-
| **Nothing yet** |
|
|
103
|
+
| If you have... | Pick | Why |
|
|
104
|
+
|---------------|------|-----|
|
|
105
|
+
| **Claude Pro/Max** subscription | Option 1 — sign in with browser | Best quality, no extra cost |
|
|
106
|
+
| **ChatGPT Plus/Pro** subscription | Option 2 — sign in with browser | If you already pay for ChatGPT |
|
|
107
|
+
| **GitHub Copilot** subscription | Option 3 — sign in with browser | If you already have Copilot |
|
|
108
|
+
| **An API key** | Option 5 — paste your key | Direct access, pay-per-use |
|
|
109
|
+
| **Nothing yet** | [Get a free OpenRouter key](https://openrouter.ai) | Free models, no credit card |
|
|
64
110
|
|
|
65
111
|
> **Already use Pi?** AgentXL shares credentials from `~/.pi/agent/auth.json`. No extra login needed.
|
|
66
112
|
|
|
67
113
|
### 4. Verify in browser
|
|
68
114
|
|
|
69
|
-
Open **https://localhost:3001/taskpane/** in your browser.
|
|
115
|
+
Open **https://localhost:3001/taskpane/** in your browser.
|
|
116
|
+
|
|
117
|
+
You should see the AgentXL UI. This confirms the server, HTTPS, and UI all work before you touch Excel.
|
|
70
118
|
|
|
71
|
-
### 5. Add to Excel
|
|
119
|
+
### 5. Add to Excel
|
|
72
120
|
|
|
73
|
-
|
|
121
|
+
Choose one method:
|
|
74
122
|
|
|
123
|
+
**Option A — Office Store (simplest)**
|
|
124
|
+
1. Open Excel → **Insert** → **Get Add-ins**
|
|
125
|
+
2. Search **"AgentXL"** → click **Add**
|
|
126
|
+
|
|
127
|
+
> The Office Store listing is pending review. Use Option B or C in the meantime.
|
|
128
|
+
|
|
129
|
+
**Option B — Upload hosted manifest (no Trust Center needed)**
|
|
130
|
+
1. Download [`manifest.xml`](https://satish860.github.io/agentxl/manifest/manifest.xml)
|
|
131
|
+
2. Open Excel → **Insert** → **Get Add-ins** → **My Add-ins** → **Upload My Add-in**
|
|
132
|
+
3. Browse to the downloaded `manifest.xml` → **Upload**
|
|
133
|
+
|
|
134
|
+
**Option C — Shared folder catalog (persistent, Windows)**
|
|
75
135
|
1. **Excel** → **File** → **Options** → **Trust Center** → **Trust Center Settings**
|
|
76
136
|
2. Click **Trusted Add-in Catalogs**
|
|
77
|
-
3. Add the
|
|
137
|
+
3. Add the `manifest` folder path from your release ZIP or the path printed by `agentxl start`
|
|
78
138
|
4. Check **Show in Menu** → **OK** → **OK**
|
|
79
139
|
5. **Restart Excel**
|
|
80
|
-
6.
|
|
81
|
-
|
|
140
|
+
6. **Insert** → **My Add-ins** → **SHARED FOLDER** → **AgentXL** → **Add**
|
|
141
|
+
|
|
142
|
+
**Option D — Windows release auto-setup**
|
|
143
|
+
- Double-click **AgentXL.vbs** from the extracted release folder
|
|
144
|
+
- It handles certificate trust, add-in registration, and opens Excel automatically
|
|
82
145
|
|
|
83
|
-
|
|
146
|
+
### 6. Start from a document folder
|
|
84
147
|
|
|
85
|
-
|
|
148
|
+
Open Excel, launch **AgentXL**, and the first-run taskpane now guides the user through:
|
|
86
149
|
|
|
87
|
-
|
|
150
|
+
1. **Connect** — sign in with your model provider if needed
|
|
151
|
+
2. **Folder** — choose the local folder with supporting documents
|
|
152
|
+
3. **Ask** — send a grounded question about that folder
|
|
88
153
|
|
|
89
|
-
|
|
154
|
+
From there, the working flow is:
|
|
90
155
|
|
|
91
|
-
|
|
156
|
+
1. select the workbook you want to populate
|
|
157
|
+
2. point AgentXL at a local folder of supporting files
|
|
158
|
+
3. ask a grounded question
|
|
159
|
+
4. review the answer and source traceability
|
|
160
|
+
5. map the output into Excel
|
|
161
|
+
|
|
162
|
+
Example prompts:
|
|
163
|
+
|
|
164
|
+
- **"Compare this trial balance folder to the lead sheet and flag mismatches."**
|
|
165
|
+
- **"Extract the cash balance from the bank statement folder and map it to the cash workpaper."**
|
|
166
|
+
- **"Pull lease terms from these agreements into the lease schedule."**
|
|
167
|
+
- **"Show me which workbook cells came from which source files."**
|
|
92
168
|
|
|
93
169
|
---
|
|
94
170
|
|
|
95
|
-
##
|
|
171
|
+
## What AgentXL Is
|
|
96
172
|
|
|
97
|
-
|
|
173
|
+
AgentXL is **not** an Excel chatbot.
|
|
98
174
|
|
|
99
|
-
|
|
100
|
-
agentxl start # Start the server
|
|
101
|
-
# Open Excel → click AgentXL on the ribbon
|
|
102
|
-
# Chat.
|
|
103
|
-
```
|
|
175
|
+
It is a **document-to-Excel agent** for evidence-heavy work.
|
|
104
176
|
|
|
105
|
-
|
|
177
|
+
The source of truth lives in documents. The final output lives in Excel. AgentXL sits in between:
|
|
106
178
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
179
|
+
- searching through local files
|
|
180
|
+
- reading the relevant documents
|
|
181
|
+
- extracting grounded facts
|
|
182
|
+
- reconciling across sources
|
|
183
|
+
- mapping outputs into workpapers
|
|
184
|
+
- preserving source traceability
|
|
185
|
+
|
|
186
|
+
This makes it a fit for:
|
|
187
|
+
|
|
188
|
+
- audit
|
|
189
|
+
- due diligence
|
|
190
|
+
- transaction support
|
|
191
|
+
- compliance reviews
|
|
192
|
+
- finance ops
|
|
193
|
+
- any workflow where messy documents become structured spreadsheets
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## What AgentXL Is Not
|
|
198
|
+
|
|
199
|
+
- **Not classic RAG.** No need to start with embeddings, vector DBs, and a retrieval stack.
|
|
200
|
+
- **Not generic spreadsheet chat.** The primary action is not “ask Excel a question.”
|
|
201
|
+
- **Not automation theater.** The goal is reviewable outputs with sources, not flashy demos.
|
|
202
|
+
- **Not a 36-tool architecture diagram.** One parser, one model, direct file search, and an eval loop beat unnecessary layers.
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## The Method
|
|
207
|
+
|
|
208
|
+
AgentXL follows a simple method inspired by real document-processing systems:
|
|
209
|
+
|
|
210
|
+
1. **Parse the files**
|
|
211
|
+
- PDFs, Excel files, CSVs, statements, agreements, support docs
|
|
212
|
+
2. **Search the folder agentically**
|
|
213
|
+
- inspect filenames, structure, metadata, and contents
|
|
214
|
+
- read the right files instead of pre-building a giant stack
|
|
215
|
+
3. **Ask the model to extract or answer**
|
|
216
|
+
- one grounded task at a time
|
|
217
|
+
4. **Map the result into Excel**
|
|
218
|
+
- workpapers, schedules, exception lists, summaries
|
|
219
|
+
5. **Measure whether it was right**
|
|
220
|
+
- evals, failure analysis, correction loops
|
|
221
|
+
6. **Improve the system**
|
|
222
|
+
- fix repeated failure patterns, then measure again
|
|
223
|
+
|
|
224
|
+
### The core loop
|
|
225
|
+
|
|
226
|
+
**Parse → Search → Ask → Evaluate → Fix → Repeat**
|
|
227
|
+
|
|
228
|
+
That is the product.
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Core Workflow
|
|
233
|
+
|
|
234
|
+
AgentXL is designed around a folder-first workflow:
|
|
235
|
+
|
|
236
|
+
1. **Link a local folder** — point AgentXL at a folder of source documents (PDFs, CSVs, Excel files, text)
|
|
237
|
+
2. **AgentXL scans the folder** — builds an inventory of supported files, shows counts in the UI
|
|
238
|
+
3. **Ask a question or give an instruction** — the agent knows what files are available
|
|
239
|
+
4. **The agent searches and reads the relevant files** — using `read`, `grep`, `find`, `ls` tools (visible as live badges in the UI)
|
|
240
|
+
5. **Review the grounded result** — answers cite the source file and content
|
|
241
|
+
6. **Write the output into Excel** — as a workpaper, schedule, or exception list *(coming next)*
|
|
242
|
+
|
|
243
|
+
The agent's working directory is set to your linked folder. When you say "list the files," it lists *your documents*, not the AgentXL project.
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Current Build Status
|
|
248
|
+
|
|
249
|
+
| Area | Status |
|
|
250
|
+
|------|--------|
|
|
251
|
+
| Excel taskpane shell | ✅ Done |
|
|
252
|
+
| Local server + auth flow | ✅ Done |
|
|
253
|
+
| Model connection | ✅ Done |
|
|
254
|
+
| Workbook identity resolution | ✅ Done |
|
|
255
|
+
| Folder linking + native picker | ✅ Done |
|
|
256
|
+
| Folder scanning + file inventory | ✅ Done |
|
|
257
|
+
| Folder-aware agent (cwd, context) | ✅ Done |
|
|
258
|
+
| Agentic file search (read, grep, find, ls) | ✅ Done |
|
|
259
|
+
| Tool call visibility in UI | ✅ Done |
|
|
260
|
+
| Source traceability into Excel | 🔜 Next |
|
|
261
|
+
| Excel write tools | Planned |
|
|
262
|
+
| Eval-driven extraction improvement loop | Planned |
|
|
110
263
|
|
|
111
264
|
---
|
|
112
265
|
|
|
113
266
|
## What It Does
|
|
114
267
|
|
|
115
|
-
|
|
268
|
+
The target behavior looks like this:
|
|
116
269
|
|
|
117
|
-
| You
|
|
118
|
-
|
|
119
|
-
| "
|
|
120
|
-
| "
|
|
121
|
-
| "
|
|
122
|
-
| "
|
|
123
|
-
| "
|
|
124
|
-
| "
|
|
270
|
+
| You ask | AgentXL does |
|
|
271
|
+
|---------|---------------|
|
|
272
|
+
| "Extract the ending cash balance from the bank statement folder and map it to the cash workpaper" | Finds the relevant statement, extracts the value, and writes it into Excel |
|
|
273
|
+
| "Compare this trial balance export folder to the lead sheet and flag mismatches" | Reconciles source documents against the workbook and surfaces exceptions |
|
|
274
|
+
| "Pull lease start date, end date, and monthly payment from these agreements into the lease schedule" | Reads the agreements and maps structured fields into the schedule |
|
|
275
|
+
| "Show me which cells in this sheet came from which source files" | Returns traceability for mapped workbook values |
|
|
276
|
+
| "Create a support summary for this balance from the source folder" | Searches the folder, answers from evidence, and structures the output for review |
|
|
277
|
+
| "Format this output as a clean review-ready workpaper" | Applies spreadsheet formatting after the data is mapped |
|
|
125
278
|
|
|
126
|
-
### Excel Tools
|
|
279
|
+
### Underlying Excel Tools
|
|
280
|
+
|
|
281
|
+
These are implementation tools, not the product story:
|
|
127
282
|
|
|
128
283
|
| Tool | What It Does |
|
|
129
284
|
|------|-------------|
|
|
@@ -142,50 +297,67 @@ AgentXL brings an AI assistant directly into Excel's sidebar. You chat in plain
|
|
|
142
297
|
|
|
143
298
|
## How It Works
|
|
144
299
|
|
|
145
|
-
```
|
|
300
|
+
```text
|
|
146
301
|
agentxl start
|
|
147
302
|
→ Local HTTPS server on localhost:3001
|
|
148
|
-
→ Serves
|
|
149
|
-
→
|
|
303
|
+
→ Serves taskpane UI at /taskpane
|
|
304
|
+
→ Connects to your chosen model
|
|
305
|
+
|
|
306
|
+
You point AgentXL at a local folder
|
|
307
|
+
→ PDFs, statements, exports, agreements, support files
|
|
308
|
+
→ Agent searches the folder
|
|
309
|
+
→ Agent reads the relevant documents
|
|
310
|
+
→ You ask a question or request a mapping
|
|
150
311
|
|
|
151
312
|
Excel loads the taskpane
|
|
152
|
-
→
|
|
153
|
-
→
|
|
154
|
-
→ Taskpane executes actions via Office.js
|
|
313
|
+
→ Agent returns a grounded result with source traceability
|
|
314
|
+
→ Taskpane writes the output into Excel via Office.js
|
|
155
315
|
```
|
|
156
316
|
|
|
157
317
|
### Architecture
|
|
158
318
|
|
|
319
|
+
```text
|
|
320
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
321
|
+
│ YOUR MACHINE │
|
|
322
|
+
│ │
|
|
323
|
+
│ Local document folder │
|
|
324
|
+
│ PDFs / statements / CSVs / agreements / support files │
|
|
325
|
+
│ │ │
|
|
326
|
+
│ ▼ │
|
|
327
|
+
│ ┌─────────────────┐ ┌───────────────────────────┐ │
|
|
328
|
+
│ │ Excel │ HTTPS │ AgentXL Server │ │
|
|
329
|
+
│ │ │◄──────►│ localhost:3001 │ │
|
|
330
|
+
│ │ Taskpane UI │ │ │ │
|
|
331
|
+
│ │ Office.js │ │ agentic file search │ │
|
|
332
|
+
│ │ │ │ selective file reading │ │
|
|
333
|
+
│ └─────────────────┘ │ model prompt + response │ │
|
|
334
|
+
│ │ SSE event streaming │ │
|
|
335
|
+
│ └──────────────┬────────────┘ │
|
|
336
|
+
│ │ │
|
|
337
|
+
└─────────────────────────────────────────────┼────────────────┘
|
|
338
|
+
│ model API
|
|
339
|
+
▼
|
|
340
|
+
┌──────────────────────────┐
|
|
341
|
+
│ Anthropic / OpenAI / │
|
|
342
|
+
│ OpenRouter / Azure / │
|
|
343
|
+
│ Google / Copilot │
|
|
344
|
+
└──────────────────────────┘
|
|
159
345
|
```
|
|
160
|
-
┌──────────────────────────────────────────────────────────┐
|
|
161
|
-
│ YOUR MACHINE │
|
|
162
|
-
│ │
|
|
163
|
-
│ ┌─────────────────┐ ┌──────────────────────────┐ │
|
|
164
|
-
│ │ Excel │ │ AgentXL Server │ │
|
|
165
|
-
│ │ │ │ (localhost:3001) │ │
|
|
166
|
-
│ │ ┌────────────┐ │ HTTPS │ │ │
|
|
167
|
-
│ │ │ Taskpane │◄─┼──────┤ Chat UI (React) │ │
|
|
168
|
-
│ │ │ (sidebar) │ │ │ Agent session (Pi SDK) │ │
|
|
169
|
-
│ │ │ Office.js │──┼──────► SSE streaming │ │
|
|
170
|
-
│ │ └────────────┘ │ │ │ │
|
|
171
|
-
│ └─────────────────┘ └────────────┬─────────────┘ │
|
|
172
|
-
│ │ │
|
|
173
|
-
└──────────────────────────────────────────┼────────────────┘
|
|
174
|
-
│ API call
|
|
175
|
-
▼
|
|
176
|
-
┌──────────────────────┐
|
|
177
|
-
│ Anthropic / OpenAI │
|
|
178
|
-
│ OpenRouter / Azure │
|
|
179
|
-
│ Google / Copilot │
|
|
180
|
-
└──────────────────────┘
|
|
181
|
-
```
|
|
182
346
|
|
|
183
|
-
|
|
347
|
+
### Why no classic RAG?
|
|
348
|
+
|
|
349
|
+
Because most teams do not need a 9-layer retrieval stack to answer grounded questions from a folder of documents.
|
|
350
|
+
|
|
351
|
+
AgentXL starts simpler:
|
|
352
|
+
|
|
353
|
+
- local files
|
|
354
|
+
- direct parsing
|
|
355
|
+
- agentic search
|
|
356
|
+
- selective reading
|
|
357
|
+
- one model
|
|
358
|
+
- explicit evals
|
|
184
359
|
|
|
185
|
-
|
|
186
|
-
- **Your data stays on your machine.** The only external call is to the LLM provider you choose.
|
|
187
|
-
- **You bring your own AI.** Use your existing subscription (Claude Pro, ChatGPT Plus, Copilot) or any API key.
|
|
188
|
-
- **Single process.** One npm package. One command. `agentxl start`.
|
|
360
|
+
If scale later demands heavier infrastructure, add it later. Measure first.
|
|
189
361
|
|
|
190
362
|
---
|
|
191
363
|
|
|
@@ -195,10 +367,10 @@ Excel loads the taskpane
|
|
|
195
367
|
|
|
196
368
|
| Provider | What You Need | Best for |
|
|
197
369
|
|----------|---------------|----------|
|
|
198
|
-
| **Anthropic** | Claude Pro or Max ($20/mo) | Best quality
|
|
199
|
-
| **OpenAI Codex** | ChatGPT Plus or Pro ($20/mo) |
|
|
200
|
-
| **GitHub Copilot** | Copilot Individual or Business |
|
|
201
|
-
| **Google** | Cloud Code Assist (Gemini CLI) |
|
|
370
|
+
| **Anthropic** | Claude Pro or Max ($20/mo) | Best quality |
|
|
371
|
+
| **OpenAI Codex** | ChatGPT Plus or Pro ($20/mo) | Already paying for ChatGPT |
|
|
372
|
+
| **GitHub Copilot** | Copilot Individual or Business | Already have Copilot |
|
|
373
|
+
| **Google** | Cloud Code Assist (Gemini CLI) | Google Cloud users |
|
|
202
374
|
|
|
203
375
|
### API Keys (paste your key)
|
|
204
376
|
|
|
@@ -208,65 +380,76 @@ Excel loads the taskpane
|
|
|
208
380
|
| **OpenAI** | GPT-4o, GPT-4 Turbo | Direct API access |
|
|
209
381
|
| **OpenRouter** | 100+ models | Cheapest — free models available |
|
|
210
382
|
|
|
211
|
-
> **Cheapest:** [OpenRouter](https://openrouter.ai) has free-tier models.
|
|
383
|
+
> **Cheapest:** [OpenRouter](https://openrouter.ai) has free-tier models. No credit card needed.
|
|
212
384
|
>
|
|
213
|
-
> **
|
|
214
|
-
>
|
|
215
|
-
> **Switch anytime:** Run `agentxl login` to change providers.
|
|
385
|
+
> **Switch anytime:** `agentxl login`
|
|
216
386
|
|
|
217
387
|
---
|
|
218
388
|
|
|
219
|
-
##
|
|
389
|
+
## Privacy & Security
|
|
220
390
|
|
|
221
|
-
|
|
391
|
+
- **Local-only server.** Binds to `127.0.0.1` — not accessible from your network.
|
|
392
|
+
- **Folder-first workflow.** You start from a local document folder on your machine.
|
|
393
|
+
- **No telemetry.** No analytics. No data collection. No phone-home.
|
|
394
|
+
- **No account required.** No sign-up with us. Ever.
|
|
395
|
+
- **Your API key stays local.** Stored in `~/.pi/agent/auth.json` on your machine.
|
|
396
|
+
- **Open source.** Read every line of code. MIT license.
|
|
222
397
|
|
|
223
|
-
|
|
398
|
+
When you ask the agent about your documents or workbook, the relevant content is sent to your chosen model provider as part of the prompt. This is the only external communication.
|
|
224
399
|
|
|
225
|
-
|
|
400
|
+
---
|
|
226
401
|
|
|
227
|
-
|
|
402
|
+
## Troubleshooting
|
|
228
403
|
|
|
229
|
-
|
|
230
|
-
- ✅ If the chat UI loads → server and cert are fine, the issue is Excel setup.
|
|
231
|
-
- ❌ If the browser warns about the certificate → the cert isn't trusted yet.
|
|
404
|
+
### Taskpane is blank or won't load in Excel
|
|
232
405
|
|
|
233
|
-
|
|
406
|
+
**Most common first-run issue.** Usually means Excel doesn't trust the HTTPS certificate.
|
|
234
407
|
|
|
235
|
-
|
|
408
|
+
1. **Is the server running?** Check for `✅ Server running` in your terminal.
|
|
409
|
+
2. **Does it work in the browser?** Open https://localhost:3001/taskpane/
|
|
410
|
+
- ✅ UI loads → server and cert are fine. Issue is Excel setup.
|
|
411
|
+
- ❌ Browser warns about certificate → cert isn't trusted yet.
|
|
412
|
+
3. **Certificate not trusted?**
|
|
236
413
|
```bash
|
|
237
414
|
npx office-addin-dev-certs install
|
|
238
415
|
```
|
|
416
|
+
Then restart Excel.
|
|
417
|
+
4. **Browser works but not Excel?** Excel uses the OS trust store. Make sure the certificate authority is installed system-wide.
|
|
239
418
|
|
|
240
|
-
|
|
241
|
-
```bash
|
|
242
|
-
npx office-addin-dev-certs install
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
Then restart Excel. The first run may prompt for admin/keychain access — this is expected and only happens once.
|
|
419
|
+
### Add-in doesn't appear in Excel
|
|
246
420
|
|
|
247
|
-
|
|
421
|
+
1. Is the server running?
|
|
422
|
+
2. Did you try the automated Windows onboarding path first?
|
|
423
|
+
- Start Menu: `Launch AgentXL onboarding`
|
|
424
|
+
- zip build: `Launch AgentXL Onboarding.cmd`
|
|
425
|
+
3. If automatic setup failed, did you add the catalog path in Trust Center → Trusted Add-in Catalogs?
|
|
426
|
+
4. Did you check **Show in Menu**?
|
|
427
|
+
5. Did you restart Excel?
|
|
428
|
+
6. Look in **Insert → My Add-ins → SHARED FOLDER**
|
|
248
429
|
|
|
249
|
-
###
|
|
430
|
+
### Port 3001 is already in use
|
|
250
431
|
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
4. Did you restart Excel after adding the catalog?
|
|
255
|
-
5. Look in Insert → My Add-ins → **SHARED FOLDER** tab (not the store tab)
|
|
432
|
+
```bash
|
|
433
|
+
agentxl start --port 3002
|
|
434
|
+
```
|
|
256
435
|
|
|
257
|
-
|
|
436
|
+
> If you change the port, update `manifest/manifest.xml` to match.
|
|
258
437
|
|
|
259
|
-
|
|
438
|
+
### Building the Windows release
|
|
260
439
|
|
|
261
440
|
```bash
|
|
262
|
-
|
|
441
|
+
npm run prepare:release:win
|
|
263
442
|
```
|
|
264
443
|
|
|
265
|
-
|
|
444
|
+
This creates a self-contained ZIP in `release/windows/dist/` containing:
|
|
445
|
+
- Portable Node.js runtime (no system install needed)
|
|
446
|
+
- Built AgentXL app + production dependencies
|
|
447
|
+
- Manifest for Excel sideloading
|
|
448
|
+
- VBScript launchers (double-click to start)
|
|
266
449
|
|
|
267
|
-
|
|
450
|
+
GitHub Actions builds and publishes this automatically on tagged releases.
|
|
268
451
|
|
|
269
|
-
No
|
|
452
|
+
### "No model available"
|
|
270
453
|
|
|
271
454
|
```bash
|
|
272
455
|
agentxl login
|
|
@@ -274,131 +457,103 @@ agentxl login
|
|
|
274
457
|
|
|
275
458
|
### Taskpane says "Waiting for credentials…"
|
|
276
459
|
|
|
277
|
-
|
|
460
|
+
Run `agentxl login` in another terminal. The taskpane detects the change automatically.
|
|
278
461
|
|
|
279
|
-
###
|
|
462
|
+
### "Server disconnected — reconnecting…"
|
|
280
463
|
|
|
281
|
-
|
|
464
|
+
Restart the server:
|
|
282
465
|
|
|
283
466
|
```bash
|
|
284
467
|
agentxl start
|
|
285
468
|
```
|
|
286
469
|
|
|
287
|
-
The taskpane reconnects automatically when the server comes back.
|
|
288
|
-
|
|
289
470
|
---
|
|
290
471
|
|
|
291
472
|
## CLI Reference
|
|
292
473
|
|
|
293
|
-
```
|
|
474
|
+
```text
|
|
294
475
|
agentxl start [--port 3001] [--verbose] Start the server
|
|
295
476
|
agentxl login Set up or change authentication
|
|
296
477
|
agentxl --version Print version
|
|
297
478
|
agentxl --help Show help
|
|
298
479
|
```
|
|
299
480
|
|
|
300
|
-
| Flag | Default | Description |
|
|
301
|
-
|------|---------|-------------|
|
|
302
|
-
| `--port` | `3001` | Port for the HTTPS server |
|
|
303
|
-
| `--verbose` | off | Log all HTTP requests |
|
|
304
|
-
|
|
305
481
|
---
|
|
306
482
|
|
|
307
483
|
## Requirements
|
|
308
484
|
|
|
309
|
-
- **Node.js 20
|
|
485
|
+
- **Node.js 20+**
|
|
310
486
|
- **Microsoft Excel** desktop (Windows or Mac)
|
|
311
|
-
- **An AI provider** — subscription or API key
|
|
487
|
+
- **An AI provider** — subscription or API key
|
|
312
488
|
|
|
313
489
|
> Excel for the web is not supported (Office add-in limitation).
|
|
314
490
|
|
|
315
491
|
---
|
|
316
492
|
|
|
317
|
-
## Privacy & Security
|
|
318
|
-
|
|
319
|
-
- **Local-only server.** Binds to `127.0.0.1` — not accessible from your network.
|
|
320
|
-
- **No telemetry.** No analytics. No data collection. No phone-home.
|
|
321
|
-
- **No account required.** No sign-up with us. Ever.
|
|
322
|
-
- **Your API key stays local.** Stored in `~/.pi/agent/auth.json` on your machine.
|
|
323
|
-
- **Open source.** Read every line of code. MIT license.
|
|
324
|
-
|
|
325
|
-
When you ask the agent about your spreadsheet, the relevant data is sent to your chosen LLM provider as part of the prompt. This is the only external communication.
|
|
326
|
-
|
|
327
|
-
---
|
|
328
|
-
|
|
329
493
|
## Development
|
|
330
494
|
|
|
331
495
|
```bash
|
|
332
|
-
git clone https://github.com/
|
|
496
|
+
git clone https://github.com/satish860/agentxl.git
|
|
333
497
|
cd agentxl
|
|
334
498
|
npm install
|
|
335
|
-
npm run build
|
|
336
|
-
npm test #
|
|
499
|
+
npm run build
|
|
500
|
+
npm test # 101 unit/integration tests
|
|
501
|
+
npm run test:e2e # 12 end-to-end tests (Playwright)
|
|
337
502
|
node bin/agentxl.js start
|
|
338
503
|
```
|
|
339
504
|
|
|
340
505
|
### Project Structure
|
|
341
506
|
|
|
342
|
-
```
|
|
343
|
-
bin/agentxl.js
|
|
344
|
-
|
|
345
|
-
src/server/
|
|
346
|
-
src/
|
|
347
|
-
src/
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
507
|
+
```text
|
|
508
|
+
bin/agentxl.js CLI entry point
|
|
509
|
+
bin/agentxl-folder-picker.exe Native folder picker (Windows)
|
|
510
|
+
src/server/index.ts HTTPS server + API endpoints
|
|
511
|
+
src/server/certs.ts Certificate generation
|
|
512
|
+
src/server/workbook-identity.ts Workbook identity resolution
|
|
513
|
+
src/server/workbook-folder-store.ts Workbook → folder mapping (JSON)
|
|
514
|
+
src/server/folder-scanner.ts Recursive file scanner + inventory
|
|
515
|
+
src/server/folder-picker.ts Native/PowerShell folder picker
|
|
516
|
+
src/agent/session.ts Pi SDK agent session (cwd-aware)
|
|
517
|
+
src/agent/models.ts Model selection
|
|
518
|
+
taskpane/src/app.tsx Taskpane UI orchestrator
|
|
519
|
+
taskpane/src/hooks/ useAgentStatus, useChatStream,
|
|
520
|
+
useWorkbookIdentity, useFolderLink
|
|
521
|
+
taskpane/src/components/ WelcomeScreen, FolderLinkScreen,
|
|
522
|
+
MessageBubble (tool call badges),
|
|
523
|
+
ChatInput, ThinkingBlock
|
|
524
|
+
taskpane/src/lib/ API client, stream handler, types
|
|
525
|
+
manifest/manifest.xml Office add-in manifest
|
|
526
|
+
tests/ 105 tests (unit + integration + e2e)
|
|
354
527
|
```
|
|
355
528
|
|
|
356
|
-
### npm Scripts
|
|
357
|
-
|
|
358
|
-
| Script | What |
|
|
359
|
-
|--------|------|
|
|
360
|
-
| `npm run build` | Build server (tsc) + taskpane (Vite) |
|
|
361
|
-
| `npm run build:server` | Build server only |
|
|
362
|
-
| `npm run build:taskpane` | Build taskpane only |
|
|
363
|
-
| `npm run dev:taskpane` | Vite dev server for UI development |
|
|
364
|
-
| `npm test` | Run all tests |
|
|
365
|
-
| `npm run test:e2e` | Run Playwright E2E tests |
|
|
366
|
-
| `npm start` | Start the server |
|
|
367
|
-
|
|
368
|
-
### Tech Stack
|
|
369
|
-
|
|
370
|
-
| Layer | Technology |
|
|
371
|
-
|-------|-----------|
|
|
372
|
-
| Runtime | Node.js |
|
|
373
|
-
| Agent framework | [Pi Coding Agent SDK](https://www.npmjs.com/package/@mariozechner/pi-coding-agent) |
|
|
374
|
-
| LLM | Claude, GPT-4o, or any OpenRouter model |
|
|
375
|
-
| Excel integration | Office.js (Microsoft Office Add-in API) |
|
|
376
|
-
| Taskpane UI | React 19 + Tailwind CSS v4 |
|
|
377
|
-
| Bundler | Vite 6 |
|
|
378
|
-
| HTTPS | office-addin-dev-certs (OS-trusted localhost certs) |
|
|
379
|
-
|
|
380
529
|
---
|
|
381
530
|
|
|
382
531
|
## Roadmap
|
|
383
532
|
|
|
384
533
|
| Module | What | Status |
|
|
385
534
|
|--------|------|--------|
|
|
386
|
-
| **Module 1** |
|
|
387
|
-
| **Module 2** |
|
|
388
|
-
| **Module 3** |
|
|
389
|
-
| **Module 4** |
|
|
535
|
+
| **Module 1** | Local taskpane shell, auth, and streaming chat | ✅ Done |
|
|
536
|
+
| **Module 2** | Folder-first workflow: link folders, scan files, agent reads documents | ✅ Done |
|
|
537
|
+
| **Module 3** | Source extraction, traceable citations, and Excel mapping | 🔜 Next |
|
|
538
|
+
| **Module 4** | Eval loop, failure analysis, and workflow hardening | Planned |
|
|
390
539
|
|
|
391
540
|
---
|
|
392
541
|
|
|
393
542
|
## Contributing
|
|
394
543
|
|
|
395
|
-
Contributions welcome
|
|
544
|
+
Contributions welcome. MIT license.
|
|
545
|
+
|
|
546
|
+
```bash
|
|
547
|
+
npm test # 101 tests should pass
|
|
548
|
+
npm run test:e2e # 12 e2e tests should pass
|
|
549
|
+
```
|
|
550
|
+
|
|
551
|
+
If you contribute, keep the philosophy simple:
|
|
396
552
|
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
5. Submit a PR
|
|
553
|
+
- fewer layers
|
|
554
|
+
- grounded outputs
|
|
555
|
+
- explicit traceability
|
|
556
|
+
- evals before infrastructure
|
|
402
557
|
|
|
403
558
|
---
|
|
404
559
|
|