@pensar/apex 0.0.64 → 0.0.65-canary.2b59d24e

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 (3) hide show
  1. package/README.md +1 -1
  2. package/build/index.js +126 -125
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  <!-- <a href="https://www.npmjs.com/package/@pensar/apex"><img src="https://img.shields.io/npm/dm/@pensar/apex" alt="npm downloads"></a> -->
10
10
  <a href="./LICENSE"><img src="https://img.shields.io/badge/license-Apache--2.0-blue" alt="Apache 2.0 License"></a>
11
11
  <a href="https://docs.pensar.dev/apex"><img src="https://img.shields.io/badge/docs-docs.pensar.dev/apex-purple?logo=readthedocs&logoColor=white" alt="Documentation"></a>
12
- <a href="https://discord.gg/UdaftduzRR"><img src="https://img.shields.io/badge/Discord-Join%20Us-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
12
+ <a href="https://discord.gg/YBefpbV5M2"><img src="https://img.shields.io/badge/Discord-Join%20Us-5865F2?logo=discord&logoColor=white" alt="Discord"></a>
13
13
  </p>
14
14
 
15
15
  <p align="center">
package/build/index.js CHANGED
@@ -135479,7 +135479,9 @@ var colors = {
135479
135479
  linkColor: RGBA.fromInts(100, 200, 255, 255),
135480
135480
  borderDark: RGBA.fromInts(30, 30, 30, 255),
135481
135481
  backgroundDark: RGBA.fromInts(40, 40, 40, 255),
135482
- backgroundDarker: RGBA.fromInts(10, 10, 10, 255)
135482
+ backgroundDarker: RGBA.fromInts(10, 10, 10, 255),
135483
+ backgroundElement: RGBA.fromInts(40, 40, 40, 255),
135484
+ modalOverlay: RGBA.fromInts(0, 0, 0, 150)
135483
135485
  };
135484
135486
  // src/tui/theme/index.ts
135485
135487
  function getTierColor(colorsOrTier, maybeTier) {
@@ -136480,11 +136482,11 @@ function Footer({
136480
136482
  }, undefined, false, undefined, this),
136481
136483
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(AgentStatus, {}, undefined, false, undefined, this),
136482
136484
  route.data.type === "pentest" && session.active && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
136483
- fg: "white",
136485
+ fg: colors2.text,
136484
136486
  children: [
136485
136487
  "Session: ",
136486
136488
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
136487
- fg: "gray",
136489
+ fg: colors2.textMuted,
136488
136490
  children: session.active.name
136489
136491
  }, undefined, false, undefined, this)
136490
136492
  ]
@@ -137331,7 +137333,7 @@ function Dialog({ size = "medium", onClose, children }) {
137331
137333
  paddingTop: dimensions.height / 4,
137332
137334
  left: 0,
137333
137335
  top: 0,
137334
- backgroundColor: RGBA.fromInts(0, 0, 0, 150),
137336
+ backgroundColor: colors.modalOverlay,
137335
137337
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
137336
137338
  onMouseUp: async (e) => {
137337
137339
  if (renderer.getSelection())
@@ -137340,7 +137342,7 @@ function Dialog({ size = "medium", onClose, children }) {
137340
137342
  },
137341
137343
  width: size === "large" ? 80 : 60,
137342
137344
  maxWidth: dimensions.width - 2,
137343
- backgroundColor: "black",
137345
+ backgroundColor: colors.backgroundElement,
137344
137346
  paddingTop: 1,
137345
137347
  children
137346
137348
  }, undefined, false, undefined, this)
@@ -138561,13 +138563,7 @@ var providerNames = {
138561
138563
  bedrock: "Bedrock",
138562
138564
  local: "Local LLM"
138563
138565
  };
