@antistud/handrails-cli 0.1.7 → 0.1.10
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/src/cli/commands/rig.js +22 -8
- package/dist/src/cli/commands/rig.js.map +1 -1
- package/dist/src/cli/index.js +2 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/runner/executors/claude-code.d.ts +2 -0
- package/dist/src/runner/executors/claude-code.js +5 -51
- package/dist/src/runner/executors/claude-code.js.map +1 -1
- package/dist/src/runner/executors/opencode.d.ts +7 -2
- package/dist/src/runner/executors/opencode.js +31 -8
- package/dist/src/runner/executors/opencode.js.map +1 -1
- package/dist/src/runner/executors/types.d.ts +0 -2
- package/dist/src/runner/executors/types.js.map +1 -1
- package/dist/src/runner/index.d.ts +1 -0
- package/dist/src/runner/index.js +18 -3
- package/dist/src/runner/index.js.map +1 -1
- package/dist/src/runner/preflight.d.ts +26 -0
- package/dist/src/runner/preflight.js +231 -0
- package/dist/src/runner/preflight.js.map +1 -0
- package/dist/src/version.d.ts +1 -0
- package/dist/src/version.js +20 -0
- package/dist/src/version.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.runPreflight = runPreflight;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const fs_1 = require("fs");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const axios_1 = __importDefault(require("axios"));
|
|
11
|
+
const logger_1 = require("./logger");
|
|
12
|
+
/**
|
|
13
|
+
* Run all preflight checks before starting the rig.
|
|
14
|
+
* Validates connectivity, tools, and sets up the local environment.
|
|
15
|
+
*/
|
|
16
|
+
async function runPreflight(options) {
|
|
17
|
+
const { apiUrl, rigKey, projectPath, rigType } = options;
|
|
18
|
+
let allOk = true;
|
|
19
|
+
logger_1.logger.section('Preflight Checks');
|
|
20
|
+
// 1. Server connectivity
|
|
21
|
+
logger_1.logger.info('Checking server connectivity...');
|
|
22
|
+
try {
|
|
23
|
+
const res = await axios_1.default.get(`${apiUrl}/health`, { timeout: 5000 });
|
|
24
|
+
if (res.status === 200) {
|
|
25
|
+
logger_1.logger.success(`Server reachable at ${apiUrl}`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
logger_1.logger.error(`Cannot reach server at ${apiUrl}: ${err.message}`);
|
|
30
|
+
logger_1.logger.info('Check your --api-url or HANDRAILS_API_URL');
|
|
31
|
+
allOk = false;
|
|
32
|
+
logger_1.logger.sectionEnd();
|
|
33
|
+
return { ok: false };
|
|
34
|
+
}
|
|
35
|
+
// 2. Validate rig key + fetch capabilities
|
|
36
|
+
logger_1.logger.info('Validating rig key...');
|
|
37
|
+
let capabilities = null;
|
|
38
|
+
try {
|
|
39
|
+
const res = await axios_1.default.get(`${apiUrl}/api/rig/capabilities`, {
|
|
40
|
+
params: { rig_key: rigKey },
|
|
41
|
+
timeout: 10000,
|
|
42
|
+
});
|
|
43
|
+
capabilities = res.data;
|
|
44
|
+
logger_1.logger.success(`Rig authenticated: ${capabilities.rig_id} (${capabilities.rig_type})`);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
if (err.response?.status === 401) {
|
|
48
|
+
logger_1.logger.error('Invalid rig key. Check your --rig-key or HANDRAILS_RIG_KEY');
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logger_1.logger.error(`Failed to validate rig key: ${err.message}`);
|
|
52
|
+
}
|
|
53
|
+
allOk = false;
|
|
54
|
+
logger_1.logger.sectionEnd();
|
|
55
|
+
return { ok: false };
|
|
56
|
+
}
|
|
57
|
+
// 3. Check mounted agents
|
|
58
|
+
const agents = capabilities.agents || [];
|
|
59
|
+
if (agents.length === 0) {
|
|
60
|
+
logger_1.logger.warn('No agents mounted to this rig. Mount agents from the dashboard before tasks can run.');
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
logger_1.logger.success(`${agents.length} agent(s) mounted: ${agents.map((a) => a.name).join(', ')}`);
|
|
64
|
+
}
|
|
65
|
+
// 4. Check executor is installed
|
|
66
|
+
const executorType = rigType || capabilities.rig_type || 'claude-code';
|
|
67
|
+
const executorCmd = executorType === 'claude-code' ? 'claude' : executorType === 'opencode' ? 'opencode' : 'codex';
|
|
68
|
+
logger_1.logger.info(`Checking ${executorType} (${executorCmd})...`);
|
|
69
|
+
try {
|
|
70
|
+
const version = (0, child_process_1.execSync)(`${executorCmd} --version 2>&1`, { timeout: 5000 }).toString().trim();
|
|
71
|
+
logger_1.logger.success(`${executorCmd} installed: ${version.split('\n')[0]}`);
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
logger_1.logger.error(`${executorCmd} not found in PATH`);
|
|
75
|
+
if (executorType === 'claude-code') {
|
|
76
|
+
logger_1.logger.info('Install: npm install -g @anthropic-ai/claude-code');
|
|
77
|
+
}
|
|
78
|
+
else if (executorType === 'opencode') {
|
|
79
|
+
logger_1.logger.info('Install: curl -fsSL https://opencode.ai/install | bash');
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
logger_1.logger.info('Install: npm install -g @openai/codex');
|
|
83
|
+
}
|
|
84
|
+
allOk = false;
|
|
85
|
+
}
|
|
86
|
+
// 5. Set up CLAUDE.md with handrails context
|
|
87
|
+
if (capabilities.claude_md && projectPath) {
|
|
88
|
+
const handrailsBlock = capabilities.claude_md;
|
|
89
|
+
const claudeMdPath = (0, path_1.join)(projectPath, 'CLAUDE.md');
|
|
90
|
+
const marker = '<!-- handrails-rig-managed -->';
|
|
91
|
+
const wrappedBlock = `\n\n${marker}\n${handrailsBlock}\n${marker}\n`;
|
|
92
|
+
if ((0, fs_1.existsSync)(claudeMdPath)) {
|
|
93
|
+
const existing = (0, fs_1.readFileSync)(claudeMdPath, 'utf-8');
|
|
94
|
+
if (existing.includes(marker)) {
|
|
95
|
+
// Update the managed section
|
|
96
|
+
const regex = new RegExp(`\n?\n?${marker}[\\s\\S]*?${marker}\n?`, 'g');
|
|
97
|
+
const updated = existing.replace(regex, wrappedBlock);
|
|
98
|
+
(0, fs_1.writeFileSync)(claudeMdPath, updated);
|
|
99
|
+
logger_1.logger.success('Updated CLAUDE.md handrails section');
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
// Append to existing
|
|
103
|
+
(0, fs_1.writeFileSync)(claudeMdPath, existing + wrappedBlock);
|
|
104
|
+
logger_1.logger.success('Added handrails section to CLAUDE.md');
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
(0, fs_1.writeFileSync)(claudeMdPath, wrappedBlock.trim() + '\n');
|
|
109
|
+
logger_1.logger.success('Created CLAUDE.md with handrails context');
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
// 6. Set up handrails MCP server
|
|
113
|
+
// Claude Code uses .mcp.json; OpenCode uses opencode.json with different format
|
|
114
|
+
const mcpKey = capabilities.mcp_api_key || rigKey;
|
|
115
|
+
if (capabilities.mcp_api_key) {
|
|
116
|
+
logger_1.logger.debug('Using dedicated MCP API key from server');
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
logger_1.logger.warn('No MCP API key returned — falling back to rig key (may not work for all endpoints)');
|
|
120
|
+
}
|
|
121
|
+
if (executorType === 'opencode') {
|
|
122
|
+
setupOpenCodeMcp(projectPath, mcpKey, apiUrl);
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
setupClaudeCodeMcp(projectPath, mcpKey, apiUrl);
|
|
126
|
+
}
|
|
127
|
+
// 7. Ensure .claude directory exists
|
|
128
|
+
const claudeDir = (0, path_1.join)(projectPath, '.claude');
|
|
129
|
+
if (!(0, fs_1.existsSync)(claudeDir)) {
|
|
130
|
+
(0, fs_1.mkdirSync)(claudeDir, { recursive: true });
|
|
131
|
+
logger_1.logger.debug('Created .claude/ directory');
|
|
132
|
+
}
|
|
133
|
+
logger_1.logger.sectionEnd();
|
|
134
|
+
if (!allOk) {
|
|
135
|
+
logger_1.logger.error('Preflight checks failed. Fix the issues above and try again.');
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
ok: allOk,
|
|
139
|
+
rigId: capabilities.rig_id,
|
|
140
|
+
rigType: executorType,
|
|
141
|
+
teamId: capabilities.team_id,
|
|
142
|
+
agents,
|
|
143
|
+
claudeMd: capabilities.claude_md,
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Configure .mcp.json for Claude Code / Codex rigs.
|
|
148
|
+
*/
|
|
149
|
+
function setupClaudeCodeMcp(projectPath, mcpKey, apiUrl) {
|
|
150
|
+
const mcpJsonPath = (0, path_1.join)(projectPath, '.mcp.json');
|
|
151
|
+
logger_1.logger.info('Checking MCP configuration (.mcp.json)...');
|
|
152
|
+
try {
|
|
153
|
+
let mcpConfig = { mcpServers: {} };
|
|
154
|
+
if ((0, fs_1.existsSync)(mcpJsonPath)) {
|
|
155
|
+
mcpConfig = JSON.parse((0, fs_1.readFileSync)(mcpJsonPath, 'utf-8'));
|
|
156
|
+
if (!mcpConfig.mcpServers)
|
|
157
|
+
mcpConfig.mcpServers = {};
|
|
158
|
+
}
|
|
159
|
+
const existing = mcpConfig.mcpServers.handrails;
|
|
160
|
+
const needsUpdate = !existing
|
|
161
|
+
|| existing.env?.HANDRAILS_API_KEY !== mcpKey
|
|
162
|
+
|| existing.env?.HANDRAILS_API_URL !== apiUrl;
|
|
163
|
+
if (needsUpdate) {
|
|
164
|
+
mcpConfig.mcpServers.handrails = {
|
|
165
|
+
command: 'npx',
|
|
166
|
+
args: ['-y', '@antistud/handrails-cli', 'serve'],
|
|
167
|
+
env: {
|
|
168
|
+
HANDRAILS_API_KEY: mcpKey,
|
|
169
|
+
HANDRAILS_API_URL: apiUrl,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
(0, fs_1.writeFileSync)(mcpJsonPath, JSON.stringify(mcpConfig, null, 2) + '\n');
|
|
173
|
+
logger_1.logger.success(`Handrails MCP server ${existing ? 'updated' : 'added'} in .mcp.json`);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
logger_1.logger.success('Handrails MCP server already configured in .mcp.json');
|
|
177
|
+
}
|
|
178
|
+
const otherServers = Object.keys(mcpConfig.mcpServers).filter(k => k !== 'handrails');
|
|
179
|
+
if (otherServers.length > 0) {
|
|
180
|
+
logger_1.logger.info(`Other MCP servers available: ${otherServers.join(', ')}`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
catch (err) {
|
|
184
|
+
logger_1.logger.warn(`Failed to configure .mcp.json: ${err.message}`);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Configure opencode.json for OpenCode rigs.
|
|
189
|
+
*
|
|
190
|
+
* OpenCode uses a different MCP config format:
|
|
191
|
+
* { "mcp": { "server-name": { "type": "local", "command": [...], "environment": {...} } } }
|
|
192
|
+
*/
|
|
193
|
+
function setupOpenCodeMcp(projectPath, mcpKey, apiUrl) {
|
|
194
|
+
const configPath = (0, path_1.join)(projectPath, 'opencode.json');
|
|
195
|
+
logger_1.logger.info('Checking MCP configuration (opencode.json)...');
|
|
196
|
+
try {
|
|
197
|
+
let config = {};
|
|
198
|
+
if ((0, fs_1.existsSync)(configPath)) {
|
|
199
|
+
config = JSON.parse((0, fs_1.readFileSync)(configPath, 'utf-8'));
|
|
200
|
+
}
|
|
201
|
+
if (!config.mcp)
|
|
202
|
+
config.mcp = {};
|
|
203
|
+
const existing = config.mcp.handrails;
|
|
204
|
+
const needsUpdate = !existing
|
|
205
|
+
|| existing.environment?.HANDRAILS_API_KEY !== mcpKey
|
|
206
|
+
|| existing.environment?.HANDRAILS_API_URL !== apiUrl;
|
|
207
|
+
if (needsUpdate) {
|
|
208
|
+
config.mcp.handrails = {
|
|
209
|
+
type: 'local',
|
|
210
|
+
command: ['npx', '-y', '@antistud/handrails-cli', 'serve'],
|
|
211
|
+
environment: {
|
|
212
|
+
HANDRAILS_API_KEY: mcpKey,
|
|
213
|
+
HANDRAILS_API_URL: apiUrl,
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
(0, fs_1.writeFileSync)(configPath, JSON.stringify(config, null, 2) + '\n');
|
|
217
|
+
logger_1.logger.success(`Handrails MCP server ${existing ? 'updated' : 'added'} in opencode.json`);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
logger_1.logger.success('Handrails MCP server already configured in opencode.json');
|
|
221
|
+
}
|
|
222
|
+
const otherServers = Object.keys(config.mcp).filter(k => k !== 'handrails');
|
|
223
|
+
if (otherServers.length > 0) {
|
|
224
|
+
logger_1.logger.info(`Other MCP servers available: ${otherServers.join(', ')}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch (err) {
|
|
228
|
+
logger_1.logger.warn(`Failed to configure opencode.json: ${err.message}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
//# sourceMappingURL=preflight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../../src/runner/preflight.ts"],"names":[],"mappings":";;;;;AAoBA,oCA0IC;AA9JD,iDAAyC;AACzC,2BAAwE;AACxE,+BAA4B;AAC5B,kDAA0B;AAC1B,qCAAkC;AAYlC;;;GAGG;AACI,KAAK,UAAU,YAAY,CAAC,OAKlC;IACC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IACzD,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,eAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEnC,yBAAyB;IACzB,eAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,MAAM,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YACvB,eAAM,CAAC,OAAO,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,eAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QACzD,KAAK,GAAG,KAAK,CAAC;QACd,eAAM,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,2CAA2C;IAC3C,eAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACrC,IAAI,YAAY,GAAQ,IAAI,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,GAAG,MAAM,uBAAuB,EAAE;YAC5D,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC3B,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC;QACxB,eAAM,CAAC,OAAO,CAAC,sBAAsB,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,EAAE,CAAC;YACjC,eAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC7E,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,KAAK,GAAG,KAAK,CAAC;QACd,eAAM,CAAC,UAAU,EAAE,CAAC;QACpB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,0BAA0B;IAC1B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,eAAM,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAC;IACtG,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,sBAAsB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpG,CAAC;IAED,iCAAiC;IACjC,MAAM,YAAY,GAAG,OAAO,IAAI,YAAY,CAAC,QAAQ,IAAI,aAAa,CAAC;IACvE,MAAM,WAAW,GAAG,YAAY,KAAK,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC;IAEnH,eAAM,CAAC,IAAI,CAAC,YAAY,YAAY,KAAK,WAAW,MAAM,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,wBAAQ,EAAC,GAAG,WAAW,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAC/F,eAAM,CAAC,OAAO,CAAC,GAAG,WAAW,eAAe,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,MAAM,CAAC;QACP,eAAM,CAAC,KAAK,CAAC,GAAG,WAAW,oBAAoB,CAAC,CAAC;QACjD,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;YACnC,eAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QACnE,CAAC;aAAM,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YACvC,eAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,GAAG,KAAK,CAAC;IAChB,CAAC;IAED,6CAA6C;IAC7C,IAAI,YAAY,CAAC,SAAS,IAAI,WAAW,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;QAC9C,MAAM,YAAY,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAEpD,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,YAAY,GAAG,OAAO,MAAM,KAAK,cAAc,KAAK,MAAM,IAAI,CAAC;QAErE,IAAI,IAAA,eAAU,EAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAA,iBAAY,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9B,6BAA6B;gBAC7B,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,MAAM,aAAa,MAAM,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;gBACtD,IAAA,kBAAa,EAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBACrC,eAAM,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC;YACxD,CAAC;iBAAM,CAAC;gBACN,qBAAqB;gBACrB,IAAA,kBAAa,EAAC,YAAY,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;gBACrD,eAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAA,kBAAa,EAAC,YAAY,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YACxD,eAAM,CAAC,OAAO,CAAC,0CAA0C,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,gFAAgF;IAChF,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC;IAClD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,eAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QAChC,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACN,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,qCAAqC;IACrC,MAAM,SAAS,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAA,eAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,IAAA,cAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,eAAM,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC7C,CAAC;IAED,eAAM,CAAC,UAAU,EAAE,CAAC;IAEpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,eAAM,CAAC,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE,YAAY,CAAC,MAAM;QAC1B,OAAO,EAAE,YAAuB;QAChC,MAAM,EAAE,YAAY,CAAC,OAAO;QAC5B,MAAM;QACN,QAAQ,EAAE,YAAY,CAAC,SAAS;KACjC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;IAC7E,MAAM,WAAW,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnD,eAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IACzD,IAAI,CAAC;QACH,IAAI,SAAS,GAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACxC,IAAI,IAAA,eAAU,EAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,UAAU;gBAAE,SAAS,CAAC,UAAU,GAAG,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC;QAChD,MAAM,WAAW,GAAG,CAAC,QAAQ;eACxB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,KAAK,MAAM;eAC1C,QAAQ,CAAC,GAAG,EAAE,iBAAiB,KAAK,MAAM,CAAC;QAEhD,IAAI,WAAW,EAAE,CAAC;YAChB,SAAS,CAAC,UAAU,CAAC,SAAS,GAAG;gBAC/B,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,CAAC,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC;gBAChD,GAAG,EAAE;oBACH,iBAAiB,EAAE,MAAM;oBACzB,iBAAiB,EAAE,MAAM;iBAC1B;aACF,CAAC;YACF,IAAA,kBAAa,EAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACtE,eAAM,CAAC,OAAO,CAAC,wBAAwB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,eAAe,CAAC,CAAC;QACxF,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC;QACzE,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QACtF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,eAAM,CAAC,IAAI,CAAC,gCAAgC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,eAAM,CAAC,IAAI,CAAC,kCAAkC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAmB,EAAE,MAAc,EAAE,MAAc;IAC3E,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,WAAW,EAAE,eAAe,CAAC,CAAC;IACtD,eAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,IAAI,MAAM,GAAQ,EAAE,CAAC;QACrB,IAAI,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;QACtC,MAAM,WAAW,GAAG,CAAC,QAAQ;eACxB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,KAAK,MAAM;eAClD,QAAQ,CAAC,WAAW,EAAE,iBAAiB,KAAK,MAAM,CAAC;QAExD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG;gBACrB,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC;gBAC1D,WAAW,EAAE;oBACX,iBAAiB,EAAE,MAAM;oBACzB,iBAAiB,EAAE,MAAM;iBAC1B;aACF,CAAC;YACF,IAAA,kBAAa,EAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YAClE,eAAM,CAAC,OAAO,CAAC,wBAAwB,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,mBAAmB,CAAC,CAAC;QAC5F,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QAC7E,CAAC;QAED,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;QAC5E,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,eAAM,CAAC,IAAI,CAAC,gCAAgC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,eAAM,CAAC,IAAI,CAAC,sCAAsC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getVersion(): string;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getVersion = getVersion;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const path_1 = require("path");
|
|
6
|
+
let cachedVersion = null;
|
|
7
|
+
function getVersion() {
|
|
8
|
+
if (cachedVersion)
|
|
9
|
+
return cachedVersion;
|
|
10
|
+
try {
|
|
11
|
+
const pkgPath = (0, path_1.join)(__dirname, '..', 'package.json');
|
|
12
|
+
const pkg = JSON.parse((0, fs_1.readFileSync)(pkgPath, 'utf-8'));
|
|
13
|
+
cachedVersion = pkg.version || '0.0.0';
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
cachedVersion = '0.0.0';
|
|
17
|
+
}
|
|
18
|
+
return cachedVersion;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;AAKA,gCAUC;AAfD,2BAAkC;AAClC,+BAA4B;AAE5B,IAAI,aAAa,GAAkB,IAAI,CAAC;AAExC,SAAgB,UAAU;IACxB,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACvD,aAAa,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC;IACD,OAAO,aAAc,CAAC;AACxB,CAAC"}
|