@akanjs/cli 3.0.0-beta.5 → 3.0.0-beta.6
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
|
-
|
|
1
|
+
fdc8c6e78c40accb0f6e5b895d646ae64cea4b64c0f22eb726690c373e78c22a
|
|
@@ -48,7 +48,9 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
|
|
|
48
48
|
slots: `AgentLauncher`, `AgentBubble`, `AgentComposer`, `AgentApproval`,
|
|
49
49
|
`AgentQuestion`, `AgentQueued`, `AgentMenu`, `AgentMarkdown` and `AgentCode` each replace one part in `_overrides.tsx`, and
|
|
50
50
|
`akanjs/ui` exports every default beside them (`DefaultBubble`, `DefaultComposer`, …) so a skin composes the
|
|
51
|
-
one it is replacing.
|
|
51
|
+
one it is replacing. The attachment row is exported on its own as `AgentAttachments`, because a replaced
|
|
52
|
+
`AgentBubble` that redraws it by hand forks the rule for which carrier is shown how — and then keeps whatever
|
|
53
|
+
that rule was on the day it was copied. `AgentCode` is where a highlighter binds — the fence's language reaches it — and a
|
|
52
54
|
replacement for `AgentBubble` carries its own `memo`, since the transcript re-renders on every delta. Only then
|
|
53
55
|
`AgentChat`, which replaces the panel whole: it also replaces the slash commands, the compaction notice and the
|
|
54
56
|
approval gate, so reach for it when the *layout* differs, not when the look does.
|
|
@@ -110,8 +112,9 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
|
|
|
110
112
|
arrives as an image. `accepts.document` is one boolean over every non-image type, so an adaptor whose API has a
|
|
111
113
|
block for only some of them — Anthropic's `document` is PDF and nothing else — names the rest in the text rather
|
|
112
114
|
than dropping them, which is the wire's own rule applied at the one layer that knows which blocks exist. Persisting keeps each
|
|
113
|
-
attachment's name and drops its content: web storage is a few megabytes, one
|
|
114
|
-
a save that fails is silent — so keeping the bytes would quietly stop keeping
|
|
115
|
+
attachment's name, type, address and `ref` and drops only its content: web storage is a few megabytes, one
|
|
116
|
+
screenshot fills a chunk of it, and a save that fails is silent — so keeping the bytes would quietly stop keeping
|
|
117
|
+
the transcript, while an id is the handle a restored conversation has left to find the file with.
|
|
115
118
|
**The ceilings are the message's, not the file's**: 4 MB per file, 8 MB and five files per message, and the same
|
|
116
119
|
file twice is refused by name. The bytes ride inside one turn's JSON, so what a provider refuses is the sum —
|
|
117
120
|
and a request that cannot be sent is one the user has to empty the composer to escape, which is why the refusal
|
|
@@ -127,11 +130,13 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
|
|
|
127
130
|
Nothing downstream trusts the result: an attachment whose `mimeType` is not a string is noted like any other
|
|
128
131
|
unreadable one, and its chip renders its name with no preview, because the host wrote the object and the declared
|
|
129
132
|
type is a claim rather than a check. A field that arrives wrong costs that attachment, never the turn.
|
|
130
|
-
- **A `url` carrier is an address the *provider* fetches,
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
133
|
+
- **A `url` carrier is an address the *provider* fetches, and bytes beside it win.** A reader that uploads answers
|
|
134
|
+
`{ url }` when its storage is publicly reachable, and `{ data }` — or both — when it is not: an attachment
|
|
135
|
+
carrying both is read from its bytes and displayed from its address, so the chip draws a thumbnail and the model
|
|
136
|
+
still gets the picture. That precedence exists because the other order fails the one way nothing reports: the
|
|
137
|
+
default storage backend serves a path only the app can resolve, the adaptor would hand it over as written, and
|
|
138
|
+
the model answers about a picture it never saw. Send a provider-reachable URL **alone** — paired with bytes it
|
|
139
|
+
costs the provider hop whatever the bytes weigh, for a fetch the provider would have done itself.
|
|
135
140
|
- **An image type the provider has no block for is refused at the adaptor, not upstream.** `accepts.image` is one
|
|
136
141
|
boolean, so `AgentService.readable` passes every `image/*` through, and the built-in composer reader base64s
|
|
137
142
|
every `image/*` as well — an `AttachReader` answering `null` means "not mine" and falls through to it, so an app
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@akanjs/cli",
|
|
3
|
-
"version": "3.0.0-beta.
|
|
3
|
+
"version": "3.0.0-beta.6",
|
|
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.
|
|
36
|
+
"akanjs": "3.0.0-beta.6",
|
|
37
37
|
"chalk": "^5.6.2",
|
|
38
38
|
"commander": "^14.0.3",
|
|
39
39
|
"dayjs": "^1.11.20",
|