@autocode-cli/autocode 0.22.1 → 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/{D4ccGohf.js → 4sw7JTbp.js} +1 -1
- package/.output/public/_nuxt/{C8zYf6XG.js → B6pOO9Bz.js} +1 -1
- package/.output/public/_nuxt/{DyKP0gIs.js → BAAVMorC.js} +1 -1
- package/.output/public/_nuxt/{BWjtijDJ.js → BJ-MtkWm.js} +1 -1
- package/.output/public/_nuxt/{CHthacwI.js → BJz8iexS.js} +1 -1
- package/.output/public/_nuxt/{CeGEYC5e.js → BMCm0zjc.js} +1 -1
- package/.output/public/_nuxt/{BpbgMwRp.js → BU6KT1Jg.js} +1 -1
- package/.output/public/_nuxt/{BmRTYUr0.js → BXorvbPI.js} +1 -1
- package/.output/public/_nuxt/{DYmLAFAd.js → BdgB0Sk8.js} +1 -1
- package/.output/public/_nuxt/{Gta14GRt.js → BiqphZN8.js} +1 -1
- package/.output/public/_nuxt/{DkaRU1td.js → Bn2y2u4i.js} +1 -1
- package/.output/public/_nuxt/{BbW8KYxr.js → BtXQIoy8.js} +1 -1
- package/.output/public/_nuxt/{DJ2H_vRy.js → Byshfb8L.js} +1 -1
- package/.output/public/_nuxt/{DWbJWuyK.js → C10TWEVH.js} +1 -1
- package/.output/public/_nuxt/{CLj3in4y.js → C2rmiAJ1.js} +1 -1
- package/.output/public/_nuxt/{BtTUkw76.js → CMIuQb6D.js} +1 -1
- package/.output/public/_nuxt/{Dc16Qic7.js → CTbIP459.js} +1 -1
- package/.output/public/_nuxt/{CDadZeec.js → ClY4a-PO.js} +1 -1
- package/.output/public/_nuxt/{SqPShwdq.js → D0HHOq4k.js} +3 -3
- package/.output/public/_nuxt/{CbxAQSTv.js → D1JH-OfY.js} +1 -1
- package/.output/public/_nuxt/{CUEEgayd.js → D9fas07B.js} +1 -1
- package/.output/public/_nuxt/{B6NAkb0r.js → DAd8dbng.js} +1 -1
- package/.output/public/_nuxt/{BmOTLnHc.js → DNMLSDtV.js} +1 -1
- package/.output/public/_nuxt/{CEFhX48l.js → DbZiOpag.js} +1 -1
- package/.output/public/_nuxt/{BbhjDWRO.js → DuqM_LGj.js} +1 -1
- package/.output/public/_nuxt/{CAUTSIgP.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/{DFBRLek2.js → c4NRZ8AG.js} +1 -1
- package/.output/public/_nuxt/{BJ08PNmw.js → g7WOzF8b.js} +1 -1
- package/.output/public/_nuxt/{BFa6Ww2q.js → kNuGsBnB.js} +1 -1
- package/.output/public/_nuxt/{D_NTz30l.js → kZiZQgsI.js} +1 -1
- package/.output/public/_nuxt/{Ckqs5yhG.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 +5 -5
- package/.output/server/chunks/build/usePipeline-ZPHbtOs6.mjs +1 -1
- package/.output/server/chunks/nitro/nitro.mjs +707 -395
- 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/15da26ff-7ede-4b62-b084-0737b9d90fb3.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/{xH8GmHpZ → __ad3z6g}/en/messages.json +0 -0
- /package/.output/public/_i18n/{xH8GmHpZ → __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");
|
|
@@ -11500,7 +11512,7 @@ async function findByKey(key) {
|
|
|
11500
11512
|
}
|
|
11501
11513
|
});
|
|
11502
11514
|
}
|
|
11503
|
-
async function create$
|
|
11515
|
+
async function create$4(data, initialColumnId, initialColumnSlug = "backlog") {
|
|
11504
11516
|
var _a, _b, _c, _d, _e;
|
|
11505
11517
|
debug$1("issues", "create", { title: data.title, parentKey: data.parentKey, initialColumnSlug });
|
|
11506
11518
|
let columnId = initialColumnId;
|
|
@@ -11725,14 +11737,61 @@ async function getAncestors(key) {
|
|
|
11725
11737
|
}
|
|
11726
11738
|
return ancestors;
|
|
11727
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
|
+
}
|
|
11728
11787
|
|
|
11729
|
-
async function findByIssue$
|
|
11788
|
+
async function findByIssue$2(issueKey) {
|
|
11730
11789
|
return prisma.issueHistory.findMany({
|
|
11731
11790
|
where: { issueKey },
|
|
11732
11791
|
orderBy: { at: "desc" }
|
|
11733
11792
|
});
|
|
11734
11793
|
}
|
|
11735
|
-
async function create$
|
|
11794
|
+
async function create$3(issueKey, data) {
|
|
11736
11795
|
var _a;
|
|
11737
11796
|
debug$1("history", "create", {
|
|
11738
11797
|
issueKey,
|
|
@@ -11796,7 +11855,7 @@ async function generateMonitoringReport() {
|
|
|
11796
11855
|
});
|
|
11797
11856
|
}
|
|
11798
11857
|
}
|
|
11799
|
-
const history = await findByIssue$
|
|
11858
|
+
const history = await findByIssue$2(issue.key);
|
|
11800
11859
|
const historyForLoop = history.map((h) => {
|
|
11801
11860
|
var _a2;
|
|
11802
11861
|
return {
|
|
@@ -11916,6 +11975,153 @@ function toKebabCase(str) {
|
|
|
11916
11975
|
return str.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "");
|
|
11917
11976
|
}
|
|
11918
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
|
+
|
|
11919
12125
|
const WS_SERVER_URL = process.env.WS_SERVER_URL || "http://localhost:3001";
|
|
11920
12126
|
function broadcast(message, _channel) {
|
|
11921
12127
|
fetch(`${WS_SERVER_URL}/broadcast`, {
|
|
@@ -12284,7 +12490,7 @@ const _30Vdoj9BdcorODZX8NqnLz57uz8l9ngyL5Vaul6aAo = defineNitroPlugin(async (nit
|
|
|
12284
12490
|
const localeSegment = detector.route(event.path);
|
|
12285
12491
|
const pathLocale = isSupportedLocale(localeSegment) && localeSegment || void 0;
|
|
12286
12492
|
const path = (pathLocale && url.pathname.slice(pathLocale.length + 1)) ?? url.pathname;
|
|
12287
|
-
if (!url.pathname.includes("/_i18n/
|
|
12493
|
+
if (!url.pathname.includes("/_i18n/__ad3z6g") && !isExistingNuxtRoute(path)) {
|
|
12288
12494
|
return;
|
|
12289
12495
|
}
|
|
12290
12496
|
const resolved = resolveRedirectPath(event, path, pathLocale, ctx.vueI18nOptions.defaultLocale, detector);
|
|
@@ -12310,7 +12516,7 @@ async function findBySessionId(sessionId) {
|
|
|
12310
12516
|
include: { column: true }
|
|
12311
12517
|
});
|
|
12312
12518
|
}
|
|
12313
|
-
async function findByIssue(issueKey) {
|
|
12519
|
+
async function findByIssue$1(issueKey) {
|
|
12314
12520
|
return prisma.executionLog.findMany({
|
|
12315
12521
|
where: { issueKey },
|
|
12316
12522
|
orderBy: { createdAt: "desc" },
|
|
@@ -12324,7 +12530,7 @@ async function findByIssueAndColumnId(issueKey, columnId) {
|
|
|
12324
12530
|
include: { column: true }
|
|
12325
12531
|
});
|
|
12326
12532
|
}
|
|
12327
|
-
async function create$
|
|
12533
|
+
async function create$2(data) {
|
|
12328
12534
|
var _a, _b, _c;
|
|
12329
12535
|
debug$1("execution-logs", "create", {
|
|
12330
12536
|
sessionId: data.sessionId,
|
|
@@ -12407,8 +12613,11 @@ function toPromptIssue(issue, columnSlug) {
|
|
|
12407
12613
|
};
|
|
12408
12614
|
}
|
|
12409
12615
|
async function moveAndProcessIssueById(key, targetColumnId, options = {}) {
|
|
12410
|
-
debug$1("workflow", "=== moveAndProcessIssueById START
|
|
12411
|
-
|
|
12616
|
+
debug$1("workflow", "=== moveAndProcessIssueById START (move only, no Claude) ===", {
|
|
12617
|
+
key,
|
|
12618
|
+
targetColumnId,
|
|
12619
|
+
options
|
|
12620
|
+
});
|
|
12412
12621
|
const force = options.force || false;
|
|
12413
12622
|
const targetColumn = await findById(targetColumnId);
|
|
12414
12623
|
if (!targetColumn) {
|
|
@@ -12416,139 +12625,40 @@ async function moveAndProcessIssueById(key, targetColumnId, options = {}) {
|
|
|
12416
12625
|
return { success: false, error: `Column with ID '${targetColumnId}' not found` };
|
|
12417
12626
|
}
|
|
12418
12627
|
debug$1("workflow", "Target column loaded", { slug: targetColumn.slug, id: targetColumnId });
|
|
12419
|
-
|
|
12420
|
-
|
|
12421
|
-
|
|
12422
|
-
|
|
12423
|
-
}
|
|
12424
|
-
|
|
12425
|
-
|
|
12426
|
-
|
|
12427
|
-
targetColumnSlug: targetColumn.slug
|
|
12428
|
-
});
|
|
12429
|
-
try {
|
|
12430
|
-
const issue = await findByKey(key);
|
|
12431
|
-
if (!issue) {
|
|
12432
|
-
debug$1("workflow", "Issue not found, cannot proceed", { key });
|
|
12433
|
-
return { success: false, error: `Issue '${key}' not found` };
|
|
12434
|
-
}
|
|
12435
|
-
debug$1("workflow", "Issue loaded (under lock)", { key, currentColumnId: issue.columnId });
|
|
12436
|
-
if (issue.columnId === targetColumnId) {
|
|
12437
|
-
debug$1("workflow", "Issue already in target column, no action needed", {
|
|
12438
|
-
key,
|
|
12439
|
-
columnSlug: targetColumn.slug,
|
|
12440
|
-
explanation: "L'issue est d\xE9j\xE0 dans la colonne cible, on ne fait rien"
|
|
12441
|
-
});
|
|
12442
|
-
debug$1("workflow", "=== moveAndProcessIssueById END (already in column) ===", { key });
|
|
12443
|
-
return { success: true, issue, actionExecuted: false };
|
|
12444
|
-
}
|
|
12445
|
-
const validation = await validateTransitionById(issue.columnId, targetColumnId, force);
|
|
12446
|
-
debug$1("workflow", "Transition validation result", {
|
|
12447
|
-
from: issue.columnId,
|
|
12448
|
-
to: targetColumnId,
|
|
12449
|
-
valid: validation.valid,
|
|
12450
|
-
reason: validation.reason
|
|
12451
|
-
});
|
|
12452
|
-
if (!validation.valid) {
|
|
12453
|
-
return { success: false, error: validation.reason };
|
|
12454
|
-
}
|
|
12455
|
-
const movedIssue = await moveToColumnById(key, targetColumnId);
|
|
12456
|
-
debug$1("workflow", "Issue moved in DB (under lock)", {
|
|
12457
|
-
key,
|
|
12458
|
-
newColumnId: targetColumnId,
|
|
12459
|
-
newColumnSlug: targetColumn.slug
|
|
12460
|
-
});
|
|
12461
|
-
const actionable = await isActionableColumnById(targetColumnId);
|
|
12462
|
-
debug$1("workflow", "Column actionable check", {
|
|
12463
|
-
columnSlug: targetColumn.slug,
|
|
12464
|
-
actionable,
|
|
12465
|
-
explanation: actionable ? "Colonne de travail \u2192 Claude doit traiter" : "Colonne non-actionable (backlog/done) \u2192 pas de traitement Claude"
|
|
12466
|
-
});
|
|
12467
|
-
if (!actionable) {
|
|
12468
|
-
debug$1("workflow", "=== moveAndProcessIssueById END (non-actionable) ===", { key });
|
|
12469
|
-
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12470
|
-
}
|
|
12471
|
-
const actionContent = await getColumnPrompt(targetColumn.slug, lang);
|
|
12472
|
-
debug$1("workflow", "Column prompt loaded", {
|
|
12473
|
-
columnSlug: targetColumn.slug,
|
|
12474
|
-
promptLength: (actionContent == null ? void 0 : actionContent.length) || 0,
|
|
12475
|
-
hasPrompt: !!actionContent
|
|
12476
|
-
});
|
|
12477
|
-
if (!actionContent) {
|
|
12478
|
-
debug$1("workflow", "No prompt file for this column, skipping Claude", {
|
|
12479
|
-
columnSlug: targetColumn.slug
|
|
12480
|
-
});
|
|
12481
|
-
debug$1("workflow", "=== moveAndProcessIssueById END (no prompt) ===", { key });
|
|
12482
|
-
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12483
|
-
}
|
|
12484
|
-
const prompt = buildPrompt(toPromptIssue(movedIssue, targetColumn.slug), actionContent, lang);
|
|
12485
|
-
debug$1("workflow", "Full prompt built", {
|
|
12486
|
-
key,
|
|
12487
|
-
columnSlug: targetColumn.slug,
|
|
12488
|
-
totalLength: prompt.length
|
|
12489
|
-
});
|
|
12490
|
-
const sessionId = generateSessionId();
|
|
12491
|
-
debug$1("workflow", "Creating ExecutionLog and started entry (verified, lock held)", {
|
|
12492
|
-
sessionId,
|
|
12493
|
-
key,
|
|
12494
|
-
columnSlug: targetColumn.slug,
|
|
12495
|
-
explanation: "On cr\xE9e ces records MAINTENANT car on a v\xE9rifi\xE9 que l'issue est toujours dans la bonne colonne"
|
|
12496
|
-
});
|
|
12497
|
-
await create$1({
|
|
12498
|
-
sessionId,
|
|
12499
|
-
issueKey: key,
|
|
12500
|
-
columnId: targetColumnId,
|
|
12501
|
-
prompt
|
|
12502
|
-
});
|
|
12503
|
-
debug$1("workflow", "ExecutionLog created", { sessionId });
|
|
12504
|
-
await create$2(key, {
|
|
12505
|
-
action: "started",
|
|
12506
|
-
fromColumn: targetColumn.slug,
|
|
12507
|
-
toColumn: targetColumn.slug,
|
|
12508
|
-
sessionId
|
|
12509
|
-
});
|
|
12510
|
-
debug$1("workflow", 'History "started" entry created', {
|
|
12511
|
-
sessionId,
|
|
12512
|
-
columnSlug: targetColumn.slug,
|
|
12513
|
-
explanation: "started = ex\xE9cution Claude initi\xE9e pour cette colonne"
|
|
12514
|
-
});
|
|
12515
|
-
debug$1("workflow", "Executing Claude CLI (lock already held)", {
|
|
12516
|
-
key,
|
|
12517
|
-
columnSlug: targetColumn.slug,
|
|
12518
|
-
sessionId
|
|
12519
|
-
});
|
|
12520
|
-
const result = await executeClaudeCLIStreamWithoutLock(prompt, key, targetColumn.slug);
|
|
12521
|
-
debug$1("workflow", "Claude CLI execution completed", {
|
|
12522
|
-
success: result.success,
|
|
12523
|
-
error: result.error,
|
|
12524
|
-
duration: result.duration,
|
|
12525
|
-
sessionId
|
|
12526
|
-
});
|
|
12527
|
-
if (result.output) {
|
|
12528
|
-
await updateTerminalLog(sessionId, result.output);
|
|
12529
|
-
debug$1("workflow", "Terminal log saved", { sessionId, outputLength: result.output.length });
|
|
12530
|
-
}
|
|
12531
|
-
if (!result.success) {
|
|
12532
|
-
debug$1("workflow", "=== moveAndProcessIssueById END (Claude failed) ===", {
|
|
12533
|
-
key,
|
|
12534
|
-
error: result.error
|
|
12535
|
-
});
|
|
12536
|
-
return { success: true, issue: movedIssue, actionExecuted: false, error: result.error };
|
|
12537
|
-
}
|
|
12538
|
-
const updatedIssue = await findByKey(key);
|
|
12539
|
-
debug$1("workflow", "=== moveAndProcessIssueById END (success) ===", {
|
|
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 });
|
|
12634
|
+
if (issue.columnId === targetColumnId) {
|
|
12635
|
+
debug$1("workflow", "Issue already in target column", {
|
|
12540
12636
|
key,
|
|
12541
|
-
|
|
12542
|
-
sessionId
|
|
12637
|
+
columnSlug: targetColumn.slug
|
|
12543
12638
|
});
|
|
12544
|
-
return { success: true, issue
|
|
12545
|
-
}
|
|
12546
|
-
|
|
12547
|
-
|
|
12639
|
+
return { success: true, issue, actionExecuted: false };
|
|
12640
|
+
}
|
|
12641
|
+
const validation = await validateTransitionById(issue.columnId, targetColumnId, force);
|
|
12642
|
+
debug$1("workflow", "Transition validation", {
|
|
12643
|
+
from: issue.columnId,
|
|
12644
|
+
to: targetColumnId,
|
|
12645
|
+
valid: validation.valid,
|
|
12646
|
+
reason: validation.reason
|
|
12647
|
+
});
|
|
12648
|
+
if (!validation.valid) {
|
|
12649
|
+
return { success: false, error: validation.reason };
|
|
12548
12650
|
}
|
|
12651
|
+
const movedIssue = await moveToColumnById(key, targetColumnId);
|
|
12652
|
+
debug$1("workflow", "Issue moved", {
|
|
12653
|
+
key,
|
|
12654
|
+
newColumnId: targetColumnId,
|
|
12655
|
+
newColumnSlug: targetColumn.slug
|
|
12656
|
+
});
|
|
12657
|
+
debug$1("workflow", "=== moveAndProcessIssueById END (move only) ===", { key });
|
|
12658
|
+
return { success: true, issue: movedIssue, actionExecuted: false };
|
|
12549
12659
|
}
|
|
12550
12660
|
async function moveToNextColumnAndProcess(key, options = {}) {
|
|
12551
|
-
debug$1("workflow", "moveToNextColumnAndProcess called", { key, options });
|
|
12661
|
+
debug$1("workflow", "moveToNextColumnAndProcess called (move only, no Claude)", { key, options });
|
|
12552
12662
|
const issue = await findByKey(key);
|
|
12553
12663
|
if (!issue) {
|
|
12554
12664
|
debug$1("workflow", "Issue not found for next", { key });
|
|
@@ -12666,6 +12776,7 @@ async function processIssueInCurrentColumn(key, options = {}) {
|
|
|
12666
12776
|
});
|
|
12667
12777
|
await acquireClaudeLock();
|
|
12668
12778
|
debug$1("workflow", "Claude lock acquired! We have exclusive access", { key });
|
|
12779
|
+
let processingLockAcquired = false;
|
|
12669
12780
|
try {
|
|
12670
12781
|
const issue = await findByKey(key);
|
|
12671
12782
|
if (!issue) {
|
|
@@ -12712,19 +12823,29 @@ async function processIssueInCurrentColumn(key, options = {}) {
|
|
|
12712
12823
|
totalLength: prompt.length
|
|
12713
12824
|
});
|
|
12714
12825
|
const sessionId = generateSessionId();
|
|
12715
|
-
|
|
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", {
|
|
12716
12837
|
sessionId,
|
|
12717
12838
|
key,
|
|
12718
12839
|
columnSlug: column.slug
|
|
12719
12840
|
});
|
|
12720
|
-
await create$
|
|
12841
|
+
await create$2({
|
|
12721
12842
|
sessionId,
|
|
12722
12843
|
issueKey: key,
|
|
12723
12844
|
columnId: issue.columnId,
|
|
12724
12845
|
prompt
|
|
12725
12846
|
});
|
|
12726
12847
|
debug$1("workflow", "ExecutionLog created", { sessionId });
|
|
12727
|
-
await create$
|
|
12848
|
+
await create$3(key, {
|
|
12728
12849
|
action: "started",
|
|
12729
12850
|
fromColumn: column.slug,
|
|
12730
12851
|
toColumn: column.slug,
|
|
@@ -12765,48 +12886,225 @@ async function processIssueInCurrentColumn(key, options = {}) {
|
|
|
12765
12886
|
});
|
|
12766
12887
|
return { success: true, issue: updatedIssue || issue, actionExecuted: true };
|
|
12767
12888
|
} finally {
|
|
12889
|
+
if (processingLockAcquired) {
|
|
12890
|
+
debug$1("workflow", "Releasing processing lock", { key });
|
|
12891
|
+
await releaseProcessingLock(key);
|
|
12892
|
+
}
|
|
12768
12893
|
debug$1("workflow", "Releasing Claude lock", { key });
|
|
12769
12894
|
releaseClaudeLock();
|
|
12770
12895
|
}
|
|
12771
12896
|
}
|
|
12772
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;
|
|
12773
12922
|
const processingIssues = /* @__PURE__ */ new Set();
|
|
12923
|
+
const retryCounters = /* @__PURE__ */ new Map();
|
|
12774
12924
|
const _m6EoNY0Rbu7thvByPemFl2aPWPH21dK1tArqOtrho = defineNitroPlugin(() => {
|
|
12775
12925
|
initLogger();
|
|
12776
|
-
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
|
+
});
|
|
12777
12930
|
setInterval(async () => {
|
|
12778
|
-
|
|
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
|
+
});
|
|
12779
12952
|
try {
|
|
12780
|
-
|
|
12781
|
-
|
|
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
|
|
12782
13029
|
});
|
|
12783
|
-
|
|
12784
|
-
|
|
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
|
|
12785
13041
|
});
|
|
12786
|
-
if (
|
|
12787
|
-
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 });
|
|
12788
13065
|
return;
|
|
12789
13066
|
}
|
|
12790
|
-
|
|
12791
|
-
|
|
12792
|
-
|
|
12793
|
-
|
|
12794
|
-
|
|
12795
|
-
|
|
12796
|
-
|
|
12797
|
-
debug$1("autoprocess", "Still processing", { key: issue.key });
|
|
12798
|
-
} else if (result.error) {
|
|
12799
|
-
debug$1("autoprocess", "Processing failed", { key: issue.key, error: result.error });
|
|
12800
|
-
}
|
|
12801
|
-
} finally {
|
|
12802
|
-
processingIssues.delete(issue.key);
|
|
12803
|
-
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;
|
|
12804
13074
|
}
|
|
12805
|
-
|
|
12806
|
-
|
|
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;
|
|
12807
13083
|
}
|
|
12808
|
-
}
|
|
12809
|
-
}
|
|
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
|
+
}
|
|
12810
13108
|
|
|
12811
13109
|
const LOCKED_COLUMNS = {
|
|
12812
13110
|
BACKLOG: "backlog",
|
|
@@ -13431,493 +13729,507 @@ _5RvkpiviNMus9JKZsnHvqoz9244BNkJ0VnObYMaX8dM
|
|
|
13431
13729
|
const assets = {
|
|
13432
13730
|
"/_payload.json": {
|
|
13433
13731
|
"type": "application/json;charset=utf-8",
|
|
13434
|
-
"etag": "\"45-
|
|
13435
|
-
"mtime": "2026-01-
|
|
13732
|
+
"etag": "\"45-eDFnLhbD2I45yhI6ynKqu7AwXuM\"",
|
|
13733
|
+
"mtime": "2026-01-06T14:50:44.817Z",
|
|
13436
13734
|
"size": 69,
|
|
13437
13735
|
"path": "../public/_payload.json"
|
|
13438
13736
|
},
|
|
13439
13737
|
"/favicon.svg": {
|
|
13440
13738
|
"type": "image/svg+xml",
|
|
13441
13739
|
"etag": "\"215-HjDVtWnXgjYQ6+j8KMWdIoIvKrs\"",
|
|
13442
|
-
"mtime": "2026-01-
|
|
13740
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13443
13741
|
"size": 533,
|
|
13444
13742
|
"path": "../public/favicon.svg"
|
|
13445
13743
|
},
|
|
13446
13744
|
"/index.html": {
|
|
13447
13745
|
"type": "text/html;charset=utf-8",
|
|
13448
|
-
"etag": "\"c04d-
|
|
13449
|
-
"mtime": "2026-01-
|
|
13746
|
+
"etag": "\"c04d-R3LeOlzfpHn/oCcGZ7RB5969ZQU\"",
|
|
13747
|
+
"mtime": "2026-01-06T14:50:44.809Z",
|
|
13450
13748
|
"size": 49229,
|
|
13451
13749
|
"path": "../public/index.html"
|
|
13452
13750
|
},
|
|
13453
13751
|
"/og-image.svg": {
|
|
13454
13752
|
"type": "image/svg+xml",
|
|
13455
13753
|
"etag": "\"b4c-fhZoPqCM0huQ6gtd05hPWO7BSd8\"",
|
|
13456
|
-
"mtime": "2026-01-
|
|
13754
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13457
13755
|
"size": 2892,
|
|
13458
13756
|
"path": "../public/og-image.svg"
|
|
13459
13757
|
},
|
|
13460
13758
|
"/robots.txt": {
|
|
13461
13759
|
"type": "text/plain; charset=utf-8",
|
|
13462
13760
|
"etag": "\"4c-qUUsbd/u0pG4q6fMxwyWT70X6zE\"",
|
|
13463
|
-
"mtime": "2026-01-
|
|
13761
|
+
"mtime": "2026-01-06T14:50:44.902Z",
|
|
13464
13762
|
"size": 76,
|
|
13465
13763
|
"path": "../public/robots.txt"
|
|
13466
13764
|
},
|
|
13467
|
-
"/_nuxt/
|
|
13765
|
+
"/_nuxt/4sw7JTbp.js": {
|
|
13468
13766
|
"type": "text/javascript; charset=utf-8",
|
|
13469
|
-
"etag": "\"
|
|
13470
|
-
"mtime": "2026-01-
|
|
13471
|
-
"size":
|
|
13472
|
-
"path": "../public/_nuxt/
|
|
13767
|
+
"etag": "\"1a6-zZNwrfkXseAf2ybEK6EBCHaYQL4\"",
|
|
13768
|
+
"mtime": "2026-01-06T14:50:44.886Z",
|
|
13769
|
+
"size": 422,
|
|
13770
|
+
"path": "../public/_nuxt/4sw7JTbp.js"
|
|
13473
13771
|
},
|
|
13474
|
-
"/_nuxt/
|
|
13772
|
+
"/_nuxt/B6pOO9Bz.js": {
|
|
13475
13773
|
"type": "text/javascript; charset=utf-8",
|
|
13476
|
-
"etag": "\"
|
|
13477
|
-
"mtime": "2026-01-
|
|
13478
|
-
"size":
|
|
13479
|
-
"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"
|
|
13480
13778
|
},
|
|
13481
|
-
"/_nuxt/
|
|
13779
|
+
"/_nuxt/BAAVMorC.js": {
|
|
13482
13780
|
"type": "text/javascript; charset=utf-8",
|
|
13483
|
-
"etag": "\"
|
|
13484
|
-
"mtime": "2026-01-
|
|
13485
|
-
"size":
|
|
13486
|
-
"path": "../public/_nuxt/
|
|
13781
|
+
"etag": "\"9ea-dBuxVB9NkQTiKj4mm6EwFOUEFts\"",
|
|
13782
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13783
|
+
"size": 2538,
|
|
13784
|
+
"path": "../public/_nuxt/BAAVMorC.js"
|
|
13487
13785
|
},
|
|
13488
|
-
"/_nuxt/
|
|
13786
|
+
"/_nuxt/BJ-MtkWm.js": {
|
|
13489
13787
|
"type": "text/javascript; charset=utf-8",
|
|
13490
|
-
"etag": "\"7fe-
|
|
13491
|
-
"mtime": "2026-01-
|
|
13788
|
+
"etag": "\"7fe-uI3UKrX8rBdLsC8V4L0H7dq2AWk\"",
|
|
13789
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13492
13790
|
"size": 2046,
|
|
13493
|
-
"path": "../public/_nuxt/
|
|
13791
|
+
"path": "../public/_nuxt/BJ-MtkWm.js"
|
|
13494
13792
|
},
|
|
13495
|
-
"/_nuxt/
|
|
13793
|
+
"/_nuxt/BJz8iexS.js": {
|
|
13496
13794
|
"type": "text/javascript; charset=utf-8",
|
|
13497
|
-
"etag": "\"
|
|
13498
|
-
"mtime": "2026-01-
|
|
13499
|
-
"size":
|
|
13500
|
-
"path": "../public/_nuxt/
|
|
13501
|
-
},
|
|
13502
|
-
"/_nuxt/BbhjDWRO.js": {
|
|
13503
|
-
"type": "text/javascript; charset=utf-8",
|
|
13504
|
-
"etag": "\"2f360-sC1nfeGj85zsnqNpBs234ANAPf8\"",
|
|
13505
|
-
"mtime": "2026-01-06T11:43:30.255Z",
|
|
13506
|
-
"size": 193376,
|
|
13507
|
-
"path": "../public/_nuxt/BbhjDWRO.js"
|
|
13795
|
+
"etag": "\"2830-Sml06yI9iVhVQGcIMmeqVzF76eY\"",
|
|
13796
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13797
|
+
"size": 10288,
|
|
13798
|
+
"path": "../public/_nuxt/BJz8iexS.js"
|
|
13508
13799
|
},
|
|
13509
|
-
"/_nuxt/
|
|
13800
|
+
"/_nuxt/BMCm0zjc.js": {
|
|
13510
13801
|
"type": "text/javascript; charset=utf-8",
|
|
13511
|
-
"etag": "\"
|
|
13512
|
-
"mtime": "2026-01-
|
|
13513
|
-
"size":
|
|
13514
|
-
"path": "../public/_nuxt/
|
|
13802
|
+
"etag": "\"98a-EBatDplkjaJe3PqI1svFVYH6CXE\"",
|
|
13803
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13804
|
+
"size": 2442,
|
|
13805
|
+
"path": "../public/_nuxt/BMCm0zjc.js"
|
|
13515
13806
|
},
|
|
13516
|
-
"/_nuxt/
|
|
13807
|
+
"/_nuxt/BU6KT1Jg.js": {
|
|
13517
13808
|
"type": "text/javascript; charset=utf-8",
|
|
13518
|
-
"etag": "\"
|
|
13519
|
-
"mtime": "2026-01-
|
|
13520
|
-
"size":
|
|
13521
|
-
"path": "../public/_nuxt/
|
|
13809
|
+
"etag": "\"12d6-JD8N0bgFurkoNQeYXg1jEBy5Lao\"",
|
|
13810
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13811
|
+
"size": 4822,
|
|
13812
|
+
"path": "../public/_nuxt/BU6KT1Jg.js"
|
|
13522
13813
|
},
|
|
13523
|
-
"/_nuxt/
|
|
13814
|
+
"/_nuxt/BXorvbPI.js": {
|
|
13524
13815
|
"type": "text/javascript; charset=utf-8",
|
|
13525
|
-
"etag": "\"e59e-
|
|
13526
|
-
"mtime": "2026-01-
|
|
13816
|
+
"etag": "\"e59e-GFK8GxR5Wy0sAyEdY0/hnPUtdZA\"",
|
|
13817
|
+
"mtime": "2026-01-06T14:50:44.887Z",
|
|
13527
13818
|
"size": 58782,
|
|
13528
|
-
"path": "../public/_nuxt/
|
|
13819
|
+
"path": "../public/_nuxt/BXorvbPI.js"
|
|
13529
13820
|
},
|
|
13530
|
-
"/_nuxt/
|
|
13821
|
+
"/_nuxt/BdgB0Sk8.js": {
|
|
13531
13822
|
"type": "text/javascript; charset=utf-8",
|
|
13532
|
-
"etag": "\"
|
|
13533
|
-
"mtime": "2026-01-
|
|
13534
|
-
"size":
|
|
13535
|
-
"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"
|
|
13536
13827
|
},
|
|
13537
|
-
"/_nuxt/
|
|
13828
|
+
"/_nuxt/BiqphZN8.js": {
|
|
13538
13829
|
"type": "text/javascript; charset=utf-8",
|
|
13539
|
-
"etag": "\"
|
|
13540
|
-
"mtime": "2026-01-
|
|
13541
|
-
"size":
|
|
13542
|
-
"path": "../public/_nuxt/
|
|
13830
|
+
"etag": "\"39e-UNADWkIxVA8jRso9MstacOuorHU\"",
|
|
13831
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13832
|
+
"size": 926,
|
|
13833
|
+
"path": "../public/_nuxt/BiqphZN8.js"
|
|
13543
13834
|
},
|
|
13544
|
-
"/_nuxt/
|
|
13835
|
+
"/_nuxt/BmGeRwzG.js": {
|
|
13545
13836
|
"type": "text/javascript; charset=utf-8",
|
|
13546
|
-
"etag": "\"
|
|
13547
|
-
"mtime": "2026-01-
|
|
13548
|
-
"size":
|
|
13549
|
-
"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"
|
|
13550
13841
|
},
|
|
13551
|
-
"/_nuxt/
|
|
13842
|
+
"/_nuxt/Bn2y2u4i.js": {
|
|
13552
13843
|
"type": "text/javascript; charset=utf-8",
|
|
13553
|
-
"etag": "\"
|
|
13554
|
-
"mtime": "2026-01-
|
|
13555
|
-
"size":
|
|
13556
|
-
"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"
|
|
13557
13848
|
},
|
|
13558
|
-
"/_nuxt/
|
|
13849
|
+
"/_nuxt/BtXQIoy8.js": {
|
|
13559
13850
|
"type": "text/javascript; charset=utf-8",
|
|
13560
|
-
"etag": "\"
|
|
13561
|
-
"mtime": "2026-01-
|
|
13562
|
-
"size":
|
|
13563
|
-
"path": "../public/_nuxt/
|
|
13851
|
+
"etag": "\"6c4-sL2PgE6efkzxhIDwMmy5oy4jtHM\"",
|
|
13852
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13853
|
+
"size": 1732,
|
|
13854
|
+
"path": "../public/_nuxt/BtXQIoy8.js"
|
|
13564
13855
|
},
|
|
13565
|
-
"/_nuxt/
|
|
13856
|
+
"/_nuxt/Byshfb8L.js": {
|
|
13566
13857
|
"type": "text/javascript; charset=utf-8",
|
|
13567
|
-
"etag": "\"
|
|
13568
|
-
"mtime": "2026-01-
|
|
13569
|
-
"size":
|
|
13570
|
-
"path": "../public/_nuxt/
|
|
13858
|
+
"etag": "\"2d8f-Kj382SCH4v5Y496bG1s6lO0x8nI\"",
|
|
13859
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13860
|
+
"size": 11663,
|
|
13861
|
+
"path": "../public/_nuxt/Byshfb8L.js"
|
|
13571
13862
|
},
|
|
13572
|
-
"/_nuxt/
|
|
13863
|
+
"/_nuxt/C0Rlrcoy.js": {
|
|
13573
13864
|
"type": "text/javascript; charset=utf-8",
|
|
13574
|
-
"etag": "\"
|
|
13575
|
-
"mtime": "2026-01-
|
|
13576
|
-
"size":
|
|
13577
|
-
"path": "../public/_nuxt/
|
|
13865
|
+
"etag": "\"9b9c-sPbZRCii4LQs1AA2sMQvCzqiMD4\"",
|
|
13866
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13867
|
+
"size": 39836,
|
|
13868
|
+
"path": "../public/_nuxt/C0Rlrcoy.js"
|
|
13578
13869
|
},
|
|
13579
|
-
"/_nuxt/
|
|
13870
|
+
"/_nuxt/C10TWEVH.js": {
|
|
13580
13871
|
"type": "text/javascript; charset=utf-8",
|
|
13581
|
-
"etag": "\"
|
|
13582
|
-
"mtime": "2026-01-
|
|
13583
|
-
"size":
|
|
13584
|
-
"path": "../public/_nuxt/
|
|
13872
|
+
"etag": "\"2ae-Y7jWb48f6h/0Y3Fwl+3M/0rEDQM\"",
|
|
13873
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13874
|
+
"size": 686,
|
|
13875
|
+
"path": "../public/_nuxt/C10TWEVH.js"
|
|
13585
13876
|
},
|
|
13586
|
-
"/_nuxt/
|
|
13877
|
+
"/_nuxt/C2rmiAJ1.js": {
|
|
13587
13878
|
"type": "text/javascript; charset=utf-8",
|
|
13588
|
-
"etag": "\"1402
|
|
13589
|
-
"mtime": "2026-01-
|
|
13879
|
+
"etag": "\"1402-VtJMhqcGSm79uhfUkCRKo8jelg0\"",
|
|
13880
|
+
"mtime": "2026-01-06T14:50:44.888Z",
|
|
13590
13881
|
"size": 5122,
|
|
13591
|
-
"path": "../public/_nuxt/
|
|
13882
|
+
"path": "../public/_nuxt/C2rmiAJ1.js"
|
|
13592
13883
|
},
|
|
13593
|
-
"/_nuxt/
|
|
13884
|
+
"/_nuxt/CMIuQb6D.js": {
|
|
13594
13885
|
"type": "text/javascript; charset=utf-8",
|
|
13595
|
-
"etag": "\"
|
|
13596
|
-
"mtime": "2026-01-
|
|
13597
|
-
"size":
|
|
13598
|
-
"path": "../public/_nuxt/
|
|
13599
|
-
},
|
|
13600
|
-
"/_nuxt/CbxAQSTv.js": {
|
|
13601
|
-
"type": "text/javascript; charset=utf-8",
|
|
13602
|
-
"etag": "\"13d6-soQlZbLe3/N22nHwjpiVLZF9YOU\"",
|
|
13603
|
-
"mtime": "2026-01-06T11:43:30.257Z",
|
|
13604
|
-
"size": 5078,
|
|
13605
|
-
"path": "../public/_nuxt/CbxAQSTv.js"
|
|
13886
|
+
"etag": "\"6f9-E0xalMLGhpoIvFzrRNRUcVOZPPQ\"",
|
|
13887
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13888
|
+
"size": 1785,
|
|
13889
|
+
"path": "../public/_nuxt/CMIuQb6D.js"
|
|
13606
13890
|
},
|
|
13607
|
-
"/_nuxt/
|
|
13891
|
+
"/_nuxt/CTbIP459.js": {
|
|
13608
13892
|
"type": "text/javascript; charset=utf-8",
|
|
13609
|
-
"etag": "\"
|
|
13610
|
-
"mtime": "2026-01-
|
|
13611
|
-
"size":
|
|
13612
|
-
"path": "../public/_nuxt/
|
|
13893
|
+
"etag": "\"1f50-bzGM5CjHWzcIvVcPXIRgOApFvVY\"",
|
|
13894
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13895
|
+
"size": 8016,
|
|
13896
|
+
"path": "../public/_nuxt/CTbIP459.js"
|
|
13613
13897
|
},
|
|
13614
|
-
"/_nuxt/
|
|
13898
|
+
"/_nuxt/ClY4a-PO.js": {
|
|
13615
13899
|
"type": "text/javascript; charset=utf-8",
|
|
13616
|
-
"etag": "\"
|
|
13617
|
-
"mtime": "2026-01-
|
|
13618
|
-
"size":
|
|
13619
|
-
"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"
|
|
13620
13904
|
},
|
|
13621
13905
|
"/_nuxt/CtVoJCjv.js": {
|
|
13622
13906
|
"type": "text/javascript; charset=utf-8",
|
|
13623
13907
|
"etag": "\"60e1-nIA6Jbnn6uAHuDaU32OF/jkPj2w\"",
|
|
13624
|
-
"mtime": "2026-01-
|
|
13908
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13625
13909
|
"size": 24801,
|
|
13626
13910
|
"path": "../public/_nuxt/CtVoJCjv.js"
|
|
13627
13911
|
},
|
|
13628
|
-
"/_nuxt/
|
|
13629
|
-
"type": "text/javascript; charset=utf-8",
|
|
13630
|
-
"etag": "\"1a6-rdyia4c8412BpkuJjFzupr1AKDk\"",
|
|
13631
|
-
"mtime": "2026-01-06T11:43:30.257Z",
|
|
13632
|
-
"size": 422,
|
|
13633
|
-
"path": "../public/_nuxt/D4ccGohf.js"
|
|
13634
|
-
},
|
|
13635
|
-
"/_nuxt/DFBRLek2.js": {
|
|
13636
|
-
"type": "text/javascript; charset=utf-8",
|
|
13637
|
-
"etag": "\"1191-MpDIk6AKkPOlkhfd3T97xQcvwa4\"",
|
|
13638
|
-
"mtime": "2026-01-06T11:43:30.257Z",
|
|
13639
|
-
"size": 4497,
|
|
13640
|
-
"path": "../public/_nuxt/DFBRLek2.js"
|
|
13641
|
-
},
|
|
13642
|
-
"/_nuxt/DJ2H_vRy.js": {
|
|
13912
|
+
"/_nuxt/D0HHOq4k.js": {
|
|
13643
13913
|
"type": "text/javascript; charset=utf-8",
|
|
13644
|
-
"etag": "\"
|
|
13645
|
-
"mtime": "2026-01-
|
|
13646
|
-
"size":
|
|
13647
|
-
"path": "../public/_nuxt/
|
|
13914
|
+
"etag": "\"445ad-J95rD/IxPKFNtjS/APb/lFToxe0\"",
|
|
13915
|
+
"mtime": "2026-01-06T14:50:44.889Z",
|
|
13916
|
+
"size": 279981,
|
|
13917
|
+
"path": "../public/_nuxt/D0HHOq4k.js"
|
|
13648
13918
|
},
|
|
13649
|
-
"/_nuxt/
|
|
13919
|
+
"/_nuxt/D1JH-OfY.js": {
|
|
13650
13920
|
"type": "text/javascript; charset=utf-8",
|
|
13651
|
-
"etag": "\"
|
|
13652
|
-
"mtime": "2026-01-
|
|
13653
|
-
"size":
|
|
13654
|
-
"path": "../public/_nuxt/
|
|
13921
|
+
"etag": "\"13d6-Y7qMDm6aU0g8xgoyL/+hWbBaHC4\"",
|
|
13922
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13923
|
+
"size": 5078,
|
|
13924
|
+
"path": "../public/_nuxt/D1JH-OfY.js"
|
|
13655
13925
|
},
|
|
13656
|
-
"/_nuxt/
|
|
13926
|
+
"/_nuxt/D9fas07B.js": {
|
|
13657
13927
|
"type": "text/javascript; charset=utf-8",
|
|
13658
|
-
"etag": "\"
|
|
13659
|
-
"mtime": "2026-01-
|
|
13660
|
-
"size":
|
|
13661
|
-
"path": "../public/_nuxt/
|
|
13928
|
+
"etag": "\"308-754sf8ITAmwt2UZDCRAgAjkWcfU\"",
|
|
13929
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13930
|
+
"size": 776,
|
|
13931
|
+
"path": "../public/_nuxt/D9fas07B.js"
|
|
13662
13932
|
},
|
|
13663
|
-
"/_nuxt/
|
|
13933
|
+
"/_nuxt/DAd8dbng.js": {
|
|
13664
13934
|
"type": "text/javascript; charset=utf-8",
|
|
13665
|
-
"etag": "\"
|
|
13666
|
-
"mtime": "2026-01-
|
|
13667
|
-
"size":
|
|
13668
|
-
"path": "../public/_nuxt/
|
|
13935
|
+
"etag": "\"26b-yCmekgopV/bvIEFzbT0E/Sj8gtM\"",
|
|
13936
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13937
|
+
"size": 619,
|
|
13938
|
+
"path": "../public/_nuxt/DAd8dbng.js"
|
|
13669
13939
|
},
|
|
13670
|
-
"/_nuxt/
|
|
13940
|
+
"/_nuxt/DNMLSDtV.js": {
|
|
13671
13941
|
"type": "text/javascript; charset=utf-8",
|
|
13672
|
-
"etag": "\"
|
|
13673
|
-
"mtime": "2026-01-
|
|
13674
|
-
"size":
|
|
13675
|
-
"path": "../public/_nuxt/
|
|
13942
|
+
"etag": "\"674-qhgSRv4NpNefdWVSL7oaJxo7vpM\"",
|
|
13943
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13944
|
+
"size": 1652,
|
|
13945
|
+
"path": "../public/_nuxt/DNMLSDtV.js"
|
|
13676
13946
|
},
|
|
13677
|
-
"/_nuxt/
|
|
13947
|
+
"/_nuxt/DbZiOpag.js": {
|
|
13678
13948
|
"type": "text/javascript; charset=utf-8",
|
|
13679
|
-
"etag": "\"
|
|
13680
|
-
"mtime": "2026-01-
|
|
13681
|
-
"size":
|
|
13682
|
-
"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"
|
|
13683
13953
|
},
|
|
13684
|
-
"/_nuxt/
|
|
13954
|
+
"/_nuxt/DuqM_LGj.js": {
|
|
13685
13955
|
"type": "text/javascript; charset=utf-8",
|
|
13686
|
-
"etag": "\"
|
|
13687
|
-
"mtime": "2026-01-
|
|
13688
|
-
"size":
|
|
13689
|
-
"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"
|
|
13690
13960
|
},
|
|
13691
|
-
"/_nuxt/
|
|
13961
|
+
"/_nuxt/DxFm2Qrx.js": {
|
|
13692
13962
|
"type": "text/javascript; charset=utf-8",
|
|
13693
|
-
"etag": "\"
|
|
13694
|
-
"mtime": "2026-01-
|
|
13695
|
-
"size":
|
|
13696
|
-
"path": "../public/_nuxt/
|
|
13963
|
+
"etag": "\"78d-CMpCytM2qfwFTin0tSvf9UkJso8\"",
|
|
13964
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13965
|
+
"size": 1933,
|
|
13966
|
+
"path": "../public/_nuxt/DxFm2Qrx.js"
|
|
13697
13967
|
},
|
|
13698
13968
|
"/_nuxt/IssueHeader.BKYJE9Ko.css": {
|
|
13699
13969
|
"type": "text/css; charset=utf-8",
|
|
13700
13970
|
"etag": "\"4a1-cNhs83r9kPH36WuqXuq0TmsK7qM\"",
|
|
13701
|
-
"mtime": "2026-01-
|
|
13971
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13702
13972
|
"size": 1185,
|
|
13703
13973
|
"path": "../public/_nuxt/IssueHeader.BKYJE9Ko.css"
|
|
13704
13974
|
},
|
|
13705
13975
|
"/_nuxt/LangSwitcher.DDTh1sNN.css": {
|
|
13706
13976
|
"type": "text/css; charset=utf-8",
|
|
13707
13977
|
"etag": "\"2b5-PbdPNItC3+BzxiC+s9FMK4GX5Hg\"",
|
|
13708
|
-
"mtime": "2026-01-
|
|
13978
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13709
13979
|
"size": 693,
|
|
13710
13980
|
"path": "../public/_nuxt/LangSwitcher.DDTh1sNN.css"
|
|
13711
13981
|
},
|
|
13712
|
-
"/_nuxt/SqPShwdq.js": {
|
|
13713
|
-
"type": "text/javascript; charset=utf-8",
|
|
13714
|
-
"etag": "\"445ad-GfsHiG0o4uttWFUWWVDIyOM2vxs\"",
|
|
13715
|
-
"mtime": "2026-01-06T11:43:30.262Z",
|
|
13716
|
-
"size": 279981,
|
|
13717
|
-
"path": "../public/_nuxt/SqPShwdq.js"
|
|
13718
|
-
},
|
|
13719
13982
|
"/_nuxt/_id_.CYj9w2Sw.css": {
|
|
13720
13983
|
"type": "text/css; charset=utf-8",
|
|
13721
13984
|
"etag": "\"147-FPzJs5si7nasSxfswldrOJcSWQc\"",
|
|
13722
|
-
"mtime": "2026-01-
|
|
13985
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13723
13986
|
"size": 327,
|
|
13724
13987
|
"path": "../public/_nuxt/_id_.CYj9w2Sw.css"
|
|
13725
13988
|
},
|
|
13726
13989
|
"/_nuxt/_name_.OOW3Ydwv.css": {
|
|
13727
13990
|
"type": "text/css; charset=utf-8",
|
|
13728
13991
|
"etag": "\"29e5-SV28LM5C6hUKzP0u2eg0Y7G9EF8\"",
|
|
13729
|
-
"mtime": "2026-01-
|
|
13992
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13730
13993
|
"size": 10725,
|
|
13731
13994
|
"path": "../public/_nuxt/_name_.OOW3Ydwv.css"
|
|
13732
13995
|
},
|
|
13733
13996
|
"/_nuxt/autocreate.-iJ9Pxhm.css": {
|
|
13734
13997
|
"type": "text/css; charset=utf-8",
|
|
13735
13998
|
"etag": "\"ce7-/4F3SaPlMwTbSTDcvVlRCgyWVuo\"",
|
|
13736
|
-
"mtime": "2026-01-
|
|
13999
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13737
14000
|
"size": 3303,
|
|
13738
14001
|
"path": "../public/_nuxt/autocreate.-iJ9Pxhm.css"
|
|
13739
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
|
+
},
|
|
13740
14010
|
"/_nuxt/changelog.CziWegef.css": {
|
|
13741
14011
|
"type": "text/css; charset=utf-8",
|
|
13742
14012
|
"etag": "\"943-Wd23/oRkMR3dPNniVkYvKH4iYZU\"",
|
|
13743
|
-
"mtime": "2026-01-
|
|
14013
|
+
"mtime": "2026-01-06T14:50:44.890Z",
|
|
13744
14014
|
"size": 2371,
|
|
13745
14015
|
"path": "../public/_nuxt/changelog.CziWegef.css"
|
|
13746
14016
|
},
|
|
13747
14017
|
"/_nuxt/comments.BcvjcN1z.css": {
|
|
13748
14018
|
"type": "text/css; charset=utf-8",
|
|
13749
14019
|
"etag": "\"e51-p2ulj0SgvCmnXgDs2Pt+HZCPV68\"",
|
|
13750
|
-
"mtime": "2026-01-
|
|
14020
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13751
14021
|
"size": 3665,
|
|
13752
14022
|
"path": "../public/_nuxt/comments.BcvjcN1z.css"
|
|
13753
14023
|
},
|
|
13754
14024
|
"/_nuxt/default.BaZU2Ea8.css": {
|
|
13755
14025
|
"type": "text/css; charset=utf-8",
|
|
13756
14026
|
"etag": "\"1221-mqSxKm41WTP6Dlwr1Ua3eHfN+Go\"",
|
|
13757
|
-
"mtime": "2026-01-
|
|
14027
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13758
14028
|
"size": 4641,
|
|
13759
14029
|
"path": "../public/_nuxt/default.BaZU2Ea8.css"
|
|
13760
14030
|
},
|
|
13761
14031
|
"/_nuxt/entry.CzscD3wg.css": {
|
|
13762
14032
|
"type": "text/css; charset=utf-8",
|
|
13763
14033
|
"etag": "\"727b-yFKgcl3fUZnijzu9dws3tloA4MM\"",
|
|
13764
|
-
"mtime": "2026-01-
|
|
14034
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13765
14035
|
"size": 29307,
|
|
13766
14036
|
"path": "../public/_nuxt/entry.CzscD3wg.css"
|
|
13767
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
|
+
},
|
|
13768
14045
|
"/_nuxt/graph.BbpRRv0M.css": {
|
|
13769
14046
|
"type": "text/css; charset=utf-8",
|
|
13770
14047
|
"etag": "\"627-nt3GDdORgjzH4esnRuCHd1lImMY\"",
|
|
13771
|
-
"mtime": "2026-01-
|
|
14048
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13772
14049
|
"size": 1575,
|
|
13773
14050
|
"path": "../public/_nuxt/graph.BbpRRv0M.css"
|
|
13774
14051
|
},
|
|
13775
14052
|
"/_nuxt/index.CDND7dpO.css": {
|
|
13776
14053
|
"type": "text/css; charset=utf-8",
|
|
13777
14054
|
"etag": "\"38fb-KxIT9Gz+y8Wmb70FrCU7cXx7l0o\"",
|
|
13778
|
-
"mtime": "2026-01-
|
|
14055
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13779
14056
|
"size": 14587,
|
|
13780
14057
|
"path": "../public/_nuxt/index.CDND7dpO.css"
|
|
13781
14058
|
},
|
|
13782
14059
|
"/_nuxt/index.COVdL_Kx.css": {
|
|
13783
14060
|
"type": "text/css; charset=utf-8",
|
|
13784
14061
|
"etag": "\"c13-0P9BCBpSGAwz9eBjyp4Y8XCHLE8\"",
|
|
13785
|
-
"mtime": "2026-01-
|
|
14062
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13786
14063
|
"size": 3091,
|
|
13787
14064
|
"path": "../public/_nuxt/index.COVdL_Kx.css"
|
|
13788
14065
|
},
|
|
13789
14066
|
"/_nuxt/index.CTkgb9uR.css": {
|
|
13790
14067
|
"type": "text/css; charset=utf-8",
|
|
13791
14068
|
"etag": "\"1f2b-mxpyAvUZ7skCVAxrZq8J8SDKzUI\"",
|
|
13792
|
-
"mtime": "2026-01-
|
|
14069
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13793
14070
|
"size": 7979,
|
|
13794
14071
|
"path": "../public/_nuxt/index.CTkgb9uR.css"
|
|
13795
14072
|
},
|
|
13796
14073
|
"/_nuxt/index.DkNg_n4G.css": {
|
|
13797
14074
|
"type": "text/css; charset=utf-8",
|
|
13798
14075
|
"etag": "\"136-9XyHqK+b/ydB9ueq6YFewVPmSW4\"",
|
|
13799
|
-
"mtime": "2026-01-
|
|
14076
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13800
14077
|
"size": 310,
|
|
13801
14078
|
"path": "../public/_nuxt/index.DkNg_n4G.css"
|
|
13802
14079
|
},
|
|
14080
|
+
"/_nuxt/kNuGsBnB.js": {
|
|
14081
|
+
"type": "text/javascript; charset=utf-8",
|
|
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"
|
|
14093
|
+
},
|
|
13803
14094
|
"/_nuxt/kanban.BuPOCLgG.css": {
|
|
13804
14095
|
"type": "text/css; charset=utf-8",
|
|
13805
14096
|
"etag": "\"13c2-QYyqf5fyeEnrqYohP0pQB5QGRLs\"",
|
|
13806
|
-
"mtime": "2026-01-
|
|
14097
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13807
14098
|
"size": 5058,
|
|
13808
14099
|
"path": "../public/_nuxt/kanban.BuPOCLgG.css"
|
|
13809
14100
|
},
|
|
13810
14101
|
"/_nuxt/landing.D5KkDm1b.css": {
|
|
13811
14102
|
"type": "text/css; charset=utf-8",
|
|
13812
14103
|
"etag": "\"393-IP7IMSuvaLw71bURxWfVx2E2Q7I\"",
|
|
13813
|
-
"mtime": "2026-01-
|
|
14104
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13814
14105
|
"size": 915,
|
|
13815
14106
|
"path": "../public/_nuxt/landing.D5KkDm1b.css"
|
|
13816
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
|
+
},
|
|
13817
14115
|
"/_nuxt/new.BFERdqdm.css": {
|
|
13818
14116
|
"type": "text/css; charset=utf-8",
|
|
13819
14117
|
"etag": "\"e38-t4k/fVPiMoh//7XTa7VA8WixSHw\"",
|
|
13820
|
-
"mtime": "2026-01-
|
|
14118
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13821
14119
|
"size": 3640,
|
|
13822
14120
|
"path": "../public/_nuxt/new.BFERdqdm.css"
|
|
13823
14121
|
},
|
|
13824
14122
|
"/_nuxt/new.BzaiohPo.css": {
|
|
13825
14123
|
"type": "text/css; charset=utf-8",
|
|
13826
14124
|
"etag": "\"71f-Sf1vS7pI6TH0XyyA8vE15d1t2SE\"",
|
|
13827
|
-
"mtime": "2026-01-
|
|
14125
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13828
14126
|
"size": 1823,
|
|
13829
14127
|
"path": "../public/_nuxt/new.BzaiohPo.css"
|
|
13830
14128
|
},
|
|
13831
14129
|
"/_nuxt/prompt.CbFHjm-L.css": {
|
|
13832
14130
|
"type": "text/css; charset=utf-8",
|
|
13833
14131
|
"etag": "\"55f-faq16m4XDEEcy8d4uHQam/6TmYM\"",
|
|
13834
|
-
"mtime": "2026-01-
|
|
14132
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13835
14133
|
"size": 1375,
|
|
13836
14134
|
"path": "../public/_nuxt/prompt.CbFHjm-L.css"
|
|
13837
14135
|
},
|
|
13838
14136
|
"/_nuxt/prompt.DM4VdPnn.css": {
|
|
13839
14137
|
"type": "text/css; charset=utf-8",
|
|
13840
14138
|
"etag": "\"98d-6SgyexayLVWpB/uiTxJddZCOSNs\"",
|
|
13841
|
-
"mtime": "2026-01-
|
|
14139
|
+
"mtime": "2026-01-06T14:50:44.891Z",
|
|
13842
14140
|
"size": 2445,
|
|
13843
14141
|
"path": "../public/_nuxt/prompt.DM4VdPnn.css"
|
|
13844
14142
|
},
|
|
13845
14143
|
"/_nuxt/prompt.DZ0wdOji.css": {
|
|
13846
14144
|
"type": "text/css; charset=utf-8",
|
|
13847
14145
|
"etag": "\"5e1-PqnnCsmh+l9VGfHth+8ur20eqFQ\"",
|
|
13848
|
-
"mtime": "2026-01-
|
|
14146
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13849
14147
|
"size": 1505,
|
|
13850
14148
|
"path": "../public/_nuxt/prompt.DZ0wdOji.css"
|
|
13851
14149
|
},
|
|
13852
14150
|
"/_nuxt/stats.CXzKxZ71.css": {
|
|
13853
14151
|
"type": "text/css; charset=utf-8",
|
|
13854
14152
|
"etag": "\"132a-6OE0a+UmTHJMBzCVvnrjAUSGRT8\"",
|
|
13855
|
-
"mtime": "2026-01-
|
|
14153
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13856
14154
|
"size": 4906,
|
|
13857
14155
|
"path": "../public/_nuxt/stats.CXzKxZ71.css"
|
|
13858
14156
|
},
|
|
13859
14157
|
"/_nuxt/terminal.BL0EPPyU.css": {
|
|
13860
14158
|
"type": "text/css; charset=utf-8",
|
|
13861
14159
|
"etag": "\"79d-a+4LEiyc04ntLd9WPiqFIj0AKbk\"",
|
|
13862
|
-
"mtime": "2026-01-
|
|
14160
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13863
14161
|
"size": 1949,
|
|
13864
14162
|
"path": "../public/_nuxt/terminal.BL0EPPyU.css"
|
|
13865
14163
|
},
|
|
13866
14164
|
"/_nuxt/terminal.D3JI44PH.css": {
|
|
13867
14165
|
"type": "text/css; charset=utf-8",
|
|
13868
14166
|
"etag": "\"7e5-uC0ih9QvDsN9w6zGgrvIQiV6FfE\"",
|
|
13869
|
-
"mtime": "2026-01-
|
|
14167
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13870
14168
|
"size": 2021,
|
|
13871
14169
|
"path": "../public/_nuxt/terminal.D3JI44PH.css"
|
|
13872
14170
|
},
|
|
13873
14171
|
"/_nuxt/terminal.YXDzS4Ng.css": {
|
|
13874
14172
|
"type": "text/css; charset=utf-8",
|
|
13875
14173
|
"etag": "\"763-YHR0QMT8SZXOv2Y07u5ZMWZP7d4\"",
|
|
13876
|
-
"mtime": "2026-01-
|
|
14174
|
+
"mtime": "2026-01-06T14:50:44.892Z",
|
|
13877
14175
|
"size": 1891,
|
|
13878
14176
|
"path": "../public/_nuxt/terminal.YXDzS4Ng.css"
|
|
13879
14177
|
},
|
|
13880
14178
|
"/_nuxt/builds/latest.json": {
|
|
13881
14179
|
"type": "application/json",
|
|
13882
|
-
"etag": "\"47-
|
|
13883
|
-
"mtime": "2026-01-
|
|
14180
|
+
"etag": "\"47-gkCJUlo2Gb7FGRjvI4LH7O/1nF0\"",
|
|
14181
|
+
"mtime": "2026-01-06T14:50:44.860Z",
|
|
13884
14182
|
"size": 71,
|
|
13885
14183
|
"path": "../public/_nuxt/builds/latest.json"
|
|
13886
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
|
+
},
|
|
13887
14199
|
"/media/podcast/en.m4a": {
|
|
13888
14200
|
"type": "audio/mp4",
|
|
13889
14201
|
"etag": "\"1c00c86-MbX28IpSmI393JWCzCz6rlkdYS0\"",
|
|
13890
|
-
"mtime": "2026-01-
|
|
14202
|
+
"mtime": "2026-01-06T14:50:44.944Z",
|
|
13891
14203
|
"size": 29363334,
|
|
13892
14204
|
"path": "../public/media/podcast/en.m4a"
|
|
13893
14205
|
},
|
|
13894
14206
|
"/media/podcast/fr.m4a": {
|
|
13895
14207
|
"type": "audio/mp4",
|
|
13896
14208
|
"etag": "\"1619637-vBY2YSdzI9Lseb+qriWqqUgyYdI\"",
|
|
13897
|
-
"mtime": "2026-01-
|
|
14209
|
+
"mtime": "2026-01-06T14:50:44.937Z",
|
|
13898
14210
|
"size": 23172663,
|
|
13899
14211
|
"path": "../public/media/podcast/fr.m4a"
|
|
13900
14212
|
},
|
|
13901
|
-
"/_i18n/
|
|
14213
|
+
"/_i18n/__ad3z6g/en/messages.json": {
|
|
13902
14214
|
"type": "application/json",
|
|
13903
14215
|
"etag": "\"399f-q0zYHcJCee9l9+ayCAjo0PQBXII\"",
|
|
13904
|
-
"mtime": "2026-01-
|
|
14216
|
+
"mtime": "2026-01-06T14:50:44.824Z",
|
|
13905
14217
|
"size": 14751,
|
|
13906
|
-
"path": "../public/_i18n/
|
|
14218
|
+
"path": "../public/_i18n/__ad3z6g/en/messages.json"
|
|
13907
14219
|
},
|
|
13908
|
-
"/_i18n/
|
|
14220
|
+
"/_i18n/__ad3z6g/fr/messages.json": {
|
|
13909
14221
|
"type": "application/json",
|
|
13910
14222
|
"etag": "\"3f33-0xMEfoD3ECgVH1/tTkqNIQbF0kk\"",
|
|
13911
|
-
"mtime": "2026-01-
|
|
14223
|
+
"mtime": "2026-01-06T14:50:44.824Z",
|
|
13912
14224
|
"size": 16179,
|
|
13913
|
-
"path": "../public/_i18n/
|
|
14225
|
+
"path": "../public/_i18n/__ad3z6g/fr/messages.json"
|
|
13914
14226
|
},
|
|
13915
|
-
"/_nuxt/builds/meta/
|
|
14227
|
+
"/_nuxt/builds/meta/35ace9c2-472c-4755-ae87-74fdb84336dd.json": {
|
|
13916
14228
|
"type": "application/json",
|
|
13917
|
-
"etag": "\"8e-
|
|
13918
|
-
"mtime": "2026-01-
|
|
14229
|
+
"etag": "\"8e-5J0RF5Xz2HGZ6nAfd32V1HyT+u0\"",
|
|
14230
|
+
"mtime": "2026-01-06T14:50:44.855Z",
|
|
13919
14231
|
"size": 142,
|
|
13920
|
-
"path": "../public/_nuxt/builds/meta/
|
|
14232
|
+
"path": "../public/_nuxt/builds/meta/35ace9c2-472c-4755-ae87-74fdb84336dd.json"
|
|
13921
14233
|
}
|
|
13922
14234
|
};
|
|
13923
14235
|
|
|
@@ -14773,5 +15085,5 @@ setupGracefulShutdown(listener, nitroApp);
|
|
|
14773
15085
|
}
|
|
14774
15086
|
const nodeServer = {};
|
|
14775
15087
|
|
|
14776
|
-
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 };
|
|
14777
15089
|
//# sourceMappingURL=nitro.mjs.map
|