@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.
Files changed (121) hide show
  1. package/dist/{chunk-24PS2XSV.js → chunk-27NCPABY.js} +4 -67
  2. package/dist/chunk-27NCPABY.js.map +1 -0
  3. package/dist/chunk-2CLZERVS.js +1703 -0
  4. package/dist/chunk-2CLZERVS.js.map +1 -0
  5. package/dist/{chunk-2D5E23XA.js → chunk-2G2KQJ2Q.js} +3 -3
  6. package/dist/chunk-2G2KQJ2Q.js.map +1 -0
  7. package/dist/{chunk-BY5YEOVG.js → chunk-3VNP3RVY.js} +2 -2
  8. package/dist/{chunk-M53MPY3U.js → chunk-4VUPUHND.js} +3 -3
  9. package/dist/chunk-76PDFLLR.js +1744 -0
  10. package/dist/chunk-76PDFLLR.js.map +1 -0
  11. package/dist/{chunk-WYU476R2.js → chunk-CFD6OA3U.js} +6 -1
  12. package/dist/chunk-CFD6OA3U.js.map +1 -0
  13. package/dist/{chunk-PFU5YLRH.js → chunk-DE5AVSQ4.js} +3 -3
  14. package/dist/{chunk-S6W4SURF.js → chunk-ETRY7XUT.js} +4 -4
  15. package/dist/{chunk-W2HBRERV.js → chunk-FXPJY6FJ.js} +3 -3
  16. package/dist/chunk-I4RM5O56.js +75 -0
  17. package/dist/chunk-I4RM5O56.js.map +1 -0
  18. package/dist/{chunk-QLRCFKLU.js → chunk-JKZUC53H.js} +4 -4
  19. package/dist/{chunk-SZRIZBWI.js → chunk-LW7XOWL2.js} +3 -3
  20. package/dist/{chunk-U35GRLBD.js → chunk-O3NXIT5A.js} +6 -1
  21. package/dist/chunk-O3NXIT5A.js.map +1 -0
  22. package/dist/{chunk-MI7OZ5XD.js → chunk-PDL7SDI3.js} +2 -2
  23. package/dist/{chunk-HF7PGQI3.js → chunk-QJIXXBMI.js} +2 -2
  24. package/dist/{chunk-LBH6SLHH.js → chunk-RWA7YWPE.js} +4 -4
  25. package/dist/{chunk-TAGHPCFT.js → chunk-SZA5UZBI.js} +3 -3
  26. package/dist/{chunk-QQTIJN3S.js → chunk-TKUHYD6T.js} +6 -1
  27. package/dist/chunk-TKUHYD6T.js.map +1 -0
  28. package/dist/{chunk-DVZC42TL.js → chunk-XCXFSLSS.js} +4 -4
  29. package/dist/{chunk-NB46PEG2.js → chunk-Y7ACM23C.js} +3 -3
  30. package/dist/{chunk-NB46PEG2.js.map → chunk-Y7ACM23C.js.map} +1 -1
  31. package/dist/claude-auto-run.js +9 -1683
  32. package/dist/claude-auto-run.js.map +1 -1
  33. package/dist/claude-auto.js +14 -8
  34. package/dist/claude-auto.js.map +1 -1
  35. package/dist/{create-U5WYKTD4.js → create-DC63FYWP.js} +4 -4
  36. package/dist/{create-T3BDDS6G.js → create-Z2OVC5JK.js} +5 -4
  37. package/dist/{crontab-CDMC2FDT.js → crontab-OMTYKJC7.js} +6 -1
  38. package/dist/crontab-OMTYKJC7.js.map +1 -0
  39. package/dist/{crontab-MAJ52FOK.js → crontab-YKFQ3AQA.js} +6 -1
  40. package/dist/crontab-YKFQ3AQA.js.map +1 -0
  41. package/dist/{crontab-PNEWANLW.js → crontab-ZZHAZ5OJ.js} +2 -2
  42. package/dist/{edit-77E3ZQHM.js → edit-O5T3UXM4.js} +4 -4
  43. package/dist/{edit-RVPRAAQ2.js → edit-ZGUTPFHQ.js} +5 -4
  44. package/dist/index.d.ts +319 -615
  45. package/dist/index.js +78 -1682
  46. package/dist/index.js.map +1 -1
  47. package/dist/{launchd-HNZIWLNC.js → launchd-5COTJSRK.js} +6 -1
  48. package/dist/launchd-5COTJSRK.js.map +1 -0
  49. package/dist/{launchd-7F27BIZB.js → launchd-6NKJDIYC.js} +6 -1
  50. package/dist/launchd-6NKJDIYC.js.map +1 -0
  51. package/dist/{launchd-LZGDP7BM.js → launchd-MZNYUY3Y.js} +2 -2
  52. package/dist/{list-OIGERGYJ.js → list-55ABTJVW.js} +4 -3
  53. package/dist/{list-T35RSQVU.js → list-AS7F4LFU.js} +3 -3
  54. package/dist/{pause-OJNUYBCJ.js → pause-72P4ERIU.js} +4 -4
  55. package/dist/{pause-JB42JGTB.js → pause-JCPZFBVZ.js} +3 -3
  56. package/dist/pause-TAS6BCYR.js +13 -0
  57. package/dist/{remove-UASXZCOR.js → remove-RMTSKUYN.js} +4 -4
  58. package/dist/remove-VBIVYREY.js +13 -0
  59. package/dist/{report-IYGK5HTC.js → report-53DC5DL2.js} +4 -3
  60. package/dist/{report-CHAJH2SA.js → report-6O43ICNG.js} +3 -3
  61. package/dist/{resume-3ATNZP6D.js → resume-3TB76AUU.js} +5 -4
  62. package/dist/{resume-JVTR7OEX.js → resume-4XSHJ4SN.js} +4 -4
  63. package/dist/{resume-6WVGU6XW.js → resume-A2PWKRLE.js} +3 -3
  64. package/dist/run-CXRPDX2S.js +34 -0
  65. package/dist/run-CXRPDX2S.js.map +1 -0
  66. package/dist/run-H3IF4QXQ.js +34 -0
  67. package/dist/run-H3IF4QXQ.js.map +1 -0
  68. package/dist/{schtasks-4V2IFD3A.js → schtasks-5IZCEIPB.js} +6 -1
  69. package/dist/schtasks-5IZCEIPB.js.map +1 -0
  70. package/dist/{schtasks-JGEPEKQS.js → schtasks-6GQ27GI2.js} +6 -1
  71. package/dist/schtasks-6GQ27GI2.js.map +1 -0
  72. package/dist/{schtasks-2EQAD3ES.js → schtasks-ZJ5NAIU6.js} +2 -2
  73. package/dist/{tui-6LOGPILA.js → tui-NVOPC5SD.js} +5 -5
  74. package/dist/{tui-2DUPCX3Q.js → tui-VKT4UBXQ.js} +4 -3
  75. package/package.json +1 -1
  76. package/dist/chunk-24PS2XSV.js.map +0 -1
  77. package/dist/chunk-2D5E23XA.js.map +0 -1
  78. package/dist/chunk-QQTIJN3S.js.map +0 -1
  79. package/dist/chunk-U35GRLBD.js.map +0 -1
  80. package/dist/chunk-WYU476R2.js.map +0 -1
  81. package/dist/crontab-CDMC2FDT.js.map +0 -1
  82. package/dist/crontab-MAJ52FOK.js.map +0 -1
  83. package/dist/launchd-7F27BIZB.js.map +0 -1
  84. package/dist/launchd-HNZIWLNC.js.map +0 -1
  85. package/dist/pause-2YOLFMAR.js +0 -12
  86. package/dist/remove-RXYKFYBI.js +0 -12
  87. package/dist/schtasks-4V2IFD3A.js.map +0 -1
  88. package/dist/schtasks-JGEPEKQS.js.map +0 -1
  89. /package/dist/{chunk-BY5YEOVG.js.map → chunk-3VNP3RVY.js.map} +0 -0
  90. /package/dist/{chunk-M53MPY3U.js.map → chunk-4VUPUHND.js.map} +0 -0
  91. /package/dist/{chunk-PFU5YLRH.js.map → chunk-DE5AVSQ4.js.map} +0 -0
  92. /package/dist/{chunk-DVZC42TL.js.map → chunk-ETRY7XUT.js.map} +0 -0
  93. /package/dist/{chunk-W2HBRERV.js.map → chunk-FXPJY6FJ.js.map} +0 -0
  94. /package/dist/{chunk-QLRCFKLU.js.map → chunk-JKZUC53H.js.map} +0 -0
  95. /package/dist/{chunk-SZRIZBWI.js.map → chunk-LW7XOWL2.js.map} +0 -0
  96. /package/dist/{chunk-MI7OZ5XD.js.map → chunk-PDL7SDI3.js.map} +0 -0
  97. /package/dist/{chunk-HF7PGQI3.js.map → chunk-QJIXXBMI.js.map} +0 -0
  98. /package/dist/{chunk-LBH6SLHH.js.map → chunk-RWA7YWPE.js.map} +0 -0
  99. /package/dist/{chunk-TAGHPCFT.js.map → chunk-SZA5UZBI.js.map} +0 -0
  100. /package/dist/{chunk-S6W4SURF.js.map → chunk-XCXFSLSS.js.map} +0 -0
  101. /package/dist/{create-U5WYKTD4.js.map → create-DC63FYWP.js.map} +0 -0
  102. /package/dist/{create-T3BDDS6G.js.map → create-Z2OVC5JK.js.map} +0 -0
  103. /package/dist/{crontab-PNEWANLW.js.map → crontab-ZZHAZ5OJ.js.map} +0 -0
  104. /package/dist/{edit-77E3ZQHM.js.map → edit-O5T3UXM4.js.map} +0 -0
  105. /package/dist/{edit-RVPRAAQ2.js.map → edit-ZGUTPFHQ.js.map} +0 -0
  106. /package/dist/{launchd-LZGDP7BM.js.map → launchd-MZNYUY3Y.js.map} +0 -0
  107. /package/dist/{list-OIGERGYJ.js.map → list-55ABTJVW.js.map} +0 -0
  108. /package/dist/{list-T35RSQVU.js.map → list-AS7F4LFU.js.map} +0 -0
  109. /package/dist/{pause-OJNUYBCJ.js.map → pause-72P4ERIU.js.map} +0 -0
  110. /package/dist/{pause-JB42JGTB.js.map → pause-JCPZFBVZ.js.map} +0 -0
  111. /package/dist/{pause-2YOLFMAR.js.map → pause-TAS6BCYR.js.map} +0 -0
  112. /package/dist/{remove-UASXZCOR.js.map → remove-RMTSKUYN.js.map} +0 -0
  113. /package/dist/{remove-RXYKFYBI.js.map → remove-VBIVYREY.js.map} +0 -0
  114. /package/dist/{report-IYGK5HTC.js.map → report-53DC5DL2.js.map} +0 -0
  115. /package/dist/{report-CHAJH2SA.js.map → report-6O43ICNG.js.map} +0 -0
  116. /package/dist/{resume-3ATNZP6D.js.map → resume-3TB76AUU.js.map} +0 -0
  117. /package/dist/{resume-JVTR7OEX.js.map → resume-4XSHJ4SN.js.map} +0 -0
  118. /package/dist/{resume-6WVGU6XW.js.map → resume-A2PWKRLE.js.map} +0 -0
  119. /package/dist/{schtasks-2EQAD3ES.js.map → schtasks-ZJ5NAIU6.js.map} +0 -0
  120. /package/dist/{tui-6LOGPILA.js.map → tui-NVOPC5SD.js.map} +0 -0
  121. /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().positive().default(50),
41
- maxBudgetUsd: z.number().positive().default(5),
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-24PS2XSV.js.map
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"]}