@mobrienv/autoloop 0.10.0 → 0.11.0

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.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: autoloop-memory
3
+ description: Persist and recall Autoloop loop memory — add learnings and preferences, list and find entries, and render memory into prompts. Use when the user asks to remember something across loop runs, inspect loop memory, or configure a memory plugin.
4
+ argument-hint: "[add|list|find|render|status|remove] [args...]"
5
+ ---
6
+
7
+ # Autoloop Memory
8
+
9
+ Loop memory is the durable store a loop reads into each iteration prompt. The default plugin is `jsonl` (`.autoloop/memory.jsonl`). A loop uses memory without forking core: pick a plugin with `memory.kind` in `autoloops.toml`.
10
+
11
+ Parse `$ARGUMENTS` to choose a verb. If none, list memory.
12
+
13
+ ## Verbs
14
+
15
+ ```bash
16
+ # Persist
17
+ autoloop memory add learning "insight the next iteration should keep"
18
+ autoloop memory add preference Workflow "Always run tests before review.ready"
19
+ autoloop memory add meta smoke_iteration "2"
20
+
21
+ # Recall
22
+ autoloop memory list
23
+ autoloop memory find "pattern"
24
+ autoloop memory status
25
+
26
+ # Prompt-shaped render (same text the harness injects, no budget)
27
+ autoloop memory list
28
+
29
+ # Remove (tombstone; append-only)
30
+ autoloop memory remove <id>
31
+ ```
32
+
33
+ `autoloop inspect memory` shows the same rendered block (`--format md`) or raw store (`--format json`).
34
+
35
+ ## Default jsonl store
36
+
37
+ Unless `memory.kind` is set, Autoloop uses the built-in `jsonl` plugin:
38
+
39
+ - Path: `AUTOLOOP_MEMORY_FILE` or `core.memory_file` (default `.autoloop/memory.jsonl`)
40
+ - Entries: learning, preference, meta, tombstone
41
+ - Prompt injection is truncated to `memory.prompt_budget_chars` (default 8000)
42
+
43
+ `file` is a second built-in plugin with the same jsonl file store.
44
+
45
+ To **replace** jsonl with Honcho, SuperMemory, Mnemosyne, or another store, install that product's Autoloop adapter and set `memory.module`. Autoloop does not ship those products.
46
+
47
+ ```toml
48
+ [memory]
49
+ kind = "honcho"
50
+ module = "@example/autoloop-memory-honcho" # or "./memory/honcho.cjs"
51
+ prompt_budget_chars = 8000
52
+ ```
53
+
54
+ The module exports `createMemoryPlugin({ projectDir, kind })` (or `default` / `plugin`) implementing add / list / find / render. API keys stay in the adapter env. `registerMemoryPlugin` still works in-process.
55
+
56
+ ## When to write memory
57
+
58
+ - **learning** — a durable lesson discovered during a run
59
+ - **preference** — a categorized behavioral rule (always project-scoped)
60
+ - **meta** — a small key/value the next iteration should see
61
+
62
+ Do not invent a second memory product. Use these verbs against the configured plugin.
package/README.md CHANGED
@@ -102,6 +102,24 @@ If Ralph is the broader experimentation surface, autoloop is the cleaner runtime
102
102
  npm install -g @mobrienv/autoloop
103
103
  ```
104
104
 
105
+ ### Standalone binary (no Node required)
106
+
107
+ npm remains the primary and recommended installation channel. For a Node-free
108
+ installation, download the binary for your OS and architecture plus
109
+ `SHA256SUMS` from the [GitHub release](https://github.com/mikeyobrien/autoloop/releases):
110
+
111
+ ```bash
112
+ VERSION=v0.10.1
113
+ TARGET=darwin-arm64 # darwin-arm64, darwin-x64, linux-arm64, or linux-x64
114
+ curl -LO "https://github.com/mikeyobrien/autoloop/releases/download/${VERSION}/autoloop-${TARGET}"
115
+ curl -LO "https://github.com/mikeyobrien/autoloop/releases/download/${VERSION}/SHA256SUMS"
116
+ grep " autoloop-${TARGET}$" SHA256SUMS > SHA256SUMS.current
117
+ sha256sum -c SHA256SUMS.current # Linux
118
+ # shasum -a 256 -c SHA256SUMS.current # macOS
119
+ chmod +x "autoloop-${TARGET}"
120
+ sudo mv "autoloop-${TARGET}" /usr/local/bin/autoloop
121
+ ```
122
+
105
123
  ### From source
106
124
 
107
125
  ```bash
