Commit graph

27 commits

Author SHA1 Message Date
Nicolò Boschi
7e339e1677
feat: ai sdk integration (#299)
* feat: ai sdk integration

* more fixes

* fix(security): mental model refresh tag-based security

- Mental model refresh now passes tags with all_strict matching
- Consolidation only triggers refresh for mental models with matching tags
- Consolidation filters related observations by tags (all_strict)
- Added tests to verify tag-based security boundaries
- Updated OpenAPI spec to include tags and text_preview in list_documents
- Added tags column to documents UI table

* chore: regenerate OpenAPI spec after rebase

* fix: improve consolidation prompt for contradiction handling and mental model refresh security

- Enhanced consolidation prompt to be more explicit about capturing temporal changes in contradictions
- Fixed mental model refresh security: tagged memories now only trigger refresh of mental models with matching tags
- Added stricter tag filtering to prevent cross-scope mental model refreshes

Fixes test_consolidation_merges_contradictions by improving LLM instructions to use temporal markers like "used to X, now Y" when merging contradictory facts.

Note: test_refresh_with_tags_only_accesses_same_tagged_models still needs investigation - REFLECT operation may need additional tag filtering.

* fix: mental model refresh security - proper tag filtering in search

Fixed tool_search_mental_models to properly handle all_strict tag matching mode by using the centralized build_tags_where_clause function. Previously, the function only handled "all" vs "any" modes and always included untagged mental models when using non-"all" modes.

This ensures that when a tagged mental model is refreshed with all_strict matching, it cannot access untagged mental models, preventing cross-scope information leakage.

Fixes test_refresh_with_tags_only_accesses_same_tagged_models.

Note: test_sensory_dimension_preservation is failing but this is a pre-existing issue on main branch - the LLM model (gpt-oss-20b) is not extracting facts from sensory text. Not related to security changes.

* chore: apply formatting from pre-commit hook

* fix: allow untagged mental models to be refreshed by any consolidation

Untagged mental models are considered "global" and should be refreshed
by any consolidation, regardless of whether tagged or untagged memories
were consolidated. This maintains security boundaries while allowing
global mental models to stay fresh.

When tagged memories are consolidated:
- Refresh mental models with matching tags (security boundary)
- Also refresh untagged mental models (they're global)
- DO NOT refresh mental models with different tags

When untagged memories are consolidated:
- Only refresh untagged mental models
- DO NOT refresh tagged mental models (security boundary)

Fixes test_consolidation_only_refreshes_matching_tagged_models.
2026-02-04 20:25:59 +01:00
Nicolò Boschi
b364bc3402
fix: rename openclawd to openclaw (#252)
* fix: rename openclawd to openclaw

* fix: rename openclawd to openclaw

* Revise OpenClaw documentation and remove dev section

Updated the description of local memory for OpenClaw agents and removed the development section along with requirements and links.
2026-01-30 13:04:42 +01:00
Nicolò Boschi
728ce13cea
fix: rename moltbot to openclawd (#246)
* fix: rename moltbot to openclawd

* fix

* fix

* fix: use single shared pg0 database for all banks + add default mission

This commit fixes a critical database isolation issue and adds the default
mission feature for the openclawd plugin.

## Changes:

**hindsight-embed:**
- Fixed daemon_client.py to use single shared database: pg0://hindsight-embed
- Previously, each bank_id would create a separate pg0 instance (wrong!)
- Now all banks share the same database with isolation via bank_id parameter
- Updated README to clarify database architecture

**openclawd plugin (v0.0.5):**
- Added default bank mission describing OpenClawd's multi-channel assistant role
- Added setBankMission() method to client
- Integrated mission setting during plugin initialization
- Added bankMission to plugin config schema with sensible default
- Updated docs to explain shared database architecture

## Why this matters:
Bank isolation should happen WITHIN the database (via separate tables/schemas),
not via separate database instances. Using HINDSIGHT_EMBED_BANK_ID to create
separate pg0 databases was architecturally wrong and caused confusion.

* ci: rename moltbot to openclawd in workflows and release script

- Updated build-moltbot-integration → build-openclawd-integration in test.yml
- Updated release-moltbot-integration → release-openclawd-integration in release.yml
- Updated all working directories from moltbot to openclawd
- Updated artifact names from moltbot-integration to openclawd-integration
- Added openclawd package.json to release.sh version bump script
2026-01-30 10:31:29 +01:00
Nicolò Boschi
12e9a3d305
feat: moltbot integration (#216)
* feat: moltbot integration

* fixes

* fixes
2026-01-29 16:58:04 +01:00
Nicolò Boschi
da44a5e839
feat: add hindsight-embed and native agentic skill (#64) 2025-12-22 16:42:11 +01:00
Nicolò Boschi
67fc532c43 ci: make release faster and restartable 2025-12-18 13:10:46 +01:00
Nicolò Boschi
9474f950f2 fix release process 2025-12-18 12:10:01 +01:00
Nicolò Boschi
b52eb905ad
fix: docker image build and startup (#46)
* ci: add docker smoke test to ci

* fix alpine version

* fix

* fix space

* fix space

* comment out

* docker fixes

* docker fixes

* docker fixes

* docker fixes

* docker fixes
2025-12-18 11:59:25 +01:00
Nicolò Boschi
1c6acc3ba0
feat: simplify mcp installation + ui standalone (#41) 2025-12-18 10:24:56 +01:00
Chris Bartholomew
ae80876671
fix: add procps to Docker image and smoke test to release workflow (#45)
* fix: add procps to Docker image and smoke test to release workflow

The Docker image was failing to start because pg0 uses `kill -0 <pid>`
to check if PostgreSQL is running, but the python:3.11-slim base image
doesn't include the `kill` command. Adding procps provides it.

This has been broken since release 0.1.6 when the fallback URI code was
removed to support dynamic ports. Without the kill command, pg0 couldn't
detect process status and returned None for the database URI.

Also adds smoke testing to the release workflow:
- Build image locally (single platform) and test before pushing
- Run container and wait for /health endpoint (up to 120s)
- Only push multi-platform release images if smoke test passes
- Each image (api-only, cp-only, standalone) tested independently

This prevents releasing broken Docker images to GHCR.

* refactor: extract smoke test into reusable script

Add scripts/docker-smoke-test.sh that can be run locally or in CI:
- Takes image name and optional target (cp-only vs api)
- Handles LLM credentials for API/standalone images
- Configurable timeout via SMOKE_TEST_TIMEOUT env var
- Colored output and clear error messages
- Proper cleanup on exit

Update release workflow to use the script instead of inline bash.
2025-12-17 22:01:53 +01:00
Nicolò Boschi
8a7c6e4e91 litellm release integration 2025-12-15 10:48:27 +01:00
Derek Bouius
fcea8afa6c
Change npm packaging structure and fix contributing info (#16)
* change the package to workspace concept

* add provider name and change default model

* add the node_modules to git ignore

* change the npm runs to use workspace

* fix the start scripts to use the workspace

* update the uv.lock

* updated instructions

* update the docker build to use the npm workspace

* Update package-lock.json after merge to sync workspace dependencies

* fix merge conflict
2025-12-12 14:14:19 -05:00
Nicolò Boschi
99db7b26c3 fix docs on clients 2025-12-11 14:23:56 +01:00
Nicolò Boschi
6073ac4ffd docs, packages and quick start 2025-12-04 12:49:01 +01:00
Nicolò Boschi
4b8fccb5e8 fix readme github images 2025-12-04 10:10:08 +01:00
Nicolò Boschi
b0961ccf6b fix release 2025-12-03 16:22:47 +01:00
Nicolò Boschi
902eed711d fix release script 2025-12-03 16:04:27 +01:00
Nicolò Boschi
850d4036c3 update npm package name 2025-12-03 15:58:12 +01:00
Nicolò Boschi
050a3d2743
fix: ci and ui build (#9)
* fix ci

* fix ci and release
2025-12-03 15:47:53 +01:00
Nicolò Boschi
09fbcc2020 prepare for release 2025-12-03 11:52:25 +01:00
Nicolò Boschi
b1ff2e8823
rename to hindsight (#2) 2025-11-25 19:28:26 +01:00
Nicolò Boschi
c82fff949b add profiles 2025-11-13 13:22:27 +01:00
Nicolò Boschi
47d08debfb fix space 2025-11-11 16:30:41 +01:00
Nicolò Boschi
e0a33f5fa1 mcp server 2025-11-11 15:17:12 +01:00
Nicolò Boschi
7d8e1fcc7c update gh actions 2025-11-11 14:12:36 +01:00
Nicolò Boschi
49d9b4bb63 update gh actions 2025-11-11 13:01:21 +01:00
Nicolò Boschi
588065182a polish + cli + helm + standalone 2025-11-11 12:35:20 +01:00