pi-parasail-provider 1.0.35 → 1.0.38

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.
@@ -0,0 +1,114 @@
1
+ name: Publish
2
+
3
+ # Releases of pi-parasail-provider go out from here, and only from here.
4
+ #
5
+ # 1. Bump "version" in package.json (the `chore(release): X.Y.Z` commit).
6
+ # 2. Push it to main. This workflow publishes every version that npm does
7
+ # not have yet; any other push is a no-op.
8
+ #
9
+ # Run it from the Actions tab to retry a failed release, or tick "dry_run" to
10
+ # build, check and pack without publishing.
11
+ #
12
+ # Auth is npm Trusted Publishing (OIDC): npm trusts this file, so no npm token
13
+ # is stored anywhere. Registered once with
14
+ # npm trust github pi-parasail-provider --repo monotykamary/pi-parasail-provider --file publish.yml --allow-publish
15
+ #
16
+ # Bun installs and packs exactly as `bun publish` does; npm uploads the
17
+ # tarballs because only the npm CLI speaks trusted publishing.
18
+
19
+ on:
20
+ push:
21
+ branches: [main]
22
+ paths: [package.json]
23
+ workflow_dispatch:
24
+ inputs:
25
+ dry_run:
26
+ description: Build, check and pack, but do not publish
27
+ type: boolean
28
+ default: false
29
+
30
+ permissions:
31
+ contents: read
32
+ id-token: write
33
+
34
+ concurrency:
35
+ group: publish
36
+ cancel-in-progress: false
37
+
38
+ jobs:
39
+ publish:
40
+ runs-on: ubuntu-latest
41
+ timeout-minutes: 45
42
+ steps:
43
+ - uses: actions/checkout@v5
44
+
45
+ - uses: actions/setup-node@v5
46
+ with:
47
+ node-version: 24
48
+
49
+ - uses: oven-sh/setup-bun@v2
50
+
51
+ - name: Find versions npm does not have
52
+ id: release
53
+ env:
54
+ DRY_RUN: ${{ inputs.dry_run }}
55
+ run: |
56
+ specs=$(
57
+ node -p "const p = require('./package.json'); p.name + '@' + p.version"
58
+ )
59
+ missing=""
60
+ for spec in $specs; do
61
+ # npm runs from outside the checkout so the repo's devEngines do not apply.
62
+ if (cd "$RUNNER_TEMP" && npm view "$spec" version >/dev/null 2>&1); then
63
+ echo "$spec is already on npm"
64
+ else
65
+ missing="$missing $spec"
66
+ fi
67
+ done
68
+ if [ "$DRY_RUN" = "true" ]; then
69
+ mode=dry-run
70
+ elif [ -n "$missing" ]; then
71
+ mode=publish
72
+ echo "::notice::Publishing$missing"
73
+ else
74
+ mode=skip
75
+ echo "::notice::Nothing to publish"
76
+ fi
77
+ echo "mode=$mode" >> "$GITHUB_OUTPUT"
78
+
79
+ - name: Install dependencies
80
+ if: steps.release.outputs.mode != 'skip'
81
+ run: bun install --frozen-lockfile
82
+
83
+ - name: Check
84
+ if: steps.release.outputs.mode != 'skip'
85
+ run: bun run check
86
+
87
+ - name: Pack
88
+ if: steps.release.outputs.mode != 'skip'
89
+ run: |
90
+ bun run --if-present prepublishOnly
91
+ bun pm pack --destination "$RUNNER_TEMP/pack"
92
+
93
+ - name: Publish
94
+ if: steps.release.outputs.mode != 'skip'
95
+ env:
96
+ MODE: ${{ steps.release.outputs.mode }}
97
+ run: |
98
+ # Trusted publishing needs npm 11.5.1 or newer.
99
+ npm install --global npm@latest
100
+ cd "$RUNNER_TEMP"
101
+ # ./ keeps npm from reading pack/name.tgz as a GitHub repo shorthand.
102
+ for tarball in ./pack/*.tgz; do
103
+ spec=$(tar -xOzf "$tarball" package/package.json | node -p "const p = JSON.parse(require('fs').readFileSync(0, 'utf8')); p.name + '@' + p.version")
104
+ echo "::group::$spec"
105
+ tar -tzf "$tarball"
106
+ echo "::endgroup::"
107
+ if [ "$MODE" = "dry-run" ]; then
108
+ echo "Dry run: not publishing $spec"
109
+ elif npm view "$spec" version >/dev/null 2>&1; then
110
+ echo "$spec is already on npm"
111
+ else
112
+ npm publish "$tarball" --access public --provenance
113
+ fi
114
+ done
@@ -0,0 +1,55 @@
1
+ name: Update models
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "7 0 * * *" # 07:07 Asia/Ho_Chi_Minh
6
+ workflow_dispatch:
7
+
8
+ # This workflow only syncs the catalog and bumps the version; publish.yml does
9
+ # the releasing. It publishes any version npm does not have yet, so a release
10
+ # that failed earlier goes out with the next hand-off.
11
+ permissions:
12
+ contents: write
13
+ actions: write
14
+
15
+ concurrency:
16
+ group: update-models
17
+ cancel-in-progress: false
18
+
19
+ jobs:
20
+ update:
21
+ runs-on: ubuntu-latest
22
+ timeout-minutes: 15
23
+ steps:
24
+ - uses: actions/checkout@v5
25
+
26
+ - uses: actions/setup-node@v5
27
+ with:
28
+ node-version: 24
29
+
30
+ - name: Fetch the model catalog
31
+ env:
32
+ PARASAIL_API_KEY: ${{ secrets.PARASAIL_API_KEY }}
33
+ run: node scripts/update-models.js
34
+
35
+ - name: Commit, bump and push
36
+ run: |
37
+ if git diff --quiet; then
38
+ echo "No model changes."
39
+ exit 0
40
+ fi
41
+ git config user.name "github-actions[bot]"
42
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
43
+ git add -A
44
+ git commit -m "feat: update parasail models from API"
45
+ npm version patch --no-git-tag-version
46
+ version=$(node -p "require('./package.json').version")
47
+ git commit -am "chore(release): v$version"
48
+ git push origin HEAD:main
49
+
50
+ # Pushes made with GITHUB_TOKEN do not start other workflows, so hand the
51
+ # release to publish.yml explicitly.
52
+ - name: Hand off to publish.yml
53
+ env:
54
+ GH_TOKEN: ${{ github.token }}
55
+ run: gh workflow run publish.yml --ref main
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.38
4
+
5
+ - Pin Pi SDK development dependencies to 1.3.0 while retaining wildcard host peers; verify real manifest loading, lifecycle and native/bundled Pi hosts offline.
6
+
7
+ ## 1.0.37
8
+
9
+ - Pin Pi SDK development dependencies to 1.2.0 while retaining wildcard host peers; verify real manifest loading, lifecycle and native/bundled Pi hosts offline.
10
+
3
11
  ## 1.0.35
4
12
 
5
13
  - Quiet startup sync: background revalidation (`/v1/models` plus the public pricing endpoint) runs only with an API key, only when the disk cache is older than 1 hour (`PI_PROVIDER_SYNC_TTL_MS`, `0` = always), missing, or fetched with a different key, and only in one pi process at a time (lock file next to the cache). Failed refreshes back off for 5 minutes; sessions that skip adopt a cache refreshed by another process.
package/README.md CHANGED
@@ -84,7 +84,7 @@ Get your API key at [parasail.io](https://parasail.io/).
84
84
  | Glm 53 | 1M | ❌ | Text | 16K | $1.40 | $4.40 | $0.26 |
85
85
  | Glm 53 Flash | 1M | ❌ | Text | 16K | $0.15 | $0.50 | $0.03 |
86
86
  | Glm 53 Flash Fast | 1M | ❌ | Text | 16K | $0.19 | $0.63 | $0.04 |
87
- | Googlegemma 3 4b It | 131K | ❌ | Text | 16K | $0.05 | — | — |
87
+ | Googlegemma 3 4b It | 131K | ❌ | Text | 16K | $0.04 | $0.05 | $0.02 |
88
88
  | Gpt Oss 120b Fast | 131K | ✅ | Text | 16K | $0.15 | $0.60 | — |
89
89
  | GPT-OSS 120B | 131K | ✅ | Text | 16K | $0.10 | $0.75 | $0.06 |
90
90
  | GPT-OSS 20B | 131K | ✅ | Text | 16K | $0.03 | $0.15 | $0.02 |
package/models.json CHANGED
@@ -635,9 +635,9 @@
635
635
  "text"
636
636
  ],
637
637
  "cost": {
638
- "input": 0.05,
639
- "output": 0,
640
- "cacheRead": 0,
638
+ "input": 0.04,
639
+ "output": 0.05,
640
+ "cacheRead": 0.02,
641
641
  "cacheWrite": 0
642
642
  },
643
643
  "contextWindow": 131072,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-parasail-provider",
3
- "version": "1.0.35",
3
+ "version": "1.0.38",
4
4
  "description": "Parasail provider extension for pi - Access top open-source models (DeepSeek, Qwen, GLM, Kimi, Llama, Gemma, Mistral) through the Parasail API",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -39,12 +39,16 @@
39
39
  "brace-expansion": "5.0.12"
40
40
  },
41
41
  "devDependencies": {
42
- "@earendil-works/pi-coding-agent": "1.1.0",
43
- "typescript": "6.0.3",
42
+ "@earendil-works/pi-coding-agent": "1.3.0",
44
43
  "@types/node": "^25.9.1",
44
+ "typescript": "6.0.3",
45
45
  "vitest": "4.1.7"
46
46
  },
47
47
  "peerDependencies": {
48
48
  "@earendil-works/pi-coding-agent": "*"
49
+ },
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "git+https://github.com/monotykamary/pi-parasail-provider.git"
49
53
  }
50
54
  }
@@ -14,7 +14,7 @@ globalThis.fetch = async () => new Response('', { status: 503 });
14
14
  let session;
15
15
  try {
16
16
  const { createAgentSession, DefaultResourceLoader, ModelRuntime, SessionManager, SettingsManager, VERSION } = await import('@earendil-works/pi-coding-agent');
17
- assert.equal(VERSION, '1.1.0', 'run compatibility checks against the pinned host');
17
+ assert.equal(VERSION, '1.3.0', 'run compatibility checks against the pinned host');
18
18
  const manifest = JSON.parse(await readFile(join(root, 'package.json'), 'utf8'));
19
19
  const hostPackages = ['@earendil-works/pi-ai', '@earendil-works/pi-agent-core', '@earendil-works/pi-coding-agent', '@earendil-works/pi-tui', 'typebox'];
20
20
  for (const name of hostPackages) {
@@ -65,7 +65,7 @@ try {
65
65
  modelCount += models.length;
66
66
  }
67
67
  await session.extensionRunner.emit({ type: 'session_shutdown' });
68
- assert.deepEqual(errors, [], 'startup and shutdown handlers must work with Pi 1.1.0 contexts');
68
+ assert.deepEqual(errors, [], 'startup and shutdown handlers must work with Pi 1.3.0 contexts');
69
69
  console.log(`${manifest.name}: Pi ${VERSION} loader, manifest, session startup, and ${modelCount} models OK`);
70
70
  } finally {
71
71
  session?.dispose();