@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.
- package/hone-cli.js +68 -0
- 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')
|