@graypark/loophaus 3.4.1 → 3.5.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 (151) hide show
  1. package/README.ko.md +81 -17
  2. package/README.md +69 -15
  3. package/dist/.claude-plugin/plugin.json +11 -0
  4. package/dist/LICENSE +21 -0
  5. package/dist/README.ko.md +422 -0
  6. package/dist/README.md +336 -0
  7. package/dist/bin/install.d.ts +3 -0
  8. package/dist/bin/install.d.ts.map +1 -0
  9. package/{bin/install.mjs → dist/bin/install.js} +3 -5
  10. package/dist/bin/install.js.map +1 -0
  11. package/dist/bin/loophaus.d.ts +3 -0
  12. package/dist/bin/loophaus.d.ts.map +1 -0
  13. package/dist/bin/loophaus.js +654 -0
  14. package/dist/bin/loophaus.js.map +1 -0
  15. package/dist/bin/uninstall.d.ts +8 -0
  16. package/dist/bin/uninstall.d.ts.map +1 -0
  17. package/dist/bin/uninstall.js +209 -0
  18. package/dist/bin/uninstall.js.map +1 -0
  19. package/dist/codex/commands/cancel-ralph.md +30 -0
  20. package/dist/codex/commands/ralph-loop.md +73 -0
  21. package/dist/commands/cancel-ralph.md +23 -0
  22. package/dist/commands/help.md +96 -0
  23. package/dist/commands/loop-plan.md +257 -0
  24. package/dist/commands/loop-pulse.md +38 -0
  25. package/dist/commands/loop-stop.md +29 -0
  26. package/dist/commands/loop.md +17 -0
  27. package/dist/commands/ralph-loop.md +18 -0
  28. package/dist/core/cost-tracker.d.ts +33 -0
  29. package/dist/core/cost-tracker.d.ts.map +1 -0
  30. package/dist/core/cost-tracker.js +41 -0
  31. package/dist/core/cost-tracker.js.map +1 -0
  32. package/dist/core/engine.d.ts +4 -0
  33. package/dist/core/engine.d.ts.map +1 -0
  34. package/dist/core/engine.js +109 -0
  35. package/dist/core/engine.js.map +1 -0
  36. package/dist/core/event-logger.d.ts +5 -0
  37. package/dist/core/event-logger.d.ts.map +1 -0
  38. package/dist/core/event-logger.js +48 -0
  39. package/dist/core/event-logger.js.map +1 -0
  40. package/dist/core/events.d.ts +34 -0
  41. package/dist/core/events.d.ts.map +1 -0
  42. package/dist/core/events.js +44 -0
  43. package/dist/core/events.js.map +1 -0
  44. package/dist/core/io-helpers.d.ts +3 -0
  45. package/dist/core/io-helpers.d.ts.map +1 -0
  46. package/dist/core/io-helpers.js +65 -0
  47. package/dist/core/io-helpers.js.map +1 -0
  48. package/dist/core/loop-registry.d.ts +10 -0
  49. package/dist/core/loop-registry.d.ts.map +1 -0
  50. package/dist/core/loop-registry.js +37 -0
  51. package/dist/core/loop-registry.js.map +1 -0
  52. package/dist/core/merge-strategy.d.ts +7 -0
  53. package/dist/core/merge-strategy.d.ts.map +1 -0
  54. package/dist/core/merge-strategy.js +82 -0
  55. package/dist/core/merge-strategy.js.map +1 -0
  56. package/dist/core/parallel-runner.d.ts +32 -0
  57. package/dist/core/parallel-runner.d.ts.map +1 -0
  58. package/dist/core/parallel-runner.js +88 -0
  59. package/dist/core/parallel-runner.js.map +1 -0
  60. package/dist/core/policy.d.ts +22 -0
  61. package/dist/core/policy.d.ts.map +1 -0
  62. package/dist/core/policy.js +54 -0
  63. package/dist/core/policy.js.map +1 -0
  64. package/dist/core/quality-scorer.d.ts +40 -0
  65. package/dist/core/quality-scorer.d.ts.map +1 -0
  66. package/dist/core/quality-scorer.js +128 -0
  67. package/dist/core/quality-scorer.js.map +1 -0
  68. package/dist/core/refine-loop.d.ts +16 -0
  69. package/dist/core/refine-loop.d.ts.map +1 -0
  70. package/dist/core/refine-loop.js +26 -0
  71. package/dist/core/refine-loop.js.map +1 -0
  72. package/dist/core/session.d.ts +27 -0
  73. package/dist/core/session.d.ts.map +1 -0
  74. package/dist/core/session.js +67 -0
  75. package/dist/core/session.js.map +1 -0
  76. package/dist/core/trace-analyzer.d.ts +28 -0
  77. package/dist/core/trace-analyzer.d.ts.map +1 -0
  78. package/dist/core/trace-analyzer.js +46 -0
  79. package/dist/core/trace-analyzer.js.map +1 -0
  80. package/dist/core/types.d.ts +99 -0
  81. package/dist/core/types.d.ts.map +1 -0
  82. package/dist/core/types.js +2 -0
  83. package/dist/core/types.js.map +1 -0
  84. package/dist/core/validate.d.ts +7 -0
  85. package/dist/core/validate.d.ts.map +1 -0
  86. package/dist/core/validate.js +55 -0
  87. package/dist/core/validate.js.map +1 -0
  88. package/dist/core/worktree.d.ts +13 -0
  89. package/dist/core/worktree.d.ts.map +1 -0
  90. package/dist/core/worktree.js +108 -0
  91. package/dist/core/worktree.js.map +1 -0
  92. package/dist/hooks/hooks.json +15 -0
  93. package/dist/hooks/stop-hook.mjs +111 -0
  94. package/dist/lib/paths.d.ts +18 -0
  95. package/dist/lib/paths.d.ts.map +1 -0
  96. package/dist/lib/paths.js +74 -0
  97. package/dist/lib/paths.js.map +1 -0
  98. package/dist/lib/stop-hook-core.d.ts +19 -0
  99. package/dist/lib/stop-hook-core.d.ts.map +1 -0
  100. package/dist/lib/stop-hook-core.js +36 -0
  101. package/dist/lib/stop-hook-core.js.map +1 -0
  102. package/dist/package.json +61 -0
  103. package/dist/platforms/claude-code/adapter.mjs +20 -0
  104. package/dist/platforms/claude-code/installer.d.mts +3 -0
  105. package/dist/platforms/claude-code/installer.mjs +173 -0
  106. package/dist/platforms/codex-cli/adapter.mjs +20 -0
  107. package/dist/platforms/codex-cli/installer.d.mts +2 -0
  108. package/dist/platforms/codex-cli/installer.mjs +247 -0
  109. package/dist/platforms/kiro-cli/adapter.mjs +21 -0
  110. package/dist/platforms/kiro-cli/installer.d.mts +3 -0
  111. package/dist/platforms/kiro-cli/installer.mjs +257 -0
  112. package/dist/scripts/setup-ralph-loop.sh +145 -0
  113. package/dist/skills/ralph-claude-cancel/SKILL.md +23 -0
  114. package/dist/skills/ralph-claude-interview/SKILL.md +184 -0
  115. package/dist/skills/ralph-claude-loop/SKILL.md +101 -0
  116. package/dist/skills/ralph-claude-orchestrator/SKILL.md +129 -0
  117. package/dist/skills/ralph-interview/SKILL.md +275 -0
  118. package/dist/skills/ralph-orchestrator/SKILL.md +254 -0
  119. package/dist/store/state-store.d.ts +17 -0
  120. package/dist/store/state-store.d.ts.map +1 -0
  121. package/dist/store/state-store.js +108 -0
  122. package/dist/store/state-store.js.map +1 -0
  123. package/hooks/stop-hook.mjs +6 -6
  124. package/package.json +11 -7
  125. package/platforms/claude-code/installer.d.mts +3 -0
  126. package/platforms/claude-code/installer.mjs +2 -2
  127. package/platforms/codex-cli/installer.d.mts +2 -0
  128. package/platforms/codex-cli/installer.mjs +1 -1
  129. package/platforms/kiro-cli/installer.d.mts +3 -0
  130. package/bin/loophaus.mjs +0 -521
  131. package/bin/uninstall.mjs +0 -255
  132. package/core/cost-tracker.mjs +0 -44
  133. package/core/engine.mjs +0 -123
  134. package/core/event-logger.mjs +0 -37
  135. package/core/events.mjs +0 -48
  136. package/core/io-helpers.mjs +0 -33
  137. package/core/loop-registry.mjs +0 -37
  138. package/core/loop.schema.json +0 -29
  139. package/core/merge-strategy.mjs +0 -72
  140. package/core/parallel-runner.mjs +0 -94
  141. package/core/policy.mjs +0 -58
  142. package/core/quality-scorer.mjs +0 -136
  143. package/core/refine-loop.mjs +0 -29
  144. package/core/session.mjs +0 -66
  145. package/core/state.schema.json +0 -24
  146. package/core/trace-analyzer.mjs +0 -51
  147. package/core/validate.mjs +0 -54
  148. package/core/worktree.mjs +0 -97
  149. package/lib/paths.mjs +0 -99
  150. package/lib/stop-hook-core.mjs +0 -42
  151. package/store/state-store.mjs +0 -106
