@aiconnect/confidant 1.3.4 → 1.4.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/README.md +85 -0
- package/dist/api-client.d.ts +11 -0
- package/dist/api-client.d.ts.map +1 -1
- package/dist/api-client.js +16 -0
- package/dist/api-client.js.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/fill.d.ts +3 -0
- package/dist/commands/fill.d.ts.map +1 -0
- package/dist/commands/fill.js +143 -0
- package/dist/commands/fill.js.map +1 -0
- package/dist/i18n.d.ts +10 -0
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +10 -0
- package/dist/i18n.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -243,6 +243,72 @@ Share credentials securely with teammates:
|
|
|
243
243
|
confidant create --secret "temp-password" --ttl 300000
|
|
244
244
|
```
|
|
245
245
|
|
|
246
|
+
## Agent-to-Agent Communication
|
|
247
|
+
|
|
248
|
+
Confidant supports direct secret submission between automated agents without requiring a browser. This enables fully automated credential sharing scenarios.
|
|
249
|
+
|
|
250
|
+
### Use Cases
|
|
251
|
+
|
|
252
|
+
- **Orchestrators**: Central systems distributing secrets to multiple agents
|
|
253
|
+
- **Multi-agent AI**: LLM agents dynamically sharing credentials
|
|
254
|
+
- **CI/CD pipelines**: Headless jobs injecting secrets into other jobs
|
|
255
|
+
- **Containers**: Docker/Kubernetes environments without browsers
|
|
256
|
+
|
|
257
|
+
### Basic Flow
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Agent A (Host 1) - Creates a request
|
|
261
|
+
confidant request --label "API Key"
|
|
262
|
+
# → http://192.168.1.100:3000/requests/abc123...
|
|
263
|
+
|
|
264
|
+
# Agent B (Host 2) - Submits the secret programmatically
|
|
265
|
+
confidant fill "http://192.168.1.100:3000/requests/abc123..." --secret "sk-xxxx"
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
### Secure Secret Input
|
|
269
|
+
|
|
270
|
+
For production environments, avoid passing secrets directly on the command line:
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Read from stdin (safer - avoids shell history)
|
|
274
|
+
echo "$SECRET" | confidant fill <url> --secret -
|
|
275
|
+
cat secret.txt | confidant fill <url> --secret -
|
|
276
|
+
|
|
277
|
+
# From password managers
|
|
278
|
+
op read "op://Vault/Item/password" | confidant fill <url> --secret -
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
### JSON Output for Scripting
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# JSON output for automation
|
|
285
|
+
result=$(confidant fill "$URL" --secret "$SECRET" --json)
|
|
286
|
+
if echo "$result" | jq -e '.success' > /dev/null; then
|
|
287
|
+
echo "Secret delivered"
|
|
288
|
+
else
|
|
289
|
+
echo "Failed: $(echo "$result" | jq -r '.error')"
|
|
290
|
+
exit 1
|
|
291
|
+
fi
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Orchestrator Pattern
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
#!/bin/bash
|
|
298
|
+
# orchestrator.sh - Distribute secrets to multiple agents
|
|
299
|
+
|
|
300
|
+
for agent in "http://agent1:3000" "http://agent2:3000"; do
|
|
301
|
+
# Agent creates request via API
|
|
302
|
+
request=$(curl -s "$agent/requests" -X POST -H "Content-Type: application/json" \
|
|
303
|
+
-d '{"expiresIn": 300, "label": "DB Credentials"}')
|
|
304
|
+
|
|
305
|
+
hash=$(echo "$request" | jq -r '.hash')
|
|
306
|
+
|
|
307
|
+
# Orchestrator fills the request
|
|
308
|
+
confidant fill "$agent/requests/$hash" --secret "$DB_PASSWORD"
|
|
309
|
+
done
|
|
310
|
+
```
|
|
311
|
+
|
|
246
312
|
## CLI Reference
|
|
247
313
|
|
|
248
314
|
### `confidant serve`
|
|
@@ -288,6 +354,25 @@ Delete a secret.
|
|
|
288
354
|
### `confidant status <id>`
|
|
289
355
|
Check secret status.
|
|
290
356
|
|
|
357
|
+
### `confidant fill <url-or-hash>`
|
|
358
|
+
Submit a secret to an existing request (agent-to-agent).
|
|
359
|
+
|
|
360
|
+
Options:
|
|
361
|
+
- `--secret <value>` - Secret value to submit (use `-` for stdin)
|
|
362
|
+
- `--json` - JSON output format
|
|
363
|
+
|
|
364
|
+
Examples:
|
|
365
|
+
```bash
|
|
366
|
+
# Submit via URL
|
|
367
|
+
confidant fill "http://localhost:3000/requests/abc123..." --secret "sk-xxxx"
|
|
368
|
+
|
|
369
|
+
# Submit via hash with --api-url
|
|
370
|
+
confidant fill abc123... --secret "sk-xxxx" --api-url "http://192.168.1.100:3000"
|
|
371
|
+
|
|
372
|
+
# Read from stdin
|
|
373
|
+
echo "my-secret" | confidant fill <url> --secret -
|
|
374
|
+
```
|
|
375
|
+
|
|
291
376
|
## API Endpoints
|
|
292
377
|
|
|
293
378
|
| Method | Endpoint | Description |
|
package/dist/api-client.d.ts
CHANGED
|
@@ -29,6 +29,9 @@ export interface PollSecretRequestResponse {
|
|
|
29
29
|
secret: string | null;
|
|
30
30
|
label?: string;
|
|
31
31
|
}
|
|
32
|
+
export interface SubmitSecretResponse {
|
|
33
|
+
message: string;
|
|
34
|
+
}
|
|
32
35
|
export declare class ApiClient {
|
|
33
36
|
private baseUrl;
|
|
34
37
|
constructor(baseUrl: string);
|
|
@@ -54,5 +57,13 @@ export declare class ApiClient {
|
|
|
54
57
|
* @returns Poll result with status and optional secret
|
|
55
58
|
*/
|
|
56
59
|
pollSecretRequest(id: string): Promise<PollSecretRequestResponse>;
|
|
60
|
+
/**
|
|
61
|
+
* Submit a secret to an existing request (agent-to-agent)
|
|
62
|
+
* @param hash The request hash (64 hex characters)
|
|
63
|
+
* @param secret The secret value to submit
|
|
64
|
+
* @returns Success response
|
|
65
|
+
* @throws Error with message for various failure cases (404, 409, 410)
|
|
66
|
+
*/
|
|
67
|
+
submitSecret(hash: string, secret: string): Promise<SubmitSecretResponse>;
|
|
57
68
|
}
|
|
58
69
|
//# sourceMappingURL=api-client.d.ts.map
|
package/dist/api-client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAK3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,WAAW;YAQL,OAAO;IA8Bf,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAmB1B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMtD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMhE;;;;;OAKG;IACG,mBAAmB,CACvB,SAAS,GAAE,MAAc,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;;;OAIG;IACG,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,EAAE,MAAM;IAK3B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,OAAO,CAAC,WAAW;YAQL,OAAO;IA8Bf,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAmB1B,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIjD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAMtD,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAMhE;;;;;OAKG;IACG,mBAAmB,CACvB,SAAS,GAAE,MAAc,EACzB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,2BAA2B,CAAC;IAgBvC;;;;OAIG;IACG,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAIvE;;;;;;OAMG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAShF"}
|
package/dist/api-client.js
CHANGED
|
@@ -97,5 +97,21 @@ export class ApiClient {
|
|
|
97
97
|
async pollSecretRequest(id) {
|
|
98
98
|
return this.request(`/requests/${id}/poll`);
|
|
99
99
|
}
|
|
100
|
+
/**
|
|
101
|
+
* Submit a secret to an existing request (agent-to-agent)
|
|
102
|
+
* @param hash The request hash (64 hex characters)
|
|
103
|
+
* @param secret The secret value to submit
|
|
104
|
+
* @returns Success response
|
|
105
|
+
* @throws Error with message for various failure cases (404, 409, 410)
|
|
106
|
+
*/
|
|
107
|
+
async submitSecret(hash, secret) {
|
|
108
|
+
return this.request(`/requests/${hash}`, {
|
|
109
|
+
method: 'POST',
|
|
110
|
+
headers: {
|
|
111
|
+
'Content-Type': 'application/json',
|
|
112
|
+
},
|
|
113
|
+
body: JSON.stringify({ secret }),
|
|
114
|
+
});
|
|
115
|
+
}
|
|
100
116
|
}
|
|
101
117
|
//# sourceMappingURL=api-client.js.map
|
package/dist/api-client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -11,6 +11,7 @@ import { deleteCommand } from './commands/delete.js';
|
|
|
11
11
|
import { statusCommand } from './commands/status.js';
|
|
12
12
|
import { requestCommand } from './commands/request.js';
|
|
13
13
|
import { serveRequestCommand } from './commands/serve-request.js';
|
|
14
|
+
import { fillCommand } from './commands/fill.js';
|
|
14
15
|
// Read version from package.json
|
|
15
16
|
const require = createRequire(import.meta.url);
|
|
16
17
|
const packageJson = require('../package.json');
|
|
@@ -26,7 +27,8 @@ program
|
|
|
26
27
|
.addCommand(deleteCommand)
|
|
27
28
|
.addCommand(statusCommand)
|
|
28
29
|
.addCommand(requestCommand)
|
|
29
|
-
.addCommand(serveRequestCommand)
|
|
30
|
+
.addCommand(serveRequestCommand)
|
|
31
|
+
.addCommand(fillCommand);
|
|
30
32
|
// Serve command
|
|
31
33
|
program
|
|
32
34
|
.command('serve')
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.d.ts","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgDpC,eAAO,MAAM,WAAW,SAoGpB,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ApiClient } from '../api-client.js';
|
|
4
|
+
import { t } from '../i18n.js';
|
|
5
|
+
const HASH_REGEX = /^[a-f0-9]{64}$/i;
|
|
6
|
+
/**
|
|
7
|
+
* Extract hash and base URL from input
|
|
8
|
+
* @param input URL or hash string
|
|
9
|
+
* @returns Object with hash and optional baseUrl
|
|
10
|
+
*/
|
|
11
|
+
function extractHashFromUrl(input) {
|
|
12
|
+
// Try to parse as URL first
|
|
13
|
+
try {
|
|
14
|
+
const url = new URL(input);
|
|
15
|
+
const match = url.pathname.match(/\/requests\/([a-f0-9]{64})$/i);
|
|
16
|
+
if (match) {
|
|
17
|
+
return {
|
|
18
|
+
hash: match[1],
|
|
19
|
+
baseUrl: `${url.protocol}//${url.host}`
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Input might be just the hash
|
|
25
|
+
}
|
|
26
|
+
// Check if input is a raw hash
|
|
27
|
+
if (HASH_REGEX.test(input)) {
|
|
28
|
+
return { hash: input, baseUrl: null };
|
|
29
|
+
}
|
|
30
|
+
throw new Error(t('invalidUrlOrHash'));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Read secret from stdin
|
|
34
|
+
* @returns Promise resolving to the secret string
|
|
35
|
+
*/
|
|
36
|
+
async function readFromStdin() {
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
let data = '';
|
|
39
|
+
process.stdin.setEncoding('utf8');
|
|
40
|
+
process.stdin.on('data', (chunk) => { data += chunk; });
|
|
41
|
+
process.stdin.on('end', () => { resolve(data.trim()); });
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
export const fillCommand = new Command('fill')
|
|
45
|
+
.description(t('fillDescription'))
|
|
46
|
+
.argument('<url-or-hash>', t('fillUrlArgument'))
|
|
47
|
+
.option('--secret <value>', t('fillSecretOption'))
|
|
48
|
+
.option('--json', 'Output em formato JSON')
|
|
49
|
+
.addHelpText('after', `
|
|
50
|
+
Examples:
|
|
51
|
+
# Submit secret via URL (recommended)
|
|
52
|
+
confidant fill "http://localhost:3000/requests/abc123..." --secret "sk-xxxx"
|
|
53
|
+
|
|
54
|
+
# Submit secret via hash (requires --api-url)
|
|
55
|
+
confidant fill abc123... --secret "sk-xxxx" --api-url "http://192.168.1.100:3000"
|
|
56
|
+
|
|
57
|
+
# Read secret from stdin (safer for sensitive data)
|
|
58
|
+
echo "my-secret" | confidant fill <url> --secret -
|
|
59
|
+
cat secret.txt | confidant fill <url> --secret -
|
|
60
|
+
|
|
61
|
+
# JSON output for scripting
|
|
62
|
+
confidant fill <url> --secret "xxx" --json
|
|
63
|
+
|
|
64
|
+
Agent-to-Agent Flow:
|
|
65
|
+
# Agent A (Host 1) creates request
|
|
66
|
+
confidant request --label "API Key"
|
|
67
|
+
→ http://192.168.1.100:3000/requests/abc123...
|
|
68
|
+
|
|
69
|
+
# Agent B (Host 2) submits secret
|
|
70
|
+
confidant fill "http://192.168.1.100:3000/requests/abc123..." --secret "sk-xxxx"
|
|
71
|
+
`)
|
|
72
|
+
.action(async (urlOrHash, options) => {
|
|
73
|
+
try {
|
|
74
|
+
// Get API URL from parent command options
|
|
75
|
+
const program = fillCommand.parent;
|
|
76
|
+
const globalApiUrl = program?.opts().apiUrl || 'http://localhost:3000';
|
|
77
|
+
// Extract hash and base URL from input
|
|
78
|
+
const { hash, baseUrl } = extractHashFromUrl(urlOrHash);
|
|
79
|
+
// Determine which API URL to use
|
|
80
|
+
const apiUrl = baseUrl || globalApiUrl;
|
|
81
|
+
// Get the secret value
|
|
82
|
+
let secretValue;
|
|
83
|
+
if (!options.secret) {
|
|
84
|
+
throw new Error(t('secretRequired'));
|
|
85
|
+
}
|
|
86
|
+
if (options.secret === '-') {
|
|
87
|
+
// Read from stdin
|
|
88
|
+
secretValue = await readFromStdin();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
secretValue = options.secret;
|
|
92
|
+
}
|
|
93
|
+
// Validate secret is not empty
|
|
94
|
+
if (!secretValue || secretValue.trim() === '') {
|
|
95
|
+
throw new Error(t('secretCannotBeEmptyFill'));
|
|
96
|
+
}
|
|
97
|
+
// Create API client and submit secret
|
|
98
|
+
const client = new ApiClient(apiUrl);
|
|
99
|
+
await client.submitSecret(hash, secretValue);
|
|
100
|
+
// Output success
|
|
101
|
+
if (options.json) {
|
|
102
|
+
console.log(JSON.stringify({ success: true, message: 'Secret submitted successfully' }));
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
console.log(chalk.green(`✓ ${t('secretSubmitted')}`));
|
|
106
|
+
}
|
|
107
|
+
process.exit(0);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
if (error instanceof Error) {
|
|
111
|
+
// Map API error messages to localized messages
|
|
112
|
+
let errorMessage = error.message;
|
|
113
|
+
if (error.message.includes('Request not found')) {
|
|
114
|
+
errorMessage = t('requestNotFound');
|
|
115
|
+
}
|
|
116
|
+
else if (error.message.includes('already been submitted')) {
|
|
117
|
+
errorMessage = t('secretAlreadySubmitted');
|
|
118
|
+
}
|
|
119
|
+
else if (error.message.includes('expired')) {
|
|
120
|
+
errorMessage = t('requestExpired');
|
|
121
|
+
}
|
|
122
|
+
else if (error.message.includes('ECONNREFUSED') || error.message.includes('request to') && error.message.includes('failed')) {
|
|
123
|
+
errorMessage = t('connectionFailed');
|
|
124
|
+
}
|
|
125
|
+
if (options.json) {
|
|
126
|
+
console.log(JSON.stringify({ success: false, error: errorMessage }));
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.error(chalk.red(`Erro: ${errorMessage}`));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
if (options.json) {
|
|
134
|
+
console.log(JSON.stringify({ success: false, error: 'Unknown error' }));
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
console.error(chalk.red('Erro desconhecido'));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
process.exit(1);
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=fill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fill.js","sourceRoot":"","sources":["../../src/commands/fill.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n.d.ts
CHANGED
|
@@ -13,6 +13,12 @@ export declare const translations: {
|
|
|
13
13
|
readonly invalidApiEndpoint: "Endpoint de API inválido";
|
|
14
14
|
readonly invalidJsonResponse: "Resposta JSON inválida do servidor";
|
|
15
15
|
readonly networkError: "Erro de rede";
|
|
16
|
+
readonly invalidUrlOrHash: "URL ou hash inválido";
|
|
17
|
+
readonly secretAlreadySubmitted: "Secret já foi submetido para este request";
|
|
18
|
+
readonly secretRequired: "O secret é obrigatório (use --secret)";
|
|
19
|
+
readonly secretCannotBeEmptyFill: "O secret não pode estar vazio";
|
|
20
|
+
readonly requestNotFound: "Request não encontrado";
|
|
21
|
+
readonly requestExpired: "O request expirou";
|
|
16
22
|
readonly programDescription: "Ferramenta de CLI para o sistema de transferência de segredos Confidant";
|
|
17
23
|
readonly createDescription: "Criar um novo segredo";
|
|
18
24
|
readonly getDescription: "Recuperar um segredo pelo ID";
|
|
@@ -20,12 +26,15 @@ export declare const translations: {
|
|
|
20
26
|
readonly statusDescription: "Verificar o status de um segredo pelo ID";
|
|
21
27
|
readonly serveDescription: "Iniciar o servidor Confidant";
|
|
22
28
|
readonly serveRequestDescription: "Iniciar o servidor e solicitar um segredo";
|
|
29
|
+
readonly fillDescription: "Submeter um secret para um request existente (agent-to-agent)";
|
|
23
30
|
readonly secretOption: "Conteúdo do segredo (obrigatório)";
|
|
24
31
|
readonly ttlOption: "Tempo de vida em milissegundos (opcional)";
|
|
25
32
|
readonly maxAccessCountOption: "Número máximo de acessos (opcional)";
|
|
26
33
|
readonly apiUrlOption: "URL do endpoint da API";
|
|
27
34
|
readonly portOption: "Porta do servidor (padrão: 3000)";
|
|
28
35
|
readonly hostOption: "Host do servidor (padrão: localhost)";
|
|
36
|
+
readonly fillUrlArgument: "URL do request ou hash (64 caracteres hex)";
|
|
37
|
+
readonly fillSecretOption: "Valor do secret (use \"-\" para ler de stdin)";
|
|
29
38
|
readonly createExample: "Exemplo: confidant create --secret \"meu segredo\" --ttl 60000 --max-access-count 3";
|
|
30
39
|
readonly getExample: "Exemplo: confidant get abc123";
|
|
31
40
|
readonly deleteExample: "Exemplo: confidant delete abc123";
|
|
@@ -38,6 +47,7 @@ export declare const translations: {
|
|
|
38
47
|
readonly serverRunning: "✅ Confidant rodando em:";
|
|
39
48
|
readonly serverShutdown: "Encerrando servidor Confidant...";
|
|
40
49
|
readonly serverStopped: "Servidor encerrado";
|
|
50
|
+
readonly secretSubmitted: "Secret submetido com sucesso";
|
|
41
51
|
readonly usage: "Uso";
|
|
42
52
|
readonly options: "Opções";
|
|
43
53
|
readonly commands: "Comandos";
|
package/dist/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqEf,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD;;GAEG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAE7C"}
|
package/dist/i18n.js
CHANGED
|
@@ -14,6 +14,12 @@ export const translations = {
|
|
|
14
14
|
invalidApiEndpoint: 'Endpoint de API inválido',
|
|
15
15
|
invalidJsonResponse: 'Resposta JSON inválida do servidor',
|
|
16
16
|
networkError: 'Erro de rede',
|
|
17
|
+
invalidUrlOrHash: 'URL ou hash inválido',
|
|
18
|
+
secretAlreadySubmitted: 'Secret já foi submetido para este request',
|
|
19
|
+
secretRequired: 'O secret é obrigatório (use --secret)',
|
|
20
|
+
secretCannotBeEmptyFill: 'O secret não pode estar vazio',
|
|
21
|
+
requestNotFound: 'Request não encontrado',
|
|
22
|
+
requestExpired: 'O request expirou',
|
|
17
23
|
// Help descriptions
|
|
18
24
|
programDescription: 'Ferramenta de CLI para o sistema de transferência de segredos Confidant',
|
|
19
25
|
createDescription: 'Criar um novo segredo',
|
|
@@ -22,6 +28,7 @@ export const translations = {
|
|
|
22
28
|
statusDescription: 'Verificar o status de um segredo pelo ID',
|
|
23
29
|
serveDescription: 'Iniciar o servidor Confidant',
|
|
24
30
|
serveRequestDescription: 'Iniciar o servidor e solicitar um segredo',
|
|
31
|
+
fillDescription: 'Submeter um secret para um request existente (agent-to-agent)',
|
|
25
32
|
// Option descriptions
|
|
26
33
|
secretOption: 'Conteúdo do segredo (obrigatório)',
|
|
27
34
|
ttlOption: 'Tempo de vida em milissegundos (opcional)',
|
|
@@ -29,6 +36,8 @@ export const translations = {
|
|
|
29
36
|
apiUrlOption: 'URL do endpoint da API',
|
|
30
37
|
portOption: 'Porta do servidor (padrão: 3000)',
|
|
31
38
|
hostOption: 'Host do servidor (padrão: localhost)',
|
|
39
|
+
fillUrlArgument: 'URL do request ou hash (64 caracteres hex)',
|
|
40
|
+
fillSecretOption: 'Valor do secret (use "-" para ler de stdin)',
|
|
32
41
|
// Examples
|
|
33
42
|
createExample: 'Exemplo: confidant create --secret "meu segredo" --ttl 60000 --max-access-count 3',
|
|
34
43
|
getExample: 'Exemplo: confidant get abc123',
|
|
@@ -43,6 +52,7 @@ export const translations = {
|
|
|
43
52
|
serverRunning: '✅ Confidant rodando em:',
|
|
44
53
|
serverShutdown: 'Encerrando servidor Confidant...',
|
|
45
54
|
serverStopped: 'Servidor encerrado',
|
|
55
|
+
secretSubmitted: 'Secret submetido com sucesso',
|
|
46
56
|
// Usage information
|
|
47
57
|
usage: 'Uso',
|
|
48
58
|
options: 'Opções',
|
package/dist/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,mBAAmB,EAAE,gCAAgC;IACrD,iBAAiB,EAAE,mCAAmC;IACtD,4BAA4B,EAAE,8CAA8C;IAC5E,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,sBAAsB,EAAE,mCAAmC;IAC3D,gBAAgB,EAAE,iCAAiC;IACnD,eAAe,EAAE,uBAAuB;IACxC,kBAAkB,EAAE,0BAA0B;IAC9C,mBAAmB,EAAE,oCAAoC;IACzD,YAAY,EAAE,cAAc;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,iBAAiB;IACjB,mBAAmB,EAAE,gCAAgC;IACrD,iBAAiB,EAAE,mCAAmC;IACtD,4BAA4B,EAAE,8CAA8C;IAC5E,cAAc,EAAE,wBAAwB;IACxC,gBAAgB,EAAE,mBAAmB;IACrC,sBAAsB,EAAE,mCAAmC;IAC3D,gBAAgB,EAAE,iCAAiC;IACnD,eAAe,EAAE,uBAAuB;IACxC,kBAAkB,EAAE,0BAA0B;IAC9C,mBAAmB,EAAE,oCAAoC;IACzD,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,sBAAsB;IACxC,sBAAsB,EAAE,2CAA2C;IACnE,cAAc,EAAE,uCAAuC;IACvD,uBAAuB,EAAE,+BAA+B;IACxD,eAAe,EAAE,wBAAwB;IACzC,cAAc,EAAE,mBAAmB;IAEnC,oBAAoB;IACpB,kBAAkB,EAAE,yEAAyE;IAC7F,iBAAiB,EAAE,uBAAuB;IAC1C,cAAc,EAAE,8BAA8B;IAC9C,iBAAiB,EAAE,4BAA4B;IAC/C,iBAAiB,EAAE,0CAA0C;IAC7D,gBAAgB,EAAE,8BAA8B;IAChD,uBAAuB,EAAE,2CAA2C;IACpE,eAAe,EAAE,+DAA+D;IAEhF,sBAAsB;IACtB,YAAY,EAAE,mCAAmC;IACjD,SAAS,EAAE,2CAA2C;IACtD,oBAAoB,EAAE,qCAAqC;IAC3D,YAAY,EAAE,wBAAwB;IACtC,UAAU,EAAE,kCAAkC;IAC9C,UAAU,EAAE,sCAAsC;IAClD,eAAe,EAAE,4CAA4C;IAC7D,gBAAgB,EAAE,6CAA6C;IAE/D,WAAW;IACX,aAAa,EAAE,mFAAmF;IAClG,UAAU,EAAE,+BAA+B;IAC3C,aAAa,EAAE,kCAAkC;IACjD,aAAa,EAAE,kCAAkC;IAEjD,mBAAmB;IACnB,aAAa,EAAE,4BAA4B;IAC3C,eAAe,EAAE,gCAAgC;IACjD,aAAa,EAAE,8BAA8B;IAC7C,YAAY,EAAE,mBAAmB;IACjC,cAAc,EAAE,iCAAiC;IACjD,aAAa,EAAE,yBAAyB;IACxC,cAAc,EAAE,kCAAkC;IAClD,aAAa,EAAE,oBAAoB;IACnC,eAAe,EAAE,8BAA8B;IAE/C,oBAAoB;IACpB,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,YAAY;IACvB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,YAAY;IAEtB,kBAAkB;IAClB,YAAY,EAAE,oBAAoB;IAClC,UAAU,EAAE,qBAAqB;IACjC,gBAAgB,EAAE,wCAAwC;CAClD,CAAC;AAIX;;GAEG;AACH,MAAM,UAAU,CAAC,CAAC,GAAmB;IACnC,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC3B,CAAC"}
|