@dzhechkov/harness-core 0.8.42 → 0.8.44
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/.dz-manifest.json +86 -26
- package/README.md +119 -1
- package/dist/architecture.d.ts.map +1 -1
- package/dist/architecture.js +0 -0
- package/dist/architecture.js.map +1 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/memory-index-check.d.ts +26 -0
- package/dist/memory-index-check.d.ts.map +1 -0
- package/dist/memory-index-check.js +88 -0
- package/dist/memory-index-check.js.map +1 -0
- package/dist/pack-artifact.d.ts +24 -0
- package/dist/pack-artifact.d.ts.map +1 -0
- package/dist/pack-artifact.js +99 -0
- package/dist/pack-artifact.js.map +1 -0
- package/dist/profile.d.ts.map +1 -1
- package/dist/profile.js +6 -0
- package/dist/profile.js.map +1 -1
- package/dist/publish-sibling-drift.d.ts +6 -2
- package/dist/publish-sibling-drift.d.ts.map +1 -1
- package/dist/publish-sibling-drift.js +10 -1
- package/dist/publish-sibling-drift.js.map +1 -1
- package/dist/publish.d.ts +1 -2
- package/dist/publish.d.ts.map +1 -1
- package/dist/publish.js +9 -53
- package/dist/publish.js.map +1 -1
- package/dist/text-mangling.d.ts +10 -0
- package/dist/text-mangling.d.ts.map +1 -0
- package/dist/text-mangling.js +23 -0
- package/dist/text-mangling.js.map +1 -0
- package/package.json +12 -12
- package/sbom.json +175 -25
- package/src/architecture.ts +0 -0
- package/src/index.ts +12 -1
- package/src/memory-index-check.ts +93 -0
- package/src/pack-artifact.ts +109 -0
- package/src/profile.ts +5 -0
- package/src/publish-sibling-drift.ts +16 -3
- package/src/publish.ts +9 -50
- package/src/text-mangling.ts +29 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-mangling.js","sourceRoot":"","sources":["../src/text-mangling.ts"],"names":[],"mappings":"AASA,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAgB;IAC9D,qFAAqF;IACrF,MAAM,QAAQ,GAAoB,EAAE,CAAC;IACrC,MAAM,GAAG,GAAG,CAAC,IAA2B,EAAE,EAAU,EAAQ,EAAE;QAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,2CAA2C,CAAC;IAC1D,MAAM,MAAM,GAAG,qCAAqC,CAAC;IACrD,MAAM,QAAQ,GAAG,4CAA4C,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACtF,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,GAAG,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAChF,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAClF,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC9C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dzhechkov/harness-core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.44",
|
|
4
4
|
"description": "Shared harness logic - skill loading, additive apply, and the init/sync/verify/doctor operations.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,17 +38,17 @@
|
|
|
38
38
|
"lint": "tsc -p tsconfig.json --noEmit"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@dzhechkov/adapter-agents-md": "^0.1.
|
|
42
|
-
"@dzhechkov/adapter-claude": "^0.2.
|
|
43
|
-
"@dzhechkov/adapter-codex": "^0.2.
|
|
44
|
-
"@dzhechkov/adapter-copilot": "^0.1.
|
|
45
|
-
"@dzhechkov/adapter-cursor": "^0.1.
|
|
46
|
-
"@dzhechkov/adapter-gemini": "^0.1.
|
|
47
|
-
"@dzhechkov/adapter-hermes": "^0.2.
|
|
48
|
-
"@dzhechkov/adapter-openclaude": "^0.1.
|
|
49
|
-
"@dzhechkov/adapter-opencode": "^0.2.
|
|
50
|
-
"@dzhechkov/adapter-windsurf": "^0.1.
|
|
51
|
-
"@dzhechkov/core": "^0.2.
|
|
41
|
+
"@dzhechkov/adapter-agents-md": "^0.1.9",
|
|
42
|
+
"@dzhechkov/adapter-claude": "^0.2.9",
|
|
43
|
+
"@dzhechkov/adapter-codex": "^0.2.8",
|
|
44
|
+
"@dzhechkov/adapter-copilot": "^0.1.9",
|
|
45
|
+
"@dzhechkov/adapter-cursor": "^0.1.9",
|
|
46
|
+
"@dzhechkov/adapter-gemini": "^0.1.9",
|
|
47
|
+
"@dzhechkov/adapter-hermes": "^0.2.8",
|
|
48
|
+
"@dzhechkov/adapter-openclaude": "^0.1.8",
|
|
49
|
+
"@dzhechkov/adapter-opencode": "^0.2.8",
|
|
50
|
+
"@dzhechkov/adapter-windsurf": "^0.1.9",
|
|
51
|
+
"@dzhechkov/core": "^0.2.27",
|
|
52
52
|
"@dzhechkov/memory": "^0.2.23",
|
|
53
53
|
"proper-lockfile": "^4.1.2",
|
|
54
54
|
"yaml": "^2.0.0"
|
package/sbom.json
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"hashes": [
|
|
26
26
|
{
|
|
27
27
|
"alg": "SHA-256",
|
|
28
|
-
"content": "
|
|
28
|
+
"content": "f80660a868b436e0ae7b3a23d5b104a8e882bf9f9fc7bfc22f7c0023ec76f2d6"
|
|
29
29
|
}
|
|
30
30
|
]
|
|
31
31
|
},
|
|
@@ -405,7 +405,7 @@
|
|
|
405
405
|
"hashes": [
|
|
406
406
|
{
|
|
407
407
|
"alg": "SHA-256",
|
|
408
|
-
"content": "
|
|
408
|
+
"content": "c6dcbe1c8ddb221aace37ef1518afc357b2b541a440619265d435d6c4b24cc54"
|
|
409
409
|
}
|
|
410
410
|
]
|
|
411
411
|
},
|
|
@@ -415,7 +415,7 @@
|
|
|
415
415
|
"hashes": [
|
|
416
416
|
{
|
|
417
417
|
"alg": "SHA-256",
|
|
418
|
-
"content": "
|
|
418
|
+
"content": "c93a224929b4b864f60c0812f526acf7d07a9f4e138aae576687cadafc90f4b5"
|
|
419
419
|
}
|
|
420
420
|
]
|
|
421
421
|
},
|
|
@@ -425,7 +425,7 @@
|
|
|
425
425
|
"hashes": [
|
|
426
426
|
{
|
|
427
427
|
"alg": "SHA-256",
|
|
428
|
-
"content": "
|
|
428
|
+
"content": "a9a6486b8e1de9c1d05a37b391bcb54cb5a257f671ceb5ebe4b7e366a9631ea2"
|
|
429
429
|
}
|
|
430
430
|
]
|
|
431
431
|
},
|
|
@@ -2915,7 +2915,7 @@
|
|
|
2915
2915
|
"hashes": [
|
|
2916
2916
|
{
|
|
2917
2917
|
"alg": "SHA-256",
|
|
2918
|
-
"content": "
|
|
2918
|
+
"content": "c18f5b65c615b023a3c3f576b2619692bf9a2862f44ba8acb06b5a4e025077e0"
|
|
2919
2919
|
}
|
|
2920
2920
|
]
|
|
2921
2921
|
},
|
|
@@ -2925,7 +2925,7 @@
|
|
|
2925
2925
|
"hashes": [
|
|
2926
2926
|
{
|
|
2927
2927
|
"alg": "SHA-256",
|
|
2928
|
-
"content": "
|
|
2928
|
+
"content": "ddd45dd0f6cdd8c83fe98a3a78ccfb85da04b2c9df1e52973a65f2526900d418"
|
|
2929
2929
|
}
|
|
2930
2930
|
]
|
|
2931
2931
|
},
|
|
@@ -2935,7 +2935,7 @@
|
|
|
2935
2935
|
"hashes": [
|
|
2936
2936
|
{
|
|
2937
2937
|
"alg": "SHA-256",
|
|
2938
|
-
"content": "
|
|
2938
|
+
"content": "1ff621602e84ea254c7c865fd8420ced42570345c8e099ee098e5d25f5c5a9db"
|
|
2939
2939
|
}
|
|
2940
2940
|
]
|
|
2941
2941
|
},
|
|
@@ -2945,7 +2945,7 @@
|
|
|
2945
2945
|
"hashes": [
|
|
2946
2946
|
{
|
|
2947
2947
|
"alg": "SHA-256",
|
|
2948
|
-
"content": "
|
|
2948
|
+
"content": "a7879e54955ef542d3cda7884d3eac9a362f3f2c2b1dbc8d03f190e479df47c3"
|
|
2949
2949
|
}
|
|
2950
2950
|
]
|
|
2951
2951
|
},
|
|
@@ -3829,6 +3829,46 @@
|
|
|
3829
3829
|
}
|
|
3830
3830
|
]
|
|
3831
3831
|
},
|
|
3832
|
+
{
|
|
3833
|
+
"type": "file",
|
|
3834
|
+
"name": "dist/memory-index-check.d.ts",
|
|
3835
|
+
"hashes": [
|
|
3836
|
+
{
|
|
3837
|
+
"alg": "SHA-256",
|
|
3838
|
+
"content": "8dc2b00ea8ab550a29d0f5612c3b643724948a1f9ebb3e2c1258d6601836c66f"
|
|
3839
|
+
}
|
|
3840
|
+
]
|
|
3841
|
+
},
|
|
3842
|
+
{
|
|
3843
|
+
"type": "file",
|
|
3844
|
+
"name": "dist/memory-index-check.d.ts.map",
|
|
3845
|
+
"hashes": [
|
|
3846
|
+
{
|
|
3847
|
+
"alg": "SHA-256",
|
|
3848
|
+
"content": "788ec70ba0443c3d3f8e1599548f54013d4d6ae864ccac1b3406d84d55e443df"
|
|
3849
|
+
}
|
|
3850
|
+
]
|
|
3851
|
+
},
|
|
3852
|
+
{
|
|
3853
|
+
"type": "file",
|
|
3854
|
+
"name": "dist/memory-index-check.js",
|
|
3855
|
+
"hashes": [
|
|
3856
|
+
{
|
|
3857
|
+
"alg": "SHA-256",
|
|
3858
|
+
"content": "43ba71733350f5f91ea98ed3b94baa61fe3b454543d687524e51d8cb135d7022"
|
|
3859
|
+
}
|
|
3860
|
+
]
|
|
3861
|
+
},
|
|
3862
|
+
{
|
|
3863
|
+
"type": "file",
|
|
3864
|
+
"name": "dist/memory-index-check.js.map",
|
|
3865
|
+
"hashes": [
|
|
3866
|
+
{
|
|
3867
|
+
"alg": "SHA-256",
|
|
3868
|
+
"content": "66f08674ced70cfcd60bdf14fd3dded0052535b608edb31a5be165dc10ccc777"
|
|
3869
|
+
}
|
|
3870
|
+
]
|
|
3871
|
+
},
|
|
3832
3872
|
{
|
|
3833
3873
|
"type": "file",
|
|
3834
3874
|
"name": "dist/model-recommender.d.ts",
|
|
@@ -4109,6 +4149,46 @@
|
|
|
4109
4149
|
}
|
|
4110
4150
|
]
|
|
4111
4151
|
},
|
|
4152
|
+
{
|
|
4153
|
+
"type": "file",
|
|
4154
|
+
"name": "dist/pack-artifact.d.ts",
|
|
4155
|
+
"hashes": [
|
|
4156
|
+
{
|
|
4157
|
+
"alg": "SHA-256",
|
|
4158
|
+
"content": "ac53c92fe8be66aa73580b13e273321e229eeb9c2f7c3ce82acd4d0cebcfaae4"
|
|
4159
|
+
}
|
|
4160
|
+
]
|
|
4161
|
+
},
|
|
4162
|
+
{
|
|
4163
|
+
"type": "file",
|
|
4164
|
+
"name": "dist/pack-artifact.d.ts.map",
|
|
4165
|
+
"hashes": [
|
|
4166
|
+
{
|
|
4167
|
+
"alg": "SHA-256",
|
|
4168
|
+
"content": "fc5ec05405710ec6cb543121d9c6f14ba9c5c11e5edc918e15622c9efc24bfe8"
|
|
4169
|
+
}
|
|
4170
|
+
]
|
|
4171
|
+
},
|
|
4172
|
+
{
|
|
4173
|
+
"type": "file",
|
|
4174
|
+
"name": "dist/pack-artifact.js",
|
|
4175
|
+
"hashes": [
|
|
4176
|
+
{
|
|
4177
|
+
"alg": "SHA-256",
|
|
4178
|
+
"content": "6ad53e00466d96653f88ab0ec69f9a2d63552023bf5b851ce37918f44466ba8f"
|
|
4179
|
+
}
|
|
4180
|
+
]
|
|
4181
|
+
},
|
|
4182
|
+
{
|
|
4183
|
+
"type": "file",
|
|
4184
|
+
"name": "dist/pack-artifact.js.map",
|
|
4185
|
+
"hashes": [
|
|
4186
|
+
{
|
|
4187
|
+
"alg": "SHA-256",
|
|
4188
|
+
"content": "3b1537b2de837841488829eaf12ee76fc405dbe12716a5b6677b2339ac5276cb"
|
|
4189
|
+
}
|
|
4190
|
+
]
|
|
4191
|
+
},
|
|
4112
4192
|
{
|
|
4113
4193
|
"type": "file",
|
|
4114
4194
|
"name": "dist/pack-inventory.d.ts",
|
|
@@ -4445,7 +4525,7 @@
|
|
|
4445
4525
|
"hashes": [
|
|
4446
4526
|
{
|
|
4447
4527
|
"alg": "SHA-256",
|
|
4448
|
-
"content": "
|
|
4528
|
+
"content": "fe20c556f01f1845f344886135d13357d5aea9f7260cf86d4758e82927053851"
|
|
4449
4529
|
}
|
|
4450
4530
|
]
|
|
4451
4531
|
},
|
|
@@ -4455,7 +4535,7 @@
|
|
|
4455
4535
|
"hashes": [
|
|
4456
4536
|
{
|
|
4457
4537
|
"alg": "SHA-256",
|
|
4458
|
-
"content": "
|
|
4538
|
+
"content": "2a21b1817b07e27719c559bd37d78e87659bf1249ffdb7499efba1999d49c7c2"
|
|
4459
4539
|
}
|
|
4460
4540
|
]
|
|
4461
4541
|
},
|
|
@@ -4465,7 +4545,7 @@
|
|
|
4465
4545
|
"hashes": [
|
|
4466
4546
|
{
|
|
4467
4547
|
"alg": "SHA-256",
|
|
4468
|
-
"content": "
|
|
4548
|
+
"content": "1ee080ccc4b13bd8a1961d31284bc686860ca704e29c3b0b687a3106ccdc13c7"
|
|
4469
4549
|
}
|
|
4470
4550
|
]
|
|
4471
4551
|
},
|
|
@@ -4595,7 +4675,7 @@
|
|
|
4595
4675
|
"hashes": [
|
|
4596
4676
|
{
|
|
4597
4677
|
"alg": "SHA-256",
|
|
4598
|
-
"content": "
|
|
4678
|
+
"content": "612d932b140a0bc367a772fb6122275b509ff26a6359534f1cf3ce79539def1b"
|
|
4599
4679
|
}
|
|
4600
4680
|
]
|
|
4601
4681
|
},
|
|
@@ -4605,7 +4685,7 @@
|
|
|
4605
4685
|
"hashes": [
|
|
4606
4686
|
{
|
|
4607
4687
|
"alg": "SHA-256",
|
|
4608
|
-
"content": "
|
|
4688
|
+
"content": "120250c23f016ef260bd764b35ddca919da595b953fcaf7960ae228c4bdc65d2"
|
|
4609
4689
|
}
|
|
4610
4690
|
]
|
|
4611
4691
|
},
|
|
@@ -4615,7 +4695,7 @@
|
|
|
4615
4695
|
"hashes": [
|
|
4616
4696
|
{
|
|
4617
4697
|
"alg": "SHA-256",
|
|
4618
|
-
"content": "
|
|
4698
|
+
"content": "da830c806d680362a0668623dd653add234ea9968511366b178c3b1657318d05"
|
|
4619
4699
|
}
|
|
4620
4700
|
]
|
|
4621
4701
|
},
|
|
@@ -4625,7 +4705,7 @@
|
|
|
4625
4705
|
"hashes": [
|
|
4626
4706
|
{
|
|
4627
4707
|
"alg": "SHA-256",
|
|
4628
|
-
"content": "
|
|
4708
|
+
"content": "e08511c5f7024e8d76472a68ed930b613fffc5a859788a3cbb20cf469a638fa0"
|
|
4629
4709
|
}
|
|
4630
4710
|
]
|
|
4631
4711
|
},
|
|
@@ -4715,7 +4795,7 @@
|
|
|
4715
4795
|
"hashes": [
|
|
4716
4796
|
{
|
|
4717
4797
|
"alg": "SHA-256",
|
|
4718
|
-
"content": "
|
|
4798
|
+
"content": "5384d5e5b0be1dc5f41c376233a1182065edd26622ecf5608a8f73f7f04c9f81"
|
|
4719
4799
|
}
|
|
4720
4800
|
]
|
|
4721
4801
|
},
|
|
@@ -4725,7 +4805,7 @@
|
|
|
4725
4805
|
"hashes": [
|
|
4726
4806
|
{
|
|
4727
4807
|
"alg": "SHA-256",
|
|
4728
|
-
"content": "
|
|
4808
|
+
"content": "cee754875a0f78ef1b65457f07eb33a0045469596e22f6f3f3eef4ff989401c0"
|
|
4729
4809
|
}
|
|
4730
4810
|
]
|
|
4731
4811
|
},
|
|
@@ -4735,7 +4815,7 @@
|
|
|
4735
4815
|
"hashes": [
|
|
4736
4816
|
{
|
|
4737
4817
|
"alg": "SHA-256",
|
|
4738
|
-
"content": "
|
|
4818
|
+
"content": "e6fe3953003c79e5ce5065053c401d322fb186f40603bf7312beb5c2fb994969"
|
|
4739
4819
|
}
|
|
4740
4820
|
]
|
|
4741
4821
|
},
|
|
@@ -4745,7 +4825,7 @@
|
|
|
4745
4825
|
"hashes": [
|
|
4746
4826
|
{
|
|
4747
4827
|
"alg": "SHA-256",
|
|
4748
|
-
"content": "
|
|
4828
|
+
"content": "275fd7d74bd1345ffe8fa55ffced2272985662904dc7774f6b343b06730322b0"
|
|
4749
4829
|
}
|
|
4750
4830
|
]
|
|
4751
4831
|
},
|
|
@@ -7109,6 +7189,46 @@
|
|
|
7109
7189
|
}
|
|
7110
7190
|
]
|
|
7111
7191
|
},
|
|
7192
|
+
{
|
|
7193
|
+
"type": "file",
|
|
7194
|
+
"name": "dist/text-mangling.d.ts",
|
|
7195
|
+
"hashes": [
|
|
7196
|
+
{
|
|
7197
|
+
"alg": "SHA-256",
|
|
7198
|
+
"content": "fa46a6aa1981ed6569a45c1a4d3ce99404db9ae6ca345f6fd16e3edb2ca00bd8"
|
|
7199
|
+
}
|
|
7200
|
+
]
|
|
7201
|
+
},
|
|
7202
|
+
{
|
|
7203
|
+
"type": "file",
|
|
7204
|
+
"name": "dist/text-mangling.d.ts.map",
|
|
7205
|
+
"hashes": [
|
|
7206
|
+
{
|
|
7207
|
+
"alg": "SHA-256",
|
|
7208
|
+
"content": "414ba36e047efbf7460728884bec7509520ed6e7f95887bd423d98cc1e69a776"
|
|
7209
|
+
}
|
|
7210
|
+
]
|
|
7211
|
+
},
|
|
7212
|
+
{
|
|
7213
|
+
"type": "file",
|
|
7214
|
+
"name": "dist/text-mangling.js",
|
|
7215
|
+
"hashes": [
|
|
7216
|
+
{
|
|
7217
|
+
"alg": "SHA-256",
|
|
7218
|
+
"content": "538b223f3bf30a0806df7ff68af7432b86972898bbc8932fe03786dc313e271a"
|
|
7219
|
+
}
|
|
7220
|
+
]
|
|
7221
|
+
},
|
|
7222
|
+
{
|
|
7223
|
+
"type": "file",
|
|
7224
|
+
"name": "dist/text-mangling.js.map",
|
|
7225
|
+
"hashes": [
|
|
7226
|
+
{
|
|
7227
|
+
"alg": "SHA-256",
|
|
7228
|
+
"content": "184f7f29fc4472c4e6a82deeff6207fa884156d91c8679eaa020f62b46699dc0"
|
|
7229
|
+
}
|
|
7230
|
+
]
|
|
7231
|
+
},
|
|
7112
7232
|
{
|
|
7113
7233
|
"type": "file",
|
|
7114
7234
|
"name": "dist/tg-post.d.ts",
|
|
@@ -7559,7 +7679,7 @@
|
|
|
7559
7679
|
},
|
|
7560
7680
|
{
|
|
7561
7681
|
"name": "dz:canonical-json-sha256-v2",
|
|
7562
|
-
"value": "
|
|
7682
|
+
"value": "0b881348f6c4b203b10ec7331e8cb5e0a44f6b4fd661e9340cba4e60a7042edb"
|
|
7563
7683
|
}
|
|
7564
7684
|
]
|
|
7565
7685
|
},
|
|
@@ -7659,7 +7779,7 @@
|
|
|
7659
7779
|
"hashes": [
|
|
7660
7780
|
{
|
|
7661
7781
|
"alg": "SHA-256",
|
|
7662
|
-
"content": "
|
|
7782
|
+
"content": "75f32916bb73b3b8fccdcdfdd20aa5e9c9231a61be7670db83efe912b6250bd0"
|
|
7663
7783
|
}
|
|
7664
7784
|
]
|
|
7665
7785
|
},
|
|
@@ -8299,7 +8419,7 @@
|
|
|
8299
8419
|
"hashes": [
|
|
8300
8420
|
{
|
|
8301
8421
|
"alg": "SHA-256",
|
|
8302
|
-
"content": "
|
|
8422
|
+
"content": "ecbd56d2a04ff6a7fda5bff402bfd7f978db91a1b9559b33e5dfbe20da92390f"
|
|
8303
8423
|
}
|
|
8304
8424
|
]
|
|
8305
8425
|
},
|
|
@@ -8523,6 +8643,16 @@
|
|
|
8523
8643
|
}
|
|
8524
8644
|
]
|
|
8525
8645
|
},
|
|
8646
|
+
{
|
|
8647
|
+
"type": "file",
|
|
8648
|
+
"name": "src/memory-index-check.ts",
|
|
8649
|
+
"hashes": [
|
|
8650
|
+
{
|
|
8651
|
+
"alg": "SHA-256",
|
|
8652
|
+
"content": "78baea4b55d0d19180040761050837a9f28bdd60112062a7d359ebfd78beed14"
|
|
8653
|
+
}
|
|
8654
|
+
]
|
|
8655
|
+
},
|
|
8526
8656
|
{
|
|
8527
8657
|
"type": "file",
|
|
8528
8658
|
"name": "src/model-recommender.ts",
|
|
@@ -8593,6 +8723,16 @@
|
|
|
8593
8723
|
}
|
|
8594
8724
|
]
|
|
8595
8725
|
},
|
|
8726
|
+
{
|
|
8727
|
+
"type": "file",
|
|
8728
|
+
"name": "src/pack-artifact.ts",
|
|
8729
|
+
"hashes": [
|
|
8730
|
+
{
|
|
8731
|
+
"alg": "SHA-256",
|
|
8732
|
+
"content": "7c7679225a5d5057ecd71f195d8dbda105a9082bc3ce257a5eddd9e47b7dadd1"
|
|
8733
|
+
}
|
|
8734
|
+
]
|
|
8735
|
+
},
|
|
8596
8736
|
{
|
|
8597
8737
|
"type": "file",
|
|
8598
8738
|
"name": "src/pack-inventory.ts",
|
|
@@ -8679,7 +8819,7 @@
|
|
|
8679
8819
|
"hashes": [
|
|
8680
8820
|
{
|
|
8681
8821
|
"alg": "SHA-256",
|
|
8682
|
-
"content": "
|
|
8822
|
+
"content": "9d5a7418da2864535d5661cb6f3c2d7b8fc3e8cc98ef4e063370d841a7494abc"
|
|
8683
8823
|
}
|
|
8684
8824
|
]
|
|
8685
8825
|
},
|
|
@@ -8719,7 +8859,7 @@
|
|
|
8719
8859
|
"hashes": [
|
|
8720
8860
|
{
|
|
8721
8861
|
"alg": "SHA-256",
|
|
8722
|
-
"content": "
|
|
8862
|
+
"content": "3d1805546b964d8bce68cc94cdf1d9dd5e7e6a558f112e73fe1faf0f1c445fd4"
|
|
8723
8863
|
}
|
|
8724
8864
|
]
|
|
8725
8865
|
},
|
|
@@ -8749,7 +8889,7 @@
|
|
|
8749
8889
|
"hashes": [
|
|
8750
8890
|
{
|
|
8751
8891
|
"alg": "SHA-256",
|
|
8752
|
-
"content": "
|
|
8892
|
+
"content": "b0248fad94dc412820b0feae2d3cfd5796efac4d759a875c9063693bcd2c2a78"
|
|
8753
8893
|
}
|
|
8754
8894
|
]
|
|
8755
8895
|
},
|
|
@@ -9353,6 +9493,16 @@
|
|
|
9353
9493
|
}
|
|
9354
9494
|
]
|
|
9355
9495
|
},
|
|
9496
|
+
{
|
|
9497
|
+
"type": "file",
|
|
9498
|
+
"name": "src/text-mangling.ts",
|
|
9499
|
+
"hashes": [
|
|
9500
|
+
{
|
|
9501
|
+
"alg": "SHA-256",
|
|
9502
|
+
"content": "61b4ef4f7d63fb395922145c9803a55f9dce6d46920fa3bbe280fa1af6235e78"
|
|
9503
|
+
}
|
|
9504
|
+
]
|
|
9505
|
+
},
|
|
9356
9506
|
{
|
|
9357
9507
|
"type": "file",
|
|
9358
9508
|
"name": "src/tg-post.ts",
|
package/src/architecture.ts
CHANGED
|
Binary file
|
package/src/index.ts
CHANGED
|
@@ -308,6 +308,15 @@ export type {
|
|
|
308
308
|
StoreMarkWriteOptions,
|
|
309
309
|
StoreResetReceipt,
|
|
310
310
|
} from './store-guard.js';
|
|
311
|
+
export {
|
|
312
|
+
checkMemoryIndex,
|
|
313
|
+
MEMORY_INDEX_MAX_BYTES,
|
|
314
|
+
MEMORY_INDEX_MAX_LINE_CHARS,
|
|
315
|
+
MEMORY_INDEX_MIN_HOOK_SUPPORT,
|
|
316
|
+
} from './memory-index-check.js';
|
|
317
|
+
export type { MemoryIndexReport, Finding, FindingKind } from './memory-index-check.js';
|
|
318
|
+
export { detectMangledText } from './text-mangling.js';
|
|
319
|
+
export type { MangleKind, MangleSymptom } from './text-mangling.js';
|
|
311
320
|
export { planStoreGuardPrune } from './store-guard-prune.js';
|
|
312
321
|
export type {
|
|
313
322
|
StoreGuardPruneBucket,
|
|
@@ -770,6 +779,8 @@ export type {
|
|
|
770
779
|
ChainDefectAges,
|
|
771
780
|
ChainedJournal,
|
|
772
781
|
} from './event-chain.js';
|
|
782
|
+
export { packArtifact, readWorkspaceVersions, UnknownWorkspaceSpecError } from './pack-artifact.js';
|
|
783
|
+
export type { PackArtifactResult, ExecLike } from './pack-artifact.js';
|
|
773
784
|
export { decideProvenance, environmentCanMintProvenance, publishArgv, matchesPublishFilter, discoverPackages, publishPackages, bumpPatch, compareVersions, findUnpackagedSkills, findUnpublishedWorkspaceFloors, rewriteWorkspaceSpecs, orderByDependencies, syncReadmeVersion, isChangelogEntryLine, changelogRegion, planReadmeVersionSync } from './publish.js';
|
|
774
785
|
export type { ReadmeVersionSyncPlan, ReadmeSyncRewrite } from './publish.js';
|
|
775
786
|
export { RELEASE_LINE_RE, parseReleaseLine, findReleaseLine, rewriteReleaseLine, shortPackageName } from './release-line.js';
|
|
@@ -816,7 +827,7 @@ export type {
|
|
|
816
827
|
} from './release.js';
|
|
817
828
|
export { formatPublishError } from './publish.js';
|
|
818
829
|
// Sibling-drift + packed-install-smoke gates (feature publish-sibling-drift-gate, ADR-001).
|
|
819
|
-
export { detectSiblingDrift, parseNpmPackInventory } from './publish-sibling-drift.js';
|
|
830
|
+
export { detectSiblingDrift, parseNpmPackInventory, formatDriftFiles } from './publish-sibling-drift.js';
|
|
820
831
|
export type {
|
|
821
832
|
SiblingDriftStatus,
|
|
822
833
|
InventorySource,
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { Buffer } from 'node:buffer';
|
|
2
|
+
import { stemToken, stems } from './stem.js';
|
|
3
|
+
|
|
4
|
+
export const MEMORY_INDEX_MAX_BYTES = 24_000;
|
|
5
|
+
export const MEMORY_INDEX_MAX_LINE_CHARS = 200;
|
|
6
|
+
// Hook support is a lexical heuristic, not proof that a hook's meaning is preserved.
|
|
7
|
+
// Shared conservative stems fold находку/находка → находк and подписью/подпись → подпис;
|
|
8
|
+
// проверил ≠ проверка (verb/noun) and teacher ≠ teach remain distinct, without prefix matching.
|
|
9
|
+
// Calibration history on the real index (108 judged lines): 2026-09-23 the coder measured a live
|
|
10
|
+
// minimum of 0 at L83/L85/L114 and 15 lines under 0.5 — 14 were Russian hooks over English files
|
|
11
|
+
// or other word forms (knowledge present), one (L76) linked the WRONG file. The lead rewrote those
|
|
12
|
+
// hooks with words from their files; 2026-09-24 the live minimum is 0.5 exactly (QE F2 on 23.09 counted
|
|
13
|
+
// 5 lines at the boundary on the then-index; re-measured 24.09 on the current index: 4 under the substring rule). The threshold stays the contract's 0.5; a hook at the boundary passes
|
|
14
|
+
// (`support < min` fails), so the margin there is thin by construction.
|
|
15
|
+
// Stem era (feature memory-index-hook-stems, 2026-09-24, lead on the host): with stem-to-stem support the
|
|
16
|
+
// live index first showed ONE new finding — L46, support 2/6, a hook whose words the substring rule had
|
|
17
|
+
// matched INSIDE other words (после/двух/ночь) — an honest downgrade, fixed in the memory file, not here;
|
|
18
|
+
// after that: 0 findings, minimum 0.5 on exactly 2 lines (L18, L69 — measured with minHookSupport raised
|
|
19
|
+
// just above 0.5 and counting `support 0.5` findings; the earlier "5" was a stale copy, QE F1), threshold unchanged.
|
|
20
|
+
export const MEMORY_INDEX_MIN_HOOK_SUPPORT = 0.5;
|
|
21
|
+
|
|
22
|
+
export type FindingKind = 'over-size' | 'long-line' | 'broken-link' | 'unindexed-file' | 'unsupported-hook' | 'duplicate-link';
|
|
23
|
+
export type Finding = { kind: FindingKind; line?: number; file?: string; detail: string };
|
|
24
|
+
export type MemoryIndexReport = { bytes: number; lines: number; findings: readonly Finding[] };
|
|
25
|
+
|
|
26
|
+
/** Pure check: callers supply the index and sibling Markdown files (excluding MEMORY.md). */
|
|
27
|
+
export function checkMemoryIndex(input: {
|
|
28
|
+
indexText: string;
|
|
29
|
+
files: ReadonlyMap<string, string>;
|
|
30
|
+
limits?: { maxBytes?: number; maxLineChars?: number; minHookSupport?: number };
|
|
31
|
+
}): MemoryIndexReport {
|
|
32
|
+
const { indexText, files, limits } = input;
|
|
33
|
+
const maxBytes = limits?.maxBytes ?? MEMORY_INDEX_MAX_BYTES;
|
|
34
|
+
const maxLineChars = limits?.maxLineChars ?? MEMORY_INDEX_MAX_LINE_CHARS;
|
|
35
|
+
const minHookSupport = limits?.minHookSupport ?? MEMORY_INDEX_MIN_HOOK_SUPPORT;
|
|
36
|
+
const bytes = Buffer.byteLength(indexText, 'utf8');
|
|
37
|
+
const findings: Finding[] = [];
|
|
38
|
+
if (bytes > maxBytes) {
|
|
39
|
+
findings.push({ kind: 'over-size', detail: `${bytes} bytes exceeds maximum ${maxBytes}` });
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Count physical lines; a final newline terminates a line, rather than adding one.
|
|
43
|
+
const lines = indexText === '' ? [] : indexText.split(/\r?\n/u);
|
|
44
|
+
if (lines.at(-1) === '') lines.pop();
|
|
45
|
+
const indexed = new Map<string, number>();
|
|
46
|
+
const stemsByFile = new Map<string, Set<string>>();
|
|
47
|
+
for (const [offset, text] of lines.entries()) {
|
|
48
|
+
const line = offset + 1;
|
|
49
|
+
// String length measures UTF-16 code units, not bytes or Unicode code points.
|
|
50
|
+
if (text.length > maxLineChars) {
|
|
51
|
+
findings.push({ kind: 'long-line', line, detail: `${text.length} UTF-16 code units exceeds maximum ${maxLineChars}` });
|
|
52
|
+
}
|
|
53
|
+
const match = /^- \[(.*?)\]\((.*?)\)\s*—\s*(.*)$/u.exec(text);
|
|
54
|
+
if (match === null) continue;
|
|
55
|
+
const file = match[2]!;
|
|
56
|
+
const previous = indexed.get(file);
|
|
57
|
+
if (previous !== undefined) {
|
|
58
|
+
findings.push({ kind: 'duplicate-link', line, file, detail: `already linked on line ${previous}` });
|
|
59
|
+
} else {
|
|
60
|
+
indexed.set(file, line);
|
|
61
|
+
}
|
|
62
|
+
const content = files.get(file);
|
|
63
|
+
if (content === undefined) {
|
|
64
|
+
findings.push({ kind: 'broken-link', line, file, detail: 'linked file is absent' });
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const tokens = (match[3]!.split(';', 1)[0]!.match(/[\p{L}\p{N}]{4,}/gu) ?? []).map(token => token.toLowerCase());
|
|
68
|
+
// Fewer than three tokens are too short for this heuristic to judge.
|
|
69
|
+
if (tokens.length < 3) continue;
|
|
70
|
+
let contentStems = stemsByFile.get(file);
|
|
71
|
+
if (contentStems === undefined) {
|
|
72
|
+
contentStems = new Set(stems(content));
|
|
73
|
+
stemsByFile.set(file, contentStems);
|
|
74
|
+
}
|
|
75
|
+
const missing = tokens.filter(token => !contentStems.has(stemToken(token)));
|
|
76
|
+
const supported = tokens.length - missing.length;
|
|
77
|
+
const support = supported / tokens.length;
|
|
78
|
+
if (support < minHookSupport) {
|
|
79
|
+
findings.push({
|
|
80
|
+
kind: 'unsupported-hook', line, file,
|
|
81
|
+
detail: `hook support ${support} (${supported}/${tokens.length}) below minimum ${minHookSupport}; missing tokens: ${missing.join(', ')}`,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
for (const file of [...files.keys()].sort()) {
|
|
86
|
+
if (!indexed.has(file)) findings.push({ kind: 'unindexed-file', file, detail: 'file has no index entry' });
|
|
87
|
+
}
|
|
88
|
+
// Whole-index findings precede line findings; ties use kind, then file order.
|
|
89
|
+
findings.sort((a, b) => (a.line ?? 0) - (b.line ?? 0)
|
|
90
|
+
|| (a.kind < b.kind ? -1 : a.kind > b.kind ? 1 : 0)
|
|
91
|
+
|| ((a.file ?? '') < (b.file ?? '') ? -1 : (a.file ?? '') > (b.file ?? '') ? 1 : 0));
|
|
92
|
+
return { bytes, lines: lines.length, findings };
|
|
93
|
+
}
|