Skip to content

Commit a5569e4

Browse files
feat: fork additions on top of upstream Plastic Labs Honcho
This squashed commit consolidates all fork-side changes since divergence from upstream (commit 0813ebd, plastic-labs/chore/sync-marketplace-version): - Vitest test harness with config, git, and session-end coverage - Atomic config writes and pure resolver extraction - Hardened setup flow: bun precheck, self-hosted endpoint detection (SaaS / localhost / custom URL), API-key flow with no-auth support, workspace + peer name selection with AskUserQuestion pickers - Health subsystem: server reachability via /openapi.json, auth probe, warm-fuzzy memory + deriver summary, /honcho:health skill - Direct-fetch workspace + peer listing (avoids SDK get-or-create) - CI/release workflow scaffolding Resets version to 2.0.0 and drops the fork-specific tag suffix.
1 parent 0813ebd commit a5569e4

4,131 files changed

Lines changed: 193020 additions & 920170 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.claude-plugin/marketplace.json

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,37 @@
11
{
22
"name": "honcho",
33
"owner": {
4-
"name": "Plastic Labs",
5-
"email": "hello@plasticlabs.ai"
4+
"name": "Offending Commit",
5+
"email": "djfoxyslpr@gmail.com",
6+
"url": "https://github.com/offendingcommit/claude-honcho"
67
},
78
"metadata": {
89
"description": "Honcho plugins for Claude Code - memory, development tools, and more",
9-
"version": "0.2.4"
10+
"version": "2.0.0-oc"
1011
},
1112
"plugins": [
1213
{
1314
"name": "honcho",
1415
"source": "./plugins/honcho",
1516
"description": "Persistent memory for Claude Code sessions using Honcho",
16-
"version": "0.2.4",
17-
"keywords": ["memory", "context", "persistence"],
17+
"version": "2.0.0-oc",
18+
"keywords": [
19+
"memory",
20+
"context",
21+
"persistence"
22+
],
1823
"strict": false
1924
},
2025
{
2126
"name": "honcho-dev",
2227
"source": "./plugins/honcho-dev",
2328
"description": "Skills for building AI applications with the Honcho SDK",
24-
"version": "0.2.4",
25-
"keywords": ["sdk", "development", "migration"],
29+
"version": "2.0.0-oc",
30+
"keywords": [
31+
"sdk",
32+
"development",
33+
"migration"
34+
],
2635
"strict": false
2736
}
2837
]
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
---
2+
name: Bug report
3+
about: Something broken in the honcho or honcho-dev plugin
4+
labels: bug
5+
---
6+
7+
**Plugin & version**
8+
- [ ] honcho
9+
- [ ] honcho-dev
10+
- Version:
11+
12+
**Claude Code version**
13+
<!-- `claude --version` -->
14+
15+
**What happened**
16+
17+
**Expected behavior**
18+
19+
**Repro steps**
20+
1.
21+
2.
22+
3.
23+
24+
**Relevant logs / stack trace**
25+
```
26+
```
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
name: Feature request
3+
about: Suggest an improvement to this fork
4+
labels: enhancement
5+
---
6+
7+
**Problem**
8+
<!-- What are you trying to do that doesn't work today? -->
9+
10+
**Proposed solution**
11+
12+
**Alternatives considered**
13+
14+
**Upstream status**
15+
<!-- Is this also relevant to plastic-labs/claude-honcho? Linked issue/PR? -->

.github/pull_request_template.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
## Summary
2+
3+
<!-- One-liner of what this changes and why. Reference issues with #N. -->
4+
5+
## Type
6+
7+
- [ ] feat — new user-facing capability
8+
- [ ] fix — bug fix
9+
- [ ] refactor — internal change, no behavior change
10+
- [ ] docs — documentation only
11+
- [ ] chore — tooling, CI, version bumps
12+
13+
## Conventional Commit
14+
15+
<!-- This repo uses semantic-release. The PR title (or squash commit) must be a conventional commit. -->
16+
<!-- Examples: `feat(honcho): add X`, `fix(honcho-dev): handle Y`, `feat!: breaking change` -->
17+
18+
## Test plan
19+
20+
- [ ]
21+
- [ ]

.github/workflows/ci.yml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: CI
2+
3+
on:
4+
pull_request:
5+
branches: [main]
6+
push:
7+
branches: [main]
8+
9+
jobs:
10+
typecheck:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- uses: pnpm/action-setup@v4
15+
- uses: actions/setup-node@v4
16+
with:
17+
node-version: 20
18+
cache: pnpm
19+
- uses: oven-sh/setup-bun@v2
20+
with:
21+
bun-version: latest
22+
- run: pnpm install --frozen-lockfile
23+
- run: pnpm -r --if-present typecheck
24+
- run: pnpm --filter claude-honcho build
25+
26+
validate-json:
27+
runs-on: ubuntu-latest
28+
steps:
29+
- uses: actions/checkout@v4
30+
- name: Validate plugin JSON files
31+
run: |
32+
for f in .claude-plugin/marketplace.json plugins/*/.claude-plugin/plugin.json; do
33+
echo "Validating $f"
34+
node -e "JSON.parse(require('fs').readFileSync(process.argv[1],'utf8'))" "$f"
35+
done
36+
- name: Verify version sync
37+
run: |
38+
node -e "
39+
const fs=require('fs');
40+
const m=JSON.parse(fs.readFileSync('.claude-plugin/marketplace.json','utf8'));
41+
const a=JSON.parse(fs.readFileSync('plugins/honcho/.claude-plugin/plugin.json','utf8'));
42+
const b=JSON.parse(fs.readFileSync('plugins/honcho-dev/.claude-plugin/plugin.json','utf8'));
43+
const v=m.metadata.version;
44+
const errs=[];
45+
if(a.version!==v)errs.push('honcho/plugin.json='+a.version);
46+
if(b.version!==v)errs.push('honcho-dev/plugin.json='+b.version);
47+
for(const p of m.plugins)if(p.version!==v)errs.push('marketplace.plugins['+p.name+']='+p.version);
48+
if(errs.length){console.error('Mismatch vs '+v+':\n'+errs.join('\n'));process.exit(1);}
49+
console.log('Versions synced at '+v);
50+
"

.github/workflows/release.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
name: Release
2+
3+
on:
4+
push:
5+
branches: [main]
6+
7+
permissions:
8+
contents: write
9+
issues: write
10+
pull-requests: write
11+
12+
jobs:
13+
release:
14+
runs-on: ubuntu-latest
15+
steps:
16+
- uses: actions/checkout@v4
17+
with:
18+
fetch-depth: 0
19+
persist-credentials: true
20+
- uses: pnpm/action-setup@v4
21+
- uses: actions/setup-node@v4
22+
with:
23+
node-version: 20
24+
cache: pnpm
25+
- run: pnpm install --frozen-lockfile
26+
- uses: oven-sh/setup-bun@v2
27+
with:
28+
bun-version: latest
29+
- name: Run semantic-release
30+
env:
31+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
32+
run: pnpm exec semantic-release

.gitignore

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
# Build output
22
/dist/
33

4+
# Dependencies
5+
node_modules/
6+
.pnpm-store/
47

5-
# Bun
8+
# Bun (migrated to pnpm)
69
bun.lockb
10+
bun.lock
711

812
# IDE
913
.idea/
@@ -55,7 +59,6 @@ temp/
5559
# Optional npm cache
5660
.npm/
5761

58-
# Package manager locks (we use bun.lock)
62+
# Package manager locks (we use pnpm)
5963
package-lock.json
6064
yarn.lock
61-
pnpm-lock.yaml

.releaserc.json

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
{
2+
"branches": ["main"],
3+
"tagFormat": "v${version}-oc",
4+
"plugins": [
5+
["@semantic-release/commit-analyzer", { "preset": "conventionalcommits" }],
6+
["@semantic-release/release-notes-generator", { "preset": "conventionalcommits" }],
7+
["@semantic-release/changelog", { "changelogFile": "CHANGELOG.md" }],
8+
[
9+
"@semantic-release/exec",
10+
{
11+
"prepareCmd": "node scripts/bump-versions.mjs ${nextRelease.version} && pnpm --filter claude-honcho build"
12+
}
13+
],
14+
[
15+
"@semantic-release/git",
16+
{
17+
"assets": [
18+
"CHANGELOG.md",
19+
"README.md",
20+
"package.json",
21+
".claude-plugin/marketplace.json",
22+
"plugins/honcho/.claude-plugin/plugin.json",
23+
"plugins/honcho/package.json",
24+
"plugins/honcho/dist/**/*.js",
25+
"plugins/honcho-dev/.claude-plugin/plugin.json"
26+
],
27+
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
28+
}
29+
],
30+
"@semantic-release/github"
31+
]
32+
}

