@hone-ai/cli 1.12.1 → 1.13.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 (2) hide show
  1. package/hone-cli.js +68 -0
  2. package/package.json +1 -1
package/hone-cli.js CHANGED
@@ -1035,6 +1035,11 @@ program
1035
1035
  docUrls,
1036
1036
  isRefresh,
1037
1037
  existingSkills,
1038
+ // HC-019z-followup-2: derive is always batch from the CLI —
1039
+ // there's no channel to relay user answers to the LLM mid-job.
1040
+ // The server's prompt Step 0c uses this to emit STEP_0C_SKIPPED
1041
+ // instead of stopping to ask, when no team docs are configured.
1042
+ interactive: false,
1038
1043
  });
1039
1044
  jobId = r.data.jobId;
1040
1045
  console.log(`Job queued: ${jobId}`);
@@ -1084,6 +1089,25 @@ program
1084
1089
  fs.writeFileSync(reportPath, result.changeReport || '');
1085
1090
  console.log(`\nChange report saved to: .github/skill-refresh-report.md`);
1086
1091
  } else {
1092
+ // HC-019z-followup-2: surface the non-interactive skip notice if
1093
+ // the prompt emitted STEP_0C_SKIPPED. The marker appears in the
1094
+ // server's rawOutputTail when the LLM honored the non-interactive
1095
+ // guard. Without this message, the user is mystified by an empty
1096
+ // skill set.
1097
+ const rawOutput = result.rawOutputTail || result.rawOutput || '';
1098
+ if (rawOutput.includes('STEP_0C_SKIPPED')) {
1099
+ console.log('');
1100
+ console.log('⚠ Phase 0c (team documentation URLs) skipped — derive is non-interactive.');
1101
+ console.log(' To include team docs (Confluence, wiki, runbooks, etc.) in derivation,');
1102
+ console.log(' add them to .github/.pipeline-config.yml under documentation.external_urls:');
1103
+ console.log(' documentation:');
1104
+ console.log(' external_urls:');
1105
+ console.log(' - https://yourwiki.example/architecture');
1106
+ console.log(' - https://yourwiki.example/conventions');
1107
+ console.log(' Then re-run `hone derive`. (HC-019z-followup-2)');
1108
+ console.log('');
1109
+ }
1110
+
1087
1111
  // Write generated skills to disk
1088
1112
  console.log('Writing generated skills...');
1089
1113
  if (result.skills) {
@@ -5253,6 +5277,50 @@ program
5253
5277
  }
5254
5278
  });
5255
5279
 
5280
+ // ── SHOW step output (HC-019n-followup-6) ─────────────────────────────────────
5281
+ // `hone show step <workflowId> <stepKey> [--attempt N]` — fetch the
5282
+ // actual LLM output of a specific orchestrator step. Pre-fix, the
5283
+ // /orchestrate/<id> endpoint returned step METADATA only; operators
5284
+ // approving a human gate (step_4 typically) had no way to see what
5285
+ // they were approving, and review-fail loops were undiagnosable.
5286
+ const showCmd = program.command('show').description('Inspect orchestrator step output (HC-019n-followup-6)');
5287
+ showCmd
5288
+ .command('step <workflowId> <stepKey>')
5289
+ .description('Print the actual LLM output of an orchestrator step (latest attempt by default)')
5290
+ .option('--attempt <n>', 'Specific attempt number (default: latest)')
5291
+ .action(async (workflowId, stepKey, opts) => {
5292
+ const config = getConfig();
5293
+ const client = api(config);
5294
+ try {
5295
+ const url = `/orchestrate/${workflowId}/step/${stepKey}${opts.attempt ? `?attempt=${opts.attempt}` : ''}`;
5296
+ const r = await client.get(url);
5297
+ const s = r.data;
5298
+ console.log(`── step output ──────────────────────────────────────────`);
5299
+ console.log(` runId: ${s.runId}`);
5300
+ console.log(` stepKey: ${s.stepKey}`);
5301
+ console.log(` agent: ${s.agent}`);
5302
+ console.log(` attempt: ${s.attempt}`);
5303
+ console.log(` status: ${s.status}`);
5304
+ console.log(` gateResult: ${s.gateResult || '(none)'}`);
5305
+ console.log(` startedAt: ${s.startedAt || '(not started)'}`);
5306
+ console.log(` completedAt: ${s.completedAt || '(not completed)'}`);
5307
+ if (s.tokenUsage) console.log(` tokenUsage: ${JSON.stringify(s.tokenUsage)}`);
5308
+ if (s.errorContext) {
5309
+ console.log(``);
5310
+ console.log(`── error_context (retry feedback) ──────────────────────`);
5311
+ console.log(s.errorContext);
5312
+ }
5313
+ console.log(``);
5314
+ console.log(`── output (the LLM's actual response) ──────────────────`);
5315
+ console.log(s.output || '(no output recorded — step may not have completed)');
5316
+ console.log(`────────────────────────────────────────────────────────`);
5317
+ } catch (e) {
5318
+ const msg = e.response?.data?.error || e.message;
5319
+ console.error(`hone show step failed: ${msg}`);
5320
+ process.exit(1);
5321
+ }
5322
+ });
5323
+
5256
5324
  // ── CLI setup ─────────────────────────────────────────────────────────────────
5257
5325
  program
5258
5326
  .name('hone')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hone-ai/cli",
3
- "version": "1.12.1",
3
+ "version": "1.13.0",
4
4
  "description": "Hone AI — Enterprise SDLC Pipeline CLI",
5
5
  "main": "hone-cli.js",
6
6
  "bin": {