opencarly 1.0.0
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 +78 -0
- package/bin/install.js +304 -0
- package/commands/carly-manager.md +69 -0
- package/dist/config/discovery.d.ts +22 -0
- package/dist/config/discovery.d.ts.map +1 -0
- package/dist/config/discovery.js +43 -0
- package/dist/config/discovery.js.map +1 -0
- package/dist/config/index.d.ts +7 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/manifest.d.ts +39 -0
- package/dist/config/manifest.d.ts.map +1 -0
- package/dist/config/manifest.js +139 -0
- package/dist/config/manifest.js.map +1 -0
- package/dist/config/schema.d.ts +663 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +208 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/engine/brackets.d.ts +26 -0
- package/dist/engine/brackets.d.ts.map +1 -0
- package/dist/engine/brackets.js +49 -0
- package/dist/engine/brackets.js.map +1 -0
- package/dist/engine/index.d.ts +8 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +8 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/loader.d.ts +82 -0
- package/dist/engine/loader.d.ts.map +1 -0
- package/dist/engine/loader.js +147 -0
- package/dist/engine/loader.js.map +1 -0
- package/dist/engine/matcher.d.ts +43 -0
- package/dist/engine/matcher.d.ts.map +1 -0
- package/dist/engine/matcher.js +174 -0
- package/dist/engine/matcher.js.map +1 -0
- package/dist/engine/trimmer.d.ts +91 -0
- package/dist/engine/trimmer.d.ts.map +1 -0
- package/dist/engine/trimmer.js +236 -0
- package/dist/engine/trimmer.js.map +1 -0
- package/dist/formatter/formatter.d.ts +23 -0
- package/dist/formatter/formatter.d.ts.map +1 -0
- package/dist/formatter/formatter.js +129 -0
- package/dist/formatter/formatter.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +484 -0
- package/dist/index.js.map +1 -0
- package/dist/session/session.d.ts +60 -0
- package/dist/session/session.d.ts.map +1 -0
- package/dist/session/session.js +394 -0
- package/dist/session/session.js.map +1 -0
- package/package.json +59 -0
- package/templates/.opencarly/commands.json +96 -0
- package/templates/.opencarly/context.json +44 -0
- package/templates/.opencarly/domains/development.md +13 -0
- package/templates/.opencarly/domains/global.md +13 -0
- package/templates/.opencarly/domains/security.md +14 -0
- package/templates/.opencarly/domains/testing.md +12 -0
- package/templates/.opencarly/manifest.json +43 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCarly Session Management
|
|
3
|
+
*
|
|
4
|
+
* Handles per-session state tracking, overrides, and stale session cleanup.
|
|
5
|
+
* Session files are stored at .opencarly/sessions/{sessionId}.json
|
|
6
|
+
*/
|
|
7
|
+
import { type SessionConfig, type Manifest, type CumulativeStats } from "../config/schema";
|
|
8
|
+
/**
|
|
9
|
+
* Load an existing session from disk. Returns null if not found.
|
|
10
|
+
*/
|
|
11
|
+
export declare function loadSession(configPath: string, sessionId: string): SessionConfig | null;
|
|
12
|
+
/**
|
|
13
|
+
* Create a new session config.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createSession(sessionId: string, cwd: string): SessionConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Get or create a session. Returns the session and whether it was newly created.
|
|
18
|
+
*/
|
|
19
|
+
export declare function getOrCreateSession(configPath: string, sessionId: string, cwd: string): {
|
|
20
|
+
session: SessionConfig;
|
|
21
|
+
isNew: boolean;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Save a session to disk.
|
|
25
|
+
*/
|
|
26
|
+
export declare function saveSession(configPath: string, session: SessionConfig): void;
|
|
27
|
+
/**
|
|
28
|
+
* Update session activity: bump prompt count, update lastActivity, set title.
|
|
29
|
+
*/
|
|
30
|
+
export declare function updateSessionActivity(session: SessionConfig, promptText?: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* Apply session overrides to a manifest.
|
|
33
|
+
* Returns a new manifest object with overrides applied.
|
|
34
|
+
* Session overrides take precedence over manifest values.
|
|
35
|
+
*/
|
|
36
|
+
export declare function applySessionOverrides(manifest: Manifest, session: SessionConfig): Manifest;
|
|
37
|
+
/**
|
|
38
|
+
* Remove session files older than STALE_SESSION_HOURS.
|
|
39
|
+
*/
|
|
40
|
+
export declare function cleanStaleSessions(configPath: string): number;
|
|
41
|
+
/**
|
|
42
|
+
* Load cumulative stats from stats.json and session files.
|
|
43
|
+
* Returns defaults if no data exists.
|
|
44
|
+
*/
|
|
45
|
+
export declare function loadCumulativeStats(configPath: string): CumulativeStats;
|
|
46
|
+
/**
|
|
47
|
+
* Save cumulative stats to stats.json.
|
|
48
|
+
*/
|
|
49
|
+
export declare function saveCumulativeStats(configPath: string, stats: CumulativeStats): void;
|
|
50
|
+
/**
|
|
51
|
+
* Clear all stats by removing stats.json and all session files.
|
|
52
|
+
*/
|
|
53
|
+
export declare function clearAllStats(configPath: string): void;
|
|
54
|
+
/**
|
|
55
|
+
* Update cumulative stats with the current session's stats.
|
|
56
|
+
* Called on every prompt to keep stats current.
|
|
57
|
+
*/
|
|
58
|
+
export declare function updateCumulativeStats(configPath: string, session: SessionConfig): CumulativeStats;
|
|
59
|
+
export type { CumulativeStats } from "../config/schema";
|
|
60
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,eAAe,EAGrB,MAAM,kBAAkB,CAAC;AA8B1B;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GAChB,aAAa,GAAG,IAAI,CAmBtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV,aAAa,CAcf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,GACV;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAS5C;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACrB,IAAI,CAGN;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,aAAa,EACtB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CASN;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,aAAa,GACrB,QAAQ,CAmBV;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAoC7D;AAmFD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,CAsFvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,GACrB,IAAI,CAGN;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAmBtD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,aAAa,GACrB,eAAe,CA+CjB;AAED,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenCarly Session Management
|
|
3
|
+
*
|
|
4
|
+
* Handles per-session state tracking, overrides, and stale session cleanup.
|
|
5
|
+
* Session files are stored at .opencarly/sessions/{sessionId}.json
|
|
6
|
+
*/
|
|
7
|
+
import * as fs from "fs";
|
|
8
|
+
import * as path from "path";
|
|
9
|
+
import { SessionConfigSchema, CumulativeStatsSchema, } from "../config/schema";
|
|
10
|
+
const SESSIONS_DIR = "sessions";
|
|
11
|
+
const STATS_FILE = "stats.json";
|
|
12
|
+
const STALE_SESSION_HOURS = 24;
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// Session CRUD
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
/**
|
|
17
|
+
* Get the sessions directory path, creating it if needed.
|
|
18
|
+
*/
|
|
19
|
+
function getSessionsDir(configPath) {
|
|
20
|
+
const dir = path.join(configPath, SESSIONS_DIR);
|
|
21
|
+
if (!fs.existsSync(dir)) {
|
|
22
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
23
|
+
}
|
|
24
|
+
return dir;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get path to a specific session file.
|
|
28
|
+
*/
|
|
29
|
+
function getSessionFilePath(configPath, sessionId) {
|
|
30
|
+
// Sanitize the sessionId to prevent path traversal
|
|
31
|
+
const safeId = sessionId.replace(/[^a-zA-Z0-9_-]/g, "");
|
|
32
|
+
return path.join(getSessionsDir(configPath), `${safeId}.json`);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load an existing session from disk. Returns null if not found.
|
|
36
|
+
*/
|
|
37
|
+
export function loadSession(configPath, sessionId) {
|
|
38
|
+
const filePath = getSessionFilePath(configPath, sessionId);
|
|
39
|
+
if (!fs.existsSync(filePath)) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
44
|
+
return SessionConfigSchema.parse(JSON.parse(raw));
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Corrupted session file - remove it and return null
|
|
48
|
+
try {
|
|
49
|
+
fs.unlinkSync(filePath);
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// ignore cleanup errors
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Create a new session config.
|
|
59
|
+
*/
|
|
60
|
+
export function createSession(sessionId, cwd) {
|
|
61
|
+
const now = new Date().toISOString();
|
|
62
|
+
const label = path.basename(cwd) || "unknown";
|
|
63
|
+
return SessionConfigSchema.parse({
|
|
64
|
+
id: sessionId,
|
|
65
|
+
started: now,
|
|
66
|
+
cwd,
|
|
67
|
+
label,
|
|
68
|
+
title: null,
|
|
69
|
+
promptCount: 0,
|
|
70
|
+
lastActivity: now,
|
|
71
|
+
overrides: {},
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get or create a session. Returns the session and whether it was newly created.
|
|
76
|
+
*/
|
|
77
|
+
export function getOrCreateSession(configPath, sessionId, cwd) {
|
|
78
|
+
const existing = loadSession(configPath, sessionId);
|
|
79
|
+
if (existing) {
|
|
80
|
+
return { session: existing, isNew: false };
|
|
81
|
+
}
|
|
82
|
+
const session = createSession(sessionId, cwd);
|
|
83
|
+
return { session, isNew: true };
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Save a session to disk.
|
|
87
|
+
*/
|
|
88
|
+
export function saveSession(configPath, session) {
|
|
89
|
+
const filePath = getSessionFilePath(configPath, session.id);
|
|
90
|
+
fs.writeFileSync(filePath, JSON.stringify(session, null, 2), "utf-8");
|
|
91
|
+
}
|
|
92
|
+
// ---------------------------------------------------------------------------
|
|
93
|
+
// Session updates
|
|
94
|
+
// ---------------------------------------------------------------------------
|
|
95
|
+
/**
|
|
96
|
+
* Update session activity: bump prompt count, update lastActivity, set title.
|
|
97
|
+
*/
|
|
98
|
+
export function updateSessionActivity(session, promptText) {
|
|
99
|
+
session.promptCount++;
|
|
100
|
+
session.lastActivity = new Date().toISOString();
|
|
101
|
+
// Auto-title from first user prompt (truncated to 60 chars)
|
|
102
|
+
if (session.title === null && promptText && session.promptCount <= 3) {
|
|
103
|
+
const cleaned = promptText.replace(/\s+/g, " ").trim();
|
|
104
|
+
session.title = cleaned.length > 60 ? cleaned.slice(0, 57) + "..." : cleaned;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
// Session overrides
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
/**
|
|
111
|
+
* Apply session overrides to a manifest.
|
|
112
|
+
* Returns a new manifest object with overrides applied.
|
|
113
|
+
* Session overrides take precedence over manifest values.
|
|
114
|
+
*/
|
|
115
|
+
export function applySessionOverrides(manifest, session) {
|
|
116
|
+
// Deep clone the manifest to avoid mutating the original
|
|
117
|
+
const result = JSON.parse(JSON.stringify(manifest));
|
|
118
|
+
// Override devmode if session has a non-null override
|
|
119
|
+
if (session.overrides.devmode !== null) {
|
|
120
|
+
result.devmode = session.overrides.devmode;
|
|
121
|
+
}
|
|
122
|
+
// Override per-domain states
|
|
123
|
+
for (const [domainName, stateOverride] of Object.entries(session.overrides.domainStates)) {
|
|
124
|
+
if (stateOverride !== null && result.domains[domainName]) {
|
|
125
|
+
result.domains[domainName].state = stateOverride ? "active" : "inactive";
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
// ---------------------------------------------------------------------------
|
|
131
|
+
// Stale session cleanup
|
|
132
|
+
// ---------------------------------------------------------------------------
|
|
133
|
+
/**
|
|
134
|
+
* Remove session files older than STALE_SESSION_HOURS.
|
|
135
|
+
*/
|
|
136
|
+
export function cleanStaleSessions(configPath) {
|
|
137
|
+
const sessionsDir = path.join(configPath, SESSIONS_DIR);
|
|
138
|
+
if (!fs.existsSync(sessionsDir)) {
|
|
139
|
+
return 0;
|
|
140
|
+
}
|
|
141
|
+
const cutoff = Date.now() - STALE_SESSION_HOURS * 60 * 60 * 1000;
|
|
142
|
+
let cleaned = 0;
|
|
143
|
+
const files = fs.readdirSync(sessionsDir);
|
|
144
|
+
for (const file of files) {
|
|
145
|
+
if (!file.endsWith(".json"))
|
|
146
|
+
continue;
|
|
147
|
+
const filePath = path.join(sessionsDir, file);
|
|
148
|
+
try {
|
|
149
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
150
|
+
const session = JSON.parse(raw);
|
|
151
|
+
const lastActivity = new Date(session.lastActivity).getTime();
|
|
152
|
+
if (lastActivity < cutoff) {
|
|
153
|
+
fs.rmSync(filePath, { recursive: true, force: true });
|
|
154
|
+
cleaned++;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
catch {
|
|
158
|
+
// Remove corrupted files too
|
|
159
|
+
try {
|
|
160
|
+
fs.rmSync(filePath, { recursive: true, force: true });
|
|
161
|
+
cleaned++;
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
// ignore
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return cleaned;
|
|
169
|
+
}
|
|
170
|
+
// ---------------------------------------------------------------------------
|
|
171
|
+
// Cumulative Stats
|
|
172
|
+
// ---------------------------------------------------------------------------
|
|
173
|
+
/**
|
|
174
|
+
* Get the cumulative stats file path.
|
|
175
|
+
*/
|
|
176
|
+
function getStatsFilePath(configPath) {
|
|
177
|
+
return path.join(configPath, STATS_FILE);
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Read JSON file, returning null if doesn't exist or invalid.
|
|
181
|
+
*/
|
|
182
|
+
function readJsonFileSafe(filePath) {
|
|
183
|
+
if (!fs.existsSync(filePath)) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
188
|
+
return JSON.parse(raw);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
function getSessionFiles(sessionsDir) {
|
|
195
|
+
if (!fs.existsSync(sessionsDir)) {
|
|
196
|
+
return [];
|
|
197
|
+
}
|
|
198
|
+
const files = fs.readdirSync(sessionsDir);
|
|
199
|
+
return files
|
|
200
|
+
.filter((f) => f.endsWith(".json"))
|
|
201
|
+
.map((name) => ({
|
|
202
|
+
path: path.join(sessionsDir, name),
|
|
203
|
+
name,
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
206
|
+
function calculateTokensSaved(tokenStats) {
|
|
207
|
+
return ((tokenStats.tokensSkippedBySelection || 0) +
|
|
208
|
+
(tokenStats.tokensTrimmedFromHistory || 0) +
|
|
209
|
+
(tokenStats.tokensTrimmedCarlyBlocks || 0));
|
|
210
|
+
}
|
|
211
|
+
function calculateCumulativeStats(sessions) {
|
|
212
|
+
const cumulative = {
|
|
213
|
+
tokensSkippedBySelection: 0,
|
|
214
|
+
tokensInjected: 0,
|
|
215
|
+
tokensTrimmedFromHistory: 0,
|
|
216
|
+
tokensTrimmedCarlyBlocks: 0,
|
|
217
|
+
totalTokensSaved: 0,
|
|
218
|
+
};
|
|
219
|
+
for (const session of sessions) {
|
|
220
|
+
cumulative.tokensSkippedBySelection += session.tokensSkippedBySelection || 0;
|
|
221
|
+
cumulative.tokensTrimmedFromHistory += session.tokensTrimmedFromHistory || 0;
|
|
222
|
+
cumulative.tokensTrimmedCarlyBlocks += session.tokensTrimmedCarlyBlocks || 0;
|
|
223
|
+
cumulative.tokensInjected += session.tokensInjected || 0;
|
|
224
|
+
cumulative.totalTokensSaved += session.tokensSaved || 0;
|
|
225
|
+
}
|
|
226
|
+
return cumulative;
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Load cumulative stats from stats.json and session files.
|
|
230
|
+
* Returns defaults if no data exists.
|
|
231
|
+
*/
|
|
232
|
+
export function loadCumulativeStats(configPath) {
|
|
233
|
+
const statsPath = getStatsFilePath(configPath);
|
|
234
|
+
const raw = readJsonFileSafe(statsPath);
|
|
235
|
+
let statsJson;
|
|
236
|
+
if (raw) {
|
|
237
|
+
try {
|
|
238
|
+
statsJson = CumulativeStatsSchema.parse(raw);
|
|
239
|
+
}
|
|
240
|
+
catch {
|
|
241
|
+
try {
|
|
242
|
+
statsJson = CumulativeStatsSchema.parse({});
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
statsJson = {
|
|
246
|
+
version: 1,
|
|
247
|
+
cumulative: {
|
|
248
|
+
tokensSkippedBySelection: 0,
|
|
249
|
+
tokensInjected: 0,
|
|
250
|
+
tokensTrimmedFromHistory: 0,
|
|
251
|
+
tokensTrimmedCarlyBlocks: 0,
|
|
252
|
+
totalTokensSaved: 0,
|
|
253
|
+
},
|
|
254
|
+
sessions: [],
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
else {
|
|
260
|
+
try {
|
|
261
|
+
statsJson = CumulativeStatsSchema.parse({});
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
statsJson = {
|
|
265
|
+
version: 1,
|
|
266
|
+
cumulative: {
|
|
267
|
+
tokensSkippedBySelection: 0,
|
|
268
|
+
tokensInjected: 0,
|
|
269
|
+
tokensTrimmedFromHistory: 0,
|
|
270
|
+
tokensTrimmedCarlyBlocks: 0,
|
|
271
|
+
totalTokensSaved: 0,
|
|
272
|
+
},
|
|
273
|
+
sessions: [],
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
// Load sessions from session files
|
|
278
|
+
const sessionsDir = getSessionsDir(configPath);
|
|
279
|
+
const sessionFiles = getSessionFiles(sessionsDir);
|
|
280
|
+
const sessionMap = new Map();
|
|
281
|
+
// Add sessions from stats.json first
|
|
282
|
+
for (const session of statsJson.sessions) {
|
|
283
|
+
sessionMap.set(session.sessionId, session);
|
|
284
|
+
}
|
|
285
|
+
// Merge sessions from session files
|
|
286
|
+
for (const sessionFile of sessionFiles) {
|
|
287
|
+
const sessionData = readJsonFileSafe(sessionFile.path);
|
|
288
|
+
if (sessionData && sessionData.id && sessionData.tokenStats) {
|
|
289
|
+
const existing = sessionMap.get(sessionData.id);
|
|
290
|
+
if (!existing) {
|
|
291
|
+
// Session not in stats.json, add it
|
|
292
|
+
sessionMap.set(sessionData.id, {
|
|
293
|
+
sessionId: sessionData.id,
|
|
294
|
+
date: sessionData.started,
|
|
295
|
+
tokensSaved: calculateTokensSaved(sessionData.tokenStats),
|
|
296
|
+
promptsProcessed: sessionData.promptCount || 0,
|
|
297
|
+
tokensSkippedBySelection: sessionData.tokenStats.tokensSkippedBySelection || 0,
|
|
298
|
+
tokensTrimmedFromHistory: sessionData.tokenStats.tokensTrimmedFromHistory || 0,
|
|
299
|
+
tokensTrimmedCarlyBlocks: sessionData.tokenStats.tokensTrimmedCarlyBlocks || 0,
|
|
300
|
+
tokensInjected: sessionData.tokenStats.tokensInjected || 0,
|
|
301
|
+
rulesInjected: sessionData.tokenStats.rulesInjected || 0,
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Recalculate cumulative totals from merged sessions
|
|
307
|
+
const sessions = Array.from(sessionMap.values());
|
|
308
|
+
const cumulative = calculateCumulativeStats(sessions);
|
|
309
|
+
return {
|
|
310
|
+
version: statsJson.version,
|
|
311
|
+
cumulative,
|
|
312
|
+
sessions,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Save cumulative stats to stats.json.
|
|
317
|
+
*/
|
|
318
|
+
export function saveCumulativeStats(configPath, stats) {
|
|
319
|
+
const statsPath = getStatsFilePath(configPath);
|
|
320
|
+
fs.writeFileSync(statsPath, JSON.stringify(stats, null, 2), "utf-8");
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Clear all stats by removing stats.json and all session files.
|
|
324
|
+
*/
|
|
325
|
+
export function clearAllStats(configPath) {
|
|
326
|
+
const statsPath = getStatsFilePath(configPath);
|
|
327
|
+
if (fs.existsSync(statsPath)) {
|
|
328
|
+
try {
|
|
329
|
+
fs.unlinkSync(statsPath);
|
|
330
|
+
}
|
|
331
|
+
catch { }
|
|
332
|
+
}
|
|
333
|
+
const sessionsDir = getSessionsDir(configPath);
|
|
334
|
+
if (fs.existsSync(sessionsDir)) {
|
|
335
|
+
const files = fs.readdirSync(sessionsDir);
|
|
336
|
+
for (const file of files) {
|
|
337
|
+
if (file.endsWith(".json")) {
|
|
338
|
+
try {
|
|
339
|
+
fs.unlinkSync(path.join(sessionsDir, file));
|
|
340
|
+
}
|
|
341
|
+
catch { }
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* Update cumulative stats with the current session's stats.
|
|
348
|
+
* Called on every prompt to keep stats current.
|
|
349
|
+
*/
|
|
350
|
+
export function updateCumulativeStats(configPath, session) {
|
|
351
|
+
const statsPath = getStatsFilePath(configPath);
|
|
352
|
+
let stats;
|
|
353
|
+
try {
|
|
354
|
+
const raw = readJsonFileSafe(statsPath);
|
|
355
|
+
stats = raw ? CumulativeStatsSchema.parse(raw) : { version: 1, cumulative: { tokensSkippedBySelection: 0, tokensInjected: 0, tokensTrimmedFromHistory: 0, tokensTrimmedCarlyBlocks: 0, totalTokensSaved: 0 }, sessions: [] };
|
|
356
|
+
}
|
|
357
|
+
catch {
|
|
358
|
+
stats = { version: 1, cumulative: { tokensSkippedBySelection: 0, tokensInjected: 0, tokensTrimmedFromHistory: 0, tokensTrimmedCarlyBlocks: 0, totalTokensSaved: 0 }, sessions: [] };
|
|
359
|
+
}
|
|
360
|
+
const tokensSaved = calculateTokensSaved(session.tokenStats);
|
|
361
|
+
const existingIndex = stats.sessions.findIndex(s => s.sessionId === session.id);
|
|
362
|
+
const summary = {
|
|
363
|
+
sessionId: session.id,
|
|
364
|
+
date: session.started,
|
|
365
|
+
tokensSaved,
|
|
366
|
+
promptsProcessed: session.tokenStats.promptsProcessed,
|
|
367
|
+
tokensSkippedBySelection: session.tokenStats.tokensSkippedBySelection,
|
|
368
|
+
tokensTrimmedFromHistory: session.tokenStats.tokensTrimmedFromHistory,
|
|
369
|
+
tokensTrimmedCarlyBlocks: session.tokenStats.tokensTrimmedCarlyBlocks,
|
|
370
|
+
tokensInjected: session.tokenStats.tokensInjected,
|
|
371
|
+
rulesInjected: session.tokenStats.rulesInjected || 0,
|
|
372
|
+
};
|
|
373
|
+
if (existingIndex >= 0) {
|
|
374
|
+
stats.sessions[existingIndex] = summary;
|
|
375
|
+
}
|
|
376
|
+
else {
|
|
377
|
+
stats.sessions.push(summary);
|
|
378
|
+
}
|
|
379
|
+
stats.cumulative.tokensSkippedBySelection = 0;
|
|
380
|
+
stats.cumulative.tokensTrimmedFromHistory = 0;
|
|
381
|
+
stats.cumulative.tokensTrimmedCarlyBlocks = 0;
|
|
382
|
+
stats.cumulative.tokensInjected = 0;
|
|
383
|
+
stats.cumulative.totalTokensSaved = 0;
|
|
384
|
+
for (const s of stats.sessions) {
|
|
385
|
+
stats.cumulative.tokensSkippedBySelection += s.tokensSkippedBySelection || 0;
|
|
386
|
+
stats.cumulative.tokensTrimmedFromHistory += s.tokensTrimmedFromHistory || 0;
|
|
387
|
+
stats.cumulative.tokensTrimmedCarlyBlocks += s.tokensTrimmedCarlyBlocks || 0;
|
|
388
|
+
stats.cumulative.tokensInjected += s.tokensInjected || 0;
|
|
389
|
+
stats.cumulative.totalTokensSaved += s.tokensSaved || 0;
|
|
390
|
+
}
|
|
391
|
+
saveCumulativeStats(configPath, stats);
|
|
392
|
+
return stats;
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/session/session.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opencarly",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Context Augmentation & Reinforcement Layer for OpenCode - Dynamic rules that load when relevant, disappear when not.",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"opencarly": "bin/install.js"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"bin",
|
|
14
|
+
"templates",
|
|
15
|
+
"commands"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"dev": "tsc --watch",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"prepublishOnly": "npm run build"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"zod": "^3.23.0"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@opencode-ai/plugin": "^1.0.0",
|
|
28
|
+
"@types/node": "^22.0.0",
|
|
29
|
+
"typescript": "^5.7.0"
|
|
30
|
+
},
|
|
31
|
+
"peerDependencies": {
|
|
32
|
+
"@opencode-ai/plugin": ">=1.0.0"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"opencode",
|
|
36
|
+
"opencode-plugin",
|
|
37
|
+
"carly",
|
|
38
|
+
"carl",
|
|
39
|
+
"context",
|
|
40
|
+
"rules",
|
|
41
|
+
"dynamic-rules",
|
|
42
|
+
"prompt-engineering",
|
|
43
|
+
"ai",
|
|
44
|
+
"coding-agent"
|
|
45
|
+
],
|
|
46
|
+
"author": "Blainexi",
|
|
47
|
+
"license": "MIT",
|
|
48
|
+
"repository": {
|
|
49
|
+
"type": "git",
|
|
50
|
+
"url": "git+https://github.com/Blainexi/OpenCarly.git"
|
|
51
|
+
},
|
|
52
|
+
"bugs": {
|
|
53
|
+
"url": "https://github.com/Blainexi/OpenCarly/issues"
|
|
54
|
+
},
|
|
55
|
+
"homepage": "https://github.com/Blainexi/OpenCarly#readme",
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=18.0.0"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dev": {
|
|
3
|
+
"description": "Development mode - code over explanation",
|
|
4
|
+
"rules": [
|
|
5
|
+
"Code over explanation - show, don't tell",
|
|
6
|
+
"Prefer diffs and targeted edits over full file rewrites",
|
|
7
|
+
"Minimize commentary; let the code speak",
|
|
8
|
+
"If unsure, implement the most common pattern and note the assumption"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"review": {
|
|
12
|
+
"description": "Code review mode",
|
|
13
|
+
"rules": [
|
|
14
|
+
"Review code for bugs, security issues, and performance problems",
|
|
15
|
+
"Flag any anti-patterns or code smells",
|
|
16
|
+
"Suggest concrete improvements with example code",
|
|
17
|
+
"Check error handling completeness",
|
|
18
|
+
"Rate severity: critical / warning / suggestion"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"brief": {
|
|
22
|
+
"description": "Concise responses only",
|
|
23
|
+
"rules": [
|
|
24
|
+
"Bullet points only, max 5 items",
|
|
25
|
+
"No preamble, no summary, no pleasantries",
|
|
26
|
+
"One sentence max per point",
|
|
27
|
+
"Skip explanations unless explicitly asked"
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
"plan": {
|
|
31
|
+
"description": "Planning mode - explore before implementing",
|
|
32
|
+
"rules": [
|
|
33
|
+
"Do NOT write code yet",
|
|
34
|
+
"Explore the codebase to understand the current architecture",
|
|
35
|
+
"Break the task into numbered steps",
|
|
36
|
+
"Identify files that need to change",
|
|
37
|
+
"Call out risks or unknowns",
|
|
38
|
+
"Wait for user approval before implementing"
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"discuss": {
|
|
42
|
+
"description": "Brainstorm and discuss approaches",
|
|
43
|
+
"rules": [
|
|
44
|
+
"Present multiple approaches (minimum 2)",
|
|
45
|
+
"List pros and cons for each",
|
|
46
|
+
"Make a recommendation but don't assume agreement",
|
|
47
|
+
"Ask clarifying questions if the problem is ambiguous"
|
|
48
|
+
]
|
|
49
|
+
},
|
|
50
|
+
"debug": {
|
|
51
|
+
"description": "Systematic debugging mode",
|
|
52
|
+
"rules": [
|
|
53
|
+
"Form hypotheses before making changes",
|
|
54
|
+
"Add diagnostic logging or print statements",
|
|
55
|
+
"Test one hypothesis at a time",
|
|
56
|
+
"Document what was tried and what was learned",
|
|
57
|
+
"Check the obvious things first (typos, imports, types)"
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"explain": {
|
|
61
|
+
"description": "Teaching/explanation mode",
|
|
62
|
+
"rules": [
|
|
63
|
+
"Start with a high-level overview, then go into detail",
|
|
64
|
+
"Use concrete examples from the actual codebase",
|
|
65
|
+
"Explain the WHY, not just the WHAT",
|
|
66
|
+
"Relate concepts to common patterns the user likely knows",
|
|
67
|
+
"Use analogies when helpful"
|
|
68
|
+
]
|
|
69
|
+
},
|
|
70
|
+
"carly": {
|
|
71
|
+
"description": "OpenCarly help and configuration guide",
|
|
72
|
+
"rules": [
|
|
73
|
+
"You are now in OpenCarly help mode",
|
|
74
|
+
"Explain how OpenCarly works: domains, star-commands, context brackets, sessions",
|
|
75
|
+
"Help the user configure their .opencarly/ directory",
|
|
76
|
+
"Show available domains and their current state",
|
|
77
|
+
"Guide them through creating custom domains or star-commands",
|
|
78
|
+
"Reference the manifest.json, commands.json, and context.json files"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"stats": {
|
|
82
|
+
"description": "Show OpenCarly token savings report for the current session",
|
|
83
|
+
"rules": [
|
|
84
|
+
"Execute the stats tool to get the token savings report",
|
|
85
|
+
"You MUST output the exact raw markdown table returned by the tool word-for-word",
|
|
86
|
+
"Do NOT summarize, converse, or add any preamble/postamble. Only output the raw tool result."
|
|
87
|
+
]
|
|
88
|
+
},
|
|
89
|
+
"clearstats": {
|
|
90
|
+
"description": "Clear all OpenCarly token savings statistics",
|
|
91
|
+
"rules": [
|
|
92
|
+
"Execute the clear_stats tool to reset the token savings count to zero",
|
|
93
|
+
"Confirm to the user that the stats have been cleared"
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|