@adityaaria/spark 6.0.16 → 6.0.17

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.
@@ -23,10 +23,11 @@ readonly LOCK_FILE_NAME=".spark-lock.json"
23
23
  if [ -t 1 ]; then
24
24
  readonly C_RESET='\033[0m'
25
25
  readonly C_BOLD='\033[1m'
26
- readonly C_GREEN='\033[0;32m'
27
- readonly C_YELLOW='\033[0;33m'
28
- readonly C_RED='\033[0;31m'
29
- readonly C_CYAN='\033[0;36m'
26
+ readonly C_GREEN='\033[38;5;46m' # 8-bit neon green
27
+ readonly C_YELLOW='\033[38;5;226m' # 8-bit bright yellow
28
+ readonly C_RED='\033[38;5;196m' # 8-bit bright red
29
+ readonly C_CYAN='\033[38;5;51m' # 8-bit cyan
30
+ readonly C_MAGENTA='\033[38;5;201m' # 8-bit magenta
30
31
  readonly C_DIM='\033[2m'
31
32
  else
32
33
  readonly C_RESET=''
@@ -35,6 +36,7 @@ else
35
36
  readonly C_YELLOW=''
36
37
  readonly C_RED=''
37
38
  readonly C_CYAN=''
39
+ readonly C_MAGENTA=''
38
40
  readonly C_DIM=''
39
41
  fi
40
42
 
@@ -46,15 +48,19 @@ readonly EXIT_NO_REPO=3
46
48
  readonly EXIT_INSTALL_FAILED=4
47
49
 
48
50
  # =============================================================================
49
- # Output helpers
51
+ # Output helpers (8-Bit Theme)
50
52
  # =============================================================================
51
53
 
52
- info() { printf "${C_CYAN}▸${C_RESET} %s\n" "$*"; }
53
- success() { printf "${C_GREEN}✔${C_RESET} %s\n" "$*"; }
54
- warn() { printf "${C_YELLOW}⚠${C_RESET} %s\n" "$*" >&2; }
55
- error() { printf "${C_RED}✖${C_RESET} %s\n" "$*" >&2; }
56
- step() { printf "${C_BOLD}[%s/%s]${C_RESET} %s\n" "$1" "$2" "$3"; }
57
- header() { printf "\n${C_BOLD}═══ %s ═══${C_RESET}\n\n" "$*"; }
54
+ info() { printf "${C_CYAN}►${C_RESET} %s\n" "$*"; }
55
+ success() { printf "${C_GREEN}★${C_RESET} %s\n" "$*"; }
56
+ warn() { printf "${C_YELLOW}▲${C_RESET} %s\n" "$*" >&2; }
57
+ error() { printf "${C_RED}[X]${C_RESET} %s\n" "$*" >&2; }
58
+ step() { printf "${C_MAGENTA}[LVL %s/%s]${C_RESET} %s\n" "$1" "$2" "$3"; }
59
+ header() {
60
+ printf "\n${C_MAGENTA}▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄${C_RESET}\n"
61
+ printf "${C_MAGENTA}█${C_RESET} ${C_BOLD}%-35s${C_RESET} ${C_MAGENTA}█${C_RESET}\n" " $1 "
62
+ printf "${C_MAGENTA}▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀${C_RESET}\n\n"
63
+ }
58
64
 
59
65
  # =============================================================================
60
66
  # Argument parsing
@@ -310,7 +316,7 @@ detect_agents() {
310
316
  info "Detected $detected_count agent(s):"
311
317
  for i in "${!AGENT_IDS[@]}"; do
312
318
  if [ "${AGENT_DETECTED[$i]}" = "true" ]; then
313
- printf " ${C_GREEN}●${C_RESET} %-15s ${C_DIM}(%s)${C_RESET}\n" "${AGENT_LABELS[$i]}" "${AGENT_REASONS[$i]}"
319
+ printf " ${C_GREEN}■${C_RESET} %-15s ${C_DIM}(%s)${C_RESET}\n" "${AGENT_LABELS[$i]}" "${AGENT_REASONS[$i]}"
314
320
  fi
315
321
  done
316
322
  fi
@@ -765,7 +771,7 @@ print_summary() {
765
771
  method="$(echo "$entry" | cut -d: -f2)"
766
772
  local target_dir
767
773
  target_dir="$(get_target_dir "$agent_id")"
768
- printf " ${C_GREEN}●${C_RESET} %-15s → %s ${C_DIM}(%s)${C_RESET}\n" "$agent_id" "$target_dir" "$method"
774
+ printf " ${C_GREEN}■${C_RESET} %-15s → %s ${C_DIM}(%s)${C_RESET}\n" "$agent_id" "$target_dir" "$method"
769
775
  done
770
776
  fi
771
777
 
@@ -773,7 +779,7 @@ print_summary() {
773
779
  echo ""
774
780
  echo " Errors:"
775
781
  for entry in "${INSTALL_ERRORS[@]}"; do
776
- printf " ${C_RED}●${C_RESET} %s\n" "$entry"
782
+ printf " ${C_RED}■${C_RESET} %s\n" "$entry"
777
783
  done
778
784
  fi
779
785
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adityaaria/spark",
3
- "version": "6.0.16",
3
+ "version": "6.0.17",
4
4
  "description": "SPARK skills and runtime bootstrap for coding agents",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -49,6 +49,10 @@ Skills speak in actions ("dispatch a subagent", "create a todo", "read a file")
49
49
 
50
50
  **Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.
51
51
 
52
+ ## Announcement Format
53
+ When you invoke a skill, you MUST announce it to the developer using exactly this format as the very first thing you say:
54
+ `spark detection 💥 Using [skill] to [purpose]`
55
+
52
56
  ```dot
53
57
  digraph skill_flow {
54
58
  "User message received" [shape=doublecircle];
@@ -57,7 +61,7 @@ digraph skill_flow {
57
61
  "Invoke brainstorming skill" [shape=box];
58
62
  "Might any skill apply?" [shape=diamond];
59
63
  "Invoke the skill" [shape=box];
60
- "Announce: 'Using [skill] to [purpose]'" [shape=box];
64
+ "Announce: 'spark detection 💥 Using [skill]...'" [shape=box];
61
65
  "Has checklist?" [shape=diamond];
62
66
  "Create a todo per item" [shape=box];
63
67
  "Follow skill exactly" [shape=box];
@@ -71,8 +75,8 @@ digraph skill_flow {
71
75
  "User message received" -> "Might any skill apply?";
72
76
  "Might any skill apply?" -> "Invoke the skill" [label="yes, even 1%"];
73
77
  "Might any skill apply?" -> "Respond (including clarifications)" [label="definitely not"];
74
- "Invoke the skill" -> "Announce: 'Using [skill] to [purpose]'";
75
- "Announce: 'Using [skill] to [purpose]'" -> "Has checklist?";
78
+ "Invoke the skill" -> "Announce: 'spark detection 💥 Using [skill]...'";
79
+ "Announce: 'spark detection 💥 Using [skill]...'" -> "Has checklist?";
76
80
  "Has checklist?" -> "Create a todo per item" [label="yes"];
77
81
  "Has checklist?" -> "Follow skill exactly" [label="no"];
78
82
  "Create a todo per item" -> "Follow skill exactly";