@indemn/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (126) hide show
  1. package/.claude-plugin/plugin.json +13 -0
  2. package/.mcp.json +9 -0
  3. package/README.md +225 -0
  4. package/dist/cli/agents.d.ts +3 -0
  5. package/dist/cli/agents.d.ts.map +1 -0
  6. package/dist/cli/agents.js +187 -0
  7. package/dist/cli/agents.js.map +1 -0
  8. package/dist/cli/auth.d.ts +3 -0
  9. package/dist/cli/auth.d.ts.map +1 -0
  10. package/dist/cli/auth.js +161 -0
  11. package/dist/cli/auth.js.map +1 -0
  12. package/dist/cli/chat.d.ts +3 -0
  13. package/dist/cli/chat.d.ts.map +1 -0
  14. package/dist/cli/chat.js +142 -0
  15. package/dist/cli/chat.js.map +1 -0
  16. package/dist/cli/config.d.ts +3 -0
  17. package/dist/cli/config.d.ts.map +1 -0
  18. package/dist/cli/config.js +119 -0
  19. package/dist/cli/config.js.map +1 -0
  20. package/dist/cli/eval.d.ts +3 -0
  21. package/dist/cli/eval.d.ts.map +1 -0
  22. package/dist/cli/eval.js +717 -0
  23. package/dist/cli/eval.js.map +1 -0
  24. package/dist/cli/functions.d.ts +3 -0
  25. package/dist/cli/functions.d.ts.map +1 -0
  26. package/dist/cli/functions.js +346 -0
  27. package/dist/cli/functions.js.map +1 -0
  28. package/dist/cli/index.d.ts +3 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +64 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/kb.d.ts +3 -0
  33. package/dist/cli/kb.d.ts.map +1 -0
  34. package/dist/cli/kb.js +377 -0
  35. package/dist/cli/kb.js.map +1 -0
  36. package/dist/cli/utils/output.d.ts +6 -0
  37. package/dist/cli/utils/output.d.ts.map +1 -0
  38. package/dist/cli/utils/output.js +36 -0
  39. package/dist/cli/utils/output.js.map +1 -0
  40. package/dist/mcp/server.d.ts +2 -0
  41. package/dist/mcp/server.d.ts.map +1 -0
  42. package/dist/mcp/server.js +15 -0
  43. package/dist/mcp/server.js.map +1 -0
  44. package/dist/mcp/tools.d.ts +4 -0
  45. package/dist/mcp/tools.d.ts.map +1 -0
  46. package/dist/mcp/tools.js +814 -0
  47. package/dist/mcp/tools.js.map +1 -0
  48. package/dist/sdk/agents.d.ts +13 -0
  49. package/dist/sdk/agents.d.ts.map +1 -0
  50. package/dist/sdk/agents.js +27 -0
  51. package/dist/sdk/agents.js.map +1 -0
  52. package/dist/sdk/auth.d.ts +18 -0
  53. package/dist/sdk/auth.d.ts.map +1 -0
  54. package/dist/sdk/auth.js +98 -0
  55. package/dist/sdk/auth.js.map +1 -0
  56. package/dist/sdk/chat.d.ts +17 -0
  57. package/dist/sdk/chat.d.ts.map +1 -0
  58. package/dist/sdk/chat.js +113 -0
  59. package/dist/sdk/chat.js.map +1 -0
  60. package/dist/sdk/client.d.ts +36 -0
  61. package/dist/sdk/client.d.ts.map +1 -0
  62. package/dist/sdk/client.js +219 -0
  63. package/dist/sdk/client.js.map +1 -0
  64. package/dist/sdk/config.d.ts +11 -0
  65. package/dist/sdk/config.d.ts.map +1 -0
  66. package/dist/sdk/config.js +20 -0
  67. package/dist/sdk/config.js.map +1 -0
  68. package/dist/sdk/eval.d.ts +13 -0
  69. package/dist/sdk/eval.d.ts.map +1 -0
  70. package/dist/sdk/eval.js +36 -0
  71. package/dist/sdk/eval.js.map +1 -0
  72. package/dist/sdk/functions.d.ts +30 -0
  73. package/dist/sdk/functions.d.ts.map +1 -0
  74. package/dist/sdk/functions.js +59 -0
  75. package/dist/sdk/functions.js.map +1 -0
  76. package/dist/sdk/index.d.ts +12 -0
  77. package/dist/sdk/index.d.ts.map +1 -0
  78. package/dist/sdk/index.js +12 -0
  79. package/dist/sdk/index.js.map +1 -0
  80. package/dist/sdk/kb.d.ts +30 -0
  81. package/dist/sdk/kb.d.ts.map +1 -0
  82. package/dist/sdk/kb.js +102 -0
  83. package/dist/sdk/kb.js.map +1 -0
  84. package/dist/sdk/rubrics.d.ts +14 -0
  85. package/dist/sdk/rubrics.d.ts.map +1 -0
  86. package/dist/sdk/rubrics.js +29 -0
  87. package/dist/sdk/rubrics.js.map +1 -0
  88. package/dist/sdk/test-sets.d.ts +14 -0
  89. package/dist/sdk/test-sets.d.ts.map +1 -0
  90. package/dist/sdk/test-sets.js +29 -0
  91. package/dist/sdk/test-sets.js.map +1 -0
  92. package/dist/sdk/types.d.ts +305 -0
  93. package/dist/sdk/types.d.ts.map +1 -0
  94. package/dist/sdk/types.js +3 -0
  95. package/dist/sdk/types.js.map +1 -0
  96. package/package.json +40 -0
  97. package/skills/agent-setup/SKILL.md +131 -0
  98. package/skills/eval-orchestration/SKILL.md +257 -0
  99. package/skills/rubric-creation/SKILL.md +163 -0
  100. package/skills/test-set-creation/SKILL.md +250 -0
  101. package/src/cli/agents.ts +206 -0
  102. package/src/cli/auth.ts +170 -0
  103. package/src/cli/chat.ts +161 -0
  104. package/src/cli/config.ts +131 -0
  105. package/src/cli/eval.ts +750 -0
  106. package/src/cli/functions.ts +330 -0
  107. package/src/cli/index.ts +68 -0
  108. package/src/cli/kb.ts +412 -0
  109. package/src/cli/utils/output.ts +42 -0
  110. package/src/mcp/server.ts +17 -0
  111. package/src/mcp/tools.ts +971 -0
  112. package/src/sdk/agents.ts +47 -0
  113. package/src/sdk/auth.ts +132 -0
  114. package/src/sdk/chat.ts +133 -0
  115. package/src/sdk/client.ts +238 -0
  116. package/src/sdk/config.ts +28 -0
  117. package/src/sdk/eval.ts +57 -0
  118. package/src/sdk/functions.ts +103 -0
  119. package/src/sdk/index.ts +11 -0
  120. package/src/sdk/kb.ts +183 -0
  121. package/src/sdk/rubrics.ts +35 -0
  122. package/src/sdk/test-sets.ts +35 -0
  123. package/src/sdk/types.ts +347 -0
  124. package/test/fixtures/test-rubric.json +66 -0
  125. package/test/fixtures/test-testset.json +55 -0
  126. package/tsconfig.json +19 -0
