weasel-icons 0.16.1 → 0.17.0

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 (134) hide show
  1. package/README.md +4 -0
  2. package/dist/icons/agent-handoff/agent-handoff-icon.d.ts +5 -0
  3. package/dist/icons/agent-handoff/agent-handoff-icon.js +9 -0
  4. package/dist/icons/agent-handoff/agent-handoff-rig.d.ts +62 -0
  5. package/dist/icons/agent-handoff/agent-handoff-rig.js +74 -0
  6. package/dist/icons/agent-loop/agent-loop-icon.d.ts +5 -0
  7. package/dist/icons/agent-loop/agent-loop-icon.js +9 -0
  8. package/dist/icons/agent-loop/agent-loop-rig.d.ts +83 -0
  9. package/dist/icons/agent-loop/agent-loop-rig.js +85 -0
  10. package/dist/icons/agent-orchestrator/agent-orchestrator-icon.d.ts +5 -0
  11. package/dist/icons/agent-orchestrator/agent-orchestrator-icon.js +9 -0
  12. package/dist/icons/agent-orchestrator/agent-orchestrator-rig.d.ts +98 -0
  13. package/dist/icons/agent-orchestrator/agent-orchestrator-rig.js +84 -0
  14. package/dist/icons/beam-search/beam-search-icon.d.ts +5 -0
  15. package/dist/icons/beam-search/beam-search-icon.js +9 -0
  16. package/dist/icons/beam-search/beam-search-rig.d.ts +72 -0
  17. package/dist/icons/beam-search/beam-search-rig.js +88 -0
  18. package/dist/icons/causal-mask/causal-mask-icon.d.ts +5 -0
  19. package/dist/icons/causal-mask/causal-mask-icon.js +9 -0
  20. package/dist/icons/causal-mask/causal-mask-rig.d.ts +64 -0
  21. package/dist/icons/causal-mask/causal-mask-rig.js +75 -0
  22. package/dist/icons/chunking/chunking-icon.d.ts +5 -0
  23. package/dist/icons/chunking/chunking-icon.js +9 -0
  24. package/dist/icons/chunking/chunking-rig.d.ts +76 -0
  25. package/dist/icons/chunking/chunking-rig.js +91 -0
  26. package/dist/icons/code-sandbox/code-sandbox-icon.d.ts +5 -0
  27. package/dist/icons/code-sandbox/code-sandbox-icon.js +9 -0
  28. package/dist/icons/code-sandbox/code-sandbox-rig.d.ts +94 -0
  29. package/dist/icons/code-sandbox/code-sandbox-rig.js +74 -0
  30. package/dist/icons/entity-extraction/entity-extraction-icon.d.ts +5 -0
  31. package/dist/icons/entity-extraction/entity-extraction-icon.js +9 -0
  32. package/dist/icons/entity-extraction/entity-extraction-rig.d.ts +199 -0
  33. package/dist/icons/entity-extraction/entity-extraction-rig.js +162 -0
  34. package/dist/icons/eval-suite/eval-suite-icon.d.ts +5 -0
  35. package/dist/icons/eval-suite/eval-suite-icon.js +9 -0
  36. package/dist/icons/eval-suite/eval-suite-rig.d.ts +147 -0
  37. package/dist/icons/eval-suite/eval-suite-rig.js +105 -0
  38. package/dist/icons/graph-rag/graph-rag-icon.d.ts +5 -0
  39. package/dist/icons/graph-rag/graph-rag-icon.js +9 -0
  40. package/dist/icons/graph-rag/graph-rag-rig.d.ts +13 -0
  41. package/dist/icons/graph-rag/graph-rag-rig.js +122 -0
  42. package/dist/icons/grounded-citation/grounded-citation-icon.d.ts +5 -0
  43. package/dist/icons/grounded-citation/grounded-citation-icon.js +9 -0
  44. package/dist/icons/grounded-citation/grounded-citation-rig.d.ts +80 -0
  45. package/dist/icons/grounded-citation/grounded-citation-rig.js +69 -0
  46. package/dist/icons/guardrail/guardrail-icon.d.ts +5 -0
  47. package/dist/icons/guardrail/guardrail-icon.js +9 -0
  48. package/dist/icons/guardrail/guardrail-rig.d.ts +71 -0
  49. package/dist/icons/guardrail/guardrail-rig.js +83 -0
  50. package/dist/icons/human-approval/human-approval-icon.d.ts +5 -0
  51. package/dist/icons/human-approval/human-approval-icon.js +9 -0
  52. package/dist/icons/human-approval/human-approval-rig.d.ts +48 -0
  53. package/dist/icons/human-approval/human-approval-rig.js +57 -0
  54. package/dist/icons/knowledge-triple/knowledge-triple-icon.d.ts +5 -0
  55. package/dist/icons/knowledge-triple/knowledge-triple-icon.js +9 -0
  56. package/dist/icons/knowledge-triple/knowledge-triple-rig.d.ts +150 -0
  57. package/dist/icons/knowledge-triple/knowledge-triple-rig.js +143 -0
  58. package/dist/icons/mcp-connector/mcp-connector-icon.d.ts +5 -0
  59. package/dist/icons/mcp-connector/mcp-connector-icon.js +9 -0
  60. package/dist/icons/mcp-connector/mcp-connector-rig.d.ts +175 -0
  61. package/dist/icons/mcp-connector/mcp-connector-rig.js +141 -0
  62. package/dist/icons/mixture-of-experts/mixture-of-experts-icon.d.ts +5 -0
  63. package/dist/icons/mixture-of-experts/mixture-of-experts-icon.js +9 -0
  64. package/dist/icons/mixture-of-experts/mixture-of-experts-rig.d.ts +15 -0
  65. package/dist/icons/mixture-of-experts/mixture-of-experts-rig.js +163 -0
  66. package/dist/icons/multi-head-attention/multi-head-attention-icon.d.ts +5 -0
  67. package/dist/icons/multi-head-attention/multi-head-attention-icon.js +9 -0
  68. package/dist/icons/multi-head-attention/multi-head-attention-rig.d.ts +52 -0
  69. package/dist/icons/multi-head-attention/multi-head-attention-rig.js +96 -0
  70. package/dist/icons/next-token/next-token-icon.d.ts +5 -0
  71. package/dist/icons/next-token/next-token-icon.js +9 -0
  72. package/dist/icons/next-token/next-token-rig.d.ts +118 -0
  73. package/dist/icons/next-token/next-token-rig.js +107 -0
  74. package/dist/icons/positional-encoding/positional-encoding-icon.d.ts +5 -0
  75. package/dist/icons/positional-encoding/positional-encoding-icon.js +9 -0
  76. package/dist/icons/positional-encoding/positional-encoding-rig.d.ts +77 -0
  77. package/dist/icons/positional-encoding/positional-encoding-rig.js +104 -0
  78. package/dist/icons/rag-retrieve/rag-retrieve-icon.d.ts +5 -0
  79. package/dist/icons/rag-retrieve/rag-retrieve-icon.js +9 -0
  80. package/dist/icons/rag-retrieve/rag-retrieve-rig.d.ts +133 -0
  81. package/dist/icons/rag-retrieve/rag-retrieve-rig.js +116 -0
  82. package/dist/icons/reranker/reranker-icon.d.ts +5 -0
  83. package/dist/icons/reranker/reranker-icon.js +9 -0
  84. package/dist/icons/reranker/reranker-rig.d.ts +150 -0
  85. package/dist/icons/reranker/reranker-rig.js +131 -0
  86. package/dist/icons/residual-stream/residual-stream-icon.d.ts +5 -0
  87. package/dist/icons/residual-stream/residual-stream-icon.js +9 -0
  88. package/dist/icons/residual-stream/residual-stream-rig.d.ts +107 -0
  89. package/dist/icons/residual-stream/residual-stream-rig.js +160 -0
  90. package/dist/icons/sampling-temperature/sampling-temperature-icon.d.ts +5 -0
  91. package/dist/icons/sampling-temperature/sampling-temperature-icon.js +9 -0
  92. package/dist/icons/sampling-temperature/sampling-temperature-rig.d.ts +34 -0
  93. package/dist/icons/sampling-temperature/sampling-temperature-rig.js +44 -0
  94. package/dist/icons/self-attention/self-attention-icon.d.ts +5 -0
  95. package/dist/icons/self-attention/self-attention-icon.js +9 -0
  96. package/dist/icons/self-attention/self-attention-rig.d.ts +16 -0
  97. package/dist/icons/self-attention/self-attention-rig.js +101 -0
  98. package/dist/icons/semantic-cache/semantic-cache-icon.d.ts +5 -0
  99. package/dist/icons/semantic-cache/semantic-cache-icon.js +9 -0
  100. package/dist/icons/semantic-cache/semantic-cache-rig.d.ts +111 -0
  101. package/dist/icons/semantic-cache/semantic-cache-rig.js +90 -0
  102. package/dist/icons/text-embedding/text-embedding-icon.d.ts +5 -0
  103. package/dist/icons/text-embedding/text-embedding-icon.js +9 -0
  104. package/dist/icons/text-embedding/text-embedding-rig.d.ts +88 -0
  105. package/dist/icons/text-embedding/text-embedding-rig.js +95 -0
  106. package/dist/icons/tool-call/tool-call-icon.d.ts +5 -0
  107. package/dist/icons/tool-call/tool-call-icon.js +9 -0
  108. package/dist/icons/tool-call/tool-call-rig.d.ts +47 -0
  109. package/dist/icons/tool-call/tool-call-rig.js +69 -0
  110. package/dist/icons/top-k-sampling/top-k-sampling-icon.d.ts +5 -0
  111. package/dist/icons/top-k-sampling/top-k-sampling-icon.js +9 -0
  112. package/dist/icons/top-k-sampling/top-k-sampling-rig.d.ts +106 -0
  113. package/dist/icons/top-k-sampling/top-k-sampling-rig.js +113 -0
  114. package/dist/icons/top-p-sampling/top-p-sampling-icon.d.ts +5 -0
  115. package/dist/icons/top-p-sampling/top-p-sampling-icon.js +9 -0
  116. package/dist/icons/top-p-sampling/top-p-sampling-rig.d.ts +79 -0
  117. package/dist/icons/top-p-sampling/top-p-sampling-rig.js +98 -0
  118. package/dist/icons/trace-spans/trace-spans-icon.d.ts +5 -0
  119. package/dist/icons/trace-spans/trace-spans-icon.js +9 -0
  120. package/dist/icons/trace-spans/trace-spans-rig.d.ts +13 -0
  121. package/dist/icons/trace-spans/trace-spans-rig.js +121 -0
  122. package/dist/icons/transformer-block/transformer-block-icon.d.ts +5 -0
  123. package/dist/icons/transformer-block/transformer-block-icon.js +9 -0
  124. package/dist/icons/transformer-block/transformer-block-rig.d.ts +17 -0
  125. package/dist/icons/transformer-block/transformer-block-rig.js +154 -0
  126. package/dist/icons/vector-search/vector-search-icon.d.ts +5 -0
  127. package/dist/icons/vector-search/vector-search-icon.js +9 -0
  128. package/dist/icons/vector-search/vector-search-rig.d.ts +137 -0
  129. package/dist/icons/vector-search/vector-search-rig.js +119 -0
  130. package/dist/index.d.ts +32 -0
  131. package/dist/index.js +32 -0
  132. package/dist/shared/icon-colors.d.ts +32 -0
  133. package/dist/source.json +1 -1
  134. package/package.json +161 -1
