preclaim 0.3.5 → 0.3.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,iBAkF9E"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AA0GA,wBAAsB,WAAW,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,iBA+G9E"}
@@ -1,30 +1,113 @@
1
- import { writeFile, readFile } from 'node:fs/promises';
1
+ import { createRequire } from 'node:module';
2
+ import { writeFile, readFile, mkdir } from 'node:fs/promises';
2
3
  import { join, basename } from 'node:path';
3
4
  import { defaultConfig, loadCredentials, saveCredentials } from '@preclaim/core';
4
5
  import { loginCommand } from './login.js';
5
- export async function initCommand(opts) {
6
- const configPath = join(process.cwd(), '.preclaim.json');
7
- // Check if already exists
6
+ import { installHooksCommand } from './install-hooks.js';
7
+ const require = createRequire(import.meta.url);
8
+ const { version: LOCAL_VERSION } = require('../../package.json');
9
+ const MCP_ENTRY = {
10
+ command: 'npx',
11
+ args: ['@preclaim/mcp'],
12
+ };
13
+ async function fileExists(path) {
8
14
  try {
9
- await readFile(configPath, 'utf-8');
10
- console.log('.preclaim.json already exists. Use `preclaim config` to modify.');
11
- return;
15
+ await readFile(path, 'utf-8');
16
+ return true;
12
17
  }
13
18
  catch {
14
- // File doesn't exist, proceed
19
+ return false;
20
+ }
21
+ }
22
+ async function detectAgents(projectRoot) {
23
+ const agents = [];
24
+ // Claude Code — .claude/ directory or running inside Claude Code
25
+ if (await fileExists(join(projectRoot, '.claude', 'settings.json')) || process.env.CLAUDE_CODE) {
26
+ agents.push({
27
+ name: 'Claude Code',
28
+ configPath: '.claude/settings.json',
29
+ writeConfig: async () => {
30
+ await installHooksCommand();
31
+ },
32
+ });
33
+ }
34
+ // Cursor — .cursor/ directory
35
+ const cursorMcpPath = join(projectRoot, '.cursor', 'mcp.json');
36
+ if (await fileExists(cursorMcpPath) || await fileExists(join(projectRoot, '.cursor', 'rules'))) {
37
+ agents.push({
38
+ name: 'Cursor',
39
+ configPath: '.cursor/mcp.json',
40
+ writeConfig: async () => {
41
+ await writeMcpConfig(cursorMcpPath);
42
+ },
43
+ });
15
44
  }
45
+ // Windsurf — .windsurf/ directory
46
+ const windsurfMcpPath = join(projectRoot, '.windsurf', 'mcp.json');
47
+ if (await fileExists(join(projectRoot, '.windsurf', 'rules')) || await fileExists(windsurfMcpPath)) {
48
+ agents.push({
49
+ name: 'Windsurf',
50
+ configPath: '.windsurf/mcp.json',
51
+ writeConfig: async () => {
52
+ await writeMcpConfig(windsurfMcpPath);
53
+ },
54
+ });
55
+ }
56
+ // Cline — .cline/ directory
57
+ const clineMcpPath = join(projectRoot, '.cline', 'mcp.json');
58
+ if (await fileExists(join(projectRoot, '.cline', 'mcp_settings.json')) || await fileExists(join(projectRoot, '.cline', 'rules'))) {
59
+ agents.push({
60
+ name: 'Cline',
61
+ configPath: '.cline/mcp.json',
62
+ writeConfig: async () => {
63
+ await writeMcpConfig(clineMcpPath);
64
+ },
65
+ });
66
+ }
67
+ return agents;
68
+ }
69
+ async function writeMcpConfig(configPath) {
70
+ // Read existing config or create new
71
+ let config = {};
72
+ try {
73
+ const raw = await readFile(configPath, 'utf-8');
74
+ config = JSON.parse(raw);
75
+ }
76
+ catch {
77
+ // File doesn't exist
78
+ }
79
+ // Merge preclaim into mcpServers
80
+ const mcpServers = (config.mcpServers ?? {});
81
+ mcpServers.preclaim = MCP_ENTRY;
82
+ config.mcpServers = mcpServers;
83
+ await mkdir(join(configPath, '..'), { recursive: true });
84
+ await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
85
+ }
86
+ // ─── Init command ───
87
+ export async function initCommand(opts) {
88
+ const projectRoot = process.cwd();
89
+ const configPath = join(projectRoot, '.preclaim.json');
16
90
  const backend = opts.backend;
17
- // If project ID provided directly, skip onboarding
18
- if (opts.projectId) {
19
- const config = defaultConfig(opts.projectId, backend);
20
- await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
21
- console.log(`Created .preclaim.json (project: ${opts.projectId})`);
22
- printNextSteps(backend);
23
- return;
91
+ // ─── Version check ───
92
+ try {
93
+ const res = await fetch('https://registry.npmjs.org/preclaim/latest', {
94
+ signal: AbortSignal.timeout(2000),
95
+ });
96
+ if (res.ok) {
97
+ const { version: latest } = await res.json();
98
+ if (latest !== LOCAL_VERSION) {
99
+ console.log(`Update available: ${LOCAL_VERSION} → ${latest}`);
100
+ console.log(`Run: npm i -g preclaim (or: pnpm add -g preclaim)\n`);
101
+ }
102
+ }
24
103
  }
25
- // Check if logged in, if not: login first
104
+ catch {
105
+ // Non-critical — skip version check on network error
106
+ }
107
+ // ─── Step 1: Auth ───
26
108
  let creds = await loadCredentials();
27
- if (!creds) {
109
+ const configExists = await fileExists(configPath);
110
+ if (!creds && !opts.projectId) {
28
111
  console.log('Not logged in. Starting authentication...\n');
29
112
  await loginCommand();
30
113
  creds = await loadCredentials();
@@ -34,55 +117,74 @@ export async function initCommand(opts) {
34
117
  }
35
118
  console.log('');
36
119
  }
37
- // Derive project name from directory
38
- const dirName = basename(process.cwd());
39
- const projectSlug = dirName.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-');
40
- const projectName = dirName;
41
- console.log(`Setting up Preclaim for "${projectName}"...`);
42
- // Call onboard API
43
- const res = await fetch(`${backend}/api/v1/onboard`, {
44
- method: 'POST',
45
- headers: {
46
- 'Content-Type': 'application/json',
47
- 'Authorization': `Bearer ${creds.accessToken}`,
48
- },
49
- body: JSON.stringify({
50
- project_name: projectName,
51
- project_slug: projectSlug,
52
- }),
53
- });
54
- if (!res.ok) {
55
- const body = await res.text();
56
- console.error(`Failed to create project: ${body}`);
57
- process.exit(1);
58
- }
59
- const { data } = await res.json();
60
- if (data.already_existed) {
61
- console.log(`Project "${projectName}" already exists, using existing project.`);
120
+ // ─── Step 2: Project setup ───
121
+ if (!configExists) {
122
+ if (opts.projectId) {
123
+ const config = defaultConfig(opts.projectId, backend);
124
+ await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
125
+ console.log(`Created .preclaim.json (project: ${opts.projectId})`);
126
+ }
127
+ else {
128
+ const dirName = basename(projectRoot);
129
+ const projectSlug = dirName.toLowerCase().replace(/[^a-z0-9-]/g, '-').replace(/-+/g, '-');
130
+ const projectName = dirName;
131
+ console.log(`Setting up Preclaim for "${projectName}"...`);
132
+ const res = await fetch(`${backend}/api/v1/onboard`, {
133
+ method: 'POST',
134
+ headers: {
135
+ 'Content-Type': 'application/json',
136
+ 'Authorization': `Bearer ${creds.accessToken}`,
137
+ },
138
+ body: JSON.stringify({
139
+ project_name: projectName,
140
+ project_slug: projectSlug,
141
+ }),
142
+ });
143
+ if (!res.ok) {
144
+ const body = await res.text();
145
+ console.error(`Failed to create project: ${body}`);
146
+ process.exit(1);
147
+ }
148
+ const { data } = await res.json();
149
+ if (data.already_existed) {
150
+ console.log(`Project "${projectName}" already exists — joining.`);
151
+ }
152
+ else {
153
+ console.log(`Project "${projectName}" created.`);
154
+ }
155
+ if (creds.user.orgId !== data.org_id) {
156
+ creds.user.orgId = data.org_id;
157
+ await saveCredentials(creds);
158
+ }
159
+ const config = defaultConfig(data.project_id, backend);
160
+ await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
161
+ console.log('Created .preclaim.json');
162
+ }
62
163
  }
63
164
  else {
64
- console.log(`Project "${projectName}" created.`);
165
+ console.log('.preclaim.json found — project already configured.');
65
166
  }
66
- // Update credentials with org_id
67
- if (creds.user.orgId !== data.org_id) {
68
- creds.user.orgId = data.org_id;
69
- await saveCredentials(creds);
167
+ // ─── Step 3: Detect agents and install integrations ───
168
+ const agents = await detectAgents(projectRoot);
169
+ if (agents.length === 0) {
170
+ // No agent detected — install Claude Code hooks as default + show MCP instructions
171
+ console.log('\nNo AI agent detected. Installing Claude Code hooks as default...');
172
+ await installHooksCommand();
173
+ console.log('\nUsing a different agent? Add this to your MCP config:\n');
174
+ console.log(JSON.stringify({ mcpServers: { preclaim: MCP_ENTRY } }, null, 2));
70
175
  }
71
- // Write config
72
- const config = defaultConfig(data.project_id, backend);
73
- await writeFile(configPath, JSON.stringify(config, null, 2) + '\n');
74
- console.log(`\nCreated .preclaim.json`);
75
- printNextSteps(backend);
76
- }
77
- function printNextSteps(backend) {
176
+ else {
177
+ console.log(`\nDetected: ${agents.map(a => a.name).join(', ')}`);
178
+ for (const agent of agents) {
179
+ console.log(` Setting up ${agent.name}...`);
180
+ await agent.writeConfig(projectRoot);
181
+ console.log(` ✓ ${agent.name} configured (${agent.configPath})`);
182
+ }
183
+ }
184
+ // ─── Done ───
78
185
  const dashboardUrl = backend.replace(/\/api\/v1$/, '').replace(/\/$/, '');
79
- console.log('');
80
- console.log('Next steps:');
81
- console.log(' 1. preclaim install-hooks');
82
- console.log(' 2. Commit .preclaim.json to your repo');
83
- console.log(' 3. Open multiple Claude Code terminals — locks are automatic');
84
- console.log('');
85
- console.log(`Dashboard: ${dashboardUrl}/dashboard`);
86
- console.log('View your locks and activity in real-time.');
186
+ console.log('\n✓ Preclaim is ready.');
187
+ console.log(' Commit .preclaim.json to your repo so your team can join.');
188
+ console.log(` Dashboard: ${dashboardUrl}/dashboard`);
87
189
  }
88
190
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "preclaim",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
4
4
  "description": "AI File Coordination Layer — predictive file locking for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {