@preclaim/core 0.2.1 → 0.2.3

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/dist/client.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { ApiResponse, ClaimRequest, ClaimResult, BatchCheckRequest, BatchCheckResult, HeartbeatRequest, HeartbeatResult, SessionRegisterRequest, ReleaseRequest, ReleaseResult, Lock } from './types.js';
1
+ export declare const PRECLAIM_API_VERSION = "v1";
2
+ import type { ActivityEntry, ApiResponse, ClaimRequest, ClaimResult, BatchCheckRequest, BatchCheckResult, HeartbeatRequest, HeartbeatResult, SessionRegisterRequest, SessionWithProfile, ReleaseRequest, ReleaseResult, RegisterInterestRequest, CheckInterestsRequest, CheckInterestsResult, Lock, MeResult, VersionResult } from './types.js';
2
3
  export declare class PreclaimClient {
3
4
  private baseUrl;
4
5
  private accessToken;
@@ -18,5 +19,16 @@ export declare class PreclaimClient {
18
19
  session_id: string;
19
20
  }>>;
20
21
  endSession(sessionId: string): Promise<ApiResponse<ReleaseResult>>;
22
+ listSessions(projectId: string): Promise<ApiResponse<SessionWithProfile[]>>;
23
+ listActivity(projectId: string): Promise<ApiResponse<ActivityEntry[]>>;
24
+ getMe(): Promise<ApiResponse<MeResult>>;
25
+ getVersion(): Promise<ApiResponse<VersionResult>>;
26
+ registerInterest(req: RegisterInterestRequest): Promise<ApiResponse<void>>;
27
+ checkInterests(req: CheckInterestsRequest): Promise<ApiResponse<CheckInterestsResult>>;
28
+ ping(): Promise<{
29
+ ok: boolean;
30
+ latencyMs: number;
31
+ error?: string;
32
+ }>;
21
33
  }
22
34
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,IAAI,EACL,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;YAMhE,OAAO;IA+Bf,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAO/D,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAOtE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAI1D,UAAU,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAO1E,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAOvE,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAO1F,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;CAMzE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,OAAO,CAAC;AAEzC,OAAO,KAAK,EACV,aAAa,EACb,WAAW,EACX,YAAY,EACZ,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,IAAI,EACJ,QAAQ,EACR,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;YAMhE,OAAO;IAkCf,SAAS,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IA8B/D,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAOtE,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;IAI1D,UAAU,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAO1E,SAAS,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IAOvE,eAAe,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO,CAAC,WAAW,CAAC;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAO1F,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAOlE,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAI3E,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC;IAItE,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIvC,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAIjD,gBAAgB,CAAC,GAAG,EAAE,uBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAO1E,cAAc,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;IAStF,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAU1E"}
package/dist/client.js CHANGED
@@ -1,3 +1,4 @@
1
+ export const PRECLAIM_API_VERSION = "v1";
1
2
  export class PreclaimClient {
2
3
  baseUrl;
3
4
  accessToken;
@@ -24,8 +25,11 @@ export class PreclaimClient {
24
25
  const body = await res.text();
25
26
  return { error: `HTTP ${res.status}: ${body}` };
26
27
  }
27
- const data = await res.json();
28
- return { data };
28
+ const body = await res.json();
29
+ if (body.error) {
30
+ return { error: body.error };
31
+ }
32
+ return { data: body.data };
29
33
  }
30
34
  catch (err) {
31
35
  const elapsed = Date.now() - start;
@@ -36,10 +40,33 @@ export class PreclaimClient {
36
40
  }
37
41
  }
38
42
  async claimFile(req) {
39
- return this.request('/locks', {
40
- method: 'POST',
41
- body: JSON.stringify(req),
42
- });
43
+ // Special handling: 409 is a valid conflict response, not an error
44
+ try {
45
+ const url = `${this.baseUrl}/api/v1/locks`;
46
+ const res = await fetch(url, {
47
+ method: 'POST',
48
+ headers: {
49
+ 'Content-Type': 'application/json',
50
+ 'Authorization': `Bearer ${this.accessToken}`,
51
+ },
52
+ body: JSON.stringify(req),
53
+ signal: AbortSignal.timeout(this.timeoutMs),
54
+ });
55
+ if (res.status === 409 || res.ok) {
56
+ const body = await res.json();
57
+ if (body.error)
58
+ return { error: body.error };
59
+ return { data: body.data };
60
+ }
61
+ const body = await res.text();
62
+ return { error: `HTTP ${res.status}: ${body}` };
63
+ }
64
+ catch (err) {
65
+ if (err instanceof Error && err.name === 'TimeoutError') {
66
+ return { error: `Request timeout` };
67
+ }
68
+ return { error: err instanceof Error ? err.message : 'Unknown error' };
69
+ }
43
70
  }
