@arodroz/odin 1.27.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.md +53 -0
- package/README.md +36 -0
- package/bin/odin.js +61 -0
- package/package.json +29 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# odin — End User License Agreement
|
|
2
|
+
|
|
3
|
+
Copyright © 2026 Antonio Rodriguez (Anteras). All rights reserved.
|
|
4
|
+
|
|
5
|
+
This agreement covers the `odin` command-line program and MCP server, the
|
|
6
|
+
`@arodroz/odin` npm packages that distribute it, and the `odin` plugin for
|
|
7
|
+
Claude Code and Codex (together, "the Software"). By installing or using the
|
|
8
|
+
Software you accept these terms.
|
|
9
|
+
|
|
10
|
+
## 1. Free use
|
|
11
|
+
|
|
12
|
+
You may install and use the Software free of charge, for any purpose,
|
|
13
|
+
including commercial work, on any number of machines.
|
|
14
|
+
|
|
15
|
+
## 2. Restrictions
|
|
16
|
+
|
|
17
|
+
You may not:
|
|
18
|
+
|
|
19
|
+
- sell, rent, sublicense or redistribute the Software, modified or not, except
|
|
20
|
+
by pointing others to the official distribution channels (npmjs.com
|
|
21
|
+
`@arodroz/odin`, github.com/arodroz/odin-plugins);
|
|
22
|
+
- modify, decompile, disassemble or reverse engineer the binaries, except where
|
|
23
|
+
applicable law expressly permits it despite this restriction;
|
|
24
|
+
- remove or alter this notice or any copyright notice.
|
|
25
|
+
|
|
26
|
+
## 3. Licensed features
|
|
27
|
+
|
|
28
|
+
Some features, such as GESStabs generation, require a separate paid license
|
|
29
|
+
key. This agreement does not grant that license.
|
|
30
|
+
|
|
31
|
+
## 4. Your data
|
|
32
|
+
|
|
33
|
+
The Software analyses the files you give it on your own machine and never
|
|
34
|
+
uploads your scripts or their content. Its only network traffic is the license
|
|
35
|
+
check for licensed features, which sends your license key and a machine
|
|
36
|
+
instance name to the license provider (Lemon Squeezy).
|
|
37
|
+
|
|
38
|
+
## 5. No warranty
|
|
39
|
+
|
|
40
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
41
|
+
IMPLIED, INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
42
|
+
NON-INFRINGEMENT. Diagnostics are an aid, not a guarantee that a questionnaire
|
|
43
|
+
behaves correctly in production.
|
|
44
|
+
|
|
45
|
+
## 6. Limitation of liability
|
|
46
|
+
|
|
47
|
+
TO THE EXTENT PERMITTED BY LAW, THE AUTHOR IS NOT LIABLE FOR ANY DAMAGES
|
|
48
|
+
ARISING FROM THE USE OF, OR INABILITY TO USE, THE SOFTWARE.
|
|
49
|
+
|
|
50
|
+
## 7. Termination
|
|
51
|
+
|
|
52
|
+
This license ends automatically if you breach it. On termination you must stop
|
|
53
|
+
using and delete the Software.
|
package/README.md
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# @arodroz/odin
|
|
2
|
+
|
|
3
|
+
The canonical NIPO ODIN analysis engine as a command-line tool and MCP server:
|
|
4
|
+
ground-truth diagnostics, the structural map of a questionnaire, corpus audits,
|
|
5
|
+
and the language reference — the same engine behind the ODIN VS Code extension.
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install -g @arodroz/odin
|
|
9
|
+
odin check path/to/script.odin # diagnostics, or "clean"
|
|
10
|
+
odin explain '*PUT' # reference for a command, function or operator
|
|
11
|
+
odin mcp # MCP server over stdio
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
Prebuilt for Windows x64, macOS x64/arm64 and Linux x64/arm64; npm installs
|
|
15
|
+
only the binary for your platform. Requires Node.js 18 or later.
|
|
16
|
+
|
|
17
|
+
## Use it from Claude Code or Codex
|
|
18
|
+
|
|
19
|
+
Install the `odin` plugin, which runs this package for you — no global install
|
|
20
|
+
needed:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
# Claude Code
|
|
24
|
+
/plugin marketplace add arodroz/odin-plugins
|
|
25
|
+
/plugin install odin@anteras-odin
|
|
26
|
+
|
|
27
|
+
# Codex
|
|
28
|
+
codex plugin marketplace add arodroz/odin-plugins
|
|
29
|
+
codex plugin add odin@anteras-odin
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Or register only the MCP server: `claude mcp add odin -- npx -y @arodroz/odin mcp`.
|
|
33
|
+
|
|
34
|
+
## License
|
|
35
|
+
|
|
36
|
+
Free to use; not open source. See [LICENSE.md](LICENSE.md).
|
package/bin/odin.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
'use strict';
|
|
3
|
+
// Launcher for the prebuilt `odin` binary. npm installs exactly one of the
|
|
4
|
+
// @arodroz/odin-<platform> optional dependencies (their os/cpu fields filter the
|
|
5
|
+
// rest); this finds it and runs it with stdio passed straight through, so
|
|
6
|
+
// `odin mcp` speaks MCP over the same pipes the client opened.
|
|
7
|
+
|
|
8
|
+
const { spawnSync } = require('child_process');
|
|
9
|
+
|
|
10
|
+
const PLATFORMS = {
|
|
11
|
+
'win32 x64': '@arodroz/odin-win32-x64',
|
|
12
|
+
'darwin x64': '@arodroz/odin-darwin-x64',
|
|
13
|
+
'darwin arm64': '@arodroz/odin-darwin-arm64',
|
|
14
|
+
'linux x64': '@arodroz/odin-linux-x64',
|
|
15
|
+
'linux arm64': '@arodroz/odin-linux-arm64',
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
// resolveBinary maps a host to its binary path, or to an error message that
|
|
19
|
+
// says what to do. resolve is require.resolve, injectable for tests.
|
|
20
|
+
function resolveBinary(platform, arch, resolve) {
|
|
21
|
+
const host = `${platform} ${arch}`;
|
|
22
|
+
const pkg = PLATFORMS[host];
|
|
23
|
+
if (!pkg) {
|
|
24
|
+
return { error: `@arodroz/odin: no prebuilt odin binary for ${host}. Supported: ${Object.keys(PLATFORMS).join(', ')}.` };
|
|
25
|
+
}
|
|
26
|
+
const file = `${pkg}/bin/odin${platform === 'win32' ? '.exe' : ''}`;
|
|
27
|
+
try {
|
|
28
|
+
return { path: resolve(file) };
|
|
29
|
+
} catch {
|
|
30
|
+
return {
|
|
31
|
+
error: `@arodroz/odin: the platform package ${pkg} is not installed. ` +
|
|
32
|
+
'It is an optional dependency: reinstall without --no-optional / --omit=optional.',
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function main() {
|
|
38
|
+
const r = resolveBinary(process.platform, process.arch, require.resolve);
|
|
39
|
+
if (r.error) {
|
|
40
|
+
console.error(r.error);
|
|
41
|
+
process.exit(2);
|
|
42
|
+
}
|
|
43
|
+
// Resolve-only mode, for callers that run the binary themselves: the plugin's
|
|
44
|
+
// hook resolves once through npx, caches the path, and skips npm's startup
|
|
45
|
+
// cost on every later edit.
|
|
46
|
+
if (process.env.ANTERAS_ODIN_PRINT_PATH === '1') {
|
|
47
|
+
process.stdout.write(r.path + '\n');
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
const child = spawnSync(r.path, process.argv.slice(2), { stdio: 'inherit' });
|
|
51
|
+
if (child.error) {
|
|
52
|
+
console.error(`@arodroz/odin: cannot run ${r.path}: ${child.error.message}`);
|
|
53
|
+
process.exit(2);
|
|
54
|
+
}
|
|
55
|
+
if (child.signal) process.kill(process.pid, child.signal);
|
|
56
|
+
process.exit(child.status === null ? 1 : child.status);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (require.main === module) main();
|
|
60
|
+
|
|
61
|
+
module.exports = { resolveBinary, PLATFORMS };
|
package/package.json
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@arodroz/odin",
|
|
3
|
+
"version": "1.27.0",
|
|
4
|
+
"description": "The canonical NIPO ODIN analysis engine: diagnostics, structural map, corpus audit and language reference, as a CLI and MCP server.",
|
|
5
|
+
"bin": {
|
|
6
|
+
"odin": "bin/odin.js"
|
|
7
|
+
},
|
|
8
|
+
"optionalDependencies": {
|
|
9
|
+
"@arodroz/odin-win32-x64": "1.27.0",
|
|
10
|
+
"@arodroz/odin-darwin-x64": "1.27.0",
|
|
11
|
+
"@arodroz/odin-darwin-arm64": "1.27.0",
|
|
12
|
+
"@arodroz/odin-linux-x64": "1.27.0",
|
|
13
|
+
"@arodroz/odin-linux-arm64": "1.27.0"
|
|
14
|
+
},
|
|
15
|
+
"engines": {
|
|
16
|
+
"node": ">=18"
|
|
17
|
+
},
|
|
18
|
+
"license": "SEE LICENSE IN LICENSE.md",
|
|
19
|
+
"homepage": "https://github.com/arodroz/odin-plugins",
|
|
20
|
+
"keywords": [
|
|
21
|
+
"odin",
|
|
22
|
+
"nipo",
|
|
23
|
+
"nfield",
|
|
24
|
+
"survey",
|
|
25
|
+
"questionnaire",
|
|
26
|
+
"mcp",
|
|
27
|
+
"mcp-server"
|
|
28
|
+
]
|
|
29
|
+
}
|