pi-free-catalog 0.1.0 → 0.1.1

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/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## 0.1.0 — 2026-10-17 — local, unpublished
3
+ ## 0.1.1 — 2026-10-17
4
+
5
+ - Public npm release of the unscoped package `pi-free-catalog` (MIT), superseding 0.1.0.
6
+ - Fixed: `test/package.test.mjs` assumed `npm pack --json` returns an array. npm 12 returns an object keyed by package name, so the assertion threw. It now accepts both shapes, which means `prepublishOnly` verification passes on npm 11 and npm 12.
7
+ - Docs: removed the false "has not been published / provisional name" statements from README.md, README-fa.md and PUBLISHING-fa.md; install instructions now reference the real published name and version.
8
+ - package.json: added `author`; host-provided peer packages now use the `"*"` range prescribed by Pi's `docs/packages.md`.
9
+
10
+ ## 0.1.0 — 2026-10-17 — first published release
4
11
 
5
12
  - New independent dual-provider extension, free-kilo + free-zen.
6
13
  - Await all five live catalog/price/capability sources on every load.
package/PUBLISHING-fa.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # انتشار در npm و نصب تک‌دستوری در Pi
2
2
 
3
- این بسته هنوز منتشر نشده است. هیچ نام npm بدون scope برای شما رزرو نشده و هیچ login/publish واقعی انجام نشده است. یک بسته هر دو provider را منتشر می‌کند؛ نیازی به انتشار دو بسته نیست.
3
+ این بسته روی npm منتشر شده است: `pi-free-catalog` (بدون scope، نسخهٔ 0.1.1، نگهدارنده: `aminmza`). این راهنما برای انتشار نسخه‌های بعدی و بازتولید همین فرایند است. یک بسته هر دو provider را منتشر می‌کند؛ نیازی به انتشار دو بسته نیست.
4
4
 
5
5
  ## ۱. پیش‌نیاز
6
6
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  طبق مستندات فعلی npm، انتشار بسته به 2FA یا روش مجاز token نیاز دارد. پیشنهاد این راهنما **login و انتشار تعاملی با 2FA** است. رمز، OTP، توکن یا فایل `.npmrc` را در چت/سورس نگذارید. برای CI در آینده trusted publishing را بررسی کنید، نه قراردادن توکن در کد.
13
13
 
14
- ## ۲. نام بسته را به scope خودتان تغییر دهید
14
+ ## ۲. نام و scope بسته
15
15
 
16
16
  داخل پوشهٔ استخراج‌شده:
17
17
 
@@ -23,7 +23,7 @@ npm login
23
23
  npm whoami
24
24
  ```
25
25
 
26
- پس از login، این دو خط نام بسته را از نام موقت به scope حساب واقعی شما تغییر می‌دهد:
26
+ این بسته بدون scope منتشر شده است و نیازی به تغییر نام ندارد. فقط اگر می‌خواهید نسخهٔ خودتان را با scope منتشر کنید، نام را عوض کنید:
27
27
 
28
28
  ```bash
29
29
  NPM_USER="$(npm whoami)"
@@ -62,7 +62,7 @@ npm publish --access public
62
62
  برای بررسی پس از انتشار:
63
63
 
64
64
  ```bash
65
- npm view "@${NPM_USER}/pi-free-catalog@0.1.0" version dist.integrity
65
+ npm view "pi-free-catalog@0.1.1" version dist.integrity dist.shasum
66
66
  ```
67
67
 
68
68
  ## ۵. نصب در Pi با یک دستور
@@ -70,16 +70,16 @@ npm view "@${NPM_USER}/pi-free-catalog@0.1.0" version dist.integrity
70
70
  برای همان حساب ناشر و در همان shell:
71
71
 
72
72
  ```bash
73
- pi install "npm:@${NPM_USER}/pi-free-catalog@0.1.0"
73
+ pi install "npm:pi-free-catalog@0.1.1"
74
74
  ```
75
75
 
76
- برای دیگران، فرمان نهایی را با نام واقعی scope منتشر کنید؛ مثلاً اگر حساب شما `myname` باشد:
76
+ برای دیگران، همان نام منتشرشده را بدهید:
77
77
 