138564
- var providerOrder = [
138565
- "anthropic",
138566
- "openai",
138567
- "openrouter",
138568
- "bedrock",
138569
- "local"
138570
- ];
138566
+ var providerOrder = ["anthropic", "openai", "openrouter", "bedrock", "local"];
138571
138567
  function ModelPicker({
138572
138568
  config: config2,
138573
138569
  selectedModel,
@@ -138809,7 +138805,7 @@ function ModelPicker({
138809
138805
  children: [
138810
138806
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
138811
138807
  fg: colors2.primary,
138812
- children: " URL: "
138808
+ children: " URL: "
138813
138809
  }, undefined, false, undefined, this),
138814
138810
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("input", {
138815
138811
  focused: true,
@@ -138840,7 +138836,7 @@ function ModelPicker({
138840
138836
  children: [
138841
138837
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
138842
138838
  fg: colors2.primary,
138843
- children: " Model: "
138839
+ children: " Model: "
138844
138840
  }, undefined, false, undefined, this),
138845
138841
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("input", {
138846
138842
  focused: true,
@@ -139293,6 +139289,8 @@ var Input = import_react38.forwardRef(function Input2(opts, ref) {
139293
139289
  backgroundColor: "transparent",
139294
139290
  focused,
139295
139291
  cursorColor: colors2.textMuted,
139292
+ textColor: colors2.text,
139293
+ focusedTextColor: colors2.text,
139296
139294
  ...inputProps
139297
139295
  }, undefined, false, undefined, this)
139298
139296
  ]
@@ -146326,11 +146324,8 @@ function ToolDetails({ message }) {
146326
146324
  }
146327
146325
 
146328
146326
  // src/tui/components/pentest/pentest.tsx
146329
- var green2 = colors.greenAccent;
146330
- var cream = colors.creamText;
146331
- var dim2 = colors.dimText;
146332
- var dark = colors.backgroundDarker;
146333
146327
  function Pentest({ sessionId }) {
146328
+ const { colors: colors2 } = useTheme();
146334
146329
  const route = useRoute();
146335
146330
  const { model, setThinking, setIsExecuting, isExecuting } = useAgent();
146336
146331
  const { stack, externalDialogOpen } = useDialog();
@@ -146766,7 +146761,7 @@ function Pentest({ sessionId }) {
146766
146761
  flexGrow: 1,
146767
146762
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
146768
146763
  label: "Loading session...",
146769
- fg: "green"
146764
+ fg: colors2.primary
146770
146765
  }, undefined, false, undefined, this)
146771
146766
  }, undefined, false, undefined, this);
146772
146767
  }
@@ -146781,14 +146776,14 @@ function Pentest({ sessionId }) {
146781
146776
  gap: 2,
146782
146777
  children: [
146783
146778
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146784
- fg: "red",
146779
+ fg: colors2.error,
146785
146780
  children: [
146786
146781
  "Error: ",
146787
- error41 || "Session not found"
146782
+ error41 ?? "Session not found"
146788
146783
  ]
146789
146784
  }, undefined, true, undefined, this),
146790
146785
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146791
- fg: dim2,
146786
+ fg: colors2.textMuted,
146792
146787
  children: "Press ESC to return home"
146793
146788
  }, undefined, false, undefined, this)
146794
146789
  ]
@@ -146831,8 +146826,8 @@ function Pentest({ sessionId }) {
146831
146826
  alignItems: "center",
146832
146827
  justifyContent: "center",
146833
146828
  border: true,
146834
- borderColor: dim2,
146835
- backgroundColor: dark,
146829
+ borderColor: colors2.borderSubtle,
146830
+ backgroundColor: colors2.backgroundElement,
146836
146831
  padding: 2,
146837
146832
  children: phase === "discovery" ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
146838
146833
  flexDirection: "column",
@@ -146841,18 +146836,18 @@ function Pentest({ sessionId }) {
146841
146836
  children: [
146842
146837
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
146843
146838
  label: "Discovering attack surface...",
146844
- fg: "green"
146839
+ fg: colors2.primary
146845
146840
  }, undefined, false, undefined, this),
146846
146841
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146847
- fg: dim2,
146842
+ fg: colors2.textMuted,
146848
146843
  children: "Press [D] to view orchestrator logs"
146849
146844
  }, undefined, false, undefined, this)
146850
146845
  ]
146851
146846
  }, undefined, true, undefined, this) : phase === "reporting" ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
146852
146847
  label: "Generating report...",
146853
- fg: "green"
146848
+ fg: colors2.primary
146854
146849
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146855
- fg: dim2,
146850
+ fg: colors2.textMuted,
146856
146851
  children: "No pentest agents spawned yet"
146857
146852
  }, undefined, false, undefined, this)
