@akanjs/cli 3.0.0-alpha.49 → 3.0.0-alpha.50

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
- 461d177fea7bea8b38847fed3e7046a101f7ad110bf3e5e3e577f6fb1ce9531f
1
+ fc931b5c84401e9bf2bda97ced4e93b6df47eb3293b40b306161d09542b821d7
@@ -385,6 +385,15 @@ apps and libs never import it directly (`no-import-external-library`) — everyt
385
385
  `highlight` scrolls its target into view and flashes it **once the scroll lands**, since a smooth scroll across a
386
386
  long page outlasts the flash; it is the one built-in that exists for the *user's* benefit, because showing where
387
387
  a control is beats writing directions to it.
388
+ - **Every tool's return value is bounded at 20,000 characters before it enters the transcript** (`ToolOutput.limit`,
389
+ clipped with a note that gives the real size and tells the model to read a narrower part). `readScreen` caps
390
+ itself; nothing else did, and a store key is sized for a screen rather than for a model's window — one
391
+ `readState` of a list whose rows carry inlined bytes is megabytes, which the loop then posts on this turn *and on
392
+ every turn after it*, so the window fills after four messages. Compaction cannot save that: it summarizes what is
393
+ above the cut and a result this large arrives below it. Clipped rather than dropped, because a model handed a
394
+ value it cannot see the end of asks a narrower question, where one handed nothing answers from the field names.
395
+ The cap is a safety rail, not the design: a tool should return what answers the question — an id, a count, the
396
+ three fields the agent asked about — and `AgentContext` inlines only small primitives for the same reason.
388
397
  - **A slow tool reports its own progress with `AgentProgress.report(message, { done, total })`** from wherever the
389
398
  work is — a store action, an upload loop, an adapter — reached through a module slot rather than a parameter, and
390
399
  a no-op when nobody is rendering it. The chat shows it on that call's row until the row resolves. It is the
@@ -531,6 +531,12 @@ package; apps and libs never import it directly (`no-import-external-library`)
531
531
  nothing — normalize with the control's `transform` prop, and multi-write with a `_postSet<Field>` store method.
532
532
  - **Reading is per key, not per store.** `st.use.x({ agent: false })` keeps a subscribed key off the surface;
533
533
  a key no component reads is unreadable. A value with populated `hidden`/`secret` fields is refused at read.
534
+ - **Return what answers the question, not the record.** A tool's value is capped at 20,000 characters before it
535
+ enters the transcript and clipped with a note the model reads (`ToolOutput.limit`), because a store key is sized
536
+ for a screen and not for a model's window: one `readState` of a list whose rows carry inlined bytes is megabytes,
537
+ and from there it rides *every* later turn. Each tool row in the chat carries its own estimated token cost and
538
+ opens onto the value the model was handed — that row is where a conversation that filled up in four messages
539
+ explains itself.
534
540
  - **Route guidance is `<Agent.Guide instructions="..." />`** rendered from a `_layout.tsx` or page — the render
535
541
  tree is the cascade. It is a component, not a `pageConfig` field, and `*.abstract.md` is never served to agents.
536
542
  - The framework publishes five built-ins on every store surface — `navigate`, `goBack`, `readScreen`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@akanjs/cli",
3
- "version": "3.0.0-alpha.49",
3
+ "version": "3.0.0-alpha.50",
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.49",
37
+ "akanjs": "3.0.0-alpha.50",
38
38
  "chalk": "^5.6.2",
39
39
  "commander": "^14.0.3",
40
40
  "dayjs": "^1.11.20",