78
78
  ```bash
79
- pi install npm:@myname/pi-free-catalog@0.1.0
79
+ pi install npm:pi-free-catalog@0.1.1
80
80
  ```
81
81
 
82
- `myname` در مثال، جایگزین است و ادعای وجود بسته‌ای با این نام نیست. پس از نصب، Pi را دوباره اجرا کنید و providerهای `free-kilo` و `free-zen` را انتخاب کنید. npm بسته را نصب می‌کند؛ کاتالوگ مدل‌ها در هر اجرای خود افزونه از سرویس‌ها به‌روز می‌شود، نه از fixtureهای npm.
82
+ این نام واقعاً روی npm منتشر شده است. پس از نصب، Pi را دوباره اجرا کنید و providerهای `free-kilo` و `free-zen` را انتخاب کنید. npm بسته را نصب می‌کند؛ کاتالوگ مدل‌ها در هر اجرای خود افزونه از سرویس‌ها به‌روز می‌شود، نه از fixtureهای npm.
83
83
 
84
84
  ## ۶. نسخهٔ بعدی
85
85
 
@@ -94,10 +94,22 @@ npm publish --access public
94
94
 
95
95
  تغییرات و سازگاری را در CHANGELOG ثبت کنید. اگر نسخهٔ جدید User-Agent/README نسخهٔ محصول را تغییر می‌دهد، آن برچسب‌ها را هم هماهنگ کنید. از افزایش جعلی نسخهٔ پروتکل سازگاری برای پنهان‌کردن خطای API استفاده نکنید؛ سازگاری را واقعاً تست کنید.
96
96
 
97
+ ## ۷. نکتهٔ عملی: 2FA و انتشار مرحله‌ای در npm 12
98
+
99
+ npm 12 انتشار را با «staged publishing» انجام می‌دهد و اثبات حضور (2FA) را به مرحله‌ای بعد موکول می‌کند؛ خانوادهٔ دستورهای `npm stage publish|list|view|approve|reject` برای همین کار است.
100
+
101
+ نکتهٔ مهم در محیط بدون TTY (Termux یا CI): کتابخانهٔ npm فقط زمانی جریان احراز هویت مرورگری را اجرا می‌کند که هر دو ورودی و خروجی TTY باشند؛ در غیر این صورت بی‌درنگ خطای `EOTP` می‌دهد. روی Termux از pty استفاده کنید:
102
+
103
+ ```bash
104
+ printf '\n' | script -qec 'npm publish ./pi-free-catalog-0.1.1.tgz --tag latest --access public' /dev/null
105
+ ```
106
+
107
+ سپس URL چاپ‌شده را در مرورگر تأیید کنید. ممکن است npm یک نسخهٔ جایگزین `0.0.0-stage` (stub) هم در registry بسازد؛ این نسخهٔ خالی است و برچسب `latest` را تغییر نمی‌دهد.
108
+
97
109
  ## مستندات رسمی بررسی‌شده
98
110
 
99
111
  - https://docs.npmjs.com/cli/v11/commands/npm-publish
100
112
  - https://docs.npmjs.com/requiring-2fa-for-package-publishing-and-settings-modification
101
113
  - https://docs.npmjs.com/trusted-publishers
102
114
 
103
- هیچ ورود به حساب npm یا انتشار عمومی انجام نشده است؛ این تحویل، آماده‌سازی سورس و بستهٔ قابل انتشار است، نه ادعای انتشار عمومی.
115
+ نسخهٔ فعلی منتشرشده `pi-free-catalog@0.1.1` است؛ نسخه‌های بعدی با همان حساب npm و 2FA منتشر می‌شوند. بررسی کد و مجوز MIT پیش از انتشار همچنان لازم است.
package/README-fa.md CHANGED
@@ -1,8 +1,8 @@
1
- # افزونهٔ زندهٔ مدل‌های رایگان Pi — نسخهٔ 0.1.0
1
+ # افزونهٔ زندهٔ مدل‌های رایگان Pi — نسخهٔ 0.1.1
2
2
 
