@skyhook-io/radar-app 1.14.3 → 1.14.5

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 (34) hide show
  1. package/package.json +1 -1
  2. package/src/api/client.ts +2 -0
  3. package/src/api/diagnose.ts +7 -1
  4. package/src/components/diagnose/AIMarkdown.tsx +8 -3
  5. package/src/components/diagnose/ActivityTurn.tsx +1 -1
  6. package/src/components/diagnose/AssessmentCard.tsx +269 -238
  7. package/src/components/diagnose/InvestigationEvidencePane.test.tsx +47 -0
  8. package/src/components/diagnose/InvestigationEvidencePane.tsx +15 -2
  9. package/src/components/diagnose/InvestigationEvidenceSections.tsx +1 -1
  10. package/src/components/diagnose/InvestigationView.tsx +32 -24
  11. package/src/components/diagnose/investigationCase.test.tsx +83 -0
  12. package/src/components/diagnose/investigationCase.ts +3 -2
  13. package/src/components/diagnose/investigationEvidence/adapters/coverage.test.tsx +22 -0
  14. package/src/components/diagnose/investigationEvidence/adapters/diagnose.test.ts +8 -2
  15. package/src/components/diagnose/investigationEvidence/adapters/diagnose.ts +1 -1
  16. package/src/components/diagnose/investigationEvidence/adapters/listings.ts +2 -0
  17. package/src/components/diagnose/investigationEvidence/adapters/logs.test.ts +60 -0
  18. package/src/components/diagnose/investigationEvidence/adapters/logs.ts +7 -3
  19. package/src/components/diagnose/investigationEvidence/bodies/streams.tsx +1 -1
  20. package/src/components/diagnose/investigationEvidence/observations.ts +10 -5
  21. package/src/components/diagnose/investigationEvidence/types.ts +1 -1
  22. package/src/components/diagnose/investigationState.test.ts +2 -2
  23. package/src/components/diagnose/investigationState.ts +2 -2
  24. package/src/components/diagnose/investigationStory.ts +1 -1
  25. package/src/components/diagnose/parts.test.tsx +153 -2
  26. package/src/components/home/mcpToolCatalog.ts +27 -0
  27. package/src/components/rightsizing/RightsizingScanView.tsx +194 -63
  28. package/src/components/rightsizing/empty-state.test.tsx +67 -0
  29. package/src/components/rightsizing/model.test.ts +118 -1
  30. package/src/components/rightsizing/model.ts +36 -13
  31. package/src/components/rightsizing/notices.test.tsx +175 -0
  32. package/src/components/ui/Markdown.tsx +33 -6
  33. package/src/components/ui/Omnibar.tsx +82 -69
  34. package/src/components/workload/WorkloadView.tsx +7 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skyhook-io/radar-app",
3
- "version": "1.14.3",
3
+ "version": "1.14.5",
4
4
  "description": "Radar's full web UI as a reusable React component. Used by Radar's own binary and by external consumers like Radar Cloud.",
5
5
  "repository": {
6
6
  "type": "git",
package/src/api/client.ts CHANGED
@@ -3366,6 +3366,8 @@ export interface RightsizingScanCoverage {
3366
3366
  completedBatches: number;
3367
3367
  restrictedKinds?: string[];
3368
3368
  unavailableKinds?: string[];
3369
+ partiallyCachedKinds?: string[];
3370
+ daemonSetsWithoutNodes?: number;
3369
3371
  }
3370
3372
 
3371
3373
  export interface RightsizingScanResponse {
@@ -15,6 +15,10 @@ export interface AgentInfo {
15
15
  hosted?: boolean;
16
16
  /** Hosted backends opt in only when they implement assessment-bound, tool-free explanations. */
17
17
  assessmentExplanations?: boolean;
18
+ /** The backend performs a user-confirmed Apply turn. Absent means read-only. */
19
+ apply?: boolean;
20
+ /** The backend re-checks the resource after an Apply. Absent means it does not. */
21
+ verification?: boolean;
18
22
  }
19
23
 
20
24
  export interface AgentsResponse {
@@ -56,7 +60,7 @@ export interface RootCauseEvidence {
56
60
  * How the agent frames one cited Radar result. Roles order cards; they never
57
61
  * hide one.
58
62
  *
59
- * One half of a Go↔TS contract: `evidenceRoles` in internal/ai/parse.go and
63
+ * One half of a Go↔TS contract: `Roles` in pkg/investigation/verdict.go and
60
64
  * EVIDENCE_ROLES in components/diagnose/investigationCase.ts must list exactly
61
65
  * these roles. Change all three together.
62
66
  */
@@ -133,6 +137,8 @@ export interface Diagnosis {
133
137
  unlinkedEvidence?: number;
134
138
  /** The agent's evidence field was not a list, so none of it could be read. */
135
139
  evidenceMalformed?: boolean;
140
+ /** Valid next steps, open items and ruled-out hypotheses a count cap left out of this record. */
141
+ omittedEntries?: number;
136
142
  ruledOut?: DiagnosisRuledOut[];
137
143
  report: string;
138
144
  /** The agent's evidence ledger, written before its verdict block; shown in Activity, never in Findings. */
@@ -1,4 +1,4 @@
1
- import { useState } from "react";
1
+ import { useState, type ComponentProps } from "react";
2
2
  import { AlertTriangle, Copy, Check } from "lucide-react";
3
3
  import { Markdown } from "../ui/Markdown";
4
4
  import { Tooltip } from "../ui/Tooltip";
@@ -59,7 +59,7 @@ export function CopyButton({ text, label }: { text: string; label: string }) {
59
59
  // it as a fence — it leaks the literal ``` and renders an empty code box. Coerce
60
60
  // fence markers onto their own lines and push trailing content off the opener so
61
61
  // the block renders. (Well-formed markdown is unaffected.)
62
- function tidyFences(md: string): string {
62
+ export function tidyFences(md: string): string {
63
63
  if (!md || !md.includes("```")) return md;
64
64
  return md
65
65
  .replace(/([^\n])```/g, "$1\n\n```") // opener/closer must start a line
@@ -75,12 +75,17 @@ const SOFT_INLINE_CODE =
75
75
  export function AIMarkdown({
76
76
  className,
77
77
  children,
78
+ codeActions,
78
79
  }: {
79
80
  className?: string;
80
81
  children: string;
82
+ codeActions?: ComponentProps<typeof Markdown>["codeActions"];
81
83
  }) {
82
84
  return (
83
- <Markdown className={`${SOFT_INLINE_CODE} ${className ?? ""}`}>
85
+ <Markdown
86
+ className={`${SOFT_INLINE_CODE} ${className ?? ""}`}
87
+ codeActions={codeActions}
88
+ >
84
89
  {tidyFences(children)}
85
90
  </Markdown>
86
91
  );
@@ -664,7 +664,7 @@ function RunningStatus({ label }: { label: string }) {
664
664
  · still working — no update for {sinceChange}s
665
665
  </span>
666
666
  )}
667
- {counter && (
667
+ {counter && !stalled && (
668
668
  <span className="ml-auto shrink-0 tabular-nums text-theme-text-tertiary">
669
669
  {counter}
670
670
  </span>