suzi-cli 0.1.6 → 0.1.8
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/README.md +267 -1
- package/dist/commands/accounts.d.ts.map +1 -1
- package/dist/commands/accounts.js +59 -0
- package/dist/commands/accounts.js.map +1 -1
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +10 -3
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +47 -37
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/debug.d.ts +3 -0
- package/dist/commands/debug.d.ts.map +1 -0
- package/dist/commands/debug.js +332 -0
- package/dist/commands/debug.js.map +1 -0
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +8 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +139 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/install-hooks.d.ts +16 -0
- package/dist/commands/install-hooks.d.ts.map +1 -0
- package/dist/commands/install-hooks.js +381 -0
- package/dist/commands/install-hooks.js.map +1 -0
- package/dist/commands/list-actions.d.ts +3 -0
- package/dist/commands/list-actions.d.ts.map +1 -0
- package/dist/commands/{list-tools.js → list-actions.js} +24 -18
- package/dist/commands/list-actions.js.map +1 -0
- package/dist/commands/list-triggers.d.ts.map +1 -1
- package/dist/commands/list-triggers.js +27 -1
- package/dist/commands/list-triggers.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +51 -28
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/memory.d.ts +3 -0
- package/dist/commands/memory.d.ts.map +1 -0
- package/dist/commands/memory.js +196 -0
- package/dist/commands/memory.js.map +1 -0
- package/dist/commands/portfolio.d.ts.map +1 -1
- package/dist/commands/portfolio.js +5 -8
- package/dist/commands/portfolio.js.map +1 -1
- package/dist/commands/prompt-suggestions.d.ts.map +1 -1
- package/dist/commands/prompt-suggestions.js +14 -20
- package/dist/commands/prompt-suggestions.js.map +1 -1
- package/dist/commands/share.d.ts.map +1 -1
- package/dist/commands/share.js +2 -0
- package/dist/commands/share.js.map +1 -1
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +2 -1
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/validate.d.ts.map +1 -1
- package/dist/commands/validate.js +1 -0
- package/dist/commands/validate.js.map +1 -1
- package/dist/index.js +41 -13
- package/dist/index.js.map +1 -1
- package/dist/lib/memory.d.ts +45 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/dist/lib/memory.js +247 -0
- package/dist/lib/memory.js.map +1 -0
- package/dist/lib/suzi-guide.d.ts +1 -1
- package/dist/lib/suzi-guide.d.ts.map +1 -1
- package/dist/lib/suzi-guide.js +255 -52
- package/dist/lib/suzi-guide.js.map +1 -1
- package/dist/utils/ui.d.ts +3 -1
- package/dist/utils/ui.d.ts.map +1 -1
- package/dist/utils/ui.js +4 -1
- package/dist/utils/ui.js.map +1 -1
- package/package.json +1 -1
- package/dist/commands/list-tools.d.ts +0 -3
- package/dist/commands/list-tools.d.ts.map +0 -1
- package/dist/commands/list-tools.js.map +0 -1
- package/dist/commands/wallet.d.ts +0 -3
- package/dist/commands/wallet.d.ts.map +0 -1
- package/dist/commands/wallet.js +0 -191
- package/dist/commands/wallet.js.map +0 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
export interface HookInstallResult {
|
|
3
|
+
scripts: Array<{
|
|
4
|
+
name: string;
|
|
5
|
+
state: 'installed' | 'updated' | 'unchanged';
|
|
6
|
+
}>;
|
|
7
|
+
settingsMerged: boolean;
|
|
8
|
+
memoryCreated: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Install Suzi hooks globally to ~/.claude/.
|
|
12
|
+
* Can be called programmatically (e.g. during login onboarding) or via the CLI command.
|
|
13
|
+
*/
|
|
14
|
+
export declare function installHooksGlobal(): HookInstallResult;
|
|
15
|
+
export declare function registerInstallHooksCommand(program: Command): void;
|
|
16
|
+
//# sourceMappingURL=install-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-hooks.d.ts","sourceRoot":"","sources":["../../src/commands/install-hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoUpC,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAA;KAAE,CAAC,CAAC;IAC/E,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,iBAAiB,CAyBtD;AAID,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwDlE"}
|
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.installHooksGlobal = installHooksGlobal;
|
|
7
|
+
exports.registerInstallHooksCommand = registerInstallHooksCommand;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const os_1 = __importDefault(require("os"));
|
|
12
|
+
const ui_1 = require("../utils/ui");
|
|
13
|
+
const memory_1 = require("../lib/memory");
|
|
14
|
+
// ── Hook Script Sources (embedded — single source of truth) ────────
|
|
15
|
+
const HOOK_SCRIPTS = [
|
|
16
|
+
{
|
|
17
|
+
name: 'Session Start',
|
|
18
|
+
file: 'suzi-session-start.sh',
|
|
19
|
+
content: `#!/bin/bash
|
|
20
|
+
# Claude Code SessionStart hook
|
|
21
|
+
# Injects Suzi learnings, preferences, and context into Claude's context window.
|
|
22
|
+
# Triggered on: startup, resume, compact
|
|
23
|
+
|
|
24
|
+
SUZI_DIR="$HOME/.suzi"
|
|
25
|
+
OUTPUT=""
|
|
26
|
+
|
|
27
|
+
# User preferences (trading style, conventions)
|
|
28
|
+
if [ -f "$SUZI_DIR/preferences.md" ]; then
|
|
29
|
+
OUTPUT+="=== Suzi User Preferences ===
|
|
30
|
+
"
|
|
31
|
+
OUTPUT+="$(cat "$SUZI_DIR/preferences.md")
|
|
32
|
+
|
|
33
|
+
"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Recent learnings (last 50 lines to stay within context budget)
|
|
37
|
+
if [ -f "$SUZI_DIR/memory/LEARNINGS.md" ]; then
|
|
38
|
+
CONTENT="$(tail -50 "$SUZI_DIR/memory/LEARNINGS.md")"
|
|
39
|
+
if [ -n "$CONTENT" ]; then
|
|
40
|
+
OUTPUT+="=== Suzi Learnings (Recent) ===
|
|
41
|
+
"
|
|
42
|
+
OUTPUT+="$CONTENT
|
|
43
|
+
|
|
44
|
+
"
|
|
45
|
+
fi
|
|
46
|
+
fi
|
|
47
|
+
|
|
48
|
+
# Active context (recent agents, wallet state)
|
|
49
|
+
if [ -f "$SUZI_DIR/memory/context.md" ]; then
|
|
50
|
+
OUTPUT+="=== Suzi Active Context ===
|
|
51
|
+
"
|
|
52
|
+
OUTPUT+="$(cat "$SUZI_DIR/memory/context.md")
|
|
53
|
+
|
|
54
|
+
"
|
|
55
|
+
fi
|
|
56
|
+
|
|
57
|
+
# Project-level SUZI.md
|
|
58
|
+
PROJECT_SUZI="\${CLAUDE_PROJECT_DIR:-$(pwd)}/SUZI.md"
|
|
59
|
+
if [ -f "$PROJECT_SUZI" ]; then
|
|
60
|
+
OUTPUT+="=== Project Suzi Config ===
|
|
61
|
+
"
|
|
62
|
+
OUTPUT+="$(cat "$PROJECT_SUZI")
|
|
63
|
+
|
|
64
|
+
"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
if [ -n "$OUTPUT" ]; then
|
|
68
|
+
echo "$OUTPUT"
|
|
69
|
+
fi
|
|
70
|
+
`,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'CLI Capture',
|
|
74
|
+
file: 'suzi-capture-cli.sh',
|
|
75
|
+
content: `#!/bin/bash
|
|
76
|
+
# Claude Code PostToolUse hook (async)
|
|
77
|
+
# Captures suzi CLI command outcomes to daily log and learnings.
|
|
78
|
+
# Only processes commands containing "suzi ".
|
|
79
|
+
|
|
80
|
+
MAX_LEARNINGS=500
|
|
81
|
+
LOCK_TIMEOUT=5
|
|
82
|
+
|
|
83
|
+
INPUT=$(cat)
|
|
84
|
+
CMD=$(echo "$INPUT" | jq -r '.tool_input.command // empty' 2>/dev/null)
|
|
85
|
+
|
|
86
|
+
# Only process suzi commands
|
|
87
|
+
[[ "$CMD" != *"suzi "* ]] && exit 0
|
|
88
|
+
|
|
89
|
+
# Redact sensitive flags and JWT tokens from the command before logging
|
|
90
|
+
SAFE_CMD=$(echo "$CMD" | sed -E \\
|
|
91
|
+
-e 's/(--)(token|key|secret|password|auth|credential|private[-_]?[a-zA-Z]*)[= ][^ ]*/\\1\\2 <REDACTED>/gi' \\
|
|
92
|
+
-e 's/eyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/<TOKEN>/g')
|
|
93
|
+
|
|
94
|
+
RESULT=$(echo "$INPUT" | jq -r '.tool_result // empty' 2>/dev/null)
|
|
95
|
+
DATE=$(date +%Y-%m-%d)
|
|
96
|
+
TIME=$(date +%H:%M)
|
|
97
|
+
MEMORY_DIR="$HOME/.suzi/memory"
|
|
98
|
+
DAILY_DIR="$MEMORY_DIR/daily"
|
|
99
|
+
DAILY="$DAILY_DIR/$DATE.md"
|
|
100
|
+
LEARNINGS="$MEMORY_DIR/LEARNINGS.md"
|
|
101
|
+
LOCKDIR="$LEARNINGS.lock"
|
|
102
|
+
|
|
103
|
+
mkdir -p "$DAILY_DIR"
|
|
104
|
+
|
|
105
|
+
# Log sanitized command to daily activity
|
|
106
|
+
if [ ! -f "$DAILY" ]; then
|
|
107
|
+
echo "# $DATE" > "$DAILY"
|
|
108
|
+
echo "" >> "$DAILY"
|
|
109
|
+
fi
|
|
110
|
+
echo "- [$TIME] \\\`$SAFE_CMD\\\`" >> "$DAILY"
|
|
111
|
+
|
|
112
|
+
# Capture errors as learnings (only the error message, not full output)
|
|
113
|
+
if echo "$RESULT" | grep -qiE "error|failed|exception|ENOENT|timeout"; then
|
|
114
|
+
ERROR_LINE=$(echo "$RESULT" | grep -iE "error|failed|exception" | head -1 | cut -c1-200)
|
|
115
|
+
# Redact any secrets that might appear in error output
|
|
116
|
+
SAFE_ERROR=$(echo "$ERROR_LINE" | sed -E \\
|
|
117
|
+
-e 's/eyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+/<TOKEN>/g' \\
|
|
118
|
+
-e 's/(0x)?[0-9a-fA-F]{64}/<KEY>/g')
|
|
119
|
+
|
|
120
|
+
if [ -n "$SAFE_ERROR" ]; then
|
|
121
|
+
NEW_LINE="- **$DATE**: \\\`error\\\` — $SAFE_ERROR (cmd: \\\`$SAFE_CMD\\\`)"
|
|
122
|
+
|
|
123
|
+
# Acquire lock (mkdir is atomic on all POSIX systems)
|
|
124
|
+
TRIES=0
|
|
125
|
+
while ! mkdir "$LOCKDIR" 2>/dev/null; do
|
|
126
|
+
TRIES=$((TRIES + 1))
|
|
127
|
+
if [ "$TRIES" -ge "$LOCK_TIMEOUT" ]; then
|
|
128
|
+
# Stale lock — force remove and retry once
|
|
129
|
+
rmdir "$LOCKDIR" 2>/dev/null
|
|
130
|
+
mkdir "$LOCKDIR" 2>/dev/null && break
|
|
131
|
+
exit 0
|
|
132
|
+
fi
|
|
133
|
+
sleep 1
|
|
134
|
+
done
|
|
135
|
+
|
|
136
|
+
# Ensure lock is released on exit or failure
|
|
137
|
+
trap 'rmdir "$LOCKDIR" 2>/dev/null' EXIT
|
|
138
|
+
|
|
139
|
+
# Dedup: skip if identical message already in last 20 lines
|
|
140
|
+
if [ -f "$LEARNINGS" ]; then
|
|
141
|
+
if tail -20 "$LEARNINGS" | grep -qF "$SAFE_ERROR"; then
|
|
142
|
+
exit 0
|
|
143
|
+
fi
|
|
144
|
+
fi
|
|
145
|
+
|
|
146
|
+
echo "$NEW_LINE" >> "$LEARNINGS"
|
|
147
|
+
|
|
148
|
+
# Trim to max lines (keep newest) using unique temp file
|
|
149
|
+
if [ -f "$LEARNINGS" ]; then
|
|
150
|
+
LINE_COUNT=$(wc -l < "$LEARNINGS")
|
|
151
|
+
if [ "$LINE_COUNT" -gt "$MAX_LEARNINGS" ]; then
|
|
152
|
+
TMPFILE=$(mktemp "$LEARNINGS.XXXXXX")
|
|
153
|
+
tail -n "$MAX_LEARNINGS" "$LEARNINGS" > "$TMPFILE" && mv "$TMPFILE" "$LEARNINGS"
|
|
154
|
+
fi
|
|
155
|
+
fi
|
|
156
|
+
fi
|
|
157
|
+
fi
|
|
158
|
+
`,
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'Pre-Compact',
|
|
162
|
+
file: 'suzi-pre-compact.sh',
|
|
163
|
+
content: `#!/bin/bash
|
|
164
|
+
# Claude Code PreCompact hook
|
|
165
|
+
# Saves Suzi-related state before context window compression.
|
|
166
|
+
|
|
167
|
+
CONTEXT="$HOME/.suzi/memory/context.md"
|
|
168
|
+
MEMORY_DIR="$HOME/.suzi/memory"
|
|
169
|
+
|
|
170
|
+
mkdir -p "$MEMORY_DIR"
|
|
171
|
+
|
|
172
|
+
echo "## Active Context" > "$CONTEXT"
|
|
173
|
+
echo "" >> "$CONTEXT"
|
|
174
|
+
echo "_Auto-saved before compaction: $(date -Iseconds)_" >> "$CONTEXT"
|
|
175
|
+
echo "" >> "$CONTEXT"
|
|
176
|
+
|
|
177
|
+
# Save today's activity log summary if it exists
|
|
178
|
+
DATE=$(date +%Y-%m-%d)
|
|
179
|
+
DAILY="$MEMORY_DIR/daily/$DATE.md"
|
|
180
|
+
if [ -f "$DAILY" ]; then
|
|
181
|
+
echo "### Today's Activity" >> "$CONTEXT"
|
|
182
|
+
tail -20 "$DAILY" >> "$CONTEXT"
|
|
183
|
+
echo "" >> "$CONTEXT"
|
|
184
|
+
fi
|
|
185
|
+
`,
|
|
186
|
+
},
|
|
187
|
+
];
|
|
188
|
+
const PREFERENCES_TEMPLATE = `# Suzi Preferences
|
|
189
|
+
|
|
190
|
+
## Trading Style
|
|
191
|
+
<!-- Define your risk preferences -->
|
|
192
|
+
<!-- Example:
|
|
193
|
+
- Conservative: max 5% per position
|
|
194
|
+
- Prefer high-liquidity markets
|
|
195
|
+
- Always set stop-losses
|
|
196
|
+
-->
|
|
197
|
+
|
|
198
|
+
## Protocol Preferences
|
|
199
|
+
<!-- Which protocols and chains do you prefer? -->
|
|
200
|
+
<!-- Example:
|
|
201
|
+
- Primary: Polymarket
|
|
202
|
+
- Chain: EVM
|
|
203
|
+
-->
|
|
204
|
+
|
|
205
|
+
## Agent Conventions
|
|
206
|
+
<!-- Any patterns you want all your agents to follow -->
|
|
207
|
+
<!-- Example:
|
|
208
|
+
- Always log on activate/deactivate
|
|
209
|
+
- Include a kill switch for drawdown > 10%
|
|
210
|
+
- Use 5-minute cron intervals minimum
|
|
211
|
+
-->
|
|
212
|
+
`;
|
|
213
|
+
const HOOK_CONFIG = {
|
|
214
|
+
hooks: {
|
|
215
|
+
SessionStart: [
|
|
216
|
+
{
|
|
217
|
+
matcher: 'startup|resume|compact',
|
|
218
|
+
hooks: [
|
|
219
|
+
{
|
|
220
|
+
type: 'command',
|
|
221
|
+
command: '$HOME/.claude/hooks/suzi-session-start.sh',
|
|
222
|
+
},
|
|
223
|
+
],
|
|
224
|
+
},
|
|
225
|
+
],
|
|
226
|
+
PostToolUse: [
|
|
227
|
+
{
|
|
228
|
+
matcher: 'Bash',
|
|
229
|
+
hooks: [
|
|
230
|
+
{
|
|
231
|
+
type: 'command',
|
|
232
|
+
command: '$HOME/.claude/hooks/suzi-capture-cli.sh',
|
|
233
|
+
async: true,
|
|
234
|
+
},
|
|
235
|
+
],
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
PreCompact: [
|
|
239
|
+
{
|
|
240
|
+
hooks: [
|
|
241
|
+
{
|
|
242
|
+
type: 'command',
|
|
243
|
+
command: '$HOME/.claude/hooks/suzi-pre-compact.sh',
|
|
244
|
+
},
|
|
245
|
+
],
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
},
|
|
249
|
+
};
|
|
250
|
+
// ── Core Logic (reusable) ─────────────────────────────────────────
|
|
251
|
+
function writeScript(filePath, content) {
|
|
252
|
+
const dir = path_1.default.dirname(filePath);
|
|
253
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
254
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
255
|
+
}
|
|
256
|
+
if (fs_1.default.existsSync(filePath)) {
|
|
257
|
+
const existing = fs_1.default.readFileSync(filePath, 'utf-8');
|
|
258
|
+
if (existing === content)
|
|
259
|
+
return 'unchanged';
|
|
260
|
+
fs_1.default.writeFileSync(filePath, content, { mode: 0o755 });
|
|
261
|
+
return 'updated';
|
|
262
|
+
}
|
|
263
|
+
fs_1.default.writeFileSync(filePath, content, { mode: 0o755 });
|
|
264
|
+
return 'installed';
|
|
265
|
+
}
|
|
266
|
+
function mergeSettings(settingsPath, hookConfig) {
|
|
267
|
+
let existing = {};
|
|
268
|
+
if (fs_1.default.existsSync(settingsPath)) {
|
|
269
|
+
try {
|
|
270
|
+
existing = JSON.parse(fs_1.default.readFileSync(settingsPath, 'utf-8'));
|
|
271
|
+
}
|
|
272
|
+
catch {
|
|
273
|
+
existing = {};
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
// Merge hooks — preserve existing hooks, add Suzi ones
|
|
277
|
+
if (!existing.hooks) {
|
|
278
|
+
existing.hooks = {};
|
|
279
|
+
}
|
|
280
|
+
for (const [event, entries] of Object.entries(hookConfig.hooks)) {
|
|
281
|
+
if (!existing.hooks[event]) {
|
|
282
|
+
existing.hooks[event] = entries;
|
|
283
|
+
}
|
|
284
|
+
else {
|
|
285
|
+
// Check if suzi hooks already present
|
|
286
|
+
const existingCommands = existing.hooks[event]
|
|
287
|
+
.flatMap((e) => (e.hooks || []).map((h) => h.command));
|
|
288
|
+
for (const entry of entries) {
|
|
289
|
+
const newCommands = entry.hooks.map((h) => h.command);
|
|
290
|
+
const alreadyPresent = newCommands.every((cmd) => existingCommands.includes(cmd));
|
|
291
|
+
if (!alreadyPresent) {
|
|
292
|
+
existing.hooks[event].push(entry);
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
const dir = path_1.default.dirname(settingsPath);
|
|
298
|
+
if (!fs_1.default.existsSync(dir)) {
|
|
299
|
+
fs_1.default.mkdirSync(dir, { recursive: true });
|
|
300
|
+
}
|
|
301
|
+
fs_1.default.writeFileSync(settingsPath, JSON.stringify(existing, null, 2));
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Install Suzi hooks globally to ~/.claude/.
|
|
305
|
+
* Can be called programmatically (e.g. during login onboarding) or via the CLI command.
|
|
306
|
+
*/
|
|
307
|
+
function installHooksGlobal() {
|
|
308
|
+
const home = os_1.default.homedir();
|
|
309
|
+
const hooksDir = path_1.default.join(home, '.claude', 'hooks');
|
|
310
|
+
// 1. Write hook scripts
|
|
311
|
+
const scripts = HOOK_SCRIPTS.map((script) => {
|
|
312
|
+
const filePath = path_1.default.join(hooksDir, script.file);
|
|
313
|
+
const state = writeScript(filePath, script.content);
|
|
314
|
+
return { name: script.name, state };
|
|
315
|
+
});
|
|
316
|
+
// 2. Merge settings
|
|
317
|
+
const settingsPath = path_1.default.join(home, '.claude', 'settings.json');
|
|
318
|
+
mergeSettings(settingsPath, HOOK_CONFIG);
|
|
319
|
+
// 3. Ensure memory directories
|
|
320
|
+
const memoryDir = (0, memory_1.getMemoryDir)();
|
|
321
|
+
const dailyDir = path_1.default.join(memoryDir, 'daily');
|
|
322
|
+
let memoryCreated = false;
|
|
323
|
+
if (!fs_1.default.existsSync(dailyDir)) {
|
|
324
|
+
fs_1.default.mkdirSync(dailyDir, { recursive: true });
|
|
325
|
+
memoryCreated = true;
|
|
326
|
+
}
|
|
327
|
+
return { scripts, settingsMerged: true, memoryCreated };
|
|
328
|
+
}
|
|
329
|
+
// ── CLI Command ───────────────────────────────────────────────────
|
|
330
|
+
function registerInstallHooksCommand(program) {
|
|
331
|
+
program
|
|
332
|
+
.command('install-hooks')
|
|
333
|
+
.description('Install Claude Code hooks for auto-context injection')
|
|
334
|
+
.option('--preferences', 'Also create a starter preferences.md file')
|
|
335
|
+
.action((opts) => {
|
|
336
|
+
(0, ui_1.header)('Install Suzi Hooks (Global)');
|
|
337
|
+
console.log();
|
|
338
|
+
const result = installHooksGlobal();
|
|
339
|
+
const lines = [];
|
|
340
|
+
for (const s of result.scripts) {
|
|
341
|
+
const icon = s.state === 'installed' ? chalk_1.default.green('✓') : s.state === 'updated' ? chalk_1.default.yellow('↑') : chalk_1.default.gray('–');
|
|
342
|
+
lines.push(` ${icon} ${s.name} hook: ${s.state}`);
|
|
343
|
+
}
|
|
344
|
+
lines.push(` ${chalk_1.default.green('✓')} ~/.claude/settings.json: hooks configured`);
|
|
345
|
+
if (result.memoryCreated) {
|
|
346
|
+
lines.push(` ${chalk_1.default.green('✓')} ~/.suzi/memory/daily/: created`);
|
|
347
|
+
}
|
|
348
|
+
else {
|
|
349
|
+
lines.push(` ${chalk_1.default.gray('–')} ~/.suzi/memory/: already exists`);
|
|
350
|
+
}
|
|
351
|
+
// Optionally create preferences.md
|
|
352
|
+
if (opts.preferences) {
|
|
353
|
+
const prefsPath = path_1.default.join(os_1.default.homedir(), '.suzi', 'preferences.md');
|
|
354
|
+
if (!fs_1.default.existsSync(prefsPath)) {
|
|
355
|
+
fs_1.default.writeFileSync(prefsPath, PREFERENCES_TEMPLATE);
|
|
356
|
+
lines.push(` ${chalk_1.default.green('✓')} ~/.suzi/preferences.md: created`);
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
lines.push(` ${chalk_1.default.gray('–')} ~/.suzi/preferences.md: already exists`);
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
for (const line of lines) {
|
|
363
|
+
console.log(line);
|
|
364
|
+
}
|
|
365
|
+
console.log();
|
|
366
|
+
(0, ui_1.divider)();
|
|
367
|
+
console.log();
|
|
368
|
+
(0, ui_1.success)('Global hooks installed!');
|
|
369
|
+
console.log();
|
|
370
|
+
(0, ui_1.info)('Hooks installed to ~/.claude/hooks/ — active in all projects.');
|
|
371
|
+
(0, ui_1.info)('Claude Code will now auto-inject Suzi context on session start.');
|
|
372
|
+
(0, ui_1.info)('CLI command outcomes will be captured to learnings (async).');
|
|
373
|
+
(0, ui_1.info)('Context will be preserved before compaction.');
|
|
374
|
+
if (!opts.preferences) {
|
|
375
|
+
console.log();
|
|
376
|
+
(0, ui_1.info)(`Tip: Run ${chalk_1.default.cyan('suzi install-hooks --preferences')} to create a preferences file.`);
|
|
377
|
+
}
|
|
378
|
+
console.log();
|
|
379
|
+
});
|
|
380
|
+
}
|
|
381
|
+
//# sourceMappingURL=install-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-hooks.js","sourceRoot":"","sources":["../../src/commands/install-hooks.ts"],"names":[],"mappings":";;;;;AA8UA,gDAyBC;AAID,kEAwDC;AAlaD,kDAA0B;AAC1B,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AACpB,oCAA4E;AAC5E,0CAA6C;AAE7C,sEAAsE;AAEtE,MAAM,YAAY,GAA2D;IAC3E;QACE,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,uBAAuB;QAC7B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDZ;KACE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmFZ;KACE;IACD;QACE,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,qBAAqB;QAC3B,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBZ;KACE;CACF,CAAC;AAEF,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwB5B,CAAC;AAiBF,MAAM,WAAW,GAAe;IAC9B,KAAK,EAAE;QACL,YAAY,EAAE;YACZ;gBACE,OAAO,EAAE,wBAAwB;gBACjC,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,2CAA2C;qBACrD;iBACF;aACF;SACF;QACD,WAAW,EAAE;YACX;gBACE,OAAO,EAAE,MAAM;gBACf,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,yCAAyC;wBAClD,KAAK,EAAE,IAAI;qBACZ;iBACF;aACF;SACF;QACD,UAAU,EAAE;YACV;gBACE,KAAK,EAAE;oBACL;wBACE,IAAI,EAAE,SAAS;wBACf,OAAO,EAAE,yCAAyC;qBACnD;iBACF;aACF;SACF;KACF;CACF,CAAC;AAEF,qEAAqE;AAErE,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,QAAQ,KAAK,OAAO;YAAE,OAAO,WAAW,CAAC;QAC7C,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,YAAoB,EAAE,UAAsB;IACjE,IAAI,QAAQ,GAAQ,EAAE,CAAC;IAEvB,IAAI,YAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,sCAAsC;YACtC,MAAM,gBAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;iBAC3C,OAAO,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YAEnE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACtD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBAClF,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GAAG,cAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACpE,CAAC;AAQD;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,MAAM,IAAI,GAAG,YAAE,CAAC,OAAO,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAErD,wBAAwB;IACxB,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC1C,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACjE,aAAa,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAEzC,+BAA+B;IAC/B,MAAM,SAAS,GAAG,IAAA,qBAAY,GAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,YAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,aAAa,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;AAC1D,CAAC;AAED,qEAAqE;AAErE,SAAgB,2BAA2B,CAAC,OAAgB;IAC1D,OAAO;SACJ,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,sDAAsD,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,2CAA2C,CAAC;SACpE,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE;QACpB,IAAA,WAAM,EAAC,6BAA6B,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,EAAE,CAAC;QAEd,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,eAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtH,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAE9E,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;QACrE,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;YACrE,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9B,YAAE,CAAC,aAAa,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,KAAK,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,KAAK,eAAK,CAAC,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;QAED,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,YAAO,GAAE,CAAC;QACV,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,YAAO,EAAC,yBAAyB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,IAAA,SAAI,EAAC,+DAA+D,CAAC,CAAC;QACtE,IAAA,SAAI,EAAC,iEAAiE,CAAC,CAAC;QACxE,IAAA,SAAI,EAAC,6DAA6D,CAAC,CAAC;QACpE,IAAA,SAAI,EAAC,8CAA8C,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAA,SAAI,EAAC,YAAY,eAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,gCAAgC,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-actions.d.ts","sourceRoot":"","sources":["../../src/commands/list-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2GpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwIjE"}
|
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.
|
|
6
|
+
exports.registerListActionsCommand = registerListActionsCommand;
|
|
7
7
|
const chalk_1 = __importDefault(require("chalk"));
|
|
8
8
|
const fs_1 = __importDefault(require("fs"));
|
|
9
9
|
const path_1 = __importDefault(require("path"));
|
|
@@ -92,10 +92,10 @@ function groupByProtocol(actions) {
|
|
|
92
92
|
}
|
|
93
93
|
return groups;
|
|
94
94
|
}
|
|
95
|
-
function
|
|
95
|
+
function registerListActionsCommand(program) {
|
|
96
96
|
const cmd = program
|
|
97
|
-
.command('list-
|
|
98
|
-
.alias('
|
|
97
|
+
.command('list-actions')
|
|
98
|
+
.alias('actions')
|
|
99
99
|
.description('List all available protocols and actions')
|
|
100
100
|
.option('--protocol <name>', 'Filter by protocol name')
|
|
101
101
|
.option('--verbose', 'Show all actions per protocol')
|
|
@@ -109,7 +109,7 @@ function registerListToolsCommand(program) {
|
|
|
109
109
|
// --schema: show schema for a single action
|
|
110
110
|
if (opts.schema) {
|
|
111
111
|
if (!opts.protocol) {
|
|
112
|
-
(0, ui_1.error)('--schema requires --protocol. Example: suzi list-
|
|
112
|
+
(0, ui_1.error)('--schema requires --protocol. Example: suzi list-actions --protocol polymarket --schema place_order');
|
|
113
113
|
return;
|
|
114
114
|
}
|
|
115
115
|
const protocolActions = grouped.get(opts.protocol);
|
|
@@ -129,11 +129,15 @@ function registerListToolsCommand(program) {
|
|
|
129
129
|
}
|
|
130
130
|
return;
|
|
131
131
|
}
|
|
132
|
-
|
|
132
|
+
const schema = {
|
|
133
|
+
parameters: match.parameters,
|
|
134
|
+
...(match.response ? { response: match.response } : {}),
|
|
135
|
+
};
|
|
136
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
133
137
|
return;
|
|
134
138
|
}
|
|
135
139
|
// Default: list protocols and actions
|
|
136
|
-
(0, ui_1.header)('Available
|
|
140
|
+
(0, ui_1.header)('Available Actions');
|
|
137
141
|
console.log();
|
|
138
142
|
const protocols = opts.protocol
|
|
139
143
|
? [[opts.protocol, grouped.get(opts.protocol)]]
|
|
@@ -143,50 +147,52 @@ function registerListToolsCommand(program) {
|
|
|
143
147
|
(0, ui_1.info)(`Available: ${Array.from(grouped.keys()).join(', ')}`);
|
|
144
148
|
return;
|
|
145
149
|
}
|
|
150
|
+
const showDetails = opts.verbose || opts.protocol;
|
|
146
151
|
for (const [protocol, protocolActions] of protocols) {
|
|
147
152
|
if (!protocolActions)
|
|
148
153
|
continue;
|
|
149
154
|
const badge = chainBadge(protocolActions);
|
|
150
|
-
console.log(` ${
|
|
151
|
-
|
|
155
|
+
console.log(` ${ui_1.colors.highlight(protocol)} ${badge}`);
|
|
156
|
+
console.log();
|
|
152
157
|
if (showDetails) {
|
|
153
158
|
const readActions = protocolActions.filter((a) => isReadAction(a.name));
|
|
154
159
|
const writeActions = protocolActions.filter((a) => !isReadAction(a.name));
|
|
155
160
|
if (writeActions.length > 0) {
|
|
156
|
-
console.log();
|
|
157
161
|
console.log(` ${chalk_1.default.yellow('Write Actions:')}`);
|
|
158
162
|
for (const action of writeActions) {
|
|
159
163
|
const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
|
|
160
164
|
console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
|
|
161
165
|
}
|
|
166
|
+
console.log();
|
|
162
167
|
}
|
|
163
168
|
if (readActions.length > 0) {
|
|
164
|
-
console.log();
|
|
165
169
|
console.log(` ${chalk_1.default.cyan('Read Actions:')}`);
|
|
166
170
|
for (const action of readActions) {
|
|
167
171
|
const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
|
|
168
172
|
console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
|
|
169
173
|
}
|
|
174
|
+
console.log();
|
|
170
175
|
}
|
|
171
176
|
}
|
|
172
177
|
else {
|
|
173
|
-
const
|
|
174
|
-
|
|
175
|
-
|
|
178
|
+
for (const action of protocolActions) {
|
|
179
|
+
const shortName = action.name.includes('.') ? action.name.split('.')[1] : action.name;
|
|
180
|
+
console.log(` ${ui_1.colors.highlight(shortName)} ${ui_1.colors.muted(action.description)}`);
|
|
181
|
+
}
|
|
182
|
+
console.log();
|
|
176
183
|
}
|
|
177
|
-
console.log();
|
|
178
184
|
}
|
|
179
185
|
const totalActions = actions.length;
|
|
180
186
|
(0, ui_1.divider)();
|
|
181
187
|
(0, ui_1.info)(`${grouped.size} protocols, ${totalActions} total actions`);
|
|
182
188
|
const age = cacheAge();
|
|
183
189
|
if (age) {
|
|
184
|
-
(0, ui_1.info)(`Cached ${age}. Run ${chalk_1.default.cyan('suzi list-
|
|
190
|
+
(0, ui_1.info)(`Cached ${age}. Run ${chalk_1.default.cyan('suzi list-actions reload')} to refresh.`);
|
|
185
191
|
}
|
|
186
192
|
if (!opts.verbose && !opts.protocol) {
|
|
187
193
|
(0, ui_1.info)('Use --verbose or --protocol <name> for details.');
|
|
188
194
|
}
|
|
189
|
-
(0, ui_1.info)(`Use ${chalk_1.default.cyan('suzi list-
|
|
195
|
+
(0, ui_1.info)(`Use ${chalk_1.default.cyan('suzi list-actions --protocol <name> --schema <action>')} to view schema.`);
|
|
190
196
|
}
|
|
191
197
|
catch (err) {
|
|
192
198
|
(0, ui_1.error)(`Failed to fetch actions: ${err.message}`);
|
|
@@ -209,4 +215,4 @@ function registerListToolsCommand(program) {
|
|
|
209
215
|
}
|
|
210
216
|
});
|
|
211
217
|
}
|
|
212
|
-
//# sourceMappingURL=list-
|
|
218
|
+
//# sourceMappingURL=list-actions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-actions.js","sourceRoot":"","sources":["../../src/commands/list-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list-triggers.d.ts","sourceRoot":"","sources":["../../src/commands/list-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"list-triggers.d.ts","sourceRoot":"","sources":["../../src/commands/list-triggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsDpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4JlE"}
|
|
@@ -30,6 +30,16 @@ function formatConfigFields(schema) {
|
|
|
30
30
|
}
|
|
31
31
|
return lines;
|
|
32
32
|
}
|
|
33
|
+
function formatOutputFields(schema) {
|
|
34
|
+
const properties = (schema?.properties ?? {});
|
|
35
|
+
const lines = [];
|
|
36
|
+
for (const [name, prop] of Object.entries(properties)) {
|
|
37
|
+
const type = prop.type ?? 'unknown';
|
|
38
|
+
const desc = prop.description ? ` ${ui_1.colors.muted(prop.description)}` : '';
|
|
39
|
+
lines.push(` ${ui_1.colors.highlight(name)} ${ui_1.colors.muted(`(${type})`)}${desc}`);
|
|
40
|
+
}
|
|
41
|
+
return lines;
|
|
42
|
+
}
|
|
33
43
|
function registerListTriggersCommand(program) {
|
|
34
44
|
program
|
|
35
45
|
.command('list-triggers')
|
|
@@ -59,6 +69,7 @@ function registerListTriggersCommand(program) {
|
|
|
59
69
|
? Array.from(groupByProtocol(allRes.data.triggers).keys())
|
|
60
70
|
: [];
|
|
61
71
|
spinner.fail(`Protocol "${opts.protocol}" not found`);
|
|
72
|
+
process.exitCode = 1;
|
|
62
73
|
if (allProtocols.length > 0) {
|
|
63
74
|
(0, ui_1.info)(`Available: ${allProtocols.join(', ')}`);
|
|
64
75
|
}
|
|
@@ -74,6 +85,7 @@ function registerListTriggersCommand(program) {
|
|
|
74
85
|
const protocolTriggers = grouped.get(opts.protocol);
|
|
75
86
|
if (!protocolTriggers) {
|
|
76
87
|
spinner.fail(`Protocol "${opts.protocol}" not found.`);
|
|
88
|
+
process.exitCode = 1;
|
|
77
89
|
(0, ui_1.info)(`Available: ${Array.from(grouped.keys()).join(', ')}`);
|
|
78
90
|
return;
|
|
79
91
|
}
|
|
@@ -81,6 +93,7 @@ function registerListTriggersCommand(program) {
|
|
|
81
93
|
const match = protocolTriggers.find((t) => t.name === fullName);
|
|
82
94
|
if (!match) {
|
|
83
95
|
spinner.fail(`Trigger "${opts.schema}" not found in ${opts.protocol}.`);
|
|
96
|
+
process.exitCode = 1;
|
|
84
97
|
(0, ui_1.info)('Available triggers:');
|
|
85
98
|
for (const t of protocolTriggers) {
|
|
86
99
|
const short = t.name.includes('.') ? t.name.split('.')[1] : t.name;
|
|
@@ -89,7 +102,11 @@ function registerListTriggersCommand(program) {
|
|
|
89
102
|
return;
|
|
90
103
|
}
|
|
91
104
|
spinner.succeed(`Schema for ${opts.protocol}.${opts.schema}`);
|
|
92
|
-
|
|
105
|
+
const schema = {
|
|
106
|
+
configSchema: match.configSchema,
|
|
107
|
+
...(match.outputSchema ? { outputSchema: match.outputSchema } : {}),
|
|
108
|
+
};
|
|
109
|
+
console.log(JSON.stringify(schema, null, 2));
|
|
93
110
|
return;
|
|
94
111
|
}
|
|
95
112
|
// Default: list protocols and triggers
|
|
@@ -117,6 +134,15 @@ function registerListTriggersCommand(program) {
|
|
|
117
134
|
console.log(line);
|
|
118
135
|
}
|
|
119
136
|
}
|
|
137
|
+
if (trigger.outputSchema) {
|
|
138
|
+
const outputLines = formatOutputFields(trigger.outputSchema);
|
|
139
|
+
if (outputLines.length > 0) {
|
|
140
|
+
console.log(` ${chalk_1.default.cyan('Output:')}`);
|
|
141
|
+
for (const line of outputLines) {
|
|
142
|
+
console.log(line);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
120
146
|
if (trigger.example) {
|
|
121
147
|
console.log(` ${chalk_1.default.cyan('Example:')}`);
|
|
122
148
|
for (const line of trigger.example.split('\n')) {
|