AtlatestRepositorytally

tally / treepackage.sgl

1;;; tally - Personal finance management CLI and MCP server
2;;;
3;;; Pulls transactions from financial APIs (Wise), categorizes them,
4;;; writes to hledger journal files, and generates financial summaries.
5;;; Usable as a CLI and as an MCP server for AI-assisted bookkeeping.
6
7(package
8 name: "tally"
9 version: "0.2.7"
10 description: "Personal finance management CLI and MCP server"
11 url: "https://codeberg.org/sigil/tally"
12 license: "BSD-3-Clause"
13 sigil: "0.20"
14 authors: (list "David Wilson <david@daviwil.com>")
16 entry: '(tally main)
17 bundle-name: "tally"
19 configs: (list
20 (config
21 name: 'dev
22 output-dir: "build/dev"
23 debug?: #t
24 optimize: 0
25 bundle?: #t)
26 (config
27 name: 'release
28 output-dir: "build/release"
29 backend: 'native
30 debug?: #f
31 optimize: 2
32 bundle?: #t))
34 provides: (list
35 mcp-server: #{ name: "tally"
36 args: #["serve"]
37 secret-env: #{ WISE_API_TOKEN: #t } })
39 dependencies: (list
40 ;; Explicit sigil-lib pin. Two independent reasons, both measured:
41 ;; 1. Without it, sigil-lib is derived transitively and does not track
42 ;; the `sigil:` field, so a relock can silently leave the C runtime
43 ;; behind while `sigil deps install` exits 0.
44 ;; 2. sigil-lib's resolution does NOT respect its declared range: with
45 ;; no explicit pin, a fresh resolve records `ref: "^0.17"` alongside
46 ;; `version: "0.18.2"` in the same lock entry, on any toolchain,
47 ;; while sigil-stdlib in that same resolve correctly stays at 0.17.20.
48 ;; Verify in sigil.lock (the `version:`/`sha:` fields, not `ref:`).
49 (from-git url: "codeberg:sigil/sigil"
50 package: "sigil-lib" version: ">=0.21")
51 (from-git url: "codeberg:sigil/sigil" package: "sigil-run" version: ">=0.21")
52 (from-git url: "codeberg:sigil/sigil-json" version: "^0.16")
53 (from-git url: "codeberg:sigil/sigil-log" version: "^0.16")
54 ;; sigil-mcp ^0.18.1 (first release correct on MCP protocol 2026-07-28 over
55 ;; stdio), never ^0.16. The 0.16 line contains BOTH a release
56 ;; requiring the 0.18 runtime (v0.16.5) and one requiring 0.17 (v0.16.6, a
57 ;; deliberate compatibility revert), so ^0.16 no longer determines which
58 ;; runtime you need. The 0.17 line is the unambiguous 0.18-runtime line.
59 (from-git url: "codeberg:sigil/sigil-mcp" version: "^0.18.1")
60 ;; Keep MCP's HTTP transport on the post-cutover line so a fresh relock
61 ;; cannot resurrect the archived standalone sigil-socket provider.
62 (from-git url: "codeberg:sigil/sigil-http" version: "^0.18")
63 (from-git url: "codeberg:sigil/sigil" package: "sigil-args" version: ">=0.21")
64 (from-git url: "codeberg:sigil/sigil-wise" version: "^0.10")
65 (from-git url: "codeberg:sigil/sigil-ledger" version: "^0.10"))
67 dev-dependencies: (list
68 (from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: ">=0.21")
69 (from-git url: "codeberg:sigil/sigil"
70 package: "sigil-test-runner" version: ">=0.21"))
72 tasks: (list
73 (task
74 name: 'build
75 description: "Compile tally modules"
76 steps: (list
77 (compile-sigil-modules sources: "src/**/*.sgl"
78 output-dir: (config-output-subdir "lib"))))))