@agent-native/core 0.43.0 → 0.44.1

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.
Files changed (124) hide show
  1. package/dist/chat-threads/store.d.ts.map +1 -1
  2. package/dist/chat-threads/store.js +71 -10
  3. package/dist/chat-threads/store.js.map +1 -1
  4. package/dist/cli/pr-visual-recap-workflow.d.ts +1 -1
  5. package/dist/cli/pr-visual-recap-workflow.d.ts.map +1 -1
  6. package/dist/cli/pr-visual-recap-workflow.js +1 -1
  7. package/dist/cli/pr-visual-recap-workflow.js.map +1 -1
  8. package/dist/cli/recap.d.ts +23 -0
  9. package/dist/cli/recap.d.ts.map +1 -1
  10. package/dist/cli/recap.js +177 -13
  11. package/dist/cli/recap.js.map +1 -1
  12. package/dist/cli/skills.d.ts +3 -3
  13. package/dist/cli/skills.d.ts.map +1 -1
  14. package/dist/cli/skills.js +67 -20
  15. package/dist/cli/skills.js.map +1 -1
  16. package/dist/client/AssistantChat.d.ts.map +1 -1
  17. package/dist/client/AssistantChat.js +76 -18
  18. package/dist/client/AssistantChat.js.map +1 -1
  19. package/dist/client/blocks/index.d.ts +0 -2
  20. package/dist/client/blocks/index.d.ts.map +1 -1
  21. package/dist/client/blocks/index.js +0 -2
  22. package/dist/client/blocks/index.js.map +1 -1
  23. package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
  24. package/dist/client/blocks/library/AnnotatedCodeBlock.js +22 -9
  25. package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
  26. package/dist/client/blocks/library/ApiEndpointBlock.d.ts.map +1 -1
  27. package/dist/client/blocks/library/ApiEndpointBlock.js +113 -13
  28. package/dist/client/blocks/library/ApiEndpointBlock.js.map +1 -1
  29. package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -1
  30. package/dist/client/blocks/library/DiffBlock.js +63 -35
  31. package/dist/client/blocks/library/DiffBlock.js.map +1 -1
  32. package/dist/client/blocks/library/FileTreeBlock.d.ts.map +1 -1
  33. package/dist/client/blocks/library/FileTreeBlock.js +4 -0
  34. package/dist/client/blocks/library/FileTreeBlock.js.map +1 -1
  35. package/dist/client/blocks/library/JsonExplorerBlock.d.ts.map +1 -1
  36. package/dist/client/blocks/library/JsonExplorerBlock.js +1 -1
  37. package/dist/client/blocks/library/JsonExplorerBlock.js.map +1 -1
  38. package/dist/client/blocks/library/MermaidBlock.d.ts.map +1 -1
  39. package/dist/client/blocks/library/MermaidBlock.js +22 -3
  40. package/dist/client/blocks/library/MermaidBlock.js.map +1 -1
  41. package/dist/client/blocks/library/annotation-rail.d.ts +85 -19
  42. package/dist/client/blocks/library/annotation-rail.d.ts.map +1 -1
  43. package/dist/client/blocks/library/annotation-rail.js +149 -27
  44. package/dist/client/blocks/library/annotation-rail.js.map +1 -1
  45. package/dist/client/blocks/library/code-tabs.js +1 -1
  46. package/dist/client/blocks/library/code-tabs.js.map +1 -1
  47. package/dist/client/blocks/library/diagram.d.ts +17 -0
  48. package/dist/client/blocks/library/diagram.d.ts.map +1 -1
  49. package/dist/client/blocks/library/diagram.js +47 -2
  50. package/dist/client/blocks/library/diagram.js.map +1 -1
  51. package/dist/client/blocks/library/server-specs.d.ts.map +1 -1
  52. package/dist/client/blocks/library/server-specs.js +0 -10
  53. package/dist/client/blocks/library/server-specs.js.map +1 -1
  54. package/dist/client/blocks/library/specs.d.ts.map +1 -1
  55. package/dist/client/blocks/library/specs.js +0 -2
  56. package/dist/client/blocks/library/specs.js.map +1 -1
  57. package/dist/client/blocks/library/wireframe.config.d.ts.map +1 -1
  58. package/dist/client/blocks/library/wireframe.config.js +19 -2
  59. package/dist/client/blocks/library/wireframe.config.js.map +1 -1
  60. package/dist/client/blocks/mdx.d.ts.map +1 -1
  61. package/dist/client/blocks/mdx.js +11 -0
  62. package/dist/client/blocks/mdx.js.map +1 -1
  63. package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
  64. package/dist/client/composer/TiptapComposer.js +13 -8
  65. package/dist/client/composer/TiptapComposer.js.map +1 -1
  66. package/dist/client/composer/pasted-text.d.ts +25 -0
  67. package/dist/client/composer/pasted-text.d.ts.map +1 -1
  68. package/dist/client/composer/pasted-text.js +86 -4
  69. package/dist/client/composer/pasted-text.js.map +1 -1
  70. package/dist/client/rich-markdown-editor/DragHandle.d.ts.map +1 -1
  71. package/dist/client/rich-markdown-editor/DragHandle.js +35 -72
  72. package/dist/client/rich-markdown-editor/DragHandle.js.map +1 -1
  73. package/dist/client/rich-markdown-editor/RegistryBlockNode.d.ts.map +1 -1
  74. package/dist/client/rich-markdown-editor/RegistryBlockNode.js +1 -1
  75. package/dist/client/rich-markdown-editor/RegistryBlockNode.js.map +1 -1
  76. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts +9 -1
  77. package/dist/client/rich-markdown-editor/SharedRichEditor.d.ts.map +1 -1
  78. package/dist/client/rich-markdown-editor/SharedRichEditor.js +3 -1
  79. package/dist/client/rich-markdown-editor/SharedRichEditor.js.map +1 -1
  80. package/dist/client/rich-markdown-editor/extensions.d.ts +13 -1
  81. package/dist/client/rich-markdown-editor/extensions.d.ts.map +1 -1
  82. package/dist/client/rich-markdown-editor/extensions.js +4 -2
  83. package/dist/client/rich-markdown-editor/extensions.js.map +1 -1
  84. package/dist/client/rich-markdown-editor/useCollabReconcile.d.ts.map +1 -1
  85. package/dist/client/rich-markdown-editor/useCollabReconcile.js +11 -1
  86. package/dist/client/rich-markdown-editor/useCollabReconcile.js.map +1 -1
  87. package/dist/db/migrations.d.ts +10 -0
  88. package/dist/db/migrations.d.ts.map +1 -1
  89. package/dist/db/migrations.js +32 -0
  90. package/dist/db/migrations.js.map +1 -1
  91. package/dist/server/og-fonts-data.d.ts +3 -0
  92. package/dist/server/og-fonts-data.d.ts.map +1 -0
  93. package/dist/server/og-fonts-data.js +9 -0
  94. package/dist/server/og-fonts-data.js.map +1 -0
  95. package/dist/server/og-fonts.d.ts +10 -0
  96. package/dist/server/og-fonts.d.ts.map +1 -0
  97. package/dist/server/og-fonts.js +58 -0
  98. package/dist/server/og-fonts.js.map +1 -0
  99. package/dist/server/poll.d.ts.map +1 -1
  100. package/dist/server/poll.js +30 -14
  101. package/dist/server/poll.js.map +1 -1
  102. package/dist/server/social-og-image.d.ts.map +1 -1
  103. package/dist/server/social-og-image.js +16 -5
  104. package/dist/server/social-og-image.js.map +1 -1
  105. package/dist/styles/blocks.css +121 -2
  106. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +2 -0
  107. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +141 -0
  108. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +2 -0
  109. package/dist/usage/store.d.ts +12 -0
  110. package/dist/usage/store.d.ts.map +1 -1
  111. package/dist/usage/store.js +35 -5
  112. package/dist/usage/store.js.map +1 -1
  113. package/package.json +1 -1
  114. package/src/templates/default/.agents/skills/storing-data/SKILL.md +2 -0
  115. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +141 -0
  116. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +2 -0
  117. package/dist/client/blocks/library/decision.config.d.ts +0 -37
  118. package/dist/client/blocks/library/decision.config.d.ts.map +0 -1
  119. package/dist/client/blocks/library/decision.config.js +0 -32
  120. package/dist/client/blocks/library/decision.config.js.map +0 -1
  121. package/dist/client/blocks/library/decision.d.ts +0 -19
  122. package/dist/client/blocks/library/decision.d.ts.map +0 -1
  123. package/dist/client/blocks/library/decision.js +0 -119
  124. package/dist/client/blocks/library/decision.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/cli/skills.ts"],"names":[],"mappings":"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"}
