u-foo 2.4.6 → 2.4.8

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 (54) hide show
  1. package/README.md +5 -5
  2. package/README.zh-CN.md +5 -5
  3. package/SKILLS/ufoo/SKILL.md +2 -2
  4. package/SKILLS/uinit/SKILL.md +8 -11
  5. package/package.json +1 -2
  6. package/src/agents/controller/controllerToolExecutor.js +2 -0
  7. package/src/agents/controller/ufooAgent.js +55 -18
  8. package/src/agents/internal/internalRunner.js +2 -6
  9. package/src/agents/launch/launcher.js +1 -13
  10. package/src/agents/prompts/groupBootstrap.js +7 -0
  11. package/src/agents/prompts/native/system.js +1 -1
  12. package/src/agents/prompts/native/ufoo.js +3 -3
  13. package/src/app/chat/commandExecutor.js +3 -3
  14. package/src/app/chat/commands.js +2 -2
  15. package/src/app/cli/features/doctor.js +11 -18
  16. package/src/app/cli/features/init.js +12 -191
  17. package/src/app/cli/run.js +11 -6
  18. package/src/code/UCODE_PROMPT.md +3 -3
  19. package/src/code/launcher/ucodeBootstrap.js +3 -7
  20. package/src/code/taskDecomposer.js +49 -7
  21. package/src/coordination/context/doctor.js +4 -22
  22. package/src/runtime/daemon/index.js +1 -1
  23. package/src/runtime/daemon/mcpServer.js +1 -1
  24. package/src/runtime/terminal/index.js +1 -1
  25. package/src/ui/ink/ChatApp.js +3 -3
  26. package/src/ui/ink/MultilineInput.js +8 -2
  27. package/src/ui/ink/UcodeApp.js +5 -2
  28. package/templates/groups/build-lane.json +7 -35
  29. package/modules/AGENTS.template.md +0 -8
  30. package/modules/bus/README.md +0 -140
  31. package/modules/context/README.md +0 -60
  32. package/modules/online/README.md +0 -92
  33. package/modules/resources/ICONS/README.md +0 -12
  34. package/modules/resources/ICONS/libraries/README.md +0 -17
  35. package/modules/resources/ICONS/libraries/heroicons/LICENSE +0 -22
  36. package/modules/resources/ICONS/libraries/heroicons/README.md +0 -15
  37. package/modules/resources/ICONS/libraries/heroicons/arrow-right.svg +0 -4
  38. package/modules/resources/ICONS/libraries/heroicons/check.svg +0 -4
  39. package/modules/resources/ICONS/libraries/heroicons/chevron-down.svg +0 -4
  40. package/modules/resources/ICONS/libraries/heroicons/cog-6-tooth.svg +0 -5
  41. package/modules/resources/ICONS/libraries/heroicons/magnifying-glass.svg +0 -4
  42. package/modules/resources/ICONS/libraries/heroicons/x-mark.svg +0 -4
  43. package/modules/resources/ICONS/libraries/lucide/LICENSE +0 -40
  44. package/modules/resources/ICONS/libraries/lucide/README.md +0 -15
  45. package/modules/resources/ICONS/libraries/lucide/arrow-right.svg +0 -15
  46. package/modules/resources/ICONS/libraries/lucide/check.svg +0 -14
  47. package/modules/resources/ICONS/libraries/lucide/chevron-down.svg +0 -14
  48. package/modules/resources/ICONS/libraries/lucide/search.svg +0 -15
  49. package/modules/resources/ICONS/libraries/lucide/settings.svg +0 -15
  50. package/modules/resources/ICONS/libraries/lucide/x.svg +0 -15
  51. package/modules/resources/ICONS/rules.md +0 -7
  52. package/modules/resources/README.md +0 -9
  53. package/modules/resources/UI/ANTI-PATTERNS.md +0 -6
  54. package/modules/resources/UI/TONE.md +0 -6
@@ -4,7 +4,7 @@
4
4
  "id": "build-lane",