package/README.md CHANGED
@@ -8,6 +8,10 @@ Version `0.10.0` contains 874 icons, adding 200 across documents, collaboration,
8
8
 
9
9
  Version `0.7.0` contained 469 icons; `0.6.0` contained 265 icons.
10
10
 
11
+ ## Version 0.17.0
12
+
13
+ Adds 32 icons for agent workflows, tool calls, approvals, retrieval, knowledge graphs, attention, transformer computation and token sampling. The collection now contains 1,086 icons. All new icons include three typed states, optional ongoing motion, accent colours, matching editable CLI source and related search terms. Existing icon artwork, public states, shared runtime and the customization skill are unchanged.
14
+
11
15
  ## Version 0.16.1
12
16
 
13
17
  Strengthens the customization skill with a render–inspect–repair loop: inspect real pixels and full motion cycles, correct contact, spacing and reset defects, then replay the same route after each fix. Icon artwork, states, exports and the 1,054-icon collection are unchanged.
@@ -0,0 +1,5 @@
1
+ import type { StatefulIconProps } from "../../shared/icon-types.js";
2
+ import { type AgentHandoffState } from "./agent-handoff-rig.js";
3
+ export { agentHandoffStates, type AgentHandoffState } from "./agent-handoff-rig.js";
4
+ export type AgentHandoffIconProps = StatefulIconProps<AgentHandoffState>;
5
+ export declare const AgentHandoffIcon: import("react").NamedExoticComponent<AgentHandoffIconProps>;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { memo } from 'react';
4
+ import { ArticulatedIcon } from "../../shared/articulated-icon.js";
5
+ import { agentHandoffArt, agentHandoffStates } from "./agent-handoff-rig.js";
6
+ export { agentHandoffStates } from "./agent-handoff-rig.js";
7
+ export const AgentHandoffIcon = memo(function AgentHandoffIcon(props) {
8
+ return _jsx(ArticulatedIcon, { art: agentHandoffArt, states: agentHandoffStates, ...props });
9
+ });
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Agent A hands the conversation (bubble) and the turn (fill level) to agent B. The turn is
3
+ * poured, not swapped: A's fill drains while B's fills, as the bubble glides across above them.
4
+ */
5
+ export declare const agentHandoffStates: readonly ["holding", "handing-off", "handed-off"];
6
+ export type AgentHandoffState = (typeof agentHandoffStates)[number];
7
+ export declare const agentHandoffArt: {
8
+ name: string;
9
+ parts: ({
10
+ fillOnly: "ink";
11
+ accent: true;
12
+ poses: {
13
+ flex: number;
14
+ }[];
15
+ gestures: {
16
+ duration: number;
17
+ repeatAfter: number;
18
+ loop: boolean;
19
+ frames: ({
20
+ at: number;
21
+ flex: number;
22
+ } | {
23
+ at: number;
24
+ flex?: undefined;
25
+ })[];
26
+ }[];
27
+ paths: string[];
28
+ pathOffsets: number[][];
29
+ name: string;
30
+ pathStates?: undefined;
31
+ surface?: undefined;
32
+ } | {
33
+ name: string;
34
+ paths: string[];
35
+ poses: {}[];
36
+ pathStates?: undefined;
37
+ surface?: undefined;
38
+ gestures?: undefined;
39
+ } | {
40
+ name: string;
41
+ paths: string[];
42
+ pathStates: string[][];
43
+ surface: true;
44
+ poses: ({
45
+ x?: undefined;
46
+ } | {
47
+ x: number;
48
+ })[];
49
+ gestures: {
50
+ duration: number;
51
+ repeatAfter: number;
52
+ loop: boolean;
53
+ frames: ({
54
+ at: number;
55
+ x: number;
56
+ } | {
57
+ at: number;
58
+ x?: undefined;
59
+ })[];
60
+ }[];
61
+ })[];
62
+ };
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Agent A hands the conversation (bubble) and the turn (fill level) to agent B. The turn is
3
+ * poured, not swapped: A's fill drains while B's fills, as the bubble glides across above them.
4
+ */
5
+ export const agentHandoffStates = ['holding', 'handing-off', 'handed-off'];
6
+ const box = (x, y, w, h, r) => `M${x + r} ${y}H${x + w - r}A${r} ${r} 0 0 1 ${x + w} ${y + r}V${y + h - r}A${r} ${r} 0 0 1 ${x + w - r} ${y + h}H${x + r}A${r} ${r} 0 0 1 ${x} ${y + h - r}V${y + r}A${r} ${r} 0 0 1 ${x + r} ${y}Z`;
7
+ // Agent bodies: A on the left, B on the right, same size.
8
+ const TOP = 12.8;
9
+ const BOTTOM = 20.4;
10
+ const A = { x: 2.6, w: 7.6 };
11
+ const B = { x: 13.8, w: 7.6 };
12
+ // A plain rectangle: its corners stay under the rounded outline's stroke. flex 1 = empty.
13
+ const level = (x, w) => ({
14
+ paths: [`M${x} ${TOP}H${x + w}V${BOTTOM}H${x}Z`],
15
+ pathOffsets: [[0, BOTTOM - TOP, 0, 0, 0]],
16
+ });
17
+ const bubble = (tail) => [
18
+ // Quadratic corners, not arcs: arc flags would be interpolated by the morph.
19
+ `M4.2 3H8.6Q10.2 3 10.2 4.6V7Q10.2 8.6 8.6 8.6H7.6L${tail} 10.2L5.2 8.6H4.2Q2.6 8.6 2.6 7V4.6Q2.6 3 4.2 3Z`,
20
+ 'M4.6 5.8H8.2',
21
+ ];
22
+ const glide = (dx) => ({
23
+ duration: 1.4,
24
+ repeatAfter: 1.4,
25
+ loop: false,
26
+ frames: [{ at: 0, x: dx }, { at: 1 }],
27
+ });
28
+ // The turn moves only once the context is mostly across.
29
+ const pour = (dFlex) => ({
30
+ duration: 1.4,
31
+ repeatAfter: 1.4,
32
+ loop: false,
33
+ frames: [{ at: 0, flex: dFlex }, { at: 0.35, flex: dFlex }, { at: 1 }],
34
+ });
35
+ export const agentHandoffArt = {
36
+ name: 'agent-handoff',
37
+ parts: [
38
+ {
39
+ name: 'turn-a',
40
+ ...level(A.x, A.w),
41
+ fillOnly: 'ink',
42
+ accent: true,
43
+ poses: [{ flex: 0 }, { flex: 0.5 }, { flex: 1 }],
44
+ gestures: [pour(0.5), pour(-0.5), pour(-0.5)],
45
+ },
46
+ {
47
+ name: 'turn-b',
48
+ ...level(B.x, B.w),
49
+ fillOnly: 'ink',
50
+ accent: true,
51
+ poses: [{ flex: 1 }, { flex: 0.5 }, { flex: 0 }],
52
+ gestures: [pour(-0.5), pour(0.5), pour(0.5)],
53
+ },
54
+ {
55
+ name: 'agent-a',
56
+ paths: [box(A.x, TOP, A.w, BOTTOM - TOP, 1.6)],
57
+ poses: [{}, {}, {}],
58
+ },
59
+ {
60
+ name: 'agent-b',
61
+ paths: [box(B.x, TOP, B.w, BOTTOM - TOP, 1.6)],
62
+ poses: [{}, {}, {}],
63
+ },
64
+ {
65
+ name: 'context',
66
+ paths: bubble(6.4),
67
+ // The tail leans toward B while the context is in transit.
68
+ pathStates: [bubble(6.4), bubble(7.6), bubble(6.4)],
69
+ surface: true,
70
+ poses: [{}, { x: 5.6 }, { x: 11.2 }],
71
+ gestures: [glide(5.6), glide(-5.6), glide(-5.6)],
72
+ },
73
+ ],
74
+ };
@@ -0,0 +1,5 @@
1
+ import type { StatefulIconProps } from "../../shared/icon-types.js";
2
+ import { type AgentLoopState } from "./agent-loop-rig.js";
3
+ export { agentLoopStates, type AgentLoopState } from "./agent-loop-rig.js";
4
+ export type AgentLoopIconProps = StatefulIconProps<AgentLoopState>;
5
+ export declare const AgentLoopIcon: import("react").NamedExoticComponent<AgentLoopIconProps>;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { memo } from 'react';
4
+ import { ArticulatedIcon } from "../../shared/articulated-icon.js";
5
+ import { agentLoopArt, agentLoopStates } from "./agent-loop-rig.js";
6
+ export { agentLoopStates } from "./agent-loop-rig.js";
7
+ export const AgentLoopIcon = memo(function AgentLoopIcon(props) {
8
+ return _jsx(ArticulatedIcon, { art: agentLoopArt, states: agentLoopStates, ...props });
9
+ });
@@ -0,0 +1,83 @@
1
+ /**
2
+ * A ReAct cycle drawn as a one-way loop with three chevron stations (a roundabout). While the agent iterates a
3
+ * run token orbits the loop; when the stop condition holds the token leaves along the
4
+ * tangent exit into a UML final node.
5
+ */
6
+ export declare const agentLoopStates: readonly ["idle", "iterating", "done"];
7
+ export type AgentLoopState = (typeof agentLoopStates)[number];
8
+ export declare const agentLoopArt: {
9
+ name: string;
10
+ parts: ({
11
+ name: string;
12
+ paths: string[];
13
+ detail: true;
14
+ poses: ({
15
+ opacity?: undefined;
16
+ } | {
17
+ opacity: number;
18
+ })[];
19
+ fillOnly?: undefined;
20
+ accent?: undefined;
21
+ pivot?: undefined;
22
+ spin?: undefined;
23
+ gestures?: undefined;
24
+ } | {
25
+ name: string;
26
+ paths: string[];
27
+ poses: ({
28
+ opacity?: undefined;
29
+ } | {
30
+ opacity: number;
31
+ })[];
32
+ detail?: undefined;
33
+ fillOnly?: undefined;
34
+ accent?: undefined;
35
+ pivot?: undefined;
36
+ spin?: undefined;
37
+ gestures?: undefined;
38
+ } | {
39
+ name: string;
40
+ paths: string[];
41
+ fillOnly: "ink";
42
+ accent: true;
43
+ pivot: [number, number];
44
+ spin: {
45
+ state: number;
46
+ degreesPerSecond: number;
47
+ };
48
+ poses: ({
49
+ opacity: number;
50
+ } | {
51
+ opacity?: undefined;
52
+ })[];
53
+ detail?: undefined;
54
+ gestures?: undefined;
55
+ } | {
56
+ name: string;
57
+ paths: string[];
58
+ fillOnly: "ink";
59
+ accent: true;
60
+ poses: ({
61
+ x: number;
62
+ opacity: number;
63
+ } | {
64
+ x: number;
65
+ opacity?: undefined;
66
+ })[];
67
+ gestures: ({
68
+ duration: number;
69
+ repeatAfter: number;
70
+ loop: false;
71
+ frames: ({
72
+ at: number;
73
+ x: number;
74
+ } | {
75
+ at: number;
76
+ x?: undefined;
77
+ })[];
78
+ } | null)[];
79
+ detail?: undefined;
80
+ pivot?: undefined;
81
+ spin?: undefined;
82
+ })[];
83
+ };
@@ -0,0 +1,85 @@
1
+ /**
2
+ * A ReAct cycle drawn as a one-way loop with three chevron stations (a roundabout). While the agent iterates a
3
+ * run token orbits the loop; when the stop condition holds the token leaves along the
4
+ * tangent exit into a UML final node.
5
+ */
6
+ export const agentLoopStates = ['idle', 'iterating', 'done'];
7
+ const circle = (cx, cy, r) => `M${cx - r} ${cy}a${r} ${r} 0 1 0 ${2 * r} 0a${r} ${r} 0 1 0 ${-2 * r} 0Z`;
8
+ // Loop centre (8.8, 9.2), radius 6.2, travelled counter-clockwise on screen.
9
+ // Stations at 0°, 120° and 240°; the exit leaves tangentially at 90° (bottom; screen angles, y down).
10
+ const CX = 8.8;
11
+ const CY = 9.2;
12
+ const R = 6.2;
13
+ /**
14
+ * A step station is a chevron astride the loop at angle `deg`, pointing along the
15
+ * counter-clockwise travel direction: three of them make the loop read as a one-way cycle.
16
+ */
17
+ const station = (deg) => {
18
+ const a = (deg * Math.PI) / 180;
19
+ const n = [Math.cos(a), Math.sin(a)];
20
+ const d = [Math.sin(a), -Math.cos(a)];
21
+ const tip = [CX + R * n[0] + 0.55 * d[0], CY + R * n[1] + 0.55 * d[1]];
22
+ const back = [tip[0] - 1.4 * d[0], tip[1] - 1.4 * d[1]];
23
+ const p = (x, y) => `${x.toFixed(2)} ${y.toFixed(2)}`;
24
+ return `M${p(back[0] + 1.4 * n[0], back[1] + 1.4 * n[1])}L${p(tip[0], tip[1])}L${p(back[0] - 1.4 * n[0], back[1] - 1.4 * n[1])}`;
25
+ };
26
+ const decide = [CX, CY + R];
27
+ const finalNode = [18.3, CY + R];
28
+ const exitRun = +(finalNode[0] - decide[0]).toFixed(2);
29
+ export const agentLoopArt = {
30
+ name: 'agent-loop',
31
+ parts: [
32
+ {
33
+ name: 'loop',
34
+ paths: [circle(CX, CY, R)],
35
+ detail: true,
36
+ poses: [{}, {}, { opacity: 0.4 }],
37
+ },
38
+ {
39
+ // Act, observe, reason: three chevron stations that also give the loop its direction.
40
+ name: 'stations',
41
+ paths: [station(0), station(120), station(240)],
42
+ poses: [{}, {}, { opacity: 0.4 }],
43
+ },
44
+ {
45
+ // Tangent exit: the loop's bottom continues straight on to the final node.
46
+ name: 'exit',
47
+ paths: [`M${decide[0]} ${decide[1]}H15.3`],
48
+ poses: [{ opacity: 0.3 }, { opacity: 0.3 }, {}],
49
+ },
50
+ {
51
+ // UML final node: a ring that the token completes into a bullseye.
52
+ name: 'final-node',
53
+ paths: [circle(finalNode[0], finalNode[1], 3)],
54
+ poses: [{ opacity: 0.3 }, { opacity: 0.3 }, {}],
55
+ },
56
+ {
57
+ // Orbiting run token: constant counter-clockwise travel along the loop while iterating.
58
+ name: 'token-orbit',
59
+ paths: [circle(decide[0], decide[1], 1.45)],
60
+ fillOnly: 'ink',
61
+ accent: true,
62
+ pivot: [CX, CY],
63
+ spin: { state: 1, degreesPerSecond: -72 },
64
+ poses: [{ opacity: 0 }, {}, { opacity: 0 }],
65
+ },
66
+ {
67
+ // Leaving token: rests in the final node; on entry it rides the exit from the bottom of the loop.
68
+ name: 'token-exit',
69
+ paths: [circle(decide[0], decide[1], 1.3)],
70
+ fillOnly: 'ink',
71
+ accent: true,
72
+ poses: [{ x: exitRun, opacity: 0 }, { x: exitRun, opacity: 0 }, { x: exitRun }],
73
+ gestures: [
74
+ null,
75
+ null,
76
+ {
77
+ duration: 1.1,
78
+ repeatAfter: 1.1,
79
+ loop: false,
80
+ frames: [{ at: 0, x: -exitRun }, { at: 0.1, x: -exitRun }, { at: 0.85 }, { at: 1 }],
81
+ },
82
+ ],
83
+ },
84
+ ],
85
+ };
@@ -0,0 +1,5 @@
1
+ import type { StatefulIconProps } from "../../shared/icon-types.js";
2
+ import { type AgentOrchestratorState } from "./agent-orchestrator-rig.js";
3
+ export { agentOrchestratorStates, type AgentOrchestratorState } from "./agent-orchestrator-rig.js";
4
+ export type AgentOrchestratorIconProps = StatefulIconProps<AgentOrchestratorState>;
5
+ export declare const AgentOrchestratorIcon: import("react").NamedExoticComponent<AgentOrchestratorIconProps>;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { memo } from 'react';
4
+ import { ArticulatedIcon } from "../../shared/articulated-icon.js";
5
+ import { agentOrchestratorArt, agentOrchestratorStates, } from "./agent-orchestrator-rig.js";
6
+ export { agentOrchestratorStates } from "./agent-orchestrator-rig.js";
7
+ export const AgentOrchestratorIcon = memo(function AgentOrchestratorIcon(props) {
8
+ return _jsx(ArticulatedIcon, { art: agentOrchestratorArt, states: agentOrchestratorStates, ...props });
9
+ });
@@ -0,0 +1,98 @@
1
+ /**
2
+ * Orchestrator–workers: the lead sends three sub-tasks down its edges in parallel, each worker
3
+ * holds one while it runs, and the results travel back up to fuse into one answer in the lead.
4
+ * Sub-tasks that are not out with a worker wait hidden inside the lead (occluded, not faded).
5
+ */
6
+ export declare const agentOrchestratorStates: readonly ["idle", "delegating", "merged"];
7
+ export type AgentOrchestratorState = (typeof agentOrchestratorStates)[number];
8
+ export declare const agentOrchestratorArt: {
9
+ name: string;
10
+ parts: ({
11
+ name: "task-left" | "task-middle" | "task-right";
12
+ paths: string[];
13
+ fillOnly: "ink";
14
+ accent: boolean;
15
+ poses: ({
16
+ x: 0 | 6.27 | -6.27;
17
+ y: -12 | -9.17;
18
+ opacity: number;
19
+ } | {
20
+ x?: undefined;
21
+ y?: undefined;
22
+ opacity?: undefined;
23
+ } | {
24
+ x: 0 | 6.27 | -6.27;
25
+ y: -12 | -9.17;
26
+ opacity?: undefined;
27
+ })[];
28
+ gestures: ({
29
+ duration: number;
30
+ repeatAfter: number;
31
+ loop: boolean;
32
+ frames: ({
33
+ at: number;
34
+ x: number;
35
+ y: number;
36
+ } | {
37
+ at: number;
38
+ x?: undefined;
39
+ y?: undefined;
40
+ })[];
41
+ } | null)[];
42
+ } | {
43
+ name: string;
44
+ paths: string[];
45
+ detail: true;
46
+ poses: {}[];
47
+ surface?: undefined;
48
+ fillOnly?: undefined;
49
+ accent?: undefined;
50
+ pivot?: undefined;
51
+ gestures?: undefined;
52
+ } | {
53
+ name: string;
54
+ paths: string[];
55
+ poses: {}[];
56
+ detail?: undefined;
57
+ surface?: undefined;
58
+ fillOnly?: undefined;
59
+ accent?: undefined;
60
+ pivot?: undefined;
61
+ gestures?: undefined;
62
+ } | {
63
+ name: string;
64
+ paths: string[];
65
+ surface: true;
66
+ poses: {}[];
67
+ detail?: undefined;
68
+ fillOnly?: undefined;
69
+ accent?: undefined;
70
+ pivot?: undefined;
71
+ gestures?: undefined;
72
+ } | {
73
+ name: string;
74
+ paths: string[];
75
+ fillOnly: "ink";
76
+ accent: true;
77
+ pivot: [number, number];
78
+ poses: ({
79
+ scaleX: number;
80
+ } | {
81
+ scaleX?: undefined;
82
+ })[];
83
+ gestures: ({
84
+ duration: number;
85
+ repeatAfter: number;
86
+ loop: false;
87
+ frames: ({
88
+ at: number;
89
+ scaleX: number;
90
+ } | {
91
+ at: number;
92
+ scaleX?: undefined;
93
+ })[];
94
+ } | null)[];
95
+ detail?: undefined;
96
+ surface?: undefined;
97
+ })[];
98
+ };
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Orchestrator–workers: the lead sends three sub-tasks down its edges in parallel, each worker
3
+ * holds one while it runs, and the results travel back up to fuse into one answer in the lead.
4
+ * Sub-tasks that are not out with a worker wait hidden inside the lead (occluded, not faded).
5
+ */
6
+ export const agentOrchestratorStates = ['idle', 'delegating', 'merged'];
7
+ const circle = (cx, cy, r) => `M${cx - r} ${cy}a${r} ${r} 0 1 0 ${2 * r} 0a${r} ${r} 0 1 0 ${-2 * r} 0Z`;
8
+ const WORKER_R = 2.4;
9
+ // Workers sit on a fan below the lead. Offset from each worker centre to the sub-task's
10
+ // waiting place inside the lead, collinear with that worker's edge so travel follows the edge.
11
+ const lanes = [
12
+ { name: 'task-left', cx: 4.4, cy: 16.2, dx: 6.27, dy: -9.17 },
13
+ { name: 'task-middle', cx: 12, cy: 19, dx: 0, dy: -12 },
14
+ { name: 'task-right', cx: 19.6, cy: 16.2, dx: -6.27, dy: -9.17 },
15
+ ];
16
+ const task = ({ name, cx, cy, dx, dy }, i) => ({
17
+ name,
18
+ paths: [circle(cx, cy, 0.95)],
19
+ fillOnly: 'ink',
20
+ accent: true,
21
+ // Idle hides them in the lead and also fades them, so a cancelled delegation fades out.
22
+ poses: [{ x: dx, y: dy, opacity: 0 }, {}, { x: dx, y: dy }],
23
+ gestures: [
24
+ null,
25
+ {
26
+ // Dispatched together (parallel); the shorter side lanes leave a beat later so all land together.
27
+ duration: 1.3,
28
+ repeatAfter: 1.3,
29
+ loop: false,
30
+ frames: [{ at: 0, x: dx, y: dy }, { at: i === 1 ? 0.01 : 0.06, x: dx, y: dy }, { at: 1 }],
31
+ },
32
+ {
33
+ // Results climb back up their edges and pass under the lead's surface.
34
+ duration: 1.4,
35
+ repeatAfter: 1.4,
36
+ loop: false,
37
+ frames: [{ at: 0, x: -dx, y: -dy }, { at: 0.6 }, { at: 1 }],
38
+ },
39
+ ],
40
+ });
41
+ export const agentOrchestratorArt = {
42
+ name: 'agent-orchestrator',
43
+ parts: [
44
+ {
45
+ name: 'edges',
46
+ paths: ['M9.6 8.6L5.76 14.22', 'M12 8.6V16.6', 'M14.4 8.6L18.24 14.22'],
47
+ detail: true,
48
+ poses: [{}, {}, {}],
49
+ },
50
+ {
51
+ name: 'workers',
52
+ paths: lanes.map((l) => circle(l.cx, l.cy, WORKER_R)),
53
+ poses: [{}, {}, {}],
54
+ },
55
+ ...lanes.map(task),
56
+ {
57
+ name: 'lead',
58
+ paths: [
59
+ 'M8.6 2.6H15.4A1.6 1.6 0 0 1 17 4.2V7A1.6 1.6 0 0 1 15.4 8.6H8.6A1.6 1.6 0 0 1 7 7V4.2A1.6 1.6 0 0 1 8.6 2.6Z',
60
+ ],
61
+ surface: true,
62
+ poses: [{}, {}, {}],
63
+ },
64
+ {
65
+ name: 'merged-result',
66
+ paths: ['M10 4.6H14A1 1 0 0 1 15 5.6A1 1 0 0 1 14 6.6H10A1 1 0 0 1 9 5.6A1 1 0 0 1 10 4.6Z'],
67
+ fillOnly: 'ink',
68
+ accent: true,
69
+ pivot: [12, 5.6],
70
+ poses: [{ scaleX: 0 }, { scaleX: 0 }, {}],
71
+ gestures: [
72
+ null,
73
+ null,
74
+ {
75
+ // Grows from the centre once the results have arrived.
76
+ duration: 1.4,
77
+ repeatAfter: 1.4,
78
+ loop: false,
79
+ frames: [{ at: 0, scaleX: -1 }, { at: 0.55, scaleX: -1 }, { at: 0.95 }, { at: 1 }],
80
+ },
81
+ ],
82
+ },
83
+ ],
84
+ };
@@ -0,0 +1,5 @@
1
+ import type { StatefulIconProps } from "../../shared/icon-types.js";
2
+ import { type BeamSearchState } from "./beam-search-rig.js";
3
+ export { beamSearchStates, type BeamSearchState } from "./beam-search-rig.js";
4
+ export type BeamSearchIconProps = StatefulIconProps<BeamSearchState>;
5
+ export declare const BeamSearchIcon: import("react").NamedExoticComponent<BeamSearchIconProps>;
@@ -0,0 +1,9 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { memo } from 'react';
4
+ import { ArticulatedIcon } from "../../shared/articulated-icon.js";
5
+ import { beamSearchArt, beamSearchStates } from "./beam-search-rig.js";
6
+ export { beamSearchStates } from "./beam-search-rig.js";
7
+ export const BeamSearchIcon = memo(function BeamSearchIcon(props) {
8
+ return _jsx(ArticulatedIcon, { art: beamSearchArt, states: beamSearchStates, ...props });
9
+ });
@@ -0,0 +1,72 @@
1
+ import type { PartGesture } from "../../shared/articulation.js";
2
+ /**
3
+ * A decoding tree read left to right with beam width 2. Idle shows the two beams solid among
4
+ * faint pruned alternatives. Searching rescoring: the alternatives wither back
5
+ * toward their parent and stay as cut stubs (while alive they sprout and wither again as
6
+ * they are rescored). Decoded traces the highest-scoring sequence in accent.
7
+ */
8
+ export declare const beamSearchStates: readonly ["idle", "searching", "decoded"];
9
+ export type BeamSearchState = (typeof beamSearchStates)[number];
10
+ export declare const beamSearchArt: {
11
+ name: string;
12
+ parts: ({
13
+ name: string;
14
+ paths: string[];
15
+ traceLength: number;
16
+ poses: ({
17
+ opacity: number;
18
+ draw?: undefined;
19
+ } | {
20
+ draw: number;
21
+ opacity: number;
22
+ })[];
23
+ gestures: (PartGesture | null)[];
24
+ fillOnly?: undefined;
25
+ accent?: undefined;
26
+ } | {
27
+ name: string;
28
+ paths: string[];
29
+ poses: ({
30
+ opacity?: undefined;
31
+ } | {
32
+ opacity: number;
33
+ })[];
34
+ traceLength?: undefined;
35
+ gestures?: undefined;
36
+ fillOnly?: undefined;
37
+ accent?: undefined;
38
+ } | {
39
+ name: string;
40
+ paths: string[];
41
+ fillOnly: "ink";
42
+ poses: {}[];
43
+ traceLength?: undefined;
44
+ gestures?: undefined;
45
+ accent?: undefined;
46
+ } | {
47
+ name: string;
48
+ paths: string[];
49
+ accent: true;
50
+ traceLength: number;
51
+ poses: ({
52
+ draw: number;
53
+ opacity: number;
54
+ } | {
55
+ draw?: undefined;
56
+ opacity?: undefined;
57
+ })[];
58
+ gestures: ({
59
+ duration: number;
60
+ repeatAfter: number;
61
+ loop: false;
62
+ frames: ({
63
+ at: number;
64
+ draw: number;
65
+ } | {
66
+ at: number;
67
+ draw?: undefined;
68
+ })[];
69
+ } | null)[];
70
+ fillOnly?: undefined;
71
+ })[];
72
+ };