sajimora 0.0.0-stage → 0.1.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.
package/LICENSE ADDED
@@ -0,0 +1,44 @@
1
+ SAJIMORA SOFTWARE LICENSE AGREEMENT
2
+ Copyright (c) 2026 Sajimora. All rights reserved.
3
+
4
+ 1. GRANT OF LICENSE
5
+ Subject to the terms and conditions of this Agreement, Sajimora grants you a non-exclusive,
6
+ non-transferable, non-sublicensable, revocable limited license to download, install, and execute
7
+ the Sajimora CLI binary, Model Context Protocol (MCP) server, and associated artifacts ("Software") solely for:
8
+ (a) Individual Developers: Free, perpetual, royalty-free use by individual developers, freelancers,
9
+ students, and independent researchers for personal development, open-source work, and individual commercial projects; or
10
+ (b) Authorized beta testing and evaluation in development environments; or
11
+ (c) Exercising rights granted under applicable open-source licenses for bundled or linked components.
12
+
13
+ 2. TEAM, ENTERPRISE, AND ORGANIZATIONAL USE
14
+ Use of the Software by or on behalf of any commercial entity, enterprise, company, or team comprising
15
+ more than one (1) developer, or deployment within corporate automated continuous integration/continuous
16
+ deployment (CI/CD) pipelines, production deployment gates, or enterprise server infrastructure requires
17
+ an active, paid commercial subscription or express written authorization from Sajimora.
18
+
19
+ 3. RESTRICTIONS
20
+ You shall not, and shall not permit any third party to:
21
+ (a) Decompile, reverse engineer, disassemble, or attempt to derive the source code of the Software
22
+ or any algorithms contained therein, except to the extent permitted by mandatory applicable law;
23
+ (b) Modify, adapt, translate, or create derivative works based upon the Software for redistribution or resale;
24
+ (c) Rent, lease, sell, resell, distribute, sublicense, white-label, host as a competing service, or commercially exploit the Software;
25
+ (d) Circumvent, disable, or bypass any license verification, cryptographic verification, or security
26
+ controls built into the Software;
27
+ (e) Remove, alter, or obscure any proprietary copyright, trademark, or attribution notices;
28
+ (f) Notwithstanding any provision in this Agreement, open-source software components bundled with
29
+ or linked by the Software remain licensed under their respective open-source licenses as documented
30
+ in THIRD-PARTY-NOTICES.md. Nothing in this Agreement limits, restricts, or supersedes your rights under,
31
+ or grants you rights that supersede, the terms of any applicable open-source license.
32
+
33
+ 4. INTELLECTUAL PROPERTY
34
+ The Software, including all compiler algorithms, type inference graphs, contract comparison engines,
35
+ data models, and associated documentation, is and remains the exclusive proprietary intellectual
36
+ property of Sajimora and its licensors. No title, ownership, or source code rights are transferred
37
+ to you under this Agreement.
38
+
39
+ 5. DISCLAIMER OF WARRANTY & LIMITATION OF LIABILITY
40
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
41
+ NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT.
42
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY,
43
+ WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM, OUT OF, OR IN CONNECTION WITH THE
44
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,240 @@
1
- # Temporary Holding Version
1
+ <div align="center">
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ # ⚡ Sajimora
4
+
5
+ **Deterministic Cross-Language API Contract Verification & AST Guard for AI Agents & Developers**
6
+
7
+ *The LLM Proposes. Sajimora Verifies.*
8
+
9
+ [![Release](https://img.shields.io/badge/release-v0.1.0-blue.svg?style=flat-square)](https://github.com/sajimoraofficial/sajimora/releases)
10
+ [![License](https://img.shields.io/badge/license-Free_for_Individuals-brightgreen.svg?style=flat-square)](LICENSE)
11
+ [![Rust](https://img.shields.io/badge/rust-2021_edition-orange.svg?style=flat-square)](https://www.rust-lang.org)
12
+ [![MCP](https://img.shields.io/badge/MCP-Model_Context_Protocol-purple.svg?style=flat-square)](https://modelcontextprotocol.io)
13
+ [![npm](https://img.shields.io/badge/npm-sajimora-CB3837.svg?style=flat-square&logo=npm)](https://www.npmjs.com/package/sajimora)
14
+ [![Speed](https://img.shields.io/badge/AST_latency-%3C90ms-brightgreen.svg?style=flat-square)](#-performance-benchmark-thingsboard-monorepo---15m-loc)
15
+
16
+ [Website](https://sajimora.com) • [Quickstart](#-quickstart-in-30-seconds) • [AI Agent MCP](#-mcp-server-for-ai-agents) • [CLI Commands](#-cli-commands) • [Architecture](#-architecture) • [Documentation](https://sajimora.com)
17
+
18
+ </div>
19
+
20
+ ---
21
+
22
+ ## 📌 Why Sajimora?
23
+
24
+ When developers or autonomous AI agents modify a backend endpoint or rename a DTO field, compilers verify each repository in isolation. **They cannot prove if changes break consumers across repositories.**
25
+
26
+ Traditional integration tests require starting Docker containers, spinning up databases, and waiting 10+ minutes.
27
+
28
+ **Sajimora solves this in under 90 milliseconds:**
29
+ * **Extracts AST Contracts Deterministically:** Parses Java (Spring Boot, JAX-RS, Micronaut) and TypeScript/JavaScript (Angular, React, Axios, Fetch, SWR, Nuxt) without compiling code or executing runtimes.
30
+ * **Bi-Directional Differential Ratcheting:** Compares parent revision `R - 1` against candidate `R`. Freezes legacy technical debt and blocks only *new* breaking contract violations.
31
+ * **AI-First Tooling (MCP):** Connects directly into Cursor, Claude Desktop, and Windsurf, enabling LLMs to test "what-if" API changes before editing code.
32
+
33
+ ```text
34
+ [sajimora verify]
35
+ ┌────────────────────────────────────────────────────────────────────────┐
36
+ │ SAJIMORA VERIFICATION REPORT │
37
+ ├────────────────────────────────────────────────────────────────────────┤
38
+ │ Overall Verdict: LIKELY_VIOLATED │
39
+ │ Breaking Consumers: 8 call-sites in 1 file │
40
+ │ Frozen Legacy Debt: 15 findings (Advisory / Non-Blocking) │
41
+ │ Execution Latency: 85 ms (SQLite B-Tree AST Index) │
42
+ ├────────────────────────────────────────────────────────────────────────┤
43
+ │ VIOLATIONS DETECTED: │
44
+ │ • GET /api/user/{id} -> ui/src/user.service.ts:42 │
45
+ │ [Field 'email' was removed from UserDTO, but consumer accesses it] │
46
+ └────────────────────────────────────────────────────────────────────────┘
47
+ ```
48
+
49
+ ---
50
+
51
+ ## 🚀 Quickstart in 30 Seconds
52
+
53
+ ### Option A: Zero-Install via `npx` (Fullstack & Frontend Devs)
54
+
55
+ No Rust compiler required. The lightweight launcher automatically fetches the optimized native binary for your OS:
56
+
57
+ ```bash
58
+ # Run full verification pipeline
59
+ npx sajimora run
60
+
61
+ # Check working tree against contract baseline
62
+ npx sajimora verify
63
+ ```
64
+
65
+ ### Option B: Standalone Native Binary (Pure Java & Backend Devs)
66
+
67
+ Pre-compiled standalone binaries with **zero runtime dependencies** (no Node.js, no npm, no JVM required):
68
+
69
+ ```bash
70
+ # macOS (Apple Silicon & Intel)
71
+ curl -fsSL https://raw.githubusercontent.com/sajimoraofficial/sajimora/main/scripts/install.sh | sh
72
+
73
+ # Linux & CI Runners (GitHub Actions / GitLab CI)
74
+ curl -fsSL https://raw.githubusercontent.com/sajimoraofficial/sajimora/main/scripts/install.sh | sh
75
+
76
+ # Windows (PowerShell)
77
+ irm https://raw.githubusercontent.com/sajimoraofficial/sajimora/main/scripts/install.ps1 | iex
78
+ ```
79
+
80
+ ### Option C: Build from Source (Rust Developers)
81
+
82
+ ```bash
83
+ cargo install --path rust/crates/sajimora-cli
84
+ cargo install --path rust/crates/sajimora-mcp
85
+ ```
86
+
87
+ ---
88
+
89
+ ## 🤖 MCP Server for AI Agents
90
+
91
+ Sajimora includes a native **Model Context Protocol (MCP)** server over `stdio`. It gives autonomous AI agents (Cursor, Claude Desktop, Windsurf, Cline) deterministic AST superpowers so they don't hallucinate API routes or miss breaking changes.
92
+
93
+ ### 1-Click IDE Configuration
94
+
95
+ Add to your **`.cursor/mcp.json`** or **`claude_desktop_config.json`**:
96
+
97
+ ```json
98
+ {
99
+ "mcpServers": {
100
+ "sajimora": {
101
+ "command": "sajimora-mcp",
102
+ "args": ["--trusted-local", "--allowed-root", "."]
103
+ }
104
+ }
105
+ }
106
+ ```
107
+
108
+ ### Available MCP Tools
109
+
110
+ | MCP Tool | Latency | Description |
111
+ | :--- | :---: | :--- |
112
+ | **`sajimora_what_if`** | **~85 ms** | Simulates a hypothetical change (e.g. `REMOVE_FIELD`, `RENAME_ENDPOINT`) and returns all affected files and call sites before making edits. |
113
+ | **`sajimora_verify`** | **~90 ms** | Verifies current working tree modifications against the sealed baseline with differential ratcheting. |
114
+ | **`sajimora_query`** | **< 10 ms** | Instant SQLite B-Tree lookup for consumer call sites, HTTP routes, and DTO definitions. |
115
+ | **`sajimora_endpoint_impact`** | **~35 ms** | Maps changed files in a Git commit to impacted API routes and external callers. |
116
+ | **`sajimora_check_contract`** | **~50 ms** | Cryptographic verification of contract envelopes and admission policies. |
117
+ | **`sajimora_heal`** | **~120 ms** | Suggests autonomous AST patch recipes to heal broken consumer call sites after refactoring. |
118
+
119
+ ---
120
+
121
+ ## 💻 CLI Commands
122
+
123
+ ### 1. `sajimora run` — The Complete Pipeline in One Command
124
+ Runs the full 6-step lifecycle pipeline: Health check, Contract extraction, Cross-language verification, Git impact analysis, and generates `.sajimora/pipeline-report.json`.
125
+
126
+ ```bash
127
+ sajimora run
128
+ ```
129
+
130
+ ### 2. `sajimora verify` — Differential Contract Ratchet
131
+ Verifies local Git changes against the project baseline. Automatically detects modified TypeScript clients and Java endpoints in memory:
132
+
133
+ ```bash
134
+ # Advisory developer mode (exit code 0)
135
+ sajimora verify
136
+
137
+ # CI mode (blocks merge with exit code 1 on breaking violations)
138
+ sajimora verify --fail-on-violation
139
+ ```
140
+
141
+ ### 3. `sajimora what-if` — Change Impact Simulation
142
+ Predicts what will break *before* modifying code:
143
+
144
+ ```bash
145
+ sajimora what-if --target UserDto --field email --action REMOVE_FIELD
146
+ ```
147
+
148
+ ### 4. `sajimora doctor` — Repository Diagnostics
149
+ Validates toolchain health, git readiness, and contract manifest integrity:
150
+
151
+ ```bash
152
+ sajimora doctor
153
+ ```
154
+
155
+ ### 5. `sajimora dashboard` — Visual Contract Health
156
+ Displays an interactive terminal health matrix or generates a standalone HTML report:
157
+
158
+ ```bash
159
+ # Terminal dashboard
160
+ sajimora dashboard
161
+
162
+ # Generate interactive web report
163
+ sajimora dashboard --web
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 🏗️ Architecture
169
+
170
+ Sajimora is written from the ground up in modern Rust with multi-threaded Rayon parallelism and Tree-sitter AST engines:
171
+
172
+ ```mermaid
173
+ flowchart TD
174
+ subgraph Input["Polyglot Sources"]
175
+ BE["Java Backend (Spring Boot / JAX-RS / Micronaut)"]
176
+ FE["TypeScript Frontend (Angular / React / Axios / Fetch)"]
177
+ end
178
+
179
+ subgraph CoreEngine["Pure Native Rust Engine"]
180
+ SI["source-index (Tree-sitter AST Walkers & SQLite B-Tree)"]
181
+ CC["contract-core (Semilattice Algebra & Envelope Crypto)"]
182
+ VF["verifier (Differential Ratchet & Behavioral Gates)"]
183
+ end
184
+
185
+ subgraph Interfaces["Distribution Interfaces"]
186
+ CLI["sajimora CLI (One-Command Native Binary)"]
187
+ MCP["sajimora-mcp (JSON-RPC stdio Server for AI Agents)"]
188
+ NPM["npm Launcher (npx sajimora)"]
189
+ end
190
+
191
+ BE --> SI
192
+ FE --> SI
193
+ SI --> CC
194
+ CC --> VF
195
+ VF --> CLI
196
+ VF --> MCP
197
+ CLI --> NPM
198
+ ```
199
+
200
+ * **`crates/source-index`**: Sub-millisecond AST parser and SQLite B-Tree indexer. Handles monorepos of 1.5M+ lines of code in ~1.2 seconds.
201
+ * **`crates/contract-core`**: Defines the variance contract schema and Ed25519 cryptographic signing.
202
+ * **`crates/verifier`**: Differential ratcheting engine that separates baseline debt from new breaking regressions.
203
+ * **`crates/sajimora-mcp`**: Zero-overhead JSON-RPC stdio server compliant with Anthropic's Model Context Protocol.
204
+
205
+ ---
206
+
207
+ ## ⚡ Performance Benchmark (ThingsBoard Monorepo - 1.5M LOC)
208
+
209
+ Tested against the enterprise [ThingsBoard](https://github.com/thingsboard/thingsboard) repository (1.5M+ lines of Java + Angular):
210
+
211
+ | Task | Traditional CI / Compilation | Sajimora Native Engine | Speedup |
212
+ | :--- | :---: | :---: | :---: |
213
+ | **Full AST Contract Extraction** | 3m 45s (`mvn compile`) | **1.24 s** | **180x faster** |
214
+ | **Differential Ratchet Check** | 4m 10s (`mvn test`) | **85 ms** | **2,900x faster** |
215
+ | **AI Agent Tool Call (MCP)** | N/A (Manual Grep) | **88 ms** | **Sub-second** |
216
+ | **Peak RAM Consumption** | 3.8 GB (JVM) | **< 65 MB** | **98% less RAM** |
217
+
218
+ ---
219
+
220
+ ## 🛡️ CI/CD Integration (GitHub Actions)
221
+
222
+ Add this 4-line step to your `.github/workflows/ci.yml`:
223
+
224
+ ```yaml
225
+ - name: Verify API Contracts
226
+ run: npx sajimora verify --fail-on-violation
227
+ ```
228
+
229
+ ---
230
+
231
+ ## 📄 License
232
+
233
+ Sajimora is licensed under the **[Sajimora Software License Agreement](LICENSE)**:
234
+ * **👨‍💻 Individual Developers:** **100% Free** for individual developers, freelancers, students, and open-source contributors for personal development, hobby projects, and individual commercial work.
235
+ * **🏢 Teams & Organizations:** Use by teams, companies, or organizations with more than one (1) developer, or deployment within corporate automated CI/CD pipelines, requires an active commercial subscription or express written authorization.
236
+ * **🚫 Redistribution Restrictions:** Forking to resell, white-label, rebrand, or host Sajimora as a competing commercial cloud service is strictly prohibited.
237
+
238
+ Bundled third-party open-source components remain licensed under their respective open-source licenses as documented in [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).
239
+
240
+ Copyright © 2026 **Sajimora Team** (`dev@sajimora.com`) • [sajimora.com](https://sajimora.com). All rights reserved.
@@ -0,0 +1,318 @@
1
+ # Third-Party Software Notices and Information
2
+
3
+ This package includes or bundles third-party software components licensed under open-source licenses.
4
+ The respective copyright notices, license texts, and disclaimers are reproduced below.
5
+
6
+ ---
7
+
8
+ ## 1. TypeScript
9
+
10
+ - **Project:** TypeScript (https://github.com/microsoft/TypeScript)
11
+ - **Copyright:** (c) Microsoft Corporation. All rights reserved.
12
+ - **License:** Apache License, Version 2.0
13
+
14
+ ```
15
+ Apache License
16
+ Version 2.0, January 2004
17
+ http://www.apache.org/licenses/
18
+
19
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
20
+
21
+ 1. Definitions.
22
+ "License" shall mean the terms and conditions for use, reproduction,
23
+ and distribution as defined by Sections 1 through 9 of this document.
24
+
25
+ "Licensor" shall mean the copyright owner or entity authorized by
26
+ the copyright owner that is granting the License.
27
+
28
+ "Legal Entity" shall mean the union of the acting entity and all
29
+ other entities that control, are controlled by, or are under common
30
+ control with that entity.
31
+
32
+ 2. Grant of Copyright License. Subject to the terms and conditions of
33
+ this License, each Contributor hereby grants to You a perpetual,
34
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
35
+ copyright license to use, reproduce, prepare Derivative Works of,
36
+ publicly display, publicly perform, sublicense, and distribute the
37
+ Work and such Derivative Works in Source or Object form.
38
+
39
+ 3. Grant of Patent License. Subject to the terms and conditions of
40
+ this License, each Contributor hereby grants to You a perpetual,
41
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
42
+ patent license to make, have made, use, offer to sell, sell, import,
43
+ and otherwise transfer the Work.
44
+
45
+ 4. Redistribution. You may reproduce and distribute copies of the
46
+ Work or Derivative Works thereof in any medium, with or without
47
+ modifications, and in Source or Object form, provided that You meet
48
+ the following conditions:
49
+
50
+ (a) You must give any other recipients of the Work or Derivative
51
+ Works a copy of this License; and
52
+ (b) You must cause any modified files to carry prominent notices
53
+ stating that You changed the files; and
54
+ (c) You must retain, in the Source form of any Derivative Works
55
+ that You distribute, all copyright, patent, trademark, and
56
+ attribution notices from the Source form of the Work; and
57
+ (d) If the Work includes a "NOTICE" text file as part of its
58
+ distribution, then any Derivative Works that You distribute must
59
+ include a readable copy of the attribution notices contained
60
+ within such NOTICE file.
61
+
62
+ 5. Disclaimer of Warranty. Unless required by applicable law or agreed to
63
+ in writing, Licensor provides the Work (and each Contributor provides
64
+ its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
65
+ OF ANY KIND.
66
+ ```
67
+
68
+ ---
69
+
70
+ ## 2. Additional Open-Source Components
71
+
72
+ The following components are utilized within this distribution:
73
+
74
+ | Package | License | Copyright |
75
+ |---|---|---|
76
+ | `zod` | MIT | Copyright (c) 2020 Colin McDonnell |
77
+ | `tree-sitter` | MIT | Copyright (c) 2018 Max Brunsfeld |
78
+ | `tree-sitter-java` | MIT | Copyright (c) 2017 Max Brunsfeld |
79
+ | `@modelcontextprotocol/sdk` | MIT | Copyright (c) Anthropic, PBC |
80
+
81
+ All MIT-licensed components are provided under standard terms:
82
+
83
+ ```
84
+ Permission is hereby granted, free of charge, to any person obtaining a copy
85
+ of this software and associated documentation files (the "Software"), to deal
86
+ in the Software without restriction, including without limitation the rights
87
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
88
+ copies of the Software, and to permit persons to whom the Software is
89
+ furnished to do so, subject to the following conditions:
90
+
91
+ The above copyright notice and this permission notice shall be included in all
92
+ copies or substantial portions of the Software.
93
+
94
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
95
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
96
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
97
+ ```
98
+
99
+
100
+ ---
101
+
102
+ ## 3. Rust Statically Linked Crates
103
+
104
+ The native binaries (sajimora-cli, sajimora-mcp) statically link the following crates:
105
+
106
+ | Crate | License | Copyright / Attribution |
107
+ |---|---|---|
108
+ | clap | MIT OR Apache-2.0 | Copyright (c) 2015-2024 Clap Contributors |
109
+ | okio | MIT | Copyright (c) 2024 Tokio Contributors |
110
+ | serde | MIT OR Apache-2.0 | Copyright (c) 2014-2024 Serde Contributors |
111
+ | serde_json | MIT OR Apache-2.0 | Copyright (c) 2014-2024 Serde JSON Contributors |
112
+ | ed25519-dalek | BSD-3-Clause OR Apache-2.0 | Copyright (c) 2016-2024 Isis Agora Lovecruft, Henry de Valence |
113
+ | sha2 | MIT OR Apache-2.0 | Copyright (c) 2017-2024 RustCrypto Developers |
114
+ |
115
+ mcp | MIT OR Apache-2.0 | Copyright (c) Model Context Protocol Contributors |
116
+ | nyhow | MIT OR Apache-2.0 | Copyright (c) 2019-2024 David Tolnay |
117
+ | hiserror | MIT OR Apache-2.0 | Copyright (c) 2019-2024 David Tolnay |
118
+
119
+ ---
120
+
121
+ ## 4. TypeScript Upstream Third-Party Notices (ThirdPartyNoticeText.txt)
122
+
123
+ `
124
+ /*!----------------- TypeScript ThirdPartyNotices -------------------------------------------------------
125
+
126
+ The TypeScript software incorporates third party material from the projects listed below. The original copyright notice and the license under which Microsoft received such third party material are set forth below. Microsoft reserves all other rights not expressly granted, whether by implication, estoppel or otherwise.
127
+
128
+ ---------------------------------------------
129
+ Third Party Code Components
130
+ --------------------------------------------
131
+
132
+ ------------------- DefinitelyTyped --------------------
133
+ This file is based on or incorporates material from the projects listed below (collectively "Third Party Code"). Microsoft is not the original author of the Third Party Code. The original copyright notice and the license, under which Microsoft received such Third Party Code, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft, not the third party, licenses the Third Party Code to you under the terms set forth in the EULA for the Microsoft Product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise.
134
+ DefinitelyTyped
135
+ This project is licensed under the MIT license. Copyrights are respective of each contributor listed at the beginning of each definition file. Provided for Informational Purposes Only
136
+
137
+ MIT License
138
+ 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:
139
+
140
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
141
+
142
+ 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.
143
+ --------------------------------------------------------------------------------------
144
+
145
+ ------------------- Unicode --------------------
146
+ UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE
147
+
148
+ Unicode Data Files include all data files under the directories
149
+ http://www.unicode.org/Public/, http://www.unicode.org/reports/,
150
+ http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
151
+ http://www.unicode.org/utility/trac/browser/.
152
+
153
+ Unicode Data Files do not include PDF online code charts under the
154
+ directory http://www.unicode.org/Public/.
155
+
156
+ Software includes any source code published in the Unicode Standard
157
+ or under the directories
158
+ http://www.unicode.org/Public/, http://www.unicode.org/reports/,
159
+ http://www.unicode.org/cldr/data/, http://source.icu-project.org/repos/icu/, and
160
+ http://www.unicode.org/utility/trac/browser/.
161
+
162
+ NOTICE TO USER: Carefully read the following legal agreement.
163
+ BY DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S
164
+ DATA FILES ("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"),
165
+ YOU UNEQUIVOCALLY ACCEPT, AND AGREE TO BE BOUND BY, ALL OF THE
166
+ TERMS AND CONDITIONS OF THIS AGREEMENT.
167
+ IF YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE
168
+ THE DATA FILES OR SOFTWARE.
169
+
170
+ COPYRIGHT AND PERMISSION NOTICE
171
+
172
+ Copyright (c) 1991-2017 Unicode, Inc. All rights reserved.
173
+ Distributed under the Terms of Use in http://www.unicode.org/copyright.html.
174
+
175
+ Permission is hereby granted, free of charge, to any person obtaining
176
+ a copy of the Unicode data files and any associated documentation
177
+ (the "Data Files") or Unicode software and any associated documentation
178
+ (the "Software") to deal in the Data Files or Software
179
+ without restriction, including without limitation the rights to use,
180
+ copy, modify, merge, publish, distribute, and/or sell copies of
181
+ the Data Files or Software, and to permit persons to whom the Data Files
182
+ or Software are furnished to do so, provided that either
183
+ (a) this copyright and permission notice appear with all copies
184
+ of the Data Files or Software, or
185
+ (b) this copyright and permission notice appear in associated
186
+ Documentation.
187
+
188
+ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF
189
+ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
190
+ WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
191
+ NONINFRINGEMENT OF THIRD PARTY RIGHTS.
192
+ IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS
193
+ NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL
194
+ DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
195
+ DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
196
+ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
197
+ PERFORMANCE OF THE DATA FILES OR SOFTWARE.
198
+
199
+ Except as contained in this notice, the name of a copyright holder
200
+ shall not be used in advertising or otherwise to promote the sale,
201
+ use or other dealings in these Data Files or Software without prior
202
+ written authorization of the copyright holder.
203
+ -------------------------------------------------------------------------------------
204
+
205
+ -------------------Document Object Model-----------------------------
206
+ DOM
207
+
208
+ W3C License
209
+ This work is being provided by the copyright holders under the following license.
210
+ By obtaining and/or copying this work, you (the licensee) agree that you have read, understood, and will comply with the following terms and conditions.
211
+ Permission to copy, modify, and distribute this work, with or without modification, for any purpose and without fee or royalty is hereby granted, provided that you include the following
212
+ on ALL copies of the work or portions thereof, including modifications:
213
+ * The full text of this NOTICE in a location viewable to users of the redistributed or derivative work.
214
+ * Any pre-existing intellectual property disclaimers, notices, or terms and conditions. If none exist, the W3C Software and Document Short Notice should be included.
215
+ * Notice of any changes or modifications, through a copyright statement on the new code or document such as "This software or document includes material copied from or derived
216
+ from [title and URI of the W3C document]. Copyright © [YEAR] W3C® (MIT, ERCIM, Keio, Beihang)."
217
+ Disclaimers
218
+ THIS WORK IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, WARRANTIES OF MERCHANTABILITY OR
219
+ FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENT WILL NOT INFRINGE ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.
220
+ COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENT.
221
+ The name and trademarks of copyright holders may NOT be used in advertising or publicity pertaining to the work without specific, written prior permission.
222
+ Title to copyright in this work will at all times remain with copyright holders.
223
+
224
+ ---------
225
+
226
+ DOM
227
+ Copyright © 2018 WHATWG (Apple, Google, Mozilla, Microsoft). This work is licensed under a Creative Commons Attribution 4.0 International License: Attribution 4.0 International
228
+ =======================================================================
229
+ Creative Commons Corporation ("Creative Commons") is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an "as-is" basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. Using Creative Commons Public Licenses Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC- licensed material, or material used under an exception or limitation to copyright. More considerations for licensors:
230
+
231
+ wiki.creativecommons.org/Considerations_for_licensors Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor's permission is not necessary for any reason--for example, because of any applicable exception or limitation to copyright--then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More_considerations for the public: wiki.creativecommons.org/Considerations_for_licensees =======================================================================
232
+ Creative Commons Attribution 4.0 International Public License By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. Section 1 -- Definitions. a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. Section 2 -- Scope. a. License grant. 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: a. reproduce and Share the Licensed Material, in whole or in part; and b. produce, reproduce, and Share Adapted Material. 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. 3. Term. The term of this Public License is specified in Section 6(a). 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a) (4) never produces Adapted Material. 5. Downstream recipients. a. Offer from the Licensor -- Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. b. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). b. Other rights. 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. 2. Patent and trademark rights are not licensed under this Public License. 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. Section 3 -- License Conditions. Your exercise of the Licensed Rights is expressly made subject to the following conditions. a. Attribution. 1. If You Share the Licensed Material (including in modified form), You must: a. retain the following if it is supplied by the Licensor with the Licensed Material: i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); ii. a copyright notice; iii. a notice that refers to this Public License; iv. a notice that refers to the disclaimer of warranties; v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; b. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and c. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. Section 4 -- Sui Generis Database Rights. Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. Section 5 -- Disclaimer of Warranties and Limitation of Liability. a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. Section 6 -- Term and Termination. a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or 2. upon express reinstatement by the Licensor. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. c. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. d. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. Section 7 -- Other Terms and Conditions. a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. Section 8 -- Interpretation. a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. ======================================================================= Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the "Licensor." Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark "Creative Commons" or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. Creative Commons may be contacted at creativecommons.org.
233
+
234
+ --------------------------------------------------------------------------------
235
+
236
+ ----------------------Web Background Synchronization------------------------------
237
+
238
+ Web Background Synchronization Specification
239
+ Portions of spec © by W3C
240
+
241
+ W3C Community Final Specification Agreement
242
+ To secure commitments from participants for the full text of a Community or Business Group Report, the group may call for voluntary commitments to the following terms; a "summary" is
243
+ available. See also the related "W3C Community Contributor License Agreement".
244
+ 1. The Purpose of this Agreement.
245
+ This Agreement sets forth the terms under which I make certain copyright and patent rights available to you for your implementation of the Specification.
246
+ Any other capitalized terms not specifically defined herein have the same meaning as those terms have in the "W3C Patent Policy", and if not defined there, in the "W3C Process Document".
247
+ 2. Copyrights.
248
+ 2.1. Copyright Grant. I grant to you a perpetual (for the duration of the applicable copyright), worldwide, non-exclusive, no-charge, royalty-free, copyright license, without any obligation for accounting to me, to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, distribute, and implement the Specification to the full extent of my copyright interest in the Specification.
249
+ 2.2. Attribution. As a condition of the copyright grant, you must include an attribution to the Specification in any derivative work you make based on the Specification. That attribution must include, at minimum, the Specification name and version number.
250
+ 3. Patents.
251
+ 3.1. Patent Licensing Commitment. I agree to license my Essential Claims under the W3C Community RF Licensing Requirements. This requirement includes Essential Claims that I own and any that I have the right to license without obligation of payment or other consideration to an unrelated third party. W3C Community RF Licensing Requirements obligations made concerning the Specification and described in this policy are binding on me for the life of the patents in question and encumber the patents containing Essential Claims, regardless of changes in participation status or W3C Membership. I also agree to license my Essential Claims under the W3C Community RF Licensing Requirements in derivative works of the Specification so long as all normative portions of the Specification are maintained and that this licensing commitment does not extend to any portion of the derivative work that was not included in the Specification.
252
+ 3.2. Optional, Additional Patent Grant. In addition to the provisions of Section 3.1, I may also, at my option, make certain intellectual property rights infringed by implementations of the Specification, including Essential Claims, available by providing those terms via the W3C Web site.
253
+ 4. No Other Rights. Except as specifically set forth in this Agreement, no other express or implied patent, trademark, copyright, or other property rights are granted under this Agreement, including by implication, waiver, or estoppel.
254
+ 5. Antitrust Compliance. I acknowledge that I may compete with other participants, that I am under no obligation to implement the Specification, that each participant is free to develop competing technologies and standards, and that each party is free to license its patent rights to third parties, including for the purpose of enabling competing technologies and standards.
255
+ 6. Non-Circumvention. I agree that I will not intentionally take or willfully assist any third party to take any action for the purpose of circumventing my obligations under this Agreement.
256
+ 7. Transition to W3C Recommendation Track. The Specification developed by the Project may transition to the W3C Recommendation Track. The W3C Team is responsible for notifying me that a Corresponding Working Group has been chartered. I have no obligation to join the Corresponding Working Group. If the Specification developed by the Project transitions to the W3C Recommendation Track, the following terms apply:
257
+ 7.1. If I join the Corresponding Working Group. If I join the Corresponding Working Group, I will be subject to all W3C rules, obligations, licensing commitments, and policies that govern that Corresponding Working Group.
258
+ 7.2. If I Do Not Join the Corresponding Working Group.
259
+ 7.2.1. Licensing Obligations to Resulting Specification. If I do not join the Corresponding Working Group, I agree to offer patent licenses according to the W3C Royalty-Free licensing requirements described in Section 5 of the W3C Patent Policy for the portions of the Specification included in the resulting Recommendation. This licensing commitment does not extend to any portion of an implementation of the Recommendation that was not included in the Specification. This licensing commitment may not be revoked but may be modified through the exclusion process defined in Section 4 of the W3C Patent Policy. I am not required to join the Corresponding Working Group to exclude patents from the W3C Royalty-Free licensing commitment, but must otherwise follow the normal exclusion procedures defined by the W3C Patent Policy. The W3C Team will notify me of any Call for Exclusion in the Corresponding Working Group as set forth in Section 4.5 of the W3C Patent Policy.
260
+ 7.2.2. No Disclosure Obligation. If I do not join the Corresponding Working Group, I have no patent disclosure obligations outside of those set forth in Section 6 of the W3C Patent Policy.
261
+ 8. Conflict of Interest. I will disclose significant relationships when those relationships might reasonably be perceived as creating a conflict of interest with my role. I will notify W3C of any change in my affiliation using W3C-provided mechanisms.
262
+ 9. Representations, Warranties and Disclaimers. I represent and warrant that I am legally entitled to grant the rights and promises set forth in this Agreement. IN ALL OTHER RESPECTS THE SPECIFICATION IS PROVIDED “AS IS.” The entire risk as to implementing or otherwise using the Specification is assumed by the implementer and user. Except as stated herein, I expressly disclaim any warranties (express, implied, or otherwise), including implied warranties of merchantability, non-infringement, fitness for a particular purpose, or title, related to the Specification. IN NO EVENT WILL ANY PARTY BE LIABLE TO ANY OTHER PARTY FOR LOST PROFITS OR ANY FORM OF INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER FROM ANY CAUSES OF ACTION OF ANY KIND WITH RESPECT TO THIS AGREEMENT, WHETHER BASED ON BREACH OF CONTRACT, TORT (INCLUDING NEGLIGENCE), OR OTHERWISE, AND WHETHER OR NOT THE OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. All of my obligations under Section 3 regarding the transfer, successors in interest, or assignment of Granted Claims will be satisfied if I notify the transferee or assignee of any patent that I know contains Granted Claims of the obligations under Section 3. Nothing in this Agreement requires me to undertake a patent search.
263
+ 10. Definitions.
264
+ 10.1. Agreement. “Agreement” means this W3C Community Final Specification Agreement.
265
+ 10.2. Corresponding Working Group. “Corresponding Working Group” is a W3C Working Group that is chartered to develop a Recommendation, as defined in the W3C Process Document, that takes the Specification as an input.
266
+ 10.3. Essential Claims. “Essential Claims” shall mean all claims in any patent or patent application in any jurisdiction in the world that would necessarily be infringed by implementation of the Specification. A claim is necessarily infringed hereunder only when it is not possible to avoid infringing it because there is no non-infringing alternative for implementing the normative portions of the Specification. Existence of a non-infringing alternative shall be judged based on the state of the art at the time of the publication of the Specification. The following are expressly excluded from and shall not be deemed to constitute Essential Claims:
267
+ 10.3.1. any claims other than as set forth above even if contained in the same patent as Essential Claims; and
268
+ 10.3.2. claims which would be infringed only by:
269
+ portions of an implementation that are not specified in the normative portions of the Specification, or
270
+ enabling technologies that may be necessary to make or use any product or portion thereof that complies with the Specification and are not themselves expressly set forth in the Specification (e.g., semiconductor manufacturing technology, compiler technology, object-oriented technology, basic operating system technology, and the like); or
271
+ the implementation of technology developed elsewhere and merely incorporated by reference in the body of the Specification.
272
+ 10.3.3. design patents and design registrations.
273
+ For purposes of this definition, the normative portions of the Specification shall be deemed to include only architectural and interoperability requirements. Optional features in the RFC 2119 sense are considered normative unless they are specifically identified as informative. Implementation examples or any other material that merely illustrate the requirements of the Specification are informative, rather than normative.
274
+ 10.4. I, Me, or My. “I,” “me,” or “my” refers to the signatory.
275
+ 10.5 Project. “Project” means the W3C Community Group or Business Group for which I executed this Agreement.
276
+ 10.6. Specification. “Specification” means the Specification identified by the Project as the target of this agreement in a call for Final Specification Commitments. W3C shall provide the authoritative mechanisms for the identification of this Specification.
277
+ 10.7. W3C Community RF Licensing Requirements. “W3C Community RF Licensing Requirements” license shall mean a non-assignable, non-sublicensable license to make, have made, use, sell, have sold, offer to sell, import, and distribute and dispose of implementations of the Specification that:
278
+ 10.7.1. shall be available to all, worldwide, whether or not they are W3C Members;
279
+ 10.7.2. shall extend to all Essential Claims owned or controlled by me;
280
+ 10.7.3. may be limited to implementations of the Specification, and to what is required by the Specification;
281
+ 10.7.4. may be conditioned on a grant of a reciprocal RF license (as defined in this policy) to all Essential Claims owned or controlled by the licensee. A reciprocal license may be required to be available to all, and a reciprocal license may itself be conditioned on a further reciprocal license from all.
282
+ 10.7.5. may not be conditioned on payment of royalties, fees or other consideration;
283
+ 10.7.6. may be suspended with respect to any licensee when licensor issued by licensee for infringement of claims essential to implement the Specification or any W3C Recommendation;
284
+ 10.7.7. may not impose any further conditions or restrictions on the use of any technology, intellectual property rights, or other restrictions on behavior of the licensee, but may include reasonable, customary terms relating to operation or maintenance of the license relationship such as the following: choice of law and dispute resolution;
285
+ 10.7.8. shall not be considered accepted by an implementer who manifests an intent not to accept the terms of the W3C Community RF Licensing Requirements license as offered by the licensor.
286
+ 10.7.9. The RF license conforming to the requirements in this policy shall be made available by the licensor as long as the Specification is in effect. The term of such license shall be for the life of the patents in question.
287
+ I am encouraged to provide a contact from which licensing information can be obtained and other relevant licensing information. Any such information will be made publicly available.
288
+ 10.8. You or Your. “You,” “you,” or “your” means any person or entity who exercises copyright or patent rights granted under this Agreement, and any person that person or entity controls.
289
+
290
+ -------------------------------------------------------------------------------------
291
+
292
+ ------------------- WebGL -----------------------------
293
+ Copyright (c) 2018 The Khronos Group Inc.
294
+
295
+ Permission is hereby granted, free of charge, to any person obtaining a
296
+ copy of this software and/or associated documentation files (the
297
+ "Materials"), to deal in the Materials without restriction, including
298
+ without limitation the rights to use, copy, modify, merge, publish,
299
+ distribute, sublicense, and/or sell copies of the Materials, and to
300
+ permit persons to whom the Materials are furnished to do so, subject to
301
+ the following conditions:
302
+
303
+ The above copyright notice and this permission notice shall be included
304
+ in all copies or substantial portions of the Materials.
305
+
306
+ THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
307
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
308
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
309
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
310
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
311
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
312
+ MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
313
+ ------------------------------------------------------
314
+
315
+ ------------- End of ThirdPartyNotices ------------------------------------------- */
316
+
317
+
318
+ `
package/bin/runner.cjs ADDED
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Sajimora Native Binary Runner (Zero-Dependency)
4
+ * Launches native Rust binaries (sajimora, sajimora-mcp) from npm/npx.
5
+ */
6
+ const { spawnSync } = require('node:child_process');
7
+ const path = require('node:path');
8
+ const fs = require('node:fs');
9
+ const os = require('node:os');
10
+ const https = require('node:https');
11
+
12
+ const PKG = require('../package.json');
13
+ const VERSION = PKG.version;
14
+ const REPO = 'sajimoraofficial/sajimora';
15
+
16
+ const TARGET_MAP = {
17
+ 'darwin-arm64': { target: 'aarch64-apple-darwin', ext: 'tar.gz', suffix: '' },
18
+ 'darwin-x64': { target: 'x86_64-apple-darwin', ext: 'tar.gz', suffix: '' },
19
+ 'linux-x64': { target: 'x86_64-unknown-linux-gnu', ext: 'tar.gz', suffix: '' },
20
+ 'win32-x64': { target: 'x86_64-pc-windows-msvc', ext: 'zip', suffix: '.exe' },
21
+ };
22
+
23
+ function getPlatformKey() {
24
+ return `${os.platform()}-${os.arch()}`;
25
+ }
26
+
27
+ function getCacheDir() {
28
+ const home = os.homedir();
29
+ return path.join(home, '.sajimora', 'bin', `v${VERSION}`);
30
+ }
31
+
32
+ function resolveBinary(binaryName) {
33
+ const platKey = getPlatformKey();
34
+ const spec = TARGET_MAP[platKey];
35
+ if (!spec) {
36
+ console.error(`[sajimora] Unsupported platform/architecture: ${platKey}`);
37
+ console.error(`[sajimora] Supported: ${Object.keys(TARGET_MAP).join(', ')}`);
38
+ process.exit(1);
39
+ }
40
+
41
+ const binaryFilename = `${binaryName}${spec.suffix}`;
42
+
43
+ // 1. Check local Rust build (for development in repo)
44
+ const localBuild = path.resolve(__dirname, '..', 'rust', 'target', 'release', binaryFilename);
45
+ if (fs.existsSync(localBuild)) {
46
+ return localBuild;
47
+ }
48
+
49
+ // 2. Check cached binary in ~/.sajimora/bin/vX.Y.Z/
50
+ const cachedDir = getCacheDir();
51
+ const cachedPath = path.join(cachedDir, binaryFilename);
52
+ if (fs.existsSync(cachedPath)) {
53
+ return cachedPath;
54
+ }
55
+
56
+ // 3. Auto-download from GitHub Release
57
+ ensureBinaryDownloaded(binaryName, spec, cachedDir);
58
+ if (fs.existsSync(cachedPath)) {
59
+ return cachedPath;
60
+ }
61
+
62
+ console.error(`[sajimora] Failed to locate or download ${binaryFilename}.`);
63
+ console.error(`[sajimora] Please install manually from https://github.com/${REPO}/releases/tag/v${VERSION}`);
64
+ process.exit(1);
65
+ }
66
+
67
+ function downloadFile(url, destPath) {
68
+ return new Promise((resolve, reject) => {
69
+ https.get(url, (res) => {
70
+ if (res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) {
71
+ // Follow redirect (GitHub Release -> S3)
72
+ return downloadFile(res.headers.location, destPath).then(resolve).catch(reject);
73
+ }
74
+ if (res.statusCode !== 200) {
75
+ return reject(new Error(`HTTP ${res.statusCode} from ${url}`));
76
+ }
77
+ const file = fs.createWriteStream(destPath);
78
+ res.pipe(file);
79
+ file.on('finish', () => {
80
+ file.close(() => resolve(destPath));
81
+ });
82
+ }).on('error', (err) => {
83
+ fs.unlink(destPath, () => {});
84
+ reject(err);
85
+ });
86
+ });
87
+ }
88
+
89
+ function ensureBinaryDownloaded(binaryName, spec, cachedDir) {
90
+ const archiveName = `sajimora-v${VERSION}-${spec.target}.${spec.ext}`;
91
+ const releaseUrl = `https://github.com/${REPO}/releases/download/v${VERSION}/${archiveName}`;
92
+
93
+ fs.mkdirSync(cachedDir, { recursive: true });
94
+ const archivePath = path.join(cachedDir, archiveName);
95
+
96
+ console.error(`[sajimora] Downloading native ${binaryName} binary v${VERSION} for ${spec.target}...`);
97
+
98
+ try {
99
+ // Synchronous download via curl/tar or node
100
+ const isWindows = os.platform() === 'win32';
101
+ if (!isWindows) {
102
+ // Use curl + tar for instant extraction on Unix
103
+ const cmd = `curl -fsSL "${releaseUrl}" | tar -xz -C "${cachedDir}"`;
104
+ const res = spawnSync('sh', ['-c', cmd], { stdio: 'inherit' });
105
+ if (res.status !== 0) {
106
+ throw new Error(`Extraction failed with exit code ${res.status}`);
107
+ }
108
+ } else {
109
+ // Windows PowerShell extraction
110
+ const psCmd = `
111
+ [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12;
112
+ Invoke-WebRequest -Uri "${releaseUrl}" -OutFile "${archivePath}";
113
+ Expand-Archive -Path "${archivePath}" -DestinationPath "${cachedDir}" -Force;
114
+ Remove-Item "${archivePath}";
115
+ `;
116
+ const res = spawnSync('powershell', ['-NoProfile', '-Command', psCmd], { stdio: 'inherit' });
117
+ if (res.status !== 0) {
118
+ throw new Error(`Windows download/extraction failed with exit code ${res.status}`);
119
+ }
120
+ }
121
+
122
+ // Ensure permissions
123
+ const extractedBin = path.join(cachedDir, `${binaryName}${spec.suffix}`);
124
+ if (fs.existsSync(extractedBin) && !isWindows) {
125
+ fs.chmodSync(extractedBin, 0o755);
126
+ }
127
+ } catch (err) {
128
+ console.error(`[sajimora] Error downloading release binary: ${err.message}`);
129
+ }
130
+ }
131
+
132
+ function run(binaryName) {
133
+ const binaryPath = resolveBinary(binaryName);
134
+ const args = process.argv.slice(2);
135
+ const result = spawnSync(binaryPath, args, { stdio: 'inherit' });
136
+ process.exit(result.status ?? 0);
137
+ }
138
+
139
+ module.exports = { run, resolveBinary };
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ const { run } = require('./runner.cjs');
3
+ run('sajimora-mcp');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ const { run } = require('./runner.cjs');
3
+ run('sajimora');
package/package.json CHANGED
@@ -1,6 +1,48 @@
1
1
  {
2
2
  "name": "sajimora",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Deterministic cross-language API contract verification and AST guard for Java Spring Boot and TypeScript/Angular/React",
5
+ "private": false,
6
+ "license": "SEE LICENSE IN LICENSE",
7
+ "author": "Sajimora Team <dev@sajimora.com>",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/sajimoraofficial/sajimora.git"
11
+ },
12
+ "homepage": "https://sajimora.com",
13
+ "bugs": {
14
+ "url": "https://github.com/sajimoraofficial/sajimora/issues"
15
+ },
16
+ "keywords": [
17
+ "mcp",
18
+ "mcp-server",
19
+ "model-context-protocol",
20
+ "contract-testing",
21
+ "spring-boot",
22
+ "typescript",
23
+ "angular",
24
+ "react",
25
+ "ast",
26
+ "api-diff",
27
+ "developer-tools"
28
+ ],
29
+ "engines": {
30
+ "node": ">=18.0.0"
31
+ },
32
+ "files": [
33
+ "bin/",
34
+ "packaging/",
35
+ "scripts/",
36
+ "LICENSE",
37
+ "THIRD-PARTY-NOTICES.md",
38
+ "README.md",
39
+ "smithery.yaml"
40
+ ],
41
+ "bin": {
42
+ "sajimora": "bin/sajimora.cjs",
43
+ "sajimora-mcp": "bin/sajimora-mcp.cjs"
44
+ },
45
+ "scripts": {
46
+ "test": "node bin/sajimora.cjs --version"
47
+ }
48
+ }
@@ -0,0 +1,27 @@
1
+ class Sajimora < Formula
2
+ desc "High-performance native cross-language API contract gatekeeper"
3
+ homepage "https://sajimora.com"
4
+ version "0.1.0"
5
+
6
+ on_macos do
7
+ if Hardware::CPU.arm?
8
+ url "https://github.com/sajimoraofficial/sajimora/releases/download/v0.1.0/sajimora-v0.1.0-aarch64-apple-darwin.tar.gz"
9
+ else
10
+ url "https://github.com/sajimoraofficial/sajimora/releases/download/v0.1.0/sajimora-v0.1.0-x86_64-apple-darwin.tar.gz"
11
+ end
12
+ end
13
+
14
+ on_linux do
15
+ url "https://github.com/sajimoraofficial/sajimora/releases/download/v0.1.0/sajimora-v0.1.0-x86_64-unknown-linux-gnu.tar.gz"
16
+ end
17
+
18
+ def install
19
+ bin.install "sajimora"
20
+ bin.install "sajimora-mcp" if File.exist?("sajimora-mcp")
21
+ bin.install "sajimora-source-pilot" if File.exist?("sajimora-source-pilot")
22
+ end
23
+
24
+ test do
25
+ assert_match "sajimora", shell_output("#{bin}/sajimora --version")
26
+ end
27
+ end
@@ -0,0 +1,20 @@
1
+ PackageIdentifier: Sajimora.Sajimora
2
+ PackageVersion: 0.1.0
3
+ PackageName: Sajimora
4
+ Publisher: Sajimora
5
+ License: Proprietary
6
+ ShortDescription: High-performance native cross-language API contract gatekeeper
7
+ Installers:
8
+ - Architecture: x64
9
+ InstallerType: zip
10
+ InstallerUrl: https://github.com/sajimoraofficial/sajimora/releases/download/v0.1.0/sajimora-v0.1.0-x86_64-pc-windows-msvc.zip
11
+ NestedInstallerType: portable
12
+ NestedInstallerFiles:
13
+ - RelativeFilePath: sajimora.exe
14
+ PortableCommandAlias: sajimora
15
+ - RelativeFilePath: sajimora-mcp.exe
16
+ PortableCommandAlias: sajimora-mcp
17
+ - RelativeFilePath: sajimora-source-pilot.exe
18
+ PortableCommandAlias: sajimora-source-pilot
19
+ ManifestType: singleton
20
+ ManifestVersion: 1.6.0
@@ -0,0 +1,72 @@
1
+ # Sajimora Windows Native Installer (Zero npm, Zero Node.js)
2
+ # Usage: irm https://raw.githubusercontent.com/sajimora/sajimora/main/scripts/install.ps1 | iex
3
+
4
+ $ErrorActionPreference = 'Stop'
5
+
6
+ Write-Host "=== Installing Sajimora Native API Gatekeeper ===" -ForegroundColor Cyan
7
+
8
+ $repo = "sajimoraofficial/sajimora"
9
+ $tag = "v0.10.0"
10
+
11
+ try {
12
+ $release = Invoke-RestMethod -Uri "https://api.github.com/repos/$repo/releases/latest" -UseBasicParsing -TimeoutSec 3 -ErrorAction SilentlyContinue
13
+ if ($release.tag_name) {
14
+ $tag = $release.tag_name
15
+ }
16
+ } catch {
17
+ # Fallback to default version tag if GitHub API rate-limited
18
+ }
19
+
20
+ $installDir = Join-Path $env:LOCALAPPDATA "Programs\Sajimora\bin"
21
+ if (-not (Test-Path $installDir)) {
22
+ New-Item -ItemType Directory -Force -Path $installDir | Out-Null
23
+ }
24
+
25
+ $zipName = "sajimora-$tag-x86_64-pc-windows-msvc.zip"
26
+ $zipUrl = "https://github.com/$repo/releases/download/$tag/$zipName"
27
+ $tempZip = Join-Path $env:TEMP $zipName
28
+
29
+ Write-Host "[*] Downloading Sajimora $tag for Windows x64..." -ForegroundColor Gray
30
+ try {
31
+ Invoke-WebRequest -Uri $zipUrl -OutFile $tempZip -UseBasicParsing -TimeoutSec 15
32
+ Expand-Archive -Path $tempZip -DestinationPath $installDir -Force
33
+ Remove-Item $tempZip -Force
34
+ } catch {
35
+ throw "Failed to download $zipUrl. Please check your internet connection or download manually from https://github.com/$repo/releases"
36
+ }
37
+
38
+ $userPath = [System.Environment]::GetEnvironmentVariable("Path", "User")
39
+ if (-not $userPath) {
40
+ $userPath = ""
41
+ }
42
+
43
+ $pathEntries = $userPath.Split(';')
44
+ $alreadyInPath = $false
45
+ foreach ($entry in $pathEntries) {
46
+ if ($entry.Trim().ToLower() -eq $installDir.ToLower()) {
47
+ $alreadyInPath = $true
48
+ break
49
+ }
50
+ }
51
+
52
+ if (-not $alreadyInPath) {
53
+ Write-Host "[*] Adding Sajimora to User PATH..." -ForegroundColor Gray
54
+ if ($userPath.Length -gt 0) {
55
+ $newPath = "$userPath;$installDir"
56
+ } else {
57
+ $newPath = $installDir
58
+ }
59
+ [System.Environment]::SetEnvironmentVariable("Path", $newPath, "User")
60
+ $env:Path = "$env:Path;$installDir"
61
+ }
62
+
63
+ Write-Host ""
64
+ Write-Host "[OK] Sajimora installed successfully!" -ForegroundColor Green
65
+ Write-Host " Location: $installDir\sajimora.exe"
66
+ Write-Host " Version: $tag"
67
+ Write-Host ""
68
+ Write-Host "Quickstart:" -ForegroundColor Yellow
69
+ Write-Host " 1. Open a new terminal"
70
+ Write-Host " 2. cd to your repository"
71
+ Write-Host " 3. Run: sajimora init --apply"
72
+ Write-Host ""
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env sh
2
+ set -e
3
+
4
+ # Sajimora Native Installer
5
+ # Supports macOS (Apple Silicon & Intel) and Linux (x86_64)
6
+
7
+ REPO="sajimoraofficial/sajimora"
8
+ LATEST_TAG=$(curl -s "https://api.github.com/repos/${REPO}/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
9
+
10
+ if [ -z "$LATEST_TAG" ]; then
11
+ LATEST_TAG="v0.10.0"
12
+ fi
13
+
14
+ OS="$(uname -s)"
15
+ ARCH="$(uname -m)"
16
+
17
+ case "$OS" in
18
+ Darwin)
19
+ case "$ARCH" in
20
+ arm64) TARGET="aarch64-apple-darwin" ;;
21
+ x86_64) TARGET="x86_64-apple-darwin" ;;
22
+ *) echo "Unsupported architecture: $ARCH"; exit 1 ;;
23
+ esac
24
+ ;;
25
+ Linux)
26
+ case "$ARCH" in
27
+ x86_64) TARGET="x86_64-unknown-linux-gnu" ;;
28
+ *) echo "Unsupported architecture: $ARCH"; exit 1 ;;
29
+ esac
30
+ ;;
31
+ *)
32
+ echo "Unsupported operating system: $OS"
33
+ echo "For Windows, download sajimora-windows-x86_64.zip from GitHub Releases."
34
+ exit 1
35
+ ;;
36
+ esac
37
+
38
+ ASSET="sajimora-${LATEST_TAG}-${TARGET}.tar.gz"
39
+ URL="https://github.com/${REPO}/releases/download/${LATEST_TAG}/${ASSET}"
40
+ INSTALL_DIR="/usr/local/bin"
41
+
42
+ echo "⚡ Downloading Sajimora ${LATEST_TAG} for ${TARGET}..."
43
+ TMP_DIR=$(mktemp -d)
44
+ curl -sL "$URL" -o "${TMP_DIR}/${ASSET}"
45
+ tar -xzf "${TMP_DIR}/${ASSET}" -C "$TMP_DIR"
46
+
47
+ if [ -w "$INSTALL_DIR" ]; then
48
+ mv "${TMP_DIR}/sajimora" "$INSTALL_DIR/sajimora"
49
+ [ -f "${TMP_DIR}/sajimora-mcp" ] && mv "${TMP_DIR}/sajimora-mcp" "$INSTALL_DIR/sajimora-mcp"
50
+ else
51
+ echo "Elevated permissions required to install to $INSTALL_DIR:"
52
+ sudo mv "${TMP_DIR}/sajimora" "$INSTALL_DIR/sajimora"
53
+ [ -f "${TMP_DIR}/sajimora-mcp" ] && sudo mv "${TMP_DIR}/sajimora-mcp" "$INSTALL_DIR/sajimora-mcp"
54
+ fi
55
+
56
+ rm -rf "$TMP_DIR"
57
+ chmod +x "$INSTALL_DIR/sajimora"
58
+ echo "✅ Successfully installed Sajimora to $INSTALL_DIR/sajimora"
59
+ echo " Run 'sajimora --help' to get started."
package/smithery.yaml ADDED
@@ -0,0 +1,29 @@
1
+ startCommand:
2
+ type: stdio
3
+ configSchema:
4
+ type: object
5
+ properties:
6
+ allowedRoot:
7
+ type: string
8
+ default: "."
9
+ description: "Allowed filesystem root for repository analysis (default: current working directory)"
10
+ trustedLocal:
11
+ type: boolean
12
+ default: true
13
+ description: "Enable trusted local mode for rapid local development (skips signature enforcement)"
14
+ commandFunction: |-
15
+ (config) => {
16
+ const args = ['-y', 'sajimora', 'sajimora-mcp'];
17
+ if (config && config.allowedRoot) {
18
+ args.push('--allowed-root', config.allowedRoot);
19
+ } else {
20
+ args.push('--allowed-root', '.');
21
+ }
22
+ if (!config || config.trustedLocal !== false) {
23
+ args.push('--trusted-local');
24
+ }
25
+ return {
26
+ command: 'npx',
27
+ args: args
28
+ };
29
+ }