5
5
  "alias": "build-lane",
6
6
  "name": "Build Lane",
7
- "description": "Default engineering lane: plan, implement, review, and QA one scoped change."
7
+ "description": "Default engineering lane: architect/PMO plans phased work, builder implements, reviewer validates review and QA gates."
8
8
  },
9
9
  "defaults": {
10
10
  "launch_mode": "auto",
@@ -15,7 +15,7 @@
15
15
  "id": "architect",
16
16
  "nickname": "architect",
17
17
  "type": "auto",
18
- "role": "define slices and architecture constraints",
18
+ "role": "act as build-lane architect/PMO: design the solution as phased multi-agent work, assign ownership/dependencies/handoffs, and define when each phase is ready for review/QA test handoff",
19
19
  "prompt_profile": "system-architect",
20
20
  "accept_from": [
21
21
  "builder",
@@ -36,8 +36,7 @@
36
36
  "prompt_profile": "implementation-lead",
37
37
  "accept_from": [
38
38
  "architect",
39
- "reviewer",
40
- "qa"
39
+ "reviewer"
41
40
  ],
42
41
  "report_to": [
43
42
  "reviewer"
@@ -51,43 +50,21 @@
51
50
  "id": "reviewer",
52
51
  "nickname": "reviewer",
53
52
  "type": "auto",
54
- "role": "review code correctness and release risk before QA",
53
+ "role": "review code correctness, release risk, regression coverage, and user-flow QA",
55
54
  "prompt_profile": "review-critic",
56
55
  "accept_from": [
57
56
  "architect",
58
- "builder",
59
- "qa"
57
+ "builder"
60
58
  ],
61
59
  "report_to": [
62
60
  "builder",
63
- "qa"
61
+ "architect"
64
62
  ],
65
63
  "startup_order": 3,
66
64
  "depends_on": [
67
65
  "architect",
68
66
  "builder"
69
67
  ]
70
- },
71
- {
72
- "id": "qa",
73
- "nickname": "qa",
74
- "type": "auto",
75
- "role": "validate the implemented change from user-flow and regression perspectives",
76
- "prompt_profile": "qa-driver",
77
- "accept_from": [
78
- "builder",
79
- "reviewer"
80
- ],
81
- "report_to": [
82
- "builder",
83
- "reviewer"
84
- ],
85
- "startup_order": 4,
86
- "depends_on": [
87
- "architect",
88
- "builder",
89
- "reviewer"
90
- ]
91
68
  }
92
69
  ],
93
70
  "edges": [
@@ -108,12 +85,7 @@
108
85
  },
109
86
  {
110
87
  "from": "reviewer",
111
- "to": "qa",
112
- "kind": "review"
113
- },
114
- {
115
- "from": "qa",
116
- "to": "builder",
88
+ "to": "architect",
117
89
  "kind": "task"
118
90
  }
119
91
  ]