package/README.ko.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-36%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <p align="center">
@@ -60,8 +60,10 @@ AI 에이전트가 연속 루프에서 태스크를 수행합니다. 매 반복
60
60
  │ 1. prd.json + progress 읽기 │
61
61
  │ 2. 다음 스토리 선택 (passes=false)│
62
62
  │ 3. 구현 + 검증 │
63
- │ 4. 커밋 + progress 업데이트
64
- │ 5. 종료 시도
63
+ │ 4. 품질 측정 (score 0-100)
64
+ │ 5. 개선 루프 (유지/폐기)
65
+ │ 6. 커밋 + progress 업데이트 │
66
+ │ 7. 종료 시도 │
65
67
  │ │ │
66
68
  │ Stop Hook이 가로채기 │
67
69
  │ 프롬프트 재주입 │
@@ -76,9 +78,12 @@ AI 에이전트가 연속 루프에서 태스크를 수행합니다. 매 반복
76
78
  ## 빠른 시작
77
79
 
78
80
  ```bash
79
- npx @graypark/loophaus install
81
+ npm install -g @graypark/loophaus
82
+ loophaus install
80
83
  ```
81
84
 
85
+ > **참고:** `npx @graypark/loophaus install`은 일부 npm 버전에서 bin 해석 캐시 버그로 실패할 수 있습니다. 위의 글로벌 설치 방식을 권장합니다.
86
+
82
87
  이후 AI 코딩 세션에서:
