@autocode-cli/autocode 0.22.0 → 0.23.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/.output/nitro.json +1 -1
- package/.output/public/_nuxt/{DFQ30pd7.js → 4sw7JTbp.js} +1 -1
- package/.output/public/_nuxt/{BvF9_V7p.js → B6pOO9Bz.js} +1 -1
- package/.output/public/_nuxt/{DBuWa6JT.js → BAAVMorC.js} +1 -1
- package/.output/public/_nuxt/{BBgAVlXU.js → BJ-MtkWm.js} +1 -1
- package/.output/public/_nuxt/{CWENDdnZ.js → BJz8iexS.js} +1 -1
- package/.output/public/_nuxt/{DykwyQae.js → BMCm0zjc.js} +1 -1
- package/.output/public/_nuxt/{BvUbqlcZ.js → BU6KT1Jg.js} +1 -1
- package/.output/public/_nuxt/{FIIaIpPb.js → BXorvbPI.js} +1 -1
- package/.output/public/_nuxt/{DwfwVH0w.js → BdgB0Sk8.js} +1 -1
- package/.output/public/_nuxt/{QtPIr4OQ.js → BiqphZN8.js} +1 -1
- package/.output/public/_nuxt/{Bsd2P-Xc.js → Bn2y2u4i.js} +1 -1
- package/.output/public/_nuxt/{Bu1Qq2g-.js → BtXQIoy8.js} +1 -1
- package/.output/public/_nuxt/{DRo5NaOZ.js → Byshfb8L.js} +1 -1
- package/.output/public/_nuxt/{D8RlVVzC.js → C10TWEVH.js} +1 -1
- package/.output/public/_nuxt/{DU0awelf.js → C2rmiAJ1.js} +1 -1
- package/.output/public/_nuxt/{Zzp33YZj.js → CMIuQb6D.js} +1 -1
- package/.output/public/_nuxt/{jYigECdj.js → CTbIP459.js} +1 -1
- package/.output/public/_nuxt/{D4lcVP-d.js → ClY4a-PO.js} +1 -1
- package/.output/public/_nuxt/{CjVJcaTo.js → D0HHOq4k.js} +3 -3
- package/.output/public/_nuxt/{DYYF8rpr.js → D1JH-OfY.js} +1 -1
- package/.output/public/_nuxt/{Bxcwuw3U.js → D9fas07B.js} +1 -1
- package/.output/public/_nuxt/{DaYBQX26.js → DAd8dbng.js} +1 -1
- package/.output/public/_nuxt/{iHS1jy-1.js → DNMLSDtV.js} +1 -1
- package/.output/public/_nuxt/{_HJO0SwU.js → DbZiOpag.js} +1 -1
- package/.output/public/_nuxt/{TB1o0NrH.js → DuqM_LGj.js} +1 -1
- package/.output/public/_nuxt/{CoGBQbLh.js → DxFm2Qrx.js} +1 -1
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/35ace9c2-472c-4755-ae87-74fdb84336dd.json +1 -0
- package/.output/public/_nuxt/{BZUmpBmU.js → c4NRZ8AG.js} +1 -1
- package/.output/public/_nuxt/{BthlfLoK.js → g7WOzF8b.js} +1 -1
- package/.output/public/_nuxt/{TA-NBooC.js → kNuGsBnB.js} +1 -1
- package/.output/public/_nuxt/{DNUcHFTN.js → kZiZQgsI.js} +1 -1
- package/.output/public/_nuxt/{CTV7-Iux.js → mty-mFWB.js} +1 -1
- package/.output/public/_payload.json +1 -1
- package/.output/public/fake-features/cocktail-generator/cocktails.js +541 -0
- package/.output/public/fake-features/cocktail-generator/index.html +620 -0
- package/.output/public/index.html +1 -1
- package/.output/server/chunks/build/_name_-UJA12Rs2.mjs +1 -1
- package/.output/server/chunks/build/client.precomputed.mjs +1 -1
- package/.output/server/chunks/build/fetch-B5NxMLIO.mjs +1 -1
- package/.output/server/chunks/build/nuxt-link-Cq8xZgFP.mjs +1 -1
- package/.output/server/chunks/build/server.mjs +3 -3
- package/.output/server/chunks/build/styles.mjs +7 -7
- package/.output/server/chunks/build/usePipeline-ZPHbtOs6.mjs +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +802 -379
- package/.output/server/chunks/nitro/nitro.mjs.map +1 -1
- package/.output/server/chunks/routes/_ws.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get2.mjs +6 -2
- package/.output/server/chunks/routes/api/index.get2.mjs.map +1 -1
- package/.output/server/chunks/routes/api/index.get3.mjs +1 -1
- package/.output/server/chunks/routes/api/index.get4.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post2.mjs +1 -1
- package/.output/server/chunks/routes/api/index.post3.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/comments.get.mjs +1 -2
- package/.output/server/chunks/routes/api/issues/_id/comments.get.mjs.map +1 -1
- package/.output/server/chunks/routes/api/issues/_id/comments.post.mjs +1 -2
- package/.output/server/chunks/routes/api/issues/_id/comments.post.mjs.map +1 -1
- package/.output/server/chunks/routes/api/issues/_id/full-history.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/full-terminal.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/log.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/history/_sessionId/prompt.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/history.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/log.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/move.post.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/_id/next.post.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/actionable.get.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/autocomplete.post.mjs +1 -1
- package/.output/server/chunks/routes/api/issues/graph.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/activate.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/activate.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version/finalize.post.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions/_version_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name/versions.post.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.delete.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.get.mjs +1 -1
- package/.output/server/chunks/routes/api/pipelines/_name_.put.mjs +1 -1
- package/.output/server/chunks/routes/api/stats.get.mjs +1 -1
- package/.output/server/chunks/routes/api/workflow/health.get.mjs +1 -1
- package/.output/server/chunks/routes/api/ws/status.get.mjs +1 -1
- package/.output/server/chunks/routes/renderer.mjs +1 -1
- package/.output/server/index.mjs +1 -1
- package/.output/server/node_modules/.prisma/client/index.js +6 -3
- package/.output/server/node_modules/.prisma/client/package.json +1 -1
- package/.output/server/package.json +1 -1
- package/bin/autocode +50 -0
- package/package.json +1 -1
- package/templates/prompts/_transition-decision.en.md +69 -0
- package/templates/prompts/_transition-decision.fr.md +69 -0
- package/templates/prompts/backlog.en.md +1 -3
- package/templates/prompts/backlog.fr.md +1 -3
- package/templates/prompts/changelog.en.md +1 -4
- package/templates/prompts/changelog.fr.md +1 -4
- package/templates/prompts/deploy-prod.en.md +1 -4
- package/templates/prompts/deploy-prod.fr.md +1 -4
- package/templates/prompts/deploy-staging.en.md +1 -4
- package/templates/prompts/deploy-staging.fr.md +1 -4
- package/templates/prompts/design.en.md +1 -4
- package/templates/prompts/design.fr.md +1 -4
- package/templates/prompts/dev.en.md +1 -4
- package/templates/prompts/dev.fr.md +1 -4
- package/templates/prompts/done.en.md +2 -3
- package/templates/prompts/done.fr.md +2 -3
- package/templates/prompts/git-commit.en.md +1 -4
- package/templates/prompts/git-commit.fr.md +1 -4
- package/templates/prompts/git-push.en.md +1 -4
- package/templates/prompts/git-push.fr.md +1 -4
- package/templates/prompts/git-tag.en.md +1 -4
- package/templates/prompts/git-tag.fr.md +1 -4
- package/templates/prompts/in-progress.en.md +2 -8
- package/templates/prompts/in-progress.fr.md +1 -7
- package/templates/prompts/qualification.en.md +1 -4
- package/templates/prompts/qualification.fr.md +0 -3
- package/templates/prompts/ready.en.md +3 -6
- package/templates/prompts/ready.fr.md +3 -6
- package/templates/prompts/retest-cypress.en.md +1 -4
- package/templates/prompts/retest-cypress.fr.md +1 -4
- package/templates/prompts/retest-playwright.en.md +1 -4
- package/templates/prompts/retest-playwright.fr.md +1 -4
- package/templates/prompts/retest-unit.en.md +1 -4
- package/templates/prompts/retest-unit.fr.md +1 -4
- package/templates/prompts/retest.en.md +1 -4
- package/templates/prompts/retest.fr.md +1 -4
- package/templates/prompts/review-best-practices.en.md +1 -4
- package/templates/prompts/review-best-practices.fr.md +1 -4
- package/templates/prompts/review-code.en.md +1 -4
- package/templates/prompts/review-code.fr.md +1 -4
- package/templates/prompts/review-consistency.en.md +1 -4
- package/templates/prompts/review-consistency.fr.md +1 -4
- package/templates/prompts/review-no-duplication.en.md +1 -4
- package/templates/prompts/review-no-duplication.fr.md +1 -4
- package/templates/prompts/review-security.en.md +1 -4
- package/templates/prompts/review-security.fr.md +1 -4
- package/templates/prompts/specification.en.md +1 -4
- package/templates/prompts/specification.fr.md +1 -4
- package/templates/prompts/splitter.en.md +1 -4
- package/templates/prompts/splitter.fr.md +0 -3
- package/templates/prompts/testing-cypress.en.md +1 -4
- package/templates/prompts/testing-cypress.fr.md +1 -4
- package/templates/prompts/testing-integration.en.md +1 -4
- package/templates/prompts/testing-integration.fr.md +1 -4
- package/templates/prompts/testing-playwright.en.md +1 -4
- package/templates/prompts/testing-playwright.fr.md +1 -4
- package/templates/prompts/testing-unit.en.md +1 -4
- package/templates/prompts/testing-unit.fr.md +1 -4
- package/templates/prompts/update-docs.en.md +1 -4
- package/templates/prompts/update-docs.fr.md +1 -4
- package/templates/prompts/validate-staging.en.md +1 -4
- package/templates/prompts/validate-staging.fr.md +1 -4
- package/.output/public/_nuxt/builds/meta/83d9a3fc-c99e-4e26-adef-e7f5b329b81a.json +0 -1
- package/.output/server/chunks/_/comments.service.mjs +0 -26
- package/.output/server/chunks/_/comments.service.mjs.map +0 -1
- /package/.output/public/_i18n/{zP5M_e1m → __ad3z6g}/en/messages.json +0 -0
- /package/.output/public/_i18n/{zP5M_e1m → __ad3z6g}/fr/messages.json +0 -0
|
@@ -10001,7 +10001,7 @@ function _expandFromEnv(value) {
|
|
|
10001
10001
|
const _inlineRuntimeConfig = {
|
|
10002
10002
|
"app": {
|
|
10003
10003
|
"baseURL": "/",
|
|
10004
|
-
"buildId": "
|
|
10004
|
+
"buildId": "35ace9c2-472c-4755-ae87-74fdb84336dd",
|
|
10005
10005
|
"buildAssetsDir": "/_nuxt/",
|
|
10006
10006
|
"cdnURL": ""
|
|
10007
10007
|
},
|
|
@@ -10518,7 +10518,7 @@ async function errorHandler(error, event) {
|
|
|
10518
10518
|
* Released under the MIT License.
|
|
10519
10519
|
*/
|
|
10520
10520
|
const _create = Object.create;
|
|
10521
|
-
const create$
|
|
10521
|
+
const create$5 = (obj = null) => _create(obj);
|
|
10522
10522
|
/* eslint-enable */
|
|
10523
10523
|
/**
|
|
10524
10524
|
* Useful Utilities By Evan you
|
|
@@ -10553,7 +10553,7 @@ function deepCopy(src, des) {
|
|
|
10553
10553
|
// if src[key] is an object/array, set des[key]
|
|
10554
10554
|
// to empty object/array to prevent setting by reference
|
|
10555
10555
|
if (isObject(src[key]) && !isObject(des[key])) {
|
|
10556
|
-
des[key] = Array.isArray(src[key]) ? [] : create$
|
|
10556
|
+
des[key] = Array.isArray(src[key]) ? [] : create$5();
|
|
10557
10557
|
}
|
|
10558
10558
|
if (isNotObjectOrIsArray(des[key]) || isNotObjectOrIsArray(src[key])) {
|
|
10559
10559
|
// replace with src[key] when:
|
|
@@ -10572,18 +10572,18 @@ function deepCopy(src, des) {
|
|
|
10572
10572
|
const __nuxtMock = { runWithContext: async (fn) => await fn() };
|
|
10573
10573
|
const merger = createDefu((obj, key, value) => {
|
|
10574
10574
|
if (key === "messages" || key === "datetimeFormats" || key === "numberFormats") {
|
|
10575
|
-
obj[key] ??= create$
|
|
10575
|
+
obj[key] ??= create$5(null);
|
|
10576
10576
|
deepCopy(value, obj[key]);
|
|
10577
10577
|
return true;
|
|
10578
10578
|
}
|
|
10579
10579
|
});
|
|
10580
10580
|
async function loadVueI18nOptions(vueI18nConfigs) {
|
|
10581
10581
|
const nuxtApp = __nuxtMock;
|
|
10582
|
-
let vueI18nOptions = { messages: create$
|
|
10582
|
+
let vueI18nOptions = { messages: create$5(null) };
|
|
10583
10583
|
for (const configFile of vueI18nConfigs) {
|
|
10584
10584
|
const resolver = await configFile().then((x) => x.default);
|
|
10585
10585
|
const resolved = isFunction(resolver) ? await nuxtApp.runWithContext(() => resolver()) : resolver;
|
|
10586
|
-
vueI18nOptions = merger(create$
|
|
10586
|
+
vueI18nOptions = merger(create$5(null), resolved, vueI18nOptions);
|
|
10587
10587
|
}
|
|
10588
10588
|
vueI18nOptions.fallbackLocale ??= false;
|
|
10589
10589
|
return vueI18nOptions;
|
|
@@ -10960,10 +10960,17 @@ function writeToFile(message) {
|
|
|
10960
10960
|
} catch {
|
|
10961
10961
|
}
|
|
10962
10962
|
}
|
|
10963
|
-
function debug$1(module, message, data) {
|
|
10963
|
+
function debug$1(module, message, data, options) {
|
|
10964
10964
|
if (!isDebugEnabled()) return;
|
|
10965
10965
|
const dataStr = data !== void 0 ? " " + JSON.stringify(data) : "";
|
|
10966
|
-
|
|
10966
|
+
let line = `[${timestamp()}] [${module}] ${message}${dataStr}`;
|
|
10967
|
+
if (options == null ? void 0 : options.trace) {
|
|
10968
|
+
const stack = new Error().stack;
|
|
10969
|
+
if (stack) {
|
|
10970
|
+
const frames = stack.split("\n").slice(2).map((l) => " " + l.trim()).join("\n");
|
|
10971
|
+
line += "\n" + frames;
|
|
10972
|
+
}
|
|
10973
|
+
}
|
|
10967
10974
|
writeToFile(line);
|
|
10968
10975
|
}
|
|
10969
10976
|
function initLogger() {
|
|
@@ -10982,7 +10989,12 @@ function initLogger() {
|
|
|
10982
10989
|
let isClaudeRunning = false;
|
|
10983
10990
|
const claudeQueue = [];
|
|
10984
10991
|
async function acquireClaudeLock() {
|
|
10985
|
-
debug$1(
|
|
10992
|
+
debug$1(
|
|
10993
|
+
"claude",
|
|
10994
|
+
"Acquiring lock...",
|
|
10995
|
+
{ queueLength: claudeQueue.length, isRunning: isClaudeRunning },
|
|
10996
|
+
{ trace: true }
|
|
10997
|
+
);
|
|
10986
10998
|
if (!isClaudeRunning) {
|
|
10987
10999
|
isClaudeRunning = true;
|
|
10988
11000
|
debug$1("claude", "Lock acquired immediately");
|
|
@@ -11074,10 +11086,8 @@ Ce commentaire doit r\xE9sumer ce que tu as fait, les fichiers modifi\xE9s, les
|
|
|
11074
11086
|
R\xE9pond moi dans la langue : ${lang} (m\xEAme si tu dois travailler en anglais)
|
|
11075
11087
|
`;
|
|
11076
11088
|
}
|
|
11077
|
-
async function
|
|
11078
|
-
debug$1("claude", "
|
|
11079
|
-
await acquireClaudeLock();
|
|
11080
|
-
debug$1("claude", "Lock acquired, starting execution", { issueKey, columnSlug });
|
|
11089
|
+
async function executeClaudeCLIStreamWithoutLock(prompt, issueKey, columnSlug) {
|
|
11090
|
+
debug$1("claude", "executeClaudeCLIStreamWithoutLock called", { issueKey, columnSlug });
|
|
11081
11091
|
const startTime = Date.now();
|
|
11082
11092
|
let model = "";
|
|
11083
11093
|
let tokensInput = 0;
|
|
@@ -11193,7 +11203,6 @@ async function executeClaudeCLIStream(prompt, issueKey, columnSlug) {
|
|
|
11193
11203
|
duration,
|
|
11194
11204
|
sessionId: sessionId || void 0
|
|
11195
11205
|
});
|
|
11196
|
-
releaseClaudeLock();
|
|
11197
11206
|
if (code === 0) {
|
|
11198
11207
|
resolve({
|
|
11199
11208
|
success: true,
|
|
@@ -11219,7 +11228,6 @@ async function executeClaudeCLIStream(prompt, issueKey, columnSlug) {
|
|
|
11219
11228
|
error: error.message,
|
|
11220
11229
|
sessionId: sessionId || void 0
|
|
11221
11230
|
});
|
|
11222
|
-
releaseClaudeLock();
|
|
11223
11231
|
resolve({
|
|
11224
11232
|
success: false,
|
|
11225
11233
|
error: error.message,
|
|
@@ -11504,7 +11512,7 @@ async function findByKey(key) {
|
|
|
11504
11512
|
}
|
|
11505
11513
|
});
|
|
11506
11514
|
}
|
|
11507
|
-
async function create$
|
|
11515
|
+
async function create$4(data, initialColumnId, initialColumnSlug = "backlog") {
|
|
11508
11516
|
var _a, _b, _c, _d, _e;
|
|
11509
11517
|
debug$1("issues", "create", { title: data.title, parentKey: data.parentKey, initialColumnSlug });
|
|
11510
11518
|
let columnId = initialColumnId;
|
|
@@ -11729,14 +11737,61 @@ async function getAncestors(key) {
|
|
|
11729
11737
|
}
|
|
11730
11738
|
return ancestors;
|
|
11731
11739
|
}
|
|
11740
|
+
const LOCK_TTL_MS = 10 * 60 * 1e3;
|
|
11741
|
+
async function acquireProcessingLock(key, columnId, sessionId) {
|
|
11742
|
+
const cutoff = new Date(Date.now() - LOCK_TTL_MS);
|
|
11743
|
+
const issue = await prisma.issue.findUnique({
|
|
11744
|
+
where: { key },
|
|
11745
|
+
select: {
|
|
11746
|
+
processingColumnId: true,
|
|
11747
|
+
processingStartedAt: true,
|
|
11748
|
+
processingSessionId: true
|
|
11749
|
+
}
|
|
11750
|
+
});
|
|
11751
|
+
if (!issue) {
|
|
11752
|
+
debug$1("issues", "acquireProcessingLock - issue not found", { key });
|
|
11753
|
+
return false;
|
|
11754
|
+
}
|
|
11755
|
+
if (issue.processingColumnId === columnId && issue.processingStartedAt && issue.processingStartedAt > cutoff) {
|
|
11756
|
+
debug$1("issues", "Processing lock already held", {
|
|
11757
|
+
key,
|
|
11758
|
+
columnId,
|
|
11759
|
+
existingSessionId: issue.processingSessionId,
|
|
11760
|
+
startedAt: issue.processingStartedAt,
|
|
11761
|
+
ttlRemainingMs: issue.processingStartedAt.getTime() + LOCK_TTL_MS - Date.now()
|
|
11762
|
+
});
|
|
11763
|
+
return false;
|
|
11764
|
+
}
|
|
11765
|
+
await prisma.issue.update({
|
|
11766
|
+
where: { key },
|
|
11767
|
+
data: {
|
|
11768
|
+
processingColumnId: columnId,
|
|
11769
|
+
processingStartedAt: /* @__PURE__ */ new Date(),
|
|
11770
|
+
processingSessionId: sessionId
|
|
11771
|
+
}
|
|
11772
|
+
});
|
|
11773
|
+
debug$1("issues", "Processing lock acquired", { key, columnId, sessionId });
|
|
11774
|
+
return true;
|
|
11775
|
+
}
|
|
11776
|
+
async function releaseProcessingLock(key) {
|
|
11777
|
+
await prisma.issue.update({
|
|
11778
|
+
where: { key },
|
|
11779
|
+
data: {
|
|
11780
|
+
processingColumnId: null,
|
|
11781
|
+
processingStartedAt: null,
|
|
11782
|
+
processingSessionId: null
|
|
11783
|
+
}
|
|
11784
|
+
});
|
|
11785
|
+
debug$1("issues", "Processing lock released", { key });
|
|
11786
|
+
}
|
|
11732
11787
|
|
|
11733
|
-
async function findByIssue$
|
|
11788
|
+
async function findByIssue$2(issueKey) {
|
|
11734
11789
|
return prisma.issueHistory.findMany({
|
|
11735
11790
|
where: { issueKey },
|
|
11736
11791
|
orderBy: { at: "desc" }
|
|
11737
11792
|
});
|
|
11738
11793
|
}
|
|
11739
|
-
async function create$
|
|
11794
|
+
async function create$3(issueKey, data) {
|
|
11740
11795
|
var _a;
|
|
11741
11796
|
debug$1("history", "create", {
|
|
11742
11797
|
issueKey,
|
|
@@ -11800,7 +11855,7 @@ async function generateMonitoringReport() {
|
|
|
11800
11855
|
});
|
|
11801
11856
|
}
|
|
11802
11857
|
}
|
|
11803
|
-
const history = await findByIssue$
|
|
11858
|
+
const history = await findByIssue$2(issue.key);
|
|
11804
11859
|
const historyForLoop = history.map((h) => {
|
|
11805
11860
|
var _a2;
|
|
11806
11861
|
return {
|
|
@@ -11920,6 +11975,153 @@ function toKebabCase(str) {
|
|
|
11920
11975
|
return str.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
11921
11976
|
}
|
|
11922
11977
|
|
|
11978
|
+
async function getTransitionDecision(context) {
|
|
11979
|
+
var _a;
|
|
11980
|
+
const { issue, history, lastComment, lang = "fr" } = context;
|
|
11981
|
+
debug$1("transition-decider", "Getting transition decision", {
|
|
11982
|
+
issueKey: issue.key,
|
|
11983
|
+
currentColumn: (_a = issue.column) == null ? void 0 : _a.slug,
|
|
11984
|
+
columnsCount: context.columns.length,
|
|
11985
|
+
historyCount: history.length,
|
|
11986
|
+
hasLastComment: !!lastComment
|
|
11987
|
+
});
|
|
11988
|
+
const promptTemplate = await loadDecisionPrompt(lang);
|
|
11989
|
+
if (!promptTemplate) {
|
|
11990
|
+
debug$1("transition-decider", "No prompt template found, defaulting to NEXT");
|
|
11991
|
+
return { action: "NEXT", reason: "No decision prompt template" };
|
|
11992
|
+
}
|
|
11993
|
+
const prompt = buildDecisionPrompt(promptTemplate, context);
|
|
11994
|
+
debug$1("transition-decider", "Calling LLM for decision", {
|
|
11995
|
+
promptLength: prompt.length
|
|
11996
|
+
});
|
|
11997
|
+
const response = await callLLM(prompt);
|
|
11998
|
+
if (!response) {
|
|
11999
|
+
debug$1("transition-decider", "LLM call failed, defaulting to RETRY");
|
|
12000
|
+
return { action: "RETRY", reason: "LLM call failed" };
|
|
12001
|
+
}
|
|
12002
|
+
const decision = parseDecisionResponse(response);
|
|
12003
|
+
debug$1("transition-decider", "Decision made", {
|
|
12004
|
+
action: decision.action,
|
|
12005
|
+
targetColumn: decision.targetColumn,
|
|
12006
|
+
reason: decision.reason
|
|
12007
|
+
});
|
|
12008
|
+
return decision;
|
|
12009
|
+
}
|
|
12010
|
+
async function loadDecisionPrompt(lang) {
|
|
12011
|
+
const promptDir = join$1(process.cwd(), "templates", "prompts");
|
|
12012
|
+
const promptFile = `_transition-decision.${lang}.md`;
|
|
12013
|
+
const promptPath = join$1(promptDir, promptFile);
|
|
12014
|
+
try {
|
|
12015
|
+
const content = await readFile$1(promptPath, "utf-8");
|
|
12016
|
+
return content;
|
|
12017
|
+
} catch (error) {
|
|
12018
|
+
debug$1("transition-decider", "Failed to load prompt template", {
|
|
12019
|
+
path: promptPath,
|
|
12020
|
+
error: String(error)
|
|
12021
|
+
});
|
|
12022
|
+
if (lang !== "fr") {
|
|
12023
|
+
return loadDecisionPrompt("fr");
|
|
12024
|
+
}
|
|
12025
|
+
return null;
|
|
12026
|
+
}
|
|
12027
|
+
}
|
|
12028
|
+
function buildDecisionPrompt(template, context) {
|
|
12029
|
+
var _a, _b;
|
|
12030
|
+
const { issue, columns, history, lastComment } = context;
|
|
12031
|
+
const columnsList = columns.map((c) => `- ${c.slug}`).join("\n");
|
|
12032
|
+
const historyText = history.slice(0, 10).map((h) => {
|
|
12033
|
+
const date = new Date(h.at).toISOString();
|
|
12034
|
+
return `[${date}] ${h.action}: ${h.fromColumn} \u2192 ${h.toColumn}`;
|
|
12035
|
+
}).join("\n");
|
|
12036
|
+
const commentText = lastComment ? `Auteur: ${lastComment.author}
|
|
12037
|
+
Date: ${new Date(lastComment.createdAt).toISOString()}
|
|
12038
|
+
Contenu:
|
|
12039
|
+
${lastComment.content}` : "Aucun commentaire";
|
|
12040
|
+
return template.replace("{key}", issue.key).replace("{title}", issue.title).replace("{currentColumn}", (_b = (_a = issue.column) == null ? void 0 : _a.slug) != null ? _b : "unknown").replace("{columnsList}", columnsList).replace("{history}", historyText || "Aucun historique").replace("{lastComment}", commentText);
|
|
12041
|
+
}
|
|
12042
|
+
async function callLLM(prompt) {
|
|
12043
|
+
var _a, _b;
|
|
12044
|
+
const config = useRuntimeConfig();
|
|
12045
|
+
if (!config.anthropicApiKey) {
|
|
12046
|
+
debug$1("transition-decider", "Anthropic API key not configured");
|
|
12047
|
+
return null;
|
|
12048
|
+
}
|
|
12049
|
+
try {
|
|
12050
|
+
const response = await fetch("https://api.anthropic.com/v1/messages", {
|
|
12051
|
+
method: "POST",
|
|
12052
|
+
headers: {
|
|
12053
|
+
"Content-Type": "application/json",
|
|
12054
|
+
"x-api-key": config.anthropicApiKey,
|
|
12055
|
+
"anthropic-version": "2023-06-01"
|
|
12056
|
+
},
|
|
12057
|
+
body: JSON.stringify({
|
|
12058
|
+
// Use haiku for speed - this is a simple decision task
|
|
12059
|
+
model: "claude-3-5-haiku-20241022",
|
|
12060
|
+
max_tokens: 256,
|
|
12061
|
+
messages: [
|
|
12062
|
+
{
|
|
12063
|
+
role: "user",
|
|
12064
|
+
content: prompt
|
|
12065
|
+
}
|
|
12066
|
+
]
|
|
12067
|
+
})
|
|
12068
|
+
});
|
|
12069
|
+
if (!response.ok) {
|
|
12070
|
+
const errorText = await response.text();
|
|
12071
|
+
debug$1("transition-decider", "Anthropic API error", {
|
|
12072
|
+
status: response.status,
|
|
12073
|
+
error: errorText
|
|
12074
|
+
});
|
|
12075
|
+
return null;
|
|
12076
|
+
}
|
|
12077
|
+
const data = await response.json();
|
|
12078
|
+
const textContent = (_a = data.content) == null ? void 0 : _a.find((c) => c.type === "text");
|
|
12079
|
+
return (_b = textContent == null ? void 0 : textContent.text) != null ? _b : null;
|
|
12080
|
+
} catch (error) {
|
|
12081
|
+
debug$1("transition-decider", "LLM call failed", { error: String(error) });
|
|
12082
|
+
return null;
|
|
12083
|
+
}
|
|
12084
|
+
}
|
|
12085
|
+
function parseDecisionResponse(response) {
|
|
12086
|
+
const trimmed = response.trim();
|
|
12087
|
+
const moveMatch = trimmed.match(/^MOVE\s+(\S+)\s*\[([^\]]+)\]/i);
|
|
12088
|
+
if (moveMatch) {
|
|
12089
|
+
return {
|
|
12090
|
+
action: "MOVE",
|
|
12091
|
+
targetColumn: moveMatch[1],
|
|
12092
|
+
reason: moveMatch[2]
|
|
12093
|
+
};
|
|
12094
|
+
}
|
|
12095
|
+
const actionMatch = trimmed.match(/^(NEXT|RETRY|BLOCKED)\s*\[([^\]]+)\]/i);
|
|
12096
|
+
if (actionMatch) {
|
|
12097
|
+
return {
|
|
12098
|
+
action: actionMatch[1].toUpperCase(),
|
|
12099
|
+
reason: actionMatch[2]
|
|
12100
|
+
};
|
|
12101
|
+
}
|
|
12102
|
+
if (/^NEXT/i.test(trimmed)) {
|
|
12103
|
+
return { action: "NEXT", reason: trimmed };
|
|
12104
|
+
}
|
|
12105
|
+
if (/^RETRY/i.test(trimmed)) {
|
|
12106
|
+
return { action: "RETRY", reason: trimmed };
|
|
12107
|
+
}
|
|
12108
|
+
if (/^BLOCKED/i.test(trimmed)) {
|
|
12109
|
+
return { action: "BLOCKED", reason: trimmed };
|
|
12110
|
+
}
|
|
12111
|
+
if (/^MOVE/i.test(trimmed)) {
|
|
12112
|
+
const columnMatch = trimmed.match(/MOVE\s+(\S+)/i);
|
|
12113
|
+
return {
|
|
12114
|
+
action: "MOVE",
|
|
12115
|
+
targetColumn: columnMatch == null ? void 0 : columnMatch[1],
|
|
12116
|
+
reason: trimmed
|
|
12117
|
+
};
|
|
12118
|
+
}
|
|
12119
|
+
debug$1("transition-decider", "Could not parse response, defaulting to RETRY", {
|
|
12120
|
+
response: trimmed
|
|
12121
|
+
});
|
|
12122
|
+
return { action: "RETRY", reason: `Unparseable response: ${trimmed}` };
|
|
12123
|
+
}
|
|
12124
|
+
|
|
11923
12125
|
const WS_SERVER_URL = process.env.WS_SERVER_URL || "http://localhost:3001";
|
|
11924
12126
|
function broadcast(message, _channel) {
|
|
11925
12127
|
fetch(`${WS_SERVER_URL}/broadcast`, {
|
|
@@ -12288,7 +12490,7 @@ const _30Vdoj9BdcorODZX8NqnLz57uz8l9ngyL5Vaul6aAo = defineNitroPlugin(async (nit
|
|
|
12288
12490
|
const localeSegment = detector.route(event.path);
|
|
12289
12491
|
const pathLocale = isSupportedLocale(localeSegment) && localeSegment || void 0;
|
|
12290
12492
|
const path = (pathLocale && url.pathname.slice(pathLocale.length + 1)) ?? url.pathname;
|
|
12291
|
-
if (!url.pathname.includes("/_i18n/
|
|
12493
|
+
if (!url.pathname.includes("/_i18n/__ad3z6g") && !isExistingNuxtRoute(path)) {
|
|
12292
12494
|
return;
|
|
12293
12495
|
}
|
|
12294
12496
|
const resolved = resolveRedirectPath(event, path, pathLocale, ctx.vueI18nOptions.defaultLocale, detector);
|
|
@@ -12314,7 +12516,7 @@ async function findBySessionId(sessionId) {
|
|
|
12314
12516
|
include: { column: true }
|
|
12315
12517
|
});
|
|
12316
12518
|
}
|
|
12317
|
-
async function findByIssue(issueKey) {
|
|
12519
|
+
async function findByIssue$1(issueKey) {
|
|
12318
12520
|
return prisma.executionLog.findMany({
|
|
12319
12521
|
where: { issueKey },
|
|
12320
12522
|
orderBy: { createdAt: "desc" },
|
|
@@ -12328,7 +12530,7 @@ async function findByIssueAndColumnId(issueKey, columnId) {
|
|
|
12328
12530
|
include: { column: true }
|
|
12329
12531
|
});
|
|
12330
12532
|
}
|
|
12331
|
-
async function create$
|
|
12533
|
+
async function create$2(data) {
|
|
12332
12534
|
var _a, _b, _c;
|
|
12333
12535
|
debug$1("execution-logs", "create", {
|
|
12334
12536
|
sessionId: data.sessionId,
|
|
@@ -12411,77 +12613,52 @@ function toPromptIssue(issue, columnSlug) {
|
|
|
12411
12613
|
};
|
|
12412
12614
|
}
|
|
12413
12615
|
async function moveAndProcessIssueById(key, targetColumnId, options = {}) {
|
|
12414
|
-
debug$1("workflow", "moveAndProcessIssueById
|
|
12415
|
-
|
|
12616
|
+
debug$1("workflow", "=== moveAndProcessIssueById START (move only, no Claude) ===", {
|
|
12617
|
+
key,
|
|
12618
|
+
targetColumnId,
|
|
12619
|
+
options
|
|
12620
|
+
});
|
|
12416
12621
|
const force = options.force || false;
|
|
12417
|
-
const issue = await findByKey(key);
|
|
12418
|
-
if (!issue) {
|
|
12419
|
-
debug$1("workflow", "Issue not found", { key });
|
|
12420
|
-
return { success: false, error: `Issue '${key}' not found` };
|
|
12421
|
-
}
|
|
12422
|
-
debug$1("workflow", "Issue found", { key, currentColumnId: issue.columnId });
|
|
12423
12622
|
const targetColumn = await findById(targetColumnId);
|
|
12424
12623
|
if (!targetColumn) {
|
|
12425
12624
|
debug$1("workflow", "Target column not found", { targetColumnId });
|
|
12426
12625
|
return { success: false, error: `Column with ID '${targetColumnId}' not found` };
|
|
12427
12626
|
}
|
|
12428
|
-
debug$1("workflow", "Target column", { slug: targetColumn.slug, id: targetColumnId });
|
|
12627
|
+
debug$1("workflow", "Target column loaded", { slug: targetColumn.slug, id: targetColumnId });
|
|
12628
|
+
const issue = await findByKey(key);
|
|
12629
|
+
if (!issue) {
|
|
12630
|
+
debug$1("workflow", "Issue not found", { key });
|
|
12631
|
+
return { success: false, error: `Issue '${key}' not found` };
|
|
12632
|
+
}
|
|
12633
|
+
debug$1("workflow", "Issue loaded", { key, currentColumnId: issue.columnId });
|
|
12429
12634
|
if (issue.columnId === targetColumnId) {
|
|
12430
|
-
debug$1("workflow", "
|
|
12635
|
+
debug$1("workflow", "Issue already in target column", {
|
|
12636
|
+
key,
|
|
12637
|
+
columnSlug: targetColumn.slug
|
|
12638
|
+
});
|
|
12431
12639
|
return { success: true, issue, actionExecuted: false };
|
|
12432
12640
|
}
|
|
12433
12641
|
const validation = await validateTransitionById(issue.columnId, targetColumnId, force);
|
|
12434
|
-
debug$1("workflow", "Transition validation", {
|
|
12642
|
+
debug$1("workflow", "Transition validation", {
|
|
12643
|
+
from: issue.columnId,
|
|
12644
|
+
to: targetColumnId,
|
|
12645
|
+
valid: validation.valid,
|
|
12646
|
+
reason: validation.reason
|
|
12647
|
+
});
|
|
12435
12648
|
if (!validation.valid) {
|
|
12436
12649
|
return { success: false, error: validation.reason };
|
|
12437
12650
|
}
|
|
12438
12651
|
const movedIssue = await moveToColumnById(key, targetColumnId);
|
|
12439
|
-
debug$1("workflow", "Issue moved
|
|
12440
|
-
|
|
12441
|
-
|
|
12442
|
-
|
|
12443
|
-
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12444
|
-
}
|
|
12445
|
-
const actionContent = await getColumnPrompt(targetColumn.slug, lang);
|
|
12446
|
-
debug$1("workflow", "Prompt loaded", {
|
|
12447
|
-
columnSlug: targetColumn.slug,
|
|
12448
|
-
promptLength: (actionContent == null ? void 0 : actionContent.length) || 0
|
|
12449
|
-
});
|
|
12450
|
-
if (!actionContent) {
|
|
12451
|
-
debug$1("workflow", "No prompt content, skipping Claude execution");
|
|
12452
|
-
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12453
|
-
}
|
|
12454
|
-
const prompt = buildPrompt(toPromptIssue(movedIssue, targetColumn.slug), actionContent, lang);
|
|
12455
|
-
const sessionId = generateSessionId();
|
|
12456
|
-
debug$1("workflow", "Session created", { sessionId, key, columnSlug: targetColumn.slug });
|
|
12457
|
-
await create$1({
|
|
12458
|
-
sessionId,
|
|
12459
|
-
issueKey: key,
|
|
12460
|
-
columnId: targetColumnId,
|
|
12461
|
-
prompt
|
|
12462
|
-
});
|
|
12463
|
-
debug$1("workflow", "Calling Claude CLI", { key, columnSlug: targetColumn.slug, sessionId });
|
|
12464
|
-
const result = await executeClaudeCLIStream(prompt, key, targetColumn.slug);
|
|
12465
|
-
debug$1("workflow", "Claude CLI returned", { success: result.success, error: result.error });
|
|
12466
|
-
if (result.output) {
|
|
12467
|
-
await updateTerminalLog(sessionId, result.output);
|
|
12468
|
-
}
|
|
12469
|
-
await create$2(key, {
|
|
12470
|
-
action: "started",
|
|
12471
|
-
fromColumn: targetColumn.slug,
|
|
12472
|
-
toColumn: targetColumn.slug,
|
|
12473
|
-
sessionId
|
|
12652
|
+
debug$1("workflow", "Issue moved", {
|
|
12653
|
+
key,
|
|
12654
|
+
newColumnId: targetColumnId,
|
|
12655
|
+
newColumnSlug: targetColumn.slug
|
|
12474
12656
|
});
|
|
12475
|
-
debug$1("workflow", "
|
|
12476
|
-
|
|
12477
|
-
return { success: true, issue: movedIssue, actionExecuted: false, error: result.error };
|
|
12478
|
-
}
|
|
12479
|
-
const updatedIssue = await findByKey(key);
|
|
12480
|
-
debug$1("workflow", "moveAndProcessIssueById completed", { key, actionExecuted: true });
|
|
12481
|
-
return { success: true, issue: updatedIssue || movedIssue, actionExecuted: true };
|
|
12657
|
+
debug$1("workflow", "=== moveAndProcessIssueById END (move only) ===", { key });
|
|
12658
|
+
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12482
12659
|
}
|
|
12483
12660
|
async function moveToNextColumnAndProcess(key, options = {}) {
|
|
12484
|
-
debug$1("workflow", "moveToNextColumnAndProcess called", { key, options });
|
|
12661
|
+
debug$1("workflow", "moveToNextColumnAndProcess called (move only, no Claude)", { key, options });
|
|
12485
12662
|
const issue = await findByKey(key);
|
|
12486
12663
|
if (!issue) {
|
|
12487
12664
|
debug$1("workflow", "Issue not found for next", { key });
|
|
@@ -12591,111 +12768,343 @@ async function findActionableIssue(options = {}) {
|
|
|
12591
12768
|
return sorted[0] || null;
|
|
12592
12769
|
}
|
|
12593
12770
|
async function processIssueInCurrentColumn(key, options = {}) {
|
|
12594
|
-
debug$1("workflow", "processIssueInCurrentColumn
|
|
12771
|
+
debug$1("workflow", "=== processIssueInCurrentColumn START ===", { key, options });
|
|
12595
12772
|
const lang = options.lang || "fr";
|
|
12596
|
-
|
|
12597
|
-
if (!issue) {
|
|
12598
|
-
debug$1("workflow", "Issue not found for current column processing", { key });
|
|
12599
|
-
return { success: false, error: `Issue '${key}' not found` };
|
|
12600
|
-
}
|
|
12601
|
-
const column = await findById(issue.columnId);
|
|
12602
|
-
if (!column) {
|
|
12603
|
-
debug$1("workflow", "Column not found", { key, columnId: issue.columnId });
|
|
12604
|
-
return { success: false, error: `Column not found for issue '${key}'` };
|
|
12605
|
-
}
|
|
12606
|
-
debug$1("workflow", "Processing in current column", { key, columnSlug: column.slug });
|
|
12607
|
-
const actionable = await isActionableColumnById(issue.columnId);
|
|
12608
|
-
debug$1("workflow", "Current column actionable check", { actionable, columnSlug: column.slug });
|
|
12609
|
-
if (!actionable) {
|
|
12610
|
-
return { success: true, issue, actionExecuted: false };
|
|
12611
|
-
}
|
|
12612
|
-
const actionContent = await getColumnPrompt(column.slug, lang);
|
|
12613
|
-
debug$1("workflow", "Prompt loaded for current column", {
|
|
12614
|
-
columnSlug: column.slug,
|
|
12615
|
-
promptLength: (actionContent == null ? void 0 : actionContent.length) || 0
|
|
12616
|
-
});
|
|
12617
|
-
if (!actionContent) {
|
|
12618
|
-
debug$1("workflow", "No prompt content for current column");
|
|
12619
|
-
return { success: true, issue, actionExecuted: false };
|
|
12620
|
-
}
|
|
12621
|
-
const prompt = buildPrompt(toPromptIssue(issue, column.slug), actionContent, lang);
|
|
12622
|
-
const sessionId = generateSessionId();
|
|
12623
|
-
debug$1("workflow", "Session created for current column", {
|
|
12624
|
-
sessionId,
|
|
12773
|
+
debug$1("workflow", "Acquiring Claude lock FIRST (before any state check)", {
|
|
12625
12774
|
key,
|
|
12626
|
-
|
|
12627
|
-
});
|
|
12628
|
-
await create$1({
|
|
12629
|
-
sessionId,
|
|
12630
|
-
issueKey: key,
|
|
12631
|
-
columnId: issue.columnId,
|
|
12632
|
-
prompt
|
|
12775
|
+
explanation: "Le lock est acquis EN PREMIER pour s\xE9rialiser toutes les op\xE9rations"
|
|
12633
12776
|
});
|
|
12777
|
+
await acquireClaudeLock();
|
|
12778
|
+
debug$1("workflow", "Claude lock acquired! We have exclusive access", { key });
|
|
12779
|
+
let processingLockAcquired = false;
|
|
12634
12780
|
try {
|
|
12635
|
-
|
|
12781
|
+
const issue = await findByKey(key);
|
|
12782
|
+
if (!issue) {
|
|
12783
|
+
debug$1("workflow", "Issue not found", { key });
|
|
12784
|
+
return { success: false, error: `Issue '${key}' not found` };
|
|
12785
|
+
}
|
|
12786
|
+
const column = await findById(issue.columnId);
|
|
12787
|
+
if (!column) {
|
|
12788
|
+
debug$1("workflow", "Column not found for issue", { key, columnId: issue.columnId });
|
|
12789
|
+
return { success: false, error: `Column not found for issue '${key}'` };
|
|
12790
|
+
}
|
|
12791
|
+
debug$1("workflow", "Issue and column loaded (under lock)", {
|
|
12792
|
+
key,
|
|
12793
|
+
columnId: issue.columnId,
|
|
12794
|
+
columnSlug: column.slug
|
|
12795
|
+
});
|
|
12796
|
+
const actionable = await isActionableColumnById(issue.columnId);
|
|
12797
|
+
debug$1("workflow", "Column actionable check", {
|
|
12798
|
+
columnSlug: column.slug,
|
|
12799
|
+
actionable,
|
|
12800
|
+
explanation: actionable ? "Colonne de travail \u2192 Claude doit traiter" : "Colonne non-actionable (backlog/done) \u2192 pas de traitement Claude"
|
|
12801
|
+
});
|
|
12802
|
+
if (!actionable) {
|
|
12803
|
+
debug$1("workflow", "=== processIssueInCurrentColumn END (non-actionable) ===", { key });
|
|
12804
|
+
return { success: true, issue, actionExecuted: false };
|
|
12805
|
+
}
|
|
12806
|
+
const actionContent = await getColumnPrompt(column.slug, lang);
|
|
12807
|
+
debug$1("workflow", "Column prompt loaded", {
|
|
12808
|
+
columnSlug: column.slug,
|
|
12809
|
+
promptLength: (actionContent == null ? void 0 : actionContent.length) || 0,
|
|
12810
|
+
hasPrompt: !!actionContent
|
|
12811
|
+
});
|
|
12812
|
+
if (!actionContent) {
|
|
12813
|
+
debug$1("workflow", "No prompt file for this column, skipping Claude", {
|
|
12814
|
+
columnSlug: column.slug
|
|
12815
|
+
});
|
|
12816
|
+
debug$1("workflow", "=== processIssueInCurrentColumn END (no prompt) ===", { key });
|
|
12817
|
+
return { success: true, issue, actionExecuted: false };
|
|
12818
|
+
}
|
|
12819
|
+
const prompt = buildPrompt(toPromptIssue(issue, column.slug), actionContent, lang);
|
|
12820
|
+
debug$1("workflow", "Full prompt built", {
|
|
12821
|
+
key,
|
|
12822
|
+
columnSlug: column.slug,
|
|
12823
|
+
totalLength: prompt.length
|
|
12824
|
+
});
|
|
12825
|
+
const sessionId = generateSessionId();
|
|
12826
|
+
const lockAcquired = await acquireProcessingLock(key, issue.columnId, sessionId);
|
|
12827
|
+
if (!lockAcquired) {
|
|
12828
|
+
debug$1("workflow", "SKIP: Processing lock not acquired (already processing this column)", {
|
|
12829
|
+
key,
|
|
12830
|
+
columnSlug: column.slug,
|
|
12831
|
+
sessionId
|
|
12832
|
+
});
|
|
12833
|
+
return { success: true, issue, actionExecuted: false, skipped: true };
|
|
12834
|
+
}
|
|
12835
|
+
processingLockAcquired = true;
|
|
12836
|
+
debug$1("workflow", "Processing lock acquired, creating ExecutionLog and started entry", {
|
|
12837
|
+
sessionId,
|
|
12838
|
+
key,
|
|
12839
|
+
columnSlug: column.slug
|
|
12840
|
+
});
|
|
12841
|
+
await create$2({
|
|
12842
|
+
sessionId,
|
|
12843
|
+
issueKey: key,
|
|
12844
|
+
columnId: issue.columnId,
|
|
12845
|
+
prompt
|
|
12846
|
+
});
|
|
12847
|
+
debug$1("workflow", "ExecutionLog created", { sessionId });
|
|
12848
|
+
await create$3(key, {
|
|
12849
|
+
action: "started",
|
|
12850
|
+
fromColumn: column.slug,
|
|
12851
|
+
toColumn: column.slug,
|
|
12852
|
+
sessionId
|
|
12853
|
+
});
|
|
12854
|
+
debug$1("workflow", 'History "started" entry created', {
|
|
12855
|
+
sessionId,
|
|
12856
|
+
columnSlug: column.slug
|
|
12857
|
+
});
|
|
12858
|
+
debug$1("workflow", "Executing Claude CLI (lock already held)", {
|
|
12636
12859
|
key,
|
|
12637
12860
|
columnSlug: column.slug,
|
|
12638
12861
|
sessionId
|
|
12639
12862
|
});
|
|
12640
|
-
const result = await
|
|
12641
|
-
debug$1("workflow", "Claude CLI
|
|
12863
|
+
const result = await executeClaudeCLIStreamWithoutLock(prompt, key, column.slug);
|
|
12864
|
+
debug$1("workflow", "Claude CLI execution completed", {
|
|
12642
12865
|
success: result.success,
|
|
12643
|
-
error: result.error
|
|
12866
|
+
error: result.error,
|
|
12867
|
+
duration: result.duration,
|
|
12868
|
+
sessionId
|
|
12644
12869
|
});
|
|
12645
12870
|
if (result.output) {
|
|
12646
12871
|
await updateTerminalLog(sessionId, result.output);
|
|
12872
|
+
debug$1("workflow", "Terminal log saved", { sessionId, outputLength: result.output.length });
|
|
12647
12873
|
}
|
|
12648
|
-
|
|
12649
|
-
|
|
12650
|
-
|
|
12651
|
-
|
|
12874
|
+
if (!result.success) {
|
|
12875
|
+
debug$1("workflow", "=== processIssueInCurrentColumn END (Claude failed) ===", {
|
|
12876
|
+
key,
|
|
12877
|
+
error: result.error
|
|
12878
|
+
});
|
|
12879
|
+
return { success: true, issue, actionExecuted: false, error: result.error };
|
|
12880
|
+
}
|
|
12881
|
+
const updatedIssue = await findByKey(key);
|
|
12882
|
+
debug$1("workflow", "=== processIssueInCurrentColumn END (success) ===", {
|
|
12883
|
+
key,
|
|
12884
|
+
actionExecuted: true,
|
|
12652
12885
|
sessionId
|
|
12653
12886
|
});
|
|
12654
|
-
|
|
12655
|
-
|
|
12656
|
-
|
|
12657
|
-
|
|
12658
|
-
|
|
12887
|
+
return { success: true, issue: updatedIssue || issue, actionExecuted: true };
|
|
12888
|
+
} finally {
|
|
12889
|
+
if (processingLockAcquired) {
|
|
12890
|
+
debug$1("workflow", "Releasing processing lock", { key });
|
|
12891
|
+
await releaseProcessingLock(key);
|
|
12892
|
+
}
|
|
12893
|
+
debug$1("workflow", "Releasing Claude lock", { key });
|
|
12894
|
+
releaseClaudeLock();
|
|
12659
12895
|
}
|
|
12660
12896
|
}
|
|
12661
12897
|
|
|
12898
|
+
async function findByIssue(issueKey) {
|
|
12899
|
+
debug$1("comments", "findByIssue", { issueKey });
|
|
12900
|
+
return prisma.comment.findMany({
|
|
12901
|
+
where: { issueKey },
|
|
12902
|
+
orderBy: { createdAt: "desc" }
|
|
12903
|
+
});
|
|
12904
|
+
}
|
|
12905
|
+
async function create$1(issueKey, data) {
|
|
12906
|
+
const id = String(Date.now());
|
|
12907
|
+
debug$1("comments", "create", { issueKey, author: data.author, contentLength: data.content.length });
|
|
12908
|
+
const comment = await prisma.comment.create({
|
|
12909
|
+
data: {
|
|
12910
|
+
id,
|
|
12911
|
+
issueKey,
|
|
12912
|
+
content: data.content,
|
|
12913
|
+
author: data.author
|
|
12914
|
+
}
|
|
12915
|
+
});
|
|
12916
|
+
debug$1("comments", "created", { id: comment.id, issueKey });
|
|
12917
|
+
return comment;
|
|
12918
|
+
}
|
|
12919
|
+
|
|
12920
|
+
const POLL_INTERVAL_MS = 1e4;
|
|
12921
|
+
const MAX_RETRY_COUNT = 3;
|
|
12662
12922
|
const processingIssues = /* @__PURE__ */ new Set();
|
|
12923
|
+
const retryCounters = /* @__PURE__ */ new Map();
|
|
12663
12924
|
const _m6EoNY0Rbu7thvByPemFl2aPWPH21dK1tArqOtrho = defineNitroPlugin(() => {
|
|
12664
12925
|
initLogger();
|
|
12665
|
-
debug$1("autoprocess", "Plugin started
|
|
12926
|
+
debug$1("autoprocess", "Plugin started with LLM Decider architecture", {
|
|
12927
|
+
pollInterval: POLL_INTERVAL_MS,
|
|
12928
|
+
maxRetries: MAX_RETRY_COUNT
|
|
12929
|
+
});
|
|
12666
12930
|
setInterval(async () => {
|
|
12667
|
-
|
|
12931
|
+
await pollAndProcess();
|
|
12932
|
+
}, POLL_INTERVAL_MS);
|
|
12933
|
+
});
|
|
12934
|
+
async function pollAndProcess() {
|
|
12935
|
+
var _a;
|
|
12936
|
+
try {
|
|
12937
|
+
debug$1("autoprocess", "Polling for actionable issue", {
|
|
12938
|
+
excludeKeys: Array.from(processingIssues)
|
|
12939
|
+
});
|
|
12940
|
+
const issue = await findActionableIssue({
|
|
12941
|
+
excludeKeys: Array.from(processingIssues)
|
|
12942
|
+
});
|
|
12943
|
+
if (!issue) {
|
|
12944
|
+
debug$1("autoprocess", "No actionable issue found");
|
|
12945
|
+
return;
|
|
12946
|
+
}
|
|
12947
|
+
processingIssues.add(issue.key);
|
|
12948
|
+
debug$1("autoprocess", "Found actionable issue", {
|
|
12949
|
+
key: issue.key,
|
|
12950
|
+
column: (_a = issue.column) == null ? void 0 : _a.slug
|
|
12951
|
+
});
|
|
12668
12952
|
try {
|
|
12669
|
-
|
|
12670
|
-
|
|
12953
|
+
await processIssueWithDecider(issue.key);
|
|
12954
|
+
} finally {
|
|
12955
|
+
processingIssues.delete(issue.key);
|
|
12956
|
+
debug$1("autoprocess", "Issue released from processing", { key: issue.key });
|
|
12957
|
+
}
|
|
12958
|
+
} catch (error) {
|
|
12959
|
+
debug$1("autoprocess", "Error in polling loop", { error: String(error) });
|
|
12960
|
+
}
|
|
12961
|
+
}
|
|
12962
|
+
async function processIssueWithDecider(key) {
|
|
12963
|
+
var _a;
|
|
12964
|
+
debug$1("autoprocess", "=== START processIssueWithDecider ===", { key });
|
|
12965
|
+
debug$1("autoprocess", "Step 1: Executing Claude CLI", { key });
|
|
12966
|
+
const result = await processIssueInCurrentColumn(key, { lang: "fr" });
|
|
12967
|
+
if (!result.success) {
|
|
12968
|
+
debug$1("autoprocess", "Claude execution failed", { key, error: result.error });
|
|
12969
|
+
return;
|
|
12970
|
+
}
|
|
12971
|
+
if (!result.actionExecuted) {
|
|
12972
|
+
debug$1("autoprocess", "No action executed (no prompt or non-actionable)", { key });
|
|
12973
|
+
return;
|
|
12974
|
+
}
|
|
12975
|
+
debug$1("autoprocess", "Claude CLI completed", { key });
|
|
12976
|
+
debug$1("autoprocess", "Step 2: Gathering context for LLM decider", { key });
|
|
12977
|
+
const issue = await findByKey(key);
|
|
12978
|
+
if (!issue) {
|
|
12979
|
+
debug$1("autoprocess", "Issue not found after processing", { key });
|
|
12980
|
+
return;
|
|
12981
|
+
}
|
|
12982
|
+
const columns = await findActiveColumns();
|
|
12983
|
+
const history = await findByIssue$2(key);
|
|
12984
|
+
const comments = await findByIssue(key);
|
|
12985
|
+
const lastComment = comments.length > 0 ? comments[0] : null;
|
|
12986
|
+
debug$1("autoprocess", "Context gathered", {
|
|
12987
|
+
key,
|
|
12988
|
+
currentColumn: (_a = issue.column) == null ? void 0 : _a.slug,
|
|
12989
|
+
columnsCount: columns.length,
|
|
12990
|
+
historyCount: history.length,
|
|
12991
|
+
hasLastComment: !!lastComment
|
|
12992
|
+
});
|
|
12993
|
+
debug$1("autoprocess", "Step 3: Calling LLM decider", { key });
|
|
12994
|
+
const decision = await getTransitionDecision({
|
|
12995
|
+
issue,
|
|
12996
|
+
columns,
|
|
12997
|
+
history,
|
|
12998
|
+
lastComment,
|
|
12999
|
+
lang: "fr"
|
|
13000
|
+
});
|
|
13001
|
+
debug$1("autoprocess", "LLM decision received", {
|
|
13002
|
+
key,
|
|
13003
|
+
action: decision.action,
|
|
13004
|
+
targetColumn: decision.targetColumn,
|
|
13005
|
+
reason: decision.reason
|
|
13006
|
+
});
|
|
13007
|
+
debug$1("autoprocess", "Step 4: Executing decision", {
|
|
13008
|
+
key,
|
|
13009
|
+
action: decision.action
|
|
13010
|
+
});
|
|
13011
|
+
await executeDecision(key, issue.columnId, decision);
|
|
13012
|
+
debug$1("autoprocess", "=== END processIssueWithDecider ===", { key });
|
|
13013
|
+
}
|
|
13014
|
+
async function executeDecision(key, currentColumnId, decision) {
|
|
13015
|
+
const retryKey = `${key}:${currentColumnId}`;
|
|
13016
|
+
switch (decision.action) {
|
|
13017
|
+
case "NEXT": {
|
|
13018
|
+
retryCounters.delete(retryKey);
|
|
13019
|
+
const nextColumn = await findNextById(currentColumnId);
|
|
13020
|
+
if (!nextColumn) {
|
|
13021
|
+
debug$1("autoprocess", "NEXT: No next column (already at end)", { key });
|
|
13022
|
+
return;
|
|
13023
|
+
}
|
|
13024
|
+
debug$1("autoprocess", "NEXT: Moving to next column", {
|
|
13025
|
+
key,
|
|
13026
|
+
from: currentColumnId,
|
|
13027
|
+
to: nextColumn.slug,
|
|
13028
|
+
reason: decision.reason
|
|
12671
13029
|
});
|
|
12672
|
-
|
|
12673
|
-
|
|
13030
|
+
await moveToColumnById(key, nextColumn.id);
|
|
13031
|
+
break;
|
|
13032
|
+
}
|
|
13033
|
+
case "RETRY": {
|
|
13034
|
+
const currentRetries = (retryCounters.get(retryKey) || 0) + 1;
|
|
13035
|
+
retryCounters.set(retryKey, currentRetries);
|
|
13036
|
+
debug$1("autoprocess", "RETRY: Staying in current column", {
|
|
13037
|
+
key,
|
|
13038
|
+
retryCount: currentRetries,
|
|
13039
|
+
maxRetries: MAX_RETRY_COUNT,
|
|
13040
|
+
reason: decision.reason
|
|
12674
13041
|
});
|
|
12675
|
-
if (
|
|
12676
|
-
debug$1("autoprocess", "
|
|
13042
|
+
if (currentRetries >= MAX_RETRY_COUNT) {
|
|
13043
|
+
debug$1("autoprocess", "RETRY: Max retries reached, auto-blocking", {
|
|
13044
|
+
key,
|
|
13045
|
+
retryCount: currentRetries
|
|
13046
|
+
});
|
|
13047
|
+
await markAsBlocked(key, `Auto-blocked after ${currentRetries} retries: ${decision.reason}`);
|
|
13048
|
+
retryCounters.delete(retryKey);
|
|
13049
|
+
}
|
|
13050
|
+
break;
|
|
13051
|
+
}
|
|
13052
|
+
case "BLOCKED": {
|
|
13053
|
+
retryCounters.delete(retryKey);
|
|
13054
|
+
debug$1("autoprocess", "BLOCKED: Marking issue as blocked", {
|
|
13055
|
+
key,
|
|
13056
|
+
reason: decision.reason
|
|
13057
|
+
});
|
|
13058
|
+
await markAsBlocked(key, decision.reason);
|
|
13059
|
+
break;
|
|
13060
|
+
}
|
|
13061
|
+
case "MOVE": {
|
|
13062
|
+
retryCounters.delete(retryKey);
|
|
13063
|
+
if (!decision.targetColumn) {
|
|
13064
|
+
debug$1("autoprocess", "MOVE: No target column specified", { key });
|
|
12677
13065
|
return;
|
|
12678
13066
|
}
|
|
12679
|
-
|
|
12680
|
-
|
|
12681
|
-
|
|
12682
|
-
|
|
12683
|
-
|
|
12684
|
-
|
|
12685
|
-
|
|
12686
|
-
debug$1("autoprocess", "Still processing", { key: issue.key });
|
|
12687
|
-
} else if (result.error) {
|
|
12688
|
-
debug$1("autoprocess", "Processing failed", { key: issue.key, error: result.error });
|
|
12689
|
-
}
|
|
12690
|
-
} finally {
|
|
12691
|
-
processingIssues.delete(issue.key);
|
|
12692
|
-
debug$1("autoprocess", "Issue released", { key: issue.key });
|
|
13067
|
+
const targetColumn = await findBySlugInActivePipeline(decision.targetColumn);
|
|
13068
|
+
if (!targetColumn) {
|
|
13069
|
+
debug$1("autoprocess", "MOVE: Target column not found", {
|
|
13070
|
+
key,
|
|
13071
|
+
targetSlug: decision.targetColumn
|
|
13072
|
+
});
|
|
13073
|
+
return;
|
|
12693
13074
|
}
|
|
12694
|
-
|
|
12695
|
-
|
|
13075
|
+
debug$1("autoprocess", "MOVE: Moving to specific column", {
|
|
13076
|
+
key,
|
|
13077
|
+
from: currentColumnId,
|
|
13078
|
+
to: targetColumn.slug,
|
|
13079
|
+
reason: decision.reason
|
|
13080
|
+
});
|
|
13081
|
+
await moveToColumnById(key, targetColumn.id);
|
|
13082
|
+
break;
|
|
12696
13083
|
}
|
|
12697
|
-
}
|
|
12698
|
-
}
|
|
13084
|
+
}
|
|
13085
|
+
}
|
|
13086
|
+
async function markAsBlocked(key, reason) {
|
|
13087
|
+
var _a, _b, _c, _d;
|
|
13088
|
+
debug$1("autoprocess", "Marking issue as blocked", { key, reason });
|
|
13089
|
+
await create$1({
|
|
13090
|
+
issueKey: key,
|
|
13091
|
+
author: "AutoProcess",
|
|
13092
|
+
content: `\u{1F6AB} **Issue bloqu\xE9e par AutoProcess**
|
|
13093
|
+
|
|
13094
|
+
Raison: ${reason}
|
|
13095
|
+
|
|
13096
|
+
Intervention humaine requise.`
|
|
13097
|
+
});
|
|
13098
|
+
const issue = await findByKey(key);
|
|
13099
|
+
if (issue) {
|
|
13100
|
+
await create$3(key, {
|
|
13101
|
+
action: "blocked",
|
|
13102
|
+
fromColumn: (_b = (_a = issue.column) == null ? void 0 : _a.slug) != null ? _b : "unknown",
|
|
13103
|
+
toColumn: (_d = (_c = issue.column) == null ? void 0 : _c.slug) != null ? _d : "unknown"
|
|
13104
|
+
});
|
|
13105
|
+
}
|
|
13106
|
+
debug$1("autoprocess", "Issue marked as blocked", { key });
|
|
13107
|
+
}
|
|
12699
13108
|
|
|
12700
13109
|
const LOCKED_COLUMNS = {
|
|
12701
13110
|
BACKLOG: "backlog",
|
|
@@ -13320,493 +13729,507 @@ _5RvkpiviNMus9JKZsnHvqoz9244BNkJ0VnObYMaX8dM
|
|
|
13320
13729
|
const assets = {
|
|
13321
13730
|
"/_payload.json": {
|
|
13322
13731
|
"type": "application/json;charset=utf-8",
|
|
13323
|
-
"etag": "\"45-
|
|
13324
|
-
"mtime": "2026-01-
|
|
13732
|
+
"etag": "\"45-eDFnLhbD2I45yhI6ynKqu7AwXuM\"",
|
|
13733
|
+
"mtime": "2026-01-06T14:50:44.817Z",
|
|
13325
13734
|
"size": 69,
|
|
13326
13735
|
"path": "../public/_payload.json"
|
|
13327
13736
|
},
|
|
13328
13737
|
"/favicon.svg": {
|
|
13329
13738
|
"type": "image/svg+xml",
|
|
13330
13739
|
"etag": "\"215-HjDVtWnXgjYQ6+j8KMWdIoIvKrs\"",
|
|
13331
|
-
"mtime": "2026-01-
|
|
13740
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13332
13741
|
"size": 533,
|
|
13333
13742
|
"path": "../public/favicon.svg"
|
|
13334
13743
|
},
|
|
13335
13744
|
"/index.html": {
|
|
13336
13745
|
"type": "text/html;charset=utf-8",
|
|
13337
|
-
"etag": "\"c04d-
|
|
13338
|
-
"mtime": "2026-01-
|
|
13746
|
+
"etag": "\"c04d-R3LeOlzfpHn/oCcGZ7RB5969ZQU\"",
|
|
13747
|
+
"mtime": "2026-01-06T14:50:44.809Z",
|
|
13339
13748
|
"size": 49229,
|
|
13340
13749
|
"path": "../public/index.html"
|
|
13341
13750
|
},
|
|
13342
13751
|
"/og-image.svg": {
|
|
13343
13752
|
"type": "image/svg+xml",
|
|
13344
13753
|
"etag": "\"b4c-fhZoPqCM0huQ6gtd05hPWO7BSd8\"",
|
|
13345
|
-
"mtime": "2026-01-
|
|
13754
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13346
13755
|
"size": 2892,
|
|
13347
13756
|
"path": "../public/og-image.svg"
|
|
13348
13757
|
},
|
|
13349
13758
|
"/robots.txt": {
|
|
13350
13759
|
"type": "text/plain; charset=utf-8",
|
|
13351
13760
|
"etag": "\"4c-qUUsbd/u0pG4q6fMxwyWT70X6zE\"",
|
|
13352
|
-
"mtime": "2026-01-
|
|
13761
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13353
13762
|
"size": 76,
|
|
13354
13763
|
"path": "../public/robots.txt"
|
|
13355
13764
|
},
|
|
13356
|
-
"/_nuxt/
|
|
13765
|
+
"/_nuxt/4sw7JTbp.js": {
|
|
13357
13766
|
"type": "text/javascript; charset=utf-8",
|
|
13358
|
-
"etag": "\"
|
|
13359
|
-
"mtime": "2026-01-
|
|
13360
|
-
"size":
|
|
13361
|
-
"path": "../public/_nuxt/
|
|
13362
|
-
},
|
|
13363
|
-
"/_nuxt/BZUmpBmU.js": {
|
|
13364
|
-
"type": "text/javascript; charset=utf-8",
|
|
13365
|
-
"etag": "\"1191-XKjOSpeiwj08QeV6ZoFJjHXrkvs\"",
|
|
13366
|
-
"mtime": "2026-01-06T00:39:38.792Z",
|
|
13367
|
-
"size": 4497,
|
|
13368
|
-
"path": "../public/_nuxt/BZUmpBmU.js"
|
|
13767
|
+
"etag": "\"1a6-zZNwrfkXseAf2ybEK6EBCHaYQL4\"",
|
|
13768
|
+
"mtime": "2026-01-06T14:50:44.886Z",
|
|
13769
|
+
"size": 422,
|
|
13770
|
+
"path": "../public/_nuxt/4sw7JTbp.js"
|
|
13369
13771
|
},
|
|
13370
|
-
"/_nuxt/
|
|
13772
|
+
"/_nuxt/B6pOO9Bz.js": {
|
|
13371
13773
|
"type": "text/javascript; charset=utf-8",
|
|
13372
|
-
"etag": "\"
|
|
13373
|
-
"mtime": "2026-01-
|
|
13374
|
-
"size":
|
|
13375
|
-
"path": "../public/_nuxt/
|
|
13774
|
+
"etag": "\"1b6d-4KTc+wVZiSK4UtPsVlvQWs4s6NU\"",
|
|
13775
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13776
|
+
"size": 7021,
|
|
13777
|
+
"path": "../public/_nuxt/B6pOO9Bz.js"
|
|
13376
13778
|
},
|
|
13377
|
-
"/_nuxt/
|
|
13779
|
+
"/_nuxt/BAAVMorC.js": {
|
|
13378
13780
|
"type": "text/javascript; charset=utf-8",
|
|
13379
|
-
"etag": "\"
|
|
13380
|
-
"mtime": "2026-01-
|
|
13381
|
-
"size":
|
|
13382
|
-
"path": "../public/_nuxt/
|
|
13781
|
+
"etag": "\"9ea-dBuxVB9NkQTiKj4mm6EwFOUEFts\"",
|
|
13782
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13783
|
+
"size": 2538,
|
|
13784
|
+
"path": "../public/_nuxt/BAAVMorC.js"
|
|
13383
13785
|
},
|
|
13384
|
-
"/_nuxt/
|
|
13786
|
+
"/_nuxt/BJ-MtkWm.js": {
|
|
13385
13787
|
"type": "text/javascript; charset=utf-8",
|
|
13386
|
-
"etag": "\"
|
|
13387
|
-
"mtime": "2026-01-
|
|
13388
|
-
"size":
|
|
13389
|
-
"path": "../public/_nuxt/
|
|
13788
|
+
"etag": "\"7fe-uI3UKrX8rBdLsC8V4L0H7dq2AWk\"",
|
|
13789
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13790
|
+
"size": 2046,
|
|
13791
|
+
"path": "../public/_nuxt/BJ-MtkWm.js"
|
|
13390
13792
|
},
|
|
13391
|
-
"/_nuxt/
|
|
13793
|
+
"/_nuxt/BJz8iexS.js": {
|
|
13392
13794
|
"type": "text/javascript; charset=utf-8",
|
|
13393
|
-
"etag": "\"
|
|
13394
|
-
"mtime": "2026-01-
|
|
13395
|
-
"size":
|
|
13396
|
-
"path": "../public/_nuxt/
|
|
13795
|
+
"etag": "\"2830-Sml06yI9iVhVQGcIMmeqVzF76eY\"",
|
|
13796
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13797
|
+
"size": 10288,
|
|
13798
|
+
"path": "../public/_nuxt/BJz8iexS.js"
|
|
13397
13799
|
},
|
|
13398
|
-
"/_nuxt/
|
|
13800
|
+
"/_nuxt/BMCm0zjc.js": {
|
|
13399
13801
|
"type": "text/javascript; charset=utf-8",
|
|
13400
|
-
"etag": "\"
|
|
13401
|
-
"mtime": "2026-01-
|
|
13402
|
-
"size":
|
|
13403
|
-
"path": "../public/_nuxt/
|
|
13802
|
+
"etag": "\"98a-EBatDplkjaJe3PqI1svFVYH6CXE\"",
|
|
13803
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13804
|
+
"size": 2442,
|
|
13805
|
+
"path": "../public/_nuxt/BMCm0zjc.js"
|
|
13404
13806
|
},
|
|
13405
|
-
"/_nuxt/
|
|
13807
|
+
"/_nuxt/BU6KT1Jg.js": {
|
|
13406
13808
|
"type": "text/javascript; charset=utf-8",
|
|
13407
|
-
"etag": "\"12d6-
|
|
13408
|
-
"mtime": "2026-01-
|
|
13809
|
+
"etag": "\"12d6-JD8N0bgFurkoNQeYXg1jEBy5Lao\"",
|
|
13810
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13409
13811
|
"size": 4822,
|
|
13410
|
-
"path": "../public/_nuxt/
|
|
13812
|
+
"path": "../public/_nuxt/BU6KT1Jg.js"
|
|
13411
13813
|
},
|
|
13412
|
-
"/_nuxt/
|
|
13814
|
+
"/_nuxt/BXorvbPI.js": {
|
|
13413
13815
|
"type": "text/javascript; charset=utf-8",
|
|
13414
|
-
"etag": "\"
|
|
13415
|
-
"mtime": "2026-01-
|
|
13416
|
-
"size":
|
|
13417
|
-
"path": "../public/_nuxt/
|
|
13816
|
+
"etag": "\"e59e-GFK8GxR5Wy0sAyEdY0/hnPUtdZA\"",
|
|
13817
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13818
|
+
"size": 58782,
|
|
13819
|
+
"path": "../public/_nuxt/BXorvbPI.js"
|
|
13418
13820
|
},
|
|
13419
|
-
"/_nuxt/
|
|
13821
|
+
"/_nuxt/BdgB0Sk8.js": {
|
|
13420
13822
|
"type": "text/javascript; charset=utf-8",
|
|
13421
|
-
"etag": "\"
|
|
13422
|
-
"mtime": "2026-01-
|
|
13423
|
-
"size":
|
|
13424
|
-
"path": "../public/_nuxt/
|
|
13823
|
+
"etag": "\"87c-5oyJioUJm/uwS0DClUzGFgCIQ0A\"",
|
|
13824
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13825
|
+
"size": 2172,
|
|
13826
|
+
"path": "../public/_nuxt/BdgB0Sk8.js"
|
|
13425
13827
|
},
|
|
13426
|
-
"/_nuxt/
|
|
13828
|
+
"/_nuxt/BiqphZN8.js": {
|
|
13427
13829
|
"type": "text/javascript; charset=utf-8",
|
|
13428
|
-
"etag": "\"
|
|
13429
|
-
"mtime": "2026-01-
|
|
13430
|
-
"size":
|
|
13431
|
-
"path": "../public/_nuxt/
|
|
13830
|
+
"etag": "\"39e-UNADWkIxVA8jRso9MstacOuorHU\"",
|
|
13831
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13832
|
+
"size": 926,
|
|
13833
|
+
"path": "../public/_nuxt/BiqphZN8.js"
|
|
13432
13834
|
},
|
|
13433
|
-
"/_nuxt/
|
|
13835
|
+
"/_nuxt/BmGeRwzG.js": {
|
|
13434
13836
|
"type": "text/javascript; charset=utf-8",
|
|
13435
|
-
"etag": "\"
|
|
13436
|
-
"mtime": "2026-01-
|
|
13437
|
-
"size":
|
|
13438
|
-
"path": "../public/_nuxt/
|
|
13837
|
+
"etag": "\"5b4d-PGjPxJdeDnQIP/b4YM+m2fvMHTg\"",
|
|
13838
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13839
|
+
"size": 23373,
|
|
13840
|
+
"path": "../public/_nuxt/BmGeRwzG.js"
|
|
13439
13841
|
},
|
|
13440
|
-
"/_nuxt/
|
|
13842
|
+
"/_nuxt/Bn2y2u4i.js": {
|
|
13441
13843
|
"type": "text/javascript; charset=utf-8",
|
|
13442
|
-
"etag": "\"
|
|
13443
|
-
"mtime": "2026-01-
|
|
13444
|
-
"size":
|
|
13445
|
-
"path": "../public/_nuxt/
|
|
13844
|
+
"etag": "\"3e8-WHeabnfiP+QTXGdMld4eHAzE7tI\"",
|
|
13845
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13846
|
+
"size": 1000,
|
|
13847
|
+
"path": "../public/_nuxt/Bn2y2u4i.js"
|
|
13446
13848
|
},
|
|
13447
|
-
"/_nuxt/
|
|
13849
|
+
"/_nuxt/BtXQIoy8.js": {
|
|
13448
13850
|
"type": "text/javascript; charset=utf-8",
|
|
13449
|
-
"etag": "\"
|
|
13450
|
-
"mtime": "2026-01-
|
|
13451
|
-
"size":
|
|
13452
|
-
"path": "../public/_nuxt/
|
|
13851
|
+
"etag": "\"6c4-sL2PgE6efkzxhIDwMmy5oy4jtHM\"",
|
|
13852
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13853
|
+
"size": 1732,
|
|
13854
|
+
"path": "../public/_nuxt/BtXQIoy8.js"
|
|
13453
13855
|
},
|
|
13454
|
-
"/_nuxt/
|
|
13856
|
+
"/_nuxt/Byshfb8L.js": {
|
|
13455
13857
|
"type": "text/javascript; charset=utf-8",
|
|
13456
|
-
"etag": "\"
|
|
13457
|
-
"mtime": "2026-01-
|
|
13458
|
-
"size":
|
|
13459
|
-
"path": "../public/_nuxt/
|
|
13858
|
+
"etag": "\"2d8f-Kj382SCH4v5Y496bG1s6lO0x8nI\"",
|
|
13859
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13860
|
+
"size": 11663,
|
|
13861
|
+
"path": "../public/_nuxt/Byshfb8L.js"
|
|
13460
13862
|
},
|
|
13461
|
-
"/_nuxt/
|
|
13863
|
+
"/_nuxt/C0Rlrcoy.js": {
|
|
13462
13864
|
"type": "text/javascript; charset=utf-8",
|
|
13463
|
-
"etag": "\"
|
|
13464
|
-
"mtime": "2026-01-
|
|
13465
|
-
"size":
|
|
13466
|
-
"path": "../public/_nuxt/
|
|
13865
|
+
"etag": "\"9b9c-sPbZRCii4LQs1AA2sMQvCzqiMD4\"",
|
|
13866
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13867
|
+
"size": 39836,
|
|
13868
|
+
"path": "../public/_nuxt/C0Rlrcoy.js"
|
|
13467
13869
|
},
|
|
13468
|
-
"/_nuxt/
|
|
13870
|
+
"/_nuxt/C10TWEVH.js": {
|
|
13469
13871
|
"type": "text/javascript; charset=utf-8",
|
|
13470
|
-
"etag": "\"2ae-
|
|
13471
|
-
"mtime": "2026-01-
|
|
13872
|
+
"etag": "\"2ae-Y7jWb48f6h/0Y3Fwl+3M/0rEDQM\"",
|
|
13873
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13472
13874
|
"size": 686,
|
|
13473
|
-
"path": "../public/_nuxt/
|
|
13875
|
+
"path": "../public/_nuxt/C10TWEVH.js"
|
|
13474
13876
|
},
|
|
13475
|
-
"/_nuxt/
|
|
13877
|
+
"/_nuxt/C2rmiAJ1.js": {
|
|
13476
13878
|
"type": "text/javascript; charset=utf-8",
|
|
13477
|
-
"etag": "\"
|
|
13478
|
-
"mtime": "2026-01-
|
|
13479
|
-
"size":
|
|
13480
|
-
"path": "../public/_nuxt/
|
|
13879
|
+
"etag": "\"1402-VtJMhqcGSm79uhfUkCRKo8jelg0\"",
|
|
13880
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13881
|
+
"size": 5122,
|
|
13882
|
+
"path": "../public/_nuxt/C2rmiAJ1.js"
|
|
13481
13883
|
},
|
|
13482
|
-
"/_nuxt/
|
|
13884
|
+
"/_nuxt/CMIuQb6D.js": {
|
|
13483
13885
|
"type": "text/javascript; charset=utf-8",
|
|
13484
|
-
"etag": "\"
|
|
13485
|
-
"mtime": "2026-01-
|
|
13486
|
-
"size":
|
|
13487
|
-
"path": "../public/_nuxt/
|
|
13886
|
+
"etag": "\"6f9-E0xalMLGhpoIvFzrRNRUcVOZPPQ\"",
|
|
13887
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13888
|
+
"size": 1785,
|
|
13889
|
+
"path": "../public/_nuxt/CMIuQb6D.js"
|
|
13488
13890
|
},
|
|
13489
|
-
"/_nuxt/
|
|
13891
|
+
"/_nuxt/CTbIP459.js": {
|
|
13490
13892
|
"type": "text/javascript; charset=utf-8",
|
|
13491
|
-
"etag": "\"
|
|
13492
|
-
"mtime": "2026-01-
|
|
13493
|
-
"size":
|
|
13494
|
-
"path": "../public/_nuxt/
|
|
13893
|
+
"etag": "\"1f50-bzGM5CjHWzcIvVcPXIRgOApFvVY\"",
|
|
13894
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13895
|
+
"size": 8016,
|
|
13896
|
+
"path": "../public/_nuxt/CTbIP459.js"
|
|
13495
13897
|
},
|
|
13496
|
-
"/_nuxt/
|
|
13898
|
+
"/_nuxt/ClY4a-PO.js": {
|
|
13497
13899
|
"type": "text/javascript; charset=utf-8",
|
|
13498
|
-
"etag": "\"
|
|
13499
|
-
"mtime": "2026-01-
|
|
13500
|
-
"size":
|
|
13501
|
-
"path": "../public/_nuxt/
|
|
13900
|
+
"etag": "\"956-BqhcYUwggrTF5yx381ja69macYw\"",
|
|
13901
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13902
|
+
"size": 2390,
|
|
13903
|
+
"path": "../public/_nuxt/ClY4a-PO.js"
|
|
13502
13904
|
},
|
|
13503
|
-
"/_nuxt/
|
|
13905
|
+
"/_nuxt/CtVoJCjv.js": {
|
|
13504
13906
|
"type": "text/javascript; charset=utf-8",
|
|
13505
|
-
"etag": "\"
|
|
13506
|
-
"mtime": "2026-01-
|
|
13507
|
-
"size":
|
|
13508
|
-
"path": "../public/_nuxt/
|
|
13907
|
+
"etag": "\"60e1-nIA6Jbnn6uAHuDaU32OF/jkPj2w\"",
|
|
13908
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13909
|
+
"size": 24801,
|
|
13910
|
+
"path": "../public/_nuxt/CtVoJCjv.js"
|
|
13911
|
+
},
|
|
13912
|
+
"/_nuxt/D0HHOq4k.js": {
|
|
13913
|
+
"type": "text/javascript; charset=utf-8",
|
|
13914
|
+
"etag": "\"445ad-J95rD/IxPKFNtjS/APb/lFToxe0\"",
|
|
13915
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13916
|
+
"size": 279981,
|
|
13917
|
+
"path": "../public/_nuxt/D0HHOq4k.js"
|
|
13509
13918
|
},
|
|
13510
|
-
"/_nuxt/
|
|
13919
|
+
"/_nuxt/D1JH-OfY.js": {
|
|
13511
13920
|
"type": "text/javascript; charset=utf-8",
|
|
13512
|
-
"etag": "\"13d6-
|
|
13513
|
-
"mtime": "2026-01-
|
|
13921
|
+
"etag": "\"13d6-Y7qMDm6aU0g8xgoyL/+hWbBaHC4\"",
|
|
13922
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13514
13923
|
"size": 5078,
|
|
13515
|
-
"path": "../public/_nuxt/
|
|
13924
|
+
"path": "../public/_nuxt/D1JH-OfY.js"
|
|
13516
13925
|
},
|
|
13517
|
-
"/_nuxt/
|
|
13926
|
+
"/_nuxt/D9fas07B.js": {
|
|
13518
13927
|
"type": "text/javascript; charset=utf-8",
|
|
13519
|
-
"etag": "\"
|
|
13520
|
-
"mtime": "2026-01-
|
|
13928
|
+
"etag": "\"308-754sf8ITAmwt2UZDCRAgAjkWcfU\"",
|
|
13929
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13930
|
+
"size": 776,
|
|
13931
|
+
"path": "../public/_nuxt/D9fas07B.js"
|
|
13932
|
+
},
|
|
13933
|
+
"/_nuxt/DAd8dbng.js": {
|
|
13934
|
+
"type": "text/javascript; charset=utf-8",
|
|
13935
|
+
"etag": "\"26b-yCmekgopV/bvIEFzbT0E/Sj8gtM\"",
|
|
13936
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13521
13937
|
"size": 619,
|
|
13522
|
-
"path": "../public/_nuxt/
|
|
13938
|
+
"path": "../public/_nuxt/DAd8dbng.js"
|
|
13523
13939
|
},
|
|
13524
|
-
"/_nuxt/
|
|
13940
|
+
"/_nuxt/DNMLSDtV.js": {
|
|
13525
13941
|
"type": "text/javascript; charset=utf-8",
|
|
13526
|
-
"etag": "\"
|
|
13527
|
-
"mtime": "2026-01-
|
|
13528
|
-
"size":
|
|
13529
|
-
"path": "../public/_nuxt/
|
|
13942
|
+
"etag": "\"674-qhgSRv4NpNefdWVSL7oaJxo7vpM\"",
|
|
13943
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13944
|
+
"size": 1652,
|
|
13945
|
+
"path": "../public/_nuxt/DNMLSDtV.js"
|
|
13530
13946
|
},
|
|
13531
|
-
"/_nuxt/
|
|
13947
|
+
"/_nuxt/DbZiOpag.js": {
|
|
13532
13948
|
"type": "text/javascript; charset=utf-8",
|
|
13533
|
-
"etag": "\"
|
|
13534
|
-
"mtime": "2026-01-
|
|
13535
|
-
"size":
|
|
13536
|
-
"path": "../public/_nuxt/
|
|
13949
|
+
"etag": "\"6ff5-eX+fPELwPiVIMMoio67ssZ4juB0\"",
|
|
13950
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13951
|
+
"size": 28661,
|
|
13952
|
+
"path": "../public/_nuxt/DbZiOpag.js"
|
|
13537
13953
|
},
|
|
13538
|
-
"/_nuxt/
|
|
13954
|
+
"/_nuxt/DuqM_LGj.js": {
|
|
13539
13955
|
"type": "text/javascript; charset=utf-8",
|
|
13540
|
-
"etag": "\"
|
|
13541
|
-
"mtime": "2026-01-
|
|
13542
|
-
"size":
|
|
13543
|
-
"path": "../public/_nuxt/
|
|
13956
|
+
"etag": "\"2f360-zLn4IQ6Gt6gixWU/fts1XUMPo6o\"",
|
|
13957
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13958
|
+
"size": 193376,
|
|
13959
|
+
"path": "../public/_nuxt/DuqM_LGj.js"
|
|
13960
|
+
},
|
|
13961
|
+
"/_nuxt/DxFm2Qrx.js": {
|
|
13962
|
+
"type": "text/javascript; charset=utf-8",
|
|
13963
|
+
"etag": "\"78d-CMpCytM2qfwFTin0tSvf9UkJso8\"",
|
|
13964
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13965
|
+
"size": 1933,
|
|
13966
|
+
"path": "../public/_nuxt/DxFm2Qrx.js"
|
|
13544
13967
|
},
|
|
13545
13968
|
"/_nuxt/IssueHeader.BKYJE9Ko.css": {
|
|
13546
13969
|
"type": "text/css; charset=utf-8",
|
|
13547
13970
|
"etag": "\"4a1-cNhs83r9kPH36WuqXuq0TmsK7qM\"",
|
|
13548
|
-
"mtime": "2026-01-
|
|
13971
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13549
13972
|
"size": 1185,
|
|
13550
13973
|
"path": "../public/_nuxt/IssueHeader.BKYJE9Ko.css"
|
|
13551
13974
|
},
|
|
13552
13975
|
"/_nuxt/LangSwitcher.DDTh1sNN.css": {
|
|
13553
13976
|
"type": "text/css; charset=utf-8",
|
|
13554
13977
|
"etag": "\"2b5-PbdPNItC3+BzxiC+s9FMK4GX5Hg\"",
|
|
13555
|
-
"mtime": "2026-01-
|
|
13978
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13556
13979
|
"size": 693,
|
|
13557
13980
|
"path": "../public/_nuxt/LangSwitcher.DDTh1sNN.css"
|
|
13558
13981
|
},
|
|
13559
|
-
"/_nuxt/QtPIr4OQ.js": {
|
|
13560
|
-
"type": "text/javascript; charset=utf-8",
|
|
13561
|
-
"etag": "\"39e-SpOTuDR9vyKPqDZss5Ag9gwWXgw\"",
|
|
13562
|
-
"mtime": "2026-01-06T00:39:38.795Z",
|
|
13563
|
-
"size": 926,
|
|
13564
|
-
"path": "../public/_nuxt/QtPIr4OQ.js"
|
|
13565
|
-
},
|
|
13566
|
-
"/_nuxt/TA-NBooC.js": {
|
|
13567
|
-
"type": "text/javascript; charset=utf-8",
|
|
13568
|
-
"etag": "\"bee-tHOlvjerDRUowE2UNaSqNiYCCpY\"",
|
|
13569
|
-
"mtime": "2026-01-06T00:39:38.795Z",
|
|
13570
|
-
"size": 3054,
|
|
13571
|
-
"path": "../public/_nuxt/TA-NBooC.js"
|
|
13572
|
-
},
|
|
13573
|
-
"/_nuxt/TB1o0NrH.js": {
|
|
13574
|
-
"type": "text/javascript; charset=utf-8",
|
|
13575
|
-
"etag": "\"2f360-KUuFiVwIHadqr4dgkKK0ZjarLVM\"",
|
|
13576
|
-
"mtime": "2026-01-06T00:39:38.795Z",
|
|
13577
|
-
"size": 193376,
|
|
13578
|
-
"path": "../public/_nuxt/TB1o0NrH.js"
|
|
13579
|
-
},
|
|
13580
|
-
"/_nuxt/Zzp33YZj.js": {
|
|
13581
|
-
"type": "text/javascript; charset=utf-8",
|
|
13582
|
-
"etag": "\"6f9-oTScnDTkRfVDYOYsWHbfJHVDDPo\"",
|
|
13583
|
-
"mtime": "2026-01-06T00:39:38.795Z",
|
|
13584
|
-
"size": 1785,
|
|
13585
|
-
"path": "../public/_nuxt/Zzp33YZj.js"
|
|
13586
|
-
},
|
|
13587
|
-
"/_nuxt/_HJO0SwU.js": {
|
|
13588
|
-
"type": "text/javascript; charset=utf-8",
|
|
13589
|
-
"etag": "\"6ff5-Nfjl9liyr9jprgdImaOHwDzE/vU\"",
|
|
13590
|
-
"mtime": "2026-01-06T00:39:38.795Z",
|
|
13591
|
-
"size": 28661,
|
|
13592
|
-
"path": "../public/_nuxt/_HJO0SwU.js"
|
|
13593
|
-
},
|
|
13594
13982
|
"/_nuxt/_id_.CYj9w2Sw.css": {
|
|
13595
13983
|
"type": "text/css; charset=utf-8",
|
|
13596
13984
|
"etag": "\"147-FPzJs5si7nasSxfswldrOJcSWQc\"",
|
|
13597
|
-
"mtime": "2026-01-
|
|
13985
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13598
13986
|
"size": 327,
|
|
13599
13987
|
"path": "../public/_nuxt/_id_.CYj9w2Sw.css"
|
|
13600
13988
|
},
|
|
13601
13989
|
"/_nuxt/_name_.OOW3Ydwv.css": {
|
|
13602
13990
|
"type": "text/css; charset=utf-8",
|
|
13603
13991
|
"etag": "\"29e5-SV28LM5C6hUKzP0u2eg0Y7G9EF8\"",
|
|
13604
|
-
"mtime": "2026-01-
|
|
13992
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13605
13993
|
"size": 10725,
|
|
13606
13994
|
"path": "../public/_nuxt/_name_.OOW3Ydwv.css"
|
|
13607
13995
|
},
|
|
13608
13996
|
"/_nuxt/autocreate.-iJ9Pxhm.css": {
|
|
13609
13997
|
"type": "text/css; charset=utf-8",
|
|
13610
13998
|
"etag": "\"ce7-/4F3SaPlMwTbSTDcvVlRCgyWVuo\"",
|
|
13611
|
-
"mtime": "2026-01-
|
|
13999
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13612
14000
|
"size": 3303,
|
|
13613
14001
|
"path": "../public/_nuxt/autocreate.-iJ9Pxhm.css"
|
|
13614
14002
|
},
|
|
14003
|
+
"/_nuxt/c4NRZ8AG.js": {
|
|
14004
|
+
"type": "text/javascript; charset=utf-8",
|
|
14005
|
+
"etag": "\"1191-K9RwO0UOoRGL/cE0T+hlSR0olOw\"",
|
|
14006
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
14007
|
+
"size": 4497,
|
|
14008
|
+
"path": "../public/_nuxt/c4NRZ8AG.js"
|
|
14009
|
+
},
|
|
13615
14010
|
"/_nuxt/changelog.CziWegef.css": {
|
|
13616
14011
|
"type": "text/css; charset=utf-8",
|
|
13617
14012
|
"etag": "\"943-Wd23/oRkMR3dPNniVkYvKH4iYZU\"",
|
|
13618
|
-
"mtime": "2026-01-
|
|
14013
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13619
14014
|
"size": 2371,
|
|
13620
14015
|
"path": "../public/_nuxt/changelog.CziWegef.css"
|
|
13621
14016
|
},
|
|
13622
14017
|
"/_nuxt/comments.BcvjcN1z.css": {
|
|
13623
14018
|
"type": "text/css; charset=utf-8",
|
|
13624
14019
|
"etag": "\"e51-p2ulj0SgvCmnXgDs2Pt+HZCPV68\"",
|
|
13625
|
-
"mtime": "2026-01-
|
|
14020
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13626
14021
|
"size": 3665,
|
|
13627
14022
|
"path": "../public/_nuxt/comments.BcvjcN1z.css"
|
|
13628
14023
|
},
|
|
13629
14024
|
"/_nuxt/default.BaZU2Ea8.css": {
|
|
13630
14025
|
"type": "text/css; charset=utf-8",
|
|
13631
14026
|
"etag": "\"1221-mqSxKm41WTP6Dlwr1Ua3eHfN+Go\"",
|
|
13632
|
-
"mtime": "2026-01-
|
|
14027
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13633
14028
|
"size": 4641,
|
|
13634
14029
|
"path": "../public/_nuxt/default.BaZU2Ea8.css"
|
|
13635
14030
|
},
|
|
13636
14031
|
"/_nuxt/entry.CzscD3wg.css": {
|
|
13637
14032
|
"type": "text/css; charset=utf-8",
|
|
13638
14033
|
"etag": "\"727b-yFKgcl3fUZnijzu9dws3tloA4MM\"",
|
|
13639
|
-
"mtime": "2026-01-
|
|
14034
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13640
14035
|
"size": 29307,
|
|
13641
14036
|
"path": "../public/_nuxt/entry.CzscD3wg.css"
|
|
13642
14037
|
},
|
|
14038
|
+
"/_nuxt/g7WOzF8b.js": {
|
|
14039
|
+
"type": "text/javascript; charset=utf-8",
|
|
14040
|
+
"etag": "\"632-0GCqzcAzUE645Ub3dJJmYW6CQC8\"",
|
|
14041
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
14042
|
+
"size": 1586,
|
|
14043
|
+
"path": "../public/_nuxt/g7WOzF8b.js"
|
|
14044
|
+
},
|
|
13643
14045
|
"/_nuxt/graph.BbpRRv0M.css": {
|
|
13644
14046
|
"type": "text/css; charset=utf-8",
|
|
13645
14047
|
"etag": "\"627-nt3GDdORgjzH4esnRuCHd1lImMY\"",
|
|
13646
|
-
"mtime": "2026-01-
|
|
14048
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13647
14049
|
"size": 1575,
|
|
13648
14050
|
"path": "../public/_nuxt/graph.BbpRRv0M.css"
|
|
13649
14051
|
},
|
|
13650
|
-
"/_nuxt/iHS1jy-1.js": {
|
|
13651
|
-
"type": "text/javascript; charset=utf-8",
|
|
13652
|
-
"etag": "\"674-NgzFLbd7LUlq3F9oucJnOwMMk1Y\"",
|
|
13653
|
-
"mtime": "2026-01-06T00:39:38.796Z",
|
|
13654
|
-
"size": 1652,
|
|
13655
|
-
"path": "../public/_nuxt/iHS1jy-1.js"
|
|
13656
|
-
},
|
|
13657
14052
|
"/_nuxt/index.CDND7dpO.css": {
|
|
13658
14053
|
"type": "text/css; charset=utf-8",
|
|
13659
14054
|
"etag": "\"38fb-KxIT9Gz+y8Wmb70FrCU7cXx7l0o\"",
|
|
13660
|
-
"mtime": "2026-01-
|
|
14055
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13661
14056
|
"size": 14587,
|
|
13662
14057
|
"path": "../public/_nuxt/index.CDND7dpO.css"
|
|
13663
14058
|
},
|
|
13664
14059
|
"/_nuxt/index.COVdL_Kx.css": {
|
|
13665
14060
|
"type": "text/css; charset=utf-8",
|
|
13666
14061
|
"etag": "\"c13-0P9BCBpSGAwz9eBjyp4Y8XCHLE8\"",
|
|
13667
|
-
"mtime": "2026-01-
|
|
14062
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13668
14063
|
"size": 3091,
|
|
13669
14064
|
"path": "../public/_nuxt/index.COVdL_Kx.css"
|
|
13670
14065
|
},
|
|
13671
14066
|
"/_nuxt/index.CTkgb9uR.css": {
|
|
13672
14067
|
"type": "text/css; charset=utf-8",
|
|
13673
14068
|
"etag": "\"1f2b-mxpyAvUZ7skCVAxrZq8J8SDKzUI\"",
|
|
13674
|
-
"mtime": "2026-01-
|
|
14069
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13675
14070
|
"size": 7979,
|
|
13676
14071
|
"path": "../public/_nuxt/index.CTkgb9uR.css"
|
|
13677
14072
|
},
|
|
13678
14073
|
"/_nuxt/index.DkNg_n4G.css": {
|
|
13679
14074
|
"type": "text/css; charset=utf-8",
|
|
13680
14075
|
"etag": "\"136-9XyHqK+b/ydB9ueq6YFewVPmSW4\"",
|
|
13681
|
-
"mtime": "2026-01-
|
|
14076
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13682
14077
|
"size": 310,
|
|
13683
14078
|
"path": "../public/_nuxt/index.DkNg_n4G.css"
|
|
13684
14079
|
},
|
|
13685
|
-
"/_nuxt/
|
|
14080
|
+
"/_nuxt/kNuGsBnB.js": {
|
|
13686
14081
|
"type": "text/javascript; charset=utf-8",
|
|
13687
|
-
"etag": "\"
|
|
13688
|
-
"mtime": "2026-01-
|
|
13689
|
-
"size":
|
|
13690
|
-
"path": "../public/_nuxt/
|
|
14082
|
+
"etag": "\"bee-5NMUQlpVEy5D/RNAAPC3z/VDR6g\"",
|
|
14083
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
14084
|
+
"size": 3054,
|
|
14085
|
+
"path": "../public/_nuxt/kNuGsBnB.js"
|
|
14086
|
+
},
|
|
14087
|
+
"/_nuxt/kZiZQgsI.js": {
|
|
14088
|
+
"type": "text/javascript; charset=utf-8",
|
|
14089
|
+
"etag": "\"c24-WF/8R2+irFEPVTF5tL4QX+lISyk\"",
|
|
14090
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
14091
|
+
"size": 3108,
|
|
14092
|
+
"path": "../public/_nuxt/kZiZQgsI.js"
|
|
13691
14093
|
},
|
|
13692
14094
|
"/_nuxt/kanban.BuPOCLgG.css": {
|
|
13693
14095
|
"type": "text/css; charset=utf-8",
|
|
13694
14096
|
"etag": "\"13c2-QYyqf5fyeEnrqYohP0pQB5QGRLs\"",
|
|
13695
|
-
"mtime": "2026-01-
|
|
14097
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13696
14098
|
"size": 5058,
|
|
13697
14099
|
"path": "../public/_nuxt/kanban.BuPOCLgG.css"
|
|
13698
14100
|
},
|
|
13699
14101
|
"/_nuxt/landing.D5KkDm1b.css": {
|
|
13700
14102
|
"type": "text/css; charset=utf-8",
|
|
13701
14103
|
"etag": "\"393-IP7IMSuvaLw71bURxWfVx2E2Q7I\"",
|
|
13702
|
-
"mtime": "2026-01-
|
|
14104
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13703
14105
|
"size": 915,
|
|
13704
14106
|
"path": "../public/_nuxt/landing.D5KkDm1b.css"
|
|
13705
14107
|
},
|
|
14108
|
+
"/_nuxt/mty-mFWB.js": {
|
|
14109
|
+
"type": "text/javascript; charset=utf-8",
|
|
14110
|
+
"etag": "\"ace-+/NputUsXyCMIA7MdsqVSBWBSqw\"",
|
|
14111
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
14112
|
+
"size": 2766,
|
|
14113
|
+
"path": "../public/_nuxt/mty-mFWB.js"
|
|
14114
|
+
},
|
|
13706
14115
|
"/_nuxt/new.BFERdqdm.css": {
|
|
13707
14116
|
"type": "text/css; charset=utf-8",
|
|
13708
14117
|
"etag": "\"e38-t4k/fVPiMoh//7XTa7VA8WixSHw\"",
|
|
13709
|
-
"mtime": "2026-01-
|
|
14118
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13710
14119
|
"size": 3640,
|
|
13711
14120
|
"path": "../public/_nuxt/new.BFERdqdm.css"
|
|
13712
14121
|
},
|
|
13713
14122
|
"/_nuxt/new.BzaiohPo.css": {
|
|
13714
14123
|
"type": "text/css; charset=utf-8",
|
|
13715
14124
|
"etag": "\"71f-Sf1vS7pI6TH0XyyA8vE15d1t2SE\"",
|
|
13716
|
-
"mtime": "2026-01-
|
|
14125
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13717
14126
|
"size": 1823,
|
|
13718
14127
|
"path": "../public/_nuxt/new.BzaiohPo.css"
|
|
13719
14128
|
},
|
|
13720
14129
|
"/_nuxt/prompt.CbFHjm-L.css": {
|
|
13721
14130
|
"type": "text/css; charset=utf-8",
|
|
13722
14131
|
"etag": "\"55f-faq16m4XDEEcy8d4uHQam/6TmYM\"",
|
|
13723
|
-
"mtime": "2026-01-
|
|
14132
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13724
14133
|
"size": 1375,
|
|
13725
14134
|
"path": "../public/_nuxt/prompt.CbFHjm-L.css"
|
|
13726
14135
|
},
|
|
13727
14136
|
"/_nuxt/prompt.DM4VdPnn.css": {
|
|
13728
14137
|
"type": "text/css; charset=utf-8",
|
|
13729
14138
|
"etag": "\"98d-6SgyexayLVWpB/uiTxJddZCOSNs\"",
|
|
13730
|
-
"mtime": "2026-01-
|
|
14139
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13731
14140
|
"size": 2445,
|
|
13732
14141
|
"path": "../public/_nuxt/prompt.DM4VdPnn.css"
|
|
13733
14142
|
},
|
|
13734
14143
|
"/_nuxt/prompt.DZ0wdOji.css": {
|
|
13735
14144
|
"type": "text/css; charset=utf-8",
|
|
13736
14145
|
"etag": "\"5e1-PqnnCsmh+l9VGfHth+8ur20eqFQ\"",
|
|
13737
|
-
"mtime": "2026-01-
|
|
14146
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13738
14147
|
"size": 1505,
|
|
13739
14148
|
"path": "../public/_nuxt/prompt.DZ0wdOji.css"
|
|
13740
14149
|
},
|
|
13741
14150
|
"/_nuxt/stats.CXzKxZ71.css": {
|
|
13742
14151
|
"type": "text/css; charset=utf-8",
|
|
13743
14152
|
"etag": "\"132a-6OE0a+UmTHJMBzCVvnrjAUSGRT8\"",
|
|
13744
|
-
"mtime": "2026-01-
|
|
14153
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13745
14154
|
"size": 4906,
|
|
13746
14155
|
"path": "../public/_nuxt/stats.CXzKxZ71.css"
|
|
13747
14156
|
},
|
|
13748
14157
|
"/_nuxt/terminal.BL0EPPyU.css": {
|
|
13749
14158
|
"type": "text/css; charset=utf-8",
|
|
13750
14159
|
"etag": "\"79d-a+4LEiyc04ntLd9WPiqFIj0AKbk\"",
|
|
13751
|
-
"mtime": "2026-01-
|
|
14160
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13752
14161
|
"size": 1949,
|
|
13753
14162
|
"path": "../public/_nuxt/terminal.BL0EPPyU.css"
|
|
13754
14163
|
},
|
|
13755
14164
|
"/_nuxt/terminal.D3JI44PH.css": {
|
|
13756
14165
|
"type": "text/css; charset=utf-8",
|
|
13757
14166
|
"etag": "\"7e5-uC0ih9QvDsN9w6zGgrvIQiV6FfE\"",
|
|
13758
|
-
"mtime": "2026-01-
|
|
14167
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13759
14168
|
"size": 2021,
|
|
13760
14169
|
"path": "../public/_nuxt/terminal.D3JI44PH.css"
|
|
13761
14170
|
},
|
|
13762
14171
|
"/_nuxt/terminal.YXDzS4Ng.css": {
|
|
13763
14172
|
"type": "text/css; charset=utf-8",
|
|
13764
14173
|
"etag": "\"763-YHR0QMT8SZXOv2Y07u5ZMWZP7d4\"",
|
|
13765
|
-
"mtime": "2026-01-
|
|
14174
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13766
14175
|
"size": 1891,
|
|
13767
14176
|
"path": "../public/_nuxt/terminal.YXDzS4Ng.css"
|
|
13768
14177
|
},
|
|
13769
14178
|
"/_nuxt/builds/latest.json": {
|
|
13770
14179
|
"type": "application/json",
|
|
13771
|
-
"etag": "\"47-
|
|
13772
|
-
"mtime": "2026-01-
|
|
14180
|
+
"etag": "\"47-gkCJUlo2Gb7FGRjvI4LH7O/1nF0\"",
|
|
14181
|
+
"mtime": "2026-01-06T14:50:44.860Z",
|
|
13773
14182
|
"size": 71,
|
|
13774
14183
|
"path": "../public/_nuxt/builds/latest.json"
|
|
13775
14184
|
},
|
|
14185
|
+
"/fake-features/cocktail-generator/cocktails.js": {
|
|
14186
|
+
"type": "text/javascript; charset=utf-8",
|
|
14187
|
+
"etag": "\"43d6-0s3qVKkQ2tk2pol1LWTezlL6k5A\"",
|
|
14188
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
14189
|
+
"size": 17366,
|
|
14190
|
+
"path": "../public/fake-features/cocktail-generator/cocktails.js"
|
|
14191
|
+
},
|
|
14192
|
+
"/fake-features/cocktail-generator/index.html": {
|
|
14193
|
+
"type": "text/html; charset=utf-8",
|
|
14194
|
+
"etag": "\"4d80-t887lMYESnthojImevzITTCSIGE\"",
|
|
14195
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
14196
|
+
"size": 19840,
|
|
14197
|
+
"path": "../public/fake-features/cocktail-generator/index.html"
|
|
14198
|
+
},
|
|
13776
14199
|
"/media/podcast/en.m4a": {
|
|
13777
14200
|
"type": "audio/mp4",
|
|
13778
14201
|
"etag": "\"1c00c86-MbX28IpSmI393JWCzCz6rlkdYS0\"",
|
|
13779
|
-
"mtime": "2026-01-
|
|
14202
|
+
"mtime": "2026-01-06T14:50:44.944Z",
|
|
13780
14203
|
"size": 29363334,
|
|
13781
14204
|
"path": "../public/media/podcast/en.m4a"
|
|
13782
14205
|
},
|
|
13783
14206
|
"/media/podcast/fr.m4a": {
|
|
13784
14207
|
"type": "audio/mp4",
|
|
13785
14208
|
"etag": "\"1619637-vBY2YSdzI9Lseb+qriWqqUgyYdI\"",
|
|
13786
|
-
"mtime": "2026-01-
|
|
14209
|
+
"mtime": "2026-01-06T14:50:44.937Z",
|
|
13787
14210
|
"size": 23172663,
|
|
13788
14211
|
"path": "../public/media/podcast/fr.m4a"
|
|
13789
14212
|
},
|
|
13790
|
-
"/_i18n/
|
|
14213
|
+
"/_i18n/__ad3z6g/en/messages.json": {
|
|
13791
14214
|
"type": "application/json",
|
|
13792
14215
|
"etag": "\"399f-q0zYHcJCee9l9+ayCAjo0PQBXII\"",
|
|
13793
|
-
"mtime": "2026-01-
|
|
14216
|
+
"mtime": "2026-01-06T14:50:44.824Z",
|
|
13794
14217
|
"size": 14751,
|
|
13795
|
-
"path": "../public/_i18n/
|
|
14218
|
+
"path": "../public/_i18n/__ad3z6g/en/messages.json"
|
|
13796
14219
|
},
|
|
13797
|
-
"/_i18n/
|
|
14220
|
+
"/_i18n/__ad3z6g/fr/messages.json": {
|
|
13798
14221
|
"type": "application/json",
|
|
13799
14222
|
"etag": "\"3f33-0xMEfoD3ECgVH1/tTkqNIQbF0kk\"",
|
|
13800
|
-
"mtime": "2026-01-
|
|
14223
|
+
"mtime": "2026-01-06T14:50:44.824Z",
|
|
13801
14224
|
"size": 16179,
|
|
13802
|
-
"path": "../public/_i18n/
|
|
14225
|
+
"path": "../public/_i18n/__ad3z6g/fr/messages.json"
|
|
13803
14226
|
},
|
|
13804
|
-
"/_nuxt/builds/meta/
|
|
14227
|
+
"/_nuxt/builds/meta/35ace9c2-472c-4755-ae87-74fdb84336dd.json": {
|
|
13805
14228
|
"type": "application/json",
|
|
13806
|
-
"etag": "\"8e-
|
|
13807
|
-
"mtime": "2026-01-
|
|
14229
|
+
"etag": "\"8e-5J0RF5Xz2HGZ6nAfd32V1HyT+u0\"",
|
|
14230
|
+
"mtime": "2026-01-06T14:50:44.855Z",
|
|
13808
14231
|
"size": 142,
|
|
13809
|
-
"path": "../public/_nuxt/builds/meta/
|
|
14232
|
+
"path": "../public/_nuxt/builds/meta/35ace9c2-472c-4755-ae87-74fdb84336dd.json"
|
|
13810
14233
|
}
|
|
13811
14234
|
};
|
|
13812
14235
|
|
|
@@ -14662,5 +15085,5 @@ setupGracefulShutdown(listener, nitroApp);
|
|
|
14662
15085
|
}
|
|
14663
15086
|
const nodeServer = {};
|
|
14664
15087
|
|
|
14665
|
-
export {
|
|
15088
|
+
export { getHealthStatus as $, create$1 as A, findByIssue$2 as B, findByIssue$1 as C, parseChanges as D, findBySessionId as E, moveAndProcessIssueById as F, moveToNextColumnAndProcess as G, findActionableIssue as H, executeClaudePrompt as I, parseClaudeJson as J, findAll$1 as K, create$4 as L, findDraft as M, remove as N, findByNameAndVersion as O, createDraft as P, updateDraft as Q, getLatestVersion as R, activate as S, listVersions as T, finalizeDraft as U, findAll as V, create as W, initStats as X, getStats as Y, isInitialized as Z, generateMonitoringReport as _, sendStream as a, useWebSocketServer as a0, defineWebSocketHandler as a1, unregisterClient as a2, handleMessage as a3, registerClient as a4, buildAssetsURL as a5, appRootTag as a6, appRootAttrs as a7, appSpaLoaderTag as a8, appSpaLoaderAttrs as a9, getRequestHeader as aA, klona as aB, createDefu as aC, isEqual as aD, withoutTrailingSlash as aE, parsePath as aF, parseQuery as aG, setCookie as aH, deleteCookie as aI, withTrailingSlash as aJ, hash$1 as aK, isLockedColumn as aL, isBacklogColumn as aM, isDoneColumn as aN, nodeServer as aO, getResponseStatusText as aa, getResponseStatus as ab, appId as ac, defineRenderHandler as ad, publicAssetsURL as ae, appTeleportTag as af, appTeleportAttrs as ag, appHead as ah, destr as ai, getRouteRules as aj, useNitroApp as ak, hasProtocol as al, isScriptProtocol as am, joinURL as an, withQuery as ao, sanitizeStatusCode as ap, getContext as aq, $fetch$1 as ar, baseURL as as, createHooks as at, executeAsync as au, toRouteMatcher as av, createRouter$1 as aw, defu as ax, getRequestURL as ay, getCookie as az, getRouterParam as b, createError$1 as c, defineEventHandler as d, getColumnPrompt as e, findActiveColumns as f, getQuery as g, getServerConfig as h, debug$1 as i, findByKey as j, update as k, findBySlugInActivePipeline as l, findByIssueAndColumnId as m, notifyIssueUpdate as n, getAncestors as o, prisma as p, archive as q, readBody as r, setResponseHeaders as s, notifyRefresh as t, useRuntimeConfig as u, exists as v, readMultipartFormData as w, setHeader as x, getChildren as y, findByIssue as z };
|
|
14666
15089
|
//# sourceMappingURL=nitro.mjs.map
|