diff --git a/COMMERCIAL.md b/COMMERCIAL.md new file mode 100644 index 0000000..4ac2e48 --- /dev/null +++ b/COMMERCIAL.md @@ -0,0 +1,35 @@ +# Commercial licensing — stackglass + +stackglass is **source-available proprietary software**, not open source. + +- **Evaluation:** You may view, clone, and try stackglass for non-production evaluation under [`LICENSE`](./LICENSE). +- **Everything else:** Production use, redistribution, SaaS/hosted offerings, CI gates for shipping products, and other commercial use require a **paid commercial license**. + +This file describes how to inquire about a commercial license. It is **not** legal advice and is **not** itself a binding quote or purchase agreement. + +## What a commercial license typically covers + +Commercial terms are negotiated case-by-case. Topics often include: + +- Production and internal business use +- Redistribution / OEM embedding (if needed) +- Hosted / SaaS / multi-tenant use +- Support or update expectations (if offered) +- Seat, org, or deployment scope + +## How to buy / inquire + +1. Open a private channel with GitHub **[@theworker02](https://github.com/theworker02)** (preferred). +2. Reference **stackglass** and whether you need: production use, redistribution, SaaS, or acquisition / partnership. +3. Include approximate company size, use case, and timeline. + +Optional: open a GitHub Discussion or Issue titled `Commercial license inquiry` with non-sensitive details only — do not paste secrets. + +## License transition & enforcement + +Read [`LICENSE_TRANSITION_NOTICE.md`](./LICENSE_TRANSITION_NOTICE.md) for the diligence-ready letter on historical open-source copies versus current proprietary terms, and enforcement by the copyright holder and/or any acquirer/successor. + +## Contact + +**Primary:** GitHub [@theworker02](https://github.com/theworker02) +**Repository:** https://github.com/theworker02/stackglass diff --git a/LICENSE b/LICENSE index a0c5df6..71d83d3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,78 @@ -MIT License - -Copyright (c) 2026 theworker02 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +stackglass Source-Available Evaluation License +Copyright (c) 2026 theworker02 (https://github.com/theworker02) + +IMPORTANT: This is NOT an open-source license. The Software is proprietary +source-available software. Viewing the source does not grant production, +redistribution, SaaS, or other commercial rights. + +1. Definitions + + "Software" means stackglass and all associated source code, binaries, + documentation, and other materials in this repository, excluding + third-party components that carry their own licenses. + + "Licensor" means theworker02 (GitHub: https://github.com/theworker02). + + "Evaluation Use" means non-production use solely to review, evaluate, + test, or demonstrate the Software for your own internal assessment, + including local clones and personal experimentation that is not part of + a live product, paid service, or customer-facing system. + +2. Evaluation grant + + Subject to these terms, Licensor grants you a limited, revocable, + non-exclusive, non-transferable, non-sublicensable license to view, + clone, and use the Software for Evaluation Use only. + +3. Restrictions (commercial license required) + + Except as expressly permitted above, or under a separate written + commercial license from Licensor, you may NOT: + + (a) use the Software in production, staging that serves real users or + customers, CI/CD gates for shipping products, or any live workload; + (b) redistribute, sell, lease, sublicense, or otherwise transfer the + Software or derivative works to third parties; + (c) offer the Software (or substantially similar functionality) as a + hosted, managed, SaaS, or multi-tenant service; + (d) use the Software for any commercial purpose, including internal + business use beyond Evaluation Use; + (e) remove or alter copyright, license, or attribution notices. + +4. Commercial licenses + + Production use, redistribution, SaaS, and other commercial use require + a paid commercial license. See COMMERCIAL.md or contact Licensor via + GitHub @theworker02. This document is not legal advice and does not + create a purchase obligation; commercial terms are set in a separate + written agreement. + +5. Contributions + + By submitting a contribution (pull request, patch, or similar) you + assign to Licensor, or irrevocably license to Licensor under terms + sufficient for Licensor to relicense and commercialize, all rights in + that contribution. Do not contribute code you cannot license this way. + +6. Ownership + + The Software is and remains the exclusive property of Licensor. + No title or ownership is transferred. Third-party dependencies remain + under their respective licenses. + +7. No warranty + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM THE SOFTWARE OR ITS USE. + +8. Termination + + This license terminates automatically if you breach these terms. + Upon termination you must cease all use and destroy copies obtained + under this license, except as required by a separate commercial + agreement or applicable law. + +For commercial licensing, see COMMERCIAL.md. diff --git a/LICENSE_TRANSITION_NOTICE.md b/LICENSE_TRANSITION_NOTICE.md new file mode 100644 index 0000000..fd812f3 --- /dev/null +++ b/LICENSE_TRANSITION_NOTICE.md @@ -0,0 +1,49 @@ +# License Transition & Enforcement Notice + +**Project:** stackglass +**Copyright holder:** theworker02 (https://github.com/theworker02) +**Effective for current and future distributions of this repository** + +This notice is provided for users, evaluators, diligence teams, and prospective licensees or acquirers. It is **not legal advice**. + +## Summary + +| Period | Terms | +|--------|--------| +| **Historical** public distributions that were expressly licensed under the MIT License | Those copies remain governed by the the MIT License terms that accompanied them. This notice does **not** claim those prior open-source grants are revoked, and it does **not** claim that continued use of such historical copies under their original the MIT License terms is illegal. | +| **Current and future** code in this repository (and builds derived from it after the transition) | **Source-available proprietary** evaluation terms in [`LICENSE`](./LICENSE). Production, redistribution, SaaS, and other commercial use require a paid commercial license — see [`COMMERCIAL.md`](./COMMERCIAL.md). | + +## What changed + +stackglass previously used the MIT License for public distribution. The project has transitioned to a **source-available proprietary** model so that commercial licenses can be sold and so that intellectual property can be transferred or exclusively licensed in an acquisition or partnership. + +- Evaluation / viewing / cloning for non-production assessment: see [`LICENSE`](./LICENSE). +- Production, redistribution, hosted/SaaS, and other commercial use: require a commercial license — see [`COMMERCIAL.md`](./COMMERCIAL.md). + +## Enforcement (post-transition code) + +Unauthorized **production**, **redistribution**, **SaaS/hosted**, or other **commercial** use of **post-transition** stackglass code (code distributed under the proprietary [`LICENSE`](./LICENSE), not under a separate commercial agreement) may be enforced by: + +1. the current copyright holder (**theworker02**), and/or +2. any **acquirer, assignee, or other successor** that obtains copyright or exclusive licensing rights in stackglass. + +Enforcement may include (without limitation) requiring a commercial license, seeking injunctive relief, or other remedies available under applicable law. Specific remedies depend on facts, jurisdiction, and the terms of any commercial or acquisition agreement. + +## Historical the MIT License copies (accuracy) + +If you lawfully received a prior release or commit that was published under the MIT License, the license that shipped with that material continues to apply **to that historical material**. This transition notice: + +- does **not** purport to revoke the MIT License grants for those historical copies; +- does **not** recharacterize use of those historical copies under the MIT License as unlawful solely because of this transition; +- **does** make clear that **new work** and **current repository contents** are not offered under the MIT License. + +Mixing historical open-source trees with current proprietary code does not expand prior open-source rights to post-transition material. + +## Acquisition / succession + +An acquisition, asset purchase, or exclusive license may assign or transfer copyright and enforcement rights in stackglass (including the right to license commercially and to enforce against unauthorized commercial use of post-transition code) to a successor. + +## Contact + +Commercial licensing or compliance questions: GitHub [@theworker02](https://github.com/theworker02). +See also [`COMMERCIAL.md`](./COMMERCIAL.md). diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..e18ff5d --- /dev/null +++ b/NOTICE @@ -0,0 +1,8 @@ +# NOTICE + +stackglass +Copyright 2026 theworker02 + +Licensing: source-available proprietary evaluation terms — see LICENSE. +Commercial use requires a separate paid license — see COMMERCIAL.md. +License transition and enforcement: see LICENSE_TRANSITION_NOTICE.md. diff --git a/README.md b/README.md index 6532826..bfc75be 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

