@indigoai-us/hq-cli 5.345.141 → 5.345.143
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/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [5.345.143] — 2026-10-16
|
|
6
|
+
- The bundled sync engine now uses hq-cloud 6.18.82. Company Outposts can be signed in to Claude from the terminal: `hq outposts login --company <slug>` prints the sign-in link, `hq outposts login-code --company <slug> <code>` finishes it, and `hq outposts status --company <slug>` shows whether the box is signed in. Registering a job on a box that is not signed in now says so and shows the next step.
|
|
7
|
+
|
|
8
|
+
## [5.345.142] — 2026-10-16
|
|
9
|
+
- `hq lanes questions show` accepts `--company <slug|uid>`, resolved the same
|
|
10
|
+
way as `hq lanes questions list --company`, so you can read one question's
|
|
11
|
+
body for a company. A question from another company fails with
|
|
12
|
+
`question_company_mismatch`.
|
|
13
|
+
- The bundled sync engine now uses hq-cloud 6.18.81. `hq outposts provision --company <slug> --yes` no longer reports "not created" while the box is being built: it waits and shows progress until the box is ready, or says plainly that the result could not be confirmed. `hq outposts jobs register --company <slug> --cron` accepts a standard five-field cron such as `"0 8,20 * * *"` and translates it to the schedule format the server runs; schedules the server cannot run are rejected with the accepted forms and an example.
|
|
14
|
+
|
|
5
15
|
## [5.345.141] — 2026-10-16
|
|
6
16
|
- The bundled sync engine now uses hq-cloud 6.18.80. `hq outposts status --company <slug>` now shows real job health for company Outpost jobs instead of `unknown`; the client reads the live job status route.
|
|
7
17
|
|
|
@@ -15190,6 +15190,10 @@ export declare const COMMAND_CATALOG: readonly [{
|
|
|
15190
15190
|
readonly description: "Question id";
|
|
15191
15191
|
}];
|
|
15192
15192
|
readonly options: readonly [{
|
|
15193
|
+
readonly flags: "--company <slug|uid>";
|
|
15194
|
+
readonly description: "Require the question to belong to this company";
|
|
15195
|
+
readonly hidden: false;
|
|
15196
|
+
}, {
|
|
15193
15197
|
readonly flags: "--json";
|
|
15194
15198
|
readonly description: "JSON on stdout (always)";
|
|
15195
15199
|
readonly hidden: false;
|
|
@@ -18485,6 +18485,11 @@ export const COMMAND_CATALOG = [
|
|
|
18485
18485
|
}
|
|
18486
18486
|
],
|
|
18487
18487
|
"options": [
|
|
18488
|
+
{
|
|
18489
|
+
"flags": "--company <slug|uid>",
|
|
18490
|
+
"description": "Require the question to belong to this company",
|
|
18491
|
+
"hidden": false
|
|
18492
|
+
},
|
|
18488
18493
|
{
|
|
18489
18494
|
"flags": "--json",
|
|
18490
18495
|
"description": "JSON on stdout (always)",
|
|
@@ -18,7 +18,9 @@ export declare function createLaneQuestionsHandlers(deps: LaneQuestionsHandlerDe
|
|
|
18
18
|
story?: string;
|
|
19
19
|
status?: string;
|
|
20
20
|
}) => Promise<void>;
|
|
21
|
-
runQuestionsShow: (ctx: Ctx, questionId: string
|
|
21
|
+
runQuestionsShow: (ctx: Ctx, questionId: string, opts?: {
|
|
22
|
+
company?: string;
|
|
23
|
+
}) => Promise<void>;
|
|
22
24
|
runQuestionsAnswer: (ctx: Ctx, questionId: string, opts: {
|
|
23
25
|
choice?: string;
|
|
24
26
|
notes?: string;
|
|
@@ -680,8 +680,11 @@ export function createLaneQuestionsHandlers(deps) {
|
|
|
680
680
|
...(outpostLoad.errors.length > 0 ? { errors: outpostLoad.errors } : {}),
|
|
681
681
|
});
|
|
682
682
|
}
|
|
683
|
-
async function runQuestionsShow(ctx, questionId) {
|
|
683
|
+
async function runQuestionsShow(ctx, questionId, opts = {}) {
|
|
684
684
|
const hqRoot = ctx.hqRoot();
|
|
685
|
+
// Same resolution as `questions list --company`: an explicit company is
|
|
686
|
+
// resolved through ctx.resolveCompany and the question must belong to it.
|
|
687
|
+
const explicitCompany = opts.company ? await ctx.resolveCompany(opts.company) : undefined;
|
|
685
688
|
let question;
|
|
686
689
|
try {
|
|
687
690
|
question = readQuestion(hqRoot, questionId);
|
|
@@ -707,6 +710,9 @@ export function createLaneQuestionsHandlers(deps) {
|
|
|
707
710
|
if (!owner) {
|
|
708
711
|
throw new LanesError("outpost_question_ambiguous", `Question ${questionId} has no unique Outpost owner`, { question_id: questionId });
|
|
709
712
|
}
|
|
713
|
+
if (explicitCompany) {
|
|
714
|
+
assertQuestionCompanyAccess(owner.question, owner.lane, explicitCompany, hqRoot);
|
|
715
|
+
}
|
|
710
716
|
const detail = await readOutpostQuestionDetail(ctx, owner);
|
|
711
717
|
printJson({
|
|
712
718
|
ok: true,
|
|
@@ -718,6 +724,15 @@ export function createLaneQuestionsHandlers(deps) {
|
|
|
718
724
|
});
|
|
719
725
|
return;
|
|
720
726
|
}
|
|
727
|
+
if (explicitCompany) {
|
|
728
|
+
const lane = loadAllLanes(hqRoot).find((entry) => entry.lane_id === question.lane_id);
|
|
729
|
+
if (lane) {
|
|
730
|
+
assertQuestionCompanyAccess(question, lane, explicitCompany, hqRoot);
|
|
731
|
+
}
|
|
732
|
+
else if (question.company !== null && !sameQuestionCompany(question.company, explicitCompany)) {
|
|
733
|
+
throw new LanesError("question_company_mismatch", `Question ${question.question_id} does not belong to the requested or active company`, { question_id: question.question_id, lane_id: question.lane_id });
|
|
734
|
+
}
|
|
735
|
+
}
|
|
721
736
|
const body = readQuestionBody(hqRoot, question);
|
|
722
737
|
printJson({
|
|
723
738
|
ok: true,
|
package/dist/commands/lanes.js
CHANGED
|
@@ -10458,8 +10458,9 @@ export function registerLanesCommand(parent, deps = {}) {
|
|
|
10458
10458
|
.command("show")
|
|
10459
10459
|
.description("Show one question")
|
|
10460
10460
|
.argument("<question-id>", "Question id")
|
|
10461
|
-
.
|
|
10462
|
-
|
|
10461
|
+
.option("--company <slug|uid>", "Require the question to belong to this company")
|
|
10462
|
+
.action(wrap(async (questionId, opts) => {
|
|
10463
|
+
await questionHandlers.runQuestionsShow(ctx, questionId, opts);
|
|
10463
10464
|
}));
|
|
10464
10465
|
questions
|
|
10465
10466
|
.command("answer")
|