@llm-dev-ops/agentics-cli 1.3.8 → 1.3.9

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 (69) hide show
  1. package/dist/adapters/base-adapter.d.ts +58 -1
  2. package/dist/adapters/base-adapter.d.ts.map +1 -1
  3. package/dist/adapters/base-adapter.js +110 -0
  4. package/dist/adapters/base-adapter.js.map +1 -1
  5. package/dist/cli/index.js +992 -16
  6. package/dist/cli/index.js.map +1 -1
  7. package/dist/commands/deploy.d.ts +95 -13
  8. package/dist/commands/deploy.d.ts.map +1 -1
  9. package/dist/commands/deploy.js +420 -14
  10. package/dist/commands/deploy.js.map +1 -1
  11. package/dist/commands/erp.d.ts +302 -0
  12. package/dist/commands/erp.d.ts.map +1 -0
  13. package/dist/commands/erp.js +1064 -0
  14. package/dist/commands/erp.js.map +1 -0
  15. package/dist/commands/export.d.ts +40 -13
  16. package/dist/commands/export.d.ts.map +1 -1
  17. package/dist/commands/export.js +434 -14
  18. package/dist/commands/export.js.map +1 -1
  19. package/dist/commands/index.d.ts +20 -12
  20. package/dist/commands/index.d.ts.map +1 -1
  21. package/dist/commands/index.js +10 -6
  22. package/dist/commands/index.js.map +1 -1
  23. package/dist/commands/inspect.d.ts +84 -18
  24. package/dist/commands/inspect.d.ts.map +1 -1
  25. package/dist/commands/inspect.js +585 -131
  26. package/dist/commands/inspect.js.map +1 -1
  27. package/dist/commands/logout.d.ts +34 -0
  28. package/dist/commands/logout.d.ts.map +1 -0
  29. package/dist/commands/logout.js +73 -0
  30. package/dist/commands/logout.js.map +1 -0
  31. package/dist/commands/plan.d.ts +147 -14
  32. package/dist/commands/plan.d.ts.map +1 -1
  33. package/dist/commands/plan.js +555 -16
  34. package/dist/commands/plan.js.map +1 -1
  35. package/dist/commands/policy.d.ts +136 -0
  36. package/dist/commands/policy.d.ts.map +1 -0
  37. package/dist/commands/policy.js +460 -0
  38. package/dist/commands/policy.js.map +1 -0
  39. package/dist/commands/quantify.d.ts +131 -13
  40. package/dist/commands/quantify.d.ts.map +1 -1
  41. package/dist/commands/quantify.js +425 -14
  42. package/dist/commands/quantify.js.map +1 -1
  43. package/dist/commands/simulate.d.ts +119 -13
  44. package/dist/commands/simulate.d.ts.map +1 -1
  45. package/dist/commands/simulate.js +363 -14
  46. package/dist/commands/simulate.js.map +1 -1
  47. package/dist/commands/usage.d.ts +110 -0
  48. package/dist/commands/usage.d.ts.map +1 -0
  49. package/dist/commands/usage.js +507 -0
  50. package/dist/commands/usage.js.map +1 -0
  51. package/dist/commands/whoami.d.ts +33 -0
  52. package/dist/commands/whoami.d.ts.map +1 -0
  53. package/dist/commands/whoami.js +93 -0
  54. package/dist/commands/whoami.js.map +1 -0
  55. package/dist/config/endpoints.d.ts.map +1 -1
  56. package/dist/config/endpoints.js +15 -0
  57. package/dist/config/endpoints.js.map +1 -1
  58. package/dist/modules/command-parser.d.ts +1 -1
  59. package/dist/modules/command-parser.d.ts.map +1 -1
  60. package/dist/modules/command-parser.js +6 -1
  61. package/dist/modules/command-parser.js.map +1 -1
  62. package/dist/modules/output-renderer.d.ts +1 -0
  63. package/dist/modules/output-renderer.d.ts.map +1 -1
  64. package/dist/modules/output-renderer.js +25 -1
  65. package/dist/modules/output-renderer.js.map +1 -1
  66. package/dist/types/index.d.ts +3 -0
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/index.js.map +1 -1
  69. package/package.json +4 -4