83
88
 
84
89
  ```
@@ -155,22 +160,29 @@ loophaus는 세 개의 주요 코딩 에이전트 플랫폼을 지원합니다:
155
160
 
156
161
  ## 설치
157
162
 
158
- ### 자동 감지 설치 (권장)
163
+ ### 글로벌 설치 (권장)
164
+
165
+ ```bash
166
+ npm install -g @graypark/loophaus
167
+ loophaus install
168
+ ```
159
169
 
160
- 설치된 호스트를 자동으로 감지하여 설치합니다:
170
+ ### npx로 설치
161
171
 
162
172
  ```bash
163
173
  npx @graypark/loophaus install
164
174
  ```
165
175
 
176
+ > `npx`는 일부 npm 버전에서 bin 해석 캐시 버그로 실패할 수 있습니다. 실패 시 위의 글로벌 설치를 사용하세요.
177
+
166
178
  ### 호스트별 설치
167
179
 
168
180
  특정 호스트만 대상으로 설치:
169
181
 
170
182
  ```bash
171
- npx @graypark/loophaus install --claude # Claude Code만
172
- npx @graypark/loophaus install --host codex-cli # Codex CLI만
173
- npx @graypark/loophaus install --kiro # Kiro CLI만
183
+ loophaus install --claude # Claude Code만
184
+ loophaus install --host codex-cli # Codex CLI만
185
+ loophaus install --kiro # Kiro CLI만
174
186
  ```
175
187
 
176
188
  | 플래그 | 설명 |
@@ -201,11 +213,58 @@ npx @graypark/loophaus install --kiro # Kiro CLI만
201
213
  ## CLI
202
214
 
203
215
  ```bash
