@autocode-cli/autocode 0.23.1 → 0.24.1
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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{C7io_DSW.js → 30x-pnPQ.js} +1 -1
- package/.output/public/_nuxt/{Bw7FWqV0.js → B5K45pkN.js} +1 -1
- package/.output/public/_nuxt/{DM4Ho2Bv.js → B7N9KVJb.js} +1 -1
- package/.output/public/_nuxt/{D76qSnWT.js → B8fx2Odl.js} +1 -1
- package/.output/public/_nuxt/{BBEbwH8D.js → BMpzg2mk.js} +1 -1
- package/.output/public/_nuxt/{BuvntByx.js → BSxoTORP.js} +1 -1
- package/.output/public/_nuxt/{BD91kv0Y.js → BV98b_5N.js} +1 -1
- package/.output/public/_nuxt/{3sXGt5Rd.js → BmXdU8s6.js} +1 -1
- package/.output/public/_nuxt/{LrqIIcWX.js → BnYbZ_Q-.js} +1 -1
- package/.output/public/_nuxt/{aTnkUihz.js → Bng5mevu.js} +1 -1
- package/.output/public/_nuxt/{CNk26ZYn.js → BxuncHIl.js} +1 -1
- package/.output/public/_nuxt/{kfPKQYdW.js → CHghi4ZS.js} +1 -1
- package/.output/public/_nuxt/{DDWI4XwX.js → CfnfFBgB.js} +1 -1
- package/.output/public/_nuxt/{D-wynznW.js → CheLvSKu.js} +1 -1
- package/.output/public/_nuxt/{L_n8XUuv.js → CjrJmDFL.js} +1 -1
- package/.output/public/_nuxt/{DIXqNKPo.js → CrYhmOVM.js} +1 -1
- package/.output/public/_nuxt/{Be7frmwh.js → DDXh7sp0.js} +1 -1
- package/.output/public/_nuxt/{BOlW1kmw.js → DJpW4QHw.js} +1 -1
- package/.output/public/_nuxt/{oLlK4WXl.js → DLjMZl4b.js} +1 -1
- package/.output/public/_nuxt/{BpO4XY0_.js → Da5mz8p9.js} +3 -3
- package/.output/public/_nuxt/{DpoEnJ3J.js → DcEDc3V6.js} +1 -1
- package/.output/public/_nuxt/{OyKw9-Gx.js → DhIzsKNb.js} +1 -1
- package/.output/public/_nuxt/{BZVoUal8.js → Di3lPWqt.js} +1 -1
- package/.output/public/_nuxt/{BuzdD3AW.js → DomCSEI3.js} +1 -1
- package/.output/public/_nuxt/{Du9kBm9P.js → DtwILEdu.js} +1 -1
- package/.output/public/_nuxt/{FqD3jYDA.js → PiC8eKKb.js} +1 -1
- package/.output/public/_nuxt/{DD1ePXYS.js → Sgc77AB2.js} +1 -1
- package/.output/public/_nuxt/{BQA5mXKu.js → U87oYT86.js} +1 -1
- package/.output/public/_nuxt/{Dv0ot_Lu.js → Up0p2QoY.js} +1 -1
- package/.output/public/_nuxt/{DFrkGi3U.js → YT65Mr4H.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/d9565cd3-0558-4052-9d4b-0d843258bfa3.json +1 -0
- package/.output/public/_nuxt/{Cds_QjoL.js → t_pTtAs-.js} +1 -1
- package/.output/public/_payload.json +1 -1
- package/.output/public/index.html +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/server.mjs +2 -2
- package/.output/server/chunks/build/styles.mjs +17 -17
- package/.output/server/chunks/nitro/nitro.mjs +250 -257
- package/.output/server/chunks/routes/api/purge.post.mjs +56 -0
- package/.output/server/chunks/routes/api/purge.post.mjs.map +1 -0
- package/.output/server/package.json +1 -1
- package/bin/autocode +55 -0
- package/package.json +1 -1
- package/templates/prompts/splitter.en.md +17 -2
- package/templates/prompts/splitter.fr.md +17 -2
- package/.output/public/_nuxt/builds/meta/e54571d7-66b0-4c23-8da2-367054427374.json +0 -1
- /package/.output/public/_i18n/{r7fAfybn → o5vy9wFb}/en/messages.json +0 -0
- /package/.output/public/_i18n/{r7fAfybn → o5vy9wFb}/fr/messages.json +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { p as prisma, d as defineEventHandler, i as debug } from '../../nitro/nitro.mjs';
|
|
2
|
+
import { rm } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import 'node:http';
|
|
5
|
+
import 'node:https';
|
|
6
|
+
import 'node:crypto';
|
|
7
|
+
import 'stream';
|
|
8
|
+
import 'events';
|
|
9
|
+
import 'http';
|
|
10
|
+
import 'crypto';
|
|
11
|
+
import 'buffer';
|
|
12
|
+
import 'zlib';
|
|
13
|
+
import 'https';
|
|
14
|
+
import 'net';
|
|
15
|
+
import 'tls';
|
|
16
|
+
import 'url';
|
|
17
|
+
import 'node:events';
|
|
18
|
+
import 'node:buffer';
|
|
19
|
+
import 'node:fs';
|
|
20
|
+
import 'node:path';
|
|
21
|
+
import 'vue-router';
|
|
22
|
+
import '@prisma/client';
|
|
23
|
+
import '@prisma/adapter-better-sqlite3';
|
|
24
|
+
import 'fs';
|
|
25
|
+
import 'child_process';
|
|
26
|
+
import 'node:child_process';
|
|
27
|
+
import 'node:url';
|
|
28
|
+
|
|
29
|
+
async function purgeAll() {
|
|
30
|
+
const count = await prisma.issue.count();
|
|
31
|
+
const autocodeRoot = process.env.AUTOCODE_ROOT || join(process.cwd(), "autocode");
|
|
32
|
+
try {
|
|
33
|
+
await rm(join(autocodeRoot, "attachments"), { recursive: true, force: true });
|
|
34
|
+
} catch {
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
await rm(join(autocodeRoot, "debug.log"), { force: true });
|
|
38
|
+
} catch {
|
|
39
|
+
}
|
|
40
|
+
await prisma.issue.deleteMany({});
|
|
41
|
+
await prisma.sequence.updateMany({
|
|
42
|
+
where: { name: "issue_key" },
|
|
43
|
+
data: { currentValue: 0 }
|
|
44
|
+
});
|
|
45
|
+
return { deleted: count };
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const purge_post = defineEventHandler(async () => {
|
|
49
|
+
debug("api", "POST /api/purge");
|
|
50
|
+
const result = await purgeAll();
|
|
51
|
+
debug("api", "purge completed", { deleted: result.deleted });
|
|
52
|
+
return result;
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
export { purge_post as default };
|
|
56
|
+
//# sourceMappingURL=purge.post.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"purge.post.mjs","sources":["../../../../../server/services/purge.service.ts","../../../../../server/api/purge.post.ts"],"names":["purgeService.purgeAll"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,eAAsB,QAAA,GAAyC;AAE7D,EAAA,MAAM,KAAA,GAAQ,MAAM,MAAA,CAAO,KAAA,CAAM,KAAA,EAAM;AAEvC,EAAA,MAAM,YAAA,GAAe,QAAQ,GAAA,CAAI,aAAA,IAAiB,KAAK,OAAA,CAAQ,GAAA,IAAO,UAAU,CAAA;AAGhF,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,CAAG,IAAA,CAAK,YAAA,EAAc,aAAa,CAAA,EAAG,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,IAAA,EAAM,CAAA;AAAA,EAC9E,CAAA,CAAA,MAAQ;AAAA,EAER;AAGA,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,CAAG,KAAK,YAAA,EAAc,WAAW,GAAG,EAAE,KAAA,EAAO,MAAM,CAAA;AAAA,EAC3D,CAAA,CAAA,MAAQ;AAAA,EAER;AAGA,EAAA,MAAM,MAAA,CAAO,KAAA,CAAM,UAAA,CAAW,EAAE,CAAA;AAGhC,EAAA,MAAM,MAAA,CAAO,SAAS,UAAA,CAAW;AAAA,IAC/B,KAAA,EAAO,EAAE,IAAA,EAAM,WAAA,EAAY;AAAA,IAC3B,IAAA,EAAM,EAAE,YAAA,EAAc,CAAA;AAAE,GACzB,CAAA;AAED,EAAA,OAAO,EAAE,SAAS,KAAA,EAAM;AAC1B;;ACrCA,mBAAA,mBAAA,YAAA;AACA,EAAA,KAAA,CAAA,OAAA,iBAAA,CAAA;AAEA,EAAA,MAAA,MAAA,GAAA,MAAAA,QAAA,EAAA;AACA,EAAA,KAAA,CAAA,OAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,MAAA,CAAA,SAAA,CAAA;AAEA,EAAA,OAAA,MAAA;AACA,CAAA,CAAA;;;;"}
|
package/bin/autocode
CHANGED
|
@@ -46,6 +46,7 @@ Commands:
|
|
|
46
46
|
parent <key> [parent] Manage parent relationships
|
|
47
47
|
health Check workflow health
|
|
48
48
|
stats Show usage statistics
|
|
49
|
+
purge [--force] Purge all issues and reset sequence
|
|
49
50
|
init Initialize project structure
|
|
50
51
|
catalog [action] List or manage column catalog
|
|
51
52
|
pipeline <action> Manage pipelines
|
|
@@ -1367,6 +1368,57 @@ function formatDuration(ms) {
|
|
|
1367
1368
|
return (ms / 1000).toFixed(1) + 's';
|
|
1368
1369
|
}
|
|
1369
1370
|
|
|
1371
|
+
// ============================================
|
|
1372
|
+
// purge - Purge all issues
|
|
1373
|
+
// ============================================
|
|
1374
|
+
async function purgeCmd() {
|
|
1375
|
+
const force = commandArgs.includes('--force') || commandArgs.includes('-f');
|
|
1376
|
+
|
|
1377
|
+
try {
|
|
1378
|
+
const API = getApiBase();
|
|
1379
|
+
const countRes = await fetch(`${API}/api/issues`);
|
|
1380
|
+
const issues = countRes.ok ? await countRes.json() : [];
|
|
1381
|
+
const count = issues.length;
|
|
1382
|
+
|
|
1383
|
+
if (count === 0) {
|
|
1384
|
+
console.log('No issues to purge');
|
|
1385
|
+
return;
|
|
1386
|
+
}
|
|
1387
|
+
|
|
1388
|
+
// Dry run mode (default)
|
|
1389
|
+
if (!force) {
|
|
1390
|
+
console.log(`\x1b[33mDry run - would delete:\x1b[0m`);
|
|
1391
|
+
console.log(` • ${count} issue(s) and related data`);
|
|
1392
|
+
console.log(` • attachments/ folder`);
|
|
1393
|
+
console.log(` • debug.log file`);
|
|
1394
|
+
console.log(` • Reset sequence to AC-000000`);
|
|
1395
|
+
console.log();
|
|
1396
|
+
console.log(`Run with \x1b[1m--force\x1b[0m to execute.`);
|
|
1397
|
+
return;
|
|
1398
|
+
}
|
|
1399
|
+
|
|
1400
|
+
// Execute purge
|
|
1401
|
+
const res = await fetch(`${API}/api/purge`, {
|
|
1402
|
+
method: 'POST',
|
|
1403
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1404
|
+
});
|
|
1405
|
+
|
|
1406
|
+
if (!res.ok) {
|
|
1407
|
+
const err = await res.json().catch(() => ({}));
|
|
1408
|
+
console.error(`Failed: ${err.message || res.statusText}`);
|
|
1409
|
+
process.exit(1);
|
|
1410
|
+
}
|
|
1411
|
+
|
|
1412
|
+
const result = await res.json();
|
|
1413
|
+
console.log(`✓ Purged ${result.deleted} issue(s)`);
|
|
1414
|
+
console.log(' Sequence reset to AC-000000');
|
|
1415
|
+
} catch (e) {
|
|
1416
|
+
console.error(`Error: ${e.message}`);
|
|
1417
|
+
console.error('Make sure autocode server is running');
|
|
1418
|
+
process.exit(1);
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
|
|
1370
1422
|
// ============================================
|
|
1371
1423
|
// init - Initialize project structure
|
|
1372
1424
|
// ============================================
|
|
@@ -2361,6 +2413,9 @@ switch (command) {
|
|
|
2361
2413
|
case 'stats':
|
|
2362
2414
|
statsCmd();
|
|
2363
2415
|
break;
|
|
2416
|
+
case 'purge':
|
|
2417
|
+
purgeCmd();
|
|
2418
|
+
break;
|
|
2364
2419
|
case 'init':
|
|
2365
2420
|
initCmd();
|
|
2366
2421
|
break;
|
package/package.json
CHANGED
|
@@ -16,19 +16,34 @@ If the task is small enough to be completed in one go, proceed directly without
|
|
|
16
16
|
|
|
17
17
|
1. Analyze the requirement to identify distinct functional components
|
|
18
18
|
2. Identify natural boundaries between features, layers, or responsibilities
|
|
19
|
+
|
|
20
|
+
### If splitting is needed
|
|
21
|
+
|
|
19
22
|
3. Define clear acceptance criteria for each sub-issue
|
|
20
23
|
4. Ensure each split issue is independently testable and deployable
|
|
21
|
-
5. Create sub-issues: `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent
|
|
24
|
+
5. Create sub-issues: `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent {key}`
|
|
22
25
|
6. Verify no functionality has been forgotten or duplicated across issues
|
|
23
26
|
7. Create an integration issue that references all sub-issues to validate cohesion
|
|
24
|
-
8. Document: `autocode comment
|
|
27
|
+
8. Document the split: `autocode comment {key} "Splitter: Issue split into X sub-issues: [list of keys]. Parent issue completed."`
|
|
28
|
+
9. **COMPLETE the parent issue**: `autocode move {key} done`
|
|
29
|
+
|
|
30
|
+
### If no splitting is needed
|
|
31
|
+
|
|
32
|
+
3. Document: `autocode comment {key} "Splitter: Atomic task, no splitting needed. Continuing to ready."`
|
|
33
|
+
4. The issue will automatically continue to the next column (ready)
|
|
25
34
|
|
|
26
35
|
## Validation Criteria
|
|
27
36
|
|
|
37
|
+
### If split was performed
|
|
28
38
|
- [ ] All sub-issues are atomic and independently implementable
|
|
29
39
|
- [ ] No functionality from the original requirement has been forgotten
|
|
30
40
|
- [ ] An integration issue exists to verify all parts work together cohesively
|
|
31
41
|
- [ ] Each sub-issue has clear acceptance criteria
|
|
42
|
+
- [ ] The parent issue was moved to `done` via `autocode move {key} done`
|
|
43
|
+
|
|
44
|
+
### If no split was needed
|
|
45
|
+
- [ ] A comment explains why the task is already atomic
|
|
46
|
+
- [ ] The issue will continue normally to ready
|
|
32
47
|
|
|
33
48
|
## Notes
|
|
34
49
|
|
|
@@ -16,19 +16,34 @@ Si la tâche est suffisamment petite pour être complétée en une fois, procéd
|
|
|
16
16
|
|
|
17
17
|
1. Analyser le besoin pour identifier les composants fonctionnels distincts
|
|
18
18
|
2. Identifier les frontières naturelles entre fonctionnalités, couches ou responsabilités
|
|
19
|
+
|
|
20
|
+
### Si découpage nécessaire
|
|
21
|
+
|
|
19
22
|
3. Définir des critères d'acceptation clairs pour chaque sous-ticket
|
|
20
23
|
4. S'assurer que chaque ticket découpé est testable et déployable indépendamment
|
|
21
|
-
5. Créer les sous-tickets : `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent
|
|
24
|
+
5. Créer les sous-tickets : `autocode new "<title>" "<description>" --priority P2 --labels "<labels>" --acceptance "<criteria>" --semver patch --column backlog --parent {key}`
|
|
22
25
|
6. Vérifier qu'aucune fonctionnalité n'a été oubliée ou dupliquée entre les tickets
|
|
23
26
|
7. Créer un ticket d'intégration qui référence tous les sous-tickets pour valider la cohésion
|
|
24
|
-
8. Documenter : `autocode comment
|
|
27
|
+
8. Documenter le découpage : `autocode comment {key} "Splitter: Ticket découpé en X sous-tickets: [liste des clés]. Ticket parent terminé."`
|
|
28
|
+
9. **TERMINER le ticket parent** : `autocode move {key} done`
|
|
29
|
+
|
|
30
|
+
### Si pas de découpage nécessaire
|
|
31
|
+
|
|
32
|
+
3. Documenter : `autocode comment {key} "Splitter: Tâche atomique, pas de découpage nécessaire. Continue vers ready."`
|
|
33
|
+
4. Le ticket continuera automatiquement vers la colonne suivante (ready)
|
|
25
34
|
|
|
26
35
|
## Critères de Validation
|
|
27
36
|
|
|
37
|
+
### Si découpage effectué
|
|
28
38
|
- [ ] Tous les sous-tickets sont atomiques et implémentables indépendamment
|
|
29
39
|
- [ ] Aucune fonctionnalité du besoin original n'a été oubliée
|
|
30
40
|
- [ ] Un ticket d'intégration existe pour vérifier que toutes les parties fonctionnent ensemble
|
|
31
41
|
- [ ] Chaque sous-ticket possède des critères d'acceptation clairs
|
|
42
|
+
- [ ] Le ticket parent a été envoyé en `done` via `autocode move {key} done`
|
|
43
|
+
|
|
44
|
+
### Si pas de découpage
|
|
45
|
+
- [ ] Un commentaire explique pourquoi la tâche est déjà atomique
|
|
46
|
+
- [ ] Le ticket continuera normalement vers ready
|
|
32
47
|
|
|
33
48
|
## Notes
|
|
34
49
|
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"id":"e54571d7-66b0-4c23-8da2-367054427374","timestamp":1767711142540,"matcher":{"static":{},"wildcard":{},"dynamic":{}},"prerendered":["/"]}
|
|
File without changes
|
|
File without changes
|