146858
146853
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(AgentCardGrid, {
@@ -146869,19 +146864,19 @@ function Pentest({ sessionId }) {
146869
146864
  phase === "completed" && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
146870
146865
  width: "100%",
146871
146866
  padding: 1,
146872
- backgroundColor: dark,
146867
+ backgroundColor: colors2.backgroundElement,
146873
146868
  border: true,
146874
- borderColor: green2,
146869
+ borderColor: colors2.primary,
146875
146870
  flexDirection: "column",
146876
146871
  alignItems: "center",
146877
146872
  gap: 1,
146878
146873
  children: [
146879
146874
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146880
- fg: green2,
146875
+ fg: colors2.primary,
146881
146876
  children: "Pentest Completed"
146882
146877
  }, undefined, false, undefined, this),
146883
146878
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146884
- fg: dim2,
146879
+ fg: colors2.textMuted,
146885
146880
  children: [
146886
146881
  session.rootPath,
146887
146882
  "/pentest-report.md"
@@ -146894,11 +146889,11 @@ function Pentest({ sessionId }) {
146894
146889
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146895
146890
  children: [
146896
146891
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
146897
- fg: green2,
146892
+ fg: colors2.primary,
146898
146893
  children: "[Enter]"
146899
146894
  }, undefined, false, undefined, this),
146900
146895
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
146901
- fg: dim2,
146896
+ fg: colors2.textMuted,
146902
146897
  children: " View Report"
146903
146898
  }, undefined, false, undefined, this)
146904
146899
  ]
@@ -146906,11 +146901,11 @@ function Pentest({ sessionId }) {
146906
146901
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146907
146902
  children: [
146908
146903
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
146909
- fg: green2,
146904
+ fg: colors2.primary,
146910
146905
  children: "[ESC]"
146911
146906
  }, undefined, false, undefined, this),
146912
146907
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
146913
- fg: dim2,
146908
+ fg: colors2.textMuted,
146914
146909
  children: " Close"
146915
146910
  }, undefined, false, undefined, this)
146916
146911
  ]
