claude-smart 0.2.30 → 0.2.32
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 +2 -2
- package/bin/claude-smart.js +172 -18
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/.codex-plugin/plugin.json +1 -1
- package/plugin/dashboard/app/api/config/route.ts +11 -2
- package/plugin/dashboard/app/api/health/route.ts +45 -6
- package/plugin/dashboard/app/api/reflexio/[...path]/route.ts +15 -7
- package/plugin/dashboard/app/api/rules/applied/route.ts +27 -0
- package/plugin/dashboard/app/configure/env/page.tsx +36 -31
- package/plugin/dashboard/app/configure/layout.tsx +1 -1
- package/plugin/dashboard/app/configure/server/page.tsx +8 -14
- package/plugin/dashboard/app/dashboard/page.tsx +311 -115
- package/plugin/dashboard/app/globals.css +80 -66
- package/plugin/dashboard/app/layout.tsx +13 -10
- package/plugin/dashboard/app/preferences/[id]/page.tsx +21 -32
- package/plugin/dashboard/app/preferences/page.tsx +154 -54
- package/plugin/dashboard/app/preferences/project/[id]/page.tsx +1 -0
- package/plugin/dashboard/app/rules/[id]/page.tsx +51 -0
- package/plugin/dashboard/app/sessions/[sessionId]/page.tsx +4 -4
- package/plugin/dashboard/app/sessions/page.tsx +14 -10
- package/plugin/dashboard/app/skills/page.tsx +175 -56
- package/plugin/dashboard/app/skills/project/[id]/page.tsx +22 -38
- package/plugin/dashboard/app/skills/shared/[id]/page.tsx +20 -37
- package/plugin/dashboard/components/common/delete-learning-danger-zone.tsx +166 -0
- package/plugin/dashboard/components/common/empty-state.tsx +4 -2
- package/plugin/dashboard/components/common/learnings-badge.tsx +1 -1
- package/plugin/dashboard/components/common/page-header.tsx +5 -3
- package/plugin/dashboard/components/common/page-tabs.tsx +4 -4
- package/plugin/dashboard/components/common/stat-card.tsx +9 -5
- package/plugin/dashboard/components/layout/sidebar.tsx +24 -9
- package/plugin/dashboard/components/layout/top-bar.tsx +37 -25
- package/plugin/dashboard/components/ui/input.tsx +1 -0
- package/plugin/dashboard/hooks/use-settings.tsx +30 -61
- package/plugin/dashboard/hooks/use-stall-state.ts +5 -9
- package/plugin/dashboard/lib/config-file.ts +2 -0
- package/plugin/dashboard/lib/reflexio-client.ts +23 -48
- package/plugin/dashboard/lib/session-reader.ts +222 -6
- package/plugin/dashboard/lib/types.ts +20 -1
- package/plugin/dashboard/package-lock.json +70 -95
- package/plugin/dashboard/package.json +5 -2
- package/plugin/hooks/hooks.json +1 -1
- package/plugin/pyproject.toml +1 -1
- package/plugin/scripts/_lib.sh +126 -0
- package/plugin/scripts/backend-service.sh +32 -7
- package/plugin/scripts/cli.sh +4 -2
- package/plugin/scripts/codex-hook.js +100 -3
- package/plugin/scripts/dashboard-service.sh +98 -19
- package/plugin/scripts/hook_entry.sh +32 -11
- package/plugin/scripts/smart-install.sh +27 -44
- package/plugin/src/claude_smart/cli.py +204 -20
- package/plugin/src/claude_smart/context_format.py +244 -6
- package/plugin/src/claude_smart/context_inject.py +8 -1
- package/plugin/src/claude_smart/cs_cite.py +186 -34
- package/plugin/src/claude_smart/env_config.py +102 -0
- package/plugin/src/claude_smart/events/session_end.py +171 -6
- package/plugin/src/claude_smart/events/session_start.py +26 -2
- package/plugin/src/claude_smart/events/stop.py +48 -9
- package/plugin/src/claude_smart/hook.py +62 -4
- package/plugin/src/claude_smart/hook_log.py +301 -0
- package/plugin/src/claude_smart/internal_call.py +30 -0
- package/plugin/src/claude_smart/publish.py +5 -0
- package/plugin/src/claude_smart/reflexio_adapter.py +102 -26
- package/plugin/uv.lock +1 -1
|
@@ -10,6 +10,7 @@ import path from "node:path";
|
|
|
10
10
|
import os from "node:os";
|
|
11
11
|
import type {
|
|
12
12
|
CitedItem,
|
|
13
|
+
PlaybookApplicationStat,
|
|
13
14
|
SessionDetail,
|
|
14
15
|
SessionSummary,
|
|
15
16
|
SessionTurn,
|
|
@@ -50,6 +51,24 @@ type RawRecord = {
|
|
|
50
51
|
published_up_to?: number;
|
|
51
52
|
};
|
|
52
53
|
|
|
54
|
+
type RawInjectedEntry = CitedItem & {
|
|
55
|
+
dashboard_url?: string;
|
|
56
|
+
rule_url?: string;
|
|
57
|
+
ts?: number;
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export interface RuleResolution {
|
|
61
|
+
id: string;
|
|
62
|
+
href: string;
|
|
63
|
+
title: string;
|
|
64
|
+
kind: CitedItem["kind"];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
interface AppliedRulesOptions {
|
|
68
|
+
daysBack?: number;
|
|
69
|
+
limit?: number;
|
|
70
|
+
}
|
|
71
|
+
|
|
53
72
|
async function readJsonl(filePath: string): Promise<RawRecord[]> {
|
|
54
73
|
const text = await fs.readFile(filePath, "utf-8");
|
|
55
74
|
const out: RawRecord[] = [];
|
|
@@ -65,6 +84,195 @@ async function readJsonl(filePath: string): Promise<RawRecord[]> {
|
|
|
65
84
|
return out;
|
|
66
85
|
}
|
|
67
86
|
|
|
87
|
+
async function readInjectedJsonl(filePath: string): Promise<RawInjectedEntry[]> {
|
|
88
|
+
const text = await fs.readFile(filePath, "utf-8");
|
|
89
|
+
const out: RawInjectedEntry[] = [];
|
|
90
|
+
for (const line of text.split("\n")) {
|
|
91
|
+
const trimmed = line.trim();
|
|
92
|
+
if (!trimmed) continue;
|
|
93
|
+
try {
|
|
94
|
+
const rec = JSON.parse(trimmed);
|
|
95
|
+
if (
|
|
96
|
+
rec &&
|
|
97
|
+
typeof rec === "object" &&
|
|
98
|
+
typeof rec.id === "string" &&
|
|
99
|
+
rec.id.length > 0
|
|
100
|
+
) {
|
|
101
|
+
out.push(rec);
|
|
102
|
+
}
|
|
103
|
+
} catch {
|
|
104
|
+
// skip malformed line, matches state.py behaviour
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
function hrefForInjectedEntry(entry: RawInjectedEntry): string | null {
|
|
111
|
+
const realId = entry.real_id;
|
|
112
|
+
if (typeof realId === "string" && realId.length > 0) {
|
|
113
|
+
if (entry.kind === "profile") {
|
|
114
|
+
return `/preferences/project/${encodeURIComponent(realId)}`;
|
|
115
|
+
}
|
|
116
|
+
if (entry.kind === "playbook") {
|
|
117
|
+
const scope = entry.source_kind === "agent_playbook" ? "shared" : "project";
|
|
118
|
+
return `/skills/${scope}/${encodeURIComponent(realId)}`;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (typeof entry.dashboard_url === "string" && entry.dashboard_url.length > 0) {
|
|
122
|
+
try {
|
|
123
|
+
const parsed = new URL(entry.dashboard_url);
|
|
124
|
+
return `${parsed.pathname}${parsed.search}`;
|
|
125
|
+
} catch {
|
|
126
|
+
if (entry.dashboard_url.startsWith("/")) return entry.dashboard_url;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
function canonicalHrefForCitedItem(item: CitedItem): string | null {
|
|
133
|
+
const realId = item.real_id;
|
|
134
|
+
if (typeof realId !== "string" || realId.length === 0) return null;
|
|
135
|
+
if (item.kind === "profile") {
|
|
136
|
+
return `/preferences/project/${encodeURIComponent(realId)}`;
|
|
137
|
+
}
|
|
138
|
+
const scope = item.source_kind === "agent_playbook" ? "shared" : "project";
|
|
139
|
+
return `/skills/${scope}/${encodeURIComponent(realId)}`;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function ruleHrefForCitedItem(item: CitedItem): string | null {
|
|
143
|
+
if (/^[ps]\d+(?:-[A-Za-z0-9]{1,8})?$/.test(item.id)) {
|
|
144
|
+
return `/rules/${encodeURIComponent(item.id)}`;
|
|
145
|
+
}
|
|
146
|
+
return canonicalHrefForCitedItem(item);
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
function statKeyForCitedItem(item: CitedItem): string {
|
|
150
|
+
const realId = item.real_id && item.real_id.length > 0 ? item.real_id : item.id;
|
|
151
|
+
const sourceKind =
|
|
152
|
+
item.kind === "profile" ? "profile" : item.source_kind ?? "user_playbook";
|
|
153
|
+
return `${item.kind}:${sourceKind}:${realId}`;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
export async function resolveRuleLink(
|
|
157
|
+
citationId: string,
|
|
158
|
+
): Promise<RuleResolution | null> {
|
|
159
|
+
if (!/^[ps]\d+(?:-[A-Za-z0-9]{1,8})?$/.test(citationId)) return null;
|
|
160
|
+
const dir = stateDir();
|
|
161
|
+
let entries: string[];
|
|
162
|
+
try {
|
|
163
|
+
entries = await fs.readdir(dir);
|
|
164
|
+
} catch {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
const files = (
|
|
168
|
+
await Promise.all(
|
|
169
|
+
entries
|
|
170
|
+
.filter((entry) => entry.endsWith(".injected.jsonl"))
|
|
171
|
+
.map(async (entry) => {
|
|
172
|
+
const fullPath = path.join(dir, entry);
|
|
173
|
+
const stat = await fs.stat(fullPath).catch(() => null);
|
|
174
|
+
return stat?.isFile() ? { fullPath, mtimeMs: stat.mtimeMs } : null;
|
|
175
|
+
}),
|
|
176
|
+
)
|
|
177
|
+
)
|
|
178
|
+
.filter((entry): entry is { fullPath: string; mtimeMs: number } => !!entry)
|
|
179
|
+
.sort((a, b) => b.mtimeMs - a.mtimeMs);
|
|
180
|
+
|
|
181
|
+
for (const file of files) {
|
|
182
|
+
const records = await readInjectedJsonl(file.fullPath).catch(() => []);
|
|
183
|
+
for (let i = records.length - 1; i >= 0; i--) {
|
|
184
|
+
const entry = records[i];
|
|
185
|
+
if (entry.id !== citationId) continue;
|
|
186
|
+
const href = hrefForInjectedEntry(entry);
|
|
187
|
+
if (!href) continue;
|
|
188
|
+
return {
|
|
189
|
+
id: entry.id,
|
|
190
|
+
href,
|
|
191
|
+
title: entry.title || entry.id,
|
|
192
|
+
kind: entry.kind,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return null;
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export async function listAppliedRules(
|
|
200
|
+
opts: AppliedRulesOptions = {},
|
|
201
|
+
): Promise<PlaybookApplicationStat[]> {
|
|
202
|
+
const daysBack = opts.daysBack ?? 30;
|
|
203
|
+
const limit = opts.limit ?? 20;
|
|
204
|
+
const cutoff =
|
|
205
|
+
daysBack > 0 ? Math.floor(Date.now() / 1000) - daysBack * 24 * 60 * 60 : null;
|
|
206
|
+
const dir = stateDir();
|
|
207
|
+
let entries: string[];
|
|
208
|
+
try {
|
|
209
|
+
entries = await fs.readdir(dir);
|
|
210
|
+
} catch {
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
const stats = new Map<string, PlaybookApplicationStat>();
|
|
215
|
+
for (const entry of entries) {
|
|
216
|
+
if (!entry.endsWith(".jsonl") || entry.endsWith(".injected.jsonl")) continue;
|
|
217
|
+
const fullPath = path.join(dir, entry);
|
|
218
|
+
const records = await readJsonl(fullPath).catch(() => []);
|
|
219
|
+
for (let idx = 0; idx < records.length; idx++) {
|
|
220
|
+
const rec = records[idx];
|
|
221
|
+
if (
|
|
222
|
+
rec.role !== "Assistant" ||
|
|
223
|
+
!rec.cited_items ||
|
|
224
|
+
rec.cited_items.length === 0
|
|
225
|
+
) {
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
const ts = typeof rec.ts === "number" ? rec.ts : null;
|
|
229
|
+
if (cutoff !== null && ts !== null && ts < cutoff) continue;
|
|
230
|
+
|
|
231
|
+
for (const item of rec.cited_items) {
|
|
232
|
+
const realId =
|
|
233
|
+
item.real_id && item.real_id.length > 0 ? item.real_id : item.id;
|
|
234
|
+
const key = statKeyForCitedItem(item);
|
|
235
|
+
const prev = stats.get(key);
|
|
236
|
+
const href = canonicalHrefForCitedItem(item) ?? ruleHrefForCitedItem(item);
|
|
237
|
+
if (prev) {
|
|
238
|
+
prev.applied_count += 1;
|
|
239
|
+
if ((ts ?? 0) >= (prev.last_applied_at ?? 0)) {
|
|
240
|
+
prev.citation_id = item.id;
|
|
241
|
+
prev.title = item.title || prev.title;
|
|
242
|
+
prev.href = href ?? prev.href;
|
|
243
|
+
prev.last_applied_at = ts;
|
|
244
|
+
prev.last_interaction_id = idx;
|
|
245
|
+
}
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
stats.set(key, {
|
|
249
|
+
real_id: realId,
|
|
250
|
+
citation_id: item.id,
|
|
251
|
+
kind: item.kind,
|
|
252
|
+
source_kind:
|
|
253
|
+
item.kind === "profile"
|
|
254
|
+
? "profile"
|
|
255
|
+
: item.source_kind ?? "user_playbook",
|
|
256
|
+
title: item.title || item.id,
|
|
257
|
+
href: href ?? undefined,
|
|
258
|
+
applied_count: 1,
|
|
259
|
+
last_applied_at: ts,
|
|
260
|
+
last_interaction_id: idx,
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
return Array.from(stats.values())
|
|
267
|
+
.sort((a, b) => {
|
|
268
|
+
if (b.applied_count !== a.applied_count) {
|
|
269
|
+
return b.applied_count - a.applied_count;
|
|
270
|
+
}
|
|
271
|
+
return (b.last_applied_at ?? 0) - (a.last_applied_at ?? 0);
|
|
272
|
+
})
|
|
273
|
+
.slice(0, limit);
|
|
274
|
+
}
|
|
275
|
+
|
|
68
276
|
function foldTurns(records: RawRecord[]): {
|
|
69
277
|
turns: SessionTurn[];
|
|
70
278
|
publishedUpTo: number;
|
|
@@ -200,13 +408,21 @@ export async function listSessions(): Promise<SessionSummary[]> {
|
|
|
200
408
|
}
|
|
201
409
|
|
|
202
410
|
export async function deleteSession(sessionId: string): Promise<boolean> {
|
|
203
|
-
const
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
411
|
+
const dir = stateDir();
|
|
412
|
+
const files = [
|
|
413
|
+
path.join(dir, `${sessionId}.jsonl`),
|
|
414
|
+
path.join(dir, `${sessionId}.injected.jsonl`),
|
|
415
|
+
];
|
|
416
|
+
let removedAny = false;
|
|
417
|
+
for (const file of files) {
|
|
418
|
+
try {
|
|
419
|
+
await fs.unlink(file);
|
|
420
|
+
removedAny = true;
|
|
421
|
+
} catch (error) {
|
|
422
|
+
if ((error as NodeJS.ErrnoException).code !== "ENOENT") return false;
|
|
423
|
+
}
|
|
209
424
|
}
|
|
425
|
+
return removedAny;
|
|
210
426
|
}
|
|
211
427
|
|
|
212
428
|
export async function deleteAllSessions(): Promise<number> {
|
|
@@ -113,12 +113,14 @@ export interface SessionDetail {
|
|
|
113
113
|
|
|
114
114
|
export interface ClaudeSmartConfig {
|
|
115
115
|
REFLEXIO_URL: string;
|
|
116
|
+
REFLEXIO_API_KEY: string;
|
|
117
|
+
REFLEXIO_API_KEY_SET?: boolean;
|
|
116
118
|
CLAUDE_SMART_USE_LOCAL_CLI: boolean;
|
|
117
119
|
CLAUDE_SMART_USE_LOCAL_EMBEDDING: boolean;
|
|
118
120
|
CLAUDE_SMART_CLI_PATH: string;
|
|
119
121
|
CLAUDE_SMART_CLI_TIMEOUT: string;
|
|
120
122
|
CLAUDE_SMART_STATE_DIR: string;
|
|
121
|
-
[extra: string]: string | boolean;
|
|
123
|
+
[extra: string]: string | boolean | undefined;
|
|
122
124
|
}
|
|
123
125
|
|
|
124
126
|
export interface ClaudeCodeHookConfig {
|
|
@@ -143,3 +145,20 @@ export interface ReflexioConfig {
|
|
|
143
145
|
user_playbook_extractor_configs?: ReflexioExtractorConfig[] | null;
|
|
144
146
|
[k: string]: unknown;
|
|
145
147
|
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Per-rule citation counts aggregated from local session cited_items. Timestamps
|
|
151
|
+
* are unix epoch seconds, matching the int-epoch convention used elsewhere in
|
|
152
|
+
* the dashboard.
|
|
153
|
+
*/
|
|
154
|
+
export interface PlaybookApplicationStat {
|
|
155
|
+
real_id: string;
|
|
156
|
+
citation_id?: string;
|
|
157
|
+
kind: "playbook" | "profile";
|
|
158
|
+
source_kind?: "user_playbook" | "agent_playbook" | "profile";
|
|
159
|
+
title: string;
|
|
160
|
+
href?: string;
|
|
161
|
+
applied_count: number;
|
|
162
|
+
last_applied_at: number | null;
|
|
163
|
+
last_interaction_id: number | null;
|
|
164
|
+
}
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"class-variance-authority": "^0.7.1",
|
|
13
13
|
"clsx": "^2.1.1",
|
|
14
14
|
"lucide-react": "^0.577.0",
|
|
15
|
-
"next": "16.2.
|
|
15
|
+
"next": "16.2.6",
|
|
16
16
|
"next-themes": "^0.4.6",
|
|
17
17
|
"react": "19.2.4",
|
|
18
18
|
"react-dom": "19.2.4",
|
|
@@ -25,10 +25,13 @@
|
|
|
25
25
|
"@types/react": "^19",
|
|
26
26
|
"@types/react-dom": "^19",
|
|
27
27
|
"eslint": "^9",
|
|
28
|
-
"eslint-config-next": "16.2.
|
|
28
|
+
"eslint-config-next": "16.2.6",
|
|
29
29
|
"shadcn": "^4.0.8",
|
|
30
30
|
"tailwindcss": "^4",
|
|
31
31
|
"typescript": "^5"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=20.9.0"
|
|
32
35
|
}
|
|
33
36
|
},
|
|
34
37
|
"node_modules/@alloc/quick-lru": {
|
|
@@ -1808,15 +1811,15 @@
|
|
|
1808
1811
|
}
|
|
1809
1812
|
},
|
|
1810
1813
|
"node_modules/@next/env": {
|
|
1811
|
-
"version": "16.2.
|
|
1812
|
-
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.
|
|
1813
|
-
"integrity": "sha512-
|
|
1814
|
+
"version": "16.2.6",
|
|
1815
|
+
"resolved": "https://registry.npmjs.org/@next/env/-/env-16.2.6.tgz",
|
|
1816
|
+
"integrity": "sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==",
|
|
1814
1817
|
"license": "MIT"
|
|
1815
1818
|
},
|
|
1816
1819
|
"node_modules/@next/eslint-plugin-next": {
|
|
1817
|
-
"version": "16.2.
|
|
1818
|
-
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.
|
|
1819
|
-
"integrity": "sha512-
|
|
1820
|
+
"version": "16.2.6",
|
|
1821
|
+
"resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.2.6.tgz",
|
|
1822
|
+
"integrity": "sha512-Z8l6o4JWKUl755x4R+wogD86KPeU+Ckw4K+SYG4kHeOJtRenDeK+OSbGcqZpDtbwn9DsJVdir2UxmwXuinUbUw==",
|
|
1820
1823
|
"dev": true,
|
|
1821
1824
|
"license": "MIT",
|
|
1822
1825
|
"dependencies": {
|
|
@@ -1824,9 +1827,9 @@
|
|
|
1824
1827
|
}
|
|
1825
1828
|
},
|
|
1826
1829
|
"node_modules/@next/swc-darwin-arm64": {
|
|
1827
|
-
"version": "16.2.
|
|
1828
|
-
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.
|
|
1829
|
-
"integrity": "sha512
|
|
1830
|
+
"version": "16.2.6",
|
|
1831
|
+
"resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-16.2.6.tgz",
|
|
1832
|
+
"integrity": "sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==",
|
|
1830
1833
|
"cpu": [
|
|
1831
1834
|
"arm64"
|
|
1832
1835
|
],
|
|
@@ -1840,9 +1843,9 @@
|
|
|
1840
1843
|
}
|
|
1841
1844
|
},
|
|
1842
1845
|
"node_modules/@next/swc-darwin-x64": {
|
|
1843
|
-
"version": "16.2.
|
|
1844
|
-
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.
|
|
1845
|
-
"integrity": "sha512
|
|
1846
|
+
"version": "16.2.6",
|
|
1847
|
+
"resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-16.2.6.tgz",
|
|
1848
|
+
"integrity": "sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==",
|
|
1846
1849
|
"cpu": [
|
|
1847
1850
|
"x64"
|
|
1848
1851
|
],
|
|
@@ -1856,9 +1859,9 @@
|
|
|
1856
1859
|
}
|
|
1857
1860
|
},
|
|
1858
1861
|
"node_modules/@next/swc-linux-arm64-gnu": {
|
|
1859
|
-
"version": "16.2.
|
|
1860
|
-
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.
|
|
1861
|
-
"integrity": "sha512-
|
|
1862
|
+
"version": "16.2.6",
|
|
1863
|
+
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-16.2.6.tgz",
|
|
1864
|
+
"integrity": "sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==",
|
|
1862
1865
|
"cpu": [
|
|
1863
1866
|
"arm64"
|
|
1864
1867
|
],
|
|
@@ -1875,9 +1878,9 @@
|
|
|
1875
1878
|
}
|
|
1876
1879
|
},
|
|
1877
1880
|
"node_modules/@next/swc-linux-arm64-musl": {
|
|
1878
|
-
"version": "16.2.
|
|
1879
|
-
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.
|
|
1880
|
-
"integrity": "sha512-
|
|
1881
|
+
"version": "16.2.6",
|
|
1882
|
+
"resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-16.2.6.tgz",
|
|
1883
|
+
"integrity": "sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==",
|
|
1881
1884
|
"cpu": [
|
|
1882
1885
|
"arm64"
|
|
1883
1886
|
],
|
|
@@ -1894,9 +1897,9 @@
|
|
|
1894
1897
|
}
|
|
1895
1898
|
},
|
|
1896
1899
|
"node_modules/@next/swc-linux-x64-gnu": {
|
|
1897
|
-
"version": "16.2.
|
|
1898
|
-
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.
|
|
1899
|
-
"integrity": "sha512-
|
|
1900
|
+
"version": "16.2.6",
|
|
1901
|
+
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-16.2.6.tgz",
|
|
1902
|
+
"integrity": "sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==",
|
|
1900
1903
|
"cpu": [
|
|
1901
1904
|
"x64"
|
|
1902
1905
|
],
|
|
@@ -1913,9 +1916,9 @@
|
|
|
1913
1916
|
}
|
|
1914
1917
|
},
|
|
1915
1918
|
"node_modules/@next/swc-linux-x64-musl": {
|
|
1916
|
-
"version": "16.2.
|
|
1917
|
-
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.
|
|
1918
|
-
"integrity": "sha512-
|
|
1919
|
+
"version": "16.2.6",
|
|
1920
|
+
"resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-16.2.6.tgz",
|
|
1921
|
+
"integrity": "sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==",
|
|
1919
1922
|
"cpu": [
|
|
1920
1923
|
"x64"
|
|
1921
1924
|
],
|
|
@@ -1932,9 +1935,9 @@
|
|
|
1932
1935
|
}
|
|
1933
1936
|
},
|
|
1934
1937
|
"node_modules/@next/swc-win32-arm64-msvc": {
|
|
1935
|
-
"version": "16.2.
|
|
1936
|
-
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.
|
|
1937
|
-
"integrity": "sha512-
|
|
1938
|
+
"version": "16.2.6",
|
|
1939
|
+
"resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-16.2.6.tgz",
|
|
1940
|
+
"integrity": "sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==",
|
|
1938
1941
|
"cpu": [
|
|
1939
1942
|
"arm64"
|
|
1940
1943
|
],
|
|
@@ -1948,9 +1951,9 @@
|
|
|
1948
1951
|
}
|
|
1949
1952
|
},
|
|
1950
1953
|
"node_modules/@next/swc-win32-x64-msvc": {
|
|
1951
|
-
"version": "16.2.
|
|
1952
|
-
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.
|
|
1953
|
-
"integrity": "sha512-
|
|
1954
|
+
"version": "16.2.6",
|
|
1955
|
+
"resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-16.2.6.tgz",
|
|
1956
|
+
"integrity": "sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==",
|
|
1954
1957
|
"cpu": [
|
|
1955
1958
|
"x64"
|
|
1956
1959
|
],
|
|
@@ -2420,9 +2423,9 @@
|
|
|
2420
2423
|
}
|
|
2421
2424
|
},
|
|
2422
2425
|
"node_modules/@ts-morph/common/node_modules/brace-expansion": {
|
|
2423
|
-
"version": "5.0.
|
|
2424
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.
|
|
2425
|
-
"integrity": "sha512-
|
|
2426
|
+
"version": "5.0.6",
|
|
2427
|
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
|
|
2428
|
+
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
|
|
2426
2429
|
"dev": true,
|
|
2427
2430
|
"license": "MIT",
|
|
2428
2431
|
"dependencies": {
|
|
@@ -2763,9 +2766,9 @@
|
|
|
2763
2766
|
}
|
|
2764
2767
|
},
|
|
2765
2768
|
"node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": {
|
|
2766
|
-
"version": "5.0.
|
|
2767
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.
|
|
2768
|
-
"integrity": "sha512-
|
|
2769
|
+
"version": "5.0.6",
|
|
2770
|
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
|
|
2771
|
+
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
|
|
2769
2772
|
"dev": true,
|
|
2770
2773
|
"license": "MIT",
|
|
2771
2774
|
"dependencies": {
|
|
@@ -4678,13 +4681,13 @@
|
|
|
4678
4681
|
}
|
|
4679
4682
|
},
|
|
4680
4683
|
"node_modules/eslint-config-next": {
|
|
4681
|
-
"version": "16.2.
|
|
4682
|
-
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.
|
|
4683
|
-
"integrity": "sha512-
|
|
4684
|
+
"version": "16.2.6",
|
|
4685
|
+
"resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.2.6.tgz",
|
|
4686
|
+
"integrity": "sha512-z2ELYSkyrrJ6cuunTU8vhsT/RpouPkjaSah06nVW6Rg2Hpg0Vs8s497/e5s8G8qtdp4ccsiovz5P1rv+5VSW2Q==",
|
|
4684
4687
|
"dev": true,
|
|
4685
4688
|
"license": "MIT",
|
|
4686
4689
|
"dependencies": {
|
|
4687
|
-
"@next/eslint-plugin-next": "16.2.
|
|
4690
|
+
"@next/eslint-plugin-next": "16.2.6",
|
|
4688
4691
|
"eslint-import-resolver-node": "^0.3.6",
|
|
4689
4692
|
"eslint-import-resolver-typescript": "^3.5.2",
|
|
4690
4693
|
"eslint-plugin-import": "^2.32.0",
|
|
@@ -5142,13 +5145,13 @@
|
|
|
5142
5145
|
}
|
|
5143
5146
|
},
|
|
5144
5147
|
"node_modules/express-rate-limit": {
|
|
5145
|
-
"version": "8.
|
|
5146
|
-
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.
|
|
5147
|
-
"integrity": "sha512-
|
|
5148
|
+
"version": "8.5.2",
|
|
5149
|
+
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.5.2.tgz",
|
|
5150
|
+
"integrity": "sha512-5Kb34ipNX694DH48vN9irak1Qx30nb0PLYHXfJgw4YEjiC3ZEmZJhwOp+VfiCYwFzvFTdB9QkArYS5kXa2cx2A==",
|
|
5148
5151
|
"dev": true,
|
|
5149
5152
|
"license": "MIT",
|
|
5150
5153
|
"dependencies": {
|
|
5151
|
-
"ip-address": "10.
|
|
5154
|
+
"ip-address": "^10.2.0"
|
|
5152
5155
|
},
|
|
5153
5156
|
"engines": {
|
|
5154
5157
|
"node": ">= 16"
|
|
@@ -5229,9 +5232,9 @@
|
|
|
5229
5232
|
}
|
|
5230
5233
|
},
|
|
5231
5234
|
"node_modules/fast-uri": {
|
|
5232
|
-
"version": "3.1.
|
|
5233
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
5234
|
-
"integrity": "sha512-
|
|
5235
|
+
"version": "3.1.2",
|
|
5236
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz",
|
|
5237
|
+
"integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==",
|
|
5235
5238
|
"dev": true,
|
|
5236
5239
|
"funding": [
|
|
5237
5240
|
{
|
|
@@ -5842,9 +5845,9 @@
|
|
|
5842
5845
|
}
|
|
5843
5846
|
},
|
|
5844
5847
|
"node_modules/hono": {
|
|
5845
|
-
"version": "4.12.
|
|
5846
|
-
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.
|
|
5847
|
-
"integrity": "sha512-
|
|
5848
|
+
"version": "4.12.21",
|
|
5849
|
+
"resolved": "https://registry.npmjs.org/hono/-/hono-4.12.21.tgz",
|
|
5850
|
+
"integrity": "sha512-uV63apnb0kyPtAUwoWgaGh9HyIFcv8lgmzPZSiTBQAFOFGIzka5EZ1dZocmGnn0XdX0+XTqJ6Tqv7selMuGLRQ==",
|
|
5848
5851
|
"dev": true,
|
|
5849
5852
|
"license": "MIT",
|
|
5850
5853
|
"engines": {
|
|
@@ -5973,9 +5976,9 @@
|
|
|
5973
5976
|
}
|
|
5974
5977
|
},
|
|
5975
5978
|
"node_modules/ip-address": {
|
|
5976
|
-
"version": "10.
|
|
5977
|
-
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.
|
|
5978
|
-
"integrity": "sha512
|
|
5979
|
+
"version": "10.2.0",
|
|
5980
|
+
"resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz",
|
|
5981
|
+
"integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==",
|
|
5979
5982
|
"dev": true,
|
|
5980
5983
|
"license": "MIT",
|
|
5981
5984
|
"engines": {
|
|
@@ -7449,12 +7452,12 @@
|
|
|
7449
7452
|
}
|
|
7450
7453
|
},
|
|
7451
7454
|
"node_modules/next": {
|
|
7452
|
-
"version": "16.2.
|
|
7453
|
-
"resolved": "https://registry.npmjs.org/next/-/next-16.2.
|
|
7454
|
-
"integrity": "sha512-
|
|
7455
|
+
"version": "16.2.6",
|
|
7456
|
+
"resolved": "https://registry.npmjs.org/next/-/next-16.2.6.tgz",
|
|
7457
|
+
"integrity": "sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==",
|
|
7455
7458
|
"license": "MIT",
|
|
7456
7459
|
"dependencies": {
|
|
7457
|
-
"@next/env": "16.2.
|
|
7460
|
+
"@next/env": "16.2.6",
|
|
7458
7461
|
"@swc/helpers": "0.5.15",
|
|
7459
7462
|
"baseline-browser-mapping": "^2.9.19",
|
|
7460
7463
|
"caniuse-lite": "^1.0.30001579",
|
|
@@ -7468,14 +7471,14 @@
|
|
|
7468
7471
|
"node": ">=20.9.0"
|
|
7469
7472
|
},
|
|
7470
7473
|
"optionalDependencies": {
|
|
7471
|
-
"@next/swc-darwin-arm64": "16.2.
|
|
7472
|
-
"@next/swc-darwin-x64": "16.2.
|
|
7473
|
-
"@next/swc-linux-arm64-gnu": "16.2.
|
|
7474
|
-
"@next/swc-linux-arm64-musl": "16.2.
|
|
7475
|
-
"@next/swc-linux-x64-gnu": "16.2.
|
|
7476
|
-
"@next/swc-linux-x64-musl": "16.2.
|
|
7477
|
-
"@next/swc-win32-arm64-msvc": "16.2.
|
|
7478
|
-
"@next/swc-win32-x64-msvc": "16.2.
|
|
7474
|
+
"@next/swc-darwin-arm64": "16.2.6",
|
|
7475
|
+
"@next/swc-darwin-x64": "16.2.6",
|
|
7476
|
+
"@next/swc-linux-arm64-gnu": "16.2.6",
|
|
7477
|
+
"@next/swc-linux-arm64-musl": "16.2.6",
|
|
7478
|
+
"@next/swc-linux-x64-gnu": "16.2.6",
|
|
7479
|
+
"@next/swc-linux-x64-musl": "16.2.6",
|
|
7480
|
+
"@next/swc-win32-arm64-msvc": "16.2.6",
|
|
7481
|
+
"@next/swc-win32-x64-msvc": "16.2.6",
|
|
7479
7482
|
"sharp": "^0.34.5"
|
|
7480
7483
|
},
|
|
7481
7484
|
"peerDependencies": {
|
|
@@ -7511,34 +7514,6 @@
|
|
|
7511
7514
|
"react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc"
|
|
7512
7515
|
}
|
|
7513
7516
|
},
|
|
7514
|
-
"node_modules/next/node_modules/postcss": {
|
|
7515
|
-
"version": "8.4.31",
|
|
7516
|
-
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
|
|
7517
|
-
"integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
|
|
7518
|
-
"funding": [
|
|
7519
|
-
{
|
|
7520
|
-
"type": "opencollective",
|
|
7521
|
-
"url": "https://opencollective.com/postcss/"
|
|
7522
|
-
},
|
|
7523
|
-
{
|
|
7524
|
-
"type": "tidelift",
|
|
7525
|
-
"url": "https://tidelift.com/funding/github/npm/postcss"
|
|
7526
|
-
},
|
|
7527
|
-
{
|
|
7528
|
-
"type": "github",
|
|
7529
|
-
"url": "https://github.com/sponsors/ai"
|
|
7530
|
-
}
|
|
7531
|
-
],
|
|
7532
|
-
"license": "MIT",
|
|
7533
|
-
"dependencies": {
|
|
7534
|
-
"nanoid": "^3.3.6",
|
|
7535
|
-
"picocolors": "^1.0.0",
|
|
7536
|
-
"source-map-js": "^1.0.2"
|
|
7537
|
-
},
|
|
7538
|
-
"engines": {
|
|
7539
|
-
"node": "^10 || ^12 || >=14"
|
|
7540
|
-
}
|
|
7541
|
-
},
|
|
7542
7517
|
"node_modules/node-domexception": {
|
|
7543
7518
|
"version": "1.0.0",
|
|
7544
7519
|
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"class-variance-authority": "^0.7.1",
|
|
14
14
|
"clsx": "^2.1.1",
|
|
15
15
|
"lucide-react": "^0.577.0",
|
|
16
|
-
"next": "16.2.
|
|
16
|
+
"next": "16.2.6",
|
|
17
17
|
"next-themes": "^0.4.6",
|
|
18
18
|
"react": "19.2.4",
|
|
19
19
|
"react-dom": "19.2.4",
|
|
@@ -26,11 +26,14 @@
|
|
|
26
26
|
"@types/react": "^19",
|
|
27
27
|
"@types/react-dom": "^19",
|
|
28
28
|
"eslint": "^9",
|
|
29
|
-
"eslint-config-next": "16.2.
|
|
29
|
+
"eslint-config-next": "16.2.6",
|
|
30
30
|
"shadcn": "^4.0.8",
|
|
31
31
|
"tailwindcss": "^4",
|
|
32
32
|
"typescript": "^5"
|
|
33
33
|
},
|
|
34
|
+
"overrides": {
|
|
35
|
+
"postcss": "8.5.10"
|
|
36
|
+
},
|
|
34
37
|
"engines": {
|
|
35
38
|
"node": ">=20.9.0"
|
|
36
39
|
}
|
package/plugin/hooks/hooks.json
CHANGED
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
{
|
|
103
103
|
"type": "command",
|
|
104
104
|
"command": "_R=\"${CLAUDE_PLUGIN_ROOT}\"; [ -z \"$_R\" ] && _R=\"$HOME/.claude/plugins/marketplaces/reflexioai/plugin\"; bash \"$_R/scripts/hook_entry.sh\" claude-code session-end",
|
|
105
|
-
"timeout":
|
|
105
|
+
"timeout": 300
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"type": "command",
|