204
- npx @graypark/loophaus install # 자동 감지 설치
205
- npx @graypark/loophaus status # 설치 상태 확인
206
- npx @graypark/loophaus stats # 루프 실행 통계
207
- npx @graypark/loophaus uninstall # 제거
208
- npx @graypark/loophaus --version # 버전 확인
216
+ loophaus install # 자동 감지 설치
217
+ loophaus status # 설치 상태 확인
218
+ loophaus stats # 루프 실행 통계
219
+ loophaus quality # 품질 점수 측정
220
+ loophaus uninstall # 제거
221
+ loophaus --version # 버전 확인
222
+ ```
223
+
224
+ ## Quality Loop (v3.4.0+)
225
+
226
+ v3.4.0에서 도입된 **Quality Loop** — [karpathy/autoresearch](https://github.com/karpathy/autoresearch)의 실험→측정→유지/폐기 패턴을 코드 품질 개선에 적용.
227
+
228
+ 테스트가 통과하면 "완료"로 처리하던 기존 방식 대신, `/loop-plan`이 이제 **품질을 측정**(0-100)하고 임계값을 충족할 때까지 **반복 개선**합니다.
229
+
230
+ ```
231
+ Phase 4: 구현
232
+
233
+ Phase 5: 측정 (score 0-100)
234
+ ↓ ↑
235
+ Phase 6: 개선 루프
236
+ 점수 향상? → 유지 (commit)
237
+ 점수 하락? → 폐기 (git reset)
238
+ 최대 시도 도달? → 다음으로
239
+
240
+ Phase 7: 보고서 (품질 점수 포함)
241
+ ```
242
+
243
+ | autoresearch | loophaus |
244
+ |-------------|----------|
245
+ | `val_bpb` | quality score (가중치: tests, typecheck, lint, verify, diff, custom) |
246
+ | `results.tsv` | `.loophaus/results.tsv` |
247
+ | keep → advance | 점수 향상 → commit |
248
+ | discard → revert | 점수 하락 → `git reset --hard` |
249
+ | NEVER STOP | 스토리당 최대 3회 시도 (설정 가능) |
250
+
251
+ ### 설정
252
+
253
+ ```json
254
+ {
255
+ "qualityThreshold": 80,
256
+ "maxRefineAttempts": 3,
257
+ "qualityConfig": {
258
+ "weights": { "tests": 30, "typecheck": 25, "lint": 15, "verify": 15, "diff": 10, "custom": 5 }
259
+ }
260
+ }
261
+ ```
262
+
263
+ ### CLI
264
+
265
+ ```bash
266
+ loophaus quality # 전체 스토리 품질 측정
267
+ loophaus quality --story US-001 # 특정 스토리 품질 측정
209
268
  ```
210
269
 
211
270
  ## 아키텍처
@@ -227,7 +286,12 @@ loophaus/
227
286
  │ └── help.md # /help 커맨드
228
287
  ├── platforms/ # 호스트별 어댑터
229
288
  ├── store/ # 상태 저장소
230
- ├── core/ # 핵심 로직
289
+ ├── core/
290
+ │ ├── engine.mjs # 핵심 루프 엔진
291
+ │ ├── event-logger.mjs # 이벤트 추적
292
+ │ ├── quality-scorer.mjs # 품질 측정 (점수, 평가, 로깅)
293
+ │ ├── refine-loop.mjs # 유지/폐기 개선 로직
294
+ │ └── loop.schema.json # PRD 검증 스키마
231
295
  ├── skills/
232
296
  │ ├── ralph-interview/SKILL.md # Codex: 인터랙티브 커맨드 생성기
233
297
  │ ├── ralph-orchestrator/SKILL.md # Codex: 멀티 에이전트 패턴
@@ -239,7 +303,7 @@ loophaus/
239
303
  │ ├── paths.mjs # 크로스 플랫폼 경로
240
304
  │ ├── state.mjs # 루프 상태 관리
241
305
  │ └── stop-hook-core.mjs # 테스트 가능한 hook 로직
242
- └── tests/ # 36개 테스트 케이스 (vitest)
306
+ └── tests/ # 90개 테스트 케이스 (vitest)
243
307
  ```