@@ -146936,6 +146931,7 @@ function OrchestratorPanel({
146936
146931
  expanded,
146937
146932
  onToggle
146938
146933
  }) {
146934
+ const { colors: colors2 } = useTheme();
146939
146935
  const isRunning = phase !== "loading" && phase !== "completed" && phase !== "error";
146940
146936
  const assetSummary = import_react70.useMemo(() => {
146941
146937
  const byType = {};
@@ -146970,8 +146966,8 @@ function OrchestratorPanel({
146970
146966
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
146971
146967
  flexGrow: 1,
146972
146968
  border: true,
146973
- borderColor: green2,
146974
- backgroundColor: dark,
146969
+ borderColor: colors2.primary,
146970
+ backgroundColor: colors2.backgroundElement,
146975
146971
  flexDirection: "column",
146976
146972
  children: [
146977
146973
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -146979,7 +146975,7 @@ function OrchestratorPanel({
146979
146975
  alignItems: "center",
146980
146976
  justifyContent: "space-between",
146981
146977
  padding: 1,
146982
- borderColor: dim2,
146978
+ borderColor: colors2.borderSubtle,
146983
146979
  border: ["bottom"],
146984
146980
  children: [
146985
146981
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -146987,9 +146983,9 @@ function OrchestratorPanel({
146987
146983
  gap: 1,
146988
146984
  children: isRunning ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
146989
146985
  label: `Orchestrator — ${phaseLabel}`,
146990
- fg: "green"
146986
+ fg: colors2.primary
146991
146987
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
146992
- fg: phase === "completed" ? green2 : phase === "error" ? colors.redText : dim2,
146988
+ fg: phase === "completed" ? colors2.primary : phase === "error" ? colors2.error : colors2.textMuted,
146993
146989
  children: [
146994
146990
  phase === "completed" ? "✓" : phase === "error" ? "✗" : "●",
146995
146991
  " ",
@@ -146999,19 +146995,19 @@ function OrchestratorPanel({
146999
146995
  }, undefined, true, undefined, this)
147000
146996
  }, undefined, false, undefined, this),
147001
146997
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147002
- fg: dim2,
146998
+ fg: colors2.textMuted,
147003
146999
  children: [
147004
147000
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147005
- fg: green2,
147001
+ fg: colors2.primary,
147006
147002
  children: "[D]"
147007
147003
  }, undefined, false, undefined, this),
147008
- " collapse | ",
147004
+ " collapse |",
147005
+ " ",
147009
147006
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147010
- fg: green2,
147007
+ fg: colors2.primary,
147011
147008
  children: "[ESC]"
147012
147009
  }, undefined, false, undefined, this),
147013
- " ",
147014
- "close"
147010
+ " close"
147015
147011
  ]
147016
147012
  }, undefined, true, undefined, this)
147017
147013
  ]
@@ -147028,18 +147024,18 @@ function OrchestratorPanel({
147028
147024
  flexDirection: "row",
147029
147025
  justifyContent: "space-between",
147030
147026
  padding: 1,
147031
- borderColor: dim2,
147027
+ borderColor: colors2.borderSubtle,
147032
147028
  border: ["top"],
147033
147029
  children: [
147034
147030
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147035
- fg: dim2,
147031
+ fg: colors2.textMuted,
147036
147032
  children: [
147037
147033
  messages.length,
147038
147034
  " messages"
147039
147035
  ]
147040
147036
  }, undefined, true, undefined, this),
147041
147037
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147042
- fg: dim2,
147038
+ fg: colors2.textMuted,
147043
147039
  children: [
147044
147040
  assets.length,
147045
147041
  " assets found"
@@ -147053,8 +147049,8 @@ function OrchestratorPanel({
147053
147049
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
147054
147050
  width: 32,
147055
147051
  border: true,
147056
- borderColor: isRunning ? green2 : dim2,
147057
- backgroundColor: dark,
147052
+ borderColor: isRunning ? colors2.primary : colors2.textMuted,
147053
+ backgroundColor: colors2.backgroundElement,
147058
147054
  flexDirection: "column",
147059
147055
  onMouseDown: onToggle,
147060
147056
  children: [
@@ -147063,7 +147059,7 @@ function OrchestratorPanel({
147063
147059
  alignItems: "center",
147064
147060
  justifyContent: "space-between",
147065
147061
  padding: 1,
147066
- borderColor: dim2,
147062
+ borderColor: colors2.borderSubtle,
147067
147063
  border: ["bottom"],
147068
147064
  children: [
147069
147065
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -147071,9 +147067,9 @@ function OrchestratorPanel({
147071
147067
  gap: 1,
147072
147068
  children: isRunning ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
147073
147069
  label: phaseLabel,
147074
- fg: "green"
147070
+ fg: colors2.primary
147075
147071
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147076
- fg: phase === "completed" ? green2 : dim2,
147072
+ fg: phase === "completed" ? colors2.primary : colors2.textMuted,
147077
147073
  children: [
147078
147074
  phase === "completed" ? "✓" : "●",
147079
147075
  " ",
@@ -147082,7 +147078,7 @@ function OrchestratorPanel({
147082
147078
  }, undefined, true, undefined, this)
147083
147079
  }, undefined, false, undefined, this),
147084
147080
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147085
- fg: dim2,
147081
+ fg: colors2.textMuted,
147086
147082
  children: "[D]"
147087
147083
  }, undefined, false, undefined, this)
147088
147084
  ]
@@ -147095,11 +147091,11 @@ function OrchestratorPanel({
147095
147091
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147096
147092
  children: [
147097
147093
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147098
- fg: dim2,
147094
+ fg: colors2.textMuted,
147099
147095
  children: "Phase: "
147100
147096
  }, undefined, false, undefined, this),
147101
147097
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147102
- fg: isRunning ? green2 : cream,
147098
+ fg: isRunning ? colors2.primary : colors2.text,
147103
147099
  children: phaseLabel
147104
147100
  }, undefined, false, undefined, this)
147105
147101
  ]
@@ -147107,11 +147103,11 @@ function OrchestratorPanel({
147107
147103
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147108
147104
  children: [
147109
147105
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147110
- fg: dim2,
147106
+ fg: colors2.textMuted,
147111
147107
  children: "Assets: "
147112
147108
  }, undefined, false, undefined, this),
147113
147109
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147114
- fg: cream,
147110
+ fg: colors2.text,
147115
147111
  children: assets.length
147116
147112
  }, undefined, false, undefined, this)
147117
147113
  ]
@@ -147119,11 +147115,11 @@ function OrchestratorPanel({
147119
147115
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147120
147116
  children: [
147121
147117
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147122
- fg: dim2,
147118
+ fg: colors2.textMuted,
147123
147119
  children: "Messages: "
147124
147120
  }, undefined, false, undefined, this),
147125
147121
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147126
- fg: cream,
147122
+ fg: colors2.text,
147127
147123
  children: messages.length
147128
147124
  }, undefined, false, undefined, this)
147129
147125
  ]
@@ -147141,7 +147137,7 @@ function OrchestratorPanel({
147141
147137
  flexDirection: "column",
147142
147138
  children: [
147143
147139
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147144
- fg: dim2,
147140
+ fg: colors2.textMuted,
147145
147141
  children: [
147146
147142
  assetTypeLabels[type] ?? type,
147147
147143
  " (",
@@ -147152,10 +147148,10 @@ function OrchestratorPanel({
147152
147148
  items.map((a, i) => {
147153
147149
  const label = a.assetName;
147154
147150
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147155
- fg: dim2,
147151
+ fg: colors2.textMuted,
147156
147152
  children: [
147157
147153
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147158
- fg: riskColor(a.riskLevel),
147154
+ fg: riskColor(colors2, a.riskLevel),
147159
147155
  children: "• "
147160
147156
  }, undefined, false, undefined, this),
147161
147157
  label.length > 26 ? label.slice(0, 26) + "…" : label
@@ -147168,16 +147164,16 @@ function OrchestratorPanel({
147168
147164
  ]
147169
147165
  }, undefined, true, undefined, this);
147170
147166
  }
147171
- function riskColor(level) {
147167
+ function riskColor(colors2, level) {
147172
147168
  switch (level) {
147173
147169
  case "CRITICAL":
147174
- return colors.redText;
147170
+ return colors2.error;
147175
147171
  case "HIGH":
147176
- return colors.orangeText;
147172
+ return colors2.warning;
147177
147173
  case "MEDIUM":
147178
- return colors.yellowText;
147174
+ return colors2.warning;
147179
147175
  default:
147180
- return colors.greenAccent;
147176
+ return colors2.success;
147181
147177
  }
147182
147178
  }
147183
147179
  function AgentCardGrid({
@@ -147185,6 +147181,7 @@ function AgentCardGrid({
147185
147181
  focusedIndex,
147186
147182
  onSelectAgent
147187
147183
  }) {
147184
+ const { colors: colors2 } = useTheme();
147188
147185
  const rows = import_react70.useMemo(() => {
147189
147186
  const result = [];
147190
147187
  for (let i = 0;i < agents.length; i += 2) {
@@ -147226,11 +147223,12 @@ function AgentCard({
147226
147223
  focused,
147227
147224
  onSelect
147228
147225
  }) {
147226
+ const { colors: colors2 } = useTheme();
147229
147227
  const statusIcon = { pending: "◐", completed: "✓", failed: "✗" }[agent.status];
147230
147228
  const statusColor = {
147231
- pending: green2,
147232
- completed: green2,
147233
- failed: colors.errorColor
147229
+ pending: colors2.primary,
147230
+ completed: colors2.primary,
147231
+ failed: colors2.error
147234
147232
  }[agent.status];
147235
147233
  const lastActivity = import_react70.useMemo(() => {
147236
147234
  const last = agent.messages[agent.messages.length - 1];
@@ -147245,8 +147243,8 @@ function AgentCard({
147245
147243
  flexBasis: 0,
147246
147244
  minWidth: 40,
147247
147245
  border: true,
147248
- borderColor: focused ? green2 : dim2,
147249
- backgroundColor: dark,
147246
+ borderColor: focused ? colors2.primary : colors2.textMuted,
147247
+ backgroundColor: colors2.backgroundElement,
147250
147248
  flexDirection: "column",
147251
147249
  padding: 1,
147252
147250
  rowGap: 1,
@@ -147263,13 +147261,13 @@ function AgentCard({
147263
147261
  children: statusIcon
147264
147262
  }, undefined, false, undefined, this),
147265
147263
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147266
- fg: focused ? cream : dim2,
147264
+ fg: focused ? colors2.text : colors2.textMuted,
147267
147265
  children: agent.target || agent.name
147268
147266
  }, undefined, false, undefined, this)
147269
147267
  ]
147270
147268
  }, undefined, true, undefined, this),
147271
147269
  agent.target && agent.name !== agent.target && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147272
- fg: dim2,
147270
+ fg: colors2.textMuted,
147273
147271
  children: agent.name
147274
147272
  }, undefined, false, undefined, this),
147275
147273
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
@@ -147278,20 +147276,20 @@ function AgentCard({
147278
147276
  marginTop: 1,
147279
147277
  children: [
147280
147278
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147281
- fg: dim2,
147279
+ fg: colors2.textMuted,
147282
147280
  children: [
147283
147281
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147284
- fg: green2,
147282
+ fg: colors2.primary,
147285
147283
  children: toolCalls
147286
147284
  }, undefined, false, undefined, this),
147287
147285
  " calls"
147288
147286
  ]
147289
147287
  }, undefined, true, undefined, this),
147290
147288
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147291
- fg: dim2,
147289
+ fg: colors2.textMuted,
147292
147290
  children: [
147293
147291
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147294
- fg: green2,
147292
+ fg: colors2.primary,
147295
147293
  children: agent.messages.length
147296
147294
  }, undefined, false, undefined, this),
147297
147295
  " msgs"
@@ -147304,9 +147302,9 @@ function AgentCard({
147304
147302
  overflow: "hidden",
147305
147303
  children: agent.status === "pending" ? /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(SpinnerDots, {
147306
147304
  label: lastActivity,
147307
- fg: "green"
147305
+ fg: colors2.primary
147308
147306
  }, undefined, false, undefined, this) : /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147309
- fg: agent.status === "completed" ? green2 : dim2,
147307
+ fg: agent.status === "completed" ? colors2.primary : colors2.textMuted,
147310
147308
  children: agent.status === "completed" ? "✓ Complete" : lastActivity
147311
147309
  }, undefined, false, undefined, this)
147312
147310
  }, undefined, false, undefined, this)
@@ -147317,10 +147315,11 @@ function AgentDetailView({
147317
147315
  agent,
147318
147316
  onBack
147319
147317
  }) {
147318
+ const { colors: colors2 } = useTheme();
147320
147319
  const statusColor = {
147321
- pending: green2,
147322
- completed: green2,
147323
- failed: colors.errorColor
147320
+ pending: colors2.primary,
147321
+ completed: colors2.primary,
147322
+ failed: colors2.error
147324
147323
  }[agent.status];
147325
147324
  return /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
147326
147325
  flexDirection: "column",
@@ -147331,7 +147330,7 @@ function AgentDetailView({
147331
147330
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("box", {
147332
147331
  width: "100%",
147333
147332
  border: ["bottom"],
147334
- borderColor: green2,
147333
+ borderColor: colors2.primary,
147335
147334
  flexDirection: "row",
147336
147335
  justifyContent: "space-between",
147337
147336
  padding: 1,
@@ -147341,10 +147340,10 @@ function AgentDetailView({
147341
147340
  gap: 1,
147342
147341
  children: [
147343
147342
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147344
- fg: dim2
147343
+ fg: colors2.textMuted
147345
147344
  }, undefined, false, undefined, this),
147346
147345
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147347
- fg: cream,
147346
+ fg: colors2.text,
147348
147347
  children: agent.name
147349
147348
  }, undefined, false, undefined, this)
147350
147349
  ]
@@ -147356,11 +147355,11 @@ function AgentDetailView({
147356
147355
  agent.target && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147357
147356
  children: [
147358
147357
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147359
- fg: dim2,
147358
+ fg: colors2.textMuted,
147360
147359
  children: "Target: "
147361
147360
  }, undefined, false, undefined, this),
147362
147361
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147363
- fg: cream,
147362
+ fg: colors2.text,
147364
147363
  children: agent.target
147365
147364
  }, undefined, false, undefined, this)
147366
147365
  ]
@@ -147386,11 +147385,11 @@ function AgentDetailView({
147386
147385
  flexDirection: "row",
147387
147386
  justifyContent: "space-between",
147388
147387
  border: ["top"],
147389
- borderColor: green2,
147388
+ borderColor: colors2.primary,
147390
147389
  padding: 1,
147391
147390
  children: [
147392
147391
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147393
- fg: dim2,
147392
+ fg: colors2.textMuted,
147394
147393
  children: [
147395
147394
  agent.messages.length,
147396
147395
  " messages"
@@ -147402,11 +147401,11 @@ function AgentDetailView({
147402
147401
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147403
147402
  children: [
147404
147403
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147405
- fg: green2,
147404
+ fg: colors2.primary,
147406
147405
  children: "[ESC]"
147407
147406
  }, undefined, false, undefined, this),
147408
147407
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147409
- fg: dim2,
147408
+ fg: colors2.textMuted,
147410
147409
  children: " Back to overview"
147411
147410
  }, undefined, false, undefined, this)
147412
147411
  ]
@@ -147424,6 +147423,7 @@ function MetricsBar({
147424
147423
  startTime,
147425
147424
  isExecuting
147426
147425
  }) {
147426
+ const { colors: colors2 } = useTheme();
147427
147427
  const [now2, setNow] = import_react70.useState(Date.now());
147428
147428
  import_react70.useEffect(() => {
147429
147429
  if (!isExecuting)
@@ -147449,7 +147449,7 @@ function MetricsBar({
147449
147449
  width: "100%",
147450
147450
  flexDirection: "row",
147451
147451
  justifyContent: "space-between",
147452
- borderColor: green2,
147452
+ borderColor: colors2.primary,
147453
147453
  border: ["top"],
147454
147454
  padding: 1,
147455
147455
  children: [
@@ -147459,38 +147459,38 @@ function MetricsBar({
147459
147459
  children: [
147460
147460
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147461
147461
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147462
- fg: isExecuting ? green2 : dim2,
147462
+ fg: isExecuting ? colors2.primary : colors2.textMuted,
147463
147463
  children: phaseLabel
147464
147464
  }, undefined, false, undefined, this)
147465
147465
  }, undefined, false, undefined, this),
147466
147466
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147467
- fg: dim2,
147467
+ fg: colors2.textMuted,
147468
147468
  children: "|"
147469
147469
  }, undefined, false, undefined, this),
147470
147470
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147471
147471
  children: [
147472
147472
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147473
- fg: green2,
147473
+ fg: colors2.primary,
147474
147474
  children: assets.length
147475
147475
  }, undefined, false, undefined, this),
147476
147476
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147477
- fg: dim2,
147477
+ fg: colors2.textMuted,
147478
147478
  children: " assets"
147479
147479
  }, undefined, false, undefined, this)
147480
147480
  ]
147481
147481
  }, undefined, true, undefined, this),
147482
147482
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147483
- fg: dim2,
147483
+ fg: colors2.textMuted,
147484
147484
  children: "|"
147485
147485
  }, undefined, false, undefined, this),
147486
147486
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147487
147487
  children: [
147488
147488
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147489
- fg: isExecuting ? green2 : dim2,
147489
+ fg: isExecuting ? colors2.primary : colors2.textMuted,
147490
147490
  children: active
147491
147491
  }, undefined, false, undefined, this),
147492
147492
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147493
- fg: dim2,
147493
+ fg: colors2.textMuted,
147494
147494
  children: [
147495
147495
  "/",
147496
147496
  total,
@@ -147500,11 +147500,11 @@ function MetricsBar({
147500
147500
  ]
147501
147501
  }, undefined, true, undefined, this),
147502
147502
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147503
- fg: dim2,
147503
+ fg: colors2.textMuted,
147504
147504
  children: "|"
147505
147505
  }, undefined, false, undefined, this),
147506
147506
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147507
- fg: dim2,
147507
+ fg: colors2.textMuted,
147508
147508
  children: formattedDuration
147509
147509
  }, undefined, false, undefined, this)
147510
147510
  ]
@@ -147516,11 +147516,11 @@ function MetricsBar({
147516
147516
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147517
147517
  children: [
147518
147518
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147519
- fg: green2,
147519
+ fg: colors2.primary,
147520
147520
  children: "[D]"
147521
147521
  }, undefined, false, undefined, this),
147522
147522
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147523
- fg: dim2,
147523
+ fg: colors2.textMuted,
147524
147524
  children: " Orchestrator"
147525
147525
  }, undefined, false, undefined, this)
