@tom2012/cc-web 2026.4.22-b → 2026.4.23-a
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 +1 -1
- package/backend/dist/adapters/claude/scheduled.d.ts +34 -0
- package/backend/dist/adapters/claude/scheduled.d.ts.map +1 -0
- package/backend/dist/adapters/claude/scheduled.js +161 -0
- package/backend/dist/adapters/claude/scheduled.js.map +1 -0
- package/backend/dist/adapters/claude/usage.d.ts +29 -0
- package/backend/dist/adapters/claude/usage.d.ts.map +1 -0
- package/backend/dist/adapters/claude/usage.js +202 -0
- package/backend/dist/adapters/claude/usage.js.map +1 -0
- package/backend/dist/adapters/claude-adapter.d.ts +1 -0
- package/backend/dist/adapters/claude-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/claude-adapter.js +4 -3
- package/backend/dist/adapters/claude-adapter.js.map +1 -1
- package/backend/dist/adapters/codex-adapter.d.ts +18 -1
- package/backend/dist/adapters/codex-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/codex-adapter.js +163 -20
- package/backend/dist/adapters/codex-adapter.js.map +1 -1
- package/backend/dist/adapters/gemini-adapter.d.ts +1 -0
- package/backend/dist/adapters/gemini-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/gemini-adapter.js +1 -0
- package/backend/dist/adapters/gemini-adapter.js.map +1 -1
- package/backend/dist/adapters/opencode-adapter.d.ts +1 -0
- package/backend/dist/adapters/opencode-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/opencode-adapter.js +1 -0
- package/backend/dist/adapters/opencode-adapter.js.map +1 -1
- package/backend/dist/adapters/qwen-adapter.d.ts +1 -0
- package/backend/dist/adapters/qwen-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/qwen-adapter.js +1 -0
- package/backend/dist/adapters/qwen-adapter.js.map +1 -1
- package/backend/dist/adapters/terminal-adapter.d.ts +1 -0
- package/backend/dist/adapters/terminal-adapter.d.ts.map +1 -1
- package/backend/dist/adapters/terminal-adapter.js +1 -0
- package/backend/dist/adapters/terminal-adapter.js.map +1 -1
- package/backend/dist/adapters/types.d.ts +10 -0
- package/backend/dist/adapters/types.d.ts.map +1 -1
- package/backend/dist/agent-prompts.d.ts +14 -10
- package/backend/dist/agent-prompts.d.ts.map +1 -1
- package/backend/dist/agent-prompts.js +47 -19
- package/backend/dist/agent-prompts.js.map +1 -1
- package/backend/dist/approval-manager.d.ts +10 -0
- package/backend/dist/approval-manager.d.ts.map +1 -1
- package/backend/dist/approval-manager.js +10 -0
- package/backend/dist/approval-manager.js.map +1 -1
- package/backend/dist/hooks-manager.d.ts +9 -0
- package/backend/dist/hooks-manager.d.ts.map +1 -1
- package/backend/dist/hooks-manager.js +9 -0
- package/backend/dist/hooks-manager.js.map +1 -1
- package/backend/dist/memory-prompts.d.ts +3 -2
- package/backend/dist/memory-prompts.d.ts.map +1 -1
- package/backend/dist/memory-prompts.js +10 -10
- package/backend/dist/memory-prompts.js.map +1 -1
- package/backend/dist/routes/agent-prompts.d.ts.map +1 -1
- package/backend/dist/routes/agent-prompts.js +28 -26
- package/backend/dist/routes/agent-prompts.js.map +1 -1
- package/backend/dist/routes/claude.d.ts.map +1 -1
- package/backend/dist/routes/claude.js +36 -0
- package/backend/dist/routes/claude.js.map +1 -1
- package/backend/dist/routes/memory-prompts.d.ts.map +1 -1
- package/backend/dist/routes/memory-prompts.js +13 -11
- package/backend/dist/routes/memory-prompts.js.map +1 -1
- package/backend/dist/routes/projects.d.ts.map +1 -1
- package/backend/dist/routes/projects.js +9 -2
- package/backend/dist/routes/projects.js.map +1 -1
- package/backend/package-lock.json +22 -0
- package/backend/package.json +1 -0
- package/frontend/dist/assets/AssistantMessageContent-D2JNDs8w.js +13 -0
- package/frontend/dist/assets/{GraphPreview-c6BsDMXu.js → GraphPreview-DpuJEzth.js} +1 -1
- package/frontend/dist/assets/{MobilePage-DNIigJYo.js → MobilePage-B792gp0X.js} +4 -4
- package/frontend/dist/assets/{OfficePreview-13EiheWO.js → OfficePreview-C8HL3vEN.js} +2 -2
- package/frontend/dist/assets/{ProjectPage-C2X-iWbl.js → ProjectPage-DlWKUSU3.js} +5 -5
- package/frontend/dist/assets/{SettingsPage-Cc8ol0p-.js → SettingsPage-TaS0tYXB.js} +2 -2
- package/frontend/dist/assets/{SkillHubPage-Bv8o6-4f.js → SkillHubPage-GoI2aP2e.js} +1 -1
- package/frontend/dist/assets/{chevron-down-ClSQun3W.js → chevron-down-URrZnLx2.js} +1 -1
- package/frontend/dist/assets/{chevron-up-_MjOCzPW.js → chevron-up-Ccf_C2EF.js} +1 -1
- package/frontend/dist/assets/index-90r7D6Jk.css +1 -0
- package/frontend/dist/assets/{index-CgCzkWOS.js → index-DM6GEXje.js} +1 -1
- package/frontend/dist/assets/{index-CmAWu5B1.js → index-DlOcfeB3.js} +9 -9
- package/frontend/dist/assets/{index-BakiN5Cj.js → index-n3xnBH7Z.js} +1 -1
- package/frontend/dist/assets/{jszip.min-DfUlQ97F.js → jszip.min-C0v_rPX3.js} +1 -1
- package/frontend/dist/assets/{search-cUgNWB9T.js → search-BDg9Ra4d.js} +1 -1
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/AssistantMessageContent-Cq5TZh-h.js +0 -13
- package/frontend/dist/assets/index-t3Zp9UzI.css +0 -1
|
@@ -50,6 +50,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
50
50
|
};
|
|
51
51
|
})();
|
|
52
52
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
53
|
+
exports.instructionsFilePath = instructionsFilePath;
|
|
54
|
+
exports.instructionsFilename = instructionsFilename;
|
|
53
55
|
exports.readGlobalPrompts = readGlobalPrompts;
|
|
54
56
|
exports.writeGlobalPrompts = writeGlobalPrompts;
|
|
55
57
|
exports.readProjectPrompts = readProjectPrompts;
|
|
@@ -67,7 +69,23 @@ const path = __importStar(require("path"));
|
|
|
67
69
|
const os = __importStar(require("os"));
|
|
68
70
|
const config_1 = require("./config");
|
|
69
71
|
const logger_1 = require("./logger");
|
|
72
|
+
const adapters_1 = require("./adapters");
|
|
70
73
|
const log = (0, logger_1.modLogger)('prompt');
|
|
74
|
+
// ── Project instructions file (was: CLAUDE.md only) ─────────────────────────
|
|
75
|
+
// Each adapter reports its own instruction filename:
|
|
76
|
+
// claude → CLAUDE.md
|
|
77
|
+
// codex → AGENTS.md
|
|
78
|
+
// gemini/opencode/qwen → AGENTS.md (industry convention)
|
|
79
|
+
// terminal → null (no instruction semantic)
|
|
80
|
+
// Callers pass project.cliTool; we derive the path via the adapter.
|
|
81
|
+
function instructionsFilename(cliTool) {
|
|
82
|
+
const tool = cliTool ?? 'claude';
|
|
83
|
+
return (0, adapters_1.getAdapter)(tool).getProjectInstructionsFilename();
|
|
84
|
+
}
|
|
85
|
+
function instructionsFilePath(folderPath, cliTool) {
|
|
86
|
+
const name = instructionsFilename(cliTool);
|
|
87
|
+
return name ? path.join(folderPath, name) : null;
|
|
88
|
+
}
|
|
71
89
|
const CLAUDE_MD = 'CLAUDE.md';
|
|
72
90
|
const PROJECT_PROMPTS_FILE = 'agent-prompts.json';
|
|
73
91
|
// ── Global prompts (per user) ────────────────────────────────────────────────
|
|
@@ -117,21 +135,30 @@ function writeProjectPrompts(folderPath, list) {
|
|
|
117
135
|
fs.mkdirSync(dir, { recursive: true });
|
|
118
136
|
(0, config_1.atomicWriteSync)(path.join(dir, PROJECT_PROMPTS_FILE), JSON.stringify(list, null, 2));
|
|
119
137
|
}
|
|
120
|
-
// ──
|
|
121
|
-
function
|
|
122
|
-
|
|
138
|
+
// ── Project instructions file operations ────────────────────────────────────
|
|
139
|
+
// Historical function names are kept ('readClaudeMd' etc) for backwards compat
|
|
140
|
+
// across the codebase. The underlying file is now adapter-determined: CLAUDE.md
|
|
141
|
+
// for Claude, AGENTS.md for Codex and the other Agent-SDK-convention tools.
|
|
142
|
+
// Callers pass project.cliTool; omitting it defaults to 'claude' (preserves
|
|
143
|
+
// pre-refactor behavior for any call site that hasn't been updated yet).
|
|
144
|
+
function claudeMdPath(folderPath, cliTool) {
|
|
145
|
+
// Null cliTool (terminal) → fall back to CLAUDE.md so existing tests and
|
|
146
|
+
// call sites with no cliTool plumbing don't change behavior. Real-world
|
|
147
|
+
// callers for terminal projects are already guarded by adapter semantics.
|
|
148
|
+
const name = instructionsFilename(cliTool) ?? CLAUDE_MD;
|
|
149
|
+
return path.join(folderPath, name);
|
|
123
150
|
}
|
|
124
|
-
/** Read
|
|
125
|
-
* doesn't exist (treated as "no content yet"). */
|
|
126
|
-
function readClaudeMd(folderPath) {
|
|
127
|
-
const file = claudeMdPath(folderPath);
|
|
151
|
+
/** Read the project instructions file, normalising CRLF → LF. Returns empty
|
|
152
|
+
* string if the file doesn't exist (treated as "no content yet"). */
|
|
153
|
+
function readClaudeMd(folderPath, cliTool) {
|
|
154
|
+
const file = claudeMdPath(folderPath, cliTool);
|
|
128
155
|
if (!fs.existsSync(file))
|
|
129
156
|
return '';
|
|
130
157
|
const raw = fs.readFileSync(file, 'utf-8');
|
|
131
158
|
return raw.replace(/\r\n/g, '\n');
|
|
132
159
|
}
|
|
133
|
-
function writeClaudeMd(folderPath, content) {
|
|
134
|
-
const file = claudeMdPath(folderPath);
|
|
160
|
+
function writeClaudeMd(folderPath, content, cliTool) {
|
|
161
|
+
const file = claudeMdPath(folderPath, cliTool);
|
|
135
162
|
(0, config_1.atomicWriteSync)(file, content);
|
|
136
163
|
}
|
|
137
164
|
/** Exact substring check (after LF normalisation). */
|
|
@@ -139,14 +166,15 @@ function isInserted(claudeMd, command) {
|
|
|
139
166
|
return claudeMd.includes(command);
|
|
140
167
|
}
|
|
141
168
|
/**
|
|
142
|
-
* Append the command to
|
|
143
|
-
* if the exact text already appears anywhere in the file, no
|
|
169
|
+
* Append the command to the instructions file separated by a blank line.
|
|
170
|
+
* Idempotent: if the exact text already appears anywhere in the file, no
|
|
171
|
+
* changes are made.
|
|
144
172
|
*
|
|
145
173
|
* Returns { changed: true } if the file was written, { changed: false } if
|
|
146
174
|
* the text was already present.
|
|
147
175
|
*/
|
|
148
|
-
function insertIntoClaudeMd(folderPath, command) {
|
|
149
|
-
const current = readClaudeMd(folderPath);
|
|
176
|
+
function insertIntoClaudeMd(folderPath, command, cliTool) {
|
|
177
|
+
const current = readClaudeMd(folderPath, cliTool);
|
|
150
178
|
if (current.includes(command))
|
|
151
179
|
return { changed: false };
|
|
152
180
|
// Ensure a blank-line separator between prior content and the new block.
|
|
@@ -159,7 +187,7 @@ function insertIntoClaudeMd(folderPath, command) {
|
|
|
159
187
|
const leader = needsTrailingNewline ? '\n\n' : '\n';
|
|
160
188
|
next = current + leader + command + '\n';
|
|
161
189
|
}
|
|
162
|
-
writeClaudeMd(folderPath, next);
|
|
190
|
+
writeClaudeMd(folderPath, next, cliTool);
|
|
163
191
|
return { changed: true };
|
|
164
192
|
}
|
|
165
193
|
/**
|
|
@@ -175,8 +203,8 @@ function insertIntoClaudeMd(folderPath, command) {
|
|
|
175
203
|
* in the file (e.g. already removed / never inserted) — distinguishable from
|
|
176
204
|
* 'not-found' by callers that want to stay silent in that case.
|
|
177
205
|
*/
|
|
178
|
-
function removeFromClaudeMd(folderPath, command) {
|
|
179
|
-
const current = readClaudeMd(folderPath);
|
|
206
|
+
function removeFromClaudeMd(folderPath, command, cliTool) {
|
|
207
|
+
const current = readClaudeMd(folderPath, cliTool);
|
|
180
208
|
if (current.length === 0 || !current.includes(command)) {
|
|
181
209
|
return { changed: false, reason: 'not-present' };
|
|
182
210
|
}
|
|
@@ -184,7 +212,7 @@ function removeFromClaudeMd(folderPath, command) {
|
|
|
184
212
|
const anchored = '\n\n' + command + '\n';
|
|
185
213
|
if (current.includes(anchored)) {
|
|
186
214
|
const next = current.replace(anchored, '');
|
|
187
|
-
writeClaudeMd(folderPath, next);
|
|
215
|
+
writeClaudeMd(folderPath, next, cliTool);
|
|
188
216
|
return { changed: true, removed: 1 };
|
|
189
217
|
}
|
|
190
218
|
// Also try the single-newline form, in case the user edited surrounding
|
|
@@ -192,14 +220,14 @@ function removeFromClaudeMd(folderPath, command) {
|
|
|
192
220
|
const half = '\n\n' + command;
|
|
193
221
|
if (current.endsWith(half)) {
|
|
194
222
|
const next = current.slice(0, -half.length) + '\n';
|
|
195
|
-
writeClaudeMd(folderPath, next);
|
|
223
|
+
writeClaudeMd(folderPath, next, cliTool);
|
|
196
224
|
return { changed: true, removed: 1 };
|
|
197
225
|
}
|
|
198
226
|
// Exact substring fallback — may leave orphaned blank lines, which the
|
|
199
227
|
// user accepted as the cost of "exact text match" semantics.
|
|
200
228
|
if (current.includes(command)) {
|
|
201
229
|
const next = current.replace(command, '');
|
|
202
|
-
writeClaudeMd(folderPath, next);
|
|
230
|
+
writeClaudeMd(folderPath, next, cliTool);
|
|
203
231
|
return { changed: true, removed: 1 };
|
|
204
232
|
}
|
|
205
233
|
return { changed: false, reason: 'not-found' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-prompts.js","sourceRoot":"","sources":["../src/agent-prompts.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBH,8CAUC;AAED,gDAGC;AAQD,gDAUC;AAED,kDAIC;
|
|
1
|
+
{"version":3,"file":"agent-prompts.js","sourceRoot":"","sources":["../src/agent-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,16 @@
|
|
|
9
9
|
* - Shared HMAC secret at ~/.ccweb/approval-secret (mode 0600) verifies hook ↔ backend calls.
|
|
10
10
|
* - Hook HTTP is 127.0.0.1-only (enforced at route level) so LAN clients can't forge requests.
|
|
11
11
|
* - Frontend decide() goes through JWT-auth'd route.
|
|
12
|
+
*
|
|
13
|
+
* Claude-only on purpose (not a missed adapter abstraction):
|
|
14
|
+
* - Codex DOES have an approval system (`approval_policy = on-request`),
|
|
15
|
+
* but it is purely internal to the TUI — Codex does NOT emit external
|
|
16
|
+
* webhooks for pre-tool decisions, so ccweb cannot intercept. The only
|
|
17
|
+
* adapter surfaces are (a) MCP server wrapping or (b) the undocumented
|
|
18
|
+
* `--remote ws://...` TUI protocol, both of which are an order of
|
|
19
|
+
* magnitude more engineering than this module. Keeping this Claude-only
|
|
20
|
+
* is a cost decision, not "Codex lacks approval".
|
|
21
|
+
* - Gemini / OpenCode / Qwen likewise have no compatible webhook surface.
|
|
12
22
|
*/
|
|
13
23
|
export interface ApprovalRequest {
|
|
14
24
|
projectId: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-manager.d.ts","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"approval-manager.d.ts","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAYH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAwBD,cAAM,eAAe;IACnB,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAA2C;;IAM5D,aAAa,IAAI,MAAM;IAEvB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAI1B,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAQhD,OAAO,CAAC,KAAK;IAIb,qFAAqF;IACrF,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAkB5E,6EAA6E;IAC7E,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,GAAG,OAAO;IAWjF,uHAAuH;IACvH,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAWrE,mEAAmE;IACnE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAWjD,SAAS,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAKvD,OAAO,CAAC,IAAI;CAKb;AAED,MAAM,MAAM,aAAa,GACrB,CAAC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAAG,eAAe,CAAC,GAChD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErH,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -10,6 +10,16 @@
|
|
|
10
10
|
* - Shared HMAC secret at ~/.ccweb/approval-secret (mode 0600) verifies hook ↔ backend calls.
|
|
11
11
|
* - Hook HTTP is 127.0.0.1-only (enforced at route level) so LAN clients can't forge requests.
|
|
12
12
|
* - Frontend decide() goes through JWT-auth'd route.
|
|
13
|
+
*
|
|
14
|
+
* Claude-only on purpose (not a missed adapter abstraction):
|
|
15
|
+
* - Codex DOES have an approval system (`approval_policy = on-request`),
|
|
16
|
+
* but it is purely internal to the TUI — Codex does NOT emit external
|
|
17
|
+
* webhooks for pre-tool decisions, so ccweb cannot intercept. The only
|
|
18
|
+
* adapter surfaces are (a) MCP server wrapping or (b) the undocumented
|
|
19
|
+
* `--remote ws://...` TUI protocol, both of which are an order of
|
|
20
|
+
* magnitude more engineering than this module. Keeping this Claude-only
|
|
21
|
+
* is a cost decision, not "Codex lacks approval".
|
|
22
|
+
* - Gemini / OpenCode / Qwen likewise have no compatible webhook surface.
|
|
13
23
|
*/
|
|
14
24
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
15
25
|
if (k2 === undefined) k2 = k;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"approval-manager.js","sourceRoot":"","sources":["../src/approval-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Hook commands include "# ccweb-hook" marker at the end so uninstall()
|
|
8
8
|
* can precisely identify and remove them without touching user-defined hooks.
|
|
9
|
+
*
|
|
10
|
+
* Adapter coverage:
|
|
11
|
+
* - Claude: full hook lifecycle (PreToolUse / PostToolUse / Stop / PermissionRequest)
|
|
12
|
+
* via `~/.claude/settings.json` + statusLine
|
|
13
|
+
* - Gemini: partial (PostToolUse + Stop) via its own settings.json
|
|
14
|
+
* - Codex / OpenCode / Qwen: `getHooksSettingsPath()` returns null, skipping.
|
|
15
|
+
* Codex uses `~/.codex/config.toml` `notify = [argv...]` which only fires
|
|
16
|
+
* at turn-complete — semantically incompatible with the pre-tool hook
|
|
17
|
+
* model ccweb is built around. Not a missed abstraction; deliberate.
|
|
9
18
|
*/
|
|
10
19
|
declare class HooksManager {
|
|
11
20
|
private portFile;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-manager.d.ts","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"hooks-manager.d.ts","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8BH,cAAM,YAAY;IAChB,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B,wFAAwF;IACxF,OAAO,CAAC,mBAAmB;IAwC3B,2CAA2C;IAC3C,OAAO,CAAC,iBAAiB;IAoCzB,6DAA6D;IAC7D,SAAS,IAAI,IAAI;IAMjB,mGAAmG;IACnG,OAAO,IAAI,IAAI;IAMf,WAAW,IAAI,OAAO;CAavB;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -7,6 +7,15 @@
|
|
|
7
7
|
*
|
|
8
8
|
* Hook commands include "# ccweb-hook" marker at the end so uninstall()
|
|
9
9
|
* can precisely identify and remove them without touching user-defined hooks.
|
|
10
|
+
*
|
|
11
|
+
* Adapter coverage:
|
|
12
|
+
* - Claude: full hook lifecycle (PreToolUse / PostToolUse / Stop / PermissionRequest)
|
|
13
|
+
* via `~/.claude/settings.json` + statusLine
|
|
14
|
+
* - Gemini: partial (PostToolUse + Stop) via its own settings.json
|
|
15
|
+
* - Codex / OpenCode / Qwen: `getHooksSettingsPath()` returns null, skipping.
|
|
16
|
+
* Codex uses `~/.codex/config.toml` `notify = [argv...]` which only fires
|
|
17
|
+
* at turn-complete — semantically incompatible with the pre-tool hook
|
|
18
|
+
* model ccweb is built around. Not a missed abstraction; deliberate.
|
|
10
19
|
*/
|
|
11
20
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
21
|
if (k2 === undefined) k2 = k;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"hooks-manager.js","sourceRoot":"","sources":["../src/hooks-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { CliTool } from './types';
|
|
1
2
|
/**
|
|
2
3
|
* Memory Prompts — filesystem-backed prompt snippets located at
|
|
3
4
|
* `<project>/.ccweb/memory/*.md`, toggleable into CLAUDE.md with
|
|
@@ -26,7 +27,7 @@ export interface MemoryListResult {
|
|
|
26
27
|
items: MemoryPromptItem[];
|
|
27
28
|
claudeMdLineCount: number;
|
|
28
29
|
}
|
|
29
|
-
export declare function listMemoryPrompts(folderPath: string): MemoryListResult;
|
|
30
|
+
export declare function listMemoryPrompts(folderPath: string, cliTool?: CliTool): MemoryListResult;
|
|
30
31
|
export type ToggleAction = 'insert' | 'remove';
|
|
31
32
|
export interface ToggleResult {
|
|
32
33
|
ok: boolean;
|
|
@@ -35,5 +36,5 @@ export interface ToggleResult {
|
|
|
35
36
|
reason?: string;
|
|
36
37
|
claudeMdLineCount?: number;
|
|
37
38
|
}
|
|
38
|
-
export declare function toggleMemoryPrompt(folderPath: string, filename: string, action: ToggleAction): ToggleResult;
|
|
39
|
+
export declare function toggleMemoryPrompt(folderPath: string, filename: string, action: ToggleAction, cliTool?: CliTool): ToggleResult;
|
|
39
40
|
//# sourceMappingURL=memory-prompts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompts.d.ts","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-prompts.d.ts","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAEvC;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AA+BD;6EAC6E;AAC7E,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,gBAAgB,CA8BzF;AAID,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,OAAO,GAChB,YAAY,CAiEd"}
|
|
@@ -70,17 +70,17 @@ function lineCountOf(content) {
|
|
|
70
70
|
return 0;
|
|
71
71
|
return content.replace(/\n$/, '').split('\n').length;
|
|
72
72
|
}
|
|
73
|
-
function listMemoryPrompts(folderPath) {
|
|
73
|
+
function listMemoryPrompts(folderPath, cliTool) {
|
|
74
74
|
const dir = memoryDir(folderPath);
|
|
75
75
|
let files = [];
|
|
76
76
|
try {
|
|
77
77
|
files = fs.readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
78
78
|
}
|
|
79
79
|
catch {
|
|
80
|
-
// dir missing is normal — still return
|
|
81
|
-
return { items: [], claudeMdLineCount: lineCountOf((0, agent_prompts_1.readClaudeMd)(folderPath)) };
|
|
80
|
+
// dir missing is normal — still return instructions file line count
|
|
81
|
+
return { items: [], claudeMdLineCount: lineCountOf((0, agent_prompts_1.readClaudeMd)(folderPath, cliTool)) };
|
|
82
82
|
}
|
|
83
|
-
const claudeMd = (0, agent_prompts_1.readClaudeMd)(folderPath);
|
|
83
|
+
const claudeMd = (0, agent_prompts_1.readClaudeMd)(folderPath, cliTool);
|
|
84
84
|
const out = [];
|
|
85
85
|
for (const filename of files) {
|
|
86
86
|
const name = filename.replace(/\.md$/, '');
|
|
@@ -109,7 +109,7 @@ function listMemoryPrompts(folderPath) {
|
|
|
109
109
|
out.sort((a, b) => a.name.localeCompare(b.name));
|
|
110
110
|
return { items: out, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
111
111
|
}
|
|
112
|
-
function toggleMemoryPrompt(folderPath, filename, action) {
|
|
112
|
+
function toggleMemoryPrompt(folderPath, filename, action, cliTool) {
|
|
113
113
|
// Guard filename — reject anything that could escape memory/ via the name.
|
|
114
114
|
if (!filename || filename.includes('/') || filename.includes('\\') || filename.includes('\0')) {
|
|
115
115
|
return { ok: false, changed: false, inserted: false, reason: 'invalid-filename' };
|
|
@@ -119,7 +119,7 @@ function toggleMemoryPrompt(folderPath, filename, action) {
|
|
|
119
119
|
}
|
|
120
120
|
const name = filename.replace(/\.md$/, '');
|
|
121
121
|
const filePath = path.join(memoryDir(folderPath), filename);
|
|
122
|
-
let claudeMd = (0, agent_prompts_1.readClaudeMd)(folderPath);
|
|
122
|
+
let claudeMd = (0, agent_prompts_1.readClaudeMd)(folderPath, cliTool);
|
|
123
123
|
const re = blockRegex(name);
|
|
124
124
|
const currentlyInserted = re.test(claudeMd);
|
|
125
125
|
if (action === 'remove') {
|
|
@@ -129,7 +129,7 @@ function toggleMemoryPrompt(folderPath, filename, action) {
|
|
|
129
129
|
claudeMd = claudeMd.replace(re, '\n\n');
|
|
130
130
|
// Collapse any runs of 3+ blank lines left behind into 2
|
|
131
131
|
claudeMd = claudeMd.replace(/\n{3,}/g, '\n\n');
|
|
132
|
-
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
132
|
+
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd, cliTool);
|
|
133
133
|
return { ok: true, changed: true, inserted: false, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
134
134
|
}
|
|
135
135
|
// Insert (or refresh in place). Symlink guard mirrors `listMemoryPrompts`
|
|
@@ -165,13 +165,13 @@ function toggleMemoryPrompt(folderPath, filename, action) {
|
|
|
165
165
|
// have been edited since last insert).
|
|
166
166
|
claudeMd = claudeMd.replace(re, `\n\n${block}\n\n`);
|
|
167
167
|
claudeMd = claudeMd.replace(/\n{3,}/g, '\n\n');
|
|
168
|
-
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
168
|
+
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd, cliTool);
|
|
169
169
|
return { ok: true, changed: true, inserted: true, reason: 'refreshed', claudeMdLineCount: lineCountOf(claudeMd) };
|
|
170
170
|
}
|
|
171
|
-
// Append with separating blank line if
|
|
171
|
+
// Append with separating blank line if instructions file doesn't already end with one
|
|
172
172
|
const sep = claudeMd.length === 0 ? '' : claudeMd.endsWith('\n\n') ? '' : claudeMd.endsWith('\n') ? '\n' : '\n\n';
|
|
173
173
|
claudeMd = claudeMd + sep + block + '\n';
|
|
174
|
-
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd);
|
|
174
|
+
(0, agent_prompts_1.writeClaudeMd)(folderPath, claudeMd, cliTool);
|
|
175
175
|
return { ok: true, changed: true, inserted: true, claudeMdLineCount: lineCountOf(claudeMd) };
|
|
176
176
|
}
|
|
177
177
|
//# sourceMappingURL=memory-prompts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"memory-prompts.js","sourceRoot":"","sources":["../src/memory-prompts.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-prompts.d.ts","sourceRoot":"","sources":["../../src/routes/agent-prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-prompts.d.ts","sourceRoot":"","sources":["../../src/routes/agent-prompts.ts"],"names":[],"mappings":"AAaA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAuLxB,eAAe,MAAM,CAAC"}
|
|
@@ -67,7 +67,7 @@ router.delete('/:id', (req, res) => {
|
|
|
67
67
|
* has edit-level access (admin OR owner OR share with 'edit' permission).
|
|
68
68
|
* Mirrors the permission model used by `routes/shortcuts.ts`.
|
|
69
69
|
*/
|
|
70
|
-
function
|
|
70
|
+
function resolveProject(projectId, username, res) {
|
|
71
71
|
const project = (0, config_1.getProject)(projectId);
|
|
72
72
|
if (!project) {
|
|
73
73
|
res.status(404).json({ error: 'Project not found' });
|
|
@@ -79,31 +79,32 @@ function resolveProjectFolder(projectId, username, res) {
|
|
|
79
79
|
res.status(403).json({ error: 'Access denied' });
|
|
80
80
|
return null;
|
|
81
81
|
}
|
|
82
|
-
return project.folderPath;
|
|
82
|
+
return { folderPath: project.folderPath, cliTool: project.cliTool };
|
|
83
83
|
}
|
|
84
84
|
// GET /api/prompts/project/:projectId
|
|
85
85
|
// → { global: (AgentPrompt & {inserted})[], project: (AgentPrompt & {inserted})[] }
|
|
86
86
|
router.get('/project/:projectId', (req, res) => {
|
|
87
|
-
const
|
|
88
|
-
if (!
|
|
87
|
+
const p = resolveProject(req.params.projectId, req.user?.username || '', res);
|
|
88
|
+
if (!p)
|
|
89
89
|
return;
|
|
90
|
-
const claudeMd = (0, agent_prompts_1.readClaudeMd)(
|
|
90
|
+
const claudeMd = (0, agent_prompts_1.readClaudeMd)(p.folderPath, p.cliTool);
|
|
91
91
|
res.json({
|
|
92
92
|
global: (0, agent_prompts_1.annotateInserted)((0, agent_prompts_1.readGlobalPrompts)(req.user?.username), claudeMd),
|
|
93
|
-
project: (0, agent_prompts_1.annotateInserted)((0, agent_prompts_1.readProjectPrompts)(
|
|
93
|
+
project: (0, agent_prompts_1.annotateInserted)((0, agent_prompts_1.readProjectPrompts)(p.folderPath), claudeMd),
|
|
94
|
+
instructionsFilename: (0, agent_prompts_1.instructionsFilename)(p.cliTool),
|
|
94
95
|
});
|
|
95
96
|
});
|
|
96
97
|
// POST /api/prompts/project/:projectId
|
|
97
98
|
router.post('/project/:projectId', (req, res) => {
|
|
98
|
-
const
|
|
99
|
-
if (!
|
|
99
|
+
const p = resolveProject(req.params.projectId, req.user?.username || '', res);
|
|
100
|
+
if (!p)
|
|
100
101
|
return;
|
|
101
102
|
const parsed = (0, agent_prompts_1.validatePromptInput)(req.body);
|
|
102
103
|
if (typeof parsed === 'string') {
|
|
103
104
|
res.status(400).json({ error: parsed });
|
|
104
105
|
return;
|
|
105
106
|
}
|
|
106
|
-
const list = (0, agent_prompts_1.readProjectPrompts)(
|
|
107
|
+
const list = (0, agent_prompts_1.readProjectPrompts)(p.folderPath);
|
|
107
108
|
const entry = {
|
|
108
109
|
id: (0, uuid_1.v4)(),
|
|
109
110
|
label: parsed.label,
|
|
@@ -111,13 +112,13 @@ router.post('/project/:projectId', (req, res) => {
|
|
|
111
112
|
createdAt: new Date().toISOString(),
|
|
112
113
|
};
|
|
113
114
|
list.push(entry);
|
|
114
|
-
(0, agent_prompts_1.writeProjectPrompts)(
|
|
115
|
+
(0, agent_prompts_1.writeProjectPrompts)(p.folderPath, list);
|
|
115
116
|
res.status(201).json(entry);
|
|
116
117
|
});
|
|
117
118
|
// PUT /api/prompts/project/:projectId/:id
|
|
118
119
|
router.put('/project/:projectId/:id', (req, res) => {
|
|
119
|
-
const
|
|
120
|
-
if (!
|
|
120
|
+
const p = resolveProject(req.params.projectId, req.user?.username || '', res);
|
|
121
|
+
if (!p)
|
|
121
122
|
return;
|
|
122
123
|
const { id } = req.params;
|
|
123
124
|
const parsed = (0, agent_prompts_1.validatePromptInput)(req.body);
|
|
@@ -125,37 +126,38 @@ router.put('/project/:projectId/:id', (req, res) => {
|
|
|
125
126
|
res.status(400).json({ error: parsed });
|
|
126
127
|
return;
|
|
127
128
|
}
|
|
128
|
-
const list = (0, agent_prompts_1.readProjectPrompts)(
|
|
129
|
-
const idx = list.findIndex((
|
|
129
|
+
const list = (0, agent_prompts_1.readProjectPrompts)(p.folderPath);
|
|
130
|
+
const idx = list.findIndex((pr) => pr.id === id);
|
|
130
131
|
if (idx < 0) {
|
|
131
132
|
res.status(404).json({ error: 'Not found' });
|
|
132
133
|
return;
|
|
133
134
|
}
|
|
134
135
|
list[idx] = { ...list[idx], label: parsed.label, command: parsed.command };
|
|
135
|
-
(0, agent_prompts_1.writeProjectPrompts)(
|
|
136
|
+
(0, agent_prompts_1.writeProjectPrompts)(p.folderPath, list);
|
|
136
137
|
res.json(list[idx]);
|
|
137
138
|
});
|
|
138
139
|
// DELETE /api/prompts/project/:projectId/:id
|
|
139
140
|
router.delete('/project/:projectId/:id', (req, res) => {
|
|
140
|
-
const
|
|
141
|
-
if (!
|
|
141
|
+
const p = resolveProject(req.params.projectId, req.user?.username || '', res);
|
|
142
|
+
if (!p)
|
|
142
143
|
return;
|
|
143
144
|
const { id } = req.params;
|
|
144
|
-
const list = (0, agent_prompts_1.readProjectPrompts)(
|
|
145
|
-
const filtered = list.filter((
|
|
145
|
+
const list = (0, agent_prompts_1.readProjectPrompts)(p.folderPath);
|
|
146
|
+
const filtered = list.filter((pr) => pr.id !== id);
|
|
146
147
|
if (filtered.length === list.length) {
|
|
147
148
|
res.status(404).json({ error: 'Not found' });
|
|
148
149
|
return;
|
|
149
150
|
}
|
|
150
|
-
(0, agent_prompts_1.writeProjectPrompts)(
|
|
151
|
+
(0, agent_prompts_1.writeProjectPrompts)(p.folderPath, filtered);
|
|
151
152
|
res.json({ success: true });
|
|
152
153
|
});
|
|
153
|
-
// ──
|
|
154
|
+
// ── Instructions file toggle (insert / remove by exact text) ────────────────
|
|
155
|
+
// Underlying file is CLAUDE.md for claude, AGENTS.md for codex/gemini/etc.
|
|
154
156
|
// POST /api/prompts/project/:projectId/toggle
|
|
155
157
|
// body: { text: string, action: 'insert' | 'remove' }
|
|
156
158
|
router.post('/project/:projectId/toggle', (req, res) => {
|
|
157
|
-
const
|
|
158
|
-
if (!
|
|
159
|
+
const p = resolveProject(req.params.projectId, req.user?.username || '', res);
|
|
160
|
+
if (!p)
|
|
159
161
|
return;
|
|
160
162
|
const { text, action } = req.body;
|
|
161
163
|
if (typeof text !== 'string' || !text.trim()) {
|
|
@@ -168,8 +170,8 @@ router.post('/project/:projectId/toggle', (req, res) => {
|
|
|
168
170
|
}
|
|
169
171
|
if (action === 'insert') {
|
|
170
172
|
try {
|
|
171
|
-
const result = (0, agent_prompts_1.insertIntoClaudeMd)(
|
|
172
|
-
res.json({ action, ...result, inserted: true });
|
|
173
|
+
const result = (0, agent_prompts_1.insertIntoClaudeMd)(p.folderPath, text, p.cliTool);
|
|
174
|
+
res.json({ action, ...result, inserted: true, instructionsFilename: (0, agent_prompts_1.instructionsFilename)(p.cliTool) });
|
|
173
175
|
}
|
|
174
176
|
catch (err) {
|
|
175
177
|
res.status(500).json({ error: err.message });
|
|
@@ -178,7 +180,7 @@ router.post('/project/:projectId/toggle', (req, res) => {
|
|
|
178
180
|
}
|
|
179
181
|
if (action === 'remove') {
|
|
180
182
|
try {
|
|
181
|
-
const result = (0, agent_prompts_1.removeFromClaudeMd)(
|
|
183
|
+
const result = (0, agent_prompts_1.removeFromClaudeMd)(p.folderPath, text, p.cliTool);
|
|
182
184
|
if (result.changed) {
|
|
183
185
|
res.json({ action, changed: true, inserted: false });
|
|
184
186
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-prompts.js","sourceRoot":"","sources":["../../src/routes/agent-prompts.ts"],"names":[],"mappings":";;AAAA,qCAA2C;AAC3C,+BAAoC;AAEpC,sCAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"agent-prompts.js","sourceRoot":"","sources":["../../src/routes/agent-prompts.ts"],"names":[],"mappings":"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"}
|