3
3
  یک بسته با دو provider مستقل: **`free-kilo`** و **`free-zen`**. پیاده‌سازی مستقل است؛ افزونهٔ رسمی Kilo/OpenCode نیست. روی **Pi 1.3.0 و Node 22.23.3** آزمایش شده؛ حداقل Node اعلام‌شده **22.19** است. نسخه‌های قدیمی Pi تضمین نمی‌شوند.
4
4
 
5
- **هنوز روی npm منتشر نشده است.** نام بدون scope صرفاً نام محلی بسته است؛ برای انتشار، از نام آزاد یا scope متعلق به خودتان استفاده کنید.
5
+ **روی npm منتشر شده است:** بستهٔ بدون scope با نام `pi-free-catalog` (نسخهٔ 0.1.1، مجوز MIT، نگهدارنده: `aminmza`). برای نصب از registry: `pi install npm:pi-free-catalog@0.1.1`
6
6
 
7
7
  ## نصب محلی
8
8
 
@@ -124,4 +124,4 @@ node scripts/catalog.mjs /tmp/free-catalog-live.json
124
124
 
125
125
  اسکریپت‌های `scripts/live_pi.py`، `scripts/observe_live.py` و recorder محافظ `scripts/wire.mjs` نیز همراه سورس هستند. اجرای آن‌ها اختیاری و نیازمند Python 3، Pi نصب‌شده و مسیرهای `PI_NODE`، `PI_CLI`، `PI_TEST_DISPATCHER` و `FREE_TEST_DIR` است. ابتدا snapshot را با `catalog.mjs` در `FREE_TEST_DIR/live-catalog.json` بنویسید. توضیح دقیق‌تر در README انگلیسی آمده است. داده‌های این آزمون‌ها فقط fixture محلی‌اند؛ آن‌ها را روی پوشهٔ پروژه/اطلاعات محرمانهٔ خود اجرا نکنید. نتیجهٔ هر مدل را از JSON بخوانید؛ خروج موفق اسکریپت به معنی موفقیت همهٔ مدل‌های upstream نیست.
126
126
 
127
- گزارش اجرای واقعی این نسخه و فایل شواهد، جدا از بستهٔ قابل انتشار تحویل شده‌اند. دستور انتشار در **PUBLISHING-fa.md** است؛ انتشار واقعی انجام نشده و به حساب خودتان نیاز دارد.
127
+ گزارش اجرای واقعی این نسخه و فایل شواهد، جدا از بستهٔ قابل انتشار تحویل شده‌اند. روند انتشار نسخه‌های بعدی در **PUBLISHING-fa.md** آمده است؛ انتشار از حساب npm نگهدارنده با 2FA انجام می‌شود.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # pi-free-catalog
2
2
 
