atlasia-ghost 0.4.0 → 1.0.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 (131) hide show
  1. package/AGENTS.md +56 -0
  2. package/INSTALL.md +365 -0
  3. package/LICENSE +21 -21
  4. package/README.md +391 -133
  5. package/core/README.md +204 -0
  6. package/core/analytics/README.md +441 -0
  7. package/core/analytics/behavior-analytics.js +326 -0
  8. package/core/analytics/collector.js +383 -0
  9. package/core/analytics/cost-attribution.js +410 -0
  10. package/core/analytics/distributed-tracing.js +493 -0
  11. package/core/analytics/examples/basic-usage.js +45 -0
  12. package/core/analytics/examples/behavior-tracking.js +50 -0
  13. package/core/analytics/examples/cost-tracking.js +65 -0
  14. package/core/analytics/examples/distributed-tracing.js +103 -0
  15. package/core/analytics/examples/performance-regression.js +60 -0
  16. package/core/analytics/examples/recommendations.js +116 -0
  17. package/core/analytics/index.js +215 -0
  18. package/core/analytics/performance-regression.js +404 -0
  19. package/core/analytics/recommendation-engine.js +619 -0
  20. package/core/analytics/runtime-integration.js +253 -0
  21. package/core/capacity-forecasting.js +507 -0
  22. package/core/chaos-engineering.js +552 -0
  23. package/core/code-signing.js +335 -0
  24. package/core/compliance-evidence.js +553 -0
  25. package/core/debugger-adapter.js +172 -0
  26. package/core/dev-mode.js +164 -0
  27. package/core/examples/demo-gateway.js +69 -0
  28. package/core/examples/demo-runtime.js +155 -0
  29. package/core/examples/demo-telemetry.js +92 -0
  30. package/core/examples/extension-wrapper.js +159 -0
  31. package/core/examples/sample-extension-manifest.json +54 -0
  32. package/core/examples/sample-extension.js +115 -0
  33. package/core/examples/sample-subprocess-extension.js +116 -0
  34. package/core/exporters/otlp-exporter.js +370 -0
  35. package/core/exporters/prometheus-exporter.js +111 -0
  36. package/core/extension-loader.js +356 -0
  37. package/core/gateway.js +244 -0
  38. package/core/grafana-dashboard-slo.json +303 -0
  39. package/core/index.js +34 -0
  40. package/core/intrusion-detection.js +347 -0
  41. package/core/manifest-schema.json +787 -0
  42. package/core/marketplace.js +398 -0
  43. package/core/mesh/README.md +416 -0
  44. package/core/mesh/auth-service.js +279 -0
  45. package/core/mesh/coordinator.js +303 -0
  46. package/core/mesh/crdt-state-sync.js +332 -0
  47. package/core/mesh/discovery-service.js +231 -0
  48. package/core/mesh/examples/basic-mesh.js +80 -0
  49. package/core/mesh/examples/distributed-state.js +80 -0
  50. package/core/mesh/examples/full-integration.js +271 -0
  51. package/core/mesh/examples/telemetry-example.js +79 -0
  52. package/core/mesh/examples/workflow-example.js +100 -0
  53. package/core/mesh/index.js +17 -0
  54. package/core/mesh/mesh-network.js +426 -0
  55. package/core/mesh/orchestrator.js +392 -0
  56. package/core/mesh/telemetry-collector.js +393 -0
  57. package/core/operational-maturity.js +299 -0
  58. package/core/pipeline/README.md +576 -0
  59. package/core/pipeline/audit.js +579 -0
  60. package/core/pipeline/auth.js +409 -0
  61. package/core/pipeline/execute.js +538 -0
  62. package/core/pipeline/index.js +169 -0
  63. package/core/pipeline/intercept.js +356 -0
  64. package/core/profiler.js +278 -0
  65. package/core/qos/README.md +297 -0
  66. package/core/qos/adaptive-rate-limiter.js +261 -0
  67. package/core/qos/advanced-rate-limiting.js +484 -0
  68. package/core/qos/advanced-usage-example.js +232 -0
  69. package/core/qos/enhanced-circuit-breaker.js +255 -0
  70. package/core/qos/fair-queuing.js +270 -0
  71. package/core/qos/global-rate-limiter.js +377 -0
  72. package/core/qos/index.js +25 -0
  73. package/core/qos/rate-limit-analytics.js +380 -0
  74. package/core/qos/token-bucket.js +285 -0
  75. package/core/qos/warmup-limiter.js +193 -0
  76. package/core/runbook-automation.js +635 -0
  77. package/core/runtime.js +2013 -0
  78. package/core/sandbox.js +663 -0
  79. package/core/secrets-manager.js +320 -0
  80. package/core/security-dashboard.js +355 -0
  81. package/core/security-hardening.js +191 -0
  82. package/core/security-policy-engine.js +440 -0
  83. package/core/sla-monitoring.js +394 -0
  84. package/core/telemetry-auth.js +285 -0
  85. package/core/telemetry-update.js +3 -0
  86. package/core/telemetry.js +2564 -0
  87. package/core/template-wizard.js +430 -0
  88. package/core/validators/command-validator.js +398 -0
  89. package/core/validators/entropy-validator.js +479 -0
  90. package/core/validators/index.js +11 -0
  91. package/core/validators/network-validator.js +486 -0
  92. package/core/validators/path-validator.js +403 -0
  93. package/core/webhooks/README.md +395 -0
  94. package/core/webhooks/index.js +13 -0
  95. package/core/webhooks/webhook-controller.js +355 -0
  96. package/core/webhooks/webhook-delivery-queue.js +257 -0
  97. package/core/webhooks/webhook-event-store.js +201 -0
  98. package/core/webhooks/webhook-router.js +182 -0
  99. package/core/webhooks/webhook-transform-pipeline.js +237 -0
  100. package/docs/CRASH_ISOLATION.md +323 -0
  101. package/docs/DEVELOPER_EXPERIENCE.md +451 -0
  102. package/docs/DEVELOPER_TOOLKIT.md +541 -0
  103. package/docs/EXPORTER_QUICKSTART.md +270 -0
  104. package/docs/OBSERVABILITY_EXPORT.md +295 -0
  105. package/docs/PRODUCTION_RUNBOOK.md +1839 -0
  106. package/docs/QUICK_REFERENCE.md +337 -0
  107. package/docs/README.md +263 -0
  108. package/docs/SANDBOX.md +402 -0
  109. package/docs/WEBHOOK_QUICK_REFERENCE.md +387 -0
  110. package/docs/WEBHOOK_SETUP.md +796 -0
  111. package/docs/extension-api.md +1967 -0
  112. package/docs/extension-examples.md +772 -0
  113. package/extensions/ghost-git-extension/API.md +317 -0
  114. package/extensions/ghost-git-extension/CHANGELOG.md +86 -0
  115. package/extensions/ghost-git-extension/INTEGRATION.md +395 -0
  116. package/extensions/ghost-git-extension/LICENSE +21 -0
  117. package/extensions/ghost-git-extension/QUICKSTART.md +231 -0
  118. package/extensions/ghost-git-extension/README.md +94 -0
  119. package/extensions/ghost-git-extension/SUMMARY.md +210 -0
  120. package/extensions/ghost-git-extension/example-integration.js +230 -0
  121. package/extensions/ghost-git-extension/extension.js +1313 -0
  122. package/extensions/ghost-git-extension/index.js +88 -0
  123. package/extensions/ghost-git-extension/manifest.json +51 -0
  124. package/extensions/ghost-git-extension/package.json +49 -0
  125. package/extensions/ghost-git-extension/test.js +290 -0
  126. package/extensions/ghost-git-extension/validate-manifest.js +208 -0
  127. package/ghost.js +3510 -1814
  128. package/package.json +53 -40
  129. package/scripts/README.md +210 -0
  130. package/scripts/install.ps1 +185 -0
  131. package/scripts/install.sh +157 -0
