@rashidee/co2 1.3.27 → 1.3.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/.co2-dat/app.db +0 -0
  2. package/dist/.co2-dat/app.db-shm +0 -0
  3. package/dist/.co2-dat/app.db-wal +0 -0
  4. package/dist/index.js +55 -9
  5. package/package.json +2 -2
  6. package/plugin/.claude-plugin/plugin.json +22 -22
  7. package/plugin/skills/conductor-defect/SKILL.md +924 -905
  8. package/static/assets/{abnfDiagram-VRR7QNED-BqqVu83_.js → abnfDiagram-VRR7QNED-DGTYgRnP.js} +1 -1
  9. package/static/assets/{arc-D9zT1NvB.js → arc-7174fU_E.js} +1 -1
  10. package/static/assets/{architectureDiagram-ZJ3FMSHR-D-34OZne.js → architectureDiagram-ZJ3FMSHR-iMcDhvoF.js} +1 -1
  11. package/static/assets/{blockDiagram-677ZJIJ3-DzXrZXuu.js → blockDiagram-677ZJIJ3-kM7BtLQy.js} +1 -1
  12. package/static/assets/{c4Diagram-LMCZKHZV-CZWILWBU.js → c4Diagram-LMCZKHZV-CIYw9y0n.js} +1 -1
  13. package/static/assets/channel-CZ6M3VBW.js +1 -0
  14. package/static/assets/{chunk-2Q5K7J3B-BnyVGcHp.js → chunk-2Q5K7J3B-CwNDUll4.js} +1 -1
  15. package/static/assets/{chunk-32BRIVSS-D6kWVoTq.js → chunk-32BRIVSS-xUXN4448.js} +1 -1
  16. package/static/assets/{chunk-5VM5RSS4-BDuQxGsi.js → chunk-5VM5RSS4-DSuopQRa.js} +1 -1
  17. package/static/assets/{chunk-EX3LRPZG-CzemsC9C.js → chunk-EX3LRPZG-DaP1AUXn.js} +1 -1
  18. package/static/assets/{chunk-JWPE2WC7-D9BTDnXt.js → chunk-JWPE2WC7-BbcXokVM.js} +1 -1
  19. package/static/assets/{chunk-MOJQB5TN-DMVlpoSf.js → chunk-MOJQB5TN-BEvtZ0cJ.js} +1 -1
  20. package/static/assets/{chunk-RYQCIY6F-Cr59tI34.js → chunk-RYQCIY6F-Cf9iaXLG.js} +1 -1
  21. package/static/assets/{chunk-V7JOEXUC-CItFH4TC.js → chunk-V7JOEXUC-VoptRUQS.js} +1 -1
  22. package/static/assets/{chunk-VR4S4FIN-D-5bD2Rp.js → chunk-VR4S4FIN-D8MhSl2b.js} +1 -1
  23. package/static/assets/{chunk-XXDRQBXY-BYTedp-b.js → chunk-XXDRQBXY-ChGrQH2-.js} +1 -1
  24. package/static/assets/classDiagram-OUVF2IWQ-BNo52yZj.js +1 -0
  25. package/static/assets/classDiagram-v2-EOCWNBFH-BNo52yZj.js +1 -0
  26. package/static/assets/{cose-bilkent-JH36ORCC-ph9z6Rag.js → cose-bilkent-JH36ORCC-_7_J1ueO.js} +1 -1
  27. package/static/assets/{cynefin-VYW2F7L2-DNym54iM.js → cynefin-VYW2F7L2-D7ojj48a.js} +1 -1
  28. package/static/assets/{cynefinDiagram-TSTJHNR4-BFhXROr4.js → cynefinDiagram-TSTJHNR4-CzZCuws6.js} +1 -1
  29. package/static/assets/{dagre-VKFMJZFB-C8Bvbfep.js → dagre-VKFMJZFB-DrShlPqK.js} +1 -1
  30. package/static/assets/{diagram-FQU43EPY-dou1k9fZ.js → diagram-FQU43EPY-Ba6vyx0R.js} +1 -1
  31. package/static/assets/{diagram-G47NLZAW-DTVkGSut.js → diagram-G47NLZAW-g1iqjkWC.js} +1 -1
  32. package/static/assets/{diagram-NH7WQ7WH-CLF_alfd.js → diagram-NH7WQ7WH-Yn0iGo61.js} +1 -1
  33. package/static/assets/{diagram-OA4YK3LP-CVQqfvRy.js → diagram-OA4YK3LP-BqNMfzEH.js} +1 -1
  34. package/static/assets/{diagram-WEI45ONY-X6ugzDOD.js → diagram-WEI45ONY-Jv0HskWN.js} +1 -1
  35. package/static/assets/{ebnfDiagram-CCIWWBDH-PgskU8v_.js → ebnfDiagram-CCIWWBDH-EVPmY5ND.js} +1 -1
  36. package/static/assets/{erDiagram-Q63AITRT-CBW5aC2C.js → erDiagram-Q63AITRT-BrFEQzOf.js} +1 -1
  37. package/static/assets/{flowDiagram-23GEKE2U-BbyDOz5x.js → flowDiagram-23GEKE2U-CKQmfCK8.js} +1 -1
  38. package/static/assets/{ganttDiagram-NO4QXBWP-CceMROcR.js → ganttDiagram-NO4QXBWP-DOQ3sYfu.js} +1 -1
  39. package/static/assets/{gitGraphDiagram-IHSO6WYX-t2R0tkUO.js → gitGraphDiagram-IHSO6WYX-DamxyOBX.js} +1 -1
  40. package/static/assets/{index-BM5AGe_l.css → index-BRho3Z-u.css} +1 -1
  41. package/static/assets/index-DKK3AwQd.js +496 -0
  42. package/static/assets/{infoDiagram-FWYZ7A6U-Du1gMFcI.js → infoDiagram-FWYZ7A6U-BvfLUhKQ.js} +1 -1
  43. package/static/assets/{ishikawaDiagram-FXEZZL3T-VAYbdalo.js → ishikawaDiagram-FXEZZL3T-Bjcn3YwT.js} +1 -1
  44. package/static/assets/{journeyDiagram-5HDEW3XC-DkLYEpM2.js → journeyDiagram-5HDEW3XC-C7zgXG_P.js} +1 -1
  45. package/static/assets/{kanban-definition-HUTT4EX6-BCzd09tX.js → kanban-definition-HUTT4EX6-DkQNMRHb.js} +1 -1
  46. package/static/assets/{linear-Dm0uNoIF.js → linear-DUJurxs_.js} +1 -1
  47. package/static/assets/{mindmap-definition-LN4V7U3C-D69_xTUO.js → mindmap-definition-LN4V7U3C-Ca8Rx7ow.js} +1 -1
  48. package/static/assets/{pegDiagram-2B236MQR-D6t8-mr5.js → pegDiagram-2B236MQR-DM2f6zFq.js} +1 -1
  49. package/static/assets/{pieDiagram-ENE6RG2P-CRhMSL7L.js → pieDiagram-ENE6RG2P-DZQJ9aJe.js} +1 -1
  50. package/static/assets/{quadrantDiagram-ABIIQ3AL-DLSgxv-x.js → quadrantDiagram-ABIIQ3AL-dN5N3iXz.js} +1 -1
  51. package/static/assets/{railroadDiagram-RFXS5EU6-b1SreCxV.js → railroadDiagram-RFXS5EU6-CxVvDIJC.js} +1 -1
  52. package/static/assets/{requirementDiagram-TGXJPOKE-BV4CNLIo.js → requirementDiagram-TGXJPOKE-D8gSZdJO.js} +1 -1
  53. package/static/assets/{sankeyDiagram-HTMAVEWB-BiFv1ux8.js → sankeyDiagram-HTMAVEWB-CKqKdt9n.js} +1 -1
  54. package/static/assets/{sequenceDiagram-DBY2YBRQ-Dx4t2iJL.js → sequenceDiagram-DBY2YBRQ-BUTyVZbB.js} +1 -1
  55. package/static/assets/{sizeCapture-X5ZJPWSS-CnQy7abz.js → sizeCapture-X5ZJPWSS-BfeUsrrc.js} +1 -1
  56. package/static/assets/{stateDiagram-2N3HPSRC-Dydsj0oL.js → stateDiagram-2N3HPSRC-CccstMMZ.js} +1 -1
  57. package/static/assets/stateDiagram-v2-6OUMAXLB-BYik3bHQ.js +1 -0
  58. package/static/assets/{swimlanes-5IMT3BWC-CxCwYCDy.js → swimlanes-5IMT3BWC-WuBhb5Nm.js} +2 -2
  59. package/static/assets/swimlanesDiagram-G3AALYLV-pwhS7TR2.js +8 -0
  60. package/static/assets/{timeline-definition-FHXFAJF6-C_Fi6bNQ.js → timeline-definition-FHXFAJF6-DE4hFXfn.js} +1 -1
  61. package/static/assets/{vennDiagram-L72KCM5P-CgwC5qPZ.js → vennDiagram-L72KCM5P-lV9K4hR0.js} +1 -1
  62. package/static/assets/{wardleyDiagram-EHGQE667-s9kPgnSC.js → wardleyDiagram-EHGQE667-Dbkoleze.js} +1 -1
  63. package/static/assets/{xychartDiagram-FW5EYKEG-DBDMMVMd.js → xychartDiagram-FW5EYKEG-BHYUnMjh.js} +1 -1
  64. package/static/index.html +2 -2
  65. package/static/assets/channel-DKYjk4Z0.js +0 -1
  66. package/static/assets/classDiagram-OUVF2IWQ-BypGwdom.js +0 -1
  67. package/static/assets/classDiagram-v2-EOCWNBFH-BypGwdom.js +0 -1
  68. package/static/assets/index-C26387Mq.js +0 -496
  69. package/static/assets/stateDiagram-v2-6OUMAXLB-C8SPn3Oh.js +0 -1
  70. package/static/assets/swimlanesDiagram-G3AALYLV-74ote7Bb.js +0 -8
