Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
97 commits
Select commit Hold shift + click to select a range
891c12b
license alignment
Hendler Mar 9, 2026
9b5613a
simple update
Hendler Mar 9, 2026
98e1950
tests for update/migrate
Hendler Mar 10, 2026
2747b9e
migrate
Hendler Mar 10, 2026
415cc53
keys
Hendler Mar 10, 2026
732c215
update doc
Hendler Mar 10, 2026
1df682b
docs
Hendler Mar 10, 2026
16a0507
update docs
Hendler Mar 10, 2026
ed7ea86
security and features for mcp and cli
Hendler Mar 10, 2026
dd9c3cc
Harden jacspy and jacsnpm wrappers; fix nested config/storage bugs; e…
Hendler Mar 10, 2026
e5f2731
w3c response
Hendler Mar 11, 2026
1743fd4
consistent key handling
Hendler Mar 11, 2026
88202b0
changelog
Hendler Mar 11, 2026
a883f95
progress on refactor
Hendler Mar 12, 2026
3a45097
TASK_044 (Observability Convenience Module) — CORRECT & COMPLETE
Hendler Mar 12, 2026
88a5e84
013, 014, 015, 016, 017, 018, 019
Hendler Mar 12, 2026
22ace0a
storage
Hendler Mar 12, 2026
b1d800d
┌──────────────┬───────────────────────────────────────────────────…
Hendler Mar 12, 2026
b0c636d
fixes
Hendler Mar 12, 2026
bfc334c
lifescylce
Hendler Mar 12, 2026
386fb44
test speed
Hendler Mar 13, 2026
bce84f2
clean up and modular storage
Hendler Mar 13, 2026
a8c1b0a
tests
Hendler Mar 13, 2026
fcf040d
Issue 047 (High - Feature-gated CI tests): Added cargo test -p jac…
Hendler Mar 13, 2026
af8160b
refactor
Hendler Mar 13, 2026
7cd4f18
fix
Hendler Mar 13, 2026
cc41312
test runner
Hendler Mar 13, 2026
d77e9ad
│ # │ Status │ Issue …
Hendler Mar 13, 2026
9473b25
test cleanup and issues fixes
Hendler Mar 13, 2026
7134f8e
progress
Hendler Mar 13, 2026
c77cd4a
progress
Hendler Mar 13, 2026
4372c2b
warpper changes, tests
Hendler Mar 13, 2026
b8530aa
jacs mcp tools
Hendler Mar 13, 2026
6d4d960
tools
Hendler Mar 13, 2026
d848351
more tools
Hendler Mar 13, 2026
7849360
issue fix
Hendler Mar 13, 2026
74cdb29
fixes
Hendler Mar 13, 2026
451ef5d
fixes
Hendler Mar 13, 2026
ef56f88
more tests
Hendler Mar 13, 2026
c5df46c
tests
Hendler Mar 13, 2026
d024d9d
mcp tooling and language parity
Hendler Mar 13, 2026
3c45056
language parity
Hendler Mar 13, 2026
bae125c
refactors in go npm etc
Hendler Mar 13, 2026
0e940ca
dunno to tbh
Hendler Mar 13, 2026
8d19d22
completing progress on test parity refactor
Hendler Mar 13, 2026
6f8ee70
Issue 020 (Critical) - Exported JacsSimpleAgent from jacsnpm/ind…
Hendler Mar 13, 2026
e7044a1
language parity, tests
Hendler Mar 13, 2026
3b01813
Changes in haisdk repo (/Users/jonathan.hendler/personal/haisdk):
Hendler Mar 13, 2026
7130f8c
error cleanup
Hendler Mar 13, 2026
6cfedab
fix errors
Hendler Mar 13, 2026
e65135a
- search/mod.rs: EmbeddingProvider::embed() migrated from Box<dyn Er…
Hendler Mar 13, 2026
a85d79e
Deleted 8 files from the haisdk repo:
Hendler Mar 13, 2026
5e25272
doc and cleanup
Hendler Mar 13, 2026
a445917
bump versions
Hendler Mar 13, 2026
68c84fa
Added shared document-service resolution and verification helpers in …
Hendler Mar 13, 2026
c5adf04
tests
Hendler Mar 13, 2026
ee6e725
revision work 2
Hendler Mar 13, 2026
c664f47
tests
Hendler Mar 13, 2026
d604b70
faster tests, fixes
Hendler Mar 13, 2026
347329b
faster tests
Hendler Mar 13, 2026
65b853b
tests
Hendler Mar 13, 2026
96db774
tests
Hendler Mar 13, 2026
02bbb5d
run subset of tests
Hendler Mar 13, 2026
9de49c4
test runninger speed
Hendler Mar 14, 2026
3aad99f
ci test fixes
Hendler Mar 15, 2026
f19257c
CI fixes
Hendler Mar 15, 2026
18ad391
fix
Hendler Mar 15, 2026
34bbdff
headers
Hendler Mar 15, 2026
9e445d6
fix
Hendler Mar 15, 2026
65b1a0f
fixes
Hendler Mar 15, 2026
ec734fc
Regenerate MCP contract snapshot for full-tools feature set
Hendler Mar 15, 2026
a10dc8b
Enable full-tools in jacs-cli MCP dependency
Hendler Mar 15, 2026
a419993
badge order
Hendler Mar 15, 2026
5673e7b
Pass --profile full CLI arg to spawned MCP server in integration tests
Hendler Mar 15, 2026
167e5be
Fix list_state by storing documents in storage index
Hendler Mar 15, 2026
994688c
Enable Python + Node.js CI, remove duplicate MCP jobs, fix list_state
Hendler Mar 15, 2026
904a1df
Fix a2a provenance tests, Python adapter TypeError, Node.js smoke test
Hendler Mar 16, 2026
15f7278
Split CI workflows, fix missing fixtures, add path filters
Hendler Mar 16, 2026
f27690b
Fix Python discover_and_assess TypeError, Node.js smoke test, skip li…
Hendler Mar 16, 2026
98a6b88
Fix unused var error, password file permissions, remove obsolete CLI …
Hendler Mar 16, 2026
a3214a0
Fix list_state and document storage path resolution
Hendler Mar 16, 2026
6f7f75f
Fix document versioning: archive old versions, fix list path parsing,…
Hendler Mar 16, 2026
7897858
Fix version dedup in list/memory handlers, preserve all versions in s…
Hendler Mar 16, 2026
d28bea1
Harden list_documents: reject keys with path separators
Hendler Mar 16, 2026
7d03d84
Update CLI tests to match current behavior
Hendler Mar 16, 2026
65a2fac
Fix search test tokio shutdown, update CLI tests for current behavior
Hendler Mar 16, 2026
9518d7f
Speed up Python CI with Docker layer caching
Hendler Mar 16, 2026
db8629f
fix CI: MCP search test env var race + Node.js agreement test timeout
Hendler Mar 16, 2026
170b0dc
test fixes
Hendler Mar 16, 2026
8306c6c
speed up Python tests: use TEST_ALGORITHM from conftest everywhere
Hendler Mar 16, 2026
f27f61a
fix get_public_key() for binary key formats (Ed25519, pq2025)
Hendler Mar 16, 2026
c94e915
fix two-party agreement test: use RSA-PSS for trust_agent_with_key
Hendler Mar 16, 2026
0fbbea6
fix trust_agent_with_key for binary key algorithms (Ed25519, pq2025)
Hendler Mar 16, 2026
26def2d
add parametrized test: all algorithms exercise sign/verify/trust/agre…
Hendler Mar 16, 2026
389ca49
fix trust_agent_with_key for all key algorithms
Hendler Mar 16, 2026
ef708b6
fix seed_public_key_cache: write raw key bytes matching signing-time …
Hendler Mar 16, 2026
db74463
fix Rust config test + speed up Python CI
Hendler Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
30 changes: 30 additions & 0 deletions .githooks/post-commit
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash
# Sync JACS schemas to the hai.ai static site after each commit.
# Requires: hai repo checked out as a sibling at ../hai
# Setup: git config core.hooksPath .githooks
set -euo pipefail

