@llm-dev-ops/agentics-cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/README.md +1 -0
  2. package/dist/adapters/base-adapter.d.ts +73 -0
  3. package/dist/adapters/base-adapter.d.ts.map +1 -0
  4. package/dist/adapters/base-adapter.js +311 -0
  5. package/dist/adapters/base-adapter.js.map +1 -0
  6. package/dist/adapters/index.d.ts +8 -0
  7. package/dist/adapters/index.d.ts.map +1 -0
  8. package/dist/adapters/index.js +7 -0
  9. package/dist/adapters/index.js.map +1 -0
  10. package/dist/audit/audit-trail.d.ts +68 -0
  11. package/dist/audit/audit-trail.d.ts.map +1 -0
  12. package/dist/audit/audit-trail.js +172 -0
  13. package/dist/audit/audit-trail.js.map +1 -0
  14. package/dist/cli/index.d.ts +15 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +265 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/commands/deploy.d.ts +23 -0
  19. package/dist/commands/deploy.d.ts.map +1 -0
  20. package/dist/commands/deploy.js +97 -0
  21. package/dist/commands/deploy.js.map +1 -0
  22. package/dist/commands/diligence.d.ts +23 -0
  23. package/dist/commands/diligence.d.ts.map +1 -0
  24. package/dist/commands/diligence.js +97 -0
  25. package/dist/commands/diligence.js.map +1 -0
  26. package/dist/commands/export.d.ts +23 -0
  27. package/dist/commands/export.d.ts.map +1 -0
  28. package/dist/commands/export.js +99 -0
  29. package/dist/commands/export.js.map +1 -0
  30. package/dist/commands/index.d.ts +20 -0
  31. package/dist/commands/index.d.ts.map +1 -0
  32. package/dist/commands/index.js +13 -0
  33. package/dist/commands/index.js.map +1 -0
  34. package/dist/commands/inspect.d.ts +25 -0
  35. package/dist/commands/inspect.d.ts.map +1 -0
  36. package/dist/commands/inspect.js +101 -0
  37. package/dist/commands/inspect.js.map +1 -0
  38. package/dist/commands/plan.d.ts +23 -0
  39. package/dist/commands/plan.d.ts.map +1 -0
  40. package/dist/commands/plan.js +114 -0
  41. package/dist/commands/plan.js.map +1 -0
  42. package/dist/commands/quantify.d.ts +26 -0
  43. package/dist/commands/quantify.d.ts.map +1 -0
  44. package/dist/commands/quantify.js +102 -0
  45. package/dist/commands/quantify.js.map +1 -0
  46. package/dist/commands/simulate.d.ts +23 -0
  47. package/dist/commands/simulate.d.ts.map +1 -0
  48. package/dist/commands/simulate.js +97 -0
  49. package/dist/commands/simulate.js.map +1 -0
  50. package/dist/config/endpoints.d.ts +16 -0
  51. package/dist/config/endpoints.d.ts.map +1 -0
  52. package/dist/config/endpoints.js +73 -0
  53. package/dist/config/endpoints.js.map +1 -0
  54. package/dist/errors/index.d.ts +120 -0
  55. package/dist/errors/index.d.ts.map +1 -0
  56. package/dist/errors/index.js +281 -0
  57. package/dist/errors/index.js.map +1 -0
  58. package/dist/modules/artifact-handoff.d.ts +57 -0
  59. package/dist/modules/artifact-handoff.d.ts.map +1 -0
  60. package/dist/modules/artifact-handoff.js +85 -0
  61. package/dist/modules/artifact-handoff.js.map +1 -0
  62. package/dist/modules/command-parser.d.ts +28 -0
  63. package/dist/modules/command-parser.d.ts.map +1 -0
  64. package/dist/modules/command-parser.js +176 -0
  65. package/dist/modules/command-parser.js.map +1 -0
  66. package/dist/modules/index.d.ts +14 -0
  67. package/dist/modules/index.d.ts.map +1 -0
  68. package/dist/modules/index.js +10 -0
  69. package/dist/modules/index.js.map +1 -0
  70. package/dist/modules/orchestration-engine.d.ts +43 -0
  71. package/dist/modules/orchestration-engine.d.ts.map +1 -0
  72. package/dist/modules/orchestration-engine.js +159 -0
  73. package/dist/modules/orchestration-engine.js.map +1 -0
  74. package/dist/modules/output-renderer.d.ts +51 -0
  75. package/dist/modules/output-renderer.d.ts.map +1 -0
  76. package/dist/modules/output-renderer.js +193 -0
  77. package/dist/modules/output-renderer.js.map +1 -0
  78. package/dist/types/index.d.ts +223 -0
  79. package/dist/types/index.d.ts.map +1 -0
  80. package/dist/types/index.js +33 -0
  81. package/dist/types/index.js.map +1 -0
  82. package/package.json +64 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # agentics-cli
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Downstream Adapter Module (Module C)
3
+ *
4
+ * SPARC Architecture Reference: §2.4
5
+ *
6
+ * PURPOSE: Invoke external repository APIs with minimal coupling
7
+ *
8
+ * DEPENDENCIES: HTTP Client only
9
+ *
10
+ * FORBIDDEN:
11
+ * - Response Parsing (NO JSON schema validation)
12
+ * - Response Transform (NO field mapping or conversion)
13
+ * - Business Logic (NO conditional handling based on data)
14
+ * - Caching (NO response storage)
15
+ * - Error Recovery (Errors bubble up unchanged)
16
+ */
17
+ import type { AdapterRequest, AdapterResponse, HealthStatus, EndpointConfig } from '../types/index.js';
18
+ export type { AdapterResponse, EndpointConfig } from '../types/index.js';
19
+ export interface IDownstreamAdapter {
20
+ invoke(request: AdapterRequest): Promise<AdapterResponse>;
21
+ health(): Promise<HealthStatus>;
22
+ getEndpointConfig(): EndpointConfig;
23
+ }
24
+ export declare class BaseAdapter implements IDownstreamAdapter {
25
+ protected readonly config: EndpointConfig;
26
+ protected readonly serviceName: string;
27
+ protected readonly correlationId?: string;
28
+ constructor(options: {
29
+ serviceName: string;
30
+ config: EndpointConfig;
31
+ correlationId?: string;
32
+ });
33
+ invoke(request: AdapterRequest): Promise<AdapterResponse>;
34
+ health(): Promise<HealthStatus>;
35
+ getEndpointConfig(): EndpointConfig;
36
+ }
37
+ export declare class ManifestsAdapter extends BaseAdapter {
38
+ constructor(config: EndpointConfig, correlationId?: string);
39
+ select(criteria: unknown): Promise<AdapterResponse>;
40
+ }
41
+ export declare class PlannerAdapter extends BaseAdapter {
42
+ constructor(config: EndpointConfig, correlationId?: string);
43
+ createPlan(manifestRef: unknown, params: unknown): Promise<AdapterResponse>;
44
+ }
45
+ export declare class RunnerAdapter extends BaseAdapter {
46
+ constructor(config: EndpointConfig, correlationId?: string);
47
+ execute(planRef: unknown, config: unknown): Promise<AdapterResponse>;
48
+ }
49
+ export declare class IntentAdapter extends BaseAdapter {
50
+ constructor(config: EndpointConfig, correlationId?: string);
51
+ resolve(simRef: unknown, spec: unknown): Promise<AdapterResponse>;
52
+ }
53
+ export declare class ExportersAdapter extends BaseAdapter {
54
+ constructor(config: EndpointConfig, correlationId?: string);
55
+ generate(intentRef: unknown, formatSpec: unknown): Promise<AdapterResponse>;
56
+ }
57
+ export declare class DiligenceAdapter extends BaseAdapter {
58
+ constructor(config: EndpointConfig, correlationId?: string);
59
+ package(refs: unknown[], requirements: unknown): Promise<AdapterResponse>;
60
+ }
61
+ export declare class SimulationEngineAdapter extends BaseAdapter {
62
+ constructor(config: EndpointConfig, correlationId?: string);
63
+ inspect(simRef: unknown, outputType: string): Promise<AdapterResponse>;
64
+ getOutputs(simRef: unknown): Promise<AdapterResponse>;
65
+ }
66
+ export declare class RoiEngineAdapter extends BaseAdapter {
67
+ constructor(config: EndpointConfig, correlationId?: string);
68
+ quantify(simRef: unknown, reportType: string, params?: unknown): Promise<AdapterResponse>;
69
+ getSummary(simRef: unknown): Promise<AdapterResponse>;
70
+ }
71
+ export type ServiceName = 'agentics-org-manifests' | 'agentics-simulation-planner' | 'agentics-simulation-runner' | 'agentics-simulation-engine' | 'enterprise-roi-engine' | 'agentics-deployment-intent' | 'agentics-deployment-exporters' | 'diligence-artifacts';
72
+ export declare function createAdapter(serviceName: ServiceName, config: EndpointConfig, correlationId?: string): IDownstreamAdapter;
73
+ //# sourceMappingURL=base-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Downstream Adapter Module (Module C)
3
+ *
4
+ * SPARC Architecture Reference: §2.4
5
+ *
6
+ * PURPOSE: Invoke external repository APIs with minimal coupling
7
+ *
8
+ * DEPENDENCIES: HTTP Client only
9
+ *
10
+ * FORBIDDEN:
11
+ * - Response Parsing (NO JSON schema validation)
12
+ * - Response Transform (NO field mapping or conversion)
13
+ * - Business Logic (NO conditional handling based on data)
14
+ * - Caching (NO response storage)
15
+ * - Error Recovery (Errors bubble up unchanged)
16
+ */
17
+ import { ServiceError } from '../errors/index.js';
18
+ // ============================================================================
19
+ // Base Adapter Implementation
20
+ // ============================================================================
21
+ export class BaseAdapter {
22
+ config;
23
+ serviceName;
24
+ correlationId;
25
+ constructor(options) {
26
+ this.serviceName = options.serviceName;
27
+ this.config = options.config;
28
+ this.correlationId = options.correlationId;
29
+ }
30
+ async invoke(request) {
31
+ const startTime = Date.now();
32
+ const url = `${this.config.baseUrl}${request.endpoint}`;
33
+ const timeout = request.timeout ?? this.config.timeout;
34
+ // Create abort controller for timeout
35
+ const controller = new AbortController();
36
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
37
+ try {
38
+ const response = await fetch(url, {
39
+ method: request.method,
40
+ headers: {
41
+ 'Content-Type': 'application/json',
42
+ 'X-Correlation-ID': this.correlationId ?? crypto.randomUUID(),
43
+ 'X-API-Version': this.config.version,
44
+ ...request.headers,
45
+ },
46
+ body: request.body ? JSON.stringify(request.body) : undefined,
47
+ signal: controller.signal,
48
+ });
49
+ clearTimeout(timeoutId);
50
+ const timing = Date.now() - startTime;
51
+ // Get response body - PASSTHROUGH, no interpretation
52
+ let body;
53
+ const contentType = response.headers.get('content-type') ?? '';
54
+ if (contentType.includes('application/json')) {
55
+ body = await response.json();
56
+ }
57
+ else {
58
+ body = await response.text();
59
+ }
60
+ // Check for error status codes - surface error, no retry
61
+ if (!response.ok) {
62
+ throw new ServiceError({
63
+ service: this.serviceName,
64
+ operation: request.endpoint,
65
+ type: response.status >= 500 ? 'internal_error' : 'unavailable',
66
+ statusCode: response.status,
67
+ upstreamMessage: typeof body === 'object' && body !== null && 'message' in body
68
+ ? String(body.message)
69
+ : String(body),
70
+ correlationId: this.correlationId,
71
+ });
72
+ }
73
+ // Return raw response - NO transformation
74
+ return {
75
+ status: response.status,
76
+ headers: Object.fromEntries(response.headers.entries()),
77
+ body, // Raw passthrough - never parsed by CLI
78
+ timing,
79
+ };
80
+ }
81
+ catch (error) {
82
+ clearTimeout(timeoutId);
83
+ // Handle abort (timeout)
84
+ if (error instanceof Error && error.name === 'AbortError') {
85
+ throw new ServiceError({
86
+ service: this.serviceName,
87
+ operation: request.endpoint,
88
+ type: 'timeout',
89
+ upstreamMessage: `Request timed out after ${timeout}ms`,
90
+ correlationId: this.correlationId,
91
+ });
92
+ }
93
+ // Handle network errors
94
+ if (error instanceof TypeError) {
95
+ throw new ServiceError({
96
+ service: this.serviceName,
97
+ operation: request.endpoint,
98
+ type: 'unavailable',
99
+ upstreamMessage: `Network error: ${error.message}`,
100
+ correlationId: this.correlationId,
101
+ });
102
+ }
103
+ // Re-throw CLIErrors as-is
104
+ throw error;
105
+ }
106
+ }
107
+ async health() {
108
+ const startTime = Date.now();
109
+ try {
110
+ const response = await this.invoke({
111
+ endpoint: '/health',
112
+ method: 'GET',
113
+ headers: {},
114
+ timeout: 5000, // Health check has short timeout
115
+ });
116
+ return {
117
+ healthy: response.status === 200,
118
+ latency: Date.now() - startTime,
119
+ version: this.config.version,
120
+ };
121
+ }
122
+ catch {
123
+ return {
124
+ healthy: false,
125
+ latency: Date.now() - startTime,
126
+ version: this.config.version,
127
+ };
128
+ }
129
+ }
130
+ getEndpointConfig() {
131
+ return { ...this.config };
132
+ }
133
+ }
134
+ // ============================================================================
135
+ // Service-Specific Adapters
136
+ // ============================================================================
137
+ export class ManifestsAdapter extends BaseAdapter {
138
+ constructor(config, correlationId) {
139
+ super({
140
+ serviceName: 'agentics-org-manifests',
141
+ config,
142
+ correlationId,
143
+ });
144
+ }
145
+ async select(criteria) {
146
+ return this.invoke({
147
+ endpoint: '/api/v1/manifests/select',
148
+ method: 'POST',
149
+ headers: {},
150
+ body: criteria,
151
+ });
152
+ }
153
+ }
154
+ export class PlannerAdapter extends BaseAdapter {
155
+ constructor(config, correlationId) {
156
+ super({
157
+ serviceName: 'agentics-simulation-planner',
158
+ config,
159
+ correlationId,
160
+ });
161
+ }
162
+ async createPlan(manifestRef, params) {
163
+ return this.invoke({
164
+ endpoint: '/api/v1/plans/create',
165
+ method: 'POST',
166
+ headers: {},
167
+ body: { manifest_ref: manifestRef, params },
168
+ });
169
+ }
170
+ }
171
+ export class RunnerAdapter extends BaseAdapter {
172
+ constructor(config, correlationId) {
173
+ super({
174
+ serviceName: 'agentics-simulation-runner',
175
+ config,
176
+ correlationId,
177
+ });
178
+ }
179
+ async execute(planRef, config) {
180
+ return this.invoke({
181
+ endpoint: '/api/v1/simulations/execute',
182
+ method: 'POST',
183
+ headers: {},
184
+ body: { plan_ref: planRef, config },
185
+ });
186
+ }
187
+ }
188
+ export class IntentAdapter extends BaseAdapter {
189
+ constructor(config, correlationId) {
190
+ super({
191
+ serviceName: 'agentics-deployment-intent',
192
+ config,
193
+ correlationId,
194
+ });
195
+ }
196
+ async resolve(simRef, spec) {
197
+ return this.invoke({
198
+ endpoint: '/api/v1/intents/resolve',
199
+ method: 'POST',
200
+ headers: {},
201
+ body: { sim_ref: simRef, spec },
202
+ });
203
+ }
204
+ }
205
+ export class ExportersAdapter extends BaseAdapter {
206
+ constructor(config, correlationId) {
207
+ super({
208
+ serviceName: 'agentics-deployment-exporters',
209
+ config,
210
+ correlationId,
211
+ });
212
+ }
213
+ async generate(intentRef, formatSpec) {
214
+ return this.invoke({
215
+ endpoint: '/api/v1/exports/generate',
216
+ method: 'POST',
217
+ headers: {},
218
+ body: { intent_ref: intentRef, format_spec: formatSpec },
219
+ });
220
+ }
221
+ }
222
+ export class DiligenceAdapter extends BaseAdapter {
223
+ constructor(config, correlationId) {
224
+ super({
225
+ serviceName: 'diligence-artifacts',
226
+ config,
227
+ correlationId,
228
+ });
229
+ }
230
+ async package(refs, requirements) {
231
+ return this.invoke({
232
+ endpoint: '/api/v1/diligence/package',
233
+ method: 'POST',
234
+ headers: {},
235
+ body: { refs, requirements },
236
+ });
237
+ }
238
+ }
239
+ export class SimulationEngineAdapter extends BaseAdapter {
240
+ constructor(config, correlationId) {
241
+ super({
242
+ serviceName: 'agentics-simulation-engine',
243
+ config,
244
+ correlationId,
245
+ });
246
+ }
247
+ async inspect(simRef, outputType) {
248
+ return this.invoke({
249
+ endpoint: '/api/v1/outputs/retrieve',
250
+ method: 'POST',
251
+ headers: {},
252
+ body: { sim_ref: simRef, output_type: outputType },
253
+ });
254
+ }
255
+ async getOutputs(simRef) {
256
+ return this.invoke({
257
+ endpoint: '/api/v1/outputs/list',
258
+ method: 'POST',
259
+ headers: {},
260
+ body: { sim_ref: simRef },
261
+ });
262
+ }
263
+ }
264
+ export class RoiEngineAdapter extends BaseAdapter {
265
+ constructor(config, correlationId) {
266
+ super({
267
+ serviceName: 'enterprise-roi-engine',
268
+ config,
269
+ correlationId,
270
+ });
271
+ }
272
+ async quantify(simRef, reportType, params) {
273
+ return this.invoke({
274
+ endpoint: '/api/v1/reports/generate',
275
+ method: 'POST',
276
+ headers: {},
277
+ body: { sim_ref: simRef, report_type: reportType, params: params ?? {} },
278
+ });
279
+ }
280
+ async getSummary(simRef) {
281
+ return this.invoke({
282
+ endpoint: '/api/v1/reports/executive-summary',
283
+ method: 'POST',
284
+ headers: {},
285
+ body: { sim_ref: simRef },
286
+ });
287
+ }
288
+ }
289
+ export function createAdapter(serviceName, config, correlationId) {
290
+ switch (serviceName) {
291
+ case 'agentics-org-manifests':
292
+ return new ManifestsAdapter(config, correlationId);
293
+ case 'agentics-simulation-planner':
294
+ return new PlannerAdapter(config, correlationId);
295
+ case 'agentics-simulation-runner':
296
+ return new RunnerAdapter(config, correlationId);
297
+ case 'agentics-simulation-engine':
298
+ return new SimulationEngineAdapter(config, correlationId);
299
+ case 'enterprise-roi-engine':
300
+ return new RoiEngineAdapter(config, correlationId);
301
+ case 'agentics-deployment-intent':
302
+ return new IntentAdapter(config, correlationId);
303
+ case 'agentics-deployment-exporters':
304
+ return new ExportersAdapter(config, correlationId);
305
+ case 'diligence-artifacts':
306
+ return new DiligenceAdapter(config, correlationId);
307
+ default:
308
+ throw new Error(`Unknown service: ${serviceName}`);
309
+ }
310
+ }
311
+ //# sourceMappingURL=base-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../src/adapters/base-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Adapter Exports
3
+ *
4
+ * Re-exports all adapter implementations
5
+ */
6
+ export { BaseAdapter, ManifestsAdapter, PlannerAdapter, RunnerAdapter, SimulationEngineAdapter, RoiEngineAdapter, IntentAdapter, ExportersAdapter, DiligenceAdapter, createAdapter, } from './base-adapter.js';
7
+ export type { IDownstreamAdapter, ServiceName, } from './base-adapter.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,kBAAkB,EAClB,WAAW,GACZ,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Adapter Exports
3
+ *
4
+ * Re-exports all adapter implementations
5
+ */
6
+ export { BaseAdapter, ManifestsAdapter, PlannerAdapter, RunnerAdapter, SimulationEngineAdapter, RoiEngineAdapter, IntentAdapter, ExportersAdapter, DiligenceAdapter, createAdapter, } from './base-adapter.js';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Audit Trail Module
3
+ *
4
+ * SPARC Architecture Reference: §6.1 (SPARC_PSEUDOCODE)
5
+ *
6
+ * PURPOSE: Record CLI operations for compliance and debugging
7
+ *
8
+ * FORBIDDEN:
9
+ * - State Modification (audit is append-only)
10
+ * - Error Recovery (errors recorded but not handled)
11
+ * - Data Transformation (raw data recorded)
12
+ */
13
+ import type { AuditEntry, BaseReference, DownstreamCall } from '../types/index.js';
14
+ export interface IAuditTrail {
15
+ /**
16
+ * Record a command execution
17
+ */
18
+ record(entry: AuditEntryInput): AuditEntry;
19
+ /**
20
+ * Get audit entries for a trace
21
+ */
22
+ getByTraceId(traceId: string): AuditEntry[];
23
+ /**
24
+ * Format audit entry for output
25
+ */
26
+ format(entry: AuditEntry): string;
27
+ }
28
+ export interface AuditEntryInput {
29
+ command: string;
30
+ inputs: unknown;
31
+ outputs: BaseReference | null;
32
+ dependencies: DownstreamCall[];
33
+ duration_ms: number;
34
+ status: 'SUCCESS' | 'FAILED';
35
+ error_code?: string;
36
+ error_message?: string;
37
+ trace_id: string;
38
+ parent_id?: string;
39
+ }
40
+ export declare class AuditTrail implements IAuditTrail {
41
+ private readonly version;
42
+ private readonly entries;
43
+ /**
44
+ * Record a command execution
45
+ * SPARC: Append-only, no modification of existing entries
46
+ */
47
+ record(input: AuditEntryInput): AuditEntry;
48
+ /**
49
+ * Get audit entries for a trace
50
+ */
51
+ getByTraceId(traceId: string): AuditEntry[];
52
+ /**
53
+ * Format audit entry for output (JSON format)
54
+ */
55
+ format(entry: AuditEntry): string;
56
+ private hashInputs;
57
+ private sortKeys;
58
+ private redactSensitive;
59
+ private computeChecksum;
60
+ }
61
+ export declare class AuditLogger {
62
+ private readonly destination;
63
+ constructor(destination?: 'stdout' | 'stderr');
64
+ log(entry: AuditEntry): void;
65
+ }
66
+ export declare function createAuditTrail(): IAuditTrail;
67
+ export declare function createAuditLogger(destination?: 'stdout' | 'stderr'): AuditLogger;
68
+ //# sourceMappingURL=audit-trail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-trail.d.ts","sourceRoot":"","sources":["../../src/audit/audit-trail.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,aAAa,EACb,cAAc,EACf,MAAM,mBAAmB,CAAC;AAO3B,MAAM,WAAW,WAAW;IAC1B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAAC;IAE3C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,YAAY,EAAE,cAAc,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,qBAAa,UAAW,YAAW,WAAW;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwC;IAEhE;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU;IAuD1C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM;IAQjC,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,eAAe;CAIxB;AAMD,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;gBAEtC,WAAW,GAAE,QAAQ,GAAG,QAAmB;IAIvD,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAY7B;AAMD,wBAAgB,gBAAgB,IAAI,WAAW,CAE9C;AAED,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAEhF"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Audit Trail Module
3
+ *
4
+ * SPARC Architecture Reference: §6.1 (SPARC_PSEUDOCODE)
5
+ *
6
+ * PURPOSE: Record CLI operations for compliance and debugging
7
+ *
8
+ * FORBIDDEN:
9
+ * - State Modification (audit is append-only)
10
+ * - Error Recovery (errors recorded but not handled)
11
+ * - Data Transformation (raw data recorded)
12
+ */
13
+ import * as crypto from 'node:crypto';
14
+ // ============================================================================
15
+ // Audit Trail Implementation
16
+ // ============================================================================
17
+ export class AuditTrail {
18
+ version = '1.0.0';
19
+ entries = new Map();
20
+ /**
21
+ * Record a command execution
22
+ * SPARC: Append-only, no modification of existing entries
23
+ */
24
+ record(input) {
25
+ const id = crypto.randomUUID();
26
+ const timestamp = new Date().toISOString();
27
+ // Compute inputs hash for reproducibility
28
+ const inputsHash = this.hashInputs(input.inputs);
29
+ // Redact sensitive fields from inputs
30
+ const inputsRedacted = this.redactSensitive(input.inputs);
31
+ // Compute checksum for entry integrity
32
+ const entryData = {
33
+ id,
34
+ version: this.version,
35
+ command: input.command,
36
+ inputs_hash: inputsHash,
37
+ outputs: input.outputs,
38
+ dependencies: input.dependencies.map(d => d.service),
39
+ timestamp,
40
+ duration_ms: input.duration_ms,
41
+ status: input.status,
42
+ error_code: input.error_code,
43
+ error_message: input.error_message,
44
+ trace_id: input.trace_id,
45
+ parent_id: input.parent_id,
46
+ };
47
+ const checksum = this.computeChecksum(entryData);
48
+ const entry = {
49
+ id,
50
+ version: this.version,
51
+ command: input.command,
52
+ inputs_hash: inputsHash,
53
+ inputs_redacted: inputsRedacted,
54
+ outputs: input.outputs,
55
+ dependencies: input.dependencies.map(d => d.service),
56
+ timestamp,
57
+ duration_ms: input.duration_ms,
58
+ status: input.status,
59
+ error_code: input.error_code,
60
+ error_message: input.error_message,
61
+ trace_id: input.trace_id,
62
+ parent_id: input.parent_id,
63
+ checksum,
64
+ };
65
+ // Store by trace_id for retrieval
66
+ const traceEntries = this.entries.get(input.trace_id) ?? [];
67
+ traceEntries.push(entry);
68
+ this.entries.set(input.trace_id, traceEntries);
69
+ return entry;
70
+ }
71
+ /**
72
+ * Get audit entries for a trace
73
+ */
74
+ getByTraceId(traceId) {
75
+ return this.entries.get(traceId) ?? [];
76
+ }
77
+ /**
78
+ * Format audit entry for output (JSON format)
79
+ */
80
+ format(entry) {
81
+ return JSON.stringify(entry, null, 2);
82
+ }
83
+ // ============================================================================
84
+ // Private Methods
85
+ // ============================================================================
86
+ hashInputs(inputs) {
87
+ const canonical = JSON.stringify(inputs, this.sortKeys);
88
+ return crypto.createHash('sha256').update(canonical).digest('hex').slice(0, 16);
89
+ }
90
+ sortKeys(_key, value) {
91
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
92
+ return Object.keys(value)
93
+ .sort()
94
+ .reduce((sorted, key) => {
95
+ sorted[key] = value[key];
96
+ return sorted;
97
+ }, {});
98
+ }
99
+ return value;
100
+ }
101
+ redactSensitive(inputs) {
102
+ if (!inputs || typeof inputs !== 'object') {
103
+ return inputs;
104
+ }
105
+ const sensitivePatterns = [
106
+ /token/i,
107
+ /password/i,
108
+ /secret/i,
109
+ /key/i,
110
+ /auth/i,
111
+ /credential/i,
112
+ ];
113
+ const redact = (obj) => {
114
+ if (!obj || typeof obj !== 'object') {
115
+ return obj;
116
+ }
117
+ if (Array.isArray(obj)) {
118
+ return obj.map(redact);
119
+ }
120
+ const result = {};
121
+ for (const [key, value] of Object.entries(obj)) {
122
+ const isSensitive = sensitivePatterns.some(pattern => pattern.test(key));
123
+ if (isSensitive && typeof value === 'string') {
124
+ result[key] = '[REDACTED]';
125
+ }
126
+ else if (typeof value === 'object') {
127
+ result[key] = redact(value);
128
+ }
129
+ else {
130
+ result[key] = value;
131
+ }
132
+ }
133
+ return result;
134
+ };
135
+ return redact(inputs);
136
+ }
137
+ computeChecksum(data) {
138
+ const canonical = JSON.stringify(data, this.sortKeys);
139
+ return crypto.createHash('sha256').update(canonical).digest('hex');
140
+ }
141
+ }
142
+ // ============================================================================
143
+ // Audit Logger (Console output for audit trail)
144
+ // ============================================================================
145
+ export class AuditLogger {
146
+ destination;
147
+ constructor(destination = 'stderr') {
148
+ this.destination = destination;
149
+ }
150
+ log(entry) {
151
+ const output = JSON.stringify({
152
+ level: 'AUDIT',
153
+ ...entry,
154
+ });
155
+ if (this.destination === 'stdout') {
156
+ console.log(output);
157
+ }
158
+ else {
159
+ console.error(output);
160
+ }
161
+ }
162
+ }
163
+ // ============================================================================
164
+ // Factory Functions
165
+ // ============================================================================
166
+ export function createAuditTrail() {
167
+ return new AuditTrail();
168
+ }
169
+ export function createAuditLogger(destination) {
170
+ return new AuditLogger(destination);
171
+ }
172
+ //# sourceMappingURL=audit-trail.js.map