@kaddo/cli 3.76.0 → 3.77.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.
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>admin</title>
8
- <script type="module" crossorigin src="/assets/index-BuxKrty5.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-D0l52rub.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-BPQdYfAp.css">
10
10
  </head>
11
11
  <body>
@@ -585,6 +585,7 @@ var SystemMapNodeSchema = z.object({
585
585
  id: z.string(),
586
586
  type: z.string(),
587
587
  label: z.string(),
588
+ dimension: z.enum(["system", "knowledge", "delivery", "implementation", "unknown"]),
588
589
  status: z.string().optional(),
589
590
  path: z.string().optional(),
590
591
  workItemRef: z.string().optional(),
@@ -615,7 +616,9 @@ var SystemMapProjectionSchema = z.object({
615
616
  nodeCount: z.number(),
616
617
  relationshipCount: z.number(),
617
618
  coverage: z.enum(["good", "partial", "sparse", "empty"]),
618
- available: z.boolean()
619
+ available: z.boolean(),
620
+ dimensions: z.object({ system: z.number(), knowledge: z.number(), delivery: z.number(), implementation: z.number(), unknown: z.number() }),
621
+ topologyAvailable: z.boolean()
619
622
  })
620
623
  });
621
624
  var ErrorResponseSchema = z.object({
package/dist/core.js CHANGED
@@ -8713,6 +8713,43 @@ function buildRefinementHandoff(dir, workItemId) {
8713
8713
  }
8714
8714
 
8715
8715
  // src/core/system-map.ts
8716
+ function dimensionOf(type) {
8717
+ switch (type) {
8718
+ case "module":
8719
+ case "application":
8720
+ case "service":
8721
+ case "component":
8722
+ case "api":
8723
+ case "interface":
8724
+ case "database":
8725
+ case "queue":
8726
+ case "job":
8727
+ case "external-system":
8728
+ return "system";
8729
+ case "business":
8730
+ case "product":
8731
+ case "tech":
8732
+ case "delivery":
8733
+ case "capability":
8734
+ case "decision":
8735
+ case "project":
8736
+ case "knowledge-capsule":
8737
+ return "knowledge";
8738
+ case "work-item":
8739
+ case "initiative":
8740
+ case "roadmap-candidate":
8741
+ case "release":
8742
+ return "delivery";
8743
+ case "code-glob":
8744
+ case "file":
8745
+ case "directory":
8746
+ case "migration":
8747
+ case "configuration-artifact":
8748
+ return "implementation";
8749
+ default:
8750
+ return "unknown";
8751
+ }
8752
+ }
8716
8753
  var EDGE_LABELS = {
8717
8754
  informs: "informs",
8718
8755
  belongs_to: "belongs to",
@@ -8724,13 +8761,16 @@ var EDGE_LABELS = {
8724
8761
  provides_external_context: "provides external context",
8725
8762
  uses_external_knowledge: "uses external knowledge"
8726
8763
  };
8764
+ function emptyDimensions() {
8765
+ return { system: 0, knowledge: 0, delivery: 0, implementation: 0, unknown: 0 };
8766
+ }
8727
8767
  function emptyProjection(name, structure) {
8728
8768
  return {
8729
8769
  system: { name },
8730
8770
  nodes: [],
8731
8771
  relationships: [],
8732
8772
  groups: [],
8733
- metadata: { projectName: name, structure, nodeCount: 0, relationshipCount: 0, coverage: "empty", available: false }
8773
+ metadata: { projectName: name, structure, nodeCount: 0, relationshipCount: 0, coverage: "empty", available: false, dimensions: emptyDimensions(), topologyAvailable: false }
8734
8774
  };
8735
8775
  }
8736
8776
  function getSystemMapProjection(dir) {
@@ -8763,6 +8803,8 @@ function getSystemMapProjection(dir) {
8763
8803
  ...mapped.map((m) => ({ id: m.id, label: m.id, repositoryId: m.id, available: m.repoPath ? exists(join(dir, m.repoPath)) : false }))
8764
8804
  ];
8765
8805
  const groups = allGroups.filter((g) => usedGroups.has(g.id) || g.available === false);
8806
+ const dimensions = emptyDimensions();
8807
+ for (const n of nodes) dimensions[n.dimension]++;
8766
8808
  return {
8767
8809
  system: { name: config.project.name },
8768
8810
  nodes,
@@ -8774,12 +8816,33 @@ function getSystemMapProjection(dir) {
8774
8816
  nodeCount: nodes.length,
8775
8817
  relationshipCount: relationships.length,
8776
8818
  coverage: hints.quality,
8777
- available: nodes.length > 0
8819
+ available: nodes.length > 0,
8820
+ dimensions,
8821
+ topologyAvailable: dimensions.system > 0
8778
8822
  }
8779
8823
  };
8780
8824
  }
8825
+ function getSystemNodeContext(dir, nodeId) {
8826
+ const projection = getSystemMapProjection(dir);
8827
+ const byId = new Map(projection.nodes.map((n) => [n.id, n]));
8828
+ const node = byId.get(nodeId);
8829
+ if (!node) return null;
8830
+ const incoming = [];
8831
+ const outgoing = [];
8832
+ for (const r of projection.relationships) {
8833
+ if (r.target === nodeId) {
8834
+ const s = byId.get(r.source);
8835
+ if (s) incoming.push({ relationship: r, node: s });
8836
+ }
8837
+ if (r.source === nodeId) {
8838
+ const t = byId.get(r.target);
8839
+ if (t) outgoing.push({ relationship: r, node: t });
8840
+ }
8841
+ }
8842
+ return { node, incoming, outgoing };
8843
+ }
8781
8844
  function toNode(n, knowledgeByPath, wiModules, groupIds) {
8782
- const node = { id: n.id, type: n.type, label: n.label };
8845
+ const node = { id: n.id, type: n.type, label: n.label, dimension: dimensionOf(n.type) };
8783
8846
  if (n.status) node.status = n.status;
8784
8847
  if (n.path && !/^([a-zA-Z]:[\\/]|\/)/.test(n.path)) node.path = n.path;
8785
8848
  if (n.type === "work-item") {
@@ -8810,6 +8873,7 @@ export {
8810
8873
  discoverWorkItems,
8811
8874
  exists,
8812
8875
  getSystemMapProjection,
8876
+ getSystemNodeContext,
8813
8877
  getWorkItem,
8814
8878
  getWorkItemCaptureDefinition,
8815
8879
  getWorkItemForEdit,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaddo/cli",
3
- "version": "3.76.0",
3
+ "version": "3.77.0",
4
4
  "description": "Knowledge Driven Development toolkit",
5
5
  "license": "MIT",
6
6
  "repository": {