@indigoai-us/hq-cli 5.164.0 → 5.166.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/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [5.166.0] — 2026-09-24
6
+
7
+ ### Changed
8
+
9
+ - The setup bot can explain what HQ is: the shared context layer for a whole
10
+ team, their coding tools (Claude Code, Codex, Cursor) and every bot. It no
11
+ longer repeats the finish card in replies after setup ends.
12
+
13
+ ## [5.165.0] — 2026-09-24
14
+
15
+ ### Fixed
16
+
17
+ - Codex lane starts and resumes now pass the assigned worker policy directory to
18
+ policy hooks.
19
+
5
20
  ## [5.164.0] — 2026-09-24
6
21
 
7
22
  ### Fixed
@@ -178,16 +178,69 @@ instructions: |
178
178
  it, and carry on with the next step. Never restart the walkthrough because
179
179
  you cannot remember it. Read the note first.
180
180
 
181
- ## What HQ is, and how you make them feel it
182
-
183
- HQ is one shared layer of context for a whole team. Everything that lands
184
- in it (a connected tool, a call transcript, a profile, a client home, a
185
- decision) is there for every teammate AND for every teammate's AI, whichever
186
- coding tool they use. Their bots, a colleague's Claude Code, the new hire's
187
- Cursor: all of them start every conversation already knowing the company,
188
- the clients, the tools and the history. Nobody re-explains anything twice.
189
- That is the point of setup, and the person should feel it, not be told it
190
- once in a paragraph.
181
+ ## What HQ is
182
+
183
+ Know this well enough to explain it in your own words at any moment,
184
+ because people will ask ("what is HQ?", "how do I use it?", "why not just
185
+ use Claude?"), and a vague answer is the fastest way to lose them.
186
+
187
+ HQ is the shared context layer for a whole team and every AI that works
188
+ for it. A company's knowledge, people, clients, projects, decisions,
189
+ meeting notes, connected apps, keys and skills live in one place, and
190
+ everything that does work reads from it and writes back to it:
191
+
192
+ - Every person on the team. Their HQ folder syncs through HQ Cloud, so what
193
+ one person adds, every teammate has.
194
+ - Every AI tool they already use. Claude Code, Codex and Cursor open the
195
+ same HQ folder, so whichever tool someone prefers, it starts already
196
+ knowing the company. HQ does not replace those tools; it is what they all
197
+ share.
198
+ - Every bot. Bots on someone's Mac, bots in HQ Cloud, bots in Slack and
199
+ scheduled bots all start from the same context and can use the same
200
+ connected apps and skills.
201
+
202
+ What that changes for them: nobody explains the company twice, to a new
203
+ hire or to an AI. A call summarised on Monday is something any teammate's
204
+ bot can quote on Tuesday. A skill one person builds, everyone can run. When
205
+ a new person joins, their AI knows the business on day one. Each company is
206
+ kept separate: what belongs to one company never leaks into another, even
207
+ for someone who works in several.
208
+
209
+ Day to day, people use HQ by working the way they already do, in their
210
+ coding tool or by messaging bots here, and letting HQ carry the context.
211
+ They ask questions ("what did Lumen say about pricing last week?"), hand
212
+ work to bots, and add to it simply by connecting tools, recording meetings
213
+ and saving what they learn.
214
+
215
+ HQ is not an alternative to Claude, Codex or Cursor. Those are the tools
216
+ that do the thinking, and HQ is what they think with: Claude Code opened in
217
+ the HQ folder is Claude that already knows the company. So when someone
218
+ asks "how is this different from Claude?", the answer is that they keep
219
+ using Claude, and HQ is what makes Claude (and every teammate's AI, and
220
+ every bot) start from their business instead of from zero.
221
+
222
+ When someone asks what HQ is, answer in two or three plain sentences of
223
+ prose built from the above, then make it concrete with one thing from their
224
+ own HQ (a connected tool, a teammate, a client, a meeting). No bullet list,
225
+ no feature tour, no "short version" line. End on that concrete example, not
226
+ on an offer or a question about what to set up next. This holds even when
227
+ setup is unfinished: answering the question is the whole message, and the
228
+ walkthrough resumes on their next message, not in this one.
229
+
230
+ An answer that follows these rules reads like this:
231
+
232
+ > HQ is the shared memory that Claude Code, Codex and Cursor work from.
233
+ > You keep using Claude Code; opened in your HQ folder, it already knows
234
+ > your clients, your calls and what your team decided, and so does every
235
+ > teammate's AI and every bot. Your Fireflies calls are in there now, so
236
+ > anyone you add to Enabled AI can ask what a client said last week.
237
+
238
+ ## How you make them feel it
239
+
240
+ Everything that lands in HQ (a connected tool, a call transcript, a
241
+ profile, a client home, a decision) is there for every teammate AND for
242
+ every teammate's AI, whichever coding tool they use. That is the point of
243
+ setup, and the person should feel it, not be told it once in a paragraph.
191
244
 
192
245
  So make it visible as you go, in one clause, whenever something joins HQ:
193
246
 
@@ -540,7 +593,9 @@ instructions: |
540
593
  text at the end of the nicest message you will ever send them.
541
594
 
542
595
  Send it once, in this closing message only (and in the one you send when
543
- they say "skip").
596
+ they say "skip"). Never put it in any later message, including a short
597
+ reply to "ok" or "thanks" after the closing message: the card is already
598
+ there, and the person replying is what puts it away.
544
599
 
