@akanjs/cli 3.0.0-alpha.69 → 3.0.0-alpha.70

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/.build-stamp CHANGED
@@ -1 +1 @@
1
- f854deee45ba7fb5cde828e62164657386dfc13e55f0b7da760161ad709daa32
1
+ a28e1153bab4e1e1e981a92cbd3a49ffbf5137997da979da9cf3ad9f5d1f54ba
@@ -707,6 +707,9 @@ while guaranteeing that every endpoint added later is invisible to agents until
707
707
  - Settings live in the app's `lib/option.ts` — `option.setMcp({ enabled, readOnly, path, version, instructions,
708
708
  allowedOrigins, pageSize, language, auth })`, **not `main.ts`**. Every lib's option is read in mount order with
709
709
  the app's last, and each field has an `AKAN_MCP_*` env spelling the option overrides.
710
+ - **RFC 9728 metadata is served only once an authorization server is named.** Advertising `bearer_methods_supported`
711
+ without one makes Cursor (and similar clients) force OAuth. Set `AKAN_MCP_AUTH_SERVERS` when the surface is an
712
+ OAuth resource; otherwise the well-known document is absent.
710
713
  - **The refusals are fail-closed**: a declared `mcp: false`, an endpoint with no `guards`, a mutation with no real guard (`[Public]` is
711
714
  having none), `pubsub` and `message`, an `Any` or `Upload` return, a file upload, a required `Any` argument, and
712
715
  the generated `light<Model>` read — it is `<Model>` in a smaller shape, so one read never costs two entries of
@@ -151,11 +151,14 @@ export class TaskEndpoint extends endpoint(srv.task, ({ mutation, prompt }) => (
151
151
  and are not configurable. Clients are told to distrust hints; they are never a gate.
152
152
  - **`AKAN_MCP_READONLY=true` is the read-only-deployment valve, not the exposure switch.** It drops every mutation
153
153
  whatever it declared, and reports each one in the boot log like any other refusal.
154
- - OAuth resource metadata is published at `/.well-known/oauth-protected-resource` (and at that path plus the mount
155
- path, the spelling most clients try first). `AKAN_MCP_AUTH_SERVERS`, `AKAN_MCP_SCOPES`, and `AKAN_MCP_RESOURCE`
156
- configure it; `insufficient_scope` is enforced only once `AKAN_MCP_SCOPES` is set. A token carrying no `aud` at
157
- all is refused once `AKAN_MCP_AUTH_SERVERS` names an issuer — that issuer mints tokens for its other resources
158
- too — and accepted while none is named, because a first-party Akan token is bound by app and environment.
154
+ - **RFC 9728 metadata is published only once `AKAN_MCP_AUTH_SERVERS` names an issuer.** An unprotected resource
155
+ that still advertises `bearer_methods_supported` is treated by Cursor (and similar clients) as an OAuth
156
+ mandate, so the well-known document is absent until there is somewhere to obtain a token. When it is served,
157
+ it lives at `/.well-known/oauth-protected-resource` (and at that path plus the mount path, the spelling most
158
+ clients try first). `AKAN_MCP_SCOPES` and `AKAN_MCP_RESOURCE` configure the document when it exists;
159
+ `insufficient_scope` is enforced only once `AKAN_MCP_SCOPES` is set. A token carrying no `aud` at all is
160
+ refused once an issuer is named — that issuer mints tokens for its other resources too — and accepted while
161
+ none is named, because a first-party Akan token is bound by app and environment.
159
162
  - **The boot log names every published entry with no dictionary `.desc()`.** An agent picks a tool by its
160
163
  description, so a missing one is a broken tool. What the framework generates has no text of its own and borrows
161
164
  the model's: the generated list reads the `.of()` label, and the base CRUD tools append the model's `.desc()` to
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/cli",
3
- "version": "3.0.0-alpha.69",
3
+ "version": "3.0.0-alpha.70",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -34,7 +34,7 @@
34
34
  "@langchain/openai": "^1.4.6",
35
35
  "@tailwindcss/node": "^4.3.0",
36
36
  "@trapezedev/project": "^7.1.4",
37
- "akanjs": "3.0.0-alpha.69",
37
+ "akanjs": "3.0.0-alpha.70",
38
38
  "chalk": "^5.6.2",
39
39
  "commander": "^14.0.3",
40
40
  "dayjs": "^1.11.20",