@dotzero.ai/setup 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # @dotzero.ai/setup
2
+
3
+ One-command setup for DotZero MCP servers in Claude Code.
4
+
5
+ ## Usage
6
+
7
+ ```bash
8
+ npx @dotzero.ai/setup
9
+ ```
10
+
11
+ This will:
12
+
13
+ 1. Register `dotzero-auth` and `dotzero-workorder` MCP servers with Claude Code
14
+ 2. Create `.dotzero/config.json` with default API URLs
15
+ 3. Add `.dotzero/` to `.gitignore`
16
+
17
+ ## After Setup
18
+
19
+ 1. Restart Claude Code (or open a new session)
20
+ 2. Authenticate:
21
+ ```
22
+ auth_login(
23
+ email: "your@email.com",
24
+ password: "your-password",
25
+ tenant_id: "your-tenant-id"
26
+ )
27
+ ```
28
+ 3. Start using DotZero tools: `workorder_list`, `product_list`, etc.
29
+
30
+ ## Without Claude CLI
31
+
32
+ If the `claude` CLI is not installed, the setup will print a `.mcp.json` configuration you can add manually to your project.
33
+
34
+ ## What Gets Installed
35
+
36
+ | MCP Server | Package | Tools |
37
+ |------------|---------|-------|
38
+ | `dotzero-auth` | `@dotzero.ai/auth-mcp` | 3 (login, refresh, status) |
39
+ | `dotzero-workorder` | `@dotzero.ai/work-order-mcp` | 16 (work orders, products, workers, operations, reports) |
40
+
41
+ ## License
42
+
43
+ MIT
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @dotzero.ai/setup
4
+ *
5
+ * One-command setup for DotZero MCP servers in Claude Code.
6
+ *
7
+ * Usage:
8
+ * npx @dotzero.ai/setup
9
+ */
10
+ export {};
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;GAOG"}
package/dist/index.js ADDED
@@ -0,0 +1,173 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * @dotzero.ai/setup
4
+ *
5
+ * One-command setup for DotZero MCP servers in Claude Code.
6
+ *
7
+ * Usage:
8
+ * npx @dotzero.ai/setup
9
+ */
10
+ import { execSync } from "node:child_process";
11
+ import { existsSync, mkdirSync, readFileSync, writeFileSync, appendFileSync } from "node:fs";
12
+ import { join } from "node:path";
13
+ // ── Constants ──────────────────────────────────────────────
14
+ const USER_API_URL = "https://user-api.dotzero.app";
15
+ const WORK_ORDER_API_URL = "https://work-order-api.dotzero.app";
16
+ const MCP_SERVERS = [
17
+ {
18
+ name: "dotzero-auth",
19
+ package: "@dotzero.ai/auth-mcp",
20
+ env: { USER_API_URL },
21
+ },
22
+ {
23
+ name: "dotzero-workorder",
24
+ package: "@dotzero.ai/work-order-mcp",
25
+ env: { WORK_ORDER_API_URL, USER_API_URL },
26
+ },
27
+ ];
28
+ // ── Helpers ────────────────────────────────────────────────
29
+ function log(msg) {
30
+ console.log(msg);
31
+ }
32
+ function logStep(step) {
33
+ console.log(`\n => ${step}`);
34
+ }
35
+ function logSkip(reason) {
36
+ console.log(` (skipped: ${reason})`);
37
+ }
38
+ function logDone(msg) {
39
+ console.log(` ${msg}`);
40
+ }
41
+ function exec(cmd) {
42
+ return execSync(cmd, { encoding: "utf-8", stdio: ["pipe", "pipe", "pipe"] }).trim();
43
+ }
44
+ function hasClaude() {
45
+ try {
46
+ exec("claude --version");
47
+ return true;
48
+ }
49
+ catch {
50
+ return false;
51
+ }
52
+ }
53
+ function getRegisteredServers() {
54
+ try {
55
+ const output = exec("claude mcp list");
56
+ // Each line starts with the server name
57
+ return output.split("\n").map((line) => line.split(/\s+/)[0]).filter(Boolean);
58
+ }
59
+ catch {
60
+ return [];
61
+ }
62
+ }
63
+ // ── MCP Registration ──────────────────────────────────────
64
+ function registerMcpServers() {
65
+ logStep("Registering MCP servers with Claude Code...");
66
+ const existing = getRegisteredServers();
67
+ for (const server of MCP_SERVERS) {
68
+ if (existing.includes(server.name)) {
69
+ logSkip(`${server.name} already registered`);
70
+ continue;
71
+ }
72
+ const envFlags = Object.entries(server.env)
73
+ .map(([k, v]) => `-e ${k}=${v}`)
74
+ .join(" ");
75
+ const cmd = `claude mcp add ${envFlags} ${server.name} -- npx -y ${server.package}`;
76
+ try {
77
+ exec(cmd);
78
+ logDone(`${server.name} registered`);
79
+ }
80
+ catch (err) {
81
+ console.error(` Failed to register ${server.name}:`, err.message);
82
+ }
83
+ }
84
+ }
85
+ // ── Config File ───────────────────────────────────────────
86
+ function createConfig() {
87
+ logStep("Setting up .dotzero/config.json...");
88
+ const dir = join(process.cwd(), ".dotzero");
89
+ const configPath = join(dir, "config.json");
90
+ if (existsSync(configPath)) {
91
+ logSkip("config.json already exists");
92
+ return;
93
+ }
94
+ if (!existsSync(dir)) {
95
+ mkdirSync(dir, { recursive: true });
96
+ }
97
+ const config = {
98
+ user_api_url: USER_API_URL,
99
+ work_order_api_url: WORK_ORDER_API_URL,
100
+ };
101
+ writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n");
102
+ logDone("config.json created");
103
+ }
104
+ // ── .gitignore ────────────────────────────────────────────
105
+ function updateGitignore() {
106
+ logStep("Updating .gitignore...");
107
+ const gitignorePath = join(process.cwd(), ".gitignore");
108
+ const entry = ".dotzero/";
109
+ if (existsSync(gitignorePath)) {
110
+ const content = readFileSync(gitignorePath, "utf-8");
111
+ if (content.includes(entry)) {
112
+ logSkip(".dotzero/ already in .gitignore");
113
+ return;
114
+ }
115
+ appendFileSync(gitignorePath, `\n# DotZero credentials\n${entry}\n`);
116
+ }
117
+ else {
118
+ writeFileSync(gitignorePath, `# DotZero credentials\n${entry}\n`);
119
+ }
120
+ logDone(".dotzero/ added to .gitignore");
121
+ }
122
+ // ── Fallback (no claude CLI) ──────────────────────────────
123
+ function printManualConfig() {
124
+ log("\n Claude CLI not found. Add this to your project's .mcp.json manually:\n");
125
+ const mcpConfig = {
126
+ mcpServers: {
127
+ "dotzero-auth": {
128
+ command: "npx",
129
+ args: ["-y", "@dotzero.ai/auth-mcp"],
130
+ env: { USER_API_URL },
131
+ },
132
+ "dotzero-workorder": {
133
+ command: "npx",
134
+ args: ["-y", "@dotzero.ai/work-order-mcp"],
135
+ env: { WORK_ORDER_API_URL, USER_API_URL },
136
+ },
137
+ },
138
+ };
139
+ log(JSON.stringify(mcpConfig, null, 2));
140
+ log("");
141
+ }
142
+ // ── Main ──────────────────────────────────────────────────
143
+ function main() {
144
+ log("");
145
+ log(" DotZero MCP Setup");
146
+ log(" =================");
147
+ const claudeAvailable = hasClaude();
148
+ if (claudeAvailable) {
149
+ registerMcpServers();
150
+ }
151
+ else {
152
+ printManualConfig();
153
+ }
154
+ createConfig();
155
+ updateGitignore();
156
+ // Next steps
157
+ log("\n Setup complete!\n");
158
+ if (claudeAvailable) {
159
+ log(" Next steps:");
160
+ log(" 1. Restart Claude Code (or open a new session)");
161
+ log(" 2. Run: auth_login(email, password, tenant_id)");
162
+ log(" 3. Start using workorder_list, product_list, etc.");
163
+ }
164
+ else {
165
+ log(" Next steps:");
166
+ log(" 1. Copy the JSON above into your project's .mcp.json");
167
+ log(" 2. Restart your MCP-compatible AI agent");
168
+ log(" 3. Run: auth_login(email, password, tenant_id)");
169
+ }
170
+ log("");
171
+ }
172
+ main();
173
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@dotzero.ai/setup",
3
+ "version": "1.0.0",
4
+ "description": "One-command setup for DotZero MCP servers in Claude Code",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "bin": {
8
+ "dotzero-setup": "dist/index.js"
9
+ },
10
+ "files": [
11
+ "dist",
12
+ "README.md"
13
+ ],
14
+ "engines": {
15
+ "node": ">=18"
16
+ },
17
+ "keywords": [
18
+ "dotzero",
19
+ "mcp",
20
+ "setup",
21
+ "claude-code",
22
+ "ai-assistant",
23
+ "manufacturing",
24
+ "mes"
25
+ ],
26
+ "author": {
27
+ "name": "DotZero",
28
+ "url": "https://dotzero.app"
29
+ },
30
+ "license": "MIT",
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://gitlab.com/dotzero/dz-ai.git",
34
+ "directory": "packages/setup"
35
+ },
36
+ "publishConfig": {
37
+ "access": "public"
38
+ },
39
+ "devDependencies": {
40
+ "@types/node": "^22.10.0",
41
+ "typescript": "^5.7.2"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc",
45
+ "clean": "rm -rf dist"
46
+ }
47
+ }