@aistastudio/myc 0.2.0 → 0.2.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 +40 -9
- package/dist/myc.js +539 -423
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -27,19 +27,18 @@ Install Bun: https://bun.sh
|
|
|
27
27
|
|
|
28
28
|
## Install
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
from a tarball today, but nothing has been pushed to the registry yet:
|
|
30
|
+
Installation is one command:
|
|
32
31
|
|
|
33
32
|
```bash
|
|
34
|
-
bun install -g @aistastudio/myc # 3.
|
|
35
|
-
|
|
33
|
+
bun install -g @aistastudio/myc # 3.20 MB, 10 files, no models pulled at install
|
|
34
|
+
myc --version # myc 0.2.1 (schema 1)
|
|
36
35
|
```
|
|
37
36
|
|
|
38
37
|
The embedding model is **not** downloaded during install. Semantic search is
|
|
39
38
|
opt-in and explicit: `myc models fetch` (129 MB, ~7 s). Until then search is
|
|
40
39
|
lexical and says so.
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
To run the newest code instead of the published release, build from source:
|
|
43
42
|
|
|
44
43
|
```bash
|
|
45
44
|
git clone <repo> && cd myc
|
|
@@ -56,11 +55,12 @@ writing a config that silently won't start.
|
|
|
56
55
|
|
|
57
56
|
```bash
|
|
58
57
|
./dist/myc init # .myc/ + SQLite + migrations in this repo
|
|
59
|
-
./dist/myc wire # hooks for Claude Code / Codex / opencode
|
|
58
|
+
./dist/myc wire # hooks for Claude Code / Codex / opencode / Kimi
|
|
60
59
|
./dist/myc ready # what can be picked up right now
|
|
61
60
|
./dist/myc remember "why X, not Y" # record a fact or decision
|
|
62
61
|
./dist/myc recall "how retrieval works"
|
|
63
62
|
./dist/myc prime # session context packet (agents call it)
|
|
63
|
+
./dist/myc doctor # schema, counters, hooks — says "don't know" where it doesn't
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
Full command list: `./dist/myc --help`.
|
|
@@ -94,6 +94,34 @@ cheaper than a miss — 252× in the run of 2026-09-07, ≈27 000× for embeddin
|
|
|
94
94
|
the ratio is wall-clock and moves with the machine. The ranking does not: same
|
|
95
95
|
MRR to three decimals, zero rank differences.
|
|
96
96
|
|
|
97
|
+
**Memory survives context compaction.** `myc wire` installs a pre-compact hook,
|
|
98
|
+
so the moment before an agent's context is squeezed the session episode is
|
|
99
|
+
written to disk — raw, `L0`, `acl private`, secrets masked — and a rescue
|
|
100
|
+
packet is printed back into the context that survives. Distillation is queued,
|
|
101
|
+
never done on the write path. The episode is on disk before anything else is
|
|
102
|
+
attempted, so exceeding the hook's timeout costs the summary, not the record:
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
$ myc absorb-session --reason manual --transcript … --agent claude
|
|
106
|
+
# myc: контекст сжимается — вот что нельзя потерять
|
|
107
|
+
эпизод sess-5jh8je4g050m сохранён (265 Б)
|
|
108
|
+
ДАЛЬШЕ myc show sess-5jh8je4g050m · myc ready --claim
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
**Memory is separated by session, and the separation is visible.** Every note
|
|
112
|
+
carries a reach: `session` (this conversation) or `project` (everyone). The
|
|
113
|
+
automatic context packet — `prime` — only carries the current session's notes;
|
|
114
|
+
another agent's session does not leak into yours. An explicit `myc recall`
|
|
115
|
+
still finds them, because hiding knowledge is not the same as scoping it, and
|
|
116
|
+
marks each row for what it is: `ses` own session, `ses*` someone else's, `prj`
|
|
117
|
+
project-wide.
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
$ MYC_SESSION_ID=s1 myc recall "ретраи" $ MYC_SESSION_ID=s2 myc recall "ретраи"
|
|
121
|
+
1.30 … ses сессионное: ретраи… 1.30 … ses* сессионное: ретраи…
|
|
122
|
+
1.10 … ses* в сессии один: ретраи… 1.10 … ses* в сессии один: ретраи…
|
|
123
|
+
```
|
|
124
|
+
|
|
97
125
|
**Memory has three independent axes**, and the surface says what it hid:
|
|
98
126
|
tier (project vs personal), session reach, repository reach. `prime` prints
|
|
99
127
|
`N notes from other repositories hidden` rather than quietly narrowing results.
|
|
@@ -113,9 +141,12 @@ last-writer-wins over whole records.
|
|
|
113
141
|
889 ms: 796 tasks, 972 dependencies, 265 notes, 41 memories — with unknown
|
|
114
142
|
issue types carried over verbatim and named, and out-of-range priorities
|
|
115
143
|
clamped and named, instead of one odd row aborting the import. On that same
|
|
116
|
-
graph
|
|
117
|
-
|
|
118
|
-
|
|
144
|
+
graph both queues now return the same 152 tasks. They did not always: myc used
|
|
145
|
+
to offer 195 against beads' 144, because beads inherits blockers down the
|
|
146
|
+
parent chain and myc looked only at a task's own. Those 51 were inside a
|
|
147
|
+
still-blocked epic and beads was right to hide them; `memory-atcm254ry6c7` is
|
|
148
|
+
closed, `anc_blockers` is materialised by trigger, and the queue now says
|
|
149
|
+
`281 blocked (51 through an ancestor)` rather than quietly offering them.
|
|
119
150
|
|
|
120
151
|
**Guards are proved by mutation.** Every refusal and every invariant is
|
|
121
152
|
accompanied by a mutation that removes it; a guard whose removal breaks no test
|