@@ -1,36 +1,231 @@
1
1
  /**
2
- * Plan Command
2
+ * Plan Command - Plan Management with Ruvector Persistence
3
3
  *
4
- * SPARC Pseudocode Reference: §2.1
4
+ * ARCHITECTURE:
5
+ * - Plans are generated once by the planner and persisted in Ruvector
6
+ * - Inspection is retrieval-only from Ruvector
7
+ * - Planner = compute once, Ruvector = memory forever
5
8
  *
6
- * FLOW:
7
- * 1. Parse arguments CommandObject
8
- * 2. VALIDATE request against contract (MUST pass before network call)
9
- * 3. Select manifest via agentics-org-manifests
10
- * 4. Create plan via agentics-simulation-planner
11
- * 5. VALIDATE response has execution_metadata (reject if missing)
12
- * 6. Record audit entry
13
- * 7. Return PlanReference
9
+ * SUBCOMMANDS:
10
+ * - (default) Generate plan via planner and persist to Ruvector
11
+ * - list List all plans from Ruvector
12
+ * - inspect Retrieve a specific plan by ID from Ruvector (NO PLANNER CALLS)
13
+ * - delete Delete a plan from Ruvector
14
+ * - approve Advisory approval marker
14
15
  *
15
- * CONTRACT ENFORCEMENT:
16
- * - Request validation happens BEFORE any network call
17
- * - Response validation requires execution_metadata
18
- * - No bypass flags or soft-fail behavior
16
+ * CRITICAL RULES:
17
+ * - plan inspect MUST NOT call planner
18
+ * - plan inspect MUST NOT interpret UUID as intent
19
+ * - Persistence is mandatory - failure to persist = command failure
19
20
  */
20
- import { ManifestsAdapter, PlannerAdapter, } from '../adapters/base-adapter.js';
21
+ import * as fs from 'node:fs';
22
+ import * as path from 'node:path';
23
+ import * as crypto from 'node:crypto';
24
+ import { ManifestsAdapter, PlannerAdapter, RuvectorAdapter, } from '../adapters/base-adapter.js';
25
+ import { createCredentialStore } from '../utils/credentials.js';
21
26
  import { createOrchestrationEngine, } from '../modules/orchestration-engine.js';
22
27
  import { createArtifactHandoff } from '../modules/artifact-handoff.js';
23
28
  import { createAuditTrail } from '../audit/audit-trail.js';
24
- import { failFast, toError } from '../errors/index.js';
29
+ import { failFast, toError, CLIError } from '../errors/index.js';
25
30
  import { loadEndpointConfig } from '../config/endpoints.js';
26
31
  import { validateRequest, validateResponse, RequestSchemas, ResponseSchemas, } from '../contracts/validator.js';
27
32
  // ============================================================================
