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.6"
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 <[email protected]>")
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.17, NOT ^0.16. The 0.16 line now contains BOTH a release
55 ;; requiring the 0.18 runtime (v0.16.5) and one requiring 0.17 (v0.16.6, a
56 ;; deliberate compatibility revert), so ^0.16 no longer determines which
57 ;; runtime you need. The 0.17 line is the unambiguous 0.18-runtime line.
58 (from-git url: "codeberg:sigil/sigil-mcp" version: "^0.17")
59 ;; Keep MCP's HTTP transport on the post-cutover line so a fresh relock
60 ;; cannot resurrect the archived standalone sigil-socket provider.
61 (from-git url: "codeberg:sigil/sigil-http" version: "^0.18")
62 (from-git url: "codeberg:sigil/sigil" package: "sigil-args" version: ">=0.21")
63 (from-git url: "codeberg:sigil/sigil-wise" version: "^0.10")
64 (from-git url: "codeberg:sigil/sigil-ledger" version: "^0.10"))
66 dev-dependencies: (list
67 (from-git url: "codeberg:sigil/sigil" package: "sigil-test" version: ">=0.21")
68 (from-git url: "codeberg:sigil/sigil"
69 package: "sigil-test-runner" version: ">=0.21"))
71 tasks: (list
72 (task
73 name: 'build
74 description: "Compile tally modules"
75 steps: (list
76 (compile-sigil-modules sources: "src/**/*.sgl"
77 output-dir: (config-output-subdir "lib"))))))