package/AGENTS.md ADDED
@@ -0,0 +1,56 @@
1
+ # Ghost CLI - Agent Guide
2
+
3
+ ## Setup & Commands
4
+
5
+ **Initial Setup:** `npm install` (root), `cd desktop && npm install` (desktop app)
6
+
7
+ **Build:** `npm run build` (desktop only, creates production build)
8
+
9
+ **Lint:** `npm run lint` (desktop only, runs ESLint on TypeScript/React files)
10
+
11
+ **Test:** `npm test` (root runs test.js + integration tests in test/)
12
+
13
+ **Dev Server:** `cd desktop && npm run desktop:dev` (Electron app with Vite HMR on :5173)
14
+
15
+ ## Tech Stack
16
+
17
+ - **Root:** Pure Node.js CLI (no deps), zero-install design for global NPM package
18
+ - **Desktop:** Electron + React 18 + TypeScript + Vite + TailwindCSS + Zustand (state)
19
+ - **Testing:** Node assert (root), Vitest (desktop)
20
+ - **Extension SDK:** @ghost/extension-sdk package (CommonJS + TypeScript defs)
21
+
22
+ ## Architecture
23
+
24
+ - `ghost.js`: Main CLI entry with AI-powered Git assistant (Groq/Anthropic/Gemini)
25
+ - `core/`: Gateway, runtime, pipeline layers (intercept→auth→audit→execute)
26
+ - `extensions/`: Bundled extensions (ghost-git-extension)
27
+ - `packages/extension-sdk/`: NPM package for building extensions
28
+ - `desktop/`: Electron monitoring console (React SPA) - dev-only, not published to NPM
29
+ - `test/`: Integration tests for version hooks, merge resolution, and audit features
30
+ - `docs/`: Complete extension development documentation
31
+
32
+ ## Code Style
33
+
34
+ - Root: Node.js CommonJS, minimal comments, ANSI color output
35
+ - Desktop: ESLint flat config, React hooks, TypeScript strict mode, functional components
36
+ - SDK: CommonJS modules with TypeScript definitions
37
+
38
+ ## Extension Developer Toolkit
39
+
40
+ New commands and SDK for building extensions:
41
+
42
+ **CLI Commands:**
43
+ - `ghost extension init <name>` - Scaffold new extension with boilerplate
44
+ - `ghost extension validate [path]` - Validate manifest and permissions
45
+
46
+ **SDK Package:** `packages/extension-sdk/` - @ghost/extension-sdk NPM package with:
47
+ - `ExtensionSDK` class - High-level API (requestFileRead, requestNetworkCall, requestGitExec)
48
+ - `IntentBuilder` - Build JSON-RPC intents
49
+ - `RPCClient` - Communication with Ghost pipeline
50
+ - TypeScript definitions included
51
+
52
+ **Documentation:** `docs/` directory:
53
+ - `extension-api.md` - Complete I/O intent schema with examples
54
+ - `extension-examples.md` - Working examples (file processor, API integration, git helper)
55
+ - `DEVELOPER_TOOLKIT.md` - Complete toolkit guide
56
+ - `QUICK_REFERENCE.md` - Quick reference card
package/INSTALL.md ADDED
@@ -0,0 +1,365 @@
1
+ # Ghost CLI Installation Guide
2
+
3
+ Complete installation instructions for all platforms.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Requirements](#requirements)
8
+ - [Quick Install](#quick-install)
9
+ - [macOS / Linux](#macos--linux)
10
+ - [Windows](#windows)
11
+ - [Manual Installation](#manual-installation)
12
+ - [Post-Installation](#post-installation)
13
+ - [Verification](#verification)
14
+ - [Troubleshooting](#troubleshooting)
15
+ - [Uninstall](#uninstall)
16
+
17
+ ## Requirements
18
+
19
+ - **Node.js**: >= 14.0.0
20
+ - **npm**: >= 6.0.0 (usually bundled with Node.js)
21
+ - **Git**: >= 2.0.0 (for Git-related features)
22
+
23
+ Check your versions:
24
+
25
+ ```bash
26
+ node -v
27
+ npm -v
28
+ git --version
29
+ ```
30
+
31
+ ## Quick Install
32
+
33
+ ### macOS / Linux
34
+
35
+ **One-liner install:**
36
+
37
+ ```bash
38
+ curl -fsSL https://raw.githubusercontent.com/lamallamadel/ghost/main/scripts/install.sh | bash
39
+ ```
40
+
41
+ Or download and run manually:
42
+
43
+ ```bash
44
+ curl -fsSL https://raw.githubusercontent.com/lamallamadel/ghost/main/scripts/install.sh -o install.sh
45
+ chmod +x install.sh
46
+ ./install.sh
47
+ ```
48
+
49
+ **What it does:**
50
+ 1. Verifies Node.js >= 14 is installed
51
+ 2. Installs Ghost CLI globally via npm
52
+ 3. Creates `~/.ghost/` directory structure:
53
+ - `~/.ghost/extensions/` - User-installed extensions
54
+ - `~/.ghost/telemetry/` - Telemetry logs and metrics
55
+ - `~/.ghost/config/` - Configuration files
56
+ 4. Creates default `config.json`
57
+ 5. Verifies installation with `ghost doctor`
58
+
59
+ ### Windows
60
+
61
+ **PowerShell install (Run as Administrator recommended):**
62
+
63
+ ```powershell
64
+ irm https://raw.githubusercontent.com/lamallamadel/ghost/main/scripts/install.ps1 | iex
65
+ ```
66
+
67
+ Or download and run manually:
68
+
69
+ ```powershell
70
+ Invoke-WebRequest -Uri https://raw.githubusercontent.com/lamallamadel/ghost/main/scripts/install.ps1 -OutFile install.ps1
71
+ Set-ExecutionPolicy Bypass -Scope Process -Force
72
+ .\install.ps1
73
+ ```
74
+
75
+ **What it does:**
76
+ 1. Verifies Node.js >= 14 is installed
77
+ 2. Installs Ghost CLI globally via npm
78
+ 3. Creates `%USERPROFILE%\.ghost\` directory structure:
79
+ - `.ghost\extensions\` - User-installed extensions
80
+ - `.ghost\telemetry\` - Telemetry logs and metrics
81
+ - `.ghost\config\` - Configuration files
82
+ 4. Creates default `config.json`
83
+ 5. Verifies installation with `ghost doctor`
84
+
85
+ ## Manual Installation
86
+
87
+ If you prefer to install manually or the quick install fails:
88
+
89
+ ### 1. Install from npm Registry
90
+
91
+ ```bash
92
+ npm install -g atlasia-ghost
93
+ ```
94
+
95
+ ### 2. Install from Source
96
+
97
+ Clone the repository and install locally:
98
+
99
+ ```bash
100
+ git clone https://github.com/lamallamadel/ghost.git
101
+ cd ghost
102
+ npm install -g .
103
+ ```
104
+
105
+ ### 3. Bootstrap Directory Structure
106
+
107
+ Create the Ghost home directory and subdirectories:
108
+
109
+ **macOS / Linux:**
110
+ ```bash
111
+ mkdir -p ~/.ghost/{extensions,telemetry,config}
112
+ ```
113
+
114
+ **Windows (PowerShell):**
115
+ ```powershell
116
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ghost\extensions"
117
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ghost\telemetry"
118
+ New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.ghost\config"
119
+ ```
120
+
121
+ ### 4. Create Default Configuration
122
+
123
+ Create `~/.ghost/config/config.json` (or `%USERPROFILE%\.ghost\config\config.json` on Windows):
124
+
125
+ ```json
126
+ {
127
+ "telemetry": {
128
+ "enabled": false,
129
+ "retention": "7d"
130
+ },
131
+ "extensions": {
132
+ "autoUpdate": false
133
+ },
134
+ "audit": {
135
+ "enabled": true,
136
+ "logPath": "~/.ghost/audit.log"
137
+ }
138
+ }
139
+ ```
140
+
141
+ ## Post-Installation
142
+
143
+ After installation, verify everything is working:
144
+
145
+ ### 1. Check Installation Health
146
+
147
+ ```bash
148
+ ghost doctor
149
+ ```
150
+
151
+ This command checks:
152
+ - ✓ Node.js version (>= 14.0.0)
153
+ - ✓ Ghost directory structure (`~/.ghost/`)
154
+ - ✓ Directory permissions (read/write)
155
+ - ✓ Gateway initialization
156
+ - ✓ Bundled extensions
157
+ - ✓ Configuration file
158
+
159
+ ### 2. View Available Commands
160
+
161
+ ```bash
162
+ ghost --help
163
+ ```
164
+
165
+ ### 3. List Installed Extensions
166
+
167
+ ```bash
168
+ ghost extension list
169
+ ```
170
+
171
+ By default, Ghost includes the `ghost-git-extension` for AI-powered Git operations.
172
+
173
+ ### 4. Test Basic Functionality
174
+
175
+ Try the AI-powered commit feature:
176
+
177
+ ```bash
178
+ cd /path/to/your/git/repo
179
+ ghost commit --dry-run
180
+ ```
181
+
182
+ ## Verification
183
+
184
+ Verify the installation manually:
185
+
186
+ ### Check Binary Location
187
+
188
+ ```bash
189
+ which ghost # macOS / Linux
190
+ where.exe ghost # Windows
191
+ ```
192
+
193
+ ### Check Version
194
+
195
+ ```bash
196
+ ghost --help | head -n 1
197
+ ```
198
+
199
+ Should display: `GHOST CLI v1.0.0 - Gateway Launcher`
200
+
201
+ ### Check Directory Structure
202
+
203
+ **macOS / Linux:**
204
+ ```bash
205
+ ls -la ~/.ghost/
206
+ ```
207
+
208
+ **Windows:**
209
+ ```powershell
210
+ Get-ChildItem $env:USERPROFILE\.ghost -Force
211
+ ```
212
+
213
+ Expected structure:
214
+ ```
215
+ .ghost/
216
+ ├── extensions/ # User extensions
217
+ ├── telemetry/ # Telemetry data
218
+ │ └── .gitignore
219
+ ├── config/ # Configuration
220
+ │ └── config.json
221
+ └── audit.log # Audit log (created on first use)
222
+ ```
223
+
224
+ ## Troubleshooting
225
+
226
+ ### Command Not Found: `ghost`
227
+
228
+ **Issue**: Terminal doesn't recognize `ghost` command after installation.
229
+
230
+ **Solution (macOS / Linux):**
231
+ ```bash
232
+ # Add npm global bin to PATH
233
+ export PATH="$PATH:$(npm bin -g)"
234
+
235
+ # Make permanent (add to ~/.bashrc, ~/.zshrc, etc.)
236
+ echo 'export PATH="$PATH:$(npm bin -g)"' >> ~/.bashrc
237
+ source ~/.bashrc
238
+ ```
239
+
240
+ **Solution (Windows):**
241
+ ```powershell
242
+ # Restart terminal or refresh environment
243
+ refreshenv # If using Chocolatey
244
+ # Or simply restart PowerShell/Command Prompt
245
+ ```
246
+
247
+ ### Permission Denied Errors
248
+
249
+ **Issue**: EACCES errors during npm install.
250
+
251
+ **Solution (macOS / Linux):**
252
+ ```bash
253
+ # Option 1: Use a Node version manager (recommended)
254
+ # Install nvm: https://github.com/nvm-sh/nvm
255
+
256
+ # Option 2: Fix npm permissions
257
+ mkdir ~/.npm-global
258
+ npm config set prefix '~/.npm-global'
259
+ export PATH="$PATH:$HOME/.npm-global/bin"
260
+ ```
261
+
262
+ **Solution (Windows):**
263
+ Run PowerShell or Command Prompt as Administrator.
264
+
265
+ ### Node.js Version Too Old
266
+
267
+ **Issue**: Ghost requires Node.js >= 14.0.0.
268
+
269
+ **Solution**: Upgrade Node.js from https://nodejs.org/ or use a version manager:
270
+
271
+ **macOS / Linux:**
272
+ ```bash
273
+ # Using nvm
274
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
275
+ nvm install 18
276
+ nvm use 18
277
+ ```
278
+
279
+ **Windows:**
280
+ ```powershell
281
+ # Using nvm-windows
282
+ # Download from: https://github.com/coreybutler/nvm-windows/releases
283
+ nvm install 18
284
+ nvm use 18
285
+ ```
286
+
287
+ ### Directory Permissions Issues
288
+
289
+ **Issue**: `ghost doctor` reports permission errors on directories.
290
+
291
+ **Solution (macOS / Linux):**
292
+ ```bash
293
+ # Fix permissions
294
+ chmod 755 ~/.ghost
295
+ chmod -R 755 ~/.ghost/{extensions,telemetry,config}
296
+ ```
297
+
298
+ **Solution (Windows):**
299
+ Check folder permissions in Properties → Security tab. Ensure your user has Full Control.
300
+
301
+ ### Gateway Initialization Failed
302
+
303
+ **Issue**: `ghost doctor` reports gateway initialization failure.
304
+
305
+ **Solution**:
306
+ 1. Check if bundled extensions exist:
307
+ ```bash
308
+ ls $(npm root -g)/atlasia-ghost/extensions/
309
+ ```
310
+ 2. Reinstall Ghost CLI:
311
+ ```bash
312
+ npm uninstall -g atlasia-ghost
313
+ npm install -g atlasia-ghost
314
+ ```
315
+
316
+ ## Uninstall
317
+
318
+ ### Complete Uninstall
319
+
320
+ **1. Remove Ghost CLI:**
321
+ ```bash
322
+ npm uninstall -g atlasia-ghost
323
+ ```
324
+
325
+ **2. Remove configuration and data (optional):**
326
+
327
+ **macOS / Linux:**
328
+ ```bash
329
+ rm -rf ~/.ghost
330
+ ```
331
+
332
+ **Windows (PowerShell):**
333
+ ```powershell
334
+ Remove-Item -Recurse -Force "$env:USERPROFILE\.ghost"
335
+ ```
336
+
337
+ ### Keep Configuration (Reinstall Later)
338
+
339
+ If you want to keep your extensions and configuration:
340
+
341
+ ```bash
342
+ # Only uninstall the CLI
343
+ npm uninstall -g atlasia-ghost
344
+
345
+ # Configuration remains in ~/.ghost/ for future reinstall
346
+ ```
347
+
348
+ ## Additional Resources
349
+
350
+ - **Documentation**: https://github.com/lamallamadel/ghost
351
+ - **Extension Development**: See `docs/extension-api.md`
352
+ - **Issues**: https://github.com/lamallamadel/ghost/issues
353
+ - **Changelog**: https://github.com/lamallamadel/ghost/releases
354
+
355
+ ## Next Steps
356
+
357
+ After successful installation:
358
+
359
+ 1. **Read the documentation**: `ghost --help`
360
+ 2. **Check installation health**: `ghost doctor`
361
+ 3. **Explore extensions**: `ghost extension list`
362
+ 4. **Try AI commit**: `cd your-repo && ghost commit --dry-run`
363
+ 5. **Build an extension**: `ghost extension init my-extension`
364
+
365
+ Enjoy using Ghost CLI! 🎉
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Adel Lamallam
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.
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Adel Lamallam
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.