545
600
  Then write `Status: finished` in your progress note.
546
601
 
@@ -222,6 +222,8 @@ export declare function buildProviderCommand(provider: LaneProvider, input: {
222
222
  fastMode?: boolean;
223
223
  /** Per-spawn worker profile instructions and materialized settings. */
224
224
  profile?: ProviderProfileLaunch;
225
+ /** Worker profile path, forwarded to Codex hook subprocesses when supported. */
226
+ workerPolicyDir?: string;
225
227
  /** Continue a recorded session. Only providers in PROVIDER_SESSION_RESUME accept this. */
226
228
  resume?: ProviderResumeInput;
227
229
  /**
@@ -522,6 +522,19 @@ function appendProviderProfileFlags(provider, args, profile) {
522
522
  }
523
523
  }
524
524
  }
525
+ /** Make the worker policy directory available to Codex hook subprocesses. */
526
+ function appendCodexWorkerPolicyDirFlag(provider, args, workerPolicyDir) {
527
+ if (provider !== "codex" || workerPolicyDir === undefined)
528
+ return args;
529
+ if (!workerPolicyDir.trim()) {
530
+ throw new LanesError("invalid_worker_policy_dir", "Worker policy directory must not be empty");
531
+ }
532
+ const setting = `shell_environment_policy.set.HQ_POLICY_WORKER_DIR=${JSON.stringify(workerPolicyDir)}`;
533
+ const separator = args.indexOf("--");
534
+ if (separator === -1)
535
+ return [...args, "-c", setting];
536
+ return [...args.slice(0, separator), "-c", setting, ...args.slice(separator)];
537
+ }
525
538
  export const PID_LIVENESS_DECISIONS = [
526
539
  "esrch",
527
540
  "starttime_mismatch",
@@ -1138,7 +1151,7 @@ export function buildProviderCommand(provider, input) {
1138
1151
  }
1139
1152
  return {
1140
1153
  command,
1141
- args: appendFastModeFlags(parsed, appendEffortFlag(parsed, appendModelFlag(parsed, appendProviderProfileFlags(parsed, args, input.profile), input.model), input.effort), input.fastMode),
1154
+ args: appendFastModeFlags(parsed, appendEffortFlag(parsed, appendModelFlag(parsed, appendCodexWorkerPolicyDirFlag(parsed, appendProviderProfileFlags(parsed, args, input.profile), input.workerPolicyDir), input.model), input.effort), input.fastMode),
1142
1155
  };
1143
1156
  }
1144
1157
  export function workerEnv(base, resolved, laneId, hqRoot, autoCompactTokens, meshCompany, workerPolicyDir) {
@@ -1757,6 +1770,7 @@ export function spawnLaneWorker(hqRoot, lane, deps = {}, launch = {}) {
1757
1770
  effort: effort.effort,
1758
1771
  fastMode,
1759
1772
  profile: profileLaunch,
1773
+ workerPolicyDir,
1760
1774
  resume,
1761
1775
  });
1762
1776
  // A systemd PATH mismatch is an environment defect, not a lane failure.
@@ -1806,6 +1820,7 @@ export function spawnLaneWorker(hqRoot, lane, deps = {}, launch = {}) {
1806
1820
  effort: effort.effort,
1807
1821
  fastMode,
1808
1822
  profile: profileLaunch,
1823
+ workerPolicyDir,
1809
1824
  resume: { session_id: resume.session_id, prompt: COMPACTION_PROMPT },
1810
1825
  });
1811
1826
  compaction = compactLaneSession({
@@ -2128,6 +2143,7 @@ export function spawnEnvelopeRepair(hqRoot, lane, input, deps = {}) {
2128
2143
  effort: effort.effort,
2129
2144
  fastMode,
2130
2145
  profile: profileLaunch,
2146
+ workerPolicyDir,
2131
2147
  ...(mode === "resume" && sessionId !== null
2132
2148
  ? { resume: { session_id: sessionId, prompt: repairPrompt } }
2133
2149
  : { freshTurnPrompt: repairPrompt }),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@indigoai-us/hq-cli",
3
- "version": "5.164.0",
3
+ "version": "5.166.0",
4
4
  "description": "HQ by Indigo management CLI — modules and cloud sync",
5
5
  "main": "dist/index.js",
6
6
  "bin": {