3
- Live, auditable **anonymous Kilo + OpenCode Zen** model discovery for **Pi 1.3.x / Node >=22.19**. One Pi package, two separate providers: `free-kilo` and `free-zen`. This package is an independent integration, not an official service client. **This source release has not been published to npm by its authoring assistant.** The unscoped name is provisional; publish under your own available name/scope.
3
+ Live, auditable **anonymous Kilo + OpenCode Zen** model discovery for **Pi 1.3.x / Node >=22.19**. One Pi package, two separate providers: `free-kilo` and `free-zen`. This package is an independent integration, not an official service client. It is published on npm as [`pi-free-catalog`](https://www.npmjs.com/package/pi-free-catalog) under the MIT license, maintained by `aminmza`.
4
4
 
5
5
  [فارسی](README-fa.md) · [Publishing instructions](PUBLISHING-fa.md)
6
6
 
@@ -15,7 +15,13 @@ pi
15
15
 
16
16
  There is no build step and no third-party runtime dependency beyond Pi's peer packages. Do not `npm install -g` this as a standalone agent. Choose `free-kilo` or `free-zen` in Pi's model picker. You do not need a personal API key, login or OpenCode CLI process. Disable other extensions modifying these requests when diagnosing conflicts.
17
17
 
18
- Once YOU publish, installation becomes `pi install npm:@YOUR_USERNAME/pi-free-catalog@0.1.0` (replace the username). That example is not an existing published-package claim.
18
+ ## Install from npm
19
+
20
+ ```bash
21
+ pi install npm:pi-free-catalog@0.1.1
22
+ ```
23
+
24
+ Pin the exact version for reproducibility. `pi -e npm:pi-free-catalog` loads the package for a single invocation without changing your settings.
19
25
 
20
26
  ## Non-negotiable: no silent omissions
21
27
 
@@ -86,7 +92,7 @@ npm install
86
92
  npm run verify
87
93
  ```
88
94
 
89
- Verification runs syntax checks, offline automated tests against compressed real catalog fixtures (2026-10-17), mocked lifecycle/transport/security tests, real Pi SDK stream/classifier normalization tests, and npm package-content inspection. These are **not live inference claims**. Peer SDK 1.3.0 was used; fixture expectations do not pin the production catalog.
95
+ Verification runs syntax checks, offline automated tests against compressed real catalog fixtures (2026-10-17), mocked lifecycle/transport/security tests, real Pi SDK stream/classifier normalization tests, and npm package-content inspection. These are **not live inference claims**. Peer SDK 1.3.0 was used; fixture expectations do not pin the production catalog. The packaging test accepts both `npm pack --json` output shapes (an array on npm 11, a name-keyed object on npm 12 and later).
90
96
 
91
97
  Opt-in live catalog inspection (network, no inference):
92
98
 
@@ -96,7 +102,7 @@ node scripts/catalog.mjs /tmp/free-catalog-live.json
96
102
 
97
103
  Opt-in real Pi CLI tests are in `scripts/live_pi.py` and `scripts/observe_live.py` (Python 3 + Node + installed Pi peer packages). Set absolute `PI_NODE`, `PI_CLI`, `PI_TEST_DISPATCHER`, and `FREE_TEST_DIR`; generate `FREE_TEST_DIR/live-catalog.json` with `catalog.mjs` first. `PI_TEST_DISPATCHER` is Pi's installed `dist/core/http-dispatcher.js`. `PI_CLI` is its `dist/cli.js`. The separate test-only `wire.mjs` enforces a confirmed-free allowlist and 120 POST attempts/service, records request payloads/HTTP statuses, and is never loaded in production. The suite uses isolated HOME/settings, random fixtures, default tools ON and strict named read/write/edit/bash verification. It exits processes on deadlines. Inspect `inference-results.json`; process exit 0 alone does not mean all upstream models passed. Re-running reuses completed case IDs; use a new evidence directory for a fresh complete run.
98
104
 
99
- Publishing requires your own npm identity/permissions. See [PUBLISHING-fa.md](PUBLISHING-fa.md). Never share npm tokens or commit `.npmrc`, credentials, caches or live test files.
105
+ Releases are published from the `aminmza` npm account with 2FA enabled. See [PUBLISHING-fa.md](PUBLISHING-fa.md). Never share npm tokens or commit `.npmrc`, credentials, caches or live test files.
100
106
 
101
107
  ## Sources
102
108
 
package/package.json CHANGED
@@ -1,9 +1,10 @@
1
1
  {
2
2
  "name": "pi-free-catalog",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Live, auditable anonymous Kilo and OpenCode free model catalogs for Pi. No name-based free filtering.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
+ "author": "Amin Mozaffari <aminmozaffari1185@gmail.com>",
7
8
  "keywords": [
8
9
  "pi-package",
9
10
  "pi",
@@ -15,8 +16,8 @@
15
16
  "node": ">=22.19.0"
16
17
  },
17
18
  "peerDependencies": {
18
- "@earendil-works/pi-ai": ">=1.3.0 <2",
19
- "@earendil-works/pi-coding-agent": ">=1.3.0 <2"
19
+ "@earendil-works/pi-ai": "*",
20
+ "@earendil-works/pi-coding-agent": "*"
20
21
  },
21
22
  "pi": {
22
23
  "extensions": [