@@ -0,0 +1,13 @@
1
+ {
2
+ "name": "indemn-cli",
3
+ "version": "1.0.0",
4
+ "description": "Manage Indemn AI agents — create, configure, evaluate, and chat with agents programmatically",
5
+ "author": {
6
+ "name": "Indemn",
7
+ "email": "support@indemn.com"
8
+ },
9
+ "homepage": "https://docs.indemn.com/cli",
10
+ "repository": "https://github.com/indemn-ai/indemn-cli",
11
+ "license": "MIT",
12
+ "keywords": ["ai-agents", "insurance", "evaluations", "indemn"]
13
+ }
package/.mcp.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "indemn": {
3
+ "command": "npx",
4
+ "args": ["@indemn/cli", "mcp", "serve"],
5
+ "env": {
6
+ "INDEMN_API_KEY": "${INDEMN_API_KEY}"
7
+ }
8
+ }
9
+ }
package/README.md ADDED
@@ -0,0 +1,225 @@
1
+ # @indemn/cli
2
+
3
+ CLI, MCP server, and Claude Code plugin for managing Indemn AI agents. Create, configure, evaluate, and chat with agents programmatically.
4
+
5
+ ## Team Setup
6
+
7
+ ### 1. Clone and install
8
+
9
+ ```bash
10
+ git clone https://github.com/indemn-ai/indemn-cli.git
11
+ cd indemn-cli
12
+ npm install
13
+ npm run build
14
+ npm link # puts `indemn` on your PATH
15
+ ```
16
+
17
+ ### 2. Authenticate
18
+
19
+ ```bash
20
+ indemn login --env dev
21
+ # Enter your Indemn email and password
22
+ # MFA code will be sent to your email if enabled
23
+ ```
24
+
25
+ This does a one-time Firebase login, generates a persistent API key, and saves it to `~/.indemn/config.json`. You won't need to log in again.
26
+
27
+ ### 3. Verify
28
+
29
+ ```bash
30
+ indemn whoami # shows your user, org, environment
31
+ indemn agents list # lists your agents
32
+ ```
33
+
34
+ ### Quick Start
35
+
36
+ ```bash
37
+ # Create an agent
38
+ indemn agents create --name "My Insurance Bot"
39
+
40
+ # Set its prompt
41
+ indemn config set <agent-id> --prompt "You are a helpful insurance assistant."
42
+
43
+ # Chat with it
44
+ indemn chat <agent-id>
45
+
46
+ # Run evaluations
47
+ indemn eval run <agent-id> --test-set <id> --rubric <id> --wait
48
+ ```
49
+
50
+ ## Command Reference
51
+
52
+ ### Authentication
53
+ ```bash
54
+ indemn login [--env dev|production] # Authenticate via Firebase
55
+ indemn logout # Clear stored credentials
56
+ indemn whoami # Show current user/org/env
57
+ ```
58
+
59
+ ### Agent Management
60
+ ```bash
61
+ indemn agents list [--json] [--limit N]
62
+ indemn agents get <id> [--json]
63
+ indemn agents create --name "..." [--channels WEB,VOICE]
64
+ indemn agents update <id> [--name] [--description] [--webhook-url]
65
+ indemn agents delete <id>
66
+ indemn agents clone <id>
67
+ ```
68
+
69
+ ### Configuration
70
+ ```bash
71
+ indemn config get <agent-id> [--field prompt|greeting|model] [--json]
72
+ indemn config set <agent-id> [--prompt "..."] [--prompt-file path] [--model "..."]
73
+ ```
74
+
75
+ ### Functions
76
+ ```bash
77
+ indemn functions list <agent-id> [--json]
78
+ indemn functions create <agent-id> --type rest_api --description "..."
79
+ indemn functions update <agent-id> <func-id> [--description "..."]
80
+ indemn functions delete <agent-id> <func-id>
81
+ indemn functions test <agent-id> <func-id>
82
+ indemn functions export <agent-id>
83
+ indemn functions import <agent-id> --url "..."
84
+ indemn functions master-list # list master function templates
85
+ indemn functions params list <agent-id> <func-id>
86
+ indemn functions params add <agent-id> <func-id> --name "..." --type string [--required]
87
+ indemn functions params update <agent-id> <func-id> <param-id> [--description "..."]
88
+ indemn functions params delete <agent-id> <func-id> <param-id>
89
+ ```
90
+
91
+ ### Knowledge Bases
92
+ ```bash
93
+ indemn kb list [--json] [--limit N] [--page N]
94
+ indemn kb create --name "..." --type qna
95
+ indemn kb get <kb-id>
96
+ indemn kb update <kb-id> [--name "..."]
97
+ indemn kb delete <kb-id>
98
+ indemn kb data list <kb-id>
99
+ indemn kb data add <kb-id> --question "..." --answer "..." # QnA data
100
+ indemn kb data add <kb-id> --source-url "https://..." # URL scraping
101
+ indemn kb data add <kb-id> --file /path/to/file.pdf # file upload
102
+ indemn kb link <agent-id> <kb-id> [kb-id...]
103
+ indemn kb unlink <agent-id> <kb-id>
104
+ indemn kb export <kb-id> [--format csv]
105
+ ```
106
+
107
+ ### Evaluations
108
+ ```bash
109
+ indemn eval run <agent-id> --test-set <id> [--rubric <id>] [--wait] [--eval-model gpt-4o] [--limit N]
110
+ indemn eval list [--agent-id <id>] [--json] [--limit N]
111
+ indemn eval status <run-id> [--json]
112
+ indemn eval results <run-id> [--json]
113
+ indemn eval bot-context <agent-id> [--json]
114
+ ```
115
+
116
+ ### Rubrics & Test Sets
117
+ ```bash
118
+ indemn rubric list [--agent-id <id>]
119
+ indemn rubric create --file rubric.json
120
+ indemn rubric get <id> [--revision N]
121
+ indemn rubric update <id> --file rubric.json
122
+ indemn rubric delete <id>
123
+ indemn rubric versions <id>
124
+
125
+ indemn testset list --agent-id <id> # --agent-id required
126
+ indemn testset create --file testset.json
127
+ indemn testset get <id> [--revision N]
128
+ indemn testset update <id> --file testset.json
129
+ indemn testset delete <id>
130
+ indemn testset versions <id>
131
+ ```
132
+
133
+ ### Chat
134
+ ```bash
135
+ indemn chat <agent-id> [--session <session-id>] # interactive
136
+ indemn chat <agent-id> --message "Hello" # single message
137
+ ```
138
+
139
+ ### Models
140
+ ```bash
141
+ indemn models # list available LLM providers and models
142
+ ```
143
+
144
+ ### MCP Server
145
+ ```bash
146
+ indemn mcp serve # Start MCP server on stdio
147
+ ```
148
+
149
+ ## MCP Setup
150
+
151
+ ### Claude Code Plugin
152
+ ```bash
153
+ claude plugins install /path/to/indemn-cli
154
+ ```
155
+
156
+ ### Manual MCP Configuration
157
+ Add to your Claude Code MCP settings:
158
+ ```json
159
+ {
160
+ "indemn-dev": {
161
+ "command": "node",
162
+ "args": ["/path/to/indemn-cli/dist/mcp/server.js"],
163
+ "env": {
164
+ "INDEMN_API_KEY": "ind_dev_...",
165
+ "INDEMN_ENV": "dev"
166
+ }
167
+ }
168
+ }
169
+ ```
170
+
171
+ The MCP server exposes all SDK operations as tools: `list_agents`, `create_agent`, `set_prompt`, `run_evaluation`, `chat_with_agent`, etc.
172
+
173
+ ## Skills
174
+
175
+ When installed as a Claude Code plugin, the following skills are available:
176
+
177
+ | Skill | Purpose |
178
+ |-------|---------|
179
+ | `eval-orchestration` | Full evaluation lifecycle with directive allocation |
180
+ | `test-set-creation` | Design test sets with scenarios and diagnostics |
181
+ | `rubric-creation` | Create universal behavioral rubrics (3-6 rules) |
182
+ | `agent-setup` | End-to-end agent creation workflow |
183
+
184
+ ## Global Flags
185
+
186
+ ```bash
187
+ indemn --env dev agents list # override environment for a single command
188
+ indemn agents list --json # JSON output (available on most commands)
189
+ indemn agents list --limit 5 # limit results
190
+ indemn agents list --limit 5 --page 2 # pagination
191
+ ```
192
+
193
+ ## Environment Variables
194
+
195
+ | Variable | Description |
196
+ |----------|-------------|
197
+ | `INDEMN_API_KEY` | API key (alternative to `indemn login`) |
198
+ | `INDEMN_ENV` | Environment: `dev` or `production` (default: `dev`) |
199
+ | `INDEMN_ORG_ID` | Organization ID (alternative to config file) |
200
+
201
+ ## Architecture
202
+
203
+ ```
204
+ @indemn/cli
205
+ ├── SDK (TypeScript API client)
206
+ │ ├── Copilot Server → Agents, Functions, KBs, Config
207
+ │ ├── Evaluations Service → Rubrics, Test Sets, Runs
208
+ │ └── Middleware → Chat via Socket.IO
209
+ ├── CLI (Commander.js terminal interface)
210
+ ├── MCP Server (tools for Claude Code)
211
+ └── Skills (workflow guides for Claude)
212
+ ```
213
+
214
+ ## Development
215
+
216
+ ```bash
217
+ npm install
218
+ npm run build # Compile TypeScript
219
+ npm run dev # Watch mode
220
+ npm test # Run tests
221
+ ```
222
+
223
+ ## License
224
+
225
+ MIT
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAgentCommands(program: Command): void;
3
+ //# sourceMappingURL=agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgM5D"}
@@ -0,0 +1,187 @@
1
+ import ora from 'ora';
2
+ import { IndemnClient } from '../sdk/client.js';
3
+ import { AgentsSDK } from '../sdk/agents.js';
4
+ import { formatTable, printJson, printError, printSuccess, confirm } from './utils/output.js';
5
+ function formatChannels(channels) {
6
+ if (!channels || channels.length === 0)
7
+ return 'WEB';
8
+ return channels.map((c) => typeof c === 'string' ? c : c.name || c.type || String(c)).join(', ');
9
+ }
10
+ export function registerAgentCommands(program) {
11
+ const agents = program.command('agents').description('Manage AI agents');
12
+ agents
13
+ .command('list')
14
+ .description('List all agents')
15
+ .option('--json', 'Output as JSON')
16
+ .option('--limit <n>', 'Limit number of results')
17
+ .option('--page <n>', 'Page number (use with --limit)')
18
+ .action(async (options) => {
19
+ try {
20
+ const client = new IndemnClient();
21
+ const sdk = new AgentsSDK(client);
22
+ const spinner = ora('Fetching agents...').start();
23
+ let agentList = await sdk.listAgents();
24
+ spinner.stop();
25
+ if (options.page && options.limit) {
26
+ const page = parseInt(options.page, 10);
27
+ const limit = parseInt(options.limit, 10);
28
+ agentList = agentList.slice((page - 1) * limit, page * limit);
29
+ }
30
+ else if (options.limit) {
31
+ agentList = agentList.slice(0, parseInt(options.limit, 10));
32
+ }
33
+ if (options.json) {
34
+ printJson(agentList);
35
+ return;
36
+ }
37
+ if (agentList.length === 0) {
38
+ console.log('No agents found.');
39
+ return;
40
+ }
41
+ const rows = agentList.map((a) => [
42
+ a._id,
43
+ a.name || '',
44
+ formatChannels(a.channels || []),
45
+ a.updatedAt ? new Date(a.updatedAt).toLocaleDateString() : '',
46
+ ]);
47
+ console.log(formatTable(['ID', 'Name', 'Channels', 'Updated'], rows));
48
+ }
49
+ catch (err) {
50
+ printError(err);
51
+ process.exit(1);
52
+ }
53
+ });
54
+ agents
55
+ .command('get')
56
+ .argument('<id>', 'Agent ID')
57
+ .description('Get agent details')
58
+ .option('--json', 'Output as JSON')
59
+ .action(async (id, options) => {
60
+ try {
61
+ const client = new IndemnClient();
62
+ const sdk = new AgentsSDK(client);
63
+ const spinner = ora('Fetching agent...').start();
64
+ const agent = await sdk.getAgent(id);
65
+ spinner.stop();
66
+ if (options.json) {
67
+ printJson(agent);
68
+ return;
69
+ }
70
+ console.log(`ID: ${agent._id}`);
71
+ console.log(`Name: ${agent.name}`);
72
+ console.log(`Description: ${agent.description || '(none)'}`);
73
+ console.log(`Channels: ${formatChannels(agent.channels || [])}`);
74
+ console.log(`Webhook URL: ${agent.webhook_url || '(none)'}`);
75
+ console.log(`Webhook: ${agent.webhook_enabled ? 'enabled' : 'disabled'}`);
76
+ console.log(`Project: ${agent.id_project || '(none)'}`);
77
+ console.log(`Created: ${agent.createdAt || ''}`);
78
+ console.log(`Updated: ${agent.updatedAt || ''}`);
79
+ }
80
+ catch (err) {
81
+ printError(err);
82
+ process.exit(1);
83
+ }
84
+ });
85
+ agents
86
+ .command('create')
87
+ .description('Create a new agent')
88
+ .requiredOption('--name <name>', 'Agent name')
89
+ .option('--channels <channels>', 'Comma-separated channels', 'WEB')
90
+ .action(async (options) => {
91
+ try {
92
+ const client = new IndemnClient();
93
+ const sdk = new AgentsSDK(client);
94
+ const spinner = ora('Creating agent...').start();
95
+ const channels = options.channels.split(',').map((c) => c.trim());
96
+ const agent = await sdk.createAgent({ name: options.name, channels });
97
+ spinner.stop();
98
+ printSuccess(`Agent created: ${agent._id}`);
99
+ console.log(` Name: ${agent.name}`);
100
+ console.log(` Channels: ${formatChannels(agent.channels || [])}`);
101
+ }
102
+ catch (err) {
103
+ printError(err);
104
+ process.exit(1);
105
+ }
106
+ });
107
+ agents
108
+ .command('update')
109
+ .argument('<id>', 'Agent ID')
110
+ .description('Update an agent')
111
+ .option('--name <name>', 'New agent name')
112
+ .option('--description <description>', 'Agent description')
113
+ .option('--webhook-url <url>', 'Webhook URL')
114
+ .action(async (id, options) => {
115
+ try {
116
+ const input = {};
117
+ if (options.name)
118
+ input.name = options.name;
119
+ if (options.description)
120
+ input.description = options.description;
121
+ if (options.webhookUrl)
122
+ input.webhook_url = options.webhookUrl;
123
+ if (Object.keys(input).length === 0) {
124
+ printError('No update options provided. Use --name, --description, or --webhook-url.');
125
+ process.exit(1);
126
+ }
127
+ const client = new IndemnClient();
128
+ const sdk = new AgentsSDK(client);
129
+ const spinner = ora('Updating agent...').start();
130
+ const agent = await sdk.updateAgent(id, input);
131
+ spinner.stop();
132
+ printSuccess(`Agent ${agent._id} updated.`);
133
+ }
134
+ catch (err) {
135
+ printError(err);
136
+ process.exit(1);
137
+ }
138
+ });
139
+ agents
140
+ .command('delete')
141
+ .argument('<id>', 'Agent ID')
142
+ .description('Delete an agent')
143
+ .action(async (id) => {
144
+ try {
145
+ const confirmed = await confirm(`Delete agent ${id}? This cannot be undone.`);
146
+ if (!confirmed) {
147
+ console.log('Cancelled.');
148
+ return;
149
+ }
150
+ const client = new IndemnClient();
151
+ const sdk = new AgentsSDK(client);
152
+ const spinner = ora('Deleting agent...').start();
153
+ await sdk.deleteAgent(id);
154
+ spinner.stop();
155
+ printSuccess(`Agent ${id} deleted.`);
156
+ }
157
+ catch (err) {
158
+ printError(err);
159
+ process.exit(1);
160
+ }
161
+ });
162
+ agents
163
+ .command('clone')
164
+ .argument('<id>', 'Agent ID to clone')
165
+ .description('Clone an agent')
166
+ .action(async (id) => {
167
+ try {
168
+ const client = new IndemnClient();
169
+ const sdk = new AgentsSDK(client);
170
+ const spinner = ora('Cloning agent...').start();
171
+ const result = await sdk.cloneAgent(id);
172
+ spinner.stop();
173
+ // Clone returns { new_agent_id, new_agent_name } or an Agent object
174
+ const raw = result;
175
+ const cloneId = raw.new_agent_id || result._id;
176
+ const cloneName = raw.new_agent_name || result.name;
177
+ printSuccess(`Agent cloned: ${cloneId}`);
178
+ console.log(` Name: ${cloneName}`);
179
+ console.log(` Source: ${id}`);
180
+ }
181
+ catch (err) {
182
+ printError(err);
183
+ process.exit(1);
184
+ }
185
+ });
186
+ }
187
+ //# sourceMappingURL=agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/cli/agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerAuthCommands(program: Command): void;
3
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwEpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiG3D"}
@@ -0,0 +1,161 @@
1
+ import chalk from 'chalk';
2
+ import ora from 'ora';
3
+ import * as readline from 'readline';
4
+ import { login, logout, whoami } from '../sdk/auth.js';
5
+ import { printError, printSuccess, printJson } from './utils/output.js';
6
+ function prompt(question) {
7
+ const rl = readline.createInterface({
8
+ input: process.stdin,
9
+ output: process.stdout,
10
+ });
11
+ return new Promise((resolve) => {
12
+ rl.question(question, (answer) => {
13
+ rl.close();
14
+ resolve(answer.trim());
15
+ });
16
+ });
17
+ }
18
+ function promptPassword(question) {
19
+ return new Promise((resolve) => {
20
+ const rl = readline.createInterface({
21
+ input: process.stdin,
22
+ output: process.stdout,
23
+ });
24
+ // Disable echoing by writing to stdout manually
25
+ process.stdout.write(question);
26
+ const stdin = process.stdin;
27
+ const wasRaw = stdin.isRaw;
28
+ if (stdin.isTTY) {
29
+ stdin.setRawMode(true);
30
+ }
31
+ let password = '';
32
+ const onData = (char) => {
33
+ const c = char.toString('utf8');
34
+ if (c === '\n' || c === '\r' || c === '\u0004') {
35
+ if (stdin.isTTY) {
36
+ stdin.setRawMode(wasRaw ?? false);
37
+ }
38
+ stdin.removeListener('data', onData);
39
+ process.stdout.write('\n');
40
+ rl.close();
41
+ resolve(password);
42
+ }
43
+ else if (c === '\u0003') {
44
+ // Ctrl+C
45
+ if (stdin.isTTY) {
46
+ stdin.setRawMode(wasRaw ?? false);
47
+ }
48
+ stdin.removeListener('data', onData);
49
+ rl.close();
50
+ process.exit(1);
51
+ }
52
+ else if (c === '\u007f' || c === '\b') {
53
+ // Backspace
54
+ if (password.length > 0) {
55
+ password = password.slice(0, -1);
56
+ process.stdout.write('\b \b');
57
+ }
58
+ }
59
+ else {
60
+ password += c;
61
+ process.stdout.write('*');
62
+ }
63
+ };
64
+ stdin.on('data', onData);
65
+ });
66
+ }
67
+ export function registerAuthCommands(program) {
68
+ program
69
+ .command('login')
70
+ .description('Authenticate with Indemn platform')
71
+ .option('--env <environment>', 'Target environment', 'dev')
72
+ .action(async (options) => {
73
+ try {
74
+ const env = options.env;
75
+ if (env !== 'dev' && env !== 'production') {
76
+ printError('Environment must be "dev" or "production"');
77
+ process.exit(1);
78
+ }
79
+ const email = await prompt('Email: ');
80
+ if (!email) {
81
+ printError('Email is required');
82
+ process.exit(1);
83
+ }
84
+ const password = await promptPassword('Password: ');
85
+ if (!password) {
86
+ printError('Password is required');
87
+ process.exit(1);
88
+ }
89
+ const spinner = ora('Authenticating...').start();
90
+ try {
91
+ const result = await login(email, password, env, {
92
+ mfaCodePrompt: async () => {
93
+ spinner.stop();
94
+ console.log(chalk.yellow('MFA code sent to your email.'));
95
+ const code = await prompt('MFA Code: ');
96
+ if (!code) {
97
+ throw new Error('MFA code is required');
98
+ }
99
+ spinner.start('Verifying MFA code...');
100
+ return code;
101
+ },
102
+ });
103
+ spinner.succeed('Authenticated successfully');
104
+ console.log(chalk.dim(` Org: ${result.orgId}`));
105
+ console.log(chalk.dim(` Environment: ${result.environment}`));
106
+ console.log(chalk.dim(` API Key: ${result.apiKey.substring(0, 12)}...`));
107
+ }
108
+ catch (err) {
109
+ spinner.fail('Authentication failed');
110
+ throw err;
111
+ }
112
+ }
113
+ catch (err) {
114
+ printError(err);
115
+ process.exit(1);
116
+ }
117
+ });
118
+ program
119
+ .command('logout')
120
+ .description('Clear stored credentials')
121
+ .action(() => {
122
+ try {
123
+ logout();
124
+ printSuccess('Logged out successfully. Credentials cleared.');
125
+ }
126
+ catch (err) {
127
+ printError(err);
128
+ process.exit(1);
129
+ }
130
+ });
131
+ program
132
+ .command('whoami')
133
+ .description('Display current user and environment info')
134
+ .option('--json', 'Output as JSON')
135
+ .action((options) => {
136
+ try {
137
+ const info = whoami();
138
+ if (!info) {
139
+ printError('Not authenticated. Run `indemn login` first.');
140
+ process.exit(1);
141
+ }
142
+ if (options.json) {
143
+ printJson(info);
144
+ return;
145
+ }
146
+ console.log(chalk.bold('Current Authentication'));
147
+ console.log(` API Key: ${info.apiKey}`);
148
+ console.log(` Org ID: ${info.orgId}`);
149
+ console.log(` User ID: ${info.userId}`);
150
+ console.log(` Environment: ${info.environment}`);
151
+ console.log(` Copilot: ${info.hosts.copilot}`);
152
+ console.log(` Evaluations: ${info.hosts.evaluations}`);
153
+ console.log(` Middleware: ${info.hosts.middleware}`);
154
+ }
155
+ catch (err) {
156
+ printError(err);
157
+ process.exit(1);
158
+ }
159
+ });
160
+ }
161
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/cli/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerChatCommand(program: Command): void;
3
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/cli/chat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuJ1D"}