+

Stackglass

@@ -11,7 +11,7 @@

CI Release - License + License Tests MCP Documentation @@ -19,7 +19,7 @@ Stackglass is the **observability and verification layer for AI-assisted development**. -Cursor writes and reasons about code. Stackglass gives that agent evidence about state, tests, failures, history, configuration, contracts, and documentation — so it does not have to guess. +Cursor writes and reasons about code. Stackglass gives that agent evidence about state, tests, failures, history, configuration, contracts, and documentation — so it does not have to guess. It is not another coding assistant. @@ -45,7 +45,7 @@ Agents constantly struggle with questions like: what changed, what is broken, wh Stackglass connects those events. Example: ```text -token.ts edited → typecheck fails → two auth tests fail → contract drifts → README example goes stale +token.ts edited → typecheck fails → two auth tests fail → contract drifts → README example goes stale ``` Ask Cursor _what happened?_ and Stackglass answers with evidence. @@ -274,4 +274,5 @@ See [CONTRIBUTING.md](CONTRIBUTING.md) and [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT. ## License -[MIT](LICENSE) +**Source-available proprietary** — evaluation under [LICENSE](./LICENSE); commercial / production use via [COMMERCIAL.md](./COMMERCIAL.md). See [LICENSE_TRANSITION_NOTICE.md](./LICENSE_TRANSITION_NOTICE.md) and [NOTICE](./NOTICE). + diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index 5a0cd64..3d44cdc 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -1,16 +1,16 @@ -{ - "name": "@stackglass/dashboard", - "version": "1.1.0", - "private": true, - "description": "Stackglass local dashboard. Prefer `glass dashboard` which serves live project data.", - "license": "MIT", - "type": "module", - "scripts": { - "dev": "vite", - "build": "vite build", - "preview": "vite preview" - }, - "devDependencies": { - "vite": "^7.1.2" - } +{ + "name": "@stackglass/dashboard", + "version": "1.1.0", + "private": true, + "description": "Stackglass local dashboard. Prefer `glass dashboard` which serves live project data.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview" + }, + "devDependencies": { + "vite": "^7.1.2" + } } diff --git a/apps/docs/package.json b/apps/docs/package.json index ecbfe87..21245ca 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -1,17 +1,17 @@ -{ - "name": "@stackglass/docs", - "version": "1.1.0", - "private": true, - "description": "Stackglass documentation site.", - "license": "MIT", - "type": "module", - "scripts": { - "dev": "vitepress dev", - "build": "vitepress build", - "preview": "vitepress preview" - }, - "devDependencies": { - "vitepress": "^1.6.4", - "vue": "^3.5.18" - } +{ + "name": "@stackglass/docs", + "version": "1.1.0", + "private": true, + "description": "Stackglass documentation site.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "scripts": { + "dev": "vitepress dev", + "build": "vitepress build", + "preview": "vitepress preview" + }, + "devDependencies": { + "vitepress": "^1.6.4", + "vue": "^3.5.18" + } } diff --git a/cli/package.json b/cli/package.json index d094794..7a8d007 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,24 +1,24 @@ -{ - "name": "@stackglass/cli", - "version": "1.1.0", - "private": true, - "description": "glass / stackglass CLI — project observability, GlassLab, and MCP control.", - "license": "MIT", - "type": "module", - "engines": { - "node": ">=22.13.0" - }, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - } - }, - "scripts": { - "build": "tsc -p tsconfig.json" - }, - "dependencies": { - "@stackglass/core": "1.1.0", - "@stackglass/mcp": "1.1.0" - } +{ + "name": "@stackglass/cli", + "version": "1.1.0", + "private": true, + "description": "glass / stackglass CLI — project observability, GlassLab, and MCP control.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "engines": { + "node": "\u003e=22.13.0" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsc -p tsconfig.json" + }, + "dependencies": { + "@stackglass/core": "1.1.0", + "@stackglass/mcp": "1.1.0" + } } diff --git a/package.json b/package.json index 88d60ec..8b040d3 100644 --- a/package.json +++ b/package.json @@ -1,58 +1,58 @@ -{ - "name": "stackglass", - "version": "1.1.0", - "private": true, - "description": "See what your project is actually doing. Developer observability and verification for Cursor.", - "license": "MIT", - "type": "module", - "packageManager": "npm@11.13.0", - "engines": { - "node": ">=22.13.0" - }, - "repository": { - "type": "git", - "url": "https://github.com/theworker02/stackglass.git" - }, - "homepage": "https://theworker02.github.io/stackglass/", - "bugs": { - "url": "https://github.com/theworker02/stackglass/issues" - }, - "workspaces": [ - "packages/core", - "packages/ui", - "cli", - "servers/mcp", - "apps/docs", - "apps/dashboard" - ], - "scripts": { - "build": "npm run build --workspaces --if-present", - "typecheck": "tsc -b --pretty", - "test": "vitest run", - "test:watch": "vitest", - "test:coverage": "vitest run --coverage", - "lint": "eslint .", - "format": "prettier --write .", - "format:check": "prettier --check .", - "docs:dev": "npm run dev -w @stackglass/docs", - "docs:build": "npm run build -w @stackglass/docs", - "dashboard:dev": "npm run dev -w @stackglass/dashboard", - "dashboard:build": "npm run build -w @stackglass/dashboard", - "plugin:build": "node scripts/build-plugin.mjs", - "ci": "npm run format:check && npm run lint && npm run typecheck && npm run test && npm run build && node cli/dist/bin.js help && npm run docs:build && npm run dashboard:build && npm run plugin:build", - "glass": "node cli/dist/bin.js", - "mcp": "node servers/mcp/dist/bin.js", - "prepare": "node scripts/prepare.mjs" - }, - "devDependencies": { - "@eslint/js": "^9.33.0", - "@types/node": "^24.2.1", - "@vitest/coverage-v8": "^3.2.4", - "eslint": "^9.33.0", - "fast-check": "^4.2.0", - "prettier": "^3.6.2", - "typescript": "^5.9.2", - "typescript-eslint": "^8.39.1", - "vitest": "^3.2.4" - } +{ + "name": "stackglass", + "version": "1.1.0", + "private": true, + "description": "See what your project is actually doing. Developer observability and verification for Cursor.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "packageManager": "npm@11.13.0", + "engines": { + "node": "\u003e=22.13.0" + }, + "repository": { + "type": "git", + "url": "https://github.com/theworker02/stackglass.git" + }, + "homepage": "https://theworker02.github.io/stackglass/", + "bugs": { + "url": "https://github.com/theworker02/stackglass/issues" + }, + "workspaces": [ + "packages/core", + "packages/ui", + "cli", + "servers/mcp", + "apps/docs", + "apps/dashboard" + ], + "scripts": { + "build": "npm run build --workspaces --if-present", + "typecheck": "tsc -b --pretty", + "test": "vitest run", + "test:watch": "vitest", + "test:coverage": "vitest run --coverage", + "lint": "eslint .", + "format": "prettier --write .", + "format:check": "prettier --check .", + "docs:dev": "npm run dev -w @stackglass/docs", + "docs:build": "npm run build -w @stackglass/docs", + "dashboard:dev": "npm run dev -w @stackglass/dashboard", + "dashboard:build": "npm run build -w @stackglass/dashboard", + "plugin:build": "node scripts/build-plugin.mjs", + "ci": "npm run format:check \u0026\u0026 npm run lint \u0026\u0026 npm run typecheck \u0026\u0026 npm run test \u0026\u0026 npm run build \u0026\u0026 node cli/dist/bin.js help \u0026\u0026 npm run docs:build \u0026\u0026 npm run dashboard:build \u0026\u0026 npm run plugin:build", + "glass": "node cli/dist/bin.js", + "mcp": "node servers/mcp/dist/bin.js", + "prepare": "node scripts/prepare.mjs" + }, + "devDependencies": { + "@eslint/js": "^9.33.0", + "@types/node": "^24.2.1", + "@vitest/coverage-v8": "^3.2.4", + "eslint": "^9.33.0", + "fast-check": "^4.2.0", + "prettier": "^3.6.2", + "typescript": "^5.9.2", + "typescript-eslint": "^8.39.1", + "vitest": "^3.2.4" + } } diff --git a/packages/core/package.json b/packages/core/package.json index 73b1d8c..85c3634 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,35 +1,35 @@ -{ - "name": "@stackglass/core", - "version": "1.1.0", - "private": true, - "description": "GlassCore runtime, GlassLab, indexing, tracing, and project intelligence for Stackglass.", - "license": "MIT", - "type": "module", - "engines": { - "node": ">=22.13.0" - }, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, - "./protocol": { - "types": "./dist/protocol.d.ts", - "import": "./dist/protocol.js" - } - }, - "scripts": { - "build": "tsc -p tsconfig.json", - "typecheck": "tsc -p tsconfig.json --noEmit" - }, - "dependencies": { - "chokidar": "^4.0.3", - "ignore": "^7.0.5", - "picomatch": "^4.0.2", - "tinyglobby": "^0.2.14", - "zod": "^3.25.76" - }, - "devDependencies": { - "@types/picomatch": "^4.0.0" - } +{ + "name": "@stackglass/core", + "version": "1.1.0", + "private": true, + "description": "GlassCore runtime, GlassLab, indexing, tracing, and project intelligence for Stackglass.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "engines": { + "node": "\u003e=22.13.0" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, + "./protocol": { + "types": "./dist/protocol.d.ts", + "import": "./dist/protocol.js" + } + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "typecheck": "tsc -p tsconfig.json --noEmit" + }, + "dependencies": { + "chokidar": "^4.0.3", + "ignore": "^7.0.5", + "picomatch": "^4.0.2", + "tinyglobby": "^0.2.14", + "zod": "^3.25.76" + }, + "devDependencies": { + "@types/picomatch": "^4.0.0" + } } diff --git a/packages/ui/package.json b/packages/ui/package.json index 6c92ce1..dd7e255 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,13 +1,13 @@ -{ - "name": "@stackglass/ui", - "version": "1.1.0", - "private": true, - "description": "Stackglass design tokens for dashboard and documentation.", - "license": "MIT", - "exports": { - "./tokens.css": "./tokens.css" - }, - "scripts": { - "build": "node -e \"process.exit(0)\"" - } +{ + "name": "@stackglass/ui", + "version": "1.1.0", + "private": true, + "description": "Stackglass design tokens for dashboard and documentation.", + "license": "SEE LICENSE IN LICENSE", + "exports": { + "./tokens.css": "./tokens.css" + }, + "scripts": { + "build": "node -e \"process.exit(0)\"" + } } diff --git a/servers/mcp/package.json b/servers/mcp/package.json index 248af62..b2a7688 100644 --- a/servers/mcp/package.json +++ b/servers/mcp/package.json @@ -1,26 +1,26 @@ -{ - "name": "@stackglass/mcp", - "version": "1.1.0", - "private": true, - "description": "Stackglass MCP server — 22 canonical tools for project observability and verification.", - "license": "MIT", - "type": "module", - "engines": { - "node": ">=22.13.0" - }, - "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - } - }, - "scripts": { - "build": "tsc -p tsconfig.json", - "start": "node dist/bin.js" - }, - "dependencies": { - "@modelcontextprotocol/sdk": "^1.17.5", - "@stackglass/core": "1.1.0", - "zod": "^3.25.76" - } +{ + "name": "@stackglass/mcp", + "version": "1.1.0", + "private": true, + "description": "Stackglass MCP server — 22 canonical tools for project observability and verification.", + "license": "SEE LICENSE IN LICENSE", + "type": "module", + "engines": { + "node": "\u003e=22.13.0" + }, + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + } + }, + "scripts": { + "build": "tsc -p tsconfig.json", + "start": "node dist/bin.js" + }, + "dependencies": { + "@modelcontextprotocol/sdk": "^1.17.5", + "@stackglass/core": "1.1.0", + "zod": "^3.25.76" + } }