@kaitranntt/ccs 7.45.0-dev.1 → 7.45.0-dev.3
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/dist/auth/profile-detector.d.ts +4 -1
- package/dist/auth/profile-detector.d.ts.map +1 -1
- package/dist/auth/profile-detector.js +3 -0
- package/dist/auth/profile-detector.js.map +1 -1
- package/dist/ccs.js +220 -49
- package/dist/ccs.js.map +1 -1
- package/dist/cliproxy/session-tracker.d.ts +6 -1
- package/dist/cliproxy/session-tracker.d.ts.map +1 -1
- package/dist/cliproxy/session-tracker.js +97 -36
- package/dist/cliproxy/session-tracker.js.map +1 -1
- package/dist/commands/help-command.d.ts.map +1 -1
- package/dist/commands/help-command.js +11 -0
- package/dist/commands/help-command.js.map +1 -1
- package/dist/config/unified-config-types.d.ts +7 -0
- package/dist/config/unified-config-types.d.ts.map +1 -1
- package/dist/config/unified-config-types.js.map +1 -1
- package/dist/targets/claude-adapter.d.ts +29 -0
- package/dist/targets/claude-adapter.d.ts.map +1 -0
- package/dist/targets/claude-adapter.js +121 -0
- package/dist/targets/claude-adapter.js.map +1 -0
- package/dist/targets/droid-adapter.d.ts +34 -0
- package/dist/targets/droid-adapter.d.ts.map +1 -0
- package/dist/targets/droid-adapter.js +164 -0
- package/dist/targets/droid-adapter.js.map +1 -0
- package/dist/targets/droid-config-manager.d.ts +33 -0
- package/dist/targets/droid-config-manager.d.ts.map +1 -0
- package/dist/targets/droid-config-manager.js +382 -0
- package/dist/targets/droid-config-manager.js.map +1 -0
- package/dist/targets/droid-detector.d.ts +25 -0
- package/dist/targets/droid-detector.d.ts.map +1 -0
- package/dist/targets/droid-detector.js +140 -0
- package/dist/targets/droid-detector.js.map +1 -0
- package/dist/targets/index.d.ts +14 -0
- package/dist/targets/index.d.ts.map +1 -0
- package/dist/targets/index.js +31 -0
- package/dist/targets/index.js.map +1 -0
- package/dist/targets/target-adapter.d.ts +83 -0
- package/dist/targets/target-adapter.d.ts.map +1 -0
- package/dist/targets/target-adapter.js +9 -0
- package/dist/targets/target-adapter.js.map +1 -0
- package/dist/targets/target-registry.d.ts +30 -0
- package/dist/targets/target-registry.d.ts.map +1 -0
- package/dist/targets/target-registry.js +53 -0
- package/dist/targets/target-registry.js.map +1 -0
- package/dist/targets/target-resolver.d.ts +26 -0
- package/dist/targets/target-resolver.d.ts.map +1 -0
- package/dist/targets/target-resolver.js +129 -0
- package/dist/targets/target-resolver.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/profile.d.ts +5 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +3 -0
- package/dist/types/profile.js.map +1 -0
- package/dist/ui/assets/{accounts-BHMeosy5.js → accounts-CZRsQ7sf.js} +1 -1
- package/dist/ui/assets/{alert-dialog-kdzRXnGY.js → alert-dialog-0P-Cx40p.js} +1 -1
- package/dist/ui/assets/{api-4enyrd8X.js → api-GdTYk_4c.js} +1 -1
- package/dist/ui/assets/{auth-section-w05GvJds.js → auth-section-6n7IpDyK.js} +1 -1
- package/dist/ui/assets/{backups-section-C1LXMLNc.js → backups-section-D6iXxy73.js} +1 -1
- package/dist/ui/assets/{cliproxy-DAfdY6CN.js → cliproxy-DieJ_NpI.js} +1 -1
- package/dist/ui/assets/{cliproxy-control-panel-R13dvwRB.js → cliproxy-control-panel-CmUsqsu4.js} +1 -1
- package/dist/ui/assets/{confirm-dialog-CCgn1mEJ.js → confirm-dialog-C-dTFKFS.js} +1 -1
- package/dist/ui/assets/{copilot-DIy8RqPs.js → copilot-C3yx1Yh0.js} +1 -1
- package/dist/ui/assets/{cursor-DHCd_Oaz.js → cursor-Dga5pVnr.js} +1 -1
- package/dist/ui/assets/{globalenv-section-cJrJW6g7.js → globalenv-section-BidNmC8a.js} +1 -1
- package/dist/ui/assets/{health-BV7tj4vW.js → health-BcOkZguS.js} +1 -1
- package/dist/ui/assets/{index-JybT8b0K.js → index-CKj40Sac.js} +1 -1
- package/dist/ui/assets/{index-D5m_H1db.js → index-CwKLhUDL.js} +1 -1
- package/dist/ui/assets/{index-DyBUxmQ5.js → index-DvUwAu3g.js} +1 -1
- package/dist/ui/assets/{index-T_lRIGPN.css → index-oaoLcjM3.css} +1 -1
- package/dist/ui/assets/{index-DuJCqdjs.js → index-pKax8tjI.js} +2 -2
- package/dist/ui/assets/{index-DzzXp8Z3.js → index-yd-b32qe.js} +1 -1
- package/dist/ui/assets/{proxy-status-widget-BIN7UlKC.js → proxy-status-widget-DTz6nMRE.js} +1 -1
- package/dist/ui/assets/{separator-B0ShCVSs.js → separator-sCZEoE44.js} +1 -1
- package/dist/ui/assets/{shared-D6GagpY8.js → shared-BPGoB5aD.js} +1 -1
- package/dist/ui/assets/{switch-C_3xIueO.js → switch-CUQi21op.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/utils/shell-executor.d.ts.map +1 -1
- package/dist/utils/shell-executor.js +32 -10
- package/dist/utils/shell-executor.js.map +1 -1
- package/dist/utils/signal-forwarder.d.ts +23 -0
- package/dist/utils/signal-forwarder.d.ts.map +1 -0
- package/dist/utils/signal-forwarder.js +70 -0
- package/dist/utils/signal-forwarder.js.map +1 -0
- package/dist/web-server/jsonl-parser.d.ts +1 -0
- package/dist/web-server/jsonl-parser.d.ts.map +1 -1
- package/dist/web-server/jsonl-parser.js +3 -0
- package/dist/web-server/jsonl-parser.js.map +1 -1
- package/dist/web-server/usage/data-aggregator.d.ts.map +1 -1
- package/dist/web-server/usage/data-aggregator.js +7 -1
- package/dist/web-server/usage/data-aggregator.js.map +1 -1
- package/dist/web-server/usage/handlers.d.ts.map +1 -1
- package/dist/web-server/usage/handlers.js +1 -0
- package/dist/web-server/usage/handlers.js.map +1 -1
- package/dist/web-server/usage/types.d.ts +2 -0
- package/dist/web-server/usage/types.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droid-detector.d.ts","sourceRoot":"","sources":["../../src/targets/droid-detector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,MAAM,GAAG,IAAI,CA+D9C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,GAAG,IAAI,CAQ5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAqBzD"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Droid CLI Detector
|
|
4
|
+
*
|
|
5
|
+
* Detects Factory Droid CLI binary in PATH.
|
|
6
|
+
* Mirrors claude-detector.ts pattern.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
25
|
+
if (mod && mod.__esModule) return mod;
|
|
26
|
+
var result = {};
|
|
27
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
28
|
+
__setModuleDefault(result, mod);
|
|
29
|
+
return result;
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.checkDroidVersion = exports.getDroidBinaryInfo = exports.detectDroidCli = void 0;
|
|
33
|
+
const fs = __importStar(require("fs"));
|
|
34
|
+
const child_process_1 = require("child_process");
|
|
35
|
+
const helpers_1 = require("../utils/helpers");
|
|
36
|
+
/**
|
|
37
|
+
* Detect Droid CLI executable.
|
|
38
|
+
*
|
|
39
|
+
* Priority:
|
|
40
|
+
* 1. CCS_DROID_PATH env var (user override)
|
|
41
|
+
* 2. PATH lookup via which/where.exe
|
|
42
|
+
*/
|
|
43
|
+
function detectDroidCli() {
|
|
44
|
+
// Priority 1: CCS_DROID_PATH environment variable
|
|
45
|
+
if (process.env.CCS_DROID_PATH) {
|
|
46
|
+
const customPath = (0, helpers_1.expandPath)(process.env.CCS_DROID_PATH);
|
|
47
|
+
try {
|
|
48
|
+
if (fs.statSync(customPath).isFile()) {
|
|
49
|
+
return customPath;
|
|
50
|
+
}
|
|
51
|
+
console.warn('[!] CCS_DROID_PATH points to a directory, not a file:', customPath);
|
|
52
|
+
console.warn(' Refusing PATH fallback while CCS_DROID_PATH is explicitly set.');
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
const error = err;
|
|
57
|
+
if (error.code === 'ENOENT') {
|
|
58
|
+
console.warn('[!] Warning: CCS_DROID_PATH is set but file not found:', customPath);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.warn(`[!] Warning: CCS_DROID_PATH is not accessible (${error.code || 'unknown error'}):`, customPath);
|
|
62
|
+
}
|
|
63
|
+
console.warn(' Refusing PATH fallback while CCS_DROID_PATH is explicitly set.');
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Priority 2: Resolve 'droid' from PATH
|
|
68
|
+
const isWindows = process.platform === 'win32';
|
|
69
|
+
try {
|
|
70
|
+
const cmd = isWindows ? 'where.exe droid' : 'which droid';
|
|
71
|
+
const result = (0, child_process_1.execSync)(cmd, {
|
|
72
|
+
encoding: 'utf8',
|
|
73
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
74
|
+
timeout: 5000,
|
|
75
|
+
}).trim();
|
|
76
|
+
const matches = result
|
|
77
|
+
.split('\n')
|
|
78
|
+
.map((p) => p.trim())
|
|
79
|
+
.filter((p) => p);
|
|
80
|
+
const candidates = isWindows
|
|
81
|
+
? [
|
|
82
|
+
...matches.filter((p) => /\.(exe|cmd|bat|ps1)$/i.test(p)),
|
|
83
|
+
...matches.filter((p) => !/\.(exe|cmd|bat|ps1)$/i.test(p)),
|
|
84
|
+
]
|
|
85
|
+
: matches;
|
|
86
|
+
for (const candidate of candidates) {
|
|
87
|
+
try {
|
|
88
|
+
if (fs.statSync(candidate).isFile()) {
|
|
89
|
+
return candidate;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
// Ignore unreadable or disappearing path candidates and try next one
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// droid not in PATH
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
exports.detectDroidCli = detectDroidCli;
|
|
103
|
+
/**
|
|
104
|
+
* Get Droid CLI binary info for target adapter.
|
|
105
|
+
*/
|
|
106
|
+
function getDroidBinaryInfo() {
|
|
107
|
+
const droidPath = detectDroidCli();
|
|
108
|
+
if (!droidPath)
|
|
109
|
+
return null;
|
|
110
|
+
const isWindows = process.platform === 'win32';
|
|
111
|
+
const needsShell = isWindows && /\.(cmd|bat|ps1)$/i.test(droidPath);
|
|
112
|
+
return { path: droidPath, needsShell };
|
|
113
|
+
}
|
|
114
|
+
exports.getDroidBinaryInfo = getDroidBinaryInfo;
|
|
115
|
+
/**
|
|
116
|
+
* Check Droid CLI version for compatibility warnings.
|
|
117
|
+
* Non-blocking — logs warning and continues.
|
|
118
|
+
*/
|
|
119
|
+
function checkDroidVersion(droidPath) {
|
|
120
|
+
try {
|
|
121
|
+
const version = (0, child_process_1.execFileSync)(droidPath, ['--version'], {
|
|
122
|
+
encoding: 'utf8',
|
|
123
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
124
|
+
timeout: 5000,
|
|
125
|
+
}).trim();
|
|
126
|
+
// Parse semver major version
|
|
127
|
+
const match = version.match(/(\d+)\.\d+\.\d+/);
|
|
128
|
+
if (match) {
|
|
129
|
+
const major = parseInt(match[1]);
|
|
130
|
+
if (major >= 2) {
|
|
131
|
+
console.warn(`[!] Droid version ${version} not verified with CCS. Config format may differ.`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Version check is best-effort — don't block execution
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
exports.checkDroidVersion = checkDroidVersion;
|
|
140
|
+
//# sourceMappingURL=droid-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"droid-detector.js","sourceRoot":"","sources":["../../src/targets/droid-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Adapter Module
|
|
3
|
+
*
|
|
4
|
+
* Re-exports for convenient access to target adapter types and registry.
|
|
5
|
+
*/
|
|
6
|
+
export type { TargetAdapter, TargetBinaryInfo, TargetCredentials, TargetType, } from './target-adapter';
|
|
7
|
+
export { registerTarget, getTarget, getDefaultTarget, hasTarget, getRegisteredTargets, } from './target-registry';
|
|
8
|
+
export { ClaudeAdapter } from './claude-adapter';
|
|
9
|
+
export { DroidAdapter } from './droid-adapter';
|
|
10
|
+
export { getDroidBinaryInfo, detectDroidCli, checkDroidVersion } from './droid-detector';
|
|
11
|
+
export { upsertCcsModel, removeCcsModel, listCcsModels, pruneOrphanedModels, } from './droid-config-manager';
|
|
12
|
+
export type { DroidCustomModel } from './droid-config-manager';
|
|
13
|
+
export { resolveTargetType, stripTargetFlag } from './target-resolver';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/targets/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EACL,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Target Adapter Module
|
|
4
|
+
*
|
|
5
|
+
* Re-exports for convenient access to target adapter types and registry.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.stripTargetFlag = exports.resolveTargetType = exports.pruneOrphanedModels = exports.listCcsModels = exports.removeCcsModel = exports.upsertCcsModel = exports.checkDroidVersion = exports.detectDroidCli = exports.getDroidBinaryInfo = exports.DroidAdapter = exports.ClaudeAdapter = exports.getRegisteredTargets = exports.hasTarget = exports.getDefaultTarget = exports.getTarget = exports.registerTarget = void 0;
|
|
9
|
+
var target_registry_1 = require("./target-registry");
|
|
10
|
+
Object.defineProperty(exports, "registerTarget", { enumerable: true, get: function () { return target_registry_1.registerTarget; } });
|
|
11
|
+
Object.defineProperty(exports, "getTarget", { enumerable: true, get: function () { return target_registry_1.getTarget; } });
|
|
12
|
+
Object.defineProperty(exports, "getDefaultTarget", { enumerable: true, get: function () { return target_registry_1.getDefaultTarget; } });
|
|
13
|
+
Object.defineProperty(exports, "hasTarget", { enumerable: true, get: function () { return target_registry_1.hasTarget; } });
|
|
14
|
+
Object.defineProperty(exports, "getRegisteredTargets", { enumerable: true, get: function () { return target_registry_1.getRegisteredTargets; } });
|
|
15
|
+
var claude_adapter_1 = require("./claude-adapter");
|
|
16
|
+
Object.defineProperty(exports, "ClaudeAdapter", { enumerable: true, get: function () { return claude_adapter_1.ClaudeAdapter; } });
|
|
17
|
+
var droid_adapter_1 = require("./droid-adapter");
|
|
18
|
+
Object.defineProperty(exports, "DroidAdapter", { enumerable: true, get: function () { return droid_adapter_1.DroidAdapter; } });
|
|
19
|
+
var droid_detector_1 = require("./droid-detector");
|
|
20
|
+
Object.defineProperty(exports, "getDroidBinaryInfo", { enumerable: true, get: function () { return droid_detector_1.getDroidBinaryInfo; } });
|
|
21
|
+
Object.defineProperty(exports, "detectDroidCli", { enumerable: true, get: function () { return droid_detector_1.detectDroidCli; } });
|
|
22
|
+
Object.defineProperty(exports, "checkDroidVersion", { enumerable: true, get: function () { return droid_detector_1.checkDroidVersion; } });
|
|
23
|
+
var droid_config_manager_1 = require("./droid-config-manager");
|
|
24
|
+
Object.defineProperty(exports, "upsertCcsModel", { enumerable: true, get: function () { return droid_config_manager_1.upsertCcsModel; } });
|
|
25
|
+
Object.defineProperty(exports, "removeCcsModel", { enumerable: true, get: function () { return droid_config_manager_1.removeCcsModel; } });
|
|
26
|
+
Object.defineProperty(exports, "listCcsModels", { enumerable: true, get: function () { return droid_config_manager_1.listCcsModels; } });
|
|
27
|
+
Object.defineProperty(exports, "pruneOrphanedModels", { enumerable: true, get: function () { return droid_config_manager_1.pruneOrphanedModels; } });
|
|
28
|
+
var target_resolver_1 = require("./target-resolver");
|
|
29
|
+
Object.defineProperty(exports, "resolveTargetType", { enumerable: true, get: function () { return target_resolver_1.resolveTargetType; } });
|
|
30
|
+
Object.defineProperty(exports, "stripTargetFlag", { enumerable: true, get: function () { return target_resolver_1.stripTargetFlag; } });
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/targets/index.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAQH,qDAM2B;AALzB,iHAAA,cAAc,OAAA;AACd,4GAAA,SAAS,OAAA;AACT,mHAAA,gBAAgB,OAAA;AAChB,4GAAA,SAAS,OAAA;AACT,uHAAA,oBAAoB,OAAA;AAEtB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,iDAA+C;AAAtC,6GAAA,YAAY,OAAA;AACrB,mDAAyF;AAAhF,oHAAA,kBAAkB,OAAA;AAAE,gHAAA,cAAc,OAAA;AAAE,mHAAA,iBAAiB,OAAA;AAC9D,+DAKgC;AAJ9B,sHAAA,cAAc,OAAA;AACd,sHAAA,cAAc,OAAA;AACd,qHAAA,aAAa,OAAA;AACb,2HAAA,mBAAmB,OAAA;AAGrB,qDAAuE;AAA9D,oHAAA,iBAAiB,OAAA;AAAE,kHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Adapter Interface
|
|
3
|
+
*
|
|
4
|
+
* Abstraction layer for different CLI targets (Claude, Droid, etc.).
|
|
5
|
+
* Profile resolution is target-agnostic — only the "last mile" execution differs.
|
|
6
|
+
*/
|
|
7
|
+
/// <reference types="node" />
|
|
8
|
+
/**
|
|
9
|
+
* Supported CLI target types.
|
|
10
|
+
* 'claude' is the default; additional targets register via target-registry.
|
|
11
|
+
*/
|
|
12
|
+
import type { ProfileType } from '../types/profile';
|
|
13
|
+
export type TargetType = 'claude' | 'droid';
|
|
14
|
+
/**
|
|
15
|
+
* Credentials resolved by CCS profile system, ready for delivery to target CLI.
|
|
16
|
+
*/
|
|
17
|
+
export interface TargetCredentials {
|
|
18
|
+
/** CCS profile name (e.g., 'gemini', 'codex', 'glm') */
|
|
19
|
+
profile: string;
|
|
20
|
+
baseUrl: string;
|
|
21
|
+
apiKey: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
provider?: 'anthropic' | 'openai' | 'generic-chat-completion-api';
|
|
24
|
+
/** Additional env vars from profile resolution (websearch, hooks, etc.) */
|
|
25
|
+
envVars?: NodeJS.ProcessEnv;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Result of detecting a target CLI binary on the system.
|
|
29
|
+
*/
|
|
30
|
+
export interface TargetBinaryInfo {
|
|
31
|
+
path: string;
|
|
32
|
+
needsShell: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Target adapter contract.
|
|
36
|
+
*
|
|
37
|
+
* Each target CLI implements this interface to handle:
|
|
38
|
+
* - Binary detection (is the CLI installed?)
|
|
39
|
+
* - Credential delivery (env vars vs config file writes)
|
|
40
|
+
* - Argument building (target-specific flags)
|
|
41
|
+
* - Process spawning (cross-platform execution)
|
|
42
|
+
*/
|
|
43
|
+
export interface TargetAdapter {
|
|
44
|
+
readonly type: TargetType;
|
|
45
|
+
readonly displayName: string;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve the target CLI executable on the current machine.
|
|
48
|
+
* Return `null` when the binary is unavailable.
|
|
49
|
+
*/
|
|
50
|
+
detectBinary(): TargetBinaryInfo | null;
|
|
51
|
+
/**
|
|
52
|
+
* Prepare credential delivery for the target.
|
|
53
|
+
* Targets may write config files, mutate process state, or no-op.
|
|
54
|
+
*
|
|
55
|
+
* @throws Error when required credentials are missing or invalid.
|
|
56
|
+
*/
|
|
57
|
+
prepareCredentials(creds: TargetCredentials): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Build target-specific argument vector.
|
|
60
|
+
* `userArgs` are the arguments after CCS profile/flag parsing.
|
|
61
|
+
*/
|
|
62
|
+
buildArgs(profile: string, userArgs: string[]): string[];
|
|
63
|
+
/**
|
|
64
|
+
* Build environment variables for process spawn.
|
|
65
|
+
* `profileType` allows targets to vary env behavior by CCS profile mode.
|
|
66
|
+
*/
|
|
67
|
+
buildEnv(creds: TargetCredentials, profileType: ProfileType): NodeJS.ProcessEnv;
|
|
68
|
+
/**
|
|
69
|
+
* Spawn and hand over execution to the target CLI process.
|
|
70
|
+
* Implementations are responsible for signal forwarding and exit propagation.
|
|
71
|
+
*
|
|
72
|
+
* @throws Error for unrecoverable launch failures (if not exiting directly).
|
|
73
|
+
*/
|
|
74
|
+
exec(args: string[], env: NodeJS.ProcessEnv, options?: {
|
|
75
|
+
cwd?: string;
|
|
76
|
+
binaryInfo?: TargetBinaryInfo;
|
|
77
|
+
}): void;
|
|
78
|
+
/**
|
|
79
|
+
* Report whether this target can run a given CCS profile type.
|
|
80
|
+
*/
|
|
81
|
+
supportsProfileType(profileType: ProfileType): boolean;
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=target-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-adapter.d.ts","sourceRoot":"","sources":["../../src/targets/target-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;;AAEH;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5C;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,6BAA6B,CAAC;IAClE,2EAA2E;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;;OAGG;IACH,YAAY,IAAI,gBAAgB,GAAG,IAAI,CAAC;IAExC;;;;;OAKG;IACH,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;;OAGG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;IAEzD;;;OAGG;IACH,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IAEhF;;;;;OAKG;IACH,IAAI,CACF,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,gBAAgB,CAAA;KAAE,GACxD,IAAI,CAAC;IAER;;OAEG;IACH,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC;CACxD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Target Adapter Interface
|
|
4
|
+
*
|
|
5
|
+
* Abstraction layer for different CLI targets (Claude, Droid, etc.).
|
|
6
|
+
* Profile resolution is target-agnostic — only the "last mile" execution differs.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=target-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-adapter.js","sourceRoot":"","sources":["../../src/targets/target-adapter.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Registry
|
|
3
|
+
*
|
|
4
|
+
* Map-based registry for target adapters.
|
|
5
|
+
* Adapters self-register at startup; lookup is O(1).
|
|
6
|
+
*/
|
|
7
|
+
import { TargetAdapter, TargetType } from './target-adapter';
|
|
8
|
+
/**
|
|
9
|
+
* Register a target adapter. Overwrites if already registered.
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerTarget(adapter: TargetAdapter): void;
|
|
12
|
+
/**
|
|
13
|
+
* Get a registered target adapter by type.
|
|
14
|
+
* @throws Error if target type is not registered
|
|
15
|
+
*/
|
|
16
|
+
export declare function getTarget(type: TargetType): TargetAdapter;
|
|
17
|
+
/**
|
|
18
|
+
* Get the default target adapter ('claude').
|
|
19
|
+
* @throws Error if claude adapter is not registered
|
|
20
|
+
*/
|
|
21
|
+
export declare function getDefaultTarget(): TargetAdapter;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a target type is registered.
|
|
24
|
+
*/
|
|
25
|
+
export declare function hasTarget(type: TargetType): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Get all registered target types.
|
|
28
|
+
*/
|
|
29
|
+
export declare function getRegisteredTargets(): TargetType[];
|
|
30
|
+
//# sourceMappingURL=target-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-registry.d.ts","sourceRoot":"","sources":["../../src/targets/target-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI7D;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAE3D;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,CAOzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,UAAU,EAAE,CAEnD"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Target Registry
|
|
4
|
+
*
|
|
5
|
+
* Map-based registry for target adapters.
|
|
6
|
+
* Adapters self-register at startup; lookup is O(1).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.getRegisteredTargets = exports.hasTarget = exports.getDefaultTarget = exports.getTarget = exports.registerTarget = void 0;
|
|
10
|
+
const adapters = new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Register a target adapter. Overwrites if already registered.
|
|
13
|
+
*/
|
|
14
|
+
function registerTarget(adapter) {
|
|
15
|
+
adapters.set(adapter.type, adapter);
|
|
16
|
+
}
|
|
17
|
+
exports.registerTarget = registerTarget;
|
|
18
|
+
/**
|
|
19
|
+
* Get a registered target adapter by type.
|
|
20
|
+
* @throws Error if target type is not registered
|
|
21
|
+
*/
|
|
22
|
+
function getTarget(type) {
|
|
23
|
+
const adapter = adapters.get(type);
|
|
24
|
+
if (!adapter) {
|
|
25
|
+
const available = Array.from(adapters.keys()).join(', ');
|
|
26
|
+
throw new Error(`Unknown target "${type}". Available: ${available}`);
|
|
27
|
+
}
|
|
28
|
+
return adapter;
|
|
29
|
+
}
|
|
30
|
+
exports.getTarget = getTarget;
|
|
31
|
+
/**
|
|
32
|
+
* Get the default target adapter ('claude').
|
|
33
|
+
* @throws Error if claude adapter is not registered
|
|
34
|
+
*/
|
|
35
|
+
function getDefaultTarget() {
|
|
36
|
+
return getTarget('claude');
|
|
37
|
+
}
|
|
38
|
+
exports.getDefaultTarget = getDefaultTarget;
|
|
39
|
+
/**
|
|
40
|
+
* Check if a target type is registered.
|
|
41
|
+
*/
|
|
42
|
+
function hasTarget(type) {
|
|
43
|
+
return adapters.has(type);
|
|
44
|
+
}
|
|
45
|
+
exports.hasTarget = hasTarget;
|
|
46
|
+
/**
|
|
47
|
+
* Get all registered target types.
|
|
48
|
+
*/
|
|
49
|
+
function getRegisteredTargets() {
|
|
50
|
+
return Array.from(adapters.keys());
|
|
51
|
+
}
|
|
52
|
+
exports.getRegisteredTargets = getRegisteredTargets;
|
|
53
|
+
//# sourceMappingURL=target-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-registry.js","sourceRoot":"","sources":["../../src/targets/target-registry.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAIH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;AAEtD;;GAEG;AACH,SAAgB,cAAc,CAAC,OAAsB;IACnD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAFD,wCAEC;AAED;;;GAGG;AACH,SAAgB,SAAS,CAAC,IAAgB;IACxC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,iBAAiB,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAPD,8BAOC;AAED;;;GAGG;AACH,SAAgB,gBAAgB;IAC9B,OAAO,SAAS,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC;AAFD,4CAEC;AAED;;GAEG;AACH,SAAgB,SAAS,CAAC,IAAgB;IACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAFD,8BAEC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;AACrC,CAAC;AAFD,oDAEC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Target Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves which CLI target to use based on:
|
|
5
|
+
* 1. --target flag (highest priority)
|
|
6
|
+
* 2. Per-profile config
|
|
7
|
+
* 3. argv[0] detection (busybox/symlink pattern)
|
|
8
|
+
* 4. Default: 'claude'
|
|
9
|
+
*/
|
|
10
|
+
import { TargetType } from './target-adapter';
|
|
11
|
+
/**
|
|
12
|
+
* Resolve target type from multiple sources with priority ordering.
|
|
13
|
+
*
|
|
14
|
+
* @param args - CLI arguments (may contain --target flag)
|
|
15
|
+
* @param profileConfig - Per-profile config with optional target field
|
|
16
|
+
* @returns Resolved target type
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveTargetType(args: string[], profileConfig?: {
|
|
19
|
+
target?: TargetType;
|
|
20
|
+
}): TargetType;
|
|
21
|
+
/**
|
|
22
|
+
* Strip --target flag and its value from args array.
|
|
23
|
+
* Returns new array without the flag (so it's not passed to target CLI).
|
|
24
|
+
*/
|
|
25
|
+
export declare function stripTargetFlag(args: string[]): string[];
|
|
26
|
+
//# sourceMappingURL=target-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-resolver.d.ts","sourceRoot":"","sources":["../../src/targets/target-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAyE9C;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EAAE,EACd,aAAa,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,GACtC,UAAU,CAwBZ;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAExD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Target Resolver
|
|
4
|
+
*
|
|
5
|
+
* Resolves which CLI target to use based on:
|
|
6
|
+
* 1. --target flag (highest priority)
|
|
7
|
+
* 2. Per-profile config
|
|
8
|
+
* 3. argv[0] detection (busybox/symlink pattern)
|
|
9
|
+
* 4. Default: 'claude'
|
|
10
|
+
*/
|
|
11
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
12
|
+
if (k2 === undefined) k2 = k;
|
|
13
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
14
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
15
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
16
|
+
}
|
|
17
|
+
Object.defineProperty(o, k2, desc);
|
|
18
|
+
}) : (function(o, m, k, k2) {
|
|
19
|
+
if (k2 === undefined) k2 = k;
|
|
20
|
+
o[k2] = m[k];
|
|
21
|
+
}));
|
|
22
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
23
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
24
|
+
}) : function(o, v) {
|
|
25
|
+
o["default"] = v;
|
|
26
|
+
});
|
|
27
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
+
exports.stripTargetFlag = exports.resolveTargetType = void 0;
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
/**
|
|
38
|
+
* Map of binary names to target types (busybox pattern).
|
|
39
|
+
* When CCS is invoked as `ccsd`, it auto-selects the droid target.
|
|
40
|
+
*/
|
|
41
|
+
const ARGV0_TARGET_MAP = {
|
|
42
|
+
ccsd: 'droid',
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Valid target types for --target flag validation.
|
|
46
|
+
*/
|
|
47
|
+
const VALID_TARGETS = new Set(['claude', 'droid']);
|
|
48
|
+
function normalizeTargetValue(value) {
|
|
49
|
+
const normalized = value.toLowerCase();
|
|
50
|
+
if (VALID_TARGETS.has(normalized)) {
|
|
51
|
+
return normalized;
|
|
52
|
+
}
|
|
53
|
+
const available = Array.from(VALID_TARGETS).join(', ');
|
|
54
|
+
throw new Error(`Unknown target "${value}". Available: ${available}`);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Parse and strip all --target flags from args.
|
|
58
|
+
* Supports both "--target value" and "--target=value" forms.
|
|
59
|
+
* For repeated flags, last one wins (common CLI precedence behavior).
|
|
60
|
+
*/
|
|
61
|
+
function parseTargetFlags(args) {
|
|
62
|
+
const cleanedArgs = [];
|
|
63
|
+
let targetOverride;
|
|
64
|
+
for (let i = 0; i < args.length; i++) {
|
|
65
|
+
const arg = args[i];
|
|
66
|
+
// POSIX option terminator: everything after `--` is positional.
|
|
67
|
+
if (arg === '--') {
|
|
68
|
+
cleanedArgs.push(...args.slice(i));
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
if (arg === '--target') {
|
|
72
|
+
const value = args[i + 1];
|
|
73
|
+
if (!value || value.startsWith('-')) {
|
|
74
|
+
throw new Error('--target requires a value (claude or droid)');
|
|
75
|
+
}
|
|
76
|
+
targetOverride = normalizeTargetValue(value);
|
|
77
|
+
i += 1; // Skip value
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (arg.startsWith('--target=')) {
|
|
81
|
+
const value = arg.slice('--target='.length).trim();
|
|
82
|
+
if (!value) {
|
|
83
|
+
throw new Error('--target requires a value (claude or droid)');
|
|
84
|
+
}
|
|
85
|
+
targetOverride = normalizeTargetValue(value);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
cleanedArgs.push(arg);
|
|
89
|
+
}
|
|
90
|
+
return { targetOverride, cleanedArgs };
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Resolve target type from multiple sources with priority ordering.
|
|
94
|
+
*
|
|
95
|
+
* @param args - CLI arguments (may contain --target flag)
|
|
96
|
+
* @param profileConfig - Per-profile config with optional target field
|
|
97
|
+
* @returns Resolved target type
|
|
98
|
+
*/
|
|
99
|
+
function resolveTargetType(args, profileConfig) {
|
|
100
|
+
const parsed = parseTargetFlags(args);
|
|
101
|
+
// 1. Check --target flag (highest priority)
|
|
102
|
+
if (parsed.targetOverride) {
|
|
103
|
+
return parsed.targetOverride;
|
|
104
|
+
}
|
|
105
|
+
// 2. Check per-profile config
|
|
106
|
+
if (profileConfig?.target) {
|
|
107
|
+
return profileConfig.target;
|
|
108
|
+
}
|
|
109
|
+
// 3. Check argv[0] (busybox pattern)
|
|
110
|
+
// Strip common wrapper extensions for Windows shims/wrappers
|
|
111
|
+
const rawBin = path.basename(process.argv[1] || process.argv0 || '');
|
|
112
|
+
const binName = rawBin.replace(/\.(cmd|bat|ps1|exe)$/i, '');
|
|
113
|
+
const argv0Target = ARGV0_TARGET_MAP[binName];
|
|
114
|
+
if (argv0Target) {
|
|
115
|
+
return argv0Target;
|
|
116
|
+
}
|
|
117
|
+
// 4. Default
|
|
118
|
+
return 'claude';
|
|
119
|
+
}
|
|
120
|
+
exports.resolveTargetType = resolveTargetType;
|
|
121
|
+
/**
|
|
122
|
+
* Strip --target flag and its value from args array.
|
|
123
|
+
* Returns new array without the flag (so it's not passed to target CLI).
|
|
124
|
+
*/
|
|
125
|
+
function stripTargetFlag(args) {
|
|
126
|
+
return parseTargetFlags(args).cleanedArgs;
|
|
127
|
+
}
|
|
128
|
+
exports.stripTargetFlag = stripTargetFlag;
|
|
129
|
+
//# sourceMappingURL=target-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"target-resolver.js","sourceRoot":"","sources":["../../src/targets/target-resolver.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -10,4 +10,5 @@ export type { SessionMetadata, DelegationSession, DelegationSessionsRegistry, Ex
|
|
|
10
10
|
export type { AnthropicMessage, ContentBlock, AnthropicRequest, AnthropicTool, OpenAIMessage, OpenAIToolCall, OpenAIRequest, OpenAITool, SSEEvent, DeltaChunk, TransformationContext, } from './glmt';
|
|
11
11
|
export { LogLevel } from './utils';
|
|
12
12
|
export type { ErrorCode, ColorName, TerminalInfo, Result } from './utils';
|
|
13
|
+
export type { ProfileType } from './profile';
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,GACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,YAAY,EACV,MAAM,EACN,cAAc,EACd,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGhD,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGjC,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,SAAS,EACT,WAAW,EACX,eAAe,GAChB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,cAAc,EACd,aAAa,EACb,UAAU,EACV,QAAQ,EACR,UAAU,EACV,qBAAqB,GACtB,MAAM,QAAQ,CAAC;AAGhB,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAG1E,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../../src/types/profile.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/types/profile.ts"],"names":[],"mappings":""}
|