pi-umans-provider 1.0.36 → 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-umans-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-umans-provider --repo monotykamary/pi-umans-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,53 @@
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
+ run: node scripts/update-models.js
32
+
33
+ - name: Commit, bump and push
34
+ run: |
35
+ if git diff --quiet; then
36
+ echo "No model changes."
37
+ exit 0
38
+ fi
39
+ git config user.name "github-actions[bot]"
40
+ git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
41
+ git add -A
42
+ git commit -m "feat: update umans models from API"
43
+ npm version patch --no-git-tag-version
44
+ version=$(node -p "require('./package.json').version")
45
+ git commit -am "chore(release): v$version"
46
+ git push origin HEAD:main
47
+
48
+ # Pushes made with GITHUB_TOKEN do not start other workflows, so hand the
49
+ # release to publish.yml explicitly.
50
+ - name: Hand off to publish.yml
51
+ env:
52
+ GH_TOKEN: ${{ github.token }}
53
+ 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.36
4
12
 
5
13
  - `/login` while the session-start catalog revalidation is still in flight now fetches the new key's catalog right away: the forced refresh aborts the old-key revalidation and waits for it to release the sync lock instead of skipping as "locked" until the next session start.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-umans-provider",
3
- "version": "1.0.36",
3
+ "version": "1.0.38",
4
4
  "description": "UMANS provider extension for pi - Access Kimi K2.6, GLM 5.1, Qwen 3.6, and coding-optimized models through the UMANS API",
5
5
  "type": "module",
6
6
  "main": "index.ts",
@@ -37,8 +37,8 @@
37
37
  "brace-expansion": "5.0.12"
38
38
  },
39
39
  "devDependencies": {
40
- "@earendil-works/pi-ai": "1.1.0",
41
- "@earendil-works/pi-coding-agent": "1.1.0",
40
+ "@earendil-works/pi-ai": "1.3.0",
41
+ "@earendil-works/pi-coding-agent": "1.3.0",
42
42
  "@types/node": "^25.9.2",
43
43
  "typescript": "^6.0.3",
44
44
  "vitest": "4.1.7"
@@ -46,5 +46,9 @@
46
46
  "peerDependencies": {
47
47
  "@earendil-works/pi-ai": "*",
48
48
  "@earendil-works/pi-coding-agent": "*"
49
+ },
50
+ "repository": {
51
+ "type": "git",
52
+ "url": "git+https://github.com/monotykamary/pi-umans-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();