147526
147526
  ]
@@ -147528,11 +147528,11 @@ function MetricsBar({
147528
147528
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147529
147529
  children: [
147530
147530
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147531
- fg: green2,
147531
+ fg: colors2.primary,
147532
147532
  children: "[Tab]"
147533
147533
  }, undefined, false, undefined, this),
147534
147534
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147535
- fg: dim2,
147535
+ fg: colors2.textMuted,
147536
147536
  children: " Navigate"
147537
147537
  }, undefined, false, undefined, this)
147538
147538
  ]
@@ -147540,11 +147540,11 @@ function MetricsBar({
147540
147540
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147541
147541
  children: [
147542
147542
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147543
- fg: green2,
147543
+ fg: colors2.primary,
147544
147544
  children: "[Enter]"
147545
147545
  }, undefined, false, undefined, this),
147546
147546
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147547
- fg: dim2,
147547
+ fg: colors2.textMuted,
147548
147548
  children: " View"
147549
147549
  }, undefined, false, undefined, this)
147550
147550
  ]
@@ -147552,11 +147552,11 @@ function MetricsBar({
147552
147552
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
147553
147553
  children: [
147554
147554
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147555
- fg: green2,
147555
+ fg: colors2.primary,
147556
147556
  children: "[ESC]"
147557
147557
  }, undefined, false, undefined, this),
147558
147558
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("span", {
147559
- fg: dim2,
147559
+ fg: colors2.textMuted,
147560
147560
  children: " Back"
147561
147561
  }, undefined, false, undefined, this)
147562
147562
  ]
