@axiom-lattice/protocols 4.4.1 → 4.6.0

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @axiom-lattice/protocols@4.4.1 build /home/runner/work/agentic/agentic/packages/protocols
2
+ > @axiom-lattice/protocols@4.6.0 build /home/runner/work/agentic/agentic/packages/protocols
3
3
  > tsup src/index.ts --format cjs,esm --dts --sourcemap
4
4
 
5
5
  CLI Building entry: src/index.ts
@@ -8,13 +8,13 @@
8
8
  CLI Target: es2020
9
9
  CJS Build start
10
10
  ESM Build start
11
- ESM dist/index.mjs 40.76 KB
12
- ESM dist/index.mjs.map 161.70 KB
13
- ESM ⚡️ Build success in 370ms
14
- CJS dist/index.js 45.35 KB
15
- CJS dist/index.js.map 165.38 KB
16
- CJS ⚡️ Build success in 372ms
11
+ CJS dist/index.js 46.24 KB
12
+ CJS dist/index.js.map 187.63 KB
13
+ CJS ⚡️ Build success in 270ms
14
+ ESM dist/index.mjs 41.58 KB
15
+ ESM dist/index.mjs.map 183.90 KB
16
+ ESM ⚡️ Build success in 270ms
17
17
  DTS Build start
18
- DTS ⚡️ Build success in 11517ms
19
- DTS dist/index.d.ts 221.50 KB
20
- DTS dist/index.d.mts 221.50 KB
18
+ DTS ⚡️ Build success in 7655ms
19
+ DTS dist/index.d.ts 243.17 KB
20
+ DTS dist/index.d.mts 243.17 KB
package/CHANGELOG.md CHANGED
@@ -1,5 +1,70 @@
1
1
  # @axiom-lattice/protocols
2
2
 
3
+ ## 4.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6e07f01: Add a tenant-scoped model provider catalog.
8
+
9
+ Model lists were a process-wide in-memory registry: every model lived under
10
+ `models:default:{key}`, nothing was persisted, and `GET /api/models` returned
11
+ each model's `apiKey` in plaintext to any caller.
12
+
13
+ A tenant owner/admin can now register an upstream provider (base URL + API key),
14
+ run discovery against `{baseURL}/v1/models`, and see a tenant-isolated model
15
+ catalog. See ADR-138 for the full decision record.
16
+
17
+ Key points:
18
+
19
+ - **`modelKey` is `${providerId}/${modelId}`.** The same upstream model id
20
+ offered by two providers is two independent models — the real case being a
21
+ tenant running OpenAI direct and Azure OpenAI side by side. The provider id is
22
+ immutable, so renaming a provider never invalidates a key already stored in
23
+ agent or eval configuration.
24
+ - **Credentials never leave the server.** The API key is stored AES-256-GCM
25
+ encrypted and responses carry only `hasApiKey` / `apiKeyHint`. An omitted or
26
+ empty `apiKey` on update keeps the stored value.
27
+ - **Tenant scope comes from the authenticated session only**, never from the
28
+ request body, and writes require a tenant owner/admin role. A provider
29
+ belonging to another tenant is indistinguishable from a missing one (404).
30
+ - **Upstream URLs are validated** before any outbound request: http(s) only, no
31
+ embedded credentials, and private/loopback/link-local/CGNAT addresses are
32
+ rejected. Discovery does not follow redirects, times out after 8s, and never
33
+ echoes the upstream body in an error.
34
+ - **Discovery is explicit.** `POST /api/model-providers/:id/discover` refreshes a
35
+ persisted snapshot; the catalog endpoints never make outbound calls, so an
36
+ upstream outage leaves the list intact.
37
+
38
+ Phase 1 registers discovered models for execution only for the `default` tenant,
39
+ whose registry keys are byte-identical to the previous key-only API. Other
40
+ tenants get the catalog but their models report `executable: false`. Registering
41
+ them would let one tenant's model silently overwrite another's, sending the
42
+ second tenant's agents to the first tenant's upstream with the first tenant's
43
+ credentials.
44
+
45
+ **Contract changes on the legacy endpoints** (breaking for any consumer of
46
+ `GET /api/models`):
47
+
48
+ - `GET /api/models` no longer returns `apiKey`; it returns `hasApiKey` instead,
49
+ and is now scoped to the `default` tenant rather than enumerating all of them.
50
+ - `PUT /api/models` treats an empty `apiKey` as "keep the existing key". Without
51
+ this, the first save after the change above would clear every stored key.
52
+
53
+ The console UI ships the matching change, so a react-sdk built from this version
54
+ must be deployed together with this gateway.
55
+
56
+ ## 4.5.0
57
+
58
+ ### Minor Changes
59
+
60
+ - 132c78e: Make the Project members endpoint kind-aware. `GET /api/projects/:projectId/bots` (`ProjectRosterService.list`) returns a `kind: "public"` project's every available agent as an implicit active member (built on the assistant catalog), and any other project's stored roster unchanged. No new endpoint and no new query parameter; `client.projectRooms.bots.list(projectId)` is unchanged. The task start picker reuses it and filters to active members.
61
+
62
+ Adds an optional `rosterExempt` flag to `ProjectTaskTrustedRunContext`; Core skips caller/owner roster authorization when the host stamps it (public project tasks) while still enforcing exact task scope.
63
+
64
+ ### Patch Changes
65
+
66
+ - 132c78e: add document parse
67
+
3
68
  ## 4.4.1
4
69
 
5
70
  ### Patch Changes