44
71
  async releaseLocks(req) {
45
72
  return this.request('/locks', {
@@ -74,5 +101,40 @@ export class PreclaimClient {
74
101
  body: JSON.stringify({ session_id: sessionId }),
75
102
  });
76
103
  }
104
+ async listSessions(projectId) {
105
+ return this.request(`/sessions?project_id=${encodeURIComponent(projectId)}`);
106
+ }
107
+ async listActivity(projectId) {
108
+ return this.request(`/activity?project_id=${encodeURIComponent(projectId)}`);
109
+ }
110
+ async getMe() {
111
+ return this.request('/me');
112
+ }
113
+ async getVersion() {
114
+ return this.request('/version');
115
+ }
116
+ async registerInterest(req) {
117
+ return this.request('/interests', {
118
+ method: 'POST',
119
+ body: JSON.stringify(req),
120
+ });
121
+ }
122
+ async checkInterests(req) {
123
+ const params = new URLSearchParams({
124
+ project_id: req.project_id,
125
+ file_path: req.file_path,
126
+ exclude_session_id: req.exclude_session_id,
127
+ });
128
+ return this.request(`/interests?${params}`);
129
+ }
130
+ async ping() {
131
+ const start = Date.now();
132
+ const res = await this.getVersion();
133
+ const latencyMs = Date.now() - start;
134
+ if (res.error) {
135
+ return { ok: false, latencyMs, error: res.error };
136
+ }
137
+ return { ok: true, latencyMs };
138
+ }
77
139
  }
78
140
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUtE,wBAAgB,iBAAiB;;;EAKhC;AAED,wBAAsB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAejI;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAShF;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/E;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA0C9E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUtE,wBAAgB,iBAAiB;;;EAKhC;AAED,wBAAsB,UAAU,CAAC,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAejI;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAO3E;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,CAUhF;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI/E;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA0C9E"}
package/dist/config.js CHANGED
@@ -48,6 +48,7 @@ export function defaultConfig(projectId, backend) {
48
48
  ttl: 30,
49
49
  failOpen: true,
50
50
  ignore: ['*.md', 'package-lock.json', '*.test.ts'],
51
+ idleTimeoutMinutes: 15,
51
52
  };
52
53
  }
53
54
  export async function saveCredentials(creds) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { PreclaimClient } from './client.js';
2
2
  export { findConfig, loadCredentials, getCredentialsPath, defaultConfig, getSupabaseConfig, saveCredentials, refreshCredentials } from './config.js';
3
- export type { Organization, Profile, Project, Session, Lock, LockHolder, LockHistoryEntry, ClaimStatus, ClaimResult, ClaimRequest, BatchCheckRequest, BatchCheckResult, HeartbeatRequest, HeartbeatResult, SessionRegisterRequest, ReleaseRequest, ReleaseResult, PreclaimConfig, PreclaimCredentials, ApiResponse, HookInput, HookResult, } from './types.js';
3
+ export type { ActivityEntry, Organization, Profile, Project, Session, SessionWithProfile, Lock, LockHolder, LockHistoryEntry, FileInterest, RegisterInterestRequest, CheckInterestsRequest, CheckInterestsResult, ClaimStatus, ClaimResult, ClaimRequest, BatchCheckRequest, BatchCheckResult, HeartbeatRequest, HeartbeatResult, SessionRegisterRequest, ReleaseRequest, ReleaseResult, StatsResult, PreclaimConfig, PreclaimCredentials, ApiResponse, HookInput, HookResult, MeResult, VersionResult, } from './types.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrJ,YAAY,EACV,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,EACP,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,UAAU,GACX,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,kBAAkB,EAAE,aAAa,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACrJ,YAAY,EACV,aAAa,EACb,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,EACP,kBAAkB,EAClB,IAAI,EACJ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACX,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,aAAa,GACd,MAAM,YAAY,CAAC"}
package/dist/types.d.ts CHANGED
@@ -32,6 +32,13 @@ export interface Session {
32
32
  last_heartbeat: string;
33
33
  metadata: Record<string, unknown>;
34
34
  }
