clasp-ai 0.0.1 → 0.7.1
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.
- package/LICENSE +21 -0
- package/README.md +491 -34
- package/bin/clasp-wrapper.js +40 -0
- package/package.json +39 -24
- package/scripts/install.js +178 -0
- package/scripts/launcher.sh +151 -0
- package/scripts/prepack.js +31 -0
- package/scripts/start-clasp-session.sh +90 -0
- package/scripts/stream-parser.sh +304 -0
- package/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude-flow/metrics/performance.json +0 -87
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/bin/clasp +0 -22
- package/postinstall.js +0 -4
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# CLASP Stream-JSON Parser
|
|
3
|
+
# Converts Claude Code stream-json output to human-readable format
|
|
4
|
+
# Based on MANA stream-parser.sh v4.0
|
|
5
|
+
|
|
6
|
+
# Colors
|
|
7
|
+
RED='\033[0;31m'
|
|
8
|
+
GREEN='\033[0;32m'
|
|
9
|
+
YELLOW='\033[1;33m'
|
|
10
|
+
BLUE='\033[0;34m'
|
|
11
|
+
CYAN='\033[0;36m'
|
|
12
|
+
MAGENTA='\033[0;35m'
|
|
13
|
+
WHITE='\033[1;37m'
|
|
14
|
+
GRAY='\033[0;90m'
|
|
15
|
+
NC='\033[0m' # No Color
|
|
16
|
+
BOLD='\033[1m'
|
|
17
|
+
DIM='\033[2m'
|
|
18
|
+
|
|
19
|
+
# Track state
|
|
20
|
+
CURRENT_TOOL=""
|
|
21
|
+
IN_THINKING=false
|
|
22
|
+
|
|
23
|
+
# Process each line
|
|
24
|
+
while IFS= read -r line; do
|
|
25
|
+
# Skip empty lines
|
|
26
|
+
[ -z "$line" ] && continue
|
|
27
|
+
|
|
28
|
+
# Try to parse as JSON
|
|
29
|
+
if ! echo "$line" | jq -e . >/dev/null 2>&1; then
|
|
30
|
+
# Not JSON, print as-is
|
|
31
|
+
echo "$line"
|
|
32
|
+
continue
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
# Extract type
|
|
36
|
+
TYPE=$(echo "$line" | jq -r '.type // empty' 2>/dev/null)
|
|
37
|
+
|
|
38
|
+
case "$TYPE" in
|
|
39
|
+
"system")
|
|
40
|
+
# System init message - show abbreviated info
|
|
41
|
+
SUBTYPE=$(echo "$line" | jq -r '.subtype // empty' 2>/dev/null)
|
|
42
|
+
if [ "$SUBTYPE" = "init" ]; then
|
|
43
|
+
SESSION=$(echo "$line" | jq -r '.session_id // empty' 2>/dev/null)
|
|
44
|
+
MODEL=$(echo "$line" | jq -r '.model // empty' 2>/dev/null)
|
|
45
|
+
VERSION=$(echo "$line" | jq -r '.claude_code_version // empty' 2>/dev/null)
|
|
46
|
+
TOOL_COUNT=$(echo "$line" | jq -r '.tools | length // 0' 2>/dev/null)
|
|
47
|
+
MCP_SERVERS=$(echo "$line" | jq -r '.mcp_servers | map(.name) | join(", ") // empty' 2>/dev/null)
|
|
48
|
+
echo -e "${MAGENTA}${BOLD}╔══ CLASP Session ══╗${NC}"
|
|
49
|
+
echo -e "${MAGENTA}│ Session:${NC} ${SESSION:0:8}..."
|
|
50
|
+
echo -e "${MAGENTA}│ Model:${NC} $MODEL"
|
|
51
|
+
echo -e "${MAGENTA}│ Version:${NC} $VERSION"
|
|
52
|
+
echo -e "${MAGENTA}│ Tools:${NC} $TOOL_COUNT available"
|
|
53
|
+
echo -e "${MAGENTA}│ MCP:${NC} $MCP_SERVERS"
|
|
54
|
+
echo -e "${MAGENTA}╚════════════════════╝${NC}"
|
|
55
|
+
else
|
|
56
|
+
MSG=$(echo "$line" | jq -r '.message // empty' 2>/dev/null)
|
|
57
|
+
if [ -n "$MSG" ]; then
|
|
58
|
+
echo -e "${GRAY}[system] $MSG${NC}"
|
|
59
|
+
fi
|
|
60
|
+
fi
|
|
61
|
+
;;
|
|
62
|
+
|
|
63
|
+
"assistant")
|
|
64
|
+
# Assistant messages - can contain text or tool_use in content array
|
|
65
|
+
CONTENT_TYPE=$(echo "$line" | jq -r '.message.content[0].type // empty' 2>/dev/null)
|
|
66
|
+
|
|
67
|
+
case "$CONTENT_TYPE" in
|
|
68
|
+
"text")
|
|
69
|
+
TEXT=$(echo "$line" | jq -r '.message.content[0].text // empty' 2>/dev/null)
|
|
70
|
+
if [ -n "$TEXT" ] && [ "$TEXT" != "null" ]; then
|
|
71
|
+
echo ""
|
|
72
|
+
echo -e "${WHITE}${BOLD}Claude:${NC}"
|
|
73
|
+
echo "$TEXT" | while IFS= read -r text_line; do
|
|
74
|
+
echo -e "${WHITE} $text_line${NC}"
|
|
75
|
+
done
|
|
76
|
+
fi
|
|
77
|
+
;;
|
|
78
|
+
"tool_use")
|
|
79
|
+
# Tool call from assistant
|
|
80
|
+
TOOL_NAME=$(echo "$line" | jq -r '.message.content[0].name // empty' 2>/dev/null)
|
|
81
|
+
TOOL_ID=$(echo "$line" | jq -r '.message.content[0].id // empty' 2>/dev/null)
|
|
82
|
+
TOOL_INPUT=$(echo "$line" | jq -r '.message.content[0].input // {}' 2>/dev/null)
|
|
83
|
+
|
|
84
|
+
echo ""
|
|
85
|
+
|
|
86
|
+
# Format tool-specific output
|
|
87
|
+
case "$TOOL_NAME" in
|
|
88
|
+
"Bash")
|
|
89
|
+
CMD=$(echo "$TOOL_INPUT" | jq -r '.command // empty' 2>/dev/null)
|
|
90
|
+
DESC=$(echo "$TOOL_INPUT" | jq -r '.description // empty' 2>/dev/null)
|
|
91
|
+
echo -e "${CYAN}${BOLD}▶ Bash:${NC} ${WHITE}$CMD${NC}"
|
|
92
|
+
if [ -n "$DESC" ] && [ "$DESC" != "null" ]; then
|
|
93
|
+
echo -e "${GRAY} └─ $DESC${NC}"
|
|
94
|
+
fi
|
|
95
|
+
;;
|
|
96
|
+
"Read")
|
|
97
|
+
FILE=$(echo "$TOOL_INPUT" | jq -r '.file_path // empty' 2>/dev/null)
|
|
98
|
+
echo -e "${CYAN}${BOLD}▶ Read:${NC} ${WHITE}$FILE${NC}"
|
|
99
|
+
;;
|
|
100
|
+
"Write")
|
|
101
|
+
FILE=$(echo "$TOOL_INPUT" | jq -r '.file_path // empty' 2>/dev/null)
|
|
102
|
+
CONTENT=$(echo "$TOOL_INPUT" | jq -r '.content // empty' 2>/dev/null)
|
|
103
|
+
LINES=$(echo "$CONTENT" | wc -l)
|
|
104
|
+
echo -e "${CYAN}${BOLD}▶ Write:${NC} ${WHITE}$FILE${NC} ${GRAY}($LINES lines)${NC}"
|
|
105
|
+
;;
|
|
106
|
+
"Edit")
|
|
107
|
+
FILE=$(echo "$TOOL_INPUT" | jq -r '.file_path // empty' 2>/dev/null)
|
|
108
|
+
OLD=$(echo "$TOOL_INPUT" | jq -r '.old_string // empty' 2>/dev/null | head -1)
|
|
109
|
+
echo -e "${CYAN}${BOLD}▶ Edit:${NC} ${WHITE}$FILE${NC}"
|
|
110
|
+
if [ -n "$OLD" ]; then
|
|
111
|
+
echo -e "${GRAY} └─ replacing: \"${OLD:0:60}...\"${NC}"
|
|
112
|
+
fi
|
|
113
|
+
;;
|
|
114
|
+
"Glob")
|
|
115
|
+
PATTERN=$(echo "$TOOL_INPUT" | jq -r '.pattern // empty' 2>/dev/null)
|
|
116
|
+
echo -e "${CYAN}${BOLD}▶ Glob:${NC} ${WHITE}$PATTERN${NC}"
|
|
117
|
+
;;
|
|
118
|
+
"Grep")
|
|
119
|
+
PATTERN=$(echo "$TOOL_INPUT" | jq -r '.pattern // empty' 2>/dev/null)
|
|
120
|
+
PATH_ARG=$(echo "$TOOL_INPUT" | jq -r '.path // empty' 2>/dev/null)
|
|
121
|
+
echo -e "${CYAN}${BOLD}▶ Grep:${NC} ${WHITE}$PATTERN${NC}"
|
|
122
|
+
if [ -n "$PATH_ARG" ] && [ "$PATH_ARG" != "null" ]; then
|
|
123
|
+
echo -e "${GRAY} └─ in: $PATH_ARG${NC}"
|
|
124
|
+
fi
|
|
125
|
+
;;
|
|
126
|
+
"TodoWrite")
|
|
127
|
+
TODO_COUNT=$(echo "$TOOL_INPUT" | jq -r '.todos | length // 0' 2>/dev/null)
|
|
128
|
+
echo -e "${CYAN}${BOLD}▶ TodoWrite:${NC} ${WHITE}$TODO_COUNT items${NC}"
|
|
129
|
+
echo "$TOOL_INPUT" | jq -r '.todos[]? | " " + (if .status == "completed" then "✅" elif .status == "in_progress" then "🔄" else "⏳" end) + " " + .content' 2>/dev/null | head -8
|
|
130
|
+
;;
|
|
131
|
+
"Task")
|
|
132
|
+
DESC=$(echo "$TOOL_INPUT" | jq -r '.description // empty' 2>/dev/null)
|
|
133
|
+
AGENT=$(echo "$TOOL_INPUT" | jq -r '.subagent_type // empty' 2>/dev/null)
|
|
134
|
+
echo -e "${CYAN}${BOLD}▶ Task:${NC} ${WHITE}$DESC${NC}"
|
|
135
|
+
if [ -n "$AGENT" ] && [ "$AGENT" != "null" ]; then
|
|
136
|
+
echo -e "${GRAY} └─ agent: $AGENT${NC}"
|
|
137
|
+
fi
|
|
138
|
+
;;
|
|
139
|
+
*)
|
|
140
|
+
# Default: show tool name and formatted JSON
|
|
141
|
+
echo -e "${CYAN}${BOLD}▶ Tool: $TOOL_NAME${NC}"
|
|
142
|
+
if [ -n "$TOOL_INPUT" ] && [ "$TOOL_INPUT" != "{}" ]; then
|
|
143
|
+
echo -e "${GRAY}┌─ Input ─────────────────────────────────────────${NC}"
|
|
144
|
+
echo "$TOOL_INPUT" | jq -r '.' 2>/dev/null | while IFS= read -r input_line; do
|
|
145
|
+
echo -e "${GRAY}│ $input_line${NC}"
|
|
146
|
+
done
|
|
147
|
+
echo -e "${GRAY}└─────────────────────────────────────────────────${NC}"
|
|
148
|
+
fi
|
|
149
|
+
;;
|
|
150
|
+
esac
|
|
151
|
+
;;
|
|
152
|
+
esac
|
|
153
|
+
;;
|
|
154
|
+
|
|
155
|
+
"user")
|
|
156
|
+
# User messages - usually tool results
|
|
157
|
+
TOOL_RESULT_TYPE=$(echo "$line" | jq -r '.message.content[0].type // empty' 2>/dev/null)
|
|
158
|
+
if [ "$TOOL_RESULT_TYPE" = "tool_result" ]; then
|
|
159
|
+
TOOL_ID=$(echo "$line" | jq -r '.message.content[0].tool_use_id // empty' 2>/dev/null)
|
|
160
|
+
IS_ERROR=$(echo "$line" | jq -r '.message.content[0].is_error // false' 2>/dev/null)
|
|
161
|
+
CONTENT=$(echo "$line" | jq -r '.message.content[0].content // empty' 2>/dev/null)
|
|
162
|
+
|
|
163
|
+
RESULT_TYPE=$(echo "$line" | jq -r '.tool_use_result.type // empty' 2>/dev/null)
|
|
164
|
+
|
|
165
|
+
if [ "$IS_ERROR" = "true" ]; then
|
|
166
|
+
echo -e "${RED}${BOLD}✗ Error:${NC}"
|
|
167
|
+
echo -e "${RED}┌─ Error Output ──────────────────────────────────${NC}"
|
|
168
|
+
echo "$CONTENT" | while IFS= read -r result_line; do
|
|
169
|
+
echo -e "${RED}│ $result_line${NC}"
|
|
170
|
+
done
|
|
171
|
+
echo -e "${RED}└─────────────────────────────────────────────────${NC}"
|
|
172
|
+
elif [ "$RESULT_TYPE" = "text" ]; then
|
|
173
|
+
FILE_PATH=$(echo "$line" | jq -r '.tool_use_result.file.filePath // empty' 2>/dev/null)
|
|
174
|
+
NUM_LINES=$(echo "$line" | jq -r '.tool_use_result.file.numLines // empty' 2>/dev/null)
|
|
175
|
+
echo -e "${GREEN}${BOLD}✓ Read: ${FILE_PATH}${NC} ${GRAY}(${NUM_LINES} lines)${NC}"
|
|
176
|
+
elif [ "$RESULT_TYPE" = "create" ]; then
|
|
177
|
+
FILE_PATH=$(echo "$line" | jq -r '.tool_use_result.filePath // empty' 2>/dev/null)
|
|
178
|
+
echo -e "${GREEN}${BOLD}✓ Created: ${FILE_PATH}${NC}"
|
|
179
|
+
elif [ "$RESULT_TYPE" = "edit" ] || [ "$RESULT_TYPE" = "replace" ]; then
|
|
180
|
+
FILE_PATH=$(echo "$line" | jq -r '.tool_use_result.filePath // empty' 2>/dev/null)
|
|
181
|
+
echo -e "${GREEN}${BOLD}✓ Edited: ${FILE_PATH}${NC}"
|
|
182
|
+
else
|
|
183
|
+
STDOUT=$(echo "$line" | jq -r '.tool_use_result.stdout // empty' 2>/dev/null)
|
|
184
|
+
OUTPUT="${STDOUT:-$CONTENT}"
|
|
185
|
+
|
|
186
|
+
if [ -n "$OUTPUT" ]; then
|
|
187
|
+
LINE_COUNT=$(echo "$OUTPUT" | wc -l)
|
|
188
|
+
echo -e "${GREEN}${BOLD}✓ Result:${NC} ${GRAY}($LINE_COUNT lines)${NC}"
|
|
189
|
+
# Show abbreviated output
|
|
190
|
+
echo "$OUTPUT" | head -5 | while IFS= read -r result_line; do
|
|
191
|
+
echo -e "${GRAY} $result_line${NC}"
|
|
192
|
+
done
|
|
193
|
+
if [ $LINE_COUNT -gt 5 ]; then
|
|
194
|
+
echo -e "${GRAY} ... ($((LINE_COUNT - 5)) more lines)${NC}"
|
|
195
|
+
fi
|
|
196
|
+
fi
|
|
197
|
+
fi
|
|
198
|
+
fi
|
|
199
|
+
;;
|
|
200
|
+
|
|
201
|
+
"content_block_start")
|
|
202
|
+
BLOCK_TYPE=$(echo "$line" | jq -r '.content_block.type // empty' 2>/dev/null)
|
|
203
|
+
case "$BLOCK_TYPE" in
|
|
204
|
+
"tool_use")
|
|
205
|
+
TOOL_NAME=$(echo "$line" | jq -r '.content_block.name // empty' 2>/dev/null)
|
|
206
|
+
CURRENT_TOOL="$TOOL_NAME"
|
|
207
|
+
echo -e "\n${CYAN}${BOLD}▶ Tool: $TOOL_NAME${NC}"
|
|
208
|
+
;;
|
|
209
|
+
"thinking")
|
|
210
|
+
IN_THINKING=true
|
|
211
|
+
echo -e "\n${MAGENTA}${DIM}💭 Thinking...${NC}"
|
|
212
|
+
;;
|
|
213
|
+
esac
|
|
214
|
+
;;
|
|
215
|
+
|
|
216
|
+
"content_block_delta")
|
|
217
|
+
DELTA_TYPE=$(echo "$line" | jq -r '.delta.type // empty' 2>/dev/null)
|
|
218
|
+
case "$DELTA_TYPE" in
|
|
219
|
+
"text_delta")
|
|
220
|
+
TEXT=$(echo "$line" | jq -r '.delta.text // empty' 2>/dev/null)
|
|
221
|
+
if [ -n "$TEXT" ]; then
|
|
222
|
+
if [ "$IN_THINKING" = true ]; then
|
|
223
|
+
echo -ne "${MAGENTA}${DIM}$TEXT${NC}"
|
|
224
|
+
else
|
|
225
|
+
echo -ne "${WHITE}$TEXT${NC}"
|
|
226
|
+
fi
|
|
227
|
+
fi
|
|
228
|
+
;;
|
|
229
|
+
"input_json_delta")
|
|
230
|
+
JSON=$(echo "$line" | jq -r '.delta.partial_json // empty' 2>/dev/null)
|
|
231
|
+
if [ -n "$JSON" ]; then
|
|
232
|
+
echo -ne "${GRAY}$JSON${NC}"
|
|
233
|
+
fi
|
|
234
|
+
;;
|
|
235
|
+
esac
|
|
236
|
+
;;
|
|
237
|
+
|
|
238
|
+
"content_block_stop")
|
|
239
|
+
if [ "$IN_THINKING" = true ]; then
|
|
240
|
+
IN_THINKING=false
|
|
241
|
+
echo -e "\n${MAGENTA}${DIM}💭 Done thinking${NC}"
|
|
242
|
+
fi
|
|
243
|
+
echo ""
|
|
244
|
+
;;
|
|
245
|
+
|
|
246
|
+
"result")
|
|
247
|
+
# Final result
|
|
248
|
+
echo -e "\n${GREEN}${BOLD}═══════════════════════════════════════════════════${NC}"
|
|
249
|
+
echo -e "${GREEN}${BOLD} RESULT ${NC}"
|
|
250
|
+
echo -e "${GREEN}${BOLD}═══════════════════════════════════════════════════${NC}"
|
|
251
|
+
|
|
252
|
+
RESULT=$(echo "$line" | jq -r '.result // empty' 2>/dev/null)
|
|
253
|
+
if [ -n "$RESULT" ]; then
|
|
254
|
+
echo "$RESULT" | while IFS= read -r result_line; do
|
|
255
|
+
echo -e "${WHITE}$result_line${NC}"
|
|
256
|
+
done
|
|
257
|
+
fi
|
|
258
|
+
|
|
259
|
+
# Show cost and tokens
|
|
260
|
+
COST=$(echo "$line" | jq -r '.cost_usd // empty' 2>/dev/null)
|
|
261
|
+
INPUT_TOKENS=$(echo "$line" | jq -r '.usage.input_tokens // empty' 2>/dev/null)
|
|
262
|
+
OUTPUT_TOKENS=$(echo "$line" | jq -r '.usage.output_tokens // empty' 2>/dev/null)
|
|
263
|
+
DURATION=$(echo "$line" | jq -r '.duration_ms // empty' 2>/dev/null)
|
|
264
|
+
|
|
265
|
+
echo ""
|
|
266
|
+
echo -e "${GRAY}───────────────────────────────────────────────────${NC}"
|
|
267
|
+
[ -n "$COST" ] && [ "$COST" != "null" ] && echo -e "${GRAY}💰 Cost: \$$COST${NC}"
|
|
268
|
+
[ -n "$INPUT_TOKENS" ] && [ "$INPUT_TOKENS" != "null" ] && echo -e "${GRAY}📥 Input: $INPUT_TOKENS tokens${NC}"
|
|
269
|
+
[ -n "$OUTPUT_TOKENS" ] && [ "$OUTPUT_TOKENS" != "null" ] && echo -e "${GRAY}📤 Output: $OUTPUT_TOKENS tokens${NC}"
|
|
270
|
+
[ -n "$DURATION" ] && [ "$DURATION" != "null" ] && echo -e "${GRAY}⏱️ Duration: ${DURATION}ms${NC}"
|
|
271
|
+
echo -e "${GRAY}───────────────────────────────────────────────────${NC}"
|
|
272
|
+
;;
|
|
273
|
+
|
|
274
|
+
"error")
|
|
275
|
+
ERROR=$(echo "$line" | jq -r '.error.message // .message // empty' 2>/dev/null)
|
|
276
|
+
echo -e "\n${RED}${BOLD}╔══ ERROR ══════════════════════════════════════════╗${NC}"
|
|
277
|
+
echo -e "${RED}${BOLD}║ $ERROR${NC}"
|
|
278
|
+
echo -e "${RED}${BOLD}╚═══════════════════════════════════════════════════╝${NC}"
|
|
279
|
+
;;
|
|
280
|
+
|
|
281
|
+
"message_start"|"message_delta"|"message_stop")
|
|
282
|
+
# Message lifecycle events - ignore silently
|
|
283
|
+
;;
|
|
284
|
+
|
|
285
|
+
*)
|
|
286
|
+
# Handle custom events (iteration markers, etc)
|
|
287
|
+
EVENT=$(echo "$line" | jq -r '.event // empty' 2>/dev/null)
|
|
288
|
+
if [ -n "$EVENT" ]; then
|
|
289
|
+
case "$EVENT" in
|
|
290
|
+
"iteration_start")
|
|
291
|
+
ITER=$(echo "$line" | jq -r '.iteration // empty' 2>/dev/null)
|
|
292
|
+
TS=$(echo "$line" | jq -r '.timestamp // empty' 2>/dev/null)
|
|
293
|
+
echo -e "${YELLOW}${BOLD}🔄 Iteration $ITER started at $TS${NC}"
|
|
294
|
+
;;
|
|
295
|
+
"iteration_end")
|
|
296
|
+
ITER=$(echo "$line" | jq -r '.iteration // empty' 2>/dev/null)
|
|
297
|
+
DUR=$(echo "$line" | jq -r '.duration_secs // empty' 2>/dev/null)
|
|
298
|
+
echo -e "${YELLOW}${BOLD}✅ Iteration $ITER ended (${DUR}s)${NC}"
|
|
299
|
+
;;
|
|
300
|
+
esac
|
|
301
|
+
fi
|
|
302
|
+
;;
|
|
303
|
+
esac
|
|
304
|
+
done
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{}
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"startTime": 1764962870165,
|
|
3
|
-
"sessionId": "session-1764962870165",
|
|
4
|
-
"lastActivity": 1764962870165,
|
|
5
|
-
"sessionDuration": 0,
|
|
6
|
-
"totalTasks": 1,
|
|
7
|
-
"successfulTasks": 1,
|
|
8
|
-
"failedTasks": 0,
|
|
9
|
-
"totalAgents": 0,
|
|
10
|
-
"activeAgents": 0,
|
|
11
|
-
"neuralEvents": 0,
|
|
12
|
-
"memoryMode": {
|
|
13
|
-
"reasoningbankOperations": 0,
|
|
14
|
-
"basicOperations": 0,
|
|
15
|
-
"autoModeSelections": 0,
|
|
16
|
-
"modeOverrides": 0,
|
|
17
|
-
"currentMode": "auto"
|
|
18
|
-
},
|
|
19
|
-
"operations": {
|
|
20
|
-
"store": {
|
|
21
|
-
"count": 0,
|
|
22
|
-
"totalDuration": 0,
|
|
23
|
-
"errors": 0
|
|
24
|
-
},
|
|
25
|
-
"retrieve": {
|
|
26
|
-
"count": 0,
|
|
27
|
-
"totalDuration": 0,
|
|
28
|
-
"errors": 0
|
|
29
|
-
},
|
|
30
|
-
"query": {
|
|
31
|
-
"count": 0,
|
|
32
|
-
"totalDuration": 0,
|
|
33
|
-
"errors": 0
|
|
34
|
-
},
|
|
35
|
-
"list": {
|
|
36
|
-
"count": 0,
|
|
37
|
-
"totalDuration": 0,
|
|
38
|
-
"errors": 0
|
|
39
|
-
},
|
|
40
|
-
"delete": {
|
|
41
|
-
"count": 0,
|
|
42
|
-
"totalDuration": 0,
|
|
43
|
-
"errors": 0
|
|
44
|
-
},
|
|
45
|
-
"search": {
|
|
46
|
-
"count": 0,
|
|
47
|
-
"totalDuration": 0,
|
|
48
|
-
"errors": 0
|
|
49
|
-
},
|
|
50
|
-
"init": {
|
|
51
|
-
"count": 0,
|
|
52
|
-
"totalDuration": 0,
|
|
53
|
-
"errors": 0
|
|
54
|
-
}
|
|
55
|
-
},
|
|
56
|
-
"performance": {
|
|
57
|
-
"avgOperationDuration": 0,
|
|
58
|
-
"minOperationDuration": null,
|
|
59
|
-
"maxOperationDuration": null,
|
|
60
|
-
"slowOperations": 0,
|
|
61
|
-
"fastOperations": 0,
|
|
62
|
-
"totalOperationTime": 0
|
|
63
|
-
},
|
|
64
|
-
"storage": {
|
|
65
|
-
"totalEntries": 0,
|
|
66
|
-
"reasoningbankEntries": 0,
|
|
67
|
-
"basicEntries": 0,
|
|
68
|
-
"databaseSize": 0,
|
|
69
|
-
"lastBackup": null,
|
|
70
|
-
"growthRate": 0
|
|
71
|
-
},
|
|
72
|
-
"errors": {
|
|
73
|
-
"total": 0,
|
|
74
|
-
"byType": {},
|
|
75
|
-
"byOperation": {},
|
|
76
|
-
"recent": []
|
|
77
|
-
},
|
|
78
|
-
"reasoningbank": {
|
|
79
|
-
"semanticSearches": 0,
|
|
80
|
-
"sqlFallbacks": 0,
|
|
81
|
-
"embeddingGenerated": 0,
|
|
82
|
-
"consolidations": 0,
|
|
83
|
-
"avgQueryTime": 0,
|
|
84
|
-
"cacheHits": 0,
|
|
85
|
-
"cacheMisses": 0
|
|
86
|
-
}
|
|
87
|
-
}
|
package/bin/clasp
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
console.log(`
|
|
3
|
-
_____ _ _ ____ ____
|
|
4
|
-
/ ____| | / \\ / ___|| _ \\
|
|
5
|
-
| | | | / _ \\ \\___ \\| |_) |
|
|
6
|
-
| | | |___ / ___ \\ ___) | __/
|
|
7
|
-
\\_____|_____/_/ \\_\\____/|_|
|
|
8
|
-
|
|
9
|
-
Claude Language Agent Super Proxy
|
|
10
|
-
|
|
11
|
-
Version: 0.0.1 (placeholder)
|
|
12
|
-
|
|
13
|
-
Full implementation coming soon!
|
|
14
|
-
|
|
15
|
-
This will allow you to run Claude Code with:
|
|
16
|
-
- OpenAI (direct)
|
|
17
|
-
- Azure OpenAI
|
|
18
|
-
- OpenRouter (200+ models)
|
|
19
|
-
- Any OpenAI-compatible endpoint (Ollama, vLLM, etc.)
|
|
20
|
-
|
|
21
|
-
GitHub: https://github.com/yourname/clasp-ai
|
|
22
|
-
`);
|
package/postinstall.js
DELETED