@indemn/cli 1.6.0 → 1.7.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/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +9 -4
- package/.github/workflows/ci.yml +10 -0
- package/.github/workflows/publish.yml +2 -2
- package/.mcp.json +1 -4
- package/CONTRIBUTING.md +3 -1
- package/README.md +69 -176
- package/dist/cli/agents.d.ts.map +1 -1
- package/dist/cli/agents.js +226 -18
- package/dist/cli/agents.js.map +1 -1
- package/dist/cli/analytics.d.ts +3 -0
- package/dist/cli/analytics.d.ts.map +1 -0
- package/dist/cli/analytics.js +133 -0
- package/dist/cli/analytics.js.map +1 -0
- package/dist/cli/auth.d.ts.map +1 -1
- package/dist/cli/auth.js +62 -17
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/billing.d.ts +3 -0
- package/dist/cli/billing.d.ts.map +1 -0
- package/dist/cli/billing.js +23 -0
- package/dist/cli/billing.js.map +1 -0
- package/dist/cli/campaigns.d.ts +3 -0
- package/dist/cli/campaigns.d.ts.map +1 -0
- package/dist/cli/campaigns.js +34 -0
- package/dist/cli/campaigns.js.map +1 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +69 -102
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +71 -27
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/conversations.d.ts +3 -0
- package/dist/cli/conversations.d.ts.map +1 -0
- package/dist/cli/conversations.js +129 -0
- package/dist/cli/conversations.js.map +1 -0
- package/dist/cli/distribution.d.ts +3 -0
- package/dist/cli/distribution.d.ts.map +1 -0
- package/dist/cli/distribution.js +122 -0
- package/dist/cli/distribution.js.map +1 -0
- package/dist/cli/eval.d.ts.map +1 -1
- package/dist/cli/eval.js +315 -71
- package/dist/cli/eval.js.map +1 -1
- package/dist/cli/functions.d.ts.map +1 -1
- package/dist/cli/functions.js +109 -38
- package/dist/cli/functions.js.map +1 -1
- package/dist/cli/index.js +63 -54
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init.d.ts +27 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +152 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/kb.d.ts.map +1 -1
- package/dist/cli/kb.js +141 -15
- package/dist/cli/kb.js.map +1 -1
- package/dist/cli/link.d.ts +21 -0
- package/dist/cli/link.d.ts.map +1 -0
- package/dist/cli/link.js +112 -0
- package/dist/cli/link.js.map +1 -0
- package/dist/cli/org.d.ts.map +1 -1
- package/dist/cli/org.js +79 -67
- package/dist/cli/org.js.map +1 -1
- package/dist/cli/platform.d.ts +3 -0
- package/dist/cli/platform.d.ts.map +1 -0
- package/dist/cli/platform.js +133 -0
- package/dist/cli/platform.js.map +1 -0
- package/dist/cli/tickets.d.ts +3 -0
- package/dist/cli/tickets.d.ts.map +1 -0
- package/dist/cli/tickets.js +125 -0
- package/dist/cli/tickets.js.map +1 -0
- package/dist/cli/utils/output.d.ts +15 -9
- package/dist/cli/utils/output.d.ts.map +1 -1
- package/dist/cli/utils/output.js +53 -46
- package/dist/cli/utils/output.js.map +1 -1
- package/dist/cli/voice.d.ts +3 -0
- package/dist/cli/voice.d.ts.map +1 -0
- package/dist/cli/voice.js +206 -0
- package/dist/cli/voice.js.map +1 -0
- package/dist/core/diff.d.ts +16 -0
- package/dist/core/diff.d.ts.map +1 -0
- package/dist/core/diff.js +57 -0
- package/dist/core/diff.js.map +1 -0
- package/dist/core/org-resolver.d.ts +37 -0
- package/dist/core/org-resolver.d.ts.map +1 -0
- package/dist/core/org-resolver.js +73 -0
- package/dist/core/org-resolver.js.map +1 -0
- package/dist/core/runtime.d.ts +36 -0
- package/dist/core/runtime.d.ts.map +1 -0
- package/dist/core/runtime.js +62 -0
- package/dist/core/runtime.js.map +1 -0
- package/dist/core/scope.d.ts +33 -0
- package/dist/core/scope.d.ts.map +1 -0
- package/dist/core/scope.js +37 -0
- package/dist/core/scope.js.map +1 -0
- package/dist/mcp/registry.d.ts +67 -0
- package/dist/mcp/registry.d.ts.map +1 -0
- package/dist/mcp/registry.js +195 -0
- package/dist/mcp/registry.js.map +1 -0
- package/dist/mcp/server.d.ts +9 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +87 -2
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-meta.d.ts +21 -0
- package/dist/mcp/tool-meta.d.ts.map +1 -0
- package/dist/mcp/tool-meta.js +203 -0
- package/dist/mcp/tool-meta.js.map +1 -0
- package/dist/mcp/tools.d.ts +2 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +1462 -215
- package/dist/mcp/tools.js.map +1 -1
- package/dist/sdk/agent-bundle.d.ts +99 -0
- package/dist/sdk/agent-bundle.d.ts.map +1 -0
- package/dist/sdk/agent-bundle.js +211 -0
- package/dist/sdk/agent-bundle.js.map +1 -0
- package/dist/sdk/agents.d.ts +54 -1
- package/dist/sdk/agents.d.ts.map +1 -1
- package/dist/sdk/agents.js +59 -5
- package/dist/sdk/agents.js.map +1 -1
- package/dist/sdk/analytics.d.ts +158 -0
- package/dist/sdk/analytics.d.ts.map +1 -0
- package/dist/sdk/analytics.js +185 -0
- package/dist/sdk/analytics.js.map +1 -0
- package/dist/sdk/auth.d.ts +34 -12
- package/dist/sdk/auth.d.ts.map +1 -1
- package/dist/sdk/auth.js +60 -77
- package/dist/sdk/auth.js.map +1 -1
- package/dist/sdk/billing.d.ts +25 -0
- package/dist/sdk/billing.d.ts.map +1 -0
- package/dist/sdk/billing.js +61 -0
- package/dist/sdk/billing.js.map +1 -0
- package/dist/sdk/campaigns.d.ts +35 -0
- package/dist/sdk/campaigns.d.ts.map +1 -0
- package/dist/sdk/campaigns.js +59 -0
- package/dist/sdk/campaigns.js.map +1 -0
- package/dist/sdk/chat.d.ts +25 -2
- package/dist/sdk/chat.d.ts.map +1 -1
- package/dist/sdk/chat.js +37 -10
- package/dist/sdk/chat.js.map +1 -1
- package/dist/sdk/client.d.ts +93 -5
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +362 -100
- package/dist/sdk/client.js.map +1 -1
- package/dist/sdk/config-change.d.ts +74 -0
- package/dist/sdk/config-change.d.ts.map +1 -0
- package/dist/sdk/config-change.js +117 -0
- package/dist/sdk/config-change.js.map +1 -0
- package/dist/sdk/config.d.ts.map +1 -1
- package/dist/sdk/config.js +2 -1
- package/dist/sdk/config.js.map +1 -1
- package/dist/sdk/conversations.d.ts +101 -0
- package/dist/sdk/conversations.d.ts.map +1 -0
- package/dist/sdk/conversations.js +155 -0
- package/dist/sdk/conversations.js.map +1 -0
- package/dist/sdk/credentials.d.ts +25 -0
- package/dist/sdk/credentials.d.ts.map +1 -0
- package/dist/sdk/credentials.js +44 -0
- package/dist/sdk/credentials.js.map +1 -0
- package/dist/sdk/distribution.d.ts +94 -0
- package/dist/sdk/distribution.d.ts.map +1 -0
- package/dist/sdk/distribution.js +100 -0
- package/dist/sdk/distribution.js.map +1 -0
- package/dist/sdk/eval.d.ts +81 -0
- package/dist/sdk/eval.d.ts.map +1 -1
- package/dist/sdk/eval.js +117 -0
- package/dist/sdk/eval.js.map +1 -1
- package/dist/sdk/functions.d.ts +14 -1
- package/dist/sdk/functions.d.ts.map +1 -1
- package/dist/sdk/functions.js +48 -5
- package/dist/sdk/functions.js.map +1 -1
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/index.js +2 -0
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/jarvis-chat.d.ts +28 -0
- package/dist/sdk/jarvis-chat.d.ts.map +1 -0
- package/dist/sdk/jarvis-chat.js +117 -0
- package/dist/sdk/jarvis-chat.js.map +1 -0
- package/dist/sdk/kb.d.ts +69 -1
- package/dist/sdk/kb.d.ts.map +1 -1
- package/dist/sdk/kb.js +111 -24
- package/dist/sdk/kb.js.map +1 -1
- package/dist/sdk/orgs.d.ts +13 -0
- package/dist/sdk/orgs.d.ts.map +1 -0
- package/dist/sdk/orgs.js +59 -0
- package/dist/sdk/orgs.js.map +1 -0
- package/dist/sdk/platform.d.ts +62 -0
- package/dist/sdk/platform.d.ts.map +1 -0
- package/dist/sdk/platform.js +95 -0
- package/dist/sdk/platform.js.map +1 -0
- package/dist/sdk/session.d.ts +25 -0
- package/dist/sdk/session.d.ts.map +1 -0
- package/dist/sdk/session.js +69 -0
- package/dist/sdk/session.js.map +1 -0
- package/dist/sdk/skills.d.ts +46 -0
- package/dist/sdk/skills.d.ts.map +1 -0
- package/dist/sdk/skills.js +203 -0
- package/dist/sdk/skills.js.map +1 -0
- package/dist/sdk/test-chat.d.ts +52 -0
- package/dist/sdk/test-chat.d.ts.map +1 -0
- package/dist/sdk/test-chat.js +134 -0
- package/dist/sdk/test-chat.js.map +1 -0
- package/dist/sdk/tickets.d.ts +98 -0
- package/dist/sdk/tickets.d.ts.map +1 -0
- package/dist/sdk/tickets.js +91 -0
- package/dist/sdk/tickets.js.map +1 -0
- package/dist/sdk/types.d.ts +91 -6
- package/dist/sdk/types.d.ts.map +1 -1
- package/dist/sdk/voice.d.ts +147 -0
- package/dist/sdk/voice.d.ts.map +1 -0
- package/dist/sdk/voice.js +236 -0
- package/dist/sdk/voice.js.map +1 -0
- package/package.json +22 -3
- package/scripts/check-skills.mjs +25 -0
- package/skills/agent-builder/SKILL.md +89 -252
- package/skills/evaluations/SKILL.md +23 -234
- package/skills/evaluations/references/analysis.md +95 -0
- package/skills/evaluations/references/cli-reference.md +28 -0
- package/skills/evaluations/references/json-formats.md +100 -0
- package/src/cli/agents.ts +202 -22
- package/src/cli/analytics.ts +138 -0
- package/src/cli/auth.ts +56 -18
- package/src/cli/billing.ts +25 -0
- package/src/cli/campaigns.ts +33 -0
- package/src/cli/chat.ts +66 -115
- package/src/cli/config.ts +65 -31
- package/src/cli/conversations.ts +133 -0
- package/src/cli/distribution.ts +116 -0
- package/src/cli/eval.ts +254 -70
- package/src/cli/functions.ts +105 -39
- package/src/cli/index.ts +58 -55
- package/src/cli/init.ts +154 -0
- package/src/cli/kb.ts +120 -17
- package/src/cli/link.ts +117 -0
- package/src/cli/org.ts +81 -75
- package/src/cli/platform.ts +128 -0
- package/src/cli/tickets.ts +130 -0
- package/src/cli/utils/output.ts +51 -42
- package/src/cli/voice.ts +204 -0
- package/src/core/diff.ts +52 -0
- package/src/core/org-resolver.ts +113 -0
- package/src/core/runtime.ts +73 -0
- package/src/core/scope.ts +64 -0
- package/src/mcp/registry.ts +236 -0
- package/src/mcp/server.ts +84 -2
- package/src/mcp/tool-meta.ts +241 -0
- package/src/mcp/tools.ts +1529 -265
- package/src/sdk/agent-bundle.ts +245 -0
- package/src/sdk/agents.ts +74 -5
- package/src/sdk/analytics.ts +220 -0
- package/src/sdk/auth.ts +87 -107
- package/src/sdk/billing.ts +59 -0
- package/src/sdk/campaigns.ts +60 -0
- package/src/sdk/chat.ts +44 -10
- package/src/sdk/client.ts +373 -102
- package/src/sdk/config-change.ts +148 -0
- package/src/sdk/config.ts +2 -1
- package/src/sdk/conversations.ts +199 -0
- package/src/sdk/credentials.ts +53 -0
- package/src/sdk/distribution.ts +132 -0
- package/src/sdk/eval.ts +140 -0
- package/src/sdk/functions.ts +52 -6
- package/src/sdk/index.ts +2 -0
- package/src/sdk/jarvis-chat.ts +112 -0
- package/src/sdk/kb.ts +116 -29
- package/src/sdk/orgs.ts +62 -0
- package/src/sdk/platform.ts +115 -0
- package/src/sdk/session.ts +90 -0
- package/src/sdk/skills.ts +188 -0
- package/src/sdk/test-chat.ts +151 -0
- package/src/sdk/tickets.ts +120 -0
- package/src/sdk/types.ts +88 -6
- package/src/sdk/voice.ts +262 -0
- package/test/cli/entry.test.ts +34 -0
- package/test/cli/init.test.ts +66 -0
- package/test/cli/link.test.ts +57 -0
- package/test/core/org-resolver.test.ts +92 -0
- package/test/core/runtime.test.ts +30 -0
- package/test/core/scope.test.ts +93 -0
- package/test/harness.test.ts +24 -0
- package/test/helpers/config-home.ts +22 -0
- package/test/helpers/fake-middleware.ts +56 -0
- package/test/helpers/fetch-recorder.ts +75 -0
- package/test/helpers/jwt.ts +9 -0
- package/test/helpers/mcp-pair.ts +38 -0
- package/test/mcp/__snapshots__/tools-snapshot.test.ts.snap +145 -0
- package/test/mcp/askers.test.ts +60 -0
- package/test/mcp/elicit-timeout.test.ts +29 -0
- package/test/mcp/registry.test.ts +169 -0
- package/test/mcp/shaping.test.ts +41 -0
- package/test/mcp/tools-snapshot.test.ts +42 -0
- package/test/sdk/agents.test.ts +232 -0
- package/test/sdk/analytics.test.ts +89 -0
- package/test/sdk/auth.test.ts +70 -0
- package/test/sdk/billing.test.ts +47 -0
- package/test/sdk/campaigns.test.ts +43 -0
- package/test/sdk/client.test.ts +80 -0
- package/test/sdk/config-change.test.ts +142 -0
- package/test/sdk/conversations.test.ts +80 -0
- package/test/sdk/credentials.test.ts +33 -0
- package/test/sdk/distribution.test.ts +55 -0
- package/test/sdk/eval.test.ts +155 -0
- package/test/sdk/kb-upload.test.ts +50 -0
- package/test/sdk/kb.test.ts +95 -0
- package/test/sdk/orgs.test.ts +48 -0
- package/test/sdk/platform.test.ts +89 -0
- package/test/sdk/renewal.test.ts +115 -0
- package/test/sdk/session.test.ts +60 -0
- package/test/sdk/skills.test.ts +235 -0
- package/test/sdk/test-chat.test.ts +112 -0
- package/test/sdk/tickets.test.ts +42 -0
- package/test/sdk/voice.test.ts +147 -0
- package/vitest.config.ts +11 -0
package/dist/cli/agents.js
CHANGED
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import ora from 'ora';
|
|
2
2
|
import { IndemnClient } from '../sdk/client.js';
|
|
3
|
-
import { AgentsSDK } from '../sdk/agents.js';
|
|
3
|
+
import { AgentInsightsSDK, AgentsSDK } from '../sdk/agents.js';
|
|
4
|
+
import { CliError, EXIT } from '../core/runtime.js';
|
|
5
|
+
import { confirmOrExit } from './link.js';
|
|
6
|
+
import { DistributionSDK } from '../sdk/distribution.js';
|
|
7
|
+
import { readFileSync, writeFileSync } from 'node:fs';
|
|
8
|
+
import chalk from 'chalk';
|
|
9
|
+
import { isNonInteractive } from '../core/runtime.js';
|
|
10
|
+
import { askLine } from './utils/output.js';
|
|
11
|
+
import { createAgentFromSkeleton, exportAgent, importAgent, missingSkeletonFields, parseModel, } from '../sdk/agent-bundle.js';
|
|
4
12
|
import { exportAgentCard } from '../report/export.js';
|
|
5
|
-
import { formatTable, printJson, printError, printSuccess
|
|
13
|
+
import { formatTable, printJson, printError, printSuccess } from './utils/output.js';
|
|
6
14
|
function formatChannels(channels) {
|
|
7
15
|
if (!channels || channels.length === 0)
|
|
8
16
|
return 'WEB';
|
|
@@ -85,20 +93,127 @@ export function registerAgentCommands(program) {
|
|
|
85
93
|
});
|
|
86
94
|
agents
|
|
87
95
|
.command('create')
|
|
88
|
-
.description('Create a
|
|
89
|
-
.
|
|
90
|
-
.option('--channels <channels>', 'Comma-separated channels', 'WEB')
|
|
96
|
+
.description('Create an agent with its basics: name, channels, purpose, prompt and model. Asks for missing ones in a terminal.')
|
|
97
|
+
.option('--name <name>', 'Agent name')
|
|
98
|
+
.option('--channels <channels>', 'Comma-separated channels (see `indemn channels list`)', 'WEB')
|
|
99
|
+
.option('--description <text>', 'What the agent is for')
|
|
100
|
+
.option('--prompt <text>', 'System prompt')
|
|
101
|
+
.option('--prompt-file <path>', 'Read the system prompt from a file')
|
|
102
|
+
.option('--model <provider/model>', 'LLM, for example openai/gpt-4.1 (see `indemn models`)')
|
|
103
|
+
.option('--allow-duplicate', 'Create even if an agent with this name exists in the org')
|
|
104
|
+
.option('--template <id>', 'Copy a template instead (see `indemn templates list`); keeps its prompt, model, skills and knowledge')
|
|
105
|
+
.option('--json', 'Output as JSON')
|
|
91
106
|
.action(async (options) => {
|
|
92
107
|
try {
|
|
108
|
+
if (options.template) {
|
|
109
|
+
if (!options.name)
|
|
110
|
+
throw new CliError('Name the new agent: --name "<name>".', EXIT.NEEDS_INPUT);
|
|
111
|
+
const client = new IndemnClient();
|
|
112
|
+
if (!options.allowDuplicate && (await new AgentsSDK(client).findByName(options.name)).length) {
|
|
113
|
+
throw new CliError(`An agent named "${options.name}" already exists in this org. Choose another name or pass --allow-duplicate.`, EXIT.NEEDS_INPUT);
|
|
114
|
+
}
|
|
115
|
+
const res = await new DistributionSDK(client).createFromTemplate(options.template, {
|
|
116
|
+
name: options.name, channels: String(options.channels).split(',').map((c) => c.trim()).filter(Boolean),
|
|
117
|
+
});
|
|
118
|
+
if (options.json) {
|
|
119
|
+
printJson(res);
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
printSuccess(`Agent created from template: ${res.new_agent_id} (${res.new_agent_name})`);
|
|
123
|
+
console.log(chalk.dim(' Not copied: phone numbers, voice settings, website distributions.'));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
const skeleton = {
|
|
127
|
+
name: options.name ?? '',
|
|
128
|
+
channels: String(options.channels).split(',').map((c) => c.trim()).filter(Boolean),
|
|
129
|
+
description: options.description,
|
|
130
|
+
system_prompt: options.promptFile ? readFileSync(options.promptFile, 'utf8') : options.prompt,
|
|
131
|
+
model: options.model ? parseModel(options.model) : undefined,
|
|
132
|
+
};
|
|
133
|
+
const missing = missingSkeletonFields(skeleton);
|
|
134
|
+
if (missing.length && !isNonInteractive()) {
|
|
135
|
+
if (missing.includes('name'))
|
|
136
|
+
skeleton.name = await askLine('Agent name: ');
|
|
137
|
+
if (missing.includes('description'))
|
|
138
|
+
skeleton.description = await askLine('What is this agent for? (one line, Enter to skip): ');
|
|
139
|
+
if (missing.includes('system_prompt'))
|
|
140
|
+
skeleton.system_prompt = await askLine('System prompt (Enter to skip; use --prompt-file for long prompts): ');
|
|
141
|
+
}
|
|
142
|
+
if (!skeleton.name.trim())
|
|
143
|
+
throw new CliError('An agent needs a name: --name "<name>".', EXIT.NEEDS_INPUT);
|
|
93
144
|
const client = new IndemnClient();
|
|
94
|
-
const sdk = new AgentsSDK(client);
|
|
95
145
|
const spinner = ora('Creating agent...').start();
|
|
96
|
-
const
|
|
97
|
-
const agent = await sdk.createAgent({ name: options.name, channels });
|
|
146
|
+
const { agent, set } = await createAgentFromSkeleton(client, skeleton, { allowDuplicate: options.allowDuplicate });
|
|
98
147
|
spinner.stop();
|
|
148
|
+
if (options.json) {
|
|
149
|
+
printJson({ agent, set });
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
99
152
|
printSuccess(`Agent created: ${agent._id}`);
|
|
100
153
|
console.log(` Name: ${agent.name}`);
|
|
101
154
|
console.log(` Channels: ${formatChannels(agent.channels || [])}`);
|
|
155
|
+
console.log(` Set: ${set.join(', ')}`);
|
|
156
|
+
const unset = missingSkeletonFields(skeleton);
|
|
157
|
+
if (unset.length)
|
|
158
|
+
console.log(chalk.dim(` Not set yet: ${unset.join(', ')}. Use \`indemn config set ${agent._id}\`.`));
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
printError(err);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
agents
|
|
166
|
+
.command('export')
|
|
167
|
+
.argument('<id>', 'Agent ID')
|
|
168
|
+
.option('-o, --output <file>', 'Write to a file instead of stdout')
|
|
169
|
+
.option('--include-secrets', 'Keep API keys and tokens inside skill settings (default: redacted)')
|
|
170
|
+
.description('Save an agent (prompt, greeting, model, skills, linked knowledge bases) to a JSON bundle')
|
|
171
|
+
.action(async (id, options) => {
|
|
172
|
+
try {
|
|
173
|
+
const bundle = await exportAgent(new IndemnClient(), id, { includeSecrets: options.includeSecrets });
|
|
174
|
+
const text = JSON.stringify(bundle, null, 2) + '\n';
|
|
175
|
+
if (options.output) {
|
|
176
|
+
writeFileSync(options.output, text, { mode: options.includeSecrets ? 0o600 : 0o644 });
|
|
177
|
+
printSuccess(`Wrote ${options.output}.`);
|
|
178
|
+
if (bundle.redacted.length)
|
|
179
|
+
console.log(chalk.dim(` Redacted ${bundle.redacted.length} secret value(s); fill them in after import.`));
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
process.stdout.write(text);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (err) {
|
|
186
|
+
printError(err);
|
|
187
|
+
process.exit(1);
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
agents
|
|
191
|
+
.command('import')
|
|
192
|
+
.argument('<file>', 'Bundle written by `indemn agents export`')
|
|
193
|
+
.option('--name <name>', 'Name for the new agent (default: the bundle name)')
|
|
194
|
+
.option('--link-kbs', 'Link the same knowledge base ids if they exist in this org')
|
|
195
|
+
.option('--allow-duplicate', 'Create even if an agent with this name exists in the org')
|
|
196
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
197
|
+
.option('--json', 'Output as JSON')
|
|
198
|
+
.description('Create a new agent in the chosen org from an exported bundle')
|
|
199
|
+
.action(async (file, options) => {
|
|
200
|
+
try {
|
|
201
|
+
const bundle = JSON.parse(readFileSync(file, 'utf8'));
|
|
202
|
+
const client = new IndemnClient();
|
|
203
|
+
const org = await client.resolveOrg();
|
|
204
|
+
await confirmOrExit(`Create agent "${options.name ?? bundle.agent?.name}" with ${bundle.skills?.length ?? 0} skill(s) in ${org.name ?? org.id} on ${client.getEnvironment()}?`, Boolean(options.yes));
|
|
205
|
+
const report = await importAgent(client, bundle, { name: options.name, allowDuplicate: options.allowDuplicate, linkKnowledgeBases: options.linkKbs });
|
|
206
|
+
if (options.json) {
|
|
207
|
+
printJson(report);
|
|
208
|
+
return;
|
|
209
|
+
}
|
|
210
|
+
printSuccess(`Agent created: ${report.agent._id} (${report.skills_created} skill(s) created, ${report.built_in_skills_reused.length} built-in reused)`);
|
|
211
|
+
for (const f of report.skills_failed)
|
|
212
|
+
console.log(chalk.yellow(` Skill ${f.name ?? '(unnamed)'} failed: ${f.error}`));
|
|
213
|
+
if (report.needs_secrets.length)
|
|
214
|
+
console.log(chalk.yellow(` Fill in ${report.needs_secrets.length} redacted secret(s) in the skills.`));
|
|
215
|
+
if (report.knowledge_bases_skipped.length)
|
|
216
|
+
console.log(chalk.dim(` Knowledge bases not linked: ${report.knowledge_bases_skipped.join(', ')}`));
|
|
102
217
|
}
|
|
103
218
|
catch (err) {
|
|
104
219
|
printError(err);
|
|
@@ -140,16 +255,15 @@ export function registerAgentCommands(program) {
|
|
|
140
255
|
agents
|
|
141
256
|
.command('delete')
|
|
142
257
|
.argument('<id>', 'Agent ID')
|
|
143
|
-
.
|
|
144
|
-
.
|
|
258
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
259
|
+
.description('Delete an agent (asks first; --yes for scripts)')
|
|
260
|
+
.action(async (id, options) => {
|
|
145
261
|
try {
|
|
146
|
-
const confirmed = await confirm(`Delete agent ${id}? This cannot be undone.`);
|
|
147
|
-
if (!confirmed) {
|
|
148
|
-
console.log('Cancelled.');
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
262
|
const client = new IndemnClient();
|
|
152
263
|
const sdk = new AgentsSDK(client);
|
|
264
|
+
const agent = await sdk.getAgent(id);
|
|
265
|
+
const org = await client.resolveOrg();
|
|
266
|
+
await confirmOrExit(`Delete agent "${agent?.name ?? id}" (${id}) in org ${org.name ?? org.id} on ${client.getEnvironment()}? This cannot be undone.`, Boolean(options.yes));
|
|
153
267
|
const spinner = ora('Deleting agent...').start();
|
|
154
268
|
await sdk.deleteAgent(id);
|
|
155
269
|
spinner.stop();
|
|
@@ -160,6 +274,99 @@ export function registerAgentCommands(program) {
|
|
|
160
274
|
process.exit(1);
|
|
161
275
|
}
|
|
162
276
|
});
|
|
277
|
+
agents
|
|
278
|
+
.command('lifecycle')
|
|
279
|
+
.argument('<id>', 'Agent ID')
|
|
280
|
+
.argument('<stage>', 'prototype, beta or published')
|
|
281
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
282
|
+
.description('Change the lifecycle stage (only the owner or an org admin may; checked by the V2 platform)')
|
|
283
|
+
.action(async (id, stage, options) => {
|
|
284
|
+
try {
|
|
285
|
+
if (!['prototype', 'beta', 'published'].includes(stage)) {
|
|
286
|
+
throw new CliError('Stage must be prototype, beta or published.', EXIT.NEEDS_INPUT);
|
|
287
|
+
}
|
|
288
|
+
const client = new IndemnClient();
|
|
289
|
+
const insights = new AgentInsightsSDK(client);
|
|
290
|
+
const before = await insights.detail(id);
|
|
291
|
+
if (before.lifecycle === stage) {
|
|
292
|
+
console.log(`Agent ${id} is already ${stage}.`);
|
|
293
|
+
return;
|
|
294
|
+
}
|
|
295
|
+
await confirmOrExit(`Move "${before.name}" from ${before.lifecycle ?? 'prototype'} to ${stage}?`, Boolean(options.yes));
|
|
296
|
+
const after = await insights.setLifecycle(id, stage);
|
|
297
|
+
printSuccess(`Agent ${id} is now ${after.lifecycle}.`);
|
|
298
|
+
}
|
|
299
|
+
catch (err) {
|
|
300
|
+
printError(err);
|
|
301
|
+
process.exit(1);
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
agents
|
|
305
|
+
.command('owner')
|
|
306
|
+
.argument('<id>', 'Agent ID')
|
|
307
|
+
.argument('[user-id]', 'New owner (user id); omit to show the current owner')
|
|
308
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
309
|
+
.option('--json', 'Output as JSON')
|
|
310
|
+
.description('Show or transfer the owner (transfer: owner or org admin only)')
|
|
311
|
+
.action(async (id, userId, options) => {
|
|
312
|
+
try {
|
|
313
|
+
const client = new IndemnClient();
|
|
314
|
+
const insights = new AgentInsightsSDK(client);
|
|
315
|
+
const detail = await insights.detail(id);
|
|
316
|
+
if (!userId) {
|
|
317
|
+
if (options.json) {
|
|
318
|
+
printJson({ owner: detail.owner ?? null, lifecycle: detail.lifecycle });
|
|
319
|
+
return;
|
|
320
|
+
}
|
|
321
|
+
const o = detail.owner;
|
|
322
|
+
console.log(o ? `${[o.firstname, o.lastname].filter(Boolean).join(' ')} <${o.email ?? ''}> (${o.id})` : 'No owner recorded.');
|
|
323
|
+
return;
|
|
324
|
+
}
|
|
325
|
+
await confirmOrExit(`Transfer "${detail.name}" to user ${userId}?`, Boolean(options.yes));
|
|
326
|
+
await insights.transferOwner(id, userId);
|
|
327
|
+
printSuccess(`Owner of ${id} is now ${userId}.`);
|
|
328
|
+
}
|
|
329
|
+
catch (err) {
|
|
330
|
+
printError(err);
|
|
331
|
+
process.exit(1);
|
|
332
|
+
}
|
|
333
|
+
});
|
|
334
|
+
agents
|
|
335
|
+
.command('summary')
|
|
336
|
+
.argument('<id>', 'Agent ID')
|
|
337
|
+
.option('--full', 'Skills and knowledge sources instead of one paragraph')
|
|
338
|
+
.option('--json', 'Output as JSON')
|
|
339
|
+
.description('What the agent does, written for a person or an AI to read before changing it')
|
|
340
|
+
.action(async (id, options) => {
|
|
341
|
+
try {
|
|
342
|
+
const result = await new AgentInsightsSDK(new IndemnClient()).summary(id, { text: !options.full });
|
|
343
|
+
if (options.json || options.full) {
|
|
344
|
+
printJson(result);
|
|
345
|
+
return;
|
|
346
|
+
}
|
|
347
|
+
console.log(result.summary ?? '');
|
|
348
|
+
}
|
|
349
|
+
catch (err) {
|
|
350
|
+
printError(err);
|
|
351
|
+
process.exit(1);
|
|
352
|
+
}
|
|
353
|
+
});
|
|
354
|
+
agents
|
|
355
|
+
.command('stats')
|
|
356
|
+
.argument('<id>', 'Agent ID')
|
|
357
|
+
.option('--from <date>', 'YYYY-MM-DD (default: 30 days ago)')
|
|
358
|
+
.option('--to <date>', 'YYYY-MM-DD (default: today)')
|
|
359
|
+
.option('--channel <channel>', 'web, voice or all', 'all')
|
|
360
|
+
.description('Conversation metrics for one agent (test conversations excluded)')
|
|
361
|
+
.action(async (id, options) => {
|
|
362
|
+
try {
|
|
363
|
+
printJson(await new AgentInsightsSDK(new IndemnClient()).stats(id, { from: options.from, to: options.to, channel: options.channel }));
|
|
364
|
+
}
|
|
365
|
+
catch (err) {
|
|
366
|
+
printError(err);
|
|
367
|
+
process.exit(1);
|
|
368
|
+
}
|
|
369
|
+
});
|
|
163
370
|
agents
|
|
164
371
|
.command('card')
|
|
165
372
|
.argument('<id>', 'Agent ID')
|
|
@@ -182,13 +389,14 @@ export function registerAgentCommands(program) {
|
|
|
182
389
|
agents
|
|
183
390
|
.command('clone')
|
|
184
391
|
.argument('<id>', 'Agent ID to clone')
|
|
185
|
-
.
|
|
186
|
-
.
|
|
392
|
+
.option('--name <name>', 'Name of the copy')
|
|
393
|
+
.description('Copy an agent of this org into a new agent in the same org')
|
|
394
|
+
.action(async (id, options) => {
|
|
187
395
|
try {
|
|
188
396
|
const client = new IndemnClient();
|
|
189
397
|
const sdk = new AgentsSDK(client);
|
|
190
398
|
const spinner = ora('Cloning agent...').start();
|
|
191
|
-
const result = await sdk.cloneAgent(id);
|
|
399
|
+
const result = await sdk.cloneAgent(id, { name: options.name });
|
|
192
400
|
spinner.stop();
|
|
193
401
|
// Clone returns { new_agent_id, new_agent_name } or an Agent object
|
|
194
402
|
const raw = result;
|
package/dist/cli/agents.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/cli/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2GhE"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
import { IndemnClient } from '../sdk/client.js';
|
|
3
|
+
import { AnalyticsSDK, AuditSDK, OrgSettingsSDK } from '../sdk/analytics.js';
|
|
4
|
+
import { CliError, EXIT } from '../core/runtime.js';
|
|
5
|
+
import { confirmOrExit } from './link.js';
|
|
6
|
+
import { formatTable, printError, printJson, printSuccess } from './utils/output.js';
|
|
7
|
+
function run(fn) {
|
|
8
|
+
return fn().catch((err) => {
|
|
9
|
+
printError(err);
|
|
10
|
+
process.exit(1);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function withRange(cmd, agent = true) {
|
|
14
|
+
cmd.option('--from <date>', 'YYYY-MM-DD (default: 30 days ago)').option('--to <date>', 'YYYY-MM-DD (default: today)');
|
|
15
|
+
if (agent)
|
|
16
|
+
cmd.option('--agent <id>', 'Only this agent').option('--channel <channel>', 'web, voice or all', 'all');
|
|
17
|
+
return cmd;
|
|
18
|
+
}
|
|
19
|
+
const KINDS = {
|
|
20
|
+
metrics: 'metrics',
|
|
21
|
+
performance: 'model-performance',
|
|
22
|
+
'performance-by-agent': 'model-performance/bots',
|
|
23
|
+
volume: 'agent-volume',
|
|
24
|
+
handoffs: 'handoff-precursors',
|
|
25
|
+
feedback: 'critical-feedback',
|
|
26
|
+
};
|
|
27
|
+
export function registerAnalyticsCommands(program) {
|
|
28
|
+
const analytics = program.command('analytics').description('The numbers of the dashboard analytics pages (test conversations excluded)');
|
|
29
|
+
for (const [name, kind] of Object.entries(KINDS)) {
|
|
30
|
+
const perAgent = !['performance-by-agent', 'volume'].includes(name);
|
|
31
|
+
withRange(analytics.command(name).description(`Analytics: ${kind}`), perAgent)
|
|
32
|
+
.action((options) => run(async () => {
|
|
33
|
+
printJson(await new AnalyticsSDK(new IndemnClient()).get(kind, { from: options.from, to: options.to, channel: options.channel, agentId: options.agent }));
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
withRange(analytics.command('conversations').description('The conversations behind a number, e.g. --dimension outcome --value handoff'))
|
|
37
|
+
.option('--dimension <name>', 'outcome, feedback, sentiment, precursor, reason, critical_feedback_theme or attribute:<key>')
|
|
38
|
+
.option('--value <value>', 'Value of the dimension')
|
|
39
|
+
.option('--search <text>', 'Text search')
|
|
40
|
+
.option('--page <n>', 'Page, starting at 1', '1')
|
|
41
|
+
.option('--page-size <n>', 'Rows per page (at most 200)', '50')
|
|
42
|
+
.action((options) => run(async () => {
|
|
43
|
+
printJson(await new AnalyticsSDK(new IndemnClient()).conversations({
|
|
44
|
+
from: options.from, to: options.to, channel: options.channel, agentId: options.agent, dimension: options.dimension, value: options.value,
|
|
45
|
+
search: options.search, page: Number(options.page), pageSize: Number(options.pageSize),
|
|
46
|
+
}));
|
|
47
|
+
}));
|
|
48
|
+
analytics.command('charts').description('Custom charts configured for the org').action(() => run(async () => {
|
|
49
|
+
printJson(await new AnalyticsSDK(new IndemnClient()).charts());
|
|
50
|
+
}));
|
|
51
|
+
withRange(analytics.command('chart').argument('<chart-id>', 'Chart ID from `analytics charts`').description('Data of one custom chart'))
|
|
52
|
+
.action((id, options) => run(async () => {
|
|
53
|
+
printJson(await new AnalyticsSDK(new IndemnClient()).chart(id, { from: options.from, to: options.to, channel: options.channel, agentId: options.agent }));
|
|
54
|
+
}));
|
|
55
|
+
const org = program.commands.find((c) => c.name() === 'org');
|
|
56
|
+
if (!org)
|
|
57
|
+
throw new Error('org command group must be registered before analytics commands');
|
|
58
|
+
const config = org.command('config').description('Org settings: timezone, business hours, holidays');
|
|
59
|
+
config.command('get').description('All org settings (handoff settings are read-only)').action(() => run(async () => {
|
|
60
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).get());
|
|
61
|
+
}));
|
|
62
|
+
config.command('availability').description('Is the org inside business hours now?').action(() => run(async () => {
|
|
63
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).availability());
|
|
64
|
+
}));
|
|
65
|
+
config.command('timezone')
|
|
66
|
+
.argument('<zone>', 'For example America/New_York')
|
|
67
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
68
|
+
.action((zone, options) => run(async () => {
|
|
69
|
+
await confirmOrExit(`Set the org timezone to ${zone}? Business hours are read in this zone.`, Boolean(options.yes));
|
|
70
|
+
await new OrgSettingsSDK(new IndemnClient()).setTimezone(zone);
|
|
71
|
+
printSuccess(`Timezone set to ${zone}.`);
|
|
72
|
+
}));
|
|
73
|
+
config.command('business-hours')
|
|
74
|
+
.requiredOption('--file <path>', 'JSON: { "businessHoursEnabled": true, "businessHours": [{ "day": 1, "slots": [...] }], "businessHoursUtterance": "..." }')
|
|
75
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
76
|
+
.description('Replace the business hours (days 0 Sunday to 6; empty slots close that day)')
|
|
77
|
+
.action((options) => run(async () => {
|
|
78
|
+
const hours = JSON.parse(readFileSync(options.file, 'utf8'));
|
|
79
|
+
await confirmOrExit('Replace the org business hours? Agents hand off only inside them.', Boolean(options.yes));
|
|
80
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).setBusinessHours(hours));
|
|
81
|
+
}));
|
|
82
|
+
const holidays = config.command('holidays').description('Days the org is closed');
|
|
83
|
+
holidays.command('add')
|
|
84
|
+
.requiredOption('--date <date>', 'YYYY-MM-DD')
|
|
85
|
+
.requiredOption('--name <name>', 'Holiday name')
|
|
86
|
+
.option('--message <text>', 'What agents say that day')
|
|
87
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
88
|
+
.action((options) => run(async () => {
|
|
89
|
+
await confirmOrExit(`Close the org on ${options.date} (${options.name})?`, Boolean(options.yes));
|
|
90
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).addHolidays([{ name: options.name, date: options.date, ...(options.message ? { holidayFallbackUtterance: options.message } : {}) }]));
|
|
91
|
+
}));
|
|
92
|
+
holidays.command('remove')
|
|
93
|
+
.argument('<dates...>', 'YYYY-MM-DD dates')
|
|
94
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
95
|
+
.action((dates, options) => run(async () => {
|
|
96
|
+
await confirmOrExit(`Remove ${dates.length} holiday(s)?`, Boolean(options.yes));
|
|
97
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).removeHolidays(dates));
|
|
98
|
+
}));
|
|
99
|
+
config.command('admin')
|
|
100
|
+
.argument('<settings...>', 'key=value pairs, e.g. enableTickets=true')
|
|
101
|
+
.option('--yes', 'Do not ask for confirmation')
|
|
102
|
+
.description('Indemn-only feature switches (the server refuses non-Indemn logins)')
|
|
103
|
+
.action((pairs, options) => run(async () => {
|
|
104
|
+
const settings = {};
|
|
105
|
+
for (const pair of pairs) {
|
|
106
|
+
const i = pair.indexOf('=');
|
|
107
|
+
if (i <= 0)
|
|
108
|
+
throw new CliError(`"${pair}" is not key=value.`, EXIT.NEEDS_INPUT);
|
|
109
|
+
const raw = pair.slice(i + 1);
|
|
110
|
+
settings[pair.slice(0, i)] = raw === 'true' ? true : raw === 'false' ? false : raw === 'null' ? null : Number.isFinite(Number(raw)) && raw !== '' ? Number(raw) : raw;
|
|
111
|
+
}
|
|
112
|
+
await confirmOrExit(`Change ${Object.keys(settings).join(', ')} for the org?`, Boolean(options.yes));
|
|
113
|
+
printJson(await new OrgSettingsSDK(new IndemnClient()).setAdminSettings(settings));
|
|
114
|
+
}));
|
|
115
|
+
program.command('audit').description('Who changed what in the org').command('list')
|
|
116
|
+
.option('--since <date>', 'Only entries from this date')
|
|
117
|
+
.option('--action <name>', 'Only this action or event type')
|
|
118
|
+
.option('--resource <type>', 'Only this resource type')
|
|
119
|
+
.option('--user <id>', 'Only this user')
|
|
120
|
+
.option('--limit <n>', 'At most this many (newest first)', '50')
|
|
121
|
+
.option('--json', 'Output as JSON')
|
|
122
|
+
.action((options) => run(async () => {
|
|
123
|
+
const rows = await new AuditSDK(new IndemnClient()).list({ since: options.since, action: options.action, resourceType: options.resource, user: options.user, limit: Number(options.limit) });
|
|
124
|
+
if (options.json) {
|
|
125
|
+
printJson(rows);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
console.log(formatTable(['When', 'Action', 'Resource', 'User', 'Status'], rows.map((e) => [
|
|
129
|
+
String(e.createdAt ?? ''), String(e.action ?? e.event_type ?? ''), `${e.resource_type ?? ''} ${e.resource_display ?? e.resource_id ?? ''}`.trim(), String(e.id_user ?? ''), String(e.status ?? ''),
|
|
130
|
+
])));
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=analytics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/cli/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+DpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsH3D"}
|
package/dist/cli/auth.js
CHANGED
|
@@ -3,6 +3,9 @@ import ora from 'ora';
|
|
|
3
3
|
import * as readline from 'readline';
|
|
4
4
|
import { Writable } from 'node:stream';
|
|
5
5
|
import { login, logout, whoami } from '../sdk/auth.js';
|
|
6
|
+
import { findLinkFile } from '../core/org-resolver.js';
|
|
7
|
+
import { getOrgFlag } from '../core/scope.js';
|
|
8
|
+
import { SessionExpiredError } from '../core/runtime.js';
|
|
6
9
|
import { printError, printSuccess, printJson } from './utils/output.js';
|
|
7
10
|
function prompt(question) {
|
|
8
11
|
const rl = readline.createInterface({
|
|
@@ -34,6 +37,28 @@ function promptPassword(question) {
|
|
|
34
37
|
});
|
|
35
38
|
});
|
|
36
39
|
}
|
|
40
|
+
function describeCredential(info) {
|
|
41
|
+
if (info.credential === 'session') {
|
|
42
|
+
return info.source === 'env' ? 'session token from INDEMN_TOKEN (supplied by a host)' : 'login session';
|
|
43
|
+
}
|
|
44
|
+
return info.source === 'env' ? 'API key from INDEMN_API_KEY' : 'API key saved by an older login (run `indemn login` to switch to a session)';
|
|
45
|
+
}
|
|
46
|
+
/** Which org commands in this folder would use, without asking anything. */
|
|
47
|
+
function describeOrgRule(info) {
|
|
48
|
+
const flag = getOrgFlag();
|
|
49
|
+
if (flag)
|
|
50
|
+
return `${flag} (from --org)`;
|
|
51
|
+
if (process.env.INDEMN_ORG_ID)
|
|
52
|
+
return `${process.env.INDEMN_ORG_ID} (from INDEMN_ORG_ID)`;
|
|
53
|
+
const link = findLinkFile();
|
|
54
|
+
if (link)
|
|
55
|
+
return `${link.org_name ?? link.org_id} (linked in ${link.path})`;
|
|
56
|
+
if (info.orgs.length === 1)
|
|
57
|
+
return `${info.orgs[0].name} (your only org)`;
|
|
58
|
+
if (info.orgs.length > 1)
|
|
59
|
+
return `asked for each command; you belong to ${info.orgs.length}. Use --org <id> or \`indemn link\`.`;
|
|
60
|
+
return 'looked up on first use';
|
|
61
|
+
}
|
|
37
62
|
export function registerAuthCommands(program) {
|
|
38
63
|
program
|
|
39
64
|
.command('login')
|
|
@@ -70,10 +95,21 @@ export function registerAuthCommands(program) {
|
|
|
70
95
|
return code;
|
|
71
96
|
},
|
|
72
97
|
});
|
|
73
|
-
spinner.succeed(
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
98
|
+
spinner.succeed(`Logged in as ${result.email} on ${result.environment}`);
|
|
99
|
+
if (result.expiresAt) {
|
|
100
|
+
console.log(chalk.dim(` Session valid until ${new Date(result.expiresAt).toLocaleString()}; it renews itself.`));
|
|
101
|
+
}
|
|
102
|
+
if (result.orgs.length === 0) {
|
|
103
|
+
console.log(chalk.yellow(' You are not a member of any organization yet. Ask an admin to add you.'));
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
console.log(chalk.dim(` Organizations (${result.orgs.length}):`));
|
|
107
|
+
for (const o of result.orgs)
|
|
108
|
+
console.log(chalk.dim(` ${o.id} ${o.name}`));
|
|
109
|
+
if (result.orgs.length > 1) {
|
|
110
|
+
console.log(chalk.dim(' Choose one per command with --org <id>, or pin a project folder with `indemn link --org <id>`.'));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
77
113
|
}
|
|
78
114
|
catch (err) {
|
|
79
115
|
spinner.fail('Authentication failed');
|
|
@@ -93,11 +129,11 @@ export function registerAuthCommands(program) {
|
|
|
93
129
|
});
|
|
94
130
|
program
|
|
95
131
|
.command('logout')
|
|
96
|
-
.description('
|
|
97
|
-
.action(() => {
|
|
132
|
+
.description('Revoke the session and clear stored credentials')
|
|
133
|
+
.action(async () => {
|
|
98
134
|
try {
|
|
99
|
-
logout();
|
|
100
|
-
printSuccess('Logged out
|
|
135
|
+
const { revoked } = await logout();
|
|
136
|
+
printSuccess(revoked ? 'Logged out. The session was revoked and removed from this machine.' : 'Logged out. Credentials removed from this machine.');
|
|
101
137
|
}
|
|
102
138
|
catch (err) {
|
|
103
139
|
printError(err);
|
|
@@ -112,21 +148,30 @@ export function registerAuthCommands(program) {
|
|
|
112
148
|
try {
|
|
113
149
|
const info = whoami();
|
|
114
150
|
if (!info) {
|
|
115
|
-
printError('Not
|
|
116
|
-
process.exit(
|
|
151
|
+
printError(new SessionExpiredError('Not logged in. Run `indemn login` first.'));
|
|
152
|
+
process.exit(3);
|
|
117
153
|
}
|
|
118
154
|
if (options.json) {
|
|
119
|
-
printJson(info);
|
|
155
|
+
printJson({ ...info, org_rule: describeOrgRule(info) });
|
|
120
156
|
return;
|
|
121
157
|
}
|
|
122
|
-
console.log(chalk.bold('Current
|
|
123
|
-
console.log(`
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
console.log(`
|
|
158
|
+
console.log(chalk.bold('Current login'));
|
|
159
|
+
console.log(` Platform: ${info.environment}`);
|
|
160
|
+
if (info.email)
|
|
161
|
+
console.log(` User: ${info.email}`);
|
|
162
|
+
console.log(` Credential: ${describeCredential(info)}`);
|
|
163
|
+
if (info.sessionExpiresAt) {
|
|
164
|
+
console.log(` Session: valid until ${new Date(info.sessionExpiresAt).toLocaleString()} (renews itself)`);
|
|
165
|
+
}
|
|
166
|
+
console.log(` Org here: ${describeOrgRule(info)}`);
|
|
167
|
+
if (info.orgs.length) {
|
|
168
|
+
console.log(` Orgs:`);
|
|
169
|
+
for (const o of info.orgs)
|
|
170
|
+
console.log(` ${o.id} ${o.name}`);
|
|
171
|
+
}
|
|
127
172
|
console.log(` Copilot: ${info.hosts.copilot}`);
|
|
128
173
|
console.log(` Evaluations: ${info.hosts.evaluations}`);
|
|
129
|
-
console.log(` Middleware:
|
|
174
|
+
console.log(` Middleware: ${info.hosts.middleware}`);
|
|
130
175
|
}
|
|
131
176
|
catch (err) {
|
|
132
177
|
printError(err);
|