@llm-dev-ops/agentics-cli 1.0.1 → 1.1.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 +66 -16
- package/dist/cli/index.js +88 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/deploy.d.ts +2 -2
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +13 -3
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/diligence.d.ts +2 -2
- package/dist/commands/diligence.d.ts.map +1 -1
- package/dist/commands/diligence.js +13 -3
- package/dist/commands/diligence.js.map +1 -1
- package/dist/commands/export.d.ts +2 -2
- package/dist/commands/export.d.ts.map +1 -1
- package/dist/commands/export.js +13 -3
- package/dist/commands/export.js.map +1 -1
- package/dist/commands/index.d.ts +2 -0
- package/dist/commands/index.d.ts.map +1 -1
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/inspect.d.ts +2 -2
- package/dist/commands/inspect.d.ts.map +1 -1
- package/dist/commands/inspect.js +13 -3
- package/dist/commands/inspect.js.map +1 -1
- package/dist/commands/login.d.ts +30 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +261 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/quantify.d.ts +2 -2
- package/dist/commands/quantify.d.ts.map +1 -1
- package/dist/commands/quantify.js +13 -3
- package/dist/commands/quantify.js.map +1 -1
- package/dist/commands/simulate.d.ts +2 -2
- package/dist/commands/simulate.d.ts.map +1 -1
- package/dist/commands/simulate.js +13 -3
- package/dist/commands/simulate.js.map +1 -1
- package/dist/modules/command-parser.d.ts +1 -1
- package/dist/modules/command-parser.d.ts.map +1 -1
- package/dist/modules/command-parser.js +1 -0
- package/dist/modules/command-parser.js.map +1 -1
- package/dist/types/index.d.ts +40 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +50 -0
- package/dist/types/index.js.map +1 -1
- package/dist/utils/credentials.d.ts +36 -0
- package/dist/utils/credentials.d.ts.map +1 -0
- package/dist/utils/credentials.js +104 -0
- package/dist/utils/credentials.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/index.d.ts
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Re-exports all command implementations
|
|
5
5
|
*/
|
|
6
|
+
export { executeLoginCommand } from './login.js';
|
|
7
|
+
export type { LoginCommandInput, LoginCommandResult } from './login.js';
|
|
6
8
|
export { executePlanCommand } from './plan.js';
|
|
7
9
|
export type { PlanCommandInput, PlanCommandResult } from './plan.js';
|
|
8
10
|
export { executeSimulateCommand } from './simulate.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAErE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* PURPOSE: Retrieve deterministic simulation outputs from completed simulations
|
|
13
13
|
* The CLI does NOT interpret or transform outputs - passthrough only
|
|
14
14
|
*/
|
|
15
|
-
import type { CommandOptions, SimulationOutputReference, SimulationReference, SimulationOutputType } from '../types/index.js';
|
|
15
|
+
import type { CommandOptions, SimulationOutputReference, SimulationReference, SimulationOutputType, FlexibleInput } from '../types/index.js';
|
|
16
16
|
export interface InspectCommandInput {
|
|
17
|
-
simRef: SimulationReference
|
|
17
|
+
simRef: FlexibleInput<SimulationReference>;
|
|
18
18
|
outputType?: SimulationOutputType;
|
|
19
19
|
}
|
|
20
20
|
export interface InspectCommandResult {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,
|
|
1
|
+
{"version":3,"file":"inspect.d.ts","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAgB3B,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,oBAAoB,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,yBAAyB,CAAC;IACrC,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,mBAAmB,EAC1B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,oBAAoB,CAAC,CA8F/B"}
|
package/dist/commands/inspect.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* PURPOSE: Retrieve deterministic simulation outputs from completed simulations
|
|
13
13
|
* The CLI does NOT interpret or transform outputs - passthrough only
|
|
14
14
|
*/
|
|
15
|
+
import { isNaturalLanguage } from '../types/index.js';
|
|
15
16
|
import { SimulationEngineAdapter } from '../adapters/base-adapter.js';
|
|
16
17
|
import { createOrchestrationEngine, } from '../modules/orchestration-engine.js';
|
|
17
18
|
import { createArtifactHandoff } from '../modules/artifact-handoff.js';
|
|
@@ -42,7 +43,10 @@ export async function executeInspectCommand(input, options) {
|
|
|
42
43
|
endpoint: '/api/v1/outputs/retrieve',
|
|
43
44
|
method: 'POST',
|
|
44
45
|
buildBody: () => ({
|
|
45
|
-
|
|
46
|
+
// Pass natural language input or structured reference unchanged
|
|
47
|
+
sim_ref: isNaturalLanguage(input.simRef)
|
|
48
|
+
? { natural_language: input.simRef.description }
|
|
49
|
+
: handoff.passthrough(input.simRef),
|
|
46
50
|
output_type: outputType,
|
|
47
51
|
}),
|
|
48
52
|
},
|
|
@@ -59,9 +63,12 @@ export async function executeInspectCommand(input, options) {
|
|
|
59
63
|
const outputStage = result.stages.find(s => s.name === 'retrieve-output');
|
|
60
64
|
const outputRef = handoff.extractReference(outputStage?.response);
|
|
61
65
|
// Record audit entry
|
|
66
|
+
const simRefId = isNaturalLanguage(input.simRef)
|
|
67
|
+
? `nl:${input.simRef.description.slice(0, 50)}`
|
|
68
|
+
: input.simRef.id;
|
|
62
69
|
audit.record({
|
|
63
70
|
command: 'inspect',
|
|
64
|
-
inputs: { simRef:
|
|
71
|
+
inputs: { simRef: simRefId, outputType },
|
|
65
72
|
outputs: outputRef,
|
|
66
73
|
dependencies: [
|
|
67
74
|
{ service: 'agentics-simulation-engine', method: 'retrieve', timestamp: new Date().toISOString(), duration_ms: result.timing.total, success: true },
|
|
@@ -77,9 +84,12 @@ export async function executeInspectCommand(input, options) {
|
|
|
77
84
|
}
|
|
78
85
|
catch (error) {
|
|
79
86
|
// Record failure in audit
|
|
87
|
+
const failedSimRefId = isNaturalLanguage(input.simRef)
|
|
88
|
+
? `nl:${input.simRef.description.slice(0, 50)}`
|
|
89
|
+
: input.simRef.id;
|
|
80
90
|
audit.record({
|
|
81
91
|
command: 'inspect',
|
|
82
|
-
inputs: { simRef:
|
|
92
|
+
inputs: { simRef: failedSimRefId, outputType },
|
|
83
93
|
outputs: null,
|
|
84
94
|
dependencies: [],
|
|
85
95
|
duration_ms: Date.now() - startTime,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../src/commands/inspect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Login Command (agentics login)
|
|
3
|
+
*
|
|
4
|
+
* SPARC Architecture Reference: CLI Authentication
|
|
5
|
+
*
|
|
6
|
+
* PURPOSE: Initiate CLI authentication flow via device code grant
|
|
7
|
+
*
|
|
8
|
+
* WORKFLOW:
|
|
9
|
+
* 1. Create CLI authentication session with platform API
|
|
10
|
+
* 2. Display verification URL and user code
|
|
11
|
+
* 3. Optionally open URL in user's browser
|
|
12
|
+
* 4. Poll platform API until authorization completes
|
|
13
|
+
* 5. Securely store resulting API key locally
|
|
14
|
+
*
|
|
15
|
+
* FORBIDDEN:
|
|
16
|
+
* - Storing credentials in plaintext in code
|
|
17
|
+
* - Logging credential values
|
|
18
|
+
* - Bypassing the authorization flow
|
|
19
|
+
*/
|
|
20
|
+
import type { CommandOptions } from '../types/index.js';
|
|
21
|
+
export interface LoginCommandInput {
|
|
22
|
+
noBrowser?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface LoginCommandResult {
|
|
25
|
+
success: boolean;
|
|
26
|
+
message: string;
|
|
27
|
+
credentialsPath?: string;
|
|
28
|
+
}
|
|
29
|
+
export declare function executeLoginCommand(input: LoginCommandInput, options: CommandOptions): Promise<LoginCommandResult>;
|
|
30
|
+
//# sourceMappingURL=login.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAkC,MAAM,mBAAmB,CAAC;AAQxF,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAgBD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,kBAAkB,CAAC,CA8D7B"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Login Command (agentics login)
|
|
3
|
+
*
|
|
4
|
+
* SPARC Architecture Reference: CLI Authentication
|
|
5
|
+
*
|
|
6
|
+
* PURPOSE: Initiate CLI authentication flow via device code grant
|
|
7
|
+
*
|
|
8
|
+
* WORKFLOW:
|
|
9
|
+
* 1. Create CLI authentication session with platform API
|
|
10
|
+
* 2. Display verification URL and user code
|
|
11
|
+
* 3. Optionally open URL in user's browser
|
|
12
|
+
* 4. Poll platform API until authorization completes
|
|
13
|
+
* 5. Securely store resulting API key locally
|
|
14
|
+
*
|
|
15
|
+
* FORBIDDEN:
|
|
16
|
+
* - Storing credentials in plaintext in code
|
|
17
|
+
* - Logging credential values
|
|
18
|
+
* - Bypassing the authorization flow
|
|
19
|
+
*/
|
|
20
|
+
import { AuthError } from '../errors/index.js';
|
|
21
|
+
import { createCredentialStore } from '../utils/credentials.js';
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Configuration
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const PLATFORM_URL = process.env['AGENTICS_PLATFORM_URL'] ?? 'https://platform.agentics.org';
|
|
26
|
+
const AUTH_SESSION_ENDPOINT = '/api/v1/cli/auth/session';
|
|
27
|
+
const AUTH_TOKEN_ENDPOINT = '/api/v1/cli/auth/token';
|
|
28
|
+
const DEFAULT_POLL_INTERVAL = 5000; // 5 seconds
|
|
29
|
+
const MAX_POLL_ATTEMPTS = 120; // 10 minutes max (120 * 5s)
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Login Command Implementation
|
|
32
|
+
// ============================================================================
|
|
33
|
+
export async function executeLoginCommand(input, options) {
|
|
34
|
+
const correlationId = options.trace_id ?? crypto.randomUUID();
|
|
35
|
+
const credentialStore = createCredentialStore();
|
|
36
|
+
// Check if already authenticated
|
|
37
|
+
const existingCredentials = await credentialStore.load();
|
|
38
|
+
if (existingCredentials) {
|
|
39
|
+
if (options.verbose) {
|
|
40
|
+
console.error('Existing credentials found. Re-authenticating...');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Step 1: Create CLI auth session
|
|
44
|
+
if (options.verbose) {
|
|
45
|
+
console.error('Creating authentication session...');
|
|
46
|
+
}
|
|
47
|
+
const session = await createAuthSession(correlationId, options);
|
|
48
|
+
// Step 2: Display verification URL and user code
|
|
49
|
+
console.log('');
|
|
50
|
+
console.log('To authenticate, visit:');
|
|
51
|
+
console.log(` ${session.verification_url}`);
|
|
52
|
+
console.log('');
|
|
53
|
+
console.log(`Your verification code: ${session.user_code}`);
|
|
54
|
+
console.log('');
|
|
55
|
+
// Step 3: Optionally open URL in browser
|
|
56
|
+
if (!input.noBrowser) {
|
|
57
|
+
await openBrowser(session.verification_url, options);
|
|
58
|
+
}
|
|
59
|
+
// Step 4: Poll for authorization completion
|
|
60
|
+
console.log('Waiting for authorization...');
|
|
61
|
+
console.log('(Press Ctrl+C to cancel)');
|
|
62
|
+
console.log('');
|
|
63
|
+
const tokenResponse = await pollForAuthorization(session.session_id, session.interval ?? DEFAULT_POLL_INTERVAL, session.expires_at, correlationId, options);
|
|
64
|
+
// Step 5: Store credentials securely
|
|
65
|
+
await credentialStore.save({
|
|
66
|
+
api_key: tokenResponse.api_key,
|
|
67
|
+
created_at: new Date().toISOString(),
|
|
68
|
+
expires_at: tokenResponse.expires_at,
|
|
69
|
+
});
|
|
70
|
+
const credentialsPath = credentialStore.getCredentialsPath?.() ?? '~/.agentics/credentials.json';
|
|
71
|
+
console.log('Authentication successful!');
|
|
72
|
+
console.log(`API key stored at: ${credentialsPath}`);
|
|
73
|
+
return {
|
|
74
|
+
success: true,
|
|
75
|
+
message: 'Authentication successful',
|
|
76
|
+
credentialsPath,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// ============================================================================
|
|
80
|
+
// Helper Functions
|
|
81
|
+
// ============================================================================
|
|
82
|
+
async function createAuthSession(correlationId, options) {
|
|
83
|
+
const url = `${PLATFORM_URL}${AUTH_SESSION_ENDPOINT}`;
|
|
84
|
+
try {
|
|
85
|
+
const controller = new AbortController();
|
|
86
|
+
const timeoutId = setTimeout(() => controller.abort(), options.timeout ?? 30000);
|
|
87
|
+
const response = await fetch(url, {
|
|
88
|
+
method: 'POST',
|
|
89
|
+
headers: {
|
|
90
|
+
'Content-Type': 'application/json',
|
|
91
|
+
'X-Correlation-ID': correlationId,
|
|
92
|
+
'User-Agent': 'agentics-cli/1.0.0',
|
|
93
|
+
},
|
|
94
|
+
body: JSON.stringify({
|
|
95
|
+
client_type: 'cli',
|
|
96
|
+
}),
|
|
97
|
+
signal: controller.signal,
|
|
98
|
+
});
|
|
99
|
+
clearTimeout(timeoutId);
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
const errorBody = await response.text().catch(() => 'Unknown error');
|
|
102
|
+
throw new AuthError({
|
|
103
|
+
type: 'invalid',
|
|
104
|
+
message: `Failed to create authentication session: ${response.status} ${errorBody}`,
|
|
105
|
+
correlationId,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const data = await response.json();
|
|
109
|
+
// Validate response structure
|
|
110
|
+
if (!data.session_id || !data.verification_url || !data.user_code) {
|
|
111
|
+
throw new AuthError({
|
|
112
|
+
type: 'invalid',
|
|
113
|
+
message: 'Invalid authentication session response from server',
|
|
114
|
+
correlationId,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
return data;
|
|
118
|
+
}
|
|
119
|
+
catch (error) {
|
|
120
|
+
if (error instanceof AuthError) {
|
|
121
|
+
throw error;
|
|
122
|
+
}
|
|
123
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
124
|
+
throw new AuthError({
|
|
125
|
+
type: 'invalid',
|
|
126
|
+
message: 'Authentication session request timed out',
|
|
127
|
+
correlationId,
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
throw new AuthError({
|
|
131
|
+
type: 'invalid',
|
|
132
|
+
message: `Failed to connect to authentication server: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
133
|
+
correlationId,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
async function pollForAuthorization(sessionId, interval, expiresAt, correlationId, options) {
|
|
138
|
+
const url = `${PLATFORM_URL}${AUTH_TOKEN_ENDPOINT}`;
|
|
139
|
+
const expirationTime = new Date(expiresAt).getTime();
|
|
140
|
+
let attempts = 0;
|
|
141
|
+
while (attempts < MAX_POLL_ATTEMPTS) {
|
|
142
|
+
// Check if session has expired
|
|
143
|
+
if (Date.now() >= expirationTime) {
|
|
144
|
+
throw new AuthError({
|
|
145
|
+
type: 'expired',
|
|
146
|
+
message: 'Authentication session expired. Please try again.',
|
|
147
|
+
correlationId,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
// Wait before polling
|
|
151
|
+
await sleep(interval);
|
|
152
|
+
attempts++;
|
|
153
|
+
try {
|
|
154
|
+
const controller = new AbortController();
|
|
155
|
+
const timeoutId = setTimeout(() => controller.abort(), options.timeout ?? 30000);
|
|
156
|
+
const response = await fetch(url, {
|
|
157
|
+
method: 'POST',
|
|
158
|
+
headers: {
|
|
159
|
+
'Content-Type': 'application/json',
|
|
160
|
+
'X-Correlation-ID': correlationId,
|
|
161
|
+
'User-Agent': 'agentics-cli/1.0.0',
|
|
162
|
+
},
|
|
163
|
+
body: JSON.stringify({
|
|
164
|
+
session_id: sessionId,
|
|
165
|
+
}),
|
|
166
|
+
signal: controller.signal,
|
|
167
|
+
});
|
|
168
|
+
clearTimeout(timeoutId);
|
|
169
|
+
if (response.status === 202) {
|
|
170
|
+
// Authorization pending, continue polling
|
|
171
|
+
if (options.verbose) {
|
|
172
|
+
process.stderr.write('.');
|
|
173
|
+
}
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (response.status === 403) {
|
|
177
|
+
throw new AuthError({
|
|
178
|
+
type: 'insufficient',
|
|
179
|
+
message: 'Authorization denied by user',
|
|
180
|
+
correlationId,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (!response.ok) {
|
|
184
|
+
const errorBody = await response.text().catch(() => 'Unknown error');
|
|
185
|
+
throw new AuthError({
|
|
186
|
+
type: 'invalid',
|
|
187
|
+
message: `Authorization check failed: ${response.status} ${errorBody}`,
|
|
188
|
+
correlationId,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
// Success - parse token response
|
|
192
|
+
const data = await response.json();
|
|
193
|
+
if (!data.api_key) {
|
|
194
|
+
throw new AuthError({
|
|
195
|
+
type: 'invalid',
|
|
196
|
+
message: 'Invalid token response from server',
|
|
197
|
+
correlationId,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (options.verbose) {
|
|
201
|
+
console.error(''); // New line after dots
|
|
202
|
+
}
|
|
203
|
+
return data;
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
if (error instanceof AuthError) {
|
|
207
|
+
throw error;
|
|
208
|
+
}
|
|
209
|
+
if (error instanceof Error && error.name === 'AbortError') {
|
|
210
|
+
// Timeout on poll, continue
|
|
211
|
+
if (options.verbose) {
|
|
212
|
+
process.stderr.write('x');
|
|
213
|
+
}
|
|
214
|
+
continue;
|
|
215
|
+
}
|
|
216
|
+
// Network error, continue polling
|
|
217
|
+
if (options.verbose) {
|
|
218
|
+
process.stderr.write('!');
|
|
219
|
+
}
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
throw new AuthError({
|
|
224
|
+
type: 'expired',
|
|
225
|
+
message: 'Authentication timed out. Please try again.',
|
|
226
|
+
correlationId,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
async function openBrowser(url, options) {
|
|
230
|
+
try {
|
|
231
|
+
const { exec } = await import('node:child_process');
|
|
232
|
+
const { promisify } = await import('node:util');
|
|
233
|
+
const execAsync = promisify(exec);
|
|
234
|
+
const platform = process.platform;
|
|
235
|
+
let command;
|
|
236
|
+
if (platform === 'darwin') {
|
|
237
|
+
command = `open "${url}"`;
|
|
238
|
+
}
|
|
239
|
+
else if (platform === 'win32') {
|
|
240
|
+
command = `start "" "${url}"`;
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
// Linux and others
|
|
244
|
+
command = `xdg-open "${url}" 2>/dev/null || sensible-browser "${url}" 2>/dev/null || x-www-browser "${url}" 2>/dev/null`;
|
|
245
|
+
}
|
|
246
|
+
await execAsync(command);
|
|
247
|
+
if (options.verbose) {
|
|
248
|
+
console.error('Opened browser for authentication');
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
// Browser opening failed, user can manually navigate
|
|
253
|
+
if (options.verbose) {
|
|
254
|
+
console.error('Could not open browser automatically. Please navigate to the URL manually.');
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
function sleep(ms) {
|
|
259
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
260
|
+
}
|
|
261
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
* PURPOSE: Generate CFO-grade financial impact summaries from completed simulations
|
|
13
13
|
* The CLI does NOT perform financial calculations - delegates entirely to enterprise-roi-engine
|
|
14
14
|
*/
|
|
15
|
-
import type { CommandOptions, RoiReportReference, SimulationReference, RoiReportType } from '../types/index.js';
|
|
15
|
+
import type { CommandOptions, RoiReportReference, SimulationReference, RoiReportType, FlexibleInput } from '../types/index.js';
|
|
16
16
|
export interface QuantifyCommandInput {
|
|
17
|
-
simRef: SimulationReference
|
|
17
|
+
simRef: FlexibleInput<SimulationReference>;
|
|
18
18
|
reportType?: RoiReportType;
|
|
19
19
|
params?: Record<string, unknown>;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantify.d.ts","sourceRoot":"","sources":["../../src/commands/quantify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,
|
|
1
|
+
{"version":3,"file":"quantify.d.ts","sourceRoot":"","sources":["../../src/commands/quantify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAgB3B,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC,mBAAmB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,qBAAqB,CAAC,CA+FhC"}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* PURPOSE: Generate CFO-grade financial impact summaries from completed simulations
|
|
13
13
|
* The CLI does NOT perform financial calculations - delegates entirely to enterprise-roi-engine
|
|
14
14
|
*/
|
|
15
|
+
import { isNaturalLanguage } from '../types/index.js';
|
|
15
16
|
import { RoiEngineAdapter } from '../adapters/base-adapter.js';
|
|
16
17
|
import { createOrchestrationEngine, } from '../modules/orchestration-engine.js';
|
|
17
18
|
import { createArtifactHandoff } from '../modules/artifact-handoff.js';
|
|
@@ -42,7 +43,10 @@ export async function executeQuantifyCommand(input, options) {
|
|
|
42
43
|
endpoint: '/api/v1/reports/generate',
|
|
43
44
|
method: 'POST',
|
|
44
45
|
buildBody: () => ({
|
|
45
|
-
|
|
46
|
+
// Pass natural language input or structured reference unchanged
|
|
47
|
+
sim_ref: isNaturalLanguage(input.simRef)
|
|
48
|
+
? { natural_language: input.simRef.description }
|
|
49
|
+
: handoff.passthrough(input.simRef),
|
|
46
50
|
report_type: reportType,
|
|
47
51
|
params: input.params ?? {},
|
|
48
52
|
}),
|
|
@@ -60,9 +64,12 @@ export async function executeQuantifyCommand(input, options) {
|
|
|
60
64
|
const roiStage = result.stages.find(s => s.name === 'generate-roi-report');
|
|
61
65
|
const roiRef = handoff.extractReference(roiStage?.response);
|
|
62
66
|
// Record audit entry
|
|
67
|
+
const simRefId = isNaturalLanguage(input.simRef)
|
|
68
|
+
? `nl:${input.simRef.description.slice(0, 50)}`
|
|
69
|
+
: input.simRef.id;
|
|
63
70
|
audit.record({
|
|
64
71
|
command: 'quantify',
|
|
65
|
-
inputs: { simRef:
|
|
72
|
+
inputs: { simRef: simRefId, reportType, params: input.params },
|
|
66
73
|
outputs: roiRef,
|
|
67
74
|
dependencies: [
|
|
68
75
|
{ service: 'enterprise-roi-engine', method: 'generate', timestamp: new Date().toISOString(), duration_ms: result.timing.total, success: true },
|
|
@@ -78,9 +85,12 @@ export async function executeQuantifyCommand(input, options) {
|
|
|
78
85
|
}
|
|
79
86
|
catch (error) {
|
|
80
87
|
// Record failure in audit
|
|
88
|
+
const failedSimRefId = isNaturalLanguage(input.simRef)
|
|
89
|
+
? `nl:${input.simRef.description.slice(0, 50)}`
|
|
90
|
+
: input.simRef.id;
|
|
81
91
|
audit.record({
|
|
82
92
|
command: 'quantify',
|
|
83
|
-
inputs: { simRef:
|
|
93
|
+
inputs: { simRef: failedSimRefId, reportType },
|
|
84
94
|
outputs: null,
|
|
85
95
|
dependencies: [],
|
|
86
96
|
duration_ms: Date.now() - startTime,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quantify.js","sourceRoot":"","sources":["../../src/commands/quantify.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"quantify.js","sourceRoot":"","sources":["../../src/commands/quantify.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
* 3. Record audit entry
|
|
10
10
|
* 4. Return SimulationReference
|
|
11
11
|
*/
|
|
12
|
-
import type { CommandOptions, SimulationReference, PlanReference } from '../types/index.js';
|
|
12
|
+
import type { CommandOptions, SimulationReference, PlanReference, FlexibleInput } from '../types/index.js';
|
|
13
13
|
export interface SimulateCommandInput {
|
|
14
|
-
planRef: PlanReference
|
|
14
|
+
planRef: FlexibleInput<PlanReference>;
|
|
15
15
|
config?: Record<string, unknown>;
|
|
16
16
|
iterations?: number;
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,
|
|
1
|
+
{"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,aAAa,EACb,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAgB3B,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,oBAAoB,EAC3B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,qBAAqB,CAAC,CA4FhC"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* 3. Record audit entry
|
|
10
10
|
* 4. Return SimulationReference
|
|
11
11
|
*/
|
|
12
|
+
import { isNaturalLanguage } from '../types/index.js';
|
|
12
13
|
import { RunnerAdapter } from '../adapters/base-adapter.js';
|
|
13
14
|
import { createOrchestrationEngine, } from '../modules/orchestration-engine.js';
|
|
14
15
|
import { createArtifactHandoff } from '../modules/artifact-handoff.js';
|
|
@@ -37,7 +38,10 @@ export async function executeSimulateCommand(input, options) {
|
|
|
37
38
|
endpoint: '/api/v1/simulations/execute',
|
|
38
39
|
method: 'POST',
|
|
39
40
|
buildBody: () => ({
|
|
40
|
-
|
|
41
|
+
// Pass natural language input or structured reference unchanged
|
|
42
|
+
plan_ref: isNaturalLanguage(input.planRef)
|
|
43
|
+
? { natural_language: input.planRef.description }
|
|
44
|
+
: handoff.passthrough(input.planRef),
|
|
41
45
|
config: input.config ?? {},
|
|
42
46
|
iterations: input.iterations ?? 1,
|
|
43
47
|
}),
|
|
@@ -55,9 +59,12 @@ export async function executeSimulateCommand(input, options) {
|
|
|
55
59
|
const simStage = result.stages.find(s => s.name === 'execute-simulation');
|
|
56
60
|
const simRef = handoff.extractReference(simStage?.response);
|
|
57
61
|
// Record audit entry
|
|
62
|
+
const planRefId = isNaturalLanguage(input.planRef)
|
|
63
|
+
? `nl:${input.planRef.description.slice(0, 50)}`
|
|
64
|
+
: input.planRef.id;
|
|
58
65
|
audit.record({
|
|
59
66
|
command: 'simulate',
|
|
60
|
-
inputs: { planRef:
|
|
67
|
+
inputs: { planRef: planRefId, config: input.config, iterations: input.iterations },
|
|
61
68
|
outputs: simRef,
|
|
62
69
|
dependencies: [
|
|
63
70
|
{ service: 'agentics-simulation-runner', method: 'execute', timestamp: new Date().toISOString(), duration_ms: result.timing.total, success: true },
|
|
@@ -73,9 +80,12 @@ export async function executeSimulateCommand(input, options) {
|
|
|
73
80
|
}
|
|
74
81
|
catch (error) {
|
|
75
82
|
// Record failure in audit
|
|
83
|
+
const failedPlanRefId = isNaturalLanguage(input.planRef)
|
|
84
|
+
? `nl:${input.planRef.description.slice(0, 50)}`
|
|
85
|
+
: input.planRef.id;
|
|
76
86
|
audit.record({
|
|
77
87
|
command: 'simulate',
|
|
78
|
-
inputs: { planRef:
|
|
88
|
+
inputs: { planRef: failedPlanRefId, config: input.config },
|
|
79
89
|
outputs: null,
|
|
80
90
|
dependencies: [],
|
|
81
91
|
duration_ms: Date.now() - startTime,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"simulate.js","sourceRoot":"","sources":["../../src/commands/simulate.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ import type { CommandObject } from '../types/index.js';
|
|
|
16
16
|
export interface ICommandParser {
|
|
17
17
|
parse(args: string[]): CommandObject;
|
|
18
18
|
}
|
|
19
|
-
export declare const SUPPORTED_COMMANDS: readonly ["plan", "simulate", "inspect", "quantify", "deploy", "export", "diligence", "audit", "version", "help"];
|
|
19
|
+
export declare const SUPPORTED_COMMANDS: readonly ["login", "plan", "simulate", "inspect", "quantify", "deploy", "export", "diligence", "audit", "version", "help"];
|
|
20
20
|
export type SupportedCommand = (typeof SUPPORTED_COMMANDS)[number];
|
|
21
21
|
export declare class CommandParser implements ICommandParser {
|
|
22
22
|
parse(args: string[]): CommandObject;
|