pi-sap-aicore 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.
Files changed (3) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +40 -0
  3. package/package.json +14 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,43 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented here.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.1] - 2026-06-06
11
+
12
+ ### Added
13
+
14
+ - Continuous integration: `tsc --noEmit` verify gate on every push to `main` and
15
+ every pull request.
16
+ - Release automation: tag-driven publish to npm via GitHub Actions using OIDC
17
+ trusted publishing (tokenless, with provenance attestations).
18
+
19
+ ### Changed
20
+
21
+ - Packaging: explicit `files` allowlist in `package.json` so the published tarball
22
+ ships only runtime sources, helper scripts, and docs — CI/dev plumbing
23
+ (`.github/`) no longer ships.
24
+
25
+ ## [0.1.0] - 2026-06-06
26
+
27
+ ### Added
28
+
29
+ - Initial public release on npm: `pi install npm:pi-sap-aicore`.
30
+ - **Orchestration provider** (`sap-aicore/*`) — Claude, GPT-5\*, and Gemini models
31
+ through a single SAP AI Core orchestration deployment, with automatic
32
+ non-streaming fallback when orchestration rejects streaming for a model.
33
+ - **Foundation provider** (`sap-aicore-foundation/*`) — direct Azure OpenAI
34
+ deployments with native streaming, sharing the same login.
35
+ - Credential flow via pi's `/login` (oauth path, to survive the `$`-interpolating
36
+ key resolver) and the `AICORE_SERVICE_KEY` environment override.
37
+ - Thinking-level mapping per model family (adaptive vs. budget-token Anthropic,
38
+ `reasoning_effort` for OpenAI).
39
+ - MIT license and npm packaging.
40
+
41
+ [Unreleased]: https://github.com/ttiimmaahh/pi-sap-aicore/compare/v0.1.1...HEAD
42
+ [0.1.1]: https://github.com/ttiimmaahh/pi-sap-aicore/compare/v0.1.0...v0.1.1
43
+ [0.1.0]: https://github.com/ttiimmaahh/pi-sap-aicore/releases/tag/v0.1.0
package/README.md CHANGED
@@ -272,12 +272,52 @@ caching with no breakpoint API.
272
272
  on `sap-aicore-foundation/*` turns where orchestration always reports 0. Unverified
273
273
  against SAP's proxy; treat as best-effort.
274
274
 
275
+ ## Releasing (maintainers)
276
+
277
+ Releases are **tag-driven** and published to npm by GitHub Actions. There is no
278
+ build step — pi loads the `.ts` sources directly via jiti — so a release is just
279
+ *verify + publish*.
280
+
281
+ 1. Update `CHANGELOG.md`: move items from `[Unreleased]` into a new version
282
+ heading.
283
+ 2. Bump the version (this commits `package.json` and creates a `vX.Y.Z` tag):
284
+ ```bash
285
+ npm version patch # or minor / major
286
+ git push --follow-tags
287
+ ```
288
+ 3. The [`Publish`](.github/workflows/publish.yml) workflow fires on the `v*` tag,
289
+ asserts the tag matches `package.json`, typechecks, and publishes.
290
+
291
+ Every push to `main` and every PR also runs the [`CI`](.github/workflows/ci.yml)
292
+ typecheck gate.
293
+
294
+ ### One-time setup: npm Trusted Publishing (OIDC)
295
+
296
+ Publishing is **tokenless** — no `NPM_TOKEN` secret. Authorize this repo once on
297
+ npmjs.com:
298
+
299
+ 1. npmjs.com → the `pi-sap-aicore` package → **Settings** → **Trusted Publisher**.
300
+ 2. Choose **GitHub Actions** and enter (case-sensitive, exact match):
301
+ - **Organization or user:** `ttiimmaahh`
302
+ - **Repository:** `pi-sap-aicore`
303
+ - **Workflow filename:** `publish.yml`
304
+ - **Allowed actions:** `npm publish`
305
+ 3. Save. The next `v*` tag publishes automatically, with provenance attestations.
306
+
307
+ > The first CI release must be a version **newer than the last manually published
308
+ > one** (`0.1.0`) — npm rejects republishing an existing version.
309
+
275
310
  ## Repo layout
276
311
 
277
312
  ```
278
313
  .
279
314
  ├── package.json # pi-package manifest + deps + scripts
280
315
  ├── tsconfig.json # editor support; pi runs the .ts directly
316
+ ├── CHANGELOG.md # Keep a Changelog; updated per release
317
+ ├── LICENSE # MIT
318
+ ├── .github/workflows/
319
+ │ ├── ci.yml # typecheck gate on push to main + PRs
320
+ │ └── publish.yml # tag-driven npm publish via OIDC trusted publishing
281
321
  ├── index.ts # ExtensionAPI factory + registerProvider calls (both providers)
282
322
  ├── scripts/
283
323
  │ ├── update-models.mjs # fetches models.dev, writes models-snapshot.json
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-sap-aicore",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "SAP AI Core (orchestration + foundation) provider for the pi coding agent",
5
5
  "license": "MIT",
6
6
  "author": "Tim Pearson (https://github.com/ttiimmaahh)",
@@ -13,9 +13,20 @@
13
13
  "url": "https://github.com/ttiimmaahh/pi-sap-aicore/issues"
14
14
  },
15
15
  "type": "module",
16
- "keywords": ["pi-package"],
16
+ "keywords": [
17
+ "pi-package"
18
+ ],
19
+ "files": [
20
+ "index.ts",
21
+ "src",
22
+ "scripts",
23
+ "tsconfig.json",
24
+ "CHANGELOG.md"
25
+ ],
17
26
  "pi": {
18
- "extensions": ["./index.ts"]
27
+ "extensions": [
28
+ "./index.ts"
29
+ ]
19
30
  },
20
31
  "scripts": {
21
32
  "update-models": "node scripts/update-models.mjs",