@pixelguild/loom 0.1.0 → 0.1.2

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.
package/README.md ADDED
@@ -0,0 +1,137 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/pixelguild/loom/main/assets/loom_app_icon.png" width="96" height="96" alt="Loom">
3
+ </p>
4
+
5
+ <h1 align="center">@pixelguild/loom</h1>
6
+
7
+ <p align="center">
8
+ Session intelligence layer for <a href="https://claude.ai/code">Claude Code</a>.<br>
9
+ <strong>Persistent memory &middot; Intelligent archiving &middot; Cross-project patterns &middot; Peer LLM consultation</strong>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <a href="https://www.npmjs.com/package/@pixelguild/loom"><img src="https://img.shields.io/npm/v/@pixelguild/loom?color=0a7bca&label=npm" alt="npm"></a>
14
+ <a href="https://github.com/pixelguild/loom/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/@pixelguild/loom?color=333" alt="license"></a>
15
+ <a href="https://github.com/pixelguild/loom"><img src="https://img.shields.io/badge/github-pixelguild%2Floom-333?logo=github" alt="github"></a>
16
+ </p>
17
+
18
+ ---
19
+
20
+ Loom is an [MCP server](https://modelcontextprotocol.io) that gives Claude Code a long-term memory. It logs what Claude does, archives context when it grows large, and lets Claude pick up exactly where it left off in the next session.
21
+
22
+ ## Install
23
+
24
+ ```bash
25
+ npx @pixelguild/loom init
26
+ ```
27
+
28
+ This scaffolds `docs/loom/`, wires the MCP server into `.claude/mcp.json`, and adds instructions to your `CLAUDE.md`. That's it.
29
+
30
+ Or add manually:
31
+
32
+ ```bash
33
+ claude mcp add loom -- npx @pixelguild/loom
34
+ ```
35
+
36
+ ## What it does
37
+
38
+ | Feature | Description |
39
+ |---------|-------------|
40
+ | **Context logging** | Structured entries (decisions, actions, issues, questions) appended to `docs/loom/context.md` |
41
+ | **Session pickup** | Claude reads context at session start and resumes where it left off |
42
+ | **Intelligent archiving** | Spawns a Claude subprocess to produce narrative archives with rolling carry-forward summaries |
43
+ | **Pattern library** | Global SQLite store with FTS5 search — save solutions in one project, find them everywhere |
44
+ | **Peer consultation** | Ask OpenAI, Vertex AI, or Ollama for a second opinion on architecture, debugging, or design |
45
+ | **Execution manifests** | Save structured plans for headless `claude` runs |
46
+ | **Per-project config** | Customize thresholds, providers, and settings via `loom.config.json` |
47
+
48
+ ## How it works
49
+
50
+ ```
51
+ Session start Session end
52
+ | |
53
+ v v
54
+ loom_get_context --> Claude works --> loom_log_context
55
+ | with full |
56
+ | history v
57
+ v Token threshold?
58
+ Resume where Yes --> loom_archive_context
59
+ you left off |
60
+ v
61
+ Narrative archive with
62
+ carry-forward summary
63
+ ```
64
+
65
+ The latest archive's carry-forward summary + current `context.md` always gives Claude full project history without reading every old archive.
66
+
67
+ ## MCP Tools
68
+
69
+ | Tool | Purpose |
70
+ |------|---------|
71
+ | `loom_get_context` | Read current context. Call at session start. |
72
+ | `loom_log_context` | Log a structured entry (action, decision, issue, question, dead_end, session_end) |
73
+ | `loom_get_session_status` | Token count, archive count, threshold status |
74
+ | `loom_archive_context` | Archive context (intelligent with Claude subprocess, mechanical fallback) |
75
+ | `loom_save_pattern` | Save a reusable pattern to the global library |
76
+ | `loom_find_pattern` | Search patterns across all projects |
77
+ | `loom_create_manifest` | Save a structured execution manifest |
78
+ | `loom_get_manifest` | List or retrieve manifests |
79
+ | `loom_consult_peer` | Ask a peer LLM for a second opinion |
80
+
81
+ ## CLI
82
+
83
+ ```bash
84
+ npx @pixelguild/loom init # Scaffold project, wire MCP, inject CLAUDE.md
85
+ npx @pixelguild/loom status # Token count, archive status, context health
86
+ ```
87
+
88
+ ## Configuration
89
+
90
+ Layered config — per-project overrides global defaults.
91
+
92
+ **Global** `~/.loom/config.json`:
93
+
94
+ ```json
95
+ {
96
+ "default_provider": "openai",
97
+ "providers": {
98
+ "openai": { "model": "gpt-4o" },
99
+ "vertex": { "model": "gemini-2.0-flash", "project": "my-gcp-project", "location": "us-central1" },
100
+ "ollama": { "model": "llama3.1", "host": "http://localhost:11434" }
101
+ }
102
+ }
103
+ ```
104
+
105
+ **Per-project** `docs/loom/loom.config.json`:
106
+
107
+ ```json
108
+ {
109
+ "archive_thresholds": { "warning": 40000, "archive": 50000 },
110
+ "peer_consultation": { "enabled": true, "allowed_providers": ["openai", "ollama"] }
111
+ }
112
+ ```
113
+
114
+ | Variable | Purpose |
115
+ |----------|---------|
116
+ | `LOOM_PROJECT_ROOT` | Project directory (falls back to cwd) |
117
+ | `LOOM_OPENAI_API_KEY` | OpenAI API key for peer consultation |
118
+
119
+ ## Storage
120
+
121
+ ```
122
+ docs/loom/
123
+ context.md # Active session context
124
+ loom.config.json # Per-project config (optional)
125
+ archives/
126
+ 2026-03-08-001.md # Timestamped narrative archives
127
+ manifests/
128
+ deploy-plan.md # Execution manifests
129
+
130
+ ~/.loom/
131
+ config.json # Global config
132
+ loom.db # SQLite pattern library (FTS5)
133
+ ```
134
+
135
+ ## License
136
+
137
+ MIT &copy; [Pixel Guild, LLC](https://pixelguild.com)
package/dist/cli/index.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixelguild/loom",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Session intelligence layer for Claude Code — persistent memory, intelligent archiving, cross-project patterns, and peer LLM consultation.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -9,7 +9,8 @@
9
9
  },
10
10
  "files": [
11
11
  "dist",
12
- "!dist/**/__tests__"
12
+ "!dist/**/__tests__",
13
+ "README.md"
13
14
  ],
14
15
  "keywords": [
15
16
  "claude",