Binary file
Binary file
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.27",
6813
- description: "Compound Context Studio \xC3\xA2\xE2\u201A\xAC\xE2\u20AC\x9D self-hosted team context authoring for CO2 projects",
6812
+ version: "1.3.28",
6813
+ description: "Compound Context Studio \xC3\u0192\xC2\xA2\xC3\xA2\xE2\u20AC\u0161\xC2\xAC\xC3\xA2\xE2\u201A\xAC\xC2\x9D self-hosted team context authoring for CO2 projects",
6814
6814
  type: "module",
6815
6815
  license: "MIT",
6816
6816
  publishConfig: {
@@ -12320,8 +12320,10 @@ var bugReports = sqliteTable("bug_reports", {
12320
12320
  title: text("title").notNull(),
12321
12321
  description: text("description"),
12322
12322
  // [v1.5.1] severity dropped — the CO2 BUG.md standard carries no severity level.
12323
+ // 'rejected' — withdrawn report, superseded by a new one (type-level only; the column has
12324
+ // no CHECK constraint, so no migration is needed).
12323
12325
  status: text("status", {
12324
- enum: ["open", "in_fix", "fixed", "verified", "closed"]
12326
+ enum: ["open", "in_fix", "fixed", "verified", "closed", "rejected"]
12325
12327
  }).notNull().default("open"),
12326
12328
  // [v1.8.0] CO2 BUG.md is grouped by module — the module name verbatim from the CLAUDE.md
12327
12329
  // registry / imported BUG.md section (migration 0014 ALTER ADD). NULL → `# Common Module`.
@@ -19567,7 +19569,7 @@ var dashboardProjectSchema = external_exports.object({
19567
19569
  });
19568
19570
 
19569
19571
  // ../core/src/schemas/defect.ts
19570
- var bugStatusSchema = external_exports.enum(["open", "in_fix", "fixed", "verified", "closed"]);
19572
+ var bugStatusSchema = external_exports.enum(["open", "in_fix", "fixed", "verified", "closed", "rejected"]);
19571
19573
  var EDITABLE_BUG_STATUSES = ["open", "in_fix"];
19572
19574
  var REOPENABLE_BUG_STATUSES = ["open", "in_fix", "fixed"];
19573
19575
  var reopenBugsSchema = external_exports.object({
@@ -24579,10 +24581,18 @@ function updateBugReport(db, workspacePath, bugId, input) {
24579
24581
  syncBugMdToDisk(db, workspacePath, existing.applicationId, bugId);
24580
24582
  }
24581
24583
  function updateBugStatus(db, workspacePath, bugId, status) {
24582
- const existing = db.select({ id: bugReports.id, applicationId: bugReports.applicationId }).from(bugReports).where(and(eq(bugReports.id, bugId), eq(bugReports.isDeleted, 0))).get();
24584
+ const existing = db.select({
24585
+ id: bugReports.id,
24586
+ title: bugReports.title,
24587
+ applicationId: bugReports.applicationId
24588
+ }).from(bugReports).where(and(eq(bugReports.id, bugId), eq(bugReports.isDeleted, 0))).get();
24583
24589
  if (!existing) throw svcError11("BUG_NOT_FOUND", 404);
24584
24590
  db.update(bugReports).set({ status, updatedAt: (/* @__PURE__ */ new Date()).toISOString() }).where(eq(bugReports.id, bugId)).run();
24585
- syncBugMdToDisk(db, workspacePath, existing.applicationId, bugId);
24591
+ if (status === "rejected") {
24592
+ removeBugBulletFromDisk(db, workspacePath, existing.applicationId, existing);
24593
+ } else {
24594
+ syncBugMdToDisk(db, workspacePath, existing.applicationId, bugId);
24595
+ }
24586
24596
  }
24587
24597
  function moveBugReport(db, workspacePath, bugId, input) {
24588
24598
  const existing = db.select().from(bugReports).where(and(eq(bugReports.id, bugId), eq(bugReports.isDeleted, 0))).get();
@@ -24838,7 +24848,13 @@ function mergeBugIntoBugMd(content, bug, semver, moduleCategory, mode) {
24838
24848
  return bom + lines.join(eol);
24839
24849
  }
24840
24850
  function writeBugMdFile(db, workspacePath, app, projectFolderName) {
24841
- const bugs = db.select().from(bugReports).where(and(eq(bugReports.applicationId, app.id), eq(bugReports.isDeleted, 0))).all();
24851
+ const bugs = db.select().from(bugReports).where(
24852
+ and(
24853
+ eq(bugReports.applicationId, app.id),
24854
+ eq(bugReports.isDeleted, 0),
24855
+ ne(bugReports.status, "rejected")
24856
+ )
24857
+ ).all();
24842
24858
  const modules = db.select({ name: projectModules.name, category: projectModules.category }).from(projectModules).where(and(eq(projectModules.applicationId, app.id), eq(projectModules.isDeleted, 0))).orderBy(projectModules.displayOrder, projectModules.id).all();
24843
24859
  const semverByVersionId = new Map(
24844
24860
  db.select({ id: prdVersions.id, semver: prdVersions.semver }).from(prdVersions).where(eq(prdVersions.projectId, app.projectId)).all().map((v) => [v.id, v.semver])
@@ -24864,7 +24880,8 @@ function syncBugStatusesFromMaster(db, trackingFilePath, applicationId) {
24864
24880
  let updated = 0;
24865
24881
  const now = (/* @__PURE__ */ new Date()).toISOString();
24866
24882
  for (const row of rows) {
24867
- if (row.status === "verified" || row.status === "closed") continue;
24883
+ if (row.status === "verified" || row.status === "closed" || row.status === "rejected")
24884
+ continue;
24868
24885
  const entry = entries.get(bugCodeAndTitle(row).code);
24869
24886
  if (!entry) continue;
24870
24887
  const next = mapBugStatus(entry.status);
@@ -26683,6 +26700,32 @@ function rescanProjectWorkflows(db, workspacePath, projectId, user, watcherInter
26683
26700
  const currentVersionId = ensureBaselineVersion(db, projectId, user.id);
26684
26701
  const semver = db.select({ semver: prdVersions.semver }).from(prdVersions).where(eq(prdVersions.id, currentVersionId)).get()?.semver ?? null;
26685
26702
  const affectedForCurrentVersion = getVersionAffectedAppIds(db, projectId, currentVersionId);
26703
+ const bugAppsForCurrentVersion = getAppsWithBugsInVersion(db, projectId, currentVersionId);
26704
+ let prunedRuns = 0;
26705
+ const bugAppsByVersion = /* @__PURE__ */ new Map([
26706
+ [currentVersionId, bugAppsForCurrentVersion]
26707
+ ]);
26708
+ const discoveredQualityRows = db.select({ run: conductorRuns, wfmId: workflowMarkdowns.id, filePath: workflowMarkdowns.filePath }).from(conductorRuns).innerJoin(workflowMarkdowns, eq(workflowMarkdowns.id, conductorRuns.workflowMarkdownId)).where(
26709
+ and(
26710
+ eq(conductorRuns.projectId, projectId),
26711
+ inArray(conductorRuns.conductorType, ["quality", "defect"])
26712
+ )
26713
+ ).all();
26714
+ for (const { run, wfmId, filePath } of discoveredQualityRows) {
26715
+ if (!filePath.endsWith("BUG_MASTER.md")) continue;
26716
+ const versionId = run.prdVersionId ?? currentVersionId;
26717
+ let bugApps = bugAppsByVersion.get(versionId);
26718
+ if (!bugApps) {
26719
+ bugApps = getAppsWithBugsInVersion(db, projectId, versionId);
26720
+ bugAppsByVersion.set(versionId, bugApps);
26721
+ }
26722
+ if (bugApps.has(run.applicationId)) continue;
26723
+ stopWatcher(run.id);
26724
+ db.delete(conductorRuns).where(eq(conductorRuns.id, run.id)).run();
26725
+ const remaining = db.select({ id: conductorRuns.id }).from(conductorRuns).where(eq(conductorRuns.workflowMarkdownId, wfmId)).limit(1).get();
26726
+ if (!remaining) db.delete(workflowMarkdowns).where(eq(workflowMarkdowns.id, wfmId)).run();
26727
+ prunedRuns++;
26728
+ }
26686
26729
  let discoveredRuns = 0;
26687
26730
  const now = (/* @__PURE__ */ new Date()).toISOString();
26688
26731
  for (const app of apps) {
@@ -26693,6 +26736,9 @@ function rescanProjectWorkflows(db, workspacePath, projectId, user, watcherInter
26693
26736
  if ((conductorType === "prepare" || conductorType === "develop") && affectedForCurrentVersion !== null && !affectedForCurrentVersion.has(app.id)) {
26694
26737
  continue;
26695
26738
  }
26739
+ if (conductorType === "quality" && !bugAppsForCurrentVersion.has(app.id)) {
26740
+ continue;
26741
+ }
26696
26742
  const aliases = conductorType === "quality" ? ["quality", "defect"] : [conductorType];
26697
26743
  const known = db.select({
26698
26744
  status: conductorRuns.status,
@@ -26786,7 +26832,7 @@ function rescanProjectWorkflows(db, workspacePath, projectId, user, watcherInter
26786
26832
  }
26787
26833
  }
26788
26834
  }
26789
- return { rescannedRuns, discoveredRuns };
26835
+ return { rescannedRuns, discoveredRuns, prunedRuns };
26790
26836
  }
26791
26837
  function getWorkflowRun(db, workflowMarkdownId, workspacePath) {
26792
26838
  const wfm = db.select().from(workflowMarkdowns).where(eq(workflowMarkdowns.id, workflowMarkdownId)).get();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@rashidee/co2",
3
- "version": "1.3.27",
4
- "description": "Compound Context Studio — self-hosted team context authoring for CO2 projects",
3
+ "version": "1.3.28",
4
+ "description": "Compound Context Studio — self-hosted team context authoring for CO2 projects",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
7
  "publishConfig": {
@@ -1,22 +1,22 @@
1
- {
2
- "name": "co2-skills",
3
- "version": "1.8.4",
4
- "description": "Compound Context Skills an opinionated context engineering methodology for AI-driven software development. Generates data models, HTML mockups, technical specifications, test specifications, and orchestrates full-stack development from Agile user stories.",
5
- "author": {
6
- "name": "Rashidee M.Rashid"
7
- },
8
- "repository": "https://github.com/rashidee/co2-skills",
9
- "license": "MIT",
10
- "keywords": [
11
- "context-engineering",
12
- "user-stories",
13
- "code-generation",
14
- "ddd",
15
- "spring-boot",
16
- "laravel",
17
- "playwright",
18
- "mockups",
19
- "specifications",
20
- "data-modeling"
21
- ]
22
- }
1
+ {
2
+ "name": "co2-skills",
3
+ "version": "1.8.5",
4
+ "description": "Compound Context Skills — an opinionated context engineering methodology for AI-driven software development. Generates data models, HTML mockups, technical specifications, test specifications, and orchestrates full-stack development from Agile user stories.",
5
+ "author": {
6
+ "name": "Rashidee M.Rashid"
7
+ },
8
+ "repository": "https://github.com/rashidee/co2-skills",
9
+ "license": "MIT",
10
+ "keywords": [
11
+ "context-engineering",
12
+ "user-stories",
13
+ "code-generation",
14
+ "ddd",
15
+ "spring-boot",
16
+ "laravel",
17
+ "playwright",
18
+ "mockups",
19
+ "specifications",
20
+ "data-modeling"
21
+ ]
22
+ }