35
+ export interface SessionWithProfile extends Session {
36
+ profiles: {
37
+ name: string | null;
38
+ email: string;
39
+ avatar_url: string | null;
40
+ };
41
+ }
35
42
  export interface Lock {
36
43
  id: string;
37
44
  project_id: string;
@@ -58,6 +65,35 @@ export interface LockHistoryEntry {
58
65
  action: 'acquire' | 'release' | 'expire' | 'force_release';
59
66
  created_at: string;
60
67
  }
68
+ export interface ActivityEntry extends LockHistoryEntry {
69
+ profiles: {
70
+ name: string | null;
71
+ email: string;
72
+ avatar_url: string | null;
73
+ };
74
+ }
75
+ export interface FileInterest {
76
+ id: string;
77
+ project_id: string;
78
+ file_path: string;
79
+ session_id: string;
80
+ user_id: string;
81
+ created_at: string;
82
+ expires_at: string;
83
+ }
84
+ export interface RegisterInterestRequest {
85
+ project_id: string;
86
+ file_path: string;
87
+ session_id: string;
88
+ }
89
+ export interface CheckInterestsRequest {
90
+ project_id: string;
91
+ file_path: string;
92
+ exclude_session_id: string;
93
+ }
94
+ export interface CheckInterestsResult {
95
+ interests: FileInterest[];
96
+ }
61
97
  export type ClaimStatus = 'acquired' | 'already_held' | 'conflict';
62
98
  export interface ClaimResult {
63
99
  status: ClaimStatus;
@@ -97,6 +133,16 @@ export interface ReleaseRequest {
97
133
  export interface ReleaseResult {
98
134
  released: number;
99
135
  }
136
+ export interface StatsResult {
137
+ active_locks: number;
138
+ active_sessions: number;
139
+ active_interests: number;
140
+ activity_today: number;
141
+ files_today: number;
142
+ }
143
+ export interface VersionResult {
144
+ version: string;
145
+ }
100
146
  export interface PreclaimConfig {
101
147
  version: number;
102
148
  projectId: string;
@@ -104,6 +150,7 @@ export interface PreclaimConfig {
104
150
  ttl: number;
105
151
  failOpen: boolean;
106
152
  ignore: string[];
153
+ idleTimeoutMinutes?: number;
107
154
  }
108
155
  export interface PreclaimCredentials {
109
156
  accessToken: string;
@@ -115,6 +162,20 @@ export interface PreclaimCredentials {
115
162
  orgId: string;
116
163
  };
117
164
  }
165
+ export interface MeResult {
166
+ user: {
167
+ id: string;
168
+ email: string;
169
+ name: string | null;
170
+ avatar_url: string | null;
171
+ role: 'admin' | 'member';
172
+ };
173
+ org: {
174
+ id: string;
175
+ name: string;
176
+ slug: string;
177
+ } | null;
178
+ }
118
179
  export interface ApiResponse<T> {
119
180
  data?: T;
120
181
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@preclaim/core",
3
- "version": "0.2.1",
3
+ "version": "0.2.3",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
package/src/client.ts CHANGED
@@ -1,4 +1,7 @@
1
+ export const PRECLAIM_API_VERSION = "v1";
2
+
1
3
  import type {
4
+ ActivityEntry,
2
5
  ApiResponse,
3
6
  ClaimRequest,
4
7
  ClaimResult,
@@ -7,9 +10,15 @@ import type {
7
10
  HeartbeatRequest,
8
11
  HeartbeatResult,
9
12
  SessionRegisterRequest,
13
+ SessionWithProfile,
10
14
  ReleaseRequest,
11
15
  ReleaseResult,
16
+ RegisterInterestRequest,
17
+ CheckInterestsRequest,
18
+ CheckInterestsResult,
12
19
  Lock,
20
+ MeResult,
21
+ VersionResult,
13
22
  } from './types.js';
14
23
 
15
24
  export class PreclaimClient {
@@ -43,8 +52,11 @@ export class PreclaimClient {
43
52
  return { error: `HTTP ${res.status}: ${body}` };
44
53
  }
45
54
 
46
- const data = await res.json() as T;
47
- return { data };
55
+ const body = await res.json() as { data?: T; error?: string };
56
+ if (body.error) {
57
+ return { error: body.error };
58
+ }
59
+ return { data: body.data as T };
48
60
  } catch (err: unknown) {
49
61
  const elapsed = Date.now() - start;
50
62
  if (err instanceof Error && err.name === 'TimeoutError') {
@@ -55,10 +67,33 @@ export class PreclaimClient {
55
67
  }
56
68
 
57
69
  async claimFile(req: ClaimRequest): Promise<ApiResponse<ClaimResult>> {
58
- return this.request<ClaimResult>('/locks', {
59
- method: 'POST',
60
- body: JSON.stringify(req),
61
- });
70
+ // Special handling: 409 is a valid conflict response, not an error
71
+ try {
72
+ const url = `${this.baseUrl}/api/v1/locks`;
73
+ const res = await fetch(url, {
74
+ method: 'POST',
75
+ headers: {
76
+ 'Content-Type': 'application/json',
77
+ 'Authorization': `Bearer ${this.accessToken}`,
78
+ },
79
+ body: JSON.stringify(req),
80
+ signal: AbortSignal.timeout(this.timeoutMs),
81
+ });
82
+
83
+ if (res.status === 409 || res.ok) {
84
+ const body = await res.json() as { data?: ClaimResult; error?: string };
85
+ if (body.error) return { error: body.error };
86
+ return { data: body.data as ClaimResult };
87
+ }
88
+
89
+ const body = await res.text();
90
+ return { error: `HTTP ${res.status}: ${body}` };
91
+ } catch (err: unknown) {
92
+ if (err instanceof Error && err.name === 'TimeoutError') {
93
+ return { error: `Request timeout` };
94
+ }
95
+ return { error: err instanceof Error ? err.message : 'Unknown error' };
96
+ }
62
97
  }
63
98
 
64
99
  async releaseLocks(req: ReleaseRequest): Promise<ApiResponse<ReleaseResult>> {
@@ -99,4 +134,47 @@ export class PreclaimClient {
99
134
  body: JSON.stringify({ session_id: sessionId }),
100
135
  });
101
136
  }
137
+
138
+ async listSessions(projectId: string): Promise<ApiResponse<SessionWithProfile[]>> {
139
+ return this.request<SessionWithProfile[]>(`/sessions?project_id=${encodeURIComponent(projectId)}`);
140
+ }
141
+
142
+ async listActivity(projectId: string): Promise<ApiResponse<ActivityEntry[]>> {
143
+ return this.request<ActivityEntry[]>(`/activity?project_id=${encodeURIComponent(projectId)}`);
144
+ }
145
+
146
+ async getMe(): Promise<ApiResponse<MeResult>> {
147
+ return this.request<MeResult>('/me');
148
+ }
149
+
150
+ async getVersion(): Promise<ApiResponse<VersionResult>> {
151
+ return this.request<VersionResult>('/version');
152
+ }
153
+
154
+ async registerInterest(req: RegisterInterestRequest): Promise<ApiResponse<void>> {
155
+ return this.request<void>('/interests', {
156
+ method: 'POST',
157
+ body: JSON.stringify(req),
158
+ });
159
+ }
160
+
161
+ async checkInterests(req: CheckInterestsRequest): Promise<ApiResponse<CheckInterestsResult>> {
162
+ const params = new URLSearchParams({
163
+ project_id: req.project_id,
164
+ file_path: req.file_path,
165
+ exclude_session_id: req.exclude_session_id,
166
+ });
167
+ return this.request<CheckInterestsResult>(`/interests?${params}`);
168
+ }
169
+
170
+ async ping(): Promise<{ ok: boolean; latencyMs: number; error?: string }> {
171
+ const start = Date.now();
172
+ const res = await this.getVersion();
173
+ const latencyMs = Date.now() - start;
174
+
175
+ if (res.error) {
176
+ return { ok: false, latencyMs, error: res.error };
177
+ }
178
+ return { ok: true, latencyMs };
179
+ }
102
180
  }
package/src/config.ts CHANGED
@@ -56,6 +56,7 @@ export function defaultConfig(projectId: string, backend: string): PreclaimConfi
56
56
  ttl: 30,
57
57
  failOpen: true,
58
58
  ignore: ['*.md', 'package-lock.json', '*.test.ts'],
59
+ idleTimeoutMinutes: 15,
59
60
  };
60
61
  }
61
62
 
package/src/index.ts CHANGED
@@ -1,13 +1,19 @@
1
1
  export { PreclaimClient } from './client.js';
2
2
  export { findConfig, loadCredentials, getCredentialsPath, defaultConfig, getSupabaseConfig, saveCredentials, refreshCredentials } from './config.js';
3
3
  export type {
4
+ ActivityEntry,
4
5
  Organization,
5
6
  Profile,
6
7
  Project,
7
8
  Session,
9
+ SessionWithProfile,
8
10
  Lock,
9
11
  LockHolder,
10
12
  LockHistoryEntry,
13
+ FileInterest,
14
+ RegisterInterestRequest,
15
+ CheckInterestsRequest,
16
+ CheckInterestsResult,
11
17
  ClaimStatus,
12
18
  ClaimResult,
13
19
  ClaimRequest,
@@ -18,9 +24,12 @@ export type {
18
24
  SessionRegisterRequest,
19
25
  ReleaseRequest,
20
26
  ReleaseResult,
27
+ StatsResult,
21
28
  PreclaimConfig,
22
29
  PreclaimCredentials,
23
30
  ApiResponse,
24
31
  HookInput,
25
32
  HookResult,
33
+ MeResult,
34
+ VersionResult,
26
35
  } from './types.js';
package/src/types.ts CHANGED
@@ -40,6 +40,10 @@ export interface Session {
40
40
  metadata: Record<string, unknown>;
41
41
  }
42
42
 
43
+ export interface SessionWithProfile extends Session {
44
+ profiles: { name: string | null; email: string; avatar_url: string | null };
45
+ }
46
+
43
47
  // === Locks ===
44
48
  export interface Lock {
45
49
  id: string;
@@ -71,6 +75,37 @@ export interface LockHistoryEntry {
71
75
  created_at: string;
72
76
  }
73
77
 
78
+ export interface ActivityEntry extends LockHistoryEntry {
79
+ profiles: { name: string | null; email: string; avatar_url: string | null };
80
+ }
81
+
82
+ // === File Interests (Soft Signals) ===
83
+ export interface FileInterest {
84
+ id: string;
85
+ project_id: string;
86
+ file_path: string;
87
+ session_id: string;
88
+ user_id: string;
89
+ created_at: string;
90
+ expires_at: string;
91
+ }
92
+
93
+ export interface RegisterInterestRequest {
94
+ project_id: string;
95
+ file_path: string;
96
+ session_id: string;
97
+ }
98
+
99
+ export interface CheckInterestsRequest {
100
+ project_id: string;
101
+ file_path: string;
102
+ exclude_session_id: string;
103
+ }
104
+
105
+ export interface CheckInterestsResult {
106
+ interests: FileInterest[];
107
+ }
108
+
74
109
  // === API Types ===
75
110
  export type ClaimStatus = 'acquired' | 'already_held' | 'conflict';
76
111
 
@@ -121,6 +156,20 @@ export interface ReleaseResult {
121
156
  released: number;
122
157
  }
123
158
 
159
+ // === Stats ===
160
+ export interface StatsResult {
161
+ active_locks: number;
162
+ active_sessions: number;
163
+ active_interests: number;
164
+ activity_today: number;
165
+ files_today: number;
166
+ }
167
+
168
+ // === Version ===
169
+ export interface VersionResult {
170
+ version: string;
171
+ }
172
+
124
173
  // === Config ===
125
174
  export interface PreclaimConfig {
126
175
  version: number;
@@ -129,6 +178,7 @@ export interface PreclaimConfig {
129
178
  ttl: number;
130
179
  failOpen: boolean;
131
180
  ignore: string[];
181
+ idleTimeoutMinutes?: number;
132
182
  }
133
183
 
134
184
  // === Credentials ===
@@ -143,6 +193,22 @@ export interface PreclaimCredentials {
143
193
  };
144
194
  }
145
195
 
196
+ // === Me (whoami) ===
197
+ export interface MeResult {
198
+ user: {
199
+ id: string;
200
+ email: string;
201
+ name: string | null;
202
+ avatar_url: string | null;
203
+ role: 'admin' | 'member';
204
+ };
205
+ org: {
206
+ id: string;
207
+ name: string;
208
+ slug: string;
209
+ } | null;
210
+ }
211
+
146
212
  // === API Response Wrapper ===
147
213
  export interface ApiResponse<T> {
148
214
  data?: T;
@@ -1,4 +0,0 @@
1
-
2
- > @preclaim/core@0.2.1 build /home/runner/work/preclaim/preclaim/packages/core
3
- > tsc
4
-