@@ -311,8 +329,25 @@ See [CLI reference](https://mikeyobrien.github.io/autoloop/reference/cli#mock-ba
311
329
  - [Worktree isolation](https://mikeyobrien.github.io/autoloop/features/worktree)
312
330
  - [Releasing](https://mikeyobrien.github.io/autoloop/development/releasing)
313
331
 
332
+ ## Local CI / merge gate
333
+
334
+ No GitHub Actions on PRs. Prove green locally, then sign off. Full pattern:
335
+ [docs/ci-local.md](docs/ci-local.md).
336
+
337
+ ```sh
338
+ npm ci
339
+ npm run build
340
+ npm run check # biome + tsc --noEmit + vitest coverage
341
+
342
+ gh extension install basecamp/gh-signoff
343
+ gh signoff # posts context `signoff` — required to merge
344
+ ```
345
+
346
+ Publish and docs deploy still run on tags / `main` (`publish-npm.yml`,
347
+ `docs.yml`). Do not add a PR `ci.yml` back.
348
+
314
349
  ## Contributing
315
350
 
316
351
  Bug reports and pull requests are welcome at [github.com/mikeyobrien/autoloop](https://github.com/mikeyobrien/autoloop/issues).
317
352
 
318
- Prerequisites for development: Node.js >= 18, npm. Run `npm install && npm run build` to get started, then `npm test` to verify.
353
+ Prerequisites for development: Node.js >= 18, npm. Run `npm install && npm run build` to get started, then `npm run check` to verify. Merge requires local proof plus `gh signoff` (see [docs/ci-local.md](docs/ci-local.md)).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mobrienv/autoloop",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "license": "MIT",
5
5
  "description": "Simpler, opinionated loop harness for inspectable long-running agent workflows",
6
6
  "type": "module",
@@ -20,6 +20,8 @@
20
20
  "bin/autoloop",
21
21
  "dist",
22
22
  "plugins/autoloop",
23
+ "plugins/autoloop-memory",
24
+ ".agents/skills",
23
25
  "README.md"
24
26
  ],
25
27
  "engines": {
@@ -73,7 +75,7 @@
73
75
  "docs:build": "vitepress build docs",
74
76
  "docs:preview": "vitepress preview docs",
75
77
  "prepare": "husky",
76
- "version": "node -e \"const p=require('./plugins/autoloop/.claude-plugin/plugin.json');p.version=require('./package.json').version;require('fs').writeFileSync('./plugins/autoloop/.claude-plugin/plugin.json',JSON.stringify(p,null,2)+'\\n')\" && git add plugins/autoloop/.claude-plugin/plugin.json"
78
+ "version": "node -e \"const fs=require('fs');const v=require('./package.json').version;for (const dir of ['plugins/autoloop','plugins/autoloop-memory']){const f=dir+'/.claude-plugin/plugin.json';const p=JSON.parse(fs.readFileSync(f,'utf8'));p.version=v;fs.writeFileSync(f,JSON.stringify(p,null,2)+'\\n')}\" && git add plugins/autoloop/.claude-plugin/plugin.json plugins/autoloop-memory/.claude-plugin/plugin.json"
77
79
  },
78
80
  "lint-staged": {
79
81
  "*.{ts,js,json}": [
@@ -93,9 +95,9 @@
93
95
  "vitest": "^3.0.0"
94
96
  },
95
97
  "dependencies": {
96
- "@mobrienv/autoloop-cli": "0.10.0",
97
- "@mobrienv/autoloop-core": "0.10.0",
98
- "@mobrienv/autoloop-harness": "0.10.0",
99
- "@mobrienv/autoloop-presets": "0.10.0"
98
+ "@mobrienv/autoloop-cli": "0.11.0",
99
+ "@mobrienv/autoloop-core": "0.11.0",
100
+ "@mobrienv/autoloop-harness": "0.11.0",
101
+ "@mobrienv/autoloop-presets": "0.11.0"
100
102
  }
101
103
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "autoloop",
3
- "version": "0.10.0",
3
+ "version": "0.11.0",
4
4
  "description": "Run and operate autoloops — start runs, monitor progress, inject guidance, manage worktrees, inspect artifacts, and clean up.",
5
5
  "homepage": "https://github.com/mikeyobrien/autoloop",
6
6
  "repository": "https://github.com/mikeyobrien/autoloop",
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "autoloop-memory",
3
+ "version": "0.11.0",
4
+ "description": "Persist and recall Autoloop loop memory — add, list, find, and render learnings and preferences.",
5
+ "homepage": "https://github.com/mikeyobrien/autoloop",
6
+ "repository": "https://github.com/mikeyobrien/autoloop",
7
+ "license": "MIT",
8
+ "keywords": ["autoloop", "memory", "ai-agents"]
9
+ }