@@ -1,8 +0,0 @@
1
- <!-- ufoo -->
2
- ## ufoo Agent Protocol
3
-
4
- > **Default: do not write a decision.** Record one only for important, plan-level knowledge that should constrain future work: architectural choices, trade-off analysis, cross-agent coordination, or precedent-setting integration contracts. NOT for routine findings, simple fixes, or because the user asked for a plan/evaluation/recommendation. Durable project facts belong in shared memory, not decisions. → `ufoo ctx decisions new "Title"` BEFORE acting only when that high bar is met.
5
- > **Read shared memory before writing it.** Durable facts live in `.ufoo/memory/`; use `ufoo memory list/show`, `recall`, `search_memory`, or redacted `search_history` evidence before `remember` / `edit_memory`.
6
- > **Auto-execute bus messages.** On `ubus`: execute tasks immediately, then `ufoo bus ack`. Never ask the user.
7
- > **Full protocol**: `/ufoo` skill (auto-loaded on session start). Docs: `.ufoo/docs/`
8
- <!-- /ufoo -->
@@ -1,140 +0,0 @@
1
- # bus
2
-
3
- File-system based Agent event bus for async communication between multiple AI Coding Agents.
4
-
5
- ## Overview
6
-
7
- bus solves communication problems in multi-agent collaboration:
8
-
9
- - Multiple Claude Code instances collaborating on the same project
10
- - Communication between different AI tools (Claude Code, Cursor, Copilot)
11
- - Task delegation and response
12
- - Broadcast messages
13
-
14
- ## Installation
15
-
16
- Initialize via ufoo:
17
-
18
- ```bash
19
- ufoo init --modules context,bus
20
- ```
21
-
22
- ## Directory Structure
23
-
24
- ```
25
- .ufoo/
26
- ├── agent/
27
- │ └── all-agents.json # Agent metadata + agent status
28
- ├── daemon/
29
- │ ├── daemon.pid
30
- │ ├── daemon.log
31
- │ └── counts/
32
- └── bus/
33
- ├── events/ # Event stream (JSONL, sharded by date)
34
- ├── offsets/ # Each Agent's consumption progress
35
- └── queues/ # Targeted event queues
36
- ```
37
-
38
- ## Usage
39
-
40
- ### Join Bus
41
-
42
- ```bash
43
- SUBSCRIBER="${UFOO_SUBSCRIBER_ID:-$(ufoo bus whoami 2>/dev/null || true)}"
44
- [ -n "$SUBSCRIBER" ] || SUBSCRIBER=$(ufoo bus join | tail -n 1)
45
- # Output: claude-code:a1b2c3 (or codex:def456)
46
- ```
47
-
48
- ### Check Pending Messages
49
-
50
- ```bash
51
- ufoo bus check "$SUBSCRIBER"
52
- ```
53
-
54
- ### Send Messages
55
-
56
- ```bash
57
- # Send to specific instance
58
- ufoo bus send "claude-code:abc123" "Please help me review"
59
-
60
- # Send to all instances of same type
61
- ufoo bus send "claude-code" "Everyone please review"
62
-
63
- # Broadcast to all
64
- ufoo bus broadcast "I completed feature-x"
65
- ```
66
-
67
- ### View Status
68
-
69
- ```bash
70
- ufoo bus status
71
- ```
72
-
73
- ## Notifications/Alerts (no key injection, recommended)
74
-
75
- If you want to receive "new message alerts" while running Codex/Claude in another terminal, use **agent-side alert/listen** (avoids IME/accessibility permission/window positioning fragmentation issues):
76
-
77
- ```bash
78
- SUBSCRIBER="${UFOO_SUBSCRIBER_ID:-$(ufoo bus whoami 2>/dev/null || true)}"
79
- [ -n "$SUBSCRIBER" ] || SUBSCRIBER=$(ufoo bus join | tail -n 1)
80
-
81
- # Background alert: title badge + bell + optional macOS notification center
82
- ufoo bus alert "$SUBSCRIBER" 1 --notify --daemon
83
-
84
- # Or: foreground continuous print of new messages (suitable for a side terminal)
85
- ufoo bus listen "$SUBSCRIBER" --from-beginning
86
- ```
87
-
88
- ## Unattended Auto-Execute (recommended)
89
-
90
- If you need **Claude A to notify Claude B / Codex C and have the target auto-execute** (e.g., auto-trigger `/ubus`), use the bus daemon:
91
-
92
- 1) Resolve subscriber in each terminal session first (records `tty`, also records `TMUX_PANE` if in tmux). Join only as fallback:
93
-
94
- ```bash
95
- SUBSCRIBER="${UFOO_SUBSCRIBER_ID:-$(ufoo bus whoami 2>/dev/null || true)}"
96
- [ -n "$SUBSCRIBER" ] || SUBSCRIBER=$(ufoo bus join | tail -n 1)
97
- ```
98
-
99
- 2) Start the bus daemon in the project (runs as background daemon):
100
-
101
- ```bash
102
- ufoo bus daemon --interval 1 --daemon
103
- ```
104
-
105
- 3) After sending a message, the daemon injects `/ubus` into the target session and presses Enter:
106
- - tmux: `send-keys`
107
- - Terminal.app (pure Automation): `do script` (no Accessibility needed, but requires Automation authorization; compatibility depends on whether target program accepts input)
108
- - Terminal.app (Accessibility): System Events (needs Accessibility), injection sequence is Escape + paste + Return (avoids IME issues)
109
-
110
- Tips:
111
- - Terminal.app backend depends on `tty` in `.ufoo/agent/all-agents.json`. Execute `join` in the target terminal session (ensure `tty` is not `not a tty`).
112
- - Pure Automation backend needs one-time authorization: System Preferences → Privacy & Security → Automation (allow script to control Terminal).
113
- - Accessibility backend needs one-time authorization: System Preferences → Privacy & Security → Accessibility (for Terminal / script host).
114
-
115
- Stop/view status:
116
-
117
- ```bash
118
- ufoo bus daemon --status
119
- ufoo bus daemon --stop
120
- ```
121
-
122
- ## Subscriber ID Format
123
-
124
- ```
125
- {agent_type}:{instance_id}
126
-
127
- Examples:
128
- claude-code:a1b2c3
129
- cursor-ai:main
130
- copilot:session1
131
- ```
132
-
133
- ## Relationship with context
134
-
135
- | Module | Problem Solved |
136
- |--------|----------------|
137
- | context | Shared context, sparse decision log for major plan-level choices |
138
- | bus | Real-time communication, task delegation, message passing |
139
-
140
- Both are independent peer modules that can be used separately or together.
@@ -1,60 +0,0 @@
1
- # context
2
-
3
- Decision-only context module for ufoo.
4
-
5
- Purpose:
6
- - Persist decisions in project workspaces
7
- - Keep decision format canonical in `uctx` skill
8
-
9
- Bus handles communication; context handles durable decision truth.
10
-
11
- ## Quick Start
12
-
13
- ```bash
14
- # Install `ufoo` globally (once), then use it to install modules and init projects.
15
- ```
16
-
17
- This repository is the `context` module. The recommended entrypoint is `ufoo`.
18
-
19
- ## Architecture
20
-
21
- ### Global: `~/.ufoo/` (read-only for agents, managed by humans)
22
-
23
- Global modules live under `~/.ufoo/modules/`.
24
-
25
- ### Project: `<project>/.ufoo/context/` (writable)
26
-
27
- ```
28
- .ufoo/context/
29
- ├── decisions/ # Append-only decision log (decision-only mode)
30
- └── decisions.jsonl # Decision index (ts/type/file/author)
31
- ```
32
-
33
- Should be in the project workspace and writable by agents.
34
- Versioning is optional but recommended for auditability.
35
-
36
- ## Module Structure
37
-
38
- ```
39
- context/ # This repo
40
- ├── README.md # This file
41
- ├── ../../SKILLS/uctx/SKILL.md # Canonical decision format + workflow
42
- └── .ufoo/context/ # Local project context for this repo (ignored; not part of protocol distribution)
43
- ```
44
-
45
- ## For AI Agents
46
-
47
- 1. Read installed module from `~/.ufoo/modules/context/`
48
- 2. Read/write decisions in `<project>/.ufoo/context/decisions/`
49
- 3. **Never write to global** — only to project
50
- 4. Follow the decision format in the package-level `SKILLS/uctx/SKILL.md`
51
-
52
- ## Validate
53
-
54
- ```bash
55
- # protocol repo
56
- ufoo ctx lint
57
-
58
- # project-local context (in a real project repo)
59
- ufoo ctx lint --project <path-to-project-context>
60
- ```
@@ -1,92 +0,0 @@
1
- # online
2
-
3
- WebSocket relay module for cross-machine agent collaboration. Extends the local ufoo bus to work over the network.
4
-
5
- ## Overview
6
-
7
- online enables agents on different machines to collaborate:
8
-
9
- - Public channel chat (broadcast to all connected agents)
10
- - Private room collaboration (bus/decisions/wake sync)
11
- - Token-based authentication
12
- - Auto-reconnect with exponential backoff
13
-
14
- ## Quick Start
15
-
16
- ### 1. Start a relay server
17
-
18
- ```bash
19
- ufoo online server --port 8787
20
- ```
21
-
22
- ### 2. Connect an agent
23
-
24
- ```bash
25
- # Join a public channel
26
- ufoo online connect --nickname my-agent --join lobby
27
-
28
- # Join a private room
29
- ufoo online connect --nickname my-agent --room room_001 --room-password secret
30
- ```
31
-
32
- ### 3. Send messages
33
-
34
- ```bash
35
- # To a channel
36
- ufoo online send --nickname my-agent --channel lobby --text "hello everyone"
37
-
38
- # To a room
39
- ufoo online send --nickname my-agent --room room_001 --text "hello team"
40
- ```
41
-
42
- ### 4. Check inbox
43
-
44
- ```bash
45
- ufoo online inbox my-agent # All messages
46
- ufoo online inbox my-agent --unread # Unread only
47
- ufoo online inbox my-agent --clear # Clear inbox
48
- ```
49
-
50
- ## Private Room Sync
51
-
52
- In private room mode, agents automatically sync:
53
-
54
- - **Bus messages** — local bus ↔ online relay, bidirectional
55
- - **Decisions** — new `.md` files synced across team
56
- - **Wake events** — remote agent can wake local agent via bus
57
-
58
- ## HTTP APIs (for web preview)
59
-
60
- Auth-required management APIs:
61
-
62
- - `GET/POST /ufoo/online/channels`
63
- - `GET/POST /ufoo/online/rooms`
64
-
65
- Public read-only preview APIs (no bearer token required):
66
-
67
- - `GET /ufoo/online/public/channels`
68
- - `GET /ufoo/online/public/rooms?type=private`
69
- - `GET /ufoo/online/public/channels/:channel/messages?limit=120`
70
-
71
- Notes:
72
-
73
- - Channel history is in-memory (rolling buffer) on relay server.
74
- - Private room public API only exposes metadata (`room_id`, `name`, `created_by`, `password_required`).
75
-
76
- ## Storage
77
-
78
- ```
79
- ~/.ufoo/online/
80
- ├── tokens.json # Auth tokens
81
- ├── inbox/<nickname>.jsonl # Incoming messages
82
- └── outbox/<nickname>.jsonl # Queued outgoing messages
83
- ```
84
-
85
- ## Relationship with bus
86
-
87
- | Module | Scope |
88
- |--------|-------|
89
- | bus | Local file-system based messaging within a single machine |
90
- | online | Network relay extending bus across machines via WebSocket |
91
-
92
- online builds on top of bus — local agents still communicate via the file-system bus, while online bridges messages to remote agents.
@@ -1,12 +0,0 @@
1
- # Icon Context
2
-
3
- Icons here define visual grammar, not shippable assets.
4
-
5
- They are used as:
6
- - Reference bases
7
- - Modification sources
8
- - Style constraints
9
-
10
- Do not copy blindly into projects.
11
-
12
- `libraries/` contains minimal subsets of third-party icon libraries (with licenses) as reference material.
@@ -1,17 +0,0 @@
1
- # Icon Libraries (Minimal Subsets)
2
-
3
- This directory vendors **small, representative subsets** of third-party icon libraries.
4
-
5
- Purpose:
6
- - Provide strong, unambiguous signal that icons are **canonical protocol context**
7
- - Serve as reference bases and modification sources
8
-
9
- Non-goals:
10
- - Shipping assets for products
11
- - Full icon sets
12
-
13
- Each library subfolder contains:
14
- - A minimal set of SVGs
15
- - The upstream license text
16
- - A short README with source info
17
-
@@ -1,22 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) Tailwind Labs, Inc.
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
22
-
@@ -1,15 +0,0 @@
1
- # Heroicons (Minimal Subset)
2
-
3
- Source:
4
- - Repository: https://github.com/tailwindlabs/heroicons
5
- - Path: `optimized/24/outline/`
6
- - License: MIT (see `LICENSE`)
7
- - Fetched: 2026-01-27
8
-
9
- Included icons:
10
- - `arrow-right.svg`
11
- - `chevron-down.svg`
12
- - `magnifying-glass.svg`
13
- - `cog-6-tooth.svg`
14
- - `check.svg`
15
- - `x-mark.svg`
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"/>
3
- </svg>
4
-
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="m4.5 12.75 6 6 9-13.5"/>
3
- </svg>
4
-
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="m19.5 8.25-7.5 7.5-7.5-7.5"/>
3
- </svg>
4
-
@@ -1,5 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"/>
3
- <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"/>
4
- </svg>
5
-
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"/>
3
- </svg>
4
-
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" data-slot="icon">
2
- <path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
3
- </svg>
4
-
@@ -1,40 +0,0 @@
1
- ISC License
2
-
3
- Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2026 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2026.
4
-
5
- Permission to use, copy, modify, and/or distribute this software for any
6
- purpose with or without fee is hereby granted, provided that the above
7
- copyright notice and this permission notice appear in all copies.
8
-
9
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10
- WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11
- MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12
- ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13
- WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14
- ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
15
- OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16
-
17
- ---
18
-
19
- The MIT License (MIT) (for portions derived from Feather)
20
-
21
- Copyright (c) 2013-2026 Cole Bemis
22
-
23
- Permission is hereby granted, free of charge, to any person obtaining a copy
24
- of this software and associated documentation files (the "Software"), to deal
25
- in the Software without restriction, including without limitation the rights
26
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
27
- copies of the Software, and to permit persons to whom the Software is
28
- furnished to do so, subject to the following conditions:
29
-
30
- The above copyright notice and this permission notice shall be included in all
31
- copies or substantial portions of the Software.
32
-
33
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
34
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
35
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
36
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
37
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
38
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39
- SOFTWARE.
40
-
@@ -1,15 +0,0 @@
1
- # Lucide (Minimal Subset)
2
-
3
- Source:
4
- - Repository: https://github.com/lucide-icons/lucide
5
- - Path: `icons/`
6
- - License: ISC (see `LICENSE`)
7
- - Fetched: 2026-01-27
8
-
9
- Included icons:
10
- - `arrow-right.svg`
11
- - `chevron-down.svg`
12
- - `search.svg`
13
- - `settings.svg`
14
- - `check.svg`
15
- - `x.svg`
@@ -1,15 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="M5 12h14" />
13
- <path d="m12 5 7 7-7 7" />
14
- </svg>
15
-
@@ -1,14 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="M20 6 9 17l-5-5" />
13
- </svg>
14
-
@@ -1,14 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="m6 9 6 6 6-6" />
13
- </svg>
14
-
@@ -1,15 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="m21 21-4.34-4.34" />
13
- <circle cx="11" cy="11" r="8" />
14
- </svg>
15
-
@@ -1,15 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915" />
13
- <circle cx="12" cy="12" r="3" />
14
- </svg>
15
-
@@ -1,15 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="24"
4
- height="24"
5
- viewBox="0 0 24 24"
6
- fill="none"
7
- stroke="currentColor"
8
- stroke-width="2"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- >
12
- <path d="M18 6 6 18" />
13
- <path d="m6 6 12 12" />
14
- </svg>
15
-
@@ -1,7 +0,0 @@
1
- # Icon Rules
2
-
3
- - ViewBox: 0 0 24 24
4
- - Stroke-based icons preferred
5
- - No gradients or shadows
6
- - Avoid perfect symmetry
7
- - Optical balance > geometric balance