@@ -148247,6 +148247,7 @@ function OperatorDashboard({
148247
148247
  sessionId,
148248
148248
  isResume = false
148249
148249
  }) {
148250
+ const { colors: colors2 } = useTheme();
148250
148251
  const route = useRoute();
148251
148252
  const config4 = useConfig();
148252
148253
  const { model, setThinking, setIsExecuting } = useAgent();
@@ -148478,7 +148479,7 @@ function OperatorDashboard({
148478
148479
  alignItems: "center",
148479
148480
  justifyContent: "center",
148480
148481
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148481
- fg: colors.dimText,
148482
+ fg: colors2.textMuted,
148482
148483
  children: "Loading session..."
148483
148484
  }, undefined, false, undefined, this)
148484
148485
  }, undefined, false, undefined, this);
@@ -148493,15 +148494,15 @@ function OperatorDashboard({
148493
148494
  gap: 1,
148494
148495
  children: [
148495
148496
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148496
- fg: "red",
148497
+ fg: colors2.error,
148497
148498
  children: "Failed to load session"
148498
148499
  }, undefined, false, undefined, this),
148499
148500
  error41 && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148500
- fg: colors.dimText,
148501
+ fg: colors2.textMuted,
148501
148502
  children: error41
148502
148503
  }, undefined, false, undefined, this),
