@rashidee/co2 1.3.24 → 1.3.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.co2-dat/app.db +0 -0
- package/dist/.co2-dat/app.db-shm +0 -0
- package/dist/.co2-dat/app.db-wal +0 -0
- package/dist/index.js +173 -29
- package/package.json +41 -41
- package/static/assets/{abnfDiagram-VRR7QNED-B_fP8Vz_.js → abnfDiagram-VRR7QNED-BqqVu83_.js} +1 -1
- package/static/assets/{arc-jQ2jhD3o.js → arc-D9zT1NvB.js} +1 -1
- package/static/assets/{architectureDiagram-ZJ3FMSHR-CEunclu9.js → architectureDiagram-ZJ3FMSHR-D-34OZne.js} +1 -1
- package/static/assets/{blockDiagram-677ZJIJ3-DpbPXGGb.js → blockDiagram-677ZJIJ3-DzXrZXuu.js} +1 -1
- package/static/assets/{c4Diagram-LMCZKHZV-BMJArETU.js → c4Diagram-LMCZKHZV-CZWILWBU.js} +1 -1
- package/static/assets/channel-DKYjk4Z0.js +1 -0
- package/static/assets/{chunk-2Q5K7J3B-DWwnQ9gu.js → chunk-2Q5K7J3B-BnyVGcHp.js} +1 -1
- package/static/assets/{chunk-32BRIVSS-mIi65b4i.js → chunk-32BRIVSS-D6kWVoTq.js} +1 -1
- package/static/assets/{chunk-5VM5RSS4-BDyMPvwt.js → chunk-5VM5RSS4-BDuQxGsi.js} +1 -1
- package/static/assets/{chunk-EX3LRPZG-Cfspbnh5.js → chunk-EX3LRPZG-CzemsC9C.js} +1 -1
- package/static/assets/{chunk-JWPE2WC7-277KBuwS.js → chunk-JWPE2WC7-D9BTDnXt.js} +1 -1
- package/static/assets/{chunk-MOJQB5TN-ctV9LaAX.js → chunk-MOJQB5TN-DMVlpoSf.js} +1 -1
- package/static/assets/{chunk-RYQCIY6F-CK9NdxUZ.js → chunk-RYQCIY6F-Cr59tI34.js} +1 -1
- package/static/assets/{chunk-V7JOEXUC-CurUrryl.js → chunk-V7JOEXUC-CItFH4TC.js} +1 -1
- package/static/assets/{chunk-VR4S4FIN-C6HOhkwt.js → chunk-VR4S4FIN-D-5bD2Rp.js} +1 -1
- package/static/assets/{chunk-XXDRQBXY-C09MJsiF.js → chunk-XXDRQBXY-BYTedp-b.js} +1 -1
- package/static/assets/classDiagram-OUVF2IWQ-BypGwdom.js +1 -0
- package/static/assets/classDiagram-v2-EOCWNBFH-BypGwdom.js +1 -0
- package/static/assets/{cose-bilkent-JH36ORCC-ET_pJkh9.js → cose-bilkent-JH36ORCC-ph9z6Rag.js} +1 -1
- package/static/assets/{cynefin-VYW2F7L2-B6Oy4mbg.js → cynefin-VYW2F7L2-DNym54iM.js} +1 -1
- package/static/assets/{cynefinDiagram-TSTJHNR4-Br7gbIt6.js → cynefinDiagram-TSTJHNR4-BFhXROr4.js} +1 -1
- package/static/assets/{dagre-VKFMJZFB-CGRMVLrv.js → dagre-VKFMJZFB-C8Bvbfep.js} +1 -1
- package/static/assets/{diagram-FQU43EPY-Dasgaqiu.js → diagram-FQU43EPY-dou1k9fZ.js} +1 -1
- package/static/assets/{diagram-G47NLZAW-DZqXpbK0.js → diagram-G47NLZAW-DTVkGSut.js} +1 -1
- package/static/assets/{diagram-NH7WQ7WH-Cjp8mQVX.js → diagram-NH7WQ7WH-CLF_alfd.js} +1 -1
- package/static/assets/{diagram-OA4YK3LP-BHpTOief.js → diagram-OA4YK3LP-CVQqfvRy.js} +1 -1
- package/static/assets/{diagram-WEI45ONY-BdjsSjwC.js → diagram-WEI45ONY-X6ugzDOD.js} +1 -1
- package/static/assets/{ebnfDiagram-CCIWWBDH-D3GJit-t.js → ebnfDiagram-CCIWWBDH-PgskU8v_.js} +1 -1
- package/static/assets/{erDiagram-Q63AITRT-CbreGRUM.js → erDiagram-Q63AITRT-CBW5aC2C.js} +1 -1
- package/static/assets/{flowDiagram-23GEKE2U-Bov8ggVs.js → flowDiagram-23GEKE2U-BbyDOz5x.js} +1 -1
- package/static/assets/{ganttDiagram-NO4QXBWP-DI2TRBdA.js → ganttDiagram-NO4QXBWP-CceMROcR.js} +1 -1
- package/static/assets/{gitGraphDiagram-IHSO6WYX-CB0I9Jzz.js → gitGraphDiagram-IHSO6WYX-t2R0tkUO.js} +1 -1
- package/static/assets/{index-D58A6Kf1.css → index-BM5AGe_l.css} +1 -1
- package/static/assets/{index-DHqZVy2E.js → index-C26387Mq.js} +171 -171
- package/static/assets/{infoDiagram-FWYZ7A6U-DrF8yTwW.js → infoDiagram-FWYZ7A6U-Du1gMFcI.js} +1 -1
- package/static/assets/{ishikawaDiagram-FXEZZL3T-DUB8-IzB.js → ishikawaDiagram-FXEZZL3T-VAYbdalo.js} +1 -1
- package/static/assets/{journeyDiagram-5HDEW3XC-BRfaIEic.js → journeyDiagram-5HDEW3XC-DkLYEpM2.js} +1 -1
- package/static/assets/{kanban-definition-HUTT4EX6-BSSDB9_O.js → kanban-definition-HUTT4EX6-BCzd09tX.js} +1 -1
- package/static/assets/{linear-oOGNCaPt.js → linear-Dm0uNoIF.js} +1 -1
- package/static/assets/{mindmap-definition-LN4V7U3C-D7f8ON4e.js → mindmap-definition-LN4V7U3C-D69_xTUO.js} +1 -1
- package/static/assets/{pegDiagram-2B236MQR-BWLmrzb8.js → pegDiagram-2B236MQR-D6t8-mr5.js} +1 -1
- package/static/assets/{pieDiagram-ENE6RG2P-DcXwgn9I.js → pieDiagram-ENE6RG2P-CRhMSL7L.js} +1 -1
- package/static/assets/{quadrantDiagram-ABIIQ3AL-BzeoX11K.js → quadrantDiagram-ABIIQ3AL-DLSgxv-x.js} +1 -1
- package/static/assets/{railroadDiagram-RFXS5EU6-DPa8V-DS.js → railroadDiagram-RFXS5EU6-b1SreCxV.js} +1 -1
- package/static/assets/{requirementDiagram-TGXJPOKE-Bvv4E9CW.js → requirementDiagram-TGXJPOKE-BV4CNLIo.js} +1 -1
- package/static/assets/{sankeyDiagram-HTMAVEWB-0MJhpRfa.js → sankeyDiagram-HTMAVEWB-BiFv1ux8.js} +1 -1
- package/static/assets/{sequenceDiagram-DBY2YBRQ-DigLSZlS.js → sequenceDiagram-DBY2YBRQ-Dx4t2iJL.js} +1 -1
- package/static/assets/{sizeCapture-X5ZJPWSS-6mCHKLvi.js → sizeCapture-X5ZJPWSS-CnQy7abz.js} +1 -1
- package/static/assets/{stateDiagram-2N3HPSRC-BaIapwPh.js → stateDiagram-2N3HPSRC-Dydsj0oL.js} +1 -1
- package/static/assets/stateDiagram-v2-6OUMAXLB-C8SPn3Oh.js +1 -0
- package/static/assets/{swimlanes-5IMT3BWC-Doushgb5.js → swimlanes-5IMT3BWC-CxCwYCDy.js} +2 -2
- package/static/assets/swimlanesDiagram-G3AALYLV-74ote7Bb.js +8 -0
- package/static/assets/{timeline-definition-FHXFAJF6-DQXoUYQ4.js → timeline-definition-FHXFAJF6-C_Fi6bNQ.js} +1 -1
- package/static/assets/{vennDiagram-L72KCM5P-DqoXPumC.js → vennDiagram-L72KCM5P-CgwC5qPZ.js} +1 -1
- package/static/assets/{wardleyDiagram-EHGQE667-CjaK_50N.js → wardleyDiagram-EHGQE667-s9kPgnSC.js} +1 -1
- package/static/assets/{xychartDiagram-FW5EYKEG-DUrmfVTr.js → xychartDiagram-FW5EYKEG-DBDMMVMd.js} +1 -1
- package/static/index.html +2 -2
- package/static/assets/channel-D07NVaUc.js +0 -1
- package/static/assets/classDiagram-OUVF2IWQ-CVG8E0VE.js +0 -1
- package/static/assets/classDiagram-v2-EOCWNBFH-CVG8E0VE.js +0 -1
- package/static/assets/stateDiagram-v2-6OUMAXLB-DZNVilCm.js +0 -1
- package/static/assets/swimlanesDiagram-G3AALYLV-Dye5Ycrr.js +0 -8
package/dist/.co2-dat/app.db
CHANGED
|
Binary file
|
package/dist/.co2-dat/app.db-shm
CHANGED
|
Binary file
|
package/dist/.co2-dat/app.db-wal
CHANGED
|
Binary file
|
package/dist/index.js
CHANGED
|
@@ -6809,8 +6809,8 @@ var {
|
|
|
6809
6809
|
// package.json
|
|
6810
6810
|
var package_default = {
|
|
6811
6811
|
name: "@rashidee/co2",
|
|
6812
|
-
version: "1.3.
|
|
6813
|
-
description: "Compound Context Studio \
|
|
6812
|
+
version: "1.3.27",
|
|
6813
|
+
description: "Compound Context Studio \xC3\xA2\xE2\u201A\xAC\xE2\u20AC\x9D self-hosted team context authoring for CO2 projects",
|
|
6814
6814
|
type: "module",
|
|
6815
6815
|
license: "MIT",
|
|
6816
6816
|
publishConfig: {
|
|
@@ -19569,6 +19569,10 @@ var dashboardProjectSchema = external_exports.object({
|
|
|
19569
19569
|
// ../core/src/schemas/defect.ts
|
|
19570
19570
|
var bugStatusSchema = external_exports.enum(["open", "in_fix", "fixed", "verified", "closed"]);
|
|
19571
19571
|
var EDITABLE_BUG_STATUSES = ["open", "in_fix"];
|
|
19572
|
+
var REOPENABLE_BUG_STATUSES = ["open", "in_fix", "fixed"];
|
|
19573
|
+
var reopenBugsSchema = external_exports.object({
|
|
19574
|
+
bugIds: external_exports.array(external_exports.number().int().positive()).min(1)
|
|
19575
|
+
});
|
|
19572
19576
|
var createBugReportSchema = external_exports.object({
|
|
19573
19577
|
projectId: external_exports.number().int().positive(),
|
|
19574
19578
|
applicationId: external_exports.number().int().positive(),
|
|
@@ -19585,6 +19589,10 @@ var createBugReportSchema = external_exports.object({
|
|
|
19585
19589
|
var updateBugStatusSchema = external_exports.object({
|
|
19586
19590
|
status: bugStatusSchema
|
|
19587
19591
|
});
|
|
19592
|
+
var moveBugReportSchema = external_exports.object({
|
|
19593
|
+
applicationId: external_exports.number().int().positive(),
|
|
19594
|
+
module: external_exports.string().max(120).optional()
|
|
19595
|
+
});
|
|
19588
19596
|
var updateBugReportSchema = external_exports.object({
|
|
19589
19597
|
title: external_exports.string().min(1).max(200),
|
|
19590
19598
|
description: external_exports.string().optional(),
|
|
@@ -24576,6 +24584,72 @@ function updateBugStatus(db, workspacePath, bugId, status) {
|
|
|
24576
24584
|
db.update(bugReports).set({ status, updatedAt: (/* @__PURE__ */ new Date()).toISOString() }).where(eq(bugReports.id, bugId)).run();
|
|
24577
24585
|
syncBugMdToDisk(db, workspacePath, existing.applicationId, bugId);
|
|
24578
24586
|
}
|
|
24587
|
+
function moveBugReport(db, workspacePath, bugId, input) {
|
|
24588
|
+
const existing = db.select().from(bugReports).where(and(eq(bugReports.id, bugId), eq(bugReports.isDeleted, 0))).get();
|
|
24589
|
+
if (!existing) throw svcError11("BUG_NOT_FOUND", 404);
|
|
24590
|
+
if (!EDITABLE_BUG_STATUSES.includes(existing.status)) throw svcError11("BUG_NOT_MOVABLE", 409);
|
|
24591
|
+
const target = db.select({ id: applications.id, projectId: applications.projectId }).from(applications).where(eq(applications.id, input.applicationId)).get();
|
|
24592
|
+
if (!target || target.projectId !== existing.projectId) {
|
|
24593
|
+
throw svcError11("APPLICATION_NOT_FOUND", 404);
|
|
24594
|
+
}
|
|
24595
|
+
const targetModule = input.module?.trim() || null;
|
|
24596
|
+
const sameModule = (existing.module?.toLowerCase() ?? null) === (targetModule?.toLowerCase() ?? null);
|
|
24597
|
+
if (existing.applicationId === input.applicationId && sameModule) {
|
|
24598
|
+
throw svcError11("MOVE_NO_CHANGE", 400);
|
|
24599
|
+
}
|
|
24600
|
+
db.update(bugReports).set({
|
|
24601
|
+
applicationId: input.applicationId,
|
|
24602
|
+
module: targetModule,
|
|
24603
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
24604
|
+
}).where(eq(bugReports.id, bugId)).run();
|
|
24605
|
+
removeBugBulletFromDisk(db, workspacePath, existing.applicationId, existing);
|
|
24606
|
+
syncBugMdToDisk(db, workspacePath, input.applicationId, bugId, "insert");
|
|
24607
|
+
return getBugReport(db, bugId);
|
|
24608
|
+
}
|
|
24609
|
+
function removeBugBulletFromDisk(db, workspacePath, applicationId, bug) {
|
|
24610
|
+
try {
|
|
24611
|
+
const app = db.select({ id: applications.id, name: applications.name, projectId: applications.projectId }).from(applications).where(eq(applications.id, applicationId)).get();
|
|
24612
|
+
if (!app) return;
|
|
24613
|
+
const project = db.select({ workspaceFolderName: projects.workspaceFolderName }).from(projects).where(eq(projects.id, app.projectId)).get();
|
|
24614
|
+
if (!project) return;
|
|
24615
|
+
const projectDir2 = join21(workspacePath, project.workspaceFolderName);
|
|
24616
|
+
const file = join21(projectDir2, resolveAppFolderName(projectDir2, app.name), "context", "BUG.md");
|
|
24617
|
+
if (!existsSync19(file)) return;
|
|
24618
|
+
const removed = removeBugFromBugMd(readFileSync13(file, "utf8"), bugCodeAndTitle(bug).code);
|
|
24619
|
+
if (removed !== null) writeFileSync11(file, removed, "utf8");
|
|
24620
|
+
else writeBugMdFile(db, workspacePath, app, project.workspaceFolderName);
|
|
24621
|
+
} catch {
|
|
24622
|
+
}
|
|
24623
|
+
}
|
|
24624
|
+
function reopenBugReports(db, workspacePath, bugIds, userId) {
|
|
24625
|
+
if (bugIds.length === 0) throw svcError11("NO_BUGS_SELECTED", 400);
|
|
24626
|
+
const ids = [...new Set(bugIds)];
|
|
24627
|
+
const rows = db.select().from(bugReports).where(and(inArray(bugReports.id, ids), eq(bugReports.isDeleted, 0))).all();
|
|
24628
|
+
const first = rows[0];
|
|
24629
|
+
if (rows.length !== ids.length || !first) throw svcError11("BUG_NOT_FOUND", 404);
|
|
24630
|
+
const projectId = first.projectId;
|
|
24631
|
+
if (rows.some((r) => r.projectId !== projectId)) throw svcError11("REOPEN_CROSS_PROJECT", 400);
|
|
24632
|
+
const currentVersionId = ensureBaselineVersion(db, projectId, userId);
|
|
24633
|
+
for (const r of rows) {
|
|
24634
|
+
if (r.prdVersionId === currentVersionId || !REOPENABLE_BUG_STATUSES.includes(r.status)) {
|
|
24635
|
+
throw svcError11("BUG_NOT_REOPENABLE", 400);
|
|
24636
|
+
}
|
|
24637
|
+
}
|
|
24638
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
24639
|
+
db.transaction((tx) => {
|
|
24640
|
+
for (const r of rows) {
|
|
24641
|
+
tx.update(bugReports).set({ prdVersionId: currentVersionId, status: "open", updatedAt: now }).where(eq(bugReports.id, r.id)).run();
|
|
24642
|
+
}
|
|
24643
|
+
});
|
|
24644
|
+
for (const applicationId of [...new Set(rows.map((r) => r.applicationId))]) {
|
|
24645
|
+
try {
|
|
24646
|
+
generateBugMd(db, workspacePath, projectId, applicationId, userId);
|
|
24647
|
+
} catch {
|
|
24648
|
+
}
|
|
24649
|
+
}
|
|
24650
|
+
const updated = db.select({ bug: bugReports, reporterName: users.displayName }).from(bugReports).leftJoin(users, eq(users.id, bugReports.reportedBy)).where(inArray(bugReports.id, ids)).all();
|
|
24651
|
+
return updated.map((u) => toDto6(u.bug, u.reporterName));
|
|
24652
|
+
}
|
|
24579
24653
|
function bugCodeAndTitle(bug) {
|
|
24580
24654
|
const embedded = bug.title.match(/^\[(BUG-\d+)\]\s*(.*)$/);
|
|
24581
24655
|
if (embedded) return { code: embedded[1], title: (embedded[2] ?? "").trim() };
|
|
@@ -24644,6 +24718,37 @@ var MD_HR = /^-{3,}\s*$/;
|
|
|
24644
24718
|
var MD_BULLET = /^-\s+(?:~~)?\s*\[BUG-\d+\]/;
|
|
24645
24719
|
var MD_LEGACY_HEADING = /^##\s+(?:~~)?\s*\[BUG-\d+\]/;
|
|
24646
24720
|
var isStructural = (line) => MD_HEADING.test(line) || MD_VERSION.test(line) || MD_HR.test(line) || MD_BULLET.test(line);
|
|
24721
|
+
function bulletExtent(lines, code) {
|
|
24722
|
+
const codeRe = new RegExp(`^-\\s+(?:~~)?\\s*\\[${code}\\]`);
|
|
24723
|
+
const start = lines.findIndex((l) => codeRe.test(l));
|
|
24724
|
+
if (start === -1) return null;
|
|
24725
|
+
let end = start + 1;
|
|
24726
|
+
while (end < lines.length) {
|
|
24727
|
+
const line = lines[end];
|
|
24728
|
+
if (line.trim() === "") {
|
|
24729
|
+
let peek = end + 1;
|
|
24730
|
+
while (peek < lines.length && lines[peek].trim() === "") peek++;
|
|
24731
|
+
if (peek < lines.length && !isStructural(lines[peek])) {
|
|
24732
|
+
end = peek + 1;
|
|
24733
|
+
continue;
|
|
24734
|
+
}
|
|
24735
|
+
break;
|
|
24736
|
+
}
|
|
24737
|
+
if (isStructural(line)) break;
|
|
24738
|
+
end++;
|
|
24739
|
+
}
|
|
24740
|
+
return { start, end };
|
|
24741
|
+
}
|
|
24742
|
+
function removeBugFromBugMd(content, code) {
|
|
24743
|
+
const bom = content.startsWith("\uFEFF") ? "\uFEFF" : "";
|
|
24744
|
+
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
24745
|
+
const lines = (bom ? content.slice(1) : content).split(/\r?\n/);
|
|
24746
|
+
if (lines.some((l) => MD_LEGACY_HEADING.test(l))) return null;
|
|
24747
|
+
const extent = bulletExtent(lines, code);
|
|
24748
|
+
if (!extent) return content;
|
|
24749
|
+
lines.splice(extent.start, extent.end - extent.start);
|
|
24750
|
+
return bom + lines.join(eol);
|
|
24751
|
+
}
|
|
24647
24752
|
function mergeBugIntoBugMd(content, bug, semver, moduleCategory, mode) {
|
|
24648
24753
|
const bom = content.startsWith("\uFEFF") ? "\uFEFF" : "";
|
|
24649
24754
|
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
@@ -24652,25 +24757,9 @@ function mergeBugIntoBugMd(content, bug, semver, moduleCategory, mode) {
|
|
|
24652
24757
|
const bullet = bugBulletLines(bug);
|
|
24653
24758
|
const { code } = bugCodeAndTitle(bug);
|
|
24654
24759
|
if (mode === "replace") {
|
|
24655
|
-
const
|
|
24656
|
-
|
|
24657
|
-
|
|
24658
|
-
let end = start + 1;
|
|
24659
|
-
while (end < lines.length) {
|
|
24660
|
-
const line = lines[end];
|
|
24661
|
-
if (line.trim() === "") {
|
|
24662
|
-
let peek = end + 1;
|
|
24663
|
-
while (peek < lines.length && lines[peek].trim() === "") peek++;
|
|
24664
|
-
if (peek < lines.length && !isStructural(lines[peek])) {
|
|
24665
|
-
end = peek + 1;
|
|
24666
|
-
continue;
|
|
24667
|
-
}
|
|
24668
|
-
break;
|
|
24669
|
-
}
|
|
24670
|
-
if (isStructural(line)) break;
|
|
24671
|
-
end++;
|
|
24672
|
-
}
|
|
24673
|
-
lines.splice(start, end - start, ...bullet);
|
|
24760
|
+
const extent = bulletExtent(lines, code);
|
|
24761
|
+
if (extent) {
|
|
24762
|
+
lines.splice(extent.start, extent.end - extent.start, ...bullet);
|
|
24674
24763
|
return bom + lines.join(eol);
|
|
24675
24764
|
}
|
|
24676
24765
|
}
|
|
@@ -24901,6 +24990,33 @@ function defectRoutes(db, workspacePath) {
|
|
|
24901
24990
|
return errorResponse5(c, e);
|
|
24902
24991
|
}
|
|
24903
24992
|
});
|
|
24993
|
+
const validateMove = zValidator("json", moveBugReportSchema, (result, c) => {
|
|
24994
|
+
if (!result.success) {
|
|
24995
|
+
return c.json({ code: "VALIDATION_FAILED", issues: result.error.issues }, 422);
|
|
24996
|
+
}
|
|
24997
|
+
});
|
|
24998
|
+
app.post("/:id{[0-9]+}/move", validateMove, (c) => {
|
|
24999
|
+
const id = Number(c.req.param("id"));
|
|
25000
|
+
try {
|
|
25001
|
+
return c.json({ moved: moveBugReport(db, workspacePath, id, c.req.valid("json")) });
|
|
25002
|
+
} catch (e) {
|
|
25003
|
+
return errorResponse5(c, e);
|
|
25004
|
+
}
|
|
25005
|
+
});
|
|
25006
|
+
const validateReopen = zValidator("json", reopenBugsSchema, (result, c) => {
|
|
25007
|
+
if (!result.success) {
|
|
25008
|
+
return c.json({ code: "VALIDATION_FAILED", issues: result.error.issues }, 422);
|
|
25009
|
+
}
|
|
25010
|
+
});
|
|
25011
|
+
app.post("/reopen", validateReopen, (c) => {
|
|
25012
|
+
const user = c.get("user");
|
|
25013
|
+
try {
|
|
25014
|
+
const moved = reopenBugReports(db, workspacePath, c.req.valid("json").bugIds, user.id);
|
|
25015
|
+
return c.json({ moved });
|
|
25016
|
+
} catch (e) {
|
|
25017
|
+
return errorResponse5(c, e);
|
|
25018
|
+
}
|
|
25019
|
+
});
|
|
24904
25020
|
app.get("/projects/:projectId/can-report", (c) => {
|
|
24905
25021
|
const projectId = Number(c.req.param("projectId"));
|
|
24906
25022
|
if (Number.isNaN(projectId)) return c.json({ code: "INVALID_ID" }, 400);
|
|
@@ -26696,14 +26812,7 @@ function getRunApplicationChangelog(db, workspacePath, workflowMarkdownId, appNa
|
|
|
26696
26812
|
if (!wfm) throw svcError14("RUN_NOT_FOUND", 404);
|
|
26697
26813
|
const project = db.select().from(projects).where(eq(projects.id, wfm.projectId)).get();
|
|
26698
26814
|
if (!project) throw svcError14("PROJECT_NOT_FOUND", 404);
|
|
26699
|
-
|
|
26700
|
-
if (wfm.importedAppName) {
|
|
26701
|
-
runAppNames = [wfm.importedAppName];
|
|
26702
|
-
} else {
|
|
26703
|
-
const appIds = db.select({ applicationId: conductorRuns.applicationId }).from(conductorRuns).where(eq(conductorRuns.workflowMarkdownId, wfm.id)).all().map((r) => r.applicationId);
|
|
26704
|
-
runAppNames = appIds.length > 0 ? db.select({ name: applications.name }).from(applications).where(inArray(applications.id, appIds)).all().map((a) => a.name) : [];
|
|
26705
|
-
}
|
|
26706
|
-
if (!runAppNames.includes(appName)) throw svcError14("APP_NOT_IN_RUN", 404);
|
|
26815
|
+
if (!runApplicationNames(db, wfm).includes(appName)) throw svcError14("APP_NOT_IN_RUN", 404);
|
|
26707
26816
|
const projectDir2 = resolve2(workspacePath, project.workspaceFolderName);
|
|
26708
26817
|
const appFolder = resolveAppFolderName(projectDir2, appName);
|
|
26709
26818
|
const absolute = resolve2(projectDir2, appFolder, "CHANGELOG.md");
|
|
@@ -26716,6 +26825,30 @@ function getRunApplicationChangelog(db, workspacePath, workflowMarkdownId, appNa
|
|
|
26716
26825
|
content: readFileSync17(absolute, "utf-8")
|
|
26717
26826
|
};
|
|
26718
26827
|
}
|
|
26828
|
+
function runApplicationNames(db, wfm) {
|
|
26829
|
+
if (wfm.importedAppName) return [wfm.importedAppName];
|
|
26830
|
+
const appIds = db.select({ applicationId: conductorRuns.applicationId }).from(conductorRuns).where(eq(conductorRuns.workflowMarkdownId, wfm.id)).all().map((r) => r.applicationId);
|
|
26831
|
+
if (appIds.length === 0) return [];
|
|
26832
|
+
return db.select({ name: applications.name }).from(applications).where(inArray(applications.id, appIds)).all().map((a) => a.name);
|
|
26833
|
+
}
|
|
26834
|
+
function getRunApplicationTracker(db, workspacePath, workflowMarkdownId, appName) {
|
|
26835
|
+
const wfm = db.select().from(workflowMarkdowns).where(eq(workflowMarkdowns.id, workflowMarkdownId)).get();
|
|
26836
|
+
if (!wfm) throw svcError14("RUN_NOT_FOUND", 404);
|
|
26837
|
+
if (wfm.conductorType === "prepare") throw svcError14("NO_TRACKER_FOR_CONDUCTOR", 400);
|
|
26838
|
+
const project = db.select().from(projects).where(eq(projects.id, wfm.projectId)).get();
|
|
26839
|
+
if (!project) throw svcError14("PROJECT_NOT_FOUND", 404);
|
|
26840
|
+
if (!runApplicationNames(db, wfm).includes(appName)) throw svcError14("APP_NOT_IN_RUN", 404);
|
|
26841
|
+
const projectDir2 = resolve2(workspacePath, project.workspaceFolderName);
|
|
26842
|
+
const absolute = resolve2(resolveRunTrackingFilePath(projectDir2, appName, wfm.conductorType));
|
|
26843
|
+
if (absolute !== projectDir2 && !absolute.startsWith(projectDir2 + sep2))
|
|
26844
|
+
throw svcError14("INVALID_PATH", 400);
|
|
26845
|
+
if (!existsSync23(absolute)) throw svcError14("TRACKER_NOT_FOUND", 404);
|
|
26846
|
+
return {
|
|
26847
|
+
applicationName: appName,
|
|
26848
|
+
filePath: relative(workspacePath, absolute).replace(/\\/g, "/"),
|
|
26849
|
+
content: readFileSync17(absolute, "utf-8")
|
|
26850
|
+
};
|
|
26851
|
+
}
|
|
26719
26852
|
function toDetail(db, projectFolder, wfm, workspacePath) {
|
|
26720
26853
|
if (wfm.importedAppName) {
|
|
26721
26854
|
return {
|
|
@@ -27958,6 +28091,17 @@ function workflowRoutes(db, workspacePath) {
|
|
|
27958
28091
|
return errorResponse16(c, e);
|
|
27959
28092
|
}
|
|
27960
28093
|
});
|
|
28094
|
+
app.get("/runs/:id/tracker", (c) => {
|
|
28095
|
+
const id = Number(c.req.param("id"));
|
|
28096
|
+
if (Number.isNaN(id)) return c.json({ code: "INVALID_ID" }, 400);
|
|
28097
|
+
const appName = c.req.query("app");
|
|
28098
|
+
if (!appName) return c.json({ code: "APP_REQUIRED" }, 400);
|
|
28099
|
+
try {
|
|
28100
|
+
return c.json(getRunApplicationTracker(db, workspacePath, id, appName));
|
|
28101
|
+
} catch (e) {
|
|
28102
|
+
return errorResponse16(c, e);
|
|
28103
|
+
}
|
|
28104
|
+
});
|
|
27961
28105
|
app.post("/runs/:id/force-stop", (c) => {
|
|
27962
28106
|
const id = Number(c.req.param("id"));
|
|
27963
28107
|
if (Number.isNaN(id)) return c.json({ code: "INVALID_ID" }, 400);
|
package/package.json
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@rashidee/co2",
|
|
3
|
-
"version": "1.3.
|
|
4
|
-
"description": "Compound Context Studio
|
|
5
|
-
"type": "module",
|
|
6
|
-
"license": "MIT",
|
|
7
|
-
"publishConfig": {
|
|
8
|
-
"access": "public"
|
|
9
|
-
},
|
|
10
|
-
"engines": {
|
|
11
|
-
"node": ">=22"
|
|
12
|
-
},
|
|
13
|
-
"bin": {
|
|
14
|
-
"co2": "dist/index.js"
|
|
15
|
-
},
|
|
16
|
-
"files": [
|
|
17
|
-
"dist",
|
|
18
|
-
"static",
|
|
19
|
-
"drizzle",
|
|
20
|
-
"plugin"
|
|
21
|
-
],
|
|
22
|
-
"scripts": {
|
|
23
|
-
"build": "tsup && node ../../scripts/copy-migrations.mjs && node ../../scripts/copy-web.mjs && node ../../scripts/copy-plugin.mjs"
|
|
24
|
-
},
|
|
25
|
-
"dependencies": {
|
|
26
|
-
"better-sqlite3": "^12.2.0",
|
|
27
|
-
"node-pty": "^1.0.0"
|
|
28
|
-
},
|
|
29
|
-
"devDependencies": {
|
|
30
|
-
"@co2-cli/core": "workspace:*",
|
|
31
|
-
"@co2-cli/server": "workspace:*",
|
|
32
|
-
"@hono/node-server": "^1.13.0",
|
|
33
|
-
"@hono/zod-validator": "^0.4.1",
|
|
34
|
-
"commander": "^12.1.0",
|
|
35
|
-
"drizzle-orm": "^0.36.0",
|
|
36
|
-
"hono": "^4.6.0",
|
|
37
|
-
"picocolors": "^1.1.0",
|
|
38
|
-
"tsup": "^8.3.0",
|
|
39
|
-
"zod": "^3.23.8"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@rashidee/co2",
|
|
3
|
+
"version": "1.3.27",
|
|
4
|
+
"description": "Compound Context Studio  self-hosted team context authoring for CO2 projects",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"publishConfig": {
|
|
8
|
+
"access": "public"
|
|
9
|
+
},
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=22"
|
|
12
|
+
},
|
|
13
|
+
"bin": {
|
|
14
|
+
"co2": "dist/index.js"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"static",
|
|
19
|
+
"drizzle",
|
|
20
|
+
"plugin"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsup && node ../../scripts/copy-migrations.mjs && node ../../scripts/copy-web.mjs && node ../../scripts/copy-plugin.mjs"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"better-sqlite3": "^12.2.0",
|
|
27
|
+
"node-pty": "^1.0.0"
|
|
28
|
+
},
|
|
29
|
+
"devDependencies": {
|
|
30
|
+
"@co2-cli/core": "workspace:*",
|
|
31
|
+
"@co2-cli/server": "workspace:*",
|
|
32
|
+
"@hono/node-server": "^1.13.0",
|
|
33
|
+
"@hono/zod-validator": "^0.4.1",
|
|
34
|
+
"commander": "^12.1.0",
|
|
35
|
+
"drizzle-orm": "^0.36.0",
|
|
36
|
+
"hono": "^4.6.0",
|
|
37
|
+
"picocolors": "^1.1.0",
|
|
38
|
+
"tsup": "^8.3.0",
|
|
39
|
+
"zod": "^3.23.8"
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-MOJQB5TN-DMVlpoSf.js";import{p as f}from"./chunk-JWPE2WC7-D9BTDnXt.js";import{_ as n,l as o}from"./index-C26387Mq.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-DNym54iM.js";var v=d().RailroadAbnf.parser.LangiumParser,l=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),i=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:i,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return l(e.element);case"AbnfOptionalGroup":return{type:"optional",element:l(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:l(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},w={parser:R,db:a,renderer:u,styles:p};export{w as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-
|
|
1
|
+
import{Y as ln,$ as an,a0 as y,a1 as tn,a2 as F,a3 as q,a4 as _,a5 as un,a6 as rn,a7 as J,a8 as o,a9 as j,aa as sn,ab as on,ac as fn}from"./index-C26387Mq.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(fn(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=A.apply(this,arguments)-an,B=un(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(un(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<rn)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(on((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-rn/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|