@llm-dev-ops/agentics-cli 1.3.16 → 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/dist/adapters/base-adapter.d.ts +36 -0
- package/dist/adapters/base-adapter.d.ts.map +1 -1
- package/dist/adapters/base-adapter.js +93 -7
- package/dist/adapters/base-adapter.js.map +1 -1
- package/dist/agents/cli-ux-agent.d.ts +153 -0
- package/dist/agents/cli-ux-agent.d.ts.map +1 -0
- package/dist/agents/cli-ux-agent.js +488 -0
- package/dist/agents/cli-ux-agent.js.map +1 -0
- package/dist/agents/decision-event.d.ts +177 -0
- package/dist/agents/decision-event.d.ts.map +1 -0
- package/dist/agents/decision-event.js +346 -0
- package/dist/agents/decision-event.js.map +1 -0
- package/dist/agents/index.d.ts +20 -0
- package/dist/agents/index.d.ts.map +1 -0
- package/dist/agents/index.js +23 -0
- package/dist/agents/index.js.map +1 -0
- package/dist/agents/types.d.ts +304 -0
- package/dist/agents/types.d.ts.map +1 -0
- package/dist/agents/types.js +74 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/auth/gcp-identity.d.ts +61 -0
- package/dist/auth/gcp-identity.d.ts.map +1 -0
- package/dist/auth/gcp-identity.js +228 -0
- package/dist/auth/gcp-identity.js.map +1 -0
- package/dist/auth/index.d.ts +8 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +8 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/cli/index.js +74 -65
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/policy.d.ts +0 -50
- package/dist/commands/policy.d.ts.map +1 -1
- package/dist/commands/policy.js +0 -266
- package/dist/commands/policy.js.map +1 -1
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +54 -7
- package/dist/commands/whoami.js.map +1 -1
- package/dist/contracts/schemas/index.d.ts +505 -0
- package/dist/contracts/schemas/index.d.ts.map +1 -1
- package/dist/contracts/schemas/index.js +315 -0
- package/dist/contracts/schemas/index.js.map +1 -1
- package/dist/gates/execution-gate.d.ts +59 -0
- package/dist/gates/execution-gate.d.ts.map +1 -0
- package/dist/gates/execution-gate.js +115 -0
- package/dist/gates/execution-gate.js.map +1 -0
- package/dist/gates/index.d.ts +8 -0
- package/dist/gates/index.d.ts.map +1 -0
- package/dist/gates/index.js +8 -0
- package/dist/gates/index.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI UX Agent Implementation
|
|
3
|
+
*
|
|
4
|
+
* CONSTITUTION REFERENCE: PROMPT 0, PROMPT 1, PROMPT 2
|
|
5
|
+
*
|
|
6
|
+
* AGENT NAME: CLI UX Agent
|
|
7
|
+
* CLASSIFICATION: CLI_UX_ORCHESTRATION
|
|
8
|
+
*
|
|
9
|
+
* PURPOSE:
|
|
10
|
+
* Provide a consistent, guided, and contract-validated command-line user
|
|
11
|
+
* experience for interacting with the Agentics Dev platform.
|
|
12
|
+
*
|
|
13
|
+
* SCOPE:
|
|
14
|
+
* - Parse and validate CLI commands
|
|
15
|
+
* - Guide users through workflows
|
|
16
|
+
* - Orchestrate calls to Agentics services
|
|
17
|
+
* - Normalize and present outputs
|
|
18
|
+
* - Emit UX-level interaction signals
|
|
19
|
+
*
|
|
20
|
+
* NON-RESPONSIBILITIES (EXPLICIT):
|
|
21
|
+
* - Execute inference
|
|
22
|
+
* - Execute workflows
|
|
23
|
+
* - Modify upstream state directly
|
|
24
|
+
* - Apply optimizations
|
|
25
|
+
* - Enforce governance or policy decisions
|
|
26
|
+
* - Trigger retries or automation implicitly
|
|
27
|
+
* - Persist business state
|
|
28
|
+
* - Connect directly to databases
|
|
29
|
+
*/
|
|
30
|
+
import * as crypto from 'node:crypto';
|
|
31
|
+
import { CLI_UX_AGENT_ID, CLI_UX_AGENT_VERSION, CLI_UX_AGENT_CLASSIFICATION, INVOCABLE_SERVICES, NON_RESPONSIBILITIES, } from './types.js';
|
|
32
|
+
import { DecisionEventBuilder, createDecisionEventEmitter, createTelemetryEmitter, } from './decision-event.js';
|
|
33
|
+
// ============================================================================
|
|
34
|
+
// Agent Registration (PROMPT 1 Requirement)
|
|
35
|
+
// ============================================================================
|
|
36
|
+
/**
|
|
37
|
+
* CLI UX Agent registration metadata.
|
|
38
|
+
* Defines the complete contract for this agent.
|
|
39
|
+
*/
|
|
40
|
+
export const CLI_UX_AGENT_REGISTRATION = {
|
|
41
|
+
identifier: {
|
|
42
|
+
agent_id: CLI_UX_AGENT_ID,
|
|
43
|
+
agent_version: CLI_UX_AGENT_VERSION,
|
|
44
|
+
agent_name: 'CLI UX Agent',
|
|
45
|
+
classification: CLI_UX_AGENT_CLASSIFICATION,
|
|
46
|
+
},
|
|
47
|
+
purpose: 'Provide a consistent, guided, and contract-validated command-line user ' +
|
|
48
|
+
'experience for interacting with the Agentics Dev platform.',
|
|
49
|
+
inputs_schema_ref: 'agentics-contracts/cli-ux-agent-input/v1',
|
|
50
|
+
outputs_schema_ref: 'agentics-contracts/cli-ux-agent-output/v1',
|
|
51
|
+
decision_event_schema_ref: 'agentics-contracts/decision-event/v1',
|
|
52
|
+
invocable_services: [...INVOCABLE_SERVICES],
|
|
53
|
+
non_responsibilities: [...NON_RESPONSIBILITIES],
|
|
54
|
+
failure_modes: [
|
|
55
|
+
{
|
|
56
|
+
code: 'ECLI-AGENT-001',
|
|
57
|
+
description: 'Command validation failed',
|
|
58
|
+
exit_code: 100,
|
|
59
|
+
recoverable: false,
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
code: 'ECLI-AGENT-002',
|
|
63
|
+
description: 'Service routing failed',
|
|
64
|
+
exit_code: 140,
|
|
65
|
+
recoverable: false,
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
code: 'ECLI-AGENT-003',
|
|
69
|
+
description: 'Output formatting failed',
|
|
70
|
+
exit_code: 150,
|
|
71
|
+
recoverable: true,
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
code: 'ECLI-AGENT-004',
|
|
75
|
+
description: 'Authentication required',
|
|
76
|
+
exit_code: 130,
|
|
77
|
+
recoverable: true,
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
code: 'ECLI-AGENT-005',
|
|
81
|
+
description: 'Execution gate blocked',
|
|
82
|
+
exit_code: 77,
|
|
83
|
+
recoverable: false,
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
};
|
|
87
|
+
// ============================================================================
|
|
88
|
+
// CLI UX Agent Implementation
|
|
89
|
+
// ============================================================================
|
|
90
|
+
export class CLIUXAgent {
|
|
91
|
+
config;
|
|
92
|
+
decisionEmitter;
|
|
93
|
+
telemetryEmitter;
|
|
94
|
+
constructor(config = {}) {
|
|
95
|
+
this.config = {
|
|
96
|
+
emit_decisions: config.emit_decisions ?? false,
|
|
97
|
+
emit_telemetry: config.emit_telemetry ?? false,
|
|
98
|
+
ruvector_url: config.ruvector_url ?? process.env['RUVECTOR_SERVICE_URL'] ?? '',
|
|
99
|
+
telemetry_endpoint: config.telemetry_endpoint ?? '',
|
|
100
|
+
default_output_format: config.default_output_format ?? 'json',
|
|
101
|
+
default_timeout: config.default_timeout ?? 30000,
|
|
102
|
+
};
|
|
103
|
+
this.decisionEmitter = createDecisionEventEmitter({
|
|
104
|
+
ruvector_url: this.config.ruvector_url,
|
|
105
|
+
enabled: this.config.emit_decisions,
|
|
106
|
+
});
|
|
107
|
+
this.telemetryEmitter = createTelemetryEmitter({
|
|
108
|
+
enabled: this.config.emit_telemetry,
|
|
109
|
+
endpoint: this.config.telemetry_endpoint,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get agent identifier.
|
|
114
|
+
*/
|
|
115
|
+
getIdentifier() {
|
|
116
|
+
return CLI_UX_AGENT_REGISTRATION.identifier;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Get agent registration.
|
|
120
|
+
*/
|
|
121
|
+
getRegistration() {
|
|
122
|
+
return CLI_UX_AGENT_REGISTRATION;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Process a CLI command.
|
|
126
|
+
*
|
|
127
|
+
* EXECUTION FLOW:
|
|
128
|
+
* 1. Record invocation telemetry
|
|
129
|
+
* 2. Validate command
|
|
130
|
+
* 3. Resolve execution context
|
|
131
|
+
* 4. Calculate confidence
|
|
132
|
+
* 5. Build result
|
|
133
|
+
* 6. Emit DecisionEvent (async, non-blocking)
|
|
134
|
+
* 7. Record completion telemetry
|
|
135
|
+
* 8. Return output
|
|
136
|
+
*
|
|
137
|
+
* CONFIRMS:
|
|
138
|
+
* - This agent does NOT execute inference
|
|
139
|
+
* - This agent does NOT modify platform state
|
|
140
|
+
* - This agent does NOT enforce policies
|
|
141
|
+
* - This agent does NOT trigger automation implicitly
|
|
142
|
+
*/
|
|
143
|
+
async process(input) {
|
|
144
|
+
const startTime = Date.now();
|
|
145
|
+
const startedAt = new Date().toISOString();
|
|
146
|
+
// Record invocation telemetry
|
|
147
|
+
this.telemetryEmitter.record('agent_invocation', CLI_UX_AGENT_ID, input.trace_id, {
|
|
148
|
+
type: 'invocation',
|
|
149
|
+
command: input.command.command,
|
|
150
|
+
subcommand: input.command.subcommand,
|
|
151
|
+
input_hash: this.computeInputHash(input),
|
|
152
|
+
});
|
|
153
|
+
try {
|
|
154
|
+
// Step 1: Validate command
|
|
155
|
+
const validation = this.validateCommand(input.command);
|
|
156
|
+
if (!validation.valid) {
|
|
157
|
+
const result = this.buildErrorResult(validation.errors);
|
|
158
|
+
return this.buildOutput(false, result, input, startTime, startedAt);
|
|
159
|
+
}
|
|
160
|
+
// Step 2: Check for guidance scenarios
|
|
161
|
+
const guidance = this.checkForGuidance(input);
|
|
162
|
+
if (guidance) {
|
|
163
|
+
return this.buildOutput(true, guidance, input, startTime, startedAt);
|
|
164
|
+
}
|
|
165
|
+
// Step 3: Build success result (orchestration happens in CLI command handlers)
|
|
166
|
+
const result = this.buildSuccessResult(input);
|
|
167
|
+
return this.buildOutput(true, result, input, startTime, startedAt);
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
const result = {
|
|
171
|
+
type: 'error',
|
|
172
|
+
code: 'ECLI-AGENT-999',
|
|
173
|
+
message: error instanceof Error ? error.message : 'Unknown error',
|
|
174
|
+
recoverable: false,
|
|
175
|
+
};
|
|
176
|
+
return this.buildOutput(false, result, input, startTime, startedAt);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Validate command syntax and structure.
|
|
181
|
+
*/
|
|
182
|
+
validateCommand(command) {
|
|
183
|
+
const errors = [];
|
|
184
|
+
// Validate command name
|
|
185
|
+
if (!command.command || command.command.trim() === '') {
|
|
186
|
+
errors.push({
|
|
187
|
+
field: 'command',
|
|
188
|
+
message: 'Command name is required',
|
|
189
|
+
code: 'ECLI-VAL-001',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
// Validate command is known
|
|
193
|
+
const knownCommands = [
|
|
194
|
+
'login', 'logout', 'whoami',
|
|
195
|
+
'plan', 'simulate', 'inspect', 'quantify',
|
|
196
|
+
'deploy', 'export', 'erp', 'diligence',
|
|
197
|
+
'usage', 'policy', 'audit',
|
|
198
|
+
'help', 'version',
|
|
199
|
+
];
|
|
200
|
+
if (command.command && !knownCommands.includes(command.command)) {
|
|
201
|
+
errors.push({
|
|
202
|
+
field: 'command',
|
|
203
|
+
message: `Unknown command: ${command.command}. Run 'agentics help' for available commands.`,
|
|
204
|
+
code: 'ECLI-VAL-002',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
// Validate subcommands for commands that require them
|
|
208
|
+
const commandsRequiringSubcommand = ['plan', 'simulate', 'erp', 'diligence'];
|
|
209
|
+
if (command.command &&
|
|
210
|
+
commandsRequiringSubcommand.includes(command.command) &&
|
|
211
|
+
!command.subcommand) {
|
|
212
|
+
errors.push({
|
|
213
|
+
field: 'subcommand',
|
|
214
|
+
message: `Command '${command.command}' requires a subcommand. Run 'agentics ${command.command} help' for options.`,
|
|
215
|
+
code: 'ECLI-VAL-003',
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
valid: errors.length === 0,
|
|
220
|
+
errors,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Resolve environment context from arguments.
|
|
225
|
+
*/
|
|
226
|
+
resolveContext(args) {
|
|
227
|
+
const flags = this.parseFlags(args);
|
|
228
|
+
const options = this.parseOptions(args);
|
|
229
|
+
return {
|
|
230
|
+
cwd: process.cwd(),
|
|
231
|
+
authenticated: this.checkAuthentication(),
|
|
232
|
+
execution_gate_enabled: this.checkExecutionGate(),
|
|
233
|
+
output_format: options['format'] ?? this.config.default_output_format,
|
|
234
|
+
verbose: flags['verbose'] || flags['v'] || false,
|
|
235
|
+
timeout: parseInt(options['timeout'] ?? String(this.config.default_timeout), 10),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Calculate confidence score for a decision.
|
|
240
|
+
*/
|
|
241
|
+
calculateConfidence(input, result) {
|
|
242
|
+
const components = [];
|
|
243
|
+
// Command resolution confidence
|
|
244
|
+
const commandConfidence = this.calculateCommandConfidence(input.command);
|
|
245
|
+
components.push({
|
|
246
|
+
name: 'command_resolution',
|
|
247
|
+
value: commandConfidence,
|
|
248
|
+
weight: 0.4,
|
|
249
|
+
});
|
|
250
|
+
// Input validation confidence
|
|
251
|
+
const validationConfidence = result.type === 'error' ? 0.0 : 1.0;
|
|
252
|
+
components.push({
|
|
253
|
+
name: 'input_validation',
|
|
254
|
+
value: validationConfidence,
|
|
255
|
+
weight: 0.3,
|
|
256
|
+
});
|
|
257
|
+
// Context confidence
|
|
258
|
+
const contextConfidence = input.context.authenticated ? 1.0 : 0.5;
|
|
259
|
+
components.push({
|
|
260
|
+
name: 'context_resolution',
|
|
261
|
+
value: contextConfidence,
|
|
262
|
+
weight: 0.3,
|
|
263
|
+
});
|
|
264
|
+
// Calculate weighted average
|
|
265
|
+
const totalWeight = components.reduce((sum, c) => sum + c.weight, 0);
|
|
266
|
+
const weightedSum = components.reduce((sum, c) => sum + c.value * c.weight, 0);
|
|
267
|
+
const value = weightedSum / totalWeight;
|
|
268
|
+
return {
|
|
269
|
+
value,
|
|
270
|
+
basis: 'command_resolution',
|
|
271
|
+
components,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
// ============================================================================
|
|
275
|
+
// Private Methods
|
|
276
|
+
// ============================================================================
|
|
277
|
+
buildOutput(success, result, input, startTime, startedAt) {
|
|
278
|
+
const completedAt = new Date().toISOString();
|
|
279
|
+
const totalMs = Date.now() - startTime;
|
|
280
|
+
const timing = {
|
|
281
|
+
total_ms: totalMs,
|
|
282
|
+
breakdown: {
|
|
283
|
+
validation: Math.min(10, totalMs * 0.1),
|
|
284
|
+
processing: totalMs * 0.9,
|
|
285
|
+
},
|
|
286
|
+
started_at: startedAt,
|
|
287
|
+
completed_at: completedAt,
|
|
288
|
+
};
|
|
289
|
+
// Calculate confidence
|
|
290
|
+
const confidence = this.calculateConfidence(input, result);
|
|
291
|
+
// Build and emit DecisionEvent (async, non-blocking)
|
|
292
|
+
const decisionEvent = this.buildDecisionEvent(input, result, confidence);
|
|
293
|
+
if (this.config.emit_decisions) {
|
|
294
|
+
this.decisionEmitter.emitAsync(decisionEvent);
|
|
295
|
+
}
|
|
296
|
+
// Record completion telemetry
|
|
297
|
+
this.telemetryEmitter.record('agent_completion', CLI_UX_AGENT_ID, input.trace_id, {
|
|
298
|
+
type: 'completion',
|
|
299
|
+
success,
|
|
300
|
+
duration_ms: totalMs,
|
|
301
|
+
services_invoked: result.type === 'success' ? result.services_invoked : [],
|
|
302
|
+
});
|
|
303
|
+
return {
|
|
304
|
+
success,
|
|
305
|
+
result,
|
|
306
|
+
decision_event: decisionEvent,
|
|
307
|
+
timing,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
buildDecisionEvent(input, result, confidence) {
|
|
311
|
+
const builder = new DecisionEventBuilder({
|
|
312
|
+
trace_id: input.trace_id,
|
|
313
|
+
command: input.command.command,
|
|
314
|
+
subcommand: input.command.subcommand,
|
|
315
|
+
});
|
|
316
|
+
const decisionType = this.determineDecisionType(input, result);
|
|
317
|
+
const constraints = this.buildConstraints(input);
|
|
318
|
+
builder
|
|
319
|
+
.withDecisionType(decisionType)
|
|
320
|
+
.withInputsHash(input)
|
|
321
|
+
.withResultType(result.type)
|
|
322
|
+
.withConfidence(confidence)
|
|
323
|
+
.withConstraints(constraints);
|
|
324
|
+
if (result.type === 'success') {
|
|
325
|
+
const successResult = result;
|
|
326
|
+
if (successResult.artifact_ref) {
|
|
327
|
+
builder.withArtifactRef(successResult.artifact_ref);
|
|
328
|
+
}
|
|
329
|
+
builder.withServicesInvoked(successResult.services_invoked);
|
|
330
|
+
}
|
|
331
|
+
return builder.build();
|
|
332
|
+
}
|
|
333
|
+
determineDecisionType(input, result) {
|
|
334
|
+
if (result.type === 'error') {
|
|
335
|
+
return 'error_presentation';
|
|
336
|
+
}
|
|
337
|
+
if (result.type === 'guidance') {
|
|
338
|
+
return 'workflow_guidance';
|
|
339
|
+
}
|
|
340
|
+
// Determine based on command
|
|
341
|
+
const { command } = input.command;
|
|
342
|
+
if (['help', 'version'].includes(command)) {
|
|
343
|
+
return 'workflow_guidance';
|
|
344
|
+
}
|
|
345
|
+
if (['plan', 'simulate', 'inspect', 'quantify', 'deploy', 'export', 'erp', 'diligence'].includes(command)) {
|
|
346
|
+
return 'service_routing';
|
|
347
|
+
}
|
|
348
|
+
return 'cli_ux_orchestration';
|
|
349
|
+
}
|
|
350
|
+
buildConstraints(input) {
|
|
351
|
+
const environment = {
|
|
352
|
+
is_local: !process.env['AGENTICS_PRODUCTION'],
|
|
353
|
+
is_production: !!process.env['AGENTICS_PRODUCTION'],
|
|
354
|
+
execution_gate_enabled: input.context.execution_gate_enabled,
|
|
355
|
+
auth_present: input.context.authenticated,
|
|
356
|
+
};
|
|
357
|
+
return {
|
|
358
|
+
permissions: input.context.authenticated ? ['authenticated'] : ['anonymous'],
|
|
359
|
+
environment,
|
|
360
|
+
scope: [],
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
buildSuccessResult(input) {
|
|
364
|
+
return {
|
|
365
|
+
type: 'success',
|
|
366
|
+
data: {
|
|
367
|
+
command: input.command.command,
|
|
368
|
+
subcommand: input.command.subcommand,
|
|
369
|
+
processed: true,
|
|
370
|
+
},
|
|
371
|
+
services_invoked: [],
|
|
372
|
+
};
|
|
373
|
+
}
|
|
374
|
+
buildErrorResult(errors) {
|
|
375
|
+
return {
|
|
376
|
+
type: 'error',
|
|
377
|
+
code: errors[0]?.code ?? 'ECLI-AGENT-001',
|
|
378
|
+
message: errors.map(e => e.message).join('; '),
|
|
379
|
+
details: { errors },
|
|
380
|
+
recoverable: false,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
checkForGuidance(input) {
|
|
384
|
+
const { command } = input.command;
|
|
385
|
+
// Help command
|
|
386
|
+
if (command === 'help' || input.command.flags['help'] || input.command.flags['h']) {
|
|
387
|
+
return {
|
|
388
|
+
type: 'guidance',
|
|
389
|
+
message: 'Available commands and options',
|
|
390
|
+
options: [
|
|
391
|
+
{ label: 'plan', command: 'agentics plan', description: 'Create simulation plans' },
|
|
392
|
+
{ label: 'simulate', command: 'agentics simulate', description: 'Run simulations' },
|
|
393
|
+
{ label: 'inspect', command: 'agentics inspect', description: 'Query simulation results' },
|
|
394
|
+
{ label: 'quantify', command: 'agentics quantify', description: 'Generate ROI analysis' },
|
|
395
|
+
{ label: 'deploy', command: 'agentics deploy', description: 'Resolve deployment intent' },
|
|
396
|
+
{ label: 'export', command: 'agentics export', description: 'Generate IaC artifacts' },
|
|
397
|
+
],
|
|
398
|
+
next_steps: [
|
|
399
|
+
'Run "agentics <command> help" for command-specific help',
|
|
400
|
+
'Run "agentics login" to authenticate',
|
|
401
|
+
],
|
|
402
|
+
};
|
|
403
|
+
}
|
|
404
|
+
// No guidance needed
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
calculateCommandConfidence(command) {
|
|
408
|
+
// Known commands have high confidence
|
|
409
|
+
const knownCommands = [
|
|
410
|
+
'login', 'logout', 'whoami',
|
|
411
|
+
'plan', 'simulate', 'inspect', 'quantify',
|
|
412
|
+
'deploy', 'export', 'erp', 'diligence',
|
|
413
|
+
'usage', 'policy', 'audit',
|
|
414
|
+
'help', 'version',
|
|
415
|
+
];
|
|
416
|
+
if (!command.command) {
|
|
417
|
+
return 0.0;
|
|
418
|
+
}
|
|
419
|
+
if (knownCommands.includes(command.command)) {
|
|
420
|
+
return 1.0;
|
|
421
|
+
}
|
|
422
|
+
// Partial match
|
|
423
|
+
const partialMatch = knownCommands.some(c => c.startsWith(command.command));
|
|
424
|
+
if (partialMatch) {
|
|
425
|
+
return 0.5;
|
|
426
|
+
}
|
|
427
|
+
return 0.1;
|
|
428
|
+
}
|
|
429
|
+
parseFlags(args) {
|
|
430
|
+
const flags = {};
|
|
431
|
+
for (const arg of args) {
|
|
432
|
+
if (arg.startsWith('--') && !arg.includes('=')) {
|
|
433
|
+
flags[arg.slice(2)] = true;
|
|
434
|
+
}
|
|
435
|
+
else if (arg.startsWith('-') && !arg.startsWith('--')) {
|
|
436
|
+
flags[arg.slice(1)] = true;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
return flags;
|
|
440
|
+
}
|
|
441
|
+
parseOptions(args) {
|
|
442
|
+
const options = {};
|
|
443
|
+
for (let i = 0; i < args.length; i++) {
|
|
444
|
+
const arg = args[i];
|
|
445
|
+
if (arg?.startsWith('--') && arg.includes('=')) {
|
|
446
|
+
const [key, value] = arg.slice(2).split('=');
|
|
447
|
+
if (key && value) {
|
|
448
|
+
options[key] = value;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
else if (arg?.startsWith('--') && args[i + 1] && !args[i + 1]?.startsWith('-')) {
|
|
452
|
+
options[arg.slice(2)] = args[i + 1];
|
|
453
|
+
i++;
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
return options;
|
|
457
|
+
}
|
|
458
|
+
checkAuthentication() {
|
|
459
|
+
// Check for auth token in environment
|
|
460
|
+
return !!process.env['AGENTICS_API_KEY'] || !!process.env['AGENTICS_AUTH_TOKEN'];
|
|
461
|
+
}
|
|
462
|
+
checkExecutionGate() {
|
|
463
|
+
return process.env['AGENTICS_EXECUTION_ENABLED'] !== 'false';
|
|
464
|
+
}
|
|
465
|
+
computeInputHash(input) {
|
|
466
|
+
const canonical = JSON.stringify({
|
|
467
|
+
command: input.command,
|
|
468
|
+
args: input.args,
|
|
469
|
+
});
|
|
470
|
+
return crypto.createHash('sha256').update(canonical).digest('hex').slice(0, 16);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// ============================================================================
|
|
474
|
+
// Factory Functions
|
|
475
|
+
// ============================================================================
|
|
476
|
+
/**
|
|
477
|
+
* Create a CLI UX Agent instance.
|
|
478
|
+
*/
|
|
479
|
+
export function createCLIUXAgent(config) {
|
|
480
|
+
return new CLIUXAgent(config);
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Get the CLI UX Agent registration.
|
|
484
|
+
*/
|
|
485
|
+
export function getCLIUXAgentRegistration() {
|
|
486
|
+
return CLI_UX_AGENT_REGISTRATION;
|
|
487
|
+
}
|
|
488
|
+
//# sourceMappingURL=cli-ux-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-ux-agent.js","sourceRoot":"","sources":["../../src/agents/cli-ux-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DecisionEvent Emitter
|
|
3
|
+
*
|
|
4
|
+
* CONSTITUTION REFERENCE: PROMPT 0, PROMPT 2
|
|
5
|
+
*
|
|
6
|
+
* PURPOSE: Emit CLI UX-level DecisionEvents to ruvector-service.
|
|
7
|
+
*
|
|
8
|
+
* EMISSION RULES:
|
|
9
|
+
* - At most ONE DecisionEvent per agent invocation
|
|
10
|
+
* - Async, non-blocking emission only
|
|
11
|
+
* - NEVER persists locally
|
|
12
|
+
* - MAY fail silently (UX must not depend on emission)
|
|
13
|
+
*
|
|
14
|
+
* DATA RULES:
|
|
15
|
+
* - Only emit UX telemetry and interaction data
|
|
16
|
+
* - Never emit raw inputs or sensitive data
|
|
17
|
+
* - Always use hashes for reproducibility
|
|
18
|
+
*/
|
|
19
|
+
import type { DecisionEvent, DecisionType, ConfidenceScore, ConstraintsApplied, ExecutionReference, EnvironmentContext, TelemetryEventType, TelemetryData } from './types.js';
|
|
20
|
+
export interface DecisionEventBuilderOptions {
|
|
21
|
+
trace_id: string;
|
|
22
|
+
command: string;
|
|
23
|
+
subcommand?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Builder for constructing DecisionEvents.
|
|
27
|
+
* Ensures all required fields are set before emission.
|
|
28
|
+
*/
|
|
29
|
+
export declare class DecisionEventBuilder {
|
|
30
|
+
private readonly trace_id;
|
|
31
|
+
private readonly command;
|
|
32
|
+
private readonly subcommand?;
|
|
33
|
+
private decision_type;
|
|
34
|
+
private inputs_hash;
|
|
35
|
+
private result_type;
|
|
36
|
+
private artifact_ref?;
|
|
37
|
+
private services_invoked;
|
|
38
|
+
private confidence;
|
|
39
|
+
private constraints;
|
|
40
|
+
private execution_ref;
|
|
41
|
+
constructor(options: DecisionEventBuilderOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Set decision type.
|
|
44
|
+
*/
|
|
45
|
+
withDecisionType(type: DecisionType): this;
|
|
46
|
+
/**
|
|
47
|
+
* Set inputs hash from raw inputs.
|
|
48
|
+
* Computes hash, never stores raw data.
|
|
49
|
+
*/
|
|
50
|
+
withInputsHash(inputs: unknown): this;
|
|
51
|
+
/**
|
|
52
|
+
* Set result type.
|
|
53
|
+
*/
|
|
54
|
+
withResultType(type: 'success' | 'error' | 'guidance'): this;
|
|
55
|
+
/**
|
|
56
|
+
* Set artifact reference.
|
|
57
|
+
*/
|
|
58
|
+
withArtifactRef(ref: string): this;
|
|
59
|
+
/**
|
|
60
|
+
* Add services that were invoked.
|
|
61
|
+
*/
|
|
62
|
+
withServicesInvoked(services: string[]): this;
|
|
63
|
+
/**
|
|
64
|
+
* Set confidence score.
|
|
65
|
+
*/
|
|
66
|
+
withConfidence(confidence: ConfidenceScore): this;
|
|
67
|
+
/**
|
|
68
|
+
* Set constraints applied.
|
|
69
|
+
*/
|
|
70
|
+
withConstraints(constraints: ConstraintsApplied): this;
|
|
71
|
+
/**
|
|
72
|
+
* Set environment context.
|
|
73
|
+
*/
|
|
74
|
+
withEnvironment(env: EnvironmentContext): this;
|
|
75
|
+
/**
|
|
76
|
+
* Set execution reference from downstream service.
|
|
77
|
+
*/
|
|
78
|
+
withExecutionRef(ref: ExecutionReference): this;
|
|
79
|
+
/**
|
|
80
|
+
* Build the DecisionEvent.
|
|
81
|
+
*/
|
|
82
|
+
build(): DecisionEvent;
|
|
83
|
+
/**
|
|
84
|
+
* Compute hash of inputs for reproducibility.
|
|
85
|
+
*/
|
|
86
|
+
private computeHash;
|
|
87
|
+
private sortKeys;
|
|
88
|
+
}
|
|
89
|
+
export interface DecisionEventEmitterConfig {
|
|
90
|
+
/** RuVector service URL */
|
|
91
|
+
ruvector_url?: string;
|
|
92
|
+
/** Enable emission (default: true if ruvector_url set) */
|
|
93
|
+
enabled?: boolean;
|
|
94
|
+
/** Timeout for emission in ms */
|
|
95
|
+
timeout?: number;
|
|
96
|
+
/** Auth token for ruvector-service */
|
|
97
|
+
auth_token?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Emits DecisionEvents to ruvector-service.
|
|
101
|
+
*
|
|
102
|
+
* CRITICAL: Emission is async and non-blocking.
|
|
103
|
+
* Failures are logged but do not affect UX flow.
|
|
104
|
+
*/
|
|
105
|
+
export declare class DecisionEventEmitter {
|
|
106
|
+
private readonly config;
|
|
107
|
+
constructor(config?: DecisionEventEmitterConfig);
|
|
108
|
+
/**
|
|
109
|
+
* Check if emission is enabled.
|
|
110
|
+
*/
|
|
111
|
+
isEnabled(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Emit a DecisionEvent.
|
|
114
|
+
*
|
|
115
|
+
* RULES:
|
|
116
|
+
* - Async, non-blocking
|
|
117
|
+
* - Never throws - failures are silent
|
|
118
|
+
* - Only one event per invocation should be emitted
|
|
119
|
+
*/
|
|
120
|
+
emit(event: DecisionEvent): Promise<EmissionResult>;
|
|
121
|
+
/**
|
|
122
|
+
* Emit without waiting (fire and forget).
|
|
123
|
+
* Use when you don't care about the result.
|
|
124
|
+
*/
|
|
125
|
+
emitAsync(event: DecisionEvent): void;
|
|
126
|
+
}
|
|
127
|
+
export interface EmissionResult {
|
|
128
|
+
success: boolean;
|
|
129
|
+
event_id?: string;
|
|
130
|
+
reason?: 'emission_disabled' | 'http_error' | 'timeout' | 'network_error';
|
|
131
|
+
status_code?: number;
|
|
132
|
+
}
|
|
133
|
+
export interface TelemetryEmitterConfig {
|
|
134
|
+
/** Enable telemetry emission */
|
|
135
|
+
enabled?: boolean;
|
|
136
|
+
/** Telemetry endpoint */
|
|
137
|
+
endpoint?: string;
|
|
138
|
+
/** Batch size before flush */
|
|
139
|
+
batch_size?: number;
|
|
140
|
+
/** Flush interval in ms */
|
|
141
|
+
flush_interval?: number;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Emits telemetry events compatible with LLM-Observatory.
|
|
145
|
+
*/
|
|
146
|
+
export declare class TelemetryEmitter {
|
|
147
|
+
private readonly config;
|
|
148
|
+
private readonly buffer;
|
|
149
|
+
private flushTimer;
|
|
150
|
+
constructor(config?: TelemetryEmitterConfig);
|
|
151
|
+
/**
|
|
152
|
+
* Record a telemetry event.
|
|
153
|
+
*/
|
|
154
|
+
record(event_type: TelemetryEventType, agent_id: string, trace_id: string, data: TelemetryData): void;
|
|
155
|
+
/**
|
|
156
|
+
* Flush buffered events.
|
|
157
|
+
*/
|
|
158
|
+
flush(): Promise<void>;
|
|
159
|
+
/**
|
|
160
|
+
* Stop the flush timer.
|
|
161
|
+
*/
|
|
162
|
+
stop(): void;
|
|
163
|
+
private startFlushTimer;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Create a DecisionEvent builder.
|
|
167
|
+
*/
|
|
168
|
+
export declare function createDecisionEventBuilder(options: DecisionEventBuilderOptions): DecisionEventBuilder;
|
|
169
|
+
/**
|
|
170
|
+
* Create a DecisionEvent emitter.
|
|
171
|
+
*/
|
|
172
|
+
export declare function createDecisionEventEmitter(config?: DecisionEventEmitterConfig): DecisionEventEmitter;
|
|
173
|
+
/**
|
|
174
|
+
* Create a telemetry emitter.
|
|
175
|
+
*/
|
|
176
|
+
export declare function createTelemetryEmitter(config?: TelemetryEmitterConfig): TelemetryEmitter;
|
|
177
|
+
//# sourceMappingURL=decision-event.d.ts.map
|