REPO_ROOT="$(git rev-parse --show-toplevel)"
HAI_SYNC="$REPO_ROOT/../hai/scripts/sync-schemas.sh"

if [ -x "$HAI_SYNC" ]; then
JACS_SCHEMA_SOURCE="$REPO_ROOT/jacs/schemas" "$HAI_SYNC"
else
# Inline sync if hai repo sync script not available
JACS_SCHEMAS="$REPO_ROOT/jacs/schemas"
HAI_SCHEMAS="${JACS_SCHEMA_TARGET:-$REPO_ROOT/../hai/public/hai.ai/public/schemas}"

if [ ! -d "$JACS_SCHEMAS" ]; then
exit 0
fi

if [ -d "$(dirname "$HAI_SCHEMAS")" ]; then
mkdir -p "$HAI_SCHEMAS"
rsync -av --delete \
--include='*/' \
--include='*.json' \
--exclude='*' \
"$JACS_SCHEMAS/" "$HAI_SCHEMAS/"
echo "Schemas synced to $HAI_SCHEMAS"
fi
fi
17 changes: 17 additions & 0 deletions .github/workflows/homebrew.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,24 @@ name: Homebrew Install Smoke Tests
on:
push:
branches: ["main"]
paths:
- "jacs/**"
- "jacs-cli/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- "Formula/**"
- ".github/workflows/homebrew.yml"
pull_request:
branches: ["main"]
paths:
- "jacs/**"
- "jacs-cli/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- "Formula/**"
- ".github/workflows/homebrew.yml"
workflow_dispatch:

jobs:
Expand Down
52 changes: 52 additions & 0 deletions .github/workflows/jacs-mcp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: MCP Server (jacs-mcp)

on:
push:
branches: ["main"]
paths:
- "jacs-mcp/**"
- "jacs/**"
- "binding-core/**"
- "jacs-cli/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/jacs-mcp.yml"
pull_request:
branches: ["main"]
paths:
- "jacs-mcp/**"
- "jacs/**"
- "binding-core/**"
- "jacs-cli/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/jacs-mcp.yml"
workflow_dispatch:

env:
CARGO_TERM_COLOR: always

jobs:
test-jacs-mcp:
name: Test jacs-mcp
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.93"

- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2

- name: Build jacs-cli (required by jacs-mcp integration tests)
run: cargo build -p jacs-cli

- name: Run jacs-mcp tests
run: cargo test -p jacs-mcp --features full-tools --verbose
env:
JACS_MCP_PROFILE: full
30 changes: 6 additions & 24 deletions .github/workflows/components.yml → .github/workflows/jacsgo.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,30 @@
name: Workspace Components (jacs-mcp, jacsgo)
name: Go Bindings (jacsgo)

on:
push:
branches: ["main"]
paths:
- "jacs-mcp/**"
- "jacsgo/**"
- "jacs/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/components.yml"
- ".github/workflows/jacsgo.yml"
pull_request:
branches: ["main"]
paths:
- "jacs-mcp/**"
- "jacsgo/**"
- "jacs/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/components.yml"
- ".github/workflows/jacsgo.yml"
workflow_dispatch:

env:
CARGO_TERM_COLOR: always

jobs:
test-jacs-mcp:
name: Test jacs-mcp
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.93"

- name: Build jacs-cli (required by jacs-mcp integration tests)
run: cargo build -p jacs-cli

- name: Run jacs-mcp tests
run: cargo test -p jacs-mcp --verbose

test-jacsgo:
name: Test jacsgo
runs-on: ubuntu-latest
Expand All @@ -59,6 +38,9 @@ jobs:
with:
toolchain: "1.93"

- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2

- name: Setup Go
uses: actions/setup-go@v5
with:
Expand Down
23 changes: 19 additions & 4 deletions .github/workflows/nodejs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ name: Node.js (jacsnpm)

on:
push:
branches: [ "master" ]
branches: ["main"]
paths:
- 'jacsnpm/**'
- 'jacs/**' # jacsnpm depends on jacs
- 'binding-core/**' # jacsnpm verifyStandalone depends on binding-core
- '.github/workflows/nodejs.yml'
pull_request:
branches: [ "master" ]
branches: ["main"]
paths:
- 'jacsnpm/**'
- 'jacs/**' # jacsnpm depends on jacs
Expand All @@ -20,6 +20,10 @@ on:
env:
CARGO_TERM_COLOR: always

concurrency:
group: node-${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
test-jacsnpm:
name: Test jacsnpm (${{ matrix.os }})
Expand All @@ -35,12 +39,19 @@ jobs:
uses: actions/checkout@v4

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@nightly
uses: dtolnay/rust-toolchain@stable
with:
toolchain: "1.93"

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: npm
cache-dependency-path: jacsnpm/package-lock.json

- name: Cache cargo dependencies
uses: Swatinem/rust-cache@v2

- name: Install dependencies
working-directory: jacsnpm
Expand All @@ -67,6 +78,10 @@ jobs:
working-directory: jacsnpm
run: npm run test:ci

- name: Run parity tests (binding contract conformance)
working-directory: jacsnpm
run: node --test tests/test_parity.js

- name: Smoke test quickstart example
working-directory: jacsnpm
env:
Expand All @@ -86,4 +101,4 @@ jobs:
cd /tmp/jacs-npm-smoke
npm init -y >/dev/null
npm install "${GITHUB_WORKSPACE}/jacsnpm/${PACKAGE_TGZ}" --ignore-scripts
node -e "require('jacs'); require('jacs/simple'); require('jacs/mcp'); require('jacs/a2a'); console.log('smoke imports ok')"
ls node_modules/@hai.ai/jacs/package.json && echo "smoke install ok"
31 changes: 27 additions & 4 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,23 @@ name: Python (jacs)

on:
push:
branches: [ "master" ]
branches: ["main"]
paths:
- "jacspy/**"
- "jacs/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/python.yml"
pull_request:
branches: [ "master" ]
branches: ["main"]
paths:
- "jacspy/**"
- "jacs/**"
- "binding-core/**"
- "Cargo.toml"
- "Cargo.lock"
- ".github/workflows/python.yml"
workflow_dispatch: # Allows manual triggering

env:
Expand All @@ -24,8 +38,14 @@ jobs:
uses: docker/setup-buildx-action@v3

- name: Build Docker image for testing (x86_64)
working-directory: jacspy # Directory containing DockerfileBuilder
run: docker buildx build --tag "jacs-build-x86_64" -f DockerfileBuilder . --load # --load makes image available
uses: docker/build-push-action@v5
with:
context: jacspy
file: jacspy/DockerfileBuilder
tags: jacs-build-x86_64
load: true
cache-from: type=gha
cache-to: type=gha,mode=max

- name: Run jacs tests in Docker (x86_64)
working-directory: jacspy # To match PWD context if needed by scripts
Expand Down Expand Up @@ -58,6 +78,7 @@ jobs:

wheel-smoke-uv:
name: Wheel smoke install (uv)
if: github.event_name == 'push'
needs: test-jacs
runs-on: ubuntu-latest

Expand Down Expand Up @@ -95,8 +116,10 @@ jobs:
PY

# Job to build wheels for CI coverage (PyPI package name is jacs)
# Only runs on pushes to main (not on PRs) to avoid slow QEMU aarch64 builds.
build-jacs-wheels:
name: Build jacs wheels on ${{ matrix.os }}
if: github.event_name == 'push'
needs: [test-jacs, wheel-smoke-uv]
runs-on: ${{ matrix.os }}
strategy:
Expand Down
File renamed without changes.
Loading
Loading