| Age | Commit message (Collapse) | Author |
|
|
|
- Replace openssl s_client with HaskellNet/HaskellNet-SSL for proper
IMAP client support (better protocol handling, no manual parsing)
- Add HaskellNet deps to Haskell.nix with doJailbreak for version bounds
- Fix lost messages: sendMessageReturningId now throws on API errors
instead of returning Nothing (which was incorrectly treated as success)
- Auto-retry markdown parse errors as plain text
- Hardcode benChatId for reliable email check loop startup
|
|
- Fix Provider.hs to strip leading whitespace from OpenRouter responses
- Fix FunctionCall parser to handle missing 'arguments' field
- Use eitherDecode for better error messages on parse failures
- Switch to claude-sonnet-4.5 for main agent
- Use gemini-2.0-flash for conversation summarization (cheaper)
- Add read_webpage tool for fetching and summarizing URLs
- Add tagsoup to Haskell deps (unused, kept for future)
|
|
|
|
- Change 'from Biz.X import Y' to 'import Biz.X as X' style
- bild only recognizes 'import X as Y' for local dep detection
- Add setuptools to Python deps (required by newer nixpkgs)
Amp-Thread-ID: https://ampcode.com/threads/T-fe8328a9-7709-4544-9d31-b099f04aa120
Co-authored-by: Amp <amp@ampcode.com>
|
|
Amp-Thread-ID: https://ampcode.com/threads/T-fe8328a9-7709-4544-9d31-b099f04aa120
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
- Update OpenRouter model IDs to Claude 4.5 family:
- anthropic/claude-sonnet-4.5 (default) - anthropic/claude-haiku-4.5
(simple tasks) - anthropic/claude-opus-4.5 (complex tasks)
- Remove aider-chat from dev shell (broken, unused) - Simplify
llm package (remove llm-ollama plugin) - Update nixos-unstable for
llm 0.27.1
Task-Id: t-163
|
|
Both ormolu and hlint pass. The task asked specifically to run
`bild --t
Task-Id: t-163
|
|
The build passes. I updated the llm source from version 0.25 to
0.27.1 i
Task-Id: t-163
|
|
Done. I've updated the nixos-unstable hash in
[Sources.json](/home/ben/o
Task-Id: t-163
|
|
The build passed. The task was to update nixpkgs hash in Biz/Bild.nix,
b
Task-Id: t-163
|
|
8-char lowercase IDs using sqids with sequential counter.
Task-Id: t-1o2g8gu9y2z Amp-Thread-ID:
https://ampcode.com/threads/T-7d88c849-530f-4703-9f90-cbc86d608e3c
Co-authored-by: Amp <amp@ampcode.com>
|
|
Removes .tasks/tasks.jsonl and replaces it with a local SQLite database
(.tasks/tasks.db). Adds --db flag to CLI. Removes sync command.
Amp-Thread-ID:
https://ampcode.com/threads/T-ac41b9b6-d117-46de-9e4f-842887a22f1d
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
|
|
Amp-Thread-ID:
https://ampcode.com/threads/T-ca3b086b-5a85-422a-b13d-256784c04221
Co-authored-by: Amp <amp@ampcode.com>
|
|
I have successfully refactored `AGENTS.md` to be more concise by
moving detailed documentation to separate README files in their
respective namespaces.
**Changes made:** 1. **Created `Omni/Task/README.md`**: Contains
the detailed "Task Manager for AI Agents" documentation. 2.
**Created `Omni/Bild/README.md`**: Contains the "Bild" build tool
documentation and instructions for adding new dependencies. 3.
**Created `Omni/Ide/README.md`**: Contains the "Development Tools"
(run.sh, lint, etc.) and "Git Workflow" documentation. 4. **Updated
`AGENTS.md`**:
* Retained critical rules ("Important Rules for AI Agents"),
"About Omnirepo", and "Coding Conventions". * Replaced the
moved sections with a "Documentation" section containing links
to the new README files. * Used relative paths for links to
ensure portability.
**Verification:** * Ran `bild --test Omni/Task.hs` and `bild --test
Omni/Bild.hs` to ensure no regressions were introduced in the touched
namespaces.
The codebase is now cleaner with documentation distributed near
the code it describes, and `AGENTS.md` is now a focused entry point
for agents.
|
|
Amp-Thread-ID:
https://ampcode.com/threads/T-ec034efc-0ef1-43df-8abe-b0cda0f9115b
Co-authored-by: Amp <amp@ampcode.com>
|
|
|
|
|
|
When building per-module derivations, copying dependency .hi files
was failing silently because: 1. First dep copies read-only Alpha.hi
from nix store 2. Second dep also has Alpha.hi (transitive dep) and
tries to overwrite 3. cp fails with permission denied but error is
hidden by '|| true'
Fixed by: - Add -f flag to cp to force overwrite - Run chmod -R +w
after each dependency copy - This allows later deps to overwrite
shared files like Alpha.hi
Tested: Biz/Que/Host.hs now builds successfully with per-module
derivations
|
|
Set dontPatchShebangs=true for per-module link derivation to avoid
unbound variable error in Nix's patch-shebangs.sh script.
The script declares 'local update' but never initializes it, causing
bash set -u to fail. Our ELF binaries don't need shebangs patched
anyway.
Tested: All Haskell targets now build successfully including
Omni/Lint.hs which uses makeWrapper with rundeps.
|
|
- Fix nixBuild to propagate exit code from realise step
- Previously used >> which discarded exit code - Now checks realise
result before running symlink - Fixes false success checkmarks on
build failures
- Fix per-module Nix derivations
- Use cp -rL instead of tar (src is directory not tarball) - Add
coreutils and findutils to pkgs - Copy deps to . and use -i. for
GHC - Use find with --parents to preserve module hierarchy - Set
dontStrip=true to avoid fixup script errors
- Tested: Example.hs, Task.hs, Dragons.hs, Bild.hs all build - Known
issue: makeWrapper fixup scripts have unbound vars (Nix bug)
|
|
When using custom builder, unpackPhase function is not available.
Use tar xzf to manually extract the source archive.
|
|
When using custom builder, standard phases don't run automatically.
Call unpackPhase explicitly and cd to 'source' directory where files
are unpacked.
Fixes 'sourceRoot: unbound variable' error in module compilation.
|
|
The haskell.ghcWith package has setup hooks that override buildPhase
even when explicitly set. Solution: use custom builder = stdenv.shell
with args instead of relying on mkDerivation phases.
Changes: - Module derivations: Use custom builder with single -c script
- Combines unpack, build, and install into one script - Explicitly
call ghc with full path to avoid hook interference - Remove unused
objectPaths computation (now using ghc --make with source)
This fixes builds for Omni/Lint.hs, Omni/Task.hs, and all other
Haskell targets with complex dependency graphs.
|
|
GHC --make was treating -i /nix/store/.../hidir paths as compilation targets.
Solution: Copy all .hi files to local directory and use -i. only.
Also make hsGraph optional with 'or null' for backward compatibility with
old bild binaries during bootstrap.
Amp-Thread-ID: https://ampcode.com/threads/T-fe68faaf-1c1d-4c43-a377-1cf5e6cffb3a
Co-authored-by: Amp <amp@ampcode.com>
|
|
GHC --make interprets arguments before flags as targets. Moving the
entry point source file to the beginning prevents -i paths from being
treated as compilation targets.
This fixes the 'is not a module name or a source file' error.
|
|
This is the core architecture transformation from Phase 3 of the
performance plan. Each Haskell module is now built as a separate
Nix derivation, enabling true incremental builds where only changed
modules and their dependents are rebuilt.
Implementation: - buildHsModuleGraph: Analyzes transitive module
dependencies and builds DAG - TH detection: Falls back to monolithic
build if Template Haskell detected - SCC cycle detection: Falls
back if import cycles found - Per-module Nix builder: Each module ->
separate derivation with .hi and .o - Module dependencies: Copy .hi
files to build dir, use -i flags for imports - Final link: Use ghc
--make with entry point source + -i paths to .hi files - Entry point
fix: Explicitly analyze entry point module separately from deps
Architecture: - Module compilation: ghc -c with -i paths to dependency
.hi files - Source filtering: Each module derivation includes only
its source file - Dependency DAG: Expressed as recursive Nix attrset
with lib.fix - Link phase: ghc --make with entry source file + all .hi
search paths - Fallback: Monolithic ghc --make when hsGraph is null
(TH/cycles)
Performance characteristics: - Change one module -> rebuild only
that + dependents + relink - Nix handles DAG scheduling and caching
automatically - Parallel module compilation (Nix orchestrates) -
Content-addressed caching across machines
Testing: - Added test_buildHsModuleGraph unit test - Verified with
Omni/Bild/Example.hs (4 modules) - Tested incremental rebuild triggers
correct subset
This completes Phase 2 and Phase 3 core optimizations from the plan.
|
|
Only include directories that are ancestors of source files in
allSources. Previously accepted all directories, causing rebuilds
when any new directory was added to the repo.
Implementation: - Precompute normalized source paths and their ancestor
directories - Filter directories against allowedDirs whitelist -
Normalize paths in file filter for consistency - Keep existing skip
list behavior for _ and .direnv
This is optimization #2 from Phase 2 of the performance plan.
|
|
I think the calls to Log.setup() were accidentally creating multiple
loggers, hopefully this fixes the problem.
|
|
- Add stripe to Omni/Bild/Deps/Python.nix (alphabetically sorted) -
Fix all type annotations in Billing.py for mypy - Document how to add
Python packages in AGENTS.md - Add billing routes to Web.py (checkout,
portal, webhook)
This enables Stripe integration in PodcastItLater.
Related to task t-144e7lF
|
|
Check to prevent processing of large articles, truncate oversized
content, defer jobs during high memory usage, use streaming TTS
generation and upload to minimize memory consumption.
|
|
According to Claude, the nixos-unstable branch has more stuff in it's binary
cache than nixos-unstable-small. Idk, let's try it and find out.
|
|
This implements a working prototype of PodcastItLater. It basically just works
for a single user currently, but the articles are nice to listen to and this is
something that we can start to build with.
|
|
This is actually useful because nix only shows the last 25 log lines, so I'd
like to know how deep the problems go with a summary.
|
|
The colored output is not decoded by the nix log accumulator, so you just get
these control characters. Get rid of them for more readable output.
|
|
This took quite a bit of work to package, and it's not a perfect package, but I
think it will do to get Biz/Astrologer.py working.
|
|
I had to update nixos-unstable-small and nixos-24_11 and disable a bunch of
tests, and then re-compile like the whole world, but aider is actually working,
finally.
|
|
Also improves the Example.py a bit with a real test case and example of how to
use Omni.Test.
|
|
Pydantic-ai is an agent framework that seems simple and good: well-typed with
pydantic, tool usage is just an `@tool` decorator on a function, and so
on. While building these I realized there were some deps they needed that were
already in nixpkgs unstable, so I just switched to that instead of trying to
backport all the versions and stuff.
|
|
This does the full transition: web server, mail server, xmpp. I expect some
disruption, but hopefully this is everything and it just switches over without
any problem.
|
|
These are broken in upstream nixpkgs. Updating didn't fix them, so I'm just
gonna disable them for now. I'm using pipx to install aider anyway.
Also: Remove _ literal from GLOBIGNORE. I think it was causing the **/* glob to
include stuff in the cabdir, idk why.
|
|
This is just so I can run gemma3. Ollama has more than just a src hash, it needs
the godeps hash as well, so I can't simply track it with `deps` unfortunately.
|
|
Some things got through the CI system, probably during updates. So I had more
stupid little fixes to do. I should really improve bild to the point that these
won't happen anymore and builds don't take so long.
|
|
I got this from the upstream branch jd/zx2c4-deployment, which does have the
below commit implementing dark mode. I first cherry-picked the commit to master
but it wouldn't build. Then I realized that the last cut release was v1.2.3 from
5 years ago, and that's what nixpkgs has pinned, so I cherry-picked it onto
v1.2.3 and it went cleanly and built okay. So that's what I landed on. Maybe it
would be better to use a patch instead of pushing my own fork like this, but
whatever this works just fine. I can always switch to the patch method later.
https://git.zx2c4.com/cgit/commit/?h=jd/zx2c4-deployment&id=8ed1bef90f631989c0cadc326a163b874a64e02d
|
|
I couldn't use llm-ollama because it required some package upgrades, so I
started going down that rabbit hole and ended up 1) realizing that these
packages are way out of date now, and 2) fiddling with overrides to get
everything to work. I finally figured it out, the `postPatch` in ollama-python
was throwing me off for like half a day.
Anyway, one thing to note is that these are changing fast and I need to either
move onto nixpkgs unstable for python stuff, or maintain my own builds of all of
these. Not sure which is more appropriate right now.
Oh and I had to fixup some logging stuff in Biz/Storybook.py because ruff
started complaining about something, which is weird because I don't think the
version changed? But it was easy enough to change.
|
|
OBS wouldn't allow me to stream because there was something wrong with `nvenc`,
which I guess is the nvidia encoding library? Anyway searching around I found
this nvidia-patch overlay and it fixed it right away, so that's cool.
|
|
I realized I don't need this stupid `__main__` convention anymore because my
build system always calls Python programs like `python -m main`, so I just need
to have a function named `main()`. I also started adding some general coding
conventions to the README and fixed a typo.
|