claude-triggers 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 +21 -0
- package/README.md +174 -0
- package/SKILL.md +175 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +410 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +113 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +463 -0
- package/dist/client.js.map +1 -0
- package/dist/credentials.d.ts +39 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +279 -0
- package/dist/credentials.js.map +1 -0
- package/dist/cron.d.ts +39 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +257 -0
- package/dist/cron.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +184 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +22 -0
- package/dist/types.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code credential management.
|
|
3
|
+
*
|
|
4
|
+
* Reads OAuth tokens from:
|
|
5
|
+
* 1. macOS Keychain ("Claude Code-credentials")
|
|
6
|
+
* 2. ~/.claude/.credentials.json
|
|
7
|
+
*
|
|
8
|
+
* Refreshes tokens via:
|
|
9
|
+
* 1. Direct OAuth refresh_token grant (same as Claude Code)
|
|
10
|
+
* 2. Fallback: shell out to `claude` CLI
|
|
11
|
+
*
|
|
12
|
+
* Token storage after refresh writes back to the same credential store
|
|
13
|
+
* so other tools (Claude Code, opencode, etc.) pick up the new token.
|
|
14
|
+
*/
|
|
15
|
+
import { execSync } from "node:child_process";
|
|
16
|
+
import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs";
|
|
17
|
+
import { join, dirname } from "node:path";
|
|
18
|
+
import { homedir } from "node:os";
|
|
19
|
+
// ─── Constants (from Claude Code v2.1.81) ───
|
|
20
|
+
const KEYCHAIN_SERVICE = "Claude Code-credentials";
|
|
21
|
+
const CREDENTIALS_PATH = join(homedir(), ".claude", ".credentials.json");
|
|
22
|
+
const TOKEN_URL = "https://platform.claude.com/v1/oauth/token";
|
|
23
|
+
const CLIENT_ID = "9d1c250a-e61b-44d9-88ed-5944d1962f5e";
|
|
24
|
+
const DEFAULT_SCOPES = [
|
|
25
|
+
"user:profile",
|
|
26
|
+
"user:inference",
|
|
27
|
+
"user:sessions:claude_code",
|
|
28
|
+
"user:mcp_servers",
|
|
29
|
+
"user:file_upload",
|
|
30
|
+
];
|
|
31
|
+
const CACHE_TTL_MS = 30_000;
|
|
32
|
+
const REFRESH_BUFFER_MS = 60_000; // Refresh if expires within 60s
|
|
33
|
+
// ─── Cache ───
|
|
34
|
+
let cached = null;
|
|
35
|
+
let cachedAt = 0;
|
|
36
|
+
/**
|
|
37
|
+
* Clear the in-memory credential cache. Call after external token refresh.
|
|
38
|
+
*/
|
|
39
|
+
export function clearCredentialCache() {
|
|
40
|
+
cached = null;
|
|
41
|
+
cachedAt = 0;
|
|
42
|
+
}
|
|
43
|
+
// ─── Keychain (macOS) ───
|
|
44
|
+
function readKeychain() {
|
|
45
|
+
if (process.platform !== "darwin")
|
|
46
|
+
return null;
|
|
47
|
+
let raw;
|
|
48
|
+
try {
|
|
49
|
+
raw = execSync(`security find-generic-password -s "${KEYCHAIN_SERVICE}" -w`, {
|
|
50
|
+
timeout: 3000,
|
|
51
|
+
encoding: "utf-8",
|
|
52
|
+
stdio: ["pipe", "pipe", "pipe"],
|
|
53
|
+
}).trim();
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
return parseCredentialJson(raw);
|
|
59
|
+
}
|
|
60
|
+
function writeKeychain(creds) {
|
|
61
|
+
if (process.platform !== "darwin")
|
|
62
|
+
return false;
|
|
63
|
+
const payload = JSON.stringify({
|
|
64
|
+
claudeAiOauth: {
|
|
65
|
+
accessToken: creds.accessToken,
|
|
66
|
+
refreshToken: creds.refreshToken,
|
|
67
|
+
expiresAt: creds.expiresAt,
|
|
68
|
+
scopes: creds.scopes ?? DEFAULT_SCOPES,
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
try {
|
|
72
|
+
// Delete existing first (security won't overwrite)
|
|
73
|
+
try {
|
|
74
|
+
execSync(`security delete-generic-password -s "${KEYCHAIN_SERVICE}"`, {
|
|
75
|
+
stdio: "pipe",
|
|
76
|
+
timeout: 3000,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// May not exist
|
|
81
|
+
}
|
|
82
|
+
execSync(`security add-generic-password -s "${KEYCHAIN_SERVICE}" -a "claude-code" -w "${payload.replace(/"/g, '\\"')}"`, { stdio: "pipe", timeout: 3000 });
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// ─── Credentials File ───
|
|
90
|
+
function readCredentialsFile() {
|
|
91
|
+
try {
|
|
92
|
+
const raw = readFileSync(CREDENTIALS_PATH, "utf-8");
|
|
93
|
+
return parseCredentialJson(raw);
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function writeCredentialsFile(creds) {
|
|
100
|
+
try {
|
|
101
|
+
let existing = {};
|
|
102
|
+
try {
|
|
103
|
+
existing = JSON.parse(readFileSync(CREDENTIALS_PATH, "utf-8"));
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Fresh file
|
|
107
|
+
}
|
|
108
|
+
existing.claudeAiOauth = {
|
|
109
|
+
accessToken: creds.accessToken,
|
|
110
|
+
refreshToken: creds.refreshToken,
|
|
111
|
+
expiresAt: creds.expiresAt,
|
|
112
|
+
scopes: creds.scopes ?? DEFAULT_SCOPES,
|
|
113
|
+
};
|
|
114
|
+
const dir = dirname(CREDENTIALS_PATH);
|
|
115
|
+
if (!existsSync(dir))
|
|
116
|
+
mkdirSync(dir, { recursive: true });
|
|
117
|
+
writeFileSync(CREDENTIALS_PATH, JSON.stringify(existing, null, 2), "utf-8");
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// ─── Parsing ───
|
|
125
|
+
function parseCredentialJson(raw) {
|
|
126
|
+
try {
|
|
127
|
+
const parsed = JSON.parse(raw);
|
|
128
|
+
const data = (parsed.claudeAiOauth ?? parsed);
|
|
129
|
+
if (typeof data.accessToken !== "string" ||
|
|
130
|
+
typeof data.refreshToken !== "string" ||
|
|
131
|
+
typeof data.expiresAt !== "number") {
|
|
132
|
+
return null;
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
accessToken: data.accessToken,
|
|
136
|
+
refreshToken: data.refreshToken,
|
|
137
|
+
expiresAt: data.expiresAt,
|
|
138
|
+
scopes: Array.isArray(data.scopes) ? data.scopes : undefined,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
catch {
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// ─── Token Refresh ───
|
|
146
|
+
/**
|
|
147
|
+
* Refresh OAuth token directly via Anthropic's token endpoint.
|
|
148
|
+
* This is the same flow Claude Code uses internally (mB6/refreshOAuthToken).
|
|
149
|
+
*/
|
|
150
|
+
async function refreshTokenDirect(refreshToken) {
|
|
151
|
+
const body = {
|
|
152
|
+
grant_type: "refresh_token",
|
|
153
|
+
refresh_token: refreshToken,
|
|
154
|
+
client_id: CLIENT_ID,
|
|
155
|
+
scope: DEFAULT_SCOPES.join(" "),
|
|
156
|
+
};
|
|
157
|
+
try {
|
|
158
|
+
const resp = await fetch(TOKEN_URL, {
|
|
159
|
+
method: "POST",
|
|
160
|
+
headers: { "Content-Type": "application/json" },
|
|
161
|
+
body: JSON.stringify(body),
|
|
162
|
+
signal: AbortSignal.timeout(15_000),
|
|
163
|
+
});
|
|
164
|
+
if (!resp.ok)
|
|
165
|
+
return null;
|
|
166
|
+
const data = (await resp.json());
|
|
167
|
+
return {
|
|
168
|
+
accessToken: data.access_token,
|
|
169
|
+
refreshToken: data.refresh_token ?? refreshToken,
|
|
170
|
+
expiresAt: Date.now() + data.expires_in * 1000,
|
|
171
|
+
scopes: data.scope?.split(" ").filter(Boolean),
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Fallback: refresh via Claude CLI invocation.
|
|
180
|
+
*/
|
|
181
|
+
function refreshViaCli() {
|
|
182
|
+
try {
|
|
183
|
+
execSync("claude -p . --model haiku", {
|
|
184
|
+
timeout: 60_000,
|
|
185
|
+
encoding: "utf-8",
|
|
186
|
+
env: { ...process.env, TERM: "dumb" },
|
|
187
|
+
stdio: "ignore",
|
|
188
|
+
});
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
catch {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// ─── Store refreshed tokens ───
|
|
196
|
+
function storeCredentials(creds) {
|
|
197
|
+
// Write to both keychain and file for cross-tool compat
|
|
198
|
+
if (process.platform === "darwin") {
|
|
199
|
+
writeKeychain(creds);
|
|
200
|
+
}
|
|
201
|
+
writeCredentialsFile(creds);
|
|
202
|
+
cached = creds;
|
|
203
|
+
cachedAt = Date.now();
|
|
204
|
+
}
|
|
205
|
+
// ─── Public API ───
|
|
206
|
+
/**
|
|
207
|
+
* Read credentials from the Claude Code credential store (keychain or file).
|
|
208
|
+
* Does NOT refresh — returns whatever is stored.
|
|
209
|
+
*/
|
|
210
|
+
export function readCredentials() {
|
|
211
|
+
return readKeychain() ?? readCredentialsFile();
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get valid credentials, refreshing if needed.
|
|
215
|
+
*
|
|
216
|
+
* 1. Check in-memory cache
|
|
217
|
+
* 2. Read from store
|
|
218
|
+
* 3. If expired/near-expiry: refresh via direct OAuth grant
|
|
219
|
+
* 4. Fallback: refresh via Claude CLI
|
|
220
|
+
* 5. Store refreshed tokens back
|
|
221
|
+
*/
|
|
222
|
+
export async function getCredentials(forceRefresh = false) {
|
|
223
|
+
const now = Date.now();
|
|
224
|
+
// Cache hit
|
|
225
|
+
if (!forceRefresh &&
|
|
226
|
+
cached &&
|
|
227
|
+
now - cachedAt < CACHE_TTL_MS &&
|
|
228
|
+
cached.expiresAt > now + REFRESH_BUFFER_MS) {
|
|
229
|
+
return cached;
|
|
230
|
+
}
|
|
231
|
+
// Read from store
|
|
232
|
+
let creds = readCredentials();
|
|
233
|
+
// Valid and not near expiry
|
|
234
|
+
if (creds && !forceRefresh && creds.expiresAt > now + REFRESH_BUFFER_MS) {
|
|
235
|
+
cached = creds;
|
|
236
|
+
cachedAt = now;
|
|
237
|
+
return creds;
|
|
238
|
+
}
|
|
239
|
+
// Need refresh
|
|
240
|
+
if (creds?.refreshToken) {
|
|
241
|
+
// Try direct OAuth refresh first
|
|
242
|
+
const refreshed = await refreshTokenDirect(creds.refreshToken);
|
|
243
|
+
if (refreshed && refreshed.expiresAt > Date.now() + REFRESH_BUFFER_MS) {
|
|
244
|
+
storeCredentials(refreshed);
|
|
245
|
+
return refreshed;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
// Fallback: CLI refresh
|
|
249
|
+
if (refreshViaCli()) {
|
|
250
|
+
creds = readCredentials();
|
|
251
|
+
if (creds && creds.expiresAt > Date.now() + REFRESH_BUFFER_MS) {
|
|
252
|
+
cached = creds;
|
|
253
|
+
cachedAt = Date.now();
|
|
254
|
+
return creds;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Return whatever we have, even if expired (caller decides)
|
|
258
|
+
if (creds) {
|
|
259
|
+
cached = creds;
|
|
260
|
+
cachedAt = now;
|
|
261
|
+
}
|
|
262
|
+
return creds;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get credentials synchronously (no refresh). For quick checks.
|
|
266
|
+
*/
|
|
267
|
+
export function getCredentialsSync() {
|
|
268
|
+
const now = Date.now();
|
|
269
|
+
if (cached && now - cachedAt < CACHE_TTL_MS && cached.expiresAt > now + REFRESH_BUFFER_MS) {
|
|
270
|
+
return cached;
|
|
271
|
+
}
|
|
272
|
+
const creds = readCredentials();
|
|
273
|
+
if (creds) {
|
|
274
|
+
cached = creds;
|
|
275
|
+
cachedAt = now;
|
|
276
|
+
}
|
|
277
|
+
return creds;
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"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"}
|
package/dist/cron.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron expression parser and utilities.
|
|
3
|
+
* Extracted from Claude Code v2.1.81 Kairos scheduler.
|
|
4
|
+
*
|
|
5
|
+
* Supports standard 5-field cron: minute hour day-of-month month day-of-week
|
|
6
|
+
*/
|
|
7
|
+
interface CronFields {
|
|
8
|
+
minute: number[];
|
|
9
|
+
hour: number[];
|
|
10
|
+
dayOfMonth: number[];
|
|
11
|
+
month: number[];
|
|
12
|
+
dayOfWeek: number[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Parse a 5-field cron expression. Returns null if invalid.
|
|
16
|
+
*/
|
|
17
|
+
export declare function parseCron(expression: string): CronFields | null;
|
|
18
|
+
/**
|
|
19
|
+
* Get the next matching date after `after`.
|
|
20
|
+
* Scans minute-by-minute up to ~1 year (527040 minutes).
|
|
21
|
+
*/
|
|
22
|
+
export declare function nextCronDate(fields: CronFields, after: Date): Date | null;
|
|
23
|
+
/**
|
|
24
|
+
* Validate a cron expression. Returns error message or null if valid.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateCron(expression: string): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Convert a cron expression to a human-readable description.
|
|
29
|
+
*/
|
|
30
|
+
export declare function describeCron(expression: string, options?: {
|
|
31
|
+
utc?: boolean;
|
|
32
|
+
}): string;
|
|
33
|
+
/**
|
|
34
|
+
* Parse an interval shorthand (5m, 2h, 1d) into a cron expression.
|
|
35
|
+
* Used by /loop-style commands.
|
|
36
|
+
*/
|
|
37
|
+
export declare function intervalToCron(interval: string): string | null;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=cron.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA6CD;;GAEG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAkB/D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAqDzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAiB9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CA8CpF;AA8BD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyB9D"}
|
package/dist/cron.js
ADDED
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron expression parser and utilities.
|
|
3
|
+
* Extracted from Claude Code v2.1.81 Kairos scheduler.
|
|
4
|
+
*
|
|
5
|
+
* Supports standard 5-field cron: minute hour day-of-month month day-of-week
|
|
6
|
+
*/
|
|
7
|
+
// ─── Cron field ranges ───
|
|
8
|
+
const FIELD_RANGES = [
|
|
9
|
+
{ min: 0, max: 59 }, // minute
|
|
10
|
+
{ min: 0, max: 23 }, // hour
|
|
11
|
+
{ min: 1, max: 31 }, // day of month
|
|
12
|
+
{ min: 1, max: 12 }, // month
|
|
13
|
+
{ min: 0, max: 6 }, // day of week (0=Sunday)
|
|
14
|
+
];
|
|
15
|
+
function parseField(field, range) {
|
|
16
|
+
const values = new Set();
|
|
17
|
+
for (const part of field.split(",")) {
|
|
18
|
+
const stepMatch = part.match(/^(.+)\/(\d+)$/);
|
|
19
|
+
let base = stepMatch ? stepMatch[1] : part;
|
|
20
|
+
const step = stepMatch ? parseInt(stepMatch[2], 10) : 1;
|
|
21
|
+
if (step < 1)
|
|
22
|
+
return null;
|
|
23
|
+
let start;
|
|
24
|
+
let end;
|
|
25
|
+
if (base === "*") {
|
|
26
|
+
start = range.min;
|
|
27
|
+
end = range.max;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const rangeMatch = base.match(/^(\d+)-(\d+)$/);
|
|
31
|
+
if (rangeMatch) {
|
|
32
|
+
start = parseInt(rangeMatch[1], 10);
|
|
33
|
+
end = parseInt(rangeMatch[2], 10);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
const num = parseInt(base, 10);
|
|
37
|
+
if (isNaN(num) || num < range.min || num > range.max)
|
|
38
|
+
return null;
|
|
39
|
+
if (stepMatch) {
|
|
40
|
+
start = num;
|
|
41
|
+
end = range.max;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
values.add(num);
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
if (start < range.min || end > range.max || start > end)
|
|
50
|
+
return null;
|
|
51
|
+
for (let i = start; i <= end; i += step) {
|
|
52
|
+
values.add(i);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return values.size > 0 ? [...values].sort((a, b) => a - b) : null;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Parse a 5-field cron expression. Returns null if invalid.
|
|
59
|
+
*/
|
|
60
|
+
export function parseCron(expression) {
|
|
61
|
+
const parts = expression.trim().split(/\s+/);
|
|
62
|
+
if (parts.length !== 5)
|
|
63
|
+
return null;
|
|
64
|
+
const fields = [];
|
|
65
|
+
for (let i = 0; i < 5; i++) {
|
|
66
|
+
const parsed = parseField(parts[i], FIELD_RANGES[i]);
|
|
67
|
+
if (!parsed)
|
|
68
|
+
return null;
|
|
69
|
+
fields.push(parsed);
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
minute: fields[0],
|
|
73
|
+
hour: fields[1],
|
|
74
|
+
dayOfMonth: fields[2],
|
|
75
|
+
month: fields[3],
|
|
76
|
+
dayOfWeek: fields[4],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the next matching date after `after`.
|
|
81
|
+
* Scans minute-by-minute up to ~1 year (527040 minutes).
|
|
82
|
+
*/
|
|
83
|
+
export function nextCronDate(fields, after) {
|
|
84
|
+
const minute = new Set(fields.minute);
|
|
85
|
+
const hour = new Set(fields.hour);
|
|
86
|
+
const dom = new Set(fields.dayOfMonth);
|
|
87
|
+
const month = new Set(fields.month);
|
|
88
|
+
const dow = new Set(fields.dayOfWeek);
|
|
89
|
+
const allDom = fields.dayOfMonth.length === 31;
|
|
90
|
+
const allDow = fields.dayOfWeek.length === 7;
|
|
91
|
+
const cursor = new Date(after.getTime());
|
|
92
|
+
cursor.setSeconds(0, 0);
|
|
93
|
+
cursor.setMinutes(cursor.getMinutes() + 1);
|
|
94
|
+
const MAX_ITERATIONS = 527040; // ~1 year of minutes
|
|
95
|
+
for (let i = 0; i < MAX_ITERATIONS; i++) {
|
|
96
|
+
const m = cursor.getMonth() + 1;
|
|
97
|
+
if (!month.has(m)) {
|
|
98
|
+
cursor.setMonth(cursor.getMonth() + 1, 1);
|
|
99
|
+
cursor.setHours(0, 0, 0, 0);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
const d = cursor.getDate();
|
|
103
|
+
const w = cursor.getDay();
|
|
104
|
+
const dayMatch = allDom && allDow
|
|
105
|
+
? true
|
|
106
|
+
: allDom
|
|
107
|
+
? dow.has(w)
|
|
108
|
+
: allDow
|
|
109
|
+
? dom.has(d)
|
|
110
|
+
: dom.has(d) || dow.has(w);
|
|
111
|
+
if (!dayMatch) {
|
|
112
|
+
cursor.setDate(cursor.getDate() + 1);
|
|
113
|
+
cursor.setHours(0, 0, 0, 0);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (!hour.has(cursor.getHours())) {
|
|
117
|
+
cursor.setHours(cursor.getHours() + 1, 0, 0, 0);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (!minute.has(cursor.getMinutes())) {
|
|
121
|
+
cursor.setMinutes(cursor.getMinutes() + 1);
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
return cursor;
|
|
125
|
+
}
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Validate a cron expression. Returns error message or null if valid.
|
|
130
|
+
*/
|
|
131
|
+
export function validateCron(expression) {
|
|
132
|
+
const fields = parseCron(expression);
|
|
133
|
+
if (!fields)
|
|
134
|
+
return `Invalid cron expression '${expression}'. Expected 5 fields: M H DoM Mon DoW.`;
|
|
135
|
+
const next = nextCronDate(fields, new Date());
|
|
136
|
+
if (!next)
|
|
137
|
+
return `Cron expression '${expression}' does not match any date in the next year.`;
|
|
138
|
+
// Check minimum 1-hour interval (trigger API constraint)
|
|
139
|
+
const second = nextCronDate(fields, next);
|
|
140
|
+
if (second) {
|
|
141
|
+
const intervalMs = second.getTime() - next.getTime();
|
|
142
|
+
if (intervalMs < 3600_000) {
|
|
143
|
+
return `Minimum trigger interval is 1 hour. '${expression}' fires every ${Math.round(intervalMs / 60_000)} minutes.`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Convert a cron expression to a human-readable description.
|
|
150
|
+
*/
|
|
151
|
+
export function describeCron(expression, options) {
|
|
152
|
+
const utc = options?.utc ?? false;
|
|
153
|
+
const parts = expression.trim().split(/\s+/);
|
|
154
|
+
if (parts.length !== 5)
|
|
155
|
+
return expression;
|
|
156
|
+
const [min, hr, dom, mon, dow] = parts;
|
|
157
|
+
// Every N minutes
|
|
158
|
+
const everyMin = min.match(/^\*\/(\d+)$/);
|
|
159
|
+
if (everyMin && hr === "*" && dom === "*" && mon === "*" && dow === "*") {
|
|
160
|
+
const n = parseInt(everyMin[1], 10);
|
|
161
|
+
return n === 1 ? "Every minute" : `Every ${n} minutes`;
|
|
162
|
+
}
|
|
163
|
+
// Every N hours at minute M
|
|
164
|
+
if (min.match(/^\d+$/) && hr === "*" && dom === "*" && mon === "*" && dow === "*") {
|
|
165
|
+
const m = parseInt(min, 10);
|
|
166
|
+
if (m === 0)
|
|
167
|
+
return "Every hour, on the hour";
|
|
168
|
+
return `Every hour at :${m.toString().padStart(2, "0")}`;
|
|
169
|
+
}
|
|
170
|
+
const everyHr = hr.match(/^\*\/(\d+)$/);
|
|
171
|
+
if (min.match(/^\d+$/) && everyHr && dom === "*" && mon === "*" && dow === "*") {
|
|
172
|
+
const n = parseInt(everyHr[1], 10);
|
|
173
|
+
const m = parseInt(min, 10);
|
|
174
|
+
return `Every ${n} hours at :${m.toString().padStart(2, "0")}`;
|
|
175
|
+
}
|
|
176
|
+
// Specific time daily
|
|
177
|
+
if (min.match(/^\d+$/) && hr.match(/^\d+$/) && dom === "*" && mon === "*") {
|
|
178
|
+
const h = parseInt(hr, 10);
|
|
179
|
+
const m = parseInt(min, 10);
|
|
180
|
+
const time = formatTime(h, m, utc);
|
|
181
|
+
if (dow === "*")
|
|
182
|
+
return `Daily at ${time}`;
|
|
183
|
+
return `${describeDow(dow)} at ${time}`;
|
|
184
|
+
}
|
|
185
|
+
// Monthly
|
|
186
|
+
if (min.match(/^\d+$/) && hr.match(/^\d+$/) && dom.match(/^\d+$/) && mon === "*" && dow === "*") {
|
|
187
|
+
const h = parseInt(hr, 10);
|
|
188
|
+
const m = parseInt(min, 10);
|
|
189
|
+
const d = parseInt(dom, 10);
|
|
190
|
+
return `Monthly on the ${ordinal(d)} at ${formatTime(h, m, utc)}`;
|
|
191
|
+
}
|
|
192
|
+
return expression;
|
|
193
|
+
}
|
|
194
|
+
function formatTime(h, m, utc) {
|
|
195
|
+
const suffix = utc ? " UTC" : "";
|
|
196
|
+
if (h === 0)
|
|
197
|
+
return `12:${m.toString().padStart(2, "0")}am${suffix}`;
|
|
198
|
+
if (h < 12)
|
|
199
|
+
return `${h}:${m.toString().padStart(2, "0")}am${suffix}`;
|
|
200
|
+
if (h === 12)
|
|
201
|
+
return `12:${m.toString().padStart(2, "0")}pm${suffix}`;
|
|
202
|
+
return `${h - 12}:${m.toString().padStart(2, "0")}pm${suffix}`;
|
|
203
|
+
}
|
|
204
|
+
function describeDow(dow) {
|
|
205
|
+
const days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
|
|
206
|
+
if (dow === "1-5")
|
|
207
|
+
return "Weekdays";
|
|
208
|
+
if (dow === "0,6")
|
|
209
|
+
return "Weekends";
|
|
210
|
+
return dow
|
|
211
|
+
.split(",")
|
|
212
|
+
.map((d) => days[parseInt(d, 10)] ?? d)
|
|
213
|
+
.join(", ");
|
|
214
|
+
}
|
|
215
|
+
function ordinal(n) {
|
|
216
|
+
if (n > 3 && n < 21)
|
|
217
|
+
return `${n}th`;
|
|
218
|
+
switch (n % 10) {
|
|
219
|
+
case 1: return `${n}st`;
|
|
220
|
+
case 2: return `${n}nd`;
|
|
221
|
+
case 3: return `${n}rd`;
|
|
222
|
+
default: return `${n}th`;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Parse an interval shorthand (5m, 2h, 1d) into a cron expression.
|
|
227
|
+
* Used by /loop-style commands.
|
|
228
|
+
*/
|
|
229
|
+
export function intervalToCron(interval) {
|
|
230
|
+
const match = interval.match(/^(\d+)([smhd])$/);
|
|
231
|
+
if (!match)
|
|
232
|
+
return null;
|
|
233
|
+
let n = parseInt(match[1], 10);
|
|
234
|
+
const unit = match[2];
|
|
235
|
+
switch (unit) {
|
|
236
|
+
case "s":
|
|
237
|
+
n = Math.max(1, Math.ceil(n / 60));
|
|
238
|
+
// fallthrough to minutes
|
|
239
|
+
case "m":
|
|
240
|
+
if (n <= 59)
|
|
241
|
+
return `*/${n} * * * *`;
|
|
242
|
+
// Round to hours
|
|
243
|
+
const hours = Math.round(n / 60);
|
|
244
|
+
if (hours > 0 && 24 % hours === 0)
|
|
245
|
+
return `0 */${hours} * * *`;
|
|
246
|
+
return `0 */${hours} * * *`;
|
|
247
|
+
case "h":
|
|
248
|
+
if (n <= 23)
|
|
249
|
+
return `0 */${n} * * *`;
|
|
250
|
+
return `0 0 */${Math.round(n / 24)} * *`;
|
|
251
|
+
case "d":
|
|
252
|
+
return `0 0 */${n} * *`;
|
|
253
|
+
default:
|
|
254
|
+
return null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
//# sourceMappingURL=cron.js.map
|
package/dist/cron.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../src/cron.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { ClaudeTriggersClient, buildTriggerBody } from "./client.js";
|
|
2
|
+
export { getCredentials, getCredentialsSync, readCredentials, clearCredentialCache, } from "./credentials.js";
|
|
3
|
+
export { parseCron, nextCronDate, validateCron, describeCron, intervalToCron, } from "./cron.js";
|
|
4
|
+
export type { ClaudeCredentials, OAuthTokenResponse, OrgProfile, Environment, CreateEnvironmentConfig, Trigger, TriggerListResponse, TriggerResponse, TriggerRunResponse, CreateTriggerBody, UpdateTriggerBody, TriggerEvent, TriggerJobConfig, SessionContext, McpConnection, Session, SessionListResponse, ApiResponse, ClientOptions, } from "./types.js";
|
|
5
|
+
export { TriggerApiError, AuthError } from "./types.js";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAEnB,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,UAAU,EACV,WAAW,EACX,uBAAuB,EACvB,OAAO,EACP,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,aAAa,GACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { ClaudeTriggersClient, buildTriggerBody } from "./client.js";
|
|
2
|
+
export { getCredentials, getCredentialsSync, readCredentials, clearCredentialCache, } from "./credentials.js";
|
|
3
|
+
export { parseCron, nextCronDate, validateCron, describeCron, intervalToCron, } from "./cron.js";
|
|
4
|
+
export { TriggerApiError, AuthError } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAErE,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,WAAW,CAAC;AAwBnB,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|