148503
148504
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148504
- fg: colors.dimText,
148505
+ fg: colors2.textMuted,
148505
148506
  children: "Press ESC to go back"
148506
148507
  }, undefined, false, undefined, this)
148507
148508
  ]
@@ -148527,25 +148528,25 @@ function OperatorDashboard({
148527
148528
  gap: 2,
148528
148529
  children: [
148529
148530
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148530
- fg: colors.greenAccent,
148531
+ fg: colors2.primary,
148531
148532
  children: "Operator"
148532
148533
  }, undefined, false, undefined, this),
148533
148534
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148534
- fg: colors.dimText,
148535
+ fg: colors2.textMuted,
148535
148536
  children: "•"
148536
148537
  }, undefined, false, undefined, this),
148537
148538
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148538
- fg: colors.creamText,
148539
+ fg: colors2.text,
148539
148540
  children: session.name
148540
148541
  }, undefined, false, undefined, this),
148541
148542
  session.targets[0] && /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV(import_jsx_dev_runtime2.Fragment, {
148542
148543
  children: [
148543
148544
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148544
- fg: colors.dimText,
148545
+ fg: colors2.textMuted,
148545
148546
  children: "•"
148546
148547
  }, undefined, false, undefined, this),
148547
148548
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148548
- fg: colors.dimText,
148549
+ fg: colors2.textMuted,
148549
148550
  children: session.targets[0]
148550
148551
  }, undefined, false, undefined, this)
