@moikapy/lich 0.3.1 → 0.4.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/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.0
4
+
5
+ - add a self-improvement loop: `run_tests`, a gatekeeper plugin, and
6
+ `git_commit` (one commit per run, never pushes). `git_commit` is
7
+ registered by the gatekeeper, not the builtin tool list.
8
+ - fail-closed unless `LICH_ALLOW_SELF_COMMIT=1` at startup; unset or any
9
+ other value vetoes `git_commit`. a commit also needs a green `run_tests`
10
+ on a tree with no later `write_file`/`edit_file`.
11
+ - `run_tests` runs `LICH_TEST_COMMAND` in `work_dir` (default vitest) and
12
+ appends an optional filter as a quoted shell token.
13
+ - `docs_search` finds markdown skills under `.lich/skills` (fresh walk, no
14
+ `index.md` gate). `MEMORY.md` is never auto-loaded.
15
+ - close gatekeeper fail-open holes: git spawned with `hooksPath=/dev/null`,
16
+ pathspec magic rejected, denylist matches `commit-tree`/`update-ref` on
17
+ any occurrence, abort SIGKILLs the git child.
18
+ - honor per-tool `timeout_ms` (terminal is 5 min) instead of a flat 30s
19
+ executor budget.
20
+
3
21
  ## 0.3.1
4
22
 
5
23
  - Fix: published CLI bin now works — `dist/cli.js` shipped without its
package/README.md CHANGED
@@ -65,8 +65,9 @@ console.log(result.outcome.final?.content);
65
65
 
66
66
  ## Tools
67
67
 
68
- Twelve builtins ship with the agent (`register_builtin_tools`); all accept
68
+ Builtins ship with the agent (`register_builtin_tools`); all accept
69
69
  snake_case args and are registered under the `builtin` toolset.
70
+ `git_commit` is registered by the gatekeeper, not by that list.
70
71
 
71
72
  | Tool | Purpose |
72
73
  | --- | --- |
@@ -83,7 +84,8 @@ snake_case args and are registered under the `builtin` toolset.
83
84
  | `disk_usage` | `du -sb` sizes for depth-1 entries of a directory, sorted with a total. |
84
85
  | `env_get` | Inspect environment variables (names/lengths; secrets always masked). |
85
86
  | `docs_read` | Read a bundled lich doc (path relative to docs root; offset/limit; `.md` optional). |
86
- | `docs_search` | Keyword search across bundled lich docs with scored section snippets. |
87
+ | `docs_search` | Keyword search across bundled lich docs and `.lich/skills/*.md`, with scored section snippets. |
88
+ | `run_tests` | Run `LICH_TEST_COMMAND` in the working directory and return a structured pass/fail. |
87
89
 
88
90
  ## Plugins
89
91
 
@@ -93,6 +95,12 @@ object (`{name, tools?, hooks?}`) in your repo, list its file path in the
93
95
  observe or veto tool calls. See
94
96
  [docs/user-guide/plugins.md](docs/user-guide/plugins.md).
95
97
 
98
+ Skills are markdown files you write to `.lich/skills/` with `write_file`;
99
+ `docs_search` finds them. They are reference data, not instructions.
100
+ `MEMORY.md` is append-only, never auto-loaded; review it between appends and
101
+ the next self-commit. One gated `git_commit` per run requires
102
+ `LICH_ALLOW_SELF_COMMIT=1` and a green `run_tests` on a clean tree.
103
+
96
104
  ## Environment variables
97
105
 
98
106
  | Variable | Purpose |
@@ -101,6 +109,8 @@ observe or veto tool calls. See
101
109
  | `LICH_PROVIDER_KIND` | `openai_compat` \| `anthropic` \| `ollama` (default `openai_compat`) |
102
110
  | `LICH_BASE_URL` | provider base url (ollama default: `http://localhost:11434`) |
103
111
  | `LICH_API_KEY_ENV` | env var holding the api key (unused by ollama) |
112
+ | `LICH_ALLOW_SELF_COMMIT` | set to `1` to allow one gated `git_commit` per run; unset is fail-closed |
113
+ | `LICH_TEST_COMMAND` | command `run_tests` runs (default: `node node_modules/vitest/vitest.mjs run`) |
104
114
 
105
115
  ## Ollama
106
116