CHANGELOG.md

Lines changed: 1 addition & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,135 +1,3 @@
11
# Changelog
22

3-
All notable changes to claude-honcho will be documented in this file.
4-
5-
## [0.2.4] - 2026-04-01
6-
7-
### Added
8-
9-
- `observationMode: "unified" | "directional"` config flag — per-host with root fallback, default `"unified"`
10-
- **unified** (default): all agents contribute to the user's self-observation collection (`observer=user, observed=user`); conclusions are portable across agents
11-
- **directional** (opt-in): each AI maintains its own view of the user (`observer=aiPeer, observed=user`); useful for isolated multi-agent workspaces
12-
- Resolves the ambiguity from issue #22 — prior code was implicitly directional with no user control; peer-call routing in all hooks and MCP tools now branches on this flag
13-
- `get_context` MCP tool — retrieves the full context object (representation + peer card), scoped by observation mode
14-
- `get_representation` MCP tool — lightweight representation string fetch, scoped by observation mode
15-
- `list_conclusions` MCP tool — paginated list of saved conclusions with `id`, `content`, and `createdAt`
16-
- `delete_conclusion` MCP tool — remove a conclusion by ID
17-
- `schedule_dream` MCP tool — trigger background memory consolidation; Honcho merges redundant conclusions and derives higher-level insights
18-
- `search` tool `scope` parameter — `"session"` (default) or `"workspace"` to search across all sessions
19-
- `observationMode` settable via `set_config` and visible in `get_config` output and status card
20-
21-
### Fixed
22-
23-
- `aiPeer` peer config: `observeMe` corrected to `false` — agent peers don't need self-representation; eliminates wasted background reasoning compute
24-
- `addPeers` session config: `aiPeer.observeOthers` is now `false` in unified mode and `true` in directional mode (was unconditionally `true`)
25-
26-
### Changed
27-
28-
- Bump `@honcho-ai/sdk` floor to `^2.1.0` (adds pagination, `getMessage`, `createdAt`/`isActive` on peers/sessions, strict validation)
29-
- Bump `@modelcontextprotocol/sdk` floor to `^1.26.0`
30-
31-
## [0.2.3] - 2026-03-25
32-
33-
### Fixed
34-
35-
- Adding peers to session with config
36-
- Windows compatibility for TTY, setup, and install
37-
- Per-host config ownership, `saveRootField`, SDK client options
38-
- Resilient hook lifecycle: phased session-end, cache-first user-prompt
39-
40-
## [0.2.2] - 2026-03-03
41-
42-
### Fixed
43-
44-
- Fix `chat-instance` session strategy ignoring `sessionPeerPrefix` setting — sessions now correctly prefix with peer name when enabled
45-
46-
## [0.2.1] - 2026-03-02
47-
48-
### Added
49-
50-
- Global `~/.honcho/config.json` with per-host config blocks (Claude Code, Cursor, Obsidian)
51-
- Host auto-detection via environment signals (`HONCHO_HOST`, `CURSOR_PROJECT_DIR`)
52-
- Linked workspaces for cross-host context sharing at runtime
53-
- `/honcho:config` skill with `get_config` and `set_config` MCP tools
54-
- `/honcho:setup` skill for first-time API key validation and config creation
55-
- Multiple session strategies: `per-directory`, `git-branch`, `chat-instance`
56-
- `globalOverride` flag to apply flat config fields across all hosts
57-
- `sessionPeerPrefix` option to prefix session names with peer name
58-
59-
### Fixed
60-
61-
- Stale cache fallback with timeout for context fetch
62-
- Clear stale session overrides when prefix/strategy/peerName changes
63-
- Message sync bugs: dedup uploads, scope instance IDs per-cwd, add createdAt
64-
- Chat-instance strategy ignores stale session overrides
65-
- Respect `HONCHO_WORKSPACE` env var during legacy config migration
66-
- Various config menu UX improvements (single-select link/unlink, granular host toggles)
67-
68-
### Changed
69-
70-
- Extracted `initHook()` for shared hook entry points
71-
- Unified aiPeer defaults across hosts
72-
- Renamed host identifier from `claude-code` to `claude_code`
73-
- Skills synced to marketplace directory where plugin loader reads them
74-
75-
## [0.2.0] - 2026-02-10
76-
77-
### Added
78-
79-
- Visual logging with pixel art banner
80-
- Configurable file logging to `~/.honcho/` (on by default, togglable)
81-
- Session name prefixing with `peerName` (configurable, default on)
82-
- Installation instructions for adding to Claude Code
83-
84-
### Changed
85-
86-
- Removed legacy SDK format support — all code uses Honcho SDK v2.0.0 natively
87-
- Pinned `@honcho-ai/sdk` to `~2.0.0`
88-
- Updated terminology: "facts" renamed to "conclusions" throughout
89-
90-
## [0.1.2] - 2026-02-05
91-
92-
### Added
93-
94-
- Message chunking for large payloads
95-
- Interview skill (`/honcho:interview`) for capturing user preferences
96-
- Plugin validation on install
97-
- Bundled `node_modules` for marketplace distribution
98-
99-
### Fixed
100-
101-
- Full dependencies declared in package.json for plugin portability
102-
- Banner display on session start
103-
104-
## [0.1.1] - 2026-01-30
105-
106-
### Added
107-
108-
- `honcho enable` / `honcho disable` commands
109-
- Developer plugin (`honcho-dev`) with SDK integration and migration skills
110-
- Pure plugin structure for Claude Code marketplace
111-
112-
### Changed
113-
114-
- Renamed from `honcho-claudis` to `claude-honcho`
115-
- Updated to `@honcho-ai/sdk` v2.0.0
116-
- Removed old handoff and setup skills
117-
- Removed hard dependency on Bun for broader portability
118-
119-
## [0.1.0] - 2026-01-05
120-
121-
### Added
122-
123-
- Initial release as `honcho-claudis`
124-
- Persistent memory for Claude Code sessions using Honcho
125-
- Session-start hook with wavy loading animation
126-
- User-prompt-submit hook with dialectic reasoning context
127-
- Assistant-response-stop hook for real-time response capture
128-
- Pre-compact hook for session state preservation
129-
- Cost optimization with configurable context refresh thresholds
130-
- Endpoint switching between SaaS and local Honcho instances
131-
- Git state tracking with inferred feature context
132-
- Activity logging with tail command
133-
- Self-improvement from AI feedback analysis
134-
- Pixel art and colorful wave spinner UI
135-
- Session isolation per working directory
3+
All notable changes to this project will be documented in this file.

0 commit comments

Comments
 (0)