nowaikit 2.5.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/.env.example +96 -0
- package/LICENSE +21 -0
- package/README.md +1253 -0
- package/desktop/renderer/dist/apple-touch-icon.png +0 -0
- package/desktop/renderer/dist/assets/index-Bb0ncZQl.css +1 -0
- package/desktop/renderer/dist/assets/index-MlBBSUMZ.js +49 -0
- package/desktop/renderer/dist/favicon-32.png +0 -0
- package/desktop/renderer/dist/favicon.svg +18 -0
- package/desktop/renderer/dist/index.html +18 -0
- package/desktop/serve.js +449 -0
- package/dist/cli/auth.d.ts +14 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +179 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/config-store.d.ts +28 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +64 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/detect-clients.d.ts +16 -0
- package/dist/cli/detect-clients.d.ts.map +1 -0
- package/dist/cli/detect-clients.js +151 -0
- package/dist/cli/detect-clients.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +193 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/setup.d.ts +4 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +575 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/writers/index.d.ts +9 -0
- package/dist/cli/writers/index.d.ts.map +1 -0
- package/dist/cli/writers/index.js +140 -0
- package/dist/cli/writers/index.js.map +1 -0
- package/dist/prompts/index.d.ts +25 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +38 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/itsm.d.ts +20 -0
- package/dist/prompts/itsm.d.ts.map +1 -0
- package/dist/prompts/itsm.js +110 -0
- package/dist/prompts/itsm.js.map +1 -0
- package/dist/prompts/user-prompts.d.ts +3 -0
- package/dist/prompts/user-prompts.d.ts.map +1 -0
- package/dist/prompts/user-prompts.js +35 -0
- package/dist/prompts/user-prompts.js.map +1 -0
- package/dist/resources/index.d.ts +26 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +99 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +129 -0
- package/dist/server.js.map +1 -0
- package/dist/servicenow/client.d.ts +135 -0
- package/dist/servicenow/client.d.ts.map +1 -0
- package/dist/servicenow/client.js +803 -0
- package/dist/servicenow/client.js.map +1 -0
- package/dist/servicenow/instances.d.ts +28 -0
- package/dist/servicenow/instances.d.ts.map +1 -0
- package/dist/servicenow/instances.js +204 -0
- package/dist/servicenow/instances.js.map +1 -0
- package/dist/servicenow/types.d.ts +574 -0
- package/dist/servicenow/types.d.ts.map +1 -0
- package/dist/servicenow/types.js +3 -0
- package/dist/servicenow/types.js.map +1 -0
- package/dist/tools/agile.d.ts +225 -0
- package/dist/tools/agile.d.ts.map +1 -0
- package/dist/tools/agile.js +205 -0
- package/dist/tools/agile.js.map +1 -0
- package/dist/tools/app-studio.d.ts +139 -0
- package/dist/tools/app-studio.d.ts.map +1 -0
- package/dist/tools/app-studio.js +139 -0
- package/dist/tools/app-studio.js.map +1 -0
- package/dist/tools/atf.d.ts +144 -0
- package/dist/tools/atf.d.ts.map +1 -0
- package/dist/tools/atf.js +186 -0
- package/dist/tools/atf.js.map +1 -0
- package/dist/tools/catalog.d.ts +628 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +397 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/change.d.ts +347 -0
- package/dist/tools/change.d.ts.map +1 -0
- package/dist/tools/change.js +213 -0
- package/dist/tools/change.js.map +1 -0
- package/dist/tools/core.d.ts +540 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +373 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/csm.d.ts +401 -0
- package/dist/tools/csm.d.ts.map +1 -0
- package/dist/tools/csm.js +255 -0
- package/dist/tools/csm.js.map +1 -0
- package/dist/tools/deployment.d.ts +366 -0
- package/dist/tools/deployment.d.ts.map +1 -0
- package/dist/tools/deployment.js +181 -0
- package/dist/tools/deployment.js.map +1 -0
- package/dist/tools/devops.d.ts +236 -0
- package/dist/tools/devops.d.ts.map +1 -0
- package/dist/tools/devops.js +207 -0
- package/dist/tools/devops.js.map +1 -0
- package/dist/tools/flow.d.ts +496 -0
- package/dist/tools/flow.d.ts.map +1 -0
- package/dist/tools/flow.js +348 -0
- package/dist/tools/flow.js.map +1 -0
- package/dist/tools/hrsd.d.ts +789 -0
- package/dist/tools/hrsd.d.ts.map +1 -0
- package/dist/tools/hrsd.js +377 -0
- package/dist/tools/hrsd.js.map +1 -0
- package/dist/tools/incident.d.ts +256 -0
- package/dist/tools/incident.d.ts.map +1 -0
- package/dist/tools/incident.js +163 -0
- package/dist/tools/incident.js.map +1 -0
- package/dist/tools/index.d.ts +11514 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +276 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integration.d.ts +603 -0
- package/dist/tools/integration.d.ts.map +1 -0
- package/dist/tools/integration.js +510 -0
- package/dist/tools/integration.js.map +1 -0
- package/dist/tools/itam.d.ts +462 -0
- package/dist/tools/itam.d.ts.map +1 -0
- package/dist/tools/itam.js +306 -0
- package/dist/tools/itam.js.map +1 -0
- package/dist/tools/knowledge.d.ts +187 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +161 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/ml.d.ts +263 -0
- package/dist/tools/ml.d.ts.map +1 -0
- package/dist/tools/ml.js +251 -0
- package/dist/tools/ml.js.map +1 -0
- package/dist/tools/mobile.d.ts +352 -0
- package/dist/tools/mobile.d.ts.map +1 -0
- package/dist/tools/mobile.js +122 -0
- package/dist/tools/mobile.js.map +1 -0
- package/dist/tools/notification.d.ts +590 -0
- package/dist/tools/notification.d.ts.map +1 -0
- package/dist/tools/notification.js +382 -0
- package/dist/tools/notification.js.map +1 -0
- package/dist/tools/now-assist.d.ts +300 -0
- package/dist/tools/now-assist.d.ts.map +1 -0
- package/dist/tools/now-assist.js +227 -0
- package/dist/tools/now-assist.js.map +1 -0
- package/dist/tools/performance.d.ts +447 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +473 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/tools/portal.d.ts +530 -0
- package/dist/tools/portal.d.ts.map +1 -0
- package/dist/tools/portal.js +425 -0
- package/dist/tools/portal.js.map +1 -0
- package/dist/tools/problem.d.ts +110 -0
- package/dist/tools/problem.d.ts.map +1 -0
- package/dist/tools/problem.js +100 -0
- package/dist/tools/problem.js.map +1 -0
- package/dist/tools/reporting.d.ts +825 -0
- package/dist/tools/reporting.d.ts.map +1 -0
- package/dist/tools/reporting.js +460 -0
- package/dist/tools/reporting.js.map +1 -0
- package/dist/tools/script.d.ts +714 -0
- package/dist/tools/script.d.ts.map +1 -0
- package/dist/tools/script.js +629 -0
- package/dist/tools/script.js.map +1 -0
- package/dist/tools/security.d.ts +794 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +425 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/sys-properties.d.ts +315 -0
- package/dist/tools/sys-properties.d.ts.map +1 -0
- package/dist/tools/sys-properties.js +372 -0
- package/dist/tools/sys-properties.js.map +1 -0
- package/dist/tools/task.d.ts +82 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +96 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/updateset.d.ts +159 -0
- package/dist/tools/updateset.d.ts.map +1 -0
- package/dist/tools/updateset.js +212 -0
- package/dist/tools/updateset.js.map +1 -0
- package/dist/tools/user.d.ts +206 -0
- package/dist/tools/user.d.ts.map +1 -0
- package/dist/tools/user.js +163 -0
- package/dist/tools/user.js.map +1 -0
- package/dist/tools/va.d.ts +217 -0
- package/dist/tools/va.d.ts.map +1 -0
- package/dist/tools/va.js +178 -0
- package/dist/tools/va.js.map +1 -0
- package/dist/tools/workspace.d.ts +565 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +201 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/tools-manifest.json +7852 -0
- package/dist/utils/errors.d.ts +6 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +11 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logging.d.ts +7 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +15 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/permissions.d.ts +21 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +54 -0
- package/dist/utils/permissions.js.map +1 -0
- package/instances.example.json +71 -0
- package/package.json +110 -0
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive setup wizard — `nowaikit setup`
|
|
3
|
+
*
|
|
4
|
+
* Walks the user through:
|
|
5
|
+
* 1. ServiceNow instance
|
|
6
|
+
* 2. Auth method (Basic / OAuth)
|
|
7
|
+
* 3. Credentials
|
|
8
|
+
* 4. Connection test
|
|
9
|
+
* 5. Permission tier / tool package
|
|
10
|
+
* 6. Features & shortcuts overview
|
|
11
|
+
* 7. AI client installation
|
|
12
|
+
*/
|
|
13
|
+
import { input, password, select, checkbox, confirm } from '@inquirer/prompts';
|
|
14
|
+
import chalk from 'chalk';
|
|
15
|
+
import ora from 'ora';
|
|
16
|
+
import { execSync } from 'child_process';
|
|
17
|
+
import { fileURLToPath } from 'url';
|
|
18
|
+
import path from 'path';
|
|
19
|
+
import { addInstance, loadConfig } from './config-store.js';
|
|
20
|
+
import { detectClients } from './detect-clients.js';
|
|
21
|
+
import { writeClientConfig } from './writers/index.js';
|
|
22
|
+
// ─── Brand colors (matches nowaitkit.com — teal/navy palette) ───────────────
|
|
23
|
+
// NOTE: `white` and `subtle` use terminal-adaptive styles so text remains
|
|
24
|
+
// visible on both dark *and* light (bright-white) terminal backgrounds.
|
|
25
|
+
const teal = chalk.hex('#00D4AA'); // teal-500 — primary brand
|
|
26
|
+
const navy = chalk.hex('#0F4C81'); // deep navy — secondary brand
|
|
27
|
+
const bright = chalk.hex('#00B899'); // darker teal — visible on light bg too
|
|
28
|
+
const mint = chalk.hex('#00997F'); // mint — code/light accent (dark-safe)
|
|
29
|
+
const brand = teal; // primary brand color
|
|
30
|
+
const brandBg = chalk.bgHex('#00D4AA').black.bold; // teal badge bg (black text = always visible)
|
|
31
|
+
const accent = teal; // accent (AI highlight)
|
|
32
|
+
const success = chalk.hex('#10B981'); // emerald-500
|
|
33
|
+
const warn = chalk.hex('#FF6B35'); // amber/orange
|
|
34
|
+
const err = chalk.hex('#E8466A'); // pink-500
|
|
35
|
+
const dim = chalk.gray; // terminal-adaptive dim text
|
|
36
|
+
const white = chalk.bold; // terminal-adaptive primary text (works on light + dark)
|
|
37
|
+
const subtle = chalk.dim; // terminal-adaptive secondary text
|
|
38
|
+
const TOTAL_STEPS = 7;
|
|
39
|
+
const TOOL_PACKAGES = [
|
|
40
|
+
{ value: 'full', name: `${brand('full')} ${dim('— all 400+ tools')}` },
|
|
41
|
+
{ value: 'service_desk', name: `${brand('service_desk')} ${dim('— help desk agents')}` },
|
|
42
|
+
{ value: 'change_coordinator', name: `${brand('change_coordinator')} ${dim('— change managers')}` },
|
|
43
|
+
{ value: 'knowledge_author', name: `${brand('knowledge_author')} ${dim('— KB writers')}` },
|
|
44
|
+
{ value: 'catalog_builder', name: `${brand('catalog_builder')} ${dim('— catalog admins')}` },
|
|
45
|
+
{ value: 'system_administrator', name: `${brand('system_administrator')} ${dim('— SysAdmins')}` },
|
|
46
|
+
{ value: 'platform_developer', name: `${brand('platform_developer')} ${dim('— developers')}` },
|
|
47
|
+
{ value: 'itom_engineer', name: `${brand('itom_engineer')} ${dim('— IT Ops / monitoring')}` },
|
|
48
|
+
{ value: 'agile_manager', name: `${brand('agile_manager')} ${dim('— Scrum / SAFe teams')}` },
|
|
49
|
+
{ value: 'ai_developer', name: `${brand('ai_developer')} ${dim('— Now Assist / AI builders')}` },
|
|
50
|
+
];
|
|
51
|
+
// ─── Box drawing helpers ──────────────────────────────────────────────────────
|
|
52
|
+
function box(lines, color = brand) {
|
|
53
|
+
const maxLen = Math.max(...lines.map(l => stripAnsi(l).length));
|
|
54
|
+
const w = maxLen + 4;
|
|
55
|
+
console.log(color(` ╭${'─'.repeat(w)}╮`));
|
|
56
|
+
for (const line of lines) {
|
|
57
|
+
const pad = w - stripAnsi(line).length - 2;
|
|
58
|
+
console.log(color(' │') + ' ' + line + ' '.repeat(pad) + color(' │'));
|
|
59
|
+
}
|
|
60
|
+
console.log(color(` ╰${'─'.repeat(w)}╯`));
|
|
61
|
+
}
|
|
62
|
+
function divider() {
|
|
63
|
+
console.log(dim(' ' + '─'.repeat(56)));
|
|
64
|
+
}
|
|
65
|
+
function stripAnsi(str) {
|
|
66
|
+
// eslint-disable-next-line no-control-regex
|
|
67
|
+
return str.replace(/\x1B\[[0-9;]*m/g, '');
|
|
68
|
+
}
|
|
69
|
+
// ─── Progress bar (gradient fill) ─────────────────────────────────────────────
|
|
70
|
+
function progressBar(current, total) {
|
|
71
|
+
const width = 20;
|
|
72
|
+
const filled = Math.round((current / total) * width);
|
|
73
|
+
const empty = width - filled;
|
|
74
|
+
// Gradient blocks: mint → bright → teal → navy
|
|
75
|
+
const colors = [mint, mint, bright, bright, teal, teal, teal, teal, navy, navy,
|
|
76
|
+
navy, navy, teal, teal, teal, teal, bright, bright, mint, mint];
|
|
77
|
+
let bar = '';
|
|
78
|
+
for (let i = 0; i < filled; i++)
|
|
79
|
+
bar += colors[i]('█');
|
|
80
|
+
bar += dim('░'.repeat(empty));
|
|
81
|
+
const pct = dim(`${Math.round((current / total) * 100)}%`);
|
|
82
|
+
return ` ${bar} ${pct}`;
|
|
83
|
+
}
|
|
84
|
+
// ─── Logo + Banner ────────────────────────────────────────────────────────────
|
|
85
|
+
function logoText() {
|
|
86
|
+
return white('Now') + teal.bold('AI') + white('Kit');
|
|
87
|
+
}
|
|
88
|
+
function banner() {
|
|
89
|
+
console.log('');
|
|
90
|
+
// ASCII art logo — "NowAIKit" in stylized block text with teal/navy gradient
|
|
91
|
+
console.log(bright(' ╔╗╔') + teal('╔═╗') + bright('╦ ╦') + dim(' ') + teal('╔═╗') + bright('╦') + teal('╦╔═') + bright('╦') + teal('╔╦╗'));
|
|
92
|
+
console.log(teal(' ║║║') + navy('║ ║') + teal('║║║') + dim(' ') + teal('╠═╣') + navy('║') + teal('╠╩╗') + navy('║') + teal(' ║ '));
|
|
93
|
+
console.log(navy(' ╝╚╝') + teal('╚═╝') + navy('╚╩╝') + dim(' ') + navy('╩ ╩') + teal('╩') + navy('╩ ╩') + teal('╩') + navy(' ╩ ') + dim(' ') + teal('✦'));
|
|
94
|
+
console.log('');
|
|
95
|
+
console.log(` ${logoText()} ${dim('—')} ${subtle('Setup Wizard')}`);
|
|
96
|
+
console.log('');
|
|
97
|
+
console.log(dim(' Connect ') + teal.bold('Any AI') + dim(' to ServiceNow. Instantly.'));
|
|
98
|
+
console.log(dim(' 400+ tools · All modules · Any AI client'));
|
|
99
|
+
console.log('');
|
|
100
|
+
divider();
|
|
101
|
+
console.log('');
|
|
102
|
+
}
|
|
103
|
+
// ─── Step header ──────────────────────────────────────────────────────────────
|
|
104
|
+
function step(n, title) {
|
|
105
|
+
console.log('');
|
|
106
|
+
console.log(progressBar(n, TOTAL_STEPS));
|
|
107
|
+
console.log('');
|
|
108
|
+
const badge = brandBg(` ${n}/${TOTAL_STEPS} `);
|
|
109
|
+
console.log(` ${badge} ${white(title)}`);
|
|
110
|
+
console.log('');
|
|
111
|
+
}
|
|
112
|
+
// ─── Section label ────────────────────────────────────────────────────────────
|
|
113
|
+
function sectionLabel(label) {
|
|
114
|
+
console.log(` ${accent('▸')} ${subtle(label)}`);
|
|
115
|
+
}
|
|
116
|
+
// ─── Test connection ──────────────────────────────────────────────────────────
|
|
117
|
+
/** Extract the real error message from Node.js fetch failures (cause chain) */
|
|
118
|
+
function extractFetchError(error) {
|
|
119
|
+
if (!(error instanceof Error))
|
|
120
|
+
return String(error);
|
|
121
|
+
// Node.js fetch wraps real errors in .cause
|
|
122
|
+
const cause = error.cause;
|
|
123
|
+
if (cause) {
|
|
124
|
+
const code = cause.code;
|
|
125
|
+
if (code === 'ENOTFOUND')
|
|
126
|
+
return `DNS lookup failed — hostname not found. Check the instance name.`;
|
|
127
|
+
if (code === 'ECONNREFUSED')
|
|
128
|
+
return `Connection refused — the instance may be down or blocking access.`;
|
|
129
|
+
if (code === 'ECONNRESET')
|
|
130
|
+
return `Connection reset by the server. Check firewall or VPN settings.`;
|
|
131
|
+
if (code === 'ETIMEDOUT')
|
|
132
|
+
return `Connection timed out. Check network connectivity.`;
|
|
133
|
+
if (code === 'CERT_HAS_EXPIRED')
|
|
134
|
+
return `SSL certificate has expired on the ServiceNow instance.`;
|
|
135
|
+
if (code === 'UNABLE_TO_VERIFY_LEAF_SIGNATURE')
|
|
136
|
+
return `SSL certificate verification failed.`;
|
|
137
|
+
if (code)
|
|
138
|
+
return `Network error: ${code} — ${cause.message}`;
|
|
139
|
+
return cause.message;
|
|
140
|
+
}
|
|
141
|
+
return error.message;
|
|
142
|
+
}
|
|
143
|
+
async function testConnection(instanceUrl, authMethod, creds) {
|
|
144
|
+
// Pre-flight: verify the hostname is reachable before attempting auth
|
|
145
|
+
const spinner = ora({
|
|
146
|
+
text: dim(' Checking instance reachability…'),
|
|
147
|
+
color: 'cyan',
|
|
148
|
+
}).start();
|
|
149
|
+
try {
|
|
150
|
+
const controller = new AbortController();
|
|
151
|
+
const timeout = setTimeout(() => controller.abort(), 10000);
|
|
152
|
+
await fetch(instanceUrl, { method: 'HEAD', signal: controller.signal, redirect: 'follow' });
|
|
153
|
+
clearTimeout(timeout);
|
|
154
|
+
}
|
|
155
|
+
catch (preflight) {
|
|
156
|
+
const msg = extractFetchError(preflight);
|
|
157
|
+
spinner.fail(err(` Instance unreachable: ${msg}`));
|
|
158
|
+
console.log('');
|
|
159
|
+
console.log(dim(' Verify:'));
|
|
160
|
+
console.log(dim(' • The instance name is correct (just the subdomain)'));
|
|
161
|
+
console.log(dim(' • The instance is online at ') + accent(instanceUrl));
|
|
162
|
+
console.log(dim(' • Your network/VPN allows access'));
|
|
163
|
+
return { ok: false, message: msg };
|
|
164
|
+
}
|
|
165
|
+
spinner.text = dim(' Testing authentication…');
|
|
166
|
+
try {
|
|
167
|
+
const { ServiceNowClient } = await import('../servicenow/client.js');
|
|
168
|
+
const client = new ServiceNowClient({
|
|
169
|
+
instanceUrl,
|
|
170
|
+
authMethod,
|
|
171
|
+
basic: { username: creds.username, password: creds.password },
|
|
172
|
+
oauth: {
|
|
173
|
+
clientId: creds.clientId,
|
|
174
|
+
clientSecret: creds.clientSecret,
|
|
175
|
+
username: creds.username,
|
|
176
|
+
password: creds.password,
|
|
177
|
+
},
|
|
178
|
+
maxRetries: 1,
|
|
179
|
+
requestTimeoutMs: 15000,
|
|
180
|
+
});
|
|
181
|
+
const result = await client.queryRecords({ table: 'sys_user', limit: 1 });
|
|
182
|
+
spinner.succeed(success(' Connected — authentication verified'));
|
|
183
|
+
return { ok: true, message: `Connected (${result.count >= 0 ? 'OK' : 'warning'})` };
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
const msg = extractFetchError(error);
|
|
187
|
+
spinner.fail(err(` Connection failed: ${msg}`));
|
|
188
|
+
return { ok: false, message: msg };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** Returns true if `cmd` is resolvable on PATH. */
|
|
192
|
+
function isCommandAvailable(cmd) {
|
|
193
|
+
try {
|
|
194
|
+
const which = process.platform === 'win32' ? 'where' : 'which';
|
|
195
|
+
execSync(`${which} ${cmd}`, { stdio: 'ignore' });
|
|
196
|
+
return true;
|
|
197
|
+
}
|
|
198
|
+
catch {
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Ensures the `nowaikit` binary is available on PATH by running `npm link`
|
|
204
|
+
* in the package root. Skips silently if it's already linked.
|
|
205
|
+
*/
|
|
206
|
+
async function ensureGlobalCommand() {
|
|
207
|
+
if (isCommandAvailable('nowaikit'))
|
|
208
|
+
return;
|
|
209
|
+
const spinner = ora({
|
|
210
|
+
text: dim(' Making `nowaikit` available as a global command…'),
|
|
211
|
+
color: 'cyan',
|
|
212
|
+
}).start();
|
|
213
|
+
const pkgRoot = path.resolve(fileURLToPath(import.meta.url), '..', '..', '..');
|
|
214
|
+
try {
|
|
215
|
+
execSync('npm link', { cwd: pkgRoot, stdio: 'pipe' });
|
|
216
|
+
spinner.succeed(success(' `nowaikit` is now available as a global command'));
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
try {
|
|
220
|
+
const prefix = execSync('npm config get prefix', { encoding: 'utf8', stdio: 'pipe' }).trim();
|
|
221
|
+
execSync('npm link', {
|
|
222
|
+
cwd: pkgRoot,
|
|
223
|
+
stdio: 'pipe',
|
|
224
|
+
env: { ...process.env, npm_config_prefix: prefix },
|
|
225
|
+
});
|
|
226
|
+
spinner.succeed(success(' `nowaikit` linked via npm prefix'));
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
spinner.warn(warn(' Could not link globally — permission denied'));
|
|
230
|
+
console.log('');
|
|
231
|
+
console.log(dim(' Fix options (choose one):'));
|
|
232
|
+
console.log(brand(' sudo npm link') + dim(' # if using system Node'));
|
|
233
|
+
console.log(brand(' npm install -g nowaikit') + dim(' # install from npm registry'));
|
|
234
|
+
console.log(brand(' npx nowaikit instances list') + dim(' # use npx instead'));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
239
|
+
// MAIN SETUP FLOW
|
|
240
|
+
// ═══════════════════════════════════════════════════════════════════════════════
|
|
241
|
+
export async function runSetup(options = {}) {
|
|
242
|
+
banner();
|
|
243
|
+
const existing = loadConfig();
|
|
244
|
+
const isFirstRun = Object.keys(existing.instances).length === 0 && !options.add;
|
|
245
|
+
if (isFirstRun) {
|
|
246
|
+
box([
|
|
247
|
+
white("Welcome! Let's connect your first ServiceNow instance."),
|
|
248
|
+
dim('This wizard will configure everything in under 2 minutes.'),
|
|
249
|
+
]);
|
|
250
|
+
}
|
|
251
|
+
else if (options.add) {
|
|
252
|
+
box([
|
|
253
|
+
white('Adding a new ServiceNow instance.'),
|
|
254
|
+
dim('Your existing instances will not be affected.'),
|
|
255
|
+
]);
|
|
256
|
+
}
|
|
257
|
+
// ─── Step 1: Instance ──────────────────────────────────────────────────────
|
|
258
|
+
step(1, 'ServiceNow Instance');
|
|
259
|
+
sectionLabel('Enter your instance name — just the subdomain, not the full URL');
|
|
260
|
+
console.log(dim(' Example: if your URL is https://acme.service-now.com, enter ') + brand('acme'));
|
|
261
|
+
console.log('');
|
|
262
|
+
const instanceId = await input({
|
|
263
|
+
message: brand('?') + ' Instance name ' + dim('(e.g. acme, dev12345)') + brand(':'),
|
|
264
|
+
validate: (v) => {
|
|
265
|
+
if (!v.trim())
|
|
266
|
+
return 'Instance name is required';
|
|
267
|
+
if (/\s/.test(v))
|
|
268
|
+
return 'No spaces allowed';
|
|
269
|
+
return true;
|
|
270
|
+
},
|
|
271
|
+
});
|
|
272
|
+
let instanceUrl;
|
|
273
|
+
let trimmed = instanceId.trim().toLowerCase();
|
|
274
|
+
// Strip full URL if user pasted one
|
|
275
|
+
if (trimmed.startsWith('https://')) {
|
|
276
|
+
instanceUrl = trimmed.replace(/\/+$/, '');
|
|
277
|
+
trimmed = instanceUrl.replace('https://', '').replace('.service-now.com', '');
|
|
278
|
+
}
|
|
279
|
+
else if (trimmed.includes('.service-now.com')) {
|
|
280
|
+
trimmed = trimmed.replace('.service-now.com', '').replace(/\/+$/, '');
|
|
281
|
+
instanceUrl = `https://${trimmed}.service-now.com`;
|
|
282
|
+
}
|
|
283
|
+
else {
|
|
284
|
+
instanceUrl = `https://${trimmed}.service-now.com`;
|
|
285
|
+
}
|
|
286
|
+
console.log(` ${success('→')} ${dim('URL:')} ${accent(instanceUrl)}`);
|
|
287
|
+
console.log('');
|
|
288
|
+
const instanceName = await input({
|
|
289
|
+
message: brand('?') + ' Short name ' + dim('(e.g. prod, dev, acme)') + brand(':'),
|
|
290
|
+
default: trimmed.replace(/\.service-now\.com$/, '').replace(/[^a-z0-9_-]/gi, '-'),
|
|
291
|
+
validate: (v) => (/^[a-z0-9_-]+$/i.test(v) ? true : 'Letters, numbers, - and _ only'),
|
|
292
|
+
});
|
|
293
|
+
const environment = await select({
|
|
294
|
+
message: brand('?') + ' Environment' + brand(':'),
|
|
295
|
+
choices: [
|
|
296
|
+
{ name: `${accent('●')} Production`, value: 'production' },
|
|
297
|
+
{ name: `${brand('●')} Development`, value: 'development' },
|
|
298
|
+
{ name: `${warn('●')} Test / QA`, value: 'test' },
|
|
299
|
+
{ name: `${subtle('●')} Staging / UAT`, value: 'staging' },
|
|
300
|
+
{ name: `${dim('●')} Personal Dev (PDI)`, value: 'pdi' },
|
|
301
|
+
],
|
|
302
|
+
});
|
|
303
|
+
const group = await input({
|
|
304
|
+
message: brand('?') + ' Instance group ' + dim('(optional — Enter to skip)') + brand(':'),
|
|
305
|
+
default: '',
|
|
306
|
+
});
|
|
307
|
+
// ─── Step 2: Authentication ────────────────────────────────────────────────
|
|
308
|
+
step(2, 'Authentication');
|
|
309
|
+
sectionLabel('Choose how to authenticate with ServiceNow');
|
|
310
|
+
console.log('');
|
|
311
|
+
const authMethod = await select({
|
|
312
|
+
message: brand('?') + ' Auth method' + brand(':'),
|
|
313
|
+
choices: [
|
|
314
|
+
{ name: `${brand('🔑')} Basic ${dim('(username + password) — good for dev/PDI')}`, value: 'basic' },
|
|
315
|
+
{ name: `${accent('🔒')} OAuth 2.0 ${dim('— recommended for production')}`, value: 'oauth' },
|
|
316
|
+
],
|
|
317
|
+
});
|
|
318
|
+
const authMode = await select({
|
|
319
|
+
message: brand('?') + ' Execution context' + brand(':'),
|
|
320
|
+
choices: [
|
|
321
|
+
{
|
|
322
|
+
name: `${brand('👤')} Service account ${dim('— one shared account (default)')}`,
|
|
323
|
+
value: 'service-account',
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
name: `${accent('👥')} Per-user ${dim('— each user authenticates individually (enterprise)')}`,
|
|
327
|
+
value: 'per-user',
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
name: `${subtle('🎭')} Impersonation ${dim('— service account + X-Sn-Impersonate per user')}`,
|
|
331
|
+
value: 'impersonation',
|
|
332
|
+
},
|
|
333
|
+
],
|
|
334
|
+
});
|
|
335
|
+
// ─── Step 3: Credentials ──────────────────────────────────────────────────
|
|
336
|
+
step(3, 'Credentials');
|
|
337
|
+
let username;
|
|
338
|
+
let userPassword;
|
|
339
|
+
let clientId;
|
|
340
|
+
let clientSecret;
|
|
341
|
+
if (authMode === 'per-user') {
|
|
342
|
+
box([
|
|
343
|
+
warn('Per-user mode selected'),
|
|
344
|
+
dim('Run `nowaikit auth login` separately for each user.'),
|
|
345
|
+
dim('Provide a fallback service account for setup testing.'),
|
|
346
|
+
], warn);
|
|
347
|
+
console.log('');
|
|
348
|
+
}
|
|
349
|
+
if (authMethod === 'basic') {
|
|
350
|
+
username = await input({ message: brand('?') + ' Username' + brand(':') });
|
|
351
|
+
userPassword = await password({ message: brand('?') + ' Password' + brand(':'), mask: '•' });
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
sectionLabel('OAuth 2.0 credentials');
|
|
355
|
+
console.log('');
|
|
356
|
+
clientId = await input({ message: brand('?') + ' Client ID' + brand(':') });
|
|
357
|
+
clientSecret = await password({ message: brand('?') + ' Client Secret' + brand(':'), mask: '•' });
|
|
358
|
+
console.log('');
|
|
359
|
+
sectionLabel('Service account for token generation');
|
|
360
|
+
console.log('');
|
|
361
|
+
username = await input({ message: brand('?') + ' Username' + brand(':') });
|
|
362
|
+
userPassword = await password({ message: brand('?') + ' Password' + brand(':'), mask: '•' });
|
|
363
|
+
}
|
|
364
|
+
// ─── Step 4: Test Connection ──────────────────────────────────────────────
|
|
365
|
+
step(4, 'Testing Connection');
|
|
366
|
+
let connected = false;
|
|
367
|
+
while (!connected) {
|
|
368
|
+
const { ok } = await testConnection(instanceUrl, authMethod, {
|
|
369
|
+
username,
|
|
370
|
+
password: userPassword,
|
|
371
|
+
clientId,
|
|
372
|
+
clientSecret,
|
|
373
|
+
});
|
|
374
|
+
if (ok) {
|
|
375
|
+
connected = true;
|
|
376
|
+
break;
|
|
377
|
+
}
|
|
378
|
+
console.log('');
|
|
379
|
+
const action = await select({
|
|
380
|
+
message: warn('?') + ' What would you like to do?' + brand(':'),
|
|
381
|
+
choices: [
|
|
382
|
+
{ name: `${brand('↻')} Retry connection`, value: 'retry' },
|
|
383
|
+
{ name: `${accent('✏')} Re-enter credentials`, value: 'creds' },
|
|
384
|
+
{ name: `${subtle('💾')} Save config anyway ${dim('(fix later)')}`, value: 'save' },
|
|
385
|
+
{ name: `${err('✕')} Cancel setup`, value: 'cancel' },
|
|
386
|
+
],
|
|
387
|
+
});
|
|
388
|
+
if (action === 'cancel') {
|
|
389
|
+
console.log('');
|
|
390
|
+
box([err('Setup cancelled.')], err);
|
|
391
|
+
console.log('');
|
|
392
|
+
return;
|
|
393
|
+
}
|
|
394
|
+
if (action === 'save')
|
|
395
|
+
break;
|
|
396
|
+
if (action === 'creds') {
|
|
397
|
+
console.log('');
|
|
398
|
+
if (authMethod === 'basic') {
|
|
399
|
+
username = await input({ message: brand('?') + ' Username' + brand(':') });
|
|
400
|
+
userPassword = await password({ message: brand('?') + ' Password' + brand(':'), mask: '•' });
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
clientId = await input({ message: brand('?') + ' Client ID' + brand(':') });
|
|
404
|
+
clientSecret = await password({ message: brand('?') + ' Client Secret' + brand(':'), mask: '•' });
|
|
405
|
+
username = await input({ message: brand('?') + ' Username' + brand(':') });
|
|
406
|
+
userPassword = await password({ message: brand('?') + ' Password' + brand(':'), mask: '•' });
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
// ─── Step 5: Permissions & Role ───────────────────────────────────────────
|
|
411
|
+
step(5, 'Permissions & Role');
|
|
412
|
+
sectionLabel('Select which tools to expose to your AI client');
|
|
413
|
+
console.log('');
|
|
414
|
+
const toolPackage = await select({
|
|
415
|
+
message: brand('?') + ' Tool package' + brand(':'),
|
|
416
|
+
choices: TOOL_PACKAGES,
|
|
417
|
+
});
|
|
418
|
+
const writeEnabled = await confirm({
|
|
419
|
+
message: brand('?') + ' Enable write operations ' + dim('(create/update/delete)') + brand('?'),
|
|
420
|
+
default: false,
|
|
421
|
+
});
|
|
422
|
+
const nowAssistEnabled = await confirm({
|
|
423
|
+
message: brand('?') + ' Enable Now Assist / AI features' + brand('?'),
|
|
424
|
+
default: false,
|
|
425
|
+
});
|
|
426
|
+
// ─── Step 6: Features & Shortcuts ─────────────────────────────────────────
|
|
427
|
+
step(6, 'Features & Shortcuts');
|
|
428
|
+
console.log(` ${accent('▸')} ${white('Slash Commands')} ${dim('(type / in your AI client)')}`);
|
|
429
|
+
console.log('');
|
|
430
|
+
const commands = [
|
|
431
|
+
['/morning-standup', 'Daily briefing: P1s, SLA breaches, changes'],
|
|
432
|
+
['/my-tickets', 'All open work assigned to you'],
|
|
433
|
+
['/p1-alerts', 'Active Priority 1 incidents'],
|
|
434
|
+
['/my-changes', 'Pending change requests'],
|
|
435
|
+
['/knowledge-search', 'Search knowledge base'],
|
|
436
|
+
['/create-incident', 'Guided incident creation'],
|
|
437
|
+
['/sla-breaches', 'Records breaching SLA'],
|
|
438
|
+
['/ci-health', 'CMDB CI health check'],
|
|
439
|
+
['/run-atf', 'Trigger ATF test suite'],
|
|
440
|
+
['/switch-instance', 'Switch to different instance'],
|
|
441
|
+
['/deploy-updateset', 'Preview and commit update set'],
|
|
442
|
+
];
|
|
443
|
+
for (const [cmd, desc] of commands) {
|
|
444
|
+
console.log(` ${brand(cmd.padEnd(22))} ${dim(desc)}`);
|
|
445
|
+
}
|
|
446
|
+
console.log('');
|
|
447
|
+
console.log(` ${accent('▸')} ${white('@ Mentions')} ${dim('(type @ to reference live data)')}`);
|
|
448
|
+
console.log('');
|
|
449
|
+
const resources = [
|
|
450
|
+
['@my-incidents', 'Open incidents assigned to you'],
|
|
451
|
+
['@open-changes', 'Change requests pending approval'],
|
|
452
|
+
['@sla-breaches', 'Records breaching SLA'],
|
|
453
|
+
['@instance:info', 'Current instance metadata'],
|
|
454
|
+
['@ci:{name}', 'CMDB CI lookup (e.g. @ci:web-prod-01)'],
|
|
455
|
+
['@kb:{title}', 'KB article search (e.g. @kb:VPN-setup)'],
|
|
456
|
+
];
|
|
457
|
+
for (const [res, desc] of resources) {
|
|
458
|
+
console.log(` ${accent(res.padEnd(22))} ${dim(desc)}`);
|
|
459
|
+
}
|
|
460
|
+
console.log('');
|
|
461
|
+
console.log(` ${dim('Custom commands:')} create a ${brand('nowaikit.commands.json')} ${dim('in your project root.')}`);
|
|
462
|
+
console.log('');
|
|
463
|
+
// ─── Save instance ────────────────────────────────────────────────────────
|
|
464
|
+
const instance = {
|
|
465
|
+
name: instanceName.toLowerCase(),
|
|
466
|
+
instanceUrl,
|
|
467
|
+
authMethod,
|
|
468
|
+
username,
|
|
469
|
+
password: userPassword,
|
|
470
|
+
clientId,
|
|
471
|
+
clientSecret,
|
|
472
|
+
authMode,
|
|
473
|
+
writeEnabled,
|
|
474
|
+
toolPackage,
|
|
475
|
+
nowAssistEnabled,
|
|
476
|
+
group: group || undefined,
|
|
477
|
+
environment,
|
|
478
|
+
addedAt: new Date().toISOString(),
|
|
479
|
+
};
|
|
480
|
+
addInstance(instance);
|
|
481
|
+
box([
|
|
482
|
+
success(`✓ Instance "${instance.name}" saved`),
|
|
483
|
+
dim(` ~/.config/nowaikit/instances.json`),
|
|
484
|
+
], success);
|
|
485
|
+
// ─── Step 7: AI Client Installation ───────────────────────────────────────
|
|
486
|
+
step(7, 'Install into AI Client(s)');
|
|
487
|
+
const clients = detectClients();
|
|
488
|
+
const detected = clients.filter(c => c.detected);
|
|
489
|
+
const notDetected = clients.filter(c => !c.detected);
|
|
490
|
+
if (detected.length === 0) {
|
|
491
|
+
console.log(warn(' No AI clients detected. Generating .env file instead.'));
|
|
492
|
+
const dotenvClient = clients.find(c => c.id === 'dotenv');
|
|
493
|
+
const result = writeClientConfig(dotenvClient, instance);
|
|
494
|
+
console.log(result.success ? success(` ✓ ${result.message}`) : err(` ✗ ${result.message}`));
|
|
495
|
+
await ensureGlobalCommand();
|
|
496
|
+
printSummary(instance);
|
|
497
|
+
return;
|
|
498
|
+
}
|
|
499
|
+
sectionLabel('Detected AI clients on this machine');
|
|
500
|
+
console.log('');
|
|
501
|
+
detected.forEach(c => console.log(` ${success('✓')} ${white(c.name)}`));
|
|
502
|
+
if (notDetected.length > 0) {
|
|
503
|
+
notDetected
|
|
504
|
+
.filter(c => c.id !== 'dotenv')
|
|
505
|
+
.forEach(c => console.log(` ${dim('✗')} ${dim(c.name)}`));
|
|
506
|
+
}
|
|
507
|
+
console.log('');
|
|
508
|
+
const chosen = await checkbox({
|
|
509
|
+
message: brand('?') + ' Install into ' + dim('(space to select, enter to confirm)') + brand(':'),
|
|
510
|
+
choices: detected.map(c => ({ name: c.name, value: c.id, checked: c.id !== 'dotenv' })),
|
|
511
|
+
});
|
|
512
|
+
if (chosen.length === 0) {
|
|
513
|
+
console.log(warn('\n No clients selected. Nothing written.'));
|
|
514
|
+
await ensureGlobalCommand();
|
|
515
|
+
printSummary(instance);
|
|
516
|
+
return;
|
|
517
|
+
}
|
|
518
|
+
console.log('');
|
|
519
|
+
for (const id of chosen) {
|
|
520
|
+
const client = clients.find(c => c.id === id);
|
|
521
|
+
if (!client)
|
|
522
|
+
continue;
|
|
523
|
+
const result = writeClientConfig(client, instance);
|
|
524
|
+
if (result.success) {
|
|
525
|
+
console.log(` ${success('✓')} ${white(client.name)}: ${dim(result.message)}`);
|
|
526
|
+
if (client.note)
|
|
527
|
+
console.log(` ${dim('→')} ${subtle(client.note)}`);
|
|
528
|
+
}
|
|
529
|
+
else {
|
|
530
|
+
console.log(` ${err('✗')} ${white(client.name)}: ${err(result.message)}`);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
await ensureGlobalCommand();
|
|
534
|
+
printSummary(instance);
|
|
535
|
+
}
|
|
536
|
+
// ─── Final summary ──────────────────────────────────────────────────────────
|
|
537
|
+
function printSummary(instance) {
|
|
538
|
+
console.log('');
|
|
539
|
+
divider();
|
|
540
|
+
console.log('');
|
|
541
|
+
console.log(bright(' ╔╗╔') + teal('╔═╗') + bright('╦ ╦') + dim(' ') + teal('╔═╗') + bright('╦') + teal('╦╔═') + bright('╦') + teal('╔╦╗'));
|
|
542
|
+
console.log(teal(' ║║║') + navy('║ ║') + teal('║║║') + dim(' ') + teal('╠═╣') + navy('║') + teal('╠╩╗') + navy('║') + teal(' ║ '));
|
|
543
|
+
console.log(navy(' ╝╚╝') + teal('╚═╝') + navy('╚╩╝') + dim(' ') + navy('╩ ╩') + teal('╩') + navy('╩ ╩') + teal('╩') + navy(' ╩ ') + dim(' ') + teal('✦'));
|
|
544
|
+
console.log('');
|
|
545
|
+
box([
|
|
546
|
+
success(' Setup Complete!'),
|
|
547
|
+
'',
|
|
548
|
+
`${dim(' Instance:')} ${accent(instance.instanceUrl)}`,
|
|
549
|
+
`${dim(' Name:')} ${white(instance.name)}`,
|
|
550
|
+
...(instance.environment ? [`${dim(' Env:')} ${white(instance.environment)}`] : []),
|
|
551
|
+
...(instance.group ? [`${dim(' Group:')} ${white(instance.group)}`] : []),
|
|
552
|
+
`${dim(' Tools:')} ${white(instance.toolPackage || 'full')}`,
|
|
553
|
+
`${dim(' Write:')} ${instance.writeEnabled ? success('enabled') : dim('disabled')}`,
|
|
554
|
+
`${dim(' NowAssist:')} ${instance.nowAssistEnabled ? success('enabled') : dim('disabled')}`,
|
|
555
|
+
], brand);
|
|
556
|
+
console.log('');
|
|
557
|
+
console.log(` ${accent('▸')} ${white('Get started — restart your AI client, then try:')}`);
|
|
558
|
+
console.log('');
|
|
559
|
+
console.log(` ${brand('❯')} ${white('List my 5 most recent open incidents')}`);
|
|
560
|
+
console.log(` ${brand('❯')} ${accent('/morning-standup')}`);
|
|
561
|
+
console.log(` ${brand('❯')} ${accent('@my-incidents')}`);
|
|
562
|
+
console.log('');
|
|
563
|
+
console.log(` ${accent('▸')} ${white('Manage from the terminal:')}`);
|
|
564
|
+
console.log('');
|
|
565
|
+
console.log(` ${brand('nowaikit setup --add')} ${dim('Add another instance')}`);
|
|
566
|
+
console.log(` ${brand('nowaikit instances list')} ${dim('Show configured instances')}`);
|
|
567
|
+
console.log(` ${brand('nowaikit instances remove')} ${dim('Remove an instance')}`);
|
|
568
|
+
if (instance.authMode === 'per-user') {
|
|
569
|
+
console.log(` ${brand('nowaikit auth login')} ${dim('Authenticate as yourself')}`);
|
|
570
|
+
}
|
|
571
|
+
console.log('');
|
|
572
|
+
divider();
|
|
573
|
+
console.log('');
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { InstanceConfig } from '../config-store.js';
|
|
2
|
+
import type { DetectedClient } from '../detect-clients.js';
|
|
3
|
+
export interface WriteResult {
|
|
4
|
+
success: boolean;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
/** Write to the appropriate config based on client type. */
|
|
8
|
+
export declare function writeClientConfig(client: DetectedClient, instance: InstanceConfig): WriteResult;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/writers/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAyHD,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,GAAG,WAAW,CAa/F"}
|