@cjvana/claude-auto 0.1.2 → 0.2.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/dist/{chunk-24PS2XSV.js → chunk-27NCPABY.js} +4 -67
- package/dist/chunk-27NCPABY.js.map +1 -0
- package/dist/chunk-2CLZERVS.js +1703 -0
- package/dist/chunk-2CLZERVS.js.map +1 -0
- package/dist/{chunk-2D5E23XA.js → chunk-2G2KQJ2Q.js} +3 -3
- package/dist/chunk-2G2KQJ2Q.js.map +1 -0
- package/dist/{chunk-BY5YEOVG.js → chunk-3VNP3RVY.js} +2 -2
- package/dist/{chunk-M53MPY3U.js → chunk-4VUPUHND.js} +3 -3
- package/dist/chunk-76PDFLLR.js +1744 -0
- package/dist/chunk-76PDFLLR.js.map +1 -0
- package/dist/{chunk-WYU476R2.js → chunk-CFD6OA3U.js} +6 -1
- package/dist/chunk-CFD6OA3U.js.map +1 -0
- package/dist/{chunk-PFU5YLRH.js → chunk-DE5AVSQ4.js} +3 -3
- package/dist/{chunk-S6W4SURF.js → chunk-ETRY7XUT.js} +4 -4
- package/dist/{chunk-W2HBRERV.js → chunk-FXPJY6FJ.js} +3 -3
- package/dist/chunk-I4RM5O56.js +75 -0
- package/dist/chunk-I4RM5O56.js.map +1 -0
- package/dist/{chunk-QLRCFKLU.js → chunk-JKZUC53H.js} +4 -4
- package/dist/{chunk-SZRIZBWI.js → chunk-LW7XOWL2.js} +3 -3
- package/dist/{chunk-U35GRLBD.js → chunk-O3NXIT5A.js} +6 -1
- package/dist/chunk-O3NXIT5A.js.map +1 -0
- package/dist/{chunk-MI7OZ5XD.js → chunk-PDL7SDI3.js} +2 -2
- package/dist/{chunk-HF7PGQI3.js → chunk-QJIXXBMI.js} +2 -2
- package/dist/{chunk-LBH6SLHH.js → chunk-RWA7YWPE.js} +4 -4
- package/dist/{chunk-TAGHPCFT.js → chunk-SZA5UZBI.js} +3 -3
- package/dist/{chunk-QQTIJN3S.js → chunk-TKUHYD6T.js} +6 -1
- package/dist/chunk-TKUHYD6T.js.map +1 -0
- package/dist/{chunk-DVZC42TL.js → chunk-XCXFSLSS.js} +4 -4
- package/dist/{chunk-NB46PEG2.js → chunk-Y7ACM23C.js} +3 -3
- package/dist/{chunk-NB46PEG2.js.map → chunk-Y7ACM23C.js.map} +1 -1
- package/dist/claude-auto-run.js +9 -1683
- package/dist/claude-auto-run.js.map +1 -1
- package/dist/claude-auto.js +14 -8
- package/dist/claude-auto.js.map +1 -1
- package/dist/{create-U5WYKTD4.js → create-DC63FYWP.js} +4 -4
- package/dist/{create-T3BDDS6G.js → create-Z2OVC5JK.js} +5 -4
- package/dist/{crontab-CDMC2FDT.js → crontab-OMTYKJC7.js} +6 -1
- package/dist/crontab-OMTYKJC7.js.map +1 -0
- package/dist/{crontab-MAJ52FOK.js → crontab-YKFQ3AQA.js} +6 -1
- package/dist/crontab-YKFQ3AQA.js.map +1 -0
- package/dist/{crontab-PNEWANLW.js → crontab-ZZHAZ5OJ.js} +2 -2
- package/dist/{edit-77E3ZQHM.js → edit-O5T3UXM4.js} +4 -4
- package/dist/{edit-RVPRAAQ2.js → edit-ZGUTPFHQ.js} +5 -4
- package/dist/index.d.ts +319 -615
- package/dist/index.js +78 -1682
- package/dist/index.js.map +1 -1
- package/dist/{launchd-HNZIWLNC.js → launchd-5COTJSRK.js} +6 -1
- package/dist/launchd-5COTJSRK.js.map +1 -0
- package/dist/{launchd-7F27BIZB.js → launchd-6NKJDIYC.js} +6 -1
- package/dist/launchd-6NKJDIYC.js.map +1 -0
- package/dist/{launchd-LZGDP7BM.js → launchd-MZNYUY3Y.js} +2 -2
- package/dist/{list-OIGERGYJ.js → list-55ABTJVW.js} +4 -3
- package/dist/{list-T35RSQVU.js → list-AS7F4LFU.js} +3 -3
- package/dist/{pause-OJNUYBCJ.js → pause-72P4ERIU.js} +4 -4
- package/dist/{pause-JB42JGTB.js → pause-JCPZFBVZ.js} +3 -3
- package/dist/pause-TAS6BCYR.js +13 -0
- package/dist/{remove-UASXZCOR.js → remove-RMTSKUYN.js} +4 -4
- package/dist/remove-VBIVYREY.js +13 -0
- package/dist/{report-IYGK5HTC.js → report-53DC5DL2.js} +4 -3
- package/dist/{report-CHAJH2SA.js → report-6O43ICNG.js} +3 -3
- package/dist/{resume-3ATNZP6D.js → resume-3TB76AUU.js} +5 -4
- package/dist/{resume-JVTR7OEX.js → resume-4XSHJ4SN.js} +4 -4
- package/dist/{resume-6WVGU6XW.js → resume-A2PWKRLE.js} +3 -3
- package/dist/run-CXRPDX2S.js +34 -0
- package/dist/run-CXRPDX2S.js.map +1 -0
- package/dist/run-H3IF4QXQ.js +34 -0
- package/dist/run-H3IF4QXQ.js.map +1 -0
- package/dist/{schtasks-4V2IFD3A.js → schtasks-5IZCEIPB.js} +6 -1
- package/dist/schtasks-5IZCEIPB.js.map +1 -0
- package/dist/{schtasks-JGEPEKQS.js → schtasks-6GQ27GI2.js} +6 -1
- package/dist/schtasks-6GQ27GI2.js.map +1 -0
- package/dist/{schtasks-2EQAD3ES.js → schtasks-ZJ5NAIU6.js} +2 -2
- package/dist/{tui-6LOGPILA.js → tui-NVOPC5SD.js} +5 -5
- package/dist/{tui-2DUPCX3Q.js → tui-VKT4UBXQ.js} +4 -3
- package/package.json +1 -1
- package/dist/chunk-24PS2XSV.js.map +0 -1
- package/dist/chunk-2D5E23XA.js.map +0 -1
- package/dist/chunk-QQTIJN3S.js.map +0 -1
- package/dist/chunk-U35GRLBD.js.map +0 -1
- package/dist/chunk-WYU476R2.js.map +0 -1
- package/dist/crontab-CDMC2FDT.js.map +0 -1
- package/dist/crontab-MAJ52FOK.js.map +0 -1
- package/dist/launchd-7F27BIZB.js.map +0 -1
- package/dist/launchd-HNZIWLNC.js.map +0 -1
- package/dist/pause-2YOLFMAR.js +0 -12
- package/dist/remove-RXYKFYBI.js +0 -12
- package/dist/schtasks-4V2IFD3A.js.map +0 -1
- package/dist/schtasks-JGEPEKQS.js.map +0 -1
- /package/dist/{chunk-BY5YEOVG.js.map → chunk-3VNP3RVY.js.map} +0 -0
- /package/dist/{chunk-M53MPY3U.js.map → chunk-4VUPUHND.js.map} +0 -0
- /package/dist/{chunk-PFU5YLRH.js.map → chunk-DE5AVSQ4.js.map} +0 -0
- /package/dist/{chunk-DVZC42TL.js.map → chunk-ETRY7XUT.js.map} +0 -0
- /package/dist/{chunk-W2HBRERV.js.map → chunk-FXPJY6FJ.js.map} +0 -0
- /package/dist/{chunk-QLRCFKLU.js.map → chunk-JKZUC53H.js.map} +0 -0
- /package/dist/{chunk-SZRIZBWI.js.map → chunk-LW7XOWL2.js.map} +0 -0
- /package/dist/{chunk-MI7OZ5XD.js.map → chunk-PDL7SDI3.js.map} +0 -0
- /package/dist/{chunk-HF7PGQI3.js.map → chunk-QJIXXBMI.js.map} +0 -0
- /package/dist/{chunk-LBH6SLHH.js.map → chunk-RWA7YWPE.js.map} +0 -0
- /package/dist/{chunk-TAGHPCFT.js.map → chunk-SZA5UZBI.js.map} +0 -0
- /package/dist/{chunk-S6W4SURF.js.map → chunk-XCXFSLSS.js.map} +0 -0
- /package/dist/{create-U5WYKTD4.js.map → create-DC63FYWP.js.map} +0 -0
- /package/dist/{create-T3BDDS6G.js.map → create-Z2OVC5JK.js.map} +0 -0
- /package/dist/{crontab-PNEWANLW.js.map → crontab-ZZHAZ5OJ.js.map} +0 -0
- /package/dist/{edit-77E3ZQHM.js.map → edit-O5T3UXM4.js.map} +0 -0
- /package/dist/{edit-RVPRAAQ2.js.map → edit-ZGUTPFHQ.js.map} +0 -0
- /package/dist/{launchd-LZGDP7BM.js.map → launchd-MZNYUY3Y.js.map} +0 -0
- /package/dist/{list-OIGERGYJ.js.map → list-55ABTJVW.js.map} +0 -0
- /package/dist/{list-T35RSQVU.js.map → list-AS7F4LFU.js.map} +0 -0
- /package/dist/{pause-OJNUYBCJ.js.map → pause-72P4ERIU.js.map} +0 -0
- /package/dist/{pause-JB42JGTB.js.map → pause-JCPZFBVZ.js.map} +0 -0
- /package/dist/{pause-2YOLFMAR.js.map → pause-TAS6BCYR.js.map} +0 -0
- /package/dist/{remove-UASXZCOR.js.map → remove-RMTSKUYN.js.map} +0 -0
- /package/dist/{remove-RXYKFYBI.js.map → remove-VBIVYREY.js.map} +0 -0
- /package/dist/{report-IYGK5HTC.js.map → report-53DC5DL2.js.map} +0 -0
- /package/dist/{report-CHAJH2SA.js.map → report-6O43ICNG.js.map} +0 -0
- /package/dist/{resume-3ATNZP6D.js.map → resume-3TB76AUU.js.map} +0 -0
- /package/dist/{resume-JVTR7OEX.js.map → resume-4XSHJ4SN.js.map} +0 -0
- /package/dist/{resume-6WVGU6XW.js.map → resume-A2PWKRLE.js.map} +0 -0
- /package/dist/{schtasks-2EQAD3ES.js.map → schtasks-ZJ5NAIU6.js.map} +0 -0
- /package/dist/{tui-6LOGPILA.js.map → tui-NVOPC5SD.js.map} +0 -0
- /package/dist/{tui-2DUPCX3Q.js.map → tui-VKT4UBXQ.js.map} +0 -0
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
writeFileSafe
|
|
3
3
|
} from "./chunk-E3XVLTT4.js";
|
|
4
|
-
import {
|
|
5
|
-
paths
|
|
6
|
-
} from "./chunk-H2MUDYMW.js";
|
|
7
4
|
import {
|
|
8
5
|
ConfigParseError,
|
|
9
6
|
ConfigValidationError
|
|
@@ -37,8 +34,8 @@ var JobConfigSchema = z.object({
|
|
|
37
34
|
focus: z.array(z.enum(["open-issues", "bug-discovery", "features", "documentation"])).default(["open-issues", "bug-discovery"]),
|
|
38
35
|
systemPrompt: z.string().optional(),
|
|
39
36
|
guardrails: z.object({
|
|
40
|
-
maxTurns: z.number().int().
|
|
41
|
-
maxBudgetUsd: z.number().
|
|
37
|
+
maxTurns: z.number().int().nonnegative().default(50),
|
|
38
|
+
maxBudgetUsd: z.number().nonnegative().default(5),
|
|
42
39
|
noNewDependencies: z.boolean().default(false),
|
|
43
40
|
noArchitectureChanges: z.boolean().default(false),
|
|
44
41
|
bugFixOnly: z.boolean().default(false),
|
|
@@ -131,61 +128,6 @@ async function writeConfigDocument(filePath, doc) {
|
|
|
131
128
|
await writeFileSafe(filePath, yamlContent);
|
|
132
129
|
}
|
|
133
130
|
|
|
134
|
-
// src/core/job-manager.ts
|
|
135
|
-
import { readdir, readFile as readFile2, rm } from "fs/promises";
|
|
136
|
-
import { nanoid } from "nanoid";
|
|
137
|
-
import { parseDocument as parseDocument2 } from "yaml";
|
|
138
|
-
import { z as z3 } from "zod";
|
|
139
|
-
async function createJob(input) {
|
|
140
|
-
const id = nanoid(12);
|
|
141
|
-
const config = { ...input, id };
|
|
142
|
-
await saveJobConfig(paths.jobConfig(id), config);
|
|
143
|
-
return config;
|
|
144
|
-
}
|
|
145
|
-
async function readJob(jobId) {
|
|
146
|
-
return loadJobConfig(paths.jobConfig(jobId));
|
|
147
|
-
}
|
|
148
|
-
async function updateJob(jobId, updates) {
|
|
149
|
-
const configPath = paths.jobConfig(jobId);
|
|
150
|
-
const content = await readFile2(configPath, "utf-8");
|
|
151
|
-
const doc = parseDocument2(content);
|
|
152
|
-
for (const [key, value] of Object.entries(updates)) {
|
|
153
|
-
if (key === "id") continue;
|
|
154
|
-
doc.set(key, doc.createNode(value));
|
|
155
|
-
}
|
|
156
|
-
const raw = doc.toJS();
|
|
157
|
-
const result = JobConfigSchema.safeParse(raw);
|
|
158
|
-
if (!result.success) {
|
|
159
|
-
throw new Error(`Invalid config after update: ${z3.prettifyError(result.error)}`);
|
|
160
|
-
}
|
|
161
|
-
await writeFileSafe(configPath, doc.toString({ indent: 2 }));
|
|
162
|
-
return result.data;
|
|
163
|
-
}
|
|
164
|
-
async function deleteJob(jobId) {
|
|
165
|
-
await rm(paths.jobDir(jobId), { recursive: true, force: true });
|
|
166
|
-
}
|
|
167
|
-
async function listJobs() {
|
|
168
|
-
let entries;
|
|
169
|
-
try {
|
|
170
|
-
entries = await readdir(paths.jobs, { withFileTypes: true, encoding: "utf-8" });
|
|
171
|
-
} catch (error) {
|
|
172
|
-
if (error instanceof Error && "code" in error && error.code === "ENOENT") {
|
|
173
|
-
return [];
|
|
174
|
-
}
|
|
175
|
-
throw error;
|
|
176
|
-
}
|
|
177
|
-
const results = [];
|
|
178
|
-
for (const entry of entries) {
|
|
179
|
-
if (!entry.isDirectory()) continue;
|
|
180
|
-
try {
|
|
181
|
-
const config = await readJob(entry.name);
|
|
182
|
-
results.push(config);
|
|
183
|
-
} catch {
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
return results;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
131
|
export {
|
|
190
132
|
JobConfigSchema,
|
|
191
133
|
readConfigDocument,
|
|
@@ -193,11 +135,6 @@ export {
|
|
|
193
135
|
loadJobConfig,
|
|
194
136
|
saveJobConfig,
|
|
195
137
|
updateConfigField,
|
|
196
|
-
writeConfigDocument
|
|
197
|
-
createJob,
|
|
198
|
-
readJob,
|
|
199
|
-
updateJob,
|
|
200
|
-
deleteJob,
|
|
201
|
-
listJobs
|
|
138
|
+
writeConfigDocument
|
|
202
139
|
};
|
|
203
|
-
//# sourceMappingURL=chunk-
|
|
140
|
+
//# sourceMappingURL=chunk-27NCPABY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/types.ts","../src/core/config.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst ModelSchema = z.union([\n\tz.enum([\"sonnet\", \"opus\", \"haiku\", \"opusplan\", \"default\"]),\n\tz.string().regex(/^claude-/),\n]);\n\nexport const PipelineConfigSchema = z.object({\n\tenabled: z.boolean().default(false),\n\tplanModel: ModelSchema.default(\"haiku\"),\n\timplementModel: ModelSchema.default(\"opus\"),\n\treviewModel: ModelSchema.default(\"sonnet\"),\n\tmaxReviewRounds: z.number().int().positive().default(1),\n});\n\nexport type PipelineConfig = z.infer<typeof PipelineConfigSchema>;\n\nexport const JobConfigSchema = z.object({\n\tid: z.string().min(1),\n\tname: z.string().min(1),\n\trepo: z.object({\n\t\tpath: z.string().min(1),\n\t\tbranch: z.string().default(\"main\"),\n\t\tremote: z.string().default(\"origin\"),\n\t}),\n\tschedule: z.object({\n\t\tcron: z.string().min(1),\n\t\ttimezone: z.string().default(\"UTC\"),\n\t}),\n\tfocus: z\n\t\t.array(z.enum([\"open-issues\", \"bug-discovery\", \"features\", \"documentation\"]))\n\t\t.default([\"open-issues\", \"bug-discovery\"]),\n\tsystemPrompt: z.string().optional(),\n\tguardrails: z\n\t\t.object({\n\t\t\tmaxTurns: z.number().int().nonnegative().default(50),\n\t\t\tmaxBudgetUsd: z.number().nonnegative().default(5.0),\n\t\t\tnoNewDependencies: z.boolean().default(false),\n\t\t\tnoArchitectureChanges: z.boolean().default(false),\n\t\t\tbugFixOnly: z.boolean().default(false),\n\t\t\trestrictToPaths: z.array(z.string()).optional(),\n\t\t})\n\t\t.default({\n\t\t\tmaxTurns: 50,\n\t\t\tmaxBudgetUsd: 5.0,\n\t\t\tnoNewDependencies: false,\n\t\t\tnoArchitectureChanges: false,\n\t\t\tbugFixOnly: false,\n\t\t}),\n\tnotifications: z\n\t\t.object({\n\t\t\tdiscord: z\n\t\t\t\t.object({\n\t\t\t\t\twebhookUrl: z.string().url(),\n\t\t\t\t\tonSuccess: z.boolean().default(true),\n\t\t\t\t\tonFailure: z.boolean().default(true),\n\t\t\t\t\tonNoChanges: z.boolean().default(false),\n\t\t\t\t\tonLocked: z.boolean().default(false),\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\tslack: z\n\t\t\t\t.object({\n\t\t\t\t\twebhookUrl: z.string().url(),\n\t\t\t\t\tonSuccess: z.boolean().default(true),\n\t\t\t\t\tonFailure: z.boolean().default(true),\n\t\t\t\t\tonNoChanges: z.boolean().default(false),\n\t\t\t\t\tonLocked: z.boolean().default(false),\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t\ttelegram: z\n\t\t\t\t.object({\n\t\t\t\t\tbotToken: z.string(),\n\t\t\t\t\tchatId: z.string(),\n\t\t\t\t\tonSuccess: z.boolean().default(true),\n\t\t\t\t\tonFailure: z.boolean().default(true),\n\t\t\t\t\tonNoChanges: z.boolean().default(false),\n\t\t\t\t\tonLocked: z.boolean().default(false),\n\t\t\t\t})\n\t\t\t\t.optional(),\n\t\t})\n\t\t.default({}),\n\tenabled: z.boolean().default(true),\n\tmodel: ModelSchema.optional(),\n\tbudget: z\n\t\t.object({\n\t\t\tdailyUsd: z.number().positive().optional(),\n\t\t\tweeklyUsd: z.number().positive().optional(),\n\t\t\tmonthlyUsd: z.number().positive().optional(),\n\t\t})\n\t\t.optional(),\n\tmaxFeedbackRounds: z.number().int().positive().default(3).optional(),\n\tpipeline: PipelineConfigSchema.optional(),\n});\n\nexport type JobConfig = z.infer<typeof JobConfigSchema>;\n\nexport interface ScheduleInfo {\n\tcron: string;\n\ttimezone: string;\n\thumanReadable: string;\n\tnextRuns: Date[];\n}\n","import { readFile } from \"node:fs/promises\";\nimport { Document, parseDocument } from \"yaml\";\nimport { z } from \"zod\";\nimport { ConfigParseError, ConfigValidationError } from \"../util/errors.js\";\nimport { writeFileSafe } from \"../util/fs.js\";\nimport { type JobConfig, JobConfigSchema } from \"./types.js\";\n\n/**\n * Read a YAML config file and return the parsed Document (preserves comments).\n * Throws ConfigParseError if the YAML syntax is invalid.\n */\nexport async function readConfigDocument(filePath: string): Promise<Document> {\n\tconst content = await readFile(filePath, \"utf-8\");\n\tconst doc = parseDocument(content);\n\n\tif (doc.errors.length > 0) {\n\t\tthrow new ConfigParseError(\n\t\t\tfilePath,\n\t\t\tdoc.errors.map((e) => ({ message: e.message })),\n\t\t);\n\t}\n\n\treturn doc;\n}\n\n/**\n * Validate a parsed YAML Document against the JobConfigSchema.\n * Returns the validated and typed JobConfig.\n * Throws ConfigValidationError if validation fails.\n */\nexport function validateConfig(filePath: string, doc: Document): JobConfig {\n\tconst raw = doc.toJS();\n\tconst result = JobConfigSchema.safeParse(raw);\n\n\tif (!result.success) {\n\t\tthrow new ConfigValidationError(filePath, z.prettifyError(result.error));\n\t}\n\n\treturn result.data;\n}\n\n/**\n * Load a job config from a YAML file, validating it against the schema.\n * Combines readConfigDocument + validateConfig.\n */\nexport async function loadJobConfig(filePath: string): Promise<JobConfig> {\n\tconst doc = await readConfigDocument(filePath);\n\treturn validateConfig(filePath, doc);\n}\n\n/**\n * Save a JobConfig to a YAML file using atomic writes.\n * Multiline systemPrompt values use YAML block literal style (|).\n */\nexport async function saveJobConfig(filePath: string, config: JobConfig): Promise<void> {\n\tconst doc = new Document(config);\n\n\t// For multiline systemPrompt, force YAML block literal style (|)\n\tif (config.systemPrompt?.includes(\"\\n\")) {\n\t\tconst node = doc.getIn([\"systemPrompt\"]);\n\t\tif (node && typeof node === \"object\" && \"type\" in node) {\n\t\t\t(node as { type: string }).type = \"BLOCK_LITERAL\";\n\t\t}\n\t}\n\n\tconst yamlContent = doc.toString({ indent: 2 });\n\tawait writeFileSafe(filePath, yamlContent);\n}\n\n/**\n * Update a field in a YAML Document by path, preserving comments.\n */\nexport function updateConfigField(doc: Document, path: (string | number)[], value: unknown): void {\n\tdoc.setIn(path, value);\n}\n\n/**\n * Write a YAML Document to a file using atomic writes, preserving comments.\n */\nexport async function writeConfigDocument(filePath: string, doc: Document): Promise<void> {\n\tconst yamlContent = doc.toString({ indent: 2 });\n\tawait writeFileSafe(filePath, yamlContent);\n}\n"],"mappings":"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","names":["z","z"]}
|