@@ -375,16 +375,35 @@ padding and line-height to read cleanly in the rendered Plan view.
375
375
  positioning, or fixed child widths that can collide when the renderer switches
376
376
  between light/dark, sketch/clean, or different zoom levels.
377
377
 
378
- **Do not wrap intentionally single-line labels.** For tab rails, breadcrumbs,
379
- file chips, code filenames, and other deliberately single-line labels, do not
380
- let long text wrap. It is acceptable and usually preferable to use
381
- \`white-space: nowrap\`, \`overflow: hidden\`, and \`text-overflow: ellipsis\` (or
382
- abstract bars) so the wireframe demonstrates the actual layout behavior instead
383
- of producing ugly vertical text. Use horizontally scrollable or clipped rails
384
- for overflow.
378
+ **Do not wrap intentionally single-line labels.** For toolbars, tab rails,
379
+ breadcrumbs, chip/filter rows, branch and file names, file chips, and code
380
+ filenames any deliberately single-line row do not let long text wrap. Put
381
+ \`white-space: nowrap\` on the row (and \`overflow: hidden; text-overflow: ellipsis\`
382
+ on the individual labels that can grow), so the wireframe demonstrates the actual
383
+ layout behavior instead of producing ugly stacked or vertical text. Use
384
+ horizontally scrollable or clipped rails for overflow.
385
385
 
386
386
  **Fill the frame; keep labels short.** Each artboard is a fixed-size surface — compose enough realistic HTML to fill it top to bottom with even vertical rhythm; never leave a large empty band. On desktop/app-shell sidebars, let the nav stack flex to fill (\`flex:1\`) and add any persistent bottom action/status after it so the rail reads complete in taller frames. On mobile especially, flow real rows down the whole screen (status bar, header, then list/detail content) rather than a header floating above a gap. Keep every label short enough to sit on one line within its column — shorten the copy rather than relying on the frame to absorb it (long labels wrap or clip).
387
387
 
388
+ **Persistent chrome bars span the full frame width.** Top bars, app headers,
389
+ toolbars, and bottom tab/nav bars are full-width chrome, not centered content.
390
+ Lay each one out as a single flex row that fills the frame
391
+ (\`style="display:flex;align-items:center;width:100%"\`) and push trailing actions
392
+ to the right edge with a flex spacer (\`<div style="flex:1"></div>\`) between the
393
+ leading group and the trailing group — never center a bar inside a narrow,
394
+ centered block, and never let it collapse to the width of its contents. In a
395
+ Before/After pair the bar stays full-width in BOTH states even when one state has
396
+ fewer controls; the spacer absorbs the difference so the remaining controls hold
397
+ their edge alignment instead of sliding to the center.
398
+
399
+ **Pin bottom bars to the bottom of the frame.** For mobile tab bars, footers, and
400
+ any persistent bottom action row, make the frame itself a flex column at
401
+ \`height:100%\` (\`style="display:flex;flex-direction:column;height:100%"\`), give the
402
+ scrolling body \`flex:1\` so it absorbs the slack, and place the bar as the LAST
403
+ child of the frame (or set \`margin-top:auto\` on it). The bar then sits flush at
404
+ the bottom of the surface instead of floating directly under the content with an
405
+ empty band beneath it.
406
+
388
407
  **Before / after must be comparable.** When showing a state change, preserve the
389
408
  unchanged controls in both states so the reviewer can see exactly what moved or
390
409
  appeared; do not show an added control as a generic box floating elsewhere in
@@ -583,7 +602,7 @@ only for tiny previews or genuinely linear step flows. Repeat a wireframe in the
583
602
  for a genuinely new detail view or comparison. Skip the visual surface entirely
584
603
  for non-visual work and write a clean rich document. For a simple binary UI
585
604
  visual choice, show the two directions in the canvas only; do not repeat the
586
- same options as body wireframes, a \`decision\` block, or prose. Put the actual
605
+ same options as body wireframes or prose. Put the actual
587
606
  choice in the bottom "Open Questions" form.
588
607
 
589
608
  **Use the right block, and make it carry substance.** For the authoritative,
@@ -606,14 +625,14 @@ so you never emit a block the editor cannot render or round-trip:
606
625
  the exact code is unknown, show the smallest plausible planned shape or a
607
626
  commented stub naming what to fill in. (\`code-tabs\` and \`implementation-map\`
608
627
  are legacy: their renderers stay for old plans, but do not author new ones.)
609
- - \`decision\` ONLY for a genuinely-open either/or the reviewer must still pick
610
- between two or three option cards with real consequences. If you have already
611
- committed to an approach, state it as settled prose or a \`callout\`, NOT a
612
- \`decision\` block; a decision card for a question you have already answered just
613
- reads as a confusing mid-document form. Never duplicate the same choice across a
614
- \`decision\` block and the bottom Open Questions \`question-form\` pick one home
615
- for it. These are static records; do not style them like clickable tabs or chips
616
- unless the renderer truly supports changing the selection.
628
+ - For a decision: if the reviewer must still pick between a genuinely-open
629
+ either/or, put it in the bottom Open Questions \`question-form\` as a \`single\`
630
+ question one option per real alternative, each with a short detail and
631
+ \`recommended: true\` on the one you would choose; do not also restate the same
632
+ choice elsewhere. If you have already committed to an approach, state it as
633
+ settled prose or a \`callout\` with \`tone="decision"\`, optionally with a
634
+ \`columns\` block for a side-by-side comparison of the options you weighed not
635
+ as a confusing mid-document form for a question you have already answered.
617
636
  - \`columns\` for side-by-side before/after or current/target comparisons where
618
637
  each side needs real nested blocks; label the columns clearly and avoid
619
638
  stacking comparison blocks vertically when parallel reading is the point.
@@ -655,8 +674,7 @@ reviewer can answer with a custom option — never add an explicit "Other" optio
655
674
  yourself; set \`allowOther: false\` only when a free-text answer makes no sense.
656
675
  Keep non-answerable assumptions or risks as concise \`callout\` blocks in
657
676
  the relevant section. Never bury a questions/decisions wall inside the plan
658
- narrative, and never ask the same question in both a \`decision\` block and a
659
- \`question-form\`.
677
+ narrative, and never ask the same question twice.
660
678
 
661
679
  **\`custom-html\` is a bounded escape hatch only** — a single complete fragment
662
680
  inside a block, never \`html\`/\`head\`/\`body\`/\`script\` tags, never a generic
@@ -685,8 +703,9 @@ correct desktop footprint, theme, and one subtle whole-frame wobble. Plain-text
685
703
  designer notes sit spaced off the frame, pointing only at the controls that need
686
704
  explanation. Below it, a Claude/Codex-grade document: objective and
687
705
  done-criteria, a few \`code\` blocks (grouped in a vertical \`tabs\` block when
688
- more than one) showing the real shape of the load-bearing files, a \`decision\`
689
- card weighing two real approaches,
706
+ more than one) showing the real shape of the load-bearing files, a \`callout\`
707
+ with \`tone="decision"\` stating the chosen approach with a \`columns\` block
708
+ weighing the two real options behind it,
690
709
  and a validation step — none of it repeating the canvas. If the task also
691
710
  changes a multi-step completion flow, the same top area includes a Prototype tab
692
711
  whose screens use the same labels and states as the canvas artboards, with
@@ -1508,6 +1527,26 @@ Only add prose blocks when they tell the reviewer something specific about the
1508
1527
  change that the structured blocks do not: the objective, a real compatibility
1509
1528
  risk, an important decision visible in the diff, or a grounded review note.
1510
1529
 
1530
+ ## Recaps Must Be Substantial
1531
+
1532
+ Lean is not the same as thin. A recap is not a single wireframe plus one
1533
+ sentence — that under-serves the reviewer as much as boilerplate prose over-serves
1534
+ them. Alongside the visual/structural headline (wireframes, \`data-model\`,
1535
+ \`api-endpoint\`, \`diagram\`), a substantial recap also carries the implementation
1536
+ evidence:
1537
+
1538
+ - A \`file-tree\` of the changed files with each entry's \`change\` flag, so the
1539
+ reviewer sees the footprint of the work at a glance.
1540
+ - The split \`diff\` of the KEY changed files, grouped under a \`## Key changes\`
1541
+ \`rich-text\` heading in a single vertical \`tabs\` block (file labels as the left
1542
+ rail), with a one-line \`summary\` and a few \`annotations\` on each — so the
1543
+ reviewer can drop from the high-altitude shape straight into the load-bearing
1544
+ code.
1545
+
1546
+ Skip the diff appendix only for a genuinely tiny change that reviews faster as
1547
+ plain diff (see "When To Use"); for any change worth recapping, the file-tree and
1548
+ key-change diffs belong in the plan.
1549
+
1511
1550
  ## UI Impact Needs Wireframes
1512
1551
 
1513
1552
  When the diff changes rendered UI, layout, density, visual state, interaction
@@ -1622,6 +1661,14 @@ the actual diff:
1622
1661
  removed endpoints with \`deprecated: true\` and explain in prose.
1623
1662
  Keep multiple API endpoints in the normal single-column document flow unless
1624
1663
  they are an explicit before/after contract comparison.
1664
+ Author each request/response example as a SINGLE valid JSON value — one
1665
+ top-level object or array, parseable on its own — so it renders in the
1666
+ collapsible JSON explorer. Do not put \`//\` or \`/* */\` comments, prose,
1667
+ trailing commas, or two or more concatenated top-level objects inside one
1668
+ example; a non-parseable body falls back to flat text and loses the explorer.
1669
+ When an endpoint has several distinct message shapes (for example separate
1670
+ websocket frame types, or a success body versus an error body), give each its
1671
+ OWN example with its own label rather than cramming them into one body.
1625
1672
  - **Compatibility-sensitive change** → short \`rich-text\` notes beside the
1626
1673
  relevant \`data-model\` / \`api-endpoint\` block. Name the changed field,
1627
1674
  endpoint, or behavior and mark whether it is breaking, risky, or non-breaking;