244
308
 
245
309
  ## PRD 포맷
@@ -343,7 +407,7 @@ npx @graypark/loophaus uninstall
343
407
  ## 개발
344
408
 
345
409
  ```bash
346
- npm install && npm test # 36개 테스트
410
+ npm install && npm test # 90개 테스트
347
411
  npx vitest # watch 모드
348
412
  ```
349
413
 
package/README.md CHANGED
@@ -10,7 +10,7 @@
10
10
  <a href="https://github.com/vcz-Gray/loophaus/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg?style=flat-square" alt="license" /></a>
11
11
  <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen.svg?style=flat-square" alt="node version" />
12
12
  <img src="https://img.shields.io/badge/platform-Claude%20Code%20%7C%20Codex%20CLI%20%7C%20Kiro%20CLI-purple.svg?style=flat-square" alt="platform" />
13
- <img src="https://img.shields.io/badge/tests-36%20passing-brightgreen.svg?style=flat-square" alt="tests" />
13
+ <img src="https://img.shields.io/badge/tests-90%20passing-brightgreen.svg?style=flat-square" alt="tests" />
14
14
  </p>
15
15
 
16
16
  <h3 align="center">Control plane for coding agents — iterative dev loops across Claude Code, Codex CLI, and Kiro CLI.</h3>
@@ -62,8 +62,10 @@ An AI agent works on a task in a continuous loop. Each iteration starts with fre
62
62
  │ 1. Read prd.json + progress │
63
63
  │ 2. Pick next story (passes=false)│
64
64
  │ 3. Implement + verify │
65
- │ 4. Commit + update progress
66
- │ 5. Exit attempt
65
+ │ 4. Evaluate (score 0-100)
66
+ │ 5. Refine loop (keep/discard)
67
+ │ 6. Commit + update progress │
68
+ │ 7. Exit attempt │
67
69
  │ │ │
68
70
  │ Stop Hook intercepts │
69
71
  │ Re-injects prompt │
@@ -81,9 +83,12 @@ An AI agent works on a task in a continuous loop. Each iteration starts with fre
81
83
  ## Quick Start
82
84
 
83
85
  ```bash
84
- npx @graypark/loophaus install
86
+ npm install -g @graypark/loophaus
87
+ loophaus install
85
88
  ```
86
89
 
90
+ > **Note:** `npx @graypark/loophaus install` may fail on some npm versions due to a bin resolution cache bug. Use the global install above for reliable setup.
91
+
87
92
  The installer auto-detects your host (Claude Code, Codex CLI, or Kiro CLI) and sets up everything — stop hook, commands, and skills.
88
93
 
89
94
  Then in your AI coding session:
@@ -116,18 +121,27 @@ All three platforms share the same core engine (`core/engine.mjs`) and state sto
116
121
 
117
122
  ## Installation
118
123
 
119
- ### Auto-detect (recommended)
124
+ ### Global install (recommended)
125
+
126
+ ```bash
127
+ npm install -g @graypark/loophaus
128
+ loophaus install
129
+ ```
130
+
131
+ ### Via npx
120
132
 
121
133
  ```bash
122
134
  npx @graypark/loophaus install
123
135
  ```
124
136
 
137
+ > `npx` may fail on some npm versions due to a bin resolution cache bug. If it does, use the global install above.
138
+
125
139
  ### Specify host
126
140
 
127
141
  ```bash
128
- npx @graypark/loophaus install --host claude-code
129
- npx @graypark/loophaus install --host codex-cli
130
- npx @graypark/loophaus install --host kiro-cli
142
+ loophaus install --host claude-code
143
+ loophaus install --host codex-cli
144
+ loophaus install --host kiro-cli
131
145
  ```
132
146
 
133
147
  ### Flags
@@ -146,16 +160,54 @@ loophaus ships a standalone CLI for management tasks:
146
160
  loophaus install # Install to detected host
147
161
  loophaus status # Show current loop state and active host