33
+ // Plan-Specific Exit Codes
34
+ // ============================================================================
35
+ export const PLAN_EXIT_CODES = {
36
+ SUCCESS: 0,
37
+ INPUT_ERROR: 100,
38
+ NOT_FOUND: 100,
39
+ IO_ERROR: 74,
40
+ AUTH_ERROR: 77,
41
+ STORAGE_ERROR: 69,
42
+ UNEXPECTED_ERROR: 1,
43
+ };
44
+ // ============================================================================
45
+ // Authentication Helper
46
+ // ============================================================================
47
+ /**
48
+ * Assert that the user is authenticated.
49
+ * Throws AUTH_ERROR if no valid credentials exist.
50
+ */
51
+ async function assertAuthenticated(correlationId) {
52
+ const credentialStore = createCredentialStore();
53
+ const credentials = await credentialStore.load();
54
+ if (!credentials) {
55
+ throw new CLIError({
56
+ code: 'ECLI-PLAN-AUTH',
57
+ category: 'AUTH_ERROR',
58
+ message: 'Login required. Run `agentics login` to authenticate.',
59
+ module: 'plan',
60
+ correlationId,
61
+ recoverable: true,
62
+ exitCode: PLAN_EXIT_CODES.AUTH_ERROR,
63
+ });
64
+ }
65
+ }
66
+ /**
67
+ * Validate that a string is a valid UUID format.
68
+ * Accepts standard UUID format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
69
+ */
70
+ function isValidUUID(str) {
71
+ // Standard UUID format with hex characters and dashes
72
+ const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
73
+ return uuidRegex.test(str);
74
+ }
75
+ /**
76
+ * Assert that the provided ID is a valid UUID.
77
+ * Throws INPUT_ERROR if not a valid UUID format.
78
+ */
79
+ function assertUUID(id, correlationId) {
80
+ if (!isValidUUID(id)) {
81
+ throw new CLIError({
82
+ code: 'ECLI-PLAN-INVALID-UUID',
83
+ category: 'INPUT_ERROR',
84
+ message: `Invalid plan ID format. Expected UUID, got: ${id}`,
85
+ details: { provided: id, expected: 'UUID format (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)' },
86
+ module: 'plan',
87
+ correlationId,
88
+ recoverable: false,
89
+ exitCode: PLAN_EXIT_CODES.INPUT_ERROR,
90
+ });
91
+ }
92
+ }
93
+ /**
94
+ * Generate SHA-256 checksum for plan data.
95
+ */
96
+ function generateChecksum(data) {
97
+ const hash = crypto.createHash('sha256');
98
+ hash.update(JSON.stringify(data));
99
+ return hash.digest('hex');
100
+ }
101
+ // ============================================================================
102
+ // Storage Configuration
103
+ // ============================================================================
104
+ function getPlansDir() {
105
+ const baseDir = process.env['AGENTICS_DATA_DIR'] ?? process.cwd();
106
+ return path.join(baseDir, '.agentics', 'plans');
107
+ }
108
+ function ensurePlansDir() {
109
+ const dir = getPlansDir();
110
+ if (!fs.existsSync(dir)) {
111
+ fs.mkdirSync(dir, { recursive: true });
112
+ }
113
+ }
114
+ function getPlanPath(id) {
115
+ return path.join(getPlansDir(), `${id}.json`);
116
+ }
117
+ // ============================================================================
118
+ // Storage Operations
119
+ // ============================================================================
120
+ function loadPlan(id) {
121
+ const filePath = getPlanPath(id);
122
+ if (!fs.existsSync(filePath)) {
123
+ return null;
124
+ }
125
+ try {
126
+ const content = fs.readFileSync(filePath, 'utf-8');
127
+ return JSON.parse(content);
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ }
133
+ function savePlan(plan) {
134
+ ensurePlansDir();
135
+ const filePath = getPlanPath(plan.id);
136
+ fs.writeFileSync(filePath, JSON.stringify(plan, null, 2), 'utf-8');
137
+ }
138
+ // Note: deletePlanRecord and listAllPlans removed - now using Ruvector storage
139
+ // ============================================================================
140
+ // ID Generation
141
+ // ============================================================================
142
+ function generatePlanId() {
143
+ const timestamp = Date.now().toString(36);
144
+ const random = Math.random().toString(36).substring(2, 8);
145
+ return `plan-${timestamp}-${random}`;
146
+ }
147
+ // ============================================================================
148
+ // Validation
149
+ // ============================================================================
150
+ function validatePlanId(id, correlationId) {
151
+ if (!id || typeof id !== 'string' || id.trim() === '') {
152
+ throw new CLIError({
153
+ code: 'ECLI-PLAN-001',
154
+ category: 'INPUT_ERROR',
155
+ message: 'Plan ID is required',
156
+ details: { provided: id },
157
+ module: 'plan',
158
+ correlationId,
159
+ recoverable: false,
160
+ exitCode: PLAN_EXIT_CODES.INPUT_ERROR,
161
+ });
162
+ }
163
+ }
164
+ function validatePlanName(name, correlationId) {
165
+ if (!name || typeof name !== 'string' || name.trim() === '') {
166
+ throw new CLIError({
167
+ code: 'ECLI-PLAN-002',
168
+ category: 'INPUT_ERROR',
169
+ message: 'Plan name is required',
170
+ details: { provided: name },
171
+ module: 'plan',
172
+ correlationId,
173
+ recoverable: false,
174
+ exitCode: PLAN_EXIT_CODES.INPUT_ERROR,
175
+ });
176
+ }
177
+ if (name.length > 256) {
178
+ throw new CLIError({
179
+ code: 'ECLI-PLAN-003',
180
+ category: 'INPUT_ERROR',
181
+ message: 'Plan name cannot exceed 256 characters',
182
+ details: { provided_length: name.length, max_length: 256 },
183
+ module: 'plan',
184
+ correlationId,
185
+ recoverable: false,
186
+ exitCode: PLAN_EXIT_CODES.INPUT_ERROR,
187
+ });
188
+ }
189
+ }
190
+ // ============================================================================
191
+ // Display Formatting
192
+ // ============================================================================
193
+ export function formatPlanForDisplay(plan) {
194
+ const lines = [];
195
+ const statusIcon = plan.status === 'approved' ? '[OK]'
196
+ : plan.status === 'rejected' ? '[FAIL]'
197
+ : plan.status === 'pending_approval' ? '[PEND]'
198
+ : plan.status === 'archived' ? '[ARCH]'
199
+ : '[DRAFT]';
200
+ lines.push(`${statusIcon} ${plan.id}`);
201
+ lines.push(` Name: ${plan.name}`);
202
+ lines.push(` Status: ${plan.status}`);
203
+ lines.push(` Description: ${plan.description || '(none)'}`);
204
+ if (plan.manifest_query) {
205
+ lines.push(` Query: ${plan.manifest_query}`);
206
+ }
207
+ lines.push(` Version: ${plan.version}`);
208
+ lines.push(` Created: ${new Date(plan.created_at).toLocaleString()}`);
209
+ lines.push(` Updated: ${new Date(plan.updated_at).toLocaleString()}`);
210
+ if (plan.approved_at) {
211
+ lines.push(` Approved: ${new Date(plan.approved_at).toLocaleString()}`);
212
+ }
213
+ if (plan.approved_by) {
214
+ lines.push(` Approved By: ${plan.approved_by}`);
215
+ }
216
+ return lines.join('\n');
217
+ }
218
+ // ============================================================================
28
219
  // Plan Command Implementation
29
220
  // ============================================================================
30
221
  export async function executePlanCommand(input, options) {
31
222
  const correlationId = options.trace_id ?? crypto.randomUUID();
32
223
  const startTime = Date.now();
33
224
  // ============================================================================
225
+ // AUTHENTICATION CHECK - REQUIRED FOR ALL PLAN OPERATIONS
226
+ // ============================================================================
227
+ await assertAuthenticated(correlationId);
228
+ // ============================================================================
34
229
  // CONTRACT VALIDATION - BEFORE ANY NETWORK CALL
35
230
  // ============================================================================
36
231
  // Validate the top-level plan request
@@ -42,8 +237,10 @@ export async function executePlanCommand(input, options) {
42
237
  // Create adapters
43
238
  const manifestsConfig = loadEndpointConfig('agentics-org-manifests');
44
239
  const plannerConfig = loadEndpointConfig('agentics-simulation-planner');
240
+ const ruvectorConfig = loadEndpointConfig('ruvector-service');
45
241
  const manifestsAdapter = new ManifestsAdapter(manifestsConfig, correlationId);
46
242
  const plannerAdapter = new PlannerAdapter(plannerConfig, correlationId);
243
+ const ruvectorAdapter = new RuvectorAdapter(ruvectorConfig, correlationId);
47
244
  // Define orchestration stages
48
245
  const stages = [
49
246
  {
@@ -99,6 +296,40 @@ export async function executePlanCommand(input, options) {
99
296
  const planStage = result.stages.find(s => s.name === 'create-plan');
100
297
  const validatedPlan = validateResponse(ResponseSchemas.PLAN, planStage?.response, correlationId);
101
298
  const planRef = handoff.extractReference(validatedPlan);
299
+ // ========================================================================
300
+ // RUVECTOR PERSISTENCE - MANDATORY
301
+ // Plans are generated once by the planner and persisted in Ruvector.
302
+ // Failure to persist = command failure.
303
+ // ========================================================================
304
+ const ruvectorPlan = {
305
+ id: planRef.id,
306
+ type: 'plan',
307
+ intent: input.manifestQuery,
308
+ plan: validatedPlan,
309
+ created_at: new Date().toISOString(),
310
+ org_id: process.env['AGENTICS_ORG_ID'] ?? 'unknown',
311
+ user_id: process.env['AGENTICS_USER_ID'] ?? 'unknown',
312
+ checksum: generateChecksum(validatedPlan),
313
+ };
314
+ try {
315
+ await ruvectorAdapter.storePlan(ruvectorPlan);
316
+ }
317
+ catch (storageError) {
318
+ // Persistence is mandatory - failure to persist = command failure
319
+ throw new CLIError({
320
+ code: 'ECLI-PLAN-STORAGE',
321
+ category: 'NETWORK_ERROR',
322
+ message: 'Failed to persist plan to Ruvector storage. Plan was generated but not saved.',
323
+ details: {
324
+ plan_id: planRef.id,
325
+ error: storageError instanceof Error ? storageError.message : String(storageError),
326
+ },
327
+ module: 'plan',
328
+ correlationId,
329
+ recoverable: true,
330
+ exitCode: PLAN_EXIT_CODES.STORAGE_ERROR,
331
+ });
332
+ }
102
333
  // Record audit entry
103
334
  audit.record({
104
335
  command: 'plan',
@@ -107,6 +338,7 @@ export async function executePlanCommand(input, options) {
107
338
  dependencies: [
108
339
  { service: 'agentics-org-manifests', method: 'select', timestamp: new Date().toISOString(), duration_ms: result.timing.breakdown['select-manifest'] ?? 0, success: true },
109
340
  { service: 'agentics-simulation-planner', method: 'create', timestamp: new Date().toISOString(), duration_ms: result.timing.breakdown['create-plan'] ?? 0, success: true },
341
+ { service: 'ruvector-service', method: 'store', timestamp: new Date().toISOString(), duration_ms: 0, success: true },
110
342
  ],
111
343
  duration_ms: result.timing.total,
112
344
  status: 'SUCCESS',
@@ -140,4 +372,311 @@ export async function executePlanCommand(input, options) {
140
372
  });
141
373
  }
142
374
  }
375
+ // ============================================================================
376
+ // Plan List Command Implementation (Local Storage)
377
+ // ============================================================================
378
+ /**
379
+ * List plans from local storage
380
+ */
381
+ /**
382
+ * List plans from Ruvector storage.
383
+ */
384
+ export async function executePlanListCommand(input, options) {
385
+ const startTime = Date.now();
386
+ const correlationId = options.trace_id ?? crypto.randomUUID();
387
+ // Authentication required
388
+ await assertAuthenticated(correlationId);
389
+ // List from Ruvector
390
+ const ruvectorConfig = loadEndpointConfig('ruvector-service');
391
+ const ruvectorAdapter = new RuvectorAdapter(ruvectorConfig, correlationId);
392
+ try {
393
+ const response = await ruvectorAdapter.listPlans({
394
+ org_id: process.env['AGENTICS_ORG_ID'],
395
+ limit: input.limit,
396
+ });
397
+ const ruvectorPlans = response.body?.plans ?? [];
398
+ // Map to PlanSummary for backward compatibility
399
+ let summaries = ruvectorPlans.map(p => ({
400
+ id: p.id,
401
+ name: p.intent.slice(0, 100),
402
+ status: 'approved', // Persisted plans are approved
403
+ created_at: p.created_at,
404
+ manifest_query: p.intent,
405
+ }));
406
+ // Apply status filter (client-side since Ruvector may not support it)
407
+ if (input.status) {
408
+ summaries = summaries.filter(p => p.status === input.status);
409
+ }
410
+ // Sort by created_at descending
411
+ summaries.sort((a, b) => new Date(b.created_at).getTime() - new Date(a.created_at).getTime());
412
+ // Apply limit
413
+ if (input.limit && input.limit > 0) {
414
+ summaries = summaries.slice(0, input.limit);
415
+ }
416
+ return {
417
+ plans: summaries,
418
+ count: summaries.length,
419
+ timing: Date.now() - startTime,
420
+ };
421
+ }
422
+ catch (error) {
423
+ const errorMessage = error instanceof Error ? error.message : String(error);
424
+ throw new CLIError({
425
+ code: 'ECLI-PLAN-LIST',
426
+ category: 'NETWORK_ERROR',
427
+ message: `Failed to list plans: ${errorMessage}`,
428
+ module: 'plan',
429
+ correlationId,
430
+ recoverable: true,
431
+ exitCode: PLAN_EXIT_CODES.STORAGE_ERROR,
432
+ });
433
+ }
434
+ }
435
+ /**
436
+ * Format plans list for human-readable display
437
+ */
438
+ export function formatPlansListForDisplay(plans) {
439
+ if (plans.length === 0) {
440
+ return 'No plans found.';
441
+ }
442
+ const lines = [];
443
+ lines.push(`Found ${plans.length} plan${plans.length === 1 ? '' : 's'}:`);
444
+ lines.push('');
445
+ for (const plan of plans) {
446
+ lines.push(` ${plan.id} - ${plan.name} [${plan.status}]`);
447
+ lines.push(` Created: ${new Date(plan.created_at).toLocaleString()}`);
448
+ if (plan.manifest_query) {
449
+ lines.push(` Query: ${plan.manifest_query}`);
450
+ }
451
+ lines.push('');
452
+ }
453
+ return lines.join('\n');
454
+ }
455
+ // ============================================================================
456
+ // CRUD Command Implementations
457
+ // ============================================================================
458
+ /**
459
+ * Create a new plan record
460
+ */
461
+ export async function executePlanCreateCommand(input, options) {
462
+ const startTime = Date.now();
463
+ const correlationId = options.trace_id ?? crypto.randomUUID();
464
+ validatePlanName(input.name, correlationId);
465
+ const now = new Date().toISOString();
466
+ const plan = {
467
+ id: generatePlanId(),
468
+ name: input.name.trim(),
469
+ description: input.description?.trim() ?? '',
470
+ status: 'draft',
471
+ manifest_query: input.manifest_query,
472
+ created_at: now,
473
+ updated_at: now,
474
+ version: 1,
475
+ metadata: input.metadata,
476
+ };
477
+ try {
478
+ savePlan(plan);
479
+ }
480
+ catch (error) {
481
+ throw new CLIError({
482
+ code: 'ECLI-PLAN-IO-001',
483
+ category: 'INTERNAL_ERROR',
484
+ message: 'Failed to save plan',
485
+ details: { error: error instanceof Error ? error.message : String(error) },
486
+ module: 'plan',
487
+ correlationId,
488
+ recoverable: false,
489
+ exitCode: PLAN_EXIT_CODES.IO_ERROR,
490
+ });
491
+ }
492
+ return {
493
+ plan,
494
+ timing: Date.now() - startTime,
495
+ };
496
+ }
497
+ /**
498
+ * Inspect a specific plan by ID
499
+ */
500
+ /**
501
+ * Inspect a specific plan by ID.
502
+ *
503
+ * CRITICAL: This is RETRIEVAL-ONLY from Ruvector.
504
+ * - MUST NOT call planner
505
+ * - MUST NOT interpret ID as intent
506
+ * - MUST validate UUID format
507
+ * - MUST require authentication
508
+ */
509
+ export async function executePlanInspectCommand(input, options) {
510
+ const startTime = Date.now();
511
+ const correlationId = options.trace_id ?? crypto.randomUUID();
512
+ // ============================================================================
513
+ // AUTHENTICATION CHECK - REQUIRED
514
+ // ============================================================================
515
+ await assertAuthenticated(correlationId);
516
+ // ============================================================================
517
+ // UUID VALIDATION - REQUIRED
518
+ // Prevents treating ID as intent (the broken behavior we're fixing)
519
+ // ============================================================================
520
+ assertUUID(input.id, correlationId);
521
+ // ============================================================================
522
+ // RUVECTOR RETRIEVAL - NO PLANNER CALLS
523
+ // Plans are retrieved from Ruvector only. Never call the planner here.
524
+ // ============================================================================
525
+ const ruvectorConfig = loadEndpointConfig('ruvector-service');
526
+ const ruvectorAdapter = new RuvectorAdapter(ruvectorConfig, correlationId);
527
+ try {
528
+ const response = await ruvectorAdapter.getPlan(input.id);
529
+ // Convert Ruvector response to PlanRecord format
530
+ const ruvectorPlan = response.body;
531
+ if (!ruvectorPlan || !ruvectorPlan.id) {
532
+ return {
533
+ plan: null,
534
+ found: false,
535
+ timing: Date.now() - startTime,
536
+ };
537
+ }
538
+ // Map RuvectorPlan to legacy PlanRecord for backward compatibility
539
+ const plan = {
540
+ id: ruvectorPlan.id,
541
+ name: ruvectorPlan.intent.slice(0, 100), // Use intent as name
542
+ description: ruvectorPlan.intent,
543
+ status: 'approved', // Persisted plans are considered approved
544
+ manifest_query: ruvectorPlan.intent,
545
+ created_at: ruvectorPlan.created_at,
546
+ updated_at: ruvectorPlan.created_at,
547
+ version: 1,
548
+ metadata: {
549
+ org_id: ruvectorPlan.org_id,
550
+ user_id: ruvectorPlan.user_id,
551
+ checksum: ruvectorPlan.checksum,
552
+ full_plan: ruvectorPlan.plan,
553
+ },
554
+ };
555
+ return {
556
+ plan,
557
+ found: true,
558
+ timing: Date.now() - startTime,
559
+ };
560
+ }
561
+ catch (error) {
562
+ // Handle 404 - plan not found
563
+ if (error instanceof CLIError && error.message.includes('404')) {
564
+ return {
565
+ plan: null,
566
+ found: false,
567
+ timing: Date.now() - startTime,
568
+ };
569
+ }
570
+ // For other errors, check if it's a not-found scenario
571
+ const errorMessage = error instanceof Error ? error.message : String(error);
572
+ if (errorMessage.includes('not found') || errorMessage.includes('404')) {
573
+ return {
574
+ plan: null,
575
+ found: false,
576
+ timing: Date.now() - startTime,
577
+ };
578
+ }
579
+ // Re-throw for genuine errors
580
+ throw new CLIError({
581
+ code: 'ECLI-PLAN-RETRIEVE',
582
+ category: 'NETWORK_ERROR',
583
+ message: `Failed to retrieve plan from storage: ${errorMessage}`,
584
+ details: { plan_id: input.id },
585
+ module: 'plan',
586
+ correlationId,
587
+ recoverable: true,
588
+ exitCode: PLAN_EXIT_CODES.STORAGE_ERROR,
589
+ });
590
+ }
591
+ }
592
+ /**
593
+ * Delete a plan
594
+ */
595
+ /**
596
+ * Delete a plan from Ruvector storage.
597
+ */
598
+ export async function executePlanDeleteCommand(input, options) {
599
+ const startTime = Date.now();
600
+ const correlationId = options.trace_id ?? crypto.randomUUID();
601
+ // Authentication required
602
+ await assertAuthenticated(correlationId);
603
+ // UUID validation
604
+ assertUUID(input.id, correlationId);
605
+ // Delete from Ruvector
606
+ const ruvectorConfig = loadEndpointConfig('ruvector-service');
607
+ const ruvectorAdapter = new RuvectorAdapter(ruvectorConfig, correlationId);
608
+ try {
609
+ await ruvectorAdapter.deletePlan(input.id);
610
+ return {
611
+ deleted: true,
612
+ id: input.id,
613
+ timing: Date.now() - startTime,
614
+ };
615
+ }
616
+ catch (error) {
617
+ const errorMessage = error instanceof Error ? error.message : String(error);
618
+ // Handle not found
619
+ if (errorMessage.includes('not found') || errorMessage.includes('404')) {
620
+ throw new CLIError({
621
+ code: 'ECLI-PLAN-NOT-FOUND',
622
+ category: 'INPUT_ERROR',
623
+ message: `Plan not found: ${input.id}`,
624
+ details: { id: input.id },
625
+ module: 'plan',
626
+ correlationId,
627
+ recoverable: false,
628
+ exitCode: PLAN_EXIT_CODES.NOT_FOUND,
629
+ });
630
+ }
631
+ throw new CLIError({
632
+ code: 'ECLI-PLAN-DELETE',
633
+ category: 'NETWORK_ERROR',
634
+ message: `Failed to delete plan: ${errorMessage}`,
635
+ details: { plan_id: input.id },
636
+ module: 'plan',
637
+ correlationId,
638
+ recoverable: true,
639
+ exitCode: PLAN_EXIT_CODES.STORAGE_ERROR,
640
+ });
641
+ }
642
+ }
643
+ /**
644
+ * Approve a plan (advisory execution marker - no real execution)
645
+ */
646
+ export async function executePlanApproveCommand(input, options) {
647
+ const startTime = Date.now();
648
+ const correlationId = options.trace_id ?? crypto.randomUUID();
649
+ validatePlanId(input.id, correlationId);
650
+ const existing = loadPlan(input.id);
651
+ if (!existing) {
652
+ throw new CLIError({
653
+ code: 'ECLI-PLAN-NOT-FOUND',
654
+ category: 'INPUT_ERROR',
655
+ message: `Plan not found: ${input.id}`,
656
+ details: { id: input.id },
657
+ module: 'plan',
658
+ correlationId,
659
+ recoverable: false,
660
+ exitCode: PLAN_EXIT_CODES.NOT_FOUND,
661
+ });
662
+ }
663
+ const previousStatus = existing.status;
664
+ const now = new Date().toISOString();
665
+ // Advisory approval - mark as approved
666
+ const updated = {
667
+ ...existing,
668
+ status: 'approved',
669
+ approved_at: now,
670
+ approved_by: input.approved_by ?? 'cli-user',
671
+ updated_at: now,
672
+ version: existing.version + 1,
673
+ };
674
+ savePlan(updated);
675
+ return {
676
+ plan: updated,
677
+ previous_status: previousStatus,
678
+ advisory: true,
679
+ timing: Date.now() - startTime,
680
+ };
681
+ }
143
682
  //# sourceMappingURL=plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/commands/plan.ts"],"names":[],"mappings":"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"}