@bilig/workpaper 0.155.0 → 0.159.0
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/AGENTS.md +10 -5
- package/README.md +1 -0
- package/SKILL.md +3 -0
- package/package.json +5 -5
- package/server.json +2 -2
- package/dist/ai-sdk.test.d.ts +0 -1
- package/dist/ai-sdk.test.js +0 -69
- package/dist/ai-sdk.test.js.map +0 -1
package/AGENTS.md
CHANGED
|
@@ -15,18 +15,23 @@ Use this file when an AI coding agent, MCP client, or tool host needs workbook f
|
|
|
15
15
|
`npx --yes skills@latest add proompteng/bilig --skill bilig-workpaper --list`.
|
|
16
16
|
8. If you are using GitHub Copilot or VS Code agent mode in a cloned checkout,
|
|
17
17
|
use `.github/copilot-instructions.md`,
|
|
18
|
+
`.github/instructions/bilig-workpaper.instructions.md`,
|
|
18
19
|
`.github/prompts/bilig-workpaper-proof.prompt.md`, and
|
|
19
20
|
`.vscode/mcp.json`.
|
|
20
|
-
9. If you are inside a cloned Bilig repository with Claude Code,
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
9. If you are inside a cloned Bilig repository with Claude Code, read
|
|
22
|
+
`CLAUDE.md` first, then use the project skill at
|
|
23
|
+
`.claude/skills/bilig-workpaper/SKILL.md` or invoke the explicit
|
|
24
|
+
formula-proof command from
|
|
23
25
|
`.claude/commands/bilig-workpaper-proof.md`.
|
|
24
|
-
10. If you are using
|
|
26
|
+
10. If you are using OpenCode, use `opencode.jsonc` and
|
|
27
|
+
`.opencode/agents/bilig-workpaper.md`.
|
|
28
|
+
11. If you are using Cursor, Windsurf/Cascade, Cline, or Continue, use
|
|
25
29
|
`.cursor/rules/bilig-workpaper.mdc` or
|
|
30
|
+
`.devin/rules/bilig-workpaper.md`,
|
|
26
31
|
`.windsurf/rules/bilig-workpaper.md`,
|
|
27
32
|
`.clinerules/bilig-workpaper.md`, or
|
|
28
33
|
`.continue/rules/bilig-workpaper.md`.
|
|
29
|
-
|
|
34
|
+
12. Start the MCP server or import `@bilig/workpaper` directly.
|
|
30
35
|
|
|
31
36
|
Remote MCP clients that support Streamable HTTP can smoke-test the stateless
|
|
32
37
|
demo endpoint at `https://bilig.proompteng.ai/mcp`. Directory scanners that inspect the
|
package/README.md
CHANGED
|
@@ -120,6 +120,7 @@ not the first-run path:
|
|
|
120
120
|
| FastMCP Python client for hosted and local stdio checks | <https://proompteng.github.io/bilig/fastmcp-workpaper-client.html> |
|
|
121
121
|
| Agno MCPTools workbook readback | <https://proompteng.github.io/bilig/agno-workpaper-mcp.html> |
|
|
122
122
|
| Pydantic AI MCPToolset typed readback | <https://proompteng.github.io/bilig/pydantic-ai-workpaper-mcp.html> |
|
|
123
|
+
| Google ADK McpToolset workbook readback | <https://proompteng.github.io/bilig/google-adk-workpaper-mcp.html> |
|
|
123
124
|
| Hugging Face smolagents tool | <https://proompteng.github.io/bilig/smolagents-workpaper-tool.html> |
|
|
124
125
|
| Hugging Face Gradio MCP Space | <https://proompteng.github.io/bilig/huggingface-workpaper-space.html> |
|
|
125
126
|
|
package/SKILL.md
CHANGED
|
@@ -203,6 +203,8 @@ If any readback step fails, report the blocker instead of claiming the workbook
|
|
|
203
203
|
- Agent handbook: https://proompteng.github.io/bilig/headless-workpaper-agent-handbook.html
|
|
204
204
|
- Agent workbook challenge: https://proompteng.github.io/bilig/agent-workbook-challenge.html
|
|
205
205
|
- MCP server guide: https://proompteng.github.io/bilig/mcp-workpaper-tool-server.html
|
|
206
|
+
- OpenHands MCP setup: https://proompteng.github.io/bilig/openhands-workpaper-mcp.html
|
|
207
|
+
- OpenCode MCP setup: https://proompteng.github.io/bilig/opencode-workpaper-mcp.html
|
|
206
208
|
- Open WebUI tool setup: https://proompteng.github.io/bilig/open-webui-workpaper-mcp.html
|
|
207
209
|
- LobeHub MCP setup: https://proompteng.github.io/bilig/lobehub-workpaper-mcp.html
|
|
208
210
|
- AnythingLLM MCP setup: https://proompteng.github.io/bilig/anythingllm-workpaper-mcp.html
|
|
@@ -223,5 +225,6 @@ If any readback step fails, report the blocker instead of claiming the workbook
|
|
|
223
225
|
- Kestra Node flow: https://proompteng.github.io/bilig/kestra-workpaper-flow.html
|
|
224
226
|
- Prefect flow: https://proompteng.github.io/bilig/prefect-workpaper-flow.html
|
|
225
227
|
- XLSX formula clinic: https://proompteng.github.io/bilig/formula-bug-clinic.html
|
|
228
|
+
- Stale XLSX fixture command: npm exec --package @bilig/xlsx-formula-recalc@latest -- xlsx-cache-doctor ./reduced.xlsx --json
|
|
226
229
|
- Compatibility limits: https://proompteng.github.io/bilig/where-bilig-is-not-excel-compatible-yet.html
|
|
227
230
|
- Repository: https://github.com/proompteng/bilig
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bilig/workpaper",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.159.0",
|
|
4
4
|
"description": "WorkPaper API, CLI evaluator, and MCP server for headless spreadsheet formulas in Node.js services and agents.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent-tools",
|
|
@@ -89,12 +89,12 @@
|
|
|
89
89
|
"build": "pnpm --dir ../.. --filter bilig-workpaper build && rm -rf dist tsconfig.tsbuildinfo && tsc -p tsconfig.json"
|
|
90
90
|
},
|
|
91
91
|
"dependencies": {
|
|
92
|
-
"@bilig/headless": "0.
|
|
93
|
-
"@bilig/xlsx-formula-recalc": "0.
|
|
94
|
-
"bilig-workpaper": "0.
|
|
92
|
+
"@bilig/headless": "0.159.0",
|
|
93
|
+
"@bilig/xlsx-formula-recalc": "0.159.0",
|
|
94
|
+
"bilig-workpaper": "0.159.0"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
|
-
"ai": "6.0.
|
|
97
|
+
"ai": "6.0.195",
|
|
98
98
|
"zod": "4.3.6"
|
|
99
99
|
},
|
|
100
100
|
"peerDependencies": {
|
package/server.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "io.github.proompteng/bilig-workpaper",
|
|
4
4
|
"title": "Bilig WorkPaper",
|
|
5
5
|
"description": "WorkPaper MCP tools, resources, and prompts for readback, edits, and JSON persistence.",
|
|
6
|
-
"version": "0.
|
|
6
|
+
"version": "0.159.0",
|
|
7
7
|
"repository": {
|
|
8
8
|
"url": "https://github.com/proompteng/bilig",
|
|
9
9
|
"source": "github"
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
{
|
|
19
19
|
"registryType": "npm",
|
|
20
20
|
"identifier": "@bilig/workpaper",
|
|
21
|
-
"version": "0.
|
|
21
|
+
"version": "0.159.0",
|
|
22
22
|
"transport": {
|
|
23
23
|
"type": "stdio"
|
|
24
24
|
}
|
package/dist/ai-sdk.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/ai-sdk.test.js
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import { WorkPaper } from './index.js';
|
|
3
|
-
import { createWorkPaperToolHandlers } from './ai-sdk.js';
|
|
4
|
-
describe('@bilig/workpaper AI SDK handlers', () => {
|
|
5
|
-
it('edits a WorkPaper input and returns computed restore proof', () => {
|
|
6
|
-
const workpaper = WorkPaper.buildFromSheets({
|
|
7
|
-
Inputs: [
|
|
8
|
-
['Metric', 'Value'],
|
|
9
|
-
['Qualified opportunities', 20],
|
|
10
|
-
['Win rate', 0.25],
|
|
11
|
-
['Average ARR', 12000],
|
|
12
|
-
],
|
|
13
|
-
Summary: [
|
|
14
|
-
['Metric', 'Value'],
|
|
15
|
-
['Expected customers', '=Inputs!B2*Inputs!B3'],
|
|
16
|
-
['Expected ARR', '=B2*Inputs!B4'],
|
|
17
|
-
],
|
|
18
|
-
});
|
|
19
|
-
const handlers = createWorkPaperToolHandlers({
|
|
20
|
-
workpaper,
|
|
21
|
-
defaultReadRange: 'Summary!A1:B3',
|
|
22
|
-
proofRange: 'Summary!A1:B3',
|
|
23
|
-
writableSheets: ['Inputs'],
|
|
24
|
-
});
|
|
25
|
-
const before = handlers.readWorkPaperSummary();
|
|
26
|
-
const write = handlers.setWorkPaperInputCell({
|
|
27
|
-
sheetName: 'Inputs',
|
|
28
|
-
address: 'B3',
|
|
29
|
-
value: 0.4,
|
|
30
|
-
});
|
|
31
|
-
expect(readNumber(before.values, 2, 1)).toBe(60000);
|
|
32
|
-
expect(write.editedCell).toBe('Inputs!B3');
|
|
33
|
-
expect(readNumber(write.after.values, 2, 1)).toBe(96000);
|
|
34
|
-
expect(readNumber(write.restored.values, 2, 1)).toBe(96000);
|
|
35
|
-
expect(write.checks).toMatchObject({
|
|
36
|
-
previousValue: 0.25,
|
|
37
|
-
newValue: 0.4,
|
|
38
|
-
formulasPersisted: true,
|
|
39
|
-
restoredMatchesAfter: true,
|
|
40
|
-
proofRangeChanged: true,
|
|
41
|
-
});
|
|
42
|
-
expect(write.checks.serializedBytes).toBeGreaterThan(100);
|
|
43
|
-
});
|
|
44
|
-
it('blocks writes outside the configured input sheet boundary', () => {
|
|
45
|
-
const workpaper = WorkPaper.buildFromSheets({
|
|
46
|
-
Inputs: [['Metric', 'Value']],
|
|
47
|
-
Summary: [['Metric', '=1+1']],
|
|
48
|
-
});
|
|
49
|
-
const handlers = createWorkPaperToolHandlers({
|
|
50
|
-
workpaper,
|
|
51
|
-
defaultReadRange: 'Summary!A1:B1',
|
|
52
|
-
proofRange: 'Summary!A1:B1',
|
|
53
|
-
writableSheets: ['Inputs'],
|
|
54
|
-
});
|
|
55
|
-
expect(() => handlers.setWorkPaperInputCell({
|
|
56
|
-
sheetName: 'Summary',
|
|
57
|
-
address: 'B1',
|
|
58
|
-
value: 3,
|
|
59
|
-
})).toThrow('Sheet "Summary" is not writable');
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
function readNumber(values, row, col) {
|
|
63
|
-
const cell = values[row]?.[col];
|
|
64
|
-
if (!cell || typeof cell !== 'object' || !('value' in cell) || typeof cell.value !== 'number') {
|
|
65
|
-
throw new Error(`Expected numeric cell at row ${row}, col ${col}; received ${JSON.stringify(cell)}`);
|
|
66
|
-
}
|
|
67
|
-
return Math.round(cell.value * 100) / 100;
|
|
68
|
-
}
|
|
69
|
-
//# sourceMappingURL=ai-sdk.test.js.map
|
package/dist/ai-sdk.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk.test.js","sourceRoot":"","sources":["../src/ai-sdk.test.ts"],"names":[],"mappings":"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"}
|