@ranimontagna/agent-toolkit 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.
- package/LICENSE +21 -0
- package/README.md +426 -0
- package/dist/bin/agent-toolkit.d.ts +2 -0
- package/dist/bin/agent-toolkit.js +14 -0
- package/dist/bin/agent-toolkit.js.map +1 -0
- package/dist/src/args.d.ts +1 -0
- package/dist/src/args.js +152 -0
- package/dist/src/args.js.map +1 -0
- package/dist/src/checksum.d.ts +2 -0
- package/dist/src/checksum.js +9 -0
- package/dist/src/checksum.js.map +1 -0
- package/dist/src/context.d.ts +3 -0
- package/dist/src/context.js +10 -0
- package/dist/src/context.js.map +1 -0
- package/dist/src/installers/caveman.d.ts +1 -0
- package/dist/src/installers/caveman.js +23 -0
- package/dist/src/installers/caveman.js.map +1 -0
- package/dist/src/installers/frontend-skills.d.ts +1 -0
- package/dist/src/installers/frontend-skills.js +82 -0
- package/dist/src/installers/frontend-skills.js.map +1 -0
- package/dist/src/installers/graphify.d.ts +1 -0
- package/dist/src/installers/graphify.js +58 -0
- package/dist/src/installers/graphify.js.map +1 -0
- package/dist/src/installers/gsd.d.ts +1 -0
- package/dist/src/installers/gsd.js +19 -0
- package/dist/src/installers/gsd.js.map +1 -0
- package/dist/src/installers/rtk.d.ts +1 -0
- package/dist/src/installers/rtk.js +158 -0
- package/dist/src/installers/rtk.js.map +1 -0
- package/dist/src/installers/superpowers.d.ts +1 -0
- package/dist/src/installers/superpowers.js +73 -0
- package/dist/src/installers/superpowers.js.map +1 -0
- package/dist/src/logger.d.ts +18 -0
- package/dist/src/logger.js +35 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/main.d.ts +1 -0
- package/dist/src/main.js +104 -0
- package/dist/src/main.js.map +1 -0
- package/dist/src/menu.d.ts +1 -0
- package/dist/src/menu.js +98 -0
- package/dist/src/menu.js.map +1 -0
- package/dist/src/provenance.d.ts +1 -0
- package/dist/src/provenance.js +44 -0
- package/dist/src/provenance.js.map +1 -0
- package/dist/src/runtimes.d.ts +7 -0
- package/dist/src/runtimes.js +123 -0
- package/dist/src/runtimes.js.map +1 -0
- package/dist/src/skills.d.ts +12 -0
- package/dist/src/skills.js +247 -0
- package/dist/src/skills.js.map +1 -0
- package/dist/src/state.d.ts +51 -0
- package/dist/src/state.js +137 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/system.d.ts +21 -0
- package/dist/src/system.js +109 -0
- package/dist/src/system.js.map +1 -0
- package/dist/src/tool-lock.d.ts +60 -0
- package/dist/src/tool-lock.js +109 -0
- package/dist/src/tool-lock.js.map +1 -0
- package/dist/src/ui.d.ts +3 -0
- package/dist/src/ui.js +41 -0
- package/dist/src/ui.js.map +1 -0
- package/dist/src/usage.d.ts +1 -0
- package/dist/src/usage.js +66 -0
- package/dist/src/usage.js.map +1 -0
- package/package.json +50 -0
- package/setup-agent-toolkit.sh +20 -0
- package/skills/core/agent-toolkit-maintainer/SKILL.md +68 -0
- package/tools.lock.json +84 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Ranielli Montagna
|
|
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
ADDED
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# Agent Toolkit
|
|
2
|
+
|
|
3
|
+
Personal toolkit for setting up AI coding agents with the tools I use most:
|
|
4
|
+
RTK, Caveman, Superpowers, Graphify, GSD, third-party frontend skills and
|
|
5
|
+
bundled personal skills.
|
|
6
|
+
|
|
7
|
+
The installer source is written in TypeScript and compiled to a dependency-free
|
|
8
|
+
Node CLI in `dist/`. The Bash file is kept only as a compatibility wrapper, so
|
|
9
|
+
existing commands still work after building the project.
|
|
10
|
+
|
|
11
|
+
The repository includes CI, security gates, MIT licensing, portable agent
|
|
12
|
+
instructions and tests for the installer flows.
|
|
13
|
+
|
|
14
|
+
## Runtimes
|
|
15
|
+
|
|
16
|
+
| Runtime | Support |
|
|
17
|
+
|---|---|
|
|
18
|
+
| Claude Code | Plugins and skills |
|
|
19
|
+
| Codex CLI | Plugins, skills and local automation |
|
|
20
|
+
| OpenCode | Skills plus package-driven tools |
|
|
21
|
+
| Gemini CLI | Extensions and native Agent Skills install |
|
|
22
|
+
|
|
23
|
+
## Tools
|
|
24
|
+
|
|
25
|
+
| Tool | What it adds |
|
|
26
|
+
|---|---|
|
|
27
|
+
| RTK | Token-aware shell proxy for coding-agent sessions |
|
|
28
|
+
| Caveman | Terse response mode and optional agent integrations |
|
|
29
|
+
| Superpowers | Planning, TDD, debugging, review and delivery workflows |
|
|
30
|
+
| Graphify | Queryable knowledge graphs for codebases, docs and project context |
|
|
31
|
+
| GSD | Phase-based planning, execution, verification and project control |
|
|
32
|
+
| Frontend Skills | Third-party design skills installed through Agent Skills CLI |
|
|
33
|
+
| Custom Skills | Personal skills bundled in this repository |
|
|
34
|
+
|
|
35
|
+
Superpowers is installed automatically for Claude Code, Codex CLI and Gemini CLI.
|
|
36
|
+
OpenCode support is intentionally not automated yet for Superpowers because the
|
|
37
|
+
upstream install flow is not a stable single command. Caveman, GSD, Frontend
|
|
38
|
+
Skills and Custom Skills can target Claude Code, Codex CLI, OpenCode and Gemini
|
|
39
|
+
CLI. Graphify is installed through the official `graphifyy` package and
|
|
40
|
+
registers itself for the selected runtimes.
|
|
41
|
+
|
|
42
|
+
## Repository Layout
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
bin/
|
|
46
|
+
agent-toolkit.ts Thin TypeScript entrypoint
|
|
47
|
+
.github/
|
|
48
|
+
workflows/
|
|
49
|
+
ci.yml Quality and security gates
|
|
50
|
+
AGENTS.md Shared project rules for coding agents
|
|
51
|
+
CLAUDE.md Pointer to AGENTS.md for Claude Code
|
|
52
|
+
src/
|
|
53
|
+
main.ts Installer orchestration
|
|
54
|
+
args.ts CLI flag parsing
|
|
55
|
+
menu.ts Interactive selection
|
|
56
|
+
runtimes.ts Runtime CLI checks
|
|
57
|
+
skills.ts Recursive skill discovery and installation
|
|
58
|
+
installers/ Tool-specific installers
|
|
59
|
+
dist/
|
|
60
|
+
bin/
|
|
61
|
+
agent-toolkit.js Compiled CLI used by npm and the wrapper
|
|
62
|
+
setup-agent-toolkit.sh Bash compatibility wrapper
|
|
63
|
+
package.json CLI metadata and test scripts
|
|
64
|
+
tools.lock.json Pinned external tool sources and RTK checksums
|
|
65
|
+
LICENSE MIT license
|
|
66
|
+
skills/
|
|
67
|
+
core/
|
|
68
|
+
agent-toolkit-maintainer/
|
|
69
|
+
SKILL.md
|
|
70
|
+
backend/
|
|
71
|
+
tests/
|
|
72
|
+
unit/
|
|
73
|
+
*.test.ts
|
|
74
|
+
test-agent-toolkit.sh
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Prerequisites
|
|
78
|
+
|
|
79
|
+
- Node.js 22+ for the full toolkit
|
|
80
|
+
- `npx` for Caveman, GSD and third-party frontend skills
|
|
81
|
+
- `git` for pinned third-party frontend skill sources
|
|
82
|
+
- `npm` when using `--install-missing-clis`
|
|
83
|
+
- `uv` for Graphify, or `pipx` when `GRAPHIFY_INSTALLER=pipx`
|
|
84
|
+
- `tar` or `unzip` only when RTK needs to be downloaded
|
|
85
|
+
- The runtime CLIs you want to target: `claude`, `codex`, `opencode`, and/or `gemini`
|
|
86
|
+
|
|
87
|
+
The installer can install missing selected runtime CLIs through npm when run
|
|
88
|
+
with `--install-missing-clis`.
|
|
89
|
+
|
|
90
|
+
Install development dependencies and build the CLI before running from a clone:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm install
|
|
94
|
+
npm run build
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Install
|
|
98
|
+
|
|
99
|
+
Run the published package directly:
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
npx -y @ranimontagna/agent-toolkit
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Interactive runs ask which tools, runtimes and skill scopes to install. Pressing
|
|
106
|
+
Enter does not silently install the full kit; choose `all` explicitly when that
|
|
107
|
+
is what you want.
|
|
108
|
+
|
|
109
|
+
Run the full kit for Codex in one command:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npx -y @ranimontagna/agent-toolkit --all --codex
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Run the full kit for every supported runtime:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx -y @ranimontagna/agent-toolkit --all --all-runtimes
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
From a local clone, install development dependencies and build the CLI first:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
npm install
|
|
125
|
+
npm run build
|
|
126
|
+
bash setup-agent-toolkit.sh
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
You can also call the compiled Node CLI directly from a built clone:
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
node dist/bin/agent-toolkit.js
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Target one runtime:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
npx -y @ranimontagna/agent-toolkit --all --codex
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Install a single tool:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npx -y @ranimontagna/agent-toolkit --gsd-only --all-runtimes
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Install Graphify for Codex only:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
npx -y @ranimontagna/agent-toolkit --graphify-only --codex
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Install only third-party frontend design skills for Codex:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
npx -y @ranimontagna/agent-toolkit --frontend-skills-only --codex
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Install only bundled skills into the current project:
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx -y @ranimontagna/agent-toolkit --skills-only --all-runtimes --local
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Install only React-scoped skills:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
npx -y @ranimontagna/agent-toolkit --skills-only --codex --skills-scope frontend/react
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
List available skills and their scope paths:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
npx -y @ranimontagna/agent-toolkit --skills-list
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Install missing selected CLIs before configuring them:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
npx -y @ranimontagna/agent-toolkit --all --gemini --install-missing-clis
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Flags
|
|
184
|
+
|
|
185
|
+
```text
|
|
186
|
+
--all Install every tool without the menu
|
|
187
|
+
--rtk-only Install only RTK
|
|
188
|
+
--caveman-only Install only Caveman
|
|
189
|
+
--superpowers-only Install only Superpowers
|
|
190
|
+
--graphify-only Install only Graphify
|
|
191
|
+
--gsd-only Install only GSD
|
|
192
|
+
--frontend-skills-only Install only third-party frontend skills
|
|
193
|
+
--skills-only Install only Custom Skills
|
|
194
|
+
--no-rtk Skip RTK
|
|
195
|
+
--no-caveman Skip Caveman
|
|
196
|
+
--no-superpowers Skip Superpowers
|
|
197
|
+
--no-graphify Skip Graphify
|
|
198
|
+
--no-gsd Skip GSD
|
|
199
|
+
--no-frontend-skills Skip third-party frontend skills
|
|
200
|
+
--no-skills Skip Custom Skills
|
|
201
|
+
|
|
202
|
+
--all-runtimes Target Claude Code, Codex CLI, OpenCode and Gemini CLI
|
|
203
|
+
--claude Target only Claude Code
|
|
204
|
+
--codex Target only Codex CLI
|
|
205
|
+
--opencode Target only OpenCode
|
|
206
|
+
--gemini Target only Gemini CLI
|
|
207
|
+
--no-claude Skip Claude Code
|
|
208
|
+
--no-codex Skip Codex CLI
|
|
209
|
+
--no-opencode Skip OpenCode
|
|
210
|
+
--no-gemini Skip Gemini CLI
|
|
211
|
+
|
|
212
|
+
--global Install runtime assets into user config directories
|
|
213
|
+
--local Install runtime assets into the current project
|
|
214
|
+
--skills-dir DIR Use another source directory for skills
|
|
215
|
+
--skills-scope SCOPE Install skills under a relative scope path, repeatable
|
|
216
|
+
--skills-list List discovered skills and exit
|
|
217
|
+
--install-missing-clis Install selected runtime CLIs if missing
|
|
218
|
+
--allow-mutable-sources Allow explicit mutable source overrides like @latest
|
|
219
|
+
--help, -h Show help
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Configuration
|
|
223
|
+
|
|
224
|
+
The installer can be customized with environment variables:
|
|
225
|
+
|
|
226
|
+
```text
|
|
227
|
+
RTK_INSTALL_DIR RTK binary install directory
|
|
228
|
+
CAVEMAN_PACKAGE Caveman package source
|
|
229
|
+
CAVEMAN_MODE minimal or all
|
|
230
|
+
GRAPHIFY_PACKAGE Python package used to install Graphify
|
|
231
|
+
GRAPHIFY_INSTALLER uv or pipx
|
|
232
|
+
GSD_PACKAGE GSD package source
|
|
233
|
+
SKILLS_CLI_PACKAGE npm package used for third-party skill installs
|
|
234
|
+
GSD_SCOPE global or local
|
|
235
|
+
TOOLS_LOCK_PATH External tool provenance lock path
|
|
236
|
+
ALLOW_MUTABLE_SOURCES Set to 1 to allow mutable source overrides
|
|
237
|
+
CUSTOM_SKILLS_DIR Source directory for custom skills
|
|
238
|
+
SKILLS_SCOPE Comma-separated skill scope filters
|
|
239
|
+
CLAUDE_CLI_PACKAGE npm package used to install Claude Code CLI
|
|
240
|
+
CODEX_CLI_PACKAGE npm package used to install Codex CLI
|
|
241
|
+
OPENCODE_CLI_PACKAGE npm package used to install OpenCode CLI
|
|
242
|
+
GEMINI_CLI_PACKAGE npm package used to install Gemini CLI
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
Defaults:
|
|
246
|
+
|
|
247
|
+
```text
|
|
248
|
+
CAVEMAN_PACKAGE=github:JuliusBrussee/caveman#655b7d9c5431f822264b7732e9901c5578ac84cf
|
|
249
|
+
GRAPHIFY_PACKAGE=graphifyy==0.8.31
|
|
250
|
+
GRAPHIFY_INSTALLER=uv
|
|
251
|
+
GSD_PACKAGE=get-shit-done-cc@1.42.3
|
|
252
|
+
SKILLS_CLI_PACKAGE=skills@1.5.10
|
|
253
|
+
CLAUDE_CLI_PACKAGE=@anthropic-ai/claude-code@2.1.162
|
|
254
|
+
CODEX_CLI_PACKAGE=@openai/codex@0.137.0
|
|
255
|
+
OPENCODE_CLI_PACKAGE=opencode-ai@1.15.13
|
|
256
|
+
GEMINI_CLI_PACKAGE=@google/gemini-cli@0.45.0
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
These defaults come from `tools.lock.json`. Mutable overrides like `@latest`,
|
|
260
|
+
unpinned npm packages, or GitHub package sources without a full commit SHA are
|
|
261
|
+
blocked unless you pass `--allow-mutable-sources` or set
|
|
262
|
+
`ALLOW_MUTABLE_SOURCES=1`.
|
|
263
|
+
|
|
264
|
+
## External Tool Provenance
|
|
265
|
+
|
|
266
|
+
The CI protects this repository's own dependency graph with `npm audit`,
|
|
267
|
+
registry signature checks, dependency review and Gitleaks. The installer also
|
|
268
|
+
protects tools downloaded later by reading `tools.lock.json` and rejecting
|
|
269
|
+
mutable external sources by default.
|
|
270
|
+
|
|
271
|
+
Current external sources:
|
|
272
|
+
|
|
273
|
+
| Tool | Locked source | Runtime verification |
|
|
274
|
+
|---|---|---|
|
|
275
|
+
| RTK | GitHub release `rtk-ai/rtk@v0.42.1` | Verifies the selected asset SHA-256 before extraction |
|
|
276
|
+
| Caveman | `JuliusBrussee/caveman` at commit `655b7d9c5431f822264b7732e9901c5578ac84cf` | Installs through an immutable GitHub npm spec |
|
|
277
|
+
| Graphify | `graphifyy==0.8.31` | Blocks unpinned package overrides |
|
|
278
|
+
| GSD | `get-shit-done-cc@1.42.3` | Blocks `@latest` unless explicitly allowed |
|
|
279
|
+
| Frontend Skills | `skills@1.5.10`, `pbakaus/impeccable` and `Leonxlnx/taste-skill` at pinned commits | Clones pinned refs, then installs selected skills through Agent Skills CLI |
|
|
280
|
+
| Runtime CLIs | Exact npm versions for Claude, Codex, OpenCode and Gemini | Used when `--install-missing-clis` is enabled |
|
|
281
|
+
|
|
282
|
+
Use `TOOLS_LOCK_PATH=/path/to/tools.lock.json` to test another lock file. Keep
|
|
283
|
+
that file committed if it represents the expected public installer behavior.
|
|
284
|
+
|
|
285
|
+
## Adding Skills
|
|
286
|
+
|
|
287
|
+
Add personal skills under a scope path:
|
|
288
|
+
|
|
289
|
+
```text
|
|
290
|
+
skills/<scope>/<skill-name>/SKILL.md
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
Suggested organization:
|
|
294
|
+
|
|
295
|
+
```text
|
|
296
|
+
skills/
|
|
297
|
+
core/
|
|
298
|
+
agent-toolkit-maintainer/
|
|
299
|
+
SKILL.md
|
|
300
|
+
frontend/
|
|
301
|
+
react/
|
|
302
|
+
react-component-architecture/
|
|
303
|
+
SKILL.md
|
|
304
|
+
backend/
|
|
305
|
+
node/
|
|
306
|
+
fastify-api-patterns/
|
|
307
|
+
SKILL.md
|
|
308
|
+
go/
|
|
309
|
+
go-service-patterns/
|
|
310
|
+
SKILL.md
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
The installer discovers `SKILL.md` files recursively. The repository path is
|
|
314
|
+
used only for organization; runtime installs remain flat:
|
|
315
|
+
|
|
316
|
+
```text
|
|
317
|
+
~/.codex/skills/react-component-architecture/
|
|
318
|
+
~/.codex/skills/fastify-api-patterns/
|
|
319
|
+
~/.codex/skills/go-service-patterns/
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Third-party frontend design skills are not bundled as personal skills. The
|
|
323
|
+
`frontend-skills` tool installs them externally:
|
|
324
|
+
|
|
325
|
+
| Runtime folder | Skill name | Source |
|
|
326
|
+
|---|---|---|
|
|
327
|
+
| `impeccable` | `impeccable` | `pbakaus/impeccable`, Apache-2.0 |
|
|
328
|
+
| `design-taste-frontend` | `design-taste-frontend` | `Leonxlnx/taste-skill`, MIT |
|
|
329
|
+
|
|
330
|
+
Each skill should be concise and self-contained:
|
|
331
|
+
|
|
332
|
+
```markdown
|
|
333
|
+
---
|
|
334
|
+
name: my-skill
|
|
335
|
+
description: Use when doing a specific kind of task.
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
# My Skill
|
|
339
|
+
|
|
340
|
+
Follow these steps...
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
The installer validates the core Agent Skills requirements:
|
|
344
|
+
|
|
345
|
+
- each skill is a directory containing `SKILL.md`;
|
|
346
|
+
- `SKILL.md` starts with YAML frontmatter;
|
|
347
|
+
- `name` and `description` are required;
|
|
348
|
+
- `name` uses lowercase letters, numbers and hyphens only;
|
|
349
|
+
- `description` is non-empty and under 1024 characters.
|
|
350
|
+
|
|
351
|
+
For larger skills, put detailed supporting material in `references/`, scripts in
|
|
352
|
+
`scripts/`, and reusable assets in `assets/`.
|
|
353
|
+
|
|
354
|
+
Use `--skills-scope` to install only a subset:
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
bash setup-agent-toolkit.sh --skills-only --codex --skills-scope backend/node
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
Gemini CLI uses its native command:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
gemini skills install skills/<skill-name> --scope user --consent
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
For local/project installs, the setup uses `--scope workspace`.
|
|
367
|
+
|
|
368
|
+
## Verification
|
|
369
|
+
|
|
370
|
+
Run the full local check:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
npm run check
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Available quality scripts:
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
npm run build # Compile TypeScript into dist/
|
|
380
|
+
npm run typecheck # Type-check source and unit tests
|
|
381
|
+
npm run lint # Biome lint and format checks
|
|
382
|
+
npm run lint:fix # Apply safe Biome fixes
|
|
383
|
+
npm run format # Format with Biome
|
|
384
|
+
npm run security # npm vulnerability audit and registry signature checks
|
|
385
|
+
npm run security:audit # Fail on moderate+ vulnerable dependencies
|
|
386
|
+
npm run security:signatures # Verify npm signatures and attestations
|
|
387
|
+
npm run test:unit # Vitest unit tests
|
|
388
|
+
npm run test:integration # Shell integration test
|
|
389
|
+
npm test # Unit + integration tests
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
The shell integration test validates the wrapper, flags, fake runtime CLIs,
|
|
393
|
+
installer command wiring, skill discovery and public-safe reference checks.
|
|
394
|
+
|
|
395
|
+
The GitHub Actions CI runs four gates:
|
|
396
|
+
|
|
397
|
+
- `Check`: lint, typecheck, unit tests, build and integration tests;
|
|
398
|
+
- `Secret scan`: Gitleaks over full Git history;
|
|
399
|
+
- `Dependency audit`: `npm audit` and `npm audit signatures`;
|
|
400
|
+
- `Dependency review`: blocks PRs that add moderate-or-higher vulnerable dependencies.
|
|
401
|
+
|
|
402
|
+
These gates cover repository code, npm dependencies and pull-request dependency
|
|
403
|
+
changes. External tool version safety is handled by `tools.lock.json` plus
|
|
404
|
+
runtime provenance checks in the installer.
|
|
405
|
+
|
|
406
|
+
## Maintenance
|
|
407
|
+
|
|
408
|
+
Keep this repository public-safe:
|
|
409
|
+
|
|
410
|
+
- do not add company-specific URLs, tokens, secrets or internal project names;
|
|
411
|
+
- prefer public package installers and configurable sources;
|
|
412
|
+
- keep the installer idempotent;
|
|
413
|
+
- cover pure module behavior with Vitest;
|
|
414
|
+
- keep the shell integration test around behavior that can regress;
|
|
415
|
+
- document what is automatic and what still depends on each runtime CLI.
|
|
416
|
+
|
|
417
|
+
Release a new npm version by updating `package.json`, pushing the change to
|
|
418
|
+
`main`, then pushing a matching tag:
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
git tag v0.1.1
|
|
422
|
+
git push origin v0.1.1
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
The `Release` workflow runs the full check and publishes the scoped package to
|
|
426
|
+
npm. Configure the repository secret `NPM_TOKEN` before pushing a release tag.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import { err, InstallerError } from "../src/logger.js";
|
|
4
|
+
import { runInstaller } from "../src/main.js";
|
|
5
|
+
runInstaller().catch((error) => {
|
|
6
|
+
if (error instanceof InstallerError) {
|
|
7
|
+
err(error.message);
|
|
8
|
+
console.error("");
|
|
9
|
+
process.exit(1);
|
|
10
|
+
}
|
|
11
|
+
console.error(error);
|
|
12
|
+
process.exit(1);
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=agent-toolkit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-toolkit.js","sourceRoot":"","sources":["../../bin/agent-toolkit.ts"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC7B,IAAI,KAAK,YAAY,cAAc,EAAE,CAAC;QACpC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function parseArgs(argv: string[]): boolean;
|
package/dist/src/args.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { die } from "./logger.js";
|
|
3
|
+
import { selectOnlyRuntime, selectOnlyTool, setAllRuntimes, setAllTools, splitList, state, } from "./state.js";
|
|
4
|
+
import { usage } from "./usage.js";
|
|
5
|
+
export function parseArgs(argv) {
|
|
6
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
7
|
+
const arg = argv[i];
|
|
8
|
+
if (!arg)
|
|
9
|
+
continue;
|
|
10
|
+
switch (arg) {
|
|
11
|
+
case "--all":
|
|
12
|
+
setAllTools(true);
|
|
13
|
+
state.nonInteractive = true;
|
|
14
|
+
break;
|
|
15
|
+
case "--rtk-only":
|
|
16
|
+
selectOnlyTool("rtk");
|
|
17
|
+
state.nonInteractive = true;
|
|
18
|
+
break;
|
|
19
|
+
case "--caveman-only":
|
|
20
|
+
selectOnlyTool("caveman");
|
|
21
|
+
state.nonInteractive = true;
|
|
22
|
+
break;
|
|
23
|
+
case "--superpowers-only":
|
|
24
|
+
selectOnlyTool("superpowers");
|
|
25
|
+
state.nonInteractive = true;
|
|
26
|
+
break;
|
|
27
|
+
case "--graphify-only":
|
|
28
|
+
selectOnlyTool("graphify");
|
|
29
|
+
state.nonInteractive = true;
|
|
30
|
+
break;
|
|
31
|
+
case "--gsd-only":
|
|
32
|
+
selectOnlyTool("gsd");
|
|
33
|
+
state.nonInteractive = true;
|
|
34
|
+
break;
|
|
35
|
+
case "--frontend-skills-only":
|
|
36
|
+
selectOnlyTool("frontend-skills");
|
|
37
|
+
state.nonInteractive = true;
|
|
38
|
+
break;
|
|
39
|
+
case "--skills-only":
|
|
40
|
+
selectOnlyTool("skills");
|
|
41
|
+
state.nonInteractive = true;
|
|
42
|
+
break;
|
|
43
|
+
case "--no-rtk":
|
|
44
|
+
state.tools.rtk = false;
|
|
45
|
+
state.nonInteractive = true;
|
|
46
|
+
break;
|
|
47
|
+
case "--no-caveman":
|
|
48
|
+
state.tools.caveman = false;
|
|
49
|
+
state.nonInteractive = true;
|
|
50
|
+
break;
|
|
51
|
+
case "--no-superpowers":
|
|
52
|
+
state.tools.superpowers = false;
|
|
53
|
+
state.nonInteractive = true;
|
|
54
|
+
break;
|
|
55
|
+
case "--no-graphify":
|
|
56
|
+
state.tools.graphify = false;
|
|
57
|
+
state.nonInteractive = true;
|
|
58
|
+
break;
|
|
59
|
+
case "--no-gsd":
|
|
60
|
+
state.tools.gsd = false;
|
|
61
|
+
state.nonInteractive = true;
|
|
62
|
+
break;
|
|
63
|
+
case "--no-frontend-skills":
|
|
64
|
+
state.tools["frontend-skills"] = false;
|
|
65
|
+
state.nonInteractive = true;
|
|
66
|
+
break;
|
|
67
|
+
case "--no-skills":
|
|
68
|
+
state.tools.skills = false;
|
|
69
|
+
state.nonInteractive = true;
|
|
70
|
+
break;
|
|
71
|
+
case "--all-runtimes":
|
|
72
|
+
setAllRuntimes(true);
|
|
73
|
+
state.nonInteractive = true;
|
|
74
|
+
break;
|
|
75
|
+
case "--claude":
|
|
76
|
+
selectOnlyRuntime("claude");
|
|
77
|
+
state.nonInteractive = true;
|
|
78
|
+
break;
|
|
79
|
+
case "--codex":
|
|
80
|
+
selectOnlyRuntime("codex");
|
|
81
|
+
state.nonInteractive = true;
|
|
82
|
+
break;
|
|
83
|
+
case "--opencode":
|
|
84
|
+
selectOnlyRuntime("opencode");
|
|
85
|
+
state.nonInteractive = true;
|
|
86
|
+
break;
|
|
87
|
+
case "--gemini":
|
|
88
|
+
selectOnlyRuntime("gemini");
|
|
89
|
+
state.nonInteractive = true;
|
|
90
|
+
break;
|
|
91
|
+
case "--no-claude":
|
|
92
|
+
state.runtimes.claude = false;
|
|
93
|
+
state.nonInteractive = true;
|
|
94
|
+
break;
|
|
95
|
+
case "--no-codex":
|
|
96
|
+
state.runtimes.codex = false;
|
|
97
|
+
state.nonInteractive = true;
|
|
98
|
+
break;
|
|
99
|
+
case "--no-opencode":
|
|
100
|
+
state.runtimes.opencode = false;
|
|
101
|
+
state.nonInteractive = true;
|
|
102
|
+
break;
|
|
103
|
+
case "--no-gemini":
|
|
104
|
+
state.runtimes.gemini = false;
|
|
105
|
+
state.nonInteractive = true;
|
|
106
|
+
break;
|
|
107
|
+
case "--global":
|
|
108
|
+
state.gsdScope = "global";
|
|
109
|
+
break;
|
|
110
|
+
case "--local":
|
|
111
|
+
state.gsdScope = "local";
|
|
112
|
+
break;
|
|
113
|
+
case "--skills-dir":
|
|
114
|
+
i += 1;
|
|
115
|
+
{
|
|
116
|
+
const skillsDir = argv[i];
|
|
117
|
+
if (!skillsDir)
|
|
118
|
+
die("--skills-dir requires a directory.");
|
|
119
|
+
state.customSkillsDir = path.resolve(skillsDir);
|
|
120
|
+
}
|
|
121
|
+
break;
|
|
122
|
+
case "--skills-scope":
|
|
123
|
+
i += 1;
|
|
124
|
+
{
|
|
125
|
+
const skillsScope = argv[i];
|
|
126
|
+
if (!skillsScope)
|
|
127
|
+
die("--skills-scope requires a scope path.");
|
|
128
|
+
state.skillScopes.push(...splitList(skillsScope));
|
|
129
|
+
}
|
|
130
|
+
state.nonInteractive = true;
|
|
131
|
+
break;
|
|
132
|
+
case "--skills-list":
|
|
133
|
+
state.listSkills = true;
|
|
134
|
+
state.nonInteractive = true;
|
|
135
|
+
break;
|
|
136
|
+
case "--install-missing-clis":
|
|
137
|
+
state.installMissingClis = true;
|
|
138
|
+
break;
|
|
139
|
+
case "--allow-mutable-sources":
|
|
140
|
+
state.allowMutableSources = true;
|
|
141
|
+
break;
|
|
142
|
+
case "--help":
|
|
143
|
+
case "-h":
|
|
144
|
+
console.log(usage());
|
|
145
|
+
return false;
|
|
146
|
+
default:
|
|
147
|
+
die(`Unknown flag: ${arg}. Use --help for usage.`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,WAAW,EACX,SAAS,EACT,KAAK,GACN,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,QAAQ,GAAG,EAAE,CAAC;YACZ,KAAK,OAAO;gBACV,WAAW,CAAC,IAAI,CAAC,CAAC;gBAClB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,cAAc,CAAC,SAAS,CAAC,CAAC;gBAC1B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,oBAAoB;gBACvB,cAAc,CAAC,aAAa,CAAC,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,iBAAiB;gBACpB,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,wBAAwB;gBAC3B,cAAc,CAAC,iBAAiB,CAAC,CAAC;gBAClC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,cAAc,CAAC,QAAQ,CAAC,CAAC;gBACzB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,cAAc;gBACjB,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,kBAAkB;gBACrB,KAAK,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAChC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,sBAAsB;gBACzB,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,KAAK,CAAC;gBACvC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,gBAAgB;gBACnB,cAAc,CAAC,IAAI,CAAC,CAAC;gBACrB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,SAAS;gBACZ,iBAAiB,CAAC,OAAO,CAAC,CAAC;gBAC3B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,iBAAiB,CAAC,QAAQ,CAAC,CAAC;gBAC5B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,YAAY;gBACf,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;gBAC7B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAChC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,aAAa;gBAChB,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC;gBAC9B,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,UAAU;gBACb,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC1B,MAAM;YACR,KAAK,SAAS;gBACZ,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACzB,MAAM;YACR,KAAK,cAAc;gBACjB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,IAAI,CAAC,SAAS;wBAAE,GAAG,CAAC,oCAAoC,CAAC,CAAC;oBAC1D,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAClD,CAAC;gBACD,MAAM;YACR,KAAK,gBAAgB;gBACnB,CAAC,IAAI,CAAC,CAAC;gBACP,CAAC;oBACC,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,WAAW;wBAAE,GAAG,CAAC,uCAAuC,CAAC,CAAC;oBAC/D,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;gBACpD,CAAC;gBACD,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,eAAe;gBAClB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC;gBACxB,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC5B,MAAM;YACR,KAAK,wBAAwB;gBAC3B,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAChC,MAAM;YACR,KAAK,yBAAyB;gBAC5B,KAAK,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACjC,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,IAAI;gBACP,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBACrB,OAAO,KAAK,CAAC;YACf;gBACE,GAAG,CAAC,iBAAiB,GAAG,yBAAyB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
export function sha256File(filePath) {
|
|
4
|
+
return createHash("sha256").update(fs.readFileSync(filePath)).digest("hex");
|
|
5
|
+
}
|
|
6
|
+
export function verifySha256File(filePath, expectedSha256) {
|
|
7
|
+
return sha256File(filePath).toLowerCase() === expectedSha256.toLowerCase();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=checksum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checksum.js","sourceRoot":"","sources":["../../src/checksum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,cAAsB;IAEtB,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc,CAAC,WAAW,EAAE,CAAC;AAC7E,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
export const SRC_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
5
|
+
export const REPO_ROOT = path.basename(SRC_DIR) === "src" &&
|
|
6
|
+
path.basename(path.dirname(SRC_DIR)) === "dist"
|
|
7
|
+
? path.resolve(SRC_DIR, "..", "..")
|
|
8
|
+
: path.resolve(SRC_DIR, "..");
|
|
9
|
+
export const HOME = process.env.HOME || os.homedir();
|
|
10
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,SAAS,GACpB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,KAAK;IAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,MAAM;IAC7C,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC;IACnC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAClC,MAAM,CAAC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function installCaveman(): boolean;
|