@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 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 |
@@ -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
@@ -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;CAGxE"}
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"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../src/api-client.ts"],"names":[],"mappings":"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"}
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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const fillCommand: Command;
3
+ //# sourceMappingURL=fill.d.ts.map
@@ -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";
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../src/i18n.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2Df,CAAC;AAEX,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,YAAY,CAAC;AAEvD;;GAEG;AACH,wBAAgB,CAAC,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAE7C"}
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;IAE5B,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;IAEpE,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;IAElD,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;IAEnC,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"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiconnect/confidant",
3
- "version": "1.3.4",
3
+ "version": "1.4.0",
4
4
  "description": "Secure secret handoff system with time-limited access",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",