@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 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, use the
21
- project skill at `.claude/skills/bilig-workpaper/SKILL.md` or invoke the
22
- explicit formula-proof command from
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 Cursor, Windsurf/Cascade, Cline, or Continue, use
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
- 11. Start the MCP server or import `@bilig/workpaper` directly.
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.155.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.155.0",
93
- "@bilig/xlsx-formula-recalc": "0.155.0",
94
- "bilig-workpaper": "0.155.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.182",
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.155.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.155.0",
21
+ "version": "0.159.0",
22
22
  "transport": {
23
23
  "type": "stdio"
24
24
  }
@@ -1 +0,0 @@
1
- export {};
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-sdk.test.js","sourceRoot":"","sources":["../src/ai-sdk.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,2BAA2B,EAAE,MAAM,aAAa,CAAA;AAEzD,QAAQ,CAAC,kCAAkC,EAAE,GAAG,EAAE;IAChD,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;YAC1C,MAAM,EAAE;gBACN,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACnB,CAAC,yBAAyB,EAAE,EAAE,CAAC;gBAC/B,CAAC,UAAU,EAAE,IAAI,CAAC;gBAClB,CAAC,aAAa,EAAE,KAAK,CAAC;aACvB;YACD,OAAO,EAAE;gBACP,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACnB,CAAC,oBAAoB,EAAE,sBAAsB,CAAC;gBAC9C,CAAC,cAAc,EAAE,eAAe,CAAC;aAClC;SACF,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,2BAA2B,CAAC;YAC3C,SAAS;YACT,gBAAgB,EAAE,eAAe;YACjC,UAAU,EAAE,eAAe;YAC3B,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,QAAQ,CAAC,oBAAoB,EAAE,CAAA;QAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,qBAAqB,CAAC;YAC3C,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,GAAG;SACX,CAAC,CAAA;QAEF,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QAC1C,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxD,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,aAAa,CAAC;YACjC,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,GAAG;YACb,iBAAiB,EAAE,IAAI;YACvB,oBAAoB,EAAE,IAAI;YAC1B,iBAAiB,EAAE,IAAI;SACxB,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC;YAC1C,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7B,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SAC9B,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,2BAA2B,CAAC;YAC3C,SAAS;YACT,gBAAgB,EAAE,eAAe;YACjC,UAAU,EAAE,eAAe;YAC3B,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CAAA;QAEF,MAAM,CAAC,GAAG,EAAE,CACV,QAAQ,CAAC,qBAAqB,CAAC;YAC7B,SAAS,EAAE,SAAS;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,CAAC;SACT,CAAC,CACH,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;IAC9C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,SAAS,UAAU,CAAC,MAAmB,EAAE,GAAW,EAAE,GAAW;IAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9F,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,SAAS,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACtG,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;AAC3C,CAAC"}