@kaitranntt/ccs 4.4.0 → 5.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 +14 -7
- package/VERSION +1 -1
- package/config/base-agy.settings.json +10 -0
- package/config/base-codex.settings.json +10 -0
- package/config/base-gemini.settings.json +10 -0
- package/dist/auth/auth-commands.d.ts +52 -0
- package/dist/auth/auth-commands.d.ts.map +1 -0
- package/dist/auth/auth-commands.js +479 -0
- package/dist/auth/auth-commands.js.map +1 -0
- package/dist/auth/profile-detector.d.ts +68 -0
- package/dist/auth/profile-detector.d.ts.map +1 -0
- package/dist/auth/profile-detector.js +209 -0
- package/dist/auth/profile-detector.js.map +1 -0
- package/dist/auth/profile-registry.d.ts +60 -0
- package/dist/auth/profile-registry.d.ts.map +1 -0
- package/dist/auth/profile-registry.js +188 -0
- package/dist/auth/profile-registry.js.map +1 -0
- package/dist/ccs.d.ts +10 -0
- package/dist/ccs.d.ts.map +1 -0
- package/dist/ccs.js +320 -0
- package/dist/ccs.js.map +1 -0
- package/dist/cliproxy/auth-handler.d.ts +93 -0
- package/dist/cliproxy/auth-handler.d.ts.map +1 -0
- package/dist/cliproxy/auth-handler.js +402 -0
- package/dist/cliproxy/auth-handler.js.map +1 -0
- package/dist/cliproxy/base-config-loader.d.ts +42 -0
- package/dist/cliproxy/base-config-loader.d.ts.map +1 -0
- package/dist/cliproxy/base-config-loader.js +123 -0
- package/dist/cliproxy/base-config-loader.js.map +1 -0
- package/dist/cliproxy/binary-manager.d.ts +104 -0
- package/dist/cliproxy/binary-manager.d.ts.map +1 -0
- package/dist/cliproxy/binary-manager.js +567 -0
- package/dist/cliproxy/binary-manager.js.map +1 -0
- package/dist/cliproxy/cliproxy-executor.d.ts +33 -0
- package/dist/cliproxy/cliproxy-executor.d.ts.map +1 -0
- package/dist/cliproxy/cliproxy-executor.js +297 -0
- package/dist/cliproxy/cliproxy-executor.js.map +1 -0
- package/dist/cliproxy/config-generator.d.ts +89 -0
- package/dist/cliproxy/config-generator.d.ts.map +1 -0
- package/dist/cliproxy/config-generator.js +263 -0
- package/dist/cliproxy/config-generator.js.map +1 -0
- package/dist/cliproxy/index.d.ts +13 -0
- package/dist/cliproxy/index.d.ts.map +1 -0
- package/dist/cliproxy/index.js +62 -0
- package/dist/cliproxy/index.js.map +1 -0
- package/dist/cliproxy/platform-detector.d.ts +48 -0
- package/dist/cliproxy/platform-detector.d.ts.map +1 -0
- package/dist/cliproxy/platform-detector.js +118 -0
- package/dist/cliproxy/platform-detector.js.map +1 -0
- package/dist/cliproxy/types.d.ts +169 -0
- package/dist/cliproxy/types.d.ts.map +1 -0
- package/dist/cliproxy/types.js +7 -0
- package/dist/cliproxy/types.js.map +1 -0
- package/dist/commands/doctor-command.d.ts +10 -0
- package/dist/commands/doctor-command.d.ts.map +1 -0
- package/dist/commands/doctor-command.js +44 -0
- package/dist/commands/doctor-command.js.map +1 -0
- package/dist/commands/help-command.d.ts +5 -0
- package/dist/commands/help-command.d.ts.map +1 -0
- package/dist/commands/help-command.js +104 -0
- package/dist/commands/help-command.js.map +1 -0
- package/dist/commands/install-command.d.ts +14 -0
- package/dist/commands/install-command.d.ts.map +1 -0
- package/dist/commands/install-command.js +39 -0
- package/dist/commands/install-command.js.map +1 -0
- package/dist/commands/shell-completion-command.d.ts +10 -0
- package/dist/commands/shell-completion-command.d.ts.map +1 -0
- package/dist/commands/shell-completion-command.js +85 -0
- package/dist/commands/shell-completion-command.js.map +1 -0
- package/dist/commands/sync-command.d.ts +10 -0
- package/dist/commands/sync-command.d.ts.map +1 -0
- package/dist/commands/sync-command.js +59 -0
- package/dist/commands/sync-command.js.map +1 -0
- package/dist/commands/update-command.d.ts +12 -0
- package/dist/commands/update-command.d.ts.map +1 -0
- package/dist/commands/update-command.js +295 -0
- package/dist/commands/update-command.js.map +1 -0
- package/dist/commands/version-command.d.ts +10 -0
- package/dist/commands/version-command.d.ts.map +1 -0
- package/dist/commands/version-command.js +100 -0
- package/dist/commands/version-command.js.map +1 -0
- package/dist/delegation/delegation-handler.d.ts +60 -0
- package/dist/delegation/delegation-handler.d.ts.map +1 -0
- package/dist/delegation/delegation-handler.js +174 -0
- package/dist/delegation/delegation-handler.js.map +1 -0
- package/dist/delegation/headless-executor.d.ts +114 -0
- package/dist/delegation/headless-executor.d.ts.map +1 -0
- package/dist/delegation/headless-executor.js +562 -0
- package/dist/delegation/headless-executor.js.map +1 -0
- package/dist/delegation/result-formatter.d.ts +108 -0
- package/dist/delegation/result-formatter.d.ts.map +1 -0
- package/dist/delegation/result-formatter.js +391 -0
- package/dist/delegation/result-formatter.js.map +1 -0
- package/dist/delegation/session-manager.d.ts +58 -0
- package/dist/delegation/session-manager.d.ts.map +1 -0
- package/dist/delegation/session-manager.js +153 -0
- package/dist/delegation/session-manager.js.map +1 -0
- package/dist/delegation/settings-parser.d.ts +31 -0
- package/dist/delegation/settings-parser.d.ts.map +1 -0
- package/dist/delegation/settings-parser.js +107 -0
- package/dist/delegation/settings-parser.js.map +1 -0
- package/dist/glmt/delta-accumulator.d.ts +210 -0
- package/dist/glmt/delta-accumulator.d.ts.map +1 -0
- package/dist/glmt/delta-accumulator.js +351 -0
- package/dist/glmt/delta-accumulator.js.map +1 -0
- package/dist/glmt/glmt-proxy.d.ts +72 -0
- package/dist/glmt/glmt-proxy.d.ts.map +1 -0
- package/dist/glmt/glmt-proxy.js +427 -0
- package/dist/glmt/glmt-proxy.js.map +1 -0
- package/dist/glmt/glmt-transformer.d.ts +265 -0
- package/dist/glmt/glmt-transformer.d.ts.map +1 -0
- package/dist/glmt/glmt-transformer.js +832 -0
- package/dist/glmt/glmt-transformer.js.map +1 -0
- package/dist/glmt/locale-enforcer.d.ts +38 -0
- package/dist/glmt/locale-enforcer.d.ts.map +1 -0
- package/dist/glmt/locale-enforcer.js +69 -0
- package/dist/glmt/locale-enforcer.js.map +1 -0
- package/dist/glmt/reasoning-enforcer.d.ts +52 -0
- package/dist/glmt/reasoning-enforcer.d.ts.map +1 -0
- package/dist/glmt/reasoning-enforcer.js +151 -0
- package/dist/glmt/reasoning-enforcer.js.map +1 -0
- package/dist/glmt/sse-parser.d.ts +47 -0
- package/dist/glmt/sse-parser.d.ts.map +1 -0
- package/dist/glmt/sse-parser.js +93 -0
- package/dist/glmt/sse-parser.js.map +1 -0
- package/dist/management/doctor.d.ts +104 -0
- package/dist/management/doctor.d.ts.map +1 -0
- package/dist/management/doctor.js +673 -0
- package/dist/management/doctor.js.map +1 -0
- package/dist/management/instance-manager.d.ts +57 -0
- package/dist/management/instance-manager.d.ts.map +1 -0
- package/dist/management/instance-manager.js +195 -0
- package/dist/management/instance-manager.js.map +1 -0
- package/dist/management/recovery-manager.d.ts +39 -0
- package/dist/management/recovery-manager.d.ts.map +1 -0
- package/dist/management/recovery-manager.js +141 -0
- package/dist/management/recovery-manager.js.map +1 -0
- package/dist/management/shared-manager.d.ts +47 -0
- package/dist/management/shared-manager.d.ts.map +1 -0
- package/dist/management/shared-manager.js +388 -0
- package/dist/management/shared-manager.js.map +1 -0
- package/dist/types/cli.d.ts +50 -0
- package/dist/types/cli.d.ts.map +1 -0
- package/dist/types/cli.js +16 -0
- package/dist/types/cli.js.map +1 -0
- package/dist/types/config.d.ts +51 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +26 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/delegation.d.ts +61 -0
- package/dist/types/delegation.d.ts.map +1 -0
- package/dist/types/delegation.js +6 -0
- package/dist/types/delegation.js.map +1 -0
- package/dist/types/glmt.d.ts +95 -0
- package/dist/types/glmt.d.ts.map +1 -0
- package/dist/types/glmt.js +7 -0
- package/dist/types/glmt.js.map +1 -0
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +16 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/utils.d.ts +36 -0
- package/dist/types/utils.d.ts.map +1 -0
- package/dist/types/utils.js +22 -0
- package/dist/types/utils.js.map +1 -0
- package/dist/utils/claude-detector.d.ts +14 -0
- package/dist/utils/claude-detector.d.ts.map +1 -0
- package/dist/utils/claude-detector.js +112 -0
- package/dist/utils/claude-detector.js.map +1 -0
- package/dist/utils/claude-dir-installer.d.ts +46 -0
- package/dist/utils/claude-dir-installer.d.ts.map +1 -0
- package/dist/utils/claude-dir-installer.js +289 -0
- package/dist/utils/claude-dir-installer.js.map +1 -0
- package/dist/utils/claude-symlink-manager.d.ts +61 -0
- package/dist/utils/claude-symlink-manager.d.ts.map +1 -0
- package/dist/utils/claude-symlink-manager.js +291 -0
- package/dist/utils/claude-symlink-manager.js.map +1 -0
- package/dist/utils/config-manager.d.ts +32 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +143 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/delegation-validator.d.ts +39 -0
- package/dist/utils/delegation-validator.d.ts.map +1 -0
- package/dist/utils/delegation-validator.js +161 -0
- package/dist/utils/delegation-validator.js.map +1 -0
- package/dist/utils/error-codes.d.ts +36 -0
- package/dist/utils/error-codes.d.ts.map +1 -0
- package/dist/utils/error-codes.js +63 -0
- package/dist/utils/error-codes.js.map +1 -0
- package/dist/utils/error-manager.d.ts +59 -0
- package/dist/utils/error-manager.d.ts.map +1 -0
- package/dist/utils/error-manager.js +228 -0
- package/dist/utils/error-manager.js.map +1 -0
- package/dist/utils/helpers.d.ts +27 -0
- package/dist/utils/helpers.d.ts.map +1 -0
- package/dist/utils/helpers.js +150 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/package-manager-detector.d.ts +14 -0
- package/dist/utils/package-manager-detector.d.ts.map +1 -0
- package/dist/utils/package-manager-detector.js +162 -0
- package/dist/utils/package-manager-detector.js.map +1 -0
- package/dist/utils/progress-indicator.d.ts +52 -0
- package/dist/utils/progress-indicator.d.ts.map +1 -0
- package/dist/utils/progress-indicator.js +102 -0
- package/dist/utils/progress-indicator.js.map +1 -0
- package/dist/utils/prompt.d.ts +29 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +116 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/shell-completion.d.ts +52 -0
- package/dist/utils/shell-completion.d.ts.map +1 -0
- package/dist/utils/shell-completion.js +231 -0
- package/dist/utils/shell-completion.js.map +1 -0
- package/dist/utils/shell-executor.d.ts +15 -0
- package/dist/utils/shell-executor.d.ts.map +1 -0
- package/dist/utils/shell-executor.js +57 -0
- package/dist/utils/shell-executor.js.map +1 -0
- package/dist/utils/update-checker.d.ts +48 -0
- package/dist/utils/update-checker.d.ts.map +1 -0
- package/dist/utils/update-checker.js +241 -0
- package/dist/utils/update-checker.js.map +1 -0
- package/lib/ccs +21 -1907
- package/lib/ccs.ps1 +26 -1800
- package/lib/error-codes.ps1 +2 -1
- package/lib/prompt.ps1 +2 -2
- package/package.json +31 -11
- package/scripts/add-shebang.js +39 -0
- package/scripts/bump-version.sh +25 -37
- package/scripts/dev-install.sh +32 -11
- package/scripts/postinstall.js +29 -29
- package/bin/auth/auth-commands.js +0 -499
- package/bin/auth/profile-detector.js +0 -204
- package/bin/auth/profile-registry.js +0 -225
- package/bin/ccs.js +0 -1034
- package/bin/delegation/README.md +0 -191
- package/bin/delegation/delegation-handler.js +0 -212
- package/bin/delegation/headless-executor.js +0 -618
- package/bin/delegation/result-formatter.js +0 -485
- package/bin/delegation/session-manager.js +0 -157
- package/bin/delegation/settings-parser.js +0 -109
- package/bin/glmt/delta-accumulator.js +0 -276
- package/bin/glmt/glmt-proxy.js +0 -495
- package/bin/glmt/glmt-transformer.js +0 -999
- package/bin/glmt/locale-enforcer.js +0 -72
- package/bin/glmt/reasoning-enforcer.js +0 -173
- package/bin/glmt/sse-parser.js +0 -96
- package/bin/management/doctor.js +0 -721
- package/bin/management/instance-manager.js +0 -202
- package/bin/management/recovery-manager.js +0 -135
- package/bin/management/shared-manager.js +0 -402
- package/bin/utils/claude-detector.js +0 -73
- package/bin/utils/claude-dir-installer.js +0 -283
- package/bin/utils/claude-symlink-manager.js +0 -289
- package/bin/utils/config-manager.js +0 -103
- package/bin/utils/delegation-validator.js +0 -154
- package/bin/utils/error-codes.js +0 -59
- package/bin/utils/error-manager.js +0 -165
- package/bin/utils/helpers.js +0 -136
- package/bin/utils/progress-indicator.js +0 -111
- package/bin/utils/prompt.js +0 -134
- package/bin/utils/shell-completion.js +0 -256
- package/bin/utils/update-checker.js +0 -243
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Manages delegation session persistence for multi-turn conversations
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.SessionManager = void 0;
|
|
31
|
+
const fs = __importStar(require("fs"));
|
|
32
|
+
const path = __importStar(require("path"));
|
|
33
|
+
const os = __importStar(require("os"));
|
|
34
|
+
/**
|
|
35
|
+
* Session Manager Class
|
|
36
|
+
*/
|
|
37
|
+
class SessionManager {
|
|
38
|
+
constructor() {
|
|
39
|
+
this.sessionsPath = path.join(os.homedir(), '.ccs', 'delegation-sessions.json');
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Store new session metadata
|
|
43
|
+
*/
|
|
44
|
+
storeSession(profile, sessionData) {
|
|
45
|
+
const sessions = this.loadSessions();
|
|
46
|
+
const key = `${profile}:latest`;
|
|
47
|
+
sessions[key] = {
|
|
48
|
+
sessionId: sessionData.sessionId,
|
|
49
|
+
profile,
|
|
50
|
+
startTime: Date.now(),
|
|
51
|
+
lastTurnTime: Date.now(),
|
|
52
|
+
totalCost: sessionData.totalCost || 0,
|
|
53
|
+
turns: 1,
|
|
54
|
+
cwd: sessionData.cwd || process.cwd(),
|
|
55
|
+
};
|
|
56
|
+
this.saveSessions(sessions);
|
|
57
|
+
if (process.env.CCS_DEBUG) {
|
|
58
|
+
console.error(`[i] Stored session: ${sessionData.sessionId} for ${profile}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Update session after additional turn
|
|
63
|
+
*/
|
|
64
|
+
updateSession(profile, sessionId, turnData) {
|
|
65
|
+
const sessions = this.loadSessions();
|
|
66
|
+
const key = `${profile}:latest`;
|
|
67
|
+
if (sessions[key]?.sessionId === sessionId) {
|
|
68
|
+
sessions[key].lastTurnTime = Date.now();
|
|
69
|
+
sessions[key].totalCost += turnData.totalCost || 0;
|
|
70
|
+
sessions[key].turns += 1;
|
|
71
|
+
this.saveSessions(sessions);
|
|
72
|
+
if (process.env.CCS_DEBUG) {
|
|
73
|
+
const cost = sessions[key].totalCost !== undefined && sessions[key].totalCost !== null
|
|
74
|
+
? sessions[key].totalCost.toFixed(4)
|
|
75
|
+
: '0.0000';
|
|
76
|
+
console.error(`[i] Updated session: ${sessionId}, total: $${cost}, turns: ${sessions[key].turns}`);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get last session for profile
|
|
82
|
+
*/
|
|
83
|
+
getLastSession(profile) {
|
|
84
|
+
const sessions = this.loadSessions();
|
|
85
|
+
const key = `${profile}:latest`;
|
|
86
|
+
return sessions[key] || null;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Clear all sessions for profile
|
|
90
|
+
*/
|
|
91
|
+
clearProfile(profile) {
|
|
92
|
+
const sessions = this.loadSessions();
|
|
93
|
+
const key = `${profile}:latest`;
|
|
94
|
+
delete sessions[key];
|
|
95
|
+
this.saveSessions(sessions);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Clean up expired sessions (>30 days)
|
|
99
|
+
*/
|
|
100
|
+
cleanupExpired() {
|
|
101
|
+
const sessions = this.loadSessions();
|
|
102
|
+
const now = Date.now();
|
|
103
|
+
const maxAge = 30 * 24 * 60 * 60 * 1000; // 30 days
|
|
104
|
+
let cleaned = 0;
|
|
105
|
+
Object.keys(sessions).forEach((key) => {
|
|
106
|
+
if (now - sessions[key].lastTurnTime > maxAge) {
|
|
107
|
+
delete sessions[key];
|
|
108
|
+
cleaned++;
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
if (cleaned > 0) {
|
|
112
|
+
this.saveSessions(sessions);
|
|
113
|
+
if (process.env.CCS_DEBUG) {
|
|
114
|
+
console.error(`[i] Cleaned ${cleaned} expired sessions`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Load sessions from disk
|
|
120
|
+
*/
|
|
121
|
+
loadSessions() {
|
|
122
|
+
try {
|
|
123
|
+
if (!fs.existsSync(this.sessionsPath)) {
|
|
124
|
+
return {};
|
|
125
|
+
}
|
|
126
|
+
const content = fs.readFileSync(this.sessionsPath, 'utf8');
|
|
127
|
+
return JSON.parse(content);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
if (process.env.CCS_DEBUG) {
|
|
131
|
+
console.warn(`[!] Failed to load sessions: ${error.message}`);
|
|
132
|
+
}
|
|
133
|
+
return {};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Save sessions to disk
|
|
138
|
+
*/
|
|
139
|
+
saveSessions(sessions) {
|
|
140
|
+
try {
|
|
141
|
+
const dir = path.dirname(this.sessionsPath);
|
|
142
|
+
if (!fs.existsSync(dir)) {
|
|
143
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
144
|
+
}
|
|
145
|
+
fs.writeFileSync(this.sessionsPath, JSON.stringify(sessions, null, 2), { mode: 0o600 });
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
console.error(`[!] Failed to save sessions: ${error.message}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
exports.SessionManager = SessionManager;
|
|
153
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/delegation/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Parses Claude Code settings for tool restrictions
|
|
4
|
+
*/
|
|
5
|
+
interface ToolRestrictions {
|
|
6
|
+
allowedTools: string[];
|
|
7
|
+
disallowedTools: string[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Settings Parser Class
|
|
11
|
+
*/
|
|
12
|
+
declare class SettingsParser {
|
|
13
|
+
/**
|
|
14
|
+
* Parse default permission mode from project settings
|
|
15
|
+
*/
|
|
16
|
+
static parseDefaultPermissionMode(projectDir: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Parse project settings for tool restrictions
|
|
19
|
+
*/
|
|
20
|
+
static parseToolRestrictions(projectDir: string): ToolRestrictions;
|
|
21
|
+
/**
|
|
22
|
+
* Load and merge settings files (local overrides shared)
|
|
23
|
+
*/
|
|
24
|
+
private static loadSettings;
|
|
25
|
+
/**
|
|
26
|
+
* Read JSON file safely (no throw)
|
|
27
|
+
*/
|
|
28
|
+
private static readJsonSafe;
|
|
29
|
+
}
|
|
30
|
+
export { SettingsParser };
|
|
31
|
+
//# sourceMappingURL=settings-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-parser.d.ts","sourceRoot":"","sources":["../../src/delegation/settings-parser.ts"],"names":[],"mappings":";AAEA;;GAEG;AAKH,UAAU,gBAAgB;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAUD;;GAEG;AACH,cAAM,cAAc;IAClB;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAc7D;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB;IAiBlE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAsB3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;CAe5B;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
/**
|
|
4
|
+
* Parses Claude Code settings for tool restrictions
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
23
|
+
if (mod && mod.__esModule) return mod;
|
|
24
|
+
var result = {};
|
|
25
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
26
|
+
__setModuleDefault(result, mod);
|
|
27
|
+
return result;
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.SettingsParser = void 0;
|
|
31
|
+
const fs = __importStar(require("fs"));
|
|
32
|
+
const path = __importStar(require("path"));
|
|
33
|
+
/**
|
|
34
|
+
* Settings Parser Class
|
|
35
|
+
*/
|
|
36
|
+
class SettingsParser {
|
|
37
|
+
/**
|
|
38
|
+
* Parse default permission mode from project settings
|
|
39
|
+
*/
|
|
40
|
+
static parseDefaultPermissionMode(projectDir) {
|
|
41
|
+
const settings = this.loadSettings(projectDir);
|
|
42
|
+
const permissions = settings.permissions || {};
|
|
43
|
+
// Priority: local > shared > fallback to 'acceptEdits'
|
|
44
|
+
const defaultMode = permissions.defaultMode || 'acceptEdits';
|
|
45
|
+
if (process.env.CCS_DEBUG) {
|
|
46
|
+
console.error(`[i] Permission mode from settings: ${defaultMode}`);
|
|
47
|
+
}
|
|
48
|
+
return defaultMode;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Parse project settings for tool restrictions
|
|
52
|
+
*/
|
|
53
|
+
static parseToolRestrictions(projectDir) {
|
|
54
|
+
const settings = this.loadSettings(projectDir);
|
|
55
|
+
const permissions = settings.permissions || {};
|
|
56
|
+
const allowed = permissions.allow || [];
|
|
57
|
+
const denied = permissions.deny || [];
|
|
58
|
+
if (process.env.CCS_DEBUG) {
|
|
59
|
+
console.error(`[i] Tool restrictions: ${allowed.length} allowed, ${denied.length} denied`);
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
allowedTools: allowed,
|
|
63
|
+
disallowedTools: denied,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load and merge settings files (local overrides shared)
|
|
68
|
+
*/
|
|
69
|
+
static loadSettings(projectDir) {
|
|
70
|
+
const claudeDir = path.join(projectDir, '.claude');
|
|
71
|
+
const sharedPath = path.join(claudeDir, 'settings.json');
|
|
72
|
+
const localPath = path.join(claudeDir, 'settings.local.json');
|
|
73
|
+
// Load shared settings
|
|
74
|
+
const shared = this.readJsonSafe(sharedPath) || {};
|
|
75
|
+
// Load local settings (overrides shared)
|
|
76
|
+
const local = this.readJsonSafe(localPath) || {};
|
|
77
|
+
// Merge permissions (local overrides shared)
|
|
78
|
+
return {
|
|
79
|
+
permissions: {
|
|
80
|
+
allow: [...(shared.permissions?.allow || []), ...(local.permissions?.allow || [])],
|
|
81
|
+
deny: [...(shared.permissions?.deny || []), ...(local.permissions?.deny || [])],
|
|
82
|
+
// Local defaultMode takes priority over shared
|
|
83
|
+
defaultMode: local.permissions?.defaultMode || shared.permissions?.defaultMode || undefined,
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read JSON file safely (no throw)
|
|
89
|
+
*/
|
|
90
|
+
static readJsonSafe(filePath) {
|
|
91
|
+
try {
|
|
92
|
+
if (!fs.existsSync(filePath)) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
const content = fs.readFileSync(filePath, 'utf8');
|
|
96
|
+
return JSON.parse(content);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
if (process.env.CCS_DEBUG) {
|
|
100
|
+
console.warn(`[!] Failed to read settings: ${filePath}: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
exports.SettingsParser = SettingsParser;
|
|
107
|
+
//# sourceMappingURL=settings-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings-parser.js","sourceRoot":"","sources":["../../src/delegation/settings-parser.ts"],"names":[],"mappings":";;AAEA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,uCAAyB;AACzB,2CAA6B;AAe7B;;GAEG;AACH,MAAM,cAAc;IAClB;;OAEG;IACH,MAAM,CAAC,0BAA0B,CAAC,UAAkB;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;QAE/C,uDAAuD;QACvD,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,IAAI,aAAa,CAAC;QAE7D,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,sCAAsC,WAAW,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,UAAkB;QAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/C,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC;QAE/C,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC;QAEtC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YAC1B,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QAC7F,CAAC;QAED,OAAO;YACL,YAAY,EAAE,OAAO;YACrB,eAAe,EAAE,MAAM;SACxB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,UAAkB;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;QACzD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;QAE9D,uBAAuB;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;QAEnD,yCAAyC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEjD,6CAA6C;QAC7C,OAAO;YACL,WAAW,EAAE;gBACX,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;gBAClF,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;gBAC/E,+CAA+C;gBAC/C,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE,WAAW,IAAI,SAAS;aAC5F;SACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,YAAY,CAAC,QAAgB;QAC1C,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC;QACzC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;gBAC1B,OAAO,CAAC,IAAI,CAAC,gCAAgC,QAAQ,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAEQ,wCAAc"}
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* DeltaAccumulator - Maintain state across streaming deltas
|
|
4
|
+
*
|
|
5
|
+
* Tracks:
|
|
6
|
+
* - Message metadata (id, model, role)
|
|
7
|
+
* - Content blocks (thinking, text)
|
|
8
|
+
* - Current block index
|
|
9
|
+
* - Accumulated content
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* const acc = new DeltaAccumulator(thinkingConfig);
|
|
13
|
+
* const events = transformer.transformDelta(openaiEvent, acc);
|
|
14
|
+
*/
|
|
15
|
+
interface ThinkingConfig {
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
interface DeltaAccumulatorOptions {
|
|
19
|
+
maxBlocks?: number;
|
|
20
|
+
maxBufferSize?: number;
|
|
21
|
+
loopDetectionThreshold?: number;
|
|
22
|
+
}
|
|
23
|
+
interface ContentBlock {
|
|
24
|
+
index: number;
|
|
25
|
+
type: string;
|
|
26
|
+
content: string;
|
|
27
|
+
started: boolean;
|
|
28
|
+
stopped: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface ToolCall {
|
|
31
|
+
index: number;
|
|
32
|
+
id: string;
|
|
33
|
+
type: string;
|
|
34
|
+
function: {
|
|
35
|
+
name: string;
|
|
36
|
+
arguments: string;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
interface ToolCallDelta {
|
|
40
|
+
index: number;
|
|
41
|
+
id?: string;
|
|
42
|
+
type?: string;
|
|
43
|
+
function?: {
|
|
44
|
+
name?: string;
|
|
45
|
+
arguments?: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
interface UsageStats {
|
|
49
|
+
prompt_tokens?: number;
|
|
50
|
+
input_tokens?: number;
|
|
51
|
+
completion_tokens?: number;
|
|
52
|
+
output_tokens?: number;
|
|
53
|
+
}
|
|
54
|
+
interface AccumulatorSummary {
|
|
55
|
+
messageId: string;
|
|
56
|
+
model: string | null;
|
|
57
|
+
role: string;
|
|
58
|
+
blockCount: number;
|
|
59
|
+
currentIndex: number;
|
|
60
|
+
toolCallCount: number;
|
|
61
|
+
messageStarted: boolean;
|
|
62
|
+
finalized: boolean;
|
|
63
|
+
loopDetected: boolean;
|
|
64
|
+
usage: {
|
|
65
|
+
input_tokens: number;
|
|
66
|
+
output_tokens: number;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export declare class DeltaAccumulator {
|
|
70
|
+
private messageId;
|
|
71
|
+
private model;
|
|
72
|
+
private role;
|
|
73
|
+
private contentBlocks;
|
|
74
|
+
private currentBlockIndex;
|
|
75
|
+
private toolCalls;
|
|
76
|
+
private toolCallsIndex;
|
|
77
|
+
private thinkingBuffer;
|
|
78
|
+
private textBuffer;
|
|
79
|
+
private maxBlocks;
|
|
80
|
+
private maxBufferSize;
|
|
81
|
+
private loopDetectionThreshold;
|
|
82
|
+
private loopDetected;
|
|
83
|
+
private messageStarted;
|
|
84
|
+
private finalized;
|
|
85
|
+
private inputTokens;
|
|
86
|
+
private outputTokens;
|
|
87
|
+
constructor(_thinkingConfig?: ThinkingConfig, options?: DeltaAccumulatorOptions);
|
|
88
|
+
/**
|
|
89
|
+
* Get current content block
|
|
90
|
+
* @returns Current block or null
|
|
91
|
+
*/
|
|
92
|
+
getCurrentBlock(): ContentBlock | null;
|
|
93
|
+
/**
|
|
94
|
+
* Start new content block
|
|
95
|
+
* @param type - Block type ('thinking', 'text', or 'tool_use')
|
|
96
|
+
* @returns New block
|
|
97
|
+
*/
|
|
98
|
+
startBlock(type: string): ContentBlock;
|
|
99
|
+
/**
|
|
100
|
+
* Add delta to current block
|
|
101
|
+
* @param delta - Content delta
|
|
102
|
+
*/
|
|
103
|
+
addDelta(delta: string): void;
|
|
104
|
+
/**
|
|
105
|
+
* Mark current block as stopped
|
|
106
|
+
*/
|
|
107
|
+
stopCurrentBlock(): void;
|
|
108
|
+
/**
|
|
109
|
+
* Update usage statistics
|
|
110
|
+
* @param usage - Usage object from OpenAI
|
|
111
|
+
*/
|
|
112
|
+
updateUsage(usage: UsageStats): void;
|
|
113
|
+
/**
|
|
114
|
+
* Add or update tool call delta
|
|
115
|
+
* @param toolCallDelta - Tool call delta from OpenAI
|
|
116
|
+
*/
|
|
117
|
+
addToolCallDelta(toolCallDelta: ToolCallDelta): void;
|
|
118
|
+
/**
|
|
119
|
+
* Get all tool calls
|
|
120
|
+
* @returns Tool calls array
|
|
121
|
+
*/
|
|
122
|
+
getToolCalls(): ToolCall[];
|
|
123
|
+
/**
|
|
124
|
+
* Check for planning loop pattern
|
|
125
|
+
* Loop = N consecutive thinking blocks with no tool calls
|
|
126
|
+
* @returns True if loop detected
|
|
127
|
+
*/
|
|
128
|
+
checkForLoop(): boolean;
|
|
129
|
+
/**
|
|
130
|
+
* Reset loop detection state (for testing)
|
|
131
|
+
*/
|
|
132
|
+
resetLoopDetection(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Get summary of accumulated state
|
|
135
|
+
* @returns Summary
|
|
136
|
+
*/
|
|
137
|
+
getSummary(): AccumulatorSummary;
|
|
138
|
+
/**
|
|
139
|
+
* Check if message has been finalized
|
|
140
|
+
*/
|
|
141
|
+
isFinalized(): boolean;
|
|
142
|
+
/**
|
|
143
|
+
* Check if message has started
|
|
144
|
+
*/
|
|
145
|
+
isMessageStarted(): boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Get message ID
|
|
148
|
+
*/
|
|
149
|
+
getMessageId(): string;
|
|
150
|
+
/**
|
|
151
|
+
* Get model name
|
|
152
|
+
*/
|
|
153
|
+
getModel(): string | null;
|
|
154
|
+
/**
|
|
155
|
+
* Get role
|
|
156
|
+
*/
|
|
157
|
+
getRole(): string;
|
|
158
|
+
/**
|
|
159
|
+
* Get input tokens
|
|
160
|
+
*/
|
|
161
|
+
getInputTokens(): number;
|
|
162
|
+
/**
|
|
163
|
+
* Get output tokens
|
|
164
|
+
*/
|
|
165
|
+
getOutputTokens(): number;
|
|
166
|
+
/**
|
|
167
|
+
* Set model name
|
|
168
|
+
*/
|
|
169
|
+
setModel(model: string): void;
|
|
170
|
+
/**
|
|
171
|
+
* Set message started flag
|
|
172
|
+
*/
|
|
173
|
+
setMessageStarted(started: boolean): void;
|
|
174
|
+
/**
|
|
175
|
+
* Set role
|
|
176
|
+
*/
|
|
177
|
+
setRole(role: string): void;
|
|
178
|
+
/**
|
|
179
|
+
* Set finalized flag
|
|
180
|
+
*/
|
|
181
|
+
setFinalized(finalized: boolean): void;
|
|
182
|
+
private finishReason;
|
|
183
|
+
private usageReceived;
|
|
184
|
+
/**
|
|
185
|
+
* Set finish reason
|
|
186
|
+
*/
|
|
187
|
+
setFinishReason(reason: string): void;
|
|
188
|
+
/**
|
|
189
|
+
* Get finish reason
|
|
190
|
+
*/
|
|
191
|
+
getFinishReason(): string | null;
|
|
192
|
+
/**
|
|
193
|
+
* Check if usage stats have been received
|
|
194
|
+
*/
|
|
195
|
+
hasUsageReceived(): boolean;
|
|
196
|
+
/**
|
|
197
|
+
* Mark usage as received
|
|
198
|
+
*/
|
|
199
|
+
setUsageReceived(received: boolean): void;
|
|
200
|
+
/**
|
|
201
|
+
* Check if there are any tool calls, or check if a specific index exists
|
|
202
|
+
*/
|
|
203
|
+
hasToolCall(index?: number): boolean;
|
|
204
|
+
/**
|
|
205
|
+
* Get tool call by index
|
|
206
|
+
*/
|
|
207
|
+
getToolCall(index: number): ToolCall | undefined;
|
|
208
|
+
}
|
|
209
|
+
export {};
|
|
210
|
+
//# sourceMappingURL=delta-accumulator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delta-accumulator.d.ts","sourceRoot":"","sources":["../../src/glmt/delta-accumulator.ts"],"names":[],"mappings":"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"}
|