@akanjs/cli 3.0.0-beta.1 → 3.0.0-beta.3

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
- d72ecb79076daa348d8166c58417584a4ceda3a467c9d1a7ca95d7d85863822a
1
+ d492352c3c58e1fe064cb199f210489a9405247a400b36a8a688d51f36c67173
@@ -121,6 +121,18 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
121
121
  reader produced**, not on the file that was picked: a reader that uploads and answers a `url` has already paid
122
122
  what the ceiling exists for, so refusing its 6 MB photo would refuse it for a cost it does not incur. Only the
123
123
  built-in path checks the source size, and there the file itself is the carrier.
124
+ - **A `url` carrier is an address the *provider* fetches, so a reader that uploads has to know its storage is
125
+ reachable.** This is the one way an attachment fails with nobody reporting it: the default storage backend
126
+ serves a path only the app can resolve, the adaptor hands it over as written, and the model answers about a
127
+ picture it never saw. Answer `data` when the provider cannot reach the URL — the choice is the reader's,
128
+ because the reader is what chose to upload.
129
+ - **An image type the provider has no block for is refused at the adaptor, not upstream.** `accepts.image` is one
130
+ boolean, so `AgentService.readable` passes every `image/*` through, and the built-in composer reader base64s
131
+ every `image/*` as well — an `AttachReader` answering `null` means "not mine" and falls through to it, so an app
132
+ cannot gate one either. Both shipped vision adaptors therefore match an exact set (`jpeg`, `png`, `gif`, `webp`)
133
+ and name the rest in the text. It matters because an unsupported type is not one unread attachment: it is a
134
+ block the API refuses, so the **whole turn** dies on a vendor 400 — and `image/heic`, the iPhone camera default,
135
+ is the likeliest one an app meets.
124
136
  - **`MessageAttachment.ref` is the host's own handle on the file — carried, never read.** A file id, a storage key,
125
137
  whatever turns the attachment back into something a tool can be handed. The framework only moves it: the model is
126
138
  never shown one, and a tool the app publishes (`useFileFieldTool` below) is what spends it. Without it a host that
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/cli",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.3",
4
4
  "sourceType": "module",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -33,7 +33,7 @@
33
33
  "@langchain/openai": "^1.4.6",
34
34
  "@tailwindcss/node": "^4.3.0",
35
35
  "@trapezedev/project": "^7.1.4",
36
- "akanjs": "3.0.0-beta.1",
36
+ "akanjs": "3.0.0-beta.3",
37
37
  "chalk": "^5.6.2",
38
38
  "commander": "^14.0.3",
39
39
  "dayjs": "^1.11.20",