slopie 0.0.0-stage → 1.6.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/LICENSE +21 -0
- package/NOTICE +75 -0
- package/README.md +55 -2
- package/bin/potsherd.js +11 -0
- package/bin/slopie.js +8 -0
- package/dist/potsherd.js +47087 -0
- package/dist/potsherd.js.map +7 -0
- package/licenses/js-tiktoken-MIT.txt +21 -0
- package/licenses/models-dev-MIT.txt +21 -0
- package/package.json +78 -4
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 potsherd contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
potsherd
|
|
2
|
+
Copyright (c) 2026 potsherd contributors
|
|
3
|
+
|
|
4
|
+
This product includes software developed as part of:
|
|
5
|
+
|
|
6
|
+
episodic-memory — https://github.com/obra/episodic-memory
|
|
7
|
+
Copyright (c) 2025 Jesse Vincent
|
|
8
|
+
Licensed under the MIT License.
|
|
9
|
+
|
|
10
|
+
gitleaks — https://github.com/gitleaks/gitleaks
|
|
11
|
+
Copyright (c) 2019 Zachary Rice
|
|
12
|
+
Licensed under the MIT License.
|
|
13
|
+
|
|
14
|
+
secretlint — https://github.com/secretlint/secretlint
|
|
15
|
+
Copyright (c) 2020 Secretlint
|
|
16
|
+
Licensed under the MIT License.
|
|
17
|
+
|
|
18
|
+
potsherd's engine (`packages/core`) is a hard fork of episodic-memory. The
|
|
19
|
+
upstream revision the fork was taken from is:
|
|
20
|
+
|
|
21
|
+
upstream: obra/episodic-memory
|
|
22
|
+
tag: v1.4.2
|
|
23
|
+
commit: 10757690210574421f1df5f35835af8d0c74d984
|
|
24
|
+
date: 2026-05-21
|
|
25
|
+
|
|
26
|
+
That revision is reachable from this repository as the fetch-only git remote
|
|
27
|
+
`upstream-episodic`, so `git log upstream-episodic/main` and
|
|
28
|
+
`git diff 1075769..upstream-episodic/main -- src/` keep working:
|
|
29
|
+
|
|
30
|
+
git remote add upstream-episodic https://github.com/obra/episodic-memory.git
|
|
31
|
+
git fetch upstream-episodic --no-tags \
|
|
32
|
+
'refs/heads/main:refs/remotes/upstream-episodic/main'
|
|
33
|
+
|
|
34
|
+
No upstream commit is merged into this history. Files were hand-ported into
|
|
35
|
+
potsherd's layer layout and each one carries a provenance header naming the
|
|
36
|
+
upstream path and revision. `docs/upstream/PORT-LOG.md` lists every upstream
|
|
37
|
+
source file and records whether it was taken verbatim, adapted, or refused,
|
|
38
|
+
and why.
|
|
39
|
+
|
|
40
|
+
The secret-detection rule pack in `packages/core/src/redact-rules.ts` (L2,
|
|
41
|
+
`plans/03-ARCHITECTURE.md` §5) is ported from gitleaks' `config/gitleaks.toml`
|
|
42
|
+
and from secretlint's `@secretlint/secretlint-rule-preset-recommend`. Neither
|
|
43
|
+
project's runtime is a dependency: the patterns were transcribed and each rule
|
|
44
|
+
records its upstream rule id in its `source` field. No rule in that file was
|
|
45
|
+
written from memory.
|
|
46
|
+
|
|
47
|
+
Generic fixes made here are prepared as upstream pull requests under
|
|
48
|
+
`docs/upstream/` and are not submitted by any agent.
|
|
49
|
+
|
|
50
|
+
Third-party dependencies retain their own licenses; see the `licenses`
|
|
51
|
+
section of each package's `package.json` and `node_modules`.
|
|
52
|
+
|
|
53
|
+
History rewrite, 22 August 2026
|
|
54
|
+
-------------------------------
|
|
55
|
+
`docs/upstream/PHASE-1-SCOUT.md` published real transcript prose — an assistant
|
|
56
|
+
`thinking` block and a truncated `<user_query>`, both from one machine's private
|
|
57
|
+
sessions — from phase 1 until 22 August 2026. The samples are synthetic now, and
|
|
58
|
+
that path was removed from every commit with `git filter-repo` and force-pushed,
|
|
59
|
+
so the leaked blob is not reachable from any commit on `origin/main`.
|
|
60
|
+
|
|
61
|
+
The root commit after the rewrite is `6697ca9`, and the `v1.0.0` tag now points at
|
|
62
|
+
`548b5b5`, whose tree no longer contains the file.
|
|
63
|
+
**A clone taken before 22 August 2026 still holds the original blob.** Re-clone
|
|
64
|
+
rather than pull if you have one.
|
|
65
|
+
|
|
66
|
+
Bundled transport accounting tokenizer
|
|
67
|
+
-------------------------------------
|
|
68
|
+
js-tiktoken 1.0.21 and cl100k-base ranks, MIT License.
|
|
69
|
+
Copyright (c) 2022 OpenAI, Shantanu Jain.
|
|
70
|
+
Full notice: licenses/js-tiktoken-MIT.txt.
|
|
71
|
+
This tokenizer is a transport accounting unit, not the host model tokenizer.
|
|
72
|
+
|
|
73
|
+
Models.dev
|
|
74
|
+
----------
|
|
75
|
+
The terminal audit includes reduced public model/pricing metadata from Models.dev (Anomaly). Source: https://github.com/anomalyco/models.dev. Licensed under MIT; see licenses/models-dev-MIT.txt. Snapshot retrieval date and hash are retained in each audit price basis.
|
package/README.md
CHANGED
|
@@ -1,3 +1,56 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Slopie
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[Slopie](https://github.com/HulkInTherapy/slopie), formerly Potsherd, is local memory for coding-agent sessions. Capture supported history, find exact source evidence, and save scoped handoffs with provenance.
|
|
4
|
+
|
|
5
|
+
**Slopie 1.6.1 is published with provenance; this checkout prepares the 1.6.2 live-store patch.** Requires Node.js 22 or newer.
|
|
6
|
+
|
|
7
|
+
## Audit your recorded history
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
npx slopie audit
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
The default interactive audit sends selected redacted conversation text to OpenCode Zen and TypeSafe/Jev after its opening recipient notice, with no extra Enter step. It presents recorded API-equivalent value at a dated current price catalog, favourite model, real projects, recent Jev work stories, memorable source lines and direct-user language. Arrow keys or Tab switch sections; Enter opens details and evidence, Esc returns, S freezes the current view and q exits. `--tone elegant|witty|chaotic|roast` overrides the inferred voice. `--plain`, `--ascii`, `--no-color` and `--no-motion` support simpler terminals.
|
|
14
|
+
|
|
15
|
+
Jev analyzes the largest complete recent scope that fits the free token and estimated time allowance: All, 45, 30, 7 or 3 days. When none fits, an explicitly labelled selection of the newest coherent episodes keeps the scope bounded and the calendar coverage partial. Its opening notice names OpenCode Zen and TypeSafe/Jev as recipients. Retained archives remain read-only; redacted conversation text is sent only through the qualified free route, with no paid fallback. The anonymous free-model route previously returned zero-cost answers for an authored synthetic sample. Current free capacity is limited: four authorized private requests received quota errors and no accepted answers, so private semantic accuracy is unavailable. No private accuracy pass or guaranteed capacity is claimed. Results and date inventories use a separate body-free local cache. Prices revalue recorded tokens at current catalog rates; they are not historical invoices. Missing usage, endpoints, rates or provenance stay visible.
|
|
16
|
+
|
|
17
|
+
The audit remains experimental. The unchanged large synthetic fixture took about 33 seconds cold and 22 seconds warm. Independent, untuned scores were usefulness 7/10, ease 8/10 and appearance 8/10 at 80 columns (7/10 at 40); these do not establish broader semantic accuracy.
|
|
18
|
+
|
|
19
|
+
Use `slopie audit --legacy` for the local retention audit, or set `POTSHERD_OFFLINE=1` to keep the new retrospective local. Window estimates describe remaining analysis after inventory, not the entire cold command; large cold archives can take longer. `--sweep` and `--verify` keep their prior behavior. See [terminal audit coverage and privacy](https://github.com/HulkInTherapy/slopie/blob/main/docs/audit-terminal.md).
|
|
20
|
+
|
|
21
|
+
## Install and use
|
|
22
|
+
|
|
23
|
+
Install with `npm install -g slopie` and run `slopie audit`. The `potsherd` executable remains a compatibility alias. To build this checkout from source:
|
|
24
|
+
|
|
25
|
+
```sh
|
|
26
|
+
pnpm install --frozen-lockfile
|
|
27
|
+
pnpm build
|
|
28
|
+
pnpm vendor
|
|
29
|
+
node packages/cli/bin/slopie.js --help
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Use an owned test store and explicit source roots to try capture and search:
|
|
33
|
+
|
|
34
|
+
```sh
|
|
35
|
+
node packages/cli/bin/slopie.js maintain --migrate --potsherd-dir /path/to/test-store
|
|
36
|
+
node packages/cli/bin/slopie.js index --enroll codex,claude --codex-dir /path/to/codex --claude-dir /path/to/claude --potsherd-dir /path/to/test-store
|
|
37
|
+
node packages/cli/bin/slopie.js find "latest project decisions" --project /example/project --potsherd-dir /path/to/test-store --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`--enroll` enables automatic capture for those source roots. Semantic model assets require explicit `maintain --acquire-assets --rebuild`; missing assets produce labelled degraded coverage.
|
|
41
|
+
|
|
42
|
+
## Integrations and support
|
|
43
|
+
|
|
44
|
+
The v2 agent contract exposes four tools: `potsherd_recall` for scoped recall, `potsherd_read` for exact source evidence, `potsherd_graft` for deterministic handoffs, and `potsherd_write` for explicit authored memory. The [Codex plugin](https://github.com/HulkInTherapy/slopie/blob/main/plugins/codex/README.md), [Claude Code plugin](https://github.com/HulkInTherapy/slopie/blob/main/plugins/claude-code/README.md), native pi extension, and OpenCode MCP configuration use this contract. See [installation and MCP configuration](https://github.com/HulkInTherapy/slopie/blob/main/docs/mcp-clients.md), the [agent contract](https://github.com/HulkInTherapy/slopie/blob/main/docs/AGENT-CONTRACT.md), and the [reader contract](https://github.com/HulkInTherapy/slopie/blob/main/docs/reader-contract.md).
|
|
45
|
+
|
|
46
|
+
Existing `POTSHERD_*` settings, `--potsherd-dir`, local data/cache paths, plugin identities and tool IDs retain their compatibility names.
|
|
47
|
+
|
|
48
|
+
Host verification differs by integration. [Historical memory release notes](https://github.com/HulkInTherapy/slopie/blob/main/docs/release-candidate.md) describe measured results and remaining limits; [release history](https://github.com/HulkInTherapy/slopie/blob/main/CHANGELOG.md) tracks product versions. This release is not certified as unattended primary memory.
|
|
49
|
+
|
|
50
|
+
## Evidence and upgrades
|
|
51
|
+
|
|
52
|
+
Only explicit write creates authored memory. Relevance scores and source links do not prove a claim; verify exact evidence and distinguish human decisions from assistant recaps, tool observations, and historical instructions. Reader validation checks structure and citation membership, not semantic entailment. Partial capture cannot establish global absence.
|
|
53
|
+
|
|
54
|
+
Before upgrading, back up the store and retain the previous package. `maintain --migrate` creates a pre-upgrade backup. To roll back, stop owned host/MCP processes, preserve the upgraded store, restore a copy of the backup, and run the previous package against that copy.
|
|
55
|
+
|
|
56
|
+
MIT licensed. See [LICENSE](LICENSE) and [NOTICE](NOTICE).
|
package/bin/potsherd.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// The published entry point. `dist/potsherd.js` is a single bundled file so
|
|
3
|
+
// that `npx potsherd audit` needs no workspace resolution and no build step.
|
|
4
|
+
import('../dist/potsherd.js').catch((err) => {
|
|
5
|
+
console.error('potsherd failed to start:', err?.message ?? err);
|
|
6
|
+
// NOT `npm i -g potsherd`: the package is unpublished, so that is a 404
|
|
7
|
+
// and telling somebody whose install is already broken to run it twice is
|
|
8
|
+
// the worst kind of fix line. Phase 7 publishes; until then this is it.
|
|
9
|
+
console.error('this usually means the package did not build. try: pnpm install && pnpm build');
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
package/bin/slopie.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Public Slopie launcher; storage and the potsherd launcher remain compatible.
|
|
3
|
+
process.env['POTSHERD_CLI_PUBLIC_NAME']='slopie';
|
|
4
|
+
import('../dist/potsherd.js').catch((err)=>{
|
|
5
|
+
console.error('slopie failed to start:',err?.message??err);
|
|
6
|
+
console.error('this usually means the package did not build. try: pnpm install && pnpm build');
|
|
7
|
+
process.exit(1);
|
|
8
|
+
});
|