148551
148552
  ]
@@ -148557,11 +148558,11 @@ function OperatorDashboard({
148557
148558
  gap: 2,
148558
148559
  children: [
148559
148560
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148560
- fg: operatorState.mode === "auto" ? colors.greenAccent : operatorState.mode === "plan" ? colors.yellowText : colors.toolColor,
148561
+ fg: operatorState.mode === "auto" ? colors2.primary : operatorState.mode === "plan" ? colors2.warning : colors2.info,
148561
148562
  children: operatorState.mode.toUpperCase()
148562
148563
  }, undefined, false, undefined, this),
148563
148564
  /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148564
- fg: colors.dimText,
148565
+ fg: colors2.textMuted,
148565
148566
  children: model.name
148566
148567
  }, undefined, false, undefined, this)
148567
148568
  ]
@@ -148573,7 +148574,7 @@ function OperatorDashboard({
148573
148574
  paddingRight: 2,
148574
148575
  flexShrink: 0,
148575
148576
  children: /* @__PURE__ */ import_jsx_dev_runtime2.jsxDEV("text", {
148576
- fg: "red",
148577
+ fg: colors2.error,
148577
148578
  children: error41
148578
148579
  }, undefined, false, undefined, this)
148579
148580
  }, undefined, false, undefined, this),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pensar/apex",
3
- "version": "0.0.64",
3
+ "version": "0.0.65-canary.2b59d24e",
4
4
  "description": "AI-powered penetration testing CLI tool with terminal UI",
5
5
  "module": "src/tui/index.tsx",
6
6
  "main": "build/index.js",