148
162
  loophaus stats # Iteration history and completion metrics
163
+ loophaus quality # Run quality scoring on current stories
149
164
  loophaus uninstall # Clean removal from all hosts
150
165
  ```
151
166
 
152
- Or via npx:
167
+ ## Quality Loop (v3.4.0+)
168
+
169
+ loophaus v3.4.0 introduces the **Quality Loop** — inspired by [karpathy/autoresearch](https://github.com/karpathy/autoresearch)'s experiment→measure→keep/discard pattern.
170
+
171
+ Instead of simply marking a story as "done" when tests pass, `/loop-plan` now **measures quality** (0-100) and **iteratively refines** until the score meets the threshold.
172
+
173
+ ```
174
+ Phase 4: Implement
175
+
176
+ Phase 5: Evaluate (score 0-100)
177
+ ↓ ↑
178
+ Phase 6: Refine Loop
179
+ score improved? → keep (commit)
180
+ score declined? → discard (git reset)
181
+ max attempts reached? → move on
182
+
183
+ Phase 7: Report (with quality scores)
184
+ ```
185
+
186
+ | autoresearch | loophaus |
187
+ |-------------|----------|
188
+ | `val_bpb` | quality score (weighted: tests, typecheck, lint, verify, diff, custom) |
189
+ | `results.tsv` | `.loophaus/results.tsv` |
190
+ | keep → advance | score improved → commit |
191
+ | discard → revert | score declined → `git reset --hard` |
192
+ | NEVER STOP | max 3 attempts per story (configurable) |
193
+
194
+ ### Configuration
195
+
196
+ ```json
197
+ {
198
+ "qualityThreshold": 80,
199
+ "maxRefineAttempts": 3,
200
+ "qualityConfig": {
201
+ "weights": { "tests": 30, "typecheck": 25, "lint": 15, "verify": 15, "diff": 10, "custom": 5 }
202
+ }
203
+ }
204
+ ```
205
+
206
+ ### CLI
153
207
 
154
208
  ```bash
155
- npx @graypark/loophaus install
156
- npx @graypark/loophaus status
157
- npx @graypark/loophaus stats
158
- npx @graypark/loophaus uninstall
209
+ loophaus quality # Score all stories
210
+ loophaus quality --story US-001 # Score a specific story
159
211
  ```
160
212
 
161
213
  ## Architecture
@@ -169,6 +221,8 @@ loophaus/
169
221
  ├── core/
170
222
  │ ├── engine.mjs # Core loop engine (shared)
171
223
  │ ├── event-logger.mjs # Iteration event tracking
224
+ │ ├── quality-scorer.mjs # Quality scoring (score, evaluate, log)
225
+ │ ├── refine-loop.mjs # Keep/discard refinement logic
172
226
  │ └── loop.schema.json # PRD validation schema
173
227
  ├── store/
174
228
  │ └── state-store.mjs # Loop state persistence
@@ -204,7 +258,7 @@ loophaus/
204
258
  │ └── stop-hook-core.mjs # Testable hook logic
205
259
  ├── .claude-plugin/
206
260
  │ └── plugin.json # Claude Code marketplace manifest
207
- └── tests/ # 36 test cases (vitest)
261
+ └── tests/ # 90 test cases (vitest)
208
262
  ```
209
263
 
210
264
  ## PRD Format
@@ -267,7 +321,7 @@ Each story is sized to complete in one iteration (one context window). Dependenc
267
321
  git clone https://github.com/vcz-Gray/loophaus.git
268
322
  cd loophaus
269
323
  npm install
270
- npm test # 36 test cases
324
+ npm test # 90 test cases
271
325
  npx vitest # watch mode
272
326
  ```
273
327
 
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "loophaus",
3
+ "description": "loophaus — Control plane for coding agents",
4
+ "version": "2.0.1",
5
+ "author": {
6
+ "name": "graypark",
7
+ "email": "vcz.graypark@gmail.com"
8
+ },
9
+ "skills": "./skills/",
10
+ "keywords": ["loophaus", "loop", "control-plane", "agents"]
11
+ }
package/dist/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Viewcommz
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.