freddie 0.0.73 → 0.0.74

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.
Files changed (2) hide show
  1. package/AGENTS.md +20 -1
  2. package/package.json +2 -2
package/AGENTS.md CHANGED
@@ -44,10 +44,26 @@ Witness 2026-05-03: test.js 12/12 green @ 195L (asserts `host.plugins().length>=
44
44
 
45
45
  **gm-cc plugin integration** (2026-05-04) — gm-cc npm package (v2.0.727) successfully integrated via `plugins/gm-cc/plugin.js`. Plugin auto-discovers 12 SKILL.md files from gm-cc package, extracts name/description from YAML frontmatter, registers via `pi.skills.register({name: 'gm:'+name, description, content, source:'gm-cc'})`. Skills: browser, code-search, create-lang-plugin, gm, gm-complete, gm-emit, gm-execute, governance, pages, planning, ssh, update-docs. All accessible via `gm:*` namespace in pi.skills registry.
46
46
 
47
+ ## Multi-project workspace system (2026-05-04)
48
+
49
+ Freddie supports multiple isolated projects, each with its own home directory and plugin set. Registry at `~/.freddie/projects.json` stores `{ active, projects: [{name, path, created_at}] }`. Default project (`~/.freddie`) is protected from deletion.
50
+
51
+ Code:
52
+ - `src/projects.js` — CRUD: `loadRegistry()`, `listProjects()`, `getActiveProject()`, `createProject({name, projectPath})`, `deleteProject(name)`, `setActiveProject(name)`, `applyActiveProjectFromRegistry()`.
53
+ - `src/home.js` — added `applyHomeOverride(absPath)` to set `FREDDIE_HOME` env and clear cached home.
54
+ - `src/host/index.js` — `bootHost()` calls `applyActiveProjectFromRegistry()` before plugin discovery, so plugins resolve against active project root.
55
+ - `plugins/gui-projects/plugin.js` — GUI plugin exposing `GET /api/projects`, `POST /api/projects` (create), `DELETE /api/projects/:name`, `POST /api/projects/active` (switch).
56
+ - `src/web/app.js` — `#/projects` route, project pill in topbar, full CRUD UI.
57
+
58
+ Isolation boundary: Each project gets its own sessions DB, config.json, skills/, plugins/, cron.db, batches/, logs/, auth.json (all under `getFreddieHome()`). Plugins re-read paths per-request via `getFreddieHome()`.
59
+
60
+ **Runtime switch caveat** — Switching active project calls `resetHostForTests()` and clears caches but does NOT re-discover plugins in the running dashboard. UI alerts user to restart dashboard for plugin reload. New process auto-picks up active project via `applyActiveProjectFromRegistry()` on `bootHost()`. Gap: if user switches project then uses a plugin-registered tool before restarting, the OLD project's tool set loads. `/api/health` returns `{ freddie_home: "<active-project-path>" }` after project switch. Needs improvement: in-process plugin re-discovery on project switch.
61
+
47
62
  ## Layout
48
63
 
49
64
  ```
50
- src/home.js # getFreddieHome, applyProfileOverride
65
+ src/home.js # getFreddieHome, applyProfileOverride, applyHomeOverride
66
+ src/projects.js # Multi-project registry CRUD (loadRegistry, createProject, deleteProject, setActiveProject)
51
67
  src/config.js # loadConfig, saveConfigValue, DEFAULT_CONFIG, _config_version migrations
52
68
  src/sessions.js # better-sqlite3 + FTS5
53
69
  src/auth.js # FileAuthStore for credentials
@@ -176,6 +192,7 @@ One `test.js` at project root. ≤200 lines. Plain assertions, real data, real s
176
192
  | Toolsets | `src/toolsets.js` |
177
193
  | Session store | `src/sessions.js` (better-sqlite3 + FTS5) |
178
194
  | Home + profiles | `src/home.js` |
195
+ | Multi-project registry | `src/projects.js` (isolated FREDDIE_HOME per project) |
179
196
  | Structured logging | `src/observability/log.js` |
180
197
  | Config | `src/config.js` |
181
198
  | Commands | `src/commands/registry.js` |
@@ -234,6 +251,8 @@ All 12 test.js named groups passing: home+config+skin, sessions+FTS5, tools+tool
234
251
 
235
252
  ## Learning audit
236
253
 
254
+ - 2026-05-04 (session 1): Multi-project workspace system documented. Registry, CRUD ops, isolation boundaries, GUI plugin, and runtime plugin switch caveat added. 4 facts ingested to rs-learn: project/freddie-multi-project-registry, reference/freddie-projects-module, reference/freddie-gui-projects-endpoints, feedback/freddie-project-switch-reload-limitation. Reach check passed (in-reach). AGENTS.md updated with new subsystem section + Layout entries + subsystem guide row.
255
+ - 2026-05-04 (session 2): Audit cycle — 5 queries fired (pi-ai env keys, profile safe paths, libsql async debt, browser syntax errors, plugin architecture contract). rs-learn store still returning "No recall results" or off-topic trajectory entries. All 5 recalls failed. 0 items migrated; all AGENTS.md facts retained (safe default). Ingest path confirmed live (4 facts accepted), but retrieval side empty. Likely requires backend indexing rebuild or cross-session propagation.
237
256
  - 2026-05-01: 5 items queried (pi-ai keys, profile paths, cache safety, floosie composition, browser errors); rs-learn store unavailable (exec:recall returned no results). 0 items migrated. New facts (anentrypoint-design build, dashboard live-rerender caveat, libuv spawn caveat) ingested directly into rs-learn; audit will retry in future sessions.
238
257
  - 2026-05-01 (session 2): 5 items queried (pi-ai env keys, profile safe paths, cache safety, floosie composition, browser syntax errors). rs-learn store still empty. 0 items migrated. Refined anentrypoint-design source/dist skew entry in AGENTS.md to include silent-failure pageerror diagnostic. New fact `reference/anentrypoint-design-dist-rebuild` ingested.
239
258
  - 2026-05-03: Pre-rename validation snapshot recorded (all 12 test.js groups, CLI, tools, 284 files, version drift). Baseline stored to isolate post-rename regressions.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "freddie",
3
- "version": "0.0.73",
3
+ "version": "0.0.74",
4
4
  "type": "module",
5
5
  "description": "Open JS agent harness built on pi-mono, floosie, xstate, and anentrypoint-design",
6
6
  "bin": {
@@ -26,7 +26,7 @@
26
26
  "plugsdk": "^1.0.15",
27
27
  "xstate": "^5.31.0",
28
28
  "zod": "^4.0.0",
29
- "anentrypoint-design": "^0.0.49"
29
+ "anentrypoint-design": "^0.0.53"
30
30
  },
31
31
  "optionalDependencies": {
32
32
  "@libsql/darwin-arm64": "0.3.19",