@cortexkit/opencode-magic-context 0.49.11 → 0.49.12
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 +1 -1
- package/dist/agents/smart-notes-dreamer-gate.fixture.d.ts +28 -0
- package/dist/agents/smart-notes-dreamer-gate.fixture.d.ts.map +1 -0
- package/dist/{announcement-hdbkt8v5.js → announcement-g789dmt6.js} +2 -2
- package/dist/auto-search-worker.js +4 -4
- package/dist/{compaction-marker-candidates-xxz35vwp.js → compaction-marker-candidates-v5c6997n.js} +3 -3
- package/dist/compaction-marker-candidates-worker.js +1 -1
- package/dist/config/agent-disable.d.ts +14 -0
- package/dist/config/agent-disable.d.ts.map +1 -1
- package/dist/config/dependency-notes.d.ts +34 -0
- package/dist/config/dependency-notes.d.ts.map +1 -0
- package/dist/config/schema/magic-context.d.ts.map +1 -1
- package/dist/{conflict-warning-hook-xwkfncav.js → conflict-warning-hook-f4x5wed7.js} +8 -8
- package/dist/{context-twz3s0cg.js → context-dam8p201.js} +106 -96
- package/dist/{derive-budgets-3nbxsyss.js → derive-budgets-5306b1jt.js} +3 -3
- package/dist/embedding-backfill-qbfcbp87.js +21 -0
- package/dist/embedding-worker-process.js +2 -2
- package/dist/embedding-worker.js +6 -6
- package/dist/features/magic-context/dreamer/task-config.d.ts +22 -4
- package/dist/features/magic-context/dreamer/task-config.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-registry.d.ts +22 -0
- package/dist/features/magic-context/dreamer/task-registry.d.ts.map +1 -1
- package/dist/features/magic-context/dreamer/task-scheduler.d.ts +4 -1
- package/dist/features/magic-context/dreamer/task-scheduler.d.ts.map +1 -1
- package/dist/features/magic-context/memory/embedding-openai.d.ts +32 -0
- package/dist/features/magic-context/memory/embedding-openai.d.ts.map +1 -1
- package/dist/features/magic-context/memory/project-identity.d.ts +1 -0
- package/dist/features/magic-context/memory/project-identity.d.ts.map +1 -1
- package/dist/features/magic-context/memory/unborn-head.d.ts +34 -0
- package/dist/features/magic-context/memory/unborn-head.d.ts.map +1 -0
- package/dist/features/magic-context/project-embedding-registry.d.ts.map +1 -1
- package/dist/features/magic-context/storage-tags.d.ts +2 -0
- package/dist/features/magic-context/storage-tags.d.ts.map +1 -1
- package/dist/{history-owner-ty29fz0f.js → history-owner-xp3pngv7.js} +3 -3
- package/dist/hooks/magic-context/apply-operations.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-prompt.d.ts +6 -0
- package/dist/hooks/magic-context/compartment-prompt.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-incremental.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-runner-types.d.ts +3 -0
- package/dist/hooks/magic-context/compartment-runner-types.d.ts.map +1 -1
- package/dist/hooks/magic-context/compartment-trigger-error.d.ts +12 -0
- package/dist/hooks/magic-context/compartment-trigger-error.d.ts.map +1 -0
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts +2 -0
- package/dist/hooks/magic-context/historian-prompt-fit.d.ts.map +1 -1
- package/dist/hooks/magic-context/hook.d.ts.map +1 -1
- package/dist/hooks/magic-context/pending-materialization.d.ts +2 -0
- package/dist/hooks/magic-context/pending-materialization.d.ts.map +1 -1
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts +12 -0
- package/dist/hooks/magic-context/protected-tail-boundary.d.ts.map +1 -1
- package/dist/hooks/magic-context/raw-exact-ordinal-read.d.ts +58 -0
- package/dist/hooks/magic-context/raw-exact-ordinal-read.d.ts.map +1 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts +7 -0
- package/dist/hooks/magic-context/raw-ordinal-warmup.d.ts.map +1 -1
- package/dist/hooks/magic-context/read-session-raw.d.ts +19 -0
- package/dist/hooks/magic-context/read-session-raw.d.ts.map +1 -1
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts +2 -0
- package/dist/hooks/magic-context/recomp-orchestrator.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts +2 -0
- package/dist/hooks/magic-context/transform-compartment-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform-postprocess-phase.d.ts.map +1 -1
- package/dist/hooks/magic-context/transform.d.ts +4 -0
- package/dist/hooks/magic-context/transform.d.ts.map +1 -1
- package/dist/hooks/magic-context/wrapup-orchestrator.d.ts.map +1 -1
- package/dist/{index-g40wgxxt.js → index-05n6ykca.js} +4 -4
- package/dist/{index-bzp9s8z2.js → index-1d289pq2.js} +2 -2
- package/dist/{index-w28y7d0z.js → index-1sarmj9z.js} +15 -15
- package/dist/{index-hqnggmxn.js → index-1wwh38fk.js} +128 -66
- package/dist/{index-0abg88h2.js → index-2pgxcncf.js} +4 -4
- package/dist/{index-84j7jq8a.js → index-6sytd5w3.js} +10 -10
- package/dist/{index-yhrrx7qa.js → index-6sz25c3s.js} +3 -3
- package/dist/{index-4jkhhpn1.js → index-7h8a1xpc.js} +3 -3
- package/dist/{index-se1w3v2m.js → index-7zd5asz9.js} +140 -17
- package/dist/{index-jw4gbfkv.js → index-8ketfacn.js} +2 -2
- package/dist/{index-q3qck7j2.js → index-95s8xaj1.js} +6 -5
- package/dist/{index-bmwfzz28.js → index-9vqb5p1s.js} +4 -4
- package/dist/{index-0jz47061.js → index-a8bvhwqs.js} +190 -30
- package/dist/{index-qr1mkc2y.js → index-b16gpywn.js} +9 -9
- package/dist/{index-g7jkrz0x.js → index-bp5083x2.js} +1 -1
- package/dist/{index-mp2kghkv.js → index-dyvbsvga.js} +1 -1
- package/dist/{index-s178h9z8.js → index-f71thw8j.js} +1 -1
- package/dist/{index-kvw6xew3.js → index-fkx2qnvw.js} +2 -2
- package/dist/{index-f8cn4xqa.js → index-fwefky9w.js} +18 -5
- package/dist/{index-4ccdr7yw.js → index-fx90bvjd.js} +5 -5
- package/dist/{index-0sahzkwr.js → index-g2q4htwp.js} +46 -2
- package/dist/{index-9159kk15.js → index-gf0psee3.js} +5 -5
- package/dist/{index-mw7c950g.js → index-gp3kcpc4.js} +1 -1
- package/dist/{index-gjvjh960.js → index-hqkczed7.js} +1 -1
- package/dist/{index-mvvephtj.js → index-j75v2476.js} +1 -1
- package/dist/{index-150zz6fh.js → index-k29z4aqh.js} +1 -1
- package/dist/{index-b64n4d0h.js → index-kee4kn5j.js} +1 -1
- package/dist/index-ksdyrrav.js +52 -0
- package/dist/{index-angx1s0k.js → index-mmfa86mt.js} +16 -6
- package/dist/{index-9jvab89d.js → index-n6m03s3n.js} +2 -2
- package/dist/{index-q28hsbpg.js → index-nj7yykkx.js} +1 -1
- package/dist/{index-ghc9f0n7.js → index-p5y3k4g7.js} +29 -1
- package/dist/{index-kkvxnbt8.js → index-qtbdx42g.js} +54 -25
- package/dist/{index-a865mj02.js → index-tdn0zkw4.js} +4 -4
- package/dist/{index-0j6crjgh.js → index-wqs4q74r.js} +8 -8
- package/dist/{index-xztdf9t7.js → index-x2xjyq8f.js} +11 -11
- package/dist/{index-a4b0gbyg.js → index-y9f76s3f.js} +1 -1
- package/dist/{index-z7avx6rw.js → index-yx5kgp2x.js} +197 -98
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +95 -67
- package/dist/{logger-wn328tfg.js → logger-jm3sqqzr.js} +2 -2
- package/dist/{message-index-bounded-0rbbg9rd.js → message-index-bounded-nq6rp8xa.js} +16 -16
- package/dist/{message-index-ct5x2kwa.js → message-index-df7swgy1.js} +16 -16
- package/dist/{message-time-backfill-nb5hhnrt.js → message-time-backfill-qjge9044.js} +3 -3
- package/dist/migration-worker.js +11 -11
- package/dist/plugin/dream-timer.d.ts.map +1 -1
- package/dist/plugin/hooks/create-session-hooks.d.ts.map +1 -1
- package/dist/plugin/tool-registry.d.ts.map +1 -1
- package/dist/{project-embedding-registry-ft9gh2e2.js → project-embedding-registry-q0ysjyzc.js} +11 -11
- package/dist/raw-ordinal-warmup-worker.js +12 -7
- package/dist/{read-session-chunk-y3hhsbzw.js → read-session-chunk-ax05f7gr.js} +11 -11
- package/dist/{read-session-raw-gm6xj30v.js → read-session-raw-m56hc7v2.js} +7 -3
- package/dist/{recomp-orchestrator-67k45s0b.js → recomp-orchestrator-a0mvby4e.js} +29 -29
- package/dist/{safe-notification-target-jdynm677.js → safe-notification-target-1szv1k5k.js} +3 -3
- package/dist/{search-jd8xh721.js → search-fm002702.js} +23 -23
- package/dist/{send-session-notification-vzhj8bsg.js → send-session-notification-y2wg3fkh.js} +6 -6
- package/dist/shared/data-path.d.ts +4 -0
- package/dist/shared/data-path.d.ts.map +1 -1
- package/dist/{storage-tags-35m4gms2.js → storage-tags-yygfb9c8.js} +7 -5
- package/dist/{task-config-cgpg0nvh.js → task-config-x3qmayd2.js} +6 -2
- package/dist/tools/ctx-note/tools.d.ts.map +1 -1
- package/dist/{transform-postprocess-phase-pmqxfq4q.js → transform-postprocess-phase-s84rdf32.js} +29 -29
- package/dist/v2/auto-search-worker.js +4 -4
- package/dist/v2/{compaction-marker-candidates-a15w3mqh.js → compaction-marker-candidates-1vqwr3s5.js} +2 -2
- package/dist/v2/compaction-marker-candidates-worker.js +1 -1
- package/dist/v2/{context-p1zfcw41.js → context-x60fa16g.js} +181 -83
- package/dist/v2/{derive-budgets-0rmpmxjw.js → derive-budgets-z25jw3py.js} +3 -3
- package/dist/v2/embedding-backfill-mbjyza2a.js +20 -0
- package/dist/v2/embedding-worker-process.js +1 -1
- package/dist/v2/embedding-worker.js +5 -5
- package/dist/v2/{history-owner-2cr9py37.js → history-owner-42e16w0n.js} +2 -2
- package/dist/v2/hooks/context.d.ts.map +1 -1
- package/dist/v2/hooks/dream-manual.d.ts.map +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts +1 -1
- package/dist/v2/hooks/dream-trigger.d.ts.map +1 -1
- package/dist/v2/hooks/transform-features.d.ts +1 -0
- package/dist/v2/hooks/transform-features.d.ts.map +1 -1
- package/dist/v2/{logger-te6e1j72.js → logger-7qt02bnb.js} +1 -1
- package/dist/v2/{message-index-cjhv92m2.js → message-index-5nayhm1r.js} +15 -15
- package/dist/v2/{message-index-bounded-7wcbp975.js → message-index-bounded-pgv1ndpb.js} +15 -15
- package/dist/v2/{message-time-backfill-rz1pnpaj.js → message-time-backfill-bsteyc4d.js} +2 -2
- package/dist/v2/migration-worker.js +10 -10
- package/dist/v2/{project-embedding-registry-g34gcf74.js → project-embedding-registry-jbmjc0p4.js} +10 -10
- package/dist/v2/raw-ordinal-warmup-worker.js +12 -7
- package/dist/v2/{read-session-chunk-8d3v87vr.js → read-session-chunk-hr3w5bjk.js} +10 -10
- package/dist/v2/{read-session-raw-h4azh85b.js → read-session-raw-b3tf6ra1.js} +6 -2
- package/dist/v2/recomp-orchestrator-8w3449eb.js +59 -0
- package/dist/v2/{safe-notification-target-936374xx.js → safe-notification-target-qg7n2s77.js} +2 -2
- package/dist/v2/{search-a1acjwf8.js → search-mhmxgq0e.js} +22 -22
- package/dist/v2/{send-session-notification-z5mcjdea.js → send-session-notification-jevgj9fe.js} +5 -5
- package/dist/v2/{server-npm52h2q.js → server-05xjtq6c.js} +1 -1
- package/dist/v2/{server-s6jqh8bj.js → server-0ppsweh6.js} +1 -1
- package/dist/v2/server-0s95v3en.js +49 -0
- package/dist/v2/{server-pbpp8r8h.js → server-25tg45b4.js} +9 -9
- package/dist/v2/{server-83d71zab.js → server-2x42esxd.js} +3 -3
- package/dist/v2/{server-5x7kmyz8.js → server-37ngj8qw.js} +10 -51
- package/dist/v2/{server-kn7skz9r.js → server-4c10404h.js} +3 -3
- package/dist/v2/{server-erfp0xb6.js → server-50mkkhy1.js} +10 -10
- package/dist/v2/{server-7fvmt15t.js → server-5gvkzzrf.js} +192 -49
- package/dist/v2/{server-7dv9wt9r.js → server-6pmqg9m4.js} +1 -1
- package/dist/v2/{server-h3wc20sv.js → server-83ygfha2.js} +4 -4
- package/dist/v2/{server-rxcq4t50.js → server-9ewkzqgd.js} +5 -5
- package/dist/v2/{server-kmapq3v0.js → server-bxpwy6fy.js} +18 -5
- package/dist/v2/{server-d6t16r89.js → server-d8tj10db.js} +1 -1
- package/dist/v2/{server-cxsr0ng6.js → server-da07v4xp.js} +1 -1
- package/dist/v2/{server-9e5r8y60.js → server-f2xf5gcb.js} +46 -2
- package/dist/v2/{server-hn9fb3v0.js → server-f7jfmrrz.js} +2 -2
- package/dist/v2/{server-f27he3j1.js → server-fa75w6gp.js} +4 -4
- package/dist/v2/{server-njnx39q2.js → server-gvkm8xaj.js} +189 -29
- package/dist/v2/{server-ckrb5rm8.js → server-h0410h0v.js} +1 -1
- package/dist/v2/{server-nveratm5.js → server-kn9n2qgd.js} +1 -1
- package/dist/v2/{server-wkhfyzpg.js → server-m97brnat.js} +9 -9
- package/dist/v2/{server-d3f4g62c.js → server-nmrm2rjy.js} +8 -8
- package/dist/v2/{server-bx59ezg6.js → server-prg55b7k.js} +16 -6
- package/dist/v2/{server-89fcbe37.js → server-pwv4ezb0.js} +1 -1
- package/dist/v2/{server-r5p3b1wy.js → server-qd11g795.js} +29 -1
- package/dist/v2/{server-988cqjme.js → server-rrqpvwqd.js} +2 -2
- package/dist/v2/{server-sg68np13.js → server-sz8jj92q.js} +140 -17
- package/dist/v2/{server-jc8v585p.js → server-th4y11y7.js} +15 -15
- package/dist/v2/{server-ewqshbs8.js → server-vknbt0gq.js} +5 -5
- package/dist/v2/{server-63ha7f0f.js → server-yrvqaswb.js} +1 -1
- package/dist/v2/{server-xqf2d2mg.js → server-zs8d0s3b.js} +2 -2
- package/dist/v2/server.d.ts.map +1 -1
- package/dist/v2/server.js +13 -6
- package/dist/v2/{storage-tags-c4zfcxv4.js → storage-tags-a2gq6dw7.js} +6 -4
- package/dist/v2/{task-config-x0hq3qfd.js → task-config-nvz8mapa.js} +6 -2
- package/dist/v2/{wrapup-orchestrator-87q9d5e2.js → wrapup-orchestrator-r82y780v.js} +30 -29
- package/dist/wrapup-orchestrator-vmt6z3q5.js +47 -0
- package/package.json +1 -1
- package/src/agents/smart-notes-dreamer-gate.fixture.ts +171 -0
- package/src/agents/smart-notes-dreamer-gate.golden.json +245 -0
- package/src/agents/smart-notes-dreamer-gate.test.ts +161 -0
- package/src/config/agent-disable.ts +13 -0
- package/src/config/dependency-notes.test.ts +114 -0
- package/src/config/dependency-notes.ts +80 -0
- package/src/config/schema/magic-context.ts +23 -14
- package/src/features/magic-context/dreamer/task-registry.ts +40 -0
- package/src/shared/data-path.test.ts +35 -1
- package/src/shared/data-path.ts +57 -1
- package/dist/embedding-backfill-fjbfh1dt.js +0 -21
- package/dist/v2/embedding-backfill-xcw3t6hp.js +0 -20
- package/dist/v2/recomp-orchestrator-n0pq36f0.js +0 -59
- package/dist/wrapup-orchestrator-jqapepw0.js +0 -47
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
{
|
|
2
|
+
"note": "Per seeded case of smart-notes-dreamer-gate.fixture.ts: digests (first 16 hex of SHA-256) of ctx_note and of every other ctx_* tool, rendered by the code from before ctx_note followed the dreamer gate. Regenerate only from that earlier code.",
|
|
3
|
+
"cases": [
|
|
4
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
5
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
6
|
+
{"oc1":{"note":"203313946dd10c99","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
7
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
8
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
9
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
10
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
11
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
12
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
13
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
14
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
15
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
16
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
17
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
18
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
19
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
20
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
21
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
22
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
23
|
+
{"oc1":{"note":"203313946dd10c99","other":"a03294137096fb5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
24
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
25
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
26
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
27
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
28
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
29
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
30
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
31
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
32
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
33
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
34
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
35
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
36
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
37
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
38
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
39
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
40
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
41
|
+
{"oc1":{"note":"203313946dd10c99","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
42
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
43
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
44
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
45
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
46
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
47
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
48
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
49
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
50
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
51
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
52
|
+
{"oc1":{"note":"203313946dd10c99","other":"a03294137096fb5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
53
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
54
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
55
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
56
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
57
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
58
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
59
|
+
{"oc1":{"note":"203313946dd10c99","other":"a03294137096fb5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
60
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
61
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
62
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
63
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
64
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
65
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
66
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
67
|
+
{"oc1":{"note":"203313946dd10c99","other":"a03294137096fb5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
68
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
69
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
70
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
71
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
72
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
73
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
74
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
75
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
76
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
77
|
+
{"oc1":{"note":"5e328e39778cb567","other":"a03294137096fb5a"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
78
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
79
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
80
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
81
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
82
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
83
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
84
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
85
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
86
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
87
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
88
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
89
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
90
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
91
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
92
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
93
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
94
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
95
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
96
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
97
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
98
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
99
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
100
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
101
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
102
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
103
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
104
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
105
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
106
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
107
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
108
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
109
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
110
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
111
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
112
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
113
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
114
|
+
{"oc1":{"note":"203313946dd10c99","other":"a03294137096fb5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
115
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
116
|
+
{"oc1":{"note":"203313946dd10c99","other":"5634c05b91b62b5f"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
117
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
118
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
119
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
120
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
121
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
122
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
123
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
124
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
125
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
126
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
127
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
128
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
129
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
130
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
131
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
132
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
133
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
134
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
135
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
136
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
137
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
138
|
+
{"oc1":{"note":"203313946dd10c99","other":"5634c05b91b62b5f"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
139
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
140
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
141
|
+
{"oc1":{"note":"203313946dd10c99","other":"5634c05b91b62b5f"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
142
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
143
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
144
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
145
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
146
|
+
{"oc1":{"note":"203313946dd10c99","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
147
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
148
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
149
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
150
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
151
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
152
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
153
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
154
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
155
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
156
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
157
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
158
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
159
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
160
|
+
{"oc1":{"note":"203313946dd10c99","other":"5634c05b91b62b5f"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
161
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
162
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
163
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
164
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
165
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
166
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
167
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
168
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
169
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
170
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
171
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
172
|
+
{"oc1":{"note":"5e328e39778cb567","other":"a03294137096fb5a"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
173
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
174
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
175
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
176
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
177
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
178
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
179
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"77ba47811631afc8","other":"e475a147d5c29f4d"}},
|
|
180
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
181
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
182
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
183
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
184
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
185
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
186
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
187
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
188
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
189
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
190
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
191
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
192
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
193
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
194
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
195
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
196
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
197
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
198
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
199
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
200
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
201
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
202
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
203
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"844d6d24749bf667","other":"e95d30c58af0084f"}},
|
|
204
|
+
{"oc1":{"note":"5e328e39778cb567","other":"4fd4397501ea6f9b"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
205
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
206
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
207
|
+
{"oc1":{"note":"5e328e39778cb567","other":"5634c05b91b62b5f"},"oc2":{"note":"77ba47811631afc8","other":"e475a147d5c29f4d"}},
|
|
208
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
209
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
210
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
211
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
212
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"3e5523e090d8d67e"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"e475a147d5c29f4d"}},
|
|
213
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
214
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
215
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
216
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
217
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
218
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
219
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"3e5523e090d8d67e"},"oc2":{"note":"bd5eca31e5312ff6","other":"e95d30c58af0084f"}},
|
|
220
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}},
|
|
221
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
222
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
223
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
224
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
225
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
226
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
227
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"fd65e917c148392b"},"oc2":{"note":"bd5eca31e5312ff6","other":"aaeea4da23ab4c69"}},
|
|
228
|
+
{"oc1":{"note":"5e328e39778cb567","other":"6bb6d0403c9bdf5a"},"oc2":{"note":"77ba47811631afc8","other":"82adb7331bdbbbe0"}},
|
|
229
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
230
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"844d6d24749bf667","other":"7cd7d7dbc3b3292d"}},
|
|
231
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"844d6d24749bf667","other":"aaeea4da23ab4c69"}},
|
|
232
|
+
{"oc1":{"note":"5e328e39778cb567","other":"a03294137096fb5a"},"oc2":{"note":"77ba47811631afc8","other":"14c2726b01a927b0"}},
|
|
233
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
234
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"77ba47811631afc8","other":"d4d4a55dab6eab78"}},
|
|
235
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
236
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"14c2726b01a927b0"}},
|
|
237
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
238
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
239
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"54dbfd87d2797687"},"oc2":{"note":"844d6d24749bf667","other":"b60b476d6098598b"}},
|
|
240
|
+
{"oc1":{"note":"ee8313665a36e94b","other":"fd65e917c148392b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"82adb7331bdbbbe0"}},
|
|
241
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"c7a7ada4a5a7bc10"},"oc2":{"note":"bd5eca31e5312ff6","other":"7cd7d7dbc3b3292d"}},
|
|
242
|
+
{"oc1":{"note":"203313946dd10c99","other":"4fd4397501ea6f9b"},"oc2":{"note":"7a2fdfdf6129e4fb","other":"d4d4a55dab6eab78"}},
|
|
243
|
+
{"oc1":{"note":"bcd91a4a67d0c462","other":"54dbfd87d2797687"},"oc2":{"note":"bd5eca31e5312ff6","other":"b60b476d6098598b"}}
|
|
244
|
+
]
|
|
245
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { afterAll, beforeAll, expect, test } from "bun:test";
|
|
2
|
+
import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { tmpdir } from "node:os";
|
|
4
|
+
import { join } from "node:path";
|
|
5
|
+
import { loadPluginConfigDetailed, parsePluginConfig } from "../config";
|
|
6
|
+
import { isDreamerRunnable, isSmartNoteSurfaceAvailable } from "../config/agent-disable";
|
|
7
|
+
import { pluginConfigReader } from "../config/live-run-config";
|
|
8
|
+
import { closeDatabase, openDatabase } from "../features/magic-context/storage";
|
|
9
|
+
import type { Database } from "../shared/sqlite";
|
|
10
|
+
import { createTestTempDirFromPath } from "../shared/test-temp-dir";
|
|
11
|
+
import {
|
|
12
|
+
GATE_CASE_COUNT,
|
|
13
|
+
gateCases,
|
|
14
|
+
renderToolSurfaces,
|
|
15
|
+
type ToolSurfaceDigests,
|
|
16
|
+
} from "./smart-notes-dreamer-gate.fixture";
|
|
17
|
+
import golden from "./smart-notes-dreamer-gate.golden.json";
|
|
18
|
+
|
|
19
|
+
// Smart notes are evaluated by the dreamer, so ctx_note drops its smart-note
|
|
20
|
+
// argument and text when the dreamer is not runnable, as it already did for
|
|
21
|
+
// smart_notes.enabled=false. The golden holds the tool bytes from before that
|
|
22
|
+
// gate; every config with a runnable dreamer must still render them exactly.
|
|
23
|
+
|
|
24
|
+
const SMART_NOTE_TEXT = /surface_condition|smart.note|outside checker/i;
|
|
25
|
+
const oldXdg = process.env.XDG_DATA_HOME;
|
|
26
|
+
let dir: string;
|
|
27
|
+
let db: Database;
|
|
28
|
+
|
|
29
|
+
beforeAll(() => {
|
|
30
|
+
dir = createTestTempDirFromPath(join(tmpdir(), "smart-notes-dreamer-gate-"));
|
|
31
|
+
process.env.XDG_DATA_HOME = dir;
|
|
32
|
+
db = openDatabase();
|
|
33
|
+
});
|
|
34
|
+
afterAll(() => {
|
|
35
|
+
closeDatabase();
|
|
36
|
+
if (oldXdg === undefined) delete process.env.XDG_DATA_HOME;
|
|
37
|
+
else process.env.XDG_DATA_HOME = oldXdg;
|
|
38
|
+
rmSync(dir, { recursive: true, force: true });
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const render = (raw: Record<string, unknown>): Promise<ToolSurfaceDigests> => {
|
|
42
|
+
const config = parsePluginConfig(raw);
|
|
43
|
+
// The value context.ts passes to the OpenCode 2 per-request rewrite.
|
|
44
|
+
return renderToolSurfaces({
|
|
45
|
+
config,
|
|
46
|
+
directory: dir,
|
|
47
|
+
db,
|
|
48
|
+
oc2SmartNotes: isSmartNoteSurfaceAvailable(config),
|
|
49
|
+
});
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
test("ctx_* tool bytes match the pre-gate golden for every config with a runnable dreamer, and only ctx_note changes when the dreamer is off", async () => {
|
|
53
|
+
const cases = gateCases();
|
|
54
|
+
const expected = (golden as { cases: Array<Omit<ToolSurfaceDigests, "text">> }).cases;
|
|
55
|
+
expect(cases).toHaveLength(GATE_CASE_COUNT);
|
|
56
|
+
expect(expected).toHaveLength(GATE_CASE_COUNT);
|
|
57
|
+
|
|
58
|
+
let runnable = 0;
|
|
59
|
+
let gatedChanged = 0;
|
|
60
|
+
let gatedAlreadyOff = 0;
|
|
61
|
+
for (const [index, raw] of cases.entries()) {
|
|
62
|
+
const config = parsePluginConfig(raw);
|
|
63
|
+
const got = await render(raw);
|
|
64
|
+
const before = expected[index];
|
|
65
|
+
if (!before) throw new Error(`golden has no case ${index}`);
|
|
66
|
+
const label = `case ${index} ${JSON.stringify(raw)}`;
|
|
67
|
+
if (isDreamerRunnable(config)) {
|
|
68
|
+
runnable++;
|
|
69
|
+
expect({ label, oc1: got.oc1, oc2: got.oc2 }).toEqual({
|
|
70
|
+
label,
|
|
71
|
+
oc1: before.oc1,
|
|
72
|
+
oc2: before.oc2,
|
|
73
|
+
});
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
// Dreamer off: every other tool is untouched...
|
|
77
|
+
expect({ label, oc1: got.oc1.other, oc2: got.oc2.other }).toEqual({
|
|
78
|
+
label,
|
|
79
|
+
oc1: before.oc1.other,
|
|
80
|
+
oc2: before.oc2.other,
|
|
81
|
+
});
|
|
82
|
+
// ...and ctx_note is exactly the smart-notes-off surface of the same config.
|
|
83
|
+
const off = await render({ ...raw, smart_notes: { enabled: false } });
|
|
84
|
+
expect({ label, oc1: got.oc1.note, oc2: got.oc2.note }).toEqual({
|
|
85
|
+
label,
|
|
86
|
+
oc1: off.oc1.note,
|
|
87
|
+
oc2: off.oc2.note,
|
|
88
|
+
});
|
|
89
|
+
const ctxNote = (text: string) =>
|
|
90
|
+
JSON.stringify((JSON.parse(text) as Record<string, unknown>).ctx_note);
|
|
91
|
+
expect(ctxNote(got.text.oc1)).not.toMatch(SMART_NOTE_TEXT);
|
|
92
|
+
expect(ctxNote(got.text.oc2)).not.toMatch(SMART_NOTE_TEXT);
|
|
93
|
+
if (config.smart_notes.enabled === false) {
|
|
94
|
+
gatedAlreadyOff++;
|
|
95
|
+
expect(got.oc1.note).toBe(before.oc1.note);
|
|
96
|
+
expect(got.oc2.note).toBe(before.oc2.note);
|
|
97
|
+
} else {
|
|
98
|
+
gatedChanged++;
|
|
99
|
+
expect(got.oc1.note).not.toBe(before.oc1.note);
|
|
100
|
+
expect(got.oc2.note).not.toBe(before.oc2.note);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Keep the differential meaningful: both sides must be well populated.
|
|
104
|
+
expect(runnable).toBeGreaterThanOrEqual(100);
|
|
105
|
+
expect(gatedChanged).toBeGreaterThanOrEqual(40);
|
|
106
|
+
expect(gatedAlreadyOff).toBeGreaterThanOrEqual(20);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
test("the OpenCode 2 per-request rewrite receives the dreamer-aware smart-note flag", () => {
|
|
110
|
+
// The differential above passes this flag itself, so pin the production call.
|
|
111
|
+
const source = readFileSync(join(import.meta.dir, "../v2/hooks/context.ts"), "utf8");
|
|
112
|
+
expect(source).toMatch(
|
|
113
|
+
/applyV2PromptSurfaceTools\(\s*draft,\s*promptSurfaceRuntime,\s*config\.prompt_surface,[^)]*isSmartNoteSurfaceAvailable\(config\),\s*\)/,
|
|
114
|
+
);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
test("a live dreamer toggle never changes the tool bytes registered for this process", async () => {
|
|
118
|
+
const previousHome = process.env.HOME;
|
|
119
|
+
const previousConfigHome = process.env.XDG_CONFIG_HOME;
|
|
120
|
+
try {
|
|
121
|
+
for (const [bootDreamer, liveDreamer] of [
|
|
122
|
+
[{}, { disable: true }],
|
|
123
|
+
[{ disable: true }, { disable: false }],
|
|
124
|
+
] as const) {
|
|
125
|
+
const root = createTestTempDirFromPath(join(dir, "live-"));
|
|
126
|
+
process.env.HOME = root;
|
|
127
|
+
process.env.XDG_CONFIG_HOME = join(root, "config");
|
|
128
|
+
const directory = join(root, "project");
|
|
129
|
+
const configPath = join(root, "config", "cortexkit", "magic-context.jsonc");
|
|
130
|
+
mkdirSync(directory, { recursive: true });
|
|
131
|
+
mkdirSync(join(root, "config", "cortexkit"), { recursive: true });
|
|
132
|
+
writeFileSync(configPath, JSON.stringify({ dreamer: bootDreamer }));
|
|
133
|
+
const boot = loadPluginConfigDetailed(directory, false).config;
|
|
134
|
+
const bootAvailable = isSmartNoteSurfaceAvailable(boot);
|
|
135
|
+
// Registration reads the boot config once, as the hosts do.
|
|
136
|
+
const registered = () =>
|
|
137
|
+
renderToolSurfaces({
|
|
138
|
+
config: boot,
|
|
139
|
+
directory,
|
|
140
|
+
db,
|
|
141
|
+
oc2SmartNotes: isSmartNoteSurfaceAvailable(boot),
|
|
142
|
+
});
|
|
143
|
+
const before = await registered();
|
|
144
|
+
|
|
145
|
+
const reader = pluginConfigReader(directory, boot);
|
|
146
|
+
writeFileSync(configPath, JSON.stringify({ dreamer: liveDreamer }));
|
|
147
|
+
const effective = reader.poll().effective;
|
|
148
|
+
// The live view did flip, so the comparison below is not vacuous...
|
|
149
|
+
expect(isSmartNoteSurfaceAvailable(effective)).toBe(!bootAvailable);
|
|
150
|
+
// ...while the boot config the tools were built from is untouched.
|
|
151
|
+
expect(isSmartNoteSurfaceAvailable(boot)).toBe(bootAvailable);
|
|
152
|
+
const after = await registered();
|
|
153
|
+
expect(after.text).toEqual(before.text);
|
|
154
|
+
}
|
|
155
|
+
} finally {
|
|
156
|
+
if (previousHome === undefined) delete process.env.HOME;
|
|
157
|
+
else process.env.HOME = previousHome;
|
|
158
|
+
if (previousConfigHome === undefined) delete process.env.XDG_CONFIG_HOME;
|
|
159
|
+
else process.env.XDG_CONFIG_HOME = previousConfigHome;
|
|
160
|
+
}
|
|
161
|
+
});
|
|
@@ -12,6 +12,19 @@ export function isDreamerRunnable(config: { dreamer?: { disable?: boolean } | nu
|
|
|
12
12
|
return !!config.dreamer && config.dreamer.disable !== true;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
+
/**
|
|
16
|
+
* Whether smart notes can work at all: `smart_notes.enabled` is not false AND
|
|
17
|
+
* the dreamer, which evaluates every smart-note condition, is runnable. A smart
|
|
18
|
+
* note written without a runnable dreamer would stay parked forever, so the
|
|
19
|
+
* ctx_note tool definition advertises `surface_condition` only when this holds.
|
|
20
|
+
*/
|
|
21
|
+
export function isSmartNoteSurfaceAvailable(config: {
|
|
22
|
+
dreamer?: { disable?: boolean } | null;
|
|
23
|
+
smart_notes?: { enabled?: boolean } | null;
|
|
24
|
+
}): boolean {
|
|
25
|
+
return config.smart_notes?.enabled !== false && isDreamerRunnable(config);
|
|
26
|
+
}
|
|
27
|
+
|
|
15
28
|
export function isHistorianRunnable(config: { historian?: { disable?: boolean } | null }): boolean {
|
|
16
29
|
return config.historian?.disable !== true;
|
|
17
30
|
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { afterEach, expect, test } from "bun:test";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { parsePluginConfig } from ".";
|
|
5
|
+
import {
|
|
6
|
+
configDependencyNotes,
|
|
7
|
+
logConfigDependencyNotesOnce,
|
|
8
|
+
resetConfigDependencyNotesForTest,
|
|
9
|
+
} from "./dependency-notes";
|
|
10
|
+
|
|
11
|
+
afterEach(() => resetConfigDependencyNotesForTest());
|
|
12
|
+
|
|
13
|
+
const notesFor = (raw: Record<string, unknown>) => configDependencyNotes(parsePluginConfig(raw));
|
|
14
|
+
|
|
15
|
+
test("a default or fully enabled config produces no dependency notes", () => {
|
|
16
|
+
expect(notesFor({})).toEqual([]);
|
|
17
|
+
expect(notesFor({ dreamer: {} })).toEqual([]);
|
|
18
|
+
expect(notesFor({ dreamer: {}, memory: { enabled: true } })).toEqual([]);
|
|
19
|
+
// Memory off without a runnable dreamer has no dreamer schedule to lose.
|
|
20
|
+
expect(notesFor({ memory: { enabled: false } })).toEqual([]);
|
|
21
|
+
expect(
|
|
22
|
+
notesFor({
|
|
23
|
+
dreamer: { disable: true },
|
|
24
|
+
smart_notes: { enabled: false },
|
|
25
|
+
memory: { enabled: false },
|
|
26
|
+
}),
|
|
27
|
+
).toHaveLength(1);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("memory off with a runnable dreamer names the dreamer schedule it stops", () => {
|
|
31
|
+
const notes = notesFor({ dreamer: {}, memory: { enabled: false } });
|
|
32
|
+
expect(notes).toHaveLength(1);
|
|
33
|
+
expect(notes[0]).toBe(
|
|
34
|
+
"memory.enabled is false, so these scheduled dreamer tasks do not run for this project, on schedule or through /ctx-dream: map-memories, verify, verify-broad, curate, compress-cues, classify-memories, retrospective, promote-primers, refresh-primers. maintain-docs, evaluate-smart-notes and review-user-memories still run.",
|
|
35
|
+
);
|
|
36
|
+
// Every task unscheduled: nothing is lost, so nothing is reported.
|
|
37
|
+
const tasks = Object.fromEntries(
|
|
38
|
+
[
|
|
39
|
+
"map-memories",
|
|
40
|
+
"verify",
|
|
41
|
+
"verify-broad",
|
|
42
|
+
"curate",
|
|
43
|
+
"compress-cues",
|
|
44
|
+
"classify-memories",
|
|
45
|
+
"retrospective",
|
|
46
|
+
"maintain-docs",
|
|
47
|
+
"evaluate-smart-notes",
|
|
48
|
+
"review-user-memories",
|
|
49
|
+
"promote-primers",
|
|
50
|
+
"refresh-primers",
|
|
51
|
+
].map((task) => [task, { schedule: "" }]),
|
|
52
|
+
);
|
|
53
|
+
expect(notesFor({ dreamer: { tasks }, memory: { enabled: false } })).toEqual([]);
|
|
54
|
+
// Only tasks that do not need project memory scheduled: nothing is lost either.
|
|
55
|
+
const nonMemory = {
|
|
56
|
+
...tasks,
|
|
57
|
+
"maintain-docs": { schedule: "0 1 * * *" },
|
|
58
|
+
"evaluate-smart-notes": { schedule: "0 3 * * *" },
|
|
59
|
+
"review-user-memories": { schedule: "0 3 * * *" },
|
|
60
|
+
};
|
|
61
|
+
expect(notesFor({ dreamer: { tasks: nonMemory }, memory: { enabled: false } })).toEqual([]);
|
|
62
|
+
// One memory task scheduled: the note names just that one.
|
|
63
|
+
expect(
|
|
64
|
+
notesFor({
|
|
65
|
+
dreamer: { tasks: { ...tasks, curate: { schedule: "0 4 * * 0" } } },
|
|
66
|
+
memory: { enabled: false },
|
|
67
|
+
}),
|
|
68
|
+
).toEqual([
|
|
69
|
+
"memory.enabled is false, so these scheduled dreamer tasks do not run for this project, on schedule or through /ctx-dream: curate. maintain-docs, evaluate-smart-notes and review-user-memories still run.",
|
|
70
|
+
]);
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
test("a disabled dreamer reports smart notes and the user-memory review schedule", () => {
|
|
74
|
+
const notes = notesFor({ dreamer: { disable: true } });
|
|
75
|
+
expect(notes).toEqual([
|
|
76
|
+
expect.stringContaining("smart_notes.enabled has no effect") as unknown as string,
|
|
77
|
+
expect.stringContaining(
|
|
78
|
+
"dreamer.tasks.review-user-memories.schedule has no effect",
|
|
79
|
+
) as unknown as string,
|
|
80
|
+
]);
|
|
81
|
+
expect(notesFor({ dreamer: { disable: true }, smart_notes: { enabled: false } })).toHaveLength(
|
|
82
|
+
1,
|
|
83
|
+
);
|
|
84
|
+
expect(
|
|
85
|
+
notesFor({
|
|
86
|
+
dreamer: { disable: true, tasks: { "review-user-memories": { schedule: "" } } },
|
|
87
|
+
smart_notes: { enabled: false },
|
|
88
|
+
}),
|
|
89
|
+
).toEqual([]);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
test("each note is logged once per process", () => {
|
|
93
|
+
const lines: string[] = [];
|
|
94
|
+
const config = parsePluginConfig({ dreamer: { disable: true } });
|
|
95
|
+
expect(logConfigDependencyNotesOnce(config, (line) => lines.push(line))).toHaveLength(2);
|
|
96
|
+
expect(logConfigDependencyNotesOnce(config, (line) => lines.push(line))).toEqual([]);
|
|
97
|
+
expect(lines).toHaveLength(2);
|
|
98
|
+
expect(lines.every((line) => line.startsWith("[magic-context] config note: "))).toBe(true);
|
|
99
|
+
// A second plugin instance with a different config still reports its own notes.
|
|
100
|
+
const memoryOff = parsePluginConfig({ dreamer: {}, memory: { enabled: false } });
|
|
101
|
+
expect(logConfigDependencyNotesOnce(memoryOff, (line) => lines.push(line))).toHaveLength(1);
|
|
102
|
+
expect(lines).toHaveLength(3);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
test("every host logs the dependency notes at startup", () => {
|
|
106
|
+
const src = join(import.meta.dir, "..");
|
|
107
|
+
for (const [file, call] of [
|
|
108
|
+
["index.ts", "logConfigDependencyNotesOnce(pluginConfig, log);"],
|
|
109
|
+
["v2/hooks/context.ts", "logConfigDependencyNotesOnce(config, log);"],
|
|
110
|
+
["../../pi-plugin/src/index.ts", "logConfigDependencyNotesOnce(config, log);"],
|
|
111
|
+
] as const) {
|
|
112
|
+
expect(readFileSync(join(src, file), "utf8")).toContain(call);
|
|
113
|
+
}
|
|
114
|
+
});
|