subagent-extension-for-codex 0.0.0-stage → 0.1.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 (88) hide show
  1. package/.agents/plugins/marketplace.json +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +230 -2
  4. package/assets/brand/brand-glyph-animated.svg +89 -0
  5. package/assets/brand/brand-glyph-black.svg +21 -0
  6. package/assets/brand/brand-glyph-dark.svg +21 -0
  7. package/assets/brand/brand-glyph-light.svg +21 -0
  8. package/assets/brand/brand-glyph-white.svg +21 -0
  9. package/assets/brand/brand-icon-color.svg +22 -0
  10. package/assets/brand/brand-icon-dark.svg +22 -0
  11. package/assets/brand/brand-icon-light.svg +22 -0
  12. package/assets/icons/alert-triangle.svg +14 -0
  13. package/assets/icons/arrows-horizontal.svg +15 -0
  14. package/assets/icons/bug.svg +16 -0
  15. package/assets/icons/check.svg +13 -0
  16. package/assets/icons/chevron-down.svg +13 -0
  17. package/assets/icons/circle.svg +13 -0
  18. package/assets/icons/clipboard-check.svg +16 -0
  19. package/assets/icons/clock.svg +14 -0
  20. package/assets/icons/close.svg +13 -0
  21. package/assets/icons/code.svg +15 -0
  22. package/assets/icons/copy.svg +15 -0
  23. package/assets/icons/diff-search.svg +17 -0
  24. package/assets/icons/dot.svg +21 -0
  25. package/assets/icons/enter.svg +3 -0
  26. package/assets/icons/expand.svg +15 -0
  27. package/assets/icons/eye-off.svg +16 -0
  28. package/assets/icons/eye.svg +15 -0
  29. package/assets/icons/flask.svg +15 -0
  30. package/assets/icons/git-merge.svg +18 -0
  31. package/assets/icons/glasses.svg +17 -0
  32. package/assets/icons/grip-vertical-double.svg +10 -0
  33. package/assets/icons/grip-vertical.svg +7 -0
  34. package/assets/icons/handoff.svg +15 -0
  35. package/assets/icons/help.svg +15 -0
  36. package/assets/icons/info.svg +14 -0
  37. package/assets/icons/inspector-panel.svg +16 -0
  38. package/assets/icons/minus.svg +13 -0
  39. package/assets/icons/more-circle.svg +18 -0
  40. package/assets/icons/more-horizontal.svg +13 -0
  41. package/assets/icons/more-vertical.svg +13 -0
  42. package/assets/icons/paper-plane.svg +13 -0
  43. package/assets/icons/pause.svg +13 -0
  44. package/assets/icons/pencil-simple.svg +15 -0
  45. package/assets/icons/pencil.svg +15 -0
  46. package/assets/icons/play.svg +13 -0
  47. package/assets/icons/plus.svg +13 -0
  48. package/assets/icons/quiet-constellation.svg +43 -0
  49. package/assets/icons/refresh.svg +15 -0
  50. package/assets/icons/reply.svg +3 -0
  51. package/assets/icons/search.svg +14 -0
  52. package/assets/icons/settings.svg +15 -0
  53. package/assets/icons/shield-check.svg +15 -0
  54. package/assets/icons/stop-solid.svg +11 -0
  55. package/assets/icons/stop.svg +13 -0
  56. package/assets/icons/task-card.svg +15 -0
  57. package/assets/icons/task-details.svg +15 -0
  58. package/assets/icons/triangle-down.svg +13 -0
  59. package/assets/icons/user-round.svg +14 -0
  60. package/assets/icons/worker.svg +15 -0
  61. package/dist/THIRD_PARTY_LICENSES.txt +3141 -0
  62. package/dist/app.html +8245 -0
  63. package/dist/app.html.THIRD_PARTY_LICENSES.txt +2609 -0
  64. package/dist/bundle/chunks/chunk-5TX3SEV2.js +20032 -0
  65. package/dist/bundle/chunks/chunk-5TX3SEV2.js.map +6 -0
  66. package/dist/bundle/chunks/chunk-KFBRPWLR.js +8670 -0
  67. package/dist/bundle/chunks/chunk-KFBRPWLR.js.map +6 -0
  68. package/dist/bundle/chunks/chunk-L3PORPD3.js +450 -0
  69. package/dist/bundle/chunks/chunk-L3PORPD3.js.map +6 -0
  70. package/dist/bundle/chunks/chunk-LZFYKJ4Y.js +12780 -0
  71. package/dist/bundle/chunks/chunk-LZFYKJ4Y.js.map +6 -0
  72. package/dist/bundle/chunks/v4-LDJUK5DU.js +524 -0
  73. package/dist/bundle/chunks/v4-LDJUK5DU.js.map +6 -0
  74. package/dist/bundle/main.js +74756 -0
  75. package/dist/bundle/main.js.map +6 -0
  76. package/dist/bundle/projects-cli.js +44 -0
  77. package/dist/bundle/projects-cli.js.map +6 -0
  78. package/dist/bundle/stdio.js +9549 -0
  79. package/dist/bundle/stdio.js.map +6 -0
  80. package/dist/main.js +15 -0
  81. package/dist/projects-cli.js +15 -0
  82. package/dist/stdio.js +15 -0
  83. package/mcp.json +10 -0
  84. package/migrations/20261103045721_initial/migration.sql +73 -0
  85. package/migrations/20261103045721_initial/snapshot.json +615 -0
  86. package/package.json +17 -4
  87. package/plugin.json +27 -0
  88. package/skills/delegation/SKILL.md +65 -0
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "shemarlindie",
3
+ "interface": {
4
+ "displayName": "Shemar Lindie"
5
+ },
6
+ "plugins": [
7
+ {
8
+ "name": "subagent-extension-for-codex",
9
+ "source": {
10
+ "source": "local",
11
+ "path": "./"
12
+ },
13
+ "category": "Coding"
14
+ }
15
+ ]
16
+ }
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Shemar Lindie
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.
package/README.md CHANGED
@@ -1,3 +1,231 @@
1
- # Temporary Holding Version
1
+ <p align="center">
2
+ <picture>
3
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/readme-banner-dark.svg">
4
+ <img src="docs/assets/readme-banner-light.svg" width="400" alt="Subagent Extension for Codex">
5
+ </picture>
6
+ </p>
2
7
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
8
+ <p align="center">Delegate to Claude without leaving Codex.</p>
9
+
10
+ <p align="center">
11
+ <a href="#install">Install</a> &ensp;·&ensp;
12
+ <a href="#start-a-task">Start a task</a> &ensp;·&ensp;
13
+ <a href="#documentation">Documentation</a> &ensp;·&ensp;
14
+ <a href="https://github.com/user-attachments/assets/94f0c927-e352-460e-bda1-da6856e45371">Demo video</a>
15
+ </p>
16
+
17
+ <p align="center">
18
+ <a href="https://github.com/shemarlindie/subagent-extension-for-codex/actions/workflows/ci.yml"><img src="https://github.com/shemarlindie/subagent-extension-for-codex/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
19
+ <img src="https://img.shields.io/badge/status-early%20release-orange" alt="Status: early release">
20
+ </p>
21
+
22
+ > _Prompt: Chat, build something that lets Claude keep you in line._
23
+
24
+ Delegate tasks to Claude from Codex through a local MCP service, then follow,
25
+ steer and review them in the Delegated Work panel. Claude runs through the
26
+ Claude Agent SDK and the Claude Code harness.
27
+
28
+ And yes, some of us still use Codex.
29
+
30
+ <picture>
31
+ <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a6e2ad47-1b51-46f4-a5f7-8d3d1c01efc4">
32
+ <img width="1440" alt="Codex delegates a task to Claude and follows it in the Delegated Work panel" src="https://github.com/user-attachments/assets/4b2f34ec-a922-4446-8c51-9bd5b90575ba">
33
+ </picture>
34
+
35
+ **Is this allowed?** Yes, when you run it on your own computer for your own
36
+ work. It uses your local copy of Claude Code and your own sign-in, and it never
37
+ collects or stores your Claude credentials. Anthropic's
38
+ [usage policy for Claude Code and the Agent SDK](https://code.claude.com/docs/en/legal-and-compliance#usage-policy)
39
+ covers this kind of individual use.
40
+
41
+ <!-- prettier-ignore -->
42
+ > [!NOTE]
43
+ > Windows support is in progress and not ready for use yet.
44
+ >
45
+ > This is an early release. Expect rough edges, and settings or behavior may
46
+ > change between versions. Please report problems in
47
+ > [Issues](https://github.com/shemarlindie/subagent-extension-for-codex/issues).
48
+
49
+ ## Install
50
+
51
+ You need:
52
+
53
+ - [Claude Code](https://code.claude.com/docs/en/setup) 2.1.285 or later, signed
54
+ in. Run `claude` once and complete sign-in. See
55
+ [Claude Code CLI](docs/claude-cli.md) for how the extension finds it.
56
+ - Node.js 24 or later, with npm, on the `PATH` Codex starts with. Codex
57
+ downloads the plugin with npm.
58
+ - Git.
59
+ - Codex CLI 0.162.1 or later, or a Codex desktop app with plugin marketplaces.
60
+ CI installs the plugin with 0.162.1, and older builds are untested.
61
+
62
+ macOS is the primary platform. CI runs the full test suite on macOS and Linux.
63
+ Windows CI covers builds, plugin installation, packaged-service checks and
64
+ settings file exports.
65
+
66
+ Add the marketplace, then install the plugin:
67
+
68
+ ```sh
69
+ codex plugin marketplace add shemarlindie/subagent-extension-for-codex
70
+ codex plugin add subagent-extension-for-codex@shemarlindie
71
+ ```
72
+
73
+ After the first command, the plugin also appears in the Plugins directory of the
74
+ Codex desktop app. You can also ask Codex to install it: _"Install the Codex
75
+ plugin subagent-extension-for-codex from the marketplace at
76
+ github.com/shemarlindie/subagent-extension-for-codex."_
77
+
78
+ Then approve a Git repository root with at least one commit. Use **Add chat
79
+ project** in a chat's Delegated Work panel, or **Manage projects… → Add
80
+ project** in the global panel. The plugin starts its local service the first
81
+ time Codex connects.
82
+
83
+ While the service runs, you can also use the standalone console at
84
+ `http://127.0.0.1:17317`. If that port is taken, see
85
+ [Service address](docs/configuration.md#service-address) to find the console.
86
+ Sign in with the token in
87
+ `~/.local/share/subagent-extension-for-codex/admin-token`. Treat the token as a
88
+ credential and keep it out of chats and commits.
89
+
90
+ Claude uses the host's Claude Code credentials. By default, it also loads user,
91
+ project and local settings, including instructions, skills, hooks and MCP
92
+ servers. The extension doesn't manage provider credentials. Read
93
+ [Configuration and permissions](docs/configuration.md) before changing execution
94
+ authority or session restrictions.
95
+
96
+ ## Start a task
97
+
98
+ Start a task in any of these ways:
99
+
100
+ 1. **Ask Codex.** Describe the work in a chat, for example _"Have Claude review
101
+ my uncommitted changes."_ Codex starts the task and, when the host supports
102
+ it, opens Delegated Work on the task's Chat.
103
+ 2. **Open the chat's panel.** Ask Codex to open Delegated Work. The panel lists
104
+ the chat's tasks and offers **Add chat project** when the chat's repository
105
+ isn't approved yet.
106
+ 3. **Use the sidebar.** In the Codex desktop app, select **Delegated Work** in
107
+ the sidebar to see tasks from every chat. **New task** starts one there.
108
+
109
+ Before you start:
110
+
111
+ - Tasks work in your checkout by default, including uncommitted changes. A
112
+ worktree keeps a task's changes separate but isn't a security sandbox. The
113
+ service never merges changes.
114
+ - The researcher, reviewer and security reviewer profiles only inspect by
115
+ default.
116
+ - Usage and billing follow your Claude Code sign-in. A set `ANTHROPIC_API_KEY`
117
+ takes priority over a subscription login. Shown costs are estimates at API
118
+ list prices, and cost limits apply to these estimates. See
119
+ [authentication](https://code.claude.com/docs/en/authentication) and
120
+ [costs](https://code.claude.com/docs/en/costs).
121
+
122
+ See [How tasks run](docs/panel-guide.md#how-tasks-run) for details.
123
+
124
+ ## Update
125
+
126
+ Codex checks the marketplace when it starts and installs new releases on its
127
+ own. To check now:
128
+
129
+ ```sh
130
+ codex plugin marketplace upgrade shemarlindie
131
+ ```
132
+
133
+ The new version takes over from the running service once its running turns
134
+ finish, and queued tasks carry over. See
135
+ [Updates and service handoff](docs/task-continuation.md#updates-and-service-handoff).
136
+ Startup backs up the database before applying migrations. See
137
+ [Restore a backup](docs/database.md#restore-a-backup).
138
+
139
+ To pin a version, add the marketplace at its release tag. A tag never moves, so
140
+ Codex keeps that version:
141
+
142
+ ```sh
143
+ codex plugin marketplace remove shemarlindie
144
+ codex plugin marketplace add shemarlindie/subagent-extension-for-codex@v0.1.0
145
+ codex plugin add subagent-extension-for-codex@shemarlindie
146
+ ```
147
+
148
+ To follow new releases again, remove the marketplace and add it without a tag.
149
+
150
+ Prereleases such as `v0.2.0-beta.1` are marked as prereleases on GitHub, and the
151
+ repository's marketplace never lists them. To try one, add the marketplace at
152
+ its tag.
153
+
154
+ ## Uninstall
155
+
156
+ ```sh
157
+ codex plugin remove subagent-extension-for-codex@shemarlindie
158
+ codex plugin marketplace remove shemarlindie
159
+ ```
160
+
161
+ The service exits once Codex stops the plugin and its tasks finish. To stop it
162
+ sooner, run
163
+ `kill "$(cat ~/.local/share/subagent-extension-for-codex/service.pid)"`, which
164
+ interrupts running turns.
165
+
166
+ Tasks, settings and worktrees stay in
167
+ `~/.local/share/subagent-extension-for-codex`. Delete that directory to remove
168
+ them. Branches that tasks created stay in their repositories.
169
+
170
+ ## Troubleshooting
171
+
172
+ | Symptom | Fix |
173
+ | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
174
+ | `needs Node.js 24 or later` in Codex's MCP log | Install Node.js 24 or later and make it the first `node` on the `PATH` Codex starts with. |
175
+ | Tools report the service is unavailable | Read the [service logs](docs/logging.md#diagnose-a-problem), starting with `service.jsonl` and `service.log` in the data directory. |
176
+ | `A different extension service … is running` | Another service owns the data directory or port, for example a development checkout. Stop it, or give development its own data and port. |
177
+ | `Port … is already in use` | Choose a free port or remove the address override. See [Service address](docs/configuration.md#service-address). |
178
+ | Claude tasks can't start | The panel shows a readiness message above the task list. [Claude Code CLI](docs/claude-cli.md) explains fixes. |
179
+
180
+ To connect a checkout over stdio or Streamable HTTP instead of installing the
181
+ plugin, see
182
+ [Connect Codex from a checkout](docs/development.md#connect-codex-from-a-checkout).
183
+
184
+ ## Documentation
185
+
186
+ Before working on the codebase, read in this order:
187
+
188
+ 1. [Architecture](docs/architecture.md) for runtime ownership and code
189
+ boundaries.
190
+ 2. [Local development](docs/development.md#choosing-a-development-tool) for
191
+ choosing a development tool, and its [checks](docs/development.md#checks).
192
+ 3. The guide for the area you are changing, listed below.
193
+
194
+ ### Use and operate the extension
195
+
196
+ | Task | Guide |
197
+ | ------------------------------------------------------ | ---------------------------------------------- |
198
+ | Start, recover, back up or continue tasks | [Task continuation](docs/task-continuation.md) |
199
+ | Configure permissions, budgets and repository access | [Configuration](docs/configuration.md) |
200
+ | Delegate and review work in Codex or the console | [Panel guide](docs/panel-guide.md) |
201
+ | Diagnose service errors, authentication or performance | [Logging and diagnostics](docs/logging.md) |
202
+ | Diagnose Claude executable readiness | [Claude Code CLI](docs/claude-cli.md) |
203
+
204
+ ### Develop and verify changes
205
+
206
+ | Task | Guide |
207
+ | ------------------------------------------------------------- | ------------------------------------------------------------ |
208
+ | Report a problem or propose a change | [Contributing](CONTRIBUTING.md) |
209
+ | Report a security problem | [Security policy](SECURITY.md) |
210
+ | Follow contribution and documentation conventions | [Agent instructions](AGENTS.md) |
211
+ | Understand runtime ownership and system boundaries | [Architecture](docs/architecture.md) |
212
+ | Build, test, connect or preview the extension | [Local development](docs/development.md) |
213
+ | Change React components, styling and client state | [Panel architecture](docs/panel-architecture.md) |
214
+ | Check UI layouts and behavior in the browser | [UI verification](docs/ui-verification.md) |
215
+ | Exercise fixture worker task behavior without model calls | [Fixture scenarios](docs/fixture-scenarios.md) |
216
+ | Change storage, migrations or transactions | [Database and migrations](docs/database.md) |
217
+ | Qualify Claude CLI/SDK updates or run authenticated scenarios | [Claude execution verification](docs/claude-verification.md) |
218
+ | Capture the README's showcase images and video | [Showcase captures](docs/showcase.md) |
219
+ | Publish a release or maintain the CI runner | [Releasing and CI](docs/releasing.md) |
220
+
221
+ ### Integrate providers and hosts
222
+
223
+ | Task | Guide |
224
+ | ------------------------------------------------ | ---------------------------------------------- |
225
+ | Implement provider execution and task policy | [Provider contract](docs/provider-contract.md) |
226
+ | Change MCP tools, user authority or panel inputs | [MCP reference](docs/mcp-reference.md) |
227
+ | Integrate project/chat context and host delivery | [Host capabilities](docs/host-capabilities.md) |
228
+
229
+ ## License
230
+
231
+ MIT. See [LICENSE](LICENSE).
@@ -0,0 +1,89 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="9 7.75 46 46"
6
+ fill="currentColor"
7
+ stroke="currentColor"
8
+ role="img"
9
+ aria-labelledby="glyph-title"
10
+ >
11
+ <title id="glyph-title">Bot with orbiting dots</title>
12
+ <style>
13
+ :root {
14
+ color: #353535;
15
+ }
16
+
17
+ .eyes {
18
+ transform-box: fill-box;
19
+ transform-origin: center;
20
+ }
21
+
22
+ @media (prefers-reduced-motion: no-preference) {
23
+ .eyes {
24
+ animation: blink 5s ease-in-out infinite;
25
+ }
26
+
27
+ @supports (offset-path: path("M0 0L1 1")) {
28
+ .orbit-dot {
29
+ transform: none;
30
+ offset-path: path("M13 16a19 5.25 0 1 1 38 0a19 5.25 0 1 1-38 0");
31
+ offset-rotate: 0deg;
32
+ animation: orbit 8s linear infinite;
33
+ }
34
+
35
+ .orbit-dot:nth-child(2) {
36
+ offset-distance: 35%;
37
+ animation-delay: -2.8s;
38
+ }
39
+
40
+ .orbit-dot:nth-child(3) {
41
+ offset-distance: 55%;
42
+ animation-delay: -4.4s;
43
+ }
44
+ }
45
+ }
46
+
47
+ @keyframes orbit {
48
+ from {
49
+ offset-distance: 0%;
50
+ }
51
+ to {
52
+ offset-distance: 100%;
53
+ }
54
+ }
55
+
56
+ @keyframes blink {
57
+ 0%,
58
+ 91%,
59
+ 100% {
60
+ transform: scaleY(1);
61
+ }
62
+ 95% {
63
+ transform: scaleY(0.1);
64
+ }
65
+ }
66
+
67
+ @media (prefers-color-scheme: dark) {
68
+ :root {
69
+ color: #f5f5f5;
70
+ }
71
+ }
72
+ </style>
73
+ <g stroke="none">
74
+ <!-- Keep the dots visible when motion styles are unavailable or disabled. -->
75
+ <g class="orbit-dot" transform="translate(13 15)"><circle r="3" /></g>
76
+ <g class="orbit-dot" transform="translate(44 11)"><circle r="2.5" /></g>
77
+ <g class="orbit-dot" transform="translate(53 20)"><circle r="2" /></g>
78
+ </g>
79
+ <g
80
+ fill="none"
81
+ stroke-width="4"
82
+ stroke-linecap="round"
83
+ stroke-linejoin="round"
84
+ >
85
+ <rect x="17" y="24" width="30" height="27" rx="9" />
86
+ <path d="M32 18V24" />
87
+ <path class="eyes" d="M25 36H28M36 36H39" />
88
+ </g>
89
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="10 7.75 46 46"
6
+ fill="#000000"
7
+ stroke="#000000"
8
+ >
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="10 7.75 46 46"
6
+ fill="#353535"
7
+ stroke="#353535"
8
+ >
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="10 7.75 46 46"
6
+ fill="#f5f5f5"
7
+ stroke="#f5f5f5"
8
+ >
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="10 7.75 46 46"
6
+ fill="#ffffff"
7
+ stroke="#ffffff"
8
+ >
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </svg>
@@ -0,0 +1,22 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="0 0 64 64"
6
+ >
7
+ <rect width="64" height="64" rx="14" fill="#3a7ca5" />
8
+ <g fill="#ffffff" stroke="#ffffff">
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </g>
22
+ </svg>
@@ -0,0 +1,22 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="0 0 64 64"
6
+ >
7
+ <rect width="64" height="64" rx="14" fill="#252525" />
8
+ <g fill="#f5f5f5" stroke="#f5f5f5">
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </g>
22
+ </svg>
@@ -0,0 +1,22 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="64"
4
+ height="64"
5
+ viewBox="0 0 64 64"
6
+ >
7
+ <rect width="64" height="64" rx="14" fill="#f0f0f0" />
8
+ <g fill="#404040" stroke="#404040">
9
+ <g
10
+ fill="none"
11
+ stroke-width="4"
12
+ stroke-linecap="round"
13
+ stroke-linejoin="round"
14
+ >
15
+ <rect x="17" y="24" width="30" height="27" rx="9" />
16
+ <path d="M25 36H28M36 36H39M32 18V24" />
17
+ </g>
18
+ <circle cx="13" cy="15" r="3" stroke="none" />
19
+ <circle cx="44" cy="11" r="2.5" stroke="none" />
20
+ <circle cx="54" cy="20" r="2" stroke="none" />
21
+ </g>
22
+ </svg>
@@ -0,0 +1,14 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="3"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3"></path>
13
+ <path d="M12 9.75v3M12 16.75h0.01"></path>
14
+ </svg>
@@ -0,0 +1,15 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2.427"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path
13
+ d="M1.213 5.258h21.573m0 0-4.045-4.045m4.045 4.045-4.045 4.045M22.787 18.742H1.213m0 0 4.045-4.045m-4.045 4.045 4.045 4.045"
14
+ ></path>
15
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="1.846"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <rect x="5.846" y="4.615" width="12.308" height="17.231" rx="6.154"></rect>
13
+ <path
14
+ d="m7.077 0.923 2.462 3.692m7.385-3.692-2.462 3.692M8.308 8.308h7.385M12 8.308v13.538M2.154 5.846l3.692 3.692m16-3.692-3.692 3.692M0.923 13.231h4.923m12.308 0h4.923M2.154 20.615l3.692-3.692m16 3.692-3.692-3.692"
15
+ ></path>
16
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="4.235"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M2.118 13.412l5.647 5.647L21.882 4.941"></path>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="3.429"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M1.714 6.857l10.286 10.286 10.286-10.286"></path>
13
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="3.429"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <circle cx="12" cy="12" r="10.286"></circle>
13
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2.128"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <rect x="7.862" y="1.064" width="8.276" height="4.729" rx="1.773"></rect>
13
+ <path
14
+ d="M7.862 3.429H4.906a2.365 2.365 0 0 0-2.365 2.365V20.571a2.365 2.365 0 0 0 2.365 2.365h14.187a2.365 2.365 0 0 0 2.365-2.365V5.793a2.365 2.365 0 0 0-2.365-2.365h-2.956M7.271 13.478l2.956 2.956 5.911-5.911M7.271 19.389h9.458"
15
+ ></path>
16
+ </svg>
@@ -0,0 +1,14 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="3.429"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <circle cx="12" cy="12" r="10.286"></circle>
13
+ <path d="M12 7.429v4.571l3.429 2.286"></path>
14
+ </svg>
@@ -0,0 +1,13 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ viewBox="0 0 24 24"
4
+ width="24"
5
+ height="24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="4.8"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ >
12
+ <path d="M2.4 2.4l19.2 19.2M21.6